@ieeesa-npm/presentation 0.22.9 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/data-table/data-table.component.mjs +3 -3
- package/esm2022/lib/components/rich-text-editor/rich-text-editor.component.mjs +76 -6
- package/fesm2022/ieeesa-npm-presentation.mjs +77 -7
- package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
- package/lib/components/rich-text-editor/rich-text-editor.component.d.ts +29 -2
- package/package.json +1 -1
|
@@ -560,7 +560,7 @@ export class DataTableComponent {
|
|
|
560
560
|
this.destroy$.unsubscribe();
|
|
561
561
|
}
|
|
562
562
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataTableComponent, deps: [{ token: i1.BreakpointObserverService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
563
|
-
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", hasNestedTable: "hasNestedTable", 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", isStickyHeaderNeeded: "isStickyHeaderNeeded", customStickyHeaderNeeded: "customStickyHeaderNeeded", headerElementClassName: "headerElementClassName", searchResultMessage: "searchResultMessage", rowMenuActionIcon: "rowMenuActionIcon", canDisableCheckbox: "canDisableCheckbox", isEllipsisRequiredForLink: "isEllipsisRequiredForLink" }, 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", tableColumnMenuActionClick: "tableColumnMenuActionClick", tableColumnMenuToggleButton: "tableColumnMenuToggleButton", rowSlideToggle: "rowSlideToggle" }, host: { listeners: { "document:scroll": "setStickyTableHeader()" } }, 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 *ngIf=\"tableColumnsHeaderText\"\r\n [innerHTML]=\"tableColumnsHeaderText | 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 #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 (menuItemClick)=\"tableColumnActionClick(column, $event)\"\r\n (menuToggleButtonElement)=\"tableColumnActionElement($event)\"\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-btn-label-lg-bold-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 [ngClass]=\"(i + 1) % 2 === 0 ? 'even' : 'odd'\"\r\n [ngStyle]=\"\r\n row?.legendColor ? getRowBorderLeftColor(row?.legendColor) : ''\r\n \"\r\n *matRowDef=\"let row; columns: displayedColumns; let i = dataIndex\"\r\n ></tr>\r\n <ng-container *ngIf=\"hasNestedTable\">\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 </ng-container>\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 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\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 <p\r\n class=\"m-0 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </p></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 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\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 <div class=\"ieeesa-cell-data\">\r\n <ng-container\r\n *ngIf=\"\r\n isEllipsisRequiredForLink;\r\n then ellipsisCell;\r\n else textWrapCell\r\n \"\r\n >\r\n </ng-container>\r\n <ng-template #ellipsisCell>\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n ieeesaTextTruncated\r\n [elementClassNameToAddTooltip]=\"'.mdc-button .mdc-button__label'\"\r\n class=\"ieeesa-btn-label-lg-bold-16 ieeesa-data-table__cell-content-link ieeesa-data-table__cell-content-link--ellipsis\"\r\n [attr.aria-label]=\"column?.cellData(row)\"\r\n [matTooltip]=\"row?.toolTipText ?? column?.cellData(row)\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </button>\r\n </ng-template>\r\n <ng-template #textWrapCell>\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n class=\"ieeesa-btn-label-lg-bold-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-template>\r\n\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 </div>\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 [disabled]=\"row?.disable && canDisableCheckbox\"\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.SLIDE_TOGGLE\">\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"column?.cellData(row)\"\r\n (slideToggleChange)=\"rowSlideToggleChange($event, row)\"\r\n [canShowIcon]=\"true\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.ACTIONS\">\r\n <ieeesa-menu\r\n [button]=\"rowMenuActionIcon\"\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-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;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-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.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__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:#777a7e}.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__content .ieeesa-data-table__cell-content-link{height:auto;text-decoration:underline;color:#00629b!important;font-size:.875rem;text-align:left}.ieeesa-data-table__content .ieeesa-data-table__cell-content-under-link{margin-bottom:0;font-size:.75rem;color:#63666a!important}.ieeesa-data-table__content .ieeesa-data-table__cell-content--text{color:#333436}.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;white-space:normal;word-wrap:break-word;border:none;background:none;min-width:auto!important}.ieeesa-data-table__cell-content-link--ellipsis{max-width:12.25em}.ieeesa-data-table__cell-content-link--ellipsis .mdc-button__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.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 .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{border-bottom:1px solid #9ba0a6}.ieeesa-data-table tbody tr{border-top:.0625em solid #dbe2eb;box-shadow:0 1px #dbe2eb inset}.ieeesa-data-table tbody tr.odd{background-color:#fff}.ieeesa-data-table tbody tr.even{background-color:#f8fcff}.ieeesa-data-table thead tr{box-shadow:0 1px #9ba0a6 inset;background-color:#fff;border-top:1px solid #9ba0a6}.ieeesa-data-table thead tr th{font-size:.75rem;color:#323232}.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{padding-left:3.75em}.ieeesa-data-table .ieeesa-expanded-row .ieeesa-nested-data-table__cell-row{background-color:#f8fcff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table .ieeesa-expanded-row__footer{border-top:1px solid #323232;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:#f8fcff!important}.ieeesa-data-table__cell-content-under-link{color:#63666a!important}.ieeesa-data-table__pagination-container .mat-mdc-paginator-page-size-label{color:#0009;position:relative;left:2em}.ieeesa-data-table__pagination-container .mat-mdc-paginator-range-label{color:#000000de}.ieeesa-data-table__pagination{background-color:#fff}.ieeesa-data-table__pagination .mat-mdc-select-value{display:flex;justify-content:center}.ieeesa-data-table__pagination .mdc-notched-outline__trailing,.ieeesa-data-table__pagination .mdc-notched-outline__notch,.ieeesa-data-table__pagination .mdc-notched-outline__leading{border:none!important}.ieeesa-data-table__pagination .mat-mdc-paginator-container{padding:0;flex-wrap:nowrap}.ieeesa-data-table__pagination .mat-mdc-paginator-page-size,.ieeesa-data-table__pagination .mat-mdc-paginator-page-size-label,.ieeesa-data-table__pagination .mat-mdc-paginator-page-size-select,.ieeesa-data-table__pagination .mat-mdc-paginator-range-label{margin:0}@media (max-width: 767px){.ieeesa-expanded-row{padding-left:4.85em!important}.ieeesa-data-table__cell-content-link--ellipsis{max-width:6.875em}}\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: "component", type: i0.forwardRef(function () { return SlideToggleComponent; }), selector: "ieeesa-slide-toggle", inputs: ["formControlName", "slideToggle", "isDisabled", "canShowIcon"], outputs: ["slideToggleChange"] }, { 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", "filterDropdownSearch"] }, { kind: "directive", type: i0.forwardRef(function () { return TextTruncatedDirective; }), selector: "[matTooltip][ieeesaTextTruncated]", inputs: ["elementClassNameToAddTooltip"] }, { kind: "component", type: i0.forwardRef(function () { return MenuComponent; }), selector: "ieeesa-menu", inputs: ["menuItems", "button", "defaultIconSize", "isMarginBottomZero"], outputs: ["menuToggleButtonElement", "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: [
|
|
563
|
+
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", hasNestedTable: "hasNestedTable", 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", isStickyHeaderNeeded: "isStickyHeaderNeeded", customStickyHeaderNeeded: "customStickyHeaderNeeded", headerElementClassName: "headerElementClassName", searchResultMessage: "searchResultMessage", rowMenuActionIcon: "rowMenuActionIcon", canDisableCheckbox: "canDisableCheckbox", isEllipsisRequiredForLink: "isEllipsisRequiredForLink" }, 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", tableColumnMenuActionClick: "tableColumnMenuActionClick", tableColumnMenuToggleButton: "tableColumnMenuToggleButton", rowSlideToggle: "rowSlideToggle" }, host: { listeners: { "document:scroll": "setStickyTableHeader()" } }, 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 *ngIf=\"tableColumnsHeaderText\"\r\n [innerHTML]=\"tableColumnsHeaderText | 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 #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 (menuItemClick)=\"tableColumnActionClick(column, $event)\"\r\n (menuToggleButtonElement)=\"tableColumnActionElement($event)\"\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-btn-label-lg-bold-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 [ngClass]=\"(i + 1) % 2 === 0 ? 'even' : 'odd'\"\r\n [ngStyle]=\"\r\n row?.legendColor ? getRowBorderLeftColor(row?.legendColor) : ''\r\n \"\r\n *matRowDef=\"let row; columns: displayedColumns; let i = dataIndex\"\r\n ></tr>\r\n <ng-container *ngIf=\"hasNestedTable\">\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 </ng-container>\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 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\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 <p\r\n class=\"m-0 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </p></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 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\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 <div class=\"ieeesa-cell-data\">\r\n <ng-container\r\n *ngIf=\"\r\n isEllipsisRequiredForLink;\r\n then ellipsisCell;\r\n else textWrapCell\r\n \"\r\n >\r\n </ng-container>\r\n <ng-template #ellipsisCell>\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n ieeesaTextTruncated\r\n [elementClassNameToAddTooltip]=\"'.mdc-button .mdc-button__label'\"\r\n class=\"ieeesa-btn-label-lg-bold-16 ieeesa-data-table__cell-content-link ieeesa-data-table__cell-content-link--ellipsis\"\r\n [attr.aria-label]=\"column?.cellData(row)\"\r\n [matTooltip]=\"row?.toolTipText ?? column?.cellData(row)\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </button>\r\n </ng-template>\r\n <ng-template #textWrapCell>\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n class=\"ieeesa-btn-label-lg-bold-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-template>\r\n\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 </div>\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 [disabled]=\"row?.disable && canDisableCheckbox\"\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.SLIDE_TOGGLE\">\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"column?.cellData(row)\"\r\n (slideToggleChange)=\"rowSlideToggleChange($event, row)\"\r\n [canShowIcon]=\"true\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.ACTIONS\">\r\n <ieeesa-menu\r\n [button]=\"rowMenuActionIcon\"\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-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;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-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.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__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:#777a7e}.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__content .ieeesa-data-table__cell-content-link{height:auto;text-decoration:underline;color:#00629b!important;font-size:.875rem;text-align:left}.ieeesa-data-table__content .ieeesa-data-table__cell-content-under-link{margin-bottom:0;font-size:.75rem;color:#63666a!important}.ieeesa-data-table__content .ieeesa-data-table__cell-content--text{color:#333436}.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;white-space:normal;word-wrap:break-word;border:none;background:none;min-width:auto!important}.ieeesa-data-table__cell-content-link--ellipsis{max-width:12.25em}.ieeesa-data-table__cell-content-link--ellipsis .mdc-button__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.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 .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{border-bottom:1px solid #9ba0a6}.ieeesa-data-table tbody tr{border-top:.0625em solid #dbe2eb;box-shadow:0 1px #dbe2eb inset}.ieeesa-data-table tbody tr.odd{background-color:#fff}.ieeesa-data-table tbody tr.even{background-color:#f8fcff}.ieeesa-data-table thead tr{box-shadow:0 1px #9ba0a6 inset;background-color:#fff;border-top:1px solid #9ba0a6}.ieeesa-data-table thead tr th{font-size:.75rem;color:#323232}.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{padding-left:3.75em}.ieeesa-data-table .ieeesa-expanded-row .ieeesa-nested-data-table__cell-row{background-color:#f8fcff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table .ieeesa-expanded-row__footer{border-top:1px solid #323232;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:#f8fcff!important}.ieeesa-data-table__cell-content-under-link{color:#63666a!important}.ieeesa-data-table__pagination-container .mat-mdc-paginator-page-size-label{color:#0009;position:relative;left:2em}.ieeesa-data-table__pagination-container .mat-mdc-paginator-range-label{color:#000000de}.ieeesa-data-table__pagination{background-color:#fff}.ieeesa-data-table__pagination .mdc-notched-outline__trailing,.ieeesa-data-table__pagination .mdc-notched-outline__notch,.ieeesa-data-table__pagination .mdc-notched-outline__leading{border:none!important}.ieeesa-data-table__pagination .mat-mdc-paginator-container{padding:0;flex-wrap:nowrap}.ieeesa-data-table__pagination .mat-mdc-paginator-page-size,.ieeesa-data-table__pagination .mat-mdc-paginator-page-size-label,.ieeesa-data-table__pagination .mat-mdc-paginator-page-size-select,.ieeesa-data-table__pagination .mat-mdc-paginator-range-label{margin:0}@media (max-width: 767px){.ieeesa-expanded-row{padding-left:4.85em!important}.ieeesa-data-table__cell-content-link--ellipsis{max-width:6.875em}}\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: "component", type: i0.forwardRef(function () { return SlideToggleComponent; }), selector: "ieeesa-slide-toggle", inputs: ["formControlName", "slideToggle", "isDisabled", "canShowIcon"], outputs: ["slideToggleChange"] }, { 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", "filterDropdownSearch"] }, { kind: "directive", type: i0.forwardRef(function () { return TextTruncatedDirective; }), selector: "[matTooltip][ieeesaTextTruncated]", inputs: ["elementClassNameToAddTooltip"] }, { kind: "component", type: i0.forwardRef(function () { return MenuComponent; }), selector: "ieeesa-menu", inputs: ["menuItems", "button", "defaultIconSize", "isMarginBottomZero"], outputs: ["menuToggleButtonElement", "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: [
|
|
564
564
|
trigger('detailExpand', [
|
|
565
565
|
state('collapsed', style({ height: '0px', minHeight: '0', display: 'none' })),
|
|
566
566
|
state('expanded', style({ height: '*' })),
|
|
@@ -598,7 +598,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
598
598
|
state('expanded', style({ height: '*' })),
|
|
599
599
|
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
600
600
|
]),
|
|
601
|
-
], 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 *ngIf=\"tableColumnsHeaderText\"\r\n [innerHTML]=\"tableColumnsHeaderText | 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 #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 (menuItemClick)=\"tableColumnActionClick(column, $event)\"\r\n (menuToggleButtonElement)=\"tableColumnActionElement($event)\"\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-btn-label-lg-bold-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 [ngClass]=\"(i + 1) % 2 === 0 ? 'even' : 'odd'\"\r\n [ngStyle]=\"\r\n row?.legendColor ? getRowBorderLeftColor(row?.legendColor) : ''\r\n \"\r\n *matRowDef=\"let row; columns: displayedColumns; let i = dataIndex\"\r\n ></tr>\r\n <ng-container *ngIf=\"hasNestedTable\">\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 </ng-container>\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 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\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 <p\r\n class=\"m-0 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </p></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 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\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 <div class=\"ieeesa-cell-data\">\r\n <ng-container\r\n *ngIf=\"\r\n isEllipsisRequiredForLink;\r\n then ellipsisCell;\r\n else textWrapCell\r\n \"\r\n >\r\n </ng-container>\r\n <ng-template #ellipsisCell>\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n ieeesaTextTruncated\r\n [elementClassNameToAddTooltip]=\"'.mdc-button .mdc-button__label'\"\r\n class=\"ieeesa-btn-label-lg-bold-16 ieeesa-data-table__cell-content-link ieeesa-data-table__cell-content-link--ellipsis\"\r\n [attr.aria-label]=\"column?.cellData(row)\"\r\n [matTooltip]=\"row?.toolTipText ?? column?.cellData(row)\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </button>\r\n </ng-template>\r\n <ng-template #textWrapCell>\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n class=\"ieeesa-btn-label-lg-bold-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-template>\r\n\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 </div>\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 [disabled]=\"row?.disable && canDisableCheckbox\"\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.SLIDE_TOGGLE\">\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"column?.cellData(row)\"\r\n (slideToggleChange)=\"rowSlideToggleChange($event, row)\"\r\n [canShowIcon]=\"true\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.ACTIONS\">\r\n <ieeesa-menu\r\n [button]=\"rowMenuActionIcon\"\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-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;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-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.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__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:#777a7e}.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__content .ieeesa-data-table__cell-content-link{height:auto;text-decoration:underline;color:#00629b!important;font-size:.875rem;text-align:left}.ieeesa-data-table__content .ieeesa-data-table__cell-content-under-link{margin-bottom:0;font-size:.75rem;color:#63666a!important}.ieeesa-data-table__content .ieeesa-data-table__cell-content--text{color:#333436}.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;white-space:normal;word-wrap:break-word;border:none;background:none;min-width:auto!important}.ieeesa-data-table__cell-content-link--ellipsis{max-width:12.25em}.ieeesa-data-table__cell-content-link--ellipsis .mdc-button__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.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 .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{border-bottom:1px solid #9ba0a6}.ieeesa-data-table tbody tr{border-top:.0625em solid #dbe2eb;box-shadow:0 1px #dbe2eb inset}.ieeesa-data-table tbody tr.odd{background-color:#fff}.ieeesa-data-table tbody tr.even{background-color:#f8fcff}.ieeesa-data-table thead tr{box-shadow:0 1px #9ba0a6 inset;background-color:#fff;border-top:1px solid #9ba0a6}.ieeesa-data-table thead tr th{font-size:.75rem;color:#323232}.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{padding-left:3.75em}.ieeesa-data-table .ieeesa-expanded-row .ieeesa-nested-data-table__cell-row{background-color:#f8fcff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table .ieeesa-expanded-row__footer{border-top:1px solid #323232;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:#f8fcff!important}.ieeesa-data-table__cell-content-under-link{color:#63666a!important}.ieeesa-data-table__pagination-container .mat-mdc-paginator-page-size-label{color:#0009;position:relative;left:2em}.ieeesa-data-table__pagination-container .mat-mdc-paginator-range-label{color:#000000de}.ieeesa-data-table__pagination{background-color:#fff}.ieeesa-data-table__pagination .mat-mdc-select-value{display:flex;justify-content:center}.ieeesa-data-table__pagination .mdc-notched-outline__trailing,.ieeesa-data-table__pagination .mdc-notched-outline__notch,.ieeesa-data-table__pagination .mdc-notched-outline__leading{border:none!important}.ieeesa-data-table__pagination .mat-mdc-paginator-container{padding:0;flex-wrap:nowrap}.ieeesa-data-table__pagination .mat-mdc-paginator-page-size,.ieeesa-data-table__pagination .mat-mdc-paginator-page-size-label,.ieeesa-data-table__pagination .mat-mdc-paginator-page-size-select,.ieeesa-data-table__pagination .mat-mdc-paginator-range-label{margin:0}@media (max-width: 767px){.ieeesa-expanded-row{padding-left:4.85em!important}.ieeesa-data-table__cell-content-link--ellipsis{max-width:6.875em}}\n"] }]
|
|
601
|
+
], 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 *ngIf=\"tableColumnsHeaderText\"\r\n [innerHTML]=\"tableColumnsHeaderText | 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 #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 (menuItemClick)=\"tableColumnActionClick(column, $event)\"\r\n (menuToggleButtonElement)=\"tableColumnActionElement($event)\"\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-btn-label-lg-bold-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 [ngClass]=\"(i + 1) % 2 === 0 ? 'even' : 'odd'\"\r\n [ngStyle]=\"\r\n row?.legendColor ? getRowBorderLeftColor(row?.legendColor) : ''\r\n \"\r\n *matRowDef=\"let row; columns: displayedColumns; let i = dataIndex\"\r\n ></tr>\r\n <ng-container *ngIf=\"hasNestedTable\">\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 </ng-container>\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 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\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 <p\r\n class=\"m-0 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </p></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 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\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 <div class=\"ieeesa-cell-data\">\r\n <ng-container\r\n *ngIf=\"\r\n isEllipsisRequiredForLink;\r\n then ellipsisCell;\r\n else textWrapCell\r\n \"\r\n >\r\n </ng-container>\r\n <ng-template #ellipsisCell>\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n ieeesaTextTruncated\r\n [elementClassNameToAddTooltip]=\"'.mdc-button .mdc-button__label'\"\r\n class=\"ieeesa-btn-label-lg-bold-16 ieeesa-data-table__cell-content-link ieeesa-data-table__cell-content-link--ellipsis\"\r\n [attr.aria-label]=\"column?.cellData(row)\"\r\n [matTooltip]=\"row?.toolTipText ?? column?.cellData(row)\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </button>\r\n </ng-template>\r\n <ng-template #textWrapCell>\r\n <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n class=\"ieeesa-btn-label-lg-bold-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-template>\r\n\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 </div>\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 [disabled]=\"row?.disable && canDisableCheckbox\"\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.SLIDE_TOGGLE\">\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"column?.cellData(row)\"\r\n (slideToggleChange)=\"rowSlideToggleChange($event, row)\"\r\n [canShowIcon]=\"true\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType?.ACTIONS\">\r\n <ieeesa-menu\r\n [button]=\"rowMenuActionIcon\"\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-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;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-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.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__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:#777a7e}.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__content .ieeesa-data-table__cell-content-link{height:auto;text-decoration:underline;color:#00629b!important;font-size:.875rem;text-align:left}.ieeesa-data-table__content .ieeesa-data-table__cell-content-under-link{margin-bottom:0;font-size:.75rem;color:#63666a!important}.ieeesa-data-table__content .ieeesa-data-table__cell-content--text{color:#333436}.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;white-space:normal;word-wrap:break-word;border:none;background:none;min-width:auto!important}.ieeesa-data-table__cell-content-link--ellipsis{max-width:12.25em}.ieeesa-data-table__cell-content-link--ellipsis .mdc-button__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.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 .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{border-bottom:1px solid #9ba0a6}.ieeesa-data-table tbody tr{border-top:.0625em solid #dbe2eb;box-shadow:0 1px #dbe2eb inset}.ieeesa-data-table tbody tr.odd{background-color:#fff}.ieeesa-data-table tbody tr.even{background-color:#f8fcff}.ieeesa-data-table thead tr{box-shadow:0 1px #9ba0a6 inset;background-color:#fff;border-top:1px solid #9ba0a6}.ieeesa-data-table thead tr th{font-size:.75rem;color:#323232}.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{padding-left:3.75em}.ieeesa-data-table .ieeesa-expanded-row .ieeesa-nested-data-table__cell-row{background-color:#f8fcff!important;box-shadow:0 1px #dce3e9 inset}.ieeesa-data-table .ieeesa-expanded-row__footer{border-top:1px solid #323232;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:#f8fcff!important}.ieeesa-data-table__cell-content-under-link{color:#63666a!important}.ieeesa-data-table__pagination-container .mat-mdc-paginator-page-size-label{color:#0009;position:relative;left:2em}.ieeesa-data-table__pagination-container .mat-mdc-paginator-range-label{color:#000000de}.ieeesa-data-table__pagination{background-color:#fff}.ieeesa-data-table__pagination .mdc-notched-outline__trailing,.ieeesa-data-table__pagination .mdc-notched-outline__notch,.ieeesa-data-table__pagination .mdc-notched-outline__leading{border:none!important}.ieeesa-data-table__pagination .mat-mdc-paginator-container{padding:0;flex-wrap:nowrap}.ieeesa-data-table__pagination .mat-mdc-paginator-page-size,.ieeesa-data-table__pagination .mat-mdc-paginator-page-size-label,.ieeesa-data-table__pagination .mat-mdc-paginator-page-size-select,.ieeesa-data-table__pagination .mat-mdc-paginator-range-label{margin:0}@media (max-width: 767px){.ieeesa-expanded-row{padding-left:4.85em!important}.ieeesa-data-table__cell-content-link--ellipsis{max-width:6.875em}}\n"] }]
|
|
602
602
|
}], ctorParameters: function () { return [{ type: i1.BreakpointObserverService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { tableDataInfo: [{
|
|
603
603
|
type: Input
|
|
604
604
|
}], nestedTableDataInfo: [{
|
|
@@ -743,4 +743,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
743
743
|
}], isEllipsisRequiredForLink: [{
|
|
744
744
|
type: Input
|
|
745
745
|
}] } });
|
|
746
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxpQkFBaUIsRUFFakIsVUFBVSxFQUVWLFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsT0FBTyxFQUNQLGFBQWEsR0FHZCxNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUVMLFFBQVEsRUFDUixRQUFR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O3NCQUFwQyxNQUFNO2dCQUVHLGNBQWM7c0JBQXZCLE1BQU07Z0JBS2EsSUFBSTtzQkFBdkIsU0FBUzt1QkFBQyxPQUFPO2dCQUdTLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDUSxvQkFBb0I7c0JBQXBELFlBQVk7dUJBQUMsaUJBQWlCO2dCQTZEM0IsbUJBQW1CO3NCQUR0QixLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgT25EZXN0cm95LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgUmVuZGVyZXIyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSwgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSwgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHtcclxuICBNYXRTb3J0LFxyXG4gIE1hdFNvcnRNb2R1bGUsXHJcbiAgU29ydCxcclxuICBTb3J0RGlyZWN0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgU2FmZVBpcGUsXHJcbiAgU2FmZVR5cGUsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgVGFibGVDb2x1bW5TY2hlbWEsXHJcbiAgVGFibGVDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gIFRhYmxlQ29sdW1uVHlwZSxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtc2NoZW1hLm1vZGVsJztcclxuaW1wb3J0IHsgUGFnaW5hdG9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BhZ2luYXRvci1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGVja2JveE9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9jaGVja2JveC1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ljb24tYnV0dG9uLm1vZGVsJztcclxuaW1wb3J0IHsgU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlQWN0aW9ucyB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1hY3Rpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgQ2hpcE9wdGlvbiwgQ2hpcHNUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoaXAtb3B0aW9uLm1vZGVsJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IFNlYXJjaFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VhcmNoLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyc0FuZE9wdGlvbnMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVycy1vcHRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgVGV4dFRydW5jYXRlZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdGV4dC10cnVuY2F0ZWQvdGV4dC10cnVuY2F0ZWQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vbWVudS9tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1lbnUgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVudS5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgYW5pbWF0ZSxcclxuICBzdGF0ZSxcclxuICBzdHlsZSxcclxuICB0cmFuc2l0aW9uLFxyXG4gIHRyaWdnZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IExlZ2VuZENvbXBvbmVudCB9IGZyb20gJy4uL2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGVnZW5kIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xlZ2VuZC5tb2RlbCc7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uTWVudUluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtY29sdW1uLW1lbnUtaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7IFNsaWRlVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2xpZGUtdG9nZ2xlL3NsaWRlLXRvZ2dsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbGlkZVRvZ2dsZU9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9zbGlkZS10b2dnbGUtb3B0aW9ucy5tb2RlbCc7XHJcblxyXG4vKipcclxuICogUHJvdmlkZXMgYSBNYXRlcmlhbCBEZXNpZ24gc3R5bGVkIGRhdGEtdGFibGUgdGhhdCBjYW4gYmUgdXNlZCB0byBkaXNwbGF5IHJvd3Mgb2YgZGF0YSB3aXRoIHNvcnRCeSwgZmlsdGVyQnksIGFkZC9lZGl0L2RlbGV0ZSB0YWJsZSByb3cgZGF0YSwgcGFnaW5hdGlvbiwgc2VhcmNoIHRhYmxlIGRhdGEuXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxyXG4gKiBAaW1wbGVtZW50cyB7QWZ0ZXJWaWV3SW5pdH1cclxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWRhdGEtdGFibGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgZm9yd2FyZFJlZigoKSA9PiBTYWZlUGlwZSksXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0U29ydE1vZHVsZSxcclxuICAgIFNsaWRlVG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXHJcbiAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgU2VhcmNoQ29tcG9uZW50LFxyXG4gICAgRmlsdGVyQ29tcG9uZW50LFxyXG4gICAgVGV4dFRydW5jYXRlZERpcmVjdGl2ZSxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWVudUNvbXBvbmVudCxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNZW51Q29tcG9uZW50LFxyXG4gICAgTGVnZW5kQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ2NvbGxhcHNlZCcsXHJcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJywgZGlzcGxheTogJ25vbmUnIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKFxyXG4gICAgICAgICdleHBhbmRlZCA8PT4gY29sbGFwc2VkJyxcclxuICAgICAgICBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKVxyXG4gICAgICApLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHByaXZhdGUgdGFibGVEYXRhITogYW55W107XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBwcml2YXRlIG5lc3RlZFRhYmxlRGF0YSE6IGFueVtdO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZXhwYW5kZWRFbGVtZW50OiBhbnk7XHJcbiAgQElucHV0KClcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHNldCB0YWJsZURhdGFJbmZvKHZhbHVlOiBhbnlbXSkge1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMudGFibGVEYXRhQ2hhbmdlcygpO1xyXG4gIH1cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldCB0YWJsZURhdGFJbmZvKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBzZXQgbmVzdGVkVGFibGVEYXRhSW5mbyh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YUNoYW5nZXMoKTtcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBnZXQgbmVzdGVkVGFibGVEYXRhSW5mbygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRUYWJsZURhdGE7XHJcbiAgfVxyXG4gIHByaXZhdGUgY29sdW1uU2NoZW1hITogVGFibGVDb2x1bW5TY2hlbWFbXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBjb2x1bW5TY2hlbWFJbmZvKHZhbHVlOiBUYWJsZUNvbHVtblNjaGVtYVtdKSB7XHJcbiAgICB0aGlzLmNvbHVtblNjaGVtYSA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuY29sdW1uU2NoZW1hKVxyXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmNvbHVtblNjaGVtYT8ubWFwKChjKSA9PiBjPy5jb2x1bW5EZWYpO1xyXG4gIH1cclxuICBnZXQgY29sdW1uU2NoZW1hSW5mbygpOiBUYWJsZUNvbHVtblNjaGVtYVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtblNjaGVtYTtcclxuICB9XHJcbiAgcHJpdmF0ZSBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYSE6IFRhYmxlQ29sdW1uU2NoZW1hW107XHJcbiAgQElucHV0KClcclxuICBzZXQgbmVzdGVkVGFibGVDb2x1bW5TY2hlbWFJbmZvKHZhbHVlOiBUYWJsZUNvbHVtblNjaGVtYVtdKSB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hID0gdmFsdWU7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1ucyA9IHRoaXMubmVzdGVkVGFibGVDb2x1bW5TY2hlbWE/Lm1hcChcclxuICAgICAgKGMpID0+IGM/LmNvbHVtbkRlZlxyXG4gICAgKTtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLm5lc3RlZFRhYmxlRGF0YSk7XHJcbiAgfVxyXG4gIGdldCBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYUluZm8oKTogVGFibGVDb2x1bW5TY2hlbWFbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRUYWJsZUNvbHVtblNjaGVtYTtcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IGNvbnN0YW50cztcclxuICBASW5wdXQoKSB0YWJsZUFjdGlvbnMhOiBUYWJsZUFjdGlvbnM7XHJcbiAgQElucHV0KCkgaGFzTmVzdGVkVGFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSB0YWJsZUNvbHVtbkFjdGlvbnMhOiBNZW51W107XHJcbiAgQElucHV0KCkgdGFibGVDb2x1bW5BY3Rpb25NZW51U2l6ZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHRhYmxlUm93QWN0aW9ucyE6IE1lbnVbXTtcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZVJvd0FjdGlvbnMhOiBNZW51W107XHJcbiAgQElucHV0KCkgY2FwdGlvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB2aWV3QWxsITogc3RyaW5nO1xyXG4gIHByaXZhdGUgcGFnaW5hdG9yQ29uZmlndXJhdGlvbiE6IFBhZ2luYXRvckNvbmZpZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBwYWdpbmF0b3JDb25maWcodmFsdWU6IFBhZ2luYXRvckNvbmZpZykge1xyXG4gICAgdGhpcy5wYWdpbmF0b3JDb25maWd1cmF0aW9uID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBwYWdpbmF0b3JDb25maWcoKTogUGFnaW5hdG9yQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2luYXRvckNvbmZpZ3VyYXRpb247XHJcbiAgfVxyXG4gIHByaXZhdGUgbmVzdGVkUGFnaW5hdG9yQ29uZmlndXJhdGlvbiE6IFBhZ2luYXRvckNvbmZpZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBuZXN0ZWRQYWdpbmF0b3JDb25maWcodmFsdWU6IFBhZ2luYXRvckNvbmZpZykge1xyXG4gICAgdGhpcy5uZXN0ZWRQYWdpbmF0b3JDb25maWd1cmF0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLnNob3dOZXN0ZWRUYWJsZVBhZ2luYXRpb25JbmZvID1cclxuICAgICAgJzEgLSAnICtcclxuICAgICAgK2Ake3RoaXMubmVzdGVkUGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlfWAgK1xyXG4gICAgICAnIG9mICcgK1xyXG4gICAgICArYCR7dGhpcy5uZXN0ZWRQYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzfWA7XHJcbiAgfVxyXG4gIGdldCBuZXN0ZWRQYWdpbmF0b3JDb25maWcoKTogUGFnaW5hdG9yQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLm5lc3RlZFBhZ2luYXRvckNvbmZpZ3VyYXRpb247XHJcbiAgfVxyXG4gIHByaXZhdGUgbGVnZW5kc0luZm8hOiBMZWdlbmRbXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBsZWdlbmRzKHZhbHVlOiBMZWdlbmRbXSkge1xyXG4gICAgdGhpcy5sZWdlbmRzSW5mbyA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgbGVnZW5kcygpOiBMZWdlbmRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5sZWdlbmRzSW5mbztcclxuICB9XHJcbiAgQElucHV0KCkgc2VhcmNoUGxhY2VIb2xkZXJUZXh0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJvd0VkaXRCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIHJvd0RlbGV0ZUJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgdGFibGVFZGl0QnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSB0YWJsZURlbGV0ZUJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgcm93RXhwYW5kQnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSByb3dDb2xsYXBzZUJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgaXNOZXN0ZWRUYWJsZUhlYWRlck5lZWRlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFkZEJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPVxyXG4gICAgVGFibGVDb2x1bW5Tb3J0RGlyZWN0aW9uLkFTQ0VORElORztcclxuICBASW5wdXQoKSBkZWZhdWx0U29ydGVkQ29sdW1uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlzQ2xlYXJTb3J0TmVlZGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBmaWx0ZXJzITogQ2hpcE9wdGlvbltdO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkRmlsdGVyT3B0aW9ucyE6IENoZWNrYm94T3B0aW9uW107XHJcbiAgQElucHV0KCkgYXBwbGllZEZpbHRlck9wdGlvbnMhOiBDaGlwT3B0aW9uW107XHJcbiAgQElucHV0KCkgc2VhcmNoVHlwZTogU2VhcmNoVHlwZSA9IFNlYXJjaFR5cGUuT05fQ0xJQ0s7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNlYXJjaFN1cHBvcnRNZXNzYWdlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGluYnVpbHRTb3J0aW5nTmVlZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNDZWxsVGV4dE92ZXJmbG93RWxsaXBzaXMgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc1RhYmxlSGVhZGVyTmVlZGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSB0YWJsZUNvbHVtbnNIZWFkZXJUZXh0ID0gJyc7XHJcbiAgQElucHV0KCkgdmVydGljYWxDb2x1bW5IZWFkZXJOdW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIHNjcm9sbGJhclN1cHBvcnRNZXNzYWdlID0gJyc7XHJcbiAgQElucHV0KCkgaXNTY3JvbGxTdXBwb3J0TWVzc2FnZU5lZWRlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzU3RpY2t5SGVhZGVyTmVlZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY3VzdG9tU3RpY2t5SGVhZGVyTmVlZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGVhZGVyRWxlbWVudENsYXNzTmFtZSA9ICcnO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dUb0VkaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93VG9EZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93c1RvRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZUNvbHVtblNjaGVtYVtdPigpO1xyXG4gIEBPdXRwdXQoKSByb3dMaW5rID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhZGRSb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNvbHVtbkRhdGFPblJvd0xpbmtDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbWVudUFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RBY3Rpb25NZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwT3B0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVGaWx0ZXJlZE9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyZWRPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJzQW5kT3B0aW9uc1tdPigpO1xyXG4gIEBPdXRwdXQoKSBzZWFyY2hlZFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93c0luZm8gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQ29sdW1uU2NoZW1hW10+KCk7XHJcbiAgQE91dHB1dCgpIHJvd0V4cGFuc2lvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0YWJsZUNvbHVtbk1lbnVBY3Rpb25DbGljayA9XHJcbiAgICBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQ29sdW1uTWVudUluZm8+KCk7XHJcbiAgQE91dHB1dCgpIHRhYmxlQ29sdW1uTWVudVRvZ2dsZUJ1dHRvbiA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KCk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBAT3V0cHV0KCkgcm93U2xpZGVUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHNsaWRlVG9nZ2xlOiBTbGlkZVRvZ2dsZU9wdGlvbjtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICByb3dEYXRhOiBhbnk7XHJcbiAgfT4oKTtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQhOiBNYXRTb3J0O1xyXG4gIGhlYWRlckNlbGxFbGVtZW50ITogSFRNTEVsZW1lbnQ7XHJcbiAgaGVhZGVySGVpZ2h0ITogRE9NUmVjdDtcclxuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRlbnQnKSB0YWJsZUNvbnRlbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpzY3JvbGwnKSBzZXRTdGlja3lUYWJsZUhlYWRlcigpIHtcclxuICAgIGlmICh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5jdXN0b21TdGlja3lIZWFkZXJOZWVkZWQpIHtcclxuICAgICAgY29uc3QgZGF0YVRhYmxlQ29udGVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIC5xdWVyeVNlbGVjdG9yKCcuaWVlZXNhLWRhdGEtdGFibGVfX2NvbnRlbnQnKVxyXG4gICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgaWYgKHRoaXMuaGVhZGVyRWxlbWVudENsYXNzTmFtZSlcclxuICAgICAgICB0aGlzLmhlYWRlckhlaWdodCA9IGRvY3VtZW50XHJcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3IodGhpcy5oZWFkZXJFbGVtZW50Q2xhc3NOYW1lKVxyXG4gICAgICAgICAgPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBhcyBET01SZWN0O1xyXG4gICAgICBpZiAoZGF0YVRhYmxlQ29udGVudCkge1xyXG4gICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudFxyXG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJyAubWF0LW1kYy1oZWFkZXItY2VsbCcpXHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBkYXRhVGFibGVDb250ZW50LnRvcCA8XHJcbiAgICAgICAgICAgICAgICAodGhpcy5oZWFkZXJIZWlnaHQgPyB0aGlzLmhlYWRlckhlaWdodC5ib3R0b20gOiAwKSAmJlxyXG4gICAgICAgICAgICAgIGRhdGFUYWJsZUNvbnRlbnQuYm90dG9tID4gMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxyXG4gICAgICAgICAgICAgICAgY29sdW1uLFxyXG4gICAgICAgICAgICAgICAgJ3RvcCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhVGFibGVDb250ZW50LnRvcCAqIC0xICtcclxuICAgICAgICAgICAgICAgICAgKHRoaXMuaGVhZGVySGVpZ2h0ID8gdGhpcy5oZWFkZXJIZWlnaHQuaGVpZ2h0IDogMCkgLVxyXG4gICAgICAgICAgICAgICAgICAxICtcclxuICAgICAgICAgICAgICAgICAgJ3B4J1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbi5jbGFzc0xpc3QuY29udGFpbnMoJ21hdC1tZGMtdGFibGUtc3RpY2t5JykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29sdW1uLCAnekluZGV4JywgMik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29sdW1uLCAncG9zaXRpb24nLCAnc3RpY2t5Jyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbHVtbiwgJ3pJbmRleCcsIDEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbHVtbiwgJ3RvcCcsIDAgKyAncHgnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZGlzcGxheWVkQ29sdW1ucyE6IHN0cmluZ1tdO1xyXG4gIG5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1ucyE6IHN0cmluZ1tdO1xyXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xyXG4gIGlzU2Nyb2xsaW5nRW5hYmxlZCA9IGZhbHNlO1xyXG4gIHJlc2l6ZU9ic2VydmVyRm9yVGFibGVDb250ZW50ITogUmVzaXplT2JzZXJ2ZXI7XHJcbiAgcmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNlbGwhOiBSZXNpemVPYnNlcnZlcjtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRhdGFTb3VyY2UhOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG5lc3RlZFRhYmxlRGF0YVNvdXJjZSE6IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+O1xyXG4gIHNlbGVjdGVkUm93cyA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUYWJsZUNvbHVtblNjaGVtYT4odHJ1ZSwgW10pO1xyXG4gIHBhZ2VMaW1pdCE6IG51bWJlcjtcclxuICBwYWdlT2Zmc2V0ITogbnVtYmVyO1xyXG4gIGNvbHVtblR5cGUgPSBUYWJsZUNvbHVtblR5cGU7XHJcbiAgaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICBjbGVhckFsbCA9IHRoaXMuY29uc3RhbnRzPy5kYXRhVGFibGU/LmxhYmVsPy5jbGVhckFsbDtcclxuICBub1JlY29yZEZvdW5kID0gdGhpcy5jb25zdGFudHM/LmRhdGFUYWJsZT8ubWVzc2FnZT8ubm9SZWNvcmRGb3VuZDtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgc2hvd05lc3RlZFRhYmxlUGFnaW5hdGlvbkluZm8hOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfc2VhcmNoUmVzdWx0TWVzc2FnZSE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBzZWFyY2hSZXN1bHRNZXNzYWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NlYXJjaFJlc3VsdE1lc3NhZ2UgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IHNlYXJjaFJlc3VsdE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWFyY2hSZXN1bHRNZXNzYWdlO1xyXG4gIH1cclxuICBzYWZlVHlwZTogU2FmZVR5cGUgPSBTYWZlVHlwZS5IVE1MO1xyXG4gIEBJbnB1dCgpIHJvd01lbnVBY3Rpb25JY29uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSBjYW5EaXNhYmxlQ2hlY2tib3ggPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0VsbGlwc2lzUmVxdWlyZWRGb3JMaW5rID0gZmFsc2U7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2U6IEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRCcmVha3BvaW50KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdC5tYXRjaGVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBkYXRhIHRhYmxlIGNvbXBvbmVudCBhbmQgc2V0cyB0aGUgdGFibGUgYWN0aW9uIGJ1dHRvbnMuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5TY2hlbWE/Lm1hcCgoYykgPT4gYz8uY29sdW1uRGVmKTtcclxuICAgIGNvbnN0IHRhYmxlQWN0aW9uQnV0dG9uczogSWNvbkJ1dHRvbltdID0gdGhpcy5jb25zdGFudHM/LmRhdGFUYWJsZT8uYnV0dG9ucztcclxuICAgIHRoaXMucm93RWRpdEJ1dHRvbiA9IHRoaXMucm93RWRpdEJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbM107XHJcbiAgICB0aGlzLnJvd0RlbGV0ZUJ1dHRvbiA9IHRoaXMucm93RGVsZXRlQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1s0XTtcclxuICAgIHRoaXMuYWRkQnV0dG9uID0gdGhpcy5hZGRCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzJdO1xyXG4gICAgdGhpcy50YWJsZUVkaXRCdXR0b24gPSB0aGlzLnRhYmxlRWRpdEJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbMF07XHJcbiAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uID0gdGhpcy50YWJsZURlbGV0ZUJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbMV07XHJcbiAgICB0aGlzLnJvd0V4cGFuZEJ1dHRvbiA9IHRoaXMucm93RXhwYW5kQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1s1XTtcclxuICAgIHRoaXMucm93Q29sbGFwc2VCdXR0b24gPVxyXG4gICAgICB0aGlzLnJvd0NvbGxhcHNlQnV0dG9uID8/IHRoaXMucm93Q29sbGFwc2VCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzZdO1xyXG4gICAgdGhpcy50YWJsZURlbGV0ZUJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93cy5jaGFuZ2VkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzdWx0Py5zb3VyY2U/LnNlbGVjdGVkPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVFZGl0QnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICByZXN1bHQ/LnNvdXJjZT8uc2VsZWN0ZWQ/Lmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgICAgIXJlc3VsdD8uc291cmNlPy5zZWxlY3RlZD8uWzBdPy5jYW5EZWxldGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Py5zb3VyY2U/LnNlbGVjdGVkPy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy50YWJsZURhdGEpO1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsYmFyU3VwcG9ydE1lc3NhZ2UpIHtcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlckZvclRhYmxlQ29udGVudCA9IG5ldyBSZXNpemVPYnNlcnZlcihcclxuICAgICAgICAoZWxlbWVudDogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzU2Nyb2xsaW5nRW5hYmxlZCA9XHJcbiAgICAgICAgICAgIGVsZW1lbnRbMF0/LnRhcmdldD8uc2Nyb2xsV2lkdGggPiBlbGVtZW50WzBdPy50YXJnZXQ/LmNsaWVudFdpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRhYmxlQ29sdW1uc0hlYWRlclRleHQgJiYgdGhpcy52ZXJ0aWNhbENvbHVtbkhlYWRlck51bWJlcilcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlckZvclRhYmxlQ2VsbCA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRNYXJnaW5MZWZ0Rm9ySGVhZGVyVGV4dCgpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMudGFibGVEYXRhQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHNvcnQgZmVhdHVyZSBvZiBkYXRhU291cmNlIGFuZCBzZXQgbWFyZ2luIGxlZnQgZm9yIHRhYmxlQ29sdW1uc0hlYWRlclRleHQgaWYgaXQgaXNuJ3QgZW1wdHkuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmluYnVpbHRTb3J0aW5nTmVlZGVkKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLnNvcnQuZGlzYWJsZUNsZWFyID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuaGVhZGVyQ2VsbEVsZW1lbnQgPSB0aGlzLnRhYmxlQ29udGVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICcubWF0LW1kYy1oZWFkZXItY2VsbCdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyRm9yVGFibGVDZWxsPy5vYnNlcnZlKHRoaXMuaGVhZGVyQ2VsbEVsZW1lbnQpO1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlckZvclRhYmxlQ29udGVudD8ub2JzZXJ2ZShcclxuICAgICAgdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudFxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0IG1hcmdpbiBsZWZ0IGZvciB0YWJsZSBjb2x1bW4gaGVhZGVyIHRleHQgYmFzZWQgb24gd2lkdGggb2YgY29sdW1ucy5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2V0TWFyZ2luTGVmdEZvckhlYWRlclRleHQoKTogdm9pZCB7XHJcbiAgICBsZXQgY29sdW1uc1dpZHRoID0gMDtcclxuICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMudmVydGljYWxDb2x1bW5IZWFkZXJOdW1iZXI7IGNvbHVtbisrKSB7XHJcbiAgICAgIGNvbnN0IHZlcnRpY2FsQ29sdW1uSGVhZGVyQ2xhc3NOYW1lID1cclxuICAgICAgICAnLm1hdC1jb2x1bW4tJyArIHRoaXMuY29sdW1uU2NoZW1hW2NvbHVtbl0uY29sdW1uRGVmO1xyXG4gICAgICBjb25zdCBjb2x1bW5FbGVtZW50ID0gdGhpcy5lbFJlZj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcclxuICAgICAgICB2ZXJ0aWNhbENvbHVtbkhlYWRlckNsYXNzTmFtZVxyXG4gICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoY29sdW1uRWxlbWVudCkgY29sdW1uc1dpZHRoICs9IGNvbHVtbkVsZW1lbnQ/Lm9mZnNldFdpZHRoO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1uc0hlYWRlckVsZW1lbnQgPSB0aGlzLmVsUmVmPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAnLmllZWVzYS1kYXRhLXRhYmxlX19jb2x1bW5zLWhlYWRlci10ZXh0J1xyXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmIChjb2x1bW5zSGVhZGVyRWxlbWVudClcclxuICAgICAgY29sdW1uc0hlYWRlckVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9IGNvbHVtbnNXaWR0aCArICdweCc7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRhdGFTb3VyY2Ugd2hlbmV2ZXIgdGhlIHRhYmxlIGRhdGEgY2hhbmdlcy5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdGFibGVEYXRhQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnRhYmxlRGF0YTtcclxuICAgICAgaWYgKHRoaXMuaW5idWlsdFNvcnRpbmdOZWVkZWQpIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5jbGVhcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlLmRhdGEgPSB0aGlzLm5lc3RlZFRhYmxlRGF0YTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAvKipcclxuICAgKiBTb3J0VGFibGVEYXRhIG1ldGhvZCBlbWl0cyB0aGUgY2xpY2tlZCB0YWJsZSBjb2x1bW4gbmFtZSBhbmQgc29ydGluZyBkaXJlY3Rpb25cclxuICAgKiBAcGFyYW0ge1NvcnR9IHNvcnRcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc29ydFRhYmxlRGF0YShzb3J0OiBTb3J0KTogdm9pZCB7XHJcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGVkaXQgYWN0aW9ucyBtZXRob2QgZW1pdHMgdGhlIGNsaWNrZWQgcm93IGRhdGFcclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uUm93QWN0aW9uQ2xpY2socm93OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0QWN0aW9uTWVudS5lbWl0KHJvdyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBzbGlkZSB0b2dnbGUgb3B0aW9uIGFsb25nIHdpdGggdGhlIHNlbGVjdGVkIHJvdyBpbmZvLlxyXG4gICAqIEBwYXJhbSB7U2xpZGVUb2dnbGVPcHRpb259IHNsaWRlVG9nZ2xlT3B0aW9uXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICByb3dTbGlkZVRvZ2dsZUNoYW5nZShzbGlkZVRvZ2dsZU9wdGlvbjogU2xpZGVUb2dnbGVPcHRpb24sIHJvdzogYW55KSB7XHJcbiAgICB0aGlzLnJvd1NsaWRlVG9nZ2xlLmVtaXQoeyBzbGlkZVRvZ2dsZTogc2xpZGVUb2dnbGVPcHRpb24sIHJvd0RhdGE6IHJvdyB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWVudSBpdGVtIGFjdGlvbiBtZXRob2QgZW1pdHMgdGhlIGNsaWNrZWQgbWVudSBvcHRpb25zXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBtZW51SXRlbUFjdGlvbihyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5tZW51QWN0aW9uQ2xpY2suZW1pdChyb3cpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPblNlbGVjdENsaWNrIG1ldGhvZCBlbWl0cyB0aGUgcm93U2VsZWN0ZWQgZXZlbnQgd2l0aCBzZWxlY3RlZCByb3cgZGF0YS5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2hlY2tlZFxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uU2VsZWN0Q2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnRvZ2dsZShyb3cpO1xyXG4gICAgcm93LmNoZWNrZWQgPSAhcm93LmNoZWNrZWQ7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQocm93KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5mby5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGFibGVDb2x1bW5BY3Rpb25JbmZvIGV2ZW50IHdpdGggdGFibGVDb2x1bW5JbmZvIGFuZCBtZW51QWN0aW9uSW5mby5cclxuICAgKiBAcGFyYW0ge1RhYmxlQ29sdW1uU2NoZW1hfSBjb2x1bW5cclxuICAgKiBAcGFyYW0ge01lbnV9IG1lbnVBY3Rpb25cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdGFibGVDb2x1bW5BY3Rpb25DbGljayhjb2x1bW46IFRhYmxlQ29sdW1uU2NoZW1hLCBtZW51QWN0aW9uOiBNZW51KTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlQ29sdW1uTWVudUFjdGlvbkNsaWNrLmVtaXQoe1xyXG4gICAgICB0YWJsZUNvbHVtbkluZm86IGNvbHVtbixcclxuICAgICAgbWVudUFjdGlvbkluZm86IG1lbnVBY3Rpb24sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGFibGVDb2x1bW5BY3Rpb25FbGVtZW50IGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIEhUTUwgRWxlbWVudC5cclxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRhYmxlQ29sdW1uQWN0aW9uRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJsZUNvbHVtbk1lbnVUb2dnbGVCdXR0b24uZW1pdChlbGVtZW50KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT25FZGl0Q2xpY2sgbWV0aG9kIGVtaXRzIHRoZSBzZWxlY3RlZFJvd1RvRWRpdCBldmVudCB3aXRoIHRoZSBzZWxlY3RlZCByb3cgZGF0YS5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uRWRpdENsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93VG9FZGl0LmVtaXQocm93KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uRGVsZXRlQ2xpY2sgbWV0aG9kIGVtaXRzIHRoZSBzZWxlY3RlZFJvd1RvRGVsZXRlIGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIHJvdyBkYXRhLlxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb25EZWxldGVDbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd1RvRGVsZXRlLmVtaXQocm93KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqT25MaW5rQ2xpY2sgbWV0aG9kIGVtaXRzIHRoZSBldmVudCB3aXRoIHJvdyBhbmQgY29sdW1uLlxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQHBhcmFtIHtUYWJsZUNvbHVtblNjaGVtYX0gW2NvbHVtbl1cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvbkxpbmtDbGljayhyb3c6IGFueSwgY29sdW1uPzogVGFibGVDb2x1bW5TY2hlbWEpOiB2b2lkIHtcclxuICAgIHRoaXMucm93TGluay5lbWl0KHJvdyk7XHJcbiAgICB0aGlzLmNvbHVtbkRhdGFPblJvd0xpbmtDbGljay5lbWl0KHsgcm93LCBjb2x1bW4gfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPblRhYmxlRWRpdENsaWNrIG1ldGhvZCBlbWl0cyBldmVudCB3aXRoIHNlbGVjdGVkIHJvd3MgZGF0YSB3aGVuIGVkaXQgYnV0dG9uIGNsaWNrZWQuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVGFibGVFZGl0Q2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93VG9FZGl0LmVtaXQodGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25EZWxldGVUYWJsZUNsaWNrIG1ldGhvZCBlbWl0cyBldmVudCB3aXRoIHNlbGVjdGVkIHJvdyBkYXRhIHdoZW4gZGVsZXRlIGJ1dHRvbiBjbGlja2VkLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBvbkRlbGV0ZVRhYmxlQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93c1RvRGVsZXRlLmVtaXQodGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25BZGRDbGljayBtZXRob2QgZW1pdHMgdGhlIGFkZCBldmVudCB3aGVuIGFkZCBidXR0b24gY2xpY2tlZC5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25BZGRDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkUm93LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uVGFibGVTZWFyY2hDbGljayBtZXRob2QgdG9nZ2xlcyB0aGUgaXNTZWFyY2hBY3RpdmUgc3RhdGUgd2hlbiB0aGUgc2VhcmNoIGljb24gaXMgY2xpY2tlZCBmb3IgdGhlIG1vYmlsZSB2aWV3LlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBvblRhYmxlU2VhcmNoQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2VhcmNoQWN0aXZlID0gIXRoaXMuaXNTZWFyY2hBY3RpdmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3RlZEZpbHRlckluZm8gbWV0aG9kIGVtaXRzIHRoZSBzZWxlY3RlZEZpbHRlciBldmVudCB3aXRoIHNlbGVjdGVkIGZpbHRlciBpbmZvcm1hdGlvbi5cclxuICAgKiBAcGFyYW0ge0NoaXBPcHRpb259IG9wdGlvblxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBzZWxlY3RlZEZpbHRlclR5cGVJbmZvKG9wdGlvbjogQ2hpcE9wdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlci5lbWl0KG9wdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgcm93RXhwYW5zaW9uQ2xpY2sgZXZlbnQgd2l0aCB0aGUgc2VsZWN0ZWQgcm93IGRhdGEgd2hlbiB0aGUgcm93IGlzIGV4cGFuZGVkLlxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb25UYWJsZVJvd0V4cGFuc2lvbkNsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlRGF0YVNvdXJjZS5kYXRhID0gW107XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZEVsZW1lbnQgPT09IHJvdykgdGhpcy5yb3dFeHBhbnNpb25DbGljay5lbWl0KHJvdyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPblNlbGVjdGVkRmlsdGVyT3B0aW9ucyBtZXRob2QgZW1pdHMgdGhlIGZpbHRlcmVkT3B0aW9ucyBldmVudCB3aXRoIHRoZSBzZWxlY3RlZCBvcHRpb25zIGFuZCBhZGRzIFwiQ2xlYXIgYWxsXCIgb3B0aW9uIHRvIGNsZWFyIHRoZSBhbGwgc2VsZWN0aW9ucy5cclxuICAgKiBAcGFyYW0ge0NoZWNrYm94T3B0aW9uW119IG9wdGlvbnNcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25TZWxlY3RlZEZpbHRlck9wdGlvbnMoc2VsZWN0ZWRPcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9uc1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5lbWl0KHNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJPcHRpb25zID0gW107XHJcbiAgICBzZWxlY3RlZE9wdGlvbnM/LmZvckVhY2goKG9wdGlvbnMpID0+IHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgbm8tdW51c2VkLXZhcnNcclxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucykpIHtcclxuICAgICAgICB2YWx1ZT8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICBpZiAob3B0aW9uLmNoZWNrZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyT3B0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogb3B0aW9uLmlkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5uYW1lIGFzIHN0cmluZyxcclxuICAgICAgICAgICAgICBjaGVja2VkOiBvcHRpb24uY2hlY2tlZCxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogb3B0aW9uLmRpc2FibGVkLFxyXG4gICAgICAgICAgICAgIGNoaXBUeXBlOiBDaGlwc1R5cGUuVE9HR0xFLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJPcHRpb25zLnB1c2goe1xyXG4gICAgICBpZDogdGhpcy5jbGVhckFsbCxcclxuICAgICAgbmFtZTogdGhpcy5jbGVhckFsbCxcclxuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgY2hpcFR5cGU6IENoaXBzVHlwZS5TVEFUSUMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbiBtZXRob2QgZW1pdHMgdGhlIHJlbW92ZUZpbHRlcmVkT3B0aW9uIGV2ZW50IHdpdGggcmVtb3ZlZCBvcHRpb24uXHJcbiAgICogQHBhcmFtIHtDaGlwT3B0aW9ufSBvcHRpb25cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbihvcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9uc1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZUZpbHRlcmVkT3B0aW9uLmVtaXQob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWFyY2hWYWx1ZSBtZXRob2QgZW1pdHMgdGhlIHNlYXJjaGVkIHZhbHVlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBzZWFyY2hWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaGVkVmFsdWUuZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIHBhZ2luYXRpb24gZm9yIGV2ZXJ5IHBhZ2UuXHJcbiAgICogQHBhcmFtIHtQYWdlRXZlbnR9IGV2ZW50XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhbmRsZVBhZ2luYXRpb24oZXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJc0FsbFJvd1NlbGVjdGVkIG1ldGhvZCByZXR1cm5zIHRoZSBib29sZWFuIHZhbHVlIGJ5IGNoZWNraW5nIHNlbGVjdGVkUm93cyBhbmQgdG90YWxSb3dzIGxlbmd0aC5cclxuICAgKiBAcmV0dXJuIHsqfSAge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGlzQWxsUm93c1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY2FuRGlzYWJsZUNoZWNrYm94KVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkLmxlbmd0aCA9PT1cclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtPy5kaXNhYmxlKT8ubGVuZ3RoXHJcbiAgICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVBbGxSb3dzU2VsZWN0aW9uIG1ldGhvZCBjbGVhcnMgc2VsZWN0ZWRSb3dzIHdoZW4gYWxsIHJvd3MgYXJlIHNlbGVjdGVkIGVsc2Ugc2VsZWN0cyB0aGUgYWxsIHJvd3MuXHJcbiAgICogQHJldHVybiB7Kn0gIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICB0b2dnbGVBbGxSb3dzU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNBbGxSb3dzU2VsZWN0ZWQoKSkgdGhpcy5zZWxlY3RlZFJvd3MuY2xlYXIoKTtcclxuICAgIGVsc2UgaWYgKHRoaXMuY2FuRGlzYWJsZUNoZWNrYm94KVxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3QoXHJcbiAgICAgICAgLi4udGhpcy5kYXRhU291cmNlLmRhdGEuZmlsdGVyKChpdGVtKSA9PiAhaXRlbT8uZGlzYWJsZSlcclxuICAgICAgKTtcclxuICAgIGVsc2UgdGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0KC4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkUm93c0luZm8uZW1pdCh0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGxvd3MgQW5ndWxhciB0byBkZXRlY3QgdGhlIHNwZWNpZmljIHRhYmxlIHJvdyB0aGF0IG5lZWRzIHRvIGNoYW5nZSBvciBiZSBhZGRlZCBieSB0cmFja2luZyByb3cgdW5pcXVlIElkLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEBwYXJhbSB7VGFibGVDb2x1bW5TY2hlbWF9IGNvbHVtblxyXG4gICAqIEByZXR1cm4geyp9ICB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtblNjaGVtYSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gY29sdW1uLmlkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB0YWJsZSByb3cgbGVmdCBib3JkZXIgYXMgcGVyIHRoZSBsZWdlbmQgY29sb3JcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sb3JcclxuICAgKiBAcmV0dXJuIHsqfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldFJvd0JvcmRlckxlZnRDb2xvcihjb2xvcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJvcmRlckxlZnQ6ICc1cHggc29saWQgJyArIGNvbG9yLFxyXG4gICAgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNlbGw/LnVub2JzZXJ2ZSh0aGlzLmhlYWRlckNlbGxFbGVtZW50KTtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNvbnRlbnQ/LnVub2JzZXJ2ZShcclxuICAgICAgdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudFxyXG4gICAgKTtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlIGQtZmxleCBmbGV4LWNvbHVtbiBjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgPyAnZmxleC1jb2x1bW4gbXMtNCdcclxuICAgICAgICA6ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlJ1xyXG4gICAgXCJcclxuICA+XHJcbiAgICA8Y2FwdGlvblxyXG4gICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlLS1jYXB0aW9uXCJcclxuICAgICAgKm5nSWY9XCJjYXB0aW9uXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS10aXRsZS1sZy0yNCcgOiAnaWVlZXNhLXRpdGxlLW1kLTE4J1wiXHJcbiAgICA+XHJcbiAgICAgIHt7XHJcbiAgICAgICAgY2FwdGlvblxyXG4gICAgICB9fVxyXG4gICAgPC9jYXB0aW9uPlxyXG4gICAgPHBcclxuICAgICAgKm5nSWY9XCJpc1Njcm9sbGluZ0VuYWJsZWQgJiYgaXNTY3JvbGxTdXBwb3J0TWVzc2FnZU5lZWRlZFwiXHJcbiAgICAgIGNsYXNzPVwibS0wIG1iLTJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdwb3NpdGlvbi1hYnNvbHV0ZSBib3R0b20tMCBlbmQtMCc6ICFpc01vYmlsZVZpZXcgfVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IHNjcm9sbGJhclN1cHBvcnRNZXNzYWdlIH19XHJcbiAgICA8L3A+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnNcIlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucyBkLWZsZXggcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHAtc20tMFwiXHJcbiAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAnaWVlZXNhLWRhdGEtdGFibGVfX21vYmlsZS12aWV3LWFjdGlvbnMnIDogJydcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nSWY9XCIhaXNNb2JpbGVWaWV3XCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyVGVtcGxhdGVSZWZcIlxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXRhOiAnY29sLW1kLTcgY29sLWxnLTYnIH1cIlxyXG4gICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLWxnLTQgZ2FwLW1kLTMgZ2FwLXNtLTMgZ2FwLTMgY29sLW1kLTUgY29sLWxnLTYganVzdGlmeS1jb250ZW50LWVuZCBwcy0wXCJcclxuICAgICAgW25nQ2xhc3NdPVwiIXRhYmxlQWN0aW9ucz8uaXNGaWx0ZXJOZWVkZWQgPyAnY29sLW1kLTEyIGNvbC1sZy0xMicgOiAnJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVWaWV3XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImllZWVzYVNlYXJjaFwiPiA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNBZGROZWVkZWRcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cImFkZEJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkFkZENsaWNrKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgYWRkQnV0dG9uPy5kaXNhYmxlZCA/ICdpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucy0tZGlzYWJsZWQnIDogJydcclxuICAgICAgICBcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNFZGl0TmVlZGVkXCJcclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJ0YWJsZUVkaXRCdXR0b25cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwib25UYWJsZUVkaXRDbGljaygpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgIHNlbGVjdGVkUm93cy5zZWxlY3RlZC5sZW5ndGggIT09IDFcclxuICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2FjdGlvbnMtLWRpc2FibGVkJ1xyXG4gICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgXCJcclxuICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzRGVsZXRlTmVlZGVkXCJcclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJ0YWJsZURlbGV0ZUJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkRlbGV0ZVRhYmxlQ2xpY2soKVwiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgIHNlbGVjdGVkUm93cy5zZWxlY3RlZC5sZW5ndGggPT09IDAgfHwgdGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWRcclxuICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2FjdGlvbnMtLWRpc2FibGVkJ1xyXG4gICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgXCJcclxuICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc1NlYXJjaE5lZWRlZFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5zZWFyY2hcIlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGQtc20tZmxleCBkLW1kLW5vbmUgZC1sZy1ub25lIGQteGwtbm9uZSBpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucy0tc2VhcmNoLWdyb3VwLWljb25cIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIChjbGljayk9XCJvblRhYmxlU2VhcmNoQ2xpY2soKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLW1hZ25pZnlpbmctZ2xhc3NcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRhaW5lclxyXG4gICAgKm5nSWY9XCJpc01vYmlsZVZpZXdcIlxyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyVGVtcGxhdGVSZWZcIlxyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZGF0YTogJ2llZWVzYS1kYXRhLXRhYmxlX19maWx0ZXInIH1cIlxyXG4gID5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2ZpbHRlclRlbXBsYXRlUmVmIGxldC1jbGFzc05hbWU9XCJkYXRhXCI+XHJcbiAgICA8aWVlZXNhLWZpbHRlclxyXG4gICAgICBjbGFzcz1cInt7IGNsYXNzTmFtZSB9fSBwLTBcIlxyXG4gICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcclxuICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzRmlsdGVyTmVlZGVkXCJcclxuICAgICAgW3NlbGVjdGVkRmlsdGVyT3B0aW9uc109XCJzZWxlY3RlZEZpbHRlck9wdGlvbnNcIlxyXG4gICAgICBbYXBwbGllZEZpbHRlck9wdGlvbnNdPVwiYXBwbGllZEZpbHRlck9wdGlvbnNcIlxyXG4gICAgICAoc2VsZWN0ZWRGaWx0ZXIpPVwic2VsZWN0ZWRGaWx0ZXJUeXBlSW5mbygkZXZlbnQpXCJcclxuICAgICAgKHJlbW92ZUZpbHRlcmVkT3B0aW9uKT1cIm9uUmVtb3ZhbE9mRmlsdGVyZWRPcHRpb24oJGV2ZW50KVwiXHJcbiAgICAgIChmaWx0ZXJlZE9wdGlvbnMpPVwib25TZWxlY3RlZEZpbHRlck9wdGlvbnMoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EtZmlsdGVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9iaWxlVmlldyAmJiBpc1NlYXJjaEFjdGl2ZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImllZWVzYVNlYXJjaFwiPiA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2llZWVzYVNlYXJjaD5cclxuICAgIDxpZWVlc2Etc2VhcmNoXHJcbiAgICAgIFtwbGFjZWhvbGRlckxhYmVsXT1cInNlYXJjaFBsYWNlSG9sZGVyVGV4dFwiXHJcbiAgICAgIFtzZWFyY2hUeXBlXT1cInNlYXJjaFR5cGVcIlxyXG4gICAgICAoc2VhcmNoVmFsdWUpPVwic2VhcmNoVmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc1NlYXJjaE5lZWRlZFwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX3NlYXJjaC13cmFwcGVyIG10LXNtLTIgbWQtc20tMiBtdC0yIG1kLTJcIlxyXG4gICAgICBbc3VwcG9ydE1lc3NhZ2VdPVwic2VhcmNoU3VwcG9ydE1lc3NhZ2VcIlxyXG4gICAgPjwvaWVlZXNhLXNlYXJjaD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxwXHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19zZWFyY2hfcmVzdWx0X2xhYmVsXCJcclxuICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0TWVzc2FnZVwiXHJcbiAgICBbaW5uZXJIVE1MXT1cInNlYXJjaFJlc3VsdE1lc3NhZ2UgfCBzYWZlIDogc2FmZVR5cGVcIlxyXG4gID48L3A+XHJcbiAgPHBcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2NvbHVtbnMtaGVhZGVyLXRleHQgbWItMCBpZWVlc2EtdGl0bGUtbWQtMTggdGV4dC1jZW50ZXJcIlxyXG4gICAgKm5nSWY9XCJ0YWJsZUNvbHVtbnNIZWFkZXJUZXh0XCJcclxuICAgIFtpbm5lckhUTUxdPVwidGFibGVDb2x1bW5zSGVhZGVyVGV4dCB8IHNhZmUgOiBzYWZlVHlwZVwiXHJcbiAgPjwvcD5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jb250ZW50XCJcclxuICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICB0YWJsZURhdGFJbmZvICYmIHRhYmxlRGF0YUluZm8ubGVuZ3RoID09PSAwXHJcbiAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX25vLXRhYmxlLWRhdGEnXHJcbiAgICAgICAgOiAnJ1xyXG4gICAgXCJcclxuICAgICN0YWJsZUNvbnRlbnRcclxuICA+XHJcbiAgICA8dGFibGVcclxuICAgICAgbWF0LXRhYmxlXHJcbiAgICAgIFtuZ0NsYXNzXT1cImNsYXNzTmFtZVwiXHJcbiAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxyXG4gICAgICBtYXRTb3J0XHJcbiAgICAgIFttYXRTb3J0RGlzYWJsZUNsZWFyXT1cImlzQ2xlYXJTb3J0TmVlZGVkXCJcclxuICAgICAgW21hdFNvcnRBY3RpdmVdPVwiZGVmYXVsdFNvcnRlZENvbHVtblwiXHJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cImRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uXCJcclxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwic29ydFRhYmxlRGF0YSgkZXZlbnQpXCJcclxuICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUlkXCJcclxuICAgICAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2x1bW4gb2YgY29sdW1uU2NoZW1hSW5mbztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZDtcclxuICAgICAgICAgIGxldCBpZCA9IGluZGV4XHJcbiAgICAgICAgXCJcclxuICAgICAgICBtYXRDb2x1bW5EZWY9XCJ7eyBjb2x1bW4/LmNvbHVtbkRlZiB9fVwiXHJcbiAgICAgICAgW3N0aWNreV09XCJjb2x1bW4/LmlzU3RpY2t5Q29sdW1uXCJcclxuICAgICAgICBbc3RpY2t5RW5kXT1cImNvbHVtbj8uaXNTdGlja3lFbmRDb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgIG1hdC1zb3J0LWhlYWRlclxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2x1bW4/LmlzU29ydGFibGVDb2x1bW5cIlxyXG4gICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbj8uY29sdW1uRGVmXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGUtaGVhZGVyIGllZWVzYS1ib2R5LXNtLWJvbGQtMTRcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgIGNvbHVtbj8uY29sdW1uRGVmID09PSBjb2x1bW5UeXBlPy5TRUxFQ1RcclxuICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sdW1uPy5oZWFkaW5nXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5TRUxFQ1RcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlQWxsUm93c1NlbGVjdGlvbigpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRSb3dzPy5oYXNWYWx1ZSgpICYmIGlzQWxsUm93c1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGVkUm93cz8uaGFzVmFsdWUoKSAmJiAhaXNBbGxSb3dzU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5kYXRhVGFibGU/LmFyaWFMYWJlbD8uc2VsZWN0QWxsXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdtZS0yJzogY29sdW1uLmhhc0NvbHVtbkFjdGlvbnMgfVwiPnt7XHJcbiAgICAgICAgICAgICAgY29sdW1uLmhlYWRpbmdcclxuICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGFzQ29sdW1uQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxpZWVlc2EtbWVudVxyXG4gICAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJ0YWJsZUNvbHVtbkFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRJY29uU2l6ZV09XCJ0YWJsZUNvbHVtbkFjdGlvbk1lbnVTaXplXCJcclxuICAgICAgICAgICAgICAgIChtZW51SXRlbUNsaWNrKT1cInRhYmxlQ29sdW1uQWN0aW9uQ2xpY2soY29sdW1uLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChtZW51VG9nZ2xlQnV0dG9uRWxlbWVudCk9XCJ0YWJsZUNvbHVtbkFjdGlvbkVsZW1lbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jb2x1bW4tbWVudVwiXHJcbiAgICAgICAgICAgICAgPjwvaWVlZXNhLW1lbnU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQgaWVlZXNhLXRpdGxlLXNtLTE2XCJcclxuICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvd1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgY29sdW1uPy5jb2x1bW5EZWYgPT09IGNvbHVtblR5cGU/LlNFTEVDVFxyXG4gICAgICAgICAgICAgID8gJ2llZWVzYS1kYXRhLXRhYmxlX19jb2x1bW4tc2VsZWN0J1xyXG4gICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgIHRhYmxlRGF0YTtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbixcclxuICAgICAgICAgICAgICAgIHJvdzogcm93LFxyXG4gICAgICAgICAgICAgICAgdGFibGVSb3dBY3Rpb25zOiB0YWJsZVJvd0FjdGlvbnNcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kZWREZXRhaWxcIj5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxyXG4gICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJkaXNwbGF5ZWRDb2x1bW5zPy5sZW5ndGhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXhwYW5kZWQtcm93XCJcclxuICAgICAgICAgICAgW0BkZXRhaWxFeHBhbmRdPVwicm93ID09PSBleHBhbmRlZEVsZW1lbnQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLW5lc3RlZC1kYXRhLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgPHRhYmxlXHJcbiAgICAgICAgICAgICAgICAjbmVzdGVkVGFibGVcclxuICAgICAgICAgICAgICAgIG1hdC10YWJsZVxyXG4gICAgICAgICAgICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUlkXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cIm5lc3RlZFRhYmxlRGF0YVNvdXJjZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1uIG9mIG5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hSW5mbztcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlkID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgbWF0Q29sdW1uRGVmPVwie3sgY29sdW1uPy5jb2x1bW5EZWYgfX1cIlxyXG4gICAgICAgICAgICAgICAgICBbc3RpY2t5XT1cImNvbHVtbj8uaXNTdGlja3lDb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICBbc3RpY2t5RW5kXT1cImNvbHVtbj8uaXNTdGlja3lFbmRDb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uPy5jb2x1bW5EZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGUtaGVhZGVyIGllZWVzYS1ib2R5LXNtLWJvbGQtMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5jb2x1bW5EZWYgPT09IGNvbHVtblR5cGU/LlNFTEVDVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbHVtbj8uaGVhZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb2x1bW4uaGVhZGluZyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQgaWVlZXNhLXRpdGxlLXNtLTE2XCJcclxuICAgICAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5jb2x1bW5EZWYgPT09IGNvbHVtblR5cGU/LlNFTEVDVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByb3c6IHJvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVJvd0FjdGlvbnM6IG5lc3RlZFRhYmxlUm93QWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTmVzdGVkVGFibGVIZWFkZXJOZWVkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0LWhlYWRlci1yb3dcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19oZWFkZXItcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWRUYWJsZURpc3BsYXllZENvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdGlja3k6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgICBtYXQtcm93XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLW5lc3RlZC1kYXRhLXRhYmxlX19jZWxsLXJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBuZXN0ZWRUYWJsZURpc3BsYXllZENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJcclxuICAgICAgICAgICAgICAgICAgICByb3c/LmxlZ2VuZENvbG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IGdldFJvd0JvcmRlckxlZnRDb2xvcihyb3c/LmxlZ2VuZENvbG9yKVxyXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvdHI+XHJcbiAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cgPT09IGV4cGFuZGVkRWxlbWVudFwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBpZWVlc2EtZXhwYW5kZWQtcm93X19mb290ZXJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgbmVzdGVkUGFnaW5hdG9yQ29uZmlnLnRvdGFsUmVjb3JkcyA+XHJcbiAgICAgICAgICAgICAgICAgICAgbmVzdGVkUGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlICYmXHJcbiAgICAgICAgICAgICAgICAgIG5lc3RlZFBhZ2luYXRvckNvbmZpZy5yZWNvcmRzUGVyUGFnZSA+IDBcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkxpbmtDbGljayhyb3cpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYnRuLWxhYmVsLWxnLWJvbGQtMTYgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC1saW5rXCJcclxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5saW5rXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgdmlld0FsbCA/PyBcIlwiIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmVzdGVkLWVsZW1lbnQtZGV0YWlsX19mb290ZXItLWRldGFpbFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgIHNob3dOZXN0ZWRUYWJsZVBhZ2luYXRpb25JbmZvXHJcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGFibGVIZWFkZXJOZWVkZWRcIj5cclxuICAgICAgICA8dHJcclxuICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19oZWFkZXItcm93XCJcclxuICAgICAgICAgICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IGZhbHNlXCJcclxuICAgICAgICA+PC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDx0clxyXG4gICAgICAgIG1hdC1yb3dcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jZWxsLXJvd1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGkgKyAxKSAlIDIgPT09IDAgPyAnZXZlbicgOiAnb2RkJ1wiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiXHJcbiAgICAgICAgICByb3c/LmxlZ2VuZENvbG9yID8gZ2V0Um93Qm9yZGVyTGVmdENvbG9yKHJvdz8ubGVnZW5kQ29sb3IpIDogJydcclxuICAgICAgICBcIlxyXG4gICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zOyBsZXQgaSA9IGRhdGFJbmRleFwiXHJcbiAgICAgID48L3RyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzTmVzdGVkVGFibGVcIj5cclxuICAgICAgICA8dHJcclxuICAgICAgICAgIG1hdC1yb3dcclxuICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgZGV0YWlsczsgY29sdW1uczogWydleHBhbmRlZERldGFpbCddXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLXJvdy1leHBhbmRlZC10YWJsZS1kZXRhaWxcIlxyXG4gICAgICAgID48L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48cFxyXG4gIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX21lc3NhZ2UgaWVlZXNhLXRpdGxlLWxnLWJvbGQtMjQgdGV4dC1jZW50ZXIgcC01XCJcclxuICAqbmdJZj1cInRhYmxlRGF0YUluZm8gJiYgdGFibGVEYXRhSW5mby5sZW5ndGggPT09IDBcIlxyXG4+XHJcbiAge3sgbm9SZWNvcmRGb3VuZCB9fVxyXG48L3A+XHJcbjxkaXYgY2xhc3M9XCJyb3cgaWVlZXNhLWRhdGEtdGFibGVfX3BhZ2luYXRpb24tY29udGFpbmVyXCI+XHJcbiAgPGllZWVzYS1sZWdlbmRcclxuICAgIGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC01IGQtZmxleCBhbGlnbi1pdGVtcy1lbmQgcHgtNFwiXHJcbiAgICAqbmdJZj1cImxlZ2VuZHM/Lmxlbmd0aFwiXHJcbiAgICBbbmdDbGFzc109XCIhdGFibGVBY3Rpb25zPy5pc1BhZ2luYXRpb25OZWVkZWQgPyAnY29sLW1kLTEyJyA6ICcnXCJcclxuICAgIFtsZWdlbmRzXT1cImxlZ2VuZHNcIlxyXG4gICAgW2lzU29ydGluZ109XCJ0cnVlXCJcclxuICA+PC9pZWVlc2EtbGVnZW5kPlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc1BhZ2luYXRpb25OZWVkZWRcIlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fcGFnaW5hdGlvbiBkLWZsZXggZmxleC1yb3ctcmV2ZXJzZSBjb2wtc20tMTIgY29sLW1kLTdcIlxyXG4gICAgW25nQ2xhc3NdPVwiIWxlZ2VuZHM/Lmxlbmd0aCA/ICdjb2wtbWQtMTInIDogJydcIlxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5wYWdpbmF0aW9uXCJcclxuICA+XHJcbiAgICA8bWF0LXBhZ2luYXRvclxyXG4gICAgICBbcGFnZVNpemVdPVwicGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZVwiXHJcbiAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplT3B0aW9uc1wiXHJcbiAgICAgIChwYWdlKT1cImhhbmRsZVBhZ2luYXRpb24oJGV2ZW50KVwiXHJcbiAgICAgIFtsZW5ndGhdPVwicGFnaW5hdG9yQ29uZmlnPy50b3RhbFJlY29yZHNcIlxyXG4gICAgPjwvbWF0LXBhZ2luYXRvcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZVxyXG4gICN0YWJsZURhdGFcclxuICBsZXQtY29sdW1uPVwiY29sdW1uXCJcclxuICBsZXQtcm93PVwicm93XCJcclxuICBsZXQtdGFibGVSb3dBY3Rpb25zPVwidGFibGVSb3dBY3Rpb25zXCJcclxuPlxyXG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbj8uY29sdW1uVHlwZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJpc0NlbGxUZXh0T3ZlcmZsb3dFbGxpcHNpczsgdGhlbiBlbGxpcHNpc0NlbGw7IGVsc2UgdGV4dFdyYXBDZWxsXCJcclxuICAgICAgPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0V3JhcENlbGw+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgIGNsYXNzPVwibS0wIGllZWVzYS1ib2R5LWNvbG9yLXNtLTE0IGllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtLXRleHRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJjb2x1bW4/LmlzSFRNTENlbGxEYXRhXCJcclxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29sdW1uPy5jZWxsRGF0YShyb3cpIHwgc2FmZSA6IHNhZmVUeXBlXCJcclxuICAgICAgICA+PC9wPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uPy5pc0hUTUxDZWxsRGF0YVwiPlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgY2xhc3M9XCJtLTAgaWVlZXNhLWJvZHktY29sb3Itc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC0tdGV4dFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbHVtbj8uY2VsbERhdGEocm93KSB9fVxyXG4gICAgICAgICAgPC9wPjwvbmctY29udGFpbmVyXHJcbiAgICAgICAgPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2VsbGlwc2lzQ2VsbD5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgaWVlZXNhVGV4dFRydW5jYXRlZFxyXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29sdW1uPy5jZWxsRGF0YShyb3cpXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC0tZWxsaXBzaXMgaWVlZXNhLWJvZHktY29sb3Itc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC0tdGV4dFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgY29sdW1uPy5jZWxsRGF0YShyb3cpIH19XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5MSU5LXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtY2VsbC1kYXRhXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgaXNFbGxpcHNpc1JlcXVpcmVkRm9yTGluaztcclxuICAgICAgICAgICAgdGhlbiBlbGxpcHNpc0NlbGw7XHJcbiAgICAgICAgICAgIGVsc2UgdGV4dFdyYXBDZWxsXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2VsbGlwc2lzQ2VsbD5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25MaW5rQ2xpY2socm93LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgaWVlZXNhVGV4dFRydW5jYXRlZFxyXG4gICAgICAgICAgICBbZWxlbWVudENsYXNzTmFtZVRvQWRkVG9vbHRpcF09XCInLm1kYy1idXR0b24gLm1kYy1idXR0b25fX2xhYmVsJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWJ0bi1sYWJlbC1sZy1ib2xkLTE2IGllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtbGluayBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LWxpbmstLWVsbGlwc2lzXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb2x1bW4/LmNlbGxEYXRhKHJvdylcIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJyb3c/LnRvb2xUaXBUZXh0ID8/IGNvbHVtbj8uY2VsbERhdGEocm93KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbHVtbj8uY2VsbERhdGEocm93KSB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3RleHRXcmFwQ2VsbD5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25MaW5rQ2xpY2socm93LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYnRuLWxhYmVsLWxnLWJvbGQtMTYgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC1saW5rXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb2x1bW4/LmNlbGxEYXRhKHJvdylcIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJyb3c/LnRvb2xUaXBUZXh0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29sdW1uPy5jZWxsRGF0YShyb3cpIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uPy5pc0NvbnRlbnRVbmRlckxpbmtcIj5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWJvZHktc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC11bmRlci1saW5rXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4/LmlzSFRNTENlbGxEYXRhXCJcclxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJyb3c/LmNvbnRlbnRVbmRlckxpbmsgfCBzYWZlIDogc2FmZVR5cGVcIlxyXG4gICAgICAgICAgPjwvcD5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWJvZHktc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC11bmRlci1saW5rXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhY29sdW1uPy5pc0hUTUxDZWxsRGF0YVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHJvdz8uY29udGVudFVuZGVyTGluayB9fVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uTkVTVEVEX1RBQkxFXCI+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJyb3c/Lmhhc0NoaWxkcmVuXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIlxyXG4gICAgICAgICAgZXhwYW5kZWRFbGVtZW50ID0gZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyBudWxsIDogcm93O1xyXG4gICAgICAgICAgb25UYWJsZVJvd0V4cGFuc2lvbkNsaWNrKHJvdylcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cIlxyXG4gICAgICAgICAgZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyByb3dFeHBhbmRCdXR0b24gOiByb3dDb2xsYXBzZUJ1dHRvblxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGU/LlNFTEVDVFwiPlxyXG4gICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgY2xhc3M9XCJjb2wtMlwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBvblNlbGVjdENsaWNrKHJvdykgOiBudWxsXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFJvd3MuaXNTZWxlY3RlZChyb3cpXCJcclxuICAgICAgICBbYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5zZWxlY3RcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJyb3c/LmRpc2FibGUgJiYgY2FuRGlzYWJsZUNoZWNrYm94XCJcclxuICAgICAgPlxyXG4gICAgICA8L21hdC1jaGVja2JveD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uRURJVFwiPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwicm93RWRpdEJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkVkaXRDbGljayhyb3cpXCJcclxuICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5ERUxFVEVcIj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cInJvd0RlbGV0ZUJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkRlbGV0ZUNsaWNrKHJvdylcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGUuU0xJREVfVE9HR0xFXCI+XHJcbiAgICAgIDxpZWVlc2Etc2xpZGUtdG9nZ2xlXHJcbiAgICAgICAgW3NsaWRlVG9nZ2xlXT1cImNvbHVtbj8uY2VsbERhdGEocm93KVwiXHJcbiAgICAgICAgKHNsaWRlVG9nZ2xlQ2hhbmdlKT1cInJvd1NsaWRlVG9nZ2xlQ2hhbmdlKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgW2NhblNob3dJY29uXT1cInRydWVcIlxyXG4gICAgICA+PC9pZWVlc2Etc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5BQ1RJT05TXCI+XHJcbiAgICAgIDxpZWVlc2EtbWVudVxyXG4gICAgICAgIFtidXR0b25dPVwicm93TWVudUFjdGlvbkljb25cIlxyXG4gICAgICAgIFttZW51SXRlbXNdPVwidGFibGVSb3dBY3Rpb25zID8/IHJvdy5tZW51QWN0aW9uXCJcclxuICAgICAgICAoY2xpY2spPVwibWVudUl0ZW1BY3Rpb24ocm93KVwiXHJcbiAgICAgICAgKG1lbnVJdGVtQ2xpY2spPVwib25Sb3dBY3Rpb25DbGljaygkZXZlbnQpXCJcclxuICAgICAgPjwvaWVlZXNhLW1lbnU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
746
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxpQkFBaUIsRUFFakIsVUFBVSxFQUVWLFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsT0FBTyxFQUNQLGFBQWEsR0FHZCxNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUVMLFFBQVEsRUFDUixRQUFR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O3NCQUFwQyxNQUFNO2dCQUVHLGNBQWM7c0JBQXZCLE1BQU07Z0JBS2EsSUFBSTtzQkFBdkIsU0FBUzt1QkFBQyxPQUFPO2dCQUdTLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDUSxvQkFBb0I7c0JBQXBELFlBQVk7dUJBQUMsaUJBQWlCO2dCQTZEM0IsbUJBQW1CO3NCQUR0QixLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgT25EZXN0cm95LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgUmVuZGVyZXIyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSwgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSwgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHtcclxuICBNYXRTb3J0LFxyXG4gIE1hdFNvcnRNb2R1bGUsXHJcbiAgU29ydCxcclxuICBTb3J0RGlyZWN0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgU2FmZVBpcGUsXHJcbiAgU2FmZVR5cGUsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgVGFibGVDb2x1bW5TY2hlbWEsXHJcbiAgVGFibGVDb2x1bW5Tb3J0RGlyZWN0aW9uLFxyXG4gIFRhYmxlQ29sdW1uVHlwZSxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtc2NoZW1hLm1vZGVsJztcclxuaW1wb3J0IHsgUGFnaW5hdG9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BhZ2luYXRvci1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGVja2JveE9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9jaGVja2JveC1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ljb24tYnV0dG9uLm1vZGVsJztcclxuaW1wb3J0IHsgU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlQWN0aW9ucyB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1hY3Rpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgQ2hpcE9wdGlvbiwgQ2hpcHNUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoaXAtb3B0aW9uLm1vZGVsJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IFNlYXJjaFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VhcmNoLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyc0FuZE9wdGlvbnMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsdGVycy1vcHRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgVGV4dFRydW5jYXRlZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdGV4dC10cnVuY2F0ZWQvdGV4dC10cnVuY2F0ZWQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vbWVudS9tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1lbnUgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVudS5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgYW5pbWF0ZSxcclxuICBzdGF0ZSxcclxuICBzdHlsZSxcclxuICB0cmFuc2l0aW9uLFxyXG4gIHRyaWdnZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IExlZ2VuZENvbXBvbmVudCB9IGZyb20gJy4uL2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGVnZW5kIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xlZ2VuZC5tb2RlbCc7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uTWVudUluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtY29sdW1uLW1lbnUtaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7IFNsaWRlVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2xpZGUtdG9nZ2xlL3NsaWRlLXRvZ2dsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbGlkZVRvZ2dsZU9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9zbGlkZS10b2dnbGUtb3B0aW9ucy5tb2RlbCc7XHJcblxyXG4vKipcclxuICogUHJvdmlkZXMgYSBNYXRlcmlhbCBEZXNpZ24gc3R5bGVkIGRhdGEtdGFibGUgdGhhdCBjYW4gYmUgdXNlZCB0byBkaXNwbGF5IHJvd3Mgb2YgZGF0YSB3aXRoIHNvcnRCeSwgZmlsdGVyQnksIGFkZC9lZGl0L2RlbGV0ZSB0YWJsZSByb3cgZGF0YSwgcGFnaW5hdGlvbiwgc2VhcmNoIHRhYmxlIGRhdGEuXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxyXG4gKiBAaW1wbGVtZW50cyB7QWZ0ZXJWaWV3SW5pdH1cclxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWRhdGEtdGFibGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgZm9yd2FyZFJlZigoKSA9PiBTYWZlUGlwZSksXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0U29ydE1vZHVsZSxcclxuICAgIFNsaWRlVG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXHJcbiAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgU2VhcmNoQ29tcG9uZW50LFxyXG4gICAgRmlsdGVyQ29tcG9uZW50LFxyXG4gICAgVGV4dFRydW5jYXRlZERpcmVjdGl2ZSxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWVudUNvbXBvbmVudCxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNZW51Q29tcG9uZW50LFxyXG4gICAgTGVnZW5kQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ2NvbGxhcHNlZCcsXHJcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJywgZGlzcGxheTogJ25vbmUnIH0pXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKFxyXG4gICAgICAgICdleHBhbmRlZCA8PT4gY29sbGFwc2VkJyxcclxuICAgICAgICBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKVxyXG4gICAgICApLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHByaXZhdGUgdGFibGVEYXRhITogYW55W107XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBwcml2YXRlIG5lc3RlZFRhYmxlRGF0YSE6IGFueVtdO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZXhwYW5kZWRFbGVtZW50OiBhbnk7XHJcbiAgQElucHV0KClcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHNldCB0YWJsZURhdGFJbmZvKHZhbHVlOiBhbnlbXSkge1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMudGFibGVEYXRhQ2hhbmdlcygpO1xyXG4gIH1cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldCB0YWJsZURhdGFJbmZvKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBzZXQgbmVzdGVkVGFibGVEYXRhSW5mbyh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YUNoYW5nZXMoKTtcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBnZXQgbmVzdGVkVGFibGVEYXRhSW5mbygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRUYWJsZURhdGE7XHJcbiAgfVxyXG4gIHByaXZhdGUgY29sdW1uU2NoZW1hITogVGFibGVDb2x1bW5TY2hlbWFbXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBjb2x1bW5TY2hlbWFJbmZvKHZhbHVlOiBUYWJsZUNvbHVtblNjaGVtYVtdKSB7XHJcbiAgICB0aGlzLmNvbHVtblNjaGVtYSA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuY29sdW1uU2NoZW1hKVxyXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmNvbHVtblNjaGVtYT8ubWFwKChjKSA9PiBjPy5jb2x1bW5EZWYpO1xyXG4gIH1cclxuICBnZXQgY29sdW1uU2NoZW1hSW5mbygpOiBUYWJsZUNvbHVtblNjaGVtYVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtblNjaGVtYTtcclxuICB9XHJcbiAgcHJpdmF0ZSBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYSE6IFRhYmxlQ29sdW1uU2NoZW1hW107XHJcbiAgQElucHV0KClcclxuICBzZXQgbmVzdGVkVGFibGVDb2x1bW5TY2hlbWFJbmZvKHZhbHVlOiBUYWJsZUNvbHVtblNjaGVtYVtdKSB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hID0gdmFsdWU7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1ucyA9IHRoaXMubmVzdGVkVGFibGVDb2x1bW5TY2hlbWE/Lm1hcChcclxuICAgICAgKGMpID0+IGM/LmNvbHVtbkRlZlxyXG4gICAgKTtcclxuICAgIHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLm5lc3RlZFRhYmxlRGF0YSk7XHJcbiAgfVxyXG4gIGdldCBuZXN0ZWRUYWJsZUNvbHVtblNjaGVtYUluZm8oKTogVGFibGVDb2x1bW5TY2hlbWFbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRUYWJsZUNvbHVtblNjaGVtYTtcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IGNvbnN0YW50cztcclxuICBASW5wdXQoKSB0YWJsZUFjdGlvbnMhOiBUYWJsZUFjdGlvbnM7XHJcbiAgQElucHV0KCkgaGFzTmVzdGVkVGFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSB0YWJsZUNvbHVtbkFjdGlvbnMhOiBNZW51W107XHJcbiAgQElucHV0KCkgdGFibGVDb2x1bW5BY3Rpb25NZW51U2l6ZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHRhYmxlUm93QWN0aW9ucyE6IE1lbnVbXTtcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZVJvd0FjdGlvbnMhOiBNZW51W107XHJcbiAgQElucHV0KCkgY2FwdGlvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB2aWV3QWxsITogc3RyaW5nO1xyXG4gIHByaXZhdGUgcGFnaW5hdG9yQ29uZmlndXJhdGlvbiE6IFBhZ2luYXRvckNvbmZpZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBwYWdpbmF0b3JDb25maWcodmFsdWU6IFBhZ2luYXRvckNvbmZpZykge1xyXG4gICAgdGhpcy5wYWdpbmF0b3JDb25maWd1cmF0aW9uID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBwYWdpbmF0b3JDb25maWcoKTogUGFnaW5hdG9yQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2luYXRvckNvbmZpZ3VyYXRpb247XHJcbiAgfVxyXG4gIHByaXZhdGUgbmVzdGVkUGFnaW5hdG9yQ29uZmlndXJhdGlvbiE6IFBhZ2luYXRvckNvbmZpZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBuZXN0ZWRQYWdpbmF0b3JDb25maWcodmFsdWU6IFBhZ2luYXRvckNvbmZpZykge1xyXG4gICAgdGhpcy5uZXN0ZWRQYWdpbmF0b3JDb25maWd1cmF0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLnNob3dOZXN0ZWRUYWJsZVBhZ2luYXRpb25JbmZvID1cclxuICAgICAgJzEgLSAnICtcclxuICAgICAgK2Ake3RoaXMubmVzdGVkUGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlfWAgK1xyXG4gICAgICAnIG9mICcgK1xyXG4gICAgICArYCR7dGhpcy5uZXN0ZWRQYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzfWA7XHJcbiAgfVxyXG4gIGdldCBuZXN0ZWRQYWdpbmF0b3JDb25maWcoKTogUGFnaW5hdG9yQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLm5lc3RlZFBhZ2luYXRvckNvbmZpZ3VyYXRpb247XHJcbiAgfVxyXG4gIHByaXZhdGUgbGVnZW5kc0luZm8hOiBMZWdlbmRbXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBsZWdlbmRzKHZhbHVlOiBMZWdlbmRbXSkge1xyXG4gICAgdGhpcy5sZWdlbmRzSW5mbyA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgbGVnZW5kcygpOiBMZWdlbmRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5sZWdlbmRzSW5mbztcclxuICB9XHJcbiAgQElucHV0KCkgc2VhcmNoUGxhY2VIb2xkZXJUZXh0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJvd0VkaXRCdXR0b24hOiBJY29uQnV0dG9uO1xyXG4gIEBJbnB1dCgpIHJvd0RlbGV0ZUJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgdGFibGVFZGl0QnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSB0YWJsZURlbGV0ZUJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgcm93RXhwYW5kQnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSByb3dDb2xsYXBzZUJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgaXNOZXN0ZWRUYWJsZUhlYWRlck5lZWRlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFkZEJ1dHRvbiE6IEljb25CdXR0b247XHJcbiAgQElucHV0KCkgZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPVxyXG4gICAgVGFibGVDb2x1bW5Tb3J0RGlyZWN0aW9uLkFTQ0VORElORztcclxuICBASW5wdXQoKSBkZWZhdWx0U29ydGVkQ29sdW1uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlzQ2xlYXJTb3J0TmVlZGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBmaWx0ZXJzITogQ2hpcE9wdGlvbltdO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkRmlsdGVyT3B0aW9ucyE6IENoZWNrYm94T3B0aW9uW107XHJcbiAgQElucHV0KCkgYXBwbGllZEZpbHRlck9wdGlvbnMhOiBDaGlwT3B0aW9uW107XHJcbiAgQElucHV0KCkgc2VhcmNoVHlwZTogU2VhcmNoVHlwZSA9IFNlYXJjaFR5cGUuT05fQ0xJQ0s7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNlYXJjaFN1cHBvcnRNZXNzYWdlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGluYnVpbHRTb3J0aW5nTmVlZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNDZWxsVGV4dE92ZXJmbG93RWxsaXBzaXMgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc1RhYmxlSGVhZGVyTmVlZGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSB0YWJsZUNvbHVtbnNIZWFkZXJUZXh0ID0gJyc7XHJcbiAgQElucHV0KCkgdmVydGljYWxDb2x1bW5IZWFkZXJOdW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIHNjcm9sbGJhclN1cHBvcnRNZXNzYWdlID0gJyc7XHJcbiAgQElucHV0KCkgaXNTY3JvbGxTdXBwb3J0TWVzc2FnZU5lZWRlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzU3RpY2t5SGVhZGVyTmVlZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY3VzdG9tU3RpY2t5SGVhZGVyTmVlZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGVhZGVyRWxlbWVudENsYXNzTmFtZSA9ICcnO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dUb0VkaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93VG9EZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93c1RvRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZUNvbHVtblNjaGVtYVtdPigpO1xyXG4gIEBPdXRwdXQoKSByb3dMaW5rID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhZGRSb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNvbHVtbkRhdGFPblJvd0xpbmtDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbWVudUFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RBY3Rpb25NZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwT3B0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVGaWx0ZXJlZE9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyZWRPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJzQW5kT3B0aW9uc1tdPigpO1xyXG4gIEBPdXRwdXQoKSBzZWFyY2hlZFZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkUm93c0luZm8gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQ29sdW1uU2NoZW1hW10+KCk7XHJcbiAgQE91dHB1dCgpIHJvd0V4cGFuc2lvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0YWJsZUNvbHVtbk1lbnVBY3Rpb25DbGljayA9XHJcbiAgICBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlQ29sdW1uTWVudUluZm8+KCk7XHJcbiAgQE91dHB1dCgpIHRhYmxlQ29sdW1uTWVudVRvZ2dsZUJ1dHRvbiA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KCk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBAT3V0cHV0KCkgcm93U2xpZGVUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHNsaWRlVG9nZ2xlOiBTbGlkZVRvZ2dsZU9wdGlvbjtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICByb3dEYXRhOiBhbnk7XHJcbiAgfT4oKTtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQhOiBNYXRTb3J0O1xyXG4gIGhlYWRlckNlbGxFbGVtZW50ITogSFRNTEVsZW1lbnQ7XHJcbiAgaGVhZGVySGVpZ2h0ITogRE9NUmVjdDtcclxuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRlbnQnKSB0YWJsZUNvbnRlbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpzY3JvbGwnKSBzZXRTdGlja3lUYWJsZUhlYWRlcigpIHtcclxuICAgIGlmICh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5jdXN0b21TdGlja3lIZWFkZXJOZWVkZWQpIHtcclxuICAgICAgY29uc3QgZGF0YVRhYmxlQ29udGVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIC5xdWVyeVNlbGVjdG9yKCcuaWVlZXNhLWRhdGEtdGFibGVfX2NvbnRlbnQnKVxyXG4gICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgaWYgKHRoaXMuaGVhZGVyRWxlbWVudENsYXNzTmFtZSlcclxuICAgICAgICB0aGlzLmhlYWRlckhlaWdodCA9IGRvY3VtZW50XHJcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3IodGhpcy5oZWFkZXJFbGVtZW50Q2xhc3NOYW1lKVxyXG4gICAgICAgICAgPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBhcyBET01SZWN0O1xyXG4gICAgICBpZiAoZGF0YVRhYmxlQ29udGVudCkge1xyXG4gICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudFxyXG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJyAubWF0LW1kYy1oZWFkZXItY2VsbCcpXHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgICAgLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBkYXRhVGFibGVDb250ZW50LnRvcCA8XHJcbiAgICAgICAgICAgICAgICAodGhpcy5oZWFkZXJIZWlnaHQgPyB0aGlzLmhlYWRlckhlaWdodC5ib3R0b20gOiAwKSAmJlxyXG4gICAgICAgICAgICAgIGRhdGFUYWJsZUNvbnRlbnQuYm90dG9tID4gMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxyXG4gICAgICAgICAgICAgICAgY29sdW1uLFxyXG4gICAgICAgICAgICAgICAgJ3RvcCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhVGFibGVDb250ZW50LnRvcCAqIC0xICtcclxuICAgICAgICAgICAgICAgICAgKHRoaXMuaGVhZGVySGVpZ2h0ID8gdGhpcy5oZWFkZXJIZWlnaHQuaGVpZ2h0IDogMCkgLVxyXG4gICAgICAgICAgICAgICAgICAxICtcclxuICAgICAgICAgICAgICAgICAgJ3B4J1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbi5jbGFzc0xpc3QuY29udGFpbnMoJ21hdC1tZGMtdGFibGUtc3RpY2t5JykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29sdW1uLCAnekluZGV4JywgMik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY29sdW1uLCAncG9zaXRpb24nLCAnc3RpY2t5Jyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbHVtbiwgJ3pJbmRleCcsIDEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbHVtbiwgJ3RvcCcsIDAgKyAncHgnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZGlzcGxheWVkQ29sdW1ucyE6IHN0cmluZ1tdO1xyXG4gIG5lc3RlZFRhYmxlRGlzcGxheWVkQ29sdW1ucyE6IHN0cmluZ1tdO1xyXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xyXG4gIGlzU2Nyb2xsaW5nRW5hYmxlZCA9IGZhbHNlO1xyXG4gIHJlc2l6ZU9ic2VydmVyRm9yVGFibGVDb250ZW50ITogUmVzaXplT2JzZXJ2ZXI7XHJcbiAgcmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNlbGwhOiBSZXNpemVPYnNlcnZlcjtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRhdGFTb3VyY2UhOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG5lc3RlZFRhYmxlRGF0YVNvdXJjZSE6IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+O1xyXG4gIHNlbGVjdGVkUm93cyA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUYWJsZUNvbHVtblNjaGVtYT4odHJ1ZSwgW10pO1xyXG4gIHBhZ2VMaW1pdCE6IG51bWJlcjtcclxuICBwYWdlT2Zmc2V0ITogbnVtYmVyO1xyXG4gIGNvbHVtblR5cGUgPSBUYWJsZUNvbHVtblR5cGU7XHJcbiAgaXNTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICBjbGVhckFsbCA9IHRoaXMuY29uc3RhbnRzPy5kYXRhVGFibGU/LmxhYmVsPy5jbGVhckFsbDtcclxuICBub1JlY29yZEZvdW5kID0gdGhpcy5jb25zdGFudHM/LmRhdGFUYWJsZT8ubWVzc2FnZT8ubm9SZWNvcmRGb3VuZDtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgc2hvd05lc3RlZFRhYmxlUGFnaW5hdGlvbkluZm8hOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfc2VhcmNoUmVzdWx0TWVzc2FnZSE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBzZWFyY2hSZXN1bHRNZXNzYWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NlYXJjaFJlc3VsdE1lc3NhZ2UgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IHNlYXJjaFJlc3VsdE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWFyY2hSZXN1bHRNZXNzYWdlO1xyXG4gIH1cclxuICBzYWZlVHlwZTogU2FmZVR5cGUgPSBTYWZlVHlwZS5IVE1MO1xyXG4gIEBJbnB1dCgpIHJvd01lbnVBY3Rpb25JY29uITogSWNvbkJ1dHRvbjtcclxuICBASW5wdXQoKSBjYW5EaXNhYmxlQ2hlY2tib3ggPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0VsbGlwc2lzUmVxdWlyZWRGb3JMaW5rID0gZmFsc2U7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2U6IEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRCcmVha3BvaW50KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdC5tYXRjaGVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBkYXRhIHRhYmxlIGNvbXBvbmVudCBhbmQgc2V0cyB0aGUgdGFibGUgYWN0aW9uIGJ1dHRvbnMuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5TY2hlbWE/Lm1hcCgoYykgPT4gYz8uY29sdW1uRGVmKTtcclxuICAgIGNvbnN0IHRhYmxlQWN0aW9uQnV0dG9uczogSWNvbkJ1dHRvbltdID0gdGhpcy5jb25zdGFudHM/LmRhdGFUYWJsZT8uYnV0dG9ucztcclxuICAgIHRoaXMucm93RWRpdEJ1dHRvbiA9IHRoaXMucm93RWRpdEJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbM107XHJcbiAgICB0aGlzLnJvd0RlbGV0ZUJ1dHRvbiA9IHRoaXMucm93RGVsZXRlQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1s0XTtcclxuICAgIHRoaXMuYWRkQnV0dG9uID0gdGhpcy5hZGRCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzJdO1xyXG4gICAgdGhpcy50YWJsZUVkaXRCdXR0b24gPSB0aGlzLnRhYmxlRWRpdEJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbMF07XHJcbiAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uID0gdGhpcy50YWJsZURlbGV0ZUJ1dHRvbiA/PyB0YWJsZUFjdGlvbkJ1dHRvbnNbMV07XHJcbiAgICB0aGlzLnJvd0V4cGFuZEJ1dHRvbiA9IHRoaXMucm93RXhwYW5kQnV0dG9uID8/IHRhYmxlQWN0aW9uQnV0dG9uc1s1XTtcclxuICAgIHRoaXMucm93Q29sbGFwc2VCdXR0b24gPVxyXG4gICAgICB0aGlzLnJvd0NvbGxhcHNlQnV0dG9uID8/IHRoaXMucm93Q29sbGFwc2VCdXR0b24gPz8gdGFibGVBY3Rpb25CdXR0b25zWzZdO1xyXG4gICAgdGhpcy50YWJsZURlbGV0ZUJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93cy5jaGFuZ2VkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzdWx0Py5zb3VyY2U/LnNlbGVjdGVkPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVFZGl0QnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICByZXN1bHQ/LnNvdXJjZT8uc2VsZWN0ZWQ/Lmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICAgICAgIXJlc3VsdD8uc291cmNlPy5zZWxlY3RlZD8uWzBdPy5jYW5EZWxldGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Py5zb3VyY2U/LnNlbGVjdGVkPy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGVsZXRlQnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRWRpdEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy50YWJsZURhdGEpO1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsYmFyU3VwcG9ydE1lc3NhZ2UpIHtcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlckZvclRhYmxlQ29udGVudCA9IG5ldyBSZXNpemVPYnNlcnZlcihcclxuICAgICAgICAoZWxlbWVudDogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzU2Nyb2xsaW5nRW5hYmxlZCA9XHJcbiAgICAgICAgICAgIGVsZW1lbnRbMF0/LnRhcmdldD8uc2Nyb2xsV2lkdGggPiBlbGVtZW50WzBdPy50YXJnZXQ/LmNsaWVudFdpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRhYmxlQ29sdW1uc0hlYWRlclRleHQgJiYgdGhpcy52ZXJ0aWNhbENvbHVtbkhlYWRlck51bWJlcilcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlckZvclRhYmxlQ2VsbCA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRNYXJnaW5MZWZ0Rm9ySGVhZGVyVGV4dCgpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMudGFibGVEYXRhQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHNvcnQgZmVhdHVyZSBvZiBkYXRhU291cmNlIGFuZCBzZXQgbWFyZ2luIGxlZnQgZm9yIHRhYmxlQ29sdW1uc0hlYWRlclRleHQgaWYgaXQgaXNuJ3QgZW1wdHkuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmluYnVpbHRTb3J0aW5nTmVlZGVkKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLnNvcnQuZGlzYWJsZUNsZWFyID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuaGVhZGVyQ2VsbEVsZW1lbnQgPSB0aGlzLnRhYmxlQ29udGVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICcubWF0LW1kYy1oZWFkZXItY2VsbCdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyRm9yVGFibGVDZWxsPy5vYnNlcnZlKHRoaXMuaGVhZGVyQ2VsbEVsZW1lbnQpO1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlckZvclRhYmxlQ29udGVudD8ub2JzZXJ2ZShcclxuICAgICAgdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudFxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0IG1hcmdpbiBsZWZ0IGZvciB0YWJsZSBjb2x1bW4gaGVhZGVyIHRleHQgYmFzZWQgb24gd2lkdGggb2YgY29sdW1ucy5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2V0TWFyZ2luTGVmdEZvckhlYWRlclRleHQoKTogdm9pZCB7XHJcbiAgICBsZXQgY29sdW1uc1dpZHRoID0gMDtcclxuICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMudmVydGljYWxDb2x1bW5IZWFkZXJOdW1iZXI7IGNvbHVtbisrKSB7XHJcbiAgICAgIGNvbnN0IHZlcnRpY2FsQ29sdW1uSGVhZGVyQ2xhc3NOYW1lID1cclxuICAgICAgICAnLm1hdC1jb2x1bW4tJyArIHRoaXMuY29sdW1uU2NoZW1hW2NvbHVtbl0uY29sdW1uRGVmO1xyXG4gICAgICBjb25zdCBjb2x1bW5FbGVtZW50ID0gdGhpcy5lbFJlZj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcclxuICAgICAgICB2ZXJ0aWNhbENvbHVtbkhlYWRlckNsYXNzTmFtZVxyXG4gICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoY29sdW1uRWxlbWVudCkgY29sdW1uc1dpZHRoICs9IGNvbHVtbkVsZW1lbnQ/Lm9mZnNldFdpZHRoO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1uc0hlYWRlckVsZW1lbnQgPSB0aGlzLmVsUmVmPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAnLmllZWVzYS1kYXRhLXRhYmxlX19jb2x1bW5zLWhlYWRlci10ZXh0J1xyXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmIChjb2x1bW5zSGVhZGVyRWxlbWVudClcclxuICAgICAgY29sdW1uc0hlYWRlckVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9IGNvbHVtbnNXaWR0aCArICdweCc7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRhdGFTb3VyY2Ugd2hlbmV2ZXIgdGhlIHRhYmxlIGRhdGEgY2hhbmdlcy5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdGFibGVEYXRhQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnRhYmxlRGF0YTtcclxuICAgICAgaWYgKHRoaXMuaW5idWlsdFNvcnRpbmdOZWVkZWQpIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5jbGVhcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMubmVzdGVkVGFibGVEYXRhU291cmNlLmRhdGEgPSB0aGlzLm5lc3RlZFRhYmxlRGF0YTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAvKipcclxuICAgKiBTb3J0VGFibGVEYXRhIG1ldGhvZCBlbWl0cyB0aGUgY2xpY2tlZCB0YWJsZSBjb2x1bW4gbmFtZSBhbmQgc29ydGluZyBkaXJlY3Rpb25cclxuICAgKiBAcGFyYW0ge1NvcnR9IHNvcnRcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc29ydFRhYmxlRGF0YShzb3J0OiBTb3J0KTogdm9pZCB7XHJcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGVkaXQgYWN0aW9ucyBtZXRob2QgZW1pdHMgdGhlIGNsaWNrZWQgcm93IGRhdGFcclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uUm93QWN0aW9uQ2xpY2socm93OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0QWN0aW9uTWVudS5lbWl0KHJvdyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBzbGlkZSB0b2dnbGUgb3B0aW9uIGFsb25nIHdpdGggdGhlIHNlbGVjdGVkIHJvdyBpbmZvLlxyXG4gICAqIEBwYXJhbSB7U2xpZGVUb2dnbGVPcHRpb259IHNsaWRlVG9nZ2xlT3B0aW9uXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICByb3dTbGlkZVRvZ2dsZUNoYW5nZShzbGlkZVRvZ2dsZU9wdGlvbjogU2xpZGVUb2dnbGVPcHRpb24sIHJvdzogYW55KSB7XHJcbiAgICB0aGlzLnJvd1NsaWRlVG9nZ2xlLmVtaXQoeyBzbGlkZVRvZ2dsZTogc2xpZGVUb2dnbGVPcHRpb24sIHJvd0RhdGE6IHJvdyB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWVudSBpdGVtIGFjdGlvbiBtZXRob2QgZW1pdHMgdGhlIGNsaWNrZWQgbWVudSBvcHRpb25zXHJcbiAgICogQHBhcmFtIHsqfSByb3dcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBtZW51SXRlbUFjdGlvbihyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5tZW51QWN0aW9uQ2xpY2suZW1pdChyb3cpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPblNlbGVjdENsaWNrIG1ldGhvZCBlbWl0cyB0aGUgcm93U2VsZWN0ZWQgZXZlbnQgd2l0aCBzZWxlY3RlZCByb3cgZGF0YS5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2hlY2tlZFxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uU2VsZWN0Q2xpY2socm93OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnRvZ2dsZShyb3cpO1xyXG4gICAgcm93LmNoZWNrZWQgPSAhcm93LmNoZWNrZWQ7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQocm93KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzSW5mby5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGFibGVDb2x1bW5BY3Rpb25JbmZvIGV2ZW50IHdpdGggdGFibGVDb2x1bW5JbmZvIGFuZCBtZW51QWN0aW9uSW5mby5cclxuICAgKiBAcGFyYW0ge1RhYmxlQ29sdW1uU2NoZW1hfSBjb2x1bW5cclxuICAgKiBAcGFyYW0ge01lbnV9IG1lbnVBY3Rpb25cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdGFibGVDb2x1bW5BY3Rpb25DbGljayhjb2x1bW46IFRhYmxlQ29sdW1uU2NoZW1hLCBtZW51QWN0aW9uOiBNZW51KTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlQ29sdW1uTWVudUFjdGlvbkNsaWNrLmVtaXQoe1xyXG4gICAgICB0YWJsZUNvbHVtbkluZm86IGNvbHVtbixcclxuICAgICAgbWVudUFjdGlvbkluZm86IG1lbnVBY3Rpb24sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGFibGVDb2x1bW5BY3Rpb25FbGVtZW50IGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIEhUTUwgRWxlbWVudC5cclxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRhYmxlQ29sdW1uQWN0aW9uRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJsZUNvbHVtbk1lbnVUb2dnbGVCdXR0b24uZW1pdChlbGVtZW50KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT25FZGl0Q2xpY2sgbWV0aG9kIGVtaXRzIHRoZSBzZWxlY3RlZFJvd1RvRWRpdCBldmVudCB3aXRoIHRoZSBzZWxlY3RlZCByb3cgZGF0YS5cclxuICAgKiBAcGFyYW0geyp9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uRWRpdENsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93VG9FZGl0LmVtaXQocm93KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uRGVsZXRlQ2xpY2sgbWV0aG9kIGVtaXRzIHRoZSBzZWxlY3RlZFJvd1RvRGVsZXRlIGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIHJvdyBkYXRhLlxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb25EZWxldGVDbGljayhyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd1RvRGVsZXRlLmVtaXQocm93KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqT25MaW5rQ2xpY2sgbWV0aG9kIGVtaXRzIHRoZSBldmVudCB3aXRoIHJvdyBhbmQgY29sdW1uLlxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQHBhcmFtIHtUYWJsZUNvbHVtblNjaGVtYX0gW2NvbHVtbl1cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvbkxpbmtDbGljayhyb3c6IGFueSwgY29sdW1uPzogVGFibGVDb2x1bW5TY2hlbWEpOiB2b2lkIHtcclxuICAgIHRoaXMucm93TGluay5lbWl0KHJvdyk7XHJcbiAgICB0aGlzLmNvbHVtbkRhdGFPblJvd0xpbmtDbGljay5lbWl0KHsgcm93LCBjb2x1bW4gfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPblRhYmxlRWRpdENsaWNrIG1ldGhvZCBlbWl0cyBldmVudCB3aXRoIHNlbGVjdGVkIHJvd3MgZGF0YSB3aGVuIGVkaXQgYnV0dG9uIGNsaWNrZWQuXHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVGFibGVFZGl0Q2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93VG9FZGl0LmVtaXQodGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25EZWxldGVUYWJsZUNsaWNrIG1ldGhvZCBlbWl0cyBldmVudCB3aXRoIHNlbGVjdGVkIHJvdyBkYXRhIHdoZW4gZGVsZXRlIGJ1dHRvbiBjbGlja2VkLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBvbkRlbGV0ZVRhYmxlQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93c1RvRGVsZXRlLmVtaXQodGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25BZGRDbGljayBtZXRob2QgZW1pdHMgdGhlIGFkZCBldmVudCB3aGVuIGFkZCBidXR0b24gY2xpY2tlZC5cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25BZGRDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkUm93LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uVGFibGVTZWFyY2hDbGljayBtZXRob2QgdG9nZ2xlcyB0aGUgaXNTZWFyY2hBY3RpdmUgc3RhdGUgd2hlbiB0aGUgc2VhcmNoIGljb24gaXMgY2xpY2tlZCBmb3IgdGhlIG1vYmlsZSB2aWV3LlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBvblRhYmxlU2VhcmNoQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2VhcmNoQWN0aXZlID0gIXRoaXMuaXNTZWFyY2hBY3RpdmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3RlZEZpbHRlckluZm8gbWV0aG9kIGVtaXRzIHRoZSBzZWxlY3RlZEZpbHRlciBldmVudCB3aXRoIHNlbGVjdGVkIGZpbHRlciBpbmZvcm1hdGlvbi5cclxuICAgKiBAcGFyYW0ge0NoaXBPcHRpb259IG9wdGlvblxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBzZWxlY3RlZEZpbHRlclR5cGVJbmZvKG9wdGlvbjogQ2hpcE9wdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlci5lbWl0KG9wdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgcm93RXhwYW5zaW9uQ2xpY2sgZXZlbnQgd2l0aCB0aGUgc2VsZWN0ZWQgcm93IGRhdGEgd2hlbiB0aGUgcm93IGlzIGV4cGFuZGVkLlxyXG4gICAqIEBwYXJhbSB7Kn0gcm93XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb25UYWJsZVJvd0V4cGFuc2lvbkNsaWNrKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm5lc3RlZFRhYmxlRGF0YVNvdXJjZS5kYXRhID0gW107XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZEVsZW1lbnQgPT09IHJvdykgdGhpcy5yb3dFeHBhbnNpb25DbGljay5lbWl0KHJvdyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPblNlbGVjdGVkRmlsdGVyT3B0aW9ucyBtZXRob2QgZW1pdHMgdGhlIGZpbHRlcmVkT3B0aW9ucyBldmVudCB3aXRoIHRoZSBzZWxlY3RlZCBvcHRpb25zIGFuZCBhZGRzIFwiQ2xlYXIgYWxsXCIgb3B0aW9uIHRvIGNsZWFyIHRoZSBhbGwgc2VsZWN0aW9ucy5cclxuICAgKiBAcGFyYW0ge0NoZWNrYm94T3B0aW9uW119IG9wdGlvbnNcclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25TZWxlY3RlZEZpbHRlck9wdGlvbnMoc2VsZWN0ZWRPcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9uc1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5lbWl0KHNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJPcHRpb25zID0gW107XHJcbiAgICBzZWxlY3RlZE9wdGlvbnM/LmZvckVhY2goKG9wdGlvbnMpID0+IHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgbm8tdW51c2VkLXZhcnNcclxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucykpIHtcclxuICAgICAgICB2YWx1ZT8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICBpZiAob3B0aW9uLmNoZWNrZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyT3B0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogb3B0aW9uLmlkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5uYW1lIGFzIHN0cmluZyxcclxuICAgICAgICAgICAgICBjaGVja2VkOiBvcHRpb24uY2hlY2tlZCxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogb3B0aW9uLmRpc2FibGVkLFxyXG4gICAgICAgICAgICAgIGNoaXBUeXBlOiBDaGlwc1R5cGUuVE9HR0xFLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJPcHRpb25zLnB1c2goe1xyXG4gICAgICBpZDogdGhpcy5jbGVhckFsbCxcclxuICAgICAgbmFtZTogdGhpcy5jbGVhckFsbCxcclxuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgY2hpcFR5cGU6IENoaXBzVHlwZS5TVEFUSUMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbiBtZXRob2QgZW1pdHMgdGhlIHJlbW92ZUZpbHRlcmVkT3B0aW9uIGV2ZW50IHdpdGggcmVtb3ZlZCBvcHRpb24uXHJcbiAgICogQHBhcmFtIHtDaGlwT3B0aW9ufSBvcHRpb25cclxuICAgKiBAbWVtYmVyb2YgRGF0YVRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbihvcHRpb25zOiBGaWx0ZXJzQW5kT3B0aW9uc1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZUZpbHRlcmVkT3B0aW9uLmVtaXQob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWFyY2hWYWx1ZSBtZXRob2QgZW1pdHMgdGhlIHNlYXJjaGVkIHZhbHVlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBzZWFyY2hWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaGVkVmFsdWUuZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIHBhZ2luYXRpb24gZm9yIGV2ZXJ5IHBhZ2UuXHJcbiAgICogQHBhcmFtIHtQYWdlRXZlbnR9IGV2ZW50XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhbmRsZVBhZ2luYXRpb24oZXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJc0FsbFJvd1NlbGVjdGVkIG1ldGhvZCByZXR1cm5zIHRoZSBib29sZWFuIHZhbHVlIGJ5IGNoZWNraW5nIHNlbGVjdGVkUm93cyBhbmQgdG90YWxSb3dzIGxlbmd0aC5cclxuICAgKiBAcmV0dXJuIHsqfSAge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIERhdGFUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGlzQWxsUm93c1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY2FuRGlzYWJsZUNoZWNrYm94KVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLnNlbGVjdGVkLmxlbmd0aCA9PT1cclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtPy5kaXNhYmxlKT8ubGVuZ3RoXHJcbiAgICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVBbGxSb3dzU2VsZWN0aW9uIG1ldGhvZCBjbGVhcnMgc2VsZWN0ZWRSb3dzIHdoZW4gYWxsIHJvd3MgYXJlIHNlbGVjdGVkIGVsc2Ugc2VsZWN0cyB0aGUgYWxsIHJvd3MuXHJcbiAgICogQHJldHVybiB7Kn0gIHt2b2lkfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICB0b2dnbGVBbGxSb3dzU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNBbGxSb3dzU2VsZWN0ZWQoKSkgdGhpcy5zZWxlY3RlZFJvd3MuY2xlYXIoKTtcclxuICAgIGVsc2UgaWYgKHRoaXMuY2FuRGlzYWJsZUNoZWNrYm94KVxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3QoXHJcbiAgICAgICAgLi4udGhpcy5kYXRhU291cmNlLmRhdGEuZmlsdGVyKChpdGVtKSA9PiAhaXRlbT8uZGlzYWJsZSlcclxuICAgICAgKTtcclxuICAgIGVsc2UgdGhpcy5zZWxlY3RlZFJvd3Muc2VsZWN0KC4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkUm93c0luZm8uZW1pdCh0aGlzLnNlbGVjdGVkUm93cy5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGxvd3MgQW5ndWxhciB0byBkZXRlY3QgdGhlIHNwZWNpZmljIHRhYmxlIHJvdyB0aGF0IG5lZWRzIHRvIGNoYW5nZSBvciBiZSBhZGRlZCBieSB0cmFja2luZyByb3cgdW5pcXVlIElkLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEBwYXJhbSB7VGFibGVDb2x1bW5TY2hlbWF9IGNvbHVtblxyXG4gICAqIEByZXR1cm4geyp9ICB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtblNjaGVtYSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gY29sdW1uLmlkO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB0YWJsZSByb3cgbGVmdCBib3JkZXIgYXMgcGVyIHRoZSBsZWdlbmQgY29sb3JcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29sb3JcclxuICAgKiBAcmV0dXJuIHsqfVxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldFJvd0JvcmRlckxlZnRDb2xvcihjb2xvcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJvcmRlckxlZnQ6ICc1cHggc29saWQgJyArIGNvbG9yLFxyXG4gICAgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBEYXRhVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNlbGw/LnVub2JzZXJ2ZSh0aGlzLmhlYWRlckNlbGxFbGVtZW50KTtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJGb3JUYWJsZUNvbnRlbnQ/LnVub2JzZXJ2ZShcclxuICAgICAgdGhpcy50YWJsZUNvbnRlbnQubmF0aXZlRWxlbWVudFxyXG4gICAgKTtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlIGQtZmxleCBmbGV4LWNvbHVtbiBjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgPyAnZmxleC1jb2x1bW4gbXMtNCdcclxuICAgICAgICA6ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlJ1xyXG4gICAgXCJcclxuICA+XHJcbiAgICA8Y2FwdGlvblxyXG4gICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlLS1jYXB0aW9uXCJcclxuICAgICAgKm5nSWY9XCJjYXB0aW9uXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS10aXRsZS1sZy0yNCcgOiAnaWVlZXNhLXRpdGxlLW1kLTE4J1wiXHJcbiAgICA+XHJcbiAgICAgIHt7XHJcbiAgICAgICAgY2FwdGlvblxyXG4gICAgICB9fVxyXG4gICAgPC9jYXB0aW9uPlxyXG4gICAgPHBcclxuICAgICAgKm5nSWY9XCJpc1Njcm9sbGluZ0VuYWJsZWQgJiYgaXNTY3JvbGxTdXBwb3J0TWVzc2FnZU5lZWRlZFwiXHJcbiAgICAgIGNsYXNzPVwibS0wIG1iLTJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdwb3NpdGlvbi1hYnNvbHV0ZSBib3R0b20tMCBlbmQtMCc6ICFpc01vYmlsZVZpZXcgfVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IHNjcm9sbGJhclN1cHBvcnRNZXNzYWdlIH19XHJcbiAgICA8L3A+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnNcIlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucyBkLWZsZXggcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHAtc20tMFwiXHJcbiAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAnaWVlZXNhLWRhdGEtdGFibGVfX21vYmlsZS12aWV3LWFjdGlvbnMnIDogJydcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nSWY9XCIhaXNNb2JpbGVWaWV3XCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyVGVtcGxhdGVSZWZcIlxyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXRhOiAnY29sLW1kLTcgY29sLWxnLTYnIH1cIlxyXG4gICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLWxnLTQgZ2FwLW1kLTMgZ2FwLXNtLTMgZ2FwLTMgY29sLW1kLTUgY29sLWxnLTYganVzdGlmeS1jb250ZW50LWVuZCBwcy0wXCJcclxuICAgICAgW25nQ2xhc3NdPVwiIXRhYmxlQWN0aW9ucz8uaXNGaWx0ZXJOZWVkZWQgPyAnY29sLW1kLTEyIGNvbC1sZy0xMicgOiAnJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVWaWV3XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImllZWVzYVNlYXJjaFwiPiA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNBZGROZWVkZWRcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cImFkZEJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkFkZENsaWNrKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgYWRkQnV0dG9uPy5kaXNhYmxlZCA/ICdpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucy0tZGlzYWJsZWQnIDogJydcclxuICAgICAgICBcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAqbmdJZj1cInRhYmxlQWN0aW9ucz8uaXNFZGl0TmVlZGVkXCJcclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJ0YWJsZUVkaXRCdXR0b25cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwib25UYWJsZUVkaXRDbGljaygpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgIHNlbGVjdGVkUm93cy5zZWxlY3RlZC5sZW5ndGggIT09IDFcclxuICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2FjdGlvbnMtLWRpc2FibGVkJ1xyXG4gICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgXCJcclxuICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzRGVsZXRlTmVlZGVkXCJcclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJ0YWJsZURlbGV0ZUJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkRlbGV0ZVRhYmxlQ2xpY2soKVwiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgIHNlbGVjdGVkUm93cy5zZWxlY3RlZC5sZW5ndGggPT09IDAgfHwgdGFibGVEZWxldGVCdXR0b24uZGlzYWJsZWRcclxuICAgICAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX2FjdGlvbnMtLWRpc2FibGVkJ1xyXG4gICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgXCJcclxuICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc1NlYXJjaE5lZWRlZFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5zZWFyY2hcIlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGQtc20tZmxleCBkLW1kLW5vbmUgZC1sZy1ub25lIGQteGwtbm9uZSBpZWVlc2EtZGF0YS10YWJsZV9fYWN0aW9ucy0tc2VhcmNoLWdyb3VwLWljb25cIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIChjbGljayk9XCJvblRhYmxlU2VhcmNoQ2xpY2soKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLW1hZ25pZnlpbmctZ2xhc3NcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRhaW5lclxyXG4gICAgKm5nSWY9XCJpc01vYmlsZVZpZXdcIlxyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyVGVtcGxhdGVSZWZcIlxyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZGF0YTogJ2llZWVzYS1kYXRhLXRhYmxlX19maWx0ZXInIH1cIlxyXG4gID5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2ZpbHRlclRlbXBsYXRlUmVmIGxldC1jbGFzc05hbWU9XCJkYXRhXCI+XHJcbiAgICA8aWVlZXNhLWZpbHRlclxyXG4gICAgICBjbGFzcz1cInt7IGNsYXNzTmFtZSB9fSBwLTBcIlxyXG4gICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcclxuICAgICAgKm5nSWY9XCJ0YWJsZUFjdGlvbnM/LmlzRmlsdGVyTmVlZGVkXCJcclxuICAgICAgW3NlbGVjdGVkRmlsdGVyT3B0aW9uc109XCJzZWxlY3RlZEZpbHRlck9wdGlvbnNcIlxyXG4gICAgICBbYXBwbGllZEZpbHRlck9wdGlvbnNdPVwiYXBwbGllZEZpbHRlck9wdGlvbnNcIlxyXG4gICAgICAoc2VsZWN0ZWRGaWx0ZXIpPVwic2VsZWN0ZWRGaWx0ZXJUeXBlSW5mbygkZXZlbnQpXCJcclxuICAgICAgKHJlbW92ZUZpbHRlcmVkT3B0aW9uKT1cIm9uUmVtb3ZhbE9mRmlsdGVyZWRPcHRpb24oJGV2ZW50KVwiXHJcbiAgICAgIChmaWx0ZXJlZE9wdGlvbnMpPVwib25TZWxlY3RlZEZpbHRlck9wdGlvbnMoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EtZmlsdGVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9iaWxlVmlldyAmJiBpc1NlYXJjaEFjdGl2ZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImllZWVzYVNlYXJjaFwiPiA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2llZWVzYVNlYXJjaD5cclxuICAgIDxpZWVlc2Etc2VhcmNoXHJcbiAgICAgIFtwbGFjZWhvbGRlckxhYmVsXT1cInNlYXJjaFBsYWNlSG9sZGVyVGV4dFwiXHJcbiAgICAgIFtzZWFyY2hUeXBlXT1cInNlYXJjaFR5cGVcIlxyXG4gICAgICAoc2VhcmNoVmFsdWUpPVwic2VhcmNoVmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc1NlYXJjaE5lZWRlZFwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX3NlYXJjaC13cmFwcGVyIG10LXNtLTIgbWQtc20tMiBtdC0yIG1kLTJcIlxyXG4gICAgICBbc3VwcG9ydE1lc3NhZ2VdPVwic2VhcmNoU3VwcG9ydE1lc3NhZ2VcIlxyXG4gICAgPjwvaWVlZXNhLXNlYXJjaD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxwXHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19zZWFyY2hfcmVzdWx0X2xhYmVsXCJcclxuICAgICpuZ0lmPVwic2VhcmNoUmVzdWx0TWVzc2FnZVwiXHJcbiAgICBbaW5uZXJIVE1MXT1cInNlYXJjaFJlc3VsdE1lc3NhZ2UgfCBzYWZlIDogc2FmZVR5cGVcIlxyXG4gID48L3A+XHJcbiAgPHBcclxuICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2NvbHVtbnMtaGVhZGVyLXRleHQgbWItMCBpZWVlc2EtdGl0bGUtbWQtMTggdGV4dC1jZW50ZXJcIlxyXG4gICAgKm5nSWY9XCJ0YWJsZUNvbHVtbnNIZWFkZXJUZXh0XCJcclxuICAgIFtpbm5lckhUTUxdPVwidGFibGVDb2x1bW5zSGVhZGVyVGV4dCB8IHNhZmUgOiBzYWZlVHlwZVwiXHJcbiAgPjwvcD5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jb250ZW50XCJcclxuICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICB0YWJsZURhdGFJbmZvICYmIHRhYmxlRGF0YUluZm8ubGVuZ3RoID09PSAwXHJcbiAgICAgICAgPyAnaWVlZXNhLWRhdGEtdGFibGVfX25vLXRhYmxlLWRhdGEnXHJcbiAgICAgICAgOiAnJ1xyXG4gICAgXCJcclxuICAgICN0YWJsZUNvbnRlbnRcclxuICA+XHJcbiAgICA8dGFibGVcclxuICAgICAgbWF0LXRhYmxlXHJcbiAgICAgIFtuZ0NsYXNzXT1cImNsYXNzTmFtZVwiXHJcbiAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxyXG4gICAgICBtYXRTb3J0XHJcbiAgICAgIFttYXRTb3J0RGlzYWJsZUNsZWFyXT1cImlzQ2xlYXJTb3J0TmVlZGVkXCJcclxuICAgICAgW21hdFNvcnRBY3RpdmVdPVwiZGVmYXVsdFNvcnRlZENvbHVtblwiXHJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cImRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uXCJcclxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwic29ydFRhYmxlRGF0YSgkZXZlbnQpXCJcclxuICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUlkXCJcclxuICAgICAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2x1bW4gb2YgY29sdW1uU2NoZW1hSW5mbztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZDtcclxuICAgICAgICAgIGxldCBpZCA9IGluZGV4XHJcbiAgICAgICAgXCJcclxuICAgICAgICBtYXRDb2x1bW5EZWY9XCJ7eyBjb2x1bW4/LmNvbHVtbkRlZiB9fVwiXHJcbiAgICAgICAgW3N0aWNreV09XCJjb2x1bW4/LmlzU3RpY2t5Q29sdW1uXCJcclxuICAgICAgICBbc3RpY2t5RW5kXT1cImNvbHVtbj8uaXNTdGlja3lFbmRDb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgIG1hdC1zb3J0LWhlYWRlclxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2x1bW4/LmlzU29ydGFibGVDb2x1bW5cIlxyXG4gICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbj8uY29sdW1uRGVmXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGUtaGVhZGVyIGllZWVzYS1ib2R5LXNtLWJvbGQtMTRcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgIGNvbHVtbj8uY29sdW1uRGVmID09PSBjb2x1bW5UeXBlPy5TRUxFQ1RcclxuICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29sdW1uPy5oZWFkaW5nXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5TRUxFQ1RcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlQWxsUm93c1NlbGVjdGlvbigpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRSb3dzPy5oYXNWYWx1ZSgpICYmIGlzQWxsUm93c1NlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGVkUm93cz8uaGFzVmFsdWUoKSAmJiAhaXNBbGxSb3dzU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy5kYXRhVGFibGU/LmFyaWFMYWJlbD8uc2VsZWN0QWxsXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdtZS0yJzogY29sdW1uLmhhc0NvbHVtbkFjdGlvbnMgfVwiPnt7XHJcbiAgICAgICAgICAgICAgY29sdW1uLmhlYWRpbmdcclxuICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGFzQ29sdW1uQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxpZWVlc2EtbWVudVxyXG4gICAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJ0YWJsZUNvbHVtbkFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRJY29uU2l6ZV09XCJ0YWJsZUNvbHVtbkFjdGlvbk1lbnVTaXplXCJcclxuICAgICAgICAgICAgICAgIChtZW51SXRlbUNsaWNrKT1cInRhYmxlQ29sdW1uQWN0aW9uQ2xpY2soY29sdW1uLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChtZW51VG9nZ2xlQnV0dG9uRWxlbWVudCk9XCJ0YWJsZUNvbHVtbkFjdGlvbkVsZW1lbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jb2x1bW4tbWVudVwiXHJcbiAgICAgICAgICAgICAgPjwvaWVlZXNhLW1lbnU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQgaWVlZXNhLXRpdGxlLXNtLTE2XCJcclxuICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvd1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgY29sdW1uPy5jb2x1bW5EZWYgPT09IGNvbHVtblR5cGU/LlNFTEVDVFxyXG4gICAgICAgICAgICAgID8gJ2llZWVzYS1kYXRhLXRhYmxlX19jb2x1bW4tc2VsZWN0J1xyXG4gICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgIHRhYmxlRGF0YTtcclxuICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbixcclxuICAgICAgICAgICAgICAgIHJvdzogcm93LFxyXG4gICAgICAgICAgICAgICAgdGFibGVSb3dBY3Rpb25zOiB0YWJsZVJvd0FjdGlvbnNcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kZWREZXRhaWxcIj5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxyXG4gICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJkaXNwbGF5ZWRDb2x1bW5zPy5sZW5ndGhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZXhwYW5kZWQtcm93XCJcclxuICAgICAgICAgICAgW0BkZXRhaWxFeHBhbmRdPVwicm93ID09PSBleHBhbmRlZEVsZW1lbnQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLW5lc3RlZC1kYXRhLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgPHRhYmxlXHJcbiAgICAgICAgICAgICAgICAjbmVzdGVkVGFibGVcclxuICAgICAgICAgICAgICAgIG1hdC10YWJsZVxyXG4gICAgICAgICAgICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUlkXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cIm5lc3RlZFRhYmxlRGF0YVNvdXJjZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1uIG9mIG5lc3RlZFRhYmxlQ29sdW1uU2NoZW1hSW5mbztcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlkID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgbWF0Q29sdW1uRGVmPVwie3sgY29sdW1uPy5jb2x1bW5EZWYgfX1cIlxyXG4gICAgICAgICAgICAgICAgICBbc3RpY2t5XT1cImNvbHVtbj8uaXNTdGlja3lDb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICBbc3RpY2t5RW5kXT1cImNvbHVtbj8uaXNTdGlja3lFbmRDb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uPy5jb2x1bW5EZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGUtaGVhZGVyIGllZWVzYS1ib2R5LXNtLWJvbGQtMTRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5jb2x1bW5EZWYgPT09IGNvbHVtblR5cGU/LlNFTEVDVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbHVtbj8uaGVhZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjb2x1bW4uaGVhZGluZyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQgaWVlZXNhLXRpdGxlLXNtLTE2XCJcclxuICAgICAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uPy5jb2x1bW5EZWYgPT09IGNvbHVtblR5cGU/LlNFTEVDVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdpZWVlc2EtZGF0YS10YWJsZV9fY29sdW1uLXNlbGVjdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZURhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByb3c6IHJvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVJvd0FjdGlvbnM6IG5lc3RlZFRhYmxlUm93QWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTmVzdGVkVGFibGVIZWFkZXJOZWVkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICAgICAgbWF0LWhlYWRlci1yb3dcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19oZWFkZXItcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWRUYWJsZURpc3BsYXllZENvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdGlja3k6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgICBtYXQtcm93XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLW5lc3RlZC1kYXRhLXRhYmxlX19jZWxsLXJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBuZXN0ZWRUYWJsZURpc3BsYXllZENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJcclxuICAgICAgICAgICAgICAgICAgICByb3c/LmxlZ2VuZENvbG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IGdldFJvd0JvcmRlckxlZnRDb2xvcihyb3c/LmxlZ2VuZENvbG9yKVxyXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvdHI+XHJcbiAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cgPT09IGV4cGFuZGVkRWxlbWVudFwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBpZWVlc2EtZXhwYW5kZWQtcm93X19mb290ZXJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgbmVzdGVkUGFnaW5hdG9yQ29uZmlnLnRvdGFsUmVjb3JkcyA+XHJcbiAgICAgICAgICAgICAgICAgICAgbmVzdGVkUGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlICYmXHJcbiAgICAgICAgICAgICAgICAgIG5lc3RlZFBhZ2luYXRvckNvbmZpZy5yZWNvcmRzUGVyUGFnZSA+IDBcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkxpbmtDbGljayhyb3cpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYnRuLWxhYmVsLWxnLWJvbGQtMTYgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC1saW5rXCJcclxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5saW5rXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgdmlld0FsbCA/PyBcIlwiIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmVzdGVkLWVsZW1lbnQtZGV0YWlsX19mb290ZXItLWRldGFpbFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgIHNob3dOZXN0ZWRUYWJsZVBhZ2luYXRpb25JbmZvXHJcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGFibGVIZWFkZXJOZWVkZWRcIj5cclxuICAgICAgICA8dHJcclxuICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19oZWFkZXItcm93XCJcclxuICAgICAgICAgICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IGZhbHNlXCJcclxuICAgICAgICA+PC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDx0clxyXG4gICAgICAgIG1hdC1yb3dcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1kYXRhLXRhYmxlX19jZWxsLXJvd1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGkgKyAxKSAlIDIgPT09IDAgPyAnZXZlbicgOiAnb2RkJ1wiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiXHJcbiAgICAgICAgICByb3c/LmxlZ2VuZENvbG9yID8gZ2V0Um93Qm9yZGVyTGVmdENvbG9yKHJvdz8ubGVnZW5kQ29sb3IpIDogJydcclxuICAgICAgICBcIlxyXG4gICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zOyBsZXQgaSA9IGRhdGFJbmRleFwiXHJcbiAgICAgID48L3RyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzTmVzdGVkVGFibGVcIj5cclxuICAgICAgICA8dHJcclxuICAgICAgICAgIG1hdC1yb3dcclxuICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgZGV0YWlsczsgY29sdW1uczogWydleHBhbmRlZERldGFpbCddXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLXJvdy1leHBhbmRlZC10YWJsZS1kZXRhaWxcIlxyXG4gICAgICAgID48L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdGFibGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48cFxyXG4gIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX21lc3NhZ2UgaWVlZXNhLXRpdGxlLWxnLWJvbGQtMjQgdGV4dC1jZW50ZXIgcC01XCJcclxuICAqbmdJZj1cInRhYmxlRGF0YUluZm8gJiYgdGFibGVEYXRhSW5mby5sZW5ndGggPT09IDBcIlxyXG4+XHJcbiAge3sgbm9SZWNvcmRGb3VuZCB9fVxyXG48L3A+XHJcbjxkaXYgY2xhc3M9XCJyb3cgaWVlZXNhLWRhdGEtdGFibGVfX3BhZ2luYXRpb24tY29udGFpbmVyXCI+XHJcbiAgPGllZWVzYS1sZWdlbmRcclxuICAgIGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC01IGQtZmxleCBhbGlnbi1pdGVtcy1lbmQgcHgtNFwiXHJcbiAgICAqbmdJZj1cImxlZ2VuZHM/Lmxlbmd0aFwiXHJcbiAgICBbbmdDbGFzc109XCIhdGFibGVBY3Rpb25zPy5pc1BhZ2luYXRpb25OZWVkZWQgPyAnY29sLW1kLTEyJyA6ICcnXCJcclxuICAgIFtsZWdlbmRzXT1cImxlZ2VuZHNcIlxyXG4gICAgW2lzU29ydGluZ109XCJ0cnVlXCJcclxuICA+PC9pZWVlc2EtbGVnZW5kPlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwidGFibGVBY3Rpb25zPy5pc1BhZ2luYXRpb25OZWVkZWRcIlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZGF0YS10YWJsZV9fcGFnaW5hdGlvbiBkLWZsZXggZmxleC1yb3ctcmV2ZXJzZSBjb2wtc20tMTIgY29sLW1kLTdcIlxyXG4gICAgW25nQ2xhc3NdPVwiIWxlZ2VuZHM/Lmxlbmd0aCA/ICdjb2wtbWQtMTInIDogJydcIlxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5wYWdpbmF0aW9uXCJcclxuICA+XHJcbiAgICA8bWF0LXBhZ2luYXRvclxyXG4gICAgICBbcGFnZVNpemVdPVwicGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZVwiXHJcbiAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplT3B0aW9uc1wiXHJcbiAgICAgIChwYWdlKT1cImhhbmRsZVBhZ2luYXRpb24oJGV2ZW50KVwiXHJcbiAgICAgIFtsZW5ndGhdPVwicGFnaW5hdG9yQ29uZmlnPy50b3RhbFJlY29yZHNcIlxyXG4gICAgPjwvbWF0LXBhZ2luYXRvcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZVxyXG4gICN0YWJsZURhdGFcclxuICBsZXQtY29sdW1uPVwiY29sdW1uXCJcclxuICBsZXQtcm93PVwicm93XCJcclxuICBsZXQtdGFibGVSb3dBY3Rpb25zPVwidGFibGVSb3dBY3Rpb25zXCJcclxuPlxyXG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbj8uY29sdW1uVHlwZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJpc0NlbGxUZXh0T3ZlcmZsb3dFbGxpcHNpczsgdGhlbiBlbGxpcHNpc0NlbGw7IGVsc2UgdGV4dFdyYXBDZWxsXCJcclxuICAgICAgPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0V3JhcENlbGw+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgIGNsYXNzPVwibS0wIGllZWVzYS1ib2R5LWNvbG9yLXNtLTE0IGllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtLXRleHRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJjb2x1bW4/LmlzSFRNTENlbGxEYXRhXCJcclxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29sdW1uPy5jZWxsRGF0YShyb3cpIHwgc2FmZSA6IHNhZmVUeXBlXCJcclxuICAgICAgICA+PC9wPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uPy5pc0hUTUxDZWxsRGF0YVwiPlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgY2xhc3M9XCJtLTAgaWVlZXNhLWJvZHktY29sb3Itc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC0tdGV4dFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbHVtbj8uY2VsbERhdGEocm93KSB9fVxyXG4gICAgICAgICAgPC9wPjwvbmctY29udGFpbmVyXHJcbiAgICAgICAgPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2VsbGlwc2lzQ2VsbD5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgaWVlZXNhVGV4dFRydW5jYXRlZFxyXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwiY29sdW1uPy5jZWxsRGF0YShyb3cpXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC0tZWxsaXBzaXMgaWVlZXNhLWJvZHktY29sb3Itc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC0tdGV4dFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgY29sdW1uPy5jZWxsRGF0YShyb3cpIH19XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5MSU5LXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtY2VsbC1kYXRhXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgaXNFbGxpcHNpc1JlcXVpcmVkRm9yTGluaztcclxuICAgICAgICAgICAgdGhlbiBlbGxpcHNpc0NlbGw7XHJcbiAgICAgICAgICAgIGVsc2UgdGV4dFdyYXBDZWxsXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2VsbGlwc2lzQ2VsbD5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25MaW5rQ2xpY2socm93LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgaWVlZXNhVGV4dFRydW5jYXRlZFxyXG4gICAgICAgICAgICBbZWxlbWVudENsYXNzTmFtZVRvQWRkVG9vbHRpcF09XCInLm1kYy1idXR0b24gLm1kYy1idXR0b25fX2xhYmVsJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWJ0bi1sYWJlbC1sZy1ib2xkLTE2IGllZWVzYS1kYXRhLXRhYmxlX19jZWxsLWNvbnRlbnQtbGluayBpZWVlc2EtZGF0YS10YWJsZV9fY2VsbC1jb250ZW50LWxpbmstLWVsbGlwc2lzXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb2x1bW4/LmNlbGxEYXRhKHJvdylcIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJyb3c/LnRvb2xUaXBUZXh0ID8/IGNvbHVtbj8uY2VsbERhdGEocm93KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGNvbHVtbj8uY2VsbERhdGEocm93KSB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3RleHRXcmFwQ2VsbD5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25MaW5rQ2xpY2socm93LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYnRuLWxhYmVsLWxnLWJvbGQtMTYgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC1saW5rXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb2x1bW4/LmNlbGxEYXRhKHJvdylcIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJyb3c/LnRvb2xUaXBUZXh0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29sdW1uPy5jZWxsRGF0YShyb3cpIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uPy5pc0NvbnRlbnRVbmRlckxpbmtcIj5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWJvZHktc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC11bmRlci1saW5rXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4/LmlzSFRNTENlbGxEYXRhXCJcclxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJyb3c/LmNvbnRlbnRVbmRlckxpbmsgfCBzYWZlIDogc2FmZVR5cGVcIlxyXG4gICAgICAgICAgPjwvcD5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWJvZHktc20tMTQgaWVlZXNhLWRhdGEtdGFibGVfX2NlbGwtY29udGVudC11bmRlci1saW5rXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhY29sdW1uPy5pc0hUTUxDZWxsRGF0YVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHJvdz8uY29udGVudFVuZGVyTGluayB9fVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uTkVTVEVEX1RBQkxFXCI+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJyb3c/Lmhhc0NoaWxkcmVuXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIlxyXG4gICAgICAgICAgZXhwYW5kZWRFbGVtZW50ID0gZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyBudWxsIDogcm93O1xyXG4gICAgICAgICAgb25UYWJsZVJvd0V4cGFuc2lvbkNsaWNrKHJvdylcclxuICAgICAgICBcIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cIlxyXG4gICAgICAgICAgZXhwYW5kZWRFbGVtZW50ID09PSByb3cgPyByb3dFeHBhbmRCdXR0b24gOiByb3dDb2xsYXBzZUJ1dHRvblxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGU/LlNFTEVDVFwiPlxyXG4gICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgY2xhc3M9XCJjb2wtMlwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBvblNlbGVjdENsaWNrKHJvdykgOiBudWxsXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFJvd3MuaXNTZWxlY3RlZChyb3cpXCJcclxuICAgICAgICBbYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LmRhdGFUYWJsZT8uYXJpYUxhYmVsPy5zZWxlY3RcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJyb3c/LmRpc2FibGUgJiYgY2FuRGlzYWJsZUNoZWNrYm94XCJcclxuICAgICAgPlxyXG4gICAgICA8L21hdC1jaGVja2JveD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZT8uRURJVFwiPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwicm93RWRpdEJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkVkaXRDbGljayhyb3cpXCJcclxuICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5ERUxFVEVcIj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cInJvd0RlbGV0ZUJ1dHRvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkRlbGV0ZUNsaWNrKHJvdylcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGUuU0xJREVfVE9HR0xFXCI+XHJcbiAgICAgIDxpZWVlc2Etc2xpZGUtdG9nZ2xlXHJcbiAgICAgICAgW3NsaWRlVG9nZ2xlXT1cImNvbHVtbj8uY2VsbERhdGEocm93KVwiXHJcbiAgICAgICAgKHNsaWRlVG9nZ2xlQ2hhbmdlKT1cInJvd1NsaWRlVG9nZ2xlQ2hhbmdlKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgW2NhblNob3dJY29uXT1cInRydWVcIlxyXG4gICAgICA+PC9pZWVlc2Etc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlPy5BQ1RJT05TXCI+XHJcbiAgICAgIDxpZWVlc2EtbWVudVxyXG4gICAgICAgIFtidXR0b25dPVwicm93TWVudUFjdGlvbkljb25cIlxyXG4gICAgICAgIFttZW51SXRlbXNdPVwidGFibGVSb3dBY3Rpb25zID8/IHJvdy5tZW51QWN0aW9uXCJcclxuICAgICAgICAoY2xpY2spPVwibWVudUl0ZW1BY3Rpb24ocm93KVwiXHJcbiAgICAgICAgKG1lbnVJdGVtQ2xpY2spPVwib25Sb3dBY3Rpb25DbGljaygkZXZlbnQpXCJcclxuICAgICAgPjwvaWVlZXNhLW1lbnU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|