ngx-sumax-erp-components 1.8.1 → 1.9.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/ng-select-simple/ng-select-simple.component.mjs +21 -4
- package/esm2022/lib/sc-ag-grid/cell-editors/container-shared/container-shared.component.mjs +1 -1
- package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-select/sc-cell-render-select.component.mjs +1 -1
- package/esm2022/lib/sumax-dashboard/cards/smx-dash-card-legend-chart-select/smx-dash-card-legend-chart-select.component.mjs +1 -1
- package/esm2022/lib/sumax-dashboard/smx-dash-head-filters/smx-dash-head-filters.component.mjs +2 -2
- package/fesm2022/ngx-sumax-erp-components.mjs +24 -7
- package/fesm2022/ngx-sumax-erp-components.mjs.map +1 -1
- package/lib/ng-select-simple/ng-select-simple.component.d.ts +8 -1
- package/package.json +1 -1
|
@@ -261,6 +261,12 @@ export class NgSelectSimpleComponent {
|
|
|
261
261
|
* @type boolean
|
|
262
262
|
*/
|
|
263
263
|
this.isRedirectDisabled = false;
|
|
264
|
+
/**
|
|
265
|
+
* @description Si es true, filtra las opciones solo desde el inicio del texto
|
|
266
|
+
* @default false
|
|
267
|
+
* @type boolean
|
|
268
|
+
*/
|
|
269
|
+
this.startsWith = false;
|
|
264
270
|
this.onNext = new EventEmitter();
|
|
265
271
|
this.onBack = new EventEmitter();
|
|
266
272
|
this.change = new EventEmitter();
|
|
@@ -271,6 +277,7 @@ export class NgSelectSimpleComponent {
|
|
|
271
277
|
this.validateUtil = new ValidateUtil();
|
|
272
278
|
this.sharedComponentsUtil = new SharedComponentsUtil();
|
|
273
279
|
this.allItems = [];
|
|
280
|
+
this.searchFn = null;
|
|
274
281
|
this.subscriptions = [];
|
|
275
282
|
this.onChange = (_) => { };
|
|
276
283
|
this.onValidationChange = () => { };
|
|
@@ -317,6 +324,14 @@ export class NgSelectSimpleComponent {
|
|
|
317
324
|
this.controls.markAsTouched();
|
|
318
325
|
}
|
|
319
326
|
}
|
|
327
|
+
if (changes["startsWith"]) {
|
|
328
|
+
this.searchFn = this.startsWith
|
|
329
|
+
? (term, item) => {
|
|
330
|
+
const label = (item?.label ?? "").toString().toLowerCase();
|
|
331
|
+
return label.startsWith(term.toLowerCase());
|
|
332
|
+
}
|
|
333
|
+
: null;
|
|
334
|
+
}
|
|
320
335
|
}
|
|
321
336
|
async carga() {
|
|
322
337
|
this.allItems = await new Promise((resolve, reject) => {
|
|
@@ -514,7 +529,7 @@ export class NgSelectSimpleComponent {
|
|
|
514
529
|
this.onSearch();
|
|
515
530
|
}
|
|
516
531
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: NgSelectSimpleComponent, deps: [{ token: i1.MessageUtilService }, { token: i2.MatDialog }, { token: i3.NgSelectSimpleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
517
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: NgSelectSimpleComponent, selector: "ng-select-simple", inputs: { showLabel: "showLabel", label: "label", autocomplete: "autocomplete", next: "next", nextIsDisable: "nextIsDisable", back: "back", backIsDisable: "backIsDisable", required: "required", disabled: "disabled", readonly: "readonly", validatorMessage: "validatorMessage", tooltipMessage: "tooltipMessage", openWhenFocus: "openWhenFocus", searchBy: "searchBy", markFirstItem: "markFirstItem", markWhenHaveOneItem: "markWhenHaveOneItem", submitted: "submitted", setNgClass: "setNgClass", searchable: "searchable", validatorAlert: "validatorAlert", upperCase: "upperCase", templateLabel: "templateLabel", appendTo: "appendTo", items: "items", loading: "loading", loadingText: "loadingText", clearAllText: "clearAllText", notFoundText: "notFoundText", markFirst: "markFirst", clearable: "clearable", clearOnBackspace: "clearOnBackspace", virtualScroll: "virtualScroll", openOnEnter: "openOnEnter", refresh: "refresh", isRefreshDisabled: "isRefreshDisabled", search: "search", redirect: "redirect", searchParams: "searchParams", labelInfo: "labelInfo", textLabelInfo: "textLabelInfo", urlRedirect: "urlRedirect", titleRedirect: "titleRedirect", isRedirectDisabled: "isRedirectDisabled" }, outputs: { onNext: "onNext", onBack: "onBack", change: "change", blur: "blur", onfocus: "onfocus", onrefresh: "onrefresh", onsearch: "onsearch" }, providers: [
|
|
532
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: NgSelectSimpleComponent, selector: "ng-select-simple", inputs: { showLabel: "showLabel", label: "label", autocomplete: "autocomplete", next: "next", nextIsDisable: "nextIsDisable", back: "back", backIsDisable: "backIsDisable", required: "required", disabled: "disabled", readonly: "readonly", validatorMessage: "validatorMessage", tooltipMessage: "tooltipMessage", openWhenFocus: "openWhenFocus", searchBy: "searchBy", markFirstItem: "markFirstItem", markWhenHaveOneItem: "markWhenHaveOneItem", submitted: "submitted", setNgClass: "setNgClass", searchable: "searchable", validatorAlert: "validatorAlert", upperCase: "upperCase", templateLabel: "templateLabel", appendTo: "appendTo", items: "items", loading: "loading", loadingText: "loadingText", clearAllText: "clearAllText", notFoundText: "notFoundText", markFirst: "markFirst", clearable: "clearable", clearOnBackspace: "clearOnBackspace", virtualScroll: "virtualScroll", openOnEnter: "openOnEnter", refresh: "refresh", isRefreshDisabled: "isRefreshDisabled", search: "search", redirect: "redirect", searchParams: "searchParams", labelInfo: "labelInfo", textLabelInfo: "textLabelInfo", urlRedirect: "urlRedirect", titleRedirect: "titleRedirect", isRedirectDisabled: "isRedirectDisabled", startsWith: "startsWith" }, outputs: { onNext: "onNext", onBack: "onBack", change: "change", blur: "blur", onfocus: "onfocus", onrefresh: "onrefresh", onsearch: "onsearch" }, providers: [
|
|
518
533
|
{
|
|
519
534
|
provide: NG_VALUE_ACCESSOR,
|
|
520
535
|
useExisting: forwardRef(() => NgSelectSimpleComponent),
|
|
@@ -525,7 +540,7 @@ export class NgSelectSimpleComponent {
|
|
|
525
540
|
useExisting: forwardRef(() => NgSelectSimpleComponent),
|
|
526
541
|
multi: true,
|
|
527
542
|
},
|
|
528
|
-
], viewQueries: [{ propertyName: "ngSelectSimple", first: true, predicate: ["ngSelectSimple"], descendants: true }, { propertyName: "btnSearch", first: true, predicate: ["btnSearch"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\">\n <span *ngIf=\"!templateLabel; else templateLabel\" [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">\n {{ label }}\n </span>\n <span *ngIf=\"required\" [class.text-danger]=\"controls?.errors != null\"> *</span>\n <span *ngIf=\"labelInfo\">\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\n </span>\n</label>\n\n<div\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.refresh]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted && refresh\"\n [class.search]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted && search\">\n <div class=\"d-flex\">\n <div\n class=\"position-relative\"\n [class.ng-select-container-fullbuttons]=\"search && refresh && redirect\"\n [class.app-ng-selec-container]=\"search || refresh\"\n [class.w-100]=\"!search && !refresh\"\n style=\"flex: 1; min-width: 0;\">\n <ng-select\n #ngSelectSimple\n [class]=\"search || refresh ? 'app-ng-select ng-select-fixed-width' : 'w-100 ng-select-fixed-width'\"\n [class.action]=\"search && refresh\"\n [items]=\"items | async\"\n [(ngModel)]=\"_value\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (change)=\"eventChange($event)\"\n (blur)=\"eventBlur($event)\"\n (focus)=\"eventFocus($event)\"\n (search)=\"eventSearch($event)\"\n [markFirst]=\"markFirst\"\n [clearable]=\"!required && clearable\"\n [virtualScroll]=\"virtualScroll\"\n [inputAttrs]=\"{ autocomplete: autocomplete }\"\n [clearOnBackspace]=\"clearOnBackspace\"\n [openOnEnter]=\"openOnEnter\"\n (keydown.delete)=\"!required && clearable ? clear() : ''\"\n (clear)=\"clear()\"\n (keyup.F1)=\"f1KeyUp()\"\n [notFoundText]=\"notFoundText\"\n placeholder=\"Seleccionar\"\n (keyup.enter)=\"enterKeyUp()\"\n [clearAllText]=\"clearAllText\"\n [searchable]=\"searchable\"\n (keyup.ArrowLeft)=\"leftKeyUp()\"\n [appendTo]=\"appendTo\"\n [loading]=\"loading\"\n [loadingText]=\"loadingText\"\n [class.ng-select-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.ng-select-touched]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.upperCase]=\"upperCase\"\n [ngClass]=\"setNgClass\"\n style=\"max-width: 100%; width: 100%;\">\n\n <!-- OPCIONES DE LISTADO -->\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span data-toggle=\"tooltip\" title=\"{{ item.label }}\">{{ item.label }}</span>\n </ng-template>\n </ng-select>\n\n <!-- tooltip-message es el icono de error -->\n <tooltip-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [submitted]=\"submitted\"\n [tooltipMessage]=\"tooltipMessage\"></tooltip-message>\n </div>\n <ng-container *ngIf=\"search && refresh && redirect; else templateAction\">\n <div class=\"app-ng-select-action bd-highligh\">\n <button\n #btnSearch\n type=\"button\"\n [disabled]=\"disabled || readonly\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (keyup.ArrowLeft)=\"ngSelectSimple.focus()\"\n style=\"background-color: orange; border-color: orange\"\n (click)=\"onSearch()\">\n <i class=\"fa fa-search text-white px-1\" [matTooltip]=\"'Buscar'\" matTooltipClass=\"custom-tooltip\"></i>\n </button>\n <button\n *ngIf=\"refresh\"\n type=\"button\"\n [disabled]=\"disabled || readonly || isRefreshDisabled\"\n class=\"btn btn-info p-0 rounded-0 h-100\"\n (click)=\"onRefresh()\">\n <i class=\"fa fa-refresh text-white px-1\" [matTooltip]=\"'Refrescar'\" matTooltipClass=\"bg-info\"></i>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (click)=\"openEnlace()\"\n [disabled]=\"disabled || readonly || isRedirectDisabled\">\n <em class=\"fa-regular fa-rectangle-list text-white px-1\" [matTooltip]=\"titleRedirect!\" matTooltipClass=\"bg-success\"> </em>\n </button>\n </div>\n </ng-container>\n\n <ng-template #templateAction>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"search\">\n <button\n #btnSearch\n type=\"button\"\n [disabled]=\"disabled || readonly\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (keyup.ArrowLeft)=\"ngSelectSimple.focus()\"\n (click)=\"onSearch()\">\n <i class=\"fa fa-search text-white px-1\" [matTooltip]=\"'Buscar'\" matTooltipClass=\"bg-success\"></i>\n </button>\n </div>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"refresh\">\n <button\n *ngIf=\"refresh\"\n type=\"button\"\n [disabled]=\"disabled || readonly || isRefreshDisabled\"\n class=\"btn btn-info p-0 rounded-0 h-100\"\n (click)=\"onRefresh()\">\n <i class=\"fa fa-refresh text-white px-1\" [matTooltip]=\"'Refrescar'\" matTooltipClass=\"bg-info\"></i>\n </button>\n </div>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"redirect\">\n <button\n type=\"button\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n style=\"padding-top: 3px; padding-bottom: 7px; border-radius: 0px\"\n (click)=\"openEnlace()\"\n [disabled]=\"disabled || readonly || isRedirectDisabled\">\n <em class=\"fa-regular fa-rectangle-list text-white px-1\" [matTooltip]=\"titleRedirect!\" matTooltipClass=\"bg-success\"> </em>\n </button>\n </div>\n </ng-template>\n\n <ng-content select=\"[more-buttons]\"></ng-content>\n </div>\n</div>\n\n<!-- error-message es el mansaje que aparece abajo del componente -->\n<error-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [submitted]=\"submitted\"\n [tooltipMessage]=\"tooltipMessage\"></error-message>\n", styles: ["ng-select-simple{display:block}.sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;font-size:16px;text-align:center;right:9px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.upperCase .ng-select-container .ng-value-container .ng-input>input{text-transform:uppercase}.app-ng-select-button{width:34px}.app-ng-select-button button{width:100%}.app-ng-selec-container{width:calc(100% - 34px)}.ng-select-container-fullbuttons{width:calc(100% - 102px)}.app-ng-select-action{width:8rem}.app-ng-select-action button{min-width:2rem;width:33%}.overflow-box{padding:5px;height:100px;border:1px solid #999;overflow:hidden}.ng-dropdown-panel{width:auto!important;max-width:550px;min-width:100%}.custom-tooltip{--mdc-plain-tooltip-container-color: orange}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#999!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.errorMessageComponent, selector: "error-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "component", type: i7.tooltipMessageComponent, selector: "tooltip-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i9.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i9.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
543
|
+
], viewQueries: [{ propertyName: "ngSelectSimple", first: true, predicate: ["ngSelectSimple"], descendants: true }, { propertyName: "btnSearch", first: true, predicate: ["btnSearch"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\">\n <span *ngIf=\"!templateLabel; else templateLabel\" [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">\n {{ label }}\n </span>\n <span *ngIf=\"required\" [class.text-danger]=\"controls?.errors != null\"> *</span>\n <span *ngIf=\"labelInfo\">\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\n </span>\n</label>\n\n<div\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.refresh]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted && refresh\"\n [class.search]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted && search\">\n <div class=\"d-flex\">\n <div\n class=\"position-relative\"\n [class.ng-select-container-fullbuttons]=\"search && refresh && redirect\"\n [class.app-ng-selec-container]=\"search || refresh\"\n [class.w-100]=\"!search && !refresh\"\n style=\"flex: 1; min-width: 0;\">\n <ng-select\n #ngSelectSimple\n [class]=\"search || refresh ? 'app-ng-select ng-select-fixed-width' : 'w-100 ng-select-fixed-width'\"\n [class.action]=\"search && refresh\"\n [items]=\"items | async\"\n [(ngModel)]=\"_value\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (change)=\"eventChange($event)\"\n (blur)=\"eventBlur($event)\"\n (focus)=\"eventFocus($event)\"\n (search)=\"eventSearch($event)\"\n [markFirst]=\"markFirst\"\n [clearable]=\"!required && clearable\"\n [virtualScroll]=\"virtualScroll\"\n [inputAttrs]=\"{ autocomplete: autocomplete }\"\n [clearOnBackspace]=\"clearOnBackspace\"\n [openOnEnter]=\"openOnEnter\"\n (keydown.delete)=\"!required && clearable ? clear() : ''\"\n (clear)=\"clear()\"\n (keyup.F1)=\"f1KeyUp()\"\n [notFoundText]=\"notFoundText\"\n placeholder=\"Seleccionar\"\n (keyup.enter)=\"enterKeyUp()\"\n [clearAllText]=\"clearAllText\"\n [searchable]=\"searchable\"\n (keyup.ArrowLeft)=\"leftKeyUp()\"\n [appendTo]=\"appendTo\"\n [loading]=\"loading\"\n [loadingText]=\"loadingText\"\n [searchFn]=\"searchFn\"\n [class.ng-select-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.ng-select-touched]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.upperCase]=\"upperCase\"\n [ngClass]=\"setNgClass\"\n style=\"max-width: 100%; width: 100%;\">\n\n <!-- OPCIONES DE LISTADO -->\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span data-toggle=\"tooltip\" title=\"{{ item.label }}\">{{ item.label }}</span>\n </ng-template>\n </ng-select>\n\n <!-- tooltip-message es el icono de error -->\n <tooltip-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [submitted]=\"submitted\"\n [tooltipMessage]=\"tooltipMessage\"></tooltip-message>\n </div>\n <ng-container *ngIf=\"search && refresh && redirect; else templateAction\">\n <div class=\"app-ng-select-action bd-highligh\">\n <button\n #btnSearch\n type=\"button\"\n [disabled]=\"disabled || readonly\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (keyup.ArrowLeft)=\"ngSelectSimple.focus()\"\n style=\"background-color: orange; border-color: orange\"\n (click)=\"onSearch()\">\n <i class=\"fa fa-search text-white px-1\" [matTooltip]=\"'Buscar'\" matTooltipClass=\"custom-tooltip\"></i>\n </button>\n <button\n *ngIf=\"refresh\"\n type=\"button\"\n [disabled]=\"disabled || readonly || isRefreshDisabled\"\n class=\"btn btn-info p-0 rounded-0 h-100\"\n (click)=\"onRefresh()\">\n <i class=\"fa fa-refresh text-white px-1\" [matTooltip]=\"'Refrescar'\" matTooltipClass=\"bg-info\"></i>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (click)=\"openEnlace()\"\n [disabled]=\"disabled || readonly || isRedirectDisabled\">\n <em class=\"fa-regular fa-rectangle-list text-white px-1\" [matTooltip]=\"titleRedirect!\" matTooltipClass=\"bg-success\"> </em>\n </button>\n </div>\n </ng-container>\n\n <ng-template #templateAction>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"search\">\n <button\n #btnSearch\n type=\"button\"\n [disabled]=\"disabled || readonly\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (keyup.ArrowLeft)=\"ngSelectSimple.focus()\"\n (click)=\"onSearch()\">\n <i class=\"fa fa-search text-white px-1\" [matTooltip]=\"'Buscar'\" matTooltipClass=\"bg-success\"></i>\n </button>\n </div>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"refresh\">\n <button\n *ngIf=\"refresh\"\n type=\"button\"\n [disabled]=\"disabled || readonly || isRefreshDisabled\"\n class=\"btn btn-info p-0 rounded-0 h-100\"\n (click)=\"onRefresh()\">\n <i class=\"fa fa-refresh text-white px-1\" [matTooltip]=\"'Refrescar'\" matTooltipClass=\"bg-info\"></i>\n </button>\n </div>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"redirect\">\n <button\n type=\"button\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n style=\"padding-top: 3px; padding-bottom: 7px; border-radius: 0px\"\n (click)=\"openEnlace()\"\n [disabled]=\"disabled || readonly || isRedirectDisabled\">\n <em class=\"fa-regular fa-rectangle-list text-white px-1\" [matTooltip]=\"titleRedirect!\" matTooltipClass=\"bg-success\"> </em>\n </button>\n </div>\n </ng-template>\n\n <ng-content select=\"[more-buttons]\"></ng-content>\n </div>\n</div>\n\n<!-- error-message es el mansaje que aparece abajo del componente -->\n<error-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [submitted]=\"submitted\"\n [tooltipMessage]=\"tooltipMessage\"></error-message>\n", styles: ["ng-select-simple{display:block}.sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;font-size:16px;text-align:center;right:9px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.upperCase .ng-select-container .ng-value-container .ng-input>input{text-transform:uppercase}.app-ng-select-button{width:34px}.app-ng-select-button button{width:100%}.app-ng-selec-container{width:calc(100% - 34px)}.ng-select-container-fullbuttons{width:calc(100% - 102px)}.app-ng-select-action{width:8rem}.app-ng-select-action button{min-width:2rem;width:33%}.overflow-box{padding:5px;height:100px;border:1px solid #999;overflow:hidden}.ng-dropdown-panel{width:auto!important;max-width:550px;min-width:100%}.custom-tooltip{--mdc-plain-tooltip-container-color: orange}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#999!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.errorMessageComponent, selector: "error-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "component", type: i7.tooltipMessageComponent, selector: "tooltip-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i9.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i9.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
529
544
|
}
|
|
530
545
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: NgSelectSimpleComponent, decorators: [{
|
|
531
546
|
type: Component,
|
|
@@ -540,7 +555,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
540
555
|
useExisting: forwardRef(() => NgSelectSimpleComponent),
|
|
541
556
|
multi: true,
|
|
542
557
|
},
|
|
543
|
-
], encapsulation: ViewEncapsulation.None, template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\">\n <span *ngIf=\"!templateLabel; else templateLabel\" [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">\n {{ label }}\n </span>\n <span *ngIf=\"required\" [class.text-danger]=\"controls?.errors != null\"> *</span>\n <span *ngIf=\"labelInfo\">\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\n </span>\n</label>\n\n<div\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.refresh]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted && refresh\"\n [class.search]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted && search\">\n <div class=\"d-flex\">\n <div\n class=\"position-relative\"\n [class.ng-select-container-fullbuttons]=\"search && refresh && redirect\"\n [class.app-ng-selec-container]=\"search || refresh\"\n [class.w-100]=\"!search && !refresh\"\n style=\"flex: 1; min-width: 0;\">\n <ng-select\n #ngSelectSimple\n [class]=\"search || refresh ? 'app-ng-select ng-select-fixed-width' : 'w-100 ng-select-fixed-width'\"\n [class.action]=\"search && refresh\"\n [items]=\"items | async\"\n [(ngModel)]=\"_value\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (change)=\"eventChange($event)\"\n (blur)=\"eventBlur($event)\"\n (focus)=\"eventFocus($event)\"\n (search)=\"eventSearch($event)\"\n [markFirst]=\"markFirst\"\n [clearable]=\"!required && clearable\"\n [virtualScroll]=\"virtualScroll\"\n [inputAttrs]=\"{ autocomplete: autocomplete }\"\n [clearOnBackspace]=\"clearOnBackspace\"\n [openOnEnter]=\"openOnEnter\"\n (keydown.delete)=\"!required && clearable ? clear() : ''\"\n (clear)=\"clear()\"\n (keyup.F1)=\"f1KeyUp()\"\n [notFoundText]=\"notFoundText\"\n placeholder=\"Seleccionar\"\n (keyup.enter)=\"enterKeyUp()\"\n [clearAllText]=\"clearAllText\"\n [searchable]=\"searchable\"\n (keyup.ArrowLeft)=\"leftKeyUp()\"\n [appendTo]=\"appendTo\"\n [loading]=\"loading\"\n [loadingText]=\"loadingText\"\n [class.ng-select-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.ng-select-touched]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.upperCase]=\"upperCase\"\n [ngClass]=\"setNgClass\"\n style=\"max-width: 100%; width: 100%;\">\n\n <!-- OPCIONES DE LISTADO -->\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span data-toggle=\"tooltip\" title=\"{{ item.label }}\">{{ item.label }}</span>\n </ng-template>\n </ng-select>\n\n <!-- tooltip-message es el icono de error -->\n <tooltip-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [submitted]=\"submitted\"\n [tooltipMessage]=\"tooltipMessage\"></tooltip-message>\n </div>\n <ng-container *ngIf=\"search && refresh && redirect; else templateAction\">\n <div class=\"app-ng-select-action bd-highligh\">\n <button\n #btnSearch\n type=\"button\"\n [disabled]=\"disabled || readonly\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (keyup.ArrowLeft)=\"ngSelectSimple.focus()\"\n style=\"background-color: orange; border-color: orange\"\n (click)=\"onSearch()\">\n <i class=\"fa fa-search text-white px-1\" [matTooltip]=\"'Buscar'\" matTooltipClass=\"custom-tooltip\"></i>\n </button>\n <button\n *ngIf=\"refresh\"\n type=\"button\"\n [disabled]=\"disabled || readonly || isRefreshDisabled\"\n class=\"btn btn-info p-0 rounded-0 h-100\"\n (click)=\"onRefresh()\">\n <i class=\"fa fa-refresh text-white px-1\" [matTooltip]=\"'Refrescar'\" matTooltipClass=\"bg-info\"></i>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (click)=\"openEnlace()\"\n [disabled]=\"disabled || readonly || isRedirectDisabled\">\n <em class=\"fa-regular fa-rectangle-list text-white px-1\" [matTooltip]=\"titleRedirect!\" matTooltipClass=\"bg-success\"> </em>\n </button>\n </div>\n </ng-container>\n\n <ng-template #templateAction>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"search\">\n <button\n #btnSearch\n type=\"button\"\n [disabled]=\"disabled || readonly\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (keyup.ArrowLeft)=\"ngSelectSimple.focus()\"\n (click)=\"onSearch()\">\n <i class=\"fa fa-search text-white px-1\" [matTooltip]=\"'Buscar'\" matTooltipClass=\"bg-success\"></i>\n </button>\n </div>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"refresh\">\n <button\n *ngIf=\"refresh\"\n type=\"button\"\n [disabled]=\"disabled || readonly || isRefreshDisabled\"\n class=\"btn btn-info p-0 rounded-0 h-100\"\n (click)=\"onRefresh()\">\n <i class=\"fa fa-refresh text-white px-1\" [matTooltip]=\"'Refrescar'\" matTooltipClass=\"bg-info\"></i>\n </button>\n </div>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"redirect\">\n <button\n type=\"button\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n style=\"padding-top: 3px; padding-bottom: 7px; border-radius: 0px\"\n (click)=\"openEnlace()\"\n [disabled]=\"disabled || readonly || isRedirectDisabled\">\n <em class=\"fa-regular fa-rectangle-list text-white px-1\" [matTooltip]=\"titleRedirect!\" matTooltipClass=\"bg-success\"> </em>\n </button>\n </div>\n </ng-template>\n\n <ng-content select=\"[more-buttons]\"></ng-content>\n </div>\n</div>\n\n<!-- error-message es el mansaje que aparece abajo del componente -->\n<error-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [submitted]=\"submitted\"\n [tooltipMessage]=\"tooltipMessage\"></error-message>\n", styles: ["ng-select-simple{display:block}.sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;font-size:16px;text-align:center;right:9px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.upperCase .ng-select-container .ng-value-container .ng-input>input{text-transform:uppercase}.app-ng-select-button{width:34px}.app-ng-select-button button{width:100%}.app-ng-selec-container{width:calc(100% - 34px)}.ng-select-container-fullbuttons{width:calc(100% - 102px)}.app-ng-select-action{width:8rem}.app-ng-select-action button{min-width:2rem;width:33%}.overflow-box{padding:5px;height:100px;border:1px solid #999;overflow:hidden}.ng-dropdown-panel{width:auto!important;max-width:550px;min-width:100%}.custom-tooltip{--mdc-plain-tooltip-container-color: orange}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#999!important}\n"] }]
|
|
558
|
+
], encapsulation: ViewEncapsulation.None, template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\">\n <span *ngIf=\"!templateLabel; else templateLabel\" [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">\n {{ label }}\n </span>\n <span *ngIf=\"required\" [class.text-danger]=\"controls?.errors != null\"> *</span>\n <span *ngIf=\"labelInfo\">\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\n </span>\n</label>\n\n<div\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.refresh]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted && refresh\"\n [class.search]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted && search\">\n <div class=\"d-flex\">\n <div\n class=\"position-relative\"\n [class.ng-select-container-fullbuttons]=\"search && refresh && redirect\"\n [class.app-ng-selec-container]=\"search || refresh\"\n [class.w-100]=\"!search && !refresh\"\n style=\"flex: 1; min-width: 0;\">\n <ng-select\n #ngSelectSimple\n [class]=\"search || refresh ? 'app-ng-select ng-select-fixed-width' : 'w-100 ng-select-fixed-width'\"\n [class.action]=\"search && refresh\"\n [items]=\"items | async\"\n [(ngModel)]=\"_value\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (change)=\"eventChange($event)\"\n (blur)=\"eventBlur($event)\"\n (focus)=\"eventFocus($event)\"\n (search)=\"eventSearch($event)\"\n [markFirst]=\"markFirst\"\n [clearable]=\"!required && clearable\"\n [virtualScroll]=\"virtualScroll\"\n [inputAttrs]=\"{ autocomplete: autocomplete }\"\n [clearOnBackspace]=\"clearOnBackspace\"\n [openOnEnter]=\"openOnEnter\"\n (keydown.delete)=\"!required && clearable ? clear() : ''\"\n (clear)=\"clear()\"\n (keyup.F1)=\"f1KeyUp()\"\n [notFoundText]=\"notFoundText\"\n placeholder=\"Seleccionar\"\n (keyup.enter)=\"enterKeyUp()\"\n [clearAllText]=\"clearAllText\"\n [searchable]=\"searchable\"\n (keyup.ArrowLeft)=\"leftKeyUp()\"\n [appendTo]=\"appendTo\"\n [loading]=\"loading\"\n [loadingText]=\"loadingText\"\n [searchFn]=\"searchFn\"\n [class.ng-select-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.ng-select-touched]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [class.upperCase]=\"upperCase\"\n [ngClass]=\"setNgClass\"\n style=\"max-width: 100%; width: 100%;\">\n\n <!-- OPCIONES DE LISTADO -->\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span data-toggle=\"tooltip\" title=\"{{ item.label }}\">{{ item.label }}</span>\n </ng-template>\n </ng-select>\n\n <!-- tooltip-message es el icono de error -->\n <tooltip-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [submitted]=\"submitted\"\n [tooltipMessage]=\"tooltipMessage\"></tooltip-message>\n </div>\n <ng-container *ngIf=\"search && refresh && redirect; else templateAction\">\n <div class=\"app-ng-select-action bd-highligh\">\n <button\n #btnSearch\n type=\"button\"\n [disabled]=\"disabled || readonly\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (keyup.ArrowLeft)=\"ngSelectSimple.focus()\"\n style=\"background-color: orange; border-color: orange\"\n (click)=\"onSearch()\">\n <i class=\"fa fa-search text-white px-1\" [matTooltip]=\"'Buscar'\" matTooltipClass=\"custom-tooltip\"></i>\n </button>\n <button\n *ngIf=\"refresh\"\n type=\"button\"\n [disabled]=\"disabled || readonly || isRefreshDisabled\"\n class=\"btn btn-info p-0 rounded-0 h-100\"\n (click)=\"onRefresh()\">\n <i class=\"fa fa-refresh text-white px-1\" [matTooltip]=\"'Refrescar'\" matTooltipClass=\"bg-info\"></i>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (click)=\"openEnlace()\"\n [disabled]=\"disabled || readonly || isRedirectDisabled\">\n <em class=\"fa-regular fa-rectangle-list text-white px-1\" [matTooltip]=\"titleRedirect!\" matTooltipClass=\"bg-success\"> </em>\n </button>\n </div>\n </ng-container>\n\n <ng-template #templateAction>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"search\">\n <button\n #btnSearch\n type=\"button\"\n [disabled]=\"disabled || readonly\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n (keyup.ArrowLeft)=\"ngSelectSimple.focus()\"\n (click)=\"onSearch()\">\n <i class=\"fa fa-search text-white px-1\" [matTooltip]=\"'Buscar'\" matTooltipClass=\"bg-success\"></i>\n </button>\n </div>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"refresh\">\n <button\n *ngIf=\"refresh\"\n type=\"button\"\n [disabled]=\"disabled || readonly || isRefreshDisabled\"\n class=\"btn btn-info p-0 rounded-0 h-100\"\n (click)=\"onRefresh()\">\n <i class=\"fa fa-refresh text-white px-1\" [matTooltip]=\"'Refrescar'\" matTooltipClass=\"bg-info\"></i>\n </button>\n </div>\n <div class=\"app-ng-select-button bd-highlight\" *ngIf=\"redirect\">\n <button\n type=\"button\"\n class=\"btn btn-success p-0 rounded-0 h-100\"\n style=\"padding-top: 3px; padding-bottom: 7px; border-radius: 0px\"\n (click)=\"openEnlace()\"\n [disabled]=\"disabled || readonly || isRedirectDisabled\">\n <em class=\"fa-regular fa-rectangle-list text-white px-1\" [matTooltip]=\"titleRedirect!\" matTooltipClass=\"bg-success\"> </em>\n </button>\n </div>\n </ng-template>\n\n <ng-content select=\"[more-buttons]\"></ng-content>\n </div>\n</div>\n\n<!-- error-message es el mansaje que aparece abajo del componente -->\n<error-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [submitted]=\"submitted\"\n [tooltipMessage]=\"tooltipMessage\"></error-message>\n", styles: ["ng-select-simple{display:block}.sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;font-size:16px;text-align:center;right:9px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.upperCase .ng-select-container .ng-value-container .ng-input>input{text-transform:uppercase}.app-ng-select-button{width:34px}.app-ng-select-button button{width:100%}.app-ng-selec-container{width:calc(100% - 34px)}.ng-select-container-fullbuttons{width:calc(100% - 102px)}.app-ng-select-action{width:8rem}.app-ng-select-action button{min-width:2rem;width:33%}.overflow-box{padding:5px;height:100px;border:1px solid #999;overflow:hidden}.ng-dropdown-panel{width:auto!important;max-width:550px;min-width:100%}.custom-tooltip{--mdc-plain-tooltip-container-color: orange}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#999!important}\n"] }]
|
|
544
559
|
}], ctorParameters: () => [{ type: i1.MessageUtilService }, { type: i2.MatDialog }, { type: i3.NgSelectSimpleService }], propDecorators: { ngSelectSimple: [{
|
|
545
560
|
type: ViewChild,
|
|
546
561
|
args: ["ngSelectSimple"]
|
|
@@ -633,6 +648,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
633
648
|
type: Input
|
|
634
649
|
}], isRedirectDisabled: [{
|
|
635
650
|
type: Input
|
|
651
|
+
}], startsWith: [{
|
|
652
|
+
type: Input
|
|
636
653
|
}], onNext: [{
|
|
637
654
|
type: Output
|
|
638
655
|
}], onBack: [{
|
|
@@ -648,4 +665,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
648
665
|
}], onsearch: [{
|
|
649
666
|
type: Output
|
|
650
667
|
}] } });
|
|
651
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2VsZWN0LXNpbXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL25nLXNlbGVjdC1zaW1wbGUvbmctc2VsZWN0LXNpbXBsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL25nLXNlbGVjdC1zaW1wbGUvbmctc2VsZWN0LXNpbXBsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsYUFBYSxFQUFFLGlCQUFpQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBR3JHLE9BQU8sRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUV2RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7O0FBSXJELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQ1MsYUFBMkIsRUFBRSxFQUM3QixRQUFnQixFQUFFLEVBQ2xCLFFBQWdCLE9BQU8sRUFDdkIsVUFBNkIsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUhuQyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixVQUFLLEdBQUwsS0FBSyxDQUFhO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBQ3ZCLFlBQU8sR0FBUCxPQUFPLENBQTRCO0lBQ3hDLENBQUM7Q0FDTjtBQUVELE1BQU0sT0FBTyxVQUFVO0NBYXRCO0FBb0JELE1BQU0sT0FBTyx1QkFBdUI7SUFrVmxDLFVBQVU7UUFDUixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFDVSxrQkFBc0MsRUFDdkMsTUFBaUIsRUFDaEIscUJBQTRDO1FBRjVDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNoQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBclZ0RDs7OztXQUlHO1FBQ00sY0FBUyxHQUFZLElBQUksQ0FBQztRQUVuQzs7OztXQUlHO1FBQ00sVUFBSyxHQUFRLElBQUksQ0FBQztRQUUzQjs7OztXQUlHO1FBQ00saUJBQVksR0FBVywyQkFBMkIsQ0FBQztRQThCNUQ7Ozs7V0FJRztRQUNNLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkM7Ozs7V0FJRztRQUNNLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkM7Ozs7V0FJRztRQUNNLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkM7Ozs7V0FJRztRQUNNLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUUzQzs7OztXQUlHO1FBQ00sbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFFeEM7Ozs7V0FJRztRQUNNLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRXhDOzs7O1dBSUc7UUFDTSxhQUFRLEdBQVcsT0FBTyxDQUFDO1FBRXBDOzs7O1dBSUc7UUFDTSxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUV4Qzs7OztXQUlHO1FBQ00sd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRTlDOzs7O1dBSUc7UUFDTSxjQUFTLEdBQVksSUFBSSxDQUFDO1FBRW5DOzs7O1dBSUc7UUFDTSxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRWpDOzs7O1dBSUc7UUFDTSxlQUFVLEdBQVksSUFBSSxDQUFDO1FBRXBDOzs7O1dBSUc7UUFDTSxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUV6Qzs7OztXQUlHO1FBQ00sY0FBUyxHQUFZLEtBQUssQ0FBQztRQUVwQzs7OztXQUlHO1FBQ00sa0JBQWEsR0FBNEIsSUFBSSxDQUFDO1FBRXZEOzs7O1dBSUc7UUFDTSxhQUFRLEdBQVcsTUFBTSxDQUFDO1FBU25DOzs7O1dBSUc7UUFDTSxZQUFPLEdBQVksSUFBSSxDQUFDO1FBRWpDOzs7O1dBSUc7UUFDTSxnQkFBVyxHQUFXLGFBQWEsQ0FBQztRQUU3Qzs7OztXQUlHO1FBQ00saUJBQVksR0FBVyxTQUFTLENBQUM7UUFFMUM7Ozs7V0FJRztRQUNNLGlCQUFZLEdBQVcsOEJBQThCLENBQUM7UUFFL0Q7Ozs7V0FJRztRQUNNLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFFbkM7Ozs7V0FJRztRQUNNLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFFbkM7Ozs7V0FJRztRQUNNLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUUzQzs7OztXQUlHO1FBQ00sa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFFdkM7Ozs7V0FJRztRQUNNLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRXRDOzs7O1dBSUc7UUFDTSxZQUFPLEdBQVksS0FBSyxDQUFDO1FBRWxDOzs7O1dBSUc7UUFDTSxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFNUM7Ozs7V0FJRztRQUNNLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFakM7Ozs7V0FJRztRQUNNLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkM7Ozs7V0FJRztRQUNNLGlCQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFekQ7Ozs7V0FJRztRQUNNLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFcEM7Ozs7V0FJRztRQUNNLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBRXBDOzs7O1dBSUc7UUFDTSxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUVsQzs7OztXQUlHO1FBQ00sa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFFcEM7Ozs7V0FJRztRQUNNLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUVuQyxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0MsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9DLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQyxTQUFJLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0MsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hELGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsRCxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0QsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLHlCQUFvQixHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUVsRCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBSU4sa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRTNDLGFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTNCLHVCQUFrQixHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUvQixjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXRCLFVBQUssR0FBRyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUM7UUFXQSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNyRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDbkUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNyRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVELFdBQVcsQ0FBRSxPQUFzQjtRQUNqQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNyRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3BELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2hDLElBQ0UsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQ3RELENBQUM7b0JBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUSxLQUFNLENBQUM7SUFFZixTQUFTLENBQUUsR0FBUSxFQUFFLEdBQVE7UUFDM0IsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQU0sRUFBRSxDQUFNO1lBQ25ELE9BQU8sT0FBTyxDQUFDLElBQUksV0FBVyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxVQUFVLENBQUUsS0FBVTtRQUNwQixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDdEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUNoQyxJQUNFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQzVFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUN0RCxDQUFDO3dCQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO3dCQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDM0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7d0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDaEMsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCw0QkFBNEI7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUNELGdCQUFnQixDQUFFLEVBQU87UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUNELGlCQUFpQixDQUFFLEVBQU87UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNELGdCQUFnQixDQUFFLFVBQW1CO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRLENBQUUsT0FBd0I7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQseUJBQXlCLENBQUUsRUFBYztRQUN2QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXLENBQUUsQ0FBTTtRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFTLENBQUUsQ0FBTTtRQUNmLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsVUFBVSxDQUFFLENBQU07UUFDaEIsK0JBQStCO1FBQy9CLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUUsQ0FBTTtRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUcsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlFLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzdDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUUsT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQzlELEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7WUFDOUIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxRCxJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUM7UUFDM0MsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ3hGLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUMxRixRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBQ25ELFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFXLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVCLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQzsrR0E3a0JVLHVCQUF1QjttR0FBdkIsdUJBQXVCLGsyQ0FkdkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUN0RCxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0JBQ3RELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwwUENsRUgsOGdOQW1KQTs7NEZEOUVhLHVCQUF1QjtrQkFsQm5DLFNBQVM7K0JBQ0Usa0JBQWtCLGFBR2pCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUM7NEJBQ3RELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLGlCQUNjLGlCQUFpQixDQUFDLElBQUk7bUpBR1IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ0gsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQU9iLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0csSUFBSTtzQkFBWixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0csSUFBSTtzQkFBWixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBT0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQU9HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csVUFBVTtzQkFBbEIsS0FBSztnQkFPRyxVQUFVO3NCQUFsQixLQUFLO2dCQU9HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9HLE9BQU87c0JBQWYsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0csWUFBWTtzQkFBcEIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0csV0FBVztzQkFBbkIsS0FBSztnQkFPRyxPQUFPO3NCQUFmLEtBQUs7Z0JBT0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQU9HLE1BQU07c0JBQWQsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHsgTmdTZWxlY3RDb21wb25lbnQgfSBmcm9tIFwiQG5nLXNlbGVjdC9uZy1zZWxlY3RcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgc2hhcmVSZXBsYXkgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IERpYWxvZ0FnR3JpZFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy1hZy1ncmlkLXNlYXJjaC9kaWFsb2ctYWctZ3JpZC1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VVdGlsU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9tZXNzYWdlLXV0aWwuc2VydmljZVwiO1xuaW1wb3J0IHsgU2hhcmVkQ29tcG9uZW50c1V0aWwgfSBmcm9tIFwiLi4vdXRpbHMvU2hhcmVkQ29tcG9uZW50c1V0aWxcIjtcbmltcG9ydCB7IFZhbGlkYXRlVXRpbCB9IGZyb20gXCIuLi91dGlscy9WYWxpZGF0ZVV0aWxcIjtcbmltcG9ydCB7IE5nU2VsZWN0U2ltcGxlU2VydmljZSB9IGZyb20gXCIuL25nLXNlbGVjdC1zaW1wbGUuc2VydmljZVwiO1xuXG5cbmV4cG9ydCBjbGFzcyBTZWFyY2hQYXJhbXMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29sdW1uRGVmczogQ29sdW1uRGVmc1tdID0gW10sXG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmcgPSBcIlwiLFxuICAgIHB1YmxpYyB3aWR0aDogc3RyaW5nID0gXCI5OTBweFwiLFxuICAgIHB1YmxpYyByb3dEYXRhOiBPYnNlcnZhYmxlPGFueVtdPiA9IG9mKFtdKVxuICApIHsgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29sdW1uRGVmcyB7XG4gIGhlYWRlck5hbWU/OiBzdHJpbmc7XG4gIGZpZWxkPzogc3RyaW5nO1xuICB3aWR0aD86IHN0cmluZztcbiAgY2VsbFJlbmRlcmVyPzogYW55O1xuICB2YWx1ZUdldHRlcj86IChmaWVsZDogYW55KSA9PiBzdHJpbmcgfCBzdHJpbmc7XG4gIHNvcnRhYmxlPzogYm9vbGVhbjtcbiAgcmVzaXphYmxlPzogYm9vbGVhbjtcbiAgY2VsbENsYXNzPzogc3RyaW5nW107XG4gIGNlbGxTdHlsZT86IHt9O1xuICB2YWx1ZUZvcm1hdHRlcj86IGFueTtcbiAgcGlubmVkPzogc3RyaW5nO1xuICBzb3J0Pzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1zZWxlY3Qtc2ltcGxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25nLXNlbGVjdC1zaW1wbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZy1zZWxlY3Qtc2ltcGxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdTZWxlY3RTaW1wbGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdTZWxlY3RTaW1wbGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTmdTZWxlY3RTaW1wbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChcIm5nU2VsZWN0U2ltcGxlXCIpIG5nU2VsZWN0U2ltcGxlITogTmdTZWxlY3RDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoXCJidG5TZWFyY2hcIikgYnRuU2VhcmNoITogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xhIGxhIHZpc3VhbGl6YWNpw7NuIGRlbCB0ZXh0byBzdXBlcmlvciAobGFiZWwpXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gYSBtb3N0cmFyIGNvbW8gZXRpcXVldGEgZGVsIGNhbXBvXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICogQHR5cGUgYW55XG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogYW55ID0gbnVsbDtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVmFsb3IgcGFyYSBlbCBhdHJpYnV0byBhdXRvY29tcGxldGUgZGVsIGlucHV0XG4gICAqIEBkZWZhdWx0IFwibm8tYXV0b2NvbXBsZXRlLW5nLXNlbGVjdFwiXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmcgPSBcIm5vLWF1dG9jb21wbGV0ZS1uZy1zZWxlY3RcIjtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBzaWd1aWVudGUgY29udHJvbCBwYXJhIG5hdmVnYWNpw7NuXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAdHlwZSBhbnlcbiAgICovXG4gIEBJbnB1dCgpIG5leHQ6IGFueTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBjb250cm9sIGFsdGVybmF0aXZvIGN1YW5kbyBlbCBzaWd1aWVudGUgZXN0w6EgZGVzaGFiaWxpdGFkb1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQHR5cGUgYW55XG4gICAqL1xuICBASW5wdXQoKSBuZXh0SXNEaXNhYmxlOiBhbnk7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbnRlcmlvciBwYXJhIG5hdmVnYWNpw7NuXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAdHlwZSBhbnlcbiAgICovXG4gIEBJbnB1dCgpIGJhY2s6IGFueTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBjb250cm9sIGFsdGVybmF0aXZvIGN1YW5kbyBlbCBhbnRlcmlvciBlc3TDoSBkZXNoYWJpbGl0YWRvXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAdHlwZSBhbnlcbiAgICovXG4gIEBJbnB1dCgpIGJhY2tJc0Rpc2FibGU6IGFueTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGNhbXBvIGVzIG9ibGlnYXRvcmlvXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlc2hhYmlsaXRhIGVsIGNvbnRyb2xcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXN0YWJsZWNlIGVsIGNvbnRyb2wgY29tbyBzb2xvIGxlY3R1cmFcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBtZW5zYWplcyBkZSB2YWxpZGFjacOzblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSB2YWxpZGF0b3JNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgbWVuc2FqZXMgZGUgYXl1ZGEgY29tbyB0b29sdGlwc1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQWJyZSBlbCBzZWxlY3RvciBhbCByZWNpYmlyIGVsIGZvY29cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgb3BlbldoZW5Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDYW1wbyBwb3IgZWwgY3VhbCBzZSByZWFsaXphcsOhIGxhIGLDunNxdWVkYVxuICAgKiBAZGVmYXVsdCBcInZhbHVlXCJcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqL1xuICBASW5wdXQoKSBzZWFyY2hCeTogc3RyaW5nID0gXCJ2YWx1ZVwiO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBNYXJjYSBlbCBwcmltZXIgZWxlbWVudG8gYXV0b23DoXRpY2FtZW50ZVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBtYXJrRmlyc3RJdGVtOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE1hcmNhIGF1dG9tw6F0aWNhbWVudGUgY3VhbmRvIHNvbG8gaGF5IHVuIGVsZW1lbnRvXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIG1hcmtXaGVuSGF2ZU9uZUl0ZW06IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGZvcm11bGFyaW8gaGEgc2lkbyBlbnZpYWRvIHBhcmEgbW9zdHJhciB2YWxpZGFjaW9uZXNcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDbGFzZXMgQ1NTIGFkaWNpb25hbGVzIHBhcmEgZWwgY29tcG9uZW50ZVxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgc2V0TmdDbGFzczogc3RyaW5nID0gXCJcIjtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgbGEgYsO6c3F1ZWRhIGVuIGVsIHNlbGVjdG9yXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgc2VhcmNoYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgYWxlcnRhcyBkZSB2YWxpZGFjacOzblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSB2YWxpZGF0b3JBbGVydDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb252aWVydGUgZWwgdGV4dG8gYSBtYXnDunNjdWxhc1xuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSB1cHBlckNhc2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGxhbnRpbGxhIHBlcnNvbmFsaXphZGEgcGFyYSBsYSBldGlxdWV0YVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqIEB0eXBlIFRlbXBsYXRlUmVmPGFueT4gfCBudWxsXG4gICAqL1xuICBASW5wdXQoKSB0ZW1wbGF0ZUxhYmVsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEVsZW1lbnRvIGFsIHF1ZSBzZSBhZGp1bnRhcsOhIGVsIGRyb3Bkb3duXG4gICAqIEBkZWZhdWx0IFwiYm9keVwiXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgYXBwZW5kVG86IHN0cmluZyA9IFwiYm9keVwiO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBlbGVtZW50b3MgcGFyYSBlbCBzZWxlY3RvclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQHR5cGUgT2JzZXJ2YWJsZTxhbnlbXT5cbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zITogT2JzZXJ2YWJsZTxhbnlbXT47XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluZGljYSBzaSBlc3TDoSBjYXJnYW5kbyBkYXRvc1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBhIG1vc3RyYXIgZHVyYW50ZSBsYSBjYXJnYVxuICAgKiBAZGVmYXVsdCBcIkNhcmdhbmRvLi4uXCJcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqL1xuICBASW5wdXQoKSBsb2FkaW5nVGV4dDogc3RyaW5nID0gXCJDYXJnYW5kby4uLlwiO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBwYXJhIGVsIGJvdMOzbiBkZSBsaW1waWFyIHNlbGVjY2nDs25cbiAgICogQGRlZmF1bHQgXCJMaW1waWFyXCJcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqL1xuICBASW5wdXQoKSBjbGVhckFsbFRleHQ6IHN0cmluZyA9IFwiTGltcGlhclwiO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBhIG1vc3RyYXIgY3VhbmRvIG5vIGhheSByZXN1bHRhZG9zXG4gICAqIEBkZWZhdWx0IFwiTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvc1wiXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgbm90Rm91bmRUZXh0OiBzdHJpbmcgPSBcIk5vIHNlIGVuY29udHJhcm9uIHJlc3VsdGFkb3NcIjtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTWFyY2EgZWwgcHJpbWVyIGVsZW1lbnRvIGRlIGxhIGxpc3RhXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgbWFya0ZpcnN0OiBib29sZWFuID0gdHJ1ZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGVybWl0ZSBsaW1waWFyIGxhIHNlbGVjY2nDs25cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaW1waWEgbGEgc2VsZWNjacOzbiBhbCBwcmVzaW9uYXIgcmV0cm9jZXNvXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIGNsZWFyT25CYWNrc3BhY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgZWwgZGVzcGxhemFtaWVudG8gdmlydHVhbCBwYXJhIGxpc3RhcyBncmFuZGVzXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgdmlydHVhbFNjcm9sbDogYm9vbGVhbiA9IHRydWU7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFicmUgZWwgc2VsZWN0b3IgYWwgcHJlc2lvbmFyIEVudGVyXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIG9wZW5PbkVudGVyOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgZWwgYm90w7NuIGRlIGFjdHVhbGl6YXJcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgcmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXNoYWJpbGl0YSBlbCBib3TDs24gZGUgYWN0dWFsaXphclxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBpc1JlZnJlc2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBNdWVzdHJhIGVsIGJvdMOzbiBkZSBiw7pzcXVlZGFcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgc2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgZWwgYm90w7NuIGRlIHJlZGlyZWNjacOzblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSByZWRpcmVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXLDoW1ldHJvcyBwYXJhIGxhIGLDunNxdWVkYSBhdmFuemFkYVxuICAgKiBAZGVmYXVsdCBuZXcgU2VhcmNoUGFyYW1zKClcbiAgICogQHR5cGUgU2VhcmNoUGFyYW1zXG4gICAqL1xuICBASW5wdXQoKSBzZWFyY2hQYXJhbXM6IFNlYXJjaFBhcmFtcyA9IG5ldyBTZWFyY2hQYXJhbXMoKTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgaW5mb3JtYWNpw7NuIGFkaWNpb25hbCBwYXJhIGxhIGV0aXF1ZXRhXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBpbmZvcm1hdGl2byBhZGljaW9uYWwgcGFyYSBsYSBldGlxdWV0YVxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgdGV4dExhYmVsSW5mbzogc3RyaW5nID0gXCJcIjtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVVJMIHBhcmEgcmVkaXJlY2Npw7NuXG4gICAqIEBkZWZhdWx0IFwiXCJcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqL1xuICBASW5wdXQoKSB1cmxSZWRpcmVjdDogc3RyaW5nID0gXCJcIjtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVMOtdHVsbyBwYXJhIGVsIGJvdMOzbiBkZSByZWRpcmVjY2nDs25cbiAgICogQGRlZmF1bHQgXCJcIlxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICovXG4gIEBJbnB1dCgpIHRpdGxlUmVkaXJlY3Q6IHN0cmluZyA9IFwiXCI7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlc2hhYmlsaXRhIGVsIGJvdMOzbiBkZSByZWRpcmVjY2nDs25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgaXNSZWRpcmVjdERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG9uTmV4dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25mb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbnJlZnJlc2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25zZWFyY2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB2YWxpZGF0ZVV0aWwgPSBuZXcgVmFsaWRhdGVVdGlsKCk7XG4gIHNoYXJlZENvbXBvbmVudHNVdGlsID0gbmV3IFNoYXJlZENvbXBvbmVudHNVdGlsKCk7XG5cbiAgYWxsSXRlbXMgPSBbXTtcbiAgX3ZhbHVlOiBhbnk7XG4gIGNvbnRyb2xzOiBhbnk7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xuXG4gIG9uVmFsaWRhdGlvbkNoYW5nZSA9ICgpID0+IHsgfTtcblxuICBvblRvdWNoZWQgPSAoKSA9PiB7IH07XG5cbiAgZm9jdXMgPSAoKSA9PiB7XG4gICAgdGhpcy5uZ1NlbGVjdFNpbXBsZS5mb2N1cygpO1xuICAgIGlmICh0aGlzLm9wZW5XaGVuRm9jdXMpIHtcbiAgICAgIHRoaXMubmdTZWxlY3RTaW1wbGUub3BlbigpO1xuICAgIH1cbiAgfTtcblxuICBjbG9zZSA9ICgpID0+IHtcbiAgICB0aGlzLm5nU2VsZWN0U2ltcGxlLmNsb3NlKCk7XG4gIH07XG5cbiAgb3BlbkVubGFjZSAoKTogdm9pZCB7XG4gICAgd2luZG93Lm9wZW4odGhpcy51cmxSZWRpcmVjdCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1lc3NhZ2VVdGlsU2VydmljZTogTWVzc2FnZVV0aWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIG5nU2VsZWN0U2ltcGxlU2VydmljZTogTmdTZWxlY3RTaW1wbGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMudmFsaWRhdG9yTWVzc2FnZSA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldFZhbGlkYXRvck1lc3NhZ2UoKTtcbiAgICB0aGlzLnRvb2x0aXBNZXNzYWdlID0gdGhpcy5uZ1NlbGVjdFNpbXBsZVNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcbiAgICB0aGlzLm9wZW5XaGVuRm9jdXMgPSB0aGlzLm5nU2VsZWN0U2ltcGxlU2VydmljZS5nZXRPcGVuV2hlbkZvY3VzKCk7XG4gICAgdGhpcy5zZWFyY2hCeSA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldFNlYXJjaEJ5KCk7XG4gICAgdGhpcy5tYXJrRmlyc3RJdGVtID0gdGhpcy5uZ1NlbGVjdFNpbXBsZVNlcnZpY2UuZ2V0TWFya0ZpcnN0SXRlbSgpO1xuICAgIHRoaXMuc3VibWl0dGVkID0gdGhpcy5uZ1NlbGVjdFNpbXBsZVNlcnZpY2UuZ2V0U3VibWl0dGVkKCk7XG4gICAgdGhpcy5zZWFyY2hhYmxlID0gdGhpcy5uZ1NlbGVjdFNpbXBsZVNlcnZpY2UuZ2V0U2VhcmNoYWJsZSgpO1xuICAgIHRoaXMudmFsaWRhdG9yQWxlcnQgPSB0aGlzLm5nU2VsZWN0U2ltcGxlU2VydmljZS5nZXRWYWxpZGF0b3JBbGVydCgpO1xuICAgIHRoaXMudXBwZXJDYXNlID0gdGhpcy5uZ1NlbGVjdFNpbXBsZVNlcnZpY2UuZ2V0VXBwZXJDYXNlKCk7XG4gICAgdGhpcy5hcHBlbmRUbyA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldEFwcGVuZFRvKCk7XG4gICAgdGhpcy5sb2FkaW5nVGV4dCA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldExvYWRpbmdUZXh0KCk7XG4gICAgdGhpcy5jbGVhckFsbFRleHQgPSB0aGlzLm5nU2VsZWN0U2ltcGxlU2VydmljZS5nZXRDbGVhckFsbFRleHQoKTtcbiAgICB0aGlzLm1hcmtGaXJzdCA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldE1hcmtGaXJzdCgpO1xuICAgIHRoaXMuY2xlYXJhYmxlID0gdGhpcy5uZ1NlbGVjdFNpbXBsZVNlcnZpY2UuZ2V0Q2xlYXJhYmxlKCk7XG4gICAgdGhpcy5jbGVhck9uQmFja3NwYWNlID0gdGhpcy5uZ1NlbGVjdFNpbXBsZVNlcnZpY2UuZ2V0Q2xlYXJPbkJhY2tzcGFjZSgpO1xuICAgIHRoaXMudmlydHVhbFNjcm9sbCA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldFZpcnR1YWxTY3JvbGwoKTtcbiAgICB0aGlzLm9wZW5PbkVudGVyID0gdGhpcy5uZ1NlbGVjdFNpbXBsZVNlcnZpY2UuZ2V0T3Blbk9uRW50ZXIoKTtcbiAgICB0aGlzLm5vdEZvdW5kVGV4dCA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldE5vdEZvdW5kVGV4dCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3kgKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKVxuICB9XG5cbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tcIml0ZW1zXCJdKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5jYXJnYSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1tcInN1Ym1pdHRlZFwiXSkge1xuICAgICAgaWYgKHRoaXMuY29udHJvbHMgIT09IHVuZGVmaW5lZCAmJiBjaGFuZ2VzW1wic3VibWl0dGVkXCJdLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuY29udHJvbHMubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNhcmdhICgpIHtcbiAgICB0aGlzLmFsbEl0ZW1zID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMucGlwZShzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlIH0pKTtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuaXRlbXMuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgfSk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYWxsSXRlbXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMudmFsaWRhdGVVdGlsLmlzVW5kZWZpbmVkT3JOdWxsKHRoaXMuZ2V0T2JqZWN0KGVsZW1lbnQsIHRoaXMuc2VhcmNoQnkpKSAmJlxuICAgICAgICAgIHRoaXMuZ2V0T2JqZWN0KGVsZW1lbnQsIHRoaXMuc2VhcmNoQnkpID09PSB0aGlzLl92YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLl92YWx1ZSA9IGVsZW1lbnQ7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgICAgICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UoKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm1hcmtGaXJzdEl0ZW0gJiYgdGhpcy5hbGxJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5hbGxJdGVtc1swXTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWFya1doZW5IYXZlT25lSXRlbSAmJiB0aGlzLmFsbEl0ZW1zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuYWxsSXRlbXNbMF07XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpO1xuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCAoKSB7IH1cblxuICBnZXRPYmplY3QgKG9iajogYW55LCBrZXk6IGFueSkge1xuICAgIHJldHVybiBrZXkuc3BsaXQoXCIuXCIpLnJlZHVjZShmdW5jdGlvbiAobzogYW55LCB4OiBhbnkpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgbyA9PSBcInVuZGVmaW5lZFwiIHx8IG8gPT09IG51bGwgPyBvIDogb1t4XTtcbiAgICB9LCBvYmopO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSAodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5sb2FkaW5nKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmFsbEl0ZW1zLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy52YWxpZGF0ZVV0aWwuaXNVbmRlZmluZWRPck51bGwodGhpcy5nZXRPYmplY3QoZWxlbWVudCwgdGhpcy5zZWFyY2hCeSkpICYmXG4gICAgICAgICAgICB0aGlzLmdldE9iamVjdChlbGVtZW50LCB0aGlzLnNlYXJjaEJ5KSA9PT0gdGhpcy5fdmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gZWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UoKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vdGhpcy5zZWFyY2hFbGVtZW50KHZhbHVlKTtcbiAgICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCk7XG4gICAgfVxuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UgKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQgKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIHNldERpc2FibGVkU3RhdGUgKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHZhbGlkYXRlIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgYW55IHtcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbDtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U/KGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIGV2ZW50Q2hhbmdlIChlOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlKGUpO1xuICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCk7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdChlKTtcbiAgfVxuXG4gIGV2ZW50Qmx1ciAoZTogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpO1xuICAgIHRoaXMuYmx1ci5lbWl0KGUpO1xuICB9XG5cbiAgZXZlbnRGb2N1cyAoZTogYW55KSB7XG4gICAgLy8gdGhpcy5uZ1NlbGVjdFNpbXBsZS5mb2N1cygpO1xuICAgIGlmICh0aGlzLm9wZW5XaGVuRm9jdXMpIHtcbiAgICAgIHRoaXMubmdTZWxlY3RTaW1wbGUub3BlbigpO1xuICAgIH1cbiAgICB0aGlzLm9uZm9jdXMuZW1pdChlKTtcbiAgfVxuXG4gIGV2ZW50U2VhcmNoIChlOiBhbnkpIHtcbiAgICB0aGlzLm9uc2VhcmNoLmVtaXQoZSk7XG4gIH1cblxuICBlbnRlcktleVVwICgpIHtcbiAgICB0aGlzLm5nU2VsZWN0U2ltcGxlLmNsb3NlKCk7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICBsZXQgdmFsaWRhdG9yID0gdGhpcy5zaGFyZWRDb21wb25lbnRzVXRpbC5zdG9wQnlWYWxpZGF0b3IodGhpcy5jb250cm9scywgdGhpcy52YWxpZGF0b3JBbGVydCwgdGhpcy5sYWJlbCk7XG4gICAgICBpZiAodmFsaWRhdG9yLmVycm9yKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVV0aWxTZXJ2aWNlLmdldE1lc3NhZ2VFcnJvcihcIjAwMDA0NlwiLCBcIkVycm9yXCIsIHZhbGlkYXRvci5tZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5uZXh0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMubmV4dC5kaXNhYmxlZCB8fCB0aGlzLm5leHQucmVhZG9ubHkpIHtcbiAgICAgICAgaWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZXh0LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm5leHRJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbk5leHQuZW1pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxlZnRLZXlVcCAoKSB7XG4gICAgdGhpcy5uZ1NlbGVjdFNpbXBsZS5jbG9zZSgpO1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgbGV0IHZhbGlkYXRvciA9IHRoaXMuc2hhcmVkQ29tcG9uZW50c1V0aWwuc3RvcEJ5VmFsaWRhdG9yKHRoaXMuY29udHJvbHMsIHRoaXMudmFsaWRhdG9yQWxlcnQsIHRoaXMubGFiZWwpO1xuICAgICAgaWYgKHZhbGlkYXRvci5lcnJvcikge1xuICAgICAgICB0aGlzLm1lc3NhZ2VVdGlsU2VydmljZS5nZXRNZXNzYWdlRXJyb3IoXCIwMDAwNDZcIiwgXCJFcnJvclwiLCB2YWxpZGF0b3IubWVzc2FnZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuYmFjayAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLmJhY2suZGlzYWJsZWQgfHwgdGhpcy5iYWNrLnJlYWRvbmx5KSB7XG4gICAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYmFjay5mb2N1cygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmJhY2tJc0Rpc2FibGUuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25CYWNrLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbGVhciAoKSB7XG4gICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCk7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XG4gIH1cblxuICBvblJlZnJlc2ggKCkge1xuICAgIHRoaXMub25yZWZyZXNoLmVtaXQoKTtcbiAgfVxuXG4gIGFzeW5jIG9uU2VhcmNoICgpIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0FnR3JpZFNlYXJjaENvbXBvbmVudCwge1xuICAgICAgd2lkdGg6IHRoaXMuc2VhcmNoUGFyYW1zLndpZHRoLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgIH0pO1xuICAgIGxldCByb3dkYXRhID0gYXdhaXQgdGhpcy5zZWFyY2hQYXJhbXMucm93RGF0YS50b1Byb21pc2UoKTtcbiAgICBsZXQgaW5zdGFuY2UgPSBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgaW5zdGFuY2UudGl0dGxlID0gdGhpcy5zZWFyY2hQYXJhbXMudGl0bGUgPT09IFwiXCIgPyB0aGlzLmxhYmVsIDogdGhpcy5zZWFyY2hQYXJhbXMudGl0bGU7XG4gICAgaW5zdGFuY2Uucm93RGF0YSA9IHJvd2RhdGEgJiYgcm93ZGF0YS5sZW5ndGggPCAxID8gdGhpcy5pdGVtcyA6IHRoaXMuc2VhcmNoUGFyYW1zLnJvd0RhdGE7XG4gICAgaW5zdGFuY2UuY29sdW1uRGVmcyA9IHRoaXMuc2VhcmNoUGFyYW1zLmNvbHVtbkRlZnM7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXNwOiBhbnlbXSkgPT4ge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgaWYgKHJlc3AubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHJlc3BbMF07XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpO1xuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGYxS2V5VXAgKCkge1xuICAgIGlmICghdGhpcy5idG5TZWFyY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5uZ1NlbGVjdFNpbXBsZS5jbG9zZSgpO1xuICAgIC8vdGhpcy5idG5TZWFyY2gubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMub25TZWFyY2goKTtcbiAgfVxufVxuIiwiPGxhYmVsICpuZ0lmPVwibGFiZWwgIT0gbnVsbCAmJiBsYWJlbCAhPSAnJyAmJiBzaG93TGFiZWxcIiBjbGFzcz1cImQtZmxleCBzdW1heC1sYWJlbCBtYi0wIHAtMFwiPlxuICA8c3BhbiAqbmdJZj1cIiF0ZW1wbGF0ZUxhYmVsOyBlbHNlIHRlbXBsYXRlTGFiZWxcIiBbdGl0bGVdPVwibGFiZWxcIiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzXCI+XG4gICAge3sgbGFiZWwgfX1cbiAgPC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgW2NsYXNzLnRleHQtZGFuZ2VyXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbFwiPiAqPC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cImxhYmVsSW5mb1wiPlxuICAgIDxpIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tY2lyY2xlIHRleHQtaW5mbyBtcy0yXCIgW21hdFRvb2x0aXBdPVwidGV4dExhYmVsSW5mb1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj48L2k+XG4gIDwvc3Bhbj5cbjwvbGFiZWw+XG5cbjxkaXZcbiAgW2NsYXNzLmlucHV0LWljb25dPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZFwiXG4gIFtjbGFzcy5yaWdodF09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGwgJiYgKGNvbnRyb2xzPy5kaXJ0eSB8fCBjb250cm9scz8udG91Y2hlZCkgJiYgc3VibWl0dGVkXCJcbiAgW2NsYXNzLnJlZnJlc2hdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZCAmJiByZWZyZXNoXCJcbiAgW2NsYXNzLnNlYXJjaF09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGwgJiYgKGNvbnRyb2xzPy5kaXJ0eSB8fCBjb250cm9scz8udG91Y2hlZCkgJiYgc3VibWl0dGVkICYmIHNlYXJjaFwiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gICAgICBbY2xhc3Mubmctc2VsZWN0LWNvbnRhaW5lci1mdWxsYnV0dG9uc109XCJzZWFyY2ggJiYgcmVmcmVzaCAmJiByZWRpcmVjdFwiXG4gICAgICBbY2xhc3MuYXBwLW5nLXNlbGVjLWNvbnRhaW5lcl09XCJzZWFyY2ggfHwgcmVmcmVzaFwiXG4gICAgICBbY2xhc3Mudy0xMDBdPVwiIXNlYXJjaCAmJiAhcmVmcmVzaFwiXG4gICAgICBzdHlsZT1cImZsZXg6IDE7IG1pbi13aWR0aDogMDtcIj5cbiAgICAgIDxuZy1zZWxlY3RcbiAgICAgICAgI25nU2VsZWN0U2ltcGxlXG4gICAgICAgIFtjbGFzc109XCJzZWFyY2ggfHwgcmVmcmVzaCA/ICdhcHAtbmctc2VsZWN0IG5nLXNlbGVjdC1maXhlZC13aWR0aCcgOiAndy0xMDAgbmctc2VsZWN0LWZpeGVkLXdpZHRoJ1wiXG4gICAgICAgIFtjbGFzcy5hY3Rpb25dPVwic2VhcmNoICYmIHJlZnJlc2hcIlxuICAgICAgICBbaXRlbXNdPVwiaXRlbXMgfCBhc3luY1wiXG4gICAgICAgIFsobmdNb2RlbCldPVwiX3ZhbHVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgKGNoYW5nZSk9XCJldmVudENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwiZXZlbnRCbHVyKCRldmVudClcIlxuICAgICAgICAoZm9jdXMpPVwiZXZlbnRGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgKHNlYXJjaCk9XCJldmVudFNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgW21hcmtGaXJzdF09XCJtYXJrRmlyc3RcIlxuICAgICAgICBbY2xlYXJhYmxlXT1cIiFyZXF1aXJlZCAmJiBjbGVhcmFibGVcIlxuICAgICAgICBbdmlydHVhbFNjcm9sbF09XCJ2aXJ0dWFsU2Nyb2xsXCJcbiAgICAgICAgW2lucHV0QXR0cnNdPVwieyBhdXRvY29tcGxldGU6IGF1dG9jb21wbGV0ZSB9XCJcbiAgICAgICAgW2NsZWFyT25CYWNrc3BhY2VdPVwiY2xlYXJPbkJhY2tzcGFjZVwiXG4gICAgICAgIFtvcGVuT25FbnRlcl09XCJvcGVuT25FbnRlclwiXG4gICAgICAgIChrZXlkb3duLmRlbGV0ZSk9XCIhcmVxdWlyZWQgJiYgY2xlYXJhYmxlID8gY2xlYXIoKSA6ICcnXCJcbiAgICAgICAgKGNsZWFyKT1cImNsZWFyKClcIlxuICAgICAgICAoa2V5dXAuRjEpPVwiZjFLZXlVcCgpXCJcbiAgICAgICAgW25vdEZvdW5kVGV4dF09XCJub3RGb3VuZFRleHRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjY2lvbmFyXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImVudGVyS2V5VXAoKVwiXG4gICAgICAgIFtjbGVhckFsbFRleHRdPVwiY2xlYXJBbGxUZXh0XCJcbiAgICAgICAgW3NlYXJjaGFibGVdPVwic2VhcmNoYWJsZVwiXG4gICAgICAgIChrZXl1cC5BcnJvd0xlZnQpPVwibGVmdEtleVVwKClcIlxuICAgICAgICBbYXBwZW5kVG9dPVwiYXBwZW5kVG9cIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgICAgW2xvYWRpbmdUZXh0XT1cImxvYWRpbmdUZXh0XCJcbiAgICAgICAgW2NsYXNzLm5nLXNlbGVjdC1pbnZhbGlkXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxuICAgICAgICBbY2xhc3Mubmctc2VsZWN0LXRvdWNoZWRdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZFwiXG4gICAgICAgIFtjbGFzcy51cHBlckNhc2VdPVwidXBwZXJDYXNlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwic2V0TmdDbGFzc1wiXG4gICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiAxMDAlOyB3aWR0aDogMTAwJTtcIj5cblxuICAgICAgICA8IS0tIE9QQ0lPTkVTIERFIExJU1RBRE8gLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCI+XG4gICAgICAgICAgPHNwYW4gZGF0YS10b2dnbGU9XCJ0b29sdGlwXCIgdGl0bGU9XCJ7eyBpdGVtLmxhYmVsIH19XCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctc2VsZWN0PlxuXG4gICAgICA8IS0tIHRvb2x0aXAtbWVzc2FnZSBlcyBlbCBpY29ubyBkZSBlcnJvciAtLT5cbiAgICAgIDx0b29sdGlwLW1lc3NhZ2VcbiAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgW2NvbnRyb2xzXT1cImNvbnRyb2xzXCJcbiAgICAgICAgW3ZhbGlkYXRvck1lc3NhZ2VdPVwidmFsaWRhdG9yTWVzc2FnZVwiXG4gICAgICAgIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCJcbiAgICAgICAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCI+PC90b29sdGlwLW1lc3NhZ2U+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaCAmJiByZWZyZXNoICYmIHJlZGlyZWN0OyBlbHNlIHRlbXBsYXRlQWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwLW5nLXNlbGVjdC1hY3Rpb24gYmQtaGlnaGxpZ2hcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICNidG5TZWFyY2hcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIHAtMCByb3VuZGVkLTAgaC0xMDBcIlxuICAgICAgICAgIChrZXl1cC5BcnJvd0xlZnQpPVwibmdTZWxlY3RTaW1wbGUuZm9jdXMoKVwiXG4gICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7IGJvcmRlci1jb2xvcjogb3JhbmdlXCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2goKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoIHRleHQtd2hpdGUgcHgtMVwiIFttYXRUb29sdGlwXT1cIidCdXNjYXInXCIgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJyZWZyZXNoXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgaXNSZWZyZXNoRGlzYWJsZWRcIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIHAtMCByb3VuZGVkLTAgaC0xMDBcIlxuICAgICAgICAgIChjbGljayk9XCJvblJlZnJlc2goKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcmVmcmVzaCB0ZXh0LXdoaXRlIHB4LTFcIiBbbWF0VG9vbHRpcF09XCInUmVmcmVzY2FyJ1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcC0wIHJvdW5kZWQtMCBoLTEwMFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5FbmxhY2UoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5IHx8IGlzUmVkaXJlY3REaXNhYmxlZFwiPlxuICAgICAgICAgIDxlbSBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtcmVjdGFuZ2xlLWxpc3QgdGV4dC13aGl0ZSBweC0xXCIgW21hdFRvb2x0aXBdPVwidGl0bGVSZWRpcmVjdCFcIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1zdWNjZXNzXCI+IDwvZW0+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlQWN0aW9uPlxuICAgICAgPGRpdiBjbGFzcz1cImFwcC1uZy1zZWxlY3QtYnV0dG9uIGJkLWhpZ2hsaWdodFwiICpuZ0lmPVwic2VhcmNoXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAjYnRuU2VhcmNoXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBwLTAgcm91bmRlZC0wIGgtMTAwXCJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dMZWZ0KT1cIm5nU2VsZWN0U2ltcGxlLmZvY3VzKClcIlxuICAgICAgICAgIChjbGljayk9XCJvblNlYXJjaCgpXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggdGV4dC13aGl0ZSBweC0xXCIgW21hdFRvb2x0aXBdPVwiJ0J1c2NhcidcIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1zdWNjZXNzXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFwcC1uZy1zZWxlY3QtYnV0dG9uIGJkLWhpZ2hsaWdodFwiICpuZ0lmPVwicmVmcmVzaFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJyZWZyZXNoXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgaXNSZWZyZXNoRGlzYWJsZWRcIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIHAtMCByb3VuZGVkLTAgaC0xMDBcIlxuICAgICAgICAgIChjbGljayk9XCJvblJlZnJlc2goKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcmVmcmVzaCB0ZXh0LXdoaXRlIHB4LTFcIiBbbWF0VG9vbHRpcF09XCInUmVmcmVzY2FyJ1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwLW5nLXNlbGVjdC1idXR0b24gYmQtaGlnaGxpZ2h0XCIgKm5nSWY9XCJyZWRpcmVjdFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcC0wIHJvdW5kZWQtMCBoLTEwMFwiXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLXRvcDogM3B4OyBwYWRkaW5nLWJvdHRvbTogN3B4OyBib3JkZXItcmFkaXVzOiAwcHhcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuRW5sYWNlKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seSB8fCBpc1JlZGlyZWN0RGlzYWJsZWRcIj5cbiAgICAgICAgICA8ZW0gY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXJlY3RhbmdsZS1saXN0IHRleHQtd2hpdGUgcHgtMVwiIFttYXRUb29sdGlwXT1cInRpdGxlUmVkaXJlY3QhXCIgbWF0VG9vbHRpcENsYXNzPVwiYmctc3VjY2Vzc1wiPiA8L2VtPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbW9yZS1idXR0b25zXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBlcnJvci1tZXNzYWdlIGVzIGVsIG1hbnNhamUgcXVlIGFwYXJlY2UgYWJham8gZGVsIGNvbXBvbmVudGUgLS0+XG48ZXJyb3ItbWVzc2FnZVxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxuICBbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcbiAgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIlxuICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIj48L2Vycm9yLW1lc3NhZ2U+XG4iXX0=
|
|
668
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2VsZWN0LXNpbXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL25nLXNlbGVjdC1zaW1wbGUvbmctc2VsZWN0LXNpbXBsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL25nLXNlbGVjdC1zaW1wbGUvbmctc2VsZWN0LXNpbXBsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsYUFBYSxFQUFFLGlCQUFpQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBR3JHLE9BQU8sRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUV2RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7O0FBSXJELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFlBQ1MsYUFBMkIsRUFBRSxFQUM3QixRQUFnQixFQUFFLEVBQ2xCLFFBQWdCLE9BQU8sRUFDdkIsVUFBNkIsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUhuQyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixVQUFLLEdBQUwsS0FBSyxDQUFhO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBQ3ZCLFlB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QU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBT0csT0FBTztzQkFBZixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFPRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0csa0JBQWtCO3NCQUExQixLQUFLO2dCQU9HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHsgTmdTZWxlY3RDb21wb25lbnQgfSBmcm9tIFwiQG5nLXNlbGVjdC9uZy1zZWxlY3RcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgc2hhcmVSZXBsYXkgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IERpYWxvZ0FnR3JpZFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy1hZy1ncmlkLXNlYXJjaC9kaWFsb2ctYWctZ3JpZC1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VVdGlsU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9tZXNzYWdlLXV0aWwuc2VydmljZVwiO1xuaW1wb3J0IHsgU2hhcmVkQ29tcG9uZW50c1V0aWwgfSBmcm9tIFwiLi4vdXRpbHMvU2hhcmVkQ29tcG9uZW50c1V0aWxcIjtcbmltcG9ydCB7IFZhbGlkYXRlVXRpbCB9IGZyb20gXCIuLi91dGlscy9WYWxpZGF0ZVV0aWxcIjtcbmltcG9ydCB7IE5nU2VsZWN0U2ltcGxlU2VydmljZSB9IGZyb20gXCIuL25nLXNlbGVjdC1zaW1wbGUuc2VydmljZVwiO1xuXG5cbmV4cG9ydCBjbGFzcyBTZWFyY2hQYXJhbXMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29sdW1uRGVmczogQ29sdW1uRGVmc1tdID0gW10sXG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmcgPSBcIlwiLFxuICAgIHB1YmxpYyB3aWR0aDogc3RyaW5nID0gXCI5OTBweFwiLFxuICAgIHB1YmxpYyByb3dEYXRhOiBPYnNlcnZhYmxlPGFueVtdPiA9IG9mKFtdKVxuICApIHsgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29sdW1uRGVmcyB7XG4gIGhlYWRlck5hbWU/OiBzdHJpbmc7XG4gIGZpZWxkPzogc3RyaW5nO1xuICB3aWR0aD86IHN0cmluZztcbiAgY2VsbFJlbmRlcmVyPzogYW55O1xuICB2YWx1ZUdldHRlcj86IChmaWVsZDogYW55KSA9PiBzdHJpbmcgfCBzdHJpbmc7XG4gIHNvcnRhYmxlPzogYm9vbGVhbjtcbiAgcmVzaXphYmxlPzogYm9vbGVhbjtcbiAgY2VsbENsYXNzPzogc3RyaW5nW107XG4gIGNlbGxTdHlsZT86IHt9O1xuICB2YWx1ZUZvcm1hdHRlcj86IGFueTtcbiAgcGlubmVkPzogc3RyaW5nO1xuICBzb3J0Pzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1zZWxlY3Qtc2ltcGxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25nLXNlbGVjdC1zaW1wbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZy1zZWxlY3Qtc2ltcGxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdTZWxlY3RTaW1wbGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdTZWxlY3RTaW1wbGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTmdTZWxlY3RTaW1wbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChcIm5nU2VsZWN0U2ltcGxlXCIpIG5nU2VsZWN0U2ltcGxlITogTmdTZWxlY3RDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoXCJidG5TZWFyY2hcIikgYnRuU2VhcmNoITogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xhIGxhIHZpc3VhbGl6YWNpw7NuIGRlbCB0ZXh0byBzdXBlcmlvciAobGFiZWwpXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gYSBtb3N0cmFyIGNvbW8gZXRpcXVldGEgZGVsIGNhbXBvXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICogQHR5cGUgYW55XG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogYW55ID0gbnVsbDtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVmFsb3IgcGFyYSBlbCBhdHJpYnV0byBhdXRvY29tcGxldGUgZGVsIGlucHV0XG4gICAqIEBkZWZhdWx0IFwibm8tYXV0b2NvbXBsZXRlLW5nLXNlbGVjdFwiXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmcgPSBcIm5vLWF1dG9jb21wbGV0ZS1uZy1zZWxlY3RcIjtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBzaWd1aWVudGUgY29udHJvbCBwYXJhIG5hdmVnYWNpw7NuXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAdHlwZSBhbnlcbiAgICovXG4gIEBJbnB1dCgpIG5leHQ6IGFueTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBjb250cm9sIGFsdGVybmF0aXZvIGN1YW5kbyBlbCBzaWd1aWVudGUgZXN0w6EgZGVzaGFiaWxpdGFkb1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQHR5cGUgYW55XG4gICAqL1xuICBASW5wdXQoKSBuZXh0SXNEaXNhYmxlOiBhbnk7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbnRlcmlvciBwYXJhIG5hdmVnYWNpw7NuXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAdHlwZSBhbnlcbiAgICovXG4gIEBJbnB1dCgpIGJhY2s6IGFueTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBjb250cm9sIGFsdGVybmF0aXZvIGN1YW5kbyBlbCBhbnRlcmlvciBlc3TDoSBkZXNoYWJpbGl0YWRvXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAdHlwZSBhbnlcbiAgICovXG4gIEBJbnB1dCgpIGJhY2tJc0Rpc2FibGU6IGFueTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGNhbXBvIGVzIG9ibGlnYXRvcmlvXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlc2hhYmlsaXRhIGVsIGNvbnRyb2xcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXN0YWJsZWNlIGVsIGNvbnRyb2wgY29tbyBzb2xvIGxlY3R1cmFcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBtZW5zYWplcyBkZSB2YWxpZGFjacOzblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSB2YWxpZGF0b3JNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgbWVuc2FqZXMgZGUgYXl1ZGEgY29tbyB0b29sdGlwc1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQWJyZSBlbCBzZWxlY3RvciBhbCByZWNpYmlyIGVsIGZvY29cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgb3BlbldoZW5Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDYW1wbyBwb3IgZWwgY3VhbCBzZSByZWFsaXphcsOhIGxhIGLDunNxdWVkYVxuICAgKiBAZGVmYXVsdCBcInZhbHVlXCJcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqL1xuICBASW5wdXQoKSBzZWFyY2hCeTogc3RyaW5nID0gXCJ2YWx1ZVwiO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBNYXJjYSBlbCBwcmltZXIgZWxlbWVudG8gYXV0b23DoXRpY2FtZW50ZVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBtYXJrRmlyc3RJdGVtOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE1hcmNhIGF1dG9tw6F0aWNhbWVudGUgY3VhbmRvIHNvbG8gaGF5IHVuIGVsZW1lbnRvXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIG1hcmtXaGVuSGF2ZU9uZUl0ZW06IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGZvcm11bGFyaW8gaGEgc2lkbyBlbnZpYWRvIHBhcmEgbW9zdHJhciB2YWxpZGFjaW9uZXNcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDbGFzZXMgQ1NTIGFkaWNpb25hbGVzIHBhcmEgZWwgY29tcG9uZW50ZVxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgc2V0TmdDbGFzczogc3RyaW5nID0gXCJcIjtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgbGEgYsO6c3F1ZWRhIGVuIGVsIHNlbGVjdG9yXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgc2VhcmNoYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgYWxlcnRhcyBkZSB2YWxpZGFjacOzblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSB2YWxpZGF0b3JBbGVydDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb252aWVydGUgZWwgdGV4dG8gYSBtYXnDunNjdWxhc1xuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSB1cHBlckNhc2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGxhbnRpbGxhIHBlcnNvbmFsaXphZGEgcGFyYSBsYSBldGlxdWV0YVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqIEB0eXBlIFRlbXBsYXRlUmVmPGFueT4gfCBudWxsXG4gICAqL1xuICBASW5wdXQoKSB0ZW1wbGF0ZUxhYmVsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEVsZW1lbnRvIGFsIHF1ZSBzZSBhZGp1bnRhcsOhIGVsIGRyb3Bkb3duXG4gICAqIEBkZWZhdWx0IFwiYm9keVwiXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgYXBwZW5kVG86IHN0cmluZyA9IFwiYm9keVwiO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBlbGVtZW50b3MgcGFyYSBlbCBzZWxlY3RvclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQHR5cGUgT2JzZXJ2YWJsZTxhbnlbXT5cbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zITogT2JzZXJ2YWJsZTxhbnlbXT47XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluZGljYSBzaSBlc3TDoSBjYXJnYW5kbyBkYXRvc1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBhIG1vc3RyYXIgZHVyYW50ZSBsYSBjYXJnYVxuICAgKiBAZGVmYXVsdCBcIkNhcmdhbmRvLi4uXCJcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqL1xuICBASW5wdXQoKSBsb2FkaW5nVGV4dDogc3RyaW5nID0gXCJDYXJnYW5kby4uLlwiO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBwYXJhIGVsIGJvdMOzbiBkZSBsaW1waWFyIHNlbGVjY2nDs25cbiAgICogQGRlZmF1bHQgXCJMaW1waWFyXCJcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqL1xuICBASW5wdXQoKSBjbGVhckFsbFRleHQ6IHN0cmluZyA9IFwiTGltcGlhclwiO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBhIG1vc3RyYXIgY3VhbmRvIG5vIGhheSByZXN1bHRhZG9zXG4gICAqIEBkZWZhdWx0IFwiTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvc1wiXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgbm90Rm91bmRUZXh0OiBzdHJpbmcgPSBcIk5vIHNlIGVuY29udHJhcm9uIHJlc3VsdGFkb3NcIjtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTWFyY2EgZWwgcHJpbWVyIGVsZW1lbnRvIGRlIGxhIGxpc3RhXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgbWFya0ZpcnN0OiBib29sZWFuID0gdHJ1ZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGVybWl0ZSBsaW1waWFyIGxhIHNlbGVjY2nDs25cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaW1waWEgbGEgc2VsZWNjacOzbiBhbCBwcmVzaW9uYXIgcmV0cm9jZXNvXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIGNsZWFyT25CYWNrc3BhY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgZWwgZGVzcGxhemFtaWVudG8gdmlydHVhbCBwYXJhIGxpc3RhcyBncmFuZGVzXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgdmlydHVhbFNjcm9sbDogYm9vbGVhbiA9IHRydWU7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFicmUgZWwgc2VsZWN0b3IgYWwgcHJlc2lvbmFyIEVudGVyXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIG9wZW5PbkVudGVyOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgZWwgYm90w7NuIGRlIGFjdHVhbGl6YXJcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgcmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXNoYWJpbGl0YSBlbCBib3TDs24gZGUgYWN0dWFsaXphclxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBpc1JlZnJlc2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBNdWVzdHJhIGVsIGJvdMOzbiBkZSBiw7pzcXVlZGFcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgc2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgZWwgYm90w7NuIGRlIHJlZGlyZWNjacOzblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSByZWRpcmVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYXLDoW1ldHJvcyBwYXJhIGxhIGLDunNxdWVkYSBhdmFuemFkYVxuICAgKiBAZGVmYXVsdCBuZXcgU2VhcmNoUGFyYW1zKClcbiAgICogQHR5cGUgU2VhcmNoUGFyYW1zXG4gICAqL1xuICBASW5wdXQoKSBzZWFyY2hQYXJhbXM6IFNlYXJjaFBhcmFtcyA9IG5ldyBTZWFyY2hQYXJhbXMoKTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgaW5mb3JtYWNpw7NuIGFkaWNpb25hbCBwYXJhIGxhIGV0aXF1ZXRhXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBpbmZvcm1hdGl2byBhZGljaW9uYWwgcGFyYSBsYSBldGlxdWV0YVxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgdGV4dExhYmVsSW5mbzogc3RyaW5nID0gXCJcIjtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVVJMIHBhcmEgcmVkaXJlY2Npw7NuXG4gICAqIEBkZWZhdWx0IFwiXCJcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqL1xuICBASW5wdXQoKSB1cmxSZWRpcmVjdDogc3RyaW5nID0gXCJcIjtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVMOtdHVsbyBwYXJhIGVsIGJvdMOzbiBkZSByZWRpcmVjY2nDs25cbiAgICogQGRlZmF1bHQgXCJcIlxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICovXG4gIEBJbnB1dCgpIHRpdGxlUmVkaXJlY3Q6IHN0cmluZyA9IFwiXCI7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlc2hhYmlsaXRhIGVsIGJvdMOzbiBkZSByZWRpcmVjY2nDs25cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgaXNSZWRpcmVjdERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTaSBlcyB0cnVlLCBmaWx0cmEgbGFzIG9wY2lvbmVzIHNvbG8gZGVzZGUgZWwgaW5pY2lvIGRlbCB0ZXh0b1xuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBzdGFydHNXaXRoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG9uTmV4dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25mb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbnJlZnJlc2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25zZWFyY2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB2YWxpZGF0ZVV0aWwgPSBuZXcgVmFsaWRhdGVVdGlsKCk7XG4gIHNoYXJlZENvbXBvbmVudHNVdGlsID0gbmV3IFNoYXJlZENvbXBvbmVudHNVdGlsKCk7XG5cbiAgYWxsSXRlbXMgPSBbXTtcbiAgX3ZhbHVlOiBhbnk7XG4gIGNvbnRyb2xzOiBhbnk7XG4gIHNlYXJjaEZuOiBhbnkgPSBudWxsO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcblxuICBvblZhbGlkYXRpb25DaGFuZ2UgPSAoKSA9PiB7IH07XG5cbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xuXG4gIGZvY3VzID0gKCkgPT4ge1xuICAgIHRoaXMubmdTZWxlY3RTaW1wbGUuZm9jdXMoKTtcbiAgICBpZiAodGhpcy5vcGVuV2hlbkZvY3VzKSB7XG4gICAgICB0aGlzLm5nU2VsZWN0U2ltcGxlLm9wZW4oKTtcbiAgICB9XG4gIH07XG5cbiAgY2xvc2UgPSAoKSA9PiB7XG4gICAgdGhpcy5uZ1NlbGVjdFNpbXBsZS5jbG9zZSgpO1xuICB9O1xuXG4gIG9wZW5FbmxhY2UgKCk6IHZvaWQge1xuICAgIHdpbmRvdy5vcGVuKHRoaXMudXJsUmVkaXJlY3QpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtZXNzYWdlVXRpbFNlcnZpY2U6IE1lc3NhZ2VVdGlsU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBuZ1NlbGVjdFNpbXBsZVNlcnZpY2U6IE5nU2VsZWN0U2ltcGxlU2VydmljZVxuICApIHtcbiAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLm5nU2VsZWN0U2ltcGxlU2VydmljZS5nZXRWYWxpZGF0b3JNZXNzYWdlKCk7XG4gICAgdGhpcy50b29sdGlwTWVzc2FnZSA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldFRvb2x0aXBNZXNzYWdlKCk7XG4gICAgdGhpcy5vcGVuV2hlbkZvY3VzID0gdGhpcy5uZ1NlbGVjdFNpbXBsZVNlcnZpY2UuZ2V0T3BlbldoZW5Gb2N1cygpO1xuICAgIHRoaXMuc2VhcmNoQnkgPSB0aGlzLm5nU2VsZWN0U2ltcGxlU2VydmljZS5nZXRTZWFyY2hCeSgpO1xuICAgIHRoaXMubWFya0ZpcnN0SXRlbSA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldE1hcmtGaXJzdEl0ZW0oKTtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldFN1Ym1pdHRlZCgpO1xuICAgIHRoaXMuc2VhcmNoYWJsZSA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldFNlYXJjaGFibGUoKTtcbiAgICB0aGlzLnZhbGlkYXRvckFsZXJ0ID0gdGhpcy5uZ1NlbGVjdFNpbXBsZVNlcnZpY2UuZ2V0VmFsaWRhdG9yQWxlcnQoKTtcbiAgICB0aGlzLnVwcGVyQ2FzZSA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldFVwcGVyQ2FzZSgpO1xuICAgIHRoaXMuYXBwZW5kVG8gPSB0aGlzLm5nU2VsZWN0U2ltcGxlU2VydmljZS5nZXRBcHBlbmRUbygpO1xuICAgIHRoaXMubG9hZGluZ1RleHQgPSB0aGlzLm5nU2VsZWN0U2ltcGxlU2VydmljZS5nZXRMb2FkaW5nVGV4dCgpO1xuICAgIHRoaXMuY2xlYXJBbGxUZXh0ID0gdGhpcy5uZ1NlbGVjdFNpbXBsZVNlcnZpY2UuZ2V0Q2xlYXJBbGxUZXh0KCk7XG4gICAgdGhpcy5tYXJrRmlyc3QgPSB0aGlzLm5nU2VsZWN0U2ltcGxlU2VydmljZS5nZXRNYXJrRmlyc3QoKTtcbiAgICB0aGlzLmNsZWFyYWJsZSA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldENsZWFyYWJsZSgpO1xuICAgIHRoaXMuY2xlYXJPbkJhY2tzcGFjZSA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldENsZWFyT25CYWNrc3BhY2UoKTtcbiAgICB0aGlzLnZpcnR1YWxTY3JvbGwgPSB0aGlzLm5nU2VsZWN0U2ltcGxlU2VydmljZS5nZXRWaXJ0dWFsU2Nyb2xsKCk7XG4gICAgdGhpcy5vcGVuT25FbnRlciA9IHRoaXMubmdTZWxlY3RTaW1wbGVTZXJ2aWNlLmdldE9wZW5PbkVudGVyKCk7XG4gICAgdGhpcy5ub3RGb3VuZFRleHQgPSB0aGlzLm5nU2VsZWN0U2ltcGxlU2VydmljZS5nZXROb3RGb3VuZFRleHQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95ICgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSlcbiAgfVxuXG4gIG5nT25DaGFuZ2VzIChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbXCJpdGVtc1wiXSkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2FyZ2EoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbXCJzdWJtaXR0ZWRcIl0pIHtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2xzICE9PSB1bmRlZmluZWQgJiYgY2hhbmdlc1tcInN1Ym1pdHRlZFwiXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy5jb250cm9scy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbXCJzdGFydHNXaXRoXCJdKSB7XG4gICAgICB0aGlzLnNlYXJjaEZuID0gdGhpcy5zdGFydHNXaXRoXG4gICAgICA/ICh0ZXJtOiBzdHJpbmcsIGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBsYWJlbCA9IChpdGVtPy5sYWJlbCA/PyBcIlwiKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBsYWJlbC5zdGFydHNXaXRoKHRlcm0udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICAgIDogbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjYXJnYSAoKSB7XG4gICAgdGhpcy5hbGxJdGVtcyA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLnBpcGUoc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSB9KSk7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLml0ZW1zLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH0pO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIGlmICh0aGlzLl92YWx1ZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmFsbEl0ZW1zLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICF0aGlzLnZhbGlkYXRlVXRpbC5pc1VuZGVmaW5lZE9yTnVsbCh0aGlzLmdldE9iamVjdChlbGVtZW50LCB0aGlzLnNlYXJjaEJ5KSkgJiZcbiAgICAgICAgICB0aGlzLmdldE9iamVjdChlbGVtZW50LCB0aGlzLnNlYXJjaEJ5KSA9PT0gdGhpcy5fdmFsdWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fdmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5tYXJrRmlyc3RJdGVtICYmIHRoaXMuYWxsSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuYWxsSXRlbXNbMF07XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpO1xuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1hcmtXaGVuSGF2ZU9uZUl0ZW0gJiYgdGhpcy5hbGxJdGVtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLmFsbEl0ZW1zWzBdO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQgKCkgeyB9XG5cbiAgZ2V0T2JqZWN0IChvYmo6IGFueSwga2V5OiBhbnkpIHtcbiAgICByZXR1cm4ga2V5LnNwbGl0KFwiLlwiKS5yZWR1Y2UoZnVuY3Rpb24gKG86IGFueSwgeDogYW55KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG8gPT0gXCJ1bmRlZmluZWRcIiB8fCBvID09PSBudWxsID8gbyA6IG9beF07XG4gICAgfSwgb2JqKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUgKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMubG9hZGluZykge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5hbGxJdGVtcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMudmFsaWRhdGVVdGlsLmlzVW5kZWZpbmVkT3JOdWxsKHRoaXMuZ2V0T2JqZWN0KGVsZW1lbnQsIHRoaXMuc2VhcmNoQnkpKSAmJlxuICAgICAgICAgICAgdGhpcy5nZXRPYmplY3QoZWxlbWVudCwgdGhpcy5zZWFyY2hCeSkgPT09IHRoaXMuX3ZhbHVlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlKCk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvL3RoaXMuc2VhcmNoRWxlbWVudCh2YWx1ZSk7XG4gICAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpO1xuICAgIH1cbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlIChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkIChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlIChpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICB2YWxpZGF0ZSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IGFueSB7XG4gICAgdGhpcy5jb250cm9scyA9IGNvbnRyb2w7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPyhmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBldmVudENoYW5nZSAoZTogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZShlKTtcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpO1xuICAgIHRoaXMuY2hhbmdlLmVtaXQoZSk7XG4gIH1cblxuICBldmVudEJsdXIgKGU6IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UoKTtcbiAgICB0aGlzLmJsdXIuZW1pdChlKTtcbiAgfVxuXG4gIGV2ZW50Rm9jdXMgKGU6IGFueSkge1xuICAgIC8vIHRoaXMubmdTZWxlY3RTaW1wbGUuZm9jdXMoKTtcbiAgICBpZiAodGhpcy5vcGVuV2hlbkZvY3VzKSB7XG4gICAgICB0aGlzLm5nU2VsZWN0U2ltcGxlLm9wZW4oKTtcbiAgICB9XG4gICAgdGhpcy5vbmZvY3VzLmVtaXQoZSk7XG4gIH1cblxuICBldmVudFNlYXJjaCAoZTogYW55KSB7XG4gICAgdGhpcy5vbnNlYXJjaC5lbWl0KGUpO1xuICB9XG5cbiAgZW50ZXJLZXlVcCAoKSB7XG4gICAgdGhpcy5uZ1NlbGVjdFNpbXBsZS5jbG9zZSgpO1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgbGV0IHZhbGlkYXRvciA9IHRoaXMuc2hhcmVkQ29tcG9uZW50c1V0aWwuc3RvcEJ5VmFsaWRhdG9yKHRoaXMuY29udHJvbHMsIHRoaXMudmFsaWRhdG9yQWxlcnQsIHRoaXMubGFiZWwpO1xuICAgICAgaWYgKHZhbGlkYXRvci5lcnJvcikge1xuICAgICAgICB0aGlzLm1lc3NhZ2VVdGlsU2VydmljZS5nZXRNZXNzYWdlRXJyb3IoXCIwMDAwNDZcIiwgXCJFcnJvclwiLCB2YWxpZGF0b3IubWVzc2FnZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMubmV4dCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm5leHQuZGlzYWJsZWQgfHwgdGhpcy5uZXh0LnJlYWRvbmx5KSB7XG4gICAgICAgIGlmICh0aGlzLm5leHRJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5uZXh0SXNEaXNhYmxlLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubmV4dC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5uZXh0SXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25OZXh0LmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZWZ0S2V5VXAgKCkge1xuICAgIHRoaXMubmdTZWxlY3RTaW1wbGUuY2xvc2UoKTtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGxldCB2YWxpZGF0b3IgPSB0aGlzLnNoYXJlZENvbXBvbmVudHNVdGlsLnN0b3BCeVZhbGlkYXRvcih0aGlzLmNvbnRyb2xzLCB0aGlzLnZhbGlkYXRvckFsZXJ0LCB0aGlzLmxhYmVsKTtcbiAgICAgIGlmICh2YWxpZGF0b3IuZXJyb3IpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlVXRpbFNlcnZpY2UuZ2V0TWVzc2FnZUVycm9yKFwiMDAwMDQ2XCIsIFwiRXJyb3JcIiwgdmFsaWRhdG9yLm1lc3NhZ2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmJhY2sgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5iYWNrLmRpc2FibGVkIHx8IHRoaXMuYmFjay5yZWFkb25seSkge1xuICAgICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuYmFja0lzRGlzYWJsZS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJhY2suZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuYmFja0lzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9uQmFjay5lbWl0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xlYXIgKCkge1xuICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpO1xuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICB9XG5cbiAgb25SZWZyZXNoICgpIHtcbiAgICB0aGlzLm9ucmVmcmVzaC5lbWl0KCk7XG4gIH1cblxuICBhc3luYyBvblNlYXJjaCAoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEaWFsb2dBZ0dyaWRTZWFyY2hDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiB0aGlzLnNlYXJjaFBhcmFtcy53aWR0aCxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBsZXQgcm93ZGF0YSA9IGF3YWl0IHRoaXMuc2VhcmNoUGFyYW1zLnJvd0RhdGEudG9Qcm9taXNlKCk7XG4gICAgbGV0IGluc3RhbmNlID0gZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIGluc3RhbmNlLnRpdHRsZSA9IHRoaXMuc2VhcmNoUGFyYW1zLnRpdGxlID09PSBcIlwiID8gdGhpcy5sYWJlbCA6IHRoaXMuc2VhcmNoUGFyYW1zLnRpdGxlO1xuICAgIGluc3RhbmNlLnJvd0RhdGEgPSByb3dkYXRhICYmIHJvd2RhdGEubGVuZ3RoIDwgMSA/IHRoaXMuaXRlbXMgOiB0aGlzLnNlYXJjaFBhcmFtcy5yb3dEYXRhO1xuICAgIGluc3RhbmNlLmNvbHVtbkRlZnMgPSB0aGlzLnNlYXJjaFBhcmFtcy5jb2x1bW5EZWZzO1xuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzcDogYW55W10pID0+IHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgIGlmIChyZXNwLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSByZXNwWzBdO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmMUtleVVwICgpIHtcbiAgICBpZiAoIXRoaXMuYnRuU2VhcmNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubmdTZWxlY3RTaW1wbGUuY2xvc2UoKTtcbiAgICAvL3RoaXMuYnRuU2VhcmNoLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLm9uU2VhcmNoKCk7XG4gIH1cbn1cbiIsIjxsYWJlbCAqbmdJZj1cImxhYmVsICE9IG51bGwgJiYgbGFiZWwgIT0gJycgJiYgc2hvd0xhYmVsXCIgY2xhc3M9XCJkLWZsZXggc3VtYXgtbGFiZWwgbWItMCBwLTBcIj5cbiAgPHNwYW4gKm5nSWY9XCIhdGVtcGxhdGVMYWJlbDsgZWxzZSB0ZW1wbGF0ZUxhYmVsXCIgW3RpdGxlXT1cImxhYmVsXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpc1wiPlxuICAgIHt7IGxhYmVsIH19XG4gIDwvc3Bhbj5cbiAgPHNwYW4gKm5nSWY9XCJyZXF1aXJlZFwiIFtjbGFzcy50ZXh0LWRhbmdlcl09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGxcIj4gKjwvc3Bhbj5cbiAgPHNwYW4gKm5nSWY9XCJsYWJlbEluZm9cIj5cbiAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB0ZXh0LWluZm8gbXMtMlwiIFttYXRUb29sdGlwXT1cInRleHRMYWJlbEluZm9cIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+PC9pPlxuICA8L3NwYW4+XG48L2xhYmVsPlxuXG48ZGl2XG4gIFtjbGFzcy5pbnB1dC1pY29uXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxuICBbY2xhc3MucmlnaHRdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZFwiXG4gIFtjbGFzcy5yZWZyZXNoXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWQgJiYgcmVmcmVzaFwiXG4gIFtjbGFzcy5zZWFyY2hdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZCAmJiBzZWFyY2hcIj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIlxuICAgICAgW2NsYXNzLm5nLXNlbGVjdC1jb250YWluZXItZnVsbGJ1dHRvbnNdPVwic2VhcmNoICYmIHJlZnJlc2ggJiYgcmVkaXJlY3RcIlxuICAgICAgW2NsYXNzLmFwcC1uZy1zZWxlYy1jb250YWluZXJdPVwic2VhcmNoIHx8IHJlZnJlc2hcIlxuICAgICAgW2NsYXNzLnctMTAwXT1cIiFzZWFyY2ggJiYgIXJlZnJlc2hcIlxuICAgICAgc3R5bGU9XCJmbGV4OiAxOyBtaW4td2lkdGg6IDA7XCI+XG4gICAgICA8bmctc2VsZWN0XG4gICAgICAgICNuZ1NlbGVjdFNpbXBsZVxuICAgICAgICBbY2xhc3NdPVwic2VhcmNoIHx8IHJlZnJlc2ggPyAnYXBwLW5nLXNlbGVjdCBuZy1zZWxlY3QtZml4ZWQtd2lkdGgnIDogJ3ctMTAwIG5nLXNlbGVjdC1maXhlZC13aWR0aCdcIlxuICAgICAgICBbY2xhc3MuYWN0aW9uXT1cInNlYXJjaCAmJiByZWZyZXNoXCJcbiAgICAgICAgW2l0ZW1zXT1cIml0ZW1zIHwgYXN5bmNcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIl92YWx1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIChjaGFuZ2UpPVwiZXZlbnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cImV2ZW50Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzKT1cImV2ZW50Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIChzZWFyY2gpPVwiZXZlbnRTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIFttYXJrRmlyc3RdPVwibWFya0ZpcnN0XCJcbiAgICAgICAgW2NsZWFyYWJsZV09XCIhcmVxdWlyZWQgJiYgY2xlYXJhYmxlXCJcbiAgICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICAgIFtpbnB1dEF0dHJzXT1cInsgYXV0b2NvbXBsZXRlOiBhdXRvY29tcGxldGUgfVwiXG4gICAgICAgIFtjbGVhck9uQmFja3NwYWNlXT1cImNsZWFyT25CYWNrc3BhY2VcIlxuICAgICAgICBbb3Blbk9uRW50ZXJdPVwib3Blbk9uRW50ZXJcIlxuICAgICAgICAoa2V5ZG93bi5kZWxldGUpPVwiIXJlcXVpcmVkICYmIGNsZWFyYWJsZSA/IGNsZWFyKCkgOiAnJ1wiXG4gICAgICAgIChjbGVhcik9XCJjbGVhcigpXCJcbiAgICAgICAgKGtleXVwLkYxKT1cImYxS2V5VXAoKVwiXG4gICAgICAgIFtub3RGb3VuZFRleHRdPVwibm90Rm91bmRUZXh0XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY2Npb25hclwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJlbnRlcktleVVwKClcIlxuICAgICAgICBbY2xlYXJBbGxUZXh0XT1cImNsZWFyQWxsVGV4dFwiXG4gICAgICAgIFtzZWFyY2hhYmxlXT1cInNlYXJjaGFibGVcIlxuICAgICAgICAoa2V5dXAuQXJyb3dMZWZ0KT1cImxlZnRLZXlVcCgpXCJcbiAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICAgIFtsb2FkaW5nVGV4dF09XCJsb2FkaW5nVGV4dFwiXG4gICAgICAgIFtzZWFyY2hGbl09XCJzZWFyY2hGblwiXG4gICAgICAgIFtjbGFzcy5uZy1zZWxlY3QtaW52YWxpZF09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGwgJiYgKGNvbnRyb2xzPy5kaXJ0eSB8fCBjb250cm9scz8udG91Y2hlZCkgJiYgc3VibWl0dGVkXCJcbiAgICAgICAgW2NsYXNzLm5nLXNlbGVjdC10b3VjaGVkXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxuICAgICAgICBbY2xhc3MudXBwZXJDYXNlXT1cInVwcGVyQ2FzZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInNldE5nQ2xhc3NcIlxuICAgICAgICBzdHlsZT1cIm1heC13aWR0aDogMTAwJTsgd2lkdGg6IDEwMCU7XCI+XG5cbiAgICAgICAgPCEtLSBPUENJT05FUyBERSBMSVNUQURPIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgICAgICAgIDxzcGFuIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIHRpdGxlPVwie3sgaXRlbS5sYWJlbCB9fVwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXNlbGVjdD5cblxuICAgICAgPCEtLSB0b29sdGlwLW1lc3NhZ2UgZXMgZWwgaWNvbm8gZGUgZXJyb3IgLS0+XG4gICAgICA8dG9vbHRpcC1tZXNzYWdlXG4gICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgIFtjb250cm9sc109XCJjb250cm9sc1wiXG4gICAgICAgIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxuICAgICAgICBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiXG4gICAgICAgIFt0b29sdGlwTWVzc2FnZV09XCJ0b29sdGlwTWVzc2FnZVwiPjwvdG9vbHRpcC1tZXNzYWdlPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2ggJiYgcmVmcmVzaCAmJiByZWRpcmVjdDsgZWxzZSB0ZW1wbGF0ZUFjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFwcC1uZy1zZWxlY3QtYWN0aW9uIGJkLWhpZ2hsaWdoXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAjYnRuU2VhcmNoXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBwLTAgcm91bmRlZC0wIGgtMTAwXCJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dMZWZ0KT1cIm5nU2VsZWN0U2ltcGxlLmZvY3VzKClcIlxuICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyBib3JkZXItY29sb3I6IG9yYW5nZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoKClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaCB0ZXh0LXdoaXRlIHB4LTFcIiBbbWF0VG9vbHRpcF09XCInQnVzY2FyJ1wiIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwicmVmcmVzaFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5IHx8IGlzUmVmcmVzaERpc2FibGVkXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4taW5mbyBwLTAgcm91bmRlZC0wIGgtMTAwXCJcbiAgICAgICAgICAoY2xpY2spPVwib25SZWZyZXNoKClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXJlZnJlc2ggdGV4dC13aGl0ZSBweC0xXCIgW21hdFRvb2x0aXBdPVwiJ1JlZnJlc2NhcidcIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIHAtMCByb3VuZGVkLTAgaC0xMDBcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuRW5sYWNlKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seSB8fCBpc1JlZGlyZWN0RGlzYWJsZWRcIj5cbiAgICAgICAgICA8ZW0gY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXJlY3RhbmdsZS1saXN0IHRleHQtd2hpdGUgcHgtMVwiIFttYXRUb29sdGlwXT1cInRpdGxlUmVkaXJlY3QhXCIgbWF0VG9vbHRpcENsYXNzPVwiYmctc3VjY2Vzc1wiPiA8L2VtPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZUFjdGlvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhcHAtbmctc2VsZWN0LWJ1dHRvbiBiZC1oaWdobGlnaHRcIiAqbmdJZj1cInNlYXJjaFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgI2J0blNlYXJjaFxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcC0wIHJvdW5kZWQtMCBoLTEwMFwiXG4gICAgICAgICAgKGtleXVwLkFycm93TGVmdCk9XCJuZ1NlbGVjdFNpbXBsZS5mb2N1cygpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2goKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoIHRleHQtd2hpdGUgcHgtMVwiIFttYXRUb29sdGlwXT1cIidCdXNjYXInXCIgbWF0VG9vbHRpcENsYXNzPVwiYmctc3VjY2Vzc1wiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhcHAtbmctc2VsZWN0LWJ1dHRvbiBiZC1oaWdobGlnaHRcIiAqbmdJZj1cInJlZnJlc2hcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwicmVmcmVzaFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5IHx8IGlzUmVmcmVzaERpc2FibGVkXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4taW5mbyBwLTAgcm91bmRlZC0wIGgtMTAwXCJcbiAgICAgICAgICAoY2xpY2spPVwib25SZWZyZXNoKClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXJlZnJlc2ggdGV4dC13aGl0ZSBweC0xXCIgW21hdFRvb2x0aXBdPVwiJ1JlZnJlc2NhcidcIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFwcC1uZy1zZWxlY3QtYnV0dG9uIGJkLWhpZ2hsaWdodFwiICpuZ0lmPVwicmVkaXJlY3RcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIHAtMCByb3VuZGVkLTAgaC0xMDBcIlxuICAgICAgICAgIHN0eWxlPVwicGFkZGluZy10b3A6IDNweDsgcGFkZGluZy1ib3R0b206IDdweDsgYm9yZGVyLXJhZGl1czogMHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkVubGFjZSgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgaXNSZWRpcmVjdERpc2FibGVkXCI+XG4gICAgICAgICAgPGVtIGNsYXNzPVwiZmEtcmVndWxhciBmYS1yZWN0YW5nbGUtbGlzdCB0ZXh0LXdoaXRlIHB4LTFcIiBbbWF0VG9vbHRpcF09XCJ0aXRsZVJlZGlyZWN0IVwiIG1hdFRvb2x0aXBDbGFzcz1cImJnLXN1Y2Nlc3NcIj4gPC9lbT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21vcmUtYnV0dG9uc11cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gZXJyb3ItbWVzc2FnZSBlcyBlbCBtYW5zYWplIHF1ZSBhcGFyZWNlIGFiYWpvIGRlbCBjb21wb25lbnRlIC0tPlxuPGVycm9yLW1lc3NhZ2VcbiAgW2xhYmVsXT1cImxhYmVsXCJcbiAgW2NvbnRyb2xzXT1cImNvbnRyb2xzXCJcbiAgW3ZhbGlkYXRvck1lc3NhZ2VdPVwidmFsaWRhdG9yTWVzc2FnZVwiXG4gIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCJcbiAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCI+PC9lcnJvci1tZXNzYWdlPlxuIl19
|
|
@@ -132,7 +132,7 @@ export class ContainerSharedComponent {
|
|
|
132
132
|
this.params.api?.stopEditing();
|
|
133
133
|
}
|
|
134
134
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ContainerSharedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ContainerSharedComponent, selector: "container-shared-component", viewQueries: [{ propertyName: "control", first: true, predicate: ["control"], descendants: true }], ngImport: i0, template: "<div [ngStyle]=\"{'width': width}\" class=\"position-relative row\">\n\t<div *ngIf=\"typeControl==='ng-select-simple'\" class=\"col-12\">\n\t\t<ng-select-simple\n\t\t\t[showLabel]=\"false\"\n\t\t\t[label]=\"label\"\n\t\t\t[required]=\"required\"\n\t\t\t[clearable]=\"clearable\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\t[tooltipMessage]=\"true\"\n\t\t\t[validatorMessage]=\"false\"\n\t\t\t#control\n\t\t\t[items]=\"items\">\n\t\t</ng-select-simple>\n\t</div>\n\t<div *ngIf=\"typeControl==='input-text'\" class=\"col-12\">\n\t\t<input-text\n\t\t\t(blur)=\"onFocusOut()\"\n\t\t\t[showLabel]=\"false\"\n\t\t\t[label]=\"label\"\n\t\t\t[required]=\"required\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\t[inputMask]=\"inputMask\"\n\t\t\t[textRight]=\"textRight\"\n\t\t\t[tooltipMessage]=\"true\"\n\t\t\t[validatorMessage]=\"false\"\n\t\t\t(keypress)=\"detec($event)\"\n\t\t\t#control>\n\t\t</input-text>\n\t</div>\n\t<div *ngIf=\"typeControl==='input-number'\" class=\"col-12\">\n\t\t<input-number\n\t\t\t(blur)=\"onFocusOut()\"\n\t\t\t[formatCero]=\"formatCero\"\n\t\t\t[maxLength]=\"maxLength\"\n\t\t\t[showLabel]=\"false\"\n\t\t\t[decimals]=\"decimals\"\n\t\t\t[label]=\"label\"\n\t\t\t[tooltipMessage]=\"true\"\n\t\t\t[validatorMessage]=\"false\"\n\t\t\t[required]=\"required\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\t#control>\n\t\t</input-number>\n\t</div>\n\t<div *ngIf=\"typeControl==='date-picker'\" class=\"col-12\">\n\t\t<date-picker\n\t\t\t[showLabel]=\"false\"\n\t\t\t[label]=\"label\"\n\t\t\t[required]=\"required\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\t[tooltipMessage]=\"true\"\n\t\t\t[validatorMessage]=\"false\"\n\t\t\t#control>\n\t\t</date-picker>\n\t</div>\n\t<div *ngIf=\"typeControl==='date-time-picker-editable'\" class=\"col-12\">\n\t\t<date-time-picker-editable\n\t\t\t[showLabel]=\"false\"\n\t\t\t[label]=\"label\"\n\t\t\t[required]=\"required\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\t[tooltipMessage]=\"true\"\n\t\t\t[validatorMessage]=\"false\"\n\t\t\t#control>\n\t\t\t></date-time-picker-editable\n\t\t>\n\t</div>\n</div>\n", styles: [".ag-theme-balham .ag-cell.ag-cell-inline-editing{height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.NgSelectSimpleComponent, selector: "ng-select-simple", inputs: ["showLabel", "label", "autocomplete", "next", "nextIsDisable", "back", "backIsDisable", "required", "disabled", "readonly", "validatorMessage", "tooltipMessage", "openWhenFocus", "searchBy", "markFirstItem", "markWhenHaveOneItem", "submitted", "setNgClass", "searchable", "validatorAlert", "upperCase", "templateLabel", "appendTo", "items", "loading", "loadingText", "clearAllText", "notFoundText", "markFirst", "clearable", "clearOnBackspace", "virtualScroll", "openOnEnter", "refresh", "isRefreshDisabled", "search", "redirect", "searchParams", "labelInfo", "textLabelInfo", "urlRedirect", "titleRedirect", "isRedirectDisabled"], outputs: ["onNext", "onBack", "change", "blur", "onfocus", "onrefresh", "onsearch"] }, { kind: "component", type: i4.InputTextComponent, selector: "input-text", inputs: ["format", "type", "showLabel", "label", "btnEnable", "autocomplete", "bold", "inputMask", "showMaskTyped", "next", "nextIsDisable", "back", "backIsDisable", "required", "textRight", "disabled", "readonly", "validatorMessage", "tooltipMessage", "maxLength", "submitted", "validatorAlert", "setNgClass", "patterns", "placeholder", "labelInfo", "textLabelInfo", "controlCharClearReplace", "replaceRegex", "clearRegex"], outputs: ["onNext", "onBack", "change", "blur", "onfocus", "onchange", "onfocusout"] }, { kind: "component", type: i5.InputNumberComponent, selector: "input-number", inputs: ["showLabel", "label", "btnEnable", "autocomplete", "bold", "decimals", "formatCero", "maxLength", "next", "nextIsDisable", "back", "backIsDisable", "required", "disabled", "readonly", "validatorMessage", "tooltipMessage", "submitted", "labelInfo", "textLabelInfo", "validatorAlert", "setNgClass", "placeholder", "allowNegativeNumbers", "disableThousandSeparator"], outputs: ["onNext", "onBack", "change", "onchange", "blur", "onfocus", "onfocusout"] }, { kind: "component", type: i6.DatePickerComponent, selector: "date-picker", inputs: ["showLabel", "label", "autocomplete", "next", "nextIsDisable", "back", "backIsDisable", "required", "noAutoCompleteNull", "readonly", "validatorMessage", "tooltipMessage", "validatorAlert", "submitted", "labelInfo", "textLabelInfo", "minDate", "maxDate", "invalid", "focusInitial", "disabled", "restrictInputLength"], outputs: ["onNext", "onBack", "input", "onchange", "blur"] }, { kind: "component", type: i7.DateTimePickerEditableComponent, selector: "date-time-picker-editable", inputs: ["label", "showLabel", "readonly", "required", "validatorMessage", "tooltipMessage", "submitted", "format", "next", "nextIsDisable", "labelInfo", "textLabelInfo", "back", "backIsDisable", "openWhenFocus", "goNextWhenSelect", "clearable", "autoCompleteHours", "autoComplete", "disabled"], outputs: ["onNext", "onBack"] }] }); }
|
|
135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ContainerSharedComponent, selector: "container-shared-component", viewQueries: [{ propertyName: "control", first: true, predicate: ["control"], descendants: true }], ngImport: i0, template: "<div [ngStyle]=\"{'width': width}\" class=\"position-relative row\">\n\t<div *ngIf=\"typeControl==='ng-select-simple'\" class=\"col-12\">\n\t\t<ng-select-simple\n\t\t\t[showLabel]=\"false\"\n\t\t\t[label]=\"label\"\n\t\t\t[required]=\"required\"\n\t\t\t[clearable]=\"clearable\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\t[tooltipMessage]=\"true\"\n\t\t\t[validatorMessage]=\"false\"\n\t\t\t#control\n\t\t\t[items]=\"items\">\n\t\t</ng-select-simple>\n\t</div>\n\t<div *ngIf=\"typeControl==='input-text'\" class=\"col-12\">\n\t\t<input-text\n\t\t\t(blur)=\"onFocusOut()\"\n\t\t\t[showLabel]=\"false\"\n\t\t\t[label]=\"label\"\n\t\t\t[required]=\"required\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\t[inputMask]=\"inputMask\"\n\t\t\t[textRight]=\"textRight\"\n\t\t\t[tooltipMessage]=\"true\"\n\t\t\t[validatorMessage]=\"false\"\n\t\t\t(keypress)=\"detec($event)\"\n\t\t\t#control>\n\t\t</input-text>\n\t</div>\n\t<div *ngIf=\"typeControl==='input-number'\" class=\"col-12\">\n\t\t<input-number\n\t\t\t(blur)=\"onFocusOut()\"\n\t\t\t[formatCero]=\"formatCero\"\n\t\t\t[maxLength]=\"maxLength\"\n\t\t\t[showLabel]=\"false\"\n\t\t\t[decimals]=\"decimals\"\n\t\t\t[label]=\"label\"\n\t\t\t[tooltipMessage]=\"true\"\n\t\t\t[validatorMessage]=\"false\"\n\t\t\t[required]=\"required\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\t#control>\n\t\t</input-number>\n\t</div>\n\t<div *ngIf=\"typeControl==='date-picker'\" class=\"col-12\">\n\t\t<date-picker\n\t\t\t[showLabel]=\"false\"\n\t\t\t[label]=\"label\"\n\t\t\t[required]=\"required\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\t[tooltipMessage]=\"true\"\n\t\t\t[validatorMessage]=\"false\"\n\t\t\t#control>\n\t\t</date-picker>\n\t</div>\n\t<div *ngIf=\"typeControl==='date-time-picker-editable'\" class=\"col-12\">\n\t\t<date-time-picker-editable\n\t\t\t[showLabel]=\"false\"\n\t\t\t[label]=\"label\"\n\t\t\t[required]=\"required\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\t[tooltipMessage]=\"true\"\n\t\t\t[validatorMessage]=\"false\"\n\t\t\t#control>\n\t\t\t></date-time-picker-editable\n\t\t>\n\t</div>\n</div>\n", styles: [".ag-theme-balham .ag-cell.ag-cell-inline-editing{height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.NgSelectSimpleComponent, selector: "ng-select-simple", inputs: ["showLabel", "label", "autocomplete", "next", "nextIsDisable", "back", "backIsDisable", "required", "disabled", "readonly", "validatorMessage", "tooltipMessage", "openWhenFocus", "searchBy", "markFirstItem", "markWhenHaveOneItem", "submitted", "setNgClass", "searchable", "validatorAlert", "upperCase", "templateLabel", "appendTo", "items", "loading", "loadingText", "clearAllText", "notFoundText", "markFirst", "clearable", "clearOnBackspace", "virtualScroll", "openOnEnter", "refresh", "isRefreshDisabled", "search", "redirect", "searchParams", "labelInfo", "textLabelInfo", "urlRedirect", "titleRedirect", "isRedirectDisabled", "startsWith"], outputs: ["onNext", "onBack", "change", "blur", "onfocus", "onrefresh", "onsearch"] }, { kind: "component", type: i4.InputTextComponent, selector: "input-text", inputs: ["format", "type", "showLabel", "label", "btnEnable", "autocomplete", "bold", "inputMask", "showMaskTyped", "next", "nextIsDisable", "back", "backIsDisable", "required", "textRight", "disabled", "readonly", "validatorMessage", "tooltipMessage", "maxLength", "submitted", "validatorAlert", "setNgClass", "patterns", "placeholder", "labelInfo", "textLabelInfo", "controlCharClearReplace", "replaceRegex", "clearRegex"], outputs: ["onNext", "onBack", "change", "blur", "onfocus", "onchange", "onfocusout"] }, { kind: "component", type: i5.InputNumberComponent, selector: "input-number", inputs: ["showLabel", "label", "btnEnable", "autocomplete", "bold", "decimals", "formatCero", "maxLength", "next", "nextIsDisable", "back", "backIsDisable", "required", "disabled", "readonly", "validatorMessage", "tooltipMessage", "submitted", "labelInfo", "textLabelInfo", "validatorAlert", "setNgClass", "placeholder", "allowNegativeNumbers", "disableThousandSeparator"], outputs: ["onNext", "onBack", "change", "onchange", "blur", "onfocus", "onfocusout"] }, { kind: "component", type: i6.DatePickerComponent, selector: "date-picker", inputs: ["showLabel", "label", "autocomplete", "next", "nextIsDisable", "back", "backIsDisable", "required", "noAutoCompleteNull", "readonly", "validatorMessage", "tooltipMessage", "validatorAlert", "submitted", "labelInfo", "textLabelInfo", "minDate", "maxDate", "invalid", "focusInitial", "disabled", "restrictInputLength"], outputs: ["onNext", "onBack", "input", "onchange", "blur"] }, { kind: "component", type: i7.DateTimePickerEditableComponent, selector: "date-time-picker-editable", inputs: ["label", "showLabel", "readonly", "required", "validatorMessage", "tooltipMessage", "submitted", "format", "next", "nextIsDisable", "labelInfo", "textLabelInfo", "back", "backIsDisable", "openWhenFocus", "goNextWhenSelect", "clearable", "autoCompleteHours", "autoComplete", "disabled"], outputs: ["onNext", "onBack"] }] }); }
|
|
136
136
|
}
|
|
137
137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ContainerSharedComponent, decorators: [{
|
|
138
138
|
type: Component,
|
package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-select/sc-cell-render-select.component.mjs
CHANGED
|
@@ -49,7 +49,7 @@ export class ScCellRenderSelectComponent {
|
|
|
49
49
|
[clearable]="false"
|
|
50
50
|
>
|
|
51
51
|
</ng-select-simple>
|
|
52
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i2.NgSelectSimpleComponent, selector: "ng-select-simple", inputs: ["showLabel", "label", "autocomplete", "next", "nextIsDisable", "back", "backIsDisable", "required", "disabled", "readonly", "validatorMessage", "tooltipMessage", "openWhenFocus", "searchBy", "markFirstItem", "markWhenHaveOneItem", "submitted", "setNgClass", "searchable", "validatorAlert", "upperCase", "templateLabel", "appendTo", "items", "loading", "loadingText", "clearAllText", "notFoundText", "markFirst", "clearable", "clearOnBackspace", "virtualScroll", "openOnEnter", "refresh", "isRefreshDisabled", "search", "redirect", "searchParams", "labelInfo", "textLabelInfo", "urlRedirect", "titleRedirect", "isRedirectDisabled"], outputs: ["onNext", "onBack", "change", "blur", "onfocus", "onrefresh", "onsearch"] }] }); }
|
|
52
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i2.NgSelectSimpleComponent, selector: "ng-select-simple", inputs: ["showLabel", "label", "autocomplete", "next", "nextIsDisable", "back", "backIsDisable", "required", "disabled", "readonly", "validatorMessage", "tooltipMessage", "openWhenFocus", "searchBy", "markFirstItem", "markWhenHaveOneItem", "submitted", "setNgClass", "searchable", "validatorAlert", "upperCase", "templateLabel", "appendTo", "items", "loading", "loadingText", "clearAllText", "notFoundText", "markFirst", "clearable", "clearOnBackspace", "virtualScroll", "openOnEnter", "refresh", "isRefreshDisabled", "search", "redirect", "searchParams", "labelInfo", "textLabelInfo", "urlRedirect", "titleRedirect", "isRedirectDisabled", "startsWith"], outputs: ["onNext", "onBack", "change", "blur", "onfocus", "onrefresh", "onsearch"] }] }); }
|
|
53
53
|
}
|
|
54
54
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ScCellRenderSelectComponent, decorators: [{
|
|
55
55
|
type: Component,
|
|
@@ -226,7 +226,7 @@ export class SmxDashCardLegendChartSelectComponent {
|
|
|
226
226
|
};
|
|
227
227
|
}
|
|
228
228
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmxDashCardLegendChartSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
229
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmxDashCardLegendChartSelectComponent, isStandalone: true, selector: "smx-dash-card-legend-chart-select", inputs: { title: "title", showTitle: "showTitle", titleStyle: "titleStyle", titleHAlign: "titleHAlign", contentVAlign: "contentVAlign", contentHAlign: "contentHAlign", chartType: "chartType", legendVisible: "legendVisible", labels: "labels", datasets: "datasets", indexAxis: "indexAxis", tension: "tension", chartOptions: "chartOptions", controlsSelect: "controlsSelect", formatters: "formatters", i18n: "i18n", chartWidth: "chartWidth", chartHeight: "chartHeight", numberFormat: "numberFormat" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"smx-card-legend-chart\" [class.smx-auto-mode]=\"chartWidth === 'auto' || chartHeight === 'auto'\">\n <div class=\"smx-card-header\" *ngIf=\"showTitle\" [ngStyle]=\"titleStyle\" [style.text-align]=\"titleHAlign\">{{ title }}</div>\n <div\n class=\"smx-chart-content\"\n [style.justify-content]=\"\n chartWidth === 'auto' || chartHeight === 'auto'\n ? null\n : contentVAlign === 'top'\n ? 'flex-start'\n : contentVAlign === 'bottom'\n ? 'flex-end'\n : 'center'\n \"\n [style.align-items]=\"\n chartWidth === 'auto' || chartHeight === 'auto'\n ? null\n : contentHAlign === 'left'\n ? 'flex-start'\n : contentHAlign === 'right'\n ? 'flex-end'\n : 'center'\n \">\n <div class=\"smx-card-body\">\n <div class=\"controls\" *ngIf=\"controlsSelect?.length\">\n <div class=\"select\">\n <ng-select-simple\n [showLabel]=\"false\"\n [label]=\"'Vista'\"\n [items]=\"selectItems$\"\n [loading]=\"false\"\n [submitted]=\"false\"\n [markFirst]=\"true\"\n [markFirstItem]=\"true\"\n [searchable]=\"false\"\n [clearable]=\"false\"\n (keyup)=\"onEnter()\"\n (keydown)=\"onEnter()\"\n (keyup.enter)=\"onEnter()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onSelectChange($any($event))\">\n </ng-select-simple>\n </div>\n </div>\n <div class=\"graphic\" [class.smx-auto-chart]=\"chartWidth === 'auto' || chartHeight === 'auto'\">\n <canvas\n #canvas\n [attr.width]=\"chartWidth !== 'auto' ? chartWidth : null\"\n [attr.height]=\"chartHeight !== 'auto' ? chartHeight : null\">\n </canvas>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-height:0}.smx-card-legend-chart{display:flex;flex-direction:column;flex:1;min-height:0}.smx-card-header{flex-shrink:0;padding:8px 12px;font-weight:600}.smx-chart-content{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:0;overflow:hidden}.smx-card-body{display:flex;flex-direction:column;padding:8px 12px;min-height:0}.graphic{display:flex;align-items:center;justify-content:center;overflow:hidden}.graphic canvas{max-width:100%;height:auto}.controls{display:flex;align-items:center;gap:12px;margin-bottom:8px;flex-wrap:wrap}.controls .select{width:100%;max-width:180px}.select-buttons{display:flex;gap:8px}.btn{border:1px solid #cbd5e1;background:#fff;padding:6px 10px;border-radius:6px;cursor:pointer}.btn.active{background:#2563eb;color:#fff;border-color:#2563eb}.smx-auto-mode .smx-chart-content{justify-content:flex-start;align-items:stretch}.smx-auto-mode .smx-card-body{flex:1}.graphic.smx-auto-chart{flex:1;position:relative;overflow:hidden;width:100%;min-height:200px}.graphic.smx-auto-chart canvas{position:absolute;inset:0;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: NgSelectSimpleModule }, { kind: "component", type: i2.NgSelectSimpleComponent, selector: "ng-select-simple", inputs: ["showLabel", "label", "autocomplete", "next", "nextIsDisable", "back", "backIsDisable", "required", "disabled", "readonly", "validatorMessage", "tooltipMessage", "openWhenFocus", "searchBy", "markFirstItem", "markWhenHaveOneItem", "submitted", "setNgClass", "searchable", "validatorAlert", "upperCase", "templateLabel", "appendTo", "items", "loading", "loadingText", "clearAllText", "notFoundText", "markFirst", "clearable", "clearOnBackspace", "virtualScroll", "openOnEnter", "refresh", "isRefreshDisabled", "search", "redirect", "searchParams", "labelInfo", "textLabelInfo", "urlRedirect", "titleRedirect", "isRedirectDisabled"], outputs: ["onNext", "onBack", "change", "blur", "onfocus", "onrefresh", "onsearch"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
229
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmxDashCardLegendChartSelectComponent, isStandalone: true, selector: "smx-dash-card-legend-chart-select", inputs: { title: "title", showTitle: "showTitle", titleStyle: "titleStyle", titleHAlign: "titleHAlign", contentVAlign: "contentVAlign", contentHAlign: "contentHAlign", chartType: "chartType", legendVisible: "legendVisible", labels: "labels", datasets: "datasets", indexAxis: "indexAxis", tension: "tension", chartOptions: "chartOptions", controlsSelect: "controlsSelect", formatters: "formatters", i18n: "i18n", chartWidth: "chartWidth", chartHeight: "chartHeight", numberFormat: "numberFormat" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"smx-card-legend-chart\" [class.smx-auto-mode]=\"chartWidth === 'auto' || chartHeight === 'auto'\">\n <div class=\"smx-card-header\" *ngIf=\"showTitle\" [ngStyle]=\"titleStyle\" [style.text-align]=\"titleHAlign\">{{ title }}</div>\n <div\n class=\"smx-chart-content\"\n [style.justify-content]=\"\n chartWidth === 'auto' || chartHeight === 'auto'\n ? null\n : contentVAlign === 'top'\n ? 'flex-start'\n : contentVAlign === 'bottom'\n ? 'flex-end'\n : 'center'\n \"\n [style.align-items]=\"\n chartWidth === 'auto' || chartHeight === 'auto'\n ? null\n : contentHAlign === 'left'\n ? 'flex-start'\n : contentHAlign === 'right'\n ? 'flex-end'\n : 'center'\n \">\n <div class=\"smx-card-body\">\n <div class=\"controls\" *ngIf=\"controlsSelect?.length\">\n <div class=\"select\">\n <ng-select-simple\n [showLabel]=\"false\"\n [label]=\"'Vista'\"\n [items]=\"selectItems$\"\n [loading]=\"false\"\n [submitted]=\"false\"\n [markFirst]=\"true\"\n [markFirstItem]=\"true\"\n [searchable]=\"false\"\n [clearable]=\"false\"\n (keyup)=\"onEnter()\"\n (keydown)=\"onEnter()\"\n (keyup.enter)=\"onEnter()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onSelectChange($any($event))\">\n </ng-select-simple>\n </div>\n </div>\n <div class=\"graphic\" [class.smx-auto-chart]=\"chartWidth === 'auto' || chartHeight === 'auto'\">\n <canvas\n #canvas\n [attr.width]=\"chartWidth !== 'auto' ? chartWidth : null\"\n [attr.height]=\"chartHeight !== 'auto' ? chartHeight : null\">\n </canvas>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-height:0}.smx-card-legend-chart{display:flex;flex-direction:column;flex:1;min-height:0}.smx-card-header{flex-shrink:0;padding:8px 12px;font-weight:600}.smx-chart-content{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:0;overflow:hidden}.smx-card-body{display:flex;flex-direction:column;padding:8px 12px;min-height:0}.graphic{display:flex;align-items:center;justify-content:center;overflow:hidden}.graphic canvas{max-width:100%;height:auto}.controls{display:flex;align-items:center;gap:12px;margin-bottom:8px;flex-wrap:wrap}.controls .select{width:100%;max-width:180px}.select-buttons{display:flex;gap:8px}.btn{border:1px solid #cbd5e1;background:#fff;padding:6px 10px;border-radius:6px;cursor:pointer}.btn.active{background:#2563eb;color:#fff;border-color:#2563eb}.smx-auto-mode .smx-chart-content{justify-content:flex-start;align-items:stretch}.smx-auto-mode .smx-card-body{flex:1}.graphic.smx-auto-chart{flex:1;position:relative;overflow:hidden;width:100%;min-height:200px}.graphic.smx-auto-chart canvas{position:absolute;inset:0;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: NgSelectSimpleModule }, { kind: "component", type: i2.NgSelectSimpleComponent, selector: "ng-select-simple", inputs: ["showLabel", "label", "autocomplete", "next", "nextIsDisable", "back", "backIsDisable", "required", "disabled", "readonly", "validatorMessage", "tooltipMessage", "openWhenFocus", "searchBy", "markFirstItem", "markWhenHaveOneItem", "submitted", "setNgClass", "searchable", "validatorAlert", "upperCase", "templateLabel", "appendTo", "items", "loading", "loadingText", "clearAllText", "notFoundText", "markFirst", "clearable", "clearOnBackspace", "virtualScroll", "openOnEnter", "refresh", "isRefreshDisabled", "search", "redirect", "searchParams", "labelInfo", "textLabelInfo", "urlRedirect", "titleRedirect", "isRedirectDisabled", "startsWith"], outputs: ["onNext", "onBack", "change", "blur", "onfocus", "onrefresh", "onsearch"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
230
230
|
}
|
|
231
231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmxDashCardLegendChartSelectComponent, decorators: [{
|
|
232
232
|
type: Component,
|