imm-element-ui 2.3.9 → 2.4.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/esm2022/lib/page-form/page-form.component.mjs +2 -2
- package/esm2022/lib/row-selector/row-selector.component.mjs +11 -4
- package/esm2022/lib/share/utils.mjs +2 -1
- package/fesm2022/imm-element-ui.mjs +11 -3
- package/fesm2022/imm-element-ui.mjs.map +1 -1
- package/lib/grid/grid/grid.component.d.ts +2 -2
- package/lib/row-selector/row-selector.component.d.ts +4 -2
- package/lib/search/pop-date/pop-date.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import { ButtonModule } from 'primeng/button';
|
|
|
3
3
|
import { DialogModule } from 'primeng/dialog';
|
|
4
4
|
import { GridComponent } from '../grid/grid/grid.component';
|
|
5
5
|
import { SearchComponent } from '../search/search/search.component';
|
|
6
|
-
import { DatePipe } from '@angular/common';
|
|
6
|
+
import { DatePipe, NgTemplateOutlet } from '@angular/common';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "../service/action.service";
|
|
9
9
|
import * as i2 from "primeng/button";
|
|
@@ -21,6 +21,8 @@ export class RowSelectorComponent {
|
|
|
21
21
|
this.innerVisible = false;
|
|
22
22
|
this.showSearch = input(true);
|
|
23
23
|
this.selectCancel = [];
|
|
24
|
+
this.selectModelCode = input();
|
|
25
|
+
this.customListFormByDialog = input(null);
|
|
24
26
|
this.cancelSelect = new EventEmitter();
|
|
25
27
|
}
|
|
26
28
|
api() {
|
|
@@ -39,9 +41,11 @@ export class RowSelectorComponent {
|
|
|
39
41
|
});
|
|
40
42
|
this.onOk.emit(result);
|
|
41
43
|
this.selectCancel.length > 0 && this.cancelSelect.emit(this.selectCancel);
|
|
44
|
+
this.selectCancel = [];
|
|
42
45
|
this.visible.set(false);
|
|
43
46
|
}
|
|
44
47
|
getSelectedData() {
|
|
48
|
+
this.selectCancel = [];
|
|
45
49
|
const result = [];
|
|
46
50
|
const selectionKeys = this.selectionKeys();
|
|
47
51
|
const dataKey = this.gridOptions().dataKey || 'id';
|
|
@@ -55,10 +59,13 @@ export class RowSelectorComponent {
|
|
|
55
59
|
return result;
|
|
56
60
|
}
|
|
57
61
|
onShow() {
|
|
62
|
+
this.selectCancel = [];
|
|
58
63
|
this.innerVisible = true;
|
|
59
64
|
this.action.setPopMode(true);
|
|
60
65
|
}
|
|
61
66
|
onHide() {
|
|
67
|
+
this.selectCancel = [];
|
|
68
|
+
this.cancel();
|
|
62
69
|
this.innerVisible = false;
|
|
63
70
|
setTimeout(() => {
|
|
64
71
|
this.action.setPopMode(false);
|
|
@@ -73,11 +80,11 @@ export class RowSelectorComponent {
|
|
|
73
80
|
}
|
|
74
81
|
}
|
|
75
82
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RowSelectorComponent, deps: [{ token: i1.ActionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
76
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RowSelectorComponent, isStandalone: true, selector: "row-selector", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, selectionKeys: { classPropertyName: "selectionKeys", publicName: "selectionKeys", isSignal: true, isRequired: false, transformFunction: null }, gridOptions: { classPropertyName: "gridOptions", publicName: "gridOptions", isSignal: true, isRequired: false, transformFunction: null }, searchPrm: { classPropertyName: "searchPrm", publicName: "searchPrm", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onOk: "onOk", visible: "visibleChange", cancelSelect: "cancelSelect" }, viewQueries: [{ propertyName: "grid", first: true, predicate: GridComponent, descendants: true }], ngImport: i0, template: "<p-dialog\n\t[header]=\"title()\"\n\t[modal]=\"true\"\n\t[style]=\"{ width: '50vw' }\"\n\t(onHide)=\"cancel()\"\n\t[maximizable]=\"true\"\n\t[appendTo]=\"'body'\"\n\t[focusOnShow]=\"false\"\n\t(onShow)=\"onShow()\"\n\t(onHide)=\"onHide()\"\n\t(onMaximize)=\"onMaximize($event)\"\n\t[(visible)]=\"visible\">\n\t@if (innerVisible) {\n\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t@if (showSearch()) {\n\t\t\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\n\t\t\t}\n\t\t\t<custom-grid\n\t\t\t\t[showAct]=\"false\"\n\t\t\t\t[searchPrm]=\"searchPrm()\"\n\t\t\t\t[selectionKeys]=\"selectionKeys()\"\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-grid>\n\t\t\t<div class=\"flex justify-end gap-2\">\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u53D6\u6D88\"\n\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\tseverity=\"secondary\"\n\t\t\t\t\t(click)=\"cancel()\" />\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u786E\u5B9A\"\n\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t(click)=\"ok()\" />\n\t\t\t</div>\n\t\t</div>\n\t}\n</p-dialog>\n", styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0 .25rem;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-invalid.ng-dirty>.p-datepicker .p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "selectionKeys", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel", "showDelete", "gridDisable", "addSort"], outputs: ["deleteEmit", "addEmit"] }, { kind: "component", type: SearchComponent, selector: "custom-search", inputs: ["searchPrm", "gridOptions"] }] }); }
|
|
83
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RowSelectorComponent, isStandalone: true, selector: "row-selector", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, selectionKeys: { classPropertyName: "selectionKeys", publicName: "selectionKeys", isSignal: true, isRequired: false, transformFunction: null }, gridOptions: { classPropertyName: "gridOptions", publicName: "gridOptions", isSignal: true, isRequired: false, transformFunction: null }, searchPrm: { classPropertyName: "searchPrm", publicName: "searchPrm", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, selectModelCode: { classPropertyName: "selectModelCode", publicName: "selectModelCode", isSignal: true, isRequired: false, transformFunction: null }, customListFormByDialog: { classPropertyName: "customListFormByDialog", publicName: "customListFormByDialog", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onOk: "onOk", visible: "visibleChange", cancelSelect: "cancelSelect" }, viewQueries: [{ propertyName: "grid", first: true, predicate: GridComponent, descendants: true }], ngImport: i0, template: "<p-dialog\n\t[header]=\"title()\"\n\t[modal]=\"true\"\n\t[style]=\"{ width: '50vw' }\"\n\t[maximizable]=\"true\"\n\t[appendTo]=\"'body'\"\n\t[focusOnShow]=\"false\"\n\t(onShow)=\"onShow()\"\n\t(onHide)=\"onHide()\"\n\t(onMaximize)=\"onMaximize($event)\"\n\t[(visible)]=\"visible\">\n\t@if (innerVisible) {\n\t\t<div class=\"flex flex-col gap-2\">\n @if (customListFormByDialog()) {\n <ng-container *ngTemplateOutlet=\"customListFormByDialog();context:{$implicit: this.selectModelCode()}\"></ng-container>\n }\n\t\t\t@if (showSearch()) {\n\t\t\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\n\t\t\t}\n\t\t\t<custom-grid\n\t\t\t\t[showAct]=\"false\"\n\t\t\t\t[searchPrm]=\"searchPrm()\"\n\t\t\t\t[selectionKeys]=\"selectionKeys()\"\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-grid>\n\t\t\t<div class=\"flex justify-end gap-2\">\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u53D6\u6D88\"\n\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\tseverity=\"secondary\"\n\t\t\t\t\t(click)=\"cancel()\" />\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u786E\u5B9A\"\n\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t(click)=\"ok()\" />\n\t\t\t</div>\n\t\t</div>\n\t}\n</p-dialog>\n", styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0 .25rem;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-invalid.ng-dirty>.p-datepicker .p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: GridComponent, selector: "custom-grid", inputs: ["gridOptions", "selectionKeys", "upsert", "rowData", "searchPrm", "addType", "selectData", "showAct", "actPos", "authLevel", "showDelete", "gridDisable", "addSort"], outputs: ["deleteEmit", "addEmit"] }, { kind: "component", type: SearchComponent, selector: "custom-search", inputs: ["searchPrm", "gridOptions"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
77
84
|
}
|
|
78
85
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RowSelectorComponent, decorators: [{
|
|
79
86
|
type: Component,
|
|
80
|
-
args: [{ selector: 'row-selector', standalone: true, imports: [ButtonModule, DialogModule, GridComponent, SearchComponent], template: "<p-dialog\n\t[header]=\"title()\"\n\t[modal]=\"true\"\n\t[style]=\"{ width: '50vw' }\"\n\t
|
|
87
|
+
args: [{ selector: 'row-selector', standalone: true, imports: [ButtonModule, DialogModule, GridComponent, SearchComponent, NgTemplateOutlet], template: "<p-dialog\n\t[header]=\"title()\"\n\t[modal]=\"true\"\n\t[style]=\"{ width: '50vw' }\"\n\t[maximizable]=\"true\"\n\t[appendTo]=\"'body'\"\n\t[focusOnShow]=\"false\"\n\t(onShow)=\"onShow()\"\n\t(onHide)=\"onHide()\"\n\t(onMaximize)=\"onMaximize($event)\"\n\t[(visible)]=\"visible\">\n\t@if (innerVisible) {\n\t\t<div class=\"flex flex-col gap-2\">\n @if (customListFormByDialog()) {\n <ng-container *ngTemplateOutlet=\"customListFormByDialog();context:{$implicit: this.selectModelCode()}\"></ng-container>\n }\n\t\t\t@if (showSearch()) {\n\t\t\t\t<custom-search [gridOptions]=\"gridOptions()\"></custom-search>\n\t\t\t}\n\t\t\t<custom-grid\n\t\t\t\t[showAct]=\"false\"\n\t\t\t\t[searchPrm]=\"searchPrm()\"\n\t\t\t\t[selectionKeys]=\"selectionKeys()\"\n\t\t\t\t[gridOptions]=\"gridOptions()\"></custom-grid>\n\t\t\t<div class=\"flex justify-end gap-2\">\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u53D6\u6D88\"\n\t\t\t\t\t[text]=\"true\"\n\t\t\t\t\tseverity=\"secondary\"\n\t\t\t\t\t(click)=\"cancel()\" />\n\t\t\t\t<p-button\n\t\t\t\t\tlabel=\"\u786E\u5B9A\"\n\t\t\t\t\t[outlined]=\"true\"\n\t\t\t\t\t(click)=\"ok()\" />\n\t\t\t</div>\n\t\t</div>\n\t}\n</p-dialog>\n", styles: [":host ::ng-deep .p-disabled,:host ::ng-deep .p-component:disabled{opacity:1}:host ::ng-deep .p-inputtext{border-width:0;border-radius:0;box-shadow:none;background:#fff;padding:0}:host ::ng-deep .p-inputtext:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputtext:not(:disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:not(:disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-inputtext:focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered .p-autocomplete-input:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-label{padding:0}:host ::ng-deep .p-select{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-select .p-select-dropdown{display:none}:host ::ng-deep .p-select .p-select-clear-icon{display:none}:host ::ng-deep .p-select:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-select-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select-open .p-select-dropdown{display:flex}:host ::ng-deep .p-select-open .p-select-clear-icon{display:flex}:host ::ng-deep .p-select:hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select:hover .p-select-dropdown{display:flex}:host ::ng-deep .p-select:hover .p-select-clear-icon{display:flex}:host ::ng-deep .p-select.ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-select.ng-hovered .p-select-dropdown{display:flex}:host ::ng-deep .p-select.ng-hovered .p-select-clear-icon{display:flex}:host ::ng-deep .p-multiselect-label{padding:0}:host ::ng-deep .p-multiselect{border-width:0;border-radius:0;background:#fff;box-shadow:none}:host ::ng-deep .p-multiselect .p-multiselect-dropdown{display:none}:host ::ng-deep .p-multiselect:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-multiselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect-open .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).p-focus .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled):hover .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-multiselect:not(.p-disabled).ng-hovered .p-multiselect-dropdown{display:flex}:host ::ng-deep .p-textarea{border-radius:0;box-shadow:none;padding:0 .25rem;background:#fff;resize:none}:host ::ng-deep .p-textarea:not(.ng-valid).ng-dirty{background:var(--p-red-200)!important;border:1px solid var(--p-red-500)!important}:host ::ng-deep .p-textarea:not(:disabled):hover{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:not(:disabled).ng-hovered{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-textarea:focus{border:1px solid var(--p-primary-color);resize:vertical}:host ::ng-deep .p-treeselect-label{padding:0}:host ::ng-deep .p-treeselect{border-width:0;border-radius:0;box-shadow:none;background:#fff}:host ::ng-deep .p-treeselect .p-treeselect-dropdown{display:none}:host ::ng-deep .ng-invalid.ng-dirty>.p-treeselect{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-treeselect-open{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect-open .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled).p-focus .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-treeselect:not(.p-disabled):hover{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .p-treeselect:not(.p-disabled):hover .p-treeselect-dropdown{display:flex}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled){border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-hovered>.p-treeselect:not(.p-disabled) .p-treeselect-dropdown{display:flex}:host ::ng-deep .p-menubar{border-width:0;padding:0}:host ::ng-deep .p-menubar-submenu{z-index:3}:host ::ng-deep .p-fileupload-advanced{border-width:0;border-radius:0;background-color:#fff}:host ::ng-deep .p-fileupload-header{padding:0}:host ::ng-deep .p-fileupload-content{padding:0;display:block;border-width:0}:host ::ng-deep .p-inputnumber:not(.ng-valid).ng-dirty>.p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .p-inputnumber.ng-hovered:not(.p-disabled)>.p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .ng-invalid.ng-dirty>.p-datepicker .p-inputtext{background:var(--p-red-200)!important;border-bottom:1px solid var(--p-red-500)!important}:host ::ng-deep .ng-hovered>.p-datepicker:not(.p-disabled) .p-inputtext{border-bottom:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor{border:1px solid #cbd5e1}:host ::ng-deep .cm-editor.cm-focused{outline:none!important;border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor:hover{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-editor.ng-hovered{border:1px solid var(--p-primary-color)}:host ::ng-deep .cm-gutters{background-color:#fff;border:\"none\"}:host ::ng-deep .cm-activeLineGutter{background-color:#fff}\n"] }]
|
|
81
88
|
}], ctorParameters: () => [{ type: i1.ActionService }], propDecorators: { onOk: [{
|
|
82
89
|
type: Output
|
|
83
90
|
}], grid: [{
|
|
@@ -86,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
86
93
|
}], cancelSelect: [{
|
|
87
94
|
type: Output
|
|
88
95
|
}] } });
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcm93LXNlbGVjdG9yL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3Jvdy1zZWxlY3Rvci9yb3ctc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQWUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVMzQyxNQUFNLE9BQU8sb0JBQW9CO0lBYWhDLFlBQW9CLE1BQXFCO1FBQXJCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFaL0IsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFFM0MsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMzQixVQUFLLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxDQUFDO1FBQzVCLGtCQUFhLEdBQUcsS0FBSyxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLGdCQUFXLEdBQUcsS0FBSyxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLGNBQVMsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDOUIsWUFBTyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNoQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixlQUFVLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ2xDLGlCQUFZLEdBQVMsRUFBRSxDQUFBO1FBQ2IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBQ1AsQ0FBQztJQUU3QyxHQUFHO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTTtRQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxFQUFFO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xELE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUN6RSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsZUFBZTtRQUNkLE1BQU0sTUFBTSxHQUFVLEVBQUUsQ0FBQztRQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUE7UUFDbEQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ25ELElBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbEMsQ0FBQztZQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU07UUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTTtRQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNwQixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0YsQ0FBQzsrR0FyRVcsb0JBQW9CO21HQUFwQixvQkFBb0IsdytCQUVyQixhQUFhLGdEQ2xCekIsa2dDQW9DQSx1ckxEeEJXLFlBQVksaWJBQUUsWUFBWSxvNkJBQUUsYUFBYSwyUUFBRSxlQUFlOzs0RkFJeEQsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNDLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7a0ZBSzNELElBQUk7c0JBQWIsTUFBTTtnQkFDbUIsSUFBSTtzQkFBN0IsU0FBUzt1QkFBQyxhQUFhO2dCQVVkLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGlucHV0LCBtb2RlbCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IFNlYXJjaCB9IGZyb20gJy4uL2FtL2FtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmlkQ29tcG9uZW50LCBHcmlkT3B0aW9ucyB9IGZyb20gJy4uL2dyaWQvZ3JpZC9ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoL3NlYXJjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdyb3ctc2VsZWN0b3InLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQnV0dG9uTW9kdWxlLCBEaWFsb2dNb2R1bGUsIEdyaWRDb21wb25lbnQsIFNlYXJjaENvbXBvbmVudF0sXG5cdHRlbXBsYXRlVXJsOiAnLi9yb3ctc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybDogJy4vcm93LXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgUm93U2VsZWN0b3JDb21wb25lbnQge1xuXHRAT3V0cHV0KCkgb25PayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cdEBWaWV3Q2hpbGQoR3JpZENvbXBvbmVudCkgZ3JpZCE6IEdyaWRDb21wb25lbnQ7XG5cdGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKVxuXHR0aXRsZSA9IGlucHV0PHN0cmluZz4oJ+mAieaLqScpO1xuXHRzZWxlY3Rpb25LZXlzID0gaW5wdXQ8YW55W10+KFtdKTtcblx0Z3JpZE9wdGlvbnMgPSBpbnB1dDxHcmlkT3B0aW9ucz4oe30pO1xuXHRzZWFyY2hQcm0gPSBpbnB1dDxTZWFyY2g+KHt9KTtcblx0dmlzaWJsZSA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcblx0aW5uZXJWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cdHNob3dTZWFyY2ggPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblx0c2VsZWN0Q2FuY2VsOmFueVtdID0gW11cblx0QE91dHB1dCgpIGNhbmNlbFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBBY3Rpb25TZXJ2aWNlKSB7fVxuXG5cdGFwaSgpIHtcblx0XHRyZXR1cm4gdGhpcy5ncmlkLmdldEdyaWQoKS5hcGk7XG5cdH1cblxuXHRjYW5jZWwoKSB7XG5cdFx0dGhpcy52aXNpYmxlLnNldChmYWxzZSk7XG5cdH1cblxuXHRvaygpIHtcblx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmdldFNlbGVjdGVkRGF0YSgpLm1hcCgoaXRlbSkgPT4ge1xuXHRcdFx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcblx0XHRcdHRoaXMuZ3JpZE9wdGlvbnMoKS5jb2x1bW5EZWZzPy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXN1bHRbY29sLmZpZWxkXSA9IGl0ZW1bY29sLmZpZWxkXTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9KTtcblx0XHR0aGlzLm9uT2suZW1pdChyZXN1bHQpO1xuXHRcdHRoaXMuc2VsZWN0Q2FuY2VsLmxlbmd0aCA+IDAgJiYgdGhpcy5jYW5jZWxTZWxlY3QuZW1pdCh0aGlzLnNlbGVjdENhbmNlbClcblx0XHR0aGlzLnZpc2libGUuc2V0KGZhbHNlKTtcblx0fVxuXG5cdGdldFNlbGVjdGVkRGF0YSgpOiBhbnlbXSB7XG5cdFx0Y29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuXHRcdGNvbnN0IHNlbGVjdGlvbktleXMgPSB0aGlzLnNlbGVjdGlvbktleXMoKTtcblx0XHRjb25zdCBkYXRhS2V5ID0gdGhpcy5ncmlkT3B0aW9ucygpLmRhdGFLZXkgfHwgJ2lkJ1xuXHRcdHRoaXMuYXBpKCkuZm9yRWFjaE5vZGUoKG5vZGU6IGFueSkgPT4ge1xuXHRcdFx0Y29uc3Qga2V5VmFsdWUgPSBub2RlLmRhdGEgPyBub2RlLmRhdGFbZGF0YUtleV06IC0xXG5cdFx0XHRpZighbm9kZS5pc1NlbGVjdGVkKCkgJiYgc2VsZWN0aW9uS2V5cy5pbmNsdWRlcyhrZXlWYWx1ZSkpe1xuXHRcdFx0XHR0aGlzLnNlbGVjdENhbmNlbC5wdXNoKG5vZGUuZGF0YSlcblx0XHRcdH1cblxuXHRcdFx0bm9kZS5pc1NlbGVjdGVkKCkgJiYgcmVzdWx0LnB1c2goeyAuLi5ub2RlLmRhdGEgfSk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdG9uU2hvdygpIHtcblx0XHR0aGlzLmlubmVyVmlzaWJsZSA9IHRydWU7XG5cdFx0dGhpcy5hY3Rpb24uc2V0UG9wTW9kZSh0cnVlKTtcblx0fVxuXG5cdG9uSGlkZSgpIHtcblx0XHR0aGlzLmlubmVyVmlzaWJsZSA9IGZhbHNlO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5hY3Rpb24uc2V0UG9wTW9kZShmYWxzZSk7XG5cdFx0fSk7XG5cdH1cblxuXHRvbk1heGltaXplKGV2ZW50OiBhbnkpIHtcblx0XHRpZiAoZXZlbnQubWF4aW1pemVkKSB7XG5cdFx0XHR0aGlzLmdyaWQuc2V0U2Nyb2xsSGVpZ2h0KCdjYWxjKDEwMHZoIC0gMTUwcHgpJyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZ3JpZC5zZXRTY3JvbGxIZWlnaHQoKTtcblx0XHR9XG5cdH1cbn1cbiIsIjxwLWRpYWxvZ1xuXHRbaGVhZGVyXT1cInRpdGxlKClcIlxuXHRbbW9kYWxdPVwidHJ1ZVwiXG5cdFtzdHlsZV09XCJ7IHdpZHRoOiAnNTB2dycgfVwiXG5cdChvbkhpZGUpPVwiY2FuY2VsKClcIlxuXHRbbWF4aW1pemFibGVdPVwidHJ1ZVwiXG5cdFthcHBlbmRUb109XCInYm9keSdcIlxuXHRbZm9jdXNPblNob3ddPVwiZmFsc2VcIlxuXHQob25TaG93KT1cIm9uU2hvdygpXCJcblx0KG9uSGlkZSk9XCJvbkhpZGUoKVwiXG5cdChvbk1heGltaXplKT1cIm9uTWF4aW1pemUoJGV2ZW50KVwiXG5cdFsodmlzaWJsZSldPVwidmlzaWJsZVwiPlxuXHRAaWYgKGlubmVyVmlzaWJsZSkge1xuXHRcdDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG5cdFx0XHRAaWYgKHNob3dTZWFyY2goKSkge1xuXHRcdFx0XHQ8Y3VzdG9tLXNlYXJjaCBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnMoKVwiPjwvY3VzdG9tLXNlYXJjaD5cblx0XHRcdH1cblx0XHRcdDxjdXN0b20tZ3JpZFxuXHRcdFx0XHRbc2hvd0FjdF09XCJmYWxzZVwiXG5cdFx0XHRcdFtzZWFyY2hQcm1dPVwic2VhcmNoUHJtKClcIlxuXHRcdFx0XHRbc2VsZWN0aW9uS2V5c109XCJzZWxlY3Rpb25LZXlzKClcIlxuXHRcdFx0XHRbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnMoKVwiPjwvY3VzdG9tLWdyaWQ+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMlwiPlxuXHRcdFx0XHQ8cC1idXR0b25cblx0XHRcdFx0XHRsYWJlbD1cIuWPlua2iFwiXG5cdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0c2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuXHRcdFx0XHRcdChjbGljayk9XCJjYW5jZWwoKVwiIC8+XG5cdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdGxhYmVsPVwi56Gu5a6aXCJcblx0XHRcdFx0XHRbb3V0bGluZWRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9rKClcIiAvPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdH1cbjwvcC1kaWFsb2c+XG4iXX0=
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvcm93LXNlbGVjdG9yL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3Jvdy1zZWxlY3Rvci9yb3ctc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQWUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVM3RCxNQUFNLE9BQU8sb0JBQW9CO0lBZ0JoQyxZQUFvQixNQUFxQjtRQUFyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBZi9CLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBRTNDLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsVUFBSyxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUM1QixrQkFBYSxHQUFHLEtBQUssQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUNqQyxnQkFBVyxHQUFHLEtBQUssQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUNyQyxjQUFTLEdBQUcsS0FBSyxD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RUQsTUFBTTtRQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNwQixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0YsQ0FBQzsrR0E3RVcsb0JBQW9CO21HQUFwQixvQkFBb0IseXlDQUVyQixhQUFhLGdEQ2xCekIsNHBDQXNDQSx1ckxEMUJXLFlBQVksaWJBQUUsWUFBWSxvNkJBQUUsYUFBYSwyUUFBRSxlQUFlLGdHQUFFLGdCQUFnQjs7NEZBSTFFLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDQyxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDO2tGQUs3RSxJQUFJO3NCQUFiLE1BQU07Z0JBQ21CLElBQUk7c0JBQTdCLFNBQVM7dUJBQUMsYUFBYTtnQkFhZCxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBpbnB1dCwgbW9kZWwsIGVmZmVjdCwgaW5qZWN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnLi4vYW0vYW0uY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRDb21wb25lbnQsIEdyaWRPcHRpb25zIH0gZnJvbSAnLi4vZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gvc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBEYXRlUGlwZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3Jvdy1zZWxlY3RvcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtCdXR0b25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgR3JpZENvbXBvbmVudCwgU2VhcmNoQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0XSxcblx0dGVtcGxhdGVVcmw6ICcuL3Jvdy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsOiAnLi9yb3ctc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBSb3dTZWxlY3RvckNvbXBvbmVudCB7XG5cdEBPdXRwdXQoKSBvbk9rID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblx0QFZpZXdDaGlsZChHcmlkQ29tcG9uZW50KSBncmlkITogR3JpZENvbXBvbmVudDtcblx0ZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xuXHR0aXRsZSA9IGlucHV0PHN0cmluZz4oJ+mAieaLqScpO1xuXHRzZWxlY3Rpb25LZXlzID0gaW5wdXQ8YW55W10+KFtdKTtcblx0Z3JpZE9wdGlvbnMgPSBpbnB1dDxHcmlkT3B0aW9ucz4oe30pO1xuXHRzZWFyY2hQcm0gPSBpbnB1dDxTZWFyY2g+KHt9KTtcblx0dmlzaWJsZSA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcblx0aW5uZXJWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cdHNob3dTZWFyY2ggPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblx0c2VsZWN0Q2FuY2VsOiBhbnlbXSA9IFtdO1xuXHRzZWxlY3RNb2RlbENvZGUgPSBpbnB1dDxzdHJpbmc+KCk7XG5cdGN1c3RvbUxpc3RGb3JtQnlEaWFsb2cgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XG5cblx0QE91dHB1dCgpIGNhbmNlbFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBBY3Rpb25TZXJ2aWNlKSB7fVxuXG5cdGFwaSgpIHtcblx0XHRyZXR1cm4gdGhpcy5ncmlkLmdldEdyaWQoKS5hcGk7XG5cdH1cblxuXHRjYW5jZWwoKSB7XG5cdFx0dGhpcy52aXNpYmxlLnNldChmYWxzZSk7XG5cdH1cblxuXHRvaygpIHtcblx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmdldFNlbGVjdGVkRGF0YSgpLm1hcCgoaXRlbSkgPT4ge1xuXHRcdFx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcblx0XHRcdHRoaXMuZ3JpZE9wdGlvbnMoKS5jb2x1bW5EZWZzPy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXN1bHRbY29sLmZpZWxkXSA9IGl0ZW1bY29sLmZpZWxkXTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9KTtcblx0XHR0aGlzLm9uT2suZW1pdChyZXN1bHQpO1xuXHRcdHRoaXMuc2VsZWN0Q2FuY2VsLmxlbmd0aCA+IDAgJiYgdGhpcy5jYW5jZWxTZWxlY3QuZW1pdCh0aGlzLnNlbGVjdENhbmNlbCk7XG5cdFx0dGhpcy5zZWxlY3RDYW5jZWwgPSBbXTtcblx0XHR0aGlzLnZpc2libGUuc2V0KGZhbHNlKTtcblx0fVxuXG5cdGdldFNlbGVjdGVkRGF0YSgpOiBhbnlbXSB7XG5cdFx0dGhpcy5zZWxlY3RDYW5jZWwgPSBbXTtcblx0XHRjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cdFx0Y29uc3Qgc2VsZWN0aW9uS2V5cyA9IHRoaXMuc2VsZWN0aW9uS2V5cygpO1xuXHRcdGNvbnN0IGRhdGFLZXkgPSB0aGlzLmdyaWRPcHRpb25zKCkuZGF0YUtleSB8fCAnaWQnO1xuXHRcdHRoaXMuYXBpKCkuZm9yRWFjaE5vZGUoKG5vZGU6IGFueSkgPT4ge1xuXHRcdFx0Y29uc3Qga2V5VmFsdWUgPSBub2RlLmRhdGEgPyBub2RlLmRhdGFbZGF0YUtleV0gOiAtMTtcblx0XHRcdGlmICghbm9kZS5pc1NlbGVjdGVkKCkgJiYgc2VsZWN0aW9uS2V5cy5pbmNsdWRlcyhrZXlWYWx1ZSkpIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RDYW5jZWwucHVzaChub2RlLmRhdGEpO1xuXHRcdFx0fVxuXG5cdFx0XHRub2RlLmlzU2VsZWN0ZWQoKSAmJiByZXN1bHQucHVzaCh7IC4uLm5vZGUuZGF0YSB9KTtcblx0XHR9KTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0b25TaG93KCkge1xuXHRcdHRoaXMuc2VsZWN0Q2FuY2VsID0gW107XG5cdFx0dGhpcy5pbm5lclZpc2libGUgPSB0cnVlO1xuXHRcdHRoaXMuYWN0aW9uLnNldFBvcE1vZGUodHJ1ZSk7XG5cdH1cblxuXHRvbkhpZGUoKSB7XG5cdFx0dGhpcy5zZWxlY3RDYW5jZWwgPSBbXTtcblx0XHR0aGlzLmNhbmNlbCgpO1xuXHRcdHRoaXMuaW5uZXJWaXNpYmxlID0gZmFsc2U7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmFjdGlvbi5zZXRQb3BNb2RlKGZhbHNlKTtcblx0XHR9KTtcblx0fVxuXG5cdG9uTWF4aW1pemUoZXZlbnQ6IGFueSkge1xuXHRcdGlmIChldmVudC5tYXhpbWl6ZWQpIHtcblx0XHRcdHRoaXMuZ3JpZC5zZXRTY3JvbGxIZWlnaHQoJ2NhbGMoMTAwdmggLSAxNTBweCknKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5ncmlkLnNldFNjcm9sbEhlaWdodCgpO1xuXHRcdH1cblx0fVxufVxuIiwiPHAtZGlhbG9nXG5cdFtoZWFkZXJdPVwidGl0bGUoKVwiXG5cdFttb2RhbF09XCJ0cnVlXCJcblx0W3N0eWxlXT1cInsgd2lkdGg6ICc1MHZ3JyB9XCJcblx0W21heGltaXphYmxlXT1cInRydWVcIlxuXHRbYXBwZW5kVG9dPVwiJ2JvZHknXCJcblx0W2ZvY3VzT25TaG93XT1cImZhbHNlXCJcblx0KG9uU2hvdyk9XCJvblNob3coKVwiXG5cdChvbkhpZGUpPVwib25IaWRlKClcIlxuXHQob25NYXhpbWl6ZSk9XCJvbk1heGltaXplKCRldmVudClcIlxuXHRbKHZpc2libGUpXT1cInZpc2libGVcIj5cblx0QGlmIChpbm5lclZpc2libGUpIHtcblx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMlwiPlxuICAgICAgQGlmIChjdXN0b21MaXN0Rm9ybUJ5RGlhbG9nKCkpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUxpc3RGb3JtQnlEaWFsb2coKTtjb250ZXh0OnskaW1wbGljaXQ6IHRoaXMuc2VsZWN0TW9kZWxDb2RlKCl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICB9XG5cdFx0XHRAaWYgKHNob3dTZWFyY2goKSkge1xuXHRcdFx0XHQ8Y3VzdG9tLXNlYXJjaCBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnMoKVwiPjwvY3VzdG9tLXNlYXJjaD5cblx0XHRcdH1cblx0XHRcdDxjdXN0b20tZ3JpZFxuXHRcdFx0XHRbc2hvd0FjdF09XCJmYWxzZVwiXG5cdFx0XHRcdFtzZWFyY2hQcm1dPVwic2VhcmNoUHJtKClcIlxuXHRcdFx0XHRbc2VsZWN0aW9uS2V5c109XCJzZWxlY3Rpb25LZXlzKClcIlxuXHRcdFx0XHRbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnMoKVwiPjwvY3VzdG9tLWdyaWQ+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMlwiPlxuXHRcdFx0XHQ8cC1idXR0b25cblx0XHRcdFx0XHRsYWJlbD1cIuWPlua2iFwiXG5cdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0c2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuXHRcdFx0XHRcdChjbGljayk9XCJjYW5jZWwoKVwiIC8+XG5cdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdGxhYmVsPVwi56Gu5a6aXCJcblx0XHRcdFx0XHRbb3V0bGluZWRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9rKClcIiAvPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdH1cbjwvcC1kaWFsb2c+XG4iXX0=
|
|
@@ -363,6 +363,7 @@ export const convertGrid = (thisArg, gridList, fiterPreloads) => {
|
|
|
363
363
|
grid.selectDataCb = selectDataCb;
|
|
364
364
|
grid.selectOptions.scrollHeight = '300px';
|
|
365
365
|
grid.selectOptions.searchPrm = selectContent.searchPrm;
|
|
366
|
+
grid.selectModelCode = item.selectModelCode;
|
|
366
367
|
convertCol(grid.selectOptions, grid.selectOptions.columnDefs, 1);
|
|
367
368
|
});
|
|
368
369
|
grid.searchPrm = { ...thisArg.searchPrm };
|
|
@@ -485,4 +486,4 @@ export const deepClone = (source, that, cache) => {
|
|
|
485
486
|
return source;
|
|
486
487
|
}
|
|
487
488
|
};
|
|
488
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3NoYXJlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlsQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQVMsRUFBbUIsRUFBRTtJQUNoRSw2QkFBNkI7SUFDN0IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1gsT0FBTyxVQUFVLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLElBQUksWUFBWSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FDekMsR0FBRztLQUNELE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVztLQUM5QixPQUFPLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUMsV0FBVztLQUMvQyxXQUFXLEVBQUUsQ0FBQyxPQUFPO0tBQ3JCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRO0tBQ3JCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNsRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFWixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7SUFDcEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWU7SUFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztJQUNsRSxPQUFPLEdBQUcsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7SUFDdEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDZixPQUFPO1FBQ04sSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUNWLEtBQUssRUFBRSxDQUFDO1lBQ1IsT0FBTyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUNWLEtBQUssRUFBRSxDQUFDO1lBQ1IsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQ0QsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQVEsRUFBRSxLQUFVLEVBQU8sRUFBRTtJQUMzRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLGVBQWU7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3RSxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsNkJBQTZCO1lBQzdCLElBQUksQ0FBQztnQkFDSixNQUFNLE9BQU8sR0FBRztvQkFDZixVQUFVO29CQUNWLEVBQUU7b0JBQ0YsV0FBVztvQkFDWCxJQUFJO29CQUNKLE9BQU8sRUFBRSx1QkFBdUI7b0JBQ2hDLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUztvQkFDdEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztvQkFDdEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztvQkFDcEMsRUFBRTtpQkFDRixDQUFDO2dCQUVGLHFCQUFxQjtnQkFDckIsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7b0JBQ2pDLE9BQU8sSUFBSSxRQUFRLENBQ2xCLFNBQVMsRUFDVDs7aUJBRVcsQ0FBQzs7T0FFWCxDQUNELENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QixDQUFDO2dCQUVELGNBQWM7Z0JBQ2QsT0FBTyxJQUFJLFFBQVEsQ0FDbEIsU0FBUyxFQUNUOztpQkFFWSxDQUFDOztNQUVaLENBQ0QsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDN0MsT0FBTyxHQUFHLENBQUM7WUFDWixDQUFDO1FBQ0YsQ0FBQztRQUNELElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixPQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDRixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDWixDQUFDLENBQUM7QUFFRiwyQkFBMkI7QUFDM0IsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFO0lBQzNELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFFRixvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBYyxFQUFVLEVBQUU7SUFDdkQsMkJBQTJCO0lBQzNCLElBQUksMEJBQTBCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN4QyxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRTtRQUN6QyxlQUFlLEVBQUU7WUFDaEIsTUFBTSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUTtZQUM5QixNQUFNLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQzlCLFdBQVc7WUFDWCxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDO1NBQ3hDO0tBQ0QsQ0FBQyxDQUFDO0lBQ0gsT0FBTyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE9BQWUsRUFBVSxFQUFFO0lBQzNELFVBQVU7SUFDVixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsdUJBQXVCO0lBQ3ZCLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUU7SUFDMUMsSUFBSSxDQUFDO1FBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1osa0RBQWtEO1FBQ2xELGdCQUFnQjtRQUNoQixtREFBbUQ7UUFDbkQsSUFBSTtRQUNKLE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNGLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFRLEVBQUUsSUFBYyxFQUFFLEVBQUU7SUFDOUQsT0FBTztJQUNQLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25FLE1BQU0sSUFBSSxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxHQUFXLEVBQUUsRUFBRTtRQUM1QyxxQkFBcUI7UUFDckIsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7WUFDaEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDUixDQUFDLENBQUM7QUFDRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUU7SUFDdEMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1FBQ3RCLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7WUFDdkUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsV0FBVyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzNFLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbEIsQ0FBQztJQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxHQUFHLENBQUM7QUFDWixDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBWSxFQUFFLE9BQVksRUFBRSxFQUFFO0lBQzNELGFBQWE7SUFDYixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ2hDLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUMzRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDOUIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ2pDLElBQUksTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLE1BQU0sQ0FBQyxTQUFTLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2RSxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztRQUM1QixVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxPQUFPLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsT0FBTyxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ2pELE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUU5QixXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakQsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFOUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNwQyxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUM3QyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUN4RCxPQUFPLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztJQUNoRCxPQUFPLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztBQUNuQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFXLEVBQUUsS0FBYyxFQUFFLEVBQUU7SUFDMUQsS0FBSyxHQUFHLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNyQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQU0sQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBRTdDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztJQUVoQixLQUFLLElBQUksQ0FBQyxHQUFHLGVBQWUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzlFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQU0sQ0FBQyxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxDQUFDO1FBQ1gsQ0FBQzthQUFNLENBQUM7WUFDUCxNQUFNO1FBQ1AsQ0FBQztJQUNGLENBQUM7SUFFRCxJQUFJLGVBQWUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQU0sQ0FBQyxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQ2pILE9BQU8sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQVksRUFBRSxHQUFVLEVBQUUsU0FBaUIsRUFBRSxRQUFpQixFQUFFLEVBQUU7SUFDNUYsYUFBYTtJQUNiLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDaEMsb0NBQW9DO0lBQ3BDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3pCLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLFFBQVEsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN2RSxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixJQUFJLE9BQU8sR0FBRztnQkFDYixPQUFPLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7Z0JBQzdDLFlBQVksRUFBRSxpQkFBaUI7Z0JBQy9CLGtCQUFrQixFQUFFO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7aUJBQzdDO2FBQ0QsQ0FBQztZQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDcEMsT0FBTyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDOUIsQ0FBQztRQUNELHFCQUFxQjtRQUNyQix5REFBeUQ7UUFDekQsbURBQW1EO1FBQ25ELCtCQUErQjtRQUMvQixJQUFJO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFdBQWdCLEVBQUUsRUFBRTtJQUNyRCxXQUFXLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1FBQzdDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUN2QixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDcEIsQ0FBQztRQUNELGFBQWE7UUFDYixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNyRSxHQUFHLENBQUMsT0FBTyxHQUFHLFVBQVUsV0FBVyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUQsQ0FBQztRQUNELElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEQsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdEIsR0FBRyxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxPQUFPLEdBQUc7Z0JBQ2IsT0FBTyxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO2dCQUM3QyxZQUFZLEVBQUUsaUJBQWlCO2dCQUMvQixrQkFBa0IsRUFBRTtvQkFDbkIsT0FBTyxFQUFFLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO2lCQUM3QzthQUNELENBQUM7WUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM1QixXQUFXLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1lBQ3hDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQ2xDLENBQUM7SUFDRixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQVksRUFBRSxRQUFhLEVBQUUsYUFBa0IsRUFBRSxFQUFFO0lBQzlFLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQVMsRUFBRSxFQUFFO1FBQ3BDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLEdBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLGFBQWEsWUFBWSxLQUFLLEVBQUUsQ0FBQztZQUN6QyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7WUFDekIsSUFBSSxFQUNILFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLGVBQWUsRUFBRSxFQUMvQyxjQUFjLEVBQ2QsVUFBVSxFQUNWLEtBQUssRUFDTCxZQUFZLEVBQ1osRUFBRSxFQUNGLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsR0FBRyxJQUFJLEVBQ2pCLFlBQVksRUFDWixRQUFRLEVBQ1IsYUFBYSxFQUNiLGVBQWUsRUFDZixPQUFPLEVBQ1AsU0FBUyxFQUNULE9BQU8sR0FDUCxHQUFHLElBQUksQ0FBQztZQUNULElBQUksR0FBRyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUMzRSxJQUFJLFdBQVcsR0FBRztnQkFDakIsR0FBRyxlQUFlO2dCQUNsQixFQUFFO2dCQUNGLGNBQWM7Z0JBQ2QsVUFBVTtnQkFDVixTQUFTO2dCQUNULFNBQVM7YUFDVCxDQUFDO1lBQ0YsYUFBYTtZQUNiLElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pGLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuRSxDQUFDO1lBQ0QsSUFBSSxXQUFXLENBQUMsWUFBWSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUM5QyxXQUFXLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1lBQzlDLENBQUM7WUFDRCxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNsQixXQUFXLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztZQUN6QyxDQUFDO1lBQ0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDZCxXQUFXLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDbEMsV0FBVyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDakMsQ0FBQztZQUNELElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ25CLFdBQVcsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO2dCQUMxQyxJQUFJLGFBQWEsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDN0IsV0FBVyxDQUFDLFlBQVksR0FBRzt3QkFDMUIsSUFBSSxFQUFFLGFBQWEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVTt3QkFDMUQsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJO3FCQUN6RCxDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDUCxXQUFXLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztnQkFDdEMsQ0FBQztZQUNGLENBQUM7WUFDRCxVQUFVLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2pFLFdBQVcsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1lBQ2pDLElBQUksY0FBYyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3pELE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ3JFLElBQUksYUFBYSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDckUsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLEVBQUUsV0FBVyxDQUFDO29CQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUM7b0JBQ2xGLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLElBQUksWUFBWSxFQUFFLENBQUM7d0JBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNuRyxDQUFDO3lCQUFNLENBQUM7d0JBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ25HLENBQUM7b0JBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7b0JBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO29CQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7b0JBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUM7b0JBQ3ZELFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDM0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLFNBQVMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksR0FBRztnQkFDTixHQUFHLElBQUk7YUFDUCxDQUFDO1lBQ0YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFZLEVBQUUsUUFBYSxFQUFFLFVBQWUsRUFBRSxFQUFFO0lBQzNFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtRQUM5QixJQUFJLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2xELENBQUM7SUFDRixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxXQUFXLEdBQUc7UUFDckIsTUFBTSxFQUFFO1lBQ1A7Z0JBQ0MsVUFBVSxFQUFFLHlCQUF5QjtnQkFDckMsS0FBSyxFQUFFLFFBQVE7YUFDZjtTQUNEO1FBQ0QsSUFBSSxFQUFFLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN2QixTQUFTLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVO1FBQ3RDLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVM7UUFDckMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFO0tBQ2xCLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFO0lBQzlCLElBQUksZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN2RSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUN0QixNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsV0FBZ0IsRUFBRSxPQUFZLEVBQUUsRUFBRTtJQUNyRSxXQUFXLENBQUMsWUFBWSxHQUFHLG9CQUFvQixDQUFDO0lBQ2hELFdBQVcsQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUM7SUFDcEUsSUFBSSxXQUFXLENBQUMsWUFBWSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRixDQUFDO1NBQU0sQ0FBQztRQUNQLFdBQVcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0IsNENBQTRDO1FBQzVDLElBQUksV0FBVyxDQUFDLGFBQWEsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN6QyxXQUFXLENBQUMsWUFBWSxHQUFHO2dCQUMxQixJQUFJLEVBQUUsV0FBVyxDQUFDLGFBQWEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVTtnQkFDdEUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDdEYsQ0FBQztZQUNGLElBQUksV0FBVyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNqRyxXQUFXLENBQUMsWUFBWSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDO1lBQ3RFLENBQUM7UUFDRixDQUFDO2FBQU0sQ0FBQztZQUNQLFdBQVcsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQ3RDLENBQUM7SUFDRixDQUFDO0lBQ0QsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsVUFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BELE9BQU8sV0FBVyxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQUNGLE9BQU87QUFDUCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFXLEVBQUUsSUFBUyxFQUFFLEtBQVcsRUFBRSxFQUFFO0lBQ2hFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNaLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFJLE1BQU0sWUFBWSxNQUFNLEVBQUUsQ0FBQztRQUM5QixjQUFjO1FBQ2QsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLE1BQVcsQ0FBQztRQUNoQixJQUFJLE1BQU0sWUFBWSxRQUFRLEVBQUUsQ0FBQztZQUNoQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdEIscUJBQXFCO2dCQUNyQixNQUFNLEdBQUc7b0JBQ1IsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDdEMsQ0FBQyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBUyxFQUFFLEVBQUU7b0JBQ3pCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxDQUFDO1lBQ0gsQ0FBQztRQUNGLENBQUM7YUFBTSxJQUFJLE1BQU0sWUFBWSxLQUFLLEVBQUUsQ0FBQztZQUNwQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2IsQ0FBQzthQUFNLElBQUksTUFBTSxZQUFZLElBQUksRUFBRSxDQUFDO1lBQ25DLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBRSxNQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQzthQUFNLElBQUksTUFBTSxZQUFZLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxDQUFDO2FBQU0sQ0FBQztZQUNQLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDYixDQUFDO1FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUIsS0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN4QixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNGLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7U0FBTSxDQUFDO1FBQ1AsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0FBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHBpcGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XHJcbmltcG9ydCB7IGZvcm1UeXBlVG9Qcm9wcyB9IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xyXG5pbXBvcnQgTlAgZnJvbSAnbnVtYmVyLXByZWNpc2lvbic7XHJcblxyXG5leHBvcnQgdHlwZSBGaWx0ZXJNYXRjaE1vZGUgPSAnZW5kc1dpdGgnIHwgJ3N0YXJ0c1dpdGgnIHwgJ2NvbnRhaW5zJyB8ICdlcXVhbHMnIHwgJ25vdEVxdWFscycgfCAnaW4nIHwgJ2x0JyB8ICdsdGUnIHwgJ2d0JyB8ICdndGUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEZpbHRlck1hdGNoTW9kZSA9IChtb2RlOiBhbnkpOiBGaWx0ZXJNYXRjaE1vZGUgPT4ge1xyXG5cdC8vIOacqumFjee9ruaXtuS9v+eUqCBQcmltZU5HIOm7mOiupCBjb250YWluc1xyXG5cdGlmICghbW9kZSkge1xyXG5cdFx0cmV0dXJuICdjb250YWlucyc7XHJcblx0fVxyXG5cdHJldHVybiBtb2RlO1xyXG59O1xyXG5leHBvcnQgbGV0IHRvUGFzY2FsQ2FzZSA9IChzdHI6IHN0cmluZykgPT5cclxuXHRzdHJcclxuXHRcdC5yZXBsYWNlKC9fL2csICcgJykgLy8g5LiL5YiS57q/5pu/5o2i5Li656m65qC8XHJcblx0XHQucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJykgLy8g5bCP6am85bOw5YiG5Ymy5Li65Y2V6K+NXHJcblx0XHQudG9Mb3dlckNhc2UoKSAvLyDovazkuLrlsI/lhplcclxuXHRcdC5zcGxpdCgvXFxzKy8pIC8vIOaMieepuuagvOWIhuWJslxyXG5cdFx0Lm1hcCgod29yZCkgPT4gKHdvcmQgPyB3b3JkWzBdLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpIDogJycpKVxyXG5cdFx0LmpvaW4oJycpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVW5pcXVlSWQgPSAoKSA9PiB7XHJcblx0Y29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKS50b1N0cmluZygzNik7IC8vIOaXtumXtOaIs+i9rDM26L+b5Yi257yp55+t6ZW/5bqmXHJcblx0Y29uc3QgcmFuZG9tID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDQpOyAvLyDpmo/mnLrpg6jliIZcclxuXHRyZXR1cm4gYCR7dGltZXN0YW1wfSR7cmFuZG9tfWA7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQ2lyY3VsYXJJdGVyYXRvciA9IChhcnJheTogYW55W10pID0+IHtcclxuXHRsZXQgaW5kZXggPSAtMTtcclxuXHRyZXR1cm4ge1xyXG5cdFx0bmV4dDogKCkgPT4ge1xyXG5cdFx0XHRpbmRleCsrO1xyXG5cdFx0XHRyZXR1cm4gYXJyYXlbaW5kZXggJSBhcnJheS5sZW5ndGhdO1xyXG5cdFx0fSxcclxuXHRcdHByZXY6ICgpID0+IHtcclxuXHRcdFx0aW5kZXgtLTtcclxuXHRcdFx0cmV0dXJuIGFycmF5WygoaW5kZXggJSBhcnJheS5sZW5ndGgpICsgYXJyYXkubGVuZ3RoKSAlIGFycmF5Lmxlbmd0aF07XHJcblx0XHR9LFxyXG5cdH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VGdW5jdGlvbnMgPSAob2JqOiBhbnksIF90aGlzOiBhbnkpOiBhbnkgPT4ge1xyXG5cdGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xyXG5cdFx0Ly8g5bCd6K+V5qOA5rWL5piv5ZCm5piv5Ye95pWw5a2X56ym5LiyXHJcblx0XHRpZiAoKG9iai5pbmNsdWRlcygnPT4nKSB8fCBvYmouaW5jbHVkZXMoJ1Byb21pc2UnKSkgJiYgIWlzSlNPTlBhcnNhYmxlKG9iaikpIHtcclxuXHRcdFx0Y29uc3QgbyA9IGNvbXBpbGVUc1RvSnMob2JqKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJ+ino+aekOWHveaVsDonLCBvYmopO1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGNvbnN0IHNhbmRib3ggPSB7XHJcblx0XHRcdFx0XHRPYnNlcnZhYmxlLFxyXG5cdFx0XHRcdFx0b2YsXHJcblx0XHRcdFx0XHRzaGFyZVJlcGxheSxcclxuXHRcdFx0XHRcdHBpcGUsXHJcblx0XHRcdFx0XHRQcm9taXNlLCAvLyDmt7vliqAgUHJvbWlzZSDliLAgc2FuZGJveFxyXG5cdFx0XHRcdFx0YXN5bmM6IHRydWUsIC8vIOagh+iusOaUr+aMgeW8guatpVxyXG5cdFx0XHRcdFx0cmVzb2x2ZTogUHJvbWlzZS5yZXNvbHZlLmJpbmQoUHJvbWlzZSksXHJcblx0XHRcdFx0XHRyZWplY3Q6IFByb21pc2UucmVqZWN0LmJpbmQoUHJvbWlzZSksXHJcblx0XHRcdFx0XHROUCxcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHQvLyDlpITnkIYgUHJvbWlzZSDmnoTpgKDlh73mlbDnmoTmg4XlhrVcclxuXHRcdFx0XHRpZiAob2JqLmluY2x1ZGVzKCduZXcgUHJvbWlzZScpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gbmV3IEZ1bmN0aW9uKFxyXG5cdFx0XHRcdFx0XHQnc2FuZGJveCcsXHJcblx0XHRcdFx0XHRcdGBcclxuXHRcdFx0XHRcdFx0XHR3aXRoKHNhbmRib3gpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiAke299O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0YCxcclxuXHRcdFx0XHRcdCkuYmluZChfdGhpcykoc2FuZGJveCk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyDlpITnkIbmma7pgJrlh73mlbDlkoznrq3lpLTlh73mlbBcclxuXHRcdFx0XHRyZXR1cm4gbmV3IEZ1bmN0aW9uKFxyXG5cdFx0XHRcdFx0J3NhbmRib3gnLFxyXG5cdFx0XHRcdFx0YFxyXG5cdFx0XHRcdFx0XHR3aXRoKHNhbmRib3gpIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKCR7b30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRgLFxyXG5cdFx0XHRcdCkuYmluZChfdGhpcykoc2FuZGJveCk7XHJcblx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKCflh73mlbDop6PmnpDlpLHotKU6JywgZSwgJ1xcbuWOn+Wni+Wtl+espuS4sjonLCBvYmopO1xyXG5cdFx0XHRcdHJldHVybiBvYmo7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChpc0pTT05QYXJzYWJsZShvYmopKSB7XHJcblx0XHRcdGxldCBqc29uID0gSlNPTi5wYXJzZShvYmopO1xyXG5cdFx0XHRyZXR1cm4gcGFyc2VGdW5jdGlvbnMoanNvbiwgX3RoaXMpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG9iajtcclxuXHR9XHJcblx0aWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG5cdFx0cmV0dXJuIG9iai5tYXAoKGl0ZW06IGFueSkgPT4gcGFyc2VGdW5jdGlvbnMoaXRlbSwgX3RoaXMpKTtcclxuXHR9XHJcblx0aWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xyXG5cdFx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcclxuXHRcdGZvciAoY29uc3Qga2V5IGluIG9iaikge1xyXG5cdFx0XHRpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuXHRcdFx0XHRyZXN1bHRba2V5XSA9IHBhcnNlRnVuY3Rpb25zKG9ialtrZXldLCBfdGhpcyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gb2JqO1xyXG59O1xyXG5cclxuLy8g6L6F5Yqp5Ye95pWw77ya5qOA5p+l5piv5ZCm5YyF5ZCrIFByb21pc2Ug5p6E6YCg5Ye95pWwXHJcbmNvbnN0IGNvbnRhaW5zUHJvbWlzZUNvbnN0cnVjdG9yID0gKHN0cjogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcblx0cmV0dXJuIC9uZXdcXHMrUHJvbWlzZS8udGVzdChzdHIpO1xyXG59O1xyXG5cclxuLy8g5L+u5pS5IGNvbXBpbGVUc1RvSnMg5Ye95pWw5Lul5pu05aW95Zyw5aSE55CGIFByb21pc2VcclxuZXhwb3J0IGNvbnN0IGNvbXBpbGVUc1RvSnMgPSAodHNDb2RlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG5cdC8vIOWmguaenOaYryBQcm9taXNlIOaehOmAoOWHveaVsO+8jOS4jemcgOimgemineWkluWkhOeQhlxyXG5cdGlmIChjb250YWluc1Byb21pc2VDb25zdHJ1Y3Rvcih0c0NvZGUpKSB7XHJcblx0XHRyZXR1cm4gdHNDb2RlO1xyXG5cdH1cclxuXHJcblx0Y29uc3QgcmVzdWx0ID0gdHMudHJhbnNwaWxlTW9kdWxlKHRzQ29kZSwge1xyXG5cdFx0Y29tcGlsZXJPcHRpb25zOiB7XHJcblx0XHRcdG1vZHVsZTogdHMuTW9kdWxlS2luZC5Db21tb25KUyxcclxuXHRcdFx0dGFyZ2V0OiB0cy5TY3JpcHRUYXJnZXQuRVMyMDE1LFxyXG5cdFx0XHQvLyDlkK/nlKjlvILmraXlh73mlbDmlK/mjIFcclxuXHRcdFx0bGliOiBbJ2VzMjAxNScsICdlczIwMTUucHJvbWlzZScsICdkb20nXSxcclxuXHRcdH0sXHJcblx0fSk7XHJcblx0cmV0dXJuIHJlbW92ZVRyYWlsaW5nU2VtaWNvbG9uKHJlc3VsdC5vdXRwdXRUZXh0KTtcclxufTtcclxuXHJcbmNvbnN0IHJlbW92ZVRyYWlsaW5nU2VtaWNvbG9uID0gKGZ1bmNTdHI6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcblx0Ly8g5YWI5Y676Zmk5YmN5ZCO56m655m9XHJcblx0Y29uc3QgdHJpbW1lZCA9IGZ1bmNTdHIudHJpbSgpO1xyXG5cdC8vIOWPquabv+aNouacgOWQjuS4gOS4quWIhuWPt++8iOWmguaenOWug+S4jeWcqOiKseaLrOWPt+WGhe+8iVxyXG5cdGlmICh0cmltbWVkLmVuZHNXaXRoKCc7JykpIHtcclxuXHRcdHJldHVybiB0cmltbWVkLnNsaWNlKDAsIC0xKTtcclxuXHR9XHJcblx0cmV0dXJuIHRyaW1tZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNKU09OUGFyc2FibGUgPSAoc3RyOiBhbnkpID0+IHtcclxuXHR0cnkge1xyXG5cdFx0SlNPTi5wYXJzZShzdHIpO1xyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fSBjYXRjaCAoZSkge1xyXG5cdFx0Ly8gbGV0IHN0cklzT2JqID0gL1xce1tefV0qXFx9fFxcW1teXFxdXSpcXF0vLnRlc3Qoc3RyKVxyXG5cdFx0Ly8gaWYoc3RySXNPYmope1xyXG5cdFx0Ly8gXHRjb25zb2xlLmVycm9yKCdKU09OIOino+aekOWksei0pTonLCBlLCAnXFxu5Y6f5aeL5a2X56ym5LiyOicsIHN0cilcclxuXHRcdC8vIH1cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcbn07XHJcblxyXG4vKipcclxuICog5qC55o2u5oyH5a6a55qE6ZSu5pWw57uE6L+H5ruk5a+56LGhXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSDopoHov4fmu6TnmoTljp/lp4vlr7nosaFcclxuICogQHBhcmFtIHtBcnJheX0ga2V5cyAtIOmcgOimgeS/neeVmeeahOmUruaVsOe7hFxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSDov4fmu6TlkI7nmoTmlrDlr7nosaFcclxuICovXHJcbmV4cG9ydCBjb25zdCBmaWx0ZXJPYmplY3RCeUtleXMgPSAob2JqOiBhbnksIGtleXM6IHN0cmluZ1tdKSA9PiB7XHJcblx0Ly8g5Y+C5pWw5qCh6aqMXHJcblx0aWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KG9iaikpIHtcclxuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ+esrOS4gOS4quWPguaVsOW/hemhu+aYr+aZrumAmuWvueixoScpO1xyXG5cdH1cclxuXHJcblx0aWYgKCFBcnJheS5pc0FycmF5KGtleXMpKSB7XHJcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCfnrKzkuozkuKrlj4LmlbDlv4XpobvmmK/mlbDnu4QnKTtcclxuXHR9XHJcblxyXG5cdC8vIOS9v+eUqHJlZHVjZeWIm+W7uuaWsOWvueixoVxyXG5cdHJldHVybiBrZXlzLnJlZHVjZSgoYWNjOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcblx0XHQvLyDlj6rmnInlvZPljp/lr7nosaHmnInor6XlsZ7mgKfml7bmiY3mt7vliqDliLDmlrDlr7nosaFcclxuXHRcdGlmIChrZXkgaW4gb2JqKSB7XHJcblx0XHRcdGFjY1trZXldID0gb2JqW2tleV07XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gYWNjO1xyXG5cdH0sIHt9KTtcclxufTtcclxuLyoqXHJcbiAqIOiHquWumuS5ieWHveaVsOWOu+mZpOepuuWtl+espuS4slxyXG4gKiBAcGFyYW0gYWN0XHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgY29udmVydEFjdCA9IChhY3Q6IGFueSkgPT4ge1xyXG5cdGFjdC5mb3JFYWNoKCh2OiBhbnkpID0+IHtcclxuXHRcdGlmICh2Lmhhc093blByb3BlcnR5KCdidG5IaWRkZW4nKSAmJiB0eXBlb2Ygdi5idG5IaWRkZW4gIT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRkZWxldGUgdi5idG5IaWRkZW47XHJcblx0XHR9XHJcblx0XHRpZiAodi5oYXNPd25Qcm9wZXJ0eSgnYnRuRGlzYWJsZWQnKSAmJiB0eXBlb2Ygdi5idG5EaXNhYmxlZCAhPSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdGRlbGV0ZSB2LmJ0bkRpc2FibGVkO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHYuaGFzT3duUHJvcGVydHkoJ29uQ2xpY2snKSAmJiB0eXBlb2Ygdi5vbkNsaWNrICE9ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0ZGVsZXRlIHYub25DbGljaztcclxuXHRcdH1cclxuXHR9KTtcclxuXHRyZXR1cm4gYWN0O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIGZvcm1wYWdlIOmAmueUqGNvbnRlbnTlh73mlbDovaznp7tcclxuICogQHBhcmFtIGNvbnRlbnRcclxuICogQHBhcmFtIHRoaXNBcmdcclxuICovXHJcbmV4cG9ydCBjb25zdCBjaGFuZ2VDb250ZW50ID0gKGNvbnRlbnQ6IGFueSwgdGhpc0FyZzogYW55KSA9PiB7XHJcblx0Ly8gQHRzLWlnbm9yZVxyXG5cdGNvbnN0IGlzSTE4biA9IHdpbmRvdy5hcHBJc0kxOG47XHJcblx0Y29udGVudCA9IHBhcnNlRnVuY3Rpb25zKGNvbnRlbnQsIHRoaXNBcmcpO1xyXG5cdGxldCB7IGdyaWRMaXN0LCBocmVmQnRuTGlzdCwgZ2V0UHJtLCBncm91cHMsIHN0YXR1c0tleSwgc3RhdHVzLCBzdGF0dXNTdGVwcywgc3RhdHVzQ29uZiA9IG51bGwgfSA9IGNvbnRlbnQ7XHJcblx0aWYgKHN0YXR1c0tleSkge1xyXG5cdFx0dGhpc0FyZy5zdGF0dXNLZXkgPSBzdGF0dXNLZXk7XHJcblx0XHRzdGF0dXNTdGVwcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKGlzSTE4biAmJiAoIWl0ZW0uaGFzT3duUHJvcGVydHkoJ2kxOG5LZXknKSB8fCBpdGVtLmkxOG5LZXkgPT0gJycpKSB7XHJcblx0XHRcdFx0aXRlbS5pMThuS2V5ID0gYHRhYmxlcy4ke2dldFBybS5tb2RlbE5hbWV9LiR7c3RhdHVzS2V5fSR7aXRlbS52YWx1ZX1gO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdHRoaXNBcmcuc3RlcHMgPSBzdGF0dXNTdGVwcztcclxuXHRcdHN0YXR1c0NvbmYgJiYgKHRoaXNBcmcuc3RhdHVzQ29uZiA9IHN0YXR1c0NvbmYpO1xyXG5cdH1cclxuXHJcblx0dGhpc0FyZy5hY3Rpb25zID0gY29udmVydEFjdChjb250ZW50LmFjdGlvbnMpO1xyXG5cdGNvbnRlbnQuZm9ybURpc2FibGVkICYmICh0aGlzQXJnLmZvcm1EaXNhYmxlZCA9IGNvbnRlbnQuZm9ybURpc2FibGVkKTtcclxuXHR0aGlzQXJnLmdldFBybSA9IGdldFBybTtcclxuXHR0aGlzQXJnLmdldFBybS5vcmdGaWVsZCA9IGNvbnRlbnQub3JnRmllbGQgfHwgJyc7XHJcblx0dGhpc0FyZy5ncmlkcyA9IFtdO1xyXG5cdGxldCBmaXRlclByZWxvYWRzOiBhbnlbXSA9IFtdO1xyXG5cclxuXHRjb252ZXJ0Rm9ybSh0aGlzQXJnLCBncm91cHMsIGNvbnRlbnQuc291cmNlRGF0YSk7XHJcblx0Y29udmVydEdyaWQodGhpc0FyZywgZ3JpZExpc3QsIGZpdGVyUHJlbG9hZHMpO1xyXG5cclxuXHR0aGlzQXJnLmZvcm1EZXRhaWwgPSBjb250ZW50LmZvcm1EZXRhaWw7XHJcblx0dGhpc0FyZy5zYXZlRnVuYyA9IGNvbnRlbnQuc2F2ZUZ1bmM7XHJcblx0dGhpc0FyZy5pc0xvZyA9IGNvbnRlbnQuc291cmNlRGF0YS5tb2RlbC5sb2c7XHJcblx0dGhpc0FyZy5nZXRQcm1bJ2dldExvZyddID0gY29udGVudC5zb3VyY2VEYXRhLm1vZGVsLmxvZztcclxuXHR0aGlzQXJnLmdldFBybVsnZml0ZXJQcmVsb2FkcyddID0gZml0ZXJQcmVsb2FkcztcclxuXHR0aGlzQXJnLmhyZWZCdG5MaXN0ID0gaHJlZkJ0bkxpc3Q7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY2FsY1Jvd1NwYW4gPSAocGFyYW1zOiBhbnksIGZpZWxkPzogc3RyaW5nKSA9PiB7XHJcblx0ZmllbGQgPSBmaWVsZCB8fCBwYXJhbXMuY29sRGVmLmZpZWxkO1xyXG5cdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHBhcmFtcy5kYXRhW2ZpZWxkIV07XHJcblx0Y29uc3QgY3VycmVudFJvd0luZGV4ID0gcGFyYW1zLm5vZGUucm93SW5kZXg7XHJcblxyXG5cdGxldCByb3dTcGFuID0gMTtcclxuXHJcblx0Zm9yIChsZXQgaSA9IGN1cnJlbnRSb3dJbmRleCArIDE7IGkgPCBwYXJhbXMuYXBpLmdldERpc3BsYXllZFJvd0NvdW50KCk7IGkrKykge1xyXG5cdFx0Y29uc3Qgbm9kZSA9IHBhcmFtcy5hcGkuZ2V0RGlzcGxheWVkUm93QXRJbmRleChpKTtcclxuXHRcdGlmIChub2RlLmRhdGFbZmllbGQhXSA9PT0gY3VycmVudFZhbHVlKSB7XHJcblx0XHRcdHJvd1NwYW4rKztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0aWYgKGN1cnJlbnRSb3dJbmRleCA+IDAgJiYgcGFyYW1zLmFwaS5nZXREaXNwbGF5ZWRSb3dBdEluZGV4KGN1cnJlbnRSb3dJbmRleCAtIDEpLmRhdGFbZmllbGQhXSA9PT0gY3VycmVudFZhbHVlKSB7XHJcblx0XHRyZXR1cm4gMTtcclxuXHR9XHJcblx0cmV0dXJuIHJvd1NwYW47XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY29udmVydENvbCA9IChvcHRpb25zOiBhbnksIGNvbDogYW55W10sIGF1dGhMZXZlbDogbnVtYmVyLCBkcmFnU29ydD86IHN0cmluZykgPT4ge1xyXG5cdC8vIEB0cy1pZ25vcmVcclxuXHRjb25zdCBpc0kxOG4gPSB3aW5kb3cuYXBwSXNJMThuO1xyXG5cdC8vIGNvbnNvbGUubG9nKCdpc0kxOG4tLS0tLScsaXNJMThuKVxyXG5cdGNvbC5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuXHRcdGl0ZW0uaGlkZSA9IGl0ZW0uaGlkZUNvbDtcclxuXHRcdGlmIChhdXRoTGV2ZWwgPCAzKSB7XHJcblx0XHRcdGl0ZW0uZWRpdGFibGUgPSBmYWxzZTtcclxuXHRcdH1cclxuXHRcdGlmIChkcmFnU29ydCAmJiBpbmRleCA9PT0gMCkge1xyXG5cdFx0XHRpdGVtLnJvd0RyYWcgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGlzSTE4biAmJiAoIWl0ZW0uaGFzT3duUHJvcGVydHkoJ2kxOG5LZXknKSB8fCBpdGVtLmkxOG5LZXkgPT0gJycpKSB7XHJcblx0XHRcdGl0ZW0uaTE4bktleSA9IGB0YWJsZXMuJHtvcHRpb25zLm1vZGVsTmFtZX0uJHtpdGVtLmZpZWxkfWA7XHJcblx0XHR9XHJcblx0XHRpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgndGV4dFdyYXAnKSAmJiBpdGVtLnRleHRXcmFwKSB7XHJcblx0XHRcdGl0ZW0uYXV0b0hlaWdodCA9IHRydWU7XHJcblx0XHRcdGl0ZW0uY2VsbENsYXNzID0gJ2NlbGwtd3JhcC10ZXh0JztcclxuXHRcdH1cclxuXHRcdGlmIChpdGVtLmZpZWxkVHlwZSA9PSAnVkFSQ0hBUicpIHtcclxuXHRcdFx0aXRlbS5jZWxsRGF0YVR5cGUgPSBmYWxzZTtcclxuXHRcdH1cclxuXHRcdGlmIChpdGVtLnJvd1NwYW5Db25mKSB7XHJcblx0XHRcdGxldCByb3dTcGFuID0ge1xyXG5cdFx0XHRcdHJvd1NwYW46IChwYXJhbXM6IGFueSkgPT4gY2FsY1Jvd1NwYW4ocGFyYW1zKSxcclxuXHRcdFx0XHRjZWxsUmVuZGVyZXI6ICdyb3dTcGFuUmVuZGVyZXInLFxyXG5cdFx0XHRcdGNlbGxSZW5kZXJlclBhcmFtczoge1xyXG5cdFx0XHRcdFx0cm93U3BhbjogKHBhcmFtczogYW55KSA9PiBjYWxjUm93U3BhbihwYXJhbXMpLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdH07XHJcblx0XHRcdE9iamVjdC5hc3NpZ24oaXRlbSwgcm93U3Bhbik7XHJcblx0XHRcdG9wdGlvbnMuc3VwcHJlc3NSb3dUcmFuc2Zvcm0gPSB0cnVlO1xyXG5cdFx0XHRvcHRpb25zLnJvd0NsYXNzID0gJ3Jvd1NwYW4nO1xyXG5cdFx0fVxyXG5cdFx0Ly8gaWYoaXRlbS5lZGl0YWJsZSl7XHJcblx0XHQvLyBcdGl0ZW0uaGVhZGVyQ2xhc3MgPSBpdGVtLmhhc093blByb3BlcnR5KCdoZWFkZXJDbGFzcycpXHJcblx0XHQvLyBcdFx0PyBgJHtpdGVtLmhlYWRlckNsYXNzfSBlZGl0YWJsZS1jb2x1bW4taGVhZGVyYFxyXG5cdFx0Ly8gXHRcdDogJ2VkaXRhYmxlLWNvbHVtbi1oZWFkZXInXHJcblx0XHQvLyB9XHJcblx0fSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ3JpZE9wdGlvbnNIb29rZXIgPSAoZ3JpZE9wdGlvbnM6IGFueSkgPT4ge1xyXG5cdGdyaWRPcHRpb25zPy5jb2x1bW5EZWZzPy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xyXG5cdFx0aWYgKGNvbC5oaWRlQ29sKSB7XHJcblx0XHRcdGNvbC5oaWRlID0gY29sLmhpZGVDb2w7XHJcblx0XHRcdGRlbGV0ZSBjb2wuaGlkZUNvbDtcclxuXHRcdH1cclxuXHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdGNvbnN0IGlzSTE4biA9IHdpbmRvdy5hcHBJc0kxOG47XHJcblx0XHRpZiAoaXNJMThuICYmICghY29sLmhhc093blByb3BlcnR5KCdpMThuS2V5JykgfHwgY29sLmkxOG5LZXkgPT0gJycpKSB7XHJcblx0XHRcdGNvbC5pMThuS2V5ID0gYHRhYmxlcy4ke2dyaWRPcHRpb25zLm1vZGVsTmFtZX0uJHtjb2wuZmllbGR9YDtcclxuXHRcdH1cclxuXHRcdGlmIChjb2wuaGFzT3duUHJvcGVydHkoJ3RleHRXcmFwJykgJiYgY29sLnRleHRXcmFwKSB7XHJcblx0XHRcdGNvbC5hdXRvSGVpZ2h0ID0gdHJ1ZTtcclxuXHRcdFx0Y29sLmNlbGxDbGFzcyA9ICdjZWxsLXdyYXAtdGV4dCc7XHJcblx0XHR9XHJcblx0XHRpZiAoY29sLnJvd1NwYW5Db25mKSB7XHJcblx0XHRcdGxldCByb3dTcGFuID0ge1xyXG5cdFx0XHRcdHJvd1NwYW46IChwYXJhbXM6IGFueSkgPT4gY2FsY1Jvd1NwYW4ocGFyYW1zKSxcclxuXHRcdFx0XHRjZWxsUmVuZGVyZXI6ICdyb3dTcGFuUmVuZGVyZXInLFxyXG5cdFx0XHRcdGNlbGxSZW5kZXJlclBhcmFtczoge1xyXG5cdFx0XHRcdFx0cm93U3BhbjogKHBhcmFtczogYW55KSA9PiBjYWxjUm93U3BhbihwYXJhbXMpLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdH07XHJcblx0XHRcdE9iamVjdC5hc3NpZ24oY29sLCByb3dTcGFuKTtcclxuXHRcdFx0Z3JpZE9wdGlvbnMuc3VwcHJlc3NSb3dUcmFuc2Zvcm0gPSB0cnVlO1xyXG5cdFx0XHRncmlkT3B0aW9ucy5yb3dDbGFzcyA9ICdyb3dTcGFuJztcclxuXHRcdH1cclxuXHR9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0R3JpZCA9ICh0aGlzQXJnOiBhbnksIGdyaWRMaXN0OiBhbnksIGZpdGVyUHJlbG9hZHM6IGFueSkgPT4ge1xyXG5cdGdyaWRMaXN0LmZvckVhY2goYXN5bmMgKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0IWl0ZW0udHlwZSAmJiAoaXRlbS50eXBlID0gJ2dyaWQnKTtcclxuXHRcdGxldCBncmlkOiBhbnkgPSB7IHR5cGU6IGl0ZW0udHlwZSB9O1xyXG5cdFx0aWYgKGl0ZW0uZml0ZXJQcmVsb2FkcyBpbnN0YW5jZW9mIEFycmF5KSB7XHJcblx0XHRcdGZpdGVyUHJlbG9hZHMucHVzaCguLi5pdGVtLmZpdGVyUHJlbG9hZHMpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGl0ZW0udHlwZSA9PSAnZ3JpZCcpIHtcclxuXHRcdFx0bGV0IHtcclxuXHRcdFx0XHRncmlkT3B0aW9uczogeyBjb2x1bW5EZWZzLCAuLi5yZXN0R3JpZE9wdGlvbnMgfSxcclxuXHRcdFx0XHRzdWJUYWJsZVNvdXJjZSxcclxuXHRcdFx0XHRzdWJEYXRhS2V5LFxyXG5cdFx0XHRcdHRpdGxlLFxyXG5cdFx0XHRcdHNlbGVjdERhdGFDYixcclxuXHRcdFx0XHRmayxcclxuXHRcdFx0XHRtYWluRmllbGQsXHJcblx0XHRcdFx0dW5pcXVlRmllbGQsXHJcblx0XHRcdFx0YWRkRGF0YUNiLFxyXG5cdFx0XHRcdHNob3dEZWxldGUgPSB0cnVlLFxyXG5cdFx0XHRcdHNjcm9sbEhlaWdodCxcclxuXHRcdFx0XHRkcmFnU29ydCxcclxuXHRcdFx0XHRzZWxlY3Rpb25Nb2RlLFxyXG5cdFx0XHRcdGlzUm93U2VsZWN0YWJsZSxcclxuXHRcdFx0XHRhZGRTb3J0LFxyXG5cdFx0XHRcdHJlZmVyZW5jZSxcclxuXHRcdFx0XHRzbG90S2V5LFxyXG5cdFx0XHR9ID0gaXRlbTtcclxuXHRcdFx0Z3JpZCA9IHsgc3ViVGFibGVTb3VyY2UsIHN1YkRhdGFLZXksIHRpdGxlLCBzaG93RGVsZXRlLCBzbG90S2V5LCAuLi5ncmlkIH07XHJcblx0XHRcdGxldCBncmlkT3B0aW9ucyA9IHtcclxuXHRcdFx0XHQuLi5yZXN0R3JpZE9wdGlvbnMsXHJcblx0XHRcdFx0ZmssXHJcblx0XHRcdFx0c3ViVGFibGVTb3VyY2UsXHJcblx0XHRcdFx0c3ViRGF0YUtleSxcclxuXHRcdFx0XHRtYWluRmllbGQsXHJcblx0XHRcdFx0cmVmZXJlbmNlLFxyXG5cdFx0XHR9O1xyXG5cdFx0XHQvLyBAdHMtaWdub3JlXHJcblx0XHRcdGlmICh3aW5kb3cuYXBwSXNJMThuICYmICghaXRlbS5oYXNPd25Qcm9wZXJ0eSgnaTE4bktleScpIHx8IGl0ZW0uaTE4bktleSA9PSAnJykpIHtcclxuXHRcdFx0XHRncmlkLmkxOG5LZXkgPSBgdGFibGVzLiR7dGhpc0FyZy5nZXRQcm0ubW9kZWxOYW1lfS4ke3N1YkRhdGFLZXl9YDtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoZ3JpZE9wdGlvbnMucm93TW9kZWxUeXBlID09ICdjbGllbnRTaWRlJykge1xyXG5cdFx0XHRcdGdyaWRPcHRpb25zLnN1cHByZXNzUm93VmlydHVhbGlzYXRpb24gPSB0cnVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChzY3JvbGxIZWlnaHQpIHtcclxuXHRcdFx0XHRncmlkT3B0aW9ucy5zY3JvbGxIZWlnaHQgPSBzY3JvbGxIZWlnaHQ7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKGRyYWdTb3J0KSB7XHJcblx0XHRcdFx0Z3JpZE9wdGlvbnMucm93RHJhZ01hbmFnZWQgPSB0cnVlO1xyXG5cdFx0XHRcdGdyaWRPcHRpb25zLmRyYWdTb3J0ID0gZHJhZ1NvcnQ7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHNlbGVjdGlvbk1vZGUpIHtcclxuXHRcdFx0XHRncmlkT3B0aW9ucy5zZWxlY3Rpb25Nb2RlID0gc2VsZWN0aW9uTW9kZTtcclxuXHRcdFx0XHRpZiAoc2VsZWN0aW9uTW9kZSAhPSAnbm9uZScpIHtcclxuXHRcdFx0XHRcdGdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbiA9IHtcclxuXHRcdFx0XHRcdFx0bW9kZTogc2VsZWN0aW9uTW9kZSA9PSAnc2luZ2xlJyA/ICdzaW5nbGVSb3cnIDogJ211bHRpUm93JyxcclxuXHRcdFx0XHRcdFx0aXNSb3dTZWxlY3RhYmxlOiBpc1Jvd1NlbGVjdGFibGUgPyBpc1Jvd1NlbGVjdGFibGUgOiBudWxsLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Z3JpZE9wdGlvbnMucm93U2VsZWN0aW9uID0gdW5kZWZpbmVkO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRjb252ZXJ0Q29sKGdyaWRPcHRpb25zLCBjb2x1bW5EZWZzLCB0aGlzQXJnLmF1dGhMZXZlbCwgZHJhZ1NvcnQpO1xyXG5cdFx0XHRncmlkT3B0aW9ucy5jb2x1bW5EZWZzID0gY29sdW1uRGVmcztcclxuXHRcdFx0Y29uc29sZS5sb2coaXRlbS5zZWxlY3RNb2RlbENvZGUpXHJcblx0XHRcdGlmIChzdWJUYWJsZVNvdXJjZSA9PT0gJ3NlbGVjdCcgJiYgaXRlbS5zZWxlY3RNb2RlbENvZGUpIHtcclxuXHRcdFx0XHR0aGlzQXJnLndlYmdldCh7IGNvZGU6IGl0ZW0uc2VsZWN0TW9kZWxDb2RlIH0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBzZWxlY3RDb250ZW50ID0gcGFyc2VGdW5jdGlvbnMoSlNPTi5wYXJzZShyZXMuY29udGVudCksIHRoaXNBcmcpO1xyXG5cdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zID0gc2VsZWN0Q29udGVudD8uZ3JpZE9wdGlvbnM7XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMucm93TW9kZWxUeXBlID0gZ3JpZC5zZWxlY3RPcHRpb25zLnJvd01vZGVsVHlwZSB8fCAnc2VydmVyU2lkZSc7XHJcblx0XHRcdFx0XHRpZiAoZ3JpZC5zZWxlY3RPcHRpb25zLnJvd01vZGVsVHlwZSA9PSAnc2VydmVyU2lkZScpIHtcclxuXHRcdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLnNlcnZlckZ1bmMgPSBncmlkLnNlbGVjdE9wdGlvbnMuc2VydmVyRnVuYyB8fCB0aGlzQXJnLndlYl9zZWFyY2guYmluZCh0aGlzQXJnKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucy5jbGllbnRGdW5jID0gZ3JpZC5zZWxlY3RPcHRpb25zLmNsaWVudEZ1bmMgfHwgdGhpc0FyZy53ZWJfc2VhcmNoLmJpbmQodGhpc0FyZyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRncmlkLnVuaXF1ZUZpZWxkID0gdW5pcXVlRmllbGQ7XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdERhdGFDYiA9IHNlbGVjdERhdGFDYjtcclxuXHRcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucy5zY3JvbGxIZWlnaHQgPSAnMzAwcHgnO1xyXG5cdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLnNlYXJjaFBybSA9IHNlbGVjdENvbnRlbnQuc2VhcmNoUHJtO1xyXG5cdFx0XHRcdFx0Y29udmVydENvbChncmlkLnNlbGVjdE9wdGlvbnMsIGdyaWQuc2VsZWN0T3B0aW9ucy5jb2x1bW5EZWZzISwgMSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0Z3JpZC5zZWFyY2hQcm0gPSB7IC4uLnRoaXNBcmcuc2VhcmNoUHJtIH07XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0YWRkRGF0YUNiICYmIChncmlkT3B0aW9ucy5hZGREYXRhQ2IgPSBhZGREYXRhQ2IpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGdyaWQuZ3JpZE9wdGlvbnMgPSBncmlkT3B0aW9ucztcclxuXHRcdFx0YWRkU29ydCAmJiAoZ3JpZC5hZGRTb3J0ID0gYWRkU29ydCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRpdGVtLmludGVyYWN0aXZlTGFiZWwgPSB0cnVlO1xyXG5cdFx0XHRncmlkID0ge1xyXG5cdFx0XHRcdC4uLml0ZW0sXHJcblx0XHRcdH07XHJcblx0XHRcdGdyaWQuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cdFx0fVxyXG5cdFx0dGhpc0FyZy5ncmlkcy5wdXNoKGdyaWQpO1xyXG5cdH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNvbnZlcnRGb3JtID0gKHRoaXNBcmc6IGFueSwgZ3JvdXBBcnI6IGFueSwgc291cmNlRGF0YTogYW55KSA9PiB7XHJcblx0Z3JvdXBBcnIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcblx0XHRpZiAodGhpc0FyZy5hdXRoTGV2ZWwgPCAzKSB7XHJcblx0XHRcdGl0ZW1bZm9ybVR5cGVUb1Byb3BzW2l0ZW0udHlwZV1dLmRpc2FibGVkID0gdHJ1ZTtcclxuXHRcdH1cclxuXHR9KTtcclxuXHR0aGlzQXJnLmZvcm1PcHRpb25zID0ge1xyXG5cdFx0ZmllbGRzOiBbXHJcblx0XHRcdHtcclxuXHRcdFx0XHRncm91cENsYXNzOiAnZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAnLFxyXG5cdFx0XHRcdGdyb3VwOiBncm91cEFycixcclxuXHRcdFx0fSxcclxuXHRcdF0sXHJcblx0XHRmb3JtOiBuZXcgRm9ybUdyb3VwKHt9KSxcclxuXHRcdG1haW5GaWVsZDogc291cmNlRGF0YS5tb2RlbC5tYWluRmllbGRzLFxyXG5cdFx0bW9kZWxOYW1lOiBzb3VyY2VEYXRhLm1vZGVsLm1vZGVsTmFtZSxcclxuXHRcdGV4dHJhOiB7IHRoaXNBcmcgfSxcclxuXHR9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNsZWFyTG9jYWwgPSAoKSA9PiB7XHJcblx0bGV0IHRoZW1lQ29uZmlnU3RhdGUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29uZmlnU3RhdGUnKTtcclxuXHR3aW5kb3cubG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcblx0aWYgKHRoZW1lQ29uZmlnU3RhdGUpIHtcclxuXHRcdHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGhlbWVDb25maWdTdGF0ZScsIHRoZW1lQ29uZmlnU3RhdGUpO1xyXG5cdH1cclxuXHR3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBwYWdlTGlzdEdyaWRPcHRpb25zID0gKGdyaWRPcHRpb25zOiBhbnksIHRoaXNBcmc6IGFueSkgPT4ge1xyXG5cdGdyaWRPcHRpb25zLnNjcm9sbEhlaWdodCA9ICdjYWxjKDEwMHZoIC0gOTVweCknO1xyXG5cdGdyaWRPcHRpb25zLnJvd01vZGVsVHlwZSA9IGdyaWRPcHRpb25zLnJvd01vZGVsVHlwZSB8fCAnc2VydmVyU2lkZSc7XHJcblx0aWYgKGdyaWRPcHRpb25zLnJvd01vZGVsVHlwZSA9PSAnc2VydmVyU2lkZScpIHtcclxuXHRcdGdyaWRPcHRpb25zLnNlcnZlckZ1bmMgPSBncmlkT3B0aW9ucy5zZXJ2ZXJGdW5jIHx8IHRoaXNBcmcud2ViX3NlYXJjaC5iaW5kKHRoaXNBcmcpO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRncmlkT3B0aW9ucy5jbGllbnRGdW5jID0gZ3JpZE9wdGlvbnMuY2xpZW50RnVuYyB8fCB0aGlzQXJnLndlYl9zZWFyY2guYmluZCh0aGlzQXJnKTtcclxuXHR9XHJcblx0aWYgKGdyaWRPcHRpb25zLnNlbGVjdGlvbk1vZGUpIHtcclxuXHRcdC8vIGdyaWRPcHRpb25zLnNlbGVjdGlvbk1vZGUgPSBzZWxlY3Rpb25Nb2RlXHJcblx0XHRpZiAoZ3JpZE9wdGlvbnMuc2VsZWN0aW9uTW9kZSAhPSAnbm9uZScpIHtcclxuXHRcdFx0Z3JpZE9wdGlvbnMucm93U2VsZWN0aW9uID0ge1xyXG5cdFx0XHRcdG1vZGU6IGdyaWRPcHRpb25zLnNlbGVjdGlvbk1vZGUgPT0gJ3NpbmdsZScgPyAnc2luZ2xlUm93JyA6ICdtdWx0aVJvdycsXHJcblx0XHRcdFx0aXNSb3dTZWxlY3RhYmxlOiBncmlkT3B0aW9ucy5pc1Jvd1NlbGVjdGFibGUgPyBncmlkT3B0aW9ucy5pc1Jvd1NlbGVjdGFibGUgOiB1bmRlZmluZWQsXHJcblx0XHRcdH07XHJcblx0XHRcdGlmIChncmlkT3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnaGVhZGVyQ2hlY2tib3gnKSAmJiBncmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24ubW9kZSA9PSAnbXVsdGlSb3cnKSB7XHJcblx0XHRcdFx0Z3JpZE9wdGlvbnMucm93U2VsZWN0aW9uLmhlYWRlckNoZWNrYm94ID0gZ3JpZE9wdGlvbnMuaGVhZGVyQ2hlY2tib3g7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbiA9IHVuZGVmaW5lZDtcclxuXHRcdH1cclxuXHR9XHJcblx0Y29udmVydENvbChncmlkT3B0aW9ucywgZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyEsIDEpO1xyXG5cdHJldHVybiBncmlkT3B0aW9ucztcclxufTtcclxuLy8g5rex5bqm5ou36LSdXHJcbmV4cG9ydCBjb25zdCBkZWVwQ2xvbmUgPSAoc291cmNlOiBhbnksIHRoYXQ6IGFueSwgY2FjaGU/OiBhbnkpID0+IHtcclxuXHRpZiAoIWNhY2hlKSB7XHJcblx0XHRjYWNoZSA9IG5ldyBNYXAoKTtcclxuXHR9XHJcblx0aWYgKHNvdXJjZSBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG5cdFx0Ly8g5LiN6ICD6JmR6LeoIGlmcmFtZVxyXG5cdFx0aWYgKGNhY2hlLmdldChzb3VyY2UpKSB7XHJcblx0XHRcdHJldHVybiBjYWNoZS5nZXQoc291cmNlKTtcclxuXHRcdH1cclxuXHRcdGxldCByZXN1bHQ6IGFueTtcclxuXHRcdGlmIChzb3VyY2UgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG5cdFx0XHRpZiAoc291cmNlLnByb3RvdHlwZSkge1xyXG5cdFx0XHRcdC8vIOaciSBwcm90b3R5cGUg5bCx5piv5pmu6YCa5Ye95pWwXHJcblx0XHRcdFx0cmVzdWx0ID0gZnVuY3Rpb24gKCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHNvdXJjZS5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xyXG5cdFx0XHRcdH07XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0cmVzdWx0ID0gKC4uLmFyZ3M6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHNvdXJjZS5jYWxsKHVuZGVmaW5lZCwgLi4uYXJncyk7XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBBcnJheSkge1xyXG5cdFx0XHRyZXN1bHQgPSBbXTtcclxuXHRcdH0gZWxzZSBpZiAoc291cmNlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG5cdFx0XHRyZXN1bHQgPSBuZXcgRGF0ZSgoc291cmNlIGFzIGFueSkgLSAwKTtcclxuXHRcdH0gZWxzZSBpZiAoc291cmNlIGluc3RhbmNlb2YgUmVnRXhwKSB7XHJcblx0XHRcdHJlc3VsdCA9IG5ldyBSZWdFeHAoc291cmNlLnNvdXJjZSwgc291cmNlLmZsYWdzKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJlc3VsdCA9IHt9O1xyXG5cdFx0fVxyXG5cdFx0Y2FjaGUuc2V0KHNvdXJjZSwgcmVzdWx0KTtcclxuXHRcdGZvciAobGV0IGtleSBpbiBzb3VyY2UpIHtcclxuXHRcdFx0aWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcblx0XHRcdFx0cmVzdWx0W2tleV0gPSBkZWVwQ2xvbmUoc291cmNlW2tleV0sIGNhY2hlKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9IGVsc2Uge1xyXG5cdFx0cmV0dXJuIHNvdXJjZTtcclxuXHR9XHJcbn07XHJcbiJdfQ==
|
|
489
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL3NoYXJlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlsQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQVMsRUFBbUIsRUFBRTtJQUNoRSw2QkFBNkI7SUFDN0IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1gsT0FBTyxVQUFVLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLElBQUksWUFBWSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FDekMsR0FBRztLQUNELE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVztLQUM5QixPQUFPLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUMsV0FBVztLQUMvQyxXQUFXLEVBQUUsQ0FBQyxPQUFPO0tBQ3JCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRO0tBQ3JCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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QUM7UUFDYixDQUFDO2FBQU0sSUFBSSxNQUFNLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDbkMsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFFLE1BQWMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QyxDQUFDO2FBQU0sSUFBSSxNQUFNLFlBQVksTUFBTSxFQUFFLENBQUM7WUFDckMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ1AsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNiLENBQUM7UUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQixLQUFLLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0YsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztTQUFNLENBQUM7UUFDUCxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7QUFDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBzaGFyZVJlcGxheSwgcGlwZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcclxuaW1wb3J0IHsgZm9ybVR5cGVUb1Byb3BzIH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XHJcbmltcG9ydCBOUCBmcm9tICdudW1iZXItcHJlY2lzaW9uJztcclxuXHJcbmV4cG9ydCB0eXBlIEZpbHRlck1hdGNoTW9kZSA9ICdlbmRzV2l0aCcgfCAnc3RhcnRzV2l0aCcgfCAnY29udGFpbnMnIHwgJ2VxdWFscycgfCAnbm90RXF1YWxzJyB8ICdpbicgfCAnbHQnIHwgJ2x0ZScgfCAnZ3QnIHwgJ2d0ZSc7XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0RmlsdGVyTWF0Y2hNb2RlID0gKG1vZGU6IGFueSk6IEZpbHRlck1hdGNoTW9kZSA9PiB7XHJcblx0Ly8g5pyq6YWN572u5pe25L2/55SoIFByaW1lTkcg6buY6K6kIGNvbnRhaW5zXHJcblx0aWYgKCFtb2RlKSB7XHJcblx0XHRyZXR1cm4gJ2NvbnRhaW5zJztcclxuXHR9XHJcblx0cmV0dXJuIG1vZGU7XHJcbn07XHJcbmV4cG9ydCBsZXQgdG9QYXNjYWxDYXNlID0gKHN0cjogc3RyaW5nKSA9PlxyXG5cdHN0clxyXG5cdFx0LnJlcGxhY2UoL18vZywgJyAnKSAvLyDkuIvliJLnur/mm7/mjaLkuLrnqbrmoLxcclxuXHRcdC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEgJDInKSAvLyDlsI/pqbzls7DliIblibLkuLrljZXor41cclxuXHRcdC50b0xvd2VyQ2FzZSgpIC8vIOi9rOS4uuWwj+WGmVxyXG5cdFx0LnNwbGl0KC9cXHMrLykgLy8g5oyJ56m65qC85YiG5YmyXHJcblx0XHQubWFwKCh3b3JkKSA9PiAod29yZCA/IHdvcmRbMF0udG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkgOiAnJykpXHJcblx0XHQuam9pbignJyk7XHJcblxyXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVVbmlxdWVJZCA9ICgpID0+IHtcclxuXHRjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpLnRvU3RyaW5nKDM2KTsgLy8g5pe26Ze05oiz6L2sMzbov5vliLbnvKnnn63plb/luqZcclxuXHRjb25zdCByYW5kb20gPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgNCk7IC8vIOmaj+acuumDqOWIhlxyXG5cdHJldHVybiBgJHt0aW1lc3RhbXB9JHtyYW5kb219YDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVDaXJjdWxhckl0ZXJhdG9yID0gKGFycmF5OiBhbnlbXSkgPT4ge1xyXG5cdGxldCBpbmRleCA9IC0xO1xyXG5cdHJldHVybiB7XHJcblx0XHRuZXh0OiAoKSA9PiB7XHJcblx0XHRcdGluZGV4Kys7XHJcblx0XHRcdHJldHVybiBhcnJheVtpbmRleCAlIGFycmF5Lmxlbmd0aF07XHJcblx0XHR9LFxyXG5cdFx0cHJldjogKCkgPT4ge1xyXG5cdFx0XHRpbmRleC0tO1xyXG5cdFx0XHRyZXR1cm4gYXJyYXlbKChpbmRleCAlIGFycmF5Lmxlbmd0aCkgKyBhcnJheS5sZW5ndGgpICUgYXJyYXkubGVuZ3RoXTtcclxuXHRcdH0sXHJcblx0fTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBwYXJzZUZ1bmN0aW9ucyA9IChvYmo6IGFueSwgX3RoaXM6IGFueSk6IGFueSA9PiB7XHJcblx0aWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XHJcblx0XHQvLyDlsJ3or5Xmo4DmtYvmmK/lkKbmmK/lh73mlbDlrZfnrKbkuLJcclxuXHRcdGlmICgob2JqLmluY2x1ZGVzKCc9PicpIHx8IG9iai5pbmNsdWRlcygnUHJvbWlzZScpKSAmJiAhaXNKU09OUGFyc2FibGUob2JqKSkge1xyXG5cdFx0XHRjb25zdCBvID0gY29tcGlsZVRzVG9KcyhvYmopO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygn6Kej5p6Q5Ye95pWwOicsIG9iaik7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0Y29uc3Qgc2FuZGJveCA9IHtcclxuXHRcdFx0XHRcdE9ic2VydmFibGUsXHJcblx0XHRcdFx0XHRvZixcclxuXHRcdFx0XHRcdHNoYXJlUmVwbGF5LFxyXG5cdFx0XHRcdFx0cGlwZSxcclxuXHRcdFx0XHRcdFByb21pc2UsIC8vIOa3u+WKoCBQcm9taXNlIOWIsCBzYW5kYm94XHJcblx0XHRcdFx0XHRhc3luYzogdHJ1ZSwgLy8g5qCH6K6w5pSv5oyB5byC5q2lXHJcblx0XHRcdFx0XHRyZXNvbHZlOiBQcm9taXNlLnJlc29sdmUuYmluZChQcm9taXNlKSxcclxuXHRcdFx0XHRcdHJlamVjdDogUHJvbWlzZS5yZWplY3QuYmluZChQcm9taXNlKSxcclxuXHRcdFx0XHRcdE5QLFxyXG5cdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdC8vIOWkhOeQhiBQcm9taXNlIOaehOmAoOWHveaVsOeahOaDheWGtVxyXG5cdFx0XHRcdGlmIChvYmouaW5jbHVkZXMoJ25ldyBQcm9taXNlJykpIHtcclxuXHRcdFx0XHRcdHJldHVybiBuZXcgRnVuY3Rpb24oXHJcblx0XHRcdFx0XHRcdCdzYW5kYm94JyxcclxuXHRcdFx0XHRcdFx0YFxyXG5cdFx0XHRcdFx0XHRcdHdpdGgoc2FuZGJveCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuICR7b307XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRgLFxyXG5cdFx0XHRcdFx0KS5iaW5kKF90aGlzKShzYW5kYm94KTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8vIOWkhOeQhuaZrumAmuWHveaVsOWSjOeureWktOWHveaVsFxyXG5cdFx0XHRcdHJldHVybiBuZXcgRnVuY3Rpb24oXHJcblx0XHRcdFx0XHQnc2FuZGJveCcsXHJcblx0XHRcdFx0XHRgXHJcblx0XHRcdFx0XHRcdHdpdGgoc2FuZGJveCkge1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiAoJHtvfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGAsXHJcblx0XHRcdFx0KS5iaW5kKF90aGlzKShzYW5kYm94KTtcclxuXHRcdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ+WHveaVsOino+aekOWksei0pTonLCBlLCAnXFxu5Y6f5aeL5a2X56ym5LiyOicsIG9iaik7XHJcblx0XHRcdFx0cmV0dXJuIG9iajtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKGlzSlNPTlBhcnNhYmxlKG9iaikpIHtcclxuXHRcdFx0bGV0IGpzb24gPSBKU09OLnBhcnNlKG9iaik7XHJcblx0XHRcdHJldHVybiBwYXJzZUZ1bmN0aW9ucyhqc29uLCBfdGhpcyk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gb2JqO1xyXG5cdH1cclxuXHRpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XHJcblx0XHRyZXR1cm4gb2JqLm1hcCgoaXRlbTogYW55KSA9PiBwYXJzZUZ1bmN0aW9ucyhpdGVtLCBfdGhpcykpO1xyXG5cdH1cclxuXHRpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsKSB7XHJcblx0XHRjb25zdCByZXN1bHQ6IGFueSA9IHt9O1xyXG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XHJcblx0XHRcdGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG5cdFx0XHRcdHJlc3VsdFtrZXldID0gcGFyc2VGdW5jdGlvbnMob2JqW2tleV0sIF90aGlzKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcblxyXG5cdHJldHVybiBvYmo7XHJcbn07XHJcblxyXG4vLyDovoXliqnlh73mlbDvvJrmo4Dmn6XmmK/lkKbljIXlkKsgUHJvbWlzZSDmnoTpgKDlh73mlbBcclxuY29uc3QgY29udGFpbnNQcm9taXNlQ29uc3RydWN0b3IgPSAoc3RyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuXHRyZXR1cm4gL25ld1xccytQcm9taXNlLy50ZXN0KHN0cik7XHJcbn07XHJcblxyXG4vLyDkv67mlLkgY29tcGlsZVRzVG9KcyDlh73mlbDku6Xmm7Tlpb3lnLDlpITnkIYgUHJvbWlzZVxyXG5leHBvcnQgY29uc3QgY29tcGlsZVRzVG9KcyA9ICh0c0NvZGU6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcblx0Ly8g5aaC5p6c5pivIFByb21pc2Ug5p6E6YCg5Ye95pWw77yM5LiN6ZyA6KaB6aKd5aSW5aSE55CGXHJcblx0aWYgKGNvbnRhaW5zUHJvbWlzZUNvbnN0cnVjdG9yKHRzQ29kZSkpIHtcclxuXHRcdHJldHVybiB0c0NvZGU7XHJcblx0fVxyXG5cclxuXHRjb25zdCByZXN1bHQgPSB0cy50cmFuc3BpbGVNb2R1bGUodHNDb2RlLCB7XHJcblx0XHRjb21waWxlck9wdGlvbnM6IHtcclxuXHRcdFx0bW9kdWxlOiB0cy5Nb2R1bGVLaW5kLkNvbW1vbkpTLFxyXG5cdFx0XHR0YXJnZXQ6IHRzLlNjcmlwdFRhcmdldC5FUzIwMTUsXHJcblx0XHRcdC8vIOWQr+eUqOW8guatpeWHveaVsOaUr+aMgVxyXG5cdFx0XHRsaWI6IFsnZXMyMDE1JywgJ2VzMjAxNS5wcm9taXNlJywgJ2RvbSddLFxyXG5cdFx0fSxcclxuXHR9KTtcclxuXHRyZXR1cm4gcmVtb3ZlVHJhaWxpbmdTZW1pY29sb24ocmVzdWx0Lm91dHB1dFRleHQpO1xyXG59O1xyXG5cclxuY29uc3QgcmVtb3ZlVHJhaWxpbmdTZW1pY29sb24gPSAoZnVuY1N0cjogc3RyaW5nKTogc3RyaW5nID0+IHtcclxuXHQvLyDlhYjljrvpmaTliY3lkI7nqbrnmb1cclxuXHRjb25zdCB0cmltbWVkID0gZnVuY1N0ci50cmltKCk7XHJcblx0Ly8g5Y+q5pu/5o2i5pyA5ZCO5LiA5Liq5YiG5Y+377yI5aaC5p6c5a6D5LiN5Zyo6Iqx5ous5Y+35YaF77yJXHJcblx0aWYgKHRyaW1tZWQuZW5kc1dpdGgoJzsnKSkge1xyXG5cdFx0cmV0dXJuIHRyaW1tZWQuc2xpY2UoMCwgLTEpO1xyXG5cdH1cclxuXHRyZXR1cm4gdHJpbW1lZDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0pTT05QYXJzYWJsZSA9IChzdHI6IGFueSkgPT4ge1xyXG5cdHRyeSB7XHJcblx0XHRKU09OLnBhcnNlKHN0cik7XHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9IGNhdGNoIChlKSB7XHJcblx0XHQvLyBsZXQgc3RySXNPYmogPSAvXFx7W159XSpcXH18XFxbW15cXF1dKlxcXS8udGVzdChzdHIpXHJcblx0XHQvLyBpZihzdHJJc09iail7XHJcblx0XHQvLyBcdGNvbnNvbGUuZXJyb3IoJ0pTT04g6Kej5p6Q5aSx6LSlOicsIGUsICdcXG7ljp/lp4vlrZfnrKbkuLI6Jywgc3RyKVxyXG5cdFx0Ly8gfVxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiDmoLnmja7mjIflrprnmoTplK7mlbDnu4Tov4fmu6Tlr7nosaFcclxuICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIOimgei/h+a7pOeahOWOn+Wni+WvueixoVxyXG4gKiBAcGFyYW0ge0FycmF5fSBrZXlzIC0g6ZyA6KaB5L+d55WZ55qE6ZSu5pWw57uEXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IOi/h+a7pOWQjueahOaWsOWvueixoVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGZpbHRlck9iamVjdEJ5S2V5cyA9IChvYmo6IGFueSwga2V5czogc3RyaW5nW10pID0+IHtcclxuXHQvLyDlj4LmlbDmoKHpqoxcclxuXHRpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcign56ys5LiA5Liq5Y+C5pWw5b+F6aG75piv5pmu6YCa5a+56LGhJyk7XHJcblx0fVxyXG5cclxuXHRpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcclxuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ+esrOS6jOS4quWPguaVsOW/hemhu+aYr+aVsOe7hCcpO1xyXG5cdH1cclxuXHJcblx0Ly8g5L2/55SocmVkdWNl5Yib5bu65paw5a+56LGhXHJcblx0cmV0dXJuIGtleXMucmVkdWNlKChhY2M6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcclxuXHRcdC8vIOWPquacieW9k+WOn+WvueixoeacieivpeWxnuaAp+aXtuaJjea3u+WKoOWIsOaWsOWvueixoVxyXG5cdFx0aWYgKGtleSBpbiBvYmopIHtcclxuXHRcdFx0YWNjW2tleV0gPSBvYmpba2V5XTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBhY2M7XHJcblx0fSwge30pO1xyXG59O1xyXG4vKipcclxuICog6Ieq5a6a5LmJ5Ye95pWw5Y676Zmk56m65a2X56ym5LiyXHJcbiAqIEBwYXJhbSBhY3RcclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0QWN0ID0gKGFjdDogYW55KSA9PiB7XHJcblx0YWN0LmZvckVhY2goKHY6IGFueSkgPT4ge1xyXG5cdFx0aWYgKHYuaGFzT3duUHJvcGVydHkoJ2J0bkhpZGRlbicpICYmIHR5cGVvZiB2LmJ0bkhpZGRlbiAhPSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdGRlbGV0ZSB2LmJ0bkhpZGRlbjtcclxuXHRcdH1cclxuXHRcdGlmICh2Lmhhc093blByb3BlcnR5KCdidG5EaXNhYmxlZCcpICYmIHR5cGVvZiB2LmJ0bkRpc2FibGVkICE9ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0ZGVsZXRlIHYuYnRuRGlzYWJsZWQ7XHJcblx0XHR9XHJcblx0XHRpZiAodi5oYXNPd25Qcm9wZXJ0eSgnb25DbGljaycpICYmIHR5cGVvZiB2Lm9uQ2xpY2sgIT0gJ2Z1bmN0aW9uJykge1xyXG5cdFx0XHRkZWxldGUgdi5vbkNsaWNrO1xyXG5cdFx0fVxyXG5cdH0pO1xyXG5cdHJldHVybiBhY3Q7XHJcbn07XHJcblxyXG4vKipcclxuICogZm9ybXBhZ2Ug6YCa55SoY29udGVudOWHveaVsOi9rOenu1xyXG4gKiBAcGFyYW0gY29udGVudFxyXG4gKiBAcGFyYW0gdGhpc0FyZ1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGNoYW5nZUNvbnRlbnQgPSAoY29udGVudDogYW55LCB0aGlzQXJnOiBhbnkpID0+IHtcclxuXHQvLyBAdHMtaWdub3JlXHJcblx0Y29uc3QgaXNJMThuID0gd2luZG93LmFwcElzSTE4bjtcclxuXHRjb250ZW50ID0gcGFyc2VGdW5jdGlvbnMoY29udGVudCwgdGhpc0FyZyk7XHJcblx0bGV0IHsgZ3JpZExpc3QsIGhyZWZCdG5MaXN0LCBnZXRQcm0sIGdyb3Vwcywgc3RhdHVzS2V5LCBzdGF0dXMsIHN0YXR1c1N0ZXBzLCBzdGF0dXNDb25mID0gbnVsbCB9ID0gY29udGVudDtcclxuXHRpZiAoc3RhdHVzS2V5KSB7XHJcblx0XHR0aGlzQXJnLnN0YXR1c0tleSA9IHN0YXR1c0tleTtcclxuXHRcdHN0YXR1c1N0ZXBzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAoaXNJMThuICYmICghaXRlbS5oYXNPd25Qcm9wZXJ0eSgnaTE4bktleScpIHx8IGl0ZW0uaTE4bktleSA9PSAnJykpIHtcclxuXHRcdFx0XHRpdGVtLmkxOG5LZXkgPSBgdGFibGVzLiR7Z2V0UHJtLm1vZGVsTmFtZX0uJHtzdGF0dXNLZXl9JHtpdGVtLnZhbHVlfWA7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0dGhpc0FyZy5zdGVwcyA9IHN0YXR1c1N0ZXBzO1xyXG5cdFx0c3RhdHVzQ29uZiAmJiAodGhpc0FyZy5zdGF0dXNDb25mID0gc3RhdHVzQ29uZik7XHJcblx0fVxyXG5cclxuXHR0aGlzQXJnLmFjdGlvbnMgPSBjb252ZXJ0QWN0KGNvbnRlbnQuYWN0aW9ucyk7XHJcblx0Y29udGVudC5mb3JtRGlzYWJsZWQgJiYgKHRoaXNBcmcuZm9ybURpc2FibGVkID0gY29udGVudC5mb3JtRGlzYWJsZWQpO1xyXG5cdHRoaXNBcmcuZ2V0UHJtID0gZ2V0UHJtO1xyXG5cdHRoaXNBcmcuZ2V0UHJtLm9yZ0ZpZWxkID0gY29udGVudC5vcmdGaWVsZCB8fCAnJztcclxuXHR0aGlzQXJnLmdyaWRzID0gW107XHJcblx0bGV0IGZpdGVyUHJlbG9hZHM6IGFueVtdID0gW107XHJcblxyXG5cdGNvbnZlcnRGb3JtKHRoaXNBcmcsIGdyb3VwcywgY29udGVudC5zb3VyY2VEYXRhKTtcclxuXHRjb252ZXJ0R3JpZCh0aGlzQXJnLCBncmlkTGlzdCwgZml0ZXJQcmVsb2Fkcyk7XHJcblxyXG5cdHRoaXNBcmcuZm9ybURldGFpbCA9IGNvbnRlbnQuZm9ybURldGFpbDtcclxuXHR0aGlzQXJnLnNhdmVGdW5jID0gY29udGVudC5zYXZlRnVuYztcclxuXHR0aGlzQXJnLmlzTG9nID0gY29udGVudC5zb3VyY2VEYXRhLm1vZGVsLmxvZztcclxuXHR0aGlzQXJnLmdldFBybVsnZ2V0TG9nJ10gPSBjb250ZW50LnNvdXJjZURhdGEubW9kZWwubG9nO1xyXG5cdHRoaXNBcmcuZ2V0UHJtWydmaXRlclByZWxvYWRzJ10gPSBmaXRlclByZWxvYWRzO1xyXG5cdHRoaXNBcmcuaHJlZkJ0bkxpc3QgPSBocmVmQnRuTGlzdDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjYWxjUm93U3BhbiA9IChwYXJhbXM6IGFueSwgZmllbGQ/OiBzdHJpbmcpID0+IHtcclxuXHRmaWVsZCA9IGZpZWxkIHx8IHBhcmFtcy5jb2xEZWYuZmllbGQ7XHJcblx0Y29uc3QgY3VycmVudFZhbHVlID0gcGFyYW1zLmRhdGFbZmllbGQhXTtcclxuXHRjb25zdCBjdXJyZW50Um93SW5kZXggPSBwYXJhbXMubm9kZS5yb3dJbmRleDtcclxuXHJcblx0bGV0IHJvd1NwYW4gPSAxO1xyXG5cclxuXHRmb3IgKGxldCBpID0gY3VycmVudFJvd0luZGV4ICsgMTsgaSA8IHBhcmFtcy5hcGkuZ2V0RGlzcGxheWVkUm93Q291bnQoKTsgaSsrKSB7XHJcblx0XHRjb25zdCBub2RlID0gcGFyYW1zLmFwaS5nZXREaXNwbGF5ZWRSb3dBdEluZGV4KGkpO1xyXG5cdFx0aWYgKG5vZGUuZGF0YVtmaWVsZCFdID09PSBjdXJyZW50VmFsdWUpIHtcclxuXHRcdFx0cm93U3BhbisrO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRpZiAoY3VycmVudFJvd0luZGV4ID4gMCAmJiBwYXJhbXMuYXBpLmdldERpc3BsYXllZFJvd0F0SW5kZXgoY3VycmVudFJvd0luZGV4IC0gMSkuZGF0YVtmaWVsZCFdID09PSBjdXJyZW50VmFsdWUpIHtcclxuXHRcdHJldHVybiAxO1xyXG5cdH1cclxuXHRyZXR1cm4gcm93U3BhbjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0Q29sID0gKG9wdGlvbnM6IGFueSwgY29sOiBhbnlbXSwgYXV0aExldmVsOiBudW1iZXIsIGRyYWdTb3J0Pzogc3RyaW5nKSA9PiB7XHJcblx0Ly8gQHRzLWlnbm9yZVxyXG5cdGNvbnN0IGlzSTE4biA9IHdpbmRvdy5hcHBJc0kxOG47XHJcblx0Ly8gY29uc29sZS5sb2coJ2lzSTE4bi0tLS0tJyxpc0kxOG4pXHJcblx0Y29sLmZvckVhY2goKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG5cdFx0aXRlbS5oaWRlID0gaXRlbS5oaWRlQ29sO1xyXG5cdFx0aWYgKGF1dGhMZXZlbCA8IDMpIHtcclxuXHRcdFx0aXRlbS5lZGl0YWJsZSA9IGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGRyYWdTb3J0ICYmIGluZGV4ID09PSAwKSB7XHJcblx0XHRcdGl0ZW0ucm93RHJhZyA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRpZiAoaXNJMThuICYmICghaXRlbS5oYXNPd25Qcm9wZXJ0eSgnaTE4bktleScpIHx8IGl0ZW0uaTE4bktleSA9PSAnJykpIHtcclxuXHRcdFx0aXRlbS5pMThuS2V5ID0gYHRhYmxlcy4ke29wdGlvbnMubW9kZWxOYW1lfS4ke2l0ZW0uZmllbGR9YDtcclxuXHRcdH1cclxuXHRcdGlmIChpdGVtLmhhc093blByb3BlcnR5KCd0ZXh0V3JhcCcpICYmIGl0ZW0udGV4dFdyYXApIHtcclxuXHRcdFx0aXRlbS5hdXRvSGVpZ2h0ID0gdHJ1ZTtcclxuXHRcdFx0aXRlbS5jZWxsQ2xhc3MgPSAnY2VsbC13cmFwLXRleHQnO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGl0ZW0uZmllbGRUeXBlID09ICdWQVJDSEFSJykge1xyXG5cdFx0XHRpdGVtLmNlbGxEYXRhVHlwZSA9IGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGl0ZW0ucm93U3BhbkNvbmYpIHtcclxuXHRcdFx0bGV0IHJvd1NwYW4gPSB7XHJcblx0XHRcdFx0cm93U3BhbjogKHBhcmFtczogYW55KSA9PiBjYWxjUm93U3BhbihwYXJhbXMpLFxyXG5cdFx0XHRcdGNlbGxSZW5kZXJlcjogJ3Jvd1NwYW5SZW5kZXJlcicsXHJcblx0XHRcdFx0Y2VsbFJlbmRlcmVyUGFyYW1zOiB7XHJcblx0XHRcdFx0XHRyb3dTcGFuOiAocGFyYW1zOiBhbnkpID0+IGNhbGNSb3dTcGFuKHBhcmFtcyksXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fTtcclxuXHRcdFx0T2JqZWN0LmFzc2lnbihpdGVtLCByb3dTcGFuKTtcclxuXHRcdFx0b3B0aW9ucy5zdXBwcmVzc1Jvd1RyYW5zZm9ybSA9IHRydWU7XHJcblx0XHRcdG9wdGlvbnMucm93Q2xhc3MgPSAncm93U3Bhbic7XHJcblx0XHR9XHJcblx0XHQvLyBpZihpdGVtLmVkaXRhYmxlKXtcclxuXHRcdC8vIFx0aXRlbS5oZWFkZXJDbGFzcyA9IGl0ZW0uaGFzT3duUHJvcGVydHkoJ2hlYWRlckNsYXNzJylcclxuXHRcdC8vIFx0XHQ/IGAke2l0ZW0uaGVhZGVyQ2xhc3N9IGVkaXRhYmxlLWNvbHVtbi1oZWFkZXJgXHJcblx0XHQvLyBcdFx0OiAnZWRpdGFibGUtY29sdW1uLWhlYWRlcidcclxuXHRcdC8vIH1cclxuXHR9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBncmlkT3B0aW9uc0hvb2tlciA9IChncmlkT3B0aW9uczogYW55KSA9PiB7XHJcblx0Z3JpZE9wdGlvbnM/LmNvbHVtbkRlZnM/LmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcblx0XHRpZiAoY29sLmhpZGVDb2wpIHtcclxuXHRcdFx0Y29sLmhpZGUgPSBjb2wuaGlkZUNvbDtcclxuXHRcdFx0ZGVsZXRlIGNvbC5oaWRlQ29sO1xyXG5cdFx0fVxyXG5cdFx0Ly8gQHRzLWlnbm9yZVxyXG5cdFx0Y29uc3QgaXNJMThuID0gd2luZG93LmFwcElzSTE4bjtcclxuXHRcdGlmIChpc0kxOG4gJiYgKCFjb2wuaGFzT3duUHJvcGVydHkoJ2kxOG5LZXknKSB8fCBjb2wuaTE4bktleSA9PSAnJykpIHtcclxuXHRcdFx0Y29sLmkxOG5LZXkgPSBgdGFibGVzLiR7Z3JpZE9wdGlvbnMubW9kZWxOYW1lfS4ke2NvbC5maWVsZH1gO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGNvbC5oYXNPd25Qcm9wZXJ0eSgndGV4dFdyYXAnKSAmJiBjb2wudGV4dFdyYXApIHtcclxuXHRcdFx0Y29sLmF1dG9IZWlnaHQgPSB0cnVlO1xyXG5cdFx0XHRjb2wuY2VsbENsYXNzID0gJ2NlbGwtd3JhcC10ZXh0JztcclxuXHRcdH1cclxuXHRcdGlmIChjb2wucm93U3BhbkNvbmYpIHtcclxuXHRcdFx0bGV0IHJvd1NwYW4gPSB7XHJcblx0XHRcdFx0cm93U3BhbjogKHBhcmFtczogYW55KSA9PiBjYWxjUm93U3BhbihwYXJhbXMpLFxyXG5cdFx0XHRcdGNlbGxSZW5kZXJlcjogJ3Jvd1NwYW5SZW5kZXJlcicsXHJcblx0XHRcdFx0Y2VsbFJlbmRlcmVyUGFyYW1zOiB7XHJcblx0XHRcdFx0XHRyb3dTcGFuOiAocGFyYW1zOiBhbnkpID0+IGNhbGNSb3dTcGFuKHBhcmFtcyksXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fTtcclxuXHRcdFx0T2JqZWN0LmFzc2lnbihjb2wsIHJvd1NwYW4pO1xyXG5cdFx0XHRncmlkT3B0aW9ucy5zdXBwcmVzc1Jvd1RyYW5zZm9ybSA9IHRydWU7XHJcblx0XHRcdGdyaWRPcHRpb25zLnJvd0NsYXNzID0gJ3Jvd1NwYW4nO1xyXG5cdFx0fVxyXG5cdH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNvbnZlcnRHcmlkID0gKHRoaXNBcmc6IGFueSwgZ3JpZExpc3Q6IGFueSwgZml0ZXJQcmVsb2FkczogYW55KSA9PiB7XHJcblx0Z3JpZExpc3QuZm9yRWFjaChhc3luYyAoaXRlbTogYW55KSA9PiB7XHJcblx0XHQhaXRlbS50eXBlICYmIChpdGVtLnR5cGUgPSAnZ3JpZCcpO1xyXG5cdFx0bGV0IGdyaWQ6IGFueSA9IHsgdHlwZTogaXRlbS50eXBlIH07XHJcblx0XHRpZiAoaXRlbS5maXRlclByZWxvYWRzIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuXHRcdFx0Zml0ZXJQcmVsb2Fkcy5wdXNoKC4uLml0ZW0uZml0ZXJQcmVsb2Fkcyk7XHJcblx0XHR9XHJcblx0XHRpZiAoaXRlbS50eXBlID09ICdncmlkJykge1xyXG5cdFx0XHRsZXQge1xyXG5cdFx0XHRcdGdyaWRPcHRpb25zOiB7IGNvbHVtbkRlZnMsIC4uLnJlc3RHcmlkT3B0aW9ucyB9LFxyXG5cdFx0XHRcdHN1YlRhYmxlU291cmNlLFxyXG5cdFx0XHRcdHN1YkRhdGFLZXksXHJcblx0XHRcdFx0dGl0bGUsXHJcblx0XHRcdFx0c2VsZWN0RGF0YUNiLFxyXG5cdFx0XHRcdGZrLFxyXG5cdFx0XHRcdG1haW5GaWVsZCxcclxuXHRcdFx0XHR1bmlxdWVGaWVsZCxcclxuXHRcdFx0XHRhZGREYXRhQ2IsXHJcblx0XHRcdFx0c2hvd0RlbGV0ZSA9IHRydWUsXHJcblx0XHRcdFx0c2Nyb2xsSGVpZ2h0LFxyXG5cdFx0XHRcdGRyYWdTb3J0LFxyXG5cdFx0XHRcdHNlbGVjdGlvbk1vZGUsXHJcblx0XHRcdFx0aXNSb3dTZWxlY3RhYmxlLFxyXG5cdFx0XHRcdGFkZFNvcnQsXHJcblx0XHRcdFx0cmVmZXJlbmNlLFxyXG5cdFx0XHRcdHNsb3RLZXksXHJcblx0XHRcdH0gPSBpdGVtO1xyXG5cdFx0XHRncmlkID0geyBzdWJUYWJsZVNvdXJjZSwgc3ViRGF0YUtleSwgdGl0bGUsIHNob3dEZWxldGUsIHNsb3RLZXksIC4uLmdyaWQgfTtcclxuXHRcdFx0bGV0IGdyaWRPcHRpb25zID0ge1xyXG5cdFx0XHRcdC4uLnJlc3RHcmlkT3B0aW9ucyxcclxuXHRcdFx0XHRmayxcclxuXHRcdFx0XHRzdWJUYWJsZVNvdXJjZSxcclxuXHRcdFx0XHRzdWJEYXRhS2V5LFxyXG5cdFx0XHRcdG1haW5GaWVsZCxcclxuXHRcdFx0XHRyZWZlcmVuY2UsXHJcblx0XHRcdH07XHJcblx0XHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdFx0aWYgKHdpbmRvdy5hcHBJc0kxOG4gJiYgKCFpdGVtLmhhc093blByb3BlcnR5KCdpMThuS2V5JykgfHwgaXRlbS5pMThuS2V5ID09ICcnKSkge1xyXG5cdFx0XHRcdGdyaWQuaTE4bktleSA9IGB0YWJsZXMuJHt0aGlzQXJnLmdldFBybS5tb2RlbE5hbWV9LiR7c3ViRGF0YUtleX1gO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChncmlkT3B0aW9ucy5yb3dNb2RlbFR5cGUgPT0gJ2NsaWVudFNpZGUnKSB7XHJcblx0XHRcdFx0Z3JpZE9wdGlvbnMuc3VwcHJlc3NSb3dWaXJ0dWFsaXNhdGlvbiA9IHRydWU7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHNjcm9sbEhlaWdodCkge1xyXG5cdFx0XHRcdGdyaWRPcHRpb25zLnNjcm9sbEhlaWdodCA9IHNjcm9sbEhlaWdodDtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoZHJhZ1NvcnQpIHtcclxuXHRcdFx0XHRncmlkT3B0aW9ucy5yb3dEcmFnTWFuYWdlZCA9IHRydWU7XHJcblx0XHRcdFx0Z3JpZE9wdGlvbnMuZHJhZ1NvcnQgPSBkcmFnU29ydDtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoc2VsZWN0aW9uTW9kZSkge1xyXG5cdFx0XHRcdGdyaWRPcHRpb25zLnNlbGVjdGlvbk1vZGUgPSBzZWxlY3Rpb25Nb2RlO1xyXG5cdFx0XHRcdGlmIChzZWxlY3Rpb25Nb2RlICE9ICdub25lJykge1xyXG5cdFx0XHRcdFx0Z3JpZE9wdGlvbnMucm93U2VsZWN0aW9uID0ge1xyXG5cdFx0XHRcdFx0XHRtb2RlOiBzZWxlY3Rpb25Nb2RlID09ICdzaW5nbGUnID8gJ3NpbmdsZVJvdycgOiAnbXVsdGlSb3cnLFxyXG5cdFx0XHRcdFx0XHRpc1Jvd1NlbGVjdGFibGU6IGlzUm93U2VsZWN0YWJsZSA/IGlzUm93U2VsZWN0YWJsZSA6IG51bGwsXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRncmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPSB1bmRlZmluZWQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnZlcnRDb2woZ3JpZE9wdGlvbnMsIGNvbHVtbkRlZnMsIHRoaXNBcmcuYXV0aExldmVsLCBkcmFnU29ydCk7XHJcblx0XHRcdGdyaWRPcHRpb25zLmNvbHVtbkRlZnMgPSBjb2x1bW5EZWZzO1xyXG5cdFx0XHRjb25zb2xlLmxvZyhpdGVtLnNlbGVjdE1vZGVsQ29kZSlcclxuXHRcdFx0aWYgKHN1YlRhYmxlU291cmNlID09PSAnc2VsZWN0JyAmJiBpdGVtLnNlbGVjdE1vZGVsQ29kZSkge1xyXG5cdFx0XHRcdHRoaXNBcmcud2ViZ2V0KHsgY29kZTogaXRlbS5zZWxlY3RNb2RlbENvZGUgfSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IHNlbGVjdENvbnRlbnQgPSBwYXJzZUZ1bmN0aW9ucyhKU09OLnBhcnNlKHJlcy5jb250ZW50KSwgdGhpc0FyZyk7XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMgPSBzZWxlY3RDb250ZW50Py5ncmlkT3B0aW9ucztcclxuXHRcdFx0XHRcdGdyaWQuc2VsZWN0T3B0aW9ucy5yb3dNb2RlbFR5cGUgPSBncmlkLnNlbGVjdE9wdGlvbnMucm93TW9kZWxUeXBlIHx8ICdzZXJ2ZXJTaWRlJztcclxuXHRcdFx0XHRcdGlmIChncmlkLnNlbGVjdE9wdGlvbnMucm93TW9kZWxUeXBlID09ICdzZXJ2ZXJTaWRlJykge1xyXG5cdFx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMuc2VydmVyRnVuYyA9IGdyaWQuc2VsZWN0T3B0aW9ucy5zZXJ2ZXJGdW5jIHx8IHRoaXNBcmcud2ViX3NlYXJjaC5iaW5kKHRoaXNBcmcpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLmNsaWVudEZ1bmMgPSBncmlkLnNlbGVjdE9wdGlvbnMuY2xpZW50RnVuYyB8fCB0aGlzQXJnLndlYl9zZWFyY2guYmluZCh0aGlzQXJnKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGdyaWQudW5pcXVlRmllbGQgPSB1bmlxdWVGaWVsZDtcclxuXHRcdFx0XHRcdGdyaWQuc2VsZWN0RGF0YUNiID0gc2VsZWN0RGF0YUNiO1xyXG5cdFx0XHRcdFx0Z3JpZC5zZWxlY3RPcHRpb25zLnNjcm9sbEhlaWdodCA9ICczMDBweCc7XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdE9wdGlvbnMuc2VhcmNoUHJtID0gc2VsZWN0Q29udGVudC5zZWFyY2hQcm07XHJcblx0XHRcdFx0XHRncmlkLnNlbGVjdE1vZGVsQ29kZSA9IGl0ZW0uc2VsZWN0TW9kZWxDb2RlXHJcblx0XHRcdFx0XHRjb252ZXJ0Q29sKGdyaWQuc2VsZWN0T3B0aW9ucywgZ3JpZC5zZWxlY3RPcHRpb25zLmNvbHVtbkRlZnMhLCAxKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRncmlkLnNlYXJjaFBybSA9IHsgLi4udGhpc0FyZy5zZWFyY2hQcm0gfTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhZGREYXRhQ2IgJiYgKGdyaWRPcHRpb25zLmFkZERhdGFDYiA9IGFkZERhdGFDYik7XHJcblx0XHRcdH1cclxuXHRcdFx0Z3JpZC5ncmlkT3B0aW9ucyA9IGdyaWRPcHRpb25zO1xyXG5cdFx0XHRhZGRTb3J0ICYmIChncmlkLmFkZFNvcnQgPSBhZGRTb3J0KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGl0ZW0uaW50ZXJhY3RpdmVMYWJlbCA9IHRydWU7XHJcblx0XHRcdGdyaWQgPSB7XHJcblx0XHRcdFx0Li4uaXRlbSxcclxuXHRcdFx0fTtcclxuXHRcdFx0Z3JpZC5mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblx0XHR9XHJcblx0XHR0aGlzQXJnLmdyaWRzLnB1c2goZ3JpZCk7XHJcblx0fSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY29udmVydEZvcm0gPSAodGhpc0FyZzogYW55LCBncm91cEFycjogYW55LCBzb3VyY2VEYXRhOiBhbnkpID0+IHtcclxuXHRncm91cEFyci5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuXHRcdGlmICh0aGlzQXJnLmF1dGhMZXZlbCA8IDMpIHtcclxuXHRcdFx0aXRlbVtmb3JtVHlwZVRvUHJvcHNbaXRlbS50eXBlXV0uZGlzYWJsZWQgPSB0cnVlO1xyXG5cdFx0fVxyXG5cdH0pO1xyXG5cdHRoaXNBcmcuZm9ybU9wdGlvbnMgPSB7XHJcblx0XHRmaWVsZHM6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGdyb3VwQ2xhc3M6ICdmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCcsXHJcblx0XHRcdFx0Z3JvdXA6IGdyb3VwQXJyLFxyXG5cdFx0XHR9LFxyXG5cdFx0XSxcclxuXHRcdGZvcm06IG5ldyBGb3JtR3JvdXAoe30pLFxyXG5cdFx0bWFpbkZpZWxkOiBzb3VyY2VEYXRhLm1vZGVsLm1haW5GaWVsZHMsXHJcblx0XHRtb2RlbE5hbWU6IHNvdXJjZURhdGEubW9kZWwubW9kZWxOYW1lLFxyXG5cdFx0ZXh0cmE6IHsgdGhpc0FyZyB9LFxyXG5cdH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY2xlYXJMb2NhbCA9ICgpID0+IHtcclxuXHRsZXQgdGhlbWVDb25maWdTdGF0ZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWVDb25maWdTdGF0ZScpO1xyXG5cdHdpbmRvdy5sb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuXHRpZiAodGhlbWVDb25maWdTdGF0ZSkge1xyXG5cdFx0d2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0aGVtZUNvbmZpZ1N0YXRlJywgdGhlbWVDb25maWdTdGF0ZSk7XHJcblx0fVxyXG5cdHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5jbGVhcigpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHBhZ2VMaXN0R3JpZE9wdGlvbnMgPSAoZ3JpZE9wdGlvbnM6IGFueSwgdGhpc0FyZzogYW55KSA9PiB7XHJcblx0Z3JpZE9wdGlvbnMuc2Nyb2xsSGVpZ2h0ID0gJ2NhbGMoMTAwdmggLSA5NXB4KSc7XHJcblx0Z3JpZE9wdGlvbnMucm93TW9kZWxUeXBlID0gZ3JpZE9wdGlvbnMucm93TW9kZWxUeXBlIHx8ICdzZXJ2ZXJTaWRlJztcclxuXHRpZiAoZ3JpZE9wdGlvbnMucm93TW9kZWxUeXBlID09ICdzZXJ2ZXJTaWRlJykge1xyXG5cdFx0Z3JpZE9wdGlvbnMuc2VydmVyRnVuYyA9IGdyaWRPcHRpb25zLnNlcnZlckZ1bmMgfHwgdGhpc0FyZy53ZWJfc2VhcmNoLmJpbmQodGhpc0FyZyk7XHJcblx0fSBlbHNlIHtcclxuXHRcdGdyaWRPcHRpb25zLmNsaWVudEZ1bmMgPSBncmlkT3B0aW9ucy5jbGllbnRGdW5jIHx8IHRoaXNBcmcud2ViX3NlYXJjaC5iaW5kKHRoaXNBcmcpO1xyXG5cdH1cclxuXHRpZiAoZ3JpZE9wdGlvbnMuc2VsZWN0aW9uTW9kZSkge1xyXG5cdFx0Ly8gZ3JpZE9wdGlvbnMuc2VsZWN0aW9uTW9kZSA9IHNlbGVjdGlvbk1vZGVcclxuXHRcdGlmIChncmlkT3B0aW9ucy5zZWxlY3Rpb25Nb2RlICE9ICdub25lJykge1xyXG5cdFx0XHRncmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPSB7XHJcblx0XHRcdFx0bW9kZTogZ3JpZE9wdGlvbnMuc2VsZWN0aW9uTW9kZSA9PSAnc2luZ2xlJyA/ICdzaW5nbGVSb3cnIDogJ211bHRpUm93JyxcclxuXHRcdFx0XHRpc1Jvd1NlbGVjdGFibGU6IGdyaWRPcHRpb25zLmlzUm93U2VsZWN0YWJsZSA/IGdyaWRPcHRpb25zLmlzUm93U2VsZWN0YWJsZSA6IHVuZGVmaW5lZCxcclxuXHRcdFx0fTtcclxuXHRcdFx0aWYgKGdyaWRPcHRpb25zLmhhc093blByb3BlcnR5KCdoZWFkZXJDaGVja2JveCcpICYmIGdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbi5tb2RlID09ICdtdWx0aVJvdycpIHtcclxuXHRcdFx0XHRncmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24uaGVhZGVyQ2hlY2tib3ggPSBncmlkT3B0aW9ucy5oZWFkZXJDaGVja2JveDtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Z3JpZE9wdGlvbnMucm93U2VsZWN0aW9uID0gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRjb252ZXJ0Q29sKGdyaWRPcHRpb25zLCBncmlkT3B0aW9ucy5jb2x1bW5EZWZzISwgMSk7XHJcblx0cmV0dXJuIGdyaWRPcHRpb25zO1xyXG59O1xyXG4vLyDmt7Hluqbmi7fotJ1cclxuZXhwb3J0IGNvbnN0IGRlZXBDbG9uZSA9IChzb3VyY2U6IGFueSwgdGhhdDogYW55LCBjYWNoZT86IGFueSkgPT4ge1xyXG5cdGlmICghY2FjaGUpIHtcclxuXHRcdGNhY2hlID0gbmV3IE1hcCgpO1xyXG5cdH1cclxuXHRpZiAoc291cmNlIGluc3RhbmNlb2YgT2JqZWN0KSB7XHJcblx0XHQvLyDkuI3ogIPomZHot6ggaWZyYW1lXHJcblx0XHRpZiAoY2FjaGUuZ2V0KHNvdXJjZSkpIHtcclxuXHRcdFx0cmV0dXJuIGNhY2hlLmdldChzb3VyY2UpO1xyXG5cdFx0fVxyXG5cdFx0bGV0IHJlc3VsdDogYW55O1xyXG5cdFx0aWYgKHNvdXJjZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XHJcblx0XHRcdGlmIChzb3VyY2UucHJvdG90eXBlKSB7XHJcblx0XHRcdFx0Ly8g5pyJIHByb3RvdHlwZSDlsLHmmK/mma7pgJrlh73mlbBcclxuXHRcdFx0XHRyZXN1bHQgPSBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gc291cmNlLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRyZXN1bHQgPSAoLi4uYXJnczogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRyZXR1cm4gc291cmNlLmNhbGwodW5kZWZpbmVkLCAuLi5hcmdzKTtcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcblx0XHRcdHJlc3VsdCA9IFtdO1xyXG5cdFx0fSBlbHNlIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBEYXRlKSB7XHJcblx0XHRcdHJlc3VsdCA9IG5ldyBEYXRlKChzb3VyY2UgYXMgYW55KSAtIDApO1xyXG5cdFx0fSBlbHNlIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBSZWdFeHApIHtcclxuXHRcdFx0cmVzdWx0ID0gbmV3IFJlZ0V4cChzb3VyY2Uuc291cmNlLCBzb3VyY2UuZmxhZ3MpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cmVzdWx0ID0ge307XHJcblx0XHR9XHJcblx0XHRjYWNoZS5zZXQoc291cmNlLCByZXN1bHQpO1xyXG5cdFx0Zm9yIChsZXQga2V5IGluIHNvdXJjZSkge1xyXG5cdFx0XHRpZiAoc291cmNlLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuXHRcdFx0XHRyZXN1bHRba2V5XSA9IGRlZXBDbG9uZShzb3VyY2Vba2V5XSwgY2FjaGUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH0gZWxzZSB7XHJcblx0XHRyZXR1cm4gc291cmNlO1xyXG5cdH1cclxufTtcclxuIl19
|