@ieeesa-npm/presentation 0.14.8 → 0.14.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/accordion/accordion.component.mjs +4 -15
- package/esm2022/lib/components/data-table/data-table.component.mjs +7 -51
- package/esm2022/lib/components/header/header.component.mjs +2 -2
- package/esm2022/lib/components/list/list.component.mjs +2 -2
- package/esm2022/lib/components/menu/menu.component.mjs +3 -6
- package/esm2022/lib/models/list-item.model.mjs +1 -1
- package/esm2022/lib/models/table-schema.model.mjs +1 -1
- package/fesm2022/ieeesa-npm-presentation.mjs +12 -70
- package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
- package/lib/components/accordion/accordion.component.d.ts +2 -9
- package/lib/components/data-table/data-table.component.d.ts +4 -14
- package/lib/components/dynamic-form/dynamic-form.component.d.ts +1 -1
- package/lib/components/file-upload/file-upload.component.d.ts +2 -2
- package/lib/components/menu/menu.component.d.ts +1 -2
- package/lib/directives/dynamic-form-field/dynamic-form-field.directive.d.ts +1 -1
- package/lib/directives/file-upload/file-upload.directive.d.ts +1 -1
- package/lib/models/list-item.model.d.ts +1 -0
- package/lib/models/table-schema.model.d.ts +0 -1
- package/package.json +1 -1
|
@@ -103,14 +103,10 @@ export class DataTableComponent {
|
|
|
103
103
|
// eslint-disable-next-line no-unused-vars, no-empty-function
|
|
104
104
|
constructor(
|
|
105
105
|
// eslint-disable-next-line no-unused-vars
|
|
106
|
-
breakpointObserverService
|
|
107
|
-
// eslint-disable-next-line no-unused-vars
|
|
108
|
-
elRef) {
|
|
106
|
+
breakpointObserverService) {
|
|
109
107
|
this.breakpointObserverService = breakpointObserverService;
|
|
110
|
-
this.elRef = elRef;
|
|
111
108
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
112
109
|
this.constants = constants;
|
|
113
|
-
this.tableColumnActionMenuSize = '';
|
|
114
110
|
this.isNestedTableHeaderNeeded = false;
|
|
115
111
|
this.defaultColumnSortDirection = TableColumnSortDirection.ASCENDING;
|
|
116
112
|
this.isClearSortNeeded = true;
|
|
@@ -118,9 +114,6 @@ export class DataTableComponent {
|
|
|
118
114
|
this.inbuiltSortingNeeded = false;
|
|
119
115
|
this.isCellTextOverflowEllipsis = false;
|
|
120
116
|
this.isTableHeaderNeeded = true;
|
|
121
|
-
this.tableColumnsHeaderText = '';
|
|
122
|
-
this.scrollbarSupportMessage = '';
|
|
123
|
-
this.isScrollSupportMessageNeeded = false;
|
|
124
117
|
this.rowSelected = new EventEmitter();
|
|
125
118
|
this.selectedRowToEdit = new EventEmitter();
|
|
126
119
|
this.selectedRowToDelete = new EventEmitter();
|
|
@@ -139,7 +132,6 @@ export class DataTableComponent {
|
|
|
139
132
|
this.selectedRowsInfo = new EventEmitter();
|
|
140
133
|
this.rowExpansionClick = new EventEmitter();
|
|
141
134
|
this.isMobileView = false;
|
|
142
|
-
this.isScrollingEnabled = false;
|
|
143
135
|
this.selectedRows = new SelectionModel(true, []);
|
|
144
136
|
this.columnType = TableColumnType;
|
|
145
137
|
this.isSearchActive = false;
|
|
@@ -191,16 +183,10 @@ export class DataTableComponent {
|
|
|
191
183
|
}
|
|
192
184
|
});
|
|
193
185
|
this.dataSource = new MatTableDataSource(this.tableData);
|
|
194
|
-
if (this.scrollbarSupportMessage !== '') {
|
|
195
|
-
this.resizeObserver = new ResizeObserver((element) => {
|
|
196
|
-
this.isScrollingEnabled =
|
|
197
|
-
element[0]?.target?.scrollWidth > element[0]?.target?.clientWidth;
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
186
|
this.tableDataChanges();
|
|
201
187
|
}
|
|
202
188
|
/**
|
|
203
|
-
* Initializes the sort feature of dataSource
|
|
189
|
+
* Initializes the sort feature of dataSource
|
|
204
190
|
* @memberof DataTableComponent
|
|
205
191
|
*/
|
|
206
192
|
ngAfterViewInit() {
|
|
@@ -208,20 +194,6 @@ export class DataTableComponent {
|
|
|
208
194
|
this.dataSource.sort = this.sort;
|
|
209
195
|
this.sort.disableClear = true;
|
|
210
196
|
}
|
|
211
|
-
if (this.tableColumnsHeaderText !== '' &&
|
|
212
|
-
this.verticalColumnHeaderNumber !== undefined) {
|
|
213
|
-
let columnsWidth = 0;
|
|
214
|
-
for (let column = 0; column < this.verticalColumnHeaderNumber; column++) {
|
|
215
|
-
const verticalColumnHeaderClassName = '.mat-column-' + this.columnSchema[column].columnDef;
|
|
216
|
-
const columnElement = this.elRef?.nativeElement?.querySelector(verticalColumnHeaderClassName);
|
|
217
|
-
if (columnElement)
|
|
218
|
-
columnsWidth += columnElement?.offsetWidth;
|
|
219
|
-
}
|
|
220
|
-
const columnsHeaderElement = this.elRef?.nativeElement?.querySelector('.ieeesa-data-table__columns-header-text');
|
|
221
|
-
if (columnsHeaderElement)
|
|
222
|
-
columnsHeaderElement.style.marginLeft = columnsWidth + 'px';
|
|
223
|
-
}
|
|
224
|
-
this.resizeObserver?.observe(this.tableContent.nativeElement);
|
|
225
197
|
}
|
|
226
198
|
/**
|
|
227
199
|
* Sets the dataSource whenever the table data changes.
|
|
@@ -458,12 +430,11 @@ export class DataTableComponent {
|
|
|
458
430
|
* @memberof DataTableComponent
|
|
459
431
|
*/
|
|
460
432
|
ngOnDestroy() {
|
|
461
|
-
this.resizeObserver?.unobserve(this.tableContent.nativeElement);
|
|
462
433
|
this.destroy$.next(true);
|
|
463
434
|
this.destroy$.unsubscribe();
|
|
464
435
|
}
|
|
465
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataTableComponent, deps: [{ token: i1.BreakpointObserverService }
|
|
466
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataTableComponent, isStandalone: true, selector: "ieeesa-data-table", inputs: { tableDataInfo: "tableDataInfo", nestedTableDataInfo: "nestedTableDataInfo", columnSchemaInfo: "columnSchemaInfo", nestedTableColumnSchemaInfo: "nestedTableColumnSchemaInfo", tableActions: "tableActions", tableColumnActions: "tableColumnActions", tableColumnActionMenuSize: "tableColumnActionMenuSize", tableRowActions: "tableRowActions", nestedTableRowActions: "nestedTableRowActions", caption: "caption", viewAll: "viewAll", paginatorConfig: "paginatorConfig", nestedPaginatorConfig: "nestedPaginatorConfig", legends: "legends", searchPlaceHolderText: "searchPlaceHolderText", rowEditButton: "rowEditButton", rowDeleteButton: "rowDeleteButton", tableEditButton: "tableEditButton", tableDeleteButton: "tableDeleteButton", rowExpandButton: "rowExpandButton", rowCollapseButton: "rowCollapseButton", isNestedTableHeaderNeeded: "isNestedTableHeaderNeeded", addButton: "addButton", defaultColumnSortDirection: "defaultColumnSortDirection", defaultSortedColumn: "defaultSortedColumn", isClearSortNeeded: "isClearSortNeeded", filters: "filters", selectedFilterOptions: "selectedFilterOptions", appliedFilterOptions: "appliedFilterOptions", searchType: "searchType", className: "className", searchSupportMessage: "searchSupportMessage", inbuiltSortingNeeded: "inbuiltSortingNeeded", isCellTextOverflowEllipsis: "isCellTextOverflowEllipsis", isTableHeaderNeeded: "isTableHeaderNeeded", tableColumnsHeaderText: "tableColumnsHeaderText", verticalColumnHeaderNumber: "verticalColumnHeaderNumber", scrollbarSupportMessage: "scrollbarSupportMessage", isScrollSupportMessageNeeded: "isScrollSupportMessageNeeded", searchResultMessage: "searchResultMessage" }, outputs: { rowSelected: "rowSelected", selectedRowToEdit: "selectedRowToEdit", selectedRowToDelete: "selectedRowToDelete", selectedRowsToDelete: "selectedRowsToDelete", rowLink: "rowLink", addRow: "addRow", columnDataOnRowLinkClick: "columnDataOnRowLinkClick", menuActionClick: "menuActionClick", selectActionMenu: "selectActionMenu", paginationChange: "paginationChange", selectedFilter: "selectedFilter", removeFilteredOption: "removeFilteredOption", filteredOptions: "filteredOptions", searchedValue: "searchedValue", sortChange: "sortChange", selectedRowsInfo: "selectedRowsInfo", rowExpansionClick: "rowExpansionClick" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "tableContent", first: true, predicate: ["tableContent"], descendants: true }], ngImport: i0, template: "<div class=\"ieeesa-data-table d-flex flex-column container-fluid\">\r\n <div\r\n class=\"d-flex\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'flex-column ms-4'\r\n : 'justify-content-center position-relative'\r\n \"\r\n >\r\n <caption\r\n class=\"ieeesa-data-table--caption\"\r\n *ngIf=\"caption\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-title-lg-24' : 'ieeesa-title-md-18'\"\r\n >\r\n {{\r\n caption\r\n }}\r\n </caption>\r\n <p\r\n *ngIf=\"isScrollingEnabled && isScrollSupportMessageNeeded\"\r\n class=\"m-0 mb-2\"\r\n [ngClass]=\"{ 'position-absolute bottom-0 end-0': !isMobileView }\"\r\n >\r\n {{ scrollbarSupportMessage }}\r\n </p>\r\n </div>\r\n <div\r\n *ngIf=\"tableActions\"\r\n class=\"ieeesa-data-table__actions d-flex row justify-content-between align-items-lg-baseline p-sm-0\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-data-table__mobile-view-actions' : ''\"\r\n >\r\n <ng-container\r\n *ngIf=\"!isMobileView\"\r\n [ngTemplateOutlet]=\"filterTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: 'col-md-7 col-lg-6' }\"\r\n ></ng-container>\r\n <div\r\n class=\"d-flex align-items-center gap-lg-4 gap-md-3 gap-sm-3 gap-3 col-md-5 col-lg-6 justify-content-end ps-0\"\r\n [ngClass]=\"!tableActions?.isFilterNeeded ? 'col-md-12 col-lg-12' : ''\"\r\n >\r\n <ng-container *ngIf=\"!isMobileView\">\r\n <ng-container *ngTemplateOutlet=\"ieeesaSearch\"> </ng-container>\r\n </ng-container>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isAddNeeded\"\r\n [iconButton]=\"addButton\"\r\n (iconButtonClick)=\"onAddClick()\"\r\n [ngClass]=\"\r\n addButton?.disabled ? 'ieeesa-data-table__actions--disabled' : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isEditNeeded\"\r\n [iconButton]=\"tableEditButton\"\r\n (iconButtonClick)=\"onTableEditClick()\"\r\n [ngClass]=\"\r\n selectedRows.selected.length !== 1\r\n ? 'ieeesa-data-table__actions--disabled'\r\n : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isDeleteNeeded\"\r\n [iconButton]=\"tableDeleteButton\"\r\n (iconButtonClick)=\"onDeleteTableClick()\"\r\n class=\"d-flex justify-content-between align-items-center\"\r\n [ngClass]=\"\r\n selectedRows.selected.length === 0 || tableDeleteButton.disabled\r\n ? 'ieeesa-data-table__actions--disabled'\r\n : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <button\r\n mat-button\r\n *ngIf=\"tableActions?.isSearchNeeded\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.search\"\r\n class=\"d-flex d-sm-flex d-md-none d-lg-none d-xl-none ieeesa-data-table__actions--search-group-icon\"\r\n type=\"button\"\r\n (click)=\"onTableSearchClick()\"\r\n >\r\n <i class=\"fa-solid fa-magnifying-glass\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container\r\n *ngIf=\"isMobileView\"\r\n [ngTemplateOutlet]=\"filterTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: 'ieeesa-data-table__filter' }\"\r\n >\r\n </ng-container>\r\n <ng-template #filterTemplateRef let-className=\"data\">\r\n <ieeesa-filter\r\n class=\"{{ className }} p-0\"\r\n [filters]=\"filters\"\r\n *ngIf=\"tableActions?.isFilterNeeded\"\r\n [selectedFilterOptions]=\"selectedFilterOptions\"\r\n [appliedFilterOptions]=\"appliedFilterOptions\"\r\n (selectedFilter)=\"selectedFilterTypeInfo($event)\"\r\n (removeFilteredOption)=\"onRemovalOfFilteredOption($event)\"\r\n (filteredOptions)=\"onSelectedFilterOptions($event)\"\r\n ></ieeesa-filter>\r\n </ng-template>\r\n <ng-container *ngIf=\"isMobileView && isSearchActive\">\r\n <ng-container *ngTemplateOutlet=\"ieeesaSearch\"> </ng-container>\r\n </ng-container>\r\n <ng-template #ieeesaSearch>\r\n <ieeesa-search\r\n [placeholderLabel]=\"searchPlaceHolderText\"\r\n [searchType]=\"searchType\"\r\n (searchValue)=\"searchValue($event)\"\r\n *ngIf=\"tableActions?.isSearchNeeded\"\r\n class=\"ieeesa-data-table__search-wrapper mt-sm-2 md-sm-2 mt-2 md-2\"\r\n [supportMessage]=\"searchSupportMessage\"\r\n ></ieeesa-search>\r\n </ng-template>\r\n <p\r\n class=\"ieeesa-data-table__search_result_label\"\r\n *ngIf=\"searchResultMessage\"\r\n [innerHTML]=\"searchResultMessage | safe : safeType\"\r\n ></p>\r\n <p\r\n class=\"ieeesa-data-table__columns-header-text mb-0 ieeesa-title-md-18 text-center\"\r\n >\r\n {{ tableColumnsHeaderText }}\r\n </p>\r\n <div\r\n class=\"ieeesa-data-table__content\"\r\n [ngClass]=\"\r\n tableDataInfo && tableDataInfo.length === 0\r\n ? 'ieeesa-data-table__no-table-data'\r\n : ''\r\n \"\r\n #tableContent\r\n >\r\n <table\r\n mat-table\r\n [ngClass]=\"className\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n [matSortDisableClear]=\"isClearSortNeeded\"\r\n [matSortActive]=\"defaultSortedColumn\"\r\n [matSortDirection]=\"defaultColumnSortDirection\"\r\n (matSortChange)=\"sortTableData($event)\"\r\n [trackBy]=\"trackById\"\r\n multiTemplateDataRows\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let column of columnSchemaInfo;\r\n trackBy: trackById;\r\n let id = index\r\n \"\r\n matColumnDef=\"{{ column?.columnDef }}\"\r\n [sticky]=\"column?.isStickyColumn\"\r\n [stickyEnd]=\"column?.isStickyEndColumn\"\r\n >\r\n <th\r\n mat-header-cell\r\n mat-sort-header\r\n [disabled]=\"!column?.isSortableColumn\"\r\n [ngSwitch]=\"column?.columnDef\"\r\n class=\"ieeesa-data-table-header ieeesa-body-sm-bold-14\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n *matHeaderCellDef\r\n [attr.aria-label]=\"column?.heading\"\r\n >\r\n <ng-container *ngSwitchCase=\"columnType?.SELECT\">\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRowsSelection() : null\"\r\n [checked]=\"selectedRows?.hasValue() && isAllRowsSelected()\"\r\n [indeterminate]=\"selectedRows?.hasValue() && !isAllRowsSelected()\"\r\n [aria-label]=\"constants?.dataTable?.ariaLabel?.selectAll\"\r\n >\r\n </mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span [ngClass]=\"{ 'me-2': column.hasColumnActions }\">{{\r\n column.heading\r\n }}</span>\r\n <ng-container *ngIf=\"column.hasColumnActions\">\r\n <ieeesa-menu\r\n [menuItems]=\"tableColumnActions\"\r\n [defaultIconSize]=\"tableColumnActionMenuSize\"\r\n class=\"ieeesa-data-table__column-menu\"\r\n ></ieeesa-menu>\r\n </ng-container>\r\n </ng-container>\r\n </th>\r\n <td\r\n mat-cell\r\n class=\"ieeesa-data-table__cell-content ieeesa-title-sm-16\"\r\n *matCellDef=\"let row\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n tableData;\r\n context: {\r\n column: column,\r\n row: row,\r\n tableRowActions: tableRowActions\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td\r\n mat-cell\r\n *matCellDef=\"let row\"\r\n [attr.colspan]=\"displayedColumns?.length\"\r\n >\r\n <div\r\n class=\"ieeesa-expanded-row\"\r\n [@detailExpand]=\"row === expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <div class=\"ieeesa-nested-data-table\">\r\n <table\r\n #nestedTable\r\n mat-table\r\n [trackBy]=\"trackById\"\r\n [dataSource]=\"nestedTableDataSource\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let column of nestedTableColumnSchemaInfo;\r\n trackBy: trackById;\r\n let id = index\r\n \"\r\n matColumnDef=\"{{ column?.columnDef }}\"\r\n [sticky]=\"column?.isStickyColumn\"\r\n [stickyEnd]=\"column?.isStickyEndColumn\"\r\n >\r\n <th\r\n mat-header-cell\r\n [ngSwitch]=\"column?.columnDef\"\r\n class=\"ieeesa-data-table-header ieeesa-body-sm-bold-14\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n *matHeaderCellDef\r\n [attr.aria-label]=\"column?.heading\"\r\n >\r\n <ng-container *ngSwitchDefault>\r\n <span>{{ column.heading }}</span>\r\n </ng-container>\r\n </th>\r\n <td\r\n mat-cell\r\n class=\"ieeesa-data-table__cell-content ieeesa-title-sm-16\"\r\n *matCellDef=\"let row\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n tableData;\r\n context: {\r\n column: column,\r\n row: row,\r\n tableRowActions: nestedTableRowActions\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"isNestedTableHeaderNeeded\">\r\n <tr\r\n mat-header-row\r\n class=\"ieeesa-data-table__header-row\"\r\n *matHeaderRowDef=\"\r\n nestedTableDisplayedColumns;\r\n sticky: false\r\n \"\r\n ></tr>\r\n </ng-container>\r\n <tr\r\n mat-row\r\n class=\"ieeesa-nested-data-table__cell-row\"\r\n *matRowDef=\"let row; columns: nestedTableDisplayedColumns\"\r\n [ngStyle]=\"\r\n row?.legendColor\r\n ? getRowBorderLeftColor(row?.legendColor)\r\n : ''\r\n \"\r\n ></tr>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"row === expandedElement\">\r\n <div\r\n class=\"d-flex justify-content-between align-items-center ieeesa-expanded-row__footer\"\r\n *ngIf=\"\r\n nestedPaginatorConfig.totalRecords >\r\n nestedPaginatorConfig.recordsPerPage &&\r\n nestedPaginatorConfig.recordsPerPage > 0\r\n \"\r\n >\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row)\"\r\n class=\"ieeesa-title-sm-16 ieeesa-data-table__cell-content-link\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.link\"\r\n >\r\n {{ viewAll ?? \"\" }}\r\n </button>\r\n <span class=\"nested-element-detail__footer--detail\">{{\r\n showNestedTablePaginationInfo\r\n }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"isTableHeaderNeeded\">\r\n <tr\r\n mat-header-row\r\n class=\"ieeesa-data-table__header-row\"\r\n *matHeaderRowDef=\"displayedColumns; sticky: false\"\r\n ></tr>\r\n </ng-container>\r\n <tr\r\n mat-row\r\n class=\"ieeesa-data-table__cell-row\"\r\n [ngStyle]=\"\r\n row?.legendColor ? getRowBorderLeftColor(row?.legendColor) : ''\r\n \"\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n ></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let details; columns: ['expandedDetail']\"\r\n class=\"ieeesa-row-expanded-table-detail\"\r\n ></tr>\r\n </table>\r\n </div>\r\n</div>\r\n<p\r\n class=\"ieeesa-data-table__message ieeesa-title-lg-bold-24 text-center p-5\"\r\n *ngIf=\"tableDataInfo && tableDataInfo.length === 0\"\r\n>\r\n {{ noRecordFound }}\r\n</p>\r\n<div class=\"row ieeesa-data-table__pagination-container\">\r\n <ieeesa-legend\r\n class=\"col-sm-12 col-md-5 d-flex align-items-end px-4\"\r\n *ngIf=\"legends?.length\"\r\n [ngClass]=\"!tableActions?.isPaginationNeeded ? 'col-md-12' : ''\"\r\n [legends]=\"legends\"\r\n [isSorting]=\"true\"\r\n ></ieeesa-legend>\r\n <div\r\n *ngIf=\"tableActions?.isPaginationNeeded\"\r\n class=\"ieeesa-data-table__pagination d-flex flex-row-reverse col-sm-12 col-md-7\"\r\n [ngClass]=\"!legends?.length ? 'col-md-12' : ''\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.pagination\"\r\n >\r\n <mat-paginator\r\n [pageSize]=\"paginatorConfig?.recordsPerPage\"\r\n [pageSizeOptions]=\"paginatorConfig.pageSizeOptions\"\r\n (page)=\"handlePagination($event)\"\r\n [length]=\"paginatorConfig?.totalRecords\"\r\n ></mat-paginator>\r\n </div>\r\n</div>\r\n<ng-template\r\n #tableData\r\n let-column=\"column\"\r\n let-row=\"row\"\r\n let-tableRowActions=\"tableRowActions\"\r\n>\r\n <ng-container [ngSwitch]=\"column?.columnType\">\r\n <ng-container *ngSwitchDefault>\r\n <ng-container\r\n *ngIf=\"isCellTextOverflowEllipsis; then ellipsisCell; else textWrapCell\"\r\n >\r\n </ng-container>\r\n <ng-template #textWrapCell>\r\n <p\r\n class=\"m-0\"\r\n *ngIf=\"column?.isHTMLCellData\"\r\n [innerHTML]=\"column?.cellData(row) | safe : safeType\"\r\n ></p>\r\n <ng-container *ngIf=\"!column?.isHTMLCellData\">\r\n {{ column?.cellData(row) }}</ng-container\r\n >\r\n </ng-template>\r\n <ng-template #ellipsisCell>\r\n <p\r\n ieeesaTextTruncated\r\n [matTooltip]=\"column?.cellData(row)\"\r\n class=\"ieeesa-data-table__cell-content--ellipsis\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </p>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.LINK\">\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n class=\"ieeesa-title-sm-16 ieeesa-data-table__cell-content-link\"\r\n [attr.aria-label]=\"column?.cellData(row)\"\r\n [matTooltip]=\"row?.toolTipText\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </button>\r\n <ng-container *ngIf=\"column?.isContentUnderLink\">\r\n <p\r\n class=\"ieeesa-body-sm-14 ieeesa-data-table__cell-content-under-link\"\r\n *ngIf=\"column?.isHTMLCellData\"\r\n [innerHTML]=\"row?.contentUnderLink | safe : safeType\"\r\n ></p>\r\n <p\r\n class=\"ieeesa-body-sm-14 ieeesa-data-table__cell-content-under-link\"\r\n *ngIf=\"!column?.isHTMLCellData\"\r\n >\r\n {{ row?.contentUnderLink }}\r\n </p>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.NESTED_TABLE\">\r\n <ieeesa-icon-button\r\n mat-button\r\n *ngIf=\"row?.hasChildren\"\r\n (iconButtonClick)=\"\r\n expandedElement = expandedElement === row ? null : row;\r\n onTableRowExpansionClick(row)\r\n \"\r\n [iconButton]=\"\r\n expandedElement === row ? rowExpandButton : rowCollapseButton\r\n \"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.SELECT\">\r\n <mat-checkbox\r\n class=\"col-2\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? onSelectClick(row) : null\"\r\n [checked]=\"selectedRows.isSelected(row)\"\r\n [aria-label]=\"constants?.dataTable?.ariaLabel?.select\"\r\n >\r\n </mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.EDIT\">\r\n <ieeesa-icon-button\r\n [iconButton]=\"rowEditButton\"\r\n (iconButtonClick)=\"onEditClick(row)\"\r\n ></ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.DELETE\">\r\n <ieeesa-icon-button\r\n [iconButton]=\"rowDeleteButton\"\r\n (iconButtonClick)=\"onDeleteClick(row)\"\r\n ></ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.ACTIONS\">\r\n <ieeesa-menu\r\n [menuItems]=\"tableRowActions ?? row.menuAction\"\r\n (click)=\"menuItemAction(row)\"\r\n (menuItemClick)=\"onRowActionClick($event)\"\r\n ></ieeesa-menu>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-data-table{--mdc-checkbox-selected-focus-icon-color: #00629b;--mdc-checkbox-selected-hover-icon-color: #00629b;--mdc-checkbox-selected-icon-color: #00629b;--mdc-checkbox-selected-pressed-icon-color: #00629b;--mdc-checkbox-selected-focus-state-layer-color: #00629b;--mdc-checkbox-selected-hover-state-layer-color: #00629b;--mdc-checkbox-selected-pressed-state-layer-color: #00629b;--mat-option-selected-state-label-text-color: #00629b}.ieeesa-data-table .mat-mdc-header-row{font-family:Calibri Bold;font-weight:700;font-size:.875rem}.ieeesa-data-table__content{position:relative;overflow:auto;margin-top:.75em;width:100%}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-arrow{opacity:1!important;transform:none!important;color:#a7a8aa}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-sorted .mat-sort-header-arrow{color:#00629b}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-indicator{transform:translateY(0)!important}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-pointer-right{transform:rotate(45deg)!important}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-pointer-left{transform:rotate(-45deg)!important}.ieeesa-data-table__cell-content--ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin:0}.ieeesa-data-table__message{color:#ba0c2f!important}.ieeesa-data-table__mobile-view-actions{margin-left:3.125em}.ieeesa-data-table__actions-right{width:50%}.ieeesa-data-table__cell-content-link{padding:0!important;font-size:.875rem;color:#00629b!important;text-align:left;text-decoration:underline;white-space:normal;word-wrap:break-word;border:none;background:none;min-width:auto!important}.ieeesa-data-table__actions{padding:.75em 0 .75em .15em;position:relative;margin-right:0}.ieeesa-data-table__actions--disabled .ieeesa-icon-button__svg{fill:#c9c5ca!important}.ieeesa-data-table__actions--search-group-icon{height:1.5em;right:0;min-width:auto!important;padding-left:1em;padding-top:.1875em;color:#00629b!important}.ieeesa-data-table__filter{margin-top:-45px}.ieeesa-data-table__search-wrapper{width:-webkit-fill-available;width:-moz-available}.ieeesa-data-table__search-wrapper .ieeesa-search-field__search-icon{color:#00629b}.ieeesa-data-table__search-wrapper .ieeesa-search-field__button{background:none}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field{width:100%;height:2.25em;border-radius:.1875em;background:linear-gradient(0deg,#00629b0d 0% 100%),#fffbfe;font-size:1rem;box-shadow:0 0 4px #00000080 inset}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mat-mdc-form-field-infix,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-text-field{padding:.1875em .5em!important}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}.ieeesa-data-table .ieeesa-icon-button{padding:0 3px}.ieeesa-data-table .ieeesa-icon-button__svg{height:1.5em;width:1.5em;fill:#00629b}.ieeesa-data-table .cell-text{white-space:normal;word-wrap:break-word}.ieeesa-data-table .mat-mdc-table{background:none}.ieeesa-data-table tbody tr:nth-child(odd of.ieeesa-data-table__cell-row){background-color:#f7f9ff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table tbody tr:nth-child(2n of.ieeesa-data-table__cell-row){background-color:#fff!important}.ieeesa-data-table thead{border-top:1px solid #dce3e9}.ieeesa-data-table thead tr{background-color:#fff!important}.ieeesa-data-table__column-select{width:1em;padding:0!important}.ieeesa-data-table tr.ieeesa-row-expanded-table-detail{height:0}.ieeesa-data-table .ieeesa-expanded-row .ieeesa-nested-data-table__cell-row{background-color:#f7f9ff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table .ieeesa-expanded-row__footer{border-top:1px solid #dce3e9;padding:.25em .75em .25em .5em}.ieeesa-data-table .ieeesa-expanded-row__footer--detail{color:#000;font-size:.875rem}.ieeesa-data-table .cdk-column-expandedDetail{padding:0!important;background-color:#f7f9ff!important}.ieeesa-data-table__cell-content-under-link{color:#63666a!important}\n"], dependencies: [{ kind: "pipe", type: i0.forwardRef(function () { return SafePipe; }), name: "safe" }, { kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitchCase; }), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitchDefault; }), selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatIconModule; }) }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatSortModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.MatSort; }), selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i0.forwardRef(function () { return i3.MatSortHeader; }), selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatSlideToggleModule; }) }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatTableModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i4.MatTable; }), selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatHeaderCellDef; }), selector: "[matHeaderCellDef]" }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatHeaderRowDef; }), selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatColumnDef; }), selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatCellDef; }), selector: "[matCellDef]" }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatRowDef; }), selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatHeaderCell; }), selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatCell; }), selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i0.forwardRef(function () { return i4.MatHeaderRow; }), selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i0.forwardRef(function () { return i4.MatRow; }), selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatPaginatorModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i5.MatPaginator; }), selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatCheckboxModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i6.MatCheckbox; }), selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatButtonModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i7.MatButton; }), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(function () { return IconButtonComponent; }), selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }, { kind: "component", type: i0.forwardRef(function () { return SearchComponent; }), selector: "ieeesa-search", inputs: ["formControlName", "placeholderLabel", "searchTerm", "supportMessage", "searchType", "minCharacterToSearch"], outputs: ["searchValue"] }, { kind: "component", type: i0.forwardRef(function () { return FilterComponent; }), selector: "ieeesa-filter", inputs: ["filterOptionType", "appliedFilterOptions", "filterButton", "filters", "canShowSelection", "selectedFilterOptions"], outputs: ["selectedFilter", "filteredOptions", "removeFilteredOption"] }, { kind: "directive", type: i0.forwardRef(function () { return TextTruncatedDirective; }), selector: "[matTooltip][ieeesaTextTruncated]" }, { kind: "component", type: i0.forwardRef(function () { return MenuComponent; }), selector: "ieeesa-menu", inputs: ["menuItems", "button", "defaultIconSize", "isMarginBottomZero"], outputs: ["menuItemClick"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatTooltipModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i8.MatTooltip; }), selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i0.forwardRef(function () { return LegendComponent; }), selector: "ieeesa-legend", inputs: ["legends", "isSorting"] }], animations: [
|
|
436
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataTableComponent, deps: [{ token: i1.BreakpointObserverService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
437
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataTableComponent, isStandalone: true, selector: "ieeesa-data-table", inputs: { tableDataInfo: "tableDataInfo", nestedTableDataInfo: "nestedTableDataInfo", columnSchemaInfo: "columnSchemaInfo", nestedTableColumnSchemaInfo: "nestedTableColumnSchemaInfo", tableActions: "tableActions", tableRowActions: "tableRowActions", nestedTableRowActions: "nestedTableRowActions", caption: "caption", viewAll: "viewAll", paginatorConfig: "paginatorConfig", nestedPaginatorConfig: "nestedPaginatorConfig", legends: "legends", searchPlaceHolderText: "searchPlaceHolderText", rowEditButton: "rowEditButton", rowDeleteButton: "rowDeleteButton", tableEditButton: "tableEditButton", tableDeleteButton: "tableDeleteButton", rowExpandButton: "rowExpandButton", rowCollapseButton: "rowCollapseButton", isNestedTableHeaderNeeded: "isNestedTableHeaderNeeded", addButton: "addButton", defaultColumnSortDirection: "defaultColumnSortDirection", defaultSortedColumn: "defaultSortedColumn", isClearSortNeeded: "isClearSortNeeded", filters: "filters", selectedFilterOptions: "selectedFilterOptions", appliedFilterOptions: "appliedFilterOptions", searchType: "searchType", className: "className", searchSupportMessage: "searchSupportMessage", inbuiltSortingNeeded: "inbuiltSortingNeeded", isCellTextOverflowEllipsis: "isCellTextOverflowEllipsis", isTableHeaderNeeded: "isTableHeaderNeeded", searchResultMessage: "searchResultMessage" }, outputs: { rowSelected: "rowSelected", selectedRowToEdit: "selectedRowToEdit", selectedRowToDelete: "selectedRowToDelete", selectedRowsToDelete: "selectedRowsToDelete", rowLink: "rowLink", addRow: "addRow", columnDataOnRowLinkClick: "columnDataOnRowLinkClick", menuActionClick: "menuActionClick", selectActionMenu: "selectActionMenu", paginationChange: "paginationChange", selectedFilter: "selectedFilter", removeFilteredOption: "removeFilteredOption", filteredOptions: "filteredOptions", searchedValue: "searchedValue", sortChange: "sortChange", selectedRowsInfo: "selectedRowsInfo", rowExpansionClick: "rowExpansionClick" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }], ngImport: i0, template: "<div class=\"ieeesa-data-table d-flex flex-column container-fluid\">\r\n <caption class=\"ieeesa-data-table--caption\" *ngIf=\"caption\">\r\n {{\r\n caption\r\n }}\r\n </caption>\r\n <div\r\n *ngIf=\"tableActions\"\r\n class=\"ieeesa-data-table__actions d-flex row justify-content-between align-items-lg-baseline p-sm-0\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-data-table__mobile-view-actions' : ''\"\r\n >\r\n <ng-container\r\n *ngIf=\"!isMobileView\"\r\n [ngTemplateOutlet]=\"filterTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: 'col-md-7 col-lg-6' }\"\r\n ></ng-container>\r\n <div\r\n class=\"d-flex align-items-center gap-lg-4 gap-md-3 gap-sm-3 gap-3 col-md-5 col-lg-6 justify-content-end ps-0\"\r\n [ngClass]=\"!tableActions?.isFilterNeeded ? 'col-md-12 col-lg-12' : ''\"\r\n >\r\n <ng-container *ngIf=\"!isMobileView\">\r\n <ng-container *ngTemplateOutlet=\"ieeesaSearch\"> </ng-container>\r\n </ng-container>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isAddNeeded\"\r\n [iconButton]=\"addButton\"\r\n (iconButtonClick)=\"onAddClick()\"\r\n [ngClass]=\"\r\n addButton?.disabled ? 'ieeesa-data-table__actions--disabled' : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isEditNeeded\"\r\n [iconButton]=\"tableEditButton\"\r\n (iconButtonClick)=\"onTableEditClick()\"\r\n [ngClass]=\"\r\n selectedRows.selected.length !== 1\r\n ? 'ieeesa-data-table__actions--disabled'\r\n : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isDeleteNeeded\"\r\n [iconButton]=\"tableDeleteButton\"\r\n (iconButtonClick)=\"onDeleteTableClick()\"\r\n class=\"d-flex justify-content-between align-items-center\"\r\n [ngClass]=\"\r\n selectedRows.selected.length === 0 || tableDeleteButton.disabled\r\n ? 'ieeesa-data-table__actions--disabled'\r\n : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <button\r\n mat-button\r\n *ngIf=\"tableActions?.isSearchNeeded\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.search\"\r\n class=\"d-flex d-sm-flex d-md-none d-lg-none d-xl-none ieeesa-data-table__actions--search-group-icon\"\r\n type=\"button\"\r\n (click)=\"onTableSearchClick()\"\r\n >\r\n <i class=\"fa-solid fa-magnifying-glass\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container\r\n *ngIf=\"isMobileView\"\r\n [ngTemplateOutlet]=\"filterTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: 'ieeesa-data-table__filter' }\"\r\n >\r\n </ng-container>\r\n <ng-template #filterTemplateRef let-className=\"data\">\r\n <ieeesa-filter\r\n class=\"{{ className }} p-0\"\r\n [filters]=\"filters\"\r\n *ngIf=\"tableActions?.isFilterNeeded\"\r\n [selectedFilterOptions]=\"selectedFilterOptions\"\r\n [appliedFilterOptions]=\"appliedFilterOptions\"\r\n (selectedFilter)=\"selectedFilterTypeInfo($event)\"\r\n (removeFilteredOption)=\"onRemovalOfFilteredOption($event)\"\r\n (filteredOptions)=\"onSelectedFilterOptions($event)\"\r\n ></ieeesa-filter>\r\n </ng-template>\r\n <ng-container *ngIf=\"isMobileView && isSearchActive\">\r\n <ng-container *ngTemplateOutlet=\"ieeesaSearch\"> </ng-container>\r\n </ng-container>\r\n <ng-template #ieeesaSearch>\r\n <ieeesa-search\r\n [placeholderLabel]=\"searchPlaceHolderText\"\r\n [searchType]=\"searchType\"\r\n (searchValue)=\"searchValue($event)\"\r\n *ngIf=\"tableActions?.isSearchNeeded\"\r\n class=\"ieeesa-data-table__search-wrapper mt-sm-2 md-sm-2 mt-2 md-2\"\r\n [supportMessage]=\"searchSupportMessage\"\r\n ></ieeesa-search>\r\n </ng-template>\r\n <p\r\n class=\"ieeesa-data-table__search_result_label\"\r\n *ngIf=\"searchResultMessage\"\r\n [innerHTML]=\"searchResultMessage | safe : safeType\"\r\n ></p>\r\n <div\r\n class=\"ieeesa-data-table__content\"\r\n [ngClass]=\"\r\n tableDataInfo && tableDataInfo.length === 0\r\n ? 'ieeesa-data-table__no-table-data'\r\n : ''\r\n \"\r\n >\r\n <table\r\n mat-table\r\n [ngClass]=\"className\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n [matSortDisableClear]=\"isClearSortNeeded\"\r\n [matSortActive]=\"defaultSortedColumn\"\r\n [matSortDirection]=\"defaultColumnSortDirection\"\r\n (matSortChange)=\"sortTableData($event)\"\r\n [trackBy]=\"trackById\"\r\n multiTemplateDataRows\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let column of columnSchemaInfo;\r\n trackBy: trackById;\r\n let id = index\r\n \"\r\n matColumnDef=\"{{ column?.columnDef }}\"\r\n [sticky]=\"column?.isStickyColumn\"\r\n [stickyEnd]=\"column?.isStickyEndColumn\"\r\n >\r\n <th\r\n mat-header-cell\r\n mat-sort-header\r\n [disabled]=\"!column?.isSortableColumn\"\r\n [ngSwitch]=\"column?.columnDef\"\r\n class=\"ieeesa-data-table-header ieeesa-body-sm-bold-14\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n *matHeaderCellDef\r\n [attr.aria-label]=\"column?.heading\"\r\n >\r\n <ng-container *ngSwitchCase=\"columnType?.SELECT\">\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRowsSelection() : null\"\r\n [checked]=\"selectedRows?.hasValue() && isAllRowsSelected()\"\r\n [indeterminate]=\"selectedRows?.hasValue() && !isAllRowsSelected()\"\r\n [aria-label]=\"constants?.dataTable?.ariaLabel?.selectAll\"\r\n >\r\n </mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{ column.heading }}</span>\r\n </ng-container>\r\n </th>\r\n <td\r\n mat-cell\r\n class=\"ieeesa-data-table__cell-content ieeesa-title-sm-16\"\r\n *matCellDef=\"let row\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n tableData;\r\n context: {\r\n column: column,\r\n row: row,\r\n tableRowActions: tableRowActions\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td\r\n mat-cell\r\n *matCellDef=\"let row\"\r\n [attr.colspan]=\"displayedColumns?.length\"\r\n >\r\n <div\r\n class=\"ieeesa-expanded-row\"\r\n [@detailExpand]=\"row === expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <div class=\"ieeesa-nested-data-table\">\r\n <table\r\n #nestedTable\r\n mat-table\r\n [trackBy]=\"trackById\"\r\n [dataSource]=\"nestedTableDataSource\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let column of nestedTableColumnSchemaInfo;\r\n trackBy: trackById;\r\n let id = index\r\n \"\r\n matColumnDef=\"{{ column?.columnDef }}\"\r\n [sticky]=\"column?.isStickyColumn\"\r\n [stickyEnd]=\"column?.isStickyEndColumn\"\r\n >\r\n <th\r\n mat-header-cell\r\n [ngSwitch]=\"column?.columnDef\"\r\n class=\"ieeesa-data-table-header ieeesa-body-sm-bold-14\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n *matHeaderCellDef\r\n [attr.aria-label]=\"column?.heading\"\r\n >\r\n <ng-container *ngSwitchDefault>\r\n <span>{{ column.heading }}</span>\r\n </ng-container>\r\n </th>\r\n <td\r\n mat-cell\r\n class=\"ieeesa-data-table__cell-content ieeesa-title-sm-16\"\r\n *matCellDef=\"let row\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n tableData;\r\n context: {\r\n column: column,\r\n row: row,\r\n tableRowActions: nestedTableRowActions\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"isNestedTableHeaderNeeded\">\r\n <tr\r\n mat-header-row\r\n class=\"ieeesa-data-table__header-row\"\r\n *matHeaderRowDef=\"\r\n nestedTableDisplayedColumns;\r\n sticky: false\r\n \"\r\n ></tr>\r\n </ng-container>\r\n <tr\r\n mat-row\r\n class=\"ieeesa-nested-data-table__cell-row\"\r\n *matRowDef=\"let row; columns: nestedTableDisplayedColumns\"\r\n [ngStyle]=\"\r\n row?.legendColor\r\n ? getRowBorderLeftColor(row?.legendColor)\r\n : ''\r\n \"\r\n ></tr>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"row === expandedElement\">\r\n <div\r\n class=\"d-flex justify-content-between align-items-center ieeesa-expanded-row__footer\"\r\n *ngIf=\"\r\n nestedPaginatorConfig.totalRecords >\r\n nestedPaginatorConfig.recordsPerPage &&\r\n nestedPaginatorConfig.recordsPerPage > 0\r\n \"\r\n >\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row)\"\r\n class=\"ieeesa-title-sm-16 ieeesa-data-table__cell-content-link\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.link\"\r\n >\r\n {{ viewAll ?? \"\" }}\r\n </button>\r\n <span class=\"nested-element-detail__footer--detail\">{{\r\n showNestedTablePaginationInfo\r\n }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"isTableHeaderNeeded\">\r\n <tr\r\n mat-header-row\r\n class=\"ieeesa-data-table__header-row\"\r\n *matHeaderRowDef=\"displayedColumns; sticky: false\"\r\n ></tr>\r\n </ng-container>\r\n <tr\r\n mat-row\r\n class=\"ieeesa-data-table__cell-row\"\r\n [ngStyle]=\"\r\n row?.legendColor ? getRowBorderLeftColor(row?.legendColor) : ''\r\n \"\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n ></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let details; columns: ['expandedDetail']\"\r\n class=\"ieeesa-row-expanded-table-detail\"\r\n ></tr>\r\n </table>\r\n </div>\r\n</div>\r\n<p\r\n class=\"ieeesa-data-table__message ieeesa-title-lg-bold-24 text-center p-5\"\r\n *ngIf=\"tableDataInfo && tableDataInfo.length === 0\"\r\n>\r\n {{ noRecordFound }}\r\n</p>\r\n<div class=\"row ieeesa-data-table__pagination-container\">\r\n <ieeesa-legend\r\n class=\"col-sm-12 col-md-5 d-flex align-items-end px-4\"\r\n *ngIf=\"legends?.length\"\r\n [ngClass]=\"!tableActions?.isPaginationNeeded ? 'col-md-12' : ''\"\r\n [legends]=\"legends\"\r\n [isSorting]=\"true\"\r\n ></ieeesa-legend>\r\n <div\r\n *ngIf=\"tableActions?.isPaginationNeeded\"\r\n class=\"ieeesa-data-table__pagination d-flex flex-row-reverse col-sm-12 col-md-7\"\r\n [ngClass]=\"!legends?.length ? 'col-md-12' : ''\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.pagination\"\r\n >\r\n <mat-paginator\r\n [pageSize]=\"paginatorConfig?.recordsPerPage\"\r\n [pageSizeOptions]=\"paginatorConfig.pageSizeOptions\"\r\n (page)=\"handlePagination($event)\"\r\n [length]=\"paginatorConfig?.totalRecords\"\r\n ></mat-paginator>\r\n </div>\r\n</div>\r\n<ng-template\r\n #tableData\r\n let-column=\"column\"\r\n let-row=\"row\"\r\n let-tableRowActions=\"tableRowActions\"\r\n>\r\n <ng-container [ngSwitch]=\"column?.columnType\">\r\n <ng-container *ngSwitchDefault>\r\n <ng-container\r\n *ngIf=\"isCellTextOverflowEllipsis; then ellipsisCell; else textWrapCell\"\r\n >\r\n </ng-container>\r\n <ng-template #textWrapCell>\r\n <p\r\n class=\"m-0\"\r\n *ngIf=\"column?.isHTMLCellData\"\r\n [innerHTML]=\"column?.cellData(row) | safe : safeType\"\r\n ></p>\r\n <ng-container *ngIf=\"!column?.isHTMLCellData\">\r\n {{ column?.cellData(row) }}</ng-container\r\n >\r\n </ng-template>\r\n <ng-template #ellipsisCell>\r\n <p\r\n ieeesaTextTruncated\r\n [matTooltip]=\"column?.cellData(row)\"\r\n class=\"ieeesa-data-table__cell-content--ellipsis\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </p>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.LINK\">\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n class=\"ieeesa-title-sm-16 ieeesa-data-table__cell-content-link\"\r\n [attr.aria-label]=\"column?.cellData(row)\"\r\n [matTooltip]=\"row?.toolTipText\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </button>\r\n <ng-container *ngIf=\"column?.isContentUnderLink\">\r\n <p\r\n class=\"ieeesa-body-sm-14 ieeesa-data-table__cell-content-under-link\"\r\n *ngIf=\"column?.isHTMLCellData\"\r\n [innerHTML]=\"row?.contentUnderLink | safe : safeType\"\r\n ></p>\r\n <p\r\n class=\"ieeesa-body-sm-14 ieeesa-data-table__cell-content-under-link\"\r\n *ngIf=\"!column?.isHTMLCellData\"\r\n >\r\n {{ row?.contentUnderLink }}\r\n </p>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.NESTED_TABLE\">\r\n <ieeesa-icon-button\r\n mat-button\r\n *ngIf=\"row?.hasChildren\"\r\n (iconButtonClick)=\"\r\n expandedElement = expandedElement === row ? null : row;\r\n onTableRowExpansionClick(row)\r\n \"\r\n [iconButton]=\"\r\n expandedElement === row ? rowExpandButton : rowCollapseButton\r\n \"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.SELECT\">\r\n <mat-checkbox\r\n class=\"col-2\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? onSelectClick(row) : null\"\r\n [checked]=\"selectedRows.isSelected(row)\"\r\n [aria-label]=\"constants?.dataTable?.ariaLabel?.select\"\r\n >\r\n </mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.EDIT\">\r\n <ieeesa-icon-button\r\n [iconButton]=\"rowEditButton\"\r\n (iconButtonClick)=\"onEditClick(row)\"\r\n ></ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.DELETE\">\r\n <ieeesa-icon-button\r\n [iconButton]=\"rowDeleteButton\"\r\n (iconButtonClick)=\"onDeleteClick(row)\"\r\n ></ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.ACTIONS\">\r\n <ieeesa-menu\r\n [menuItems]=\"tableRowActions ?? row.menuAction\"\r\n (click)=\"menuItemAction(row)\"\r\n (menuItemClick)=\"onRowActionClick($event)\"\r\n ></ieeesa-menu>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-data-table{--mdc-checkbox-selected-focus-icon-color: #00629b;--mdc-checkbox-selected-hover-icon-color: #00629b;--mdc-checkbox-selected-icon-color: #00629b;--mdc-checkbox-selected-pressed-icon-color: #00629b;--mdc-checkbox-selected-focus-state-layer-color: #00629b;--mdc-checkbox-selected-hover-state-layer-color: #00629b;--mdc-checkbox-selected-pressed-state-layer-color: #00629b;--mat-option-selected-state-label-text-color: #00629b}.ieeesa-data-table .mat-mdc-header-row{font-family:Calibri Bold;font-weight:700;font-size:.875rem}.ieeesa-data-table__content{position:relative;overflow:auto;margin-top:.75em;width:100%}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-arrow{opacity:1!important;transform:none!important;color:#a7a8aa}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-sorted .mat-sort-header-arrow{color:#00629b}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-indicator{transform:translateY(0)!important}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-pointer-right{transform:rotate(45deg)!important}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-pointer-left{transform:rotate(-45deg)!important}.ieeesa-data-table__cell-content--ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin:0}.ieeesa-data-table__message{color:#ba0c2f!important}.ieeesa-data-table__mobile-view-actions{margin-left:3.125em}.ieeesa-data-table__actions-right{width:50%}.ieeesa-data-table__cell-content-link{padding:0!important;font-size:.875rem;color:#00629b!important;text-align:left;text-decoration:underline;white-space:normal;word-wrap:break-word;border:none;background:none;min-width:auto!important}.ieeesa-data-table__actions{padding:.75em 0 .75em .15em;position:relative;margin-right:0}.ieeesa-data-table__actions--disabled .ieeesa-icon-button__svg{fill:#c9c5ca!important}.ieeesa-data-table__actions--search-group-icon{height:1.5em;right:0;min-width:auto!important;padding-left:1em;padding-top:.1875em;color:#00629b!important}.ieeesa-data-table__filter{margin-top:-45px}.ieeesa-data-table__search-wrapper{width:-webkit-fill-available;width:-moz-available}.ieeesa-data-table__search-wrapper .ieeesa-search-field__search-icon{color:#00629b}.ieeesa-data-table__search-wrapper .ieeesa-search-field__button{background:none}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field{width:100%;height:2.25em;border-radius:.1875em;background:linear-gradient(0deg,#00629b0d 0% 100%),#fffbfe;font-size:1rem;box-shadow:0 0 4px #00000080 inset}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mat-mdc-form-field-infix,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-text-field{padding:.1875em .5em!important}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}.ieeesa-data-table .ieeesa-icon-button{padding:0 3px}.ieeesa-data-table .ieeesa-icon-button__svg{height:1.5em;width:1.5em;fill:#00629b}.ieeesa-data-table .cell-text{white-space:normal;word-wrap:break-word}.ieeesa-data-table .mat-mdc-table{background:none}.ieeesa-data-table tbody tr:nth-child(odd of.ieeesa-data-table__cell-row){background-color:#f7f9ff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table tbody tr:nth-child(2n of.ieeesa-data-table__cell-row){background-color:#fff!important}.ieeesa-data-table thead{border-top:1px solid #dce3e9}.ieeesa-data-table thead tr{background-color:#fff!important}.ieeesa-data-table__column-select{width:1em;padding:0!important}.ieeesa-data-table tr.ieeesa-row-expanded-table-detail{height:0}.ieeesa-data-table .ieeesa-expanded-row .ieeesa-nested-data-table__cell-row{background-color:#f7f9ff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table .ieeesa-expanded-row__footer{border-top:1px solid #dce3e9;padding:.25em .75em .25em .5em}.ieeesa-data-table .ieeesa-expanded-row__footer--detail{color:#000;font-size:.875rem}.ieeesa-data-table .cdk-column-expandedDetail{padding:0!important;background-color:#f7f9ff!important}.ieeesa-data-table__cell-content-under-link{color:#63666a!important}\n"], dependencies: [{ kind: "pipe", type: i0.forwardRef(function () { return SafePipe; }), name: "safe" }, { kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgStyle; }), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitchCase; }), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgSwitchDefault; }), selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatIconModule; }) }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatSortModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.MatSort; }), selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i0.forwardRef(function () { return i3.MatSortHeader; }), selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatSlideToggleModule; }) }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatTableModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i4.MatTable; }), selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatHeaderCellDef; }), selector: "[matHeaderCellDef]" }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatHeaderRowDef; }), selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatColumnDef; }), selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatCellDef; }), selector: "[matCellDef]" }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatRowDef; }), selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatHeaderCell; }), selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatCell; }), selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i0.forwardRef(function () { return i4.MatHeaderRow; }), selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i0.forwardRef(function () { return i4.MatRow; }), selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatPaginatorModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i5.MatPaginator; }), selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatCheckboxModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i6.MatCheckbox; }), selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatButtonModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i7.MatButton; }), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(function () { return IconButtonComponent; }), selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }, { kind: "component", type: i0.forwardRef(function () { return SearchComponent; }), selector: "ieeesa-search", inputs: ["formControlName", "placeholderLabel", "searchTerm", "supportMessage", "searchType", "minCharacterToSearch"], outputs: ["searchValue"] }, { kind: "component", type: i0.forwardRef(function () { return FilterComponent; }), selector: "ieeesa-filter", inputs: ["filterOptionType", "appliedFilterOptions", "filterButton", "filters", "canShowSelection", "selectedFilterOptions"], outputs: ["selectedFilter", "filteredOptions", "removeFilteredOption"] }, { kind: "directive", type: i0.forwardRef(function () { return TextTruncatedDirective; }), selector: "[matTooltip][ieeesaTextTruncated]" }, { kind: "component", type: i0.forwardRef(function () { return MenuComponent; }), selector: "ieeesa-menu", inputs: ["menuItems", "button", "isMarginBottomZero"], outputs: ["menuItemClick"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatTooltipModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i8.MatTooltip; }), selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i0.forwardRef(function () { return LegendComponent; }), selector: "ieeesa-legend", inputs: ["legends", "isSorting"] }], animations: [
|
|
467
438
|
trigger('detailExpand', [
|
|
468
439
|
state('collapsed', style({ height: '0px', minHeight: '0', display: 'none' })),
|
|
469
440
|
state('expanded', style({ height: '*' })),
|
|
@@ -500,8 +471,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
500
471
|
state('expanded', style({ height: '*' })),
|
|
501
472
|
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
502
473
|
]),
|
|
503
|
-
], template: "<div class=\"ieeesa-data-table d-flex flex-column container-fluid\">\r\n <div\r\n class=\"d-flex\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'flex-column ms-4'\r\n : 'justify-content-center position-relative'\r\n \"\r\n >\r\n <caption\r\n class=\"ieeesa-data-table--caption\"\r\n *ngIf=\"caption\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-title-lg-24' : 'ieeesa-title-md-18'\"\r\n >\r\n {{\r\n caption\r\n }}\r\n </caption>\r\n <p\r\n *ngIf=\"isScrollingEnabled && isScrollSupportMessageNeeded\"\r\n class=\"m-0 mb-2\"\r\n [ngClass]=\"{ 'position-absolute bottom-0 end-0': !isMobileView }\"\r\n >\r\n {{ scrollbarSupportMessage }}\r\n </p>\r\n </div>\r\n <div\r\n *ngIf=\"tableActions\"\r\n class=\"ieeesa-data-table__actions d-flex row justify-content-between align-items-lg-baseline p-sm-0\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-data-table__mobile-view-actions' : ''\"\r\n >\r\n <ng-container\r\n *ngIf=\"!isMobileView\"\r\n [ngTemplateOutlet]=\"filterTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: 'col-md-7 col-lg-6' }\"\r\n ></ng-container>\r\n <div\r\n class=\"d-flex align-items-center gap-lg-4 gap-md-3 gap-sm-3 gap-3 col-md-5 col-lg-6 justify-content-end ps-0\"\r\n [ngClass]=\"!tableActions?.isFilterNeeded ? 'col-md-12 col-lg-12' : ''\"\r\n >\r\n <ng-container *ngIf=\"!isMobileView\">\r\n <ng-container *ngTemplateOutlet=\"ieeesaSearch\"> </ng-container>\r\n </ng-container>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isAddNeeded\"\r\n [iconButton]=\"addButton\"\r\n (iconButtonClick)=\"onAddClick()\"\r\n [ngClass]=\"\r\n addButton?.disabled ? 'ieeesa-data-table__actions--disabled' : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isEditNeeded\"\r\n [iconButton]=\"tableEditButton\"\r\n (iconButtonClick)=\"onTableEditClick()\"\r\n [ngClass]=\"\r\n selectedRows.selected.length !== 1\r\n ? 'ieeesa-data-table__actions--disabled'\r\n : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isDeleteNeeded\"\r\n [iconButton]=\"tableDeleteButton\"\r\n (iconButtonClick)=\"onDeleteTableClick()\"\r\n class=\"d-flex justify-content-between align-items-center\"\r\n [ngClass]=\"\r\n selectedRows.selected.length === 0 || tableDeleteButton.disabled\r\n ? 'ieeesa-data-table__actions--disabled'\r\n : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <button\r\n mat-button\r\n *ngIf=\"tableActions?.isSearchNeeded\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.search\"\r\n class=\"d-flex d-sm-flex d-md-none d-lg-none d-xl-none ieeesa-data-table__actions--search-group-icon\"\r\n type=\"button\"\r\n (click)=\"onTableSearchClick()\"\r\n >\r\n <i class=\"fa-solid fa-magnifying-glass\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container\r\n *ngIf=\"isMobileView\"\r\n [ngTemplateOutlet]=\"filterTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: 'ieeesa-data-table__filter' }\"\r\n >\r\n </ng-container>\r\n <ng-template #filterTemplateRef let-className=\"data\">\r\n <ieeesa-filter\r\n class=\"{{ className }} p-0\"\r\n [filters]=\"filters\"\r\n *ngIf=\"tableActions?.isFilterNeeded\"\r\n [selectedFilterOptions]=\"selectedFilterOptions\"\r\n [appliedFilterOptions]=\"appliedFilterOptions\"\r\n (selectedFilter)=\"selectedFilterTypeInfo($event)\"\r\n (removeFilteredOption)=\"onRemovalOfFilteredOption($event)\"\r\n (filteredOptions)=\"onSelectedFilterOptions($event)\"\r\n ></ieeesa-filter>\r\n </ng-template>\r\n <ng-container *ngIf=\"isMobileView && isSearchActive\">\r\n <ng-container *ngTemplateOutlet=\"ieeesaSearch\"> </ng-container>\r\n </ng-container>\r\n <ng-template #ieeesaSearch>\r\n <ieeesa-search\r\n [placeholderLabel]=\"searchPlaceHolderText\"\r\n [searchType]=\"searchType\"\r\n (searchValue)=\"searchValue($event)\"\r\n *ngIf=\"tableActions?.isSearchNeeded\"\r\n class=\"ieeesa-data-table__search-wrapper mt-sm-2 md-sm-2 mt-2 md-2\"\r\n [supportMessage]=\"searchSupportMessage\"\r\n ></ieeesa-search>\r\n </ng-template>\r\n <p\r\n class=\"ieeesa-data-table__search_result_label\"\r\n *ngIf=\"searchResultMessage\"\r\n [innerHTML]=\"searchResultMessage | safe : safeType\"\r\n ></p>\r\n <p\r\n class=\"ieeesa-data-table__columns-header-text mb-0 ieeesa-title-md-18 text-center\"\r\n >\r\n {{ tableColumnsHeaderText }}\r\n </p>\r\n <div\r\n class=\"ieeesa-data-table__content\"\r\n [ngClass]=\"\r\n tableDataInfo && tableDataInfo.length === 0\r\n ? 'ieeesa-data-table__no-table-data'\r\n : ''\r\n \"\r\n #tableContent\r\n >\r\n <table\r\n mat-table\r\n [ngClass]=\"className\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n [matSortDisableClear]=\"isClearSortNeeded\"\r\n [matSortActive]=\"defaultSortedColumn\"\r\n [matSortDirection]=\"defaultColumnSortDirection\"\r\n (matSortChange)=\"sortTableData($event)\"\r\n [trackBy]=\"trackById\"\r\n multiTemplateDataRows\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let column of columnSchemaInfo;\r\n trackBy: trackById;\r\n let id = index\r\n \"\r\n matColumnDef=\"{{ column?.columnDef }}\"\r\n [sticky]=\"column?.isStickyColumn\"\r\n [stickyEnd]=\"column?.isStickyEndColumn\"\r\n >\r\n <th\r\n mat-header-cell\r\n mat-sort-header\r\n [disabled]=\"!column?.isSortableColumn\"\r\n [ngSwitch]=\"column?.columnDef\"\r\n class=\"ieeesa-data-table-header ieeesa-body-sm-bold-14\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n *matHeaderCellDef\r\n [attr.aria-label]=\"column?.heading\"\r\n >\r\n <ng-container *ngSwitchCase=\"columnType?.SELECT\">\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRowsSelection() : null\"\r\n [checked]=\"selectedRows?.hasValue() && isAllRowsSelected()\"\r\n [indeterminate]=\"selectedRows?.hasValue() && !isAllRowsSelected()\"\r\n [aria-label]=\"constants?.dataTable?.ariaLabel?.selectAll\"\r\n >\r\n </mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span [ngClass]=\"{ 'me-2': column.hasColumnActions }\">{{\r\n column.heading\r\n }}</span>\r\n <ng-container *ngIf=\"column.hasColumnActions\">\r\n <ieeesa-menu\r\n [menuItems]=\"tableColumnActions\"\r\n [defaultIconSize]=\"tableColumnActionMenuSize\"\r\n class=\"ieeesa-data-table__column-menu\"\r\n ></ieeesa-menu>\r\n </ng-container>\r\n </ng-container>\r\n </th>\r\n <td\r\n mat-cell\r\n class=\"ieeesa-data-table__cell-content ieeesa-title-sm-16\"\r\n *matCellDef=\"let row\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n tableData;\r\n context: {\r\n column: column,\r\n row: row,\r\n tableRowActions: tableRowActions\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td\r\n mat-cell\r\n *matCellDef=\"let row\"\r\n [attr.colspan]=\"displayedColumns?.length\"\r\n >\r\n <div\r\n class=\"ieeesa-expanded-row\"\r\n [@detailExpand]=\"row === expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <div class=\"ieeesa-nested-data-table\">\r\n <table\r\n #nestedTable\r\n mat-table\r\n [trackBy]=\"trackById\"\r\n [dataSource]=\"nestedTableDataSource\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let column of nestedTableColumnSchemaInfo;\r\n trackBy: trackById;\r\n let id = index\r\n \"\r\n matColumnDef=\"{{ column?.columnDef }}\"\r\n [sticky]=\"column?.isStickyColumn\"\r\n [stickyEnd]=\"column?.isStickyEndColumn\"\r\n >\r\n <th\r\n mat-header-cell\r\n [ngSwitch]=\"column?.columnDef\"\r\n class=\"ieeesa-data-table-header ieeesa-body-sm-bold-14\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n *matHeaderCellDef\r\n [attr.aria-label]=\"column?.heading\"\r\n >\r\n <ng-container *ngSwitchDefault>\r\n <span>{{ column.heading }}</span>\r\n </ng-container>\r\n </th>\r\n <td\r\n mat-cell\r\n class=\"ieeesa-data-table__cell-content ieeesa-title-sm-16\"\r\n *matCellDef=\"let row\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n tableData;\r\n context: {\r\n column: column,\r\n row: row,\r\n tableRowActions: nestedTableRowActions\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"isNestedTableHeaderNeeded\">\r\n <tr\r\n mat-header-row\r\n class=\"ieeesa-data-table__header-row\"\r\n *matHeaderRowDef=\"\r\n nestedTableDisplayedColumns;\r\n sticky: false\r\n \"\r\n ></tr>\r\n </ng-container>\r\n <tr\r\n mat-row\r\n class=\"ieeesa-nested-data-table__cell-row\"\r\n *matRowDef=\"let row; columns: nestedTableDisplayedColumns\"\r\n [ngStyle]=\"\r\n row?.legendColor\r\n ? getRowBorderLeftColor(row?.legendColor)\r\n : ''\r\n \"\r\n ></tr>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"row === expandedElement\">\r\n <div\r\n class=\"d-flex justify-content-between align-items-center ieeesa-expanded-row__footer\"\r\n *ngIf=\"\r\n nestedPaginatorConfig.totalRecords >\r\n nestedPaginatorConfig.recordsPerPage &&\r\n nestedPaginatorConfig.recordsPerPage > 0\r\n \"\r\n >\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row)\"\r\n class=\"ieeesa-title-sm-16 ieeesa-data-table__cell-content-link\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.link\"\r\n >\r\n {{ viewAll ?? \"\" }}\r\n </button>\r\n <span class=\"nested-element-detail__footer--detail\">{{\r\n showNestedTablePaginationInfo\r\n }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"isTableHeaderNeeded\">\r\n <tr\r\n mat-header-row\r\n class=\"ieeesa-data-table__header-row\"\r\n *matHeaderRowDef=\"displayedColumns; sticky: false\"\r\n ></tr>\r\n </ng-container>\r\n <tr\r\n mat-row\r\n class=\"ieeesa-data-table__cell-row\"\r\n [ngStyle]=\"\r\n row?.legendColor ? getRowBorderLeftColor(row?.legendColor) : ''\r\n \"\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n ></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let details; columns: ['expandedDetail']\"\r\n class=\"ieeesa-row-expanded-table-detail\"\r\n ></tr>\r\n </table>\r\n </div>\r\n</div>\r\n<p\r\n class=\"ieeesa-data-table__message ieeesa-title-lg-bold-24 text-center p-5\"\r\n *ngIf=\"tableDataInfo && tableDataInfo.length === 0\"\r\n>\r\n {{ noRecordFound }}\r\n</p>\r\n<div class=\"row ieeesa-data-table__pagination-container\">\r\n <ieeesa-legend\r\n class=\"col-sm-12 col-md-5 d-flex align-items-end px-4\"\r\n *ngIf=\"legends?.length\"\r\n [ngClass]=\"!tableActions?.isPaginationNeeded ? 'col-md-12' : ''\"\r\n [legends]=\"legends\"\r\n [isSorting]=\"true\"\r\n ></ieeesa-legend>\r\n <div\r\n *ngIf=\"tableActions?.isPaginationNeeded\"\r\n class=\"ieeesa-data-table__pagination d-flex flex-row-reverse col-sm-12 col-md-7\"\r\n [ngClass]=\"!legends?.length ? 'col-md-12' : ''\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.pagination\"\r\n >\r\n <mat-paginator\r\n [pageSize]=\"paginatorConfig?.recordsPerPage\"\r\n [pageSizeOptions]=\"paginatorConfig.pageSizeOptions\"\r\n (page)=\"handlePagination($event)\"\r\n [length]=\"paginatorConfig?.totalRecords\"\r\n ></mat-paginator>\r\n </div>\r\n</div>\r\n<ng-template\r\n #tableData\r\n let-column=\"column\"\r\n let-row=\"row\"\r\n let-tableRowActions=\"tableRowActions\"\r\n>\r\n <ng-container [ngSwitch]=\"column?.columnType\">\r\n <ng-container *ngSwitchDefault>\r\n <ng-container\r\n *ngIf=\"isCellTextOverflowEllipsis; then ellipsisCell; else textWrapCell\"\r\n >\r\n </ng-container>\r\n <ng-template #textWrapCell>\r\n <p\r\n class=\"m-0\"\r\n *ngIf=\"column?.isHTMLCellData\"\r\n [innerHTML]=\"column?.cellData(row) | safe : safeType\"\r\n ></p>\r\n <ng-container *ngIf=\"!column?.isHTMLCellData\">\r\n {{ column?.cellData(row) }}</ng-container\r\n >\r\n </ng-template>\r\n <ng-template #ellipsisCell>\r\n <p\r\n ieeesaTextTruncated\r\n [matTooltip]=\"column?.cellData(row)\"\r\n class=\"ieeesa-data-table__cell-content--ellipsis\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </p>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.LINK\">\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n class=\"ieeesa-title-sm-16 ieeesa-data-table__cell-content-link\"\r\n [attr.aria-label]=\"column?.cellData(row)\"\r\n [matTooltip]=\"row?.toolTipText\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </button>\r\n <ng-container *ngIf=\"column?.isContentUnderLink\">\r\n <p\r\n class=\"ieeesa-body-sm-14 ieeesa-data-table__cell-content-under-link\"\r\n *ngIf=\"column?.isHTMLCellData\"\r\n [innerHTML]=\"row?.contentUnderLink | safe : safeType\"\r\n ></p>\r\n <p\r\n class=\"ieeesa-body-sm-14 ieeesa-data-table__cell-content-under-link\"\r\n *ngIf=\"!column?.isHTMLCellData\"\r\n >\r\n {{ row?.contentUnderLink }}\r\n </p>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.NESTED_TABLE\">\r\n <ieeesa-icon-button\r\n mat-button\r\n *ngIf=\"row?.hasChildren\"\r\n (iconButtonClick)=\"\r\n expandedElement = expandedElement === row ? null : row;\r\n onTableRowExpansionClick(row)\r\n \"\r\n [iconButton]=\"\r\n expandedElement === row ? rowExpandButton : rowCollapseButton\r\n \"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.SELECT\">\r\n <mat-checkbox\r\n class=\"col-2\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? onSelectClick(row) : null\"\r\n [checked]=\"selectedRows.isSelected(row)\"\r\n [aria-label]=\"constants?.dataTable?.ariaLabel?.select\"\r\n >\r\n </mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.EDIT\">\r\n <ieeesa-icon-button\r\n [iconButton]=\"rowEditButton\"\r\n (iconButtonClick)=\"onEditClick(row)\"\r\n ></ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.DELETE\">\r\n <ieeesa-icon-button\r\n [iconButton]=\"rowDeleteButton\"\r\n (iconButtonClick)=\"onDeleteClick(row)\"\r\n ></ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.ACTIONS\">\r\n <ieeesa-menu\r\n [menuItems]=\"tableRowActions ?? row.menuAction\"\r\n (click)=\"menuItemAction(row)\"\r\n (menuItemClick)=\"onRowActionClick($event)\"\r\n ></ieeesa-menu>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-data-table{--mdc-checkbox-selected-focus-icon-color: #00629b;--mdc-checkbox-selected-hover-icon-color: #00629b;--mdc-checkbox-selected-icon-color: #00629b;--mdc-checkbox-selected-pressed-icon-color: #00629b;--mdc-checkbox-selected-focus-state-layer-color: #00629b;--mdc-checkbox-selected-hover-state-layer-color: #00629b;--mdc-checkbox-selected-pressed-state-layer-color: #00629b;--mat-option-selected-state-label-text-color: #00629b}.ieeesa-data-table .mat-mdc-header-row{font-family:Calibri Bold;font-weight:700;font-size:.875rem}.ieeesa-data-table__content{position:relative;overflow:auto;margin-top:.75em;width:100%}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-arrow{opacity:1!important;transform:none!important;color:#a7a8aa}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-sorted .mat-sort-header-arrow{color:#00629b}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-indicator{transform:translateY(0)!important}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-pointer-right{transform:rotate(45deg)!important}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-pointer-left{transform:rotate(-45deg)!important}.ieeesa-data-table__cell-content--ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin:0}.ieeesa-data-table__message{color:#ba0c2f!important}.ieeesa-data-table__mobile-view-actions{margin-left:3.125em}.ieeesa-data-table__actions-right{width:50%}.ieeesa-data-table__cell-content-link{padding:0!important;font-size:.875rem;color:#00629b!important;text-align:left;text-decoration:underline;white-space:normal;word-wrap:break-word;border:none;background:none;min-width:auto!important}.ieeesa-data-table__actions{padding:.75em 0 .75em .15em;position:relative;margin-right:0}.ieeesa-data-table__actions--disabled .ieeesa-icon-button__svg{fill:#c9c5ca!important}.ieeesa-data-table__actions--search-group-icon{height:1.5em;right:0;min-width:auto!important;padding-left:1em;padding-top:.1875em;color:#00629b!important}.ieeesa-data-table__filter{margin-top:-45px}.ieeesa-data-table__search-wrapper{width:-webkit-fill-available;width:-moz-available}.ieeesa-data-table__search-wrapper .ieeesa-search-field__search-icon{color:#00629b}.ieeesa-data-table__search-wrapper .ieeesa-search-field__button{background:none}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field{width:100%;height:2.25em;border-radius:.1875em;background:linear-gradient(0deg,#00629b0d 0% 100%),#fffbfe;font-size:1rem;box-shadow:0 0 4px #00000080 inset}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mat-mdc-form-field-infix,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-text-field{padding:.1875em .5em!important}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}.ieeesa-data-table .ieeesa-icon-button{padding:0 3px}.ieeesa-data-table .ieeesa-icon-button__svg{height:1.5em;width:1.5em;fill:#00629b}.ieeesa-data-table .cell-text{white-space:normal;word-wrap:break-word}.ieeesa-data-table .mat-mdc-table{background:none}.ieeesa-data-table tbody tr:nth-child(odd of.ieeesa-data-table__cell-row){background-color:#f7f9ff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table tbody tr:nth-child(2n of.ieeesa-data-table__cell-row){background-color:#fff!important}.ieeesa-data-table thead{border-top:1px solid #dce3e9}.ieeesa-data-table thead tr{background-color:#fff!important}.ieeesa-data-table__column-select{width:1em;padding:0!important}.ieeesa-data-table tr.ieeesa-row-expanded-table-detail{height:0}.ieeesa-data-table .ieeesa-expanded-row .ieeesa-nested-data-table__cell-row{background-color:#f7f9ff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table .ieeesa-expanded-row__footer{border-top:1px solid #dce3e9;padding:.25em .75em .25em .5em}.ieeesa-data-table .ieeesa-expanded-row__footer--detail{color:#000;font-size:.875rem}.ieeesa-data-table .cdk-column-expandedDetail{padding:0!important;background-color:#f7f9ff!important}.ieeesa-data-table__cell-content-under-link{color:#63666a!important}\n"] }]
|
|
504
|
-
}], ctorParameters: function () { return [{ type: i1.BreakpointObserverService }
|
|
474
|
+
], template: "<div class=\"ieeesa-data-table d-flex flex-column container-fluid\">\r\n <caption class=\"ieeesa-data-table--caption\" *ngIf=\"caption\">\r\n {{\r\n caption\r\n }}\r\n </caption>\r\n <div\r\n *ngIf=\"tableActions\"\r\n class=\"ieeesa-data-table__actions d-flex row justify-content-between align-items-lg-baseline p-sm-0\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-data-table__mobile-view-actions' : ''\"\r\n >\r\n <ng-container\r\n *ngIf=\"!isMobileView\"\r\n [ngTemplateOutlet]=\"filterTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: 'col-md-7 col-lg-6' }\"\r\n ></ng-container>\r\n <div\r\n class=\"d-flex align-items-center gap-lg-4 gap-md-3 gap-sm-3 gap-3 col-md-5 col-lg-6 justify-content-end ps-0\"\r\n [ngClass]=\"!tableActions?.isFilterNeeded ? 'col-md-12 col-lg-12' : ''\"\r\n >\r\n <ng-container *ngIf=\"!isMobileView\">\r\n <ng-container *ngTemplateOutlet=\"ieeesaSearch\"> </ng-container>\r\n </ng-container>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isAddNeeded\"\r\n [iconButton]=\"addButton\"\r\n (iconButtonClick)=\"onAddClick()\"\r\n [ngClass]=\"\r\n addButton?.disabled ? 'ieeesa-data-table__actions--disabled' : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isEditNeeded\"\r\n [iconButton]=\"tableEditButton\"\r\n (iconButtonClick)=\"onTableEditClick()\"\r\n [ngClass]=\"\r\n selectedRows.selected.length !== 1\r\n ? 'ieeesa-data-table__actions--disabled'\r\n : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n *ngIf=\"tableActions?.isDeleteNeeded\"\r\n [iconButton]=\"tableDeleteButton\"\r\n (iconButtonClick)=\"onDeleteTableClick()\"\r\n class=\"d-flex justify-content-between align-items-center\"\r\n [ngClass]=\"\r\n selectedRows.selected.length === 0 || tableDeleteButton.disabled\r\n ? 'ieeesa-data-table__actions--disabled'\r\n : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n <button\r\n mat-button\r\n *ngIf=\"tableActions?.isSearchNeeded\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.search\"\r\n class=\"d-flex d-sm-flex d-md-none d-lg-none d-xl-none ieeesa-data-table__actions--search-group-icon\"\r\n type=\"button\"\r\n (click)=\"onTableSearchClick()\"\r\n >\r\n <i class=\"fa-solid fa-magnifying-glass\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <ng-container\r\n *ngIf=\"isMobileView\"\r\n [ngTemplateOutlet]=\"filterTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: 'ieeesa-data-table__filter' }\"\r\n >\r\n </ng-container>\r\n <ng-template #filterTemplateRef let-className=\"data\">\r\n <ieeesa-filter\r\n class=\"{{ className }} p-0\"\r\n [filters]=\"filters\"\r\n *ngIf=\"tableActions?.isFilterNeeded\"\r\n [selectedFilterOptions]=\"selectedFilterOptions\"\r\n [appliedFilterOptions]=\"appliedFilterOptions\"\r\n (selectedFilter)=\"selectedFilterTypeInfo($event)\"\r\n (removeFilteredOption)=\"onRemovalOfFilteredOption($event)\"\r\n (filteredOptions)=\"onSelectedFilterOptions($event)\"\r\n ></ieeesa-filter>\r\n </ng-template>\r\n <ng-container *ngIf=\"isMobileView && isSearchActive\">\r\n <ng-container *ngTemplateOutlet=\"ieeesaSearch\"> </ng-container>\r\n </ng-container>\r\n <ng-template #ieeesaSearch>\r\n <ieeesa-search\r\n [placeholderLabel]=\"searchPlaceHolderText\"\r\n [searchType]=\"searchType\"\r\n (searchValue)=\"searchValue($event)\"\r\n *ngIf=\"tableActions?.isSearchNeeded\"\r\n class=\"ieeesa-data-table__search-wrapper mt-sm-2 md-sm-2 mt-2 md-2\"\r\n [supportMessage]=\"searchSupportMessage\"\r\n ></ieeesa-search>\r\n </ng-template>\r\n <p\r\n class=\"ieeesa-data-table__search_result_label\"\r\n *ngIf=\"searchResultMessage\"\r\n [innerHTML]=\"searchResultMessage | safe : safeType\"\r\n ></p>\r\n <div\r\n class=\"ieeesa-data-table__content\"\r\n [ngClass]=\"\r\n tableDataInfo && tableDataInfo.length === 0\r\n ? 'ieeesa-data-table__no-table-data'\r\n : ''\r\n \"\r\n >\r\n <table\r\n mat-table\r\n [ngClass]=\"className\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n [matSortDisableClear]=\"isClearSortNeeded\"\r\n [matSortActive]=\"defaultSortedColumn\"\r\n [matSortDirection]=\"defaultColumnSortDirection\"\r\n (matSortChange)=\"sortTableData($event)\"\r\n [trackBy]=\"trackById\"\r\n multiTemplateDataRows\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let column of columnSchemaInfo;\r\n trackBy: trackById;\r\n let id = index\r\n \"\r\n matColumnDef=\"{{ column?.columnDef }}\"\r\n [sticky]=\"column?.isStickyColumn\"\r\n [stickyEnd]=\"column?.isStickyEndColumn\"\r\n >\r\n <th\r\n mat-header-cell\r\n mat-sort-header\r\n [disabled]=\"!column?.isSortableColumn\"\r\n [ngSwitch]=\"column?.columnDef\"\r\n class=\"ieeesa-data-table-header ieeesa-body-sm-bold-14\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n *matHeaderCellDef\r\n [attr.aria-label]=\"column?.heading\"\r\n >\r\n <ng-container *ngSwitchCase=\"columnType?.SELECT\">\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRowsSelection() : null\"\r\n [checked]=\"selectedRows?.hasValue() && isAllRowsSelected()\"\r\n [indeterminate]=\"selectedRows?.hasValue() && !isAllRowsSelected()\"\r\n [aria-label]=\"constants?.dataTable?.ariaLabel?.selectAll\"\r\n >\r\n </mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{ column.heading }}</span>\r\n </ng-container>\r\n </th>\r\n <td\r\n mat-cell\r\n class=\"ieeesa-data-table__cell-content ieeesa-title-sm-16\"\r\n *matCellDef=\"let row\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n tableData;\r\n context: {\r\n column: column,\r\n row: row,\r\n tableRowActions: tableRowActions\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td\r\n mat-cell\r\n *matCellDef=\"let row\"\r\n [attr.colspan]=\"displayedColumns?.length\"\r\n >\r\n <div\r\n class=\"ieeesa-expanded-row\"\r\n [@detailExpand]=\"row === expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <div class=\"ieeesa-nested-data-table\">\r\n <table\r\n #nestedTable\r\n mat-table\r\n [trackBy]=\"trackById\"\r\n [dataSource]=\"nestedTableDataSource\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let column of nestedTableColumnSchemaInfo;\r\n trackBy: trackById;\r\n let id = index\r\n \"\r\n matColumnDef=\"{{ column?.columnDef }}\"\r\n [sticky]=\"column?.isStickyColumn\"\r\n [stickyEnd]=\"column?.isStickyEndColumn\"\r\n >\r\n <th\r\n mat-header-cell\r\n [ngSwitch]=\"column?.columnDef\"\r\n class=\"ieeesa-data-table-header ieeesa-body-sm-bold-14\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n *matHeaderCellDef\r\n [attr.aria-label]=\"column?.heading\"\r\n >\r\n <ng-container *ngSwitchDefault>\r\n <span>{{ column.heading }}</span>\r\n </ng-container>\r\n </th>\r\n <td\r\n mat-cell\r\n class=\"ieeesa-data-table__cell-content ieeesa-title-sm-16\"\r\n *matCellDef=\"let row\"\r\n [ngClass]=\"\r\n column?.columnDef === columnType?.SELECT\r\n ? 'ieeesa-data-table__column-select'\r\n : ''\r\n \"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n tableData;\r\n context: {\r\n column: column,\r\n row: row,\r\n tableRowActions: nestedTableRowActions\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"isNestedTableHeaderNeeded\">\r\n <tr\r\n mat-header-row\r\n class=\"ieeesa-data-table__header-row\"\r\n *matHeaderRowDef=\"\r\n nestedTableDisplayedColumns;\r\n sticky: false\r\n \"\r\n ></tr>\r\n </ng-container>\r\n <tr\r\n mat-row\r\n class=\"ieeesa-nested-data-table__cell-row\"\r\n *matRowDef=\"let row; columns: nestedTableDisplayedColumns\"\r\n [ngStyle]=\"\r\n row?.legendColor\r\n ? getRowBorderLeftColor(row?.legendColor)\r\n : ''\r\n \"\r\n ></tr>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"row === expandedElement\">\r\n <div\r\n class=\"d-flex justify-content-between align-items-center ieeesa-expanded-row__footer\"\r\n *ngIf=\"\r\n nestedPaginatorConfig.totalRecords >\r\n nestedPaginatorConfig.recordsPerPage &&\r\n nestedPaginatorConfig.recordsPerPage > 0\r\n \"\r\n >\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row)\"\r\n class=\"ieeesa-title-sm-16 ieeesa-data-table__cell-content-link\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.link\"\r\n >\r\n {{ viewAll ?? \"\" }}\r\n </button>\r\n <span class=\"nested-element-detail__footer--detail\">{{\r\n showNestedTablePaginationInfo\r\n }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"isTableHeaderNeeded\">\r\n <tr\r\n mat-header-row\r\n class=\"ieeesa-data-table__header-row\"\r\n *matHeaderRowDef=\"displayedColumns; sticky: false\"\r\n ></tr>\r\n </ng-container>\r\n <tr\r\n mat-row\r\n class=\"ieeesa-data-table__cell-row\"\r\n [ngStyle]=\"\r\n row?.legendColor ? getRowBorderLeftColor(row?.legendColor) : ''\r\n \"\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n ></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let details; columns: ['expandedDetail']\"\r\n class=\"ieeesa-row-expanded-table-detail\"\r\n ></tr>\r\n </table>\r\n </div>\r\n</div>\r\n<p\r\n class=\"ieeesa-data-table__message ieeesa-title-lg-bold-24 text-center p-5\"\r\n *ngIf=\"tableDataInfo && tableDataInfo.length === 0\"\r\n>\r\n {{ noRecordFound }}\r\n</p>\r\n<div class=\"row ieeesa-data-table__pagination-container\">\r\n <ieeesa-legend\r\n class=\"col-sm-12 col-md-5 d-flex align-items-end px-4\"\r\n *ngIf=\"legends?.length\"\r\n [ngClass]=\"!tableActions?.isPaginationNeeded ? 'col-md-12' : ''\"\r\n [legends]=\"legends\"\r\n [isSorting]=\"true\"\r\n ></ieeesa-legend>\r\n <div\r\n *ngIf=\"tableActions?.isPaginationNeeded\"\r\n class=\"ieeesa-data-table__pagination d-flex flex-row-reverse col-sm-12 col-md-7\"\r\n [ngClass]=\"!legends?.length ? 'col-md-12' : ''\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.pagination\"\r\n >\r\n <mat-paginator\r\n [pageSize]=\"paginatorConfig?.recordsPerPage\"\r\n [pageSizeOptions]=\"paginatorConfig.pageSizeOptions\"\r\n (page)=\"handlePagination($event)\"\r\n [length]=\"paginatorConfig?.totalRecords\"\r\n ></mat-paginator>\r\n </div>\r\n</div>\r\n<ng-template\r\n #tableData\r\n let-column=\"column\"\r\n let-row=\"row\"\r\n let-tableRowActions=\"tableRowActions\"\r\n>\r\n <ng-container [ngSwitch]=\"column?.columnType\">\r\n <ng-container *ngSwitchDefault>\r\n <ng-container\r\n *ngIf=\"isCellTextOverflowEllipsis; then ellipsisCell; else textWrapCell\"\r\n >\r\n </ng-container>\r\n <ng-template #textWrapCell>\r\n <p\r\n class=\"m-0\"\r\n *ngIf=\"column?.isHTMLCellData\"\r\n [innerHTML]=\"column?.cellData(row) | safe : safeType\"\r\n ></p>\r\n <ng-container *ngIf=\"!column?.isHTMLCellData\">\r\n {{ column?.cellData(row) }}</ng-container\r\n >\r\n </ng-template>\r\n <ng-template #ellipsisCell>\r\n <p\r\n ieeesaTextTruncated\r\n [matTooltip]=\"column?.cellData(row)\"\r\n class=\"ieeesa-data-table__cell-content--ellipsis\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </p>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.LINK\">\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n class=\"ieeesa-title-sm-16 ieeesa-data-table__cell-content-link\"\r\n [attr.aria-label]=\"column?.cellData(row)\"\r\n [matTooltip]=\"row?.toolTipText\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </button>\r\n <ng-container *ngIf=\"column?.isContentUnderLink\">\r\n <p\r\n class=\"ieeesa-body-sm-14 ieeesa-data-table__cell-content-under-link\"\r\n *ngIf=\"column?.isHTMLCellData\"\r\n [innerHTML]=\"row?.contentUnderLink | safe : safeType\"\r\n ></p>\r\n <p\r\n class=\"ieeesa-body-sm-14 ieeesa-data-table__cell-content-under-link\"\r\n *ngIf=\"!column?.isHTMLCellData\"\r\n >\r\n {{ row?.contentUnderLink }}\r\n </p>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.NESTED_TABLE\">\r\n <ieeesa-icon-button\r\n mat-button\r\n *ngIf=\"row?.hasChildren\"\r\n (iconButtonClick)=\"\r\n expandedElement = expandedElement === row ? null : row;\r\n onTableRowExpansionClick(row)\r\n \"\r\n [iconButton]=\"\r\n expandedElement === row ? rowExpandButton : rowCollapseButton\r\n \"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.SELECT\">\r\n <mat-checkbox\r\n class=\"col-2\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? onSelectClick(row) : null\"\r\n [checked]=\"selectedRows.isSelected(row)\"\r\n [aria-label]=\"constants?.dataTable?.ariaLabel?.select\"\r\n >\r\n </mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.EDIT\">\r\n <ieeesa-icon-button\r\n [iconButton]=\"rowEditButton\"\r\n (iconButtonClick)=\"onEditClick(row)\"\r\n ></ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.DELETE\">\r\n <ieeesa-icon-button\r\n [iconButton]=\"rowDeleteButton\"\r\n (iconButtonClick)=\"onDeleteClick(row)\"\r\n ></ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.ACTIONS\">\r\n <ieeesa-menu\r\n [menuItems]=\"tableRowActions ?? row.menuAction\"\r\n (click)=\"menuItemAction(row)\"\r\n (menuItemClick)=\"onRowActionClick($event)\"\r\n ></ieeesa-menu>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-data-table{--mdc-checkbox-selected-focus-icon-color: #00629b;--mdc-checkbox-selected-hover-icon-color: #00629b;--mdc-checkbox-selected-icon-color: #00629b;--mdc-checkbox-selected-pressed-icon-color: #00629b;--mdc-checkbox-selected-focus-state-layer-color: #00629b;--mdc-checkbox-selected-hover-state-layer-color: #00629b;--mdc-checkbox-selected-pressed-state-layer-color: #00629b;--mat-option-selected-state-label-text-color: #00629b}.ieeesa-data-table .mat-mdc-header-row{font-family:Calibri Bold;font-weight:700;font-size:.875rem}.ieeesa-data-table__content{position:relative;overflow:auto;margin-top:.75em;width:100%}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-arrow{opacity:1!important;transform:none!important;color:#a7a8aa}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-sorted .mat-sort-header-arrow{color:#00629b}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-indicator{transform:translateY(0)!important}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-pointer-right{transform:rotate(45deg)!important}.ieeesa-data-table__content .ieeesa-data-table__header-row .mat-sort-header-container:not(.mat-sort-header-sorted) .mat-sort-header-pointer-left{transform:rotate(-45deg)!important}.ieeesa-data-table__cell-content--ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin:0}.ieeesa-data-table__message{color:#ba0c2f!important}.ieeesa-data-table__mobile-view-actions{margin-left:3.125em}.ieeesa-data-table__actions-right{width:50%}.ieeesa-data-table__cell-content-link{padding:0!important;font-size:.875rem;color:#00629b!important;text-align:left;text-decoration:underline;white-space:normal;word-wrap:break-word;border:none;background:none;min-width:auto!important}.ieeesa-data-table__actions{padding:.75em 0 .75em .15em;position:relative;margin-right:0}.ieeesa-data-table__actions--disabled .ieeesa-icon-button__svg{fill:#c9c5ca!important}.ieeesa-data-table__actions--search-group-icon{height:1.5em;right:0;min-width:auto!important;padding-left:1em;padding-top:.1875em;color:#00629b!important}.ieeesa-data-table__filter{margin-top:-45px}.ieeesa-data-table__search-wrapper{width:-webkit-fill-available;width:-moz-available}.ieeesa-data-table__search-wrapper .ieeesa-search-field__search-icon{color:#00629b}.ieeesa-data-table__search-wrapper .ieeesa-search-field__button{background:none}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field{width:100%;height:2.25em;border-radius:.1875em;background:linear-gradient(0deg,#00629b0d 0% 100%),#fffbfe;font-size:1rem;box-shadow:0 0 4px #00000080 inset}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mat-mdc-form-field-infix,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-text-field{padding:.1875em .5em!important}.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-data-table__search-wrapper .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}.ieeesa-data-table .ieeesa-icon-button{padding:0 3px}.ieeesa-data-table .ieeesa-icon-button__svg{height:1.5em;width:1.5em;fill:#00629b}.ieeesa-data-table .cell-text{white-space:normal;word-wrap:break-word}.ieeesa-data-table .mat-mdc-table{background:none}.ieeesa-data-table tbody tr:nth-child(odd of.ieeesa-data-table__cell-row){background-color:#f7f9ff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table tbody tr:nth-child(2n of.ieeesa-data-table__cell-row){background-color:#fff!important}.ieeesa-data-table thead{border-top:1px solid #dce3e9}.ieeesa-data-table thead tr{background-color:#fff!important}.ieeesa-data-table__column-select{width:1em;padding:0!important}.ieeesa-data-table tr.ieeesa-row-expanded-table-detail{height:0}.ieeesa-data-table .ieeesa-expanded-row .ieeesa-nested-data-table__cell-row{background-color:#f7f9ff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table .ieeesa-expanded-row__footer{border-top:1px solid #dce3e9;padding:.25em .75em .25em .5em}.ieeesa-data-table .ieeesa-expanded-row__footer--detail{color:#000;font-size:.875rem}.ieeesa-data-table .cdk-column-expandedDetail{padding:0!important;background-color:#f7f9ff!important}.ieeesa-data-table__cell-content-under-link{color:#63666a!important}\n"] }]
|
|
475
|
+
}], ctorParameters: function () { return [{ type: i1.BreakpointObserverService }]; }, propDecorators: { tableDataInfo: [{
|
|
505
476
|
type: Input
|
|
506
477
|
}], nestedTableDataInfo: [{
|
|
507
478
|
type: Input
|
|
@@ -511,10 +482,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
511
482
|
type: Input
|
|
512
483
|
}], tableActions: [{
|
|
513
484
|
type: Input
|
|
514
|
-
}], tableColumnActions: [{
|
|
515
|
-
type: Input
|
|
516
|
-
}], tableColumnActionMenuSize: [{
|
|
517
|
-
type: Input
|
|
518
485
|
}], tableRowActions: [{
|
|
519
486
|
type: Input
|
|
520
487
|
}], nestedTableRowActions: [{
|
|
@@ -571,14 +538,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
571
538
|
type: Input
|
|
572
539
|
}], isTableHeaderNeeded: [{
|
|
573
540
|
type: Input
|
|
574
|
-
}], tableColumnsHeaderText: [{
|
|
575
|
-
type: Input
|
|
576
|
-
}], verticalColumnHeaderNumber: [{
|
|
577
|
-
type: Input
|
|
578
|
-
}], scrollbarSupportMessage: [{
|
|
579
|
-
type: Input
|
|
580
|
-
}], isScrollSupportMessageNeeded: [{
|
|
581
|
-
type: Input
|
|
582
541
|
}], rowSelected: [{
|
|
583
542
|
type: Output
|
|
584
543
|
}], selectedRowToEdit: [{
|
|
@@ -616,10 +575,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
616
575
|
}], sort: [{
|
|
617
576
|
type: ViewChild,
|
|
618
577
|
args: [MatSort]
|
|
619
|
-
}], tableContent: [{
|
|
620
|
-
type: ViewChild,
|
|
621
|
-
args: ['tableContent']
|
|
622
578
|
}], searchResultMessage: [{
|
|
623
579
|
type: Input
|
|
624
580
|
}] } });
|
|
625
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxpQkFBaUIsRUFFakIsVUFBVSxHQUVYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBYSxNQUFNLDZCQUE2QixDQUFDO0FBQzVFLE9BQU8sRUFDTCxPQUFPLEVBQ1AsYUFBYSxHQUdkLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBRUwsUUFBUSxFQUNSLFFBQVEsR0FDVCxNQUFN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QkFBM0IsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyw0QkFBNEI7c0JBQXBDLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ2EsSUFBSTtzQkFBdkIsU0FBUzt1QkFBQyxPQUFPO2dCQUNTLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFxQnJCLG1CQUFtQjtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIE9uRGVzdHJveSxcclxuICBmb3J3YXJkUmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlLCBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlLCBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQge1xyXG4gIE1hdFNvcnQsXHJcbiAgTWF0U29ydE1vZHVsZSxcclxuICBTb3J0LFxyXG4gIFNvcnREaXJlY3Rpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICBTYWZlUGlwZSxcclxuICBTYWZlVHlwZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBUYWJsZUNvbHVtblNjaGVtYSxcclxuICBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24sXHJcbiAgVGFibGVDb2x1bW5UeXBlLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1zY2hlbWEubW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdpbmF0b3JDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGFnaW5hdG9yLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IENoZWNrYm94T3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoZWNrYm94LW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICcuLi8uLi9tb2RlbHMvaWNvbi1idXR0b24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVBY3Rpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLWFjdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGlwT3B0aW9uLCBDaGlwc1R5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hpcC1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgU2VhcmNoVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9zZWFyY2gubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJzQW5kT3B0aW9ucyB9IGZyb20gJy4uLy4uL21vZGVscy9maWx0ZXJzLW9wdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBUZXh0VHJ1bmNhdGVkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90ZXh0LXRydW5jYXRlZC90ZXh0LXRydW5jYXRlZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4uLy4uL21vZGVscy9tZW51Lm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBhbmltYXRlLFxyXG4gIHN0YXRlLFxyXG4gIHN0eWxlLFxyXG4gIHRyYW5zaXRpb24sXHJcbiAgdHJpZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgTGVnZW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vbGVnZW5kL2xlZ2VuZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMZWdlbmQgfSBmcm9tICcuLi8uLi9tb2RlbHMvbGVnZW5kLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBQcm92aWRlcyBhIE1hdGVyaWFsIERlc2lnbiBzdHlsZWQgZGF0YS10YWJsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgcm93cyBvZiBkYXRhIHdpdGggc29ydEJ5LCBmaWx0ZXJCeSwgYWRkL2VkaXQvZGVsZXRlIHRhYmxlIHJvdyBkYXRhLCBwYWdpbmF0aW9uLCBzZWFyY2ggdGFibGUgZGF0YS5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBpbXBsZW1lbnRzIHtBZnRlclZpZXdJbml0fVxyXG4gKiBAaW1wbGVtZW50cyB7T25EZXN0cm95fVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtZGF0YS10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBmb3J3YXJkUmVmKCgpID0+IFNhZmVQaXBlKSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRTb3J0TW9kdWxlLFxyXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXHJcbiAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgU2VhcmNoQ29tcG9uZW50LFxyXG4gICAgRmlsdGVyQ29tcG9uZW50LFxyXG4gICAgVGV4dFRydW5jYXRlZERpcmVjdGl2ZSxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWVudUNvbXBvbmVudCxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNZW51Q29tcG9uZW50LFxyXG4gICAgTGVnZW5kQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ2NvbGxhcHNlZCcsXHJcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJywgZGlzcGxheTogJ25vbmUnIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKFxyXG4gICAgICAgICdleHBhbmRlZCA8PT4gY29sbGFwc2VkJyxcclxuICAgICAgICBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKVxyXG4gICAgICApLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHByaXZhdGUgdGFibGVEYXRhITogYW55W107XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBwcml2YXRlIG5lc3RlZFRhYmxlRGF0YSE6IGFueVtdO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZXhwYW5kZWRFbGVtZW50OiBhbnk7XHJcbiAgQElucHV0KClcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHNldCB0YWJsZURhdGFJbmZvKHZhbHVlOiBhbnlbXSkge1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMudGFibGVEYXRhQ2hhbmdlcygpO1xyXG4gIH1cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldCB0YWJsZURhdGFJbmZvKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBzZXQgbmVzdGVkVGFibGVEYXRhSW5mbyh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YUNoYW5nZXMoKTtcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBnZXQgbmVzdGVkVGFibGVEYXRhSW5mbygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRUYWJsZURhdGE7XHJcbiAgfVxyXG4gIHByaXZhdGUgY29sdW1uU2NoZW1hITogVGFibGVDb2x1bW5TY2hlbWFbXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBjb2x1bW5TY2hlbWFJbmZvKHZhbHVlOiBUYWJsZUNvbHVtblNjaGVtYVtdKSB7XHJcbiAgICB0aGlzLmNvbHVtblNjaGVtYSA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgY29sdW1uU2NoZW1hSW5mbygpOiBUYWJsZUNvbHVtblNjaGVtYVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtblNjaGVtYTtcclxuICB9XHJcbiAgcHJpdmF0ZSBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYSE6IFRhYmxlQ29sdW1uU2NoZW1hW107XHJcbiAgQElucHV0KClcclxuICBzZXQgbmVzdGVkVGFibGVDb2x1bW5TY2hlbWFJbmZvKHZhbHVlOiBUYWJsZUNvbHVtblNjaGVtYVtdKSB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hID0gdmFsdWU7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1ucyA9IHRoaXMubmVzdGVkVGFibGVDb2x1bW5TY2hlbWE/Lm1hcChcclxuICAgICAgKGMpID0+IGM/LmNvbHVtbkRlZlxyXG4gICAgKTtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLm5lc3RlZFRhYmxlRGF0YSk7XHJcbiAgfVxyXG4gIGdldCBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYUluZm8oKTogVGFibGVDb2x1bW5TY2hlbWFbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRUYWJsZUNvbHVtblNjaGVtYTtcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IGNvbnN0YW50cztcclxuICBASW5wdXQoKSB0YWJsZUFjdGlvbnMhOiBUYWJsZUFjdGlvbnM7XHJcbiAgQElucHV0KCkgdGFibGVDb2x1bW5BY3Rpb25zITogTWVudVtdO1xyXG4gIEBJbnB1dCgpIHRhYmxlQ29sdW1uQWN0aW9uTWVudVNpemUgPSAnJztcclxuICBASW5wdXQoKSB0YWJsZVJvd0FjdGlvbnMhOiBNZW51W107XHJcbiAgQElucHV0KCkgbmVzdGVkVGFibGVSb3dBY3Rpb25zITogTWVudVtdO1xyXG4gIEBJbnB1dCgpIGNhcHRpb24hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmlld0FsbCE6IHN0cmluZztcclxuICBwcml2YXRlIHBhZ2luYXRvckNvbmZpZ3VyYXRpb24hOiBQYWdpbmF0b3JDb25maWc7XHJcbiAgQElucHV0KClcclxuICBzZXQgcGFnaW5hdG9yQ29uZmlnKHZhbHVlOiBQYWdpbmF0b3JDb25maWcpIHtcclxuICAgIHRoaXMucGFnaW5hdG9yQ29uZmlndXJhdGlvbiA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgcGFnaW5hdG9yQ29uZmlnKCk6IFBhZ2luYXRvckNvbmZpZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdpbmF0b3JDb25maWd1cmF0aW9uO1xyXG4gIH1cclxuICBwcml2YXRlIG5lc3RlZFBhZ2luYXRvckNvbmZpZ3VyYXRpb24hOiBQYWdpbmF0b3JDb25maWc7XHJcbiAgQElucHV0KClcclxuICBzZXQgbmVzdGVkUGFnaW5hdG9yQ29uZmlnKHZhbHVlOiBQYWdpbmF0b3JDb25maWcpIHtcclxuICAgIHRoaXMubmVzdGVkUGFnaW5hdG9yQ29uZmlndXJhdGlvbiA9IHZhbHVlO1xyXG4gICAgdGhpcy5zaG93TmVzdGVkVGFibGVQYWdpbmF0aW9uSW5mbyA9XHJcbiAgICAgICcxIC0gJyArXHJcbiAgICAgICtgJHt0aGlzLm5lc3RlZFBhZ2luYXRvckNvbmZpZy5yZWNvcmRzUGVyUGFnZX1gICtcclxuICAgICAgJyBvZiAnICtcclxuICAgICAgK2Ake3RoaXMubmVzdGVkUGFnaW5hdG9yQ29uZmlnLnRvdGFsUmVjb3Jkc31gO1xyXG4gIH1cclxuICBnZXQgbmVzdGVkUGFnaW5hdG9yQ29uZmlnKCk6IFBhZ2luYXRvckNvbmZpZyB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRQYWdpbmF0b3JDb25maWd1cmF0aW9uO1xyXG4gIH1cclxuICBwcml2YXRlIGxlZ2VuZHNJbmZvITogTGVnZW5kW107XHJcbiAgQElucHV0KClcclxuICBzZXQgbGVnZW5kcyh2YWx1ZTogTGVnZW5kW10pIHtcclxuICAgIHRoaXMubGVnZW5kc0luZm8gPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IGxlZ2VuZHMoKTogTGVnZW5kW10ge1xyXG4gICAgcmV0dXJuIHRoaXMubGVnZW5kc0luZm87XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlSG9sZGVyVGV4dCE6IHN0cmluZztcclxuICBASW5wdXQoKSByb3dFZGl0QnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSByb3dEZWxldGVCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIHRhYmxlRWRpdEJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgdGFibGVEZWxldGVCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIHJvd0V4cGFuZEJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgcm93Q29sbGFwc2VCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIGlzTmVzdGVkVGFibGVIZWFkZXJOZWVkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhZGRCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uID1cclxuICAgIFRhYmxlQ29sdW1uU29ydERpcmVjdGlvbi5BU0NFTkRJTkc7XHJcbiAgQElucHV0KCkgZGVmYXVsdFNvcnRlZENvbHVtbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBpc0NsZWFyU29ydE5lZWRlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgZmlsdGVycyE6IENoaXBPcHRpb25bXTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEZpbHRlck9wdGlvbnMhOiBDaGVja2JveE9wdGlvbltdO1xyXG4gIEBJbnB1dCgpIGFwcGxpZWRGaWx0ZXJPcHRpb25zITogQ2hpcE9wdGlvbltdO1xyXG4gIEBJbnB1dCgpIHNlYXJjaFR5cGU6IFNlYXJjaFR5cGUgPSBTZWFyY2hUeXBlLk9OX0NMSUNLO1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBzZWFyY2hTdXBwb3J0TWVzc2FnZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBpbmJ1aWx0U29ydGluZ05lZWRlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzQ2VsbFRleHRPdmVyZmxvd0VsbGlwc2lzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNUYWJsZUhlYWRlck5lZWRlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgdGFibGVDb2x1bW5zSGVhZGVyVGV4dCA9ICcnO1xyXG4gIEBJbnB1dCgpIHZlcnRpY2FsQ29sdW1uSGVhZGVyTnVtYmVyITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNjcm9sbGJhclN1cHBvcnRNZXNzYWdlID0gJyc7XHJcbiAgQElucHV0KCkgaXNTY3JvbGxTdXBwb3J0TWVzc2FnZU5lZWRlZCA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dUb0VkaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93VG9EZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93c1RvRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZUNvbHVtblNjaGVtYVtdPigpO1xyXG4gIEBPdXRwdXQoKSByb3dMaW5rID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhZGRSb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNvbHVtbkRhdGFPblJvd0xpbmtDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbWVudUFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RBY3Rpb25NZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwT3B0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVGaWx0ZXJlZE9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyZWRPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJzQW5kT3B0aW9uc1tdPigpO1xyXG4gIEBPdXRwdXQoKSBzZWFyY2hlZFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93c0luZm8gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQ29sdW1uU2NoZW1hW10+KCk7XHJcbiAgQE91dHB1dCgpIHJvd0V4cGFuc2lvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydCE6IE1hdFNvcnQ7XHJcbiAgQFZpZXdDaGlsZCgndGFibGVDb250ZW50JykgdGFibGVDb250ZW50ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgZGlzcGxheWVkQ29sdW1ucyE6IHN0cmluZ1tdO1xyXG4gIG5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1ucyE6IHN0cmluZ1tdO1xyXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xyXG4gIGlzU2Nyb2xsaW5nRW5hYmxlZCA9IGZhbHNlO1xyXG4gIHJlc2l6ZU9ic2VydmVyITogUmVzaXplT2JzZXJ2ZXI7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBkYXRhU291cmNlITogTWF0VGFibGVEYXRhU291cmNlPGFueT47XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBuZXN0ZWRUYWJsZURhdGFTb3VyY2UhOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcclxuICBzZWxlY3RlZFJvd3MgPSBuZXcgU2VsZWN0aW9uTW9kZWw8VGFibGVDb2x1bW5TY2hlbWE+KHRydWUsIFtdKTtcclxuICBwYWdlTGltaXQhOiBudW1iZXI7XHJcbiAgcGFnZU9mZnNldCE6IG51bWJlcjtcclxuICBjb2x1bW5UeXBlID0gVGFibGVDb2x1bW5UeXBlO1xyXG4gIGlzU2VhcmNoQWN0aXZlID0gZmFsc2U7XHJcbiAgY2xlYXJBbGwgPSB0aGlzLmNvbnN0YW50cz8uZGF0YVRhYmxlPy5sYWJlbD8uY2xlYXJBbGw7XHJcbiAgbm9SZWNvcmRGb3VuZCA9IHRoaXMuY29uc3RhbnRzPy5kYXRhVGFibGU/Lm1lc3NhZ2U/Lm5vUmVjb3JkRm91bmQ7XHJcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIHNob3dOZXN0ZWRUYWJsZVBhZ2luYXRpb25JbmZvITogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3NlYXJjaFJlc3VsdE1lc3NhZ2UhOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBzZXQgc2VhcmNoUmVzdWx0TWVzc2FnZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zZWFyY2hSZXN1bHRNZXNzYWdlID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBzZWFyY2hSZXN1bHRNZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoUmVzdWx0TWVzc2FnZTtcclxuICB9XHJcbiAgc2FmZVR5cGU6IFNhZmVUeXBlID0gU2FmZVR5cGUuSFRNTDtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyU2VydmljZTogQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRCcmVha3BvaW50KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdC5tYXRjaGVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBkYXRhIHRhYmxlIGNvbXBvbmVudCBhbmQgc2V0cyB0aGUgdGFibGUgYWN0aW9uIGJ1dHRvbnMuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5TY2hlbWE/Lm1hcCgoYykgPT4gYz8uY29sdW1uRGVmKTtcclxuICAgIGNvbnN0IHRhYmxlQWN0aW9uQnV0dG9uczogSWNvbkJ1dHRvbltdID0gdGhpcy5jb25zdGFudHM/LmRhdGFUYWJsZT8uYnV0dG9ucztcclxuICAgIHRoaXMucm93RWRpdEJ1dHRvbiA9IHRoaXMucm93RWRpdEJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbM107XHJcbiAgICB0aGlzLnJvd0RlbGV0ZUJ1dHRvbiA9IHRoaXMucm93RGVsZXRlQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1s0XTtcclxuICAgIHRoaXMuYWRkQnV0dG9uID0gdGhpcy5hZGRCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzJdO1xyXG4gICAgdGhpcy50YWJsZUVkaXRCdXR0b24gPSB0aGlzLnRhYmxlRWRpdEJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbMF07XHJcbiAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uID0gdGhpcy50YWJsZURlbGV0ZUJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbMV07XHJcbiAgICB0aGlzLnJvd0V4cGFuZEJ1dHRvbiA9IHRoaXMucm93RXhwYW5kQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1s1XTtcclxuICAgIHRoaXMucm93Q29sbGFwc2VCdXR0b24gPVxyXG4gICAgICB0aGlzLnJvd0NvbGxhcHNlQnV0dG9uID8/IHRoaXMucm93Q29sbGFwc2VCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzZdO1xyXG4gICAgdGhpcy50YWJsZURlbGV0ZUJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93cy5jaGFuZ2VkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzdWx0Py5zb3VyY2U/LnNlbGVjdGVkPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVFZGl0QnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICByZXN1bHQ/LnNvdXJjZT8uc2VsZWN0ZWQ/Lmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgICAgIXJlc3VsdD8uc291cmNlPy5zZWxlY3RlZD8uWzBdPy5jYW5EZWxldGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Py5zb3VyY2U/LnNlbGVjdGVkPy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy50YWJsZURhdGEpO1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsYmFyU3VwcG9ydE1lc3NhZ2UgIT09ICcnKSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoXHJcbiAgICAgICAgKGVsZW1lbnQ6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1Njcm9sbGluZ0VuYWJsZWQgPVxyXG4gICAgICAgICAgICBlbGVtZW50WzBdPy50YXJnZXQ/LnNjcm9sbFdpZHRoID4gZWxlbWVudFswXT8udGFyZ2V0Py5jbGllbnRXaWR0aDtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlRGF0YUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBzb3J0IGZlYXR1cmUgb2YgZGF0YVNvdXJjZSBhbmQgc2V0IG1hcmdpbiBsZWZ0IGZvciB0YWJsZUNvbHVtbnNIZWFkZXJUZXh0IGlmIGl0IGlzbid0IGVtcHR5LlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbmJ1aWx0U29ydGluZ05lZWRlZCkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcclxuICAgICAgdGhpcy5zb3J0LmRpc2FibGVDbGVhciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMudGFibGVDb2x1bW5zSGVhZGVyVGV4dCAhPT0gJycgJiZcclxuICAgICAgdGhpcy52ZXJ0aWNhbENvbHVtbkhlYWRlck51bWJlciAhPT0gdW5kZWZpbmVkXHJcbiAgICApIHtcclxuICAgICAgbGV0IGNvbHVtbnNXaWR0aCA9IDA7XHJcbiAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMudmVydGljYWxDb2x1bW5IZWFkZXJOdW1iZXI7IGNvbHVtbisrKSB7XHJcbiAgICAgICAgY29uc3QgdmVydGljYWxDb2x1bW5IZWFkZXJDbGFzc05hbWUgPVxyXG4gICAgICAgICAgJy5tYXQtY29sdW1uLScgKyB0aGlzLmNvbHVtblNjaGVtYVtjb2x1bW5dLmNvbHVtbkRlZjtcclxuICAgICAgICBjb25zdCBjb2x1bW5FbGVtZW50ID0gdGhpcy5lbFJlZj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgIHZlcnRpY2FsQ29sdW1uSGVhZGVyQ2xhc3NOYW1lXHJcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBpZiAoY29sdW1uRWxlbWVudCkgY29sdW1uc1dpZHRoICs9IGNvbHVtbkVsZW1lbnQ/Lm9mZnNldFdpZHRoO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNvbHVtbnNIZWFkZXJFbGVtZW50ID0gdGhpcy5lbFJlZj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAnLmllZWVzYS1kYXRhLXRhYmxlX19jb2x1bW5zLWhlYWRlci10ZXh0J1xyXG4gICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoY29sdW1uc0hlYWRlckVsZW1lbnQpXHJcbiAgICAgICAgY29sdW1uc0hlYWRlckVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9IGNvbHVtbnNXaWR0aCArICdweCc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5vYnNlcnZlKHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGF0YVNvdXJjZSB3aGVuZXZlciB0aGUgdGFibGUgZGF0YSBjaGFuZ2VzLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICB0YWJsZURhdGFDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZSkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMudGFibGVEYXRhO1xyXG4gICAgICBpZiAodGhpcy5pbmJ1aWx0U29ydGluZ05lZWRlZCkgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5uZXN0ZWRUYWJsZURhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5uZXN0ZWRUYWJsZURhdGFTb3VyY2UuZGF0YSA9IHRoaXMubmVzdGVkVGFibGVEYXRhO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIC8qKlxyXG4gICAqIFNvcnRUYWJsZURhdGEgbWV0aG9kIGVtaXRzIHRoZSBjbGlja2VkIHRhYmxlIGNvbHVtbiBuYW1lIGFuZCBzb3J0aW5nIGRpcmVjdGlvblxyXG4gICAqIEBwYXJhbSB7U29ydH0gc29ydFxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBzb3J0VGFibGVEYXRhKHNvcnQ6IFNvcnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGUgZWRpdCBhY3Rpb25zIG1ldGhvZCBlbWl0cyB0aGUgY2xpY2tlZCByb3cgZGF0YVxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb25Sb3dBY3Rpb25DbGljayhyb3c6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RBY3Rpb25NZW51LmVtaXQocm93KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWVudSBpdGVtIGFjdGlvbiBtZXRob2QgZW1pdHMgdGhlIGNsaWNrZWQgbWVudSBvcHRpb25zXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBtZW51SXRlbUFjdGlvbihyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5tZW51QWN0aW9uQ2xpY2suZW1pdChyb3cpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPblNlbGVjdENsaWNrIG1ldGhvZCBlbWl0cyB0aGUgcm93U2VsZWN0ZWQgZXZlbnQgd2l0aCBzZWxlY3RlZCByb3cgZGF0YS5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2hlY2tlZFxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uU2VsZWN0Q2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnRvZ2dsZShyb3cpO1xyXG4gICAgcm93LmNoZWNrZWQgPSAhcm93LmNoZWNrZWQ7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQocm93KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5mby5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uRWRpdENsaWNrIG1ldGhvZCBlbWl0cyB0aGUgc2VsZWN0ZWRSb3dUb0VkaXQgZXZlbnQgd2l0aCB0aGUgc2VsZWN0ZWQgcm93IGRhdGEuXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvbkVkaXRDbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd1RvRWRpdC5lbWl0KHJvdyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbkRlbGV0ZUNsaWNrIG1ldGhvZCBlbWl0cyB0aGUgc2VsZWN0ZWRSb3dUb0RlbGV0ZSBldmVudCB3aXRoIHRoZSBzZWxlY3RlZCByb3cgZGF0YS5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uRGVsZXRlQ2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dUb0RlbGV0ZS5lbWl0KHJvdyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKk9uTGlua0NsaWNrIG1ldGhvZCBlbWl0cyB0aGUgZXZlbnQgd2l0aCByb3cgYW5kIGNvbHVtbi5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBwYXJhbSB7VGFibGVDb2x1bW5TY2hlbWF9IFtjb2x1bW5dXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb25MaW5rQ2xpY2socm93OiBhbnksIGNvbHVtbj86IFRhYmxlQ29sdW1uU2NoZW1hKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvd0xpbmsuZW1pdChyb3cpO1xyXG4gICAgdGhpcy5jb2x1bW5EYXRhT25Sb3dMaW5rQ2xpY2suZW1pdCh7IHJvdywgY29sdW1uIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25UYWJsZUVkaXRDbGljayBtZXRob2QgZW1pdHMgZXZlbnQgd2l0aCBzZWxlY3RlZCByb3dzIGRhdGEgd2hlbiBlZGl0IGJ1dHRvbiBjbGlja2VkLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBvblRhYmxlRWRpdENsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd1RvRWRpdC5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uRGVsZXRlVGFibGVDbGljayBtZXRob2QgZW1pdHMgZXZlbnQgd2l0aCBzZWxlY3RlZCByb3cgZGF0YSB3aGVuIGRlbGV0ZSBidXR0b24gY2xpY2tlZC5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25EZWxldGVUYWJsZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd3NUb0RlbGV0ZS5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uQWRkQ2xpY2sgbWV0aG9kIGVtaXRzIHRoZSBhZGQgZXZlbnQgd2hlbiBhZGQgYnV0dG9uIGNsaWNrZWQuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQWRkQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZFJvdy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPblRhYmxlU2VhcmNoQ2xpY2sgbWV0aG9kIHRvZ2dsZXMgdGhlIGlzU2VhcmNoQWN0aXZlIHN0YXRlIHdoZW4gdGhlIHNlYXJjaCBpY29uIGlzIGNsaWNrZWQgZm9yIHRoZSBtb2JpbGUgdmlldy5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25UYWJsZVNlYXJjaENsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1NlYXJjaEFjdGl2ZSA9ICF0aGlzLmlzU2VhcmNoQWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VsZWN0ZWRGaWx0ZXJJbmZvIG1ldGhvZCBlbWl0cyB0aGUgc2VsZWN0ZWRGaWx0ZXIgZXZlbnQgd2l0aCBzZWxlY3RlZCBmaWx0ZXIgaW5mb3JtYXRpb24uXHJcbiAgICogQHBhcmFtIHtDaGlwT3B0aW9ufSBvcHRpb25cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2VsZWN0ZWRGaWx0ZXJUeXBlSW5mbyhvcHRpb246IENoaXBPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIuZW1pdChvcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIHJvd0V4cGFuc2lvbkNsaWNrIGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIHJvdyBkYXRhIHdoZW4gdGhlIHJvdyBpcyBleHBhbmRlZC5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uVGFibGVSb3dFeHBhbnNpb25DbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5uZXN0ZWRUYWJsZURhdGFTb3VyY2UuZGF0YSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRFbGVtZW50ID09PSByb3cpIHRoaXMucm93RXhwYW5zaW9uQ2xpY2suZW1pdChyb3cpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25TZWxlY3RlZEZpbHRlck9wdGlvbnMgbWV0aG9kIGVtaXRzIHRoZSBmaWx0ZXJlZE9wdGlvbnMgZXZlbnQgd2l0aCB0aGUgc2VsZWN0ZWQgb3B0aW9ucyBhbmQgYWRkcyBcIkNsZWFyIGFsbFwiIG9wdGlvbiB0byBjbGVhciB0aGUgYWxsIHNlbGVjdGlvbnMuXHJcbiAgICogQHBhcmFtIHtDaGVja2JveE9wdGlvbltdfSBvcHRpb25zXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uU2VsZWN0ZWRGaWx0ZXJPcHRpb25zKHNlbGVjdGVkT3B0aW9uczogRmlsdGVyc0FuZE9wdGlvbnNbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuZW1pdChzZWxlY3RlZE9wdGlvbnMpO1xyXG4gICAgdGhpcy5hcHBsaWVkRmlsdGVyT3B0aW9ucyA9IFtdO1xyXG4gICAgc2VsZWN0ZWRPcHRpb25zPy5mb3JFYWNoKChvcHRpb25zKSA9PiB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMsIG5vLXVudXNlZC12YXJzXHJcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpKSB7XHJcbiAgICAgICAgdmFsdWU/LmZvckVhY2goKG9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgaWYgKG9wdGlvbi5jaGVja2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbGllZEZpbHRlck9wdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbi5pZCxcclxuICAgICAgICAgICAgICBuYW1lOiBvcHRpb24ubmFtZSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgY2hlY2tlZDogb3B0aW9uLmNoZWNrZWQsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCxcclxuICAgICAgICAgICAgICBjaGlwVHlwZTogQ2hpcHNUeXBlLlRPR0dMRSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hcHBsaWVkRmlsdGVyT3B0aW9ucy5wdXNoKHtcclxuICAgICAgaWQ6IHRoaXMuY2xlYXJBbGwsXHJcbiAgICAgIG5hbWU6IHRoaXMuY2xlYXJBbGwsXHJcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgIGNoaXBUeXBlOiBDaGlwc1R5cGUuU1RBVElDLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9uUmVtb3ZhbE9mRmlsdGVyZWRPcHRpb24gbWV0aG9kIGVtaXRzIHRoZSByZW1vdmVGaWx0ZXJlZE9wdGlvbiBldmVudCB3aXRoIHJlbW92ZWQgb3B0aW9uLlxyXG4gICAqIEBwYXJhbSB7Q2hpcE9wdGlvbn0gb3B0aW9uXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uUmVtb3ZhbE9mRmlsdGVyZWRPcHRpb24ob3B0aW9uczogRmlsdGVyc0FuZE9wdGlvbnNbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW1vdmVGaWx0ZXJlZE9wdGlvbi5lbWl0KG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VhcmNoVmFsdWUgbWV0aG9kIGVtaXRzIHRoZSBzZWFyY2hlZCB2YWx1ZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2VhcmNoVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hlZFZhbHVlLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBwYWdpbmF0aW9uIGZvciBldmVyeSBwYWdlLlxyXG4gICAqIEBwYXJhbSB7UGFnZUV2ZW50fSBldmVudFxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBoYW5kbGVQYWdpbmF0aW9uKGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSXNBbGxSb3dTZWxlY3RlZCBtZXRob2QgcmV0dXJucyB0aGUgYm9vbGVhbiB2YWx1ZSBieSBjaGVja2luZyBzZWxlY3RlZFJvd3MgYW5kIHRvdGFsUm93cyBsZW5ndGguXHJcbiAgICogQHJldHVybiB7Kn0gIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBpc0FsbFJvd3NTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3RlZC5sZW5ndGggPT09IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvZ2dsZUFsbFJvd3NTZWxlY3Rpb24gbWV0aG9kIGNsZWFycyBzZWxlY3RlZFJvd3Mgd2hlbiBhbGwgcm93cyBhcmUgc2VsZWN0ZWQgZWxzZSBzZWxlY3RzIHRoZSBhbGwgcm93cy5cclxuICAgKiBAcmV0dXJuIHsqfSAge3ZvaWR9XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRvZ2dsZUFsbFJvd3NTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc0FsbFJvd3NTZWxlY3RlZCgpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XHJcbiAgICB9IGVsc2UgdGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0KC4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5mby5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93cyBBbmd1bGFyIHRvIGRldGVjdCB0aGUgc3BlY2lmaWMgdGFibGUgcm93IHRoYXQgbmVlZHMgdG8gY2hhbmdlIG9yIGJlIGFkZGVkIGJ5IHRyYWNraW5nIHJvdyB1bmlxdWUgSWQuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICogQHBhcmFtIHtUYWJsZUNvbHVtblNjaGVtYX0gY29sdW1uXHJcbiAgICogQHJldHVybiB7Kn0gIHtudW1iZXJ9XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRyYWNrQnlJZChpbmRleDogbnVtYmVyLCBjb2x1bW46IFRhYmxlQ29sdW1uU2NoZW1hKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBjb2x1bW4uaWQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHRhYmxlIHJvdyBsZWZ0IGJvcmRlciBhcyBwZXIgdGhlIGxlZ2VuZCBjb2xvclxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvclxyXG4gICAqIEByZXR1cm4geyp9XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZ2V0Um93Qm9yZGVyTGVmdENvbG9yKGNvbG9yOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYm9yZGVyTGVmdDogJzVweCBzb2xpZCAnICsgY29sb3IsXHJcbiAgICB9O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBOZ09uRGVzdHJveSBwZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8udW5vYnNlcnZlKHRoaXMudGFibGVDb250ZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGUgZC1mbGV4IGZsZXgtY29sdW1uIGNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZC1mbGV4XCJcclxuICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICBpc01vYmlsZVZpZXdcclxuICAgICAgICA/ICdmbGV4LWNvbHVtbiBtcy00J1xyXG4gICAgICAgIDogJ2p1c3RpZnktY29udGVudC1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUnXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxjYXB0aW9uXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGUtLWNhcHRpb25cIlxyXG4gICAgICAqbmdJZj1cImNhcHRpb25cIlxyXG4gICAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAnaWVlZXNhLXRpdGxlLWxnLTI0JyA6ICdpZWVlc2EtdGl0bGUtbWQtMTgnXCJcclxuICAgID5cclxuICAgICAge3tcclxuICAgICAgICBjYXB0aW9uXHJcbiAgICAgIH19XHJcbiAgICA8L2NhcHRpb24+XHJcbiAgICA8cFxyXG4gICAgICAqbmdJZj1cImlzU2Nyb2xsaW5nRW5hYmxlZCAmJiBpc1Njcm9sbFN1cHBvcnRNZXNzYWdlTmVlZGVkXCJcclxuICAgICAgY2xhc3M9XCJtLTAgbWItMlwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3Bvc2l0aW9uLWFic29sdXRlIGJvdHRvbS0wIGVuZC0wJzogIWlzTW9iaWxlVmlldyB9XCJcclxuICAgID5cclxuICAgICAge3sgc2Nyb2xsYmFyU3VwcG9ydE1lc3NhZ2UgfX1cclxuICAgIDwvcD5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInRhYmxlQWN0aW9uc1wiXHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19hY3Rpb25zIGQtZmxleCByb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtbGctYmFzZWxpbmUgcC1zbS0wXCJcclxuICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdpZWVlc2EtZGF0YS10YWJsZV9fbW9iaWxlLXZpZXctYWN0aW9ucycgOiAnJ1wiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAqbmdJZj1cIiFpc01vYmlsZVZpZXdcIlxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWx0ZXJUZW1wbGF0ZVJlZlwiXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGRhdGE6ICdjb2wtbWQtNyBjb2wtbGctNicgfVwiXHJcbiAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtbGctNCBnYXAtbWQtMyBnYXAtc20tMyBnYXAtMyBjb2wtbWQtNSBjb2wtbGctNiBqdXN0aWZ5LWNvbnRlbnQtZW5kIHBzLTBcIlxyXG4gICAgICBbbmdDbGFzc109XCIhdGFibGVBY3Rpb25zPy5pc0ZpbHRlck5lZWRlZCA/ICdjb2wtbWQtMTIgY29sLWxnLTEyJyA6ICcnXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVZpZXdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWVlZXNhU2VhcmNoXCI+IDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc0FkZE5lZWRlZFwiXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwiYWRkQnV0dG9uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9uQWRkQ2xpY2soKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICBhZGRCdXR0b24/LmRpc2FibGVkID8gJ2llZWVzYS1kYXRhLXRhYmxlX19hY3Rpb25zLS1kaXNhYmxlZCcgOiAnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID48L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc0VkaXROZWVkZWRcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cInRhYmxlRWRpdEJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvblRhYmxlRWRpdENsaWNrKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dzLnNlbGVjdGVkLmxlbmd0aCAhPT0gMVxyXG4gICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucy0tZGlzYWJsZWQnXHJcbiAgICAgICAgICAgIDogJydcclxuICAgICAgICBcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNEZWxldGVOZWVkZWRcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cInRhYmxlRGVsZXRlQnV0dG9uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9uRGVsZXRlVGFibGVDbGljaygpXCJcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dzLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCB8fCB0YWJsZURlbGV0ZUJ1dHRvbi5kaXNhYmxlZFxyXG4gICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucy0tZGlzYWJsZWQnXHJcbiAgICAgICAgICAgIDogJydcclxuICAgICAgICBcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzU2VhcmNoTmVlZGVkXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cz8uZGF0YVRhYmxlPy5hcmlhTGFiZWw/LnNlYXJjaFwiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggZC1zbS1mbGV4IGQtbWQtbm9uZSBkLWxnLW5vbmUgZC14bC1ub25lIGllZWVzYS1kYXRhLXRhYmxlX19hY3Rpb25zLS1zZWFyY2gtZ3JvdXAtaWNvblwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uVGFibGVTZWFyY2hDbGljaygpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzc1wiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8bmctY29udGFpbmVyXHJcbiAgICAqbmdJZj1cImlzTW9iaWxlVmlld1wiXHJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWx0ZXJUZW1wbGF0ZVJlZlwiXHJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXRhOiAnaWVlZXNhLWRhdGEtdGFibGVfX2ZpbHRlcicgfVwiXHJcbiAgPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjZmlsdGVyVGVtcGxhdGVSZWYgbGV0LWNsYXNzTmFtZT1cImRhdGFcIj5cclxuICAgIDxpZWVlc2EtZmlsdGVyXHJcbiAgICAgIGNsYXNzPVwie3sgY2xhc3NOYW1lIH19IHAtMFwiXHJcbiAgICAgIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxyXG4gICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNGaWx0ZXJOZWVkZWRcIlxyXG4gICAgICBbc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXT1cInNlbGVjdGVkRmlsdGVyT3B0aW9uc1wiXHJcbiAgICAgIFthcHBsaWVkRmlsdGVyT3B0aW9uc109XCJhcHBsaWVkRmlsdGVyT3B0aW9uc1wiXHJcbiAgICAgIChzZWxlY3RlZEZpbHRlcik9XCJzZWxlY3RlZEZpbHRlclR5cGVJbmZvKCRldmVudClcIlxyXG4gICAgICAocmVtb3ZlRmlsdGVyZWRPcHRpb24pPVwib25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbigkZXZlbnQpXCJcclxuICAgICAgKGZpbHRlcmVkT3B0aW9ucyk9XCJvblNlbGVjdGVkRmlsdGVyT3B0aW9ucygkZXZlbnQpXCJcclxuICAgID48L2llZWVzYS1maWx0ZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2JpbGVWaWV3ICYmIGlzU2VhcmNoQWN0aXZlXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWVlZXNhU2VhcmNoXCI+IDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjaWVlZXNhU2VhcmNoPlxyXG4gICAgPGllZWVzYS1zZWFyY2hcclxuICAgICAgW3BsYWNlaG9sZGVyTGFiZWxdPVwic2VhcmNoUGxhY2VIb2xkZXJUZXh0XCJcclxuICAgICAgW3NlYXJjaFR5cGVdPVwic2VhcmNoVHlwZVwiXHJcbiAgICAgIChzZWFyY2hWYWx1ZSk9XCJzZWFyY2hWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzU2VhcmNoTmVlZGVkXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fc2VhcmNoLXdyYXBwZXIgbXQtc20tMiBtZC1zbS0yIG10LTIgbWQtMlwiXHJcbiAgICAgIFtzdXBwb3J0TWVzc2FnZV09XCJzZWFyY2hTdXBwb3J0TWVzc2FnZVwiXHJcbiAgICA+PC9pZWVlc2Etc2VhcmNoPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPHBcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX3NlYXJjaF9yZXN1bHRfbGFiZWxcIlxyXG4gICAgKm5nSWY9XCJzZWFyY2hSZXN1bHRNZXNzYWdlXCJcclxuICAgIFtpbm5lckhUTUxdPVwic2VhcmNoUmVzdWx0TWVzc2FnZSB8IHNhZmUgOiBzYWZlVHlwZVwiXHJcbiAgPjwvcD5cclxuICA8cFxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1ucy1oZWFkZXItdGV4dCBtYi0wIGllZWVzYS10aXRsZS1tZC0xOCB0ZXh0LWNlbnRlclwiXHJcbiAgPlxyXG4gICAge3sgdGFibGVDb2x1bW5zSGVhZGVyVGV4dCB9fVxyXG4gIDwvcD5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jb250ZW50XCJcclxuICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICB0YWJsZURhdGFJbmZvICYmIHRhYmxlRGF0YUluZm8ubGVuZ3RoID09PSAwXHJcbiAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX25vLXRhYmxlLWRhdGEnXHJcbiAgICAgICAgOiAnJ1xyXG4gICAgXCJcclxuICAgICN0YWJsZUNvbnRlbnRcclxuICA+XHJcbiAgICA8dGFibGVcclxuICAgICAgbWF0LXRhYmxlXHJcbiAgICAgIFtuZ0NsYXNzXT1cImNsYXNzTmFtZVwiXHJcbiAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxyXG4gICAgICBtYXRTb3J0XHJcbiAgICAgIFttYXRTb3J0RGlzYWJsZUNsZWFyXT1cImlzQ2xlYXJTb3J0TmVlZGVkXCJcclxuICAgICAgW21hdFNvcnRBY3RpdmVdPVwiZGVmYXVsdFNvcnRlZENvbHVtblwiXHJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cImRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uXCJcclxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwic29ydFRhYmxlRGF0YSgkZXZlbnQpXCJcclxuICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUlkXCJcclxuICAgICAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2x1bW4gb2YgY29sdW1uU2NoZW1hSW5mbztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZDtcclxuICAgICAgICAgIGxldCBpZCA9IGluZGV4XHJcbiAgICAgICAgXCJcclxuICAgICAgICBtYXRDb2x1bW5EZWY9XCJ7eyBjb2x1bW4/LmNvbHVtbkRlZiB9fVwiXHJcbiAgICAgICAgW3N0aWNreV09XCJjb2x1bW4/LmlzU3RpY2t5Q29sdW1uXCJcclxuICAgICAgICBbc3RpY2t5RW5kXT1cImNvbHVtbj8uaXNTdGlja3lFbmRDb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgIG1hdC1zb3J0LWhlYWRlclxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2x1bW4/LmlzU29ydGFibGVDb2x1bW5cIlxyXG4gICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbj8uY29sdW1uRGVmXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGUtaGVhZGVyIGllZWVzYS1ib2R5LXNtLWJvbGQtMTRcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgIGNvbHVtbj8uY29sdW1uRGVmID09PSBjb2x1bW5UeXBlPy5TRUxFQ1RcclxuICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sdW1uPy5oZWFkaW5nXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5TRUxFQ1RcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlQWxsUm93c1NlbGVjdGlvbigpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRSb3dzPy5oYXNWYWx1ZSgpICYmIGlzQWxsUm93c1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGVkUm93cz8uaGFzVmFsdWUoKSAmJiAhaXNBbGxSb3dzU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5kYXRhVGFibGU/LmFyaWFMYWJlbD8uc2VsZWN0QWxsXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdtZS0yJzogY29sdW1uLmhhc0NvbHVtbkFjdGlvbnMgfVwiPnt7XHJcbiAgICAgICAgICAgICAgY29sdW1uLmhlYWRpbmdcclxuICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGFzQ29sdW1uQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxpZWVlc2EtbWVudVxyXG4gICAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJ0YWJsZUNvbHVtbkFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRJY29uU2l6ZV09XCJ0YWJsZUNvbHVtbkFjdGlvbk1lbnVTaXplXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2NvbHVtbi1tZW51XCJcclxuICAgICAgICAgICAgICA+PC9pZWVlc2EtbWVudT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIDx0ZFxyXG4gICAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudCBpZWVlc2EtdGl0bGUtc20tMTZcIlxyXG4gICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICBjb2x1bW4/LmNvbHVtbkRlZiA9PT0gY29sdW1uVHlwZT8uU0VMRUNUXHJcbiAgICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2NvbHVtbi1zZWxlY3QnXHJcbiAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgdGFibGVEYXRhO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLFxyXG4gICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICB0YWJsZVJvd0FjdGlvbnM6IHRhYmxlUm93QWN0aW9uc1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJleHBhbmRlZERldGFpbFwiPlxyXG4gICAgICAgIDx0ZFxyXG4gICAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvd1wiXHJcbiAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImRpc3BsYXllZENvbHVtbnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImllZWVzYS1leHBhbmRlZC1yb3dcIlxyXG4gICAgICAgICAgICBbQGRldGFpbEV4cGFuZF09XCJyb3cgPT09IGV4cGFuZGVkRWxlbWVudCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtbmVzdGVkLWRhdGEtdGFibGVcIj5cclxuICAgICAgICAgICAgICA8dGFibGVcclxuICAgICAgICAgICAgICAgICNuZXN0ZWRUYWJsZVxyXG4gICAgICAgICAgICAgICAgbWF0LXRhYmxlXHJcbiAgICAgICAgICAgICAgICBbdHJhY2tCeV09XCJ0cmFja0J5SWRcIlxyXG4gICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwibmVzdGVkVGFibGVEYXRhU291cmNlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2x1bW4gb2YgbmVzdGVkVGFibGVDb2x1bW5TY2hlbWFJbmZvO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBtYXRDb2x1bW5EZWY9XCJ7eyBjb2x1bW4/LmNvbHVtbkRlZiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdGlja3ldPVwiY29sdW1uPy5pc1N0aWNreUNvbHVtblwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdGlja3lFbmRdPVwiY29sdW1uPy5pc1N0aWNreUVuZENvbHVtblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDx0aFxyXG4gICAgICAgICAgICAgICAgICAgIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N3aXRjaF09XCJjb2x1bW4/LmNvbHVtbkRlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZS1oZWFkZXIgaWVlZXNhLWJvZHktc20tYm9sZC0xNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4/LmNvbHVtbkRlZiA9PT0gY29sdW1uVHlwZT8uU0VMRUNUXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2llZWVzYS1kYXRhLXRhYmxlX19jb2x1bW4tc2VsZWN0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sdW1uPy5oZWFkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbHVtbi5oZWFkaW5nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICBtYXQtY2VsbFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudCBpZWVlc2EtdGl0bGUtc20tMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4/LmNvbHVtbkRlZiA9PT0gY29sdW1uVHlwZT8uU0VMRUNUXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2llZWVzYS1kYXRhLXRhYmxlX19jb2x1bW4tc2VsZWN0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdzogcm93LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlUm93QWN0aW9uczogbmVzdGVkVGFibGVSb3dBY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNOZXN0ZWRUYWJsZUhlYWRlck5lZWRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgICAgICBtYXQtaGVhZGVyLXJvd1xyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2hlYWRlci1yb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICptYXRIZWFkZXJSb3dEZWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1ucztcclxuICAgICAgICAgICAgICAgICAgICAgIHN0aWNreTogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC90cj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICAgIG1hdC1yb3dcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtbmVzdGVkLWRhdGEtdGFibGVfX2NlbGwtcm93XCJcclxuICAgICAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IG5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHJvdz8ubGVnZW5kQ29sb3JcclxuICAgICAgICAgICAgICAgICAgICAgID8gZ2V0Um93Qm9yZGVyTGVmdENvbG9yKHJvdz8ubGVnZW5kQ29sb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC90cj5cclxuICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdyA9PT0gZXhwYW5kZWRFbGVtZW50XCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGllZWVzYS1leHBhbmRlZC1yb3dfX2Zvb3RlclwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBuZXN0ZWRQYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzID5cclxuICAgICAgICAgICAgICAgICAgICBuZXN0ZWRQYWdpbmF0b3JDb25maWcucmVjb3Jkc1BlclBhZ2UgJiZcclxuICAgICAgICAgICAgICAgICAgbmVzdGVkUGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlID4gMFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTGlua0NsaWNrKHJvdylcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS10aXRsZS1zbS0xNiBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LWxpbmtcIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cz8uZGF0YVRhYmxlPy5hcmlhTGFiZWw/LmxpbmtcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyB2aWV3QWxsID8/IFwiXCIgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZXN0ZWQtZWxlbWVudC1kZXRhaWxfX2Zvb3Rlci0tZGV0YWlsXCI+e3tcclxuICAgICAgICAgICAgICAgICAgc2hvd05lc3RlZFRhYmxlUGFnaW5hdGlvbkluZm9cclxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUYWJsZUhlYWRlck5lZWRlZFwiPlxyXG4gICAgICAgIDx0clxyXG4gICAgICAgICAgbWF0LWhlYWRlci1yb3dcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2hlYWRlci1yb3dcIlxyXG4gICAgICAgICAgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogZmFsc2VcIlxyXG4gICAgICAgID48L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPHRyXHJcbiAgICAgICAgbWF0LXJvd1xyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtcm93XCJcclxuICAgICAgICBbbmdTdHlsZV09XCJcclxuICAgICAgICAgIHJvdz8ubGVnZW5kQ29sb3IgPyBnZXRSb3dCb3JkZXJMZWZ0Q29sb3Iocm93Py5sZWdlbmRDb2xvcikgOiAnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIlxyXG4gICAgICA+PC90cj5cclxuICAgICAgPHRyXHJcbiAgICAgICAgbWF0LXJvd1xyXG4gICAgICAgICptYXRSb3dEZWY9XCJsZXQgZGV0YWlsczsgY29sdW1uczogWydleHBhbmRlZERldGFpbCddXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1yb3ctZXhwYW5kZWQtdGFibGUtZGV0YWlsXCJcclxuICAgICAgPjwvdHI+XHJcbiAgICA8L3RhYmxlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPHBcclxuICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19tZXNzYWdlIGllZWVzYS10aXRsZS1sZy1ib2xkLTI0IHRleHQtY2VudGVyIHAtNVwiXHJcbiAgKm5nSWY9XCJ0YWJsZURhdGFJbmZvICYmIHRhYmxlRGF0YUluZm8ubGVuZ3RoID09PSAwXCJcclxuPlxyXG4gIHt7IG5vUmVjb3JkRm91bmQgfX1cclxuPC9wPlxyXG48ZGl2IGNsYXNzPVwicm93IGllZWVzYS1kYXRhLXRhYmxlX19wYWdpbmF0aW9uLWNvbnRhaW5lclwiPlxyXG4gIDxpZWVlc2EtbGVnZW5kXHJcbiAgICBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNSBkLWZsZXggYWxpZ24taXRlbXMtZW5kIHB4LTRcIlxyXG4gICAgKm5nSWY9XCJsZWdlbmRzPy5sZW5ndGhcIlxyXG4gICAgW25nQ2xhc3NdPVwiIXRhYmxlQWN0aW9ucz8uaXNQYWdpbmF0aW9uTmVlZGVkID8gJ2NvbC1tZC0xMicgOiAnJ1wiXHJcbiAgICBbbGVnZW5kc109XCJsZWdlbmRzXCJcclxuICAgIFtpc1NvcnRpbmddPVwidHJ1ZVwiXHJcbiAgPjwvaWVlZXNhLWxlZ2VuZD5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNQYWdpbmF0aW9uTmVlZGVkXCJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX3BhZ2luYXRpb24gZC1mbGV4IGZsZXgtcm93LXJldmVyc2UgY29sLXNtLTEyIGNvbC1tZC03XCJcclxuICAgIFtuZ0NsYXNzXT1cIiFsZWdlbmRzPy5sZW5ndGggPyAnY29sLW1kLTEyJyA6ICcnXCJcclxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5kYXRhVGFibGU/LmFyaWFMYWJlbD8ucGFnaW5hdGlvblwiXHJcbiAgPlxyXG4gICAgPG1hdC1wYWdpbmF0b3JcclxuICAgICAgW3BhZ2VTaXplXT1cInBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2VcIlxyXG4gICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2luYXRvckNvbmZpZy5wYWdlU2l6ZU9wdGlvbnNcIlxyXG4gICAgICAocGFnZSk9XCJoYW5kbGVQYWdpbmF0aW9uKCRldmVudClcIlxyXG4gICAgICBbbGVuZ3RoXT1cInBhZ2luYXRvckNvbmZpZz8udG90YWxSZWNvcmRzXCJcclxuICAgID48L21hdC1wYWdpbmF0b3I+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48bmctdGVtcGxhdGVcclxuICAjdGFibGVEYXRhXHJcbiAgbGV0LWNvbHVtbj1cImNvbHVtblwiXHJcbiAgbGV0LXJvdz1cInJvd1wiXHJcbiAgbGV0LXRhYmxlUm93QWN0aW9ucz1cInRhYmxlUm93QWN0aW9uc1wiXHJcbj5cclxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb2x1bW4/LmNvbHVtblR5cGVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0lmPVwiaXNDZWxsVGV4dE92ZXJmbG93RWxsaXBzaXM7IHRoZW4gZWxsaXBzaXNDZWxsOyBlbHNlIHRleHRXcmFwQ2VsbFwiXHJcbiAgICAgID5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjdGV4dFdyYXBDZWxsPlxyXG4gICAgICAgIDxwXHJcbiAgICAgICAgICBjbGFzcz1cIm0tMFwiXHJcbiAgICAgICAgICAqbmdJZj1cImNvbHVtbj8uaXNIVE1MQ2VsbERhdGFcIlxyXG4gICAgICAgICAgW2lubmVySFRNTF09XCJjb2x1bW4/LmNlbGxEYXRhKHJvdykgfCBzYWZlIDogc2FmZVR5cGVcIlxyXG4gICAgICAgID48L3A+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4/LmlzSFRNTENlbGxEYXRhXCI+XHJcbiAgICAgICAgICB7eyBjb2x1bW4/LmNlbGxEYXRhKHJvdykgfX08L25nLWNvbnRhaW5lclxyXG4gICAgICAgID5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNlbGxpcHNpc0NlbGw+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgIGllZWVzYVRleHRUcnVuY2F0ZWRcclxuICAgICAgICAgIFttYXRUb29sdGlwXT1cImNvbHVtbj8uY2VsbERhdGEocm93KVwiXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtLWVsbGlwc2lzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBjb2x1bW4/LmNlbGxEYXRhKHJvdykgfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGU/LkxJTktcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAoY2xpY2spPVwib25MaW5rQ2xpY2socm93LCBjb2x1bW4pXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS10aXRsZS1zbS0xNiBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LWxpbmtcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sdW1uPy5jZWxsRGF0YShyb3cpXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJyb3c/LnRvb2xUaXBUZXh0XCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGNvbHVtbj8uY2VsbERhdGEocm93KSB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbj8uaXNDb250ZW50VW5kZXJMaW5rXCI+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWJvZHktc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC11bmRlci1saW5rXCJcclxuICAgICAgICAgICpuZ0lmPVwiY29sdW1uPy5pc0hUTUxDZWxsRGF0YVwiXHJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cInJvdz8uY29udGVudFVuZGVyTGluayB8IHNhZmUgOiBzYWZlVHlwZVwiXHJcbiAgICAgICAgPjwvcD5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYm9keS1zbS0xNCBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LXVuZGVyLWxpbmtcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhY29sdW1uPy5pc0hUTUxDZWxsRGF0YVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgcm93Py5jb250ZW50VW5kZXJMaW5rIH19XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uTkVTVEVEX1RBQkxFXCI+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJyb3c/Lmhhc0NoaWxkcmVuXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIlxyXG4gICAgICAgICAgZXhwYW5kZWRFbGVtZW50ID0gZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyBudWxsIDogcm93O1xyXG4gICAgICAgICAgb25UYWJsZVJvd0V4cGFuc2lvbkNsaWNrKHJvdylcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cIlxyXG4gICAgICAgICAgZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyByb3dFeHBhbmRCdXR0b24gOiByb3dDb2xsYXBzZUJ1dHRvblxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGU/LlNFTEVDVFwiPlxyXG4gICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgY2xhc3M9XCJjb2wtMlwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBvblNlbGVjdENsaWNrKHJvdykgOiBudWxsXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFJvd3MuaXNTZWxlY3RlZChyb3cpXCJcclxuICAgICAgICBbYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5zZWxlY3RcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5FRElUXCI+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJyb3dFZGl0QnV0dG9uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9uRWRpdENsaWNrKHJvdylcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGU/LkRFTEVURVwiPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwicm93RGVsZXRlQnV0dG9uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9uRGVsZXRlQ2xpY2socm93KVwiXHJcbiAgICAgID48L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uQUNUSU9OU1wiPlxyXG4gICAgICA8aWVlZXNhLW1lbnVcclxuICAgICAgICBbbWVudUl0ZW1zXT1cInRhYmxlUm93QWN0aW9ucyA/PyByb3cubWVudUFjdGlvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm1lbnVJdGVtQWN0aW9uKHJvdylcIlxyXG4gICAgICAgIChtZW51SXRlbUNsaWNrKT1cIm9uUm93QWN0aW9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgID48L2llZWVzYS1tZW51PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
581
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxpQkFBaUIsRUFFakIsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBYSxNQUFNLDZCQUE2QixDQUFDO0FBQzVFLE9BQU8sRUFDTCxPQUFPLEVBQ1AsYUFBYSxHQUdkLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBRUwsUUFBUSxFQUNSLFFBQVEsR0FDVCxNQUFN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QUFlO3NCQUF4QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNhLElBQUk7c0JBQXZCLFNBQVM7dUJBQUMsT0FBTztnQkFtQmQsbUJBQW1CO3NCQUR0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgT25EZXN0cm95LFxyXG4gIGZvcndhcmRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlLCBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlLCBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQge1xyXG4gIE1hdFNvcnQsXHJcbiAgTWF0U29ydE1vZHVsZSxcclxuICBTb3J0LFxyXG4gIFNvcnREaXJlY3Rpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICBTYWZlUGlwZSxcclxuICBTYWZlVHlwZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBUYWJsZUNvbHVtblNjaGVtYSxcclxuICBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24sXHJcbiAgVGFibGVDb2x1bW5UeXBlLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1zY2hlbWEubW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdpbmF0b3JDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGFnaW5hdG9yLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IENoZWNrYm94T3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoZWNrYm94LW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICcuLi8uLi9tb2RlbHMvaWNvbi1idXR0b24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVBY3Rpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLWFjdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGlwT3B0aW9uLCBDaGlwc1R5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hpcC1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgU2VhcmNoVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9zZWFyY2gubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJzQW5kT3B0aW9ucyB9IGZyb20gJy4uLy4uL21vZGVscy9maWx0ZXJzLW9wdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBUZXh0VHJ1bmNhdGVkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90ZXh0LXRydW5jYXRlZC90ZXh0LXRydW5jYXRlZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4uLy4uL21vZGVscy9tZW51Lm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBhbmltYXRlLFxyXG4gIHN0YXRlLFxyXG4gIHN0eWxlLFxyXG4gIHRyYW5zaXRpb24sXHJcbiAgdHJpZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgTGVnZW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vbGVnZW5kL2xlZ2VuZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMZWdlbmQgfSBmcm9tICcuLi8uLi9tb2RlbHMvbGVnZW5kLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBQcm92aWRlcyBhIE1hdGVyaWFsIERlc2lnbiBzdHlsZWQgZGF0YS10YWJsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgcm93cyBvZiBkYXRhIHdpdGggc29ydEJ5LCBmaWx0ZXJCeSwgYWRkL2VkaXQvZGVsZXRlIHRhYmxlIHJvdyBkYXRhLCBwYWdpbmF0aW9uLCBzZWFyY2ggdGFibGUgZGF0YS5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBpbXBsZW1lbnRzIHtBZnRlclZpZXdJbml0fVxyXG4gKiBAaW1wbGVtZW50cyB7T25EZXN0cm95fVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtZGF0YS10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBmb3J3YXJkUmVmKCgpID0+IFNhZmVQaXBlKSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRTb3J0TW9kdWxlLFxyXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXHJcbiAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgU2VhcmNoQ29tcG9uZW50LFxyXG4gICAgRmlsdGVyQ29tcG9uZW50LFxyXG4gICAgVGV4dFRydW5jYXRlZERpcmVjdGl2ZSxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWVudUNvbXBvbmVudCxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNZW51Q29tcG9uZW50LFxyXG4gICAgTGVnZW5kQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ2NvbGxhcHNlZCcsXHJcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJywgZGlzcGxheTogJ25vbmUnIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKFxyXG4gICAgICAgICdleHBhbmRlZCA8PT4gY29sbGFwc2VkJyxcclxuICAgICAgICBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKVxyXG4gICAgICApLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHByaXZhdGUgdGFibGVEYXRhITogYW55W107XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBwcml2YXRlIG5lc3RlZFRhYmxlRGF0YSE6IGFueVtdO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZXhwYW5kZWRFbGVtZW50OiBhbnk7XHJcbiAgQElucHV0KClcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHNldCB0YWJsZURhdGFJbmZvKHZhbHVlOiBhbnlbXSkge1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMudGFibGVEYXRhQ2hhbmdlcygpO1xyXG4gIH1cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldCB0YWJsZURhdGFJbmZvKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBzZXQgbmVzdGVkVGFibGVEYXRhSW5mbyh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YUNoYW5nZXMoKTtcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBnZXQgbmVzdGVkVGFibGVEYXRhSW5mbygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRUYWJsZURhdGE7XHJcbiAgfVxyXG4gIHByaXZhdGUgY29sdW1uU2NoZW1hITogVGFibGVDb2x1bW5TY2hlbWFbXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBjb2x1bW5TY2hlbWFJbmZvKHZhbHVlOiBUYWJsZUNvbHVtblNjaGVtYVtdKSB7XHJcbiAgICB0aGlzLmNvbHVtblNjaGVtYSA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgY29sdW1uU2NoZW1hSW5mbygpOiBUYWJsZUNvbHVtblNjaGVtYVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtblNjaGVtYTtcclxuICB9XHJcbiAgcHJpdmF0ZSBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYSE6IFRhYmxlQ29sdW1uU2NoZW1hW107XHJcbiAgQElucHV0KClcclxuICBzZXQgbmVzdGVkVGFibGVDb2x1bW5TY2hlbWFJbmZvKHZhbHVlOiBUYWJsZUNvbHVtblNjaGVtYVtdKSB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hID0gdmFsdWU7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1ucyA9IHRoaXMubmVzdGVkVGFibGVDb2x1bW5TY2hlbWE/Lm1hcChcclxuICAgICAgKGMpID0+IGM/LmNvbHVtbkRlZlxyXG4gICAgKTtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLm5lc3RlZFRhYmxlRGF0YSk7XHJcbiAgfVxyXG4gIGdldCBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYUluZm8oKTogVGFibGVDb2x1bW5TY2hlbWFbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRUYWJsZUNvbHVtblNjaGVtYTtcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IGNvbnN0YW50cztcclxuICBASW5wdXQoKSB0YWJsZUFjdGlvbnMhOiBUYWJsZUFjdGlvbnM7XHJcbiAgQElucHV0KCkgdGFibGVSb3dBY3Rpb25zITogTWVudVtdO1xyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlUm93QWN0aW9ucyE6IE1lbnVbXTtcclxuICBASW5wdXQoKSBjYXB0aW9uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHZpZXdBbGwhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBwYWdpbmF0b3JDb25maWd1cmF0aW9uITogUGFnaW5hdG9yQ29uZmlnO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHBhZ2luYXRvckNvbmZpZyh2YWx1ZTogUGFnaW5hdG9yQ29uZmlnKSB7XHJcbiAgICB0aGlzLnBhZ2luYXRvckNvbmZpZ3VyYXRpb24gPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IHBhZ2luYXRvckNvbmZpZygpOiBQYWdpbmF0b3JDb25maWcge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdG9yQ29uZmlndXJhdGlvbjtcclxuICB9XHJcbiAgcHJpdmF0ZSBuZXN0ZWRQYWdpbmF0b3JDb25maWd1cmF0aW9uITogUGFnaW5hdG9yQ29uZmlnO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG5lc3RlZFBhZ2luYXRvckNvbmZpZyh2YWx1ZTogUGFnaW5hdG9yQ29uZmlnKSB7XHJcbiAgICB0aGlzLm5lc3RlZFBhZ2luYXRvckNvbmZpZ3VyYXRpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMuc2hvd05lc3RlZFRhYmxlUGFnaW5hdGlvbkluZm8gPVxyXG4gICAgICAnMSAtICcgK1xyXG4gICAgICArYCR7dGhpcy5uZXN0ZWRQYWdpbmF0b3JDb25maWcucmVjb3Jkc1BlclBhZ2V9YCArXHJcbiAgICAgICcgb2YgJyArXHJcbiAgICAgICtgJHt0aGlzLm5lc3RlZFBhZ2luYXRvckNvbmZpZy50b3RhbFJlY29yZHN9YDtcclxuICB9XHJcbiAgZ2V0IG5lc3RlZFBhZ2luYXRvckNvbmZpZygpOiBQYWdpbmF0b3JDb25maWcge1xyXG4gICAgcmV0dXJuIHRoaXMubmVzdGVkUGFnaW5hdG9yQ29uZmlndXJhdGlvbjtcclxuICB9XHJcbiAgcHJpdmF0ZSBsZWdlbmRzSW5mbyE6IExlZ2VuZFtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxlZ2VuZHModmFsdWU6IExlZ2VuZFtdKSB7XHJcbiAgICB0aGlzLmxlZ2VuZHNJbmZvID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBsZWdlbmRzKCk6IExlZ2VuZFtdIHtcclxuICAgIHJldHVybiB0aGlzLmxlZ2VuZHNJbmZvO1xyXG4gIH1cclxuICBASW5wdXQoKSBzZWFyY2hQbGFjZUhvbGRlclRleHQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcm93RWRpdEJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgcm93RGVsZXRlQnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSB0YWJsZUVkaXRCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIHRhYmxlRGVsZXRlQnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSByb3dFeHBhbmRCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIHJvd0NvbGxhcHNlQnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSBpc05lc3RlZFRhYmxlSGVhZGVyTmVlZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWRkQnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSBkZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9XHJcbiAgICBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24uQVNDRU5ESU5HO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRTb3J0ZWRDb2x1bW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaXNDbGVhclNvcnROZWVkZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnMhOiBDaGlwT3B0aW9uW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zITogQ2hlY2tib3hPcHRpb25bXTtcclxuICBASW5wdXQoKSBhcHBsaWVkRmlsdGVyT3B0aW9ucyE6IENoaXBPcHRpb25bXTtcclxuICBASW5wdXQoKSBzZWFyY2hUeXBlOiBTZWFyY2hUeXBlID0gU2VhcmNoVHlwZS5PTl9DTElDSztcclxuICBASW5wdXQoKSBjbGFzc05hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2VhcmNoU3VwcG9ydE1lc3NhZ2UgITpzdHJpbmc7XHJcbiAgQElucHV0KCkgaW5idWlsdFNvcnRpbmdOZWVkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0NlbGxUZXh0T3ZlcmZsb3dFbGxpcHNpcyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzVGFibGVIZWFkZXJOZWVkZWQgPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dUb0VkaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93VG9EZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93c1RvRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZUNvbHVtblNjaGVtYVtdPigpO1xyXG4gIEBPdXRwdXQoKSByb3dMaW5rID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhZGRSb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNvbHVtbkRhdGFPblJvd0xpbmtDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbWVudUFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RBY3Rpb25NZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwT3B0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVGaWx0ZXJlZE9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyZWRPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJzQW5kT3B0aW9uc1tdPigpO1xyXG4gIEBPdXRwdXQoKSBzZWFyY2hlZFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93c0luZm8gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQ29sdW1uU2NoZW1hW10+KCk7XHJcbiAgQE91dHB1dCgpIHJvd0V4cGFuc2lvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydCE6IE1hdFNvcnQ7XHJcbiAgZGlzcGxheWVkQ29sdW1ucyE6IHN0cmluZ1tdO1xyXG4gIG5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1ucyE6IHN0cmluZ1tdO1xyXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZGF0YVNvdXJjZSE6IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+O1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgbmVzdGVkVGFibGVEYXRhU291cmNlITogTWF0VGFibGVEYXRhU291cmNlPGFueT47XHJcbiAgc2VsZWN0ZWRSb3dzID0gbmV3IFNlbGVjdGlvbk1vZGVsPFRhYmxlQ29sdW1uU2NoZW1hPih0cnVlLCBbXSk7XHJcbiAgcGFnZUxpbWl0ITogbnVtYmVyO1xyXG4gIHBhZ2VPZmZzZXQhOiBudW1iZXI7XHJcbiAgY29sdW1uVHlwZSA9IFRhYmxlQ29sdW1uVHlwZTtcclxuICBpc1NlYXJjaEFjdGl2ZSA9IGZhbHNlO1xyXG4gIGNsZWFyQWxsID0gdGhpcy5jb25zdGFudHM/LmRhdGFUYWJsZT8ubGFiZWw/LmNsZWFyQWxsO1xyXG4gIG5vUmVjb3JkRm91bmQgPSB0aGlzLmNvbnN0YW50cz8uZGF0YVRhYmxlPy5tZXNzYWdlPy5ub1JlY29yZEZvdW5kO1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBzaG93TmVzdGVkVGFibGVQYWdpbmF0aW9uSW5mbyE6IHN0cmluZztcclxuICBwcml2YXRlIF9zZWFyY2hSZXN1bHRNZXNzYWdlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlYXJjaFJlc3VsdE1lc3NhZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc2VhcmNoUmVzdWx0TWVzc2FnZSA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgc2VhcmNoUmVzdWx0TWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFJlc3VsdE1lc3NhZ2U7XHJcbiAgfVxyXG4gIHNhZmVUeXBlOiBTYWZlVHlwZSA9IFNhZmVUeXBlLkhUTUw7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2U6IEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyU2VydmljZVxyXG4gICAgICAuZ2V0QnJlYWtwb2ludCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSByZXN1bHQubWF0Y2hlcztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgZGF0YSB0YWJsZSBjb21wb25lbnQgYW5kIHNldHMgdGhlIHRhYmxlIGFjdGlvbiBidXR0b25zLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuY29sdW1uU2NoZW1hPy5tYXAoKGMpID0+IGM/LmNvbHVtbkRlZik7XHJcbiAgICBjb25zdCB0YWJsZUFjdGlvbkJ1dHRvbnM6IEljb25CdXR0b25bXSA9IHRoaXMuY29uc3RhbnRzPy5kYXRhVGFibGU/LmJ1dHRvbnM7XHJcbiAgICB0aGlzLnJvd0VkaXRCdXR0b24gPSB0aGlzLnJvd0VkaXRCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzNdO1xyXG4gICAgdGhpcy5yb3dEZWxldGVCdXR0b24gPSB0aGlzLnJvd0RlbGV0ZUJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbNF07XHJcbiAgICB0aGlzLmFkZEJ1dHRvbiA9IHRoaXMuYWRkQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1syXTtcclxuICAgIHRoaXMudGFibGVFZGl0QnV0dG9uID0gdGhpcy50YWJsZUVkaXRCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzBdO1xyXG4gICAgdGhpcy50YWJsZUVkaXRCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy50YWJsZURlbGV0ZUJ1dHRvbiA9IHRoaXMudGFibGVEZWxldGVCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzFdO1xyXG4gICAgdGhpcy5yb3dFeHBhbmRCdXR0b24gPSB0aGlzLnJvd0V4cGFuZEJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbNV07XHJcbiAgICB0aGlzLnJvd0NvbGxhcHNlQnV0dG9uID1cclxuICAgICAgdGhpcy5yb3dDb2xsYXBzZUJ1dHRvbiA/PyB0aGlzLnJvd0NvbGxhcHNlQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1s2XTtcclxuICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd3MuY2hhbmdlZFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50YWJsZUVkaXRCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlc3VsdD8uc291cmNlPy5zZWxlY3RlZD8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgcmVzdWx0Py5zb3VyY2U/LnNlbGVjdGVkPy5sZW5ndGggPT09IDEgJiZcclxuICAgICAgICAgICFyZXN1bHQ/LnNvdXJjZT8uc2VsZWN0ZWQ/LlswXT8uY2FuRGVsZXRlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdD8uc291cmNlPy5zZWxlY3RlZD8ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZURlbGV0ZUJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy50YWJsZUVkaXRCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMudGFibGVEYXRhKTtcclxuICAgIHRoaXMudGFibGVEYXRhQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHNvcnQgZmVhdHVyZSBvZiBkYXRhU291cmNlXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmluYnVpbHRTb3J0aW5nTmVlZGVkKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLnNvcnQuZGlzYWJsZUNsZWFyID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRhdGFTb3VyY2Ugd2hlbmV2ZXIgdGhlIHRhYmxlIGRhdGEgY2hhbmdlcy5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdGFibGVEYXRhQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnRhYmxlRGF0YTtcclxuICAgICAgaWYgKHRoaXMuaW5idWlsdFNvcnRpbmdOZWVkZWQpIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5jbGVhcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlLmRhdGEgPSB0aGlzLm5lc3RlZFRhYmxlRGF0YTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAvKipcclxuICAgKiBTb3J0VGFibGVEYXRhIG1ldGhvZCBlbWl0cyB0aGUgY2xpY2tlZCB0YWJsZSBjb2x1bW4gbmFtZSBhbmQgc29ydGluZyBkaXJlY3Rpb25cclxuICAgKiBAcGFyYW0ge1NvcnR9IHNvcnRcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc29ydFRhYmxlRGF0YShzb3J0OiBTb3J0KTogdm9pZCB7XHJcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGVkaXQgYWN0aW9ucyBtZXRob2QgZW1pdHMgdGhlIGNsaWNrZWQgcm93IGRhdGFcclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uUm93QWN0aW9uQ2xpY2socm93OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0QWN0aW9uTWVudS5lbWl0KHJvdyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE1lbnUgaXRlbSBhY3Rpb24gbWV0aG9kIGVtaXRzIHRoZSBjbGlja2VkIG1lbnUgb3B0aW9uc1xyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgbWVudUl0ZW1BY3Rpb24ocm93OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubWVudUFjdGlvbkNsaWNrLmVtaXQocm93KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT25TZWxlY3RDbGljayBtZXRob2QgZW1pdHMgdGhlIHJvd1NlbGVjdGVkIGV2ZW50IHdpdGggc2VsZWN0ZWQgcm93IGRhdGEuXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNoZWNrZWRcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvblNlbGVjdENsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93cy50b2dnbGUocm93KTtcclxuICAgIHJvdy5jaGVja2VkID0gIXJvdy5jaGVja2VkO1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KHJvdyk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93c0luZm8uZW1pdCh0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbkVkaXRDbGljayBtZXRob2QgZW1pdHMgdGhlIHNlbGVjdGVkUm93VG9FZGl0IGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIHJvdyBkYXRhLlxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb25FZGl0Q2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dUb0VkaXQuZW1pdChyb3cpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25EZWxldGVDbGljayBtZXRob2QgZW1pdHMgdGhlIHNlbGVjdGVkUm93VG9EZWxldGUgZXZlbnQgd2l0aCB0aGUgc2VsZWN0ZWQgcm93IGRhdGEuXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvbkRlbGV0ZUNsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93VG9EZWxldGUuZW1pdChyb3cpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpPbkxpbmtDbGljayBtZXRob2QgZW1pdHMgdGhlIGV2ZW50IHdpdGggcm93IGFuZCBjb2x1bW4uXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAcGFyYW0ge1RhYmxlQ29sdW1uU2NoZW1hfSBbY29sdW1uXVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uTGlua0NsaWNrKHJvdzogYW55LCBjb2x1bW4/OiBUYWJsZUNvbHVtblNjaGVtYSk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3dMaW5rLmVtaXQocm93KTtcclxuICAgIHRoaXMuY29sdW1uRGF0YU9uUm93TGlua0NsaWNrLmVtaXQoeyByb3csIGNvbHVtbiB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uVGFibGVFZGl0Q2xpY2sgbWV0aG9kIGVtaXRzIGV2ZW50IHdpdGggc2VsZWN0ZWQgcm93cyBkYXRhIHdoZW4gZWRpdCBidXR0b24gY2xpY2tlZC5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25UYWJsZUVkaXRDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dUb0VkaXQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbkRlbGV0ZVRhYmxlQ2xpY2sgbWV0aG9kIGVtaXRzIGV2ZW50IHdpdGggc2VsZWN0ZWQgcm93IGRhdGEgd2hlbiBkZWxldGUgYnV0dG9uIGNsaWNrZWQuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRGVsZXRlVGFibGVDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzVG9EZWxldGUuZW1pdCh0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbkFkZENsaWNrIG1ldGhvZCBlbWl0cyB0aGUgYWRkIGV2ZW50IHdoZW4gYWRkIGJ1dHRvbiBjbGlja2VkLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBvbkFkZENsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRSb3cuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25UYWJsZVNlYXJjaENsaWNrIG1ldGhvZCB0b2dnbGVzIHRoZSBpc1NlYXJjaEFjdGl2ZSBzdGF0ZSB3aGVuIHRoZSBzZWFyY2ggaWNvbiBpcyBjbGlja2VkIGZvciB0aGUgbW9iaWxlIHZpZXcuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVGFibGVTZWFyY2hDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUgPSAhdGhpcy5pc1NlYXJjaEFjdGl2ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdGVkRmlsdGVySW5mbyBtZXRob2QgZW1pdHMgdGhlIHNlbGVjdGVkRmlsdGVyIGV2ZW50IHdpdGggc2VsZWN0ZWQgZmlsdGVyIGluZm9ybWF0aW9uLlxyXG4gICAqIEBwYXJhbSB7Q2hpcE9wdGlvbn0gb3B0aW9uXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNlbGVjdGVkRmlsdGVyVHlwZUluZm8ob3B0aW9uOiBDaGlwT3B0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsdGVyLmVtaXQob3B0aW9uKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSByb3dFeHBhbnNpb25DbGljayBldmVudCB3aXRoIHRoZSBzZWxlY3RlZCByb3cgZGF0YSB3aGVuIHRoZSByb3cgaXMgZXhwYW5kZWQuXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvblRhYmxlUm93RXhwYW5zaW9uQ2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlLmRhdGEgPSBbXTtcclxuICAgIGlmICh0aGlzLmV4cGFuZGVkRWxlbWVudCA9PT0gcm93KSB0aGlzLnJvd0V4cGFuc2lvbkNsaWNrLmVtaXQocm93KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uU2VsZWN0ZWRGaWx0ZXJPcHRpb25zIG1ldGhvZCBlbWl0cyB0aGUgZmlsdGVyZWRPcHRpb25zIGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIG9wdGlvbnMgYW5kIGFkZHMgXCJDbGVhciBhbGxcIiBvcHRpb24gdG8gY2xlYXIgdGhlIGFsbCBzZWxlY3Rpb25zLlxyXG4gICAqIEBwYXJhbSB7Q2hlY2tib3hPcHRpb25bXX0gb3B0aW9uc1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBvblNlbGVjdGVkRmlsdGVyT3B0aW9ucyhzZWxlY3RlZE9wdGlvbnM6IEZpbHRlcnNBbmRPcHRpb25zW10pOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLmVtaXQoc2VsZWN0ZWRPcHRpb25zKTtcclxuICAgIHRoaXMuYXBwbGllZEZpbHRlck9wdGlvbnMgPSBbXTtcclxuICAgIHNlbGVjdGVkT3B0aW9ucz8uZm9yRWFjaCgob3B0aW9ucykgPT4ge1xyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBuby11bnVzZWQtdmFyc1xyXG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zKSkge1xyXG4gICAgICAgIHZhbHVlPy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICAgIGlmIChvcHRpb24uY2hlY2tlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJPcHRpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBvcHRpb24uaWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogb3B0aW9uLm5hbWUgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgICAgIGNoZWNrZWQ6IG9wdGlvbi5jaGVja2VkLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBvcHRpb24uZGlzYWJsZWQsXHJcbiAgICAgICAgICAgICAgY2hpcFR5cGU6IENoaXBzVHlwZS5UT0dHTEUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYXBwbGllZEZpbHRlck9wdGlvbnMucHVzaCh7XHJcbiAgICAgIGlkOiB0aGlzLmNsZWFyQWxsLFxyXG4gICAgICBuYW1lOiB0aGlzLmNsZWFyQWxsLFxyXG4gICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICBjaGlwVHlwZTogQ2hpcHNUeXBlLlNUQVRJQyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPblJlbW92YWxPZkZpbHRlcmVkT3B0aW9uIG1ldGhvZCBlbWl0cyB0aGUgcmVtb3ZlRmlsdGVyZWRPcHRpb24gZXZlbnQgd2l0aCByZW1vdmVkIG9wdGlvbi5cclxuICAgKiBAcGFyYW0ge0NoaXBPcHRpb259IG9wdGlvblxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBvblJlbW92YWxPZkZpbHRlcmVkT3B0aW9uKG9wdGlvbnM6IEZpbHRlcnNBbmRPcHRpb25zW10pOiB2b2lkIHtcclxuICAgIHRoaXMucmVtb3ZlRmlsdGVyZWRPcHRpb24uZW1pdChvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlYXJjaFZhbHVlIG1ldGhvZCBlbWl0cyB0aGUgc2VhcmNoZWQgdmFsdWUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNlYXJjaFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoZWRWYWx1ZS5lbWl0KHZhbHVlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgcGFnaW5hdGlvbiBmb3IgZXZlcnkgcGFnZS5cclxuICAgKiBAcGFyYW0ge1BhZ2VFdmVudH0gZXZlbnRcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgaGFuZGxlUGFnaW5hdGlvbihldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIElzQWxsUm93U2VsZWN0ZWQgbWV0aG9kIHJldHVybnMgdGhlIGJvb2xlYW4gdmFsdWUgYnkgY2hlY2tpbmcgc2VsZWN0ZWRSb3dzIGFuZCB0b3RhbFJvd3MgbGVuZ3RoLlxyXG4gICAqIEByZXR1cm4geyp9ICB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgaXNBbGxSb3dzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVBbGxSb3dzU2VsZWN0aW9uIG1ldGhvZCBjbGVhcnMgc2VsZWN0ZWRSb3dzIHdoZW4gYWxsIHJvd3MgYXJlIHNlbGVjdGVkIGVsc2Ugc2VsZWN0cyB0aGUgYWxsIHJvd3MuXHJcbiAgICogQHJldHVybiB7Kn0gIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICB0b2dnbGVBbGxSb3dzU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNBbGxSb3dzU2VsZWN0ZWQoKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5jbGVhcigpO1xyXG4gICAgfSBlbHNlIHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdCguLi50aGlzLmRhdGFTb3VyY2UuZGF0YSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93c0luZm8uZW1pdCh0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGxvd3MgQW5ndWxhciB0byBkZXRlY3QgdGhlIHNwZWNpZmljIHRhYmxlIHJvdyB0aGF0IG5lZWRzIHRvIGNoYW5nZSBvciBiZSBhZGRlZCBieSB0cmFja2luZyByb3cgdW5pcXVlIElkLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEBwYXJhbSB7VGFibGVDb2x1bW5TY2hlbWF9IGNvbHVtblxyXG4gICAqIEByZXR1cm4geyp9ICB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtblNjaGVtYSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gY29sdW1uLmlkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB0YWJsZSByb3cgbGVmdCBib3JkZXIgYXMgcGVyIHRoZSBsZWdlbmQgY29sb3JcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sb3JcclxuICAgKiBAcmV0dXJuIHsqfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldFJvd0JvcmRlckxlZnRDb2xvcihjb2xvcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJvcmRlckxlZnQ6ICc1cHggc29saWQgJyArIGNvbG9yLFxyXG4gICAgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlIGQtZmxleCBmbGV4LWNvbHVtbiBjb250YWluZXItZmx1aWRcIj5cclxuICA8Y2FwdGlvbiBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlLS1jYXB0aW9uXCIgKm5nSWY9XCJjYXB0aW9uXCI+XHJcbiAgICB7e1xyXG4gICAgICBjYXB0aW9uXHJcbiAgICB9fVxyXG4gIDwvY2FwdGlvbj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInRhYmxlQWN0aW9uc1wiXHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19hY3Rpb25zIGQtZmxleCByb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtbGctYmFzZWxpbmUgcC1zbS0wXCJcclxuICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdpZWVlc2EtZGF0YS10YWJsZV9fbW9iaWxlLXZpZXctYWN0aW9ucycgOiAnJ1wiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAqbmdJZj1cIiFpc01vYmlsZVZpZXdcIlxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWx0ZXJUZW1wbGF0ZVJlZlwiXHJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGRhdGE6ICdjb2wtbWQtNyBjb2wtbGctNicgfVwiXHJcbiAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtbGctNCBnYXAtbWQtMyBnYXAtc20tMyBnYXAtMyBjb2wtbWQtNSBjb2wtbGctNiBqdXN0aWZ5LWNvbnRlbnQtZW5kIHBzLTBcIlxyXG4gICAgICBbbmdDbGFzc109XCIhdGFibGVBY3Rpb25zPy5pc0ZpbHRlck5lZWRlZCA/ICdjb2wtbWQtMTIgY29sLWxnLTEyJyA6ICcnXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVZpZXdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWVlZXNhU2VhcmNoXCI+IDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc0FkZE5lZWRlZFwiXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwiYWRkQnV0dG9uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9uQWRkQ2xpY2soKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICBhZGRCdXR0b24/LmRpc2FibGVkID8gJ2llZWVzYS1kYXRhLXRhYmxlX19hY3Rpb25zLS1kaXNhYmxlZCcgOiAnJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID48L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc0VkaXROZWVkZWRcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cInRhYmxlRWRpdEJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvblRhYmxlRWRpdENsaWNrKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dzLnNlbGVjdGVkLmxlbmd0aCAhPT0gMVxyXG4gICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucy0tZGlzYWJsZWQnXHJcbiAgICAgICAgICAgIDogJydcclxuICAgICAgICBcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNEZWxldGVOZWVkZWRcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cInRhYmxlRGVsZXRlQnV0dG9uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9uRGVsZXRlVGFibGVDbGljaygpXCJcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dzLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCB8fCB0YWJsZURlbGV0ZUJ1dHRvbi5kaXNhYmxlZFxyXG4gICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucy0tZGlzYWJsZWQnXHJcbiAgICAgICAgICAgIDogJydcclxuICAgICAgICBcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzU2VhcmNoTmVlZGVkXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cz8uZGF0YVRhYmxlPy5hcmlhTGFiZWw/LnNlYXJjaFwiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggZC1zbS1mbGV4IGQtbWQtbm9uZSBkLWxnLW5vbmUgZC14bC1ub25lIGllZWVzYS1kYXRhLXRhYmxlX19hY3Rpb25zLS1zZWFyY2gtZ3JvdXAtaWNvblwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uVGFibGVTZWFyY2hDbGljaygpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzc1wiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8bmctY29udGFpbmVyXHJcbiAgICAqbmdJZj1cImlzTW9iaWxlVmlld1wiXHJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWx0ZXJUZW1wbGF0ZVJlZlwiXHJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXRhOiAnaWVlZXNhLWRhdGEtdGFibGVfX2ZpbHRlcicgfVwiXHJcbiAgPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjZmlsdGVyVGVtcGxhdGVSZWYgbGV0LWNsYXNzTmFtZT1cImRhdGFcIj5cclxuICAgIDxpZWVlc2EtZmlsdGVyXHJcbiAgICAgIGNsYXNzPVwie3sgY2xhc3NOYW1lIH19IHAtMFwiXHJcbiAgICAgIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxyXG4gICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNGaWx0ZXJOZWVkZWRcIlxyXG4gICAgICBbc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXT1cInNlbGVjdGVkRmlsdGVyT3B0aW9uc1wiXHJcbiAgICAgIFthcHBsaWVkRmlsdGVyT3B0aW9uc109XCJhcHBsaWVkRmlsdGVyT3B0aW9uc1wiXHJcbiAgICAgIChzZWxlY3RlZEZpbHRlcik9XCJzZWxlY3RlZEZpbHRlclR5cGVJbmZvKCRldmVudClcIlxyXG4gICAgICAocmVtb3ZlRmlsdGVyZWRPcHRpb24pPVwib25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbigkZXZlbnQpXCJcclxuICAgICAgKGZpbHRlcmVkT3B0aW9ucyk9XCJvblNlbGVjdGVkRmlsdGVyT3B0aW9ucygkZXZlbnQpXCJcclxuICAgID48L2llZWVzYS1maWx0ZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2JpbGVWaWV3ICYmIGlzU2VhcmNoQWN0aXZlXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWVlZXNhU2VhcmNoXCI+IDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjaWVlZXNhU2VhcmNoPlxyXG4gICAgPGllZWVzYS1zZWFyY2hcclxuICAgICAgW3BsYWNlaG9sZGVyTGFiZWxdPVwic2VhcmNoUGxhY2VIb2xkZXJUZXh0XCJcclxuICAgICAgW3NlYXJjaFR5cGVdPVwic2VhcmNoVHlwZVwiXHJcbiAgICAgIChzZWFyY2hWYWx1ZSk9XCJzZWFyY2hWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzU2VhcmNoTmVlZGVkXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fc2VhcmNoLXdyYXBwZXIgbXQtc20tMiBtZC1zbS0yIG10LTIgbWQtMlwiXHJcbiAgICAgIFtzdXBwb3J0TWVzc2FnZV09XCJzZWFyY2hTdXBwb3J0TWVzc2FnZVwiXHJcbiAgICA+PC9pZWVlc2Etc2VhcmNoPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPHBcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX3NlYXJjaF9yZXN1bHRfbGFiZWxcIlxyXG4gICAgKm5nSWY9XCJzZWFyY2hSZXN1bHRNZXNzYWdlXCJcclxuICAgIFtpbm5lckhUTUxdPVwic2VhcmNoUmVzdWx0TWVzc2FnZSB8IHNhZmUgOiBzYWZlVHlwZVwiXHJcbiAgPjwvcD5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jb250ZW50XCJcclxuICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICB0YWJsZURhdGFJbmZvICYmIHRhYmxlRGF0YUluZm8ubGVuZ3RoID09PSAwXHJcbiAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX25vLXRhYmxlLWRhdGEnXHJcbiAgICAgICAgOiAnJ1xyXG4gICAgXCJcclxuICA+XHJcbiAgICA8dGFibGVcclxuICAgICAgbWF0LXRhYmxlXHJcbiAgICAgIFtuZ0NsYXNzXT1cImNsYXNzTmFtZVwiXHJcbiAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxyXG4gICAgICBtYXRTb3J0XHJcbiAgICAgIFttYXRTb3J0RGlzYWJsZUNsZWFyXT1cImlzQ2xlYXJTb3J0TmVlZGVkXCJcclxuICAgICAgW21hdFNvcnRBY3RpdmVdPVwiZGVmYXVsdFNvcnRlZENvbHVtblwiXHJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cImRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uXCJcclxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwic29ydFRhYmxlRGF0YSgkZXZlbnQpXCJcclxuICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUlkXCJcclxuICAgICAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2x1bW4gb2YgY29sdW1uU2NoZW1hSW5mbztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZDtcclxuICAgICAgICAgIGxldCBpZCA9IGluZGV4XHJcbiAgICAgICAgXCJcclxuICAgICAgICBtYXRDb2x1bW5EZWY9XCJ7eyBjb2x1bW4/LmNvbHVtbkRlZiB9fVwiXHJcbiAgICAgICAgW3N0aWNreV09XCJjb2x1bW4/LmlzU3RpY2t5Q29sdW1uXCJcclxuICAgICAgICBbc3RpY2t5RW5kXT1cImNvbHVtbj8uaXNTdGlja3lFbmRDb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgIG1hdC1zb3J0LWhlYWRlclxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2x1bW4/LmlzU29ydGFibGVDb2x1bW5cIlxyXG4gICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbj8uY29sdW1uRGVmXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGUtaGVhZGVyIGllZWVzYS1ib2R5LXNtLWJvbGQtMTRcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgIGNvbHVtbj8uY29sdW1uRGVmID09PSBjb2x1bW5UeXBlPy5TRUxFQ1RcclxuICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sdW1uPy5oZWFkaW5nXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5TRUxFQ1RcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlQWxsUm93c1NlbGVjdGlvbigpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRSb3dzPy5oYXNWYWx1ZSgpICYmIGlzQWxsUm93c1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGVkUm93cz8uaGFzVmFsdWUoKSAmJiAhaXNBbGxSb3dzU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5kYXRhVGFibGU/LmFyaWFMYWJlbD8uc2VsZWN0QWxsXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICA8c3Bhbj57eyBjb2x1bW4uaGVhZGluZyB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBtYXQtY2VsbFxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50IGllZWVzYS10aXRsZS1zbS0xNlwiXHJcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgIGNvbHVtbj8uY29sdW1uRGVmID09PSBjb2x1bW5UeXBlPy5TRUxFQ1RcclxuICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICB0YWJsZURhdGE7XHJcbiAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4sXHJcbiAgICAgICAgICAgICAgICByb3c6IHJvdyxcclxuICAgICAgICAgICAgICAgIHRhYmxlUm93QWN0aW9uczogdGFibGVSb3dBY3Rpb25zXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkRGV0YWlsXCI+XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBtYXQtY2VsbFxyXG4gICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcclxuICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiZGlzcGxheWVkQ29sdW1ucz8ubGVuZ3RoXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWV4cGFuZGVkLXJvd1wiXHJcbiAgICAgICAgICAgIFtAZGV0YWlsRXhwYW5kXT1cInJvdyA9PT0gZXhwYW5kZWRFbGVtZW50ID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1uZXN0ZWQtZGF0YS10YWJsZVwiPlxyXG4gICAgICAgICAgICAgIDx0YWJsZVxyXG4gICAgICAgICAgICAgICAgI25lc3RlZFRhYmxlXHJcbiAgICAgICAgICAgICAgICBtYXQtdGFibGVcclxuICAgICAgICAgICAgICAgIFt0cmFja0J5XT1cInRyYWNrQnlJZFwiXHJcbiAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJuZXN0ZWRUYWJsZURhdGFTb3VyY2VcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbiBvZiBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYUluZm87XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpZCA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdENvbHVtbkRlZj1cInt7IGNvbHVtbj8uY29sdW1uRGVmIH19XCJcclxuICAgICAgICAgICAgICAgICAgW3N0aWNreV09XCJjb2x1bW4/LmlzU3RpY2t5Q29sdW1uXCJcclxuICAgICAgICAgICAgICAgICAgW3N0aWNreUVuZF09XCJjb2x1bW4/LmlzU3RpY2t5RW5kQ29sdW1uXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0LWhlYWRlci1jZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbj8uY29sdW1uRGVmXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlLWhlYWRlciBpZWVlc2EtYm9keS1zbS1ib2xkLTE0XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbj8uY29sdW1uRGVmID09PSBjb2x1bW5UeXBlPy5TRUxFQ1RcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2NvbHVtbi1zZWxlY3QnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb2x1bW4/LmhlYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sdW1uLmhlYWRpbmcgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50IGllZWVzYS10aXRsZS1zbS0xNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbj8uY29sdW1uRGVmID09PSBjb2x1bW5UeXBlPy5TRUxFQ1RcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2NvbHVtbi1zZWxlY3QnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVEYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVSb3dBY3Rpb25zOiBuZXN0ZWRUYWJsZVJvd0FjdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc05lc3RlZFRhYmxlSGVhZGVyTmVlZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9faGVhZGVyLXJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm1hdEhlYWRlclJvd0RlZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbmVzdGVkVGFibGVEaXNwbGF5ZWRDb2x1bW5zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3RpY2t5OiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICAgICAgbWF0LXJvd1xyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1uZXN0ZWQtZGF0YS10YWJsZV9fY2VsbC1yb3dcIlxyXG4gICAgICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogbmVzdGVkVGFibGVEaXNwbGF5ZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcm93Py5sZWdlbmRDb2xvclxyXG4gICAgICAgICAgICAgICAgICAgICAgPyBnZXRSb3dCb3JkZXJMZWZ0Q29sb3Iocm93Py5sZWdlbmRDb2xvcilcclxuICAgICAgICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93ID09PSBleHBhbmRlZEVsZW1lbnRcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgaWVlZXNhLWV4cGFuZGVkLXJvd19fZm9vdGVyXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIG5lc3RlZFBhZ2luYXRvckNvbmZpZy50b3RhbFJlY29yZHMgPlxyXG4gICAgICAgICAgICAgICAgICAgIG5lc3RlZFBhZ2luYXRvckNvbmZpZy5yZWNvcmRzUGVyUGFnZSAmJlxyXG4gICAgICAgICAgICAgICAgICBuZXN0ZWRQYWdpbmF0b3JDb25maWcucmVjb3Jkc1BlclBhZ2UgPiAwXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25MaW5rQ2xpY2socm93KVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLXRpdGxlLXNtLTE2IGllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtbGlua1wiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5kYXRhVGFibGU/LmFyaWFMYWJlbD8ubGlua1wiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHZpZXdBbGwgPz8gXCJcIiB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5lc3RlZC1lbGVtZW50LWRldGFpbF9fZm9vdGVyLS1kZXRhaWxcIj57e1xyXG4gICAgICAgICAgICAgICAgICBzaG93TmVzdGVkVGFibGVQYWdpbmF0aW9uSW5mb1xyXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RhYmxlSGVhZGVyTmVlZGVkXCI+XHJcbiAgICAgICAgPHRyXHJcbiAgICAgICAgICBtYXQtaGVhZGVyLXJvd1xyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9faGVhZGVyLXJvd1wiXHJcbiAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiBmYWxzZVwiXHJcbiAgICAgICAgPjwvdHI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8dHJcclxuICAgICAgICBtYXQtcm93XHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1yb3dcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIlxyXG4gICAgICAgICAgcm93Py5sZWdlbmRDb2xvciA/IGdldFJvd0JvcmRlckxlZnRDb2xvcihyb3c/LmxlZ2VuZENvbG9yKSA6ICcnXHJcbiAgICAgICAgXCJcclxuICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiXHJcbiAgICAgID48L3RyPlxyXG4gICAgICA8dHJcclxuICAgICAgICBtYXQtcm93XHJcbiAgICAgICAgKm1hdFJvd0RlZj1cImxldCBkZXRhaWxzOyBjb2x1bW5zOiBbJ2V4cGFuZGVkRGV0YWlsJ11cIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLXJvdy1leHBhbmRlZC10YWJsZS1kZXRhaWxcIlxyXG4gICAgICA+PC90cj5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48cFxyXG4gIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX21lc3NhZ2UgaWVlZXNhLXRpdGxlLWxnLWJvbGQtMjQgdGV4dC1jZW50ZXIgcC01XCJcclxuICAqbmdJZj1cInRhYmxlRGF0YUluZm8gJiYgdGFibGVEYXRhSW5mby5sZW5ndGggPT09IDBcIlxyXG4+XHJcbiAge3sgbm9SZWNvcmRGb3VuZCB9fVxyXG48L3A+XHJcbjxkaXYgY2xhc3M9XCJyb3cgaWVlZXNhLWRhdGEtdGFibGVfX3BhZ2luYXRpb24tY29udGFpbmVyXCI+XHJcbiAgPGllZWVzYS1sZWdlbmRcclxuICAgIGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC01IGQtZmxleCBhbGlnbi1pdGVtcy1lbmQgcHgtNFwiXHJcbiAgICAqbmdJZj1cImxlZ2VuZHM/Lmxlbmd0aFwiXHJcbiAgICBbbmdDbGFzc109XCIhdGFibGVBY3Rpb25zPy5pc1BhZ2luYXRpb25OZWVkZWQgPyAnY29sLW1kLTEyJyA6ICcnXCJcclxuICAgIFtsZWdlbmRzXT1cImxlZ2VuZHNcIlxyXG4gICAgW2lzU29ydGluZ109XCJ0cnVlXCJcclxuICA+PC9pZWVlc2EtbGVnZW5kPlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc1BhZ2luYXRpb25OZWVkZWRcIlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fcGFnaW5hdGlvbiBkLWZsZXggZmxleC1yb3ctcmV2ZXJzZSBjb2wtc20tMTIgY29sLW1kLTdcIlxyXG4gICAgW25nQ2xhc3NdPVwiIWxlZ2VuZHM/Lmxlbmd0aCA/ICdjb2wtbWQtMTInIDogJydcIlxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5wYWdpbmF0aW9uXCJcclxuICA+XHJcbiAgICA8bWF0LXBhZ2luYXRvclxyXG4gICAgICBbcGFnZVNpemVdPVwicGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZVwiXHJcbiAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplT3B0aW9uc1wiXHJcbiAgICAgIChwYWdlKT1cImhhbmRsZVBhZ2luYXRpb24oJGV2ZW50KVwiXHJcbiAgICAgIFtsZW5ndGhdPVwicGFnaW5hdG9yQ29uZmlnPy50b3RhbFJlY29yZHNcIlxyXG4gICAgPjwvbWF0LXBhZ2luYXRvcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZVxyXG4gICN0YWJsZURhdGFcclxuICBsZXQtY29sdW1uPVwiY29sdW1uXCJcclxuICBsZXQtcm93PVwicm93XCJcclxuICBsZXQtdGFibGVSb3dBY3Rpb25zPVwidGFibGVSb3dBY3Rpb25zXCJcclxuPlxyXG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbj8uY29sdW1uVHlwZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJpc0NlbGxUZXh0T3ZlcmZsb3dFbGxpcHNpczsgdGhlbiBlbGxpcHNpc0NlbGw7IGVsc2UgdGV4dFdyYXBDZWxsXCJcclxuICAgICAgPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0V3JhcENlbGw+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgIGNsYXNzPVwibS0wXCJcclxuICAgICAgICAgICpuZ0lmPVwiY29sdW1uPy5pc0hUTUxDZWxsRGF0YVwiXHJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbHVtbj8uY2VsbERhdGEocm93KSB8IHNhZmUgOiBzYWZlVHlwZVwiXHJcbiAgICAgICAgPjwvcD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbHVtbj8uaXNIVE1MQ2VsbERhdGFcIj5cclxuICAgICAgICAgIHt7IGNvbHVtbj8uY2VsbERhdGEocm93KSB9fTwvbmctY29udGFpbmVyXHJcbiAgICAgICAgPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2VsbGlwc2lzQ2VsbD5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgaWVlZXNhVGV4dFRydW5jYXRlZFxyXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29sdW1uPy5jZWxsRGF0YShyb3cpXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC0tZWxsaXBzaXNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGNvbHVtbj8uY2VsbERhdGEocm93KSB9fVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uTElOS1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgIChjbGljayk9XCJvbkxpbmtDbGljayhyb3csIGNvbHVtbilcIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLXRpdGxlLXNtLTE2IGllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtbGlua1wiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb2x1bW4/LmNlbGxEYXRhKHJvdylcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cInJvdz8udG9vbFRpcFRleHRcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgY29sdW1uPy5jZWxsRGF0YShyb3cpIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uPy5pc0NvbnRlbnRVbmRlckxpbmtcIj5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYm9keS1zbS0xNCBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LXVuZGVyLWxpbmtcIlxyXG4gICAgICAgICAgKm5nSWY9XCJjb2x1bW4/LmlzSFRNTENlbGxEYXRhXCJcclxuICAgICAgICAgIFtpbm5lckhUTUxdPVwicm93Py5jb250ZW50VW5kZXJMaW5rIHwgc2FmZSA6IHNhZmVUeXBlXCJcclxuICAgICAgICA+PC9wPlxyXG4gICAgICAgIDxwXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1ib2R5LXNtLTE0IGllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtdW5kZXItbGlua1wiXHJcbiAgICAgICAgICAqbmdJZj1cIiFjb2x1bW4/LmlzSFRNTENlbGxEYXRhXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyByb3c/LmNvbnRlbnRVbmRlckxpbmsgfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5ORVNURURfVEFCTEVcIj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAqbmdJZj1cInJvdz8uaGFzQ2hpbGRyZW5cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwiXHJcbiAgICAgICAgICBleHBhbmRlZEVsZW1lbnQgPSBleHBhbmRlZEVsZW1lbnQgPT09IHJvdyA/IG51bGwgOiByb3c7XHJcbiAgICAgICAgICBvblRhYmxlUm93RXhwYW5zaW9uQ2xpY2socm93KVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwiXHJcbiAgICAgICAgICBleHBhbmRlZEVsZW1lbnQgPT09IHJvdyA/IHJvd0V4cGFuZEJ1dHRvbiA6IHJvd0NvbGxhcHNlQnV0dG9uXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICA8L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uU0VMRUNUXCI+XHJcbiAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICBjbGFzcz1cImNvbC0yXCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IG9uU2VsZWN0Q2xpY2socm93KSA6IG51bGxcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkUm93cy5pc1NlbGVjdGVkKHJvdylcIlxyXG4gICAgICAgIFthcmlhLWxhYmVsXT1cImNvbnN0YW50cz8uZGF0YVRhYmxlPy5hcmlhTGFiZWw/LnNlbGVjdFwiXHJcbiAgICAgID5cclxuICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGU/LkVESVRcIj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cInJvd0VkaXRCdXR0b25cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwib25FZGl0Q2xpY2socm93KVwiXHJcbiAgICAgID48L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uREVMRVRFXCI+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJyb3dEZWxldGVCdXR0b25cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwib25EZWxldGVDbGljayhyb3cpXCJcclxuICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5BQ1RJT05TXCI+XHJcbiAgICAgIDxpZWVlc2EtbWVudVxyXG4gICAgICAgIFttZW51SXRlbXNdPVwidGFibGVSb3dBY3Rpb25zID8/IHJvdy5tZW51QWN0aW9uXCJcclxuICAgICAgICAoY2xpY2spPVwibWVudUl0ZW1BY3Rpb24ocm93KVwiXHJcbiAgICAgICAgKG1lbnVJdGVtQ2xpY2spPVwib25Sb3dBY3Rpb25DbGljaygkZXZlbnQpXCJcclxuICAgICAgPjwvaWVlZXNhLW1lbnU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|