@tilde-nlp/ngx-common 6.0.34 → 6.0.35

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.
@@ -18,9 +18,10 @@ import * as i7 from "@angular/material/checkbox";
18
18
  import * as i8 from "@angular/forms";
19
19
  import * as i9 from "../filter-bar/filter-bar.component";
20
20
  import * as i10 from "@ngbracket/ngx-layout/flex";
21
- import * as i11 from "@angular/material/tooltip";
22
- import * as i12 from "../status-display/status-display.component";
23
- import * as i13 from "@angular/material/icon";
21
+ import * as i11 from "@ngbracket/ngx-layout/extended";
22
+ import * as i12 from "@angular/material/tooltip";
23
+ import * as i13 from "../status-display/status-display.component";
24
+ import * as i14 from "@angular/material/icon";
24
25
  const _c0 = ["tableContainer"];
25
26
  const _c1 = ["filterBar"];
26
27
  const _c2 = [[["", "additionalActions", ""]], [["", "batchActions", ""]], "*"];
@@ -478,7 +479,7 @@ export class MultiFunctionalTableComponent {
478
479
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tableContainer = _t.first);
479
480
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterBar = _t.first);
480
481
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tableElementRef = _t.first);
481
- } }, inputs: { config: "config", highlightedElements: "highlightedElements", trackByFn: "trackByFn", highlightedErrorElements: "highlightedErrorElements", selection: "selection", isRowCheckboxAlwaysVisible: "isRowCheckboxAlwaysVisible", disablePreselectedItems: "disablePreselectedItems" }, outputs: { filterBarChange: "filterBarChange", exported: "exported", selectionChange: "selectionChange" }, ngContentSelectors: _c3, decls: 31, vars: 20, consts: [["tableContainer", ""], ["table", ""], ["columnMenu", "matMenu"], ["wildSearch", ""], ["filterBar", ""], ["fxLayout", "column", "fxLayoutGap", "0.75rem"], ["fxLayout", "row", "fxLayout.lt-md", "column", "fxLayoutGap.lt-md", "0.75rem"], ["fxFlex", "", "fxLayout.lt-md", "column", "fxLayoutGap", "0.75rem", "fxLayoutAlign", "start center", "fxLayoutAlign.lt-md", "start start", 1, "action-row"], ["class", "export-data", "mat-stroked-button", "", "color", "primary-accent-darker", 3, "click", 4, "ngIf"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center", 4, "ngIf"], ["fxLayout", "row", "fxLayoutAlign", "start center", "class", "wild-search-wrapper", 4, "ngIf"], [3, "filterRowVisible", "settings", "filterBarChange", 4, "ngIf"], [1, "table-overflow", 3, "mousedown", "mouseup", "mouseleave", "mousemove"], ["mat-table", "", 3, "dataSource", "trackBy"], [3, "matColumnDef"], ["class", "row-select", "mat-header-cell", "", "disable-export", "", 4, "matHeaderCellDef"], ["class", "row-select", "mat-cell", "", "disable-export", "", 4, "matCellDef"], ["mat-header-row", "", 4, "matHeaderRowDef", "matHeaderRowDefSticky"], ["mat-row", "", 3, "row-clickable", "highlight-error", "highlight", "click", "mouseover", "mouseleave", 4, "matRowDef", "matRowDefColumns"], [4, "ngIf"], [1, "column-select-menu", 3, "click"], [4, "ngFor", "ngForOf"], [1, "column-select-save"], ["mat-flat-button", "", "color", "primary-accent-darker", 3, "click"], ["mat-stroked-button", "", "color", "primary-accent-darker", 1, "export-data", 3, "click"], [1, "material-icons-outlined"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center"], ["mat-stroked-button", "", "color", "primary-accent-darker", 3, "click"], [1, "material-icons"], ["class", "clear-filters-wrapper", 4, "ngIf"], [1, "clear-filters-wrapper"], ["mat-icon-button", "", 3, "click"], ["fxLayout", "row", "fxLayoutAlign", "start center", 1, "wild-search-wrapper"], [3, "matTooltip"], ["type", "text", 3, "keyup", "placeholder"], ["mat-icon-button", "", "class", "wild-search-clear-btn", 3, "click", 4, "ngIf"], ["mat-icon-button", "", 1, "wild-search-clear-btn", 3, "click"], [3, "filterBarChange", "filterRowVisible", "settings"], ["mat-header-cell", "", "disable-export", "", 1, "row-select"], [3, "change", "matTooltip", "disabled", "checked", "indeterminate"], ["mat-cell", "", "disable-export", "", 1, "row-select"], [3, "matTooltip", "disabled", "checked", "click", "change", 4, "ngIf"], [3, "click", "change", "matTooltip", "disabled", "checked"], ["mat-header-row", ""], ["mat-row", "", 3, "click", "mouseover", "mouseleave"], [1, "column-selector-wrapper"], ["mat-icon-button", "", "color", "primary-accent-darker", 1, "column-selector", 3, "matMenuTriggerFor"], [4, "matNoDataRow"], ["colspan", "99"], [3, "config"], [3, "ngModelChange", "ngModel"]], template: function MultiFunctionalTableComponent_Template(rf, ctx) { if (rf & 1) {
482
+ } }, inputs: { config: "config", highlightedElements: "highlightedElements", trackByFn: "trackByFn", highlightedErrorElements: "highlightedErrorElements", selection: "selection", isRowCheckboxAlwaysVisible: "isRowCheckboxAlwaysVisible", disablePreselectedItems: "disablePreselectedItems" }, outputs: { filterBarChange: "filterBarChange", exported: "exported", selectionChange: "selectionChange" }, ngContentSelectors: _c3, decls: 31, vars: 21, consts: [["tableContainer", ""], ["table", ""], ["columnMenu", "matMenu"], ["wildSearch", ""], ["filterBar", ""], ["fxLayout", "column", "fxLayoutGap", "0.75rem", 3, "ngClass.lt-md"], ["fxLayout", "row", "fxLayout.lt-md", "column", "fxLayoutGap.lt-md", "0.75rem"], ["fxFlex", "", "fxLayout.lt-md", "column", "fxLayoutGap", "0.75rem", "fxLayoutAlign", "start center", "fxLayoutAlign.lt-md", "start start", 1, "action-row"], ["class", "export-data", "mat-stroked-button", "", "color", "primary-accent-darker", 3, "click", 4, "ngIf"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center", 4, "ngIf"], ["fxLayout", "row", "fxLayoutAlign", "start center", "class", "wild-search-wrapper", 4, "ngIf"], [3, "filterRowVisible", "settings", "filterBarChange", 4, "ngIf"], [1, "table-overflow", 3, "mousedown", "mouseup", "mouseleave", "mousemove"], ["mat-table", "", 3, "dataSource", "trackBy"], [3, "matColumnDef"], ["class", "row-select", "mat-header-cell", "", "disable-export", "", 4, "matHeaderCellDef"], ["class", "row-select", "mat-cell", "", "disable-export", "", 4, "matCellDef"], ["mat-header-row", "", 4, "matHeaderRowDef", "matHeaderRowDefSticky"], ["mat-row", "", 3, "row-clickable", "highlight-error", "highlight", "click", "mouseover", "mouseleave", 4, "matRowDef", "matRowDefColumns"], [4, "ngIf"], [1, "column-select-menu", 3, "click"], [4, "ngFor", "ngForOf"], [1, "column-select-save"], ["mat-flat-button", "", "color", "primary-accent-darker", 3, "click"], ["mat-stroked-button", "", "color", "primary-accent-darker", 1, "export-data", 3, "click"], [1, "material-icons-outlined"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center"], ["mat-stroked-button", "", "color", "primary-accent-darker", 3, "click"], [1, "material-icons"], ["class", "clear-filters-wrapper", 4, "ngIf"], [1, "clear-filters-wrapper"], ["mat-icon-button", "", 3, "click"], ["fxLayout", "row", "fxLayoutAlign", "start center", 1, "wild-search-wrapper"], [3, "matTooltip"], ["type", "text", 3, "keyup", "placeholder"], ["mat-icon-button", "", "class", "wild-search-clear-btn", 3, "click", 4, "ngIf"], ["mat-icon-button", "", 1, "wild-search-clear-btn", 3, "click"], [3, "filterBarChange", "filterRowVisible", "settings"], ["mat-header-cell", "", "disable-export", "", 1, "row-select"], [3, "change", "matTooltip", "disabled", "checked", "indeterminate"], ["mat-cell", "", "disable-export", "", 1, "row-select"], [3, "matTooltip", "disabled", "checked", "click", "change", 4, "ngIf"], [3, "click", "change", "matTooltip", "disabled", "checked"], ["mat-header-row", ""], ["mat-row", "", 3, "click", "mouseover", "mouseleave"], [1, "column-selector-wrapper"], ["mat-icon-button", "", "color", "primary-accent-darker", 1, "column-selector", 3, "matMenuTriggerFor"], [4, "matNoDataRow"], ["colspan", "99"], [3, "config"], [3, "ngModelChange", "ngModel"]], template: function MultiFunctionalTableComponent_Template(rf, ctx) { if (rf & 1) {
482
483
  const _r1 = i0.ɵɵgetCurrentView();
483
484
  i0.ɵɵprojectionDef(_c2);
484
485
  i0.ɵɵelementStart(0, "div", 5)(1, "div", 6)(2, "div", 7);
@@ -511,7 +512,8 @@ export class MultiFunctionalTableComponent {
511
512
  i0.ɵɵpipe(30, "translate");
512
513
  i0.ɵɵelementEnd()()()();
513
514
  } if (rf & 2) {
514
- let tmp_13_0;
515
+ let tmp_14_0;
516
+ i0.ɵɵproperty("ngClass.lt-md", "mobile");
515
517
  i0.ɵɵadvance(3);
516
518
  i0.ɵɵproperty("ngIf", ctx.exportActive);
517
519
  i0.ɵɵadvance();
@@ -527,7 +529,7 @@ export class MultiFunctionalTableComponent {
527
529
  i0.ɵɵadvance(3);
528
530
  i0.ɵɵproperty("matColumnDef", ctx.batchColumnName);
529
531
  i0.ɵɵadvance(3);
530
- i0.ɵɵproperty("matHeaderRowDef", ctx.displayColumns)("matHeaderRowDefSticky", (tmp_13_0 = ctx.config == null ? null : ctx.config.stickyHeader) !== null && tmp_13_0 !== undefined ? tmp_13_0 : false);
532
+ i0.ɵɵproperty("matHeaderRowDef", ctx.displayColumns)("matHeaderRowDefSticky", (tmp_14_0 = ctx.config == null ? null : ctx.config.stickyHeader) !== null && tmp_14_0 !== undefined ? tmp_14_0 : false);
531
533
  i0.ɵɵadvance();
532
534
  i0.ɵɵproperty("matRowDefColumns", ctx.displayColumns);
533
535
  i0.ɵɵadvance();
@@ -537,12 +539,12 @@ export class MultiFunctionalTableComponent {
537
539
  i0.ɵɵadvance(4);
538
540
  i0.ɵɵproperty("ngForOf", ctx.configurableColumns);
539
541
  i0.ɵɵadvance(3);
540
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(30, 18, "MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE"));
541
- } }, dependencies: [i3.NgForOf, i3.NgIf, i4.MatTable, i4.MatHeaderCellDef, i4.MatHeaderRowDef, i4.MatColumnDef, i4.MatCellDef, i4.MatRowDef, i4.MatHeaderCell, i4.MatCell, i4.MatHeaderRow, i4.MatRow, i4.MatNoDataRow, i5.MatButton, i5.MatIconButton, i6.MatMenu, i6.MatMenuTrigger, i7.MatCheckbox, i8.NgControlStatus, i8.NgModel, i9.FilterBarComponent, i10.DefaultLayoutDirective, i10.DefaultLayoutGapDirective, i10.DefaultLayoutAlignDirective, i10.DefaultFlexDirective, i11.MatTooltip, i12.StatusDisplayComponent, i13.MatIcon, i2.TranslatePipe], styles: ["[_nghost-%COMP%] th, [_nghost-%COMP%] tr{white-space:nowrap}[_nghost-%COMP%] td:not(:first-of-type){padding-right:10px!important}[_nghost-%COMP%] tr.mat-mdc-row:hover, [_nghost-%COMP%] tr.mat-mdc-row.highlight{background-color:var(--base-95)}[_nghost-%COMP%] tr.mat-mdc-row.highlight-error{background-color:var(--warning-light)}[_nghost-%COMP%] .export-data .mdc-button__label{display:flex;align-items:center}[_nghost-%COMP%] .mat-mdc-cell, [_nghost-%COMP%] .mat-mdc-header-cell, [_nghost-%COMP%] .mdc-data-table__row:last-child{border-bottom-color:var(--base-70)}[_nghost-%COMP%] .mdc-data-table__row:last-child{border-bottom-width:1px;border-bottom-style:solid}[_nghost-%COMP%] .mdc-data-table__cell:nth-child(2), [_nghost-%COMP%] .mdc-data-table__header-cell:nth-child(2){padding:0 16px 0 10px}[_nghost-%COMP%] td+.cdk-column-columnSelect{display:none}[_nghost-%COMP%] .clear-filters-wrapper .mat-mdc-icon-button, [_nghost-%COMP%] .clear-filters-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:36px!important;width:36px!important}[_nghost-%COMP%] .clear-filters-wrapper mat-icon{margin-top:-2px;margin-left:-2px}[_nghost-%COMP%] .filter-active{background-color:var(--neutral-95)}table[_ngcontent-%COMP%]{width:100%}.wild-search-wrapper[_ngcontent-%COMP%]{position:relative;padding:5px 10px;border-radius:4px;border:1px solid var(--neutral-50);margin:0 8px}.wild-search-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{margin-right:30px}.wild-search-wrapper[_ngcontent-%COMP%] .wild-search-clear-btn[_ngcontent-%COMP%]{position:absolute;right:3px}.wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .mat-mdc-button-touch-target[_ngcontent-%COMP%]{height:33px!important;width:33px!important}.wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .material-icons-outlined[_ngcontent-%COMP%]{top:5px!important;left:5px!important}.column-selector-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:end}.column-select-menu[_ngcontent-%COMP%]{padding:8px 18px 8px 8px}.column-select-save[_ngcontent-%COMP%]{padding-left:8px;padding-top:8px}.column-select-save[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:100%}.row-clickable[_ngcontent-%COMP%]{cursor:pointer}.row-clickable[_ngcontent-%COMP%]:active{background-color:var(--base-70)!important}.material-icons[_ngcontent-%COMP%], .material-icons-outlined[_ngcontent-%COMP%]{margin-right:.5rem}.table-action-button[_ngcontent-%COMP%]{margin-bottom:1rem}th.mat-mdc-header-cell[_ngcontent-%COMP%]:first-of-type, td.mat-mdc-cell[_ngcontent-%COMP%]:first-of-type, td.mat-mdc-footer-cell[_ngcontent-%COMP%]:first-of-type{padding:0 0 0 10px}.row-select[_ngcontent-%COMP%]{width:0}.table-overflow[_ngcontent-%COMP%]{overflow-x:auto}.table-dragable[_ngcontent-%COMP%]{cursor:grab;-webkit-user-select:none;user-select:none}.table-dragable[_ngcontent-%COMP%]:active{cursor:grabbing}.table-sticky-header[_ngcontent-%COMP%]{max-height:70vh}"] }); }
542
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(30, 19, "MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE"));
543
+ } }, dependencies: [i3.NgForOf, i3.NgIf, i4.MatTable, i4.MatHeaderCellDef, i4.MatHeaderRowDef, i4.MatColumnDef, i4.MatCellDef, i4.MatRowDef, i4.MatHeaderCell, i4.MatCell, i4.MatHeaderRow, i4.MatRow, i4.MatNoDataRow, i5.MatButton, i5.MatIconButton, i6.MatMenu, i6.MatMenuTrigger, i7.MatCheckbox, i8.NgControlStatus, i8.NgModel, i9.FilterBarComponent, i10.DefaultLayoutDirective, i10.DefaultLayoutGapDirective, i10.DefaultLayoutAlignDirective, i10.DefaultFlexDirective, i11.DefaultClassDirective, i12.MatTooltip, i13.StatusDisplayComponent, i14.MatIcon, i2.TranslatePipe], styles: ["[_nghost-%COMP%] th, [_nghost-%COMP%] tr{white-space:nowrap}[_nghost-%COMP%] td:not(:first-of-type){padding-right:10px!important}[_nghost-%COMP%] tr.mat-mdc-row:hover, [_nghost-%COMP%] tr.mat-mdc-row.highlight{background-color:var(--base-95)}[_nghost-%COMP%] tr.mat-mdc-row.highlight-error{background-color:var(--warning-light)}[_nghost-%COMP%] .export-data .mdc-button__label{display:flex;align-items:center}[_nghost-%COMP%] .mat-mdc-cell, [_nghost-%COMP%] .mat-mdc-header-cell, [_nghost-%COMP%] .mdc-data-table__row:last-child{border-bottom-color:var(--base-70)}[_nghost-%COMP%] .mdc-data-table__row:last-child{border-bottom-width:1px;border-bottom-style:solid}[_nghost-%COMP%] .mdc-data-table__cell:nth-child(2), [_nghost-%COMP%] .mdc-data-table__header-cell:nth-child(2){padding:0 16px 0 10px}[_nghost-%COMP%] td+.cdk-column-columnSelect{display:none}[_nghost-%COMP%] .clear-filters-wrapper .mat-mdc-icon-button, [_nghost-%COMP%] .clear-filters-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:36px!important;width:36px!important}[_nghost-%COMP%] .clear-filters-wrapper mat-icon{margin-top:-2px;margin-left:-2px}[_nghost-%COMP%] .filter-active{background-color:var(--neutral-95)}table[_ngcontent-%COMP%]{width:100%}.wild-search-wrapper[_ngcontent-%COMP%]{position:relative;padding:5px 10px;border-radius:4px;border:1px solid var(--neutral-50);margin:0 8px}.wild-search-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{margin-right:30px}.wild-search-wrapper[_ngcontent-%COMP%] .wild-search-clear-btn[_ngcontent-%COMP%]{position:absolute;right:3px}.wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .mat-mdc-button-touch-target[_ngcontent-%COMP%]{height:33px!important;width:33px!important}.wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .material-icons-outlined[_ngcontent-%COMP%]{top:5px!important;left:5px!important}.mobile[_ngcontent-%COMP%] .wild-search-wrapper[_ngcontent-%COMP%]{margin:0}.column-selector-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:end}.column-select-menu[_ngcontent-%COMP%]{padding:8px 18px 8px 8px}.column-select-save[_ngcontent-%COMP%]{padding-left:8px;padding-top:8px}.column-select-save[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:100%}.row-clickable[_ngcontent-%COMP%]{cursor:pointer}.row-clickable[_ngcontent-%COMP%]:active{background-color:var(--base-70)!important}.material-icons[_ngcontent-%COMP%], .material-icons-outlined[_ngcontent-%COMP%]{margin-right:.5rem}.table-action-button[_ngcontent-%COMP%]{margin-bottom:1rem}th.mat-mdc-header-cell[_ngcontent-%COMP%]:first-of-type, td.mat-mdc-cell[_ngcontent-%COMP%]:first-of-type, td.mat-mdc-footer-cell[_ngcontent-%COMP%]:first-of-type{padding:0 0 0 10px}.row-select[_ngcontent-%COMP%]{width:0}.table-overflow[_ngcontent-%COMP%]{overflow-x:auto}.table-dragable[_ngcontent-%COMP%]{cursor:grab;-webkit-user-select:none;user-select:none}.table-dragable[_ngcontent-%COMP%]:active{cursor:grabbing}.table-sticky-header[_ngcontent-%COMP%]{max-height:70vh}"] }); }
542
544
  }
