ngx-wapp-components 1.22.20 → 1.22.22
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.
|
@@ -152,10 +152,10 @@ export class WTreeTableComponent {
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
WTreeTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WTreeTableComponent, deps: [{ token: i1.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
155
|
-
WTreeTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: WTreeTableComponent, selector: "w-tree-table", inputs: { elements: "elements", rowsPerPage: "rowsPerPage", loading: "loading", wappTreeTableObject: "wappTreeTableObject", getChildFunction: "getChildFunction" }, outputs: { onActionButtonClick: "onActionButtonClick", onDeleteElementSelect: "onDeleteElementSelect", onCantDeleteElementWarn: "onCantDeleteElementWarn" }, providers: [TreeDragDropService, MessageService, ConfirmationService], viewQueries: [{ propertyName: "treeTable", first: true, predicate: ["treeTable"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"wappTreeTableObject\" [class.table-container]=\"wappTreeTableObject.tableContainer\">\r\n <p-treeTable *ngIf=\"!loading && elements; else loadingTable\"\r\n #treeTable [value]=\"elements\" \r\n class=\"w-table-styles\"\r\n [columns]=\"columns\" \r\n [scrollable]=\"true\"\r\n [tableStyle]=\"{'min-width': wappTreeTableObject.tableMinWidth!}\"\r\n [loading]=\"loadingElements\"\r\n [showLoader]=\"false\"\r\n [paginator]=\"true\"\r\n [rows]=\"rowsPerPage\"\r\n [rowHover]=\"true\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n styleClass=\"p-treetable-striped\">\r\n\r\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\"\r\n (ngModelChange)=\"updateShowingTableRows()\">\r\n </p-inputNumber>\r\n <span class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \r\n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns; index as i\" \r\n class=\"'{{col.field}}-field'\"\r\n [ttSortableColumn]=\"col.field\"\r\n [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\">\r\n <div [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignFlexClass(wappTreeTableObject.columnAlign[i]) : 'flex justify-content-start'\" >\r\n <div>\r\n {{ col.header }}\r\n </div>\r\n <div>\r\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\r\n </div>\r\n </div>\r\n </th>\r\n <th class=\"buttons-field\">\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n <tr>\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTreeTableObject.columnTypes!\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <img *ngIf=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\" \r\n [src]=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\" \r\n class=\"element-image-width\"/>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) }}\r\n </div>\r\n </div> \r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Number\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-right'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-right'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | currency }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <w-badge [label]=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\" [color]=\"'info'\"></w-badge> \r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(rowData, wappTreeTableObject.columns[i].field))\"></i>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ShortDate\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.d }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.LongDate\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.D }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeShortTime\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.g }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeLongTime\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.G }}\r\n </div>\r\n </div>\r\n </td>\r\n </ng-template>\r\n <td class=\"buttons-field\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\r\n <w-button [icon]=\"button.icon\" (onClick)=\"actionButtonClicked(button.id, rowData)\" [tooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" type=\"table\" [buttonClass]=\"'w-table-button-add '+ button.styleClass!\"></w-button>\r\n </span>\r\n <w-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi-trash\" (onClick)=\"confirmDeleteSelected($event, rowData)\" [tooltip]=\"wappTreeTableObject.deleteButtonTooltip!\" tooltipPosition=\"bottom\" type=\"table\" buttonClass=\"w-table-button-delete\"></w-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length\">\r\n {{wappTreeTableObject.noRecordsLabel}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-treeTable>\r\n\r\n <ng-template #loadingTable>\r\n <p-treeTable\r\n #treeTable [value]=\"tableSkeletons\" \r\n class=\"w-table-styles\"\r\n [columns]=\"columns\" \r\n [scrollable]=\"true\"\r\n [tableStyle]=\"{'min-width':'50rem'}\"\r\n [loading]=\"loadingElements\"\r\n [showLoader]=\"false\"\r\n [paginator]=\"true\"\r\n [rows]=\"rowsPerPage\"\r\n [rowHover]=\"true\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n styleClass=\"p-treetable-striped\">\r\n\r\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\"\r\n (ngModelChange)=\"updateShowingTableRows()\">\r\n </p-inputNumber>\r\n <span class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \r\n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns; index as i\" \r\n class=\"{{col.field}}-field'\"\r\n [ttSortableColumn]=\"col.field\">\r\n <div [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignFlexClass(wappTreeTableObject.columnAlign[i]) : 'flex justify-content-start'\">\r\n <div>\r\n {{ col.header }}\r\n </div>\r\n <div>\r\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\r\n </div>\r\n </div>\r\n </th>\r\n <th class=\"buttons-field\">\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n <tr>\r\n <td *ngFor=\"let col of columns; let i = index\" [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <p-skeleton></p-skeleton>\r\n </td>\r\n <td class=\"buttons-field\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\r\n <w-button [icon]=\"button.icon\" (onClick)=\"actionButtonClicked(button.id, rowData)\" [tooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [buttonClass]=\"'w-table-button-add ' + button.styleClass!\"></w-button>\r\n </span>\r\n <w-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi-trash\" (onClick)=\"confirmDeleteSelected($event, rowData)\" [tooltip]=\"'Tooltip' \" tooltipPosition=\"bottom\"type=\"table\" buttonClass=\"w-table-button-delete\"></w-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length\">\r\n {{wappTreeTableObject.noRecordsLabel}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-treeTable>\r\n </ng-template>\r\n</div>\r\n\r\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:2.6666666667rem;line-height:3rem;font-weight:700}.heading2{font-size:2.3333333333rem;line-height:2.6666666667rem;font-weight:700}.heading3{font-size:2rem;line-height:2.3333333333rem;font-weight:700}.heading4{font-size:1.6666666667rem;line-height:2rem;font-weight:700}.heading5,.w-sidebar-title-text{font-size:1.5rem;line-height:1.8333333333rem;font-weight:700}.heading6{font-size:1.3333333333rem;line-height:1.6666666667rem;font-weight:700}.subtitle1,.w-tab-text,.w-panel-title-text{font-size:1.1666666667rem;line-height:1.3333333333rem;font-weight:700}.subtitle2,.w-table-th-text,::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th,.w-panel-subtitle-text,.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled,.w-view-small-label-text-typography,.w-view-small-label-text,.w-button-small-text-label-text-typography,.w-button-small-text-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:600}.body,.w-image-file-uploader-navigators-text,.w-table-td-text,::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td,.w-chip-text,.w-panel-content,.w-input-small-select-options-text,.w-input-small-placeholder-text-typography,.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text,.wapp-input,.w-view-small-value-text-typography,.w-view-small-value-text,.w-button-small-label-text-typography,.w-button-small-tertiary-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:400}.caption,.w-input-error-alert-text,.w-input-warning-alert-text,.w-input-success-alert-text{font-size:.6666666667rem;line-height:1rem;font-weight:400}.light,.w-input-small-placeholder-text-only-color{font-size:.9166666667rem;line-height:1.0833333333rem;font-weight:300}.small,.w-button-small-label-text-typography-sm{font-size:.8333333333rem;line-height:1rem;font-weight:400}.textMainColor{color:#1f2224}.textSoftColor{color:#5f6468}.textSofterColor{color:#9aa0a7}.textSoftestColor{color:#e8ebee}.textInverseColor{color:#fff}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXSMDivider{height:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.panel-title-gap-divider{height:20px}.panel-section-gap-divider{height:32px}.input-vertical-gap-divider{height:24px}.input-label-gap-divider{height:6px}.focusedInput,::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{border:1px solid rgba(0,157,253,.25);box-shadow:0 0 10px #00b3eb40}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:1px solid #00b3eb}.hoveredInput{border-radius:8px;border:1px solid rgba(0,179,235,.5)}.input-generic-valid{border-radius:8px;border:1px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:1px solid #B3FFD3!important;box-shadow:0 0 8px #46ff9b80!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:1px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:1px solid #FFECB8!important;box-shadow:0 0 8px #ffcd4680!important;padding-left:16px}.input-generic-error-focus{border-radius:8px;border:1px solid #FFBDBD!important;box-shadow:0 0 8px #ff555580!important;padding-left:16px}.input-generic-error{border-radius:8px;border:1px solid #FFBDBD}.toggle-small-typography{font-size:12px;line-height:16px;font-weight:600}.w-button-small-label-text-typography,.w-button-small-tertiary-label-text,.w-button-small-label-text-typography-sm{font-weight:600}.w-button-small-tertiary-label-text,.w-button-small-text-label-text{color:#1f2224}.w-button-small-icon-text{font-size:12px;font-weight:600}.w-table-button-small-icon-text{font-size:12px;color:#9aa0a7}.w-control-button-small-label-text{font-size:12px;font-weight:600;line-height:16px}.w-control-button-x-small-icon-text{font-size:10px;font-weight:700}.w-control-button-small-icon-text,::ng-deep .w-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:700}.w-button-medium-label-text-typography,.w-button-medium-tertiary-label-text{font-size:16px;font-weight:600;line-height:16px}.w-button-medium-tertiary-label-text{color:#1f2224}.w-button-medium-icon-text{font-size:16px}.w-control-button-medium-label-text{font-size:14px;font-weight:600;line-height:16px}.w-control-button-medium-icon-text{font-size:12px;font-weight:700}.w-button-large-label-text-typography,.w-button-large-tertiary-label-text{font-size:20px;font-weight:600;line-height:24px}.w-button-large-tertiary-label-text{color:#1f2224}.w-button-x-small-label-text{font-size:10px;font-weight:600;line-height:10px}.w-button-small-only-label-text{font-size:12px;font-weight:600;line-height:16px}.w-button-large-icon-text{font-size:24px}.w-view-small-label-text{color:#1f2224}.w-view-small-value-text{color:#5f6468}.w-input-no-label-height{height:14px}.w-input-disabled{background-color:#f1f3f4;border-color:#e8ebee;opacity:1}.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled{height:-moz-fit-content;height:fit-content}.w-input-small-label-text,.w-input-small-label-disabled{color:#1f2224}.w-input-small-label-disabled{color:#9aa0a7}.w-input-small-label-text-content{padding:12px 8px 8px 0;margin:0}.w-input-small-label-text-content-no-top{padding-top:0}.w-input-small-placeholder-text,.wapp-input{color:#1f2224}.w-input-small-placeholder-text-only-color{color:#9aa0a7;line-height:1.3333333333rem}.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text-disabled-only-color{color:#5f6468}.w-input-small-text-icon,.w-input-small-select-options-text{color:#1f2224}.w-input-medium-label-text-typography,.w-input-medium-label-text,.w-input-medium-label-disabled{font-size:14px;font-weight:600;line-height:16px}.w-input-medium-label-text,.w-input-medium-label-disabled{color:#1f2224}.w-input-medium-label-disabled{color:#9aa0a7}.w-input-medium-placeholder-text-typography,.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text{font-size:16px;font-weight:400;line-height:24px}.w-input-medium-placeholder-text,.w-input-medium-placeholder-text-only-color{color:#1f2224}.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text-disabled-only-color{color:#5f6468}.w-input-medium-text-icon{color:#1f2224}.w-input-medium-select-options-text{font-size:16px;font-weight:400;line-height:24px;color:#1f2224}.w-input-success-alert-text{color:#00db5d;padding:8px 8px 0;margin-top:0}.w-input-warning-alert-text{color:#eeae00;padding:8px 8px 0;margin-top:0}.w-input-error-alert-text{color:#e50000;padding:8px 8px 0;margin-top:0}.w-input-alert-message-height{height:32px}.w-sidebar-title-text,.w-panel-title-text,.w-panel-subtitle-text{color:#1f2224}.w-panel-content{color:#5f6468}.w-tab-text,.w-chip-text{color:#1f2224}.w-badge-text{font-size:10px;font-weight:700;line-height:8px}.w-table-th-text,::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th{color:#1f2224}.w-table-td-text,::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td{color:#5f6468}.w-image-file-uploader-navigators-text{font-size:12px;color:#fff}.grid{margin:0}::ng-deep .p-tooltip,.p-tooltip{filter:0px 0px 1px 0px rgba(0,0,0,.1) inset,1px 1px 5px rgba(0,0,0,.06),1px 1px 1px rgba(0,0,0,.08)}::ng-deep .p-tooltip .p-tooltip-text,.p-tooltip .p-tooltip-text{background:#ffffff!important;color:#1f2224;padding:12px 16px;max-width:192px;width:max-content;margin-left:3px}::ng-deep .p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-right{margin-left:6px;width:max-content;transform:translateY(-1px)}::ng-deep .p-tooltip.p-tooltip-right .p-tooltip-arrow,.p-tooltip.p-tooltip-right .p-tooltip-arrow{border-right-color:#fff!important;top:50%;left:0;margin-top:-4px;border-width:4px 6px 4px 0!important}::ng-deep .p-tooltip.p-tooltip-bottom .p-tooltip-arrow,.p-tooltip.p-tooltip-bottom .p-tooltip-arrow{border-bottom-color:#fff!important;border-width:0 4px 6px 4px!important;margin-top:-3px}.table-container{padding:16px 20px 20px;background-color:#fff;border-radius:8px;box-shadow:0 0 1px #0000001a inset,0 4px 8px #005c7a0d,0 1px 3px #005c7a1a}.showing-per-page{color:#9aa0a7;font-weight:400}::ng-deep .w-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .w-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .w-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#9aa0a7;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator{border-width:0;padding:16px 20px 0}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#d6f2ff;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-current{color:#9aa0a7;padding:0}::ng-deep .w-table-styles .p-treetable .p-sortable-column .p-sortable-column-icon{color:#1f2224;margin-left:.5rem;font-size:10px!important;transform:translateY(-1px)}::ng-deep .w-table-styles .p-treetable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-treetable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th{background:#ffffff}::ng-deep .w-table-styles .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .w-table-styles .p-treetable .p-paginator-bottom{justify-content:normal!important}::ng-deep .w-table-styles .p-treetable .p-paginator-bottom>button{color:#9aa0a7}::ng-deep .w-table-styles .p-treetable .p-treetable-header{background:#ffffff;border-width:0px;padding:0 0 16px!important;font-weight:400}::ng-deep .w-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:1px 0px 1px 0px;border-color:#e8ebee;color:#dadce0;text-align:center}::ng-deep .w-table-styles .p-button.p-button-outlined{color:#e8ebee;border-width:1px}::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td{text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:4px 8px 3px}::ng-deep button{background-color:#fff}::ng-deep .w-table-styles .p-checkbox{height:16px;width:16px;border-width:1px}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box{height:16px;width:16px;border-radius:4px;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{background-color:#00b3eb;border:1px solid #e0f5fc}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:not(.p-highlight).p-focus{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .w-table-styles .p-inputtext:enabled:hover{border-color:#e8ebee}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8ebee;border:1px solid;background-color:#f1f3f4}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#1f2224}::ng-deep .w-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th:hover{color:#3c4043;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:1px;border-color:#e8ebee;gap:16px}::-webkit-input-placeholder{color:#5f6468}::-moz-placeholder{color:#5f6468}:-ms-input-placeholder{color:#5f6468}:-moz-placeholder{color:#5f6468}.wapp-input:hover{border-radius:8px!important;border:1px solid rgba(0,179,235,.5)!important}.wapp-input:focus{border:1px solid rgba(0,157,253,.25)!important;box-shadow:0 0 10px #00b3eb40!important;background-color:transparent!important}.pi-search{left:11px;color:#5f6468!important}.image-header{text-align:center!important}::ng-deep .w-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .w-table-styles .p-avatar{border:1px solid #e8ebee}::ng-deep .p-treetable .p-treetable-thead>tr>th{padding:16px 8px;border:1px solid #e8ebee;border-width:0px 0px 1px 0px;font-weight:700;color:#000;background:#ffffff;transition:box-shadow .2s}::ng-deep .p-treetable .p-treetable-tbody>tr{color:#9aa0a7}::ng-deep .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-treetable-scrollable-header-box{padding-right:0!important}::ng-deep .w-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background-color:#f8f9fa;border-color:#e8ebee}.element-image-width{max-height:32px;width:auto;vertical-align:middle}.w-table-buttons{gap:12px}\n"], dependencies: [{ kind: "directive", type: i2.InputText, selector: "[pInputText]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i6.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i7.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "component", type: i8.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "virtualRowHeight", "value", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i8.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i8.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "component", type: i8.TTSortIcon, selector: "p-treeTableSortIcon", inputs: ["field", "ariaLabelDesc", "ariaLabelAsc"] }, { kind: "component", type: i9.WButtonComponent, selector: "w-button", inputs: ["type", "label", "size", "icon", "iconPos", "tooltipPosition", "tooltip", "disabled", "loading", "buttonClass"], outputs: ["onClick"] }, { kind: "component", type: i10.WBadgeComponent, selector: "w-badge", inputs: ["label", "color", "tooltip", "maxWidthOverflow"] }, { kind: "pipe", type: i4.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i11.WDatePipe, name: "wappDate" }] });
|
|
155
|
+
WTreeTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: WTreeTableComponent, selector: "w-tree-table", inputs: { elements: "elements", rowsPerPage: "rowsPerPage", loading: "loading", wappTreeTableObject: "wappTreeTableObject", getChildFunction: "getChildFunction" }, outputs: { onActionButtonClick: "onActionButtonClick", onDeleteElementSelect: "onDeleteElementSelect", onCantDeleteElementWarn: "onCantDeleteElementWarn" }, providers: [TreeDragDropService, MessageService, ConfirmationService], viewQueries: [{ propertyName: "treeTable", first: true, predicate: ["treeTable"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"wappTreeTableObject\" [class.table-container]=\"wappTreeTableObject.tableContainer\">\r\n <p-treeTable *ngIf=\"!loading && elements; else loadingTable\"\r\n #treeTable [value]=\"elements\"\r\n class=\"w-table-styles\"\r\n [columns]=\"columns\"\r\n [scrollable]=\"true\"\r\n [tableStyle]=\"{'min-width': wappTreeTableObject.tableMinWidth!}\"\r\n [loading]=\"loadingElements\"\r\n [showLoader]=\"false\"\r\n [paginator]=\"true\"\r\n [rows]=\"rowsPerPage\"\r\n [rowHover]=\"true\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n styleClass=\"p-treetable-striped\">\r\n\r\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\"\r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\"\r\n incrementButtonClass=\"p-button-outlined\"\r\n incrementButtonIcon=\"pi pi-plus\"\r\n decrementButtonIcon=\"pi pi-minus\"\r\n mode=\"decimal\"\r\n (ngModelChange)=\"updateShowingTableRows()\">\r\n </p-inputNumber>\r\n <span class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\"\r\n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns; index as i\"\r\n class=\"'{{col.field}}-field'\"\r\n [ttSortableColumn]=\"col.field\"\r\n [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\">\r\n <div [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignFlexClass(wappTreeTableObject.columnAlign[i]) : 'flex justify-content-start'\" >\r\n <div>\r\n {{ col.header }}\r\n </div>\r\n <div>\r\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\r\n </div>\r\n </div>\r\n </th>\r\n <th class=\"buttons-field\">\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n <tr>\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTreeTableObject.columnTypes!\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <img *ngIf=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\"\r\n [src]=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\"\r\n class=\"element-image-width\"/>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignFlexClass(wappTreeTableObject.columnAlign[i]) : 'justify-content-start'\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Number\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-right'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-right'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | currency }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <w-badge [label]=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\" [color]=\"'info'\"></w-badge>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(rowData, wappTreeTableObject.columns[i].field))\"></i>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ShortDate\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.d }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.LongDate\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.D }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeShortTime\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.g }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeLongTime\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.G }}\r\n </div>\r\n </div>\r\n </td>\r\n </ng-template>\r\n <td class=\"buttons-field\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\r\n <w-button [icon]=\"button.icon\" (onClick)=\"actionButtonClicked(button.id, rowData)\" [tooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" type=\"table\" [buttonClass]=\"'w-table-button-add '+ button.styleClass!\"></w-button>\r\n </span>\r\n <w-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi-trash\" (onClick)=\"confirmDeleteSelected($event, rowData)\" [tooltip]=\"wappTreeTableObject.deleteButtonTooltip!\" tooltipPosition=\"bottom\" type=\"table\" buttonClass=\"w-table-button-delete\"></w-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length\">\r\n {{wappTreeTableObject.noRecordsLabel}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-treeTable>\r\n\r\n <ng-template #loadingTable>\r\n <p-treeTable\r\n #treeTable [value]=\"tableSkeletons\"\r\n class=\"w-table-styles\"\r\n [columns]=\"columns\"\r\n [scrollable]=\"true\"\r\n [tableStyle]=\"{'min-width':'50rem'}\"\r\n [loading]=\"loadingElements\"\r\n [showLoader]=\"false\"\r\n [paginator]=\"true\"\r\n [rows]=\"rowsPerPage\"\r\n [rowHover]=\"true\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n styleClass=\"p-treetable-striped\">\r\n\r\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\"\r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\"\r\n incrementButtonClass=\"p-button-outlined\"\r\n incrementButtonIcon=\"pi pi-plus\"\r\n decrementButtonIcon=\"pi pi-minus\"\r\n mode=\"decimal\"\r\n (ngModelChange)=\"updateShowingTableRows()\">\r\n </p-inputNumber>\r\n <span class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\"\r\n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns; index as i\"\r\n class=\"{{col.field}}-field'\"\r\n [ttSortableColumn]=\"col.field\">\r\n <div [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignFlexClass(wappTreeTableObject.columnAlign[i]) : 'flex justify-content-start'\">\r\n <div>\r\n {{ col.header }}\r\n </div>\r\n <div>\r\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\r\n </div>\r\n </div>\r\n </th>\r\n <th class=\"buttons-field\">\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n <tr>\r\n <td *ngFor=\"let col of columns; let i = index\" [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <p-skeleton></p-skeleton>\r\n </td>\r\n <td class=\"buttons-field\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\r\n <w-button [icon]=\"button.icon\" (onClick)=\"actionButtonClicked(button.id, rowData)\" [tooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [buttonClass]=\"'w-table-button-add ' + button.styleClass!\"></w-button>\r\n </span>\r\n <w-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi-trash\" (onClick)=\"confirmDeleteSelected($event, rowData)\" [tooltip]=\"'Tooltip' \" tooltipPosition=\"bottom\"type=\"table\" buttonClass=\"w-table-button-delete\"></w-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length\">\r\n {{wappTreeTableObject.noRecordsLabel}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-treeTable>\r\n </ng-template>\r\n</div>\r\n\r\n<p-confirmPopup></p-confirmPopup>\r\n", styles: [".heading1{font-size:2.6666666667rem;line-height:3rem;font-weight:700}.heading2{font-size:2.3333333333rem;line-height:2.6666666667rem;font-weight:700}.heading3{font-size:2rem;line-height:2.3333333333rem;font-weight:700}.heading4{font-size:1.6666666667rem;line-height:2rem;font-weight:700}.heading5,.w-sidebar-title-text{font-size:1.5rem;line-height:1.8333333333rem;font-weight:700}.heading6{font-size:1.3333333333rem;line-height:1.6666666667rem;font-weight:700}.subtitle1,.w-tab-text,.w-panel-title-text{font-size:1.1666666667rem;line-height:1.3333333333rem;font-weight:700}.subtitle2,.w-table-th-text,::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th,.w-panel-subtitle-text,.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled,.w-view-small-label-text-typography,.w-view-small-label-text,.w-button-small-text-label-text-typography,.w-button-small-text-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:600}.body,.w-image-file-uploader-navigators-text,.w-table-td-text,::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td,.w-chip-text,.w-panel-content,.w-input-small-select-options-text,.w-input-small-placeholder-text-typography,.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text,.wapp-input,.w-view-small-value-text-typography,.w-view-small-value-text,.w-button-small-label-text-typography,.w-button-small-tertiary-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:400}.caption,.w-input-error-alert-text,.w-input-warning-alert-text,.w-input-success-alert-text{font-size:.6666666667rem;line-height:1rem;font-weight:400}.light,.w-input-small-placeholder-text-only-color{font-size:.9166666667rem;line-height:1.0833333333rem;font-weight:300}.small,.w-button-small-label-text-typography-sm{font-size:.8333333333rem;line-height:1rem;font-weight:400}.textMainColor{color:#1f2224}.textSoftColor{color:#5f6468}.textSofterColor{color:#9aa0a7}.textSoftestColor{color:#e8ebee}.textInverseColor{color:#fff}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXSMDivider{height:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.panel-title-gap-divider{height:20px}.panel-section-gap-divider{height:32px}.input-vertical-gap-divider{height:24px}.input-label-gap-divider{height:6px}.focusedInput,::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{border:1px solid rgba(0,157,253,.25);box-shadow:0 0 10px #00b3eb40}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:1px solid #00b3eb}.hoveredInput{border-radius:8px;border:1px solid rgba(0,179,235,.5)}.input-generic-valid{border-radius:8px;border:1px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:1px solid #B3FFD3!important;box-shadow:0 0 8px #46ff9b80!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:1px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:1px solid #FFECB8!important;box-shadow:0 0 8px #ffcd4680!important;padding-left:16px}.input-generic-error-focus{border-radius:8px;border:1px solid #FFBDBD!important;box-shadow:0 0 8px #ff555580!important;padding-left:16px}.input-generic-error{border-radius:8px;border:1px solid #FFBDBD}.toggle-small-typography{font-size:12px;line-height:16px;font-weight:600}.w-button-small-label-text-typography,.w-button-small-tertiary-label-text,.w-button-small-label-text-typography-sm{font-weight:600}.w-button-small-tertiary-label-text,.w-button-small-text-label-text{color:#1f2224}.w-button-small-icon-text{font-size:12px;font-weight:600}.w-table-button-small-icon-text{font-size:12px;color:#9aa0a7}.w-control-button-small-label-text{font-size:12px;font-weight:600;line-height:16px}.w-control-button-x-small-icon-text{font-size:10px;font-weight:700}.w-control-button-small-icon-text,::ng-deep .w-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:700}.w-button-medium-label-text-typography,.w-button-medium-tertiary-label-text{font-size:16px;font-weight:600;line-height:16px}.w-button-medium-tertiary-label-text{color:#1f2224}.w-button-medium-icon-text{font-size:16px}.w-control-button-medium-label-text{font-size:14px;font-weight:600;line-height:16px}.w-control-button-medium-icon-text{font-size:12px;font-weight:700}.w-button-large-label-text-typography,.w-button-large-tertiary-label-text{font-size:20px;font-weight:600;line-height:24px}.w-button-large-tertiary-label-text{color:#1f2224}.w-button-x-small-label-text{font-size:10px;font-weight:600;line-height:10px}.w-button-small-only-label-text{font-size:12px;font-weight:600;line-height:16px}.w-button-large-icon-text{font-size:24px}.w-view-small-label-text{color:#1f2224}.w-view-small-value-text{color:#5f6468}.w-input-no-label-height{height:14px}.w-input-disabled{background-color:#f1f3f4;border-color:#e8ebee;opacity:1}.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled{height:-moz-fit-content;height:fit-content}.w-input-small-label-text,.w-input-small-label-disabled{color:#1f2224}.w-input-small-label-disabled{color:#9aa0a7}.w-input-small-label-text-content{padding:12px 8px 8px 0;margin:0}.w-input-small-label-text-content-no-top{padding-top:0}.w-input-small-placeholder-text,.wapp-input{color:#1f2224}.w-input-small-placeholder-text-only-color{color:#9aa0a7;line-height:1.3333333333rem}.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text-disabled-only-color{color:#5f6468}.w-input-small-text-icon,.w-input-small-select-options-text{color:#1f2224}.w-input-medium-label-text-typography,.w-input-medium-label-text,.w-input-medium-label-disabled{font-size:14px;font-weight:600;line-height:16px}.w-input-medium-label-text,.w-input-medium-label-disabled{color:#1f2224}.w-input-medium-label-disabled{color:#9aa0a7}.w-input-medium-placeholder-text-typography,.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text{font-size:16px;font-weight:400;line-height:24px}.w-input-medium-placeholder-text,.w-input-medium-placeholder-text-only-color{color:#1f2224}.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text-disabled-only-color{color:#5f6468}.w-input-medium-text-icon{color:#1f2224}.w-input-medium-select-options-text{font-size:16px;font-weight:400;line-height:24px;color:#1f2224}.w-input-success-alert-text{color:#00db5d;padding:8px 8px 0;margin-top:0}.w-input-warning-alert-text{color:#eeae00;padding:8px 8px 0;margin-top:0}.w-input-error-alert-text{color:#e50000;padding:8px 8px 0;margin-top:0}.w-input-alert-message-height{height:32px}.w-sidebar-title-text,.w-panel-title-text,.w-panel-subtitle-text{color:#1f2224}.w-panel-content{color:#5f6468}.w-tab-text,.w-chip-text{color:#1f2224}.w-badge-text{font-size:10px;font-weight:700;line-height:8px}.w-table-th-text,::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th{color:#1f2224}.w-table-td-text,::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td{color:#5f6468}.w-image-file-uploader-navigators-text{font-size:12px;color:#fff}.grid{margin:0}::ng-deep .p-tooltip,.p-tooltip{filter:0px 0px 1px 0px rgba(0,0,0,.1) inset,1px 1px 5px rgba(0,0,0,.06),1px 1px 1px rgba(0,0,0,.08)}::ng-deep .p-tooltip .p-tooltip-text,.p-tooltip .p-tooltip-text{background:#ffffff!important;color:#1f2224;padding:12px 16px;max-width:192px;width:max-content;margin-left:3px}::ng-deep .p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-right{margin-left:6px;width:max-content;transform:translateY(-1px)}::ng-deep .p-tooltip.p-tooltip-right .p-tooltip-arrow,.p-tooltip.p-tooltip-right .p-tooltip-arrow{border-right-color:#fff!important;top:50%;left:0;margin-top:-4px;border-width:4px 6px 4px 0!important}::ng-deep .p-tooltip.p-tooltip-bottom .p-tooltip-arrow,.p-tooltip.p-tooltip-bottom .p-tooltip-arrow{border-bottom-color:#fff!important;border-width:0 4px 6px 4px!important;margin-top:-3px}.table-container{padding:16px 20px 20px;background-color:#fff;border-radius:8px;box-shadow:0 0 1px #0000001a inset,0 4px 8px #005c7a0d,0 1px 3px #005c7a1a}.showing-per-page{color:#9aa0a7;font-weight:400}::ng-deep .w-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .w-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .w-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#9aa0a7;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator{border-width:0;padding:16px 20px 0}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#d6f2ff;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-current{color:#9aa0a7;padding:0}::ng-deep .w-table-styles .p-treetable .p-sortable-column .p-sortable-column-icon{color:#1f2224;margin-left:.5rem;font-size:10px!important;transform:translateY(-1px)}::ng-deep .w-table-styles .p-treetable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-treetable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th{background:#ffffff}::ng-deep .w-table-styles .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .w-table-styles .p-treetable .p-paginator-bottom{justify-content:normal!important}::ng-deep .w-table-styles .p-treetable .p-paginator-bottom>button{color:#9aa0a7}::ng-deep .w-table-styles .p-treetable .p-treetable-header{background:#ffffff;border-width:0px;padding:0 0 16px!important;font-weight:400}::ng-deep .w-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:1px 0px 1px 0px;border-color:#e8ebee;color:#dadce0;text-align:center}::ng-deep .w-table-styles .p-button.p-button-outlined{color:#e8ebee;border-width:1px}::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td{text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:4px 8px 3px}::ng-deep button{background-color:#fff}::ng-deep .w-table-styles .p-checkbox{height:16px;width:16px;border-width:1px}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box{height:16px;width:16px;border-radius:4px;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{background-color:#00b3eb;border:1px solid #e0f5fc}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:not(.p-highlight).p-focus{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .w-table-styles .p-inputtext:enabled:hover{border-color:#e8ebee}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8ebee;border:1px solid;background-color:#f1f3f4}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#1f2224}::ng-deep .w-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th:hover{color:#3c4043;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:1px;border-color:#e8ebee;gap:16px}::-webkit-input-placeholder{color:#5f6468}::-moz-placeholder{color:#5f6468}:-ms-input-placeholder{color:#5f6468}:-moz-placeholder{color:#5f6468}.wapp-input:hover{border-radius:8px!important;border:1px solid rgba(0,179,235,.5)!important}.wapp-input:focus{border:1px solid rgba(0,157,253,.25)!important;box-shadow:0 0 10px #00b3eb40!important;background-color:transparent!important}.pi-search{left:11px;color:#5f6468!important}.image-header{text-align:center!important}::ng-deep .w-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .w-table-styles .p-avatar{border:1px solid #e8ebee}::ng-deep .p-treetable .p-treetable-thead>tr>th{padding:16px 8px;border:1px solid #e8ebee;border-width:0px 0px 1px 0px;font-weight:700;color:#000;background:#ffffff;transition:box-shadow .2s}::ng-deep .p-treetable .p-treetable-tbody>tr{color:#9aa0a7}::ng-deep .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-treetable-scrollable-header-box{padding-right:0!important}::ng-deep .w-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background-color:#f8f9fa;border-color:#e8ebee}.element-image-width{max-height:32px;width:auto;vertical-align:middle}.w-table-buttons{gap:12px}\n"], dependencies: [{ kind: "directive", type: i2.InputText, selector: "[pInputText]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i6.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i7.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "component", type: i8.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "virtualRowHeight", "value", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i8.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i8.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "component", type: i8.TTSortIcon, selector: "p-treeTableSortIcon", inputs: ["field", "ariaLabelDesc", "ariaLabelAsc"] }, { kind: "component", type: i9.WButtonComponent, selector: "w-button", inputs: ["type", "label", "size", "icon", "iconPos", "tooltipPosition", "tooltip", "disabled", "loading", "buttonClass"], outputs: ["onClick"] }, { kind: "component", type: i10.WBadgeComponent, selector: "w-badge", inputs: ["label", "color", "tooltip", "maxWidthOverflow"] }, { kind: "pipe", type: i4.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i11.WDatePipe, name: "wappDate" }] });
|
|
156
156
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WTreeTableComponent, decorators: [{
|
|
157
157
|
type: Component,
|
|
158
|
-
args: [{ selector: 'w-tree-table', providers: [TreeDragDropService, MessageService, ConfirmationService], template: "<div *ngIf=\"wappTreeTableObject\" [class.table-container]=\"wappTreeTableObject.tableContainer\">\r\n <p-treeTable *ngIf=\"!loading && elements; else loadingTable\"\r\n #treeTable [value]=\"elements\" \r\n class=\"w-table-styles\"\r\n [columns]=\"columns\" \r\n [scrollable]=\"true\"\r\n [tableStyle]=\"{'min-width': wappTreeTableObject.tableMinWidth!}\"\r\n [loading]=\"loadingElements\"\r\n [showLoader]=\"false\"\r\n [paginator]=\"true\"\r\n [rows]=\"rowsPerPage\"\r\n [rowHover]=\"true\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n styleClass=\"p-treetable-striped\">\r\n\r\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\"\r\n (ngModelChange)=\"updateShowingTableRows()\">\r\n </p-inputNumber>\r\n <span class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \r\n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns; index as i\" \r\n class=\"'{{col.field}}-field'\"\r\n [ttSortableColumn]=\"col.field\"\r\n [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\">\r\n <div [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignFlexClass(wappTreeTableObject.columnAlign[i]) : 'flex justify-content-start'\" >\r\n <div>\r\n {{ col.header }}\r\n </div>\r\n <div>\r\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\r\n </div>\r\n </div>\r\n </th>\r\n <th class=\"buttons-field\">\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n <tr>\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTreeTableObject.columnTypes!\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <img *ngIf=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\" \r\n [src]=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\" \r\n class=\"element-image-width\"/>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) }}\r\n </div>\r\n </div> \r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Number\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-right'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-right'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | currency }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <w-badge [label]=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\" [color]=\"'info'\"></w-badge> \r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(rowData, wappTreeTableObject.columns[i].field))\"></i>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ShortDate\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.d }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.LongDate\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.D }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeShortTime\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.g }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeLongTime\" \r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.G }}\r\n </div>\r\n </div>\r\n </td>\r\n </ng-template>\r\n <td class=\"buttons-field\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\r\n <w-button [icon]=\"button.icon\" (onClick)=\"actionButtonClicked(button.id, rowData)\" [tooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" type=\"table\" [buttonClass]=\"'w-table-button-add '+ button.styleClass!\"></w-button>\r\n </span>\r\n <w-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi-trash\" (onClick)=\"confirmDeleteSelected($event, rowData)\" [tooltip]=\"wappTreeTableObject.deleteButtonTooltip!\" tooltipPosition=\"bottom\" type=\"table\" buttonClass=\"w-table-button-delete\"></w-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length\">\r\n {{wappTreeTableObject.noRecordsLabel}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-treeTable>\r\n\r\n <ng-template #loadingTable>\r\n <p-treeTable\r\n #treeTable [value]=\"tableSkeletons\" \r\n class=\"w-table-styles\"\r\n [columns]=\"columns\" \r\n [scrollable]=\"true\"\r\n [tableStyle]=\"{'min-width':'50rem'}\"\r\n [loading]=\"loadingElements\"\r\n [showLoader]=\"false\"\r\n [paginator]=\"true\"\r\n [rows]=\"rowsPerPage\"\r\n [rowHover]=\"true\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n styleClass=\"p-treetable-striped\">\r\n\r\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber \r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\" \r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\" \r\n incrementButtonClass=\"p-button-outlined\" \r\n incrementButtonIcon=\"pi pi-plus\" \r\n decrementButtonIcon=\"pi pi-minus\" \r\n mode=\"decimal\"\r\n (ngModelChange)=\"updateShowingTableRows()\">\r\n </p-inputNumber>\r\n <span class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\" \r\n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns; index as i\" \r\n class=\"{{col.field}}-field'\"\r\n [ttSortableColumn]=\"col.field\">\r\n <div [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignFlexClass(wappTreeTableObject.columnAlign[i]) : 'flex justify-content-start'\">\r\n <div>\r\n {{ col.header }}\r\n </div>\r\n <div>\r\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\r\n </div>\r\n </div>\r\n </th>\r\n <th class=\"buttons-field\">\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n <tr>\r\n <td *ngFor=\"let col of columns; let i = index\" [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <p-skeleton></p-skeleton>\r\n </td>\r\n <td class=\"buttons-field\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\r\n <w-button [icon]=\"button.icon\" (onClick)=\"actionButtonClicked(button.id, rowData)\" [tooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [buttonClass]=\"'w-table-button-add ' + button.styleClass!\"></w-button>\r\n </span>\r\n <w-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi-trash\" (onClick)=\"confirmDeleteSelected($event, rowData)\" [tooltip]=\"'Tooltip' \" tooltipPosition=\"bottom\"type=\"table\" buttonClass=\"w-table-button-delete\"></w-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length\">\r\n {{wappTreeTableObject.noRecordsLabel}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-treeTable>\r\n </ng-template>\r\n</div>\r\n\r\n<p-confirmPopup></p-confirmPopup>", styles: [".heading1{font-size:2.6666666667rem;line-height:3rem;font-weight:700}.heading2{font-size:2.3333333333rem;line-height:2.6666666667rem;font-weight:700}.heading3{font-size:2rem;line-height:2.3333333333rem;font-weight:700}.heading4{font-size:1.6666666667rem;line-height:2rem;font-weight:700}.heading5,.w-sidebar-title-text{font-size:1.5rem;line-height:1.8333333333rem;font-weight:700}.heading6{font-size:1.3333333333rem;line-height:1.6666666667rem;font-weight:700}.subtitle1,.w-tab-text,.w-panel-title-text{font-size:1.1666666667rem;line-height:1.3333333333rem;font-weight:700}.subtitle2,.w-table-th-text,::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th,.w-panel-subtitle-text,.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled,.w-view-small-label-text-typography,.w-view-small-label-text,.w-button-small-text-label-text-typography,.w-button-small-text-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:600}.body,.w-image-file-uploader-navigators-text,.w-table-td-text,::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td,.w-chip-text,.w-panel-content,.w-input-small-select-options-text,.w-input-small-placeholder-text-typography,.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text,.wapp-input,.w-view-small-value-text-typography,.w-view-small-value-text,.w-button-small-label-text-typography,.w-button-small-tertiary-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:400}.caption,.w-input-error-alert-text,.w-input-warning-alert-text,.w-input-success-alert-text{font-size:.6666666667rem;line-height:1rem;font-weight:400}.light,.w-input-small-placeholder-text-only-color{font-size:.9166666667rem;line-height:1.0833333333rem;font-weight:300}.small,.w-button-small-label-text-typography-sm{font-size:.8333333333rem;line-height:1rem;font-weight:400}.textMainColor{color:#1f2224}.textSoftColor{color:#5f6468}.textSofterColor{color:#9aa0a7}.textSoftestColor{color:#e8ebee}.textInverseColor{color:#fff}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXSMDivider{height:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.panel-title-gap-divider{height:20px}.panel-section-gap-divider{height:32px}.input-vertical-gap-divider{height:24px}.input-label-gap-divider{height:6px}.focusedInput,::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{border:1px solid rgba(0,157,253,.25);box-shadow:0 0 10px #00b3eb40}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:1px solid #00b3eb}.hoveredInput{border-radius:8px;border:1px solid rgba(0,179,235,.5)}.input-generic-valid{border-radius:8px;border:1px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:1px solid #B3FFD3!important;box-shadow:0 0 8px #46ff9b80!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:1px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:1px solid #FFECB8!important;box-shadow:0 0 8px #ffcd4680!important;padding-left:16px}.input-generic-error-focus{border-radius:8px;border:1px solid #FFBDBD!important;box-shadow:0 0 8px #ff555580!important;padding-left:16px}.input-generic-error{border-radius:8px;border:1px solid #FFBDBD}.toggle-small-typography{font-size:12px;line-height:16px;font-weight:600}.w-button-small-label-text-typography,.w-button-small-tertiary-label-text,.w-button-small-label-text-typography-sm{font-weight:600}.w-button-small-tertiary-label-text,.w-button-small-text-label-text{color:#1f2224}.w-button-small-icon-text{font-size:12px;font-weight:600}.w-table-button-small-icon-text{font-size:12px;color:#9aa0a7}.w-control-button-small-label-text{font-size:12px;font-weight:600;line-height:16px}.w-control-button-x-small-icon-text{font-size:10px;font-weight:700}.w-control-button-small-icon-text,::ng-deep .w-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:700}.w-button-medium-label-text-typography,.w-button-medium-tertiary-label-text{font-size:16px;font-weight:600;line-height:16px}.w-button-medium-tertiary-label-text{color:#1f2224}.w-button-medium-icon-text{font-size:16px}.w-control-button-medium-label-text{font-size:14px;font-weight:600;line-height:16px}.w-control-button-medium-icon-text{font-size:12px;font-weight:700}.w-button-large-label-text-typography,.w-button-large-tertiary-label-text{font-size:20px;font-weight:600;line-height:24px}.w-button-large-tertiary-label-text{color:#1f2224}.w-button-x-small-label-text{font-size:10px;font-weight:600;line-height:10px}.w-button-small-only-label-text{font-size:12px;font-weight:600;line-height:16px}.w-button-large-icon-text{font-size:24px}.w-view-small-label-text{color:#1f2224}.w-view-small-value-text{color:#5f6468}.w-input-no-label-height{height:14px}.w-input-disabled{background-color:#f1f3f4;border-color:#e8ebee;opacity:1}.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled{height:-moz-fit-content;height:fit-content}.w-input-small-label-text,.w-input-small-label-disabled{color:#1f2224}.w-input-small-label-disabled{color:#9aa0a7}.w-input-small-label-text-content{padding:12px 8px 8px 0;margin:0}.w-input-small-label-text-content-no-top{padding-top:0}.w-input-small-placeholder-text,.wapp-input{color:#1f2224}.w-input-small-placeholder-text-only-color{color:#9aa0a7;line-height:1.3333333333rem}.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text-disabled-only-color{color:#5f6468}.w-input-small-text-icon,.w-input-small-select-options-text{color:#1f2224}.w-input-medium-label-text-typography,.w-input-medium-label-text,.w-input-medium-label-disabled{font-size:14px;font-weight:600;line-height:16px}.w-input-medium-label-text,.w-input-medium-label-disabled{color:#1f2224}.w-input-medium-label-disabled{color:#9aa0a7}.w-input-medium-placeholder-text-typography,.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text{font-size:16px;font-weight:400;line-height:24px}.w-input-medium-placeholder-text,.w-input-medium-placeholder-text-only-color{color:#1f2224}.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text-disabled-only-color{color:#5f6468}.w-input-medium-text-icon{color:#1f2224}.w-input-medium-select-options-text{font-size:16px;font-weight:400;line-height:24px;color:#1f2224}.w-input-success-alert-text{color:#00db5d;padding:8px 8px 0;margin-top:0}.w-input-warning-alert-text{color:#eeae00;padding:8px 8px 0;margin-top:0}.w-input-error-alert-text{color:#e50000;padding:8px 8px 0;margin-top:0}.w-input-alert-message-height{height:32px}.w-sidebar-title-text,.w-panel-title-text,.w-panel-subtitle-text{color:#1f2224}.w-panel-content{color:#5f6468}.w-tab-text,.w-chip-text{color:#1f2224}.w-badge-text{font-size:10px;font-weight:700;line-height:8px}.w-table-th-text,::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th{color:#1f2224}.w-table-td-text,::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td{color:#5f6468}.w-image-file-uploader-navigators-text{font-size:12px;color:#fff}.grid{margin:0}::ng-deep .p-tooltip,.p-tooltip{filter:0px 0px 1px 0px rgba(0,0,0,.1) inset,1px 1px 5px rgba(0,0,0,.06),1px 1px 1px rgba(0,0,0,.08)}::ng-deep .p-tooltip .p-tooltip-text,.p-tooltip .p-tooltip-text{background:#ffffff!important;color:#1f2224;padding:12px 16px;max-width:192px;width:max-content;margin-left:3px}::ng-deep .p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-right{margin-left:6px;width:max-content;transform:translateY(-1px)}::ng-deep .p-tooltip.p-tooltip-right .p-tooltip-arrow,.p-tooltip.p-tooltip-right .p-tooltip-arrow{border-right-color:#fff!important;top:50%;left:0;margin-top:-4px;border-width:4px 6px 4px 0!important}::ng-deep .p-tooltip.p-tooltip-bottom .p-tooltip-arrow,.p-tooltip.p-tooltip-bottom .p-tooltip-arrow{border-bottom-color:#fff!important;border-width:0 4px 6px 4px!important;margin-top:-3px}.table-container{padding:16px 20px 20px;background-color:#fff;border-radius:8px;box-shadow:0 0 1px #0000001a inset,0 4px 8px #005c7a0d,0 1px 3px #005c7a1a}.showing-per-page{color:#9aa0a7;font-weight:400}::ng-deep .w-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .w-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .w-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#9aa0a7;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator{border-width:0;padding:16px 20px 0}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#d6f2ff;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-current{color:#9aa0a7;padding:0}::ng-deep .w-table-styles .p-treetable .p-sortable-column .p-sortable-column-icon{color:#1f2224;margin-left:.5rem;font-size:10px!important;transform:translateY(-1px)}::ng-deep .w-table-styles .p-treetable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-treetable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th{background:#ffffff}::ng-deep .w-table-styles .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .w-table-styles .p-treetable .p-paginator-bottom{justify-content:normal!important}::ng-deep .w-table-styles .p-treetable .p-paginator-bottom>button{color:#9aa0a7}::ng-deep .w-table-styles .p-treetable .p-treetable-header{background:#ffffff;border-width:0px;padding:0 0 16px!important;font-weight:400}::ng-deep .w-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:1px 0px 1px 0px;border-color:#e8ebee;color:#dadce0;text-align:center}::ng-deep .w-table-styles .p-button.p-button-outlined{color:#e8ebee;border-width:1px}::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td{text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:4px 8px 3px}::ng-deep button{background-color:#fff}::ng-deep .w-table-styles .p-checkbox{height:16px;width:16px;border-width:1px}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box{height:16px;width:16px;border-radius:4px;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{background-color:#00b3eb;border:1px solid #e0f5fc}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:not(.p-highlight).p-focus{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .w-table-styles .p-inputtext:enabled:hover{border-color:#e8ebee}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8ebee;border:1px solid;background-color:#f1f3f4}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#1f2224}::ng-deep .w-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th:hover{color:#3c4043;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:1px;border-color:#e8ebee;gap:16px}::-webkit-input-placeholder{color:#5f6468}::-moz-placeholder{color:#5f6468}:-ms-input-placeholder{color:#5f6468}:-moz-placeholder{color:#5f6468}.wapp-input:hover{border-radius:8px!important;border:1px solid rgba(0,179,235,.5)!important}.wapp-input:focus{border:1px solid rgba(0,157,253,.25)!important;box-shadow:0 0 10px #00b3eb40!important;background-color:transparent!important}.pi-search{left:11px;color:#5f6468!important}.image-header{text-align:center!important}::ng-deep .w-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .w-table-styles .p-avatar{border:1px solid #e8ebee}::ng-deep .p-treetable .p-treetable-thead>tr>th{padding:16px 8px;border:1px solid #e8ebee;border-width:0px 0px 1px 0px;font-weight:700;color:#000;background:#ffffff;transition:box-shadow .2s}::ng-deep .p-treetable .p-treetable-tbody>tr{color:#9aa0a7}::ng-deep .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-treetable-scrollable-header-box{padding-right:0!important}::ng-deep .w-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background-color:#f8f9fa;border-color:#e8ebee}.element-image-width{max-height:32px;width:auto;vertical-align:middle}.w-table-buttons{gap:12px}\n"] }]
|
|
158
|
+
args: [{ selector: 'w-tree-table', providers: [TreeDragDropService, MessageService, ConfirmationService], template: "<div *ngIf=\"wappTreeTableObject\" [class.table-container]=\"wappTreeTableObject.tableContainer\">\r\n <p-treeTable *ngIf=\"!loading && elements; else loadingTable\"\r\n #treeTable [value]=\"elements\"\r\n class=\"w-table-styles\"\r\n [columns]=\"columns\"\r\n [scrollable]=\"true\"\r\n [tableStyle]=\"{'min-width': wappTreeTableObject.tableMinWidth!}\"\r\n [loading]=\"loadingElements\"\r\n [showLoader]=\"false\"\r\n [paginator]=\"true\"\r\n [rows]=\"rowsPerPage\"\r\n [rowHover]=\"true\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n styleClass=\"p-treetable-striped\">\r\n\r\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\"\r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\"\r\n incrementButtonClass=\"p-button-outlined\"\r\n incrementButtonIcon=\"pi pi-plus\"\r\n decrementButtonIcon=\"pi pi-minus\"\r\n mode=\"decimal\"\r\n (ngModelChange)=\"updateShowingTableRows()\">\r\n </p-inputNumber>\r\n <span class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\"\r\n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns; index as i\"\r\n class=\"'{{col.field}}-field'\"\r\n [ttSortableColumn]=\"col.field\"\r\n [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\">\r\n <div [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignFlexClass(wappTreeTableObject.columnAlign[i]) : 'flex justify-content-start'\" >\r\n <div>\r\n {{ col.header }}\r\n </div>\r\n <div>\r\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\r\n </div>\r\n </div>\r\n </th>\r\n <th class=\"buttons-field\">\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n <tr>\r\n <ng-template ngFor let-columnType [ngForOf]=\"wappTreeTableObject.columnTypes!\" let-i=\"index\">\r\n <td *ngIf=\"columnType == tableColumnTypes.Image\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\" [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <img *ngIf=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\"\r\n [src]=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\"\r\n class=\"element-image-width\"/>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Text\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignFlexClass(wappTreeTableObject.columnAlign[i]) : 'justify-content-start'\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Number\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-right'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Currency\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-right'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | currency }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Badge\" [style]=\"'width: '+wappTreeTableObject.columnWidths[i]\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <w-badge [label]=\"readProperty(rowData, wappTreeTableObject.columns[i].field)\" [color]=\"'info'\"></w-badge>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Boolean\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-center'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n <i class=\"pi\" [ngClass]=\"getBooleanColumnClass(i, readProperty(rowData, wappTreeTableObject.columns[i].field))\"></i>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.Date\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.ShortDate\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.d }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.LongDate\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.D }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeShortTime\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.g }}\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"columnType == tableColumnTypes.GeneralDateTimeLongTime\"\r\n [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <div [class.flex]=\"i === 0\" [class.justify-content-between]=\"i === 0\">\r\n <div [class.align-content-center]=\"i === 0\">\r\n <p-treeTableToggler [rowNode]=\"rowNode\" *ngIf=\"i === 0\"></p-treeTableToggler>\r\n </div>\r\n <div [class.my-auto]=\"i === 0\">\r\n {{ readProperty(rowData, wappTreeTableObject.columns[i].field) | wappDate : wappDateFormat.G }}\r\n </div>\r\n </div>\r\n </td>\r\n </ng-template>\r\n <td class=\"buttons-field\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\r\n <w-button [icon]=\"button.icon\" (onClick)=\"actionButtonClicked(button.id, rowData)\" [tooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" type=\"table\" [buttonClass]=\"'w-table-button-add '+ button.styleClass!\"></w-button>\r\n </span>\r\n <w-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi-trash\" (onClick)=\"confirmDeleteSelected($event, rowData)\" [tooltip]=\"wappTreeTableObject.deleteButtonTooltip!\" tooltipPosition=\"bottom\" type=\"table\" buttonClass=\"w-table-button-delete\"></w-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length\">\r\n {{wappTreeTableObject.noRecordsLabel}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-treeTable>\r\n\r\n <ng-template #loadingTable>\r\n <p-treeTable\r\n #treeTable [value]=\"tableSkeletons\"\r\n class=\"w-table-styles\"\r\n [columns]=\"columns\"\r\n [scrollable]=\"true\"\r\n [tableStyle]=\"{'min-width':'50rem'}\"\r\n [loading]=\"loadingElements\"\r\n [showLoader]=\"false\"\r\n [paginator]=\"true\"\r\n [rows]=\"rowsPerPage\"\r\n [rowHover]=\"true\"\r\n [totalRecords]=\"totalRecords\"\r\n [showCurrentPageReport]=\"true\"\r\n [currentPageReportTemplate]=\"wappTreeTableObject.currentPageReportTemplate ? wappTreeTableObject.currentPageReportTemplate + ' ' + rowsPerPage + ' de ' + totalRecords! : 'Showing ' + rowsPerPage + ' of ' + totalRecords!\"\r\n styleClass=\"p-treetable-striped\">\r\n\r\n <ng-template *ngIf=\"true\" pTemplate=\"caption\">\r\n <span class=\"flex align-items-center table-paginator p-0\">\r\n <span class=\"showing-per-page\"> {{wappTreeTableObject.currentPageReportTemplate}} </span>\r\n <p-inputNumber\r\n class=\"pl-2 showing-per-page\" [size]=\"1\" [(ngModel)]=\"rowsPerPage\" [showButtons]=\"true\"\r\n buttonLayout=\"horizontal\" inputId=\"horizontal\" spinnerMode=\"horizontal\" [step]=\"1\" [min]=\"1\" [max]=\"totalRecords!\"\r\n decrementButtonClass=\"p-button-outlined\"\r\n incrementButtonClass=\"p-button-outlined\"\r\n incrementButtonIcon=\"pi pi-plus\"\r\n decrementButtonIcon=\"pi pi-minus\"\r\n mode=\"decimal\"\r\n (ngModelChange)=\"updateShowingTableRows()\">\r\n </p-inputNumber>\r\n <span class=\"p-input-icon-left ml-auto\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" #filter (input)=\"filterGlobal(treeTable, $event)\"\r\n [placeholder]=\"wappTreeTableObject.searchPlaceholder\" class=\"w-full height-input wapp-input\"/>\r\n </span>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns; index as i\"\r\n class=\"{{col.field}}-field'\"\r\n [ttSortableColumn]=\"col.field\">\r\n <div [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignFlexClass(wappTreeTableObject.columnAlign[i]) : 'flex justify-content-start'\">\r\n <div>\r\n {{ col.header }}\r\n </div>\r\n <div>\r\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\r\n </div>\r\n </div>\r\n </th>\r\n <th class=\"buttons-field\">\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\" let-rowNode let-rowData=\"rowData\" let-columns=\"columns\">\r\n <tr>\r\n <td *ngFor=\"let col of columns; let i = index\" [ngClass]=\"wappTreeTableObject.columnAlign ? getTableColumnAlignClass(wappTreeTableObject.columnAlign[i]) : 'text-left'\">\r\n <p-skeleton></p-skeleton>\r\n </td>\r\n <td class=\"buttons-field\">\r\n <div class=\"w-table-buttons flex justify-content-end\">\r\n <span *ngFor=\"let button of wappTreeTableObject.actionButtons\">\r\n <w-button [icon]=\"button.icon\" (onClick)=\"actionButtonClicked(button.id, rowData)\" [tooltip]=\"button.tooltip!\" [tooltipPosition]=\"button.tooltipPosition!\" [buttonClass]=\"'w-table-button-add ' + button.styleClass!\"></w-button>\r\n </span>\r\n <w-button *ngIf=\"wappTreeTableObject.hasDeleteButton\" icon=\"pi-trash\" (onClick)=\"confirmDeleteSelected($event, rowData)\" [tooltip]=\"'Tooltip' \" tooltipPosition=\"bottom\"type=\"table\" buttonClass=\"w-table-button-delete\"></w-button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\" let-columns>\r\n <tr>\r\n <td [attr.colspan]=\"columns.length\">\r\n {{wappTreeTableObject.noRecordsLabel}}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-treeTable>\r\n </ng-template>\r\n</div>\r\n\r\n<p-confirmPopup></p-confirmPopup>\r\n", styles: [".heading1{font-size:2.6666666667rem;line-height:3rem;font-weight:700}.heading2{font-size:2.3333333333rem;line-height:2.6666666667rem;font-weight:700}.heading3{font-size:2rem;line-height:2.3333333333rem;font-weight:700}.heading4{font-size:1.6666666667rem;line-height:2rem;font-weight:700}.heading5,.w-sidebar-title-text{font-size:1.5rem;line-height:1.8333333333rem;font-weight:700}.heading6{font-size:1.3333333333rem;line-height:1.6666666667rem;font-weight:700}.subtitle1,.w-tab-text,.w-panel-title-text{font-size:1.1666666667rem;line-height:1.3333333333rem;font-weight:700}.subtitle2,.w-table-th-text,::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th,.w-panel-subtitle-text,.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled,.w-view-small-label-text-typography,.w-view-small-label-text,.w-button-small-text-label-text-typography,.w-button-small-text-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:600}.body,.w-image-file-uploader-navigators-text,.w-table-td-text,::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td,.w-chip-text,.w-panel-content,.w-input-small-select-options-text,.w-input-small-placeholder-text-typography,.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text,.wapp-input,.w-view-small-value-text-typography,.w-view-small-value-text,.w-button-small-label-text-typography,.w-button-small-tertiary-label-text{font-size:1rem;line-height:1.1666666667rem;font-weight:400}.caption,.w-input-error-alert-text,.w-input-warning-alert-text,.w-input-success-alert-text{font-size:.6666666667rem;line-height:1rem;font-weight:400}.light,.w-input-small-placeholder-text-only-color{font-size:.9166666667rem;line-height:1.0833333333rem;font-weight:300}.small,.w-button-small-label-text-typography-sm{font-size:.8333333333rem;line-height:1rem;font-weight:400}.textMainColor{color:#1f2224}.textSoftColor{color:#5f6468}.textSofterColor{color:#9aa0a7}.textSoftestColor{color:#e8ebee}.textInverseColor{color:#fff}.spacingXXS{padding:4px}.spacingXSM{padding:6px}.spacingXSMDivider{height:6px}.spacingXS{padding:8px}.spacingS{padding:12px}.spacingM{padding:16px}.spacingL{padding:20px}.spacingXL{padding:24px}.spacingXXL{padding:28px}.spacingXXXL{padding:32px}.panel-title-gap-divider{height:20px}.panel-section-gap-divider{height:32px}.input-vertical-gap-divider{height:24px}.input-label-gap-divider{height:6px}.focusedInput,::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{border:1px solid rgba(0,157,253,.25);box-shadow:0 0 10px #00b3eb40}.focus{box-shadow:0 0 8px #00a6e980}.hover{border-radius:8px;border:1px solid #00b3eb}.hoveredInput{border-radius:8px;border:1px solid rgba(0,179,235,.5)}.input-generic-valid{border-radius:8px;border:1px solid #B3FFD3}.input-generic-valid-focus{border-radius:8px;border:1px solid #B3FFD3!important;box-shadow:0 0 8px #46ff9b80!important;padding-left:16px}.input-generic-warning{border-radius:8px;border:1px solid #FFECB8!important}.input-generic-warning-focus{border-radius:8px;border:1px solid #FFECB8!important;box-shadow:0 0 8px #ffcd4680!important;padding-left:16px}.input-generic-error-focus{border-radius:8px;border:1px solid #FFBDBD!important;box-shadow:0 0 8px #ff555580!important;padding-left:16px}.input-generic-error{border-radius:8px;border:1px solid #FFBDBD}.toggle-small-typography{font-size:12px;line-height:16px;font-weight:600}.w-button-small-label-text-typography,.w-button-small-tertiary-label-text,.w-button-small-label-text-typography-sm{font-weight:600}.w-button-small-tertiary-label-text,.w-button-small-text-label-text{color:#1f2224}.w-button-small-icon-text{font-size:12px;font-weight:600}.w-table-button-small-icon-text{font-size:12px;color:#9aa0a7}.w-control-button-small-label-text{font-size:12px;font-weight:600;line-height:16px}.w-control-button-x-small-icon-text{font-size:10px;font-weight:700}.w-control-button-small-icon-text,::ng-deep .w-table-styles .p-checkbox .p-checkbox-box .p-checkbox-icon{font-size:8px;font-weight:700}.w-button-medium-label-text-typography,.w-button-medium-tertiary-label-text{font-size:16px;font-weight:600;line-height:16px}.w-button-medium-tertiary-label-text{color:#1f2224}.w-button-medium-icon-text{font-size:16px}.w-control-button-medium-label-text{font-size:14px;font-weight:600;line-height:16px}.w-control-button-medium-icon-text{font-size:12px;font-weight:700}.w-button-large-label-text-typography,.w-button-large-tertiary-label-text{font-size:20px;font-weight:600;line-height:24px}.w-button-large-tertiary-label-text{color:#1f2224}.w-button-x-small-label-text{font-size:10px;font-weight:600;line-height:10px}.w-button-small-only-label-text{font-size:12px;font-weight:600;line-height:16px}.w-button-large-icon-text{font-size:24px}.w-view-small-label-text{color:#1f2224}.w-view-small-value-text{color:#5f6468}.w-input-no-label-height{height:14px}.w-input-disabled{background-color:#f1f3f4;border-color:#e8ebee;opacity:1}.w-input-small-label-text-typography,.w-input-small-label-text,.w-input-small-label-disabled{height:-moz-fit-content;height:fit-content}.w-input-small-label-text,.w-input-small-label-disabled{color:#1f2224}.w-input-small-label-disabled{color:#9aa0a7}.w-input-small-label-text-content{padding:12px 8px 8px 0;margin:0}.w-input-small-label-text-content-no-top{padding-top:0}.w-input-small-placeholder-text,.wapp-input{color:#1f2224}.w-input-small-placeholder-text-only-color{color:#9aa0a7;line-height:1.3333333333rem}.w-input-small-placeholder-text-disabled,.w-input-small-placeholder-text-disabled-only-color{color:#5f6468}.w-input-small-text-icon,.w-input-small-select-options-text{color:#1f2224}.w-input-medium-label-text-typography,.w-input-medium-label-text,.w-input-medium-label-disabled{font-size:14px;font-weight:600;line-height:16px}.w-input-medium-label-text,.w-input-medium-label-disabled{color:#1f2224}.w-input-medium-label-disabled{color:#9aa0a7}.w-input-medium-placeholder-text-typography,.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text{font-size:16px;font-weight:400;line-height:24px}.w-input-medium-placeholder-text,.w-input-medium-placeholder-text-only-color{color:#1f2224}.w-input-medium-placeholder-text-disabled,.w-input-medium-placeholder-text-disabled-only-color{color:#5f6468}.w-input-medium-text-icon{color:#1f2224}.w-input-medium-select-options-text{font-size:16px;font-weight:400;line-height:24px;color:#1f2224}.w-input-success-alert-text{color:#00db5d;padding:8px 8px 0;margin-top:0}.w-input-warning-alert-text{color:#eeae00;padding:8px 8px 0;margin-top:0}.w-input-error-alert-text{color:#e50000;padding:8px 8px 0;margin-top:0}.w-input-alert-message-height{height:32px}.w-sidebar-title-text,.w-panel-title-text,.w-panel-subtitle-text{color:#1f2224}.w-panel-content{color:#5f6468}.w-tab-text,.w-chip-text{color:#1f2224}.w-badge-text{font-size:10px;font-weight:700;line-height:8px}.w-table-th-text,::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th{color:#1f2224}.w-table-td-text,::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td{color:#5f6468}.w-image-file-uploader-navigators-text{font-size:12px;color:#fff}.grid{margin:0}::ng-deep .p-tooltip,.p-tooltip{filter:0px 0px 1px 0px rgba(0,0,0,.1) inset,1px 1px 5px rgba(0,0,0,.06),1px 1px 1px rgba(0,0,0,.08)}::ng-deep .p-tooltip .p-tooltip-text,.p-tooltip .p-tooltip-text{background:#ffffff!important;color:#1f2224;padding:12px 16px;max-width:192px;width:max-content;margin-left:3px}::ng-deep .p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-right{margin-left:6px;width:max-content;transform:translateY(-1px)}::ng-deep .p-tooltip.p-tooltip-right .p-tooltip-arrow,.p-tooltip.p-tooltip-right .p-tooltip-arrow{border-right-color:#fff!important;top:50%;left:0;margin-top:-4px;border-width:4px 6px 4px 0!important}::ng-deep .p-tooltip.p-tooltip-bottom .p-tooltip-arrow,.p-tooltip.p-tooltip-bottom .p-tooltip-arrow{border-bottom-color:#fff!important;border-width:0 4px 6px 4px!important;margin-top:-3px}.table-container{padding:16px 20px 20px;background-color:#fff;border-radius:8px;box-shadow:0 0 1px #0000001a inset,0 4px 8px #005c7a0d,0 1px 3px #005c7a1a}.showing-per-page{color:#9aa0a7;font-weight:400}::ng-deep .w-table-styles .showing-per-page .p-button.p-inputnumber-button-up{border-radius:8px;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .w-table-styles .showing-per-page .p-button.p-inputnumber-button-down{border-radius:8px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}::ng-deep .w-table-styles .p-paginator-bottom>span:first-child{margin-right:auto}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page{color:#9aa0a7;border-radius:8px;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator{border-width:0;padding:16px 20px 0}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page.p-highlight{background-color:#d6f2ff;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover{background:#f1f5f9;border-color:transparent;color:#2e3134;height:32px;width:32px;max-width:32px;min-width:32px}::ng-deep .w-table-styles .p-paginator .p-paginator-current{color:#9aa0a7;padding:0}::ng-deep .w-table-styles .p-treetable .p-sortable-column .p-sortable-column-icon{color:#1f2224;margin-left:.5rem;font-size:10px!important;transform:translateY(-1px)}::ng-deep .w-table-styles .p-treetable .p-sortable-column.p-highlight:hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-treetable .p-sortable-column:focus{box-shadow:inset 0 0;outline:0 none}::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th{background:#ffffff}::ng-deep .w-table-styles .p-treetable.p-treetable-striped .p-treetable-tbody>tr:nth-child(even){background:#f8f9fa}::ng-deep .w-table-styles .p-treetable .p-paginator-bottom{justify-content:normal!important}::ng-deep .w-table-styles .p-treetable .p-paginator-bottom>button{color:#9aa0a7}::ng-deep .w-table-styles .p-treetable .p-treetable-header{background:#ffffff;border-width:0px;padding:0 0 16px!important;font-weight:400}::ng-deep .w-table-styles p-inputnumber,.p-inputnumber{height:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-up{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-button.p-inputnumber-button-down{width:32px}::ng-deep .w-table-styles .p-inputnumber-buttons-horizontal .p-inputnumber-input{border-width:1px 0px 1px 0px;border-color:#e8ebee;color:#dadce0;text-align:center}::ng-deep .w-table-styles .p-button.p-button-outlined{color:#e8ebee;border-width:1px}::ng-deep .w-table-styles .p-treetable .p-treetable-tbody>tr>td{text-align:left;border:1px solid #e2e8f0;border-width:0 0 1px 0;padding:4px 8px 3px}::ng-deep button{background-color:#fff}::ng-deep .w-table-styles .p-checkbox{height:16px;width:16px;border-width:1px}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box{height:16px;width:16px;border-radius:4px;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox .p-checkbox-box.p-highlight{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus{background-color:#00b3eb;border:1px solid #e0f5fc}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:not(.p-highlight).p-focus{background-color:#dadce0;border:1px solid #dadce0}::ng-deep .w-table-styles .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover{border-color:#00b3eb;background:#00b3eb}::ng-deep .w-table-styles .p-inputtext:enabled:focus{outline:0 none;outline-offset:0;box-shadow:0 0 #000;background-color:#f1f3f4;border-color:#f1f3f4;color:#000}::ng-deep .w-table-styles .p-inputtext:enabled:hover{border-color:#e8ebee}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover{color:#e8ebee;border:1px solid;background-color:#f1f3f4}::ng-deep .w-table-styles .p-button.p-button-outlined:enabled:hover>.p-button-icon{color:#1f2224}::ng-deep .w-table-styles .p-button.p-button-outlined>.pi{font-size:.7rem;font-weight:bolder}::ng-deep .w-table-styles .p-treetable .p-treetable-thead>tr>th:hover{color:#3c4043;background:#ffffff}.height-input{height:32px}.wapp-input{border-radius:8px;border-width:1px;border-color:#e8ebee;gap:16px}::-webkit-input-placeholder{color:#5f6468}::-moz-placeholder{color:#5f6468}:-ms-input-placeholder{color:#5f6468}:-moz-placeholder{color:#5f6468}.wapp-input:hover{border-radius:8px!important;border:1px solid rgba(0,179,235,.5)!important}.wapp-input:focus{border:1px solid rgba(0,157,253,.25)!important;box-shadow:0 0 10px #00b3eb40!important;background-color:transparent!important}.pi-search{left:11px;color:#5f6468!important}.image-header{text-align:center!important}::ng-deep .w-table-styles .p-avatar img{width:32px!important;height:32px!important}:host ::ng-deep .w-table-styles .p-avatar{border:1px solid #e8ebee}::ng-deep .p-treetable .p-treetable-thead>tr>th{padding:16px 8px;border:1px solid #e8ebee;border-width:0px 0px 1px 0px;font-weight:700;color:#000;background:#ffffff;transition:box-shadow .2s}::ng-deep .p-treetable .p-treetable-tbody>tr{color:#9aa0a7}::ng-deep .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon{color:#3c4043}::ng-deep .w-table-styles .p-treetable-scrollable-header-box{padding-right:0!important}::ng-deep .w-table-styles .p-datatable.p-datatable-striped .p-datatable-tbody>tr:nth-child(even){background-color:#f8f9fa;border-color:#e8ebee}.element-image-width{max-height:32px;width:auto;vertical-align:middle}.w-table-buttons{gap:12px}\n"] }]
|
|
159
159
|
}], ctorParameters: function () { return [{ type: i1.ConfirmationService }]; }, propDecorators: { elements: [{
|
|
160
160
|
type: Input,
|
|
161
161
|
args: ['elements']
|
|
@@ -183,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
183
183
|
type: ViewChild,
|
|
184
184
|
args: ['treeTable']
|
|
185
185
|
}] } });
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy10cmVlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRyZWUtdGFibGUvdy10cmVlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRyZWUtdGFibGUvdy10cmVlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBWSxNQUFNLGFBQWEsQ0FBQztBQUdqRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVFuSCxNQUFNLE9BQU8sbUJBQW1CO0lBdUM5QixZQUNVLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBdENsRCxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUNoQyx5QkFBb0IsR0FBWSxJQUFJLENBQUM7UUFFckMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0IsbUJBQWMsR0FBUSxDQUFDLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7UUFDdkUsbUJBQWMsR0FBK0IsbUJBQW1CLENBQUM7UUFFekQsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFrQlosZ0JBQVcs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WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSwgVHJlZURyYWdEcm9wU2VydmljZSwgVHJlZU5vZGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRyZWVUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdHJlZXRhYmxlJztcclxuaW1wb3J0IHsgQWN0aW9uQnV0dG9uUmVzcG9uc2UsIFdUcmVlVGFibGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL3ctdHJlZS10YWJsZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uVHlwZXMsIFdEYXRlUGlwZUZvcm1hdFR5cGUsIFdhcHBUYWJsZUNvbHVtbkFsaWduVHlwZXMgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2VudW1zLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndy10cmVlLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdy10cmVlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93LXRyZWUtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtUcmVlRHJhZ0Ryb3BTZXJ2aWNlLCBNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFdUcmVlVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIGxvYWRpbmdFbGVtZW50czogYm9vbGVhbiA9IHRydWU7XHJcbiAgY29sbGFwc2VkRWxlbWVudFRyZWU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGNvbHVtbnM6IGFueTtcclxuICBvcGVuU2lkZWJhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVsZW1lbnRJbmZvITogYW55O1xyXG4gIHRhYmxlU2tlbGV0b25zOiBhbnkgPSBbe25hbWU6ICcnfSwge25hbWU6ICcnfSwge25hbWU6ICcnfSwge25hbWU6ICcnfV07XHJcbiAgd2FwcERhdGVGb3JtYXQ6IHR5cGVvZiBXRGF0ZVBpcGVGb3JtYXRUeXBlID0gV0RhdGVQaXBlRm9ybWF0VHlwZTtcclxuXHJcbiAgcHJpdmF0ZSBfdG90YWxSZWNvcmRzOiBudW1iZXIgPSAwO1xyXG5cclxuICBzZXQgdG90YWxSZWNvcmRzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3RvdGFsUmVjb3JkcyA9IHZhbHVlO1xyXG4gIH0gIFxyXG5cclxuICBnZXQgdG90YWxSZWNvcmRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsUmVjb3JkcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2VsZW1lbnRzOiBhbnk7XHJcbiAgXHJcbiAgQElucHV0KCdlbGVtZW50cycpIHNldCBlbGVtZW50cyh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9lbGVtZW50cyA9IHZhbHVlO1xyXG4gIH07XHJcbiAgZ2V0IGVsZW1lbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRzO1xyXG4gIH1cclxuICBASW5wdXQoJ3Jvd3NQZXJQYWdlJykgcm93c1BlclBhZ2U6IG51bWJlciA9IDEwO1xyXG4gIEBJbnB1dCgnbG9hZGluZycpIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgnd2FwcFRyZWVUYWJsZU9iamVjdCcpIHdhcHBUcmVlVGFibGVPYmplY3QhOiBXVHJlZVRhYmxlO1xyXG4gIEBJbnB1dCgpIGdldENoaWxkRnVuY3Rpb24hOiAoZWxlbWVudDogYW55KSA9PiBhbnlbXSB8IG51bGw7XHJcblxyXG4gIEBPdXRwdXQoJ29uQWN0aW9uQnV0dG9uQ2xpY2snKSBvbkFjdGlvbkJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25CdXR0b25SZXNwb25zZT4oKTtcclxuICBAT3V0cHV0KCdvbkRlbGV0ZUVsZW1lbnRTZWxlY3QnKSBvbkRlbGV0ZUVsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCdvbkNhbnREZWxldGVFbGVtZW50V2FybicpIG9uQ2FudERlbGV0ZUVsZW1lbnRXYXJuID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIFxyXG4gIEBWaWV3Q2hpbGQoJ3RyZWVUYWJsZScpIHRyZWVUYWJsZSE6IFRyZWVUYWJsZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZihjaGFuZ2VzPy5bJ2VsZW1lbnRzJ10gJiYgY2hhbmdlcz8uWydlbGVtZW50cyddPy5jdXJyZW50VmFsdWUubGVuZ3RoICE9IDApIHtcclxuICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSBjaGFuZ2VzPy5bJ2VsZW1lbnRzJ10/LmN1cnJlbnRWYWx1ZS5sZW5ndGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdENvbXBvbmVudCgpIHtcclxuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMud2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyR2xvYmFsKHRhYmxlOiBUcmVlVGFibGUsIGV2ZW50OiBhbnkpIHtcclxuICAgIHRhYmxlLmZpbHRlckdsb2JhbCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCAnY29udGFpbnMnKVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uQnV0dG9uQ2xpY2tlZChpZDogbnVtYmVyLCBlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25BY3Rpb25CdXR0b25DbGljay5lbWl0KHtpZDogaWQsIGVsZW1lbnQ6IGVsZW1lbnR9KVxyXG4gIH1cclxuXHJcbiAgY29uZmlybURlbGV0ZVNlbGVjdGVkKGV2ZW50OiBhbnksIGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCBhcyBFdmVudFRhcmdldCxcclxuICAgICAgbWVzc2FnZTogdGhpcy53YXBwVHJlZVRhYmxlT2JqZWN0LmNvbmZpcm1TaW5nbGVEZWxldGVMYWJlbCxcclxuICAgICAgaWNvbjogXCJwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy53YXBwVHJlZVRhYmxlT2JqZWN0LmNvbmZpcm1EZWxldGVCdG5MYWJlbCxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kZWxldGVOb2RlKGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZU5vZGUobm9kZTogYW55KSB7XHJcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRGdW5jdGlvbihub2RlKTtcclxuICAgIGlmICghY2hpbGRyZW4gfHwgY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMub25EZWxldGVFbGVtZW50U2VsZWN0LmVtaXQobm9kZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uQ2FudERlbGV0ZUVsZW1lbnRXYXJuLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG5cclxuICB1cGRhdGVTaG93aW5nVGFibGVSb3dzKCkge1xyXG4gICAgdGhpcy5lbGVtZW50cyA9IFsuLi50aGlzLmVsZW1lbnRzXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwYW5kUmVjdXJzaXZlKG5vZGU6IFRyZWVOb2RlLCBpc0V4cGFuZDogYm9vbGVhbikge1xyXG4gICAgbm9kZS5leHBhbmRlZCA9IGlzRXhwYW5kO1xyXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkTm9kZSA9PiB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRSZWN1cnNpdmUoY2hpbGROb2RlLCBpc0V4cGFuZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kVHJlZU5vZGUobGlzdE5vZGU6IFRyZWVOb2RlW10sIG5vZGVJZDogbnVtYmVyKSB7XHJcbiAgICBmb3IgKGxldCBub2RlIG9mIGxpc3ROb2RlKSB7XHJcbiAgICAgIGlmIChub2RlLmRhdGEucHJvZHVjdENhdGVnb3J5SWQgPT0gbm9kZUlkKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgbGV0IG5ld05vZGVGb3VuZDogYW55ID0gdGhpcy5maW5kVHJlZU5vZGUobm9kZS5jaGlsZHJlbiwgbm9kZUlkKTtcclxuICAgICAgICBpZiAobmV3Tm9kZUZvdW5kKSB7XHJcbiAgICAgICAgICByZXR1cm4gbmV3Tm9kZUZvdW5kO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyhhbGlnbm1lbnQ6IG51bWJlcikge1xyXG4gICAgaWYoYWxpZ25tZW50ID09IFdhcHBUYWJsZUNvbHVtbkFsaWduVHlwZXMuUmlnaHQpIHJldHVybiAndGV4dC1yaWdodCc7XHJcbiAgICBpZihhbGlnbm1lbnQgPT0gV2FwcFRhYmxlQ29sdW1uQWxpZ25UeXBlcy5MZWZ0KSByZXR1cm4gJ3RleHQtbGVmdCc7XHJcbiAgICBpZihhbGlnbm1lbnQgPT0gV2FwcFRhYmxlQ29sdW1uQWxpZ25UeXBlcy5DZW50ZXIpIHJldHVybiAndGV4dC1jZW50ZXInO1xyXG4gICAgcmV0dXJuICd0ZXh0LWxlZnQnXHJcbiAgfVxyXG5cclxuICBnZXRUYWJsZUNvbHVtbkFsaWduRmxleENsYXNzKGFsaWdubWVudDogbnVtYmVyKSB7XHJcbiAgICBpZihhbGlnbm1lbnQgPT0gV2FwcFRhYmxlQ29sdW1uQWxpZ25UeXBlcy5SaWdodCkgcmV0dXJuICdmbGV4IGp1c3RpZnktY29udGVudC1lbmQnO1xyXG4gICAgaWYoYWxpZ25tZW50ID09IFdhcHBUYWJsZUNvbHVtbkFsaWduVHlwZXMuTGVmdCkgcmV0dXJuICdmbGV4IGp1c3RpZnktY29udGVudC1zdGFydCc7XHJcbiAgICBpZihhbGlnbm1lbnQgPT0gV2FwcFRhYmxlQ29sdW1uQWxpZ25UeXBlcy5DZW50ZXIpIHJldHVybiAnZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJztcclxuICAgIHJldHVybiAnanVzdGlmeS1jb250ZW50LXN0YXJ0J1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IHRhYmxlQ29sdW1uVHlwZXMoKTogdHlwZW9mIFRhYmxlQ29sdW1uVHlwZXMge1xyXG4gICAgcmV0dXJuIFRhYmxlQ29sdW1uVHlwZXM7XHJcbiAgfVxyXG5cclxuICByZWFkUHJvcGVydHkob2JqOiBhbnksIHByb3A6c3RyaW5nKTphbnkge1xyXG4gICAgaWYodHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB2YXIgX2luZGV4ID0gcHJvcC5pbmRleE9mKCcuJylcclxuICAgIGlmKF9pbmRleCA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZFByb3BlcnR5KG9ialtwcm9wLnN1YnN0cmluZygwLCBfaW5kZXgpXSwgcHJvcC5zdWJzdHIoX2luZGV4ICsgMSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9ialtwcm9wXTtcclxuICB9XHJcblxyXG4gIGdldEJvb2xlYW5Db2x1bW5DbGFzcyhpbmRleDogbnVtYmVyLCB2YWx1ZVByb3BlcnR5OiBib29sZWFuKXtcclxuICAgIGNvbnN0IGJvb2xlYW5JY29uQ2xhc3NlcyA9IFtdO1xyXG5cclxuICAgIGlmICh2YWx1ZVByb3BlcnR5ID09IHRydWUpIHtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLnRydWVJY29uID8/ICcnKTtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLnRydWVJY29uQ29sb3IgPz8gJycpO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZVByb3BlcnR5ID09IGZhbHNlKSB7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS5mYWxzZUljb24gPz8gJycpO1xyXG4gICAgICBib29sZWFuSWNvbkNsYXNzZXMucHVzaCh0aGlzLndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQm9vbGVhblR5cGVJY29uc1tpbmRleF0uZmFsc2VJY29uQ29sb3IgPz8gJycpO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZVByb3BlcnR5ID09IG51bGwpIHtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLm51bGxJY29uID8/ICcnKTtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLm51bGxJY29uQ29sb3IgPz8gJycpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBib29sZWFuSWNvbkNsYXNzZXM7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJ3YXBwVHJlZVRhYmxlT2JqZWN0XCIgW2NsYXNzLnRhYmxlLWNvbnRhaW5lcl09XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LnRhYmxlQ29udGFpbmVyXCI+XHJcbiAgICA8cC10cmVlVGFibGUgKm5nSWY9XCIhbG9hZGluZyAmJiBlbGVtZW50czsgZWxzZSBsb2FkaW5nVGFibGVcIlxyXG4gICAgICAgICN0cmVlVGFibGUgW3ZhbHVlXT1cImVsZW1lbnRzXCIgXHJcbiAgICAgICAgY2xhc3M9XCJ3LXRhYmxlLXN0eWxlc1wiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFxyXG4gICAgICAgIFtzY3JvbGxhYmxlXT1cInRydWVcIlxyXG4gICAgICAgIFt0YWJsZVN0eWxlXT1cInsnbWluLXdpZHRoJzogd2FwcFRyZWVUYWJsZU9iamVjdC50YWJsZU1pbldpZHRoIX1cIlxyXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdFbGVtZW50c1wiXHJcbiAgICAgICAgW3Nob3dMb2FkZXJdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Jvd3NdPVwicm93c1BlclBhZ2VcIlxyXG4gICAgICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCJcclxuICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcclxuICAgICAgICBbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgPyB3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgKyAnICcgKyAgcm93c1BlclBhZ2UgKyAnIGRlICcgKyB0b3RhbFJlY29yZHMhIDogJ1Nob3dpbmcgJyArIHJvd3NQZXJQYWdlICsgJyBvZiAnICsgdG90YWxSZWNvcmRzIVwiXHJcbiAgICAgICAgc3R5bGVDbGFzcz1cInAtdHJlZXRhYmxlLXN0cmlwZWRcIj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidHJ1ZVwiIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB0YWJsZS1wYWdpbmF0b3IgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNob3dpbmctcGVyLXBhZ2VcIj4ge3t3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwbC0yIHNob3dpbmctcGVyLXBhZ2VcIiBbc2l6ZV09XCIxXCIgWyhuZ01vZGVsKV09XCJyb3dzUGVyUGFnZVwiIFtzaG93QnV0dG9uc109XCJ0cnVlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkxheW91dD1cImhvcml6b250YWxcIiBpbnB1dElkPVwiaG9yaXpvbnRhbFwiIHNwaW5uZXJNb2RlPVwiaG9yaXpvbnRhbFwiIFtzdGVwXT1cIjFcIiBbbWluXT1cIjFcIiBbbWF4XT1cInRvdGFsUmVjb3JkcyFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLXBsdXNcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLW1pbnVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9XCJkZWNpbWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU2hvd2luZ1RhYmxlUm93cygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnQgbWwtYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiAjZmlsdGVyIChpbnB1dCk9XCJmaWx0ZXJHbG9iYWwodHJlZVRhYmxlLCAkZXZlbnQpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwid2FwcFRyZWVUYWJsZU9iamVjdC5zZWFyY2hQbGFjZWhvbGRlclwiIGNsYXNzPVwidy1mdWxsIGhlaWdodC1pbnB1dCB3YXBwLWlucHV0XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IGluZGV4IGFzIGlcIiAgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIid7e2NvbC5maWVsZH19LWZpZWxkJ1wiXHJcbiAgICAgICAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkZsZXhDbGFzcyh3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICdmbGV4IGp1c3RpZnktY29udGVudC1zdGFydCdcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVNvcnRJY29uIFtmaWVsZF09XCJjb2wuZmllbGRcIj48L3AtdHJlZVRhYmxlU29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiYnV0dG9ucy1maWVsZFwiPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcm93Tm9kZSBsZXQtcm93RGF0YT1cInJvd0RhdGFcIiBsZXQtY29sdW1ucz1cImNvbHVtbnNcIj5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtY29sdW1uVHlwZSBbbmdGb3JPZl09XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtblR5cGVzIVwiIGxldC1pPVwiaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5JbWFnZVwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIiBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtY2VudGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmZsZXhdPVwiaSA9PT0gMFwiIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmFsaWduLWNvbnRlbnQtY2VudGVyXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXIgW3Jvd05vZGVdPVwicm93Tm9kZVwiICpuZ0lmPVwiaSA9PT0gMFwiPjwvcC10cmVlVGFibGVUb2dnbGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MubXktYXV0b109XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwicmVhZFByb3BlcnR5KHJvd0RhdGEsIHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uc1tpXS5maWVsZClcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwicmVhZFByb3BlcnR5KHJvd0RhdGEsIHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uc1tpXS5maWVsZClcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWxlbWVudC1pbWFnZS13aWR0aFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLlRleHRcIiAgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmZsZXhdPVwiaSA9PT0gMFwiIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmFsaWduLWNvbnRlbnQtY2VudGVyXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXIgW3Jvd05vZGVdPVwicm93Tm9kZVwiICpuZ0lmPVwiaSA9PT0gMFwiPjwvcC10cmVlVGFibGVUb2dnbGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MubXktYXV0b109XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkocm93RGF0YSwgd2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5zW2ldLmZpZWxkKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuTnVtYmVyXCIgIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIiBcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtcmlnaHQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuZmxleF09XCJpID09PSAwXCIgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYWxpZ24tY29udGVudC1jZW50ZXJdPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBbcm93Tm9kZV09XCJyb3dOb2RlXCIgKm5nSWY9XCJpID09PSAwXCI+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5teS1hdXRvXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShyb3dEYXRhLCB3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbnNbaV0uZmllbGQpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5DdXJyZW5jeVwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIiBcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtcmlnaHQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuZmxleF09XCJpID09PSAwXCIgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYWxpZ24tY29udGVudC1jZW50ZXJdPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBbcm93Tm9kZV09XCJyb3dOb2RlXCIgKm5nSWY9XCJpID09PSAwXCI+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5teS1hdXRvXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShyb3dEYXRhLCB3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbnNbaV0uZmllbGQpIHwgY3VycmVuY3kgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkJhZGdlXCIgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1jZW50ZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuZmxleF09XCJpID09PSAwXCIgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYWxpZ24tY29udGVudC1jZW50ZXJdPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBbcm93Tm9kZV09XCJyb3dOb2RlXCIgKm5nSWY9XCJpID09PSAwXCI+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5teS1hdXRvXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJhZGdlIFtsYWJlbF09XCJyZWFkUHJvcGVydHkocm93RGF0YSwgd2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5zW2ldLmZpZWxkKVwiIFtjb2xvcl09XCInaW5mbydcIj48L3ctYmFkZ2U+ICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5Cb29sZWFuXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWNlbnRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5mbGV4XT1cImkgPT09IDBcIiBbY2xhc3MuanVzdGlmeS1jb250ZW50LWJldHdlZW5dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5hbGlnbi1jb250ZW50LWNlbnRlcl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAqbmdJZj1cImkgPT09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLm15LWF1dG9dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaVwiIFtuZ0NsYXNzXT1cImdldEJvb2xlYW5Db2x1bW5DbGFzcyhpLCByZWFkUHJvcGVydHkocm93RGF0YSwgd2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5zW2ldLmZpZWxkKSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5EYXRlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuZmxleF09XCJpID09PSAwXCIgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYWxpZ24tY29udGVudC1jZW50ZXJdPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBbcm93Tm9kZV09XCJyb3dOb2RlXCIgKm5nSWY9XCJpID09PSAwXCI+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5teS1hdXRvXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShyb3dEYXRhLCB3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbnNbaV0uZmllbGQpIHwgd2FwcERhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLlNob3J0RGF0ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmZsZXhdPVwiaSA9PT0gMFwiIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmFsaWduLWNvbnRlbnQtY2VudGVyXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXIgW3Jvd05vZGVdPVwicm93Tm9kZVwiICpuZ0lmPVwiaSA9PT0gMFwiPjwvcC10cmVlVGFibGVUb2dnbGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MubXktYXV0b109XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkocm93RGF0YSwgd2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5zW2ldLmZpZWxkKSB8IHdhcHBEYXRlIDogd2FwcERhdGVGb3JtYXQuZCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuTG9uZ0RhdGVcIiBcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5mbGV4XT1cImkgPT09IDBcIiBbY2xhc3MuanVzdGlmeS1jb250ZW50LWJldHdlZW5dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5hbGlnbi1jb250ZW50LWNlbnRlcl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAqbmdJZj1cImkgPT09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLm15LWF1dG9dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KHJvd0RhdGEsIHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uc1tpXS5maWVsZCkgfCB3YXBwRGF0ZSA6IHdhcHBEYXRlRm9ybWF0LkQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkdlbmVyYWxEYXRlVGltZVNob3J0VGltZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmZsZXhdPVwiaSA9PT0gMFwiIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmFsaWduLWNvbnRlbnQtY2VudGVyXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXIgW3Jvd05vZGVdPVwicm93Tm9kZVwiICpuZ0lmPVwiaSA9PT0gMFwiPjwvcC10cmVlVGFibGVUb2dnbGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MubXktYXV0b109XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZWFkUHJvcGVydHkocm93RGF0YSwgd2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5zW2ldLmZpZWxkKSB8IHdhcHBEYXRlIDogd2FwcERhdGVGb3JtYXQuZyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuR2VuZXJhbERhdGVUaW1lTG9uZ1RpbWVcIiBcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5mbGV4XT1cImkgPT09IDBcIiBbY2xhc3MuanVzdGlmeS1jb250ZW50LWJldHdlZW5dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5hbGlnbi1jb250ZW50LWNlbnRlcl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAqbmdJZj1cImkgPT09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLm15LWF1dG9dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KHJvd0RhdGEsIHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uc1tpXS5maWVsZCkgfCB3YXBwRGF0ZSA6IHdhcHBEYXRlRm9ybWF0LkcgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJidXR0b25zLWZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy10YWJsZS1idXR0b25zIGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBidXR0b24gb2Ygd2FwcFRyZWVUYWJsZU9iamVjdC5hY3Rpb25CdXR0b25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiBbaWNvbl09XCJidXR0b24uaWNvblwiIChvbkNsaWNrKT1cImFjdGlvbkJ1dHRvbkNsaWNrZWQoYnV0dG9uLmlkLCByb3dEYXRhKVwiICBbdG9vbHRpcF09XCJidXR0b24udG9vbHRpcCFcIiBbdG9vbHRpcFBvc2l0aW9uXT1cImJ1dHRvbi50b29sdGlwUG9zaXRpb24hXCIgdHlwZT1cInRhYmxlXCIgW2J1dHRvbkNsYXNzXT1cIid3LXRhYmxlLWJ1dHRvbi1hZGQgJysgYnV0dG9uLnN0eWxlQ2xhc3MhXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uICpuZ0lmPVwid2FwcFRyZWVUYWJsZU9iamVjdC5oYXNEZWxldGVCdXR0b25cIiBpY29uPVwicGktdHJhc2hcIiAob25DbGljayk9XCJjb25maXJtRGVsZXRlU2VsZWN0ZWQoJGV2ZW50LCByb3dEYXRhKVwiIFt0b29sdGlwXT1cIndhcHBUcmVlVGFibGVPYmplY3QuZGVsZXRlQnV0dG9uVG9vbHRpcCFcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiB0eXBlPVwidGFibGVcIiBidXR0b25DbGFzcz1cInctdGFibGUtYnV0dG9uLWRlbGV0ZVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIiBsZXQtY29sdW1ucz5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICB7e3dhcHBUcmVlVGFibGVPYmplY3Qubm9SZWNvcmRzTGFiZWx9fVxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC10cmVlVGFibGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nVGFibGU+XHJcbiAgICAgICAgPHAtdHJlZVRhYmxlXHJcbiAgICAgICAgI3RyZWVUYWJsZSBbdmFsdWVdPVwidGFibGVTa2VsZXRvbnNcIiBcclxuICAgICAgICBjbGFzcz1cInctdGFibGUtc3R5bGVzXCJcclxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCIgXHJcbiAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3RhYmxlU3R5bGVdPVwieydtaW4td2lkdGgnOic1MHJlbSd9XCJcclxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nRWxlbWVudHNcIlxyXG4gICAgICAgIFtzaG93TG9hZGVyXT1cImZhbHNlXCJcclxuICAgICAgICBbcGFnaW5hdG9yXT1cInRydWVcIlxyXG4gICAgICAgIFtyb3dzXT1cInJvd3NQZXJQYWdlXCJcclxuICAgICAgICBbcm93SG92ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG4gICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2N1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGVdPVwid2FwcFRyZWVUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlID8gd2FwcFRyZWVUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlICsgJyAnICsgIHJvd3NQZXJQYWdlICsgJyBkZSAnICsgdG90YWxSZWNvcmRzISA6ICdTaG93aW5nICcgKyByb3dzUGVyUGFnZSArICcgb2YgJyArIHRvdGFsUmVjb3JkcyFcIlxyXG4gICAgICAgIHN0eWxlQ2xhc3M9XCJwLXRyZWV0YWJsZS1zdHJpcGVkXCI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRydWVcIiBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGFibGUtcGFnaW5hdG9yIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaG93aW5nLXBlci1wYWdlXCI+IHt7d2FwcFRyZWVUYWJsZU9iamVjdC5jdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGwtMiBzaG93aW5nLXBlci1wYWdlXCIgW3NpemVdPVwiMVwiIFsobmdNb2RlbCldPVwicm93c1BlclBhZ2VcIiBbc2hvd0J1dHRvbnNdPVwidHJ1ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25MYXlvdXQ9XCJob3Jpem9udGFsXCIgaW5wdXRJZD1cImhvcml6b250YWxcIiBzcGlubmVyTW9kZT1cImhvcml6b250YWxcIiBbc3RlcF09XCIxXCIgW21pbl09XCIxXCIgW21heF09XCJ0b3RhbFJlY29yZHMhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1wbHVzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1taW51c1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlPVwiZGVjaW1hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVNob3dpbmdUYWJsZVJvd3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0IG1sLWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IHR5cGU9XCJ0ZXh0XCIgI2ZpbHRlciAoaW5wdXQpPVwiZmlsdGVyR2xvYmFsKHRyZWVUYWJsZSwgJGV2ZW50KVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIndhcHBUcmVlVGFibGVPYmplY3Quc2VhcmNoUGxhY2Vob2xkZXJcIiBjbGFzcz1cInctZnVsbCBoZWlnaHQtaW5wdXQgd2FwcC1pbnB1dFwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyBpbmRleCBhcyBpXCIgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y29sLmZpZWxkfX0tZmllbGQnXCJcclxuICAgICAgICAgICAgICAgIFt0dFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkZsZXhDbGFzcyh3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICdmbGV4IGp1c3RpZnktY29udGVudC1zdGFydCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlU29ydEljb24gW2ZpZWxkXT1cImNvbC5maWVsZFwiPjwvcC10cmVlVGFibGVTb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJidXR0b25zLWZpZWxkXCI+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1yb3dOb2RlIGxldC1yb3dEYXRhPVwicm93RGF0YVwiIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiIFtuZ0NsYXNzXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiPlxyXG4gICAgICAgICAgICAgICAgPHAtc2tlbGV0b24+PC9wLXNrZWxldG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJidXR0b25zLWZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy10YWJsZS1idXR0b25zIGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBidXR0b24gb2Ygd2FwcFRyZWVUYWJsZU9iamVjdC5hY3Rpb25CdXR0b25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiBbaWNvbl09XCJidXR0b24uaWNvblwiIChvbkNsaWNrKT1cImFjdGlvbkJ1dHRvbkNsaWNrZWQoYnV0dG9uLmlkLCByb3dEYXRhKVwiIFt0b29sdGlwXT1cImJ1dHRvbi50b29sdGlwIVwiIFt0b29sdGlwUG9zaXRpb25dPVwiYnV0dG9uLnRvb2x0aXBQb3NpdGlvbiFcIiBbYnV0dG9uQ2xhc3NdPVwiJ3ctdGFibGUtYnV0dG9uLWFkZCAnICsgYnV0dG9uLnN0eWxlQ2xhc3MhXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uICpuZ0lmPVwid2FwcFRyZWVUYWJsZU9iamVjdC5oYXNEZWxldGVCdXR0b25cIiBpY29uPVwicGktdHJhc2hcIiAob25DbGljayk9XCJjb25maXJtRGVsZXRlU2VsZWN0ZWQoJGV2ZW50LCByb3dEYXRhKVwiIFt0b29sdGlwXT1cIidUb29sdGlwJyBcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cInR5cGU9XCJ0YWJsZVwiIGJ1dHRvbkNsYXNzPVwidy10YWJsZS1idXR0b24tZGVsZXRlXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIHt7d2FwcFRyZWVUYWJsZU9iamVjdC5ub1JlY29yZHNMYWJlbH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLXRyZWVUYWJsZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG5cclxuPHAtY29uZmlybVBvcHVwPjwvcC1jb25maXJtUG9wdXA+Il19
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy10cmVlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRyZWUtdGFibGUvdy10cmVlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3RhYmxlcy93LXRyZWUtdGFibGUvdy10cmVlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBWSxNQUFNLGFBQWEsQ0FBQztBQUdqRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVFuSCxNQUFNLE9BQU8sbUJBQW1CO0lBdUM5QixZQUNVLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBdENsRCxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUNoQyx5QkFBb0IsR0FBWSxJQUFJLENBQUM7UUFFckMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFN0IsbUJBQWMsR0FBUSxDQUFDLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7UUFDdkUsbUJBQWMsR0FBK0IsbUJBQW1CLENBQUM7UUFFekQsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFrQlosZ0JBQVcs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aW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIFRyZWVEcmFnRHJvcFNlcnZpY2UsIFRyZWVOb2RlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUcmVlVGFibGUgfSBmcm9tICdwcmltZW5nL3RyZWV0YWJsZSc7XHJcbmltcG9ydCB7IEFjdGlvbkJ1dHRvblJlc3BvbnNlLCBXVHJlZVRhYmxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy93LXRyZWUtdGFibGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtblR5cGVzLCBXRGF0ZVBpcGVGb3JtYXRUeXBlLCBXYXBwVGFibGVDb2x1bW5BbGlnblR5cGVzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9lbnVtcy5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ctdHJlZS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ctdHJlZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdy10cmVlLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVHJlZURyYWdEcm9wU2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXVHJlZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICBsb2FkaW5nRWxlbWVudHM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGNvbGxhcHNlZEVsZW1lbnRUcmVlOiBib29sZWFuID0gdHJ1ZTtcclxuICBjb2x1bW5zOiBhbnk7XHJcbiAgb3BlblNpZGViYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlbGVtZW50SW5mbyE6IGFueTtcclxuICB0YWJsZVNrZWxldG9uczogYW55ID0gW3tuYW1lOiAnJ30sIHtuYW1lOiAnJ30sIHtuYW1lOiAnJ30sIHtuYW1lOiAnJ31dO1xyXG4gIHdhcHBEYXRlRm9ybWF0OiB0eXBlb2YgV0RhdGVQaXBlRm9ybWF0VHlwZSA9IFdEYXRlUGlwZUZvcm1hdFR5cGU7XHJcblxyXG4gIHByaXZhdGUgX3RvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcclxuXHJcbiAgc2V0IHRvdGFsUmVjb3Jkcyh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl90b3RhbFJlY29yZHMgPSB2YWx1ZTtcclxuICB9ICBcclxuXHJcbiAgZ2V0IHRvdGFsUmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLl90b3RhbFJlY29yZHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9lbGVtZW50czogYW55O1xyXG4gIFxyXG4gIEBJbnB1dCgnZWxlbWVudHMnKSBzZXQgZWxlbWVudHModmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fZWxlbWVudHMgPSB2YWx1ZTtcclxuICB9O1xyXG4gIGdldCBlbGVtZW50cygpIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50cztcclxuICB9XHJcbiAgQElucHV0KCdyb3dzUGVyUGFnZScpIHJvd3NQZXJQYWdlOiBudW1iZXIgPSAxMDtcclxuICBASW5wdXQoJ2xvYWRpbmcnKSBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoJ3dhcHBUcmVlVGFibGVPYmplY3QnKSB3YXBwVHJlZVRhYmxlT2JqZWN0ITogV1RyZWVUYWJsZTtcclxuICBASW5wdXQoKSBnZXRDaGlsZEZ1bmN0aW9uITogKGVsZW1lbnQ6IGFueSkgPT4gYW55W10gfCBudWxsO1xyXG5cclxuICBAT3V0cHV0KCdvbkFjdGlvbkJ1dHRvbkNsaWNrJykgb25BY3Rpb25CdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uQnV0dG9uUmVzcG9uc2U+KCk7XHJcbiAgQE91dHB1dCgnb25EZWxldGVFbGVtZW50U2VsZWN0Jykgb25EZWxldGVFbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgnb25DYW50RGVsZXRlRWxlbWVudFdhcm4nKSBvbkNhbnREZWxldGVFbGVtZW50V2FybiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBcclxuICBAVmlld0NoaWxkKCd0cmVlVGFibGUnKSB0cmVlVGFibGUhOiBUcmVlVGFibGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYoY2hhbmdlcz8uWydlbGVtZW50cyddICYmIGNoYW5nZXM/LlsnZWxlbWVudHMnXT8uY3VycmVudFZhbHVlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gY2hhbmdlcz8uWydlbGVtZW50cyddPy5jdXJyZW50VmFsdWUubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcclxuICB9XHJcblxyXG4gIGluaXRDb21wb25lbnQoKSB7XHJcbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1ucztcclxuICB9XHJcblxyXG4gIGZpbHRlckdsb2JhbCh0YWJsZTogVHJlZVRhYmxlLCBldmVudDogYW55KSB7XHJcbiAgICB0YWJsZS5maWx0ZXJHbG9iYWwoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSwgJ2NvbnRhaW5zJylcclxuICB9XHJcblxyXG4gIGFjdGlvbkJ1dHRvbkNsaWNrZWQoaWQ6IG51bWJlciwgZWxlbWVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uQWN0aW9uQnV0dG9uQ2xpY2suZW1pdCh7aWQ6IGlkLCBlbGVtZW50OiBlbGVtZW50fSlcclxuICB9XHJcblxyXG4gIGNvbmZpcm1EZWxldGVTZWxlY3RlZChldmVudDogYW55LCBkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQgYXMgRXZlbnRUYXJnZXQsXHJcbiAgICAgIG1lc3NhZ2U6IHRoaXMud2FwcFRyZWVUYWJsZU9iamVjdC5jb25maXJtU2luZ2xlRGVsZXRlTGFiZWwsXHJcbiAgICAgIGljb246IFwicGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGVcIixcclxuICAgICAgYWNjZXB0TGFiZWw6IHRoaXMud2FwcFRyZWVUYWJsZU9iamVjdC5jb25maXJtRGVsZXRlQnRuTGFiZWwsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlTm9kZShkYXRhKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVOb2RlKG5vZGU6IGFueSkge1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkRnVuY3Rpb24obm9kZSk7XHJcbiAgICBpZiAoIWNoaWxkcmVuIHx8IGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLm9uRGVsZXRlRWxlbWVudFNlbGVjdC5lbWl0KG5vZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vbkNhbnREZWxldGVFbGVtZW50V2Fybi5lbWl0KHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuXHJcbiAgdXBkYXRlU2hvd2luZ1RhYmxlUm93cygpIHtcclxuICAgIHRoaXMuZWxlbWVudHMgPSBbLi4udGhpcy5lbGVtZW50c107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cGFuZFJlY3Vyc2l2ZShub2RlOiBUcmVlTm9kZSwgaXNFeHBhbmQ6IGJvb2xlYW4pIHtcclxuICAgIG5vZGUuZXhwYW5kZWQgPSBpc0V4cGFuZDtcclxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZE5vZGUgPT4ge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kUmVjdXJzaXZlKGNoaWxkTm9kZSwgaXNFeHBhbmQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFRyZWVOb2RlKGxpc3ROb2RlOiBUcmVlTm9kZVtdLCBub2RlSWQ6IG51bWJlcikge1xyXG4gICAgZm9yIChsZXQgbm9kZSBvZiBsaXN0Tm9kZSkge1xyXG4gICAgICBpZiAobm9kZS5kYXRhLnByb2R1Y3RDYXRlZ29yeUlkID09IG5vZGVJZCkge1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xyXG4gICAgICAgIGxldCBuZXdOb2RlRm91bmQ6IGFueSA9IHRoaXMuZmluZFRyZWVOb2RlKG5vZGUuY2hpbGRyZW4sIG5vZGVJZCk7XHJcbiAgICAgICAgaWYgKG5ld05vZGVGb3VuZCkge1xyXG4gICAgICAgICAgcmV0dXJuIG5ld05vZGVGb3VuZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3MoYWxpZ25tZW50OiBudW1iZXIpIHtcclxuICAgIGlmKGFsaWdubWVudCA9PSBXYXBwVGFibGVDb2x1bW5BbGlnblR5cGVzLlJpZ2h0KSByZXR1cm4gJ3RleHQtcmlnaHQnO1xyXG4gICAgaWYoYWxpZ25tZW50ID09IFdhcHBUYWJsZUNvbHVtbkFsaWduVHlwZXMuTGVmdCkgcmV0dXJuICd0ZXh0LWxlZnQnO1xyXG4gICAgaWYoYWxpZ25tZW50ID09IFdhcHBUYWJsZUNvbHVtbkFsaWduVHlwZXMuQ2VudGVyKSByZXR1cm4gJ3RleHQtY2VudGVyJztcclxuICAgIHJldHVybiAndGV4dC1sZWZ0J1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFibGVDb2x1bW5BbGlnbkZsZXhDbGFzcyhhbGlnbm1lbnQ6IG51bWJlcikge1xyXG4gICAgaWYoYWxpZ25tZW50ID09IFdhcHBUYWJsZUNvbHVtbkFsaWduVHlwZXMuUmlnaHQpIHJldHVybiAnZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kJztcclxuICAgIGlmKGFsaWdubWVudCA9PSBXYXBwVGFibGVDb2x1bW5BbGlnblR5cGVzLkxlZnQpIHJldHVybiAnZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQnO1xyXG4gICAgaWYoYWxpZ25tZW50ID09IFdhcHBUYWJsZUNvbHVtbkFsaWduVHlwZXMuQ2VudGVyKSByZXR1cm4gJ2ZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlcic7XHJcbiAgICByZXR1cm4gJ2p1c3RpZnktY29udGVudC1zdGFydCdcclxuICB9XHJcbiAgcHVibGljIGdldCB0YWJsZUNvbHVtblR5cGVzKCk6IHR5cGVvZiBUYWJsZUNvbHVtblR5cGVzIHtcclxuICAgIHJldHVybiBUYWJsZUNvbHVtblR5cGVzO1xyXG4gIH1cclxuXHJcbiAgcmVhZFByb3BlcnR5KG9iajogYW55LCBwcm9wOnN0cmluZyk6YW55IHtcclxuICAgIGlmKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdmFyIF9pbmRleCA9IHByb3AuaW5kZXhPZignLicpXHJcbiAgICBpZihfaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRQcm9wZXJ0eShvYmpbcHJvcC5zdWJzdHJpbmcoMCwgX2luZGV4KV0sIHByb3Auc3Vic3RyKF9pbmRleCArIDEpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmpbcHJvcF07XHJcbiAgfVxyXG5cclxuICBnZXRCb29sZWFuQ29sdW1uQ2xhc3MoaW5kZXg6IG51bWJlciwgdmFsdWVQcm9wZXJ0eTogYm9vbGVhbil7XHJcbiAgICBjb25zdCBib29sZWFuSWNvbkNsYXNzZXMgPSBbXTtcclxuXHJcbiAgICBpZiAodmFsdWVQcm9wZXJ0eSA9PSB0cnVlKSB7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS50cnVlSWNvbiA/PyAnJyk7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS50cnVlSWNvbkNvbG9yID8/ICcnKTtcclxuICAgIH0gZWxzZSBpZiAodmFsdWVQcm9wZXJ0eSA9PSBmYWxzZSkge1xyXG4gICAgICBib29sZWFuSWNvbkNsYXNzZXMucHVzaCh0aGlzLndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQm9vbGVhblR5cGVJY29uc1tpbmRleF0uZmFsc2VJY29uID8/ICcnKTtcclxuICAgICAgYm9vbGVhbkljb25DbGFzc2VzLnB1c2godGhpcy53YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkJvb2xlYW5UeXBlSWNvbnNbaW5kZXhdLmZhbHNlSWNvbkNvbG9yID8/ICcnKTtcclxuICAgIH0gZWxzZSBpZiAodmFsdWVQcm9wZXJ0eSA9PSBudWxsKSB7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS5udWxsSWNvbiA/PyAnJyk7XHJcbiAgICAgIGJvb2xlYW5JY29uQ2xhc3Nlcy5wdXNoKHRoaXMud2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5Cb29sZWFuVHlwZUljb25zW2luZGV4XS5udWxsSWNvbkNvbG9yID8/ICcnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYm9vbGVhbkljb25DbGFzc2VzO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwid2FwcFRyZWVUYWJsZU9iamVjdFwiIFtjbGFzcy50YWJsZS1jb250YWluZXJdPVwid2FwcFRyZWVUYWJsZU9iamVjdC50YWJsZUNvbnRhaW5lclwiPlxyXG4gICAgPHAtdHJlZVRhYmxlICpuZ0lmPVwiIWxvYWRpbmcgJiYgZWxlbWVudHM7IGVsc2UgbG9hZGluZ1RhYmxlXCJcclxuICAgICAgICAjdHJlZVRhYmxlIFt2YWx1ZV09XCJlbGVtZW50c1wiXHJcbiAgICAgICAgY2xhc3M9XCJ3LXRhYmxlLXN0eWxlc1wiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3RhYmxlU3R5bGVdPVwieydtaW4td2lkdGgnOiB3YXBwVHJlZVRhYmxlT2JqZWN0LnRhYmxlTWluV2lkdGghfVwiXHJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ0VsZW1lbnRzXCJcclxuICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXHJcbiAgICAgICAgW3BhZ2luYXRvcl09XCJ0cnVlXCJcclxuICAgICAgICBbcm93c109XCJyb3dzUGVyUGFnZVwiXHJcbiAgICAgICAgW3Jvd0hvdmVyXT1cInRydWVcIlxyXG4gICAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuICAgICAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxyXG4gICAgICAgIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZSA/IHdhcHBUcmVlVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZSArICcgJyArICByb3dzUGVyUGFnZSArICcgZGUgJyArIHRvdGFsUmVjb3JkcyEgOiAnU2hvd2luZyAnICsgcm93c1BlclBhZ2UgKyAnIG9mICcgKyB0b3RhbFJlY29yZHMhXCJcclxuICAgICAgICBzdHlsZUNsYXNzPVwicC10cmVldGFibGUtc3RyaXBlZFwiPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ0cnVlXCIgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIHRhYmxlLXBhZ2luYXRvciBwLTBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2hvd2luZy1wZXItcGFnZVwiPiB7e3dhcHBUcmVlVGFibGVPYmplY3QuY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZX19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGwtMiBzaG93aW5nLXBlci1wYWdlXCIgW3NpemVdPVwiMVwiIFsobmdNb2RlbCldPVwicm93c1BlclBhZ2VcIiBbc2hvd0J1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkxheW91dD1cImhvcml6b250YWxcIiBpbnB1dElkPVwiaG9yaXpvbnRhbFwiIHNwaW5uZXJNb2RlPVwiaG9yaXpvbnRhbFwiIFtzdGVwXT1cIjFcIiBbbWluXT1cIjFcIiBbbWF4XT1cInRvdGFsUmVjb3JkcyFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnRCdXR0b25DbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1wbHVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uSWNvbj1cInBpIHBpLW1pbnVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZT1cImRlY2ltYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTaG93aW5nVGFibGVSb3dzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdCBtbC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiICNmaWx0ZXIgKGlucHV0KT1cImZpbHRlckdsb2JhbCh0cmVlVGFibGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIndhcHBUcmVlVGFibGVPYmplY3Quc2VhcmNoUGxhY2Vob2xkZXJcIiBjbGFzcz1cInctZnVsbCBoZWlnaHQtaW5wdXQgd2FwcC1pbnB1dFwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyBpbmRleCBhcyBpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiJ3t7Y29sLmZpZWxkfX0tZmllbGQnXCJcclxuICAgICAgICAgICAgICAgIFt0dFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uV2lkdGhzW2ldXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduRmxleENsYXNzKHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ2ZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0J1wiID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlU29ydEljb24gW2ZpZWxkXT1cImNvbC5maWVsZFwiPjwvcC10cmVlVGFibGVTb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJidXR0b25zLWZpZWxkXCI+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1yb3dOb2RlIGxldC1yb3dEYXRhPVwicm93RGF0YVwiIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jb2x1bW5UeXBlIFtuZ0Zvck9mXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uVHlwZXMhXCIgbGV0LWk9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkltYWdlXCIgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiIFtuZ0NsYXNzXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1jZW50ZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuZmxleF09XCJpID09PSAwXCIgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYWxpZ24tY29udGVudC1jZW50ZXJdPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBbcm93Tm9kZV09XCJyb3dOb2RlXCIgKm5nSWY9XCJpID09PSAwXCI+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5teS1hdXRvXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJyZWFkUHJvcGVydHkocm93RGF0YSwgd2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5zW2ldLmZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInJlYWRQcm9wZXJ0eShyb3dEYXRhLCB3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbnNbaV0uZmllbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWxlbWVudC1pbWFnZS13aWR0aFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLlRleHRcIiAgW3N0eWxlXT1cIid3aWR0aDogJyt3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbldpZHRoc1tpXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuZmxleF09XCJpID09PSAwXCIgW25nQ2xhc3NdPVwid2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25GbGV4Q2xhc3Mod2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAnanVzdGlmeS1jb250ZW50LXN0YXJ0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5hbGlnbi1jb250ZW50LWNlbnRlcl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAqbmdJZj1cImkgPT09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLm15LWF1dG9dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KHJvd0RhdGEsIHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uc1tpXS5maWVsZCkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLk51bWJlclwiICBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uV2lkdGhzW2ldXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtcmlnaHQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuZmxleF09XCJpID09PSAwXCIgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYWxpZ24tY29udGVudC1jZW50ZXJdPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBbcm93Tm9kZV09XCJyb3dOb2RlXCIgKm5nSWY9XCJpID09PSAwXCI+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5teS1hdXRvXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShyb3dEYXRhLCB3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbnNbaV0uZmllbGQpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5DdXJyZW5jeVwiIFtzdHlsZV09XCInd2lkdGg6ICcrd2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5XaWR0aHNbaV1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1yaWdodCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5mbGV4XT1cImkgPT09IDBcIiBbY2xhc3MuanVzdGlmeS1jb250ZW50LWJldHdlZW5dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5hbGlnbi1jb250ZW50LWNlbnRlcl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAqbmdJZj1cImkgPT09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLm15LWF1dG9dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KHJvd0RhdGEsIHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uc1tpXS5maWVsZCkgfCBjdXJyZW5jeSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuQmFkZ2VcIiBbc3R5bGVdPVwiJ3dpZHRoOiAnK3dhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uV2lkdGhzW2ldXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtY2VudGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmZsZXhdPVwiaSA9PT0gMFwiIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmFsaWduLWNvbnRlbnQtY2VudGVyXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXIgW3Jvd05vZGVdPVwicm93Tm9kZVwiICpuZ0lmPVwiaSA9PT0gMFwiPjwvcC10cmVlVGFibGVUb2dnbGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MubXktYXV0b109XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dy1iYWRnZSBbbGFiZWxdPVwicmVhZFByb3BlcnR5KHJvd0RhdGEsIHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uc1tpXS5maWVsZClcIiBbY29sb3JdPVwiJ2luZm8nXCI+PC93LWJhZGdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuQm9vbGVhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWNlbnRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5mbGV4XT1cImkgPT09IDBcIiBbY2xhc3MuanVzdGlmeS1jb250ZW50LWJldHdlZW5dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5hbGlnbi1jb250ZW50LWNlbnRlcl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAqbmdJZj1cImkgPT09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLm15LWF1dG9dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaVwiIFtuZ0NsYXNzXT1cImdldEJvb2xlYW5Db2x1bW5DbGFzcyhpLCByZWFkUHJvcGVydHkocm93RGF0YSwgd2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5zW2ldLmZpZWxkKSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5mbGV4XT1cImkgPT09IDBcIiBbY2xhc3MuanVzdGlmeS1jb250ZW50LWJldHdlZW5dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5hbGlnbi1jb250ZW50LWNlbnRlcl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAqbmdJZj1cImkgPT09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLm15LWF1dG9dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KHJvd0RhdGEsIHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uc1tpXS5maWVsZCkgfCB3YXBwRGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJjb2x1bW5UeXBlID09IHRhYmxlQ29sdW1uVHlwZXMuU2hvcnREYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5mbGV4XT1cImkgPT09IDBcIiBbY2xhc3MuanVzdGlmeS1jb250ZW50LWJldHdlZW5dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5hbGlnbi1jb250ZW50LWNlbnRlcl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAqbmdJZj1cImkgPT09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLm15LWF1dG9dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KHJvd0RhdGEsIHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uc1tpXS5maWVsZCkgfCB3YXBwRGF0ZSA6IHdhcHBEYXRlRm9ybWF0LmQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkxvbmdEYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkNsYXNzKHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ25baV0pIDogJ3RleHQtbGVmdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5mbGV4XT1cImkgPT09IDBcIiBbY2xhc3MuanVzdGlmeS1jb250ZW50LWJldHdlZW5dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5hbGlnbi1jb250ZW50LWNlbnRlcl09XCJpID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAqbmdJZj1cImkgPT09IDBcIj48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLm15LWF1dG9dPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmVhZFByb3BlcnR5KHJvd0RhdGEsIHdhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uc1tpXS5maWVsZCkgfCB3YXBwRGF0ZSA6IHdhcHBEYXRlRm9ybWF0LkQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiY29sdW1uVHlwZSA9PSB0YWJsZUNvbHVtblR5cGVzLkdlbmVyYWxEYXRlVGltZVNob3J0VGltZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuZmxleF09XCJpID09PSAwXCIgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYWxpZ24tY29udGVudC1jZW50ZXJdPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBbcm93Tm9kZV09XCJyb3dOb2RlXCIgKm5nSWY9XCJpID09PSAwXCI+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5teS1hdXRvXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShyb3dEYXRhLCB3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbnNbaV0uZmllbGQpIHwgd2FwcERhdGUgOiB3YXBwRGF0ZUZvcm1hdC5nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImNvbHVtblR5cGUgPT0gdGFibGVDb2x1bW5UeXBlcy5HZW5lcmFsRGF0ZVRpbWVMb25nVGltZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbiA/IGdldFRhYmxlQ29sdW1uQWxpZ25DbGFzcyh3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICd0ZXh0LWxlZnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuZmxleF09XCJpID09PSAwXCIgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYWxpZ24tY29udGVudC1jZW50ZXJdPVwiaSA9PT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlVG9nZ2xlciBbcm93Tm9kZV09XCJyb3dOb2RlXCIgKm5nSWY9XCJpID09PSAwXCI+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy5teS1hdXRvXT1cImkgPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlYWRQcm9wZXJ0eShyb3dEYXRhLCB3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbnNbaV0uZmllbGQpIHwgd2FwcERhdGUgOiB3YXBwRGF0ZUZvcm1hdC5HIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYnV0dG9ucy1maWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctdGFibGUtYnV0dG9ucyBmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIHdhcHBUcmVlVGFibGVPYmplY3QuYWN0aW9uQnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dy1idXR0b24gW2ljb25dPVwiYnV0dG9uLmljb25cIiAob25DbGljayk9XCJhY3Rpb25CdXR0b25DbGlja2VkKGJ1dHRvbi5pZCwgcm93RGF0YSlcIiAgW3Rvb2x0aXBdPVwiYnV0dG9uLnRvb2x0aXAhXCIgW3Rvb2x0aXBQb3NpdGlvbl09XCJidXR0b24udG9vbHRpcFBvc2l0aW9uIVwiIHR5cGU9XCJ0YWJsZVwiIFtidXR0b25DbGFzc109XCIndy10YWJsZS1idXR0b24tYWRkICcrIGJ1dHRvbi5zdHlsZUNsYXNzIVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiAqbmdJZj1cIndhcHBUcmVlVGFibGVPYmplY3QuaGFzRGVsZXRlQnV0dG9uXCIgaWNvbj1cInBpLXRyYXNoXCIgKG9uQ2xpY2spPVwiY29uZmlybURlbGV0ZVNlbGVjdGVkKCRldmVudCwgcm93RGF0YSlcIiBbdG9vbHRpcF09XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmRlbGV0ZUJ1dHRvblRvb2x0aXAhXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgdHlwZT1cInRhYmxlXCIgYnV0dG9uQ2xhc3M9XCJ3LXRhYmxlLWJ1dHRvbi1kZWxldGVcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAge3t3YXBwVHJlZVRhYmxlT2JqZWN0Lm5vUmVjb3Jkc0xhYmVsfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3AtdHJlZVRhYmxlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RhYmxlPlxyXG4gICAgICAgIDxwLXRyZWVUYWJsZVxyXG4gICAgICAgICN0cmVlVGFibGUgW3ZhbHVlXT1cInRhYmxlU2tlbGV0b25zXCJcclxuICAgICAgICBjbGFzcz1cInctdGFibGUtc3R5bGVzXCJcclxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgICBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICBbdGFibGVTdHlsZV09XCJ7J21pbi13aWR0aCc6JzUwcmVtJ31cIlxyXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdFbGVtZW50c1wiXHJcbiAgICAgICAgW3Nob3dMb2FkZXJdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Jvd3NdPVwicm93c1BlclBhZ2VcIlxyXG4gICAgICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCJcclxuICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcclxuICAgICAgICBbY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZV09XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgPyB3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgKyAnICcgKyAgcm93c1BlclBhZ2UgKyAnIGRlICcgKyB0b3RhbFJlY29yZHMhIDogJ1Nob3dpbmcgJyArIHJvd3NQZXJQYWdlICsgJyBvZiAnICsgdG90YWxSZWNvcmRzIVwiXHJcbiAgICAgICAgc3R5bGVDbGFzcz1cInAtdHJlZXRhYmxlLXN0cmlwZWRcIj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidHJ1ZVwiIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB0YWJsZS1wYWdpbmF0b3IgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNob3dpbmctcGVyLXBhZ2VcIj4ge3t3YXBwVHJlZVRhYmxlT2JqZWN0LmN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGV9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBsLTIgc2hvd2luZy1wZXItcGFnZVwiIFtzaXplXT1cIjFcIiBbKG5nTW9kZWwpXT1cInJvd3NQZXJQYWdlXCIgW3Nob3dCdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25MYXlvdXQ9XCJob3Jpem9udGFsXCIgaW5wdXRJZD1cImhvcml6b250YWxcIiBzcGlubmVyTW9kZT1cImhvcml6b250YWxcIiBbc3RlcF09XCIxXCIgW21pbl09XCIxXCIgW21heF09XCJ0b3RhbFJlY29yZHMhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50QnV0dG9uQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEJ1dHRvbkNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRCdXR0b25JY29uPVwicGkgcGktcGx1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY3JlbWVudEJ1dHRvbkljb249XCJwaSBwaS1taW51c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9XCJkZWNpbWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU2hvd2luZ1RhYmxlUm93cygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnQgbWwtYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiAjZmlsdGVyIChpbnB1dCk9XCJmaWx0ZXJHbG9iYWwodHJlZVRhYmxlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LnNlYXJjaFBsYWNlaG9sZGVyXCIgY2xhc3M9XCJ3LWZ1bGwgaGVpZ2h0LWlucHV0IHdhcHAtaW5wdXRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgaW5kZXggYXMgaVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y29sLmZpZWxkfX0tZmllbGQnXCJcclxuICAgICAgICAgICAgICAgIFt0dFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduID8gZ2V0VGFibGVDb2x1bW5BbGlnbkZsZXhDbGFzcyh3YXBwVHJlZVRhYmxlT2JqZWN0LmNvbHVtbkFsaWduW2ldKSA6ICdmbGV4IGp1c3RpZnktY29udGVudC1zdGFydCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlU29ydEljb24gW2ZpZWxkXT1cImNvbC5maWVsZFwiPjwvcC10cmVlVGFibGVTb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJidXR0b25zLWZpZWxkXCI+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1yb3dOb2RlIGxldC1yb3dEYXRhPVwicm93RGF0YVwiIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uczsgbGV0IGkgPSBpbmRleFwiIFtuZ0NsYXNzXT1cIndhcHBUcmVlVGFibGVPYmplY3QuY29sdW1uQWxpZ24gPyBnZXRUYWJsZUNvbHVtbkFsaWduQ2xhc3Mod2FwcFRyZWVUYWJsZU9iamVjdC5jb2x1bW5BbGlnbltpXSkgOiAndGV4dC1sZWZ0J1wiPlxyXG4gICAgICAgICAgICAgICAgPHAtc2tlbGV0b24+PC9wLXNrZWxldG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJidXR0b25zLWZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy10YWJsZS1idXR0b25zIGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBidXR0b24gb2Ygd2FwcFRyZWVUYWJsZU9iamVjdC5hY3Rpb25CdXR0b25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiBbaWNvbl09XCJidXR0b24uaWNvblwiIChvbkNsaWNrKT1cImFjdGlvbkJ1dHRvbkNsaWNrZWQoYnV0dG9uLmlkLCByb3dEYXRhKVwiIFt0b29sdGlwXT1cImJ1dHRvbi50b29sdGlwIVwiIFt0b29sdGlwUG9zaXRpb25dPVwiYnV0dG9uLnRvb2x0aXBQb3NpdGlvbiFcIiBbYnV0dG9uQ2xhc3NdPVwiJ3ctdGFibGUtYnV0dG9uLWFkZCAnICsgYnV0dG9uLnN0eWxlQ2xhc3MhXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHctYnV0dG9uICpuZ0lmPVwid2FwcFRyZWVUYWJsZU9iamVjdC5oYXNEZWxldGVCdXR0b25cIiBpY29uPVwicGktdHJhc2hcIiAob25DbGljayk9XCJjb25maXJtRGVsZXRlU2VsZWN0ZWQoJGV2ZW50LCByb3dEYXRhKVwiIFt0b29sdGlwXT1cIidUb29sdGlwJyBcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cInR5cGU9XCJ0YWJsZVwiIGJ1dHRvbkNsYXNzPVwidy10YWJsZS1idXR0b24tZGVsZXRlXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIHt7d2FwcFRyZWVUYWJsZU9iamVjdC5ub1JlY29yZHNMYWJlbH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLXRyZWVUYWJsZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG5cclxuPHAtY29uZmlybVBvcHVwPjwvcC1jb25maXJtUG9wdXA+XHJcbiJdfQ==
|