543
545
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MultiFunctionalTableComponent, [{
544
546
  type: Component,
545
- args: [{ selector: 'tld-multi-functional-table', template: "<div fxLayout=\"column\" fxLayoutGap=\"0.75rem\">\r\n\r\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap.lt-md=\"0.75rem\">\r\n <div fxFlex fxLayout.lt-md=\"column\" fxLayoutGap=\"0.75rem\" fxLayoutAlign=\"start center\" fxLayoutAlign.lt-md=\"start start\" class=\"action-row\">\r\n <button class=\"export-data\" mat-stroked-button color=\"primary-accent-darker\" *ngIf=\"exportActive\" (click)=\"export()\">\r\n <span class=\"material-icons-outlined\">cloud_download</span>\r\n <span>{{'MULTI_FUNCTIONAL_TABLE.EXPORT' | translate}}</span>\r\n </button>\r\n\r\n <div *ngIf=\"filterActive && showFilterToggle\" fxFlex fxLayoutGap=\"0.5rem\" fxLayoutAlign=\"start center\">\r\n <button [class.filter-active]=\"filterBarVisible\" mat-stroked-button color=\"primary-accent-darker\" (click)=\"toggleFilterBar()\">\r\n <span class=\"material-icons\">filter_list</span>\r\n <span>{{'MULTI_FUNCTIONAL_TABLE.FILTER_TOGGLE' | translate}}</span>\r\n </button>\r\n \r\n <div *ngIf=\"showFilterReset\" class=\"clear-filters-wrapper\">\r\n <button mat-icon-button (click)=\"clearFilters()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showSearch\" fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"wild-search-wrapper\">\r\n <mat-icon [matTooltip]=\"hideSearchTooltip ? '' : searchTooltip | translate\">search</mat-icon>\r\n <input #wildSearch type=\"text\" [placeholder]=\"searchTitle | translate\" (keyup)=\"search($event)\">\r\n <button *ngIf=\"showSearchClearButton\" mat-icon-button class=\"wild-search-clear-btn\" (click)=\"wildSearch.value = ''; search({ target: { value: '' } })\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-content select=\"[additionalActions]\"></ng-content>\r\n </div>\r\n\r\n <tld-filter-bar *ngIf=\"config.filter && config.filter.enabled\" #filterBar [filterRowVisible]=\"filterBarVisible\" [settings]=\"config.filter.settings\"\r\n (filterBarChange)=\"filtersChanged($event)\">\r\n </tld-filter-bar>\r\n\r\n <ng-content select=\"[batchActions]\"></ng-content>\r\n\r\n <div \r\n #tableContainer\r\n class=\"table-overflow\"\r\n [class.table-sticky-header]=\"config?.stickyHeader\"\r\n [class.table-dragable]=\"tableOverflow\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (mouseup)=\"onMouseUp()\"\r\n (mouseleave)=\"onMouseUp()\"\r\n (mousemove)=\"onMouseMove($event)\"\r\n >\r\n <table #table mat-table [dataSource]=\"config.dataSource\" [trackBy]=\"trackByFn\">\r\n <ng-content></ng-content>\r\n <ng-container [matColumnDef]=\"batchColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <mat-checkbox [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT_ALL' | translate\" [disabled]=\"config.batchConfig!.checkBoxesDisabled\" (change)=\"toggleAllRowSelection()\"\r\n [checked]=\"matSelection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"matSelection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n <td class=\"row-select\" mat-cell *matCellDef=\"let element\" disable-export>\r\n <mat-checkbox \r\n [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT' | translate\" *ngIf=\"isRowCheckboxAlwaysVisible || hoveredRow === element || matSelection.isSelected(element)\" \r\n [disabled]=\"config.batchConfig!.checkBoxesDisabled || (preselectedItems.includes(element) && disablePreselectedItems)\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"toggleElementSelection(element)\" [checked]=\"matSelection.isSelected(element)\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayColumns; sticky: config?.stickyHeader ?? false\"></tr>\r\n <tr \r\n mat-row \r\n *matRowDef=\"let row; \r\n columns: displayColumns\" \r\n (click)=\"config?.rowClickCallback && !config?.disableRowClick(row) ? config?.rowClickCallback(row) : null\"\r\n (mouseover)=\"hoveredRow = row\" \r\n (mouseleave)=\"hoveredRow = null\" \r\n [class.row-clickable]=\"config?.rowClickCallback && !config?.disableRowClick(row)\" \r\n [class.highlight-error]=\"highlightErrorElement(row)\" \r\n [class.highlight]=\"row === hoveredRow || highlightElement(row)\">\r\n </tr>\r\n \r\n <ng-container [matColumnDef]=\"columnSelectColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <div class=\"column-selector-wrapper\">\r\n <button class=\"column-selector\" mat-icon-button color=\"primary-accent-darker\" [matMenuTriggerFor]=\"columnMenu\">\r\n <span class=\"material-icons\">more_vert</span>\r\n </button>\r\n </div>\r\n </th>\r\n <td class=\"row-select\" mat-cell *matCellDef=\"let element\" disable-export>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"noDataRowActive\">\r\n <tr *matNoDataRow>\r\n <!-- add random number to make sure it takes full width -->\r\n <td colspan=\"99\">\r\n <lib-status-display [config]=\"noDataRowConfig\"></lib-status-display>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n<mat-menu #columnMenu=\"matMenu\">\r\n <div class=\"column-select-menu\" (click)=\"$event.stopPropagation()\">\r\n <div *ngFor=\"let column of configurableColumns\">\r\n <mat-checkbox [(ngModel)]=\"column.selected\">\r\n {{column.displayName | translate}}\r\n </mat-checkbox>\r\n </div>\r\n\r\n <div class=\"column-select-save\">\r\n <button mat-flat-button color=\"primary-accent-darker\" (click)=\"updateDisplayColumns()\">{{ \"MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE\" | translate }}</button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n", styles: [":host ::ng-deep th,:host ::ng-deep tr{white-space:nowrap}:host ::ng-deep td:not(:first-of-type){padding-right:10px!important}:host ::ng-deep tr.mat-mdc-row:hover,:host ::ng-deep tr.mat-mdc-row.highlight{background-color:var(--base-95)}:host ::ng-deep tr.mat-mdc-row.highlight-error{background-color:var(--warning-light)}:host ::ng-deep .export-data .mdc-button__label{display:flex;align-items:center}:host ::ng-deep .mat-mdc-cell,:host ::ng-deep .mat-mdc-header-cell,:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-color:var(--base-70)}:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-width:1px;border-bottom-style:solid}:host ::ng-deep .mdc-data-table__cell:nth-child(2),:host ::ng-deep .mdc-data-table__header-cell:nth-child(2){padding:0 16px 0 10px}:host ::ng-deep td+.cdk-column-columnSelect{display:none}:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button,:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:36px!important;width:36px!important}:host ::ng-deep .clear-filters-wrapper mat-icon{margin-top:-2px;margin-left:-2px}:host ::ng-deep .filter-active{background-color:var(--neutral-95)}table{width:100%}.wild-search-wrapper{position:relative;padding:5px 10px;border-radius:4px;border:1px solid var(--neutral-50);margin:0 8px}.wild-search-wrapper input{margin-right:30px}.wild-search-wrapper .wild-search-clear-btn{position:absolute;right:3px}.wild-search-wrapper .mat-mdc-icon-button,.wild-search-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:33px!important;width:33px!important}.wild-search-wrapper .mat-mdc-icon-button mat-icon,.wild-search-wrapper .mat-mdc-icon-button .material-icons,.wild-search-wrapper .mat-mdc-icon-button .material-icons-outlined{top:5px!important;left:5px!important}.column-selector-wrapper{display:flex;justify-content:end}.column-select-menu{padding:8px 18px 8px 8px}.column-select-save{padding-left:8px;padding-top:8px}.column-select-save button{width:100%}.row-clickable{cursor:pointer}.row-clickable:active{background-color:var(--base-70)!important}.material-icons,.material-icons-outlined{margin-right:.5rem}.table-action-button{margin-bottom:1rem}th.mat-mdc-header-cell:first-of-type,td.mat-mdc-cell:first-of-type,td.mat-mdc-footer-cell:first-of-type{padding:0 0 0 10px}.row-select{width:0}.table-overflow{overflow-x:auto}.table-dragable{cursor:grab;-webkit-user-select:none;user-select:none}.table-dragable:active{cursor:grabbing}.table-sticky-header{max-height:70vh}\n"] }]
547
+ args: [{ selector: 'tld-multi-functional-table', template: "<div [ngClass.lt-md]=\"'mobile'\" fxLayout=\"column\" fxLayoutGap=\"0.75rem\">\r\n\r\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap.lt-md=\"0.75rem\">\r\n <div fxFlex fxLayout.lt-md=\"column\" fxLayoutGap=\"0.75rem\" fxLayoutAlign=\"start center\" fxLayoutAlign.lt-md=\"start start\" class=\"action-row\">\r\n <button class=\"export-data\" mat-stroked-button color=\"primary-accent-darker\" *ngIf=\"exportActive\" (click)=\"export()\">\r\n <span class=\"material-icons-outlined\">cloud_download</span>\r\n <span>{{'MULTI_FUNCTIONAL_TABLE.EXPORT' | translate}}</span>\r\n </button>\r\n\r\n <div *ngIf=\"filterActive && showFilterToggle\" fxFlex fxLayoutGap=\"0.5rem\" fxLayoutAlign=\"start center\">\r\n <button [class.filter-active]=\"filterBarVisible\" mat-stroked-button color=\"primary-accent-darker\" (click)=\"toggleFilterBar()\">\r\n <span class=\"material-icons\">filter_list</span>\r\n <span>{{'MULTI_FUNCTIONAL_TABLE.FILTER_TOGGLE' | translate}}</span>\r\n </button>\r\n \r\n <div *ngIf=\"showFilterReset\" class=\"clear-filters-wrapper\">\r\n <button mat-icon-button (click)=\"clearFilters()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showSearch\" fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"wild-search-wrapper\">\r\n <mat-icon [matTooltip]=\"hideSearchTooltip ? '' : searchTooltip | translate\">search</mat-icon>\r\n <input #wildSearch type=\"text\" [placeholder]=\"searchTitle | translate\" (keyup)=\"search($event)\">\r\n <button *ngIf=\"showSearchClearButton\" mat-icon-button class=\"wild-search-clear-btn\" (click)=\"wildSearch.value = ''; search({ target: { value: '' } })\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-content select=\"[additionalActions]\"></ng-content>\r\n </div>\r\n\r\n <tld-filter-bar *ngIf=\"config.filter && config.filter.enabled\" #filterBar [filterRowVisible]=\"filterBarVisible\" [settings]=\"config.filter.settings\"\r\n (filterBarChange)=\"filtersChanged($event)\">\r\n </tld-filter-bar>\r\n\r\n <ng-content select=\"[batchActions]\"></ng-content>\r\n\r\n <div \r\n #tableContainer\r\n class=\"table-overflow\"\r\n [class.table-sticky-header]=\"config?.stickyHeader\"\r\n [class.table-dragable]=\"tableOverflow\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (mouseup)=\"onMouseUp()\"\r\n (mouseleave)=\"onMouseUp()\"\r\n (mousemove)=\"onMouseMove($event)\"\r\n >\r\n <table #table mat-table [dataSource]=\"config.dataSource\" [trackBy]=\"trackByFn\">\r\n <ng-content></ng-content>\r\n <ng-container [matColumnDef]=\"batchColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <mat-checkbox [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT_ALL' | translate\" [disabled]=\"config.batchConfig!.checkBoxesDisabled\" (change)=\"toggleAllRowSelection()\"\r\n [checked]=\"matSelection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"matSelection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n <td class=\"row-select\" mat-cell *matCellDef=\"let element\" disable-export>\r\n <mat-checkbox \r\n [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT' | translate\" *ngIf=\"isRowCheckboxAlwaysVisible || hoveredRow === element || matSelection.isSelected(element)\" \r\n [disabled]=\"config.batchConfig!.checkBoxesDisabled || (preselectedItems.includes(element) && disablePreselectedItems)\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"toggleElementSelection(element)\" [checked]=\"matSelection.isSelected(element)\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayColumns; sticky: config?.stickyHeader ?? false\"></tr>\r\n <tr \r\n mat-row \r\n *matRowDef=\"let row; \r\n columns: displayColumns\" \r\n (click)=\"config?.rowClickCallback && !config?.disableRowClick(row) ? config?.rowClickCallback(row) : null\"\r\n (mouseover)=\"hoveredRow = row\" \r\n (mouseleave)=\"hoveredRow = null\" \r\n [class.row-clickable]=\"config?.rowClickCallback && !config?.disableRowClick(row)\" \r\n [class.highlight-error]=\"highlightErrorElement(row)\" \r\n [class.highlight]=\"row === hoveredRow || highlightElement(row)\">\r\n </tr>\r\n \r\n <ng-container [matColumnDef]=\"columnSelectColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <div class=\"column-selector-wrapper\">\r\n <button class=\"column-selector\" mat-icon-button color=\"primary-accent-darker\" [matMenuTriggerFor]=\"columnMenu\">\r\n <span class=\"material-icons\">more_vert</span>\r\n </button>\r\n </div>\r\n </th>\r\n <td class=\"row-select\" mat-cell *matCellDef=\"let element\" disable-export>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"noDataRowActive\">\r\n <tr *matNoDataRow>\r\n <!-- add random number to make sure it takes full width -->\r\n <td colspan=\"99\">\r\n <lib-status-display [config]=\"noDataRowConfig\"></lib-status-display>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n<mat-menu #columnMenu=\"matMenu\">\r\n <div class=\"column-select-menu\" (click)=\"$event.stopPropagation()\">\r\n <div *ngFor=\"let column of configurableColumns\">\r\n <mat-checkbox [(ngModel)]=\"column.selected\">\r\n {{column.displayName | translate}}\r\n </mat-checkbox>\r\n </div>\r\n\r\n <div class=\"column-select-save\">\r\n <button mat-flat-button color=\"primary-accent-darker\" (click)=\"updateDisplayColumns()\">{{ \"MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE\" | translate }}</button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n", styles: [":host ::ng-deep th,:host ::ng-deep tr{white-space:nowrap}:host ::ng-deep td:not(:first-of-type){padding-right:10px!important}:host ::ng-deep tr.mat-mdc-row:hover,:host ::ng-deep tr.mat-mdc-row.highlight{background-color:var(--base-95)}:host ::ng-deep tr.mat-mdc-row.highlight-error{background-color:var(--warning-light)}:host ::ng-deep .export-data .mdc-button__label{display:flex;align-items:center}:host ::ng-deep .mat-mdc-cell,:host ::ng-deep .mat-mdc-header-cell,:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-color:var(--base-70)}:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-width:1px;border-bottom-style:solid}:host ::ng-deep .mdc-data-table__cell:nth-child(2),:host ::ng-deep .mdc-data-table__header-cell:nth-child(2){padding:0 16px 0 10px}:host ::ng-deep td+.cdk-column-columnSelect{display:none}:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button,:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:36px!important;width:36px!important}:host ::ng-deep .clear-filters-wrapper mat-icon{margin-top:-2px;margin-left:-2px}:host ::ng-deep .filter-active{background-color:var(--neutral-95)}table{width:100%}.wild-search-wrapper{position:relative;padding:5px 10px;border-radius:4px;border:1px solid var(--neutral-50);margin:0 8px}.wild-search-wrapper input{margin-right:30px}.wild-search-wrapper .wild-search-clear-btn{position:absolute;right:3px}.wild-search-wrapper .mat-mdc-icon-button,.wild-search-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:33px!important;width:33px!important}.wild-search-wrapper .mat-mdc-icon-button mat-icon,.wild-search-wrapper .mat-mdc-icon-button .material-icons,.wild-search-wrapper .mat-mdc-icon-button .material-icons-outlined{top:5px!important;left:5px!important}.mobile .wild-search-wrapper{margin:0}.column-selector-wrapper{display:flex;justify-content:end}.column-select-menu{padding:8px 18px 8px 8px}.column-select-save{padding-left:8px;padding-top:8px}.column-select-save button{width:100%}.row-clickable{cursor:pointer}.row-clickable:active{background-color:var(--base-70)!important}.material-icons,.material-icons-outlined{margin-right:.5rem}.table-action-button{margin-bottom:1rem}th.mat-mdc-header-cell:first-of-type,td.mat-mdc-cell:first-of-type,td.mat-mdc-footer-cell:first-of-type{padding:0 0 0 10px}.row-select{width:0}.table-overflow{overflow-x:auto}.table-dragable{cursor:grab;-webkit-user-select:none;user-select:none}.table-dragable:active{cursor:grabbing}.table-sticky-header{max-height:70vh}\n"] }]
546
548
  }], () => [{ type: i1.DOMService }, { type: i2.TranslateService }], { config: [{
547
549
  type: Input
548
550
  }], highlightedElements: [{
@@ -592,4 +594,4 @@ export class MultiFunctionalTableComponent {
592
594
  args: [MatTable, { read: ElementRef }]
593
595
  }] }); })();
594
596
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MultiFunctionalTableComponent, { className: "MultiFunctionalTableComponent", filePath: "lib\\multi-functional-table\\multi-functional-table.component.ts", lineNumber: 25 }); })();
595
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktZnVuY3Rpb25hbC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvbXVsdGktZnVuY3Rpb25hbC10YWJsZS9tdWx0aS1mdW5jdGlvbmFsLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9tdWx0aS1mdW5jdGlvbmFsLXRhYmxlL211bHRpLWZ1bmN0aW9uYWwtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBbUMsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqTCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRyxPQUFPLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1BsQyxrQ0FBcUg7SUFBbkIsNExBQVMsZUFBUSxLQUFDO0lBQ2xILGdDQUFzQztJQUFBLDhCQUFj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VixjQUF1QztZQUF2Qyx5REFBdUM7WUFXdEMsZUFBcUI7WUFBckIsMENBQXFCO1lBY2QsZUFBc0I7WUFBdEIsaURBQXNCO1lBTzJDLGVBQTZEO1lBQTdELHlGQUE2RDs7O2lGRHhGN0ksNkJBQTZCO2NBTnpDLFNBQVM7MkJBRUUsNEJBQTRCOzBFQU83QixNQUFNO2tCQUFkLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csd0JBQXdCO2tCQUFoQyxLQUFLO1lBQ08sU0FBUztrQkFBckIsS0FBSztZQUtHLDBCQUEwQjtrQkFBbEMsS0FBSztZQUVHLHVCQUF1QjtrQkFBL0IsS0FBSztZQUdJLGVBQWU7a0JBQXhCLE1BQU07WUFDRyxRQUFRO2tCQUFqQixNQUFNO1lBQ0csZUFBZTtrQkFBeEIsTUFBTTtZQUkyQixhQUFhO2tCQUE5QyxlQUFlO21CQUFDLGVBQWU7WUFDbUIsT0FBTztrQkFBekQsZUFBZTttQkFBQyxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO1lBQ2xCLFVBQVU7a0JBQXhDLGVBQWU7bUJBQUMsWUFBWTtZQUNELFNBQVM7a0JBQXBDLFlBQVk7bUJBQUMsWUFBWTtZQUVhLEtBQUs7a0JBQTNDLFNBQVM7bUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNqQixJQUFJO2tCQUF2QixTQUFTO21CQUFDLE9BQU87WUFFVyxjQUFjO2tCQUExQyxTQUFTO21CQUFDLGdCQUFnQjtZQUNILFNBQVM7a0JBQWhDLFNBQVM7bUJBQUMsV0FBVztZQUdxQixlQUFlO2tCQUF6RCxTQUFTO21CQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7O2tGQW5DOUIsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRDb2x1bW5EZWYsIE1hdEhlYWRlclJvd0RlZiwgTWF0Tm9EYXRhUm93LCBNYXRSb3dEZWYsIE1hdFRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJCYXJDaGFuZ2VFdmVudCB9IGZyb20gJy4uL2ZpbHRlci1iYXIvbW9kZWxzL2ZpbHRlci1iYXItY2hhbmdlLWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgSHRtbEVsZW1lbnRQYXJzZUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBTYXZlRmlsZUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvc2F2ZS1maWxlLmhlbHBlcic7XHJcbmltcG9ydCB7IERPTVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IERJU0FCTEVfRVhQT1JUX0FUVFJJQlVURV9OQU1FIH0gZnJvbSAnLi9jb25zdGFudHMvZGlzYWJsZS1leHBvcnQtYXR0cmlidXRlLW5hbWUuY29uc3QnO1xyXG5pbXBvcnQgeyBFeHBvcnRGb3JtYXQgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IENvbHVtbkNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL2NvbHVtbi1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBNdWx0aUZ1bmN0aW9uYWxUYWJsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL211bHRpLWZ1bmN0aW9uYWwtdGFibGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgU2VsZWN0ZWRDb2x1bW5Mb2NhbFN0b3JhZ2VDb25maWcgfSBmcm9tICcuL21vZGVscy9zZWxlY3RlZC1jb2x1bW4tbG9jYWwtc3RvcmFnZS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBTdGF0dXNEaXNwbGF5Q29uZmlnIH0gZnJvbSAnLi4vc3RhdHVzLWRpc3BsYXkvbW9kZWxzL3N0YXR1cy1kaXNwbGF5LWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbHRlckJhckNvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci1iYXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ3RsZC1tdWx0aS1mdW5jdGlvbmFsLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktZnVuY3Rpb25hbC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGktZnVuY3Rpb25hbC10YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aUZ1bmN0aW9uYWxUYWJsZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcmVhZG9ubHkgbWF0U2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPFQ+KHRydWUsIFtdKTtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnITogTXVsdGlGdW5jdGlvbmFsVGFibGVDb25maWc8VD47XHJcbiAgQElucHV0KCkgaGlnaGxpZ2h0ZWRFbGVtZW50cyE6IFRbXTtcclxuICBASW5wdXQoKSB0cmFja0J5Rm4hOiAoaXg6IG51bWJlciwgcm93OiBUKSA9PiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgQElucHV0KCkgaGlnaGxpZ2h0ZWRFcnJvckVsZW1lbnRzITogVFtdO1xyXG4gIEBJbnB1dCgpIHNldCBzZWxlY3Rpb24odmFsdWU6IFRbXSkge1xyXG4gICAgdGhpcy5tYXRTZWxlY3Rpb24uc2V0U2VsZWN0aW9uKC4uLih2YWx1ZSA/PyBbXSkpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2V0IHRoaXMgdG8gZmFsc2UgaWYgeW91IHdhbnQgdG8gZGlzcGxheSBjaGVja2JveGVzIG9ubHkgb24gcm93IGhvdmVyLlxyXG4gIEBJbnB1dCgpIGlzUm93Q2hlY2tib3hBbHdheXNWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZVByZXNlbGVjdGVkSXRlbXMgPSBmYWxzZTtcclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dCBwcm9wZXJ0aWVzXHJcbiAgQE91dHB1dCgpIGZpbHRlckJhckNoYW5nZTogRXZlbnRFbWl0dGVyPEZpbHRlckJhckNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyQmFyQ2hhbmdlRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydGVkOiBFdmVudEVtaXR0ZXI8VFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IE9ic2VydmFibGU8VFtdPiA9IHRoaXMubWF0U2VsZWN0aW9uLmNoYW5nZWQuYXNPYnNlcnZhYmxlKCkucGlwZShtYXAoKCkgPT4geyByZXR1cm4gdGhpcy5tYXRTZWxlY3Rpb24uc2VsZWN0ZWQ7IH0pKTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzIGZvciBtYXQgdGFibGUgd3JhcHBlclxyXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0SGVhZGVyUm93RGVmKSBoZWFkZXJSb3dEZWZzITogUXVlcnlMaXN0PE1hdEhlYWRlclJvd0RlZj47XHJcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRSb3dEZWYsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcm93RGVmcyE6IFF1ZXJ5TGlzdDxNYXRSb3dEZWY8VD4+O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Q29sdW1uRGVmKSBjb2x1bW5EZWZzITogUXVlcnlMaXN0PE1hdENvbHVtbkRlZj47XHJcbiAgQENvbnRlbnRDaGlsZChNYXROb0RhdGFSb3cpIG5vRGF0YVJvdyE6IE1hdE5vRGF0YVJvdztcclxuXHJcbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwgeyBzdGF0aWM6IHRydWUgfSkgdGFibGUhOiBNYXRUYWJsZTxUPjtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQhOiBNYXRTb3J0O1xyXG5cclxuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRhaW5lcicpIHRhYmxlQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnZmlsdGVyQmFyJykgZmlsdGVyQmFyITogRmlsdGVyQmFyQ29tcG9uZW50O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBAVmlld0NoaWxkKE1hdFRhYmxlLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgdGFibGVFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIHByZXNlbGVjdGVkSXRlbXMhOiBUW107XHJcblxyXG4gIGdldCBpZ25vcmVBdHRyaWJ1dGVOYW1lKCkgeyByZXR1cm4gRElTQUJMRV9FWFBPUlRfQVRUUklCVVRFX05BTUUgfVxyXG4gIGRpc3BsYXlDb2x1bW5zITogc3RyaW5nW107XHJcblxyXG4gIGNvbHVtblNlbGVjdEFjdGl2ZSE6IGJvb2xlYW47XHJcbiAgZXhwb3J0QWN0aXZlITogYm9vbGVhbjtcclxuICBub0RhdGFSb3dBY3RpdmUhOiBib29sZWFuO1xyXG5cclxuICBmaWx0ZXJzITogRmlsdGVyQmFyQ2hhbmdlRXZlbnQ7XHJcbiAgZmlsdGVyQmFyVmlzaWJsZSE6IGJvb2xlYW47XHJcblxyXG4gIGhpZGVTZWFyY2hUb29sdGlwITogYm9vbGVhbjtcclxuICBzaG93U2VhcmNoITogYm9vbGVhbjtcclxuICBzaG93U2VhcmNoQ2xlYXJCdXR0b24hOiBib29sZWFuO1xyXG4gIHNlYXJjaFRpdGxlITogc3RyaW5nO1xyXG4gIHNlYXJjaFRvb2x0aXAhOiBzdHJpbmc7XHJcblxyXG4gIG5vRGF0YVJvd0NvbmZpZyE6IFN0YXR1c0Rpc3BsYXlDb25maWc7XHJcbiAgbm9EYXRhUm93SWNvbiA9IFwibWFuYWdlX3NlYXJjaFwiO1xyXG5cclxuICBjb25maWd1cmFibGVDb2x1bW5zITogQ29sdW1uQ29uZmlnW107XHJcbiAgYmF0Y2hTZWxlY3RlZEVuYWJsZWQhOiBib29sZWFuO1xyXG5cclxuICAvLyBpcyB1c2VkIGluIGh0bWwgdG8gZGlzcGxheSBiYXRjaCBjaGVja2JveCBvbiBob3ZlcmVkIHJvd1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgaG92ZXJlZFJvdzogYW55O1xyXG5cclxuICAvLyBwcm9wZXJ0aWVzIGZvciBvdmVyZmxvdyBzY3JvbGxpbmcgd2l0aCBtb3VzZSBjbGlja1xyXG4gIHRhYmxlT3ZlcmZsb3chOiBib29sZWFuO1xyXG4gIHByaXZhdGUgc2Nyb2xsTW92ZW1lbnQhOiBudW1iZXIgfCBudWxsO1xyXG4gIHByaXZhdGUgaXNEcmFnZ2luZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgc3RhcnRYID0gMDtcclxuICBwcml2YXRlIHN0YXJ0WSA9IDA7XHJcbiAgcHJpdmF0ZSBzY3JvbGxMZWZ0ID0gMDtcclxuICBwcml2YXRlIHNjcm9sbFRvcCA9IDA7XHJcblxyXG4gIGdldCBmaWx0ZXJBY3RpdmUoKSB7IHJldHVybiB0aGlzLmNvbmZpZy5maWx0ZXI/LmVuYWJsZWQ7IH1cclxuICBnZXQgc2hvd0ZpbHRlclRvZ2dsZSgpIHsgcmV0dXJuICF0aGlzLmNvbmZpZy5maWx0ZXI/LmhpZGVGaWx0ZXJUb2dnbGU7IH1cclxuXHJcbiAgZ2V0IHNob3dGaWx0ZXJSZXNldCgpIHsgcmV0dXJuIHRoaXMuY29uZmlnLmZpbHRlcj8uc2V0dGluZ3MuZmlsdGVycz8uZmluZChmaWx0ZXIgPT4gZmlsdGVyLnNlbGVjdGVkVmFsdWVzPy5sZW5ndGgpIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VWYWx1ZSE6IFNlbGVjdGVkQ29sdW1uTG9jYWxTdG9yYWdlQ29uZmlnO1xyXG4gIHJlYWRvbmx5IGJhdGNoQ29sdW1uTmFtZSA9IFwiYmF0Y2hcIjtcclxuICByZWFkb25seSBjb2x1bW5TZWxlY3RDb2x1bW5OYW1lID0gXCJjb2x1bW5TZWxlY3RcIjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkb21TZXJ2aWNlOiBET01TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgLy8jcmVnaW9uIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2tzXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlYWRGcm9tTG9jYWxTdG9yYWdlKCk7XHJcbiAgICB0aGlzLnNldEZpbHRlclZpc2liaWxpdHkoKTtcclxuICAgIHRoaXMuc2V0Q29sdW1uU2VsZWN0UHJvcGVydGllcygpO1xyXG4gICAgdGhpcy5zZXRFeHBvcnRQcm9wZXJ0aWVzKCk7XHJcbiAgICB0aGlzLnNldE5vRGF0YVJvd1Byb3BlcnRpZXMoKTtcclxuICAgIHRoaXMucHJlc2VsZWN0ZWRJdGVtcyA9IHRoaXMubWF0U2VsZWN0aW9uLnNlbGVjdGVkO1xyXG4gICAgdGhpcy5zZWFyY2hUb29sdGlwID0gdGhpcy5jb25maWcuZmlsdGVyPy5zZXR0aW5ncz8uc2VhcmNoVG9vbHRpcCA/PyAnRklMVEVSX0JBUi5TRUFSQ0hfVE9PTFRJUCc7XHJcbiAgICB0aGlzLnNlYXJjaFRpdGxlID0gdGhpcy5jb25maWcuZmlsdGVyPy5zZXR0aW5ncz8uc2VhcmNoVGl0bGUgPz8gJ0ZJTFRFUl9CQVIuU0VBUkNIJztcclxuICAgIHRoaXMuc2hvd1NlYXJjaCA9ICF0aGlzLmNvbmZpZy5maWx0ZXI/LnNldHRpbmdzPy5oaWRlU2VhcmNoO1xyXG4gICAgdGhpcy5zaG93U2VhcmNoQ2xlYXJCdXR0b24gPSB0aGlzLmNvbmZpZy5maWx0ZXI/LnNldHRpbmdzPy5zaG93U2VhcmNoQ2xlYXJCdXR0b24gPz8gZmFsc2U7XHJcbiAgICB0aGlzLmhpZGVTZWFyY2hUb29sdGlwID0gIXRoaXMuY29uZmlnLmZpbHRlcj8uc2V0dGluZ3M/LmhpZGVUb29sdGlwO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgdGhpcy5jb2x1bW5EZWZzLmZvckVhY2goY29sdW1uRGVmID0+IHRoaXMudGFibGUuYWRkQ29sdW1uRGVmKGNvbHVtbkRlZikpO1xyXG4gICAgdGhpcy5yb3dEZWZzLmZvckVhY2gocm93RGVmID0+IHRoaXMudGFibGUuYWRkUm93RGVmKHJvd0RlZikpO1xyXG4gICAgdGhpcy5oZWFkZXJSb3dEZWZzLmZvckVhY2goaGVhZGVyUm93RGVmID0+IHRoaXMudGFibGUuYWRkSGVhZGVyUm93RGVmKGhlYWRlclJvd0RlZikpO1xyXG4gICAgdGhpcy5oZWFkZXJSb3dEZWZzLmZvckVhY2goaGVhZGVyUm93RGVmID0+IHRoaXMudGFibGUuYWRkSGVhZGVyUm93RGVmKGhlYWRlclJvd0RlZikpO1xyXG4gICAgdGhpcy50YWJsZS5zZXROb0RhdGFSb3codGhpcy5ub0RhdGFSb3cpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWcuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgc2VhcmNoKGV2ZW50OiB7IHRhcmdldDogeyB2YWx1ZTogc3RyaW5nIH0gfSB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8udmFsdWU7XHJcbiAgICB0aGlzLmZpbHRlckJhckNoYW5nZS5lbWl0KHsgLi4udGhpcy5maWx0ZXJzLCBpbnB1dCB9KTsgICAgXHJcbiAgfVxyXG5cclxuICB1cGRhdGVEaXNwbGF5Q29sdW1ucyhpbml0aWFsID0gZmFsc2UpIHtcclxuICAgIHRoaXMuYmF0Y2hTZWxlY3RlZEVuYWJsZWQgPSB0aGlzLmNvbmZpZy5iYXRjaENvbmZpZz8uZW5hYmxlZCA/IHRydWUgOiBmYWxzZTtcclxuICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLmNvbmZpZy5jb2x1bW5TZWxlY3Q/LmNvbHVtbnMgPz8gW107XHJcbiAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gW107XHJcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZUNvbHVtbnMgPSBhbGxDb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5ub3RDb25maWd1cmFibGUpO1xyXG5cclxuICAgIGlmICh0aGlzLmJhdGNoU2VsZWN0ZWRFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMucHVzaCh0aGlzLmJhdGNoQ29sdW1uTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFhbGxDb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSB0aGlzLmxvY2FsU3RvcmFnZVZhbHVlID8/IHt9O1xyXG4gICAgaWYgKCFsb2NhbFN0b3JhZ2VWYWx1ZS5jb2x1bW5zKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZVZhbHVlLmNvbHVtbnMgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBhbGxDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICBpZiAoaW5pdGlhbCkge1xyXG4gICAgICAgIGNvbHVtbi5zZWxlY3RlZCA9IGxvY2FsU3RvcmFnZVZhbHVlLmNvbHVtbnM/Lltjb2x1bW4ubmFtZV0gPz8gY29sdW1uLnNlbGVjdGVkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlVmFsdWUuY29sdW1ucyFbY29sdW1uLm5hbWVdID0gY29sdW1uLnNlbGVjdGVkO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAoY29sdW1uLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucy5wdXNoKGNvbHVtbi5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAodGhpcy5jb2x1bW5TZWxlY3RBY3RpdmUpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucy5wdXNoKHRoaXMuY29sdW1uU2VsZWN0Q29sdW1uTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFpbml0aWFsKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlTG9jYWxTdG9yYWdlKGxvY2FsU3RvcmFnZVZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZUZpbHRlckJhcigpIHtcclxuICAgIGNvbnN0IGxvY2Fsc3RvcmFnZU9iamVjdCA9IHRoaXMubG9jYWxTdG9yYWdlVmFsdWUgPz8ge307XHJcbiAgICBpZiAoIWxvY2Fsc3RvcmFnZU9iamVjdC5maWx0ZXIpIHtcclxuICAgICAgbG9jYWxzdG9yYWdlT2JqZWN0LmZpbHRlciA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsdGVyQmFyVmlzaWJsZSA9ICF0aGlzLmZpbHRlckJhclZpc2libGU7XHJcbiAgICBsb2NhbHN0b3JhZ2VPYmplY3QuZmlsdGVyLnZpc2libGUgPSB0aGlzLmZpbHRlckJhclZpc2libGU7XHJcbiAgICB0aGlzLnVwZGF0ZUxvY2FsU3RvcmFnZShsb2NhbHN0b3JhZ2VPYmplY3QpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyc0NoYW5nZWQoZmlsdGVyczogRmlsdGVyQmFyQ2hhbmdlRXZlbnQpIHtcclxuICAgIHRoaXMuZmlsdGVycyA9IGZpbHRlcnM7XHJcbiAgICB0aGlzLmZpbHRlckJhckNoYW5nZS5lbWl0KHRoaXMuZmlsdGVycyk7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmNvbmZpZy5maWx0ZXI/LnNldHRpbmdzLmZpbHRlcnM/LmZvckVhY2goKGZpbHRlcikgPT4ge1xyXG4gICAgICBmaWx0ZXIuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5maWx0ZXJCYXIucmVtb3ZlQWxsRmlsdGVycygpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0KCkge1xyXG4gICAgdGhpcy5jb25maWcuZGF0YVNvdXJjZS5jb25uZWN0KCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5leHBvcnRlZC5lbWl0KGRhdGEpO1xyXG4gICAgfSlcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcuZXhwb3J0Py5maWxlT3B0aW9ucykge1xyXG4gICAgICB0aGlzLmV4cG9ydFRvRmlsZSgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHRFbGVtZW50KGVsZW1lbnQ6IFQpIHtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodGVkRWxlbWVudHM/LmluY2x1ZGVzKGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaGlnaGxpZ2h0RXJyb3JFbGVtZW50KGVsZW1lbnQ6IFQpIHtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodGVkRXJyb3JFbGVtZW50cz8uaW5jbHVkZXMoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gTWV0aG9kcyBmb3IgYmF0Y2ggc2VsZWN0aW9uXHJcbiAgaXNBbGxTZWxlY3RlZCgpIHtcclxuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5tYXRTZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xyXG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuY29uZmlnLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XHJcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBbGxSb3dTZWxlY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgaWYgKHRoaXMuZGlzYWJsZVByZXNlbGVjdGVkSXRlbXMpIHtcclxuICAgICAgICAvLyBkZXNlbGVjdCBvbmx5IHRob3NlIGl0ZW1zIHdoaWNoIHdlcmUgbm90IGFscmVhZHkgcHJlc2VsZWN0ZWRcclxuICAgICAgICB0aGlzLm1hdFNlbGVjdGlvbi5kZXNlbGVjdChcclxuICAgICAgICAgIC4uLnRoaXMubWF0U2VsZWN0aW9uLnNlbGVjdGVkLmZpbHRlcihlbG0gPT4gIXRoaXMucHJlc2VsZWN0ZWRJdGVtcy5tYXAoZWxtID0+IGVsbSkuaW5jbHVkZXMoZWxtKSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm1hdFNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWF0U2VsZWN0aW9uLnNlbGVjdCguLi50aGlzLmNvbmZpZy5kYXRhU291cmNlLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRWxlbWVudFNlbGVjdGlvbihlbGVtZW50OiBUKSB7XHJcbiAgICB0aGlzLm1hdFNlbGVjdGlvbi50b2dnbGUoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQucGFnZVggLSB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIHRoaXMuc3RhcnRZID0gZXZlbnQucGFnZVkgLSB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgdGhpcy5zY3JvbGxMZWZ0ID0gdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XHJcbiAgICB0aGlzLnNjcm9sbFRvcCA9IHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A7XHJcblxyXG4gICAgLy8gY2FuY2VsaW5nIGFueSBwcmV2aW91cyBhbmltYXRpb24gZnJhbWVcclxuICAgIGlmICh0aGlzLnNjcm9sbE1vdmVtZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuc2Nyb2xsTW92ZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5jaGVja1RhYmxlT3ZlcmZsb3coKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgIC8vIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3Igc21vb3RoZXIgdXBkYXRlc1xyXG4gICAgIGlmICh0aGlzLnNjcm9sbE1vdmVtZW50ID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsTW92ZW1lbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy50YWJsZU92ZXJmbG93KSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IHggPSBldmVudC5wYWdlWCAtIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgICAgIGNvbnN0IHkgPSBldmVudC5wYWdlWSAtIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcblxyXG4gICAgICAgIC8vIGNhbGN1bGF0aW5nIHRoZSBkaWZmZXJlbmNlcyBpbiBtb3ZlbWVudFxyXG4gICAgICAgIGNvbnN0IHdhbGtYID0gKHggLSB0aGlzLnN0YXJ0WCkgKiAyO1xyXG4gICAgICAgIGNvbnN0IHdhbGtZID0gKHkgLSB0aGlzLnN0YXJ0WSkgKiAyO1xyXG5cclxuICAgICAgICAvLyB1cGRhdGluZyBzY3JvbGwgcG9zaXRpb25zXHJcbiAgICAgICAgdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLnNjcm9sbExlZnQgLSB3YWxrWDtcclxuICAgICAgICB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5zY3JvbGxUb3AgLSB3YWxrWTtcclxuXHJcbiAgICAgICAgdGhpcy5zY3JvbGxNb3ZlbWVudCA9IG51bGw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBvbk1vdXNlVXAoKSB7XHJcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAvLyBjYW5jZWxpbmcgYW55IHBlbmRpbmcgYW5pbWF0aW9uXHJcbiAgICBpZiAodGhpcy5zY3JvbGxNb3ZlbWVudCAhPT0gbnVsbCkge1xyXG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnNjcm9sbE1vdmVtZW50KTtcclxuICAgICAgdGhpcy5zY3JvbGxNb3ZlbWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBwcml2YXRlIGNoZWNrVGFibGVPdmVyZmxvdygpOiB2b2lkIHtcclxuICAgIC8vIHdoZW4gZGF0YSBpcyBhdmFpbGFibGUgd2Ugc2hvdWxkIGNoZWNrIG9uY2UgZm9yIHRhYmxlIG92ZXJmbG93XHJcbiAgICAvLyB3aGVuIHRoZXJlIHdhc250IG92ZXJmbG93LCBidXQgd2lkdGggb2YgdGhlIHRhYmxlIGJlY2FtZSBiaWdnZXIsIHRoZW4gd2UgYXJlIHJlc2V0aW5nIHRhYmxlT3ZlcmZsb3cgdmFyaWFibGVcclxuICAgIC8vIHNhbWUgZm9yIHdoZW4gdGhlcmUgd2FzIG92ZXJmbG93LCBidXQgc2l6ZSBvZiB0aGUgdGFibGUgaXMgc2FtZSBhcyBjb250YWluZXIsIHNvIG92ZXJmbG93IGlzIGdvbmUgYW5kIHdlIHJlc2V0aW5nIHRhYmxlT3ZlcmZsb3cgdmFyaWFibGUgYWdhaW5cclxuICAgIGlmICgodGhpcy5jb25maWcuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCAmJiAgdGhpcy50YWJsZU92ZXJmbG93ID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICghdGhpcy50YWJsZU92ZXJmbG93ICYmIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA8ICB0aGlzLnRhYmxlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKSB8fFxyXG4gICAgICAodGhpcy50YWJsZU92ZXJmbG93ICYmIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA9PT0gdGhpcy50YWJsZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCkpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA8IHRoaXMudGFibGVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgpIHtcclxuICAgICAgICAgIHRoaXMudGFibGVPdmVyZmxvdyA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudGFibGVPdmVyZmxvdyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwb3J0VG9GaWxlKCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5leHBvcnQ/LmZpbGVPcHRpb25zPy5zYXZlVG9GaWxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZmlsZVN0cmluZyA9IFwiXCI7XHJcbiAgICBsZXQgZXh0ZW5zaW9uITogRXhwb3J0Rm9ybWF0O1xyXG4gICAgc3dpdGNoICh0aGlzLmNvbmZpZy5leHBvcnQuZmlsZU9wdGlvbnMuZm9ybWF0KSB7XHJcbiAgICAgIGNhc2UgRXhwb3J0Rm9ybWF0LkNTVjpcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBleHRlbnNpb24gPSBFeHBvcnRGb3JtYXQuQ1NWO1xyXG4gICAgICAgIGZpbGVTdHJpbmcgPSBIdG1sRWxlbWVudFBhcnNlSGVscGVyLnRhYmxlQXNDc3YodGhpcy50YWJsZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5pZ25vcmVBdHRyaWJ1dGVOYW1lKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGNvbnN0IHRyYW5zbGF0ZWRGaWxlTmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuY29uZmlnLmV4cG9ydC5maWxlT3B0aW9ucy5maWxlTmFtZSk7XHJcbiAgICBTYXZlRmlsZUhlbHBlci5zYXZlRmlsZShmaWxlU3RyaW5nLCBgJHt0cmFuc2xhdGVkRmlsZU5hbWV9LiR7ZXh0ZW5zaW9ufWApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVMb2NhbFN0b3JhZ2UobmV3VmFsdWU6IFNlbGVjdGVkQ29sdW1uTG9jYWxTdG9yYWdlQ29uZmlnKSB7XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICBpZiAodGhpcy5jb25maWcubG9jYWxTdG9yYWdlS2V5ICYmIG5ld1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2U/LnNldEl0ZW0odGhpcy5jb25maWcubG9jYWxTdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIHJlYWRGcm9tTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmxvY2FsU3RvcmFnZUtleSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGxvY2FsU3RvcmFnZVN0cmluZyA9IHRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0odGhpcy5jb25maWcubG9jYWxTdG9yYWdlS2V5KTtcclxuICAgICAgICBpZiAobG9jYWxTdG9yYWdlU3RyaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZVZhbHVlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VTdHJpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHlcclxuICAgICAgY2F0Y2gge1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvbHVtblNlbGVjdFByb3BlcnRpZXMoKSB7XHJcbiAgICB0aGlzLmNvbHVtblNlbGVjdEFjdGl2ZSA9IHRoaXMuY29uZmlnLmNvbHVtblNlbGVjdD8uZW5hYmxlZCA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMudXBkYXRlRGlzcGxheUNvbHVtbnModHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpbHRlclZpc2liaWxpdHkoKSB7XHJcbiAgICB0aGlzLmZpbHRlckJhclZpc2libGUgPSB0aGlzLmxvY2FsU3RvcmFnZVZhbHVlPy5maWx0ZXI/LnZpc2libGUgPz8gdGhpcy5jb25maWc/LmZpbHRlcj8udmlzaWJsZSA/PyBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Tm9EYXRhUm93UHJvcGVydGllcygpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5ub0RhdGFSb3cpIHtcclxuICAgICAgdGhpcy5ub0RhdGFSb3dBY3RpdmUgPSB0cnVlO1xyXG4gICAgICB0aGlzLm5vRGF0YVJvd0NvbmZpZyA9IHRoaXMuY29uZmlnLm5vRGF0YVJvdztcclxuICAgICAgdGhpcy5ub0RhdGFSb3dDb25maWcuaWNvbiA9IHRoaXMuY29uZmlnLm5vRGF0YVJvdz8uaWNvbiA/PyB0aGlzLm5vRGF0YVJvd0ljb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEV4cG9ydFByb3BlcnRpZXMoKSB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuZXhwb3J0Py5lbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0QWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiMC43NXJlbVwiPlxyXG5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXQubHQtbWQ9XCJjb2x1bW5cIiBmeExheW91dEdhcC5sdC1tZD1cIjAuNzVyZW1cIj5cclxuICAgIDxkaXYgZnhGbGV4IGZ4TGF5b3V0Lmx0LW1kPVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIwLjc1cmVtXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4TGF5b3V0QWxpZ24ubHQtbWQ9XCJzdGFydCBzdGFydFwiIGNsYXNzPVwiYWN0aW9uLXJvd1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZXhwb3J0LWRhdGFcIiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5LWFjY2VudC1kYXJrZXJcIiAqbmdJZj1cImV4cG9ydEFjdGl2ZVwiIChjbGljayk9XCJleHBvcnQoKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5jbG91ZF9kb3dubG9hZDwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj57eydNVUxUSV9GVU5DVElPTkFMX1RBQkxFLkVYUE9SVCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyQWN0aXZlICYmIHNob3dGaWx0ZXJUb2dnbGVcIiBmeEZsZXggZnhMYXlvdXRHYXA9XCIwLjVyZW1cIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBbY2xhc3MuZmlsdGVyLWFjdGl2ZV09XCJmaWx0ZXJCYXJWaXNpYmxlXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeS1hY2NlbnQtZGFya2VyXCIgKGNsaWNrKT1cInRvZ2dsZUZpbHRlckJhcigpXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+ZmlsdGVyX2xpc3Q8L3NwYW4+XHJcbiAgICAgICAgICA8c3Bhbj57eydNVUxUSV9GVU5DVElPTkFMX1RBQkxFLkZJTFRFUl9UT0dHTEUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dGaWx0ZXJSZXNldFwiIGNsYXNzPVwiY2xlYXItZmlsdGVycy13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJGaWx0ZXJzKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93U2VhcmNoXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgY2xhc3M9XCJ3aWxkLXNlYXJjaC13cmFwcGVyXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBbbWF0VG9vbHRpcF09XCJoaWRlU2VhcmNoVG9vbHRpcCA/ICcnIDogc2VhcmNoVG9vbHRpcCB8IHRyYW5zbGF0ZVwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgIDxpbnB1dCAjd2lsZFNlYXJjaCB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hUaXRsZSB8IHRyYW5zbGF0ZVwiIChrZXl1cCk9XCJzZWFyY2goJGV2ZW50KVwiPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd1NlYXJjaENsZWFyQnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwid2lsZC1zZWFyY2gtY2xlYXItYnRuXCIgKGNsaWNrKT1cIndpbGRTZWFyY2gudmFsdWUgPSAnJzsgc2VhcmNoKHsgdGFyZ2V0OiB7IHZhbHVlOiAnJyB9IH0pXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYWRkaXRpb25hbEFjdGlvbnNdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8dGxkLWZpbHRlci1iYXIgKm5nSWY9XCJjb25maWcuZmlsdGVyICYmIGNvbmZpZy5maWx0ZXIuZW5hYmxlZFwiICNmaWx0ZXJCYXIgW2ZpbHRlclJvd1Zpc2libGVdPVwiZmlsdGVyQmFyVmlzaWJsZVwiIFtzZXR0aW5nc109XCJjb25maWcuZmlsdGVyLnNldHRpbmdzXCJcclxuICAgIChmaWx0ZXJCYXJDaGFuZ2UpPVwiZmlsdGVyc0NoYW5nZWQoJGV2ZW50KVwiPlxyXG4gIDwvdGxkLWZpbHRlci1iYXI+XHJcblxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYXRjaEFjdGlvbnNdXCI+PC9uZy1jb250ZW50PlxyXG5cclxuICA8ZGl2IFxyXG4gICAgI3RhYmxlQ29udGFpbmVyXHJcbiAgICBjbGFzcz1cInRhYmxlLW92ZXJmbG93XCJcclxuICAgIFtjbGFzcy50YWJsZS1zdGlja3ktaGVhZGVyXT1cImNvbmZpZz8uc3RpY2t5SGVhZGVyXCJcclxuICAgIFtjbGFzcy50YWJsZS1kcmFnYWJsZV09XCJ0YWJsZU92ZXJmbG93XCJcclxuICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXHJcbiAgICAobW91c2V1cCk9XCJvbk1vdXNlVXAoKVwiXHJcbiAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlVXAoKVwiXHJcbiAgICAobW91c2Vtb3ZlKT1cIm9uTW91c2VNb3ZlKCRldmVudClcIlxyXG4gID5cclxuICAgIDx0YWJsZSAjdGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImNvbmZpZy5kYXRhU291cmNlXCIgW3RyYWNrQnldPVwidHJhY2tCeUZuXCI+XHJcbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImJhdGNoQ29sdW1uTmFtZVwiPlxyXG4gICAgICAgIDx0aCBjbGFzcz1cInJvdy1zZWxlY3RcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgZGlzYWJsZS1leHBvcnQ+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94IFttYXRUb29sdGlwXT1cIidNVUxUSV9GVU5DVElPTkFMX1RBQkxFLlNFTEVDVF9BTEwnIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cImNvbmZpZy5iYXRjaENvbmZpZyEuY2hlY2tCb3hlc0Rpc2FibGVkXCIgKGNoYW5nZSk9XCJ0b2dnbGVBbGxSb3dTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cIm1hdFNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cIm1hdFNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIj5cclxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwicm93LXNlbGVjdFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBkaXNhYmxlLWV4cG9ydD5cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidNVUxUSV9GVU5DVElPTkFMX1RBQkxFLlNFTEVDVCcgfCB0cmFuc2xhdGVcIiAqbmdJZj1cImlzUm93Q2hlY2tib3hBbHdheXNWaXNpYmxlIHx8IGhvdmVyZWRSb3cgPT09IGVsZW1lbnQgfHwgbWF0U2VsZWN0aW9uLmlzU2VsZWN0ZWQoZWxlbWVudClcIiBcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbmZpZy5iYXRjaENvbmZpZyEuY2hlY2tCb3hlc0Rpc2FibGVkIHx8IChwcmVzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGVsZW1lbnQpICYmIGRpc2FibGVQcmVzZWxlY3RlZEl0ZW1zKVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUVsZW1lbnRTZWxlY3Rpb24oZWxlbWVudClcIiBbY2hlY2tlZF09XCJtYXRTZWxlY3Rpb24uaXNTZWxlY3RlZChlbGVtZW50KVwiPlxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheUNvbHVtbnM7IHN0aWNreTogY29uZmlnPy5zdGlja3lIZWFkZXIgPz8gZmFsc2VcIj48L3RyPlxyXG4gICAgICA8dHIgXHJcbiAgICAgICAgbWF0LXJvdyBcclxuICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgXHJcbiAgICAgICAgY29sdW1uczogZGlzcGxheUNvbHVtbnNcIiBcclxuICAgICAgICAoY2xpY2spPVwiY29uZmlnPy5yb3dDbGlja0NhbGxiYWNrICYmICFjb25maWc/LmRpc2FibGVSb3dDbGljayhyb3cpID8gY29uZmlnPy5yb3dDbGlja0NhbGxiYWNrKHJvdykgOiBudWxsXCJcclxuICAgICAgICAobW91c2VvdmVyKT1cImhvdmVyZWRSb3cgPSByb3dcIiBcclxuICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkUm93ID0gbnVsbFwiIFxyXG4gICAgICAgIFtjbGFzcy5yb3ctY2xpY2thYmxlXT1cImNvbmZpZz8ucm93Q2xpY2tDYWxsYmFjayAmJiAhY29uZmlnPy5kaXNhYmxlUm93Q2xpY2socm93KVwiIFxyXG4gICAgICAgIFtjbGFzcy5oaWdobGlnaHQtZXJyb3JdPVwiaGlnaGxpZ2h0RXJyb3JFbGVtZW50KHJvdylcIiBcclxuICAgICAgICBbY2xhc3MuaGlnaGxpZ2h0XT1cInJvdyA9PT0gaG92ZXJlZFJvdyB8fCBoaWdobGlnaHRFbGVtZW50KHJvdylcIj5cclxuICAgICAgPC90cj5cclxuICAgICAgXHJcbiAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW5TZWxlY3RDb2x1bW5OYW1lXCI+XHJcbiAgICAgICAgPHRoIGNsYXNzPVwicm93LXNlbGVjdFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBkaXNhYmxlLWV4cG9ydD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tc2VsZWN0b3Itd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29sdW1uLXNlbGVjdG9yXCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwicHJpbWFyeS1hY2NlbnQtZGFya2VyXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbHVtbk1lbnVcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+bW9yZV92ZXJ0PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwicm93LXNlbGVjdFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBkaXNhYmxlLWV4cG9ydD5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vRGF0YVJvd0FjdGl2ZVwiPlxyXG4gICAgICAgIDx0ciAqbWF0Tm9EYXRhUm93PlxyXG4gICAgICAgICAgPCEtLSBhZGQgcmFuZG9tIG51bWJlciB0byBtYWtlIHN1cmUgaXQgdGFrZXMgZnVsbCB3aWR0aCAtLT5cclxuICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiOTlcIj5cclxuICAgICAgICAgICAgPGxpYi1zdGF0dXMtZGlzcGxheSBbY29uZmlnXT1cIm5vRGF0YVJvd0NvbmZpZ1wiPjwvbGliLXN0YXR1cy1kaXNwbGF5PlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG1hdC1tZW51ICNjb2x1bW5NZW51PVwibWF0TWVudVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tc2VsZWN0LW1lbnVcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29uZmlndXJhYmxlQ29sdW1uc1wiPlxyXG4gICAgICA8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiY29sdW1uLnNlbGVjdGVkXCI+XHJcbiAgICAgICAge3tjb2x1bW4uZGlzcGxheU5hbWUgfCB0cmFuc2xhdGV9fVxyXG4gICAgICA8L21hdC1jaGVja2JveD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tc2VsZWN0LXNhdmVcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5LWFjY2VudC1kYXJrZXJcIiAoY2xpY2spPVwidXBkYXRlRGlzcGxheUNvbHVtbnMoKVwiPnt7IFwiTVVMVElfRlVOQ1RJT05BTF9UQUJMRS5DT0xVTU5fU0VMRUNUX1NBVkVcIiB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LW1lbnU+XHJcbiJdfQ==
597
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktZnVuY3Rpb25hbC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvbXVsdGktZnVuY3Rpb25hbC10YWJsZS9tdWx0aS1mdW5jdGlvbmFsLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9tdWx0aS1mdW5jdGlvbmFsLXRhYmxlL211bHRpLWZ1bmN0aW9uYWwtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBbUMsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqTCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRyxPQUFPLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTdELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNQbEMsa0NBQXFIO0lBQW5CLDRMQUFTLGVBQVEsS0FBQztJQUNsSCxnQ0FBc0M7SUFBQSw4QkFBYztJQUFBLGlCQUFPO0lBQzNELDRCQUFNO0lBQUEsWUFBK0M7O0lBQ3ZELEFBRHVELGlCQUFPLEVBQ3JEOztJQURELGVBQStDO0lBQS9DLDJFQUErQzs7OztJQVVuRCxBQURGLCtCQUEyRCxpQkFDUjtJQUF6QixnTUFBUyxxQkFBYyxLQUFDO0lBQzlDLGdDQUFVO0lBQUEscUJBQUs7SUFFbkIsQUFERSxBQURpQixpQkFBVyxFQUNuQixFQUNMOzs7O0lBVE4sQUFERiwrQkFBdUcsaUJBQ3lCO0lBQTVCLHlMQUFTLHdCQUFpQixLQUFDO0lBQzNILGdDQUE2QjtJQUFBLDJCQUFXO0lBQUEsaUJBQU87SUFDL0MsNEJBQU07SUFBQSxZQUFzRDs7SUFDOUQsQUFEOEQsaUJBQU8sRUFDNUQ7SUFFVCxxRkFBMkQ7SUFLN0QsaUJBQU07OztJQVZJLGNBQXdDO0lBQXhDLHdEQUF3QztJQUV4QyxlQUFzRDtJQUF0RCxrRkFBc0Q7SUFHeEQsZUFBcUI7SUFBckIsNkNBQXFCOzs7O0lBVzdCLGtDQUF1SjtJQUFuRSwrUEFBNEIsRUFBRSx3QkFBRSxjQUFPLFVBQVUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUM7SUFDcEosZ0NBQVU7SUFBQSxxQkFBSztJQUNqQixBQURpQixpQkFBVyxFQUNuQjs7OztJQUpULEFBREYsK0JBQWdHLG1CQUNsQjs7SUFBQSxzQkFBTTtJQUFBLGlCQUFXO0lBQzdGLG9DQUFnRzs7SUFBekIsOExBQVMscUJBQWMsS0FBQztJQUEvRixpQkFBZ0c7SUFDaEcsMkZBQXVKO0lBR3pKLGlCQUFNOzs7SUFMTSxjQUFpRTtJQUFqRSx1R0FBaUU7SUFDNUMsZUFBdUM7SUFBdkMsc0VBQXVDO0lBQzdELGVBQTJCO0lBQTNCLG1EQUEyQjs7OztJQVF4Qyw2Q0FDNkM7SUFBM0Msc09BQW1CLDZCQUFzQixLQUFDO0lBQzVDLGlCQUFpQjs7O0lBRitGLEFBQXRDLDBEQUFxQywyQ0FBb0M7Ozs7SUFvQjNJLEFBREYsOEJBQXdFLHVCQUdOOztJQUZpRSxrTUFBVSw4QkFBdUIsS0FBQztJQUlySyxBQURFLGlCQUFlLEVBQ1o7OztJQUpXLGNBQThEO0lBRTFFLEFBREEsQUFEMkUsQUFBL0Qsc0ZBQThELDBEQUFvRCxxRUFDeEUsNEVBQ087Ozs7SUFJL0Qsd0NBRzBGOztJQUF4RixBQUR1SCxrTEFBUyx3QkFBd0IsS0FBQyxzUEFDL0ksMENBQStCLEtBQUM7SUFDNUMsaUJBQWU7Ozs7SUFEOEIsQUFEM0MsQUFEQSxrRkFBMEQsNklBQzRELHdEQUMvQjs7O0lBSjNGLDhCQUF5RTtJQUN2RSx1R0FHMEY7SUFFNUYsaUJBQUs7Ozs7SUFKMkQsY0FBOEY7SUFBOUYsNElBQThGOzs7SUFNaEsseUJBQWlHOzs7O0lBQ2pHLDhCQVNrRTtJQUhoRSxBQURBLEFBREEsdWFBQXFHLElBQUksS0FBQywyT0FDNUUsdU1BQ0gsSUFBSSxLQUFDO0lBSWxDLGlCQUFLOzs7O0lBREgsQUFEQSxBQURBLDRLQUFpRiwwREFDN0IsZ0ZBQ1c7OztJQU96RCxBQURGLEFBREYsQUFERiw4QkFBd0UsY0FDakMsaUJBQzRFLGVBQ2hGO0lBQUEseUJBQVM7SUFHNUMsQUFERSxBQURFLEFBRHdDLGlCQUFPLEVBQ3RDLEVBQ0wsRUFDSDs7OztJQUo2RSxlQUFnQztJQUFoQyxrREFBZ0M7OztJQUtsSCx5QkFDSzs7O0lBS0gsQUFGRiwwQkFBa0IsYUFFQztJQUNmLHlDQUFvRTtJQUV4RSxBQURFLGlCQUFLLEVBQ0Y7OztJQUZtQixlQUEwQjtJQUExQiwrQ0FBMEI7OztJQUpwRCw2QkFBc0M7SUFDcEMsNkZBQWtCOzs7OztJQWNwQixBQURGLDJCQUFnRCx1QkFDRjtJQUE5Qix3VEFBNkI7SUFDekMsWUFDRjs7SUFDRixBQURFLGlCQUFlLEVBQ1g7OztJQUhVLGNBQTZCO0lBQTdCLG1EQUE2QjtJQUN6QyxjQUNGO0lBREUsNkVBQ0Y7O0FEcEZOLE1BQU0sT0FBTyw2QkFBNkI7SUFPeEMsSUFBYSxTQUFTLENBQUMsS0FBVTtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQThCRCxJQUFJLG1CQUFtQixLQUFLLE9BQU8sNkJBQTZCLENBQUEsQ0FBQyxDQUFDO0lBbUNsRSxJQUFJLFlBQVksS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDMUQsSUFBSSxnQkFBZ0IsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBRXhFLElBQUksZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQU1wSCxZQUE2QixVQUFzQixFQUNoQyxnQkFBa0M7UUFEeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbkY1QyxpQkFBWSxHQUFHLElBQUksY0FBYyxDQUFJLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQVV4RCx5RUFBeUU7UUFDaEUsK0JBQTBCLEdBQUcsSUFBSSxDQUFDO1FBRWxDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUV6QywyQkFBMkI7UUFDakIsb0JBQWUsR0FBdUMsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFDL0YsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RELG9CQUFlLEdBQW9CLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFxQzlJLGtCQUFhLEdBQUcsZUFBZSxDQUFDO1FBWXhCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsY0FBUyxHQUFHLENBQUMsQ0FBQztRQVFiLG9CQUFlLEdBQUcsT0FBTyxDQUFDO1FBQzFCLDJCQUFzQixHQUFHLGNBQWMsQ0FBQztJQUdRLENBQUM7SUFFMUQsaUNBQWlDO0lBQ2pDLFFBQVE7UUFDTixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDbkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxJQUFJLDJCQUEyQixDQUFDO1FBQ2hHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsSUFBSSxtQkFBbUIsQ0FBQztRQUNwRixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQztRQUM1RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixJQUFJLEtBQUssQ0FBQztRQUMxRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzFDLENBQUM7SUFDRCxZQUFZO0lBRVosTUFBTSxDQUFDLEtBQW9EO1FBQ3pELE1BQU0sS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixFQUFFLEtBQUssQ0FBQztRQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFPLEdBQUcsS0FBSztRQUNsQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM1RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFaEYsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9CLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakMsQ0FBQztRQUVELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM1QixJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLE1BQU0sQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDaEYsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLG9FQUFvRTtnQkFDcEUsaUJBQWlCLENBQUMsT0FBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQzVELENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztRQUN4RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0Isa0JBQWtCLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQyxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBNkI7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN2RCxNQUFNLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBVTtRQUN6QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQVU7UUFDOUIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsYUFBYTtRQUNYLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUN0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ25ELE9BQU8sV0FBVyxLQUFLLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDekIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDakMsK0RBQStEO2dCQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDeEIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDbEcsQ0FBQztnQkFDRixPQUFPO1lBQ1QsQ0FBQztpQkFDSSxDQUFDO2dCQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzFCLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQVU7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFpQjtRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDeEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFDL0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFFN0QseUNBQXlDO1FBQ3pDLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNqQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUVBLG1EQUFtRDtRQUNuRCxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3hCLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztnQkFDckUsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7Z0JBRXBFLDBDQUEwQztnQkFDMUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFcEMsNEJBQTRCO2dCQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFFckUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV4QixrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2pDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUNELFlBQVk7SUFFSixrQkFBa0I7UUFDeEIsaUVBQWlFO1FBQ2pFLCtHQUErRztRQUMvRyxpSkFBaUo7UUFDakosSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUssSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTLENBQUM7WUFDM0UsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUN4SCxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFFekgsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25HLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUM3QixDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDakQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxTQUF3QixDQUFDO1FBQzdCLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlDLEtBQUssWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUN0QjtnQkFDRSxTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQztnQkFDN0IsVUFBVSxHQUFHLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDN0csTUFBTTtRQUNWLENBQUM7UUFDRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xHLGNBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsa0JBQWtCLElBQUksU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU8sa0JBQWtCLENBQUMsUUFBMEM7UUFDbkUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDL0YsQ0FBQztJQUNILENBQUM7SUFDTyxvQkFBb0I7UUFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQztnQkFDSCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM5RixJQUFJLGtCQUFrQixFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQzFELENBQUM7WUFDSCxDQUFDO1lBQ0Qsb0NBQW9DO1lBQ3BDLE1BQU0sQ0FBQztZQUNQLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQztJQUMzRyxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ2hGLENBQUM7SUFDSCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7OEhBeFdVLDZCQUE2QjtvRUFBN0IsNkJBQTZCO3dDQTBCMUIsWUFBWTt3Q0FIVCxlQUFlO3dDQUNmLFNBQVM7d0NBQ1QsWUFBWTs7Ozs7Ozs7MkJBR2xCLFFBQVE7MkJBQ1IsT0FBTzs7OzJCQU1QLFFBQVEsS0FBVSxVQUFVOzs7Ozs7Ozs7OztZQ3hEckMsQUFERixBQUZGLDhCQUF3RSxhQUVFLGFBQ3NFO1lBTTFJLEFBTEEsb0ZBQXFILGlFQUtkO1lBWXpHLGlCQUFNO1lBRU4sK0VBQWdHO1lBUWhHLGtCQUFzRDtZQUN4RCxpQkFBTTtZQUVOLHFHQUM2QztZQUc3QyxxQkFBaUQ7WUFFakQsa0NBU0M7WUFEQyxBQURBLEFBREEsQUFEQSwySkFBYSx1QkFBbUIsS0FBQyxvSUFDdEIsZUFBVyxLQUFDLDBJQUNULGVBQVcsS0FBQyw4SUFDYix1QkFBbUIsS0FBQztZQUVqQyxxQ0FBK0U7WUFDN0Usc0JBQXlCO1lBQ3pCLGtDQUErQztZQU83QyxBQU5BLCtFQUF3RSxrRUFNQzs7WUFTM0UsQUFEQSwrRUFBNEYsa0VBVTFCO1lBR2xFLGtDQUFzRDtZQVFwRCxBQVBBLCtFQUF3RSxrRUFPQzs7WUFHM0UsbUdBQXNDO1lBVTVDLEFBREUsQUFERSxpQkFBUSxFQUNKLEVBQ0Y7WUFHSixBQURGLDBDQUFnQyxlQUNxQztZQUFuQyxvSkFBUyx3QkFBd0IsS0FBQztZQUNoRSxpRkFBZ0Q7WUFPOUMsQUFERixnQ0FBZ0Msa0JBQ3lEO1lBQWpDLGlKQUFTLDBCQUFzQixLQUFDO1lBQUMsYUFBNkQ7O1lBRzFKLEFBREUsQUFERSxBQURzSixpQkFBUyxFQUN6SixFQUNGLEVBQ0c7OztZQW5ITix3Q0FBMEI7WUFJcUQsZUFBa0I7WUFBbEIsdUNBQWtCO1lBSzFGLGNBQXNDO1lBQXRDLCtEQUFzQztZQWN4QyxjQUFnQjtZQUFoQixxQ0FBZ0I7WUFXUCxlQUE0QztZQUE1QyxxRUFBNEM7WUFTM0QsZUFBa0Q7WUFDbEQsQUFEQSwwRkFBa0QscUNBQ1o7WUFNZCxlQUFnQztZQUFDLEFBQWpDLGtEQUFnQywwQkFBc0I7WUFFOUQsZUFBZ0M7WUFBaEMsa0RBQWdDO1lBZTFCLGVBQWlDO1lBQUEsQUFBakMsb0RBQWlDLGlKQUFxQztZQUl6RixjQUF1QjtZQUF2QixxREFBdUI7WUFTVixjQUF1QztZQUF2Qyx5REFBdUM7WUFXdEMsZUFBcUI7WUFBckIsMENBQXFCO1lBY2QsZUFBc0I7WUFBdEIsaURBQXNCO1lBTzJDLGVBQTZEO1lBQTdELHlGQUE2RDs7O2lGRHhGN0ksNkJBQTZCO2NBTnpDLFNBQVM7MkJBRUUsNEJBQTRCOzBFQU83QixNQUFNO2tCQUFkLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csd0JBQXdCO2tCQUFoQyxLQUFLO1lBQ08sU0FBUztrQkFBckIsS0FBSztZQUtHLDBCQUEwQjtrQkFBbEMsS0FBSztZQUVHLHVCQUF1QjtrQkFBL0IsS0FBSztZQUdJLGVBQWU7a0JBQXhCLE1BQU07WUFDRyxRQUFRO2tCQUFqQixNQUFNO1lBQ0csZUFBZTtrQkFBeEIsTUFBTTtZQUkyQixhQUFhO2tCQUE5QyxlQUFlO21CQUFDLGVBQWU7WUFDbUIsT0FBTztrQkFBekQsZUFBZTttQkFBQyxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO1lBQ2xCLFVBQVU7a0JBQXhDLGVBQWU7bUJBQUMsWUFBWTtZQUNELFNBQVM7a0JBQXBDLFlBQVk7bUJBQUMsWUFBWTtZQUVhLEtBQUs7a0JBQTNDLFNBQVM7bUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNqQixJQUFJO2tCQUF2QixTQUFTO21CQUFDLE9BQU87WUFFVyxjQUFjO2tCQUExQyxTQUFTO21CQUFDLGdCQUFnQjtZQUNILFNBQVM7a0JBQWhDLFNBQVM7bUJBQUMsV0FBVztZQUdxQixlQUFlO2tCQUF6RCxTQUFTO21CQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7O2tGQW5DOUIsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRDb2x1bW5EZWYsIE1hdEhlYWRlclJvd0RlZiwgTWF0Tm9EYXRhUm93LCBNYXRSb3dEZWYsIE1hdFRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJCYXJDaGFuZ2VFdmVudCB9IGZyb20gJy4uL2ZpbHRlci1iYXIvbW9kZWxzL2ZpbHRlci1iYXItY2hhbmdlLWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgSHRtbEVsZW1lbnRQYXJzZUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBTYXZlRmlsZUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvc2F2ZS1maWxlLmhlbHBlcic7XHJcbmltcG9ydCB7IERPTVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IERJU0FCTEVfRVhQT1JUX0FUVFJJQlVURV9OQU1FIH0gZnJvbSAnLi9jb25zdGFudHMvZGlzYWJsZS1leHBvcnQtYXR0cmlidXRlLW5hbWUuY29uc3QnO1xyXG5pbXBvcnQgeyBFeHBvcnRGb3JtYXQgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IENvbHVtbkNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL2NvbHVtbi1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBNdWx0aUZ1bmN0aW9uYWxUYWJsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL211bHRpLWZ1bmN0aW9uYWwtdGFibGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgU2VsZWN0ZWRDb2x1bW5Mb2NhbFN0b3JhZ2VDb25maWcgfSBmcm9tICcuL21vZGVscy9zZWxlY3RlZC1jb2x1bW4tbG9jYWwtc3RvcmFnZS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBTdGF0dXNEaXNwbGF5Q29uZmlnIH0gZnJvbSAnLi4vc3RhdHVzLWRpc3BsYXkvbW9kZWxzL3N0YXR1cy1kaXNwbGF5LWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbHRlckJhckNvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci1iYXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ3RsZC1tdWx0aS1mdW5jdGlvbmFsLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktZnVuY3Rpb25hbC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGktZnVuY3Rpb25hbC10YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aUZ1bmN0aW9uYWxUYWJsZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcmVhZG9ubHkgbWF0U2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPFQ+KHRydWUsIFtdKTtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnITogTXVsdGlGdW5jdGlvbmFsVGFibGVDb25maWc8VD47XHJcbiAgQElucHV0KCkgaGlnaGxpZ2h0ZWRFbGVtZW50cyE6IFRbXTtcclxuICBASW5wdXQoKSB0cmFja0J5Rm4hOiAoaXg6IG51bWJlciwgcm93OiBUKSA9PiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgQElucHV0KCkgaGlnaGxpZ2h0ZWRFcnJvckVsZW1lbnRzITogVFtdO1xyXG4gIEBJbnB1dCgpIHNldCBzZWxlY3Rpb24odmFsdWU6IFRbXSkge1xyXG4gICAgdGhpcy5tYXRTZWxlY3Rpb24uc2V0U2VsZWN0aW9uKC4uLih2YWx1ZSA/PyBbXSkpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2V0IHRoaXMgdG8gZmFsc2UgaWYgeW91IHdhbnQgdG8gZGlzcGxheSBjaGVja2JveGVzIG9ubHkgb24gcm93IGhvdmVyLlxyXG4gIEBJbnB1dCgpIGlzUm93Q2hlY2tib3hBbHdheXNWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZVByZXNlbGVjdGVkSXRlbXMgPSBmYWxzZTtcclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dCBwcm9wZXJ0aWVzXHJcbiAgQE91dHB1dCgpIGZpbHRlckJhckNoYW5nZTogRXZlbnRFbWl0dGVyPEZpbHRlckJhckNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyQmFyQ2hhbmdlRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydGVkOiBFdmVudEVtaXR0ZXI8VFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IE9ic2VydmFibGU8VFtdPiA9IHRoaXMubWF0U2VsZWN0aW9uLmNoYW5nZWQuYXNPYnNlcnZhYmxlKCkucGlwZShtYXAoKCkgPT4geyByZXR1cm4gdGhpcy5tYXRTZWxlY3Rpb24uc2VsZWN0ZWQ7IH0pKTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzIGZvciBtYXQgdGFibGUgd3JhcHBlclxyXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0SGVhZGVyUm93RGVmKSBoZWFkZXJSb3dEZWZzITogUXVlcnlMaXN0PE1hdEhlYWRlclJvd0RlZj47XHJcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRSb3dEZWYsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcm93RGVmcyE6IFF1ZXJ5TGlzdDxNYXRSb3dEZWY8VD4+O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Q29sdW1uRGVmKSBjb2x1bW5EZWZzITogUXVlcnlMaXN0PE1hdENvbHVtbkRlZj47XHJcbiAgQENvbnRlbnRDaGlsZChNYXROb0RhdGFSb3cpIG5vRGF0YVJvdyE6IE1hdE5vRGF0YVJvdztcclxuXHJcbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwgeyBzdGF0aWM6IHRydWUgfSkgdGFibGUhOiBNYXRUYWJsZTxUPjtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQhOiBNYXRTb3J0O1xyXG5cclxuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRhaW5lcicpIHRhYmxlQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnZmlsdGVyQmFyJykgZmlsdGVyQmFyITogRmlsdGVyQmFyQ29tcG9uZW50O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBAVmlld0NoaWxkKE1hdFRhYmxlLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgdGFibGVFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIHByZXNlbGVjdGVkSXRlbXMhOiBUW107XHJcblxyXG4gIGdldCBpZ25vcmVBdHRyaWJ1dGVOYW1lKCkgeyByZXR1cm4gRElTQUJMRV9FWFBPUlRfQVRUUklCVVRFX05BTUUgfVxyXG4gIGRpc3BsYXlDb2x1bW5zITogc3RyaW5nW107XHJcblxyXG4gIGNvbHVtblNlbGVjdEFjdGl2ZSE6IGJvb2xlYW47XHJcbiAgZXhwb3J0QWN0aXZlITogYm9vbGVhbjtcclxuICBub0RhdGFSb3dBY3RpdmUhOiBib29sZWFuO1xyXG5cclxuICBmaWx0ZXJzITogRmlsdGVyQmFyQ2hhbmdlRXZlbnQ7XHJcbiAgZmlsdGVyQmFyVmlzaWJsZSE6IGJvb2xlYW47XHJcblxyXG4gIGhpZGVTZWFyY2hUb29sdGlwITogYm9vbGVhbjtcclxuICBzaG93U2VhcmNoITogYm9vbGVhbjtcclxuICBzaG93U2VhcmNoQ2xlYXJCdXR0b24hOiBib29sZWFuO1xyXG4gIHNlYXJjaFRpdGxlITogc3RyaW5nO1xyXG4gIHNlYXJjaFRvb2x0aXAhOiBzdHJpbmc7XHJcblxyXG4gIG5vRGF0YVJvd0NvbmZpZyE6IFN0YXR1c0Rpc3BsYXlDb25maWc7XHJcbiAgbm9EYXRhUm93SWNvbiA9IFwibWFuYWdlX3NlYXJjaFwiO1xyXG5cclxuICBjb25maWd1cmFibGVDb2x1bW5zITogQ29sdW1uQ29uZmlnW107XHJcbiAgYmF0Y2hTZWxlY3RlZEVuYWJsZWQhOiBib29sZWFuO1xyXG5cclxuICAvLyBpcyB1c2VkIGluIGh0bWwgdG8gZGlzcGxheSBiYXRjaCBjaGVja2JveCBvbiBob3ZlcmVkIHJvd1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgaG92ZXJlZFJvdzogYW55O1xyXG5cclxuICAvLyBwcm9wZXJ0aWVzIGZvciBvdmVyZmxvdyBzY3JvbGxpbmcgd2l0aCBtb3VzZSBjbGlja1xyXG4gIHRhYmxlT3ZlcmZsb3chOiBib29sZWFuO1xyXG4gIHByaXZhdGUgc2Nyb2xsTW92ZW1lbnQhOiBudW1iZXIgfCBudWxsO1xyXG4gIHByaXZhdGUgaXNEcmFnZ2luZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgc3RhcnRYID0gMDtcclxuICBwcml2YXRlIHN0YXJ0WSA9IDA7XHJcbiAgcHJpdmF0ZSBzY3JvbGxMZWZ0ID0gMDtcclxuICBwcml2YXRlIHNjcm9sbFRvcCA9IDA7XHJcblxyXG4gIGdldCBmaWx0ZXJBY3RpdmUoKSB7IHJldHVybiB0aGlzLmNvbmZpZy5maWx0ZXI/LmVuYWJsZWQ7IH1cclxuICBnZXQgc2hvd0ZpbHRlclRvZ2dsZSgpIHsgcmV0dXJuICF0aGlzLmNvbmZpZy5maWx0ZXI/LmhpZGVGaWx0ZXJUb2dnbGU7IH1cclxuXHJcbiAgZ2V0IHNob3dGaWx0ZXJSZXNldCgpIHsgcmV0dXJuIHRoaXMuY29uZmlnLmZpbHRlcj8uc2V0dGluZ3MuZmlsdGVycz8uZmluZChmaWx0ZXIgPT4gZmlsdGVyLnNlbGVjdGVkVmFsdWVzPy5sZW5ndGgpIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VWYWx1ZSE6IFNlbGVjdGVkQ29sdW1uTG9jYWxTdG9yYWdlQ29uZmlnO1xyXG4gIHJlYWRvbmx5IGJhdGNoQ29sdW1uTmFtZSA9IFwiYmF0Y2hcIjtcclxuICByZWFkb25seSBjb2x1bW5TZWxlY3RDb2x1bW5OYW1lID0gXCJjb2x1bW5TZWxlY3RcIjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkb21TZXJ2aWNlOiBET01TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgLy8jcmVnaW9uIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2tzXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlYWRGcm9tTG9jYWxTdG9yYWdlKCk7XHJcbiAgICB0aGlzLnNldEZpbHRlclZpc2liaWxpdHkoKTtcclxuICAgIHRoaXMuc2V0Q29sdW1uU2VsZWN0UHJvcGVydGllcygpO1xyXG4gICAgdGhpcy5zZXRFeHBvcnRQcm9wZXJ0aWVzKCk7XHJcbiAgICB0aGlzLnNldE5vRGF0YVJvd1Byb3BlcnRpZXMoKTtcclxuICAgIHRoaXMucHJlc2VsZWN0ZWRJdGVtcyA9IHRoaXMubWF0U2VsZWN0aW9uLnNlbGVjdGVkO1xyXG4gICAgdGhpcy5zZWFyY2hUb29sdGlwID0gdGhpcy5jb25maWcuZmlsdGVyPy5zZXR0aW5ncz8uc2VhcmNoVG9vbHRpcCA/PyAnRklMVEVSX0JBUi5TRUFSQ0hfVE9PTFRJUCc7XHJcbiAgICB0aGlzLnNlYXJjaFRpdGxlID0gdGhpcy5jb25maWcuZmlsdGVyPy5zZXR0aW5ncz8uc2VhcmNoVGl0bGUgPz8gJ0ZJTFRFUl9CQVIuU0VBUkNIJztcclxuICAgIHRoaXMuc2hvd1NlYXJjaCA9ICF0aGlzLmNvbmZpZy5maWx0ZXI/LnNldHRpbmdzPy5oaWRlU2VhcmNoO1xyXG4gICAgdGhpcy5zaG93U2VhcmNoQ2xlYXJCdXR0b24gPSB0aGlzLmNvbmZpZy5maWx0ZXI/LnNldHRpbmdzPy5zaG93U2VhcmNoQ2xlYXJCdXR0b24gPz8gZmFsc2U7XHJcbiAgICB0aGlzLmhpZGVTZWFyY2hUb29sdGlwID0gIXRoaXMuY29uZmlnLmZpbHRlcj8uc2V0dGluZ3M/LmhpZGVUb29sdGlwO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgdGhpcy5jb2x1bW5EZWZzLmZvckVhY2goY29sdW1uRGVmID0+IHRoaXMudGFibGUuYWRkQ29sdW1uRGVmKGNvbHVtbkRlZikpO1xyXG4gICAgdGhpcy5yb3dEZWZzLmZvckVhY2gocm93RGVmID0+IHRoaXMudGFibGUuYWRkUm93RGVmKHJvd0RlZikpO1xyXG4gICAgdGhpcy5oZWFkZXJSb3dEZWZzLmZvckVhY2goaGVhZGVyUm93RGVmID0+IHRoaXMudGFibGUuYWRkSGVhZGVyUm93RGVmKGhlYWRlclJvd0RlZikpO1xyXG4gICAgdGhpcy5oZWFkZXJSb3dEZWZzLmZvckVhY2goaGVhZGVyUm93RGVmID0+IHRoaXMudGFibGUuYWRkSGVhZGVyUm93RGVmKGhlYWRlclJvd0RlZikpO1xyXG4gICAgdGhpcy50YWJsZS5zZXROb0RhdGFSb3codGhpcy5ub0RhdGFSb3cpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWcuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgc2VhcmNoKGV2ZW50OiB7IHRhcmdldDogeyB2YWx1ZTogc3RyaW5nIH0gfSB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8udmFsdWU7XHJcbiAgICB0aGlzLmZpbHRlckJhckNoYW5nZS5lbWl0KHsgLi4udGhpcy5maWx0ZXJzLCBpbnB1dCB9KTsgICAgXHJcbiAgfVxyXG5cclxuICB1cGRhdGVEaXNwbGF5Q29sdW1ucyhpbml0aWFsID0gZmFsc2UpIHtcclxuICAgIHRoaXMuYmF0Y2hTZWxlY3RlZEVuYWJsZWQgPSB0aGlzLmNvbmZpZy5iYXRjaENvbmZpZz8uZW5hYmxlZCA/IHRydWUgOiBmYWxzZTtcclxuICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLmNvbmZpZy5jb2x1bW5TZWxlY3Q/LmNvbHVtbnMgPz8gW107XHJcbiAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gW107XHJcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZUNvbHVtbnMgPSBhbGxDb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5ub3RDb25maWd1cmFibGUpO1xyXG5cclxuICAgIGlmICh0aGlzLmJhdGNoU2VsZWN0ZWRFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMucHVzaCh0aGlzLmJhdGNoQ29sdW1uTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFhbGxDb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSB0aGlzLmxvY2FsU3RvcmFnZVZhbHVlID8/IHt9O1xyXG4gICAgaWYgKCFsb2NhbFN0b3JhZ2VWYWx1ZS5jb2x1bW5zKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZVZhbHVlLmNvbHVtbnMgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBhbGxDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICBpZiAoaW5pdGlhbCkge1xyXG4gICAgICAgIGNvbHVtbi5zZWxlY3RlZCA9IGxvY2FsU3RvcmFnZVZhbHVlLmNvbHVtbnM/Lltjb2x1bW4ubmFtZV0gPz8gY29sdW1uLnNlbGVjdGVkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlVmFsdWUuY29sdW1ucyFbY29sdW1uLm5hbWVdID0gY29sdW1uLnNlbGVjdGVkO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAoY29sdW1uLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucy5wdXNoKGNvbHVtbi5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAodGhpcy5jb2x1bW5TZWxlY3RBY3RpdmUpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucy5wdXNoKHRoaXMuY29sdW1uU2VsZWN0Q29sdW1uTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFpbml0aWFsKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlTG9jYWxTdG9yYWdlKGxvY2FsU3RvcmFnZVZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZUZpbHRlckJhcigpIHtcclxuICAgIGNvbnN0IGxvY2Fsc3RvcmFnZU9iamVjdCA9IHRoaXMubG9jYWxTdG9yYWdlVmFsdWUgPz8ge307XHJcbiAgICBpZiAoIWxvY2Fsc3RvcmFnZU9iamVjdC5maWx0ZXIpIHtcclxuICAgICAgbG9jYWxzdG9yYWdlT2JqZWN0LmZpbHRlciA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsdGVyQmFyVmlzaWJsZSA9ICF0aGlzLmZpbHRlckJhclZpc2libGU7XHJcbiAgICBsb2NhbHN0b3JhZ2VPYmplY3QuZmlsdGVyLnZpc2libGUgPSB0aGlzLmZpbHRlckJhclZpc2libGU7XHJcbiAgICB0aGlzLnVwZGF0ZUxvY2FsU3RvcmFnZShsb2NhbHN0b3JhZ2VPYmplY3QpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyc0NoYW5nZWQoZmlsdGVyczogRmlsdGVyQmFyQ2hhbmdlRXZlbnQpIHtcclxuICAgIHRoaXMuZmlsdGVycyA9IGZpbHRlcnM7XHJcbiAgICB0aGlzLmZpbHRlckJhckNoYW5nZS5lbWl0KHRoaXMuZmlsdGVycyk7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmNvbmZpZy5maWx0ZXI/LnNldHRpbmdzLmZpbHRlcnM/LmZvckVhY2goKGZpbHRlcikgPT4ge1xyXG4gICAgICBmaWx0ZXIuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5maWx0ZXJCYXIucmVtb3ZlQWxsRmlsdGVycygpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0KCkge1xyXG4gICAgdGhpcy5jb25maWcuZGF0YVNvdXJjZS5jb25uZWN0KCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5leHBvcnRlZC5lbWl0KGRhdGEpO1xyXG4gICAgfSlcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcuZXhwb3J0Py5maWxlT3B0aW9ucykge1xyXG4gICAgICB0aGlzLmV4cG9ydFRvRmlsZSgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHRFbGVtZW50KGVsZW1lbnQ6IFQpIHtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodGVkRWxlbWVudHM/LmluY2x1ZGVzKGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaGlnaGxpZ2h0RXJyb3JFbGVtZW50KGVsZW1lbnQ6IFQpIHtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodGVkRXJyb3JFbGVtZW50cz8uaW5jbHVkZXMoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gTWV0aG9kcyBmb3IgYmF0Y2ggc2VsZWN0aW9uXHJcbiAgaXNBbGxTZWxlY3RlZCgpIHtcclxuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5tYXRTZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xyXG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuY29uZmlnLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XHJcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBbGxSb3dTZWxlY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgaWYgKHRoaXMuZGlzYWJsZVByZXNlbGVjdGVkSXRlbXMpIHtcclxuICAgICAgICAvLyBkZXNlbGVjdCBvbmx5IHRob3NlIGl0ZW1zIHdoaWNoIHdlcmUgbm90IGFscmVhZHkgcHJlc2VsZWN0ZWRcclxuICAgICAgICB0aGlzLm1hdFNlbGVjdGlvbi5kZXNlbGVjdChcclxuICAgICAgICAgIC4uLnRoaXMubWF0U2VsZWN0aW9uLnNlbGVjdGVkLmZpbHRlcihlbG0gPT4gIXRoaXMucHJlc2VsZWN0ZWRJdGVtcy5tYXAoZWxtID0+IGVsbSkuaW5jbHVkZXMoZWxtKSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm1hdFNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWF0U2VsZWN0aW9uLnNlbGVjdCguLi50aGlzLmNvbmZpZy5kYXRhU291cmNlLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRWxlbWVudFNlbGVjdGlvbihlbGVtZW50OiBUKSB7XHJcbiAgICB0aGlzLm1hdFNlbGVjdGlvbi50b2dnbGUoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQucGFnZVggLSB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgIHRoaXMuc3RhcnRZID0gZXZlbnQucGFnZVkgLSB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xyXG4gICAgdGhpcy5zY3JvbGxMZWZ0ID0gdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XHJcbiAgICB0aGlzLnNjcm9sbFRvcCA9IHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A7XHJcblxyXG4gICAgLy8gY2FuY2VsaW5nIGFueSBwcmV2aW91cyBhbmltYXRpb24gZnJhbWVcclxuICAgIGlmICh0aGlzLnNjcm9sbE1vdmVtZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuc2Nyb2xsTW92ZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5jaGVja1RhYmxlT3ZlcmZsb3coKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgIC8vIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3Igc21vb3RoZXIgdXBkYXRlc1xyXG4gICAgIGlmICh0aGlzLnNjcm9sbE1vdmVtZW50ID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsTW92ZW1lbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy50YWJsZU92ZXJmbG93KSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IHggPSBldmVudC5wYWdlWCAtIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xyXG4gICAgICAgIGNvbnN0IHkgPSBldmVudC5wYWdlWSAtIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XHJcblxyXG4gICAgICAgIC8vIGNhbGN1bGF0aW5nIHRoZSBkaWZmZXJlbmNlcyBpbiBtb3ZlbWVudFxyXG4gICAgICAgIGNvbnN0IHdhbGtYID0gKHggLSB0aGlzLnN0YXJ0WCkgKiAyO1xyXG4gICAgICAgIGNvbnN0IHdhbGtZID0gKHkgLSB0aGlzLnN0YXJ0WSkgKiAyO1xyXG5cclxuICAgICAgICAvLyB1cGRhdGluZyBzY3JvbGwgcG9zaXRpb25zXHJcbiAgICAgICAgdGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLnNjcm9sbExlZnQgLSB3YWxrWDtcclxuICAgICAgICB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5zY3JvbGxUb3AgLSB3YWxrWTtcclxuXHJcbiAgICAgICAgdGhpcy5zY3JvbGxNb3ZlbWVudCA9IG51bGw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBvbk1vdXNlVXAoKSB7XHJcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAvLyBjYW5jZWxpbmcgYW55IHBlbmRpbmcgYW5pbWF0aW9uXHJcbiAgICBpZiAodGhpcy5zY3JvbGxNb3ZlbWVudCAhPT0gbnVsbCkge1xyXG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnNjcm9sbE1vdmVtZW50KTtcclxuICAgICAgdGhpcy5zY3JvbGxNb3ZlbWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBwcml2YXRlIGNoZWNrVGFibGVPdmVyZmxvdygpOiB2b2lkIHtcclxuICAgIC8vIHdoZW4gZGF0YSBpcyBhdmFpbGFibGUgd2Ugc2hvdWxkIGNoZWNrIG9uY2UgZm9yIHRhYmxlIG92ZXJmbG93XHJcbiAgICAvLyB3aGVuIHRoZXJlIHdhc250IG92ZXJmbG93LCBidXQgd2lkdGggb2YgdGhlIHRhYmxlIGJlY2FtZSBiaWdnZXIsIHRoZW4gd2UgYXJlIHJlc2V0aW5nIHRhYmxlT3ZlcmZsb3cgdmFyaWFibGVcclxuICAgIC8vIHNhbWUgZm9yIHdoZW4gdGhlcmUgd2FzIG92ZXJmbG93LCBidXQgc2l6ZSBvZiB0aGUgdGFibGUgaXMgc2FtZSBhcyBjb250YWluZXIsIHNvIG92ZXJmbG93IGlzIGdvbmUgYW5kIHdlIHJlc2V0aW5nIHRhYmxlT3ZlcmZsb3cgdmFyaWFibGUgYWdhaW5cclxuICAgIGlmICgodGhpcy5jb25maWcuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCAmJiAgdGhpcy50YWJsZU92ZXJmbG93ID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICghdGhpcy50YWJsZU92ZXJmbG93ICYmIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA8ICB0aGlzLnRhYmxlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKSB8fFxyXG4gICAgICAodGhpcy50YWJsZU92ZXJmbG93ICYmIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA9PT0gdGhpcy50YWJsZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCkpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA8IHRoaXMudGFibGVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgpIHtcclxuICAgICAgICAgIHRoaXMudGFibGVPdmVyZmxvdyA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudGFibGVPdmVyZmxvdyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwb3J0VG9GaWxlKCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5leHBvcnQ/LmZpbGVPcHRpb25zPy5zYXZlVG9GaWxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZmlsZVN0cmluZyA9IFwiXCI7XHJcbiAgICBsZXQgZXh0ZW5zaW9uITogRXhwb3J0Rm9ybWF0O1xyXG4gICAgc3dpdGNoICh0aGlzLmNvbmZpZy5leHBvcnQuZmlsZU9wdGlvbnMuZm9ybWF0KSB7XHJcbiAgICAgIGNhc2UgRXhwb3J0Rm9ybWF0LkNTVjpcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBleHRlbnNpb24gPSBFeHBvcnRGb3JtYXQuQ1NWO1xyXG4gICAgICAgIGZpbGVTdHJpbmcgPSBIdG1sRWxlbWVudFBhcnNlSGVscGVyLnRhYmxlQXNDc3YodGhpcy50YWJsZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5pZ25vcmVBdHRyaWJ1dGVOYW1lKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGNvbnN0IHRyYW5zbGF0ZWRGaWxlTmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuY29uZmlnLmV4cG9ydC5maWxlT3B0aW9ucy5maWxlTmFtZSk7XHJcbiAgICBTYXZlRmlsZUhlbHBlci5zYXZlRmlsZShmaWxlU3RyaW5nLCBgJHt0cmFuc2xhdGVkRmlsZU5hbWV9LiR7ZXh0ZW5zaW9ufWApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVMb2NhbFN0b3JhZ2UobmV3VmFsdWU6IFNlbGVjdGVkQ29sdW1uTG9jYWxTdG9yYWdlQ29uZmlnKSB7XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICBpZiAodGhpcy5jb25maWcubG9jYWxTdG9yYWdlS2V5ICYmIG5ld1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2U/LnNldEl0ZW0odGhpcy5jb25maWcubG9jYWxTdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIHJlYWRGcm9tTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmxvY2FsU3RvcmFnZUtleSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGxvY2FsU3RvcmFnZVN0cmluZyA9IHRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0odGhpcy5jb25maWcubG9jYWxTdG9yYWdlS2V5KTtcclxuICAgICAgICBpZiAobG9jYWxTdG9yYWdlU3RyaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZVZhbHVlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VTdHJpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHlcclxuICAgICAgY2F0Y2gge1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvbHVtblNlbGVjdFByb3BlcnRpZXMoKSB7XHJcbiAgICB0aGlzLmNvbHVtblNlbGVjdEFjdGl2ZSA9IHRoaXMuY29uZmlnLmNvbHVtblNlbGVjdD8uZW5hYmxlZCA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMudXBkYXRlRGlzcGxheUNvbHVtbnModHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpbHRlclZpc2liaWxpdHkoKSB7XHJcbiAgICB0aGlzLmZpbHRlckJhclZpc2libGUgPSB0aGlzLmxvY2FsU3RvcmFnZVZhbHVlPy5maWx0ZXI/LnZpc2libGUgPz8gdGhpcy5jb25maWc/LmZpbHRlcj8udmlzaWJsZSA/PyBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Tm9EYXRhUm93UHJvcGVydGllcygpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5ub0RhdGFSb3cpIHtcclxuICAgICAgdGhpcy5ub0RhdGFSb3dBY3RpdmUgPSB0cnVlO1xyXG4gICAgICB0aGlzLm5vRGF0YVJvd0NvbmZpZyA9IHRoaXMuY29uZmlnLm5vRGF0YVJvdztcclxuICAgICAgdGhpcy5ub0RhdGFSb3dDb25maWcuaWNvbiA9IHRoaXMuY29uZmlnLm5vRGF0YVJvdz8uaWNvbiA/PyB0aGlzLm5vRGF0YVJvd0ljb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEV4cG9ydFByb3BlcnRpZXMoKSB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuZXhwb3J0Py5lbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0QWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBbbmdDbGFzcy5sdC1tZF09XCInbW9iaWxlJ1wiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIwLjc1cmVtXCI+XHJcblxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dC5sdC1tZD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwLmx0LW1kPVwiMC43NXJlbVwiPlxyXG4gICAgPGRpdiBmeEZsZXggZnhMYXlvdXQubHQtbWQ9XCJjb2x1bW5cIiBmeExheW91dEdhcD1cIjAuNzVyZW1cIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXRBbGlnbi5sdC1tZD1cInN0YXJ0IHN0YXJ0XCIgY2xhc3M9XCJhY3Rpb24tcm93XCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJleHBvcnQtZGF0YVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnktYWNjZW50LWRhcmtlclwiICpuZ0lmPVwiZXhwb3J0QWN0aXZlXCIgKGNsaWNrKT1cImV4cG9ydCgpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPmNsb3VkX2Rvd25sb2FkPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuPnt7J01VTFRJX0ZVTkNUSU9OQUxfVEFCTEUuRVhQT1JUJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJBY3RpdmUgJiYgc2hvd0ZpbHRlclRvZ2dsZVwiIGZ4RmxleCBmeExheW91dEdhcD1cIjAuNXJlbVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIFtjbGFzcy5maWx0ZXItYWN0aXZlXT1cImZpbHRlckJhclZpc2libGVcIiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5LWFjY2VudC1kYXJrZXJcIiAoY2xpY2spPVwidG9nZ2xlRmlsdGVyQmFyKClcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5maWx0ZXJfbGlzdDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPnt7J01VTFRJX0ZVTkNUSU9OQUxfVEFCTEUuRklMVEVSX1RPR0dMRScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICBcclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0ZpbHRlclJlc2V0XCIgY2xhc3M9XCJjbGVhci1maWx0ZXJzLXdyYXBwZXJcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGVhckZpbHRlcnMoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInNob3dTZWFyY2hcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBjbGFzcz1cIndpbGQtc2VhcmNoLXdyYXBwZXJcIj5cclxuICAgICAgPG1hdC1pY29uIFttYXRUb29sdGlwXT1cImhpZGVTZWFyY2hUb29sdGlwID8gJycgOiBzZWFyY2hUb29sdGlwIHwgdHJhbnNsYXRlXCI+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgPGlucHV0ICN3aWxkU2VhcmNoIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFRpdGxlIHwgdHJhbnNsYXRlXCIgKGtleXVwKT1cInNlYXJjaCgkZXZlbnQpXCI+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93U2VhcmNoQ2xlYXJCdXR0b25cIiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJ3aWxkLXNlYXJjaC1jbGVhci1idG5cIiAoY2xpY2spPVwid2lsZFNlYXJjaC52YWx1ZSA9ICcnOyBzZWFyY2goeyB0YXJnZXQ6IHsgdmFsdWU6ICcnIH0gfSlcIj5cclxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthZGRpdGlvbmFsQWN0aW9uc11cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDx0bGQtZmlsdGVyLWJhciAqbmdJZj1cImNvbmZpZy5maWx0ZXIgJiYgY29uZmlnLmZpbHRlci5lbmFibGVkXCIgI2ZpbHRlckJhciBbZmlsdGVyUm93VmlzaWJsZV09XCJmaWx0ZXJCYXJWaXNpYmxlXCIgW3NldHRpbmdzXT1cImNvbmZpZy5maWx0ZXIuc2V0dGluZ3NcIlxyXG4gICAgKGZpbHRlckJhckNoYW5nZSk9XCJmaWx0ZXJzQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgPC90bGQtZmlsdGVyLWJhcj5cclxuXHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JhdGNoQWN0aW9uc11cIj48L25nLWNvbnRlbnQ+XHJcblxyXG4gIDxkaXYgXHJcbiAgICAjdGFibGVDb250YWluZXJcclxuICAgIGNsYXNzPVwidGFibGUtb3ZlcmZsb3dcIlxyXG4gICAgW2NsYXNzLnRhYmxlLXN0aWNreS1oZWFkZXJdPVwiY29uZmlnPy5zdGlja3lIZWFkZXJcIlxyXG4gICAgW2NsYXNzLnRhYmxlLWRyYWdhYmxlXT1cInRhYmxlT3ZlcmZsb3dcIlxyXG4gICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCJcclxuICAgIChtb3VzZXVwKT1cIm9uTW91c2VVcCgpXCJcclxuICAgIChtb3VzZWxlYXZlKT1cIm9uTW91c2VVcCgpXCJcclxuICAgIChtb3VzZW1vdmUpPVwib25Nb3VzZU1vdmUoJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPHRhYmxlICN0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiY29uZmlnLmRhdGFTb3VyY2VcIiBbdHJhY2tCeV09XCJ0cmFja0J5Rm5cIj5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiYmF0Y2hDb2x1bW5OYW1lXCI+XHJcbiAgICAgICAgPHRoIGNsYXNzPVwicm93LXNlbGVjdFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBkaXNhYmxlLWV4cG9ydD5cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggW21hdFRvb2x0aXBdPVwiJ01VTFRJX0ZVTkNUSU9OQUxfVEFCTEUuU0VMRUNUX0FMTCcgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiY29uZmlnLmJhdGNoQ29uZmlnIS5jaGVja0JveGVzRGlzYWJsZWRcIiAoY2hhbmdlKT1cInRvZ2dsZUFsbFJvd1NlbGVjdGlvbigpXCJcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwibWF0U2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwibWF0U2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiPlxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGQgY2xhc3M9XCJyb3ctc2VsZWN0XCIgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGRpc2FibGUtZXhwb3J0PlxyXG4gICAgICAgICAgPG1hdC1jaGVja2JveCBcclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ01VTFRJX0ZVTkNUSU9OQUxfVEFCTEUuU0VMRUNUJyB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwiaXNSb3dDaGVja2JveEFsd2F5c1Zpc2libGUgfHwgaG92ZXJlZFJvdyA9PT0gZWxlbWVudCB8fCBtYXRTZWxlY3Rpb24uaXNTZWxlY3RlZChlbGVtZW50KVwiIFxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmJhdGNoQ29uZmlnIS5jaGVja0JveGVzRGlzYWJsZWQgfHwgKHByZXNlbGVjdGVkSXRlbXMuaW5jbHVkZXMoZWxlbWVudCkgJiYgZGlzYWJsZVByZXNlbGVjdGVkSXRlbXMpXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlRWxlbWVudFNlbGVjdGlvbihlbGVtZW50KVwiIFtjaGVja2VkXT1cIm1hdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGVsZW1lbnQpXCI+XHJcbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5Q29sdW1uczsgc3RpY2t5OiBjb25maWc/LnN0aWNreUhlYWRlciA/PyBmYWxzZVwiPjwvdHI+XHJcbiAgICAgIDx0ciBcclxuICAgICAgICBtYXQtcm93IFxyXG4gICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBcclxuICAgICAgICBjb2x1bW5zOiBkaXNwbGF5Q29sdW1uc1wiIFxyXG4gICAgICAgIChjbGljayk9XCJjb25maWc/LnJvd0NsaWNrQ2FsbGJhY2sgJiYgIWNvbmZpZz8uZGlzYWJsZVJvd0NsaWNrKHJvdykgPyBjb25maWc/LnJvd0NsaWNrQ2FsbGJhY2socm93KSA6IG51bGxcIlxyXG4gICAgICAgIChtb3VzZW92ZXIpPVwiaG92ZXJlZFJvdyA9IHJvd1wiIFxyXG4gICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyZWRSb3cgPSBudWxsXCIgXHJcbiAgICAgICAgW2NsYXNzLnJvdy1jbGlja2FibGVdPVwiY29uZmlnPy5yb3dDbGlja0NhbGxiYWNrICYmICFjb25maWc/LmRpc2FibGVSb3dDbGljayhyb3cpXCIgXHJcbiAgICAgICAgW2NsYXNzLmhpZ2hsaWdodC1lcnJvcl09XCJoaWdobGlnaHRFcnJvckVsZW1lbnQocm93KVwiIFxyXG4gICAgICAgIFtjbGFzcy5oaWdobGlnaHRdPVwicm93ID09PSBob3ZlcmVkUm93IHx8IGhpZ2hsaWdodEVsZW1lbnQocm93KVwiPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICBcclxuICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtblNlbGVjdENvbHVtbk5hbWVcIj5cclxuICAgICAgICA8dGggY2xhc3M9XCJyb3ctc2VsZWN0XCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGRpc2FibGUtZXhwb3J0PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1zZWxlY3Rvci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb2x1bW4tc2VsZWN0b3JcIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5LWFjY2VudC1kYXJrZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29sdW1uTWVudVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5tb3JlX3ZlcnQ8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGQgY2xhc3M9XCJyb3ctc2VsZWN0XCIgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGRpc2FibGUtZXhwb3J0PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9EYXRhUm93QWN0aXZlXCI+XHJcbiAgICAgICAgPHRyICptYXROb0RhdGFSb3c+XHJcbiAgICAgICAgICA8IS0tIGFkZCByYW5kb20gbnVtYmVyIHRvIG1ha2Ugc3VyZSBpdCB0YWtlcyBmdWxsIHdpZHRoIC0tPlxyXG4gICAgICAgICAgPHRkIGNvbHNwYW49XCI5OVwiPlxyXG4gICAgICAgICAgICA8bGliLXN0YXR1cy1kaXNwbGF5IFtjb25maWddPVwibm9EYXRhUm93Q29uZmlnXCI+PC9saWItc3RhdHVzLWRpc3BsYXk+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC90YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bWF0LW1lbnUgI2NvbHVtbk1lbnU9XCJtYXRNZW51XCI+XHJcbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1zZWxlY3QtbWVudVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb25maWd1cmFibGVDb2x1bW5zXCI+XHJcbiAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJjb2x1bW4uc2VsZWN0ZWRcIj5cclxuICAgICAgICB7e2NvbHVtbi5kaXNwbGF5TmFtZSB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbi1zZWxlY3Qtc2F2ZVwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnktYWNjZW50LWRhcmtlclwiIChjbGljayk9XCJ1cGRhdGVEaXNwbGF5Q29sdW1ucygpXCI+e3sgXCJNVUxUSV9GVU5DVElPTkFMX1RBQkxFLkNPTFVNTl9TRUxFQ1RfU0FWRVwiIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT5cclxuIl19
@@ -3979,7 +3979,7 @@ class MultiFunctionalTableComponent {
3979
3979
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tableContainer = _t.first);
3980
3980
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterBar = _t.first);
3981
3981
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tableElementRef = _t.first);
3982
- } }, inputs: { config: "config", highlightedElements: "highlightedElements", trackByFn: "trackByFn", highlightedErrorElements: "highlightedErrorElements", selection: "selection", isRowCheckboxAlwaysVisible: "isRowCheckboxAlwaysVisible", disablePreselectedItems: "disablePreselectedItems" }, outputs: { filterBarChange: "filterBarChange", exported: "exported", selectionChange: "selectionChange" }, ngContentSelectors: _c3, decls: 31, vars: 20, consts: [["tableContainer", ""], ["table", ""], ["columnMenu", "matMenu"], ["wildSearch", ""], ["filterBar", ""], ["fxLayout", "column", "fxLayoutGap", "0.75rem"], ["fxLayout", "row", "fxLayout.lt-md", "column", "fxLayoutGap.lt-md", "0.75rem"], ["fxFlex", "", "fxLayout.lt-md", "column", "fxLayoutGap", "0.75rem", "fxLayoutAlign", "start center", "fxLayoutAlign.lt-md", "start start", 1, "action-row"], ["class", "export-data", "mat-stroked-button", "", "color", "primary-accent-darker", 3, "click", 4, "ngIf"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center", 4, "ngIf"], ["fxLayout", "row", "fxLayoutAlign", "start center", "class", "wild-search-wrapper", 4, "ngIf"], [3, "filterRowVisible", "settings", "filterBarChange", 4, "ngIf"], [1, "table-overflow", 3, "mousedown", "mouseup", "mouseleave", "mousemove"], ["mat-table", "", 3, "dataSource", "trackBy"], [3, "matColumnDef"], ["class", "row-select", "mat-header-cell", "", "disable-export", "", 4, "matHeaderCellDef"], ["class", "row-select", "mat-cell", "", "disable-export", "", 4, "matCellDef"], ["mat-header-row", "", 4, "matHeaderRowDef", "matHeaderRowDefSticky"], ["mat-row", "", 3, "row-clickable", "highlight-error", "highlight", "click", "mouseover", "mouseleave", 4, "matRowDef", "matRowDefColumns"], [4, "ngIf"], [1, "column-select-menu", 3, "click"], [4, "ngFor", "ngForOf"], [1, "column-select-save"], ["mat-flat-button", "", "color", "primary-accent-darker", 3, "click"], ["mat-stroked-button", "", "color", "primary-accent-darker", 1, "export-data", 3, "click"], [1, "material-icons-outlined"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center"], ["mat-stroked-button", "", "color", "primary-accent-darker", 3, "click"], [1, "material-icons"], ["class", "clear-filters-wrapper", 4, "ngIf"], [1, "clear-filters-wrapper"], ["mat-icon-button", "", 3, "click"], ["fxLayout", "row", "fxLayoutAlign", "start center", 1, "wild-search-wrapper"], [3, "matTooltip"], ["type", "text", 3, "keyup", "placeholder"], ["mat-icon-button", "", "class", "wild-search-clear-btn", 3, "click", 4, "ngIf"], ["mat-icon-button", "", 1, "wild-search-clear-btn", 3, "click"], [3, "filterBarChange", "filterRowVisible", "settings"], ["mat-header-cell", "", "disable-export", "", 1, "row-select"], [3, "change", "matTooltip", "disabled", "checked", "indeterminate"], ["mat-cell", "", "disable-export", "", 1, "row-select"], [3, "matTooltip", "disabled", "checked", "click", "change", 4, "ngIf"], [3, "click", "change", "matTooltip", "disabled", "checked"], ["mat-header-row", ""], ["mat-row", "", 3, "click", "mouseover", "mouseleave"], [1, "column-selector-wrapper"], ["mat-icon-button", "", "color", "primary-accent-darker", 1, "column-selector", 3, "matMenuTriggerFor"], [4, "matNoDataRow"], ["colspan", "99"], [3, "config"], [3, "ngModelChange", "ngModel"]], template: function MultiFunctionalTableComponent_Template(rf, ctx) { if (rf & 1) {
3982
+ } }, inputs: { config: "config", highlightedElements: "highlightedElements", trackByFn: "trackByFn", highlightedErrorElements: "highlightedErrorElements", selection: "selection", isRowCheckboxAlwaysVisible: "isRowCheckboxAlwaysVisible", disablePreselectedItems: "disablePreselectedItems" }, outputs: { filterBarChange: "filterBarChange", exported: "exported", selectionChange: "selectionChange" }, ngContentSelectors: _c3, decls: 31, vars: 21, consts: [["tableContainer", ""], ["table", ""], ["columnMenu", "matMenu"], ["wildSearch", ""], ["filterBar", ""], ["fxLayout", "column", "fxLayoutGap", "0.75rem", 3, "ngClass.lt-md"], ["fxLayout", "row", "fxLayout.lt-md", "column", "fxLayoutGap.lt-md", "0.75rem"], ["fxFlex", "", "fxLayout.lt-md", "column", "fxLayoutGap", "0.75rem", "fxLayoutAlign", "start center", "fxLayoutAlign.lt-md", "start start", 1, "action-row"], ["class", "export-data", "mat-stroked-button", "", "color", "primary-accent-darker", 3, "click", 4, "ngIf"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center", 4, "ngIf"], ["fxLayout", "row", "fxLayoutAlign", "start center", "class", "wild-search-wrapper", 4, "ngIf"], [3, "filterRowVisible", "settings", "filterBarChange", 4, "ngIf"], [1, "table-overflow", 3, "mousedown", "mouseup", "mouseleave", "mousemove"], ["mat-table", "", 3, "dataSource", "trackBy"], [3, "matColumnDef"], ["class", "row-select", "mat-header-cell", "", "disable-export", "", 4, "matHeaderCellDef"], ["class", "row-select", "mat-cell", "", "disable-export", "", 4, "matCellDef"], ["mat-header-row", "", 4, "matHeaderRowDef", "matHeaderRowDefSticky"], ["mat-row", "", 3, "row-clickable", "highlight-error", "highlight", "click", "mouseover", "mouseleave", 4, "matRowDef", "matRowDefColumns"], [4, "ngIf"], [1, "column-select-menu", 3, "click"], [4, "ngFor", "ngForOf"], [1, "column-select-save"], ["mat-flat-button", "", "color", "primary-accent-darker", 3, "click"], ["mat-stroked-button", "", "color", "primary-accent-darker", 1, "export-data", 3, "click"], [1, "material-icons-outlined"], ["fxFlex", "", "fxLayoutGap", "0.5rem", "fxLayoutAlign", "start center"], ["mat-stroked-button", "", "color", "primary-accent-darker", 3, "click"], [1, "material-icons"], ["class", "clear-filters-wrapper", 4, "ngIf"], [1, "clear-filters-wrapper"], ["mat-icon-button", "", 3, "click"], ["fxLayout", "row", "fxLayoutAlign", "start center", 1, "wild-search-wrapper"], [3, "matTooltip"], ["type", "text", 3, "keyup", "placeholder"], ["mat-icon-button", "", "class", "wild-search-clear-btn", 3, "click", 4, "ngIf"], ["mat-icon-button", "", 1, "wild-search-clear-btn", 3, "click"], [3, "filterBarChange", "filterRowVisible", "settings"], ["mat-header-cell", "", "disable-export", "", 1, "row-select"], [3, "change", "matTooltip", "disabled", "checked", "indeterminate"], ["mat-cell", "", "disable-export", "", 1, "row-select"], [3, "matTooltip", "disabled", "checked", "click", "change", 4, "ngIf"], [3, "click", "change", "matTooltip", "disabled", "checked"], ["mat-header-row", ""], ["mat-row", "", 3, "click", "mouseover", "mouseleave"], [1, "column-selector-wrapper"], ["mat-icon-button", "", "color", "primary-accent-darker", 1, "column-selector", 3, "matMenuTriggerFor"], [4, "matNoDataRow"], ["colspan", "99"], [3, "config"], [3, "ngModelChange", "ngModel"]], template: function MultiFunctionalTableComponent_Template(rf, ctx) { if (rf & 1) {
3983
3983
  const _r1 = i0.ɵɵgetCurrentView();
3984
3984
  i0.ɵɵprojectionDef(_c2);
3985
3985
  i0.ɵɵelementStart(0, "div", 5)(1, "div", 6)(2, "div", 7);
@@ -4012,7 +4012,8 @@ class MultiFunctionalTableComponent {
4012
4012
  i0.ɵɵpipe(30, "translate");
4013
4013
  i0.ɵɵelementEnd()()()();
4014
4014
  } if (rf & 2) {
4015
- let tmp_13_0;
4015
+ let tmp_14_0;
4016
+ i0.ɵɵproperty("ngClass.lt-md", "mobile");
4016
4017
  i0.ɵɵadvance(3);
4017
4018
  i0.ɵɵproperty("ngIf", ctx.exportActive);
4018
4019
  i0.ɵɵadvance();
@@ -4028,7 +4029,7 @@ class MultiFunctionalTableComponent {
4028
4029
  i0.ɵɵadvance(3);
4029
4030
  i0.ɵɵproperty("matColumnDef", ctx.batchColumnName);
4030
4031
  i0.ɵɵadvance(3);
4031
- i0.ɵɵproperty("matHeaderRowDef", ctx.displayColumns)("matHeaderRowDefSticky", (tmp_13_0 = ctx.config == null ? null : ctx.config.stickyHeader) !== null && tmp_13_0 !== undefined ? tmp_13_0 : false);
4032
+ i0.ɵɵproperty("matHeaderRowDef", ctx.displayColumns)("matHeaderRowDefSticky", (tmp_14_0 = ctx.config == null ? null : ctx.config.stickyHeader) !== null && tmp_14_0 !== undefined ? tmp_14_0 : false);
4032
4033
  i0.ɵɵadvance();
4033
4034
  i0.ɵɵproperty("matRowDefColumns", ctx.displayColumns);
4034
4035
  i0.ɵɵadvance();
@@ -4038,12 +4039,12 @@ class MultiFunctionalTableComponent {
4038
4039
  i0.ɵɵadvance(4);
4039
4040
  i0.ɵɵproperty("ngForOf", ctx.configurableColumns);
4040
4041
  i0.ɵɵadvance(3);
4041
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(30, 18, "MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE"));
4042
- } }, dependencies: [i1$2.NgForOf, i1$2.NgIf, i4$2.MatTable, i4$2.MatHeaderCellDef, i4$2.MatHeaderRowDef, i4$2.MatColumnDef, i4$2.MatCellDef, i4$2.MatRowDef, i4$2.MatHeaderCell, i4$2.MatCell, i4$2.MatHeaderRow, i4$2.MatRow, i4$2.MatNoDataRow, i5.MatButton, i5.MatIconButton, i5$2.MatMenu, i5$2.MatMenuTrigger, i7.MatCheckbox, i4$1.NgControlStatus, i4$1.NgModel, FilterBarComponent, i2$2.DefaultLayoutDirective, i2$2.DefaultLayoutGapDirective, i2$2.DefaultLayoutAlignDirective, i2$2.DefaultFlexDirective, i2$1.MatTooltip, StatusDisplayComponent, i1.MatIcon, i1$1.TranslatePipe], styles: ["[_nghost-%COMP%] th, [_nghost-%COMP%] tr{white-space:nowrap}[_nghost-%COMP%] td:not(:first-of-type){padding-right:10px!important}[_nghost-%COMP%] tr.mat-mdc-row:hover, [_nghost-%COMP%] tr.mat-mdc-row.highlight{background-color:var(--base-95)}[_nghost-%COMP%] tr.mat-mdc-row.highlight-error{background-color:var(--warning-light)}[_nghost-%COMP%] .export-data .mdc-button__label{display:flex;align-items:center}[_nghost-%COMP%] .mat-mdc-cell, [_nghost-%COMP%] .mat-mdc-header-cell, [_nghost-%COMP%] .mdc-data-table__row:last-child{border-bottom-color:var(--base-70)}[_nghost-%COMP%] .mdc-data-table__row:last-child{border-bottom-width:1px;border-bottom-style:solid}[_nghost-%COMP%] .mdc-data-table__cell:nth-child(2), [_nghost-%COMP%] .mdc-data-table__header-cell:nth-child(2){padding:0 16px 0 10px}[_nghost-%COMP%] td+.cdk-column-columnSelect{display:none}[_nghost-%COMP%] .clear-filters-wrapper .mat-mdc-icon-button, [_nghost-%COMP%] .clear-filters-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:36px!important;width:36px!important}[_nghost-%COMP%] .clear-filters-wrapper mat-icon{margin-top:-2px;margin-left:-2px}[_nghost-%COMP%] .filter-active{background-color:var(--neutral-95)}table[_ngcontent-%COMP%]{width:100%}.wild-search-wrapper[_ngcontent-%COMP%]{position:relative;padding:5px 10px;border-radius:4px;border:1px solid var(--neutral-50);margin:0 8px}.wild-search-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{margin-right:30px}.wild-search-wrapper[_ngcontent-%COMP%] .wild-search-clear-btn[_ngcontent-%COMP%]{position:absolute;right:3px}.wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .mat-mdc-button-touch-target[_ngcontent-%COMP%]{height:33px!important;width:33px!important}.wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .material-icons-outlined[_ngcontent-%COMP%]{top:5px!important;left:5px!important}.column-selector-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:end}.column-select-menu[_ngcontent-%COMP%]{padding:8px 18px 8px 8px}.column-select-save[_ngcontent-%COMP%]{padding-left:8px;padding-top:8px}.column-select-save[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:100%}.row-clickable[_ngcontent-%COMP%]{cursor:pointer}.row-clickable[_ngcontent-%COMP%]:active{background-color:var(--base-70)!important}.material-icons[_ngcontent-%COMP%], .material-icons-outlined[_ngcontent-%COMP%]{margin-right:.5rem}.table-action-button[_ngcontent-%COMP%]{margin-bottom:1rem}th.mat-mdc-header-cell[_ngcontent-%COMP%]:first-of-type, td.mat-mdc-cell[_ngcontent-%COMP%]:first-of-type, td.mat-mdc-footer-cell[_ngcontent-%COMP%]:first-of-type{padding:0 0 0 10px}.row-select[_ngcontent-%COMP%]{width:0}.table-overflow[_ngcontent-%COMP%]{overflow-x:auto}.table-dragable[_ngcontent-%COMP%]{cursor:grab;-webkit-user-select:none;user-select:none}.table-dragable[_ngcontent-%COMP%]:active{cursor:grabbing}.table-sticky-header[_ngcontent-%COMP%]{max-height:70vh}"] }); }
4042
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(30, 19, "MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE"));
4043
+ } }, dependencies: [i1$2.NgForOf, i1$2.NgIf, i4$2.MatTable, i4$2.MatHeaderCellDef, i4$2.MatHeaderRowDef, i4$2.MatColumnDef, i4$2.MatCellDef, i4$2.MatRowDef, i4$2.MatHeaderCell, i4$2.MatCell, i4$2.MatHeaderRow, i4$2.MatRow, i4$2.MatNoDataRow, i5.MatButton, i5.MatIconButton, i5$2.MatMenu, i5$2.MatMenuTrigger, i7.MatCheckbox, i4$1.NgControlStatus, i4$1.NgModel, FilterBarComponent, i2$2.DefaultLayoutDirective, i2$2.DefaultLayoutGapDirective, i2$2.DefaultLayoutAlignDirective, i2$2.DefaultFlexDirective, i3.DefaultClassDirective, i2$1.MatTooltip, StatusDisplayComponent, i1.MatIcon, i1$1.TranslatePipe], styles: ["[_nghost-%COMP%] th, [_nghost-%COMP%] tr{white-space:nowrap}[_nghost-%COMP%] td:not(:first-of-type){padding-right:10px!important}[_nghost-%COMP%] tr.mat-mdc-row:hover, [_nghost-%COMP%] tr.mat-mdc-row.highlight{background-color:var(--base-95)}[_nghost-%COMP%] tr.mat-mdc-row.highlight-error{background-color:var(--warning-light)}[_nghost-%COMP%] .export-data .mdc-button__label{display:flex;align-items:center}[_nghost-%COMP%] .mat-mdc-cell, [_nghost-%COMP%] .mat-mdc-header-cell, [_nghost-%COMP%] .mdc-data-table__row:last-child{border-bottom-color:var(--base-70)}[_nghost-%COMP%] .mdc-data-table__row:last-child{border-bottom-width:1px;border-bottom-style:solid}[_nghost-%COMP%] .mdc-data-table__cell:nth-child(2), [_nghost-%COMP%] .mdc-data-table__header-cell:nth-child(2){padding:0 16px 0 10px}[_nghost-%COMP%] td+.cdk-column-columnSelect{display:none}[_nghost-%COMP%] .clear-filters-wrapper .mat-mdc-icon-button, [_nghost-%COMP%] .clear-filters-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:36px!important;width:36px!important}[_nghost-%COMP%] .clear-filters-wrapper mat-icon{margin-top:-2px;margin-left:-2px}[_nghost-%COMP%] .filter-active{background-color:var(--neutral-95)}table[_ngcontent-%COMP%]{width:100%}.wild-search-wrapper[_ngcontent-%COMP%]{position:relative;padding:5px 10px;border-radius:4px;border:1px solid var(--neutral-50);margin:0 8px}.wild-search-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{margin-right:30px}.wild-search-wrapper[_ngcontent-%COMP%] .wild-search-clear-btn[_ngcontent-%COMP%]{position:absolute;right:3px}.wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .mat-mdc-button-touch-target[_ngcontent-%COMP%]{height:33px!important;width:33px!important}.wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%], .wild-search-wrapper[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%] .material-icons-outlined[_ngcontent-%COMP%]{top:5px!important;left:5px!important}.mobile[_ngcontent-%COMP%] .wild-search-wrapper[_ngcontent-%COMP%]{margin:0}.column-selector-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:end}.column-select-menu[_ngcontent-%COMP%]{padding:8px 18px 8px 8px}.column-select-save[_ngcontent-%COMP%]{padding-left:8px;padding-top:8px}.column-select-save[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:100%}.row-clickable[_ngcontent-%COMP%]{cursor:pointer}.row-clickable[_ngcontent-%COMP%]:active{background-color:var(--base-70)!important}.material-icons[_ngcontent-%COMP%], .material-icons-outlined[_ngcontent-%COMP%]{margin-right:.5rem}.table-action-button[_ngcontent-%COMP%]{margin-bottom:1rem}th.mat-mdc-header-cell[_ngcontent-%COMP%]:first-of-type, td.mat-mdc-cell[_ngcontent-%COMP%]:first-of-type, td.mat-mdc-footer-cell[_ngcontent-%COMP%]:first-of-type{padding:0 0 0 10px}.row-select[_ngcontent-%COMP%]{width:0}.table-overflow[_ngcontent-%COMP%]{overflow-x:auto}.table-dragable[_ngcontent-%COMP%]{cursor:grab;-webkit-user-select:none;user-select:none}.table-dragable[_ngcontent-%COMP%]:active{cursor:grabbing}.table-sticky-header[_ngcontent-%COMP%]{max-height:70vh}"] }); }
4043
4044
  }
4044
4045
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MultiFunctionalTableComponent, [{
4045
4046
  type: Component,
4046
- args: [{ selector: 'tld-multi-functional-table', template: "<div fxLayout=\"column\" fxLayoutGap=\"0.75rem\">\r\n\r\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap.lt-md=\"0.75rem\">\r\n <div fxFlex fxLayout.lt-md=\"column\" fxLayoutGap=\"0.75rem\" fxLayoutAlign=\"start center\" fxLayoutAlign.lt-md=\"start start\" class=\"action-row\">\r\n <button class=\"export-data\" mat-stroked-button color=\"primary-accent-darker\" *ngIf=\"exportActive\" (click)=\"export()\">\r\n <span class=\"material-icons-outlined\">cloud_download</span>\r\n <span>{{'MULTI_FUNCTIONAL_TABLE.EXPORT' | translate}}</span>\r\n </button>\r\n\r\n <div *ngIf=\"filterActive && showFilterToggle\" fxFlex fxLayoutGap=\"0.5rem\" fxLayoutAlign=\"start center\">\r\n <button [class.filter-active]=\"filterBarVisible\" mat-stroked-button color=\"primary-accent-darker\" (click)=\"toggleFilterBar()\">\r\n <span class=\"material-icons\">filter_list</span>\r\n <span>{{'MULTI_FUNCTIONAL_TABLE.FILTER_TOGGLE' | translate}}</span>\r\n </button>\r\n \r\n <div *ngIf=\"showFilterReset\" class=\"clear-filters-wrapper\">\r\n <button mat-icon-button (click)=\"clearFilters()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showSearch\" fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"wild-search-wrapper\">\r\n <mat-icon [matTooltip]=\"hideSearchTooltip ? '' : searchTooltip | translate\">search</mat-icon>\r\n <input #wildSearch type=\"text\" [placeholder]=\"searchTitle | translate\" (keyup)=\"search($event)\">\r\n <button *ngIf=\"showSearchClearButton\" mat-icon-button class=\"wild-search-clear-btn\" (click)=\"wildSearch.value = ''; search({ target: { value: '' } })\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-content select=\"[additionalActions]\"></ng-content>\r\n </div>\r\n\r\n <tld-filter-bar *ngIf=\"config.filter && config.filter.enabled\" #filterBar [filterRowVisible]=\"filterBarVisible\" [settings]=\"config.filter.settings\"\r\n (filterBarChange)=\"filtersChanged($event)\">\r\n </tld-filter-bar>\r\n\r\n <ng-content select=\"[batchActions]\"></ng-content>\r\n\r\n <div \r\n #tableContainer\r\n class=\"table-overflow\"\r\n [class.table-sticky-header]=\"config?.stickyHeader\"\r\n [class.table-dragable]=\"tableOverflow\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (mouseup)=\"onMouseUp()\"\r\n (mouseleave)=\"onMouseUp()\"\r\n (mousemove)=\"onMouseMove($event)\"\r\n >\r\n <table #table mat-table [dataSource]=\"config.dataSource\" [trackBy]=\"trackByFn\">\r\n <ng-content></ng-content>\r\n <ng-container [matColumnDef]=\"batchColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <mat-checkbox [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT_ALL' | translate\" [disabled]=\"config.batchConfig!.checkBoxesDisabled\" (change)=\"toggleAllRowSelection()\"\r\n [checked]=\"matSelection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"matSelection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n <td class=\"row-select\" mat-cell *matCellDef=\"let element\" disable-export>\r\n <mat-checkbox \r\n [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT' | translate\" *ngIf=\"isRowCheckboxAlwaysVisible || hoveredRow === element || matSelection.isSelected(element)\" \r\n [disabled]=\"config.batchConfig!.checkBoxesDisabled || (preselectedItems.includes(element) && disablePreselectedItems)\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"toggleElementSelection(element)\" [checked]=\"matSelection.isSelected(element)\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayColumns; sticky: config?.stickyHeader ?? false\"></tr>\r\n <tr \r\n mat-row \r\n *matRowDef=\"let row; \r\n columns: displayColumns\" \r\n (click)=\"config?.rowClickCallback && !config?.disableRowClick(row) ? config?.rowClickCallback(row) : null\"\r\n (mouseover)=\"hoveredRow = row\" \r\n (mouseleave)=\"hoveredRow = null\" \r\n [class.row-clickable]=\"config?.rowClickCallback && !config?.disableRowClick(row)\" \r\n [class.highlight-error]=\"highlightErrorElement(row)\" \r\n [class.highlight]=\"row === hoveredRow || highlightElement(row)\">\r\n </tr>\r\n \r\n <ng-container [matColumnDef]=\"columnSelectColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <div class=\"column-selector-wrapper\">\r\n <button class=\"column-selector\" mat-icon-button color=\"primary-accent-darker\" [matMenuTriggerFor]=\"columnMenu\">\r\n <span class=\"material-icons\">more_vert</span>\r\n </button>\r\n </div>\r\n </th>\r\n <td class=\"row-select\" mat-cell *matCellDef=\"let element\" disable-export>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"noDataRowActive\">\r\n <tr *matNoDataRow>\r\n <!-- add random number to make sure it takes full width -->\r\n <td colspan=\"99\">\r\n <lib-status-display [config]=\"noDataRowConfig\"></lib-status-display>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n<mat-menu #columnMenu=\"matMenu\">\r\n <div class=\"column-select-menu\" (click)=\"$event.stopPropagation()\">\r\n <div *ngFor=\"let column of configurableColumns\">\r\n <mat-checkbox [(ngModel)]=\"column.selected\">\r\n {{column.displayName | translate}}\r\n </mat-checkbox>\r\n </div>\r\n\r\n <div class=\"column-select-save\">\r\n <button mat-flat-button color=\"primary-accent-darker\" (click)=\"updateDisplayColumns()\">{{ \"MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE\" | translate }}</button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n", styles: [":host ::ng-deep th,:host ::ng-deep tr{white-space:nowrap}:host ::ng-deep td:not(:first-of-type){padding-right:10px!important}:host ::ng-deep tr.mat-mdc-row:hover,:host ::ng-deep tr.mat-mdc-row.highlight{background-color:var(--base-95)}:host ::ng-deep tr.mat-mdc-row.highlight-error{background-color:var(--warning-light)}:host ::ng-deep .export-data .mdc-button__label{display:flex;align-items:center}:host ::ng-deep .mat-mdc-cell,:host ::ng-deep .mat-mdc-header-cell,:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-color:var(--base-70)}:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-width:1px;border-bottom-style:solid}:host ::ng-deep .mdc-data-table__cell:nth-child(2),:host ::ng-deep .mdc-data-table__header-cell:nth-child(2){padding:0 16px 0 10px}:host ::ng-deep td+.cdk-column-columnSelect{display:none}:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button,:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:36px!important;width:36px!important}:host ::ng-deep .clear-filters-wrapper mat-icon{margin-top:-2px;margin-left:-2px}:host ::ng-deep .filter-active{background-color:var(--neutral-95)}table{width:100%}.wild-search-wrapper{position:relative;padding:5px 10px;border-radius:4px;border:1px solid var(--neutral-50);margin:0 8px}.wild-search-wrapper input{margin-right:30px}.wild-search-wrapper .wild-search-clear-btn{position:absolute;right:3px}.wild-search-wrapper .mat-mdc-icon-button,.wild-search-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:33px!important;width:33px!important}.wild-search-wrapper .mat-mdc-icon-button mat-icon,.wild-search-wrapper .mat-mdc-icon-button .material-icons,.wild-search-wrapper .mat-mdc-icon-button .material-icons-outlined{top:5px!important;left:5px!important}.column-selector-wrapper{display:flex;justify-content:end}.column-select-menu{padding:8px 18px 8px 8px}.column-select-save{padding-left:8px;padding-top:8px}.column-select-save button{width:100%}.row-clickable{cursor:pointer}.row-clickable:active{background-color:var(--base-70)!important}.material-icons,.material-icons-outlined{margin-right:.5rem}.table-action-button{margin-bottom:1rem}th.mat-mdc-header-cell:first-of-type,td.mat-mdc-cell:first-of-type,td.mat-mdc-footer-cell:first-of-type{padding:0 0 0 10px}.row-select{width:0}.table-overflow{overflow-x:auto}.table-dragable{cursor:grab;-webkit-user-select:none;user-select:none}.table-dragable:active{cursor:grabbing}.table-sticky-header{max-height:70vh}\n"] }]
4047
+ args: [{ selector: 'tld-multi-functional-table', template: "<div [ngClass.lt-md]=\"'mobile'\" fxLayout=\"column\" fxLayoutGap=\"0.75rem\">\r\n\r\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap.lt-md=\"0.75rem\">\r\n <div fxFlex fxLayout.lt-md=\"column\" fxLayoutGap=\"0.75rem\" fxLayoutAlign=\"start center\" fxLayoutAlign.lt-md=\"start start\" class=\"action-row\">\r\n <button class=\"export-data\" mat-stroked-button color=\"primary-accent-darker\" *ngIf=\"exportActive\" (click)=\"export()\">\r\n <span class=\"material-icons-outlined\">cloud_download</span>\r\n <span>{{'MULTI_FUNCTIONAL_TABLE.EXPORT' | translate}}</span>\r\n </button>\r\n\r\n <div *ngIf=\"filterActive && showFilterToggle\" fxFlex fxLayoutGap=\"0.5rem\" fxLayoutAlign=\"start center\">\r\n <button [class.filter-active]=\"filterBarVisible\" mat-stroked-button color=\"primary-accent-darker\" (click)=\"toggleFilterBar()\">\r\n <span class=\"material-icons\">filter_list</span>\r\n <span>{{'MULTI_FUNCTIONAL_TABLE.FILTER_TOGGLE' | translate}}</span>\r\n </button>\r\n \r\n <div *ngIf=\"showFilterReset\" class=\"clear-filters-wrapper\">\r\n <button mat-icon-button (click)=\"clearFilters()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showSearch\" fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"wild-search-wrapper\">\r\n <mat-icon [matTooltip]=\"hideSearchTooltip ? '' : searchTooltip | translate\">search</mat-icon>\r\n <input #wildSearch type=\"text\" [placeholder]=\"searchTitle | translate\" (keyup)=\"search($event)\">\r\n <button *ngIf=\"showSearchClearButton\" mat-icon-button class=\"wild-search-clear-btn\" (click)=\"wildSearch.value = ''; search({ target: { value: '' } })\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-content select=\"[additionalActions]\"></ng-content>\r\n </div>\r\n\r\n <tld-filter-bar *ngIf=\"config.filter && config.filter.enabled\" #filterBar [filterRowVisible]=\"filterBarVisible\" [settings]=\"config.filter.settings\"\r\n (filterBarChange)=\"filtersChanged($event)\">\r\n </tld-filter-bar>\r\n\r\n <ng-content select=\"[batchActions]\"></ng-content>\r\n\r\n <div \r\n #tableContainer\r\n class=\"table-overflow\"\r\n [class.table-sticky-header]=\"config?.stickyHeader\"\r\n [class.table-dragable]=\"tableOverflow\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (mouseup)=\"onMouseUp()\"\r\n (mouseleave)=\"onMouseUp()\"\r\n (mousemove)=\"onMouseMove($event)\"\r\n >\r\n <table #table mat-table [dataSource]=\"config.dataSource\" [trackBy]=\"trackByFn\">\r\n <ng-content></ng-content>\r\n <ng-container [matColumnDef]=\"batchColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <mat-checkbox [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT_ALL' | translate\" [disabled]=\"config.batchConfig!.checkBoxesDisabled\" (change)=\"toggleAllRowSelection()\"\r\n [checked]=\"matSelection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"matSelection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n <td class=\"row-select\" mat-cell *matCellDef=\"let element\" disable-export>\r\n <mat-checkbox \r\n [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT' | translate\" *ngIf=\"isRowCheckboxAlwaysVisible || hoveredRow === element || matSelection.isSelected(element)\" \r\n [disabled]=\"config.batchConfig!.checkBoxesDisabled || (preselectedItems.includes(element) && disablePreselectedItems)\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"toggleElementSelection(element)\" [checked]=\"matSelection.isSelected(element)\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayColumns; sticky: config?.stickyHeader ?? false\"></tr>\r\n <tr \r\n mat-row \r\n *matRowDef=\"let row; \r\n columns: displayColumns\" \r\n (click)=\"config?.rowClickCallback && !config?.disableRowClick(row) ? config?.rowClickCallback(row) : null\"\r\n (mouseover)=\"hoveredRow = row\" \r\n (mouseleave)=\"hoveredRow = null\" \r\n [class.row-clickable]=\"config?.rowClickCallback && !config?.disableRowClick(row)\" \r\n [class.highlight-error]=\"highlightErrorElement(row)\" \r\n [class.highlight]=\"row === hoveredRow || highlightElement(row)\">\r\n </tr>\r\n \r\n <ng-container [matColumnDef]=\"columnSelectColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <div class=\"column-selector-wrapper\">\r\n <button class=\"column-selector\" mat-icon-button color=\"primary-accent-darker\" [matMenuTriggerFor]=\"columnMenu\">\r\n <span class=\"material-icons\">more_vert</span>\r\n </button>\r\n </div>\r\n </th>\r\n <td class=\"row-select\" mat-cell *matCellDef=\"let element\" disable-export>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"noDataRowActive\">\r\n <tr *matNoDataRow>\r\n <!-- add random number to make sure it takes full width -->\r\n <td colspan=\"99\">\r\n <lib-status-display [config]=\"noDataRowConfig\"></lib-status-display>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n<mat-menu #columnMenu=\"matMenu\">\r\n <div class=\"column-select-menu\" (click)=\"$event.stopPropagation()\">\r\n <div *ngFor=\"let column of configurableColumns\">\r\n <mat-checkbox [(ngModel)]=\"column.selected\">\r\n {{column.displayName | translate}}\r\n </mat-checkbox>\r\n </div>\r\n\r\n <div class=\"column-select-save\">\r\n <button mat-flat-button color=\"primary-accent-darker\" (click)=\"updateDisplayColumns()\">{{ \"MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE\" | translate }}</button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n", styles: [":host ::ng-deep th,:host ::ng-deep tr{white-space:nowrap}:host ::ng-deep td:not(:first-of-type){padding-right:10px!important}:host ::ng-deep tr.mat-mdc-row:hover,:host ::ng-deep tr.mat-mdc-row.highlight{background-color:var(--base-95)}:host ::ng-deep tr.mat-mdc-row.highlight-error{background-color:var(--warning-light)}:host ::ng-deep .export-data .mdc-button__label{display:flex;align-items:center}:host ::ng-deep .mat-mdc-cell,:host ::ng-deep .mat-mdc-header-cell,:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-color:var(--base-70)}:host ::ng-deep .mdc-data-table__row:last-child{border-bottom-width:1px;border-bottom-style:solid}:host ::ng-deep .mdc-data-table__cell:nth-child(2),:host ::ng-deep .mdc-data-table__header-cell:nth-child(2){padding:0 16px 0 10px}:host ::ng-deep td+.cdk-column-columnSelect{display:none}:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button,:host ::ng-deep .clear-filters-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:36px!important;width:36px!important}:host ::ng-deep .clear-filters-wrapper mat-icon{margin-top:-2px;margin-left:-2px}:host ::ng-deep .filter-active{background-color:var(--neutral-95)}table{width:100%}.wild-search-wrapper{position:relative;padding:5px 10px;border-radius:4px;border:1px solid var(--neutral-50);margin:0 8px}.wild-search-wrapper input{margin-right:30px}.wild-search-wrapper .wild-search-clear-btn{position:absolute;right:3px}.wild-search-wrapper .mat-mdc-icon-button,.wild-search-wrapper .mat-mdc-icon-button .mat-mdc-button-touch-target{height:33px!important;width:33px!important}.wild-search-wrapper .mat-mdc-icon-button mat-icon,.wild-search-wrapper .mat-mdc-icon-button .material-icons,.wild-search-wrapper .mat-mdc-icon-button .material-icons-outlined{top:5px!important;left:5px!important}.mobile .wild-search-wrapper{margin:0}.column-selector-wrapper{display:flex;justify-content:end}.column-select-menu{padding:8px 18px 8px 8px}.column-select-save{padding-left:8px;padding-top:8px}.column-select-save button{width:100%}.row-clickable{cursor:pointer}.row-clickable:active{background-color:var(--base-70)!important}.material-icons,.material-icons-outlined{margin-right:.5rem}.table-action-button{margin-bottom:1rem}th.mat-mdc-header-cell:first-of-type,td.mat-mdc-cell:first-of-type,td.mat-mdc-footer-cell:first-of-type{padding:0 0 0 10px}.row-select{width:0}.table-overflow{overflow-x:auto}.table-dragable{cursor:grab;-webkit-user-select:none;user-select:none}.table-dragable:active{cursor:grabbing}.table-sticky-header{max-height:70vh}\n"] }]
4047
4048
  }], () => [{ type: DOMService }, { type: i1$1.TranslateService }], { config: [{
4048
4049
  type: Input
4049
4050
  }], highlightedElements: [{