@ng-matero/extensions 16.1.0 → 16.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/alert/alert-module.mjs +6 -7
- package/esm2022/alert/alert.mjs +5 -6
- package/esm2022/button/button-loading.mjs +5 -6
- package/esm2022/button/button-module.mjs +6 -7
- package/esm2022/checkbox-group/checkbox-group-module.mjs +6 -7
- package/esm2022/checkbox-group/checkbox-group.mjs +5 -6
- package/esm2022/colorpicker/colorpicker-input.mjs +5 -6
- package/esm2022/colorpicker/colorpicker-module.mjs +6 -7
- package/esm2022/colorpicker/colorpicker-toggle.mjs +9 -11
- package/esm2022/colorpicker/colorpicker.mjs +9 -11
- package/esm2022/column-resize/column-resize-directives/column-resize-flex.mjs +5 -6
- package/esm2022/column-resize/column-resize-directives/column-resize.mjs +5 -6
- package/esm2022/column-resize/column-resize-module.mjs +6 -7
- package/esm2022/column-resize/column-resize-notifier.mjs +9 -11
- package/esm2022/column-resize/column-resize.mjs +5 -6
- package/esm2022/column-resize/column-size-store.mjs +5 -6
- package/esm2022/column-resize/event-dispatcher.mjs +5 -6
- package/esm2022/column-resize/overlay-handle.mjs +5 -6
- package/esm2022/column-resize/resizable.mjs +5 -6
- package/esm2022/column-resize/resize-strategy.mjs +13 -16
- package/esm2022/core/datetime/datetime.module.mjs +11 -13
- package/esm2022/core/datetime/native-datetime-adapter.mjs +5 -6
- package/esm2022/core/pipes/is-template-ref.pipe.mjs +5 -6
- package/esm2022/core/pipes/pipes.module.mjs +6 -7
- package/esm2022/core/pipes/to-observable.pipe.mjs +5 -6
- package/esm2022/datetimepicker/calendar-body.mjs +5 -6
- package/esm2022/datetimepicker/calendar.mjs +5 -6
- package/esm2022/datetimepicker/clock.mjs +11 -6
- package/esm2022/datetimepicker/datetimepicker-input.mjs +5 -6
- package/esm2022/datetimepicker/datetimepicker-intl.mjs +5 -6
- package/esm2022/datetimepicker/datetimepicker-module.mjs +6 -7
- package/esm2022/datetimepicker/datetimepicker-toggle.mjs +9 -11
- package/esm2022/datetimepicker/datetimepicker.mjs +9 -11
- package/esm2022/datetimepicker/month-view.mjs +5 -6
- package/esm2022/datetimepicker/multi-year-view.mjs +5 -6
- package/esm2022/datetimepicker/time.mjs +9 -11
- package/esm2022/datetimepicker/year-view.mjs +5 -6
- package/esm2022/dialog/dialog-container.mjs +5 -6
- package/esm2022/dialog/dialog-module.mjs +6 -7
- package/esm2022/dialog/dialog.mjs +5 -6
- package/esm2022/drawer/drawer-container.mjs +5 -6
- package/esm2022/drawer/drawer-module.mjs +6 -7
- package/esm2022/drawer/drawer.mjs +5 -6
- package/esm2022/grid/cell.mjs +5 -6
- package/esm2022/grid/column-menu.mjs +5 -6
- package/esm2022/grid/column-resize/column-resize-directives/column-resize-flex.mjs +5 -6
- package/esm2022/grid/column-resize/column-resize-directives/column-resize.mjs +5 -6
- package/esm2022/grid/column-resize/column-resize-module.mjs +11 -13
- package/esm2022/grid/column-resize/overlay-handle.mjs +5 -6
- package/esm2022/grid/column-resize/resizable-directives/resizable.mjs +5 -6
- package/esm2022/grid/column-resize/resize-strategy.mjs +5 -6
- package/esm2022/grid/expansion-toggle.mjs +5 -6
- package/esm2022/grid/grid-module.mjs +6 -7
- package/esm2022/grid/grid-pipes.mjs +29 -36
- package/esm2022/grid/grid-utils.mjs +5 -6
- package/esm2022/grid/grid.mjs +9 -11
- package/esm2022/loader/loader-module.mjs +6 -7
- package/esm2022/loader/loader.mjs +5 -6
- package/esm2022/popover/popover-content.mjs +9 -11
- package/esm2022/popover/popover-module.mjs +6 -7
- package/esm2022/popover/popover-target.mjs +5 -6
- package/esm2022/popover/popover-trigger.mjs +5 -6
- package/esm2022/popover/popover.mjs +5 -6
- package/esm2022/progress/progress-module.mjs +6 -7
- package/esm2022/progress/progress.mjs +5 -6
- package/esm2022/select/option.mjs +5 -6
- package/esm2022/select/select-module.mjs +6 -7
- package/esm2022/select/select.mjs +5 -6
- package/esm2022/select/templates.mjs +45 -56
- package/esm2022/slider/slider-module.mjs +6 -7
- package/esm2022/slider/slider.mjs +5 -6
- package/esm2022/split/split-module.mjs +6 -7
- package/esm2022/split/split-pane.mjs +5 -6
- package/esm2022/split/split.mjs +5 -6
- package/esm2022/tooltip/tooltip-module.mjs +6 -7
- package/esm2022/tooltip/tooltip.mjs +17 -21
- package/fesm2022/mtxAlert.mjs +7 -7
- package/fesm2022/mtxAlert.mjs.map +1 -1
- package/fesm2022/mtxButton.mjs +7 -7
- package/fesm2022/mtxButton.mjs.map +1 -1
- package/fesm2022/mtxCheckboxGroup.mjs +7 -7
- package/fesm2022/mtxCheckboxGroup.mjs.map +1 -1
- package/fesm2022/mtxColorpicker.mjs +19 -19
- package/fesm2022/mtxColorpicker.mjs.map +1 -1
- package/fesm2022/mtxColumnResize.mjs +40 -40
- package/fesm2022/mtxColumnResize.mjs.map +1 -1
- package/fesm2022/mtxCore.mjs +21 -21
- package/fesm2022/mtxCore.mjs.map +1 -1
- package/fesm2022/mtxDatetimepicker.mjs +52 -46
- package/fesm2022/mtxDatetimepicker.mjs.map +1 -1
- package/fesm2022/mtxDialog.mjs +10 -10
- package/fesm2022/mtxDialog.mjs.map +1 -1
- package/fesm2022/mtxDrawer.mjs +10 -10
- package/fesm2022/mtxDrawer.mjs.map +1 -1
- package/fesm2022/mtxGrid.mjs +66 -66
- package/fesm2022/mtxGrid.mjs.map +1 -1
- package/fesm2022/mtxLoader.mjs +7 -7
- package/fesm2022/mtxLoader.mjs.map +1 -1
- package/fesm2022/mtxPopover.mjs +19 -19
- package/fesm2022/mtxPopover.mjs.map +1 -1
- package/fesm2022/mtxProgress.mjs +7 -7
- package/fesm2022/mtxProgress.mjs.map +1 -1
- package/fesm2022/mtxSelect.mjs +43 -43
- package/fesm2022/mtxSelect.mjs.map +1 -1
- package/fesm2022/mtxSlider.mjs +7 -7
- package/fesm2022/mtxSlider.mjs.map +1 -1
- package/fesm2022/mtxSplit.mjs +10 -10
- package/fesm2022/mtxSplit.mjs.map +1 -1
- package/fesm2022/mtxTooltip.mjs +16 -16
- package/fesm2022/mtxTooltip.mjs.map +1 -1
- package/package.json +8 -8
package/esm2022/grid/cell.mjs
CHANGED
|
@@ -12,7 +12,7 @@ import * as i7 from "@angular/material/badge";
|
|
|
12
12
|
import * as i8 from "@angular/material/icon";
|
|
13
13
|
import * as i9 from "@ng-matero/extensions/core";
|
|
14
14
|
import * as i10 from "./grid-pipes";
|
|
15
|
-
class MtxGridCell {
|
|
15
|
+
export class MtxGridCell {
|
|
16
16
|
get _value() {
|
|
17
17
|
return this._utils.getCellValue(this.rowData, this.colDef);
|
|
18
18
|
}
|
|
@@ -104,11 +104,10 @@ class MtxGridCell {
|
|
|
104
104
|
};
|
|
105
105
|
const photoviewer = new PhotoViewer(imgs, options);
|
|
106
106
|
}
|
|
107
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
108
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: MtxGridCell, selector: "mtx-grid-cell", inputs: { rowData: "rowData", colDef: "colDef", data: "data", summary: "summary", placeholder: "placeholder" }, outputs: { rowDataChange: "rowDataChange" }, exportAs: ["mtxGridCell"], ngImport: i0, template: "<span *ngIf=\"summary; else customCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip((data | cellSummary: colDef))\"\r\n [innerHTML]=\"_getText((data | cellSummary: colDef))\">\r\n</span>\r\n\r\n<!-- Custom formatting -->\r\n<ng-template #customCellFormattingTpl>\r\n <span *ngIf=\"colDef.formatter; else defaultCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip(colDef.formatter(rowData, colDef))\"\r\n [innerHTML]=\"_getText(colDef.formatter(rowData, colDef))\">\r\n </span>\r\n</ng-template>\r\n\r\n<!-- Default formatting -->\r\n<ng-template #defaultCellFormattingTpl>\r\n <ng-container [ngSwitch]=\"colDef.type\">\r\n <!-- Buttons -->\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <ng-container\r\n *ngFor=\"let btn of colDef.buttons | cellActions: rowData: rowChangeRecord: rowChangeRecord?.currentValue\">\r\n <ng-container *ngIf=\"!btn.iif || btn.iif(rowData)\">\r\n <ng-container [ngSwitch]=\"btn.type\">\r\n <ng-container *ngSwitchCase=\"'raised'\">\r\n <button mat-raised-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stroked'\">\r\n <button mat-stroked-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'flat'\">\r\n <button mat-flat-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <button mat-icon-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fab'\">\r\n <button mat-fab [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'mini-fab'\">\r\n <button mat-mini-fab [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button mat-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Tag -->\r\n <ng-container *ngSwitchCase=\"'tag'\">\r\n <mat-chip-listbox *ngIf=\"colDef.tag && colDef.tag[_value]; else tagEmptyTpl\">\r\n <mat-chip color=\"primary\" [ngClass]=\"['bg-' + colDef.tag[_value].color]\">\r\n {{colDef.tag[_value].text}}\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n <ng-template #tagEmptyTpl>{{_value}}</ng-template>\r\n </ng-container>\r\n <!-- Link -->\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a [href]=\"_value\" target=\"_blank\">{{_value}}</a>\r\n </ng-container>\r\n <!-- Image -->\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <img class=\"mtx-grid-img\" [src]=\"_value\" (click)=\"_onImagePreview(_value)\">\r\n </ng-container>\r\n <!-- Boolean -->\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\r\n </ng-container>\r\n <!-- Number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <span [title]=\"_getTooltip(_value | number: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | number: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Currency -->\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <span [title]=\"_getTooltip(_value | currency: colDef.typeParameter?.currencyCode:\r\n colDef.typeParameter?.display:\r\n colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | currency: colDef.typeParameter?.currencyCode:\r\n colDef.typeParameter?.display:\r\n colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Percent -->\r\n <ng-container *ngSwitchCase=\"'percent'\">\r\n <span [title]=\"_getTooltip(_value | percent: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | percent: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <span [title]=\"_getTooltip(_value | date: colDef.typeParameter?.format:\r\n colDef.typeParameter?.timezone:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | date: colDef.typeParameter?.format:\r\n colDef.typeParameter?.timezone:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Default -->\r\n <ng-container *ngSwitchDefault>\r\n <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [".mtx-grid-img{display:block;width:32px;border-radius:4px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i5.MatChipListbox, selector: "mat-chip-listbox", inputs: ["tabIndex", "multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i7.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i3.PercentPipe, name: "percent" }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i9.MtxToObservablePipe, name: "toObservable" }, { kind: "pipe", type: i10.MtxGridCellActionsPipe, name: "cellActions" }, { kind: "pipe", type: i10.MtxGridCellActionTooltipPipe, name: "cellActionTooltip" }, { kind: "pipe", type: i10.MtxGridCellActionBadgePipe, name: "cellActionBadge" }, { kind: "pipe", type: i10.MtxGridCellActionDisablePipe, name: "cellActionDisable" }, { kind: "pipe", type: i10.MtxGridCellSummaryPipe, name: "cellSummary" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
107
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: MtxGridCell, deps: [{ token: i1.MtxDialog }, { token: i2.MtxGridUtils }, { token: i0.KeyValueDiffers }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
108
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: MtxGridCell, selector: "mtx-grid-cell", inputs: { rowData: "rowData", colDef: "colDef", data: "data", summary: "summary", placeholder: "placeholder" }, outputs: { rowDataChange: "rowDataChange" }, exportAs: ["mtxGridCell"], ngImport: i0, template: "<span *ngIf=\"summary; else customCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip((data | cellSummary: colDef))\"\r\n [innerHTML]=\"_getText((data | cellSummary: colDef))\">\r\n</span>\r\n\r\n<!-- Custom formatting -->\r\n<ng-template #customCellFormattingTpl>\r\n <span *ngIf=\"colDef.formatter; else defaultCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip(colDef.formatter(rowData, colDef))\"\r\n [innerHTML]=\"_getText(colDef.formatter(rowData, colDef))\">\r\n </span>\r\n</ng-template>\r\n\r\n<!-- Default formatting -->\r\n<ng-template #defaultCellFormattingTpl>\r\n <ng-container [ngSwitch]=\"colDef.type\">\r\n <!-- Buttons -->\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <ng-container\r\n *ngFor=\"let btn of colDef.buttons | cellActions: rowData: rowChangeRecord: rowChangeRecord?.currentValue\">\r\n <ng-container *ngIf=\"!btn.iif || btn.iif(rowData)\">\r\n <ng-container [ngSwitch]=\"btn.type\">\r\n <ng-container *ngSwitchCase=\"'raised'\">\r\n <button mat-raised-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stroked'\">\r\n <button mat-stroked-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'flat'\">\r\n <button mat-flat-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <button mat-icon-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fab'\">\r\n <button mat-fab [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'mini-fab'\">\r\n <button mat-mini-fab [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button mat-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Tag -->\r\n <ng-container *ngSwitchCase=\"'tag'\">\r\n <mat-chip-listbox *ngIf=\"colDef.tag && colDef.tag[_value]; else tagEmptyTpl\">\r\n <mat-chip color=\"primary\" [ngClass]=\"['bg-' + colDef.tag[_value].color]\">\r\n {{colDef.tag[_value].text}}\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n <ng-template #tagEmptyTpl>{{_value}}</ng-template>\r\n </ng-container>\r\n <!-- Link -->\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a [href]=\"_value\" target=\"_blank\">{{_value}}</a>\r\n </ng-container>\r\n <!-- Image -->\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <img class=\"mtx-grid-img\" [src]=\"_value\" (click)=\"_onImagePreview(_value)\">\r\n </ng-container>\r\n <!-- Boolean -->\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\r\n </ng-container>\r\n <!-- Number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <span [title]=\"_getTooltip(_value | number: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | number: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Currency -->\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <span [title]=\"_getTooltip(_value | currency: colDef.typeParameter?.currencyCode:\r\n colDef.typeParameter?.display:\r\n colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | currency: colDef.typeParameter?.currencyCode:\r\n colDef.typeParameter?.display:\r\n colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Percent -->\r\n <ng-container *ngSwitchCase=\"'percent'\">\r\n <span [title]=\"_getTooltip(_value | percent: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | percent: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <span [title]=\"_getTooltip(_value | date: colDef.typeParameter?.format:\r\n colDef.typeParameter?.timezone:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | date: colDef.typeParameter?.format:\r\n colDef.typeParameter?.timezone:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Default -->\r\n <ng-container *ngSwitchDefault>\r\n <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [".mtx-grid-img{display:block;width:32px;border-radius:4px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i5.MatChipListbox, selector: "mat-chip-listbox", inputs: ["tabIndex", "multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i7.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i3.PercentPipe, name: "percent" }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i9.MtxToObservablePipe, name: "toObservable" }, { kind: "pipe", type: i10.MtxGridCellActionsPipe, name: "cellActions" }, { kind: "pipe", type: i10.MtxGridCellActionTooltipPipe, name: "cellActionTooltip" }, { kind: "pipe", type: i10.MtxGridCellActionBadgePipe, name: "cellActionBadge" }, { kind: "pipe", type: i10.MtxGridCellActionDisablePipe, name: "cellActionDisable" }, { kind: "pipe", type: i10.MtxGridCellSummaryPipe, name: "cellSummary" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
109
109
|
}
|
|
110
|
-
|
|
111
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: MtxGridCell, decorators: [{
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: MtxGridCell, decorators: [{
|
|
112
111
|
type: Component,
|
|
113
112
|
args: [{ selector: 'mtx-grid-cell', exportAs: 'mtxGridCell', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span *ngIf=\"summary; else customCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip((data | cellSummary: colDef))\"\r\n [innerHTML]=\"_getText((data | cellSummary: colDef))\">\r\n</span>\r\n\r\n<!-- Custom formatting -->\r\n<ng-template #customCellFormattingTpl>\r\n <span *ngIf=\"colDef.formatter; else defaultCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip(colDef.formatter(rowData, colDef))\"\r\n [innerHTML]=\"_getText(colDef.formatter(rowData, colDef))\">\r\n </span>\r\n</ng-template>\r\n\r\n<!-- Default formatting -->\r\n<ng-template #defaultCellFormattingTpl>\r\n <ng-container [ngSwitch]=\"colDef.type\">\r\n <!-- Buttons -->\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <ng-container\r\n *ngFor=\"let btn of colDef.buttons | cellActions: rowData: rowChangeRecord: rowChangeRecord?.currentValue\">\r\n <ng-container *ngIf=\"!btn.iif || btn.iif(rowData)\">\r\n <ng-container [ngSwitch]=\"btn.type\">\r\n <ng-container *ngSwitchCase=\"'raised'\">\r\n <button mat-raised-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stroked'\">\r\n <button mat-stroked-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'flat'\">\r\n <button mat-flat-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <button mat-icon-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fab'\">\r\n <button mat-fab [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'mini-fab'\">\r\n <button mat-mini-fab [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button mat-button [color]=\"btn.color || 'primary'\" type=\"button\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class || '']\"\r\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\r\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\r\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\r\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\r\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\r\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\r\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\r\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\r\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\r\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\r\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\r\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\r\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\r\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\r\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\r\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\r\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Tag -->\r\n <ng-container *ngSwitchCase=\"'tag'\">\r\n <mat-chip-listbox *ngIf=\"colDef.tag && colDef.tag[_value]; else tagEmptyTpl\">\r\n <mat-chip color=\"primary\" [ngClass]=\"['bg-' + colDef.tag[_value].color]\">\r\n {{colDef.tag[_value].text}}\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n <ng-template #tagEmptyTpl>{{_value}}</ng-template>\r\n </ng-container>\r\n <!-- Link -->\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a [href]=\"_value\" target=\"_blank\">{{_value}}</a>\r\n </ng-container>\r\n <!-- Image -->\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <img class=\"mtx-grid-img\" [src]=\"_value\" (click)=\"_onImagePreview(_value)\">\r\n </ng-container>\r\n <!-- Boolean -->\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\r\n </ng-container>\r\n <!-- Number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <span [title]=\"_getTooltip(_value | number: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | number: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Currency -->\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <span [title]=\"_getTooltip(_value | currency: colDef.typeParameter?.currencyCode:\r\n colDef.typeParameter?.display:\r\n colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | currency: colDef.typeParameter?.currencyCode:\r\n colDef.typeParameter?.display:\r\n colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Percent -->\r\n <ng-container *ngSwitchCase=\"'percent'\">\r\n <span [title]=\"_getTooltip(_value | percent: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | percent: colDef.typeParameter?.digitsInfo:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <span [title]=\"_getTooltip(_value | date: colDef.typeParameter?.format:\r\n colDef.typeParameter?.timezone:\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_value | date: colDef.typeParameter?.format:\r\n colDef.typeParameter?.timezone:\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Default -->\r\n <ng-container *ngSwitchDefault>\r\n <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [".mtx-grid-img{display:block;width:32px;border-radius:4px;cursor:pointer}\n"] }]
|
|
114
113
|
}], ctorParameters: function () { return [{ type: i1.MtxDialog }, { type: i2.MtxGridUtils }, { type: i0.KeyValueDiffers }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { rowData: [{
|
|
@@ -124,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImpor
|
|
|
124
123
|
}], rowDataChange: [{
|
|
125
124
|
type: Output
|
|
126
125
|
}] } });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvZ3JpZC9jZWxsLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9ncmlkL2NlbGwuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQU1MLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxXQUFXLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7OztBQUlwQyxNQVFhLFdBQVc7SUFzQnRCLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFlBQ1UsT0FBa0IsRUFDbEIsTUFBb0IsRUFDcEIsUUFBeUIsRUFDekIsa0JBQXFDO1FBSHJDLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBN0IvQyxlQUFlO1FBQ04sWUFBTyxHQUF3QixFQUFFLENBQUM7UUFLM0MsaUJBQWlCO1FBQ1IsU0FBSSxHQUFVLEVBQUUsQ0FBQztRQUUxQiwyQkFBMkI7UUFDbEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUV6QiwyREFBMkQ7UUFDbEQsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFFMUIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBcUMsQ0FBQztJQWU3RSxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsT0FBcUM7UUFDekQsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBVTtRQUNqQixPQUFPLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMxRixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDakQsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQVU7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckYsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFpQixFQUFFLEdBQXdCLEVBQUUsT0FBNEI7UUFDdEYsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDaEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDM0UsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO2lCQUNsQjthQUNGLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQixLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLO2dCQUNyQixXQUFXLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXO2dCQUNqQyxPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxJQUFJLFNBQVM7d0JBQ3BDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sSUFBSSxJQUFJO3dCQUM3QixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7cUJBQzFDO29CQUNEO3dCQUNFLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVU7d0JBQzFCLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsSUFBSSxPQUFPO3FCQUNwQztpQkFDRjthQUNGLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLGVBQWUsQ0FBQyxNQUFjO1FBQzVCLE1BQU0sSUFBSSxHQUFzQixFQUFFLENBQUM7UUFFbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLGFBQWEsR0FDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDO1lBQ2xGLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUV2RSxNQUFNLE9BQU8sR0FBd0I7WUFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUN0QixhQUFhO1NBQ2QsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO2lJQXBIVSxXQUFXO3FIQUFYLFdBQVcsNk9DN0J4QixxMWpCQXVRQTs7U0QxT2EsV0FBVzsyRkFBWCxXQUFXO2tCQVJ2QixTQUFTOytCQUNFLGVBQWUsWUFDZixhQUFhLGlCQUdSLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07eUxBSXRDLE9BQU87c0JBQWYsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgS2V5VmFsdWVDaGFuZ2VSZWNvcmQsXG4gIEtleVZhbHVlQ2hhbmdlcyxcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE10eERpYWxvZyB9IGZyb20gJ0BuZy1tYXRlcm8vZXh0ZW5zaW9ucy9kaWFsb2cnO1xuaW1wb3J0IFBob3RvVmlld2VyIGZyb20gJ3Bob3Rvdmlld2VyJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTXR4R3JpZFV0aWxzIH0gZnJvbSAnLi9ncmlkLXV0aWxzJztcbmltcG9ydCB7IE10eEdyaWRDb2x1bW4sIE10eEdyaWRDb2x1bW5CdXR0b24gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdHgtZ3JpZC1jZWxsJyxcbiAgZXhwb3J0QXM6ICdtdHhHcmlkQ2VsbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jZWxsLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jZWxsLnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE10eEdyaWRDZWxsIGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrIHtcbiAgLyoqIFJvdyBkYXRhICovXG4gIEBJbnB1dCgpIHJvd0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAvKiogQ29sdW1uIGRlZmluaXRpb24gKi9cbiAgQElucHV0KCkgY29sRGVmITogTXR4R3JpZENvbHVtbjtcblxuICAvKiogVGFibGUgZGF0YSAqL1xuICBASW5wdXQoKSBkYXRhOiBhbnlbXSA9IFtdO1xuXG4gIC8qKiBXaGV0aGVyIHNob3cgc3VtbWFyeSAqL1xuICBASW5wdXQoKSBzdW1tYXJ5ID0gZmFsc2U7XG5cbiAgLyoqIFBsYWNlaG9sZGVyIGZvciB0aGUgZW1wdHkgdmFsdWUgKGBudWxsYCwgYCcnYCwgYFtdYCkgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICctLSc7XG5cbiAgQE91dHB1dCgpIHJvd0RhdGFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgYW55Pj4oKTtcblxuICBwcml2YXRlIHJvd0RhdGFEaWZmZXI/OiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIGFueT47XG5cbiAgcm93Q2hhbmdlUmVjb3JkPzogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGdldCBfdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3V0aWxzLmdldENlbGxWYWx1ZSh0aGlzLnJvd0RhdGEsIHRoaXMuY29sRGVmKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2RpYWxvZzogTXR4RGlhbG9nLFxuICAgIHByaXZhdGUgX3V0aWxzOiBNdHhHcmlkVXRpbHMsXG4gICAgcHJpdmF0ZSBfZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEYXRhRGlmZmVyID0gdGhpcy5fZGlmZmVycy5maW5kKHRoaXMucm93RGF0YSkuY3JlYXRlKCk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbmdlcyA9IHRoaXMucm93RGF0YURpZmZlcj8uZGlmZih0aGlzLnJvd0RhdGEpO1xuICAgIGlmIChjaGFuZ2VzKSB7XG4gICAgICB0aGlzLl9hcHBseUNoYW5nZXMoY2hhbmdlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlDaGFuZ2VzKGNoYW5nZXM6IEtleVZhbHVlQ2hhbmdlczxzdHJpbmcsIGFueT4pIHtcbiAgICBjaGFuZ2VzLmZvckVhY2hDaGFuZ2VkSXRlbShyZWNvcmQgPT4ge1xuICAgICAgdGhpcy5yb3dDaGFuZ2VSZWNvcmQgPSByZWNvcmQ7XG4gICAgICB0aGlzLnJvd0RhdGFDaGFuZ2UuZW1pdChyZWNvcmQpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBfZ2V0VGV4dCh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHRoaXMuX3V0aWxzLmlzRW1wdHkodmFsdWUpID8gdGhpcy5wbGFjZWhvbGRlciA6IHZhbHVlO1xuICB9XG5cbiAgX2dldFRvb2x0aXAodmFsdWU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLl91dGlscy5pc0VtcHR5KHZhbHVlKSA/ICcnIDogdmFsdWU7XG4gIH1cblxuICBfZ2V0Rm9ybWF0dGVyVG9vbHRpcCh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuX3V0aWxzLmlzQ29udGFpbkhUTUwodmFsdWUpIHx8IHRoaXMuX3V0aWxzLmlzRW1wdHkodmFsdWUpID8gJycgOiB2YWx1ZTtcbiAgfVxuXG4gIF9vbkFjdGlvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBidG46IE10eEdyaWRDb2x1bW5CdXR0b24sIHJvd0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHR5cGVvZiBidG4ucG9wID09PSAnc3RyaW5nJyB8fCBpc09ic2VydmFibGUoYnRuLnBvcCkpIHtcbiAgICAgIHRoaXMuX2RpYWxvZy5vcGVuKHtcbiAgICAgICAgdGl0bGU6IGJ0bi5wb3AsXG4gICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICB7IGNvbG9yOiAncHJpbWFyeScsIHRleHQ6ICdPSycsIG9uQ2xpY2s6ICgpID0+IGJ0bi5jbGljaz8uKHJvd0RhdGEpIHx8IHt9IH0sXG4gICAgICAgICAgeyB0ZXh0OiAnQ0xPU0UnIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBidG4ucG9wID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhpcy5fZGlhbG9nLm9wZW4oe1xuICAgICAgICB0aXRsZTogYnRuLnBvcD8udGl0bGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBidG4ucG9wPy5kZXNjcmlwdGlvbixcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiBidG4ucG9wPy5va0NvbG9yIHx8ICdwcmltYXJ5JyxcbiAgICAgICAgICAgIHRleHQ6IGJ0bi5wb3A/Lm9rVGV4dCB8fCAnT0snLFxuICAgICAgICAgICAgb25DbGljazogKCkgPT4gYnRuLmNsaWNrPy4ocm93RGF0YSkgfHwge30sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogYnRuLnBvcD8uY2xvc2VDb2xvcixcbiAgICAgICAgICAgIHRleHQ6IGJ0bi5wb3A/LmNsb3NlVGV4dCB8fCAnQ0xPU0UnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnRuLmNsaWNrPy4ocm93RGF0YSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFByZXZpZXcgZW5sYXJnZWQgaW1hZ2UgKi9cbiAgX29uSW1hZ2VQcmV2aWV3KHVybFN0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgaW1nczogUGhvdG9WaWV3ZXIuSW1nW10gPSBbXTtcblxuICAgIHRoaXMuX3V0aWxzLnN0cjJhcnIodXJsU3RyKS5mb3JFYWNoKCh1cmwsIGluZGV4KSA9PiB7XG4gICAgICBpbWdzLnB1c2goeyB0aXRsZTogaW5kZXggKyAxICsgJycsIHNyYzogdXJsIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZm9vdGVyVG9vbGJhciA9XG4gICAgICBpbWdzLmxlbmd0aCA+IDFcbiAgICAgICAgPyBbJ3pvb21JbicsICd6b29tT3V0JywgJ3ByZXYnLCAnbmV4dCcsICdyb3RhdGVSaWdodCcsICdyb3RhdGVMZWZ0JywgJ2FjdHVhbFNpemUnXVxuICAgICAgICA6IFsnem9vbUluJywgJ3pvb21PdXQnLCAncm90YXRlUmlnaHQnLCAncm90YXRlTGVmdCcsICdhY3R1YWxTaXplJ107XG5cbiAgICBjb25zdCBvcHRpb25zOiBQaG90b1ZpZXdlci5PcHRpb25zID0ge1xuICAgICAgdGl0bGU6IGltZ3MubGVuZ3RoID4gMSxcbiAgICAgIGZvb3RlclRvb2xiYXIsXG4gICAgfTtcblxuICAgIGNvbnN0IHBob3Rvdmlld2VyID0gbmV3IFBob3RvVmlld2VyKGltZ3MsIG9wdGlvbnMpO1xuICB9XG59XG4iLCI8c3BhbiAqbmdJZj1cInN1bW1hcnk7IGVsc2UgY3VzdG9tQ2VsbEZvcm1hdHRpbmdUcGxcIlxyXG4gICAgICBbdGl0bGVdPVwiX2dldEZvcm1hdHRlclRvb2x0aXAoKGRhdGEgfCBjZWxsU3VtbWFyeTogY29sRGVmKSlcIlxyXG4gICAgICBbaW5uZXJIVE1MXT1cIl9nZXRUZXh0KChkYXRhIHwgY2VsbFN1bW1hcnk6IGNvbERlZikpXCI+XHJcbjwvc3Bhbj5cclxuXHJcbjwhLS0gQ3VzdG9tIGZvcm1hdHRpbmcgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjY3VzdG9tQ2VsbEZvcm1hdHRpbmdUcGw+XHJcbiAgPHNwYW4gKm5nSWY9XCJjb2xEZWYuZm9ybWF0dGVyOyBlbHNlIGRlZmF1bHRDZWxsRm9ybWF0dGluZ1RwbFwiXHJcbiAgICAgICAgW3RpdGxlXT1cIl9nZXRGb3JtYXR0ZXJUb29sdGlwKGNvbERlZi5mb3JtYXR0ZXIocm93RGF0YSwgY29sRGVmKSlcIlxyXG4gICAgICAgIFtpbm5lckhUTUxdPVwiX2dldFRleHQoY29sRGVmLmZvcm1hdHRlcihyb3dEYXRhLCBjb2xEZWYpKVwiPlxyXG4gIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRGVmYXVsdCBmb3JtYXR0aW5nIC0tPlxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRDZWxsRm9ybWF0dGluZ1RwbD5cclxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb2xEZWYudHlwZVwiPlxyXG4gICAgPCEtLSBCdXR0b25zIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2J1dHRvbidcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBidG4gb2YgY29sRGVmLmJ1dHRvbnMgfCBjZWxsQWN0aW9uczogcm93RGF0YTogcm93Q2hhbmdlUmVjb3JkOiByb3dDaGFuZ2VSZWNvcmQ/LmN1cnJlbnRWYWx1ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYnRuLmlpZiB8fCBidG4uaWlmKHJvd0RhdGEpXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJidG4udHlwZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncmFpc2VkJ1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW2NvbG9yXT1cImJ0bi5jb2xvciB8fCAncHJpbWFyeSdcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnbXR4LWdyaWQtYWN0aW9uLWJ1dHRvbicsIGJ0bi5jbGFzcyB8fCAnJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ0biB8IGNlbGxBY3Rpb25EaXNhYmxlOiByb3dEYXRhOiByb3dDaGFuZ2VSZWNvcmQ6IHJvd0NoYW5nZVJlY29yZD8uY3VycmVudFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkubWVzc2FnZSB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmhpZGVEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnNob3dEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb24gfHwgJ2JlbG93J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uQXRPcmlnaW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbkF0T3JpZ2luXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwVG91Y2hHZXN0dXJlc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnRvdWNoR2VzdHVyZXMgfHwgJ2F1dG8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29udGVudCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURlc2NyaXB0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRlc2NyaXB0aW9uIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkucG9zaXRpb24gfHwgJ2Fib3ZlIGFmdGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnNpemUgfHwgJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlT3ZlcmxhcF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5vdmVybGFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vbkFjdGlvbkNsaWNrKCRldmVudCwgYnRuLCByb3dEYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXR4LWdyaWQtaWNvblwiICpuZ0lmPVwiYnRuLmljb25cIj57e2J0bi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3tidG4udGV4dCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3Ryb2tlZCdcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBbY29sb3JdPVwiYnRuLmNvbG9yIHx8ICdwcmltYXJ5J1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiWydtdHgtZ3JpZC1hY3Rpb24tYnV0dG9uJywgYnRuLmNsYXNzIHx8ICcnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuIHwgY2VsbEFjdGlvbkRpc2FibGU6IHJvd0RhdGE6IHJvd0NoYW5nZVJlY29yZDogcm93Q2hhbmdlUmVjb3JkPy5jdXJyZW50VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5tZXNzYWdlIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwSGlkZURlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuaGlkZURlbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuc2hvd0RlbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbiB8fCAnYmVsb3cnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25BdE9yaWdpbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uQXRPcmlnaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBUb3VjaEdlc3R1cmVzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkudG91Y2hHZXN0dXJlcyB8fCAnYXV0bydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb250ZW50IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGVzY3JpcHRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGVzY3JpcHRpb24gfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5wb3NpdGlvbiB8fCAnYWJvdmUgYWZ0ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVNpemVdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuc2l6ZSB8fCAnbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VPdmVybGFwXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLm92ZXJsYXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX29uQWN0aW9uQ2xpY2soJGV2ZW50LCBidG4sIHJvd0RhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtdHgtZ3JpZC1pY29uXCIgKm5nSWY9XCJidG4uaWNvblwiPnt7YnRuLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57e2J0bi50ZXh0IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmbGF0J1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIFtjb2xvcl09XCJidG4uY29sb3IgfHwgJ3ByaW1hcnknXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbJ210eC1ncmlkLWFjdGlvbi1idXR0b24nLCBidG4uY2xhc3MgfHwgJyddXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidG4gfCBjZWxsQWN0aW9uRGlzYWJsZTogcm93RGF0YTogcm93Q2hhbmdlUmVjb3JkOiByb3dDaGFuZ2VSZWNvcmQ/LmN1cnJlbnRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLm1lc3NhZ2UgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5oaWRlRGVsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5zaG93RGVsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uIHx8ICdiZWxvdydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbkF0T3JpZ2luXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb25BdE9yaWdpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFRvdWNoR2VzdHVyZXNdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS50b3VjaEdlc3R1cmVzIHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbnRlbnQgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEZXNjcmlwdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kZXNjcmlwdGlvbiB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnBvc2l0aW9uIHx8ICdhYm92ZSBhZnRlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlU2l6ZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5zaXplIHx8ICdtZWRpdW0nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZU92ZXJsYXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkub3ZlcmxhcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25BY3Rpb25DbGljaygkZXZlbnQsIGJ0biwgcm93RGF0YSlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm10eC1ncmlkLWljb25cIiAqbmdJZj1cImJ0bi5pY29uXCI+e3tidG4uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7YnRuLnRleHQgfCB0b09ic2VydmFibGUgfCBhc3luY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW2NvbG9yXT1cImJ0bi5jb2xvciB8fCAncHJpbWFyeSdcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnbXR4LWdyaWQtYWN0aW9uLWJ1dHRvbicsIGJ0bi5jbGFzcyB8fCAnJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ0biB8IGNlbGxBY3Rpb25EaXNhYmxlOiByb3dEYXRhOiByb3dDaGFuZ2VSZWNvcmQ6IHJvd0NoYW5nZVJlY29yZD8uY3VycmVudFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkubWVzc2FnZSB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmhpZGVEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnNob3dEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb24gfHwgJ2JlbG93J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uQXRPcmlnaW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbkF0T3JpZ2luXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwVG91Y2hHZXN0dXJlc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnRvdWNoR2VzdHVyZXMgfHwgJ2F1dG8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29udGVudCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURlc2NyaXB0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRlc2NyaXB0aW9uIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkucG9zaXRpb24gfHwgJ2Fib3ZlIGFmdGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnNpemUgfHwgJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlT3ZlcmxhcF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5vdmVybGFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vbkFjdGlvbkNsaWNrKCRldmVudCwgYnRuLCByb3dEYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXR4LWdyaWQtaWNvblwiPnt7YnRuLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmFiJ1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWZhYiBbY29sb3JdPVwiYnRuLmNvbG9yIHx8ICdwcmltYXJ5J1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiWydtdHgtZ3JpZC1hY3Rpb24tYnV0dG9uJywgYnRuLmNsYXNzIHx8ICcnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuIHwgY2VsbEFjdGlvbkRpc2FibGU6IHJvd0RhdGE6IHJvd0NoYW5nZVJlY29yZDogcm93Q2hhbmdlUmVjb3JkPy5jdXJyZW50VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5tZXNzYWdlIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwSGlkZURlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuaGlkZURlbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuc2hvd0RlbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbiB8fCAnYmVsb3cnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25BdE9yaWdpbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uQXRPcmlnaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBUb3VjaEdlc3R1cmVzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkudG91Y2hHZXN0dXJlcyB8fCAnYXV0bydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb250ZW50IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGVzY3JpcHRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGVzY3JpcHRpb24gfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5wb3NpdGlvbiB8fCAnYWJvdmUgYWZ0ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVNpemVdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuc2l6ZSB8fCAnbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VPdmVybGFwXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLm92ZXJsYXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX29uQWN0aW9uQ2xpY2soJGV2ZW50LCBidG4sIHJvd0RhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtdHgtZ3JpZC1pY29uXCI+e3tidG4uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtaW5pLWZhYidcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1taW5pLWZhYiBbY29sb3JdPVwiYnRuLmNvbG9yIHx8ICdwcmltYXJ5J1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiWydtdHgtZ3JpZC1hY3Rpb24tYnV0dG9uJywgYnRuLmNsYXNzIHx8ICcnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuIHwgY2VsbEFjdGlvbkRpc2FibGU6IHJvd0RhdGE6IHJvd0NoYW5nZVJlY29yZDogcm93Q2hhbmdlUmVjb3JkPy5jdXJyZW50VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5tZXNzYWdlIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwSGlkZURlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuaGlkZURlbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuc2hvd0RlbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbiB8fCAnYmVsb3cnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25BdE9yaWdpbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uQXRPcmlnaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBUb3VjaEdlc3R1cmVzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkudG91Y2hHZXN0dXJlcyB8fCAnYXV0bydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb250ZW50IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGVzY3JpcHRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGVzY3JpcHRpb24gfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5wb3NpdGlvbiB8fCAnYWJvdmUgYWZ0ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVNpemVdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuc2l6ZSB8fCAnbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VPdmVybGFwXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLm92ZXJsYXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX29uQWN0aW9uQ2xpY2soJGV2ZW50LCBidG4sIHJvd0RhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtdHgtZ3JpZC1pY29uXCI+e3tidG4uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW2NvbG9yXT1cImJ0bi5jb2xvciB8fCAncHJpbWFyeSdcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnbXR4LWdyaWQtYWN0aW9uLWJ1dHRvbicsIGJ0bi5jbGFzcyB8fCAnJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ0biB8IGNlbGxBY3Rpb25EaXNhYmxlOiByb3dEYXRhOiByb3dDaGFuZ2VSZWNvcmQ6IHJvd0NoYW5nZVJlY29yZD8uY3VycmVudFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkubWVzc2FnZSB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmhpZGVEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnNob3dEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb24gfHwgJ2JlbG93J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uQXRPcmlnaW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbkF0T3JpZ2luXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwVG91Y2hHZXN0dXJlc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnRvdWNoR2VzdHVyZXMgfHwgJ2F1dG8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29udGVudCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURlc2NyaXB0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRlc2NyaXB0aW9uIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkucG9zaXRpb24gfHwgJ2Fib3ZlIGFmdGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnNpemUgfHwgJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlT3ZlcmxhcF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5vdmVybGFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vbkFjdGlvbkNsaWNrKCRldmVudCwgYnRuLCByb3dEYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXR4LWdyaWQtaWNvblwiICpuZ0lmPVwiYnRuLmljb25cIj57e2J0bi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3tidG4udGV4dCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIFRhZyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0YWcnXCI+XHJcbiAgICAgIDxtYXQtY2hpcC1saXN0Ym94ICpuZ0lmPVwiY29sRGVmLnRhZyAmJiBjb2xEZWYudGFnW192YWx1ZV07IGVsc2UgdGFnRW1wdHlUcGxcIj5cclxuICAgICAgICA8bWF0LWNoaXAgY29sb3I9XCJwcmltYXJ5XCIgW25nQ2xhc3NdPVwiWydiZy0nICsgY29sRGVmLnRhZ1tfdmFsdWVdLmNvbG9yXVwiPlxyXG4gICAgICAgICAge3tjb2xEZWYudGFnW192YWx1ZV0udGV4dH19XHJcbiAgICAgICAgPC9tYXQtY2hpcD5cclxuICAgICAgPC9tYXQtY2hpcC1saXN0Ym94PlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3RhZ0VtcHR5VHBsPnt7X3ZhbHVlfX08L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIExpbmsgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGluaydcIj5cclxuICAgICAgPGEgW2hyZWZdPVwiX3ZhbHVlXCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3tfdmFsdWV9fTwvYT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBJbWFnZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbWFnZSdcIj5cclxuICAgICAgPGltZyBjbGFzcz1cIm10eC1ncmlkLWltZ1wiIFtzcmNdPVwiX3ZhbHVlXCIgKGNsaWNrKT1cIl9vbkltYWdlUHJldmlldyhfdmFsdWUpXCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gQm9vbGVhbiAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxyXG4gICAgICA8c3BhbiBbdGl0bGVdPVwiX2dldFRvb2x0aXAoX3ZhbHVlKVwiPnt7X2dldFRleHQoX3ZhbHVlKX19PC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIE51bWJlciAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XHJcbiAgICAgIDxzcGFuIFt0aXRsZV09XCJfZ2V0VG9vbHRpcChfdmFsdWUgfCBudW1iZXI6IGNvbERlZi50eXBlUGFyYW1ldGVyPy5kaWdpdHNJbmZvOlxyXG4gICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8ubG9jYWxlKVwiPlxyXG4gICAgICAgIHt7X2dldFRleHQoX3ZhbHVlIHwgbnVtYmVyOiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlnaXRzSW5mbzpcclxuICAgICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8ubG9jYWxlKX19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBDdXJyZW5jeSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIj5cclxuICAgICAgPHNwYW4gW3RpdGxlXT1cIl9nZXRUb29sdGlwKF92YWx1ZSB8IGN1cnJlbmN5OiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uY3VycmVuY3lDb2RlOlxyXG4gICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlzcGxheTpcclxuICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmRpZ2l0c0luZm86XHJcbiAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpXCI+XHJcbiAgICAgICAge3tfZ2V0VGV4dChfdmFsdWUgfCBjdXJyZW5jeTogY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmN1cnJlbmN5Q29kZTpcclxuICAgICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlzcGxheTpcclxuICAgICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlnaXRzSW5mbzpcclxuICAgICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8ubG9jYWxlKX19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBQZXJjZW50IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3BlcmNlbnQnXCI+XHJcbiAgICAgIDxzcGFuIFt0aXRsZV09XCJfZ2V0VG9vbHRpcChfdmFsdWUgfCBwZXJjZW50OiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlnaXRzSW5mbzpcclxuICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmxvY2FsZSlcIj5cclxuICAgICAgICB7e19nZXRUZXh0KF92YWx1ZSB8IHBlcmNlbnQ6IGNvbERlZi50eXBlUGFyYW1ldGVyPy5kaWdpdHNJbmZvOlxyXG4gICAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIERhdGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cclxuICAgICAgPHNwYW4gW3RpdGxlXT1cIl9nZXRUb29sdGlwKF92YWx1ZSB8IGRhdGU6IGNvbERlZi50eXBlUGFyYW1ldGVyPy5mb3JtYXQ6XHJcbiAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy50aW1lem9uZTpcclxuICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmxvY2FsZSlcIj5cclxuICAgICAgICB7e19nZXRUZXh0KF92YWx1ZSB8IGRhdGU6IGNvbERlZi50eXBlUGFyYW1ldGVyPy5mb3JtYXQ6XHJcbiAgICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LnRpbWV6b25lOlxyXG4gICAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIERlZmF1bHQgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgIDxzcGFuIFt0aXRsZV09XCJfZ2V0VG9vbHRpcChfdmFsdWUpXCI+e3tfZ2V0VGV4dChfdmFsdWUpfX08L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvZ3JpZC9jZWxsLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9ncmlkL2NlbGwuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQU1MLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxXQUFXLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7OztBQVlwQyxNQUFNLE9BQU8sV0FBVztJQXNCdEIsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFDVSxPQUFrQixFQUNsQixNQUFvQixFQUNwQixRQUF5QixFQUN6QixrQkFBcUM7UUFIckMsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUE3Qi9DLGVBQWU7UUFDTixZQUFPLEdBQXdCLEVBQUUsQ0FBQztRQUszQyxpQkFBaUI7UUFDUixTQUFJLEdBQVUsRUFBRSxDQUFDO1FBRTFCLDJCQUEyQjtRQUNsQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXpCLDJEQUEyRDtRQUNsRCxnQkFBVyxHQUFXLElBQUksQ0FBQztRQUUxQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO0lBZTdFLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxPQUFxQztRQUN6RCxPQUFPLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzFGLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNqRCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBVTtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyRixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWlCLEVBQUUsR0FBd0IsRUFBRSxPQUE0QjtRQUN0RixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksT0FBTyxHQUFHLENBQUMsR0FBRyxLQUFLLFFBQVEsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQixLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUc7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUMzRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7aUJBQ2xCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7YUFBTSxJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUs7Z0JBQ3JCLFdBQVcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVc7Z0JBQ2pDLE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLElBQUksU0FBUzt3QkFDcEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUk7d0JBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtxQkFDMUM7b0JBQ0Q7d0JBQ0UsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVTt3QkFDMUIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxJQUFJLE9BQU87cUJBQ3BDO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCw2QkFBNkI7SUFDN0IsZUFBZSxDQUFDLE1BQWM7UUFDNUIsTUFBTSxJQUFJLEdBQXNCLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sYUFBYSxHQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDYixDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUM7WUFDbEYsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXZFLE1BQU0sT0FBTyxHQUF3QjtZQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3RCLGFBQWE7U0FDZCxDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7aUlBcEhVLFdBQVc7cUhBQVgsV0FBVyw2T0M3QnhCLHExakJBdVFBOzsyRkQxT2EsV0FBVztrQkFSdkIsU0FBUzsrQkFDRSxlQUFlLFlBQ2YsYUFBYSxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNO3lMQUl0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIEtleVZhbHVlQ2hhbmdlUmVjb3JkLFxuICBLZXlWYWx1ZUNoYW5nZXMsXG4gIEtleVZhbHVlRGlmZmVyLFxuICBLZXlWYWx1ZURpZmZlcnMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNdHhEaWFsb2cgfSBmcm9tICdAbmctbWF0ZXJvL2V4dGVuc2lvbnMvZGlhbG9nJztcbmltcG9ydCBQaG90b1ZpZXdlciBmcm9tICdwaG90b3ZpZXdlcic7XG5pbXBvcnQgeyBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE10eEdyaWRVdGlscyB9IGZyb20gJy4vZ3JpZC11dGlscyc7XG5pbXBvcnQgeyBNdHhHcmlkQ29sdW1uLCBNdHhHcmlkQ29sdW1uQnV0dG9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXR4LWdyaWQtY2VsbCcsXG4gIGV4cG9ydEFzOiAnbXR4R3JpZENlbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2VsbC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2VsbC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhHcmlkQ2VsbCBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjayB7XG4gIC8qKiBSb3cgZGF0YSAqL1xuICBASW5wdXQoKSByb3dEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgLyoqIENvbHVtbiBkZWZpbml0aW9uICovXG4gIEBJbnB1dCgpIGNvbERlZiE6IE10eEdyaWRDb2x1bW47XG5cbiAgLyoqIFRhYmxlIGRhdGEgKi9cbiAgQElucHV0KCkgZGF0YTogYW55W10gPSBbXTtcblxuICAvKiogV2hldGhlciBzaG93IHN1bW1hcnkgKi9cbiAgQElucHV0KCkgc3VtbWFyeSA9IGZhbHNlO1xuXG4gIC8qKiBQbGFjZWhvbGRlciBmb3IgdGhlIGVtcHR5IHZhbHVlIChgbnVsbGAsIGAnJ2AsIGBbXWApICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnLS0nO1xuXG4gIEBPdXRwdXQoKSByb3dEYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIGFueT4+KCk7XG5cbiAgcHJpdmF0ZSByb3dEYXRhRGlmZmVyPzogS2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBhbnk+O1xuXG4gIHJvd0NoYW5nZVJlY29yZD86IEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBnZXQgX3ZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl91dGlscy5nZXRDZWxsVmFsdWUodGhpcy5yb3dEYXRhLCB0aGlzLmNvbERlZik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9kaWFsb2c6IE10eERpYWxvZyxcbiAgICBwcml2YXRlIF91dGlsczogTXR4R3JpZFV0aWxzLFxuICAgIHByaXZhdGUgX2RpZmZlcnM6IEtleVZhbHVlRGlmZmVycyxcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm93RGF0YURpZmZlciA9IHRoaXMuX2RpZmZlcnMuZmluZCh0aGlzLnJvd0RhdGEpLmNyZWF0ZSgpO1xuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLnJvd0RhdGFEaWZmZXI/LmRpZmYodGhpcy5yb3dEYXRhKTtcbiAgICBpZiAoY2hhbmdlcykge1xuICAgICAgdGhpcy5fYXBwbHlDaGFuZ2VzKGNoYW5nZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5Q2hhbmdlcyhjaGFuZ2VzOiBLZXlWYWx1ZUNoYW5nZXM8c3RyaW5nLCBhbnk+KSB7XG4gICAgY2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0ocmVjb3JkID0+IHtcbiAgICAgIHRoaXMucm93Q2hhbmdlUmVjb3JkID0gcmVjb3JkO1xuICAgICAgdGhpcy5yb3dEYXRhQ2hhbmdlLmVtaXQocmVjb3JkKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgX2dldFRleHQodmFsdWU6IGFueSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gJycgOiB0aGlzLl91dGlscy5pc0VtcHR5KHZhbHVlKSA/IHRoaXMucGxhY2Vob2xkZXIgOiB2YWx1ZTtcbiAgfVxuXG4gIF9nZXRUb29sdGlwKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5fdXRpbHMuaXNFbXB0eSh2YWx1ZSkgPyAnJyA6IHZhbHVlO1xuICB9XG5cbiAgX2dldEZvcm1hdHRlclRvb2x0aXAodmFsdWU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLl91dGlscy5pc0NvbnRhaW5IVE1MKHZhbHVlKSB8fCB0aGlzLl91dGlscy5pc0VtcHR5KHZhbHVlKSA/ICcnIDogdmFsdWU7XG4gIH1cblxuICBfb25BY3Rpb25DbGljayhldmVudDogTW91c2VFdmVudCwgYnRuOiBNdHhHcmlkQ29sdW1uQnV0dG9uLCByb3dEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0eXBlb2YgYnRuLnBvcCA9PT0gJ3N0cmluZycgfHwgaXNPYnNlcnZhYmxlKGJ0bi5wb3ApKSB7XG4gICAgICB0aGlzLl9kaWFsb2cub3Blbih7XG4gICAgICAgIHRpdGxlOiBidG4ucG9wLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgeyBjb2xvcjogJ3ByaW1hcnknLCB0ZXh0OiAnT0snLCBvbkNsaWNrOiAoKSA9PiBidG4uY2xpY2s/Lihyb3dEYXRhKSB8fCB7fSB9LFxuICAgICAgICAgIHsgdGV4dDogJ0NMT1NFJyB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYnRuLnBvcCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRoaXMuX2RpYWxvZy5vcGVuKHtcbiAgICAgICAgdGl0bGU6IGJ0bi5wb3A/LnRpdGxlLFxuICAgICAgICBkZXNjcmlwdGlvbjogYnRuLnBvcD8uZGVzY3JpcHRpb24sXG4gICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogYnRuLnBvcD8ub2tDb2xvciB8fCAncHJpbWFyeScsXG4gICAgICAgICAgICB0ZXh0OiBidG4ucG9wPy5va1RleHQgfHwgJ09LJyxcbiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGJ0bi5jbGljaz8uKHJvd0RhdGEpIHx8IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6IGJ0bi5wb3A/LmNsb3NlQ29sb3IsXG4gICAgICAgICAgICB0ZXh0OiBidG4ucG9wPy5jbG9zZVRleHQgfHwgJ0NMT1NFJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ0bi5jbGljaz8uKHJvd0RhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBQcmV2aWV3IGVubGFyZ2VkIGltYWdlICovXG4gIF9vbkltYWdlUHJldmlldyh1cmxTdHI6IHN0cmluZykge1xuICAgIGNvbnN0IGltZ3M6IFBob3RvVmlld2VyLkltZ1tdID0gW107XG5cbiAgICB0aGlzLl91dGlscy5zdHIyYXJyKHVybFN0cikuZm9yRWFjaCgodXJsLCBpbmRleCkgPT4ge1xuICAgICAgaW1ncy5wdXNoKHsgdGl0bGU6IGluZGV4ICsgMSArICcnLCBzcmM6IHVybCB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvb3RlclRvb2xiYXIgPVxuICAgICAgaW1ncy5sZW5ndGggPiAxXG4gICAgICAgID8gWyd6b29tSW4nLCAnem9vbU91dCcsICdwcmV2JywgJ25leHQnLCAncm90YXRlUmlnaHQnLCAncm90YXRlTGVmdCcsICdhY3R1YWxTaXplJ11cbiAgICAgICAgOiBbJ3pvb21JbicsICd6b29tT3V0JywgJ3JvdGF0ZVJpZ2h0JywgJ3JvdGF0ZUxlZnQnLCAnYWN0dWFsU2l6ZSddO1xuXG4gICAgY29uc3Qgb3B0aW9uczogUGhvdG9WaWV3ZXIuT3B0aW9ucyA9IHtcbiAgICAgIHRpdGxlOiBpbWdzLmxlbmd0aCA+IDEsXG4gICAgICBmb290ZXJUb29sYmFyLFxuICAgIH07XG5cbiAgICBjb25zdCBwaG90b3ZpZXdlciA9IG5ldyBQaG90b1ZpZXdlcihpbWdzLCBvcHRpb25zKTtcbiAgfVxufVxuIiwiPHNwYW4gKm5nSWY9XCJzdW1tYXJ5OyBlbHNlIGN1c3RvbUNlbGxGb3JtYXR0aW5nVHBsXCJcclxuICAgICAgW3RpdGxlXT1cIl9nZXRGb3JtYXR0ZXJUb29sdGlwKChkYXRhIHwgY2VsbFN1bW1hcnk6IGNvbERlZikpXCJcclxuICAgICAgW2lubmVySFRNTF09XCJfZ2V0VGV4dCgoZGF0YSB8IGNlbGxTdW1tYXJ5OiBjb2xEZWYpKVwiPlxyXG48L3NwYW4+XHJcblxyXG48IS0tIEN1c3RvbSBmb3JtYXR0aW5nIC0tPlxyXG48bmctdGVtcGxhdGUgI2N1c3RvbUNlbGxGb3JtYXR0aW5nVHBsPlxyXG4gIDxzcGFuICpuZ0lmPVwiY29sRGVmLmZvcm1hdHRlcjsgZWxzZSBkZWZhdWx0Q2VsbEZvcm1hdHRpbmdUcGxcIlxyXG4gICAgICAgIFt0aXRsZV09XCJfZ2V0Rm9ybWF0dGVyVG9vbHRpcChjb2xEZWYuZm9ybWF0dGVyKHJvd0RhdGEsIGNvbERlZikpXCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cIl9nZXRUZXh0KGNvbERlZi5mb3JtYXR0ZXIocm93RGF0YSwgY29sRGVmKSlcIj5cclxuICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIERlZmF1bHQgZm9ybWF0dGluZyAtLT5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbEZvcm1hdHRpbmdUcGw+XHJcbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sRGVmLnR5cGVcIj5cclxuICAgIDwhLS0gQnV0dG9ucyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIididXR0b24nXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYnRuIG9mIGNvbERlZi5idXR0b25zIHwgY2VsbEFjdGlvbnM6IHJvd0RhdGE6IHJvd0NoYW5nZVJlY29yZDogcm93Q2hhbmdlUmVjb3JkPy5jdXJyZW50VmFsdWVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJ0bi5paWYgfHwgYnRuLmlpZihyb3dEYXRhKVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYnRuLnR5cGVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JhaXNlZCdcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFtjb2xvcl09XCJidG4uY29sb3IgfHwgJ3ByaW1hcnknXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbJ210eC1ncmlkLWFjdGlvbi1idXR0b24nLCBidG4uY2xhc3MgfHwgJyddXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidG4gfCBjZWxsQWN0aW9uRGlzYWJsZTogcm93RGF0YTogcm93Q2hhbmdlUmVjb3JkOiByb3dDaGFuZ2VSZWNvcmQ/LmN1cnJlbnRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLm1lc3NhZ2UgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5oaWRlRGVsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5zaG93RGVsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uIHx8ICdiZWxvdydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbkF0T3JpZ2luXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb25BdE9yaWdpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFRvdWNoR2VzdHVyZXNdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS50b3VjaEdlc3R1cmVzIHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbnRlbnQgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEZXNjcmlwdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kZXNjcmlwdGlvbiB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnBvc2l0aW9uIHx8ICdhYm92ZSBhZnRlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlU2l6ZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5zaXplIHx8ICdtZWRpdW0nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZU92ZXJsYXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkub3ZlcmxhcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25BY3Rpb25DbGljaygkZXZlbnQsIGJ0biwgcm93RGF0YSlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm10eC1ncmlkLWljb25cIiAqbmdJZj1cImJ0bi5pY29uXCI+e3tidG4uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7YnRuLnRleHQgfCB0b09ic2VydmFibGUgfCBhc3luY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3N0cm9rZWQnXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gW2NvbG9yXT1cImJ0bi5jb2xvciB8fCAncHJpbWFyeSdcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnbXR4LWdyaWQtYWN0aW9uLWJ1dHRvbicsIGJ0bi5jbGFzcyB8fCAnJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ0biB8IGNlbGxBY3Rpb25EaXNhYmxlOiByb3dEYXRhOiByb3dDaGFuZ2VSZWNvcmQ6IHJvd0NoYW5nZVJlY29yZD8uY3VycmVudFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkubWVzc2FnZSB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmhpZGVEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnNob3dEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb24gfHwgJ2JlbG93J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uQXRPcmlnaW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbkF0T3JpZ2luXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwVG91Y2hHZXN0dXJlc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnRvdWNoR2VzdHVyZXMgfHwgJ2F1dG8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29udGVudCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURlc2NyaXB0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRlc2NyaXB0aW9uIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkucG9zaXRpb24gfHwgJ2Fib3ZlIGFmdGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnNpemUgfHwgJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlT3ZlcmxhcF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5vdmVybGFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vbkFjdGlvbkNsaWNrKCRldmVudCwgYnRuLCByb3dEYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXR4LWdyaWQtaWNvblwiICpuZ0lmPVwiYnRuLmljb25cIj57e2J0bi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3tidG4udGV4dCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmxhdCdcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBbY29sb3JdPVwiYnRuLmNvbG9yIHx8ICdwcmltYXJ5J1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiWydtdHgtZ3JpZC1hY3Rpb24tYnV0dG9uJywgYnRuLmNsYXNzIHx8ICcnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuIHwgY2VsbEFjdGlvbkRpc2FibGU6IHJvd0RhdGE6IHJvd0NoYW5nZVJlY29yZDogcm93Q2hhbmdlUmVjb3JkPy5jdXJyZW50VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5tZXNzYWdlIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwSGlkZURlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuaGlkZURlbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuc2hvd0RlbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbiB8fCAnYmVsb3cnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25BdE9yaWdpbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uQXRPcmlnaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBUb3VjaEdlc3R1cmVzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkudG91Y2hHZXN0dXJlcyB8fCAnYXV0bydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb250ZW50IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGVzY3JpcHRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGVzY3JpcHRpb24gfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5wb3NpdGlvbiB8fCAnYWJvdmUgYWZ0ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVNpemVdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuc2l6ZSB8fCAnbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VPdmVybGFwXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLm92ZXJsYXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX29uQWN0aW9uQ2xpY2soJGV2ZW50LCBidG4sIHJvd0RhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtdHgtZ3JpZC1pY29uXCIgKm5nSWY9XCJidG4uaWNvblwiPnt7YnRuLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57e2J0bi50ZXh0IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFtjb2xvcl09XCJidG4uY29sb3IgfHwgJ3ByaW1hcnknXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbJ210eC1ncmlkLWFjdGlvbi1idXR0b24nLCBidG4uY2xhc3MgfHwgJyddXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidG4gfCBjZWxsQWN0aW9uRGlzYWJsZTogcm93RGF0YTogcm93Q2hhbmdlUmVjb3JkOiByb3dDaGFuZ2VSZWNvcmQ/LmN1cnJlbnRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLm1lc3NhZ2UgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5oaWRlRGVsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5zaG93RGVsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uIHx8ICdiZWxvdydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbkF0T3JpZ2luXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb25BdE9yaWdpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFRvdWNoR2VzdHVyZXNdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS50b3VjaEdlc3R1cmVzIHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbnRlbnQgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEZXNjcmlwdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kZXNjcmlwdGlvbiB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnBvc2l0aW9uIHx8ICdhYm92ZSBhZnRlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlU2l6ZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5zaXplIHx8ICdtZWRpdW0nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZU92ZXJsYXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkub3ZlcmxhcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25BY3Rpb25DbGljaygkZXZlbnQsIGJ0biwgcm93RGF0YSlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm10eC1ncmlkLWljb25cIj57e2J0bi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZhYidcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1mYWIgW2NvbG9yXT1cImJ0bi5jb2xvciB8fCAncHJpbWFyeSdcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnbXR4LWdyaWQtYWN0aW9uLWJ1dHRvbicsIGJ0bi5jbGFzcyB8fCAnJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ0biB8IGNlbGxBY3Rpb25EaXNhYmxlOiByb3dEYXRhOiByb3dDaGFuZ2VSZWNvcmQ6IHJvd0NoYW5nZVJlY29yZD8uY3VycmVudFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkubWVzc2FnZSB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmhpZGVEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnNob3dEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb24gfHwgJ2JlbG93J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uQXRPcmlnaW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbkF0T3JpZ2luXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwVG91Y2hHZXN0dXJlc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnRvdWNoR2VzdHVyZXMgfHwgJ2F1dG8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29udGVudCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURlc2NyaXB0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRlc2NyaXB0aW9uIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkucG9zaXRpb24gfHwgJ2Fib3ZlIGFmdGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnNpemUgfHwgJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlT3ZlcmxhcF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5vdmVybGFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vbkFjdGlvbkNsaWNrKCRldmVudCwgYnRuLCByb3dEYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXR4LWdyaWQtaWNvblwiPnt7YnRuLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbWluaS1mYWInXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWluaS1mYWIgW2NvbG9yXT1cImJ0bi5jb2xvciB8fCAncHJpbWFyeSdcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnbXR4LWdyaWQtYWN0aW9uLWJ1dHRvbicsIGJ0bi5jbGFzcyB8fCAnJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ0biB8IGNlbGxBY3Rpb25EaXNhYmxlOiByb3dEYXRhOiByb3dDaGFuZ2VSZWNvcmQ6IHJvd0NoYW5nZVJlY29yZD8uY3VycmVudFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkubWVzc2FnZSB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmhpZGVEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnNob3dEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb24gfHwgJ2JlbG93J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uQXRPcmlnaW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbkF0T3JpZ2luXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwVG91Y2hHZXN0dXJlc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnRvdWNoR2VzdHVyZXMgfHwgJ2F1dG8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29udGVudCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURlc2NyaXB0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRlc2NyaXB0aW9uIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkucG9zaXRpb24gfHwgJ2Fib3ZlIGFmdGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnNpemUgfHwgJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlT3ZlcmxhcF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5vdmVybGFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vbkFjdGlvbkNsaWNrKCRldmVudCwgYnRuLCByb3dEYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXR4LWdyaWQtaWNvblwiPnt7YnRuLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFtjb2xvcl09XCJidG4uY29sb3IgfHwgJ3ByaW1hcnknXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbJ210eC1ncmlkLWFjdGlvbi1idXR0b24nLCBidG4uY2xhc3MgfHwgJyddXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidG4gfCBjZWxsQWN0aW9uRGlzYWJsZTogcm93RGF0YTogcm93Q2hhbmdlUmVjb3JkOiByb3dDaGFuZ2VSZWNvcmQ/LmN1cnJlbnRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLm1lc3NhZ2UgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuY2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5oaWRlRGVsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5zaG93RGVsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uIHx8ICdiZWxvdydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbkF0T3JpZ2luXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb25BdE9yaWdpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFRvdWNoR2VzdHVyZXNdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS50b3VjaEdlc3R1cmVzIHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbnRlbnQgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEZXNjcmlwdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kZXNjcmlwdGlvbiB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnBvc2l0aW9uIHx8ICdhYm92ZSBhZnRlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlU2l6ZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5zaXplIHx8ICdtZWRpdW0nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRCYWRnZU92ZXJsYXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkub3ZlcmxhcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25BY3Rpb25DbGljaygkZXZlbnQsIGJ0biwgcm93RGF0YSlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm10eC1ncmlkLWljb25cIiAqbmdJZj1cImJ0bi5pY29uXCI+e3tidG4uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7YnRuLnRleHQgfCB0b09ic2VydmFibGUgfCBhc3luY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBUYWcgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGFnJ1wiPlxyXG4gICAgICA8bWF0LWNoaXAtbGlzdGJveCAqbmdJZj1cImNvbERlZi50YWcgJiYgY29sRGVmLnRhZ1tfdmFsdWVdOyBlbHNlIHRhZ0VtcHR5VHBsXCI+XHJcbiAgICAgICAgPG1hdC1jaGlwIGNvbG9yPVwicHJpbWFyeVwiIFtuZ0NsYXNzXT1cIlsnYmctJyArIGNvbERlZi50YWdbX3ZhbHVlXS5jb2xvcl1cIj5cclxuICAgICAgICAgIHt7Y29sRGVmLnRhZ1tfdmFsdWVdLnRleHR9fVxyXG4gICAgICAgIDwvbWF0LWNoaXA+XHJcbiAgICAgIDwvbWF0LWNoaXAtbGlzdGJveD5cclxuICAgICAgPG5nLXRlbXBsYXRlICN0YWdFbXB0eVRwbD57e192YWx1ZX19PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBMaW5rIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCI+XHJcbiAgICAgIDxhIFtocmVmXT1cIl92YWx1ZVwiIHRhcmdldD1cIl9ibGFua1wiPnt7X3ZhbHVlfX08L2E+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gSW1hZ2UgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW1hZ2UnXCI+XHJcbiAgICAgIDxpbWcgY2xhc3M9XCJtdHgtZ3JpZC1pbWdcIiBbc3JjXT1cIl92YWx1ZVwiIChjbGljayk9XCJfb25JbWFnZVByZXZpZXcoX3ZhbHVlKVwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIEJvb2xlYW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cclxuICAgICAgPHNwYW4gW3RpdGxlXT1cIl9nZXRUb29sdGlwKF92YWx1ZSlcIj57e19nZXRUZXh0KF92YWx1ZSl9fTwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBOdW1iZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxyXG4gICAgICA8c3BhbiBbdGl0bGVdPVwiX2dldFRvb2x0aXAoX3ZhbHVlIHwgbnVtYmVyOiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlnaXRzSW5mbzpcclxuICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmxvY2FsZSlcIj5cclxuICAgICAgICB7e19nZXRUZXh0KF92YWx1ZSB8IG51bWJlcjogY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmRpZ2l0c0luZm86XHJcbiAgICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmxvY2FsZSl9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gQ3VycmVuY3kgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XHJcbiAgICAgIDxzcGFuIFt0aXRsZV09XCJfZ2V0VG9vbHRpcChfdmFsdWUgfCBjdXJyZW5jeTogY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmN1cnJlbmN5Q29kZTpcclxuICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmRpc3BsYXk6XHJcbiAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5kaWdpdHNJbmZvOlxyXG4gICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8ubG9jYWxlKVwiPlxyXG4gICAgICAgIHt7X2dldFRleHQoX3ZhbHVlIHwgY3VycmVuY3k6IGNvbERlZi50eXBlUGFyYW1ldGVyPy5jdXJyZW5jeUNvZGU6XHJcbiAgICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmRpc3BsYXk6XHJcbiAgICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmRpZ2l0c0luZm86XHJcbiAgICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmxvY2FsZSl9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gUGVyY2VudCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwZXJjZW50J1wiPlxyXG4gICAgICA8c3BhbiBbdGl0bGVdPVwiX2dldFRvb2x0aXAoX3ZhbHVlIHwgcGVyY2VudDogY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmRpZ2l0c0luZm86XHJcbiAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpXCI+XHJcbiAgICAgICAge3tfZ2V0VGV4dChfdmFsdWUgfCBwZXJjZW50OiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlnaXRzSW5mbzpcclxuICAgICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8ubG9jYWxlKX19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBEYXRlIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XHJcbiAgICAgIDxzcGFuIFt0aXRsZV09XCJfZ2V0VG9vbHRpcChfdmFsdWUgfCBkYXRlOiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZm9ybWF0OlxyXG4gICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8udGltZXpvbmU6XHJcbiAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpXCI+XHJcbiAgICAgICAge3tfZ2V0VGV4dChfdmFsdWUgfCBkYXRlOiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZm9ybWF0OlxyXG4gICAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy50aW1lem9uZTpcclxuICAgICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8ubG9jYWxlKX19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBEZWZhdWx0IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICA8c3BhbiBbdGl0bGVdPVwiX2dldFRvb2x0aXAoX3ZhbHVlKVwiPnt7X2dldFRleHQoX3ZhbHVlKX19PC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
@@ -10,7 +10,7 @@ import * as i5 from "@angular/material/icon";
|
|
|
10
10
|
import * as i6 from "@angular/material/menu";
|
|
11
11
|
import * as i7 from "@angular/cdk/drag-drop";
|
|
12
12
|
import * as i8 from "@ng-matero/extensions/core";
|
|
13
|
-
class MtxGridColumnMenu {
|
|
13
|
+
export class MtxGridColumnMenu {
|
|
14
14
|
constructor() {
|
|
15
15
|
this.columns = [];
|
|
16
16
|
this.selectable = true;
|
|
@@ -60,11 +60,10 @@ class MtxGridColumnMenu {
|
|
|
60
60
|
this.columnChange.emit(this.columns);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
64
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: MtxGridColumnMenu, selector: "mtx-grid-column-menu", inputs: { columns: "columns", selectable: "selectable", selectableChecked: "selectableChecked", sortable: "sortable", pinnable: "pinnable", buttonText: "buttonText", buttonType: "buttonType", buttonColor: "buttonColor", buttonClass: "buttonClass", buttonIcon: "buttonIcon", showHeader: "showHeader", headerText: "headerText", headerTemplate: "headerTemplate", showFooter: "showFooter", footerText: "footerText", footerTemplate: "footerTemplate", pinOptions: "pinOptions" }, outputs: { columnChange: "columnChange" }, viewQueries: [{ propertyName: "menuPanel", first: true, predicate: ["menu"], descendants: true, static: true }, { propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], exportAs: ["mtxGridColumnMenu"], ngImport: i0, template: "<ng-container [ngSwitch]=\"buttonType\">\r\n <ng-container *ngSwitchCase=\"'raised'\">\r\n <button [ngClass]=\"buttonClass\" mat-raised-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stroked'\">\r\n <button [ngClass]=\"buttonClass\" mat-stroked-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'flat'\">\r\n <button [ngClass]=\"buttonClass\" mat-flat-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <button [ngClass]=\"buttonClass\" mat-icon-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-fab type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'mini-fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-mini-fab type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button [ngClass]=\"buttonClass\" mat-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<mat-menu #menu=\"matMenu\" class=\"mtx-grid-column-menu\">\r\n <div class=\"mtx-grid-column-menu-content\"\r\n (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <div class=\"mtx-grid-column-menu-header\" *ngIf=\"showHeader\">\r\n <ng-template [ngIf]=\"headerTemplate\" [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>{{headerText}}</ng-template>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-body\">\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"sortable\"\r\n cdkDropList (cdkDropListDropped)=\"_handleDroped($event)\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\"\r\n cdkDrag [cdkDragDisabled]=\"selectableChecked === 'show'? !col.show : col.hide\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-drag-handle-icon\" viewBox=\"0 0 24 24\"\r\n width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z\">\r\n </path>\r\n </svg>\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"!sortable\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\">\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-footer\" *ngIf=\"showFooter\">\r\n <ng-template [ngIf]=\"footerTemplate\" [ngIfElse]=\"defaultFooterTpl\">\r\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultFooterTpl>{{footerText}}</ng-template>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n<ng-template #checkboxList let-col>\r\n <ng-container *ngIf=\"pinnable\">\r\n <button class=\"mtx-grid-column-pin-button\" mat-icon-button type=\"button\"\r\n [matMenuTriggerFor]=\"pinList\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-icon\" *ngIf=\"col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z\" />\r\n </svg>\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-off-icon\" *ngIf=\"!col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z\" />\r\n </svg>\r\n </button>\r\n <mat-menu #pinList=\"matMenu\" class=\"mtx-grid-column-pin-list\">\r\n <button class=\"mtx-grid-column-pin-option\" type=\"button\"\r\n *ngFor=\"let item of pinOptions\" mat-menu-item\r\n (click)=\"_handlePinSelect(col, item.value)\">\r\n <span class=\"mtx-grid-column-pin-option-placeholder\">\r\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-check-icon\" *ngIf=\"col.pinned==item.value\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" />\r\n </svg>\r\n </span>\r\n <span class=\"mtx-grid-column-pin-option-text\">{{item.label | toObservable | async}}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <mat-checkbox class=\"mtx-grid-column-menu-item-label\" *ngIf=\"selectable\"\r\n [(ngModel)]=\"col[selectableChecked]\" [disabled]=\"col.disabled\"\r\n (change)=\"_handleChecked($event)\">\r\n {{col.header | toObservable | async}}\r\n </mat-checkbox>\r\n <span class=\"mtx-grid-column-menu-item-label\" *ngIf=\"!selectable\">\r\n {{col.header | toObservable | async}}\r\n </span>\r\n</ng-template>\r\n", styles: [".mtx-grid-column-menu .mat-menu-content{padding:0}.mtx-grid-column-menu-body{padding:8px 16px}.mtx-grid-column-menu-header,.mtx-grid-column-menu-footer{position:sticky;z-index:1;padding:8px 16px}.mtx-grid-column-menu-header{top:0}.mtx-grid-column-menu-footer{bottom:0}.mtx-grid-column-menu-list{display:block;max-width:100%}.mtx-grid-column-menu-list.cdk-drop-list-dragging .mtx-grid-column-menu-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-menu-item{display:flex;flex-direction:row;align-items:center}.mtx-grid-column-menu-item.cdk-drag-disabled .cdk-drag-handle{opacity:.35;cursor:no-drop}.mtx-grid-column-menu-item .cdk-drag-handle{cursor:move}.mtx-grid-column-menu-item.cdk-drag-preview{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mtx-grid-column-menu-item.cdk-drag-placeholder{opacity:0}.mtx-grid-column-menu-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-pin-button.mat-mdc-icon-button{width:40px;height:40px;padding:8px}.mtx-grid-column-pin-button.mat-mdc-icon-button .mat-mdc-button-touch-target{width:100%;height:100%}.mtx-grid-column-pin-option.mat-menu-item{display:flex;align-items:center;height:32px}.mtx-grid-column-pin-option-placeholder{display:inline-block;width:20px;height:20px;line-height:20px;vertical-align:middle}.mtx-grid-column-pin-option-text{padding:0 8px;vertical-align:middle}.mtx-grid-column-drag-handle-icon:hover{cursor:move}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.MtxToObservablePipe, name: "toObservable" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
63
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: MtxGridColumnMenu, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
64
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: MtxGridColumnMenu, selector: "mtx-grid-column-menu", inputs: { columns: "columns", selectable: "selectable", selectableChecked: "selectableChecked", sortable: "sortable", pinnable: "pinnable", buttonText: "buttonText", buttonType: "buttonType", buttonColor: "buttonColor", buttonClass: "buttonClass", buttonIcon: "buttonIcon", showHeader: "showHeader", headerText: "headerText", headerTemplate: "headerTemplate", showFooter: "showFooter", footerText: "footerText", footerTemplate: "footerTemplate", pinOptions: "pinOptions" }, outputs: { columnChange: "columnChange" }, viewQueries: [{ propertyName: "menuPanel", first: true, predicate: ["menu"], descendants: true, static: true }, { propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], exportAs: ["mtxGridColumnMenu"], ngImport: i0, template: "<ng-container [ngSwitch]=\"buttonType\">\r\n <ng-container *ngSwitchCase=\"'raised'\">\r\n <button [ngClass]=\"buttonClass\" mat-raised-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stroked'\">\r\n <button [ngClass]=\"buttonClass\" mat-stroked-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'flat'\">\r\n <button [ngClass]=\"buttonClass\" mat-flat-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <button [ngClass]=\"buttonClass\" mat-icon-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-fab type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'mini-fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-mini-fab type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button [ngClass]=\"buttonClass\" mat-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<mat-menu #menu=\"matMenu\" class=\"mtx-grid-column-menu\">\r\n <div class=\"mtx-grid-column-menu-content\"\r\n (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <div class=\"mtx-grid-column-menu-header\" *ngIf=\"showHeader\">\r\n <ng-template [ngIf]=\"headerTemplate\" [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>{{headerText}}</ng-template>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-body\">\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"sortable\"\r\n cdkDropList (cdkDropListDropped)=\"_handleDroped($event)\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\"\r\n cdkDrag [cdkDragDisabled]=\"selectableChecked === 'show'? !col.show : col.hide\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-drag-handle-icon\" viewBox=\"0 0 24 24\"\r\n width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z\">\r\n </path>\r\n </svg>\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"!sortable\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\">\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-footer\" *ngIf=\"showFooter\">\r\n <ng-template [ngIf]=\"footerTemplate\" [ngIfElse]=\"defaultFooterTpl\">\r\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultFooterTpl>{{footerText}}</ng-template>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n<ng-template #checkboxList let-col>\r\n <ng-container *ngIf=\"pinnable\">\r\n <button class=\"mtx-grid-column-pin-button\" mat-icon-button type=\"button\"\r\n [matMenuTriggerFor]=\"pinList\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-icon\" *ngIf=\"col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z\" />\r\n </svg>\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-off-icon\" *ngIf=\"!col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z\" />\r\n </svg>\r\n </button>\r\n <mat-menu #pinList=\"matMenu\" class=\"mtx-grid-column-pin-list\">\r\n <button class=\"mtx-grid-column-pin-option\" type=\"button\"\r\n *ngFor=\"let item of pinOptions\" mat-menu-item\r\n (click)=\"_handlePinSelect(col, item.value)\">\r\n <span class=\"mtx-grid-column-pin-option-placeholder\">\r\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-check-icon\" *ngIf=\"col.pinned==item.value\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" />\r\n </svg>\r\n </span>\r\n <span class=\"mtx-grid-column-pin-option-text\">{{item.label | toObservable | async}}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <mat-checkbox class=\"mtx-grid-column-menu-item-label\" *ngIf=\"selectable\"\r\n [(ngModel)]=\"col[selectableChecked]\" [disabled]=\"col.disabled\"\r\n (change)=\"_handleChecked($event)\">\r\n {{col.header | toObservable | async}}\r\n </mat-checkbox>\r\n <span class=\"mtx-grid-column-menu-item-label\" *ngIf=\"!selectable\">\r\n {{col.header | toObservable | async}}\r\n </span>\r\n</ng-template>\r\n", styles: [".mtx-grid-column-menu .mat-menu-content{padding:0}.mtx-grid-column-menu-body{padding:8px 16px}.mtx-grid-column-menu-header,.mtx-grid-column-menu-footer{position:sticky;z-index:1;padding:8px 16px}.mtx-grid-column-menu-header{top:0}.mtx-grid-column-menu-footer{bottom:0}.mtx-grid-column-menu-list{display:block;max-width:100%}.mtx-grid-column-menu-list.cdk-drop-list-dragging .mtx-grid-column-menu-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-menu-item{display:flex;flex-direction:row;align-items:center}.mtx-grid-column-menu-item.cdk-drag-disabled .cdk-drag-handle{opacity:.35;cursor:no-drop}.mtx-grid-column-menu-item .cdk-drag-handle{cursor:move}.mtx-grid-column-menu-item.cdk-drag-preview{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mtx-grid-column-menu-item.cdk-drag-placeholder{opacity:0}.mtx-grid-column-menu-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-pin-button.mat-mdc-icon-button{width:40px;height:40px;padding:8px}.mtx-grid-column-pin-button.mat-mdc-icon-button .mat-mdc-button-touch-target{width:100%;height:100%}.mtx-grid-column-pin-option.mat-menu-item{display:flex;align-items:center;height:32px}.mtx-grid-column-pin-option-placeholder{display:inline-block;width:20px;height:20px;line-height:20px;vertical-align:middle}.mtx-grid-column-pin-option-text{padding:0 8px;vertical-align:middle}.mtx-grid-column-drag-handle-icon:hover{cursor:move}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.MtxToObservablePipe, name: "toObservable" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
65
65
|
}
|
|
66
|
-
|
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: MtxGridColumnMenu, decorators: [{
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: MtxGridColumnMenu, decorators: [{
|
|
68
67
|
type: Component,
|
|
69
68
|
args: [{ selector: 'mtx-grid-column-menu', exportAs: 'mtxGridColumnMenu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"buttonType\">\r\n <ng-container *ngSwitchCase=\"'raised'\">\r\n <button [ngClass]=\"buttonClass\" mat-raised-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stroked'\">\r\n <button [ngClass]=\"buttonClass\" mat-stroked-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'flat'\">\r\n <button [ngClass]=\"buttonClass\" mat-flat-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <button [ngClass]=\"buttonClass\" mat-icon-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-fab type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'mini-fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-mini-fab type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button [ngClass]=\"buttonClass\" mat-button type=\"button\" [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<mat-menu #menu=\"matMenu\" class=\"mtx-grid-column-menu\">\r\n <div class=\"mtx-grid-column-menu-content\"\r\n (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <div class=\"mtx-grid-column-menu-header\" *ngIf=\"showHeader\">\r\n <ng-template [ngIf]=\"headerTemplate\" [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>{{headerText}}</ng-template>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-body\">\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"sortable\"\r\n cdkDropList (cdkDropListDropped)=\"_handleDroped($event)\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\"\r\n cdkDrag [cdkDragDisabled]=\"selectableChecked === 'show'? !col.show : col.hide\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-drag-handle-icon\" viewBox=\"0 0 24 24\"\r\n width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z\">\r\n </path>\r\n </svg>\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"!sortable\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\">\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-footer\" *ngIf=\"showFooter\">\r\n <ng-template [ngIf]=\"footerTemplate\" [ngIfElse]=\"defaultFooterTpl\">\r\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultFooterTpl>{{footerText}}</ng-template>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n<ng-template #checkboxList let-col>\r\n <ng-container *ngIf=\"pinnable\">\r\n <button class=\"mtx-grid-column-pin-button\" mat-icon-button type=\"button\"\r\n [matMenuTriggerFor]=\"pinList\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-icon\" *ngIf=\"col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z\" />\r\n </svg>\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-off-icon\" *ngIf=\"!col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z\" />\r\n </svg>\r\n </button>\r\n <mat-menu #pinList=\"matMenu\" class=\"mtx-grid-column-pin-list\">\r\n <button class=\"mtx-grid-column-pin-option\" type=\"button\"\r\n *ngFor=\"let item of pinOptions\" mat-menu-item\r\n (click)=\"_handlePinSelect(col, item.value)\">\r\n <span class=\"mtx-grid-column-pin-option-placeholder\">\r\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-check-icon\" *ngIf=\"col.pinned==item.value\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" />\r\n </svg>\r\n </span>\r\n <span class=\"mtx-grid-column-pin-option-text\">{{item.label | toObservable | async}}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <mat-checkbox class=\"mtx-grid-column-menu-item-label\" *ngIf=\"selectable\"\r\n [(ngModel)]=\"col[selectableChecked]\" [disabled]=\"col.disabled\"\r\n (change)=\"_handleChecked($event)\">\r\n {{col.header | toObservable | async}}\r\n </mat-checkbox>\r\n <span class=\"mtx-grid-column-menu-item-label\" *ngIf=\"!selectable\">\r\n {{col.header | toObservable | async}}\r\n </span>\r\n</ng-template>\r\n", styles: [".mtx-grid-column-menu .mat-menu-content{padding:0}.mtx-grid-column-menu-body{padding:8px 16px}.mtx-grid-column-menu-header,.mtx-grid-column-menu-footer{position:sticky;z-index:1;padding:8px 16px}.mtx-grid-column-menu-header{top:0}.mtx-grid-column-menu-footer{bottom:0}.mtx-grid-column-menu-list{display:block;max-width:100%}.mtx-grid-column-menu-list.cdk-drop-list-dragging .mtx-grid-column-menu-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-menu-item{display:flex;flex-direction:row;align-items:center}.mtx-grid-column-menu-item.cdk-drag-disabled .cdk-drag-handle{opacity:.35;cursor:no-drop}.mtx-grid-column-menu-item .cdk-drag-handle{cursor:move}.mtx-grid-column-menu-item.cdk-drag-preview{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mtx-grid-column-menu-item.cdk-drag-placeholder{opacity:0}.mtx-grid-column-menu-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-pin-button.mat-mdc-icon-button{width:40px;height:40px;padding:8px}.mtx-grid-column-pin-button.mat-mdc-icon-button .mat-mdc-button-touch-target{width:100%;height:100%}.mtx-grid-column-pin-option.mat-menu-item{display:flex;align-items:center;height:32px}.mtx-grid-column-pin-option-placeholder{display:inline-block;width:20px;height:20px;line-height:20px;vertical-align:middle}.mtx-grid-column-pin-option-text{padding:0 8px;vertical-align:middle}.mtx-grid-column-drag-handle-icon:hover{cursor:move}\n"] }]
|
|
70
69
|
}], propDecorators: { menuPanel: [{
|
|
@@ -110,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImpor
|
|
|
110
109
|
}], pinOptions: [{
|
|
111
110
|
type: Input
|
|
112
111
|
}] } });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvY29sdW1uLW1lbnUudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvY29sdW1uLW1lbnUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQVcsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7QUFRakUsTUFRYSxpQkFBaUI7SUFSOUI7UUFZVyxZQUFPLEdBQW9CLEVBQUUsQ0FBQztRQUM5QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLHNCQUFpQixHQUFvQixNQUFNLENBQUM7UUFDNUMsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBVWpCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGVBQVUsR0FBc0IsU0FBUyxDQUFDO1FBRTFDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFFOUIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFHN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQVdyRCxnQkFBVyxHQUE2QjtZQUM5QyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNwQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUN0QyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUNqQyxDQUFDO0tBaUJIO0lBdERDLElBQ0ksVUFBVTtRQUNaLE1BQU0sV0FBVyxHQUFHLFdBQVcsSUFBSSxDQUFDLGlCQUFpQixLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4RixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUMzRCxDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBaUJELElBQ0ksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsS0FBK0I7UUFDNUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUMxQjtJQUNILENBQUM7SUFPRCxhQUFhLENBQUMsQ0FBd0I7UUFDcEMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxjQUFjLENBQUMsQ0FBb0I7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFrQixFQUFFLEdBQTBCO1FBQzdELElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7WUFDckIsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztpSUEvRFUsaUJBQWlCO3FIQUFqQixpQkFBaUIsZ3RCQUVqQixjQUFjLGlGQy9CM0IsMG9OQWlJQTs7U0RwR2EsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0Usc0JBQXNCLFlBQ3RCLG1CQUFtQixpQkFHZCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUdWLFNBQVM7c0JBQTdDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDUixXQUFXO3NCQUFyQyxTQUFTO3VCQUFDLGNBQWM7Z0JBRWhCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0YsVUFBVTtzQkFEYixLQUFLO2dCQVVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFHSCxVQUFVO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRNZW51LCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHtcbiAgTXR4R3JpZEJ1dHRvblR5cGUsXG4gIE10eEdyaWRDb2x1bW4sXG4gIE10eEdyaWRDb2x1bW5QaW5PcHRpb24sXG4gIE10eEdyaWRDb2x1bW5QaW5WYWx1ZSxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXR4LWdyaWQtY29sdW1uLW1lbnUnLFxuICBleHBvcnRBczogJ210eEdyaWRDb2x1bW5NZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi1tZW51Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2x1bW4tbWVudS5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhHcmlkQ29sdW1uTWVudSB7XG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZW51UGFuZWwhOiBNYXRNZW51O1xuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyKSBtZW51VHJpZ2dlciE6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIEBJbnB1dCgpIGNvbHVtbnM6IE10eEdyaWRDb2x1bW5bXSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2VsZWN0YWJsZUNoZWNrZWQ6ICdzaG93JyB8ICdoaWRlJyA9ICdzaG93JztcbiAgQElucHV0KCkgc29ydGFibGUgPSB0cnVlO1xuICBASW5wdXQoKSBwaW5uYWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZ2V0IGJ1dHRvblRleHQoKSB7XG4gICAgY29uc3QgZGVmYXVsdFRleHQgPSBgQ29sdW1ucyAke3RoaXMuc2VsZWN0YWJsZUNoZWNrZWQgPT09ICdzaG93JyA/ICdTaG93bicgOiAnSGlkZGVuJ31gO1xuICAgIHJldHVybiB0aGlzLl9idXR0b25UZXh0ID8gdGhpcy5fYnV0dG9uVGV4dCA6IGRlZmF1bHRUZXh0O1xuICB9XG4gIHNldCBidXR0b25UZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9idXR0b25UZXh0ID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfYnV0dG9uVGV4dCA9ICcnO1xuXG4gIEBJbnB1dCgpIGJ1dHRvblR5cGU6IE10eEdyaWRCdXR0b25UeXBlID0gJ3N0cm9rZWQnO1xuICBASW5wdXQoKSBidXR0b25Db2xvcjogVGhlbWVQYWxldHRlO1xuICBASW5wdXQoKSBidXR0b25DbGFzcyA9ICcnO1xuICBASW5wdXQoKSBidXR0b25JY29uID0gJyc7XG5cbiAgQElucHV0KCkgc2hvd0hlYWRlciA9IGZhbHNlO1xuICBASW5wdXQoKSBoZWFkZXJUZXh0ID0gJ0NvbHVtbnMgSGVhZGVyJztcbiAgQElucHV0KCkgaGVhZGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBzaG93Rm9vdGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZvb3RlclRleHQgPSAnQ29sdW1ucyBGb290ZXInO1xuICBASW5wdXQoKSBmb290ZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQE91dHB1dCgpIGNvbHVtbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXR4R3JpZENvbHVtbltdPigpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBwaW5PcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9waW5PcHRpb25zO1xuICB9XG4gIHNldCBwaW5PcHRpb25zKHZhbHVlOiBNdHhHcmlkQ29sdW1uUGluT3B0aW9uW10pIHtcbiAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fcGluT3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9waW5PcHRpb25zOiBNdHhHcmlkQ29sdW1uUGluT3B0aW9uW10gPSBbXG4gICAgeyBsYWJlbDogJ1BpbiBMZWZ0JywgdmFsdWU6ICdsZWZ0JyB9LFxuICAgIHsgbGFiZWw6ICdQaW4gUmlnaHQnLCB2YWx1ZTogJ3JpZ2h0JyB9LFxuICAgIHsgbGFiZWw6ICdObyBQaW4nLCB2YWx1ZTogbnVsbCB9LFxuICBdO1xuXG4gIF9oYW5kbGVEcm9wZWQoZTogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuY29sdW1ucywgZS5wcmV2aW91c0luZGV4LCBlLmN1cnJlbnRJbmRleCk7XG4gICAgdGhpcy5jb2x1bW5DaGFuZ2UuZW1pdCh0aGlzLmNvbHVtbnMpO1xuICB9XG5cbiAgX2hhbmRsZUNoZWNrZWQoZTogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICB0aGlzLmNvbHVtbkNoYW5nZS5lbWl0KHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICBfaGFuZGxlUGluU2VsZWN0KGNvbDogTXR4R3JpZENvbHVtbiwgdmFsOiBNdHhHcmlkQ29sdW1uUGluVmFsdWUpIHtcbiAgICBpZiAoY29sLnBpbm5lZCAhPSB2YWwpIHtcbiAgICAgIGNvbC5waW5uZWQgPSB2YWw7XG4gICAgICB0aGlzLmNvbHVtbkNoYW5nZS5lbWl0KHRoaXMuY29sdW1ucyk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJidXR0b25UeXBlXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JhaXNlZCdcIj5cclxuICAgIDxidXR0b24gW25nQ2xhc3NdPVwiYnV0dG9uQ2xhc3NcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2NvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uSWNvblwiPnt7YnV0dG9uSWNvbn19PC9tYXQtaWNvbj4ge3tidXR0b25UZXh0fX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzdHJva2VkJ1wiPlxyXG4gICAgPGJ1dHRvbiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2NvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uSWNvblwiPnt7YnV0dG9uSWNvbn19PC9tYXQtaWNvbj4ge3tidXR0b25UZXh0fX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmbGF0J1wiPlxyXG4gICAgPGJ1dHRvbiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiIG1hdC1mbGF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2NvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uSWNvblwiPnt7YnV0dG9uSWNvbn19PC9tYXQtaWNvbj4ge3tidXR0b25UZXh0fX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiPlxyXG4gICAgPGJ1dHRvbiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2NvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uSWNvblwiPnt7YnV0dG9uSWNvbn19PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmYWInXCI+XHJcbiAgICA8YnV0dG9uIFtuZ0NsYXNzXT1cImJ1dHRvbkNsYXNzXCIgbWF0LWZhYiB0eXBlPVwiYnV0dG9uXCIgW2NvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uSWNvblwiPnt7YnV0dG9uSWNvbn19PC9tYXQtaWNvbj4ge3tidXR0b25UZXh0fX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtaW5pLWZhYidcIj5cclxuICAgIDxidXR0b24gW25nQ2xhc3NdPVwiYnV0dG9uQ2xhc3NcIiBtYXQtbWluaS1mYWIgdHlwZT1cImJ1dHRvblwiIFtjb2xvcl09XCJidXR0b25Db2xvclwiXHJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImJ1dHRvbkljb25cIj57e2J1dHRvbkljb259fTwvbWF0LWljb24+IHt7YnV0dG9uVGV4dH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICA8YnV0dG9uIFtuZ0NsYXNzXT1cImJ1dHRvbkNsYXNzXCIgbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2NvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uSWNvblwiPnt7YnV0dG9uSWNvbn19PC9tYXQtaWNvbj4ge3tidXR0b25UZXh0fX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51XCI+XHJcbiAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWNvbnRlbnRcIlxyXG4gICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWhlYWRlclwiICpuZ0lmPVwic2hvd0hlYWRlclwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaGVhZGVyVGVtcGxhdGVcIiBbbmdJZkVsc2VdPVwiZGVmYXVsdEhlYWRlclRwbFwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlclRwbD57e2hlYWRlclRleHR9fTwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLW1lbnUtYm9keVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLW1lbnUtbGlzdFwiICpuZ0lmPVwic29ydGFibGVcIlxyXG4gICAgICAgICAgIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiX2hhbmRsZURyb3BlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWl0ZW1cIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgY2RrRHJhZyBbY2RrRHJhZ0Rpc2FibGVkXT1cInNlbGVjdGFibGVDaGVja2VkID09PSAnc2hvdyc/ICFjb2wuc2hvdyA6IGNvbC5oaWRlXCI+XHJcbiAgICAgICAgICA8c3ZnIGNsYXNzPVwibXR4LWdyaWQtaWNvbiBtdHgtZ3JpZC1jb2x1bW4tZHJhZy1oYW5kbGUtaWNvblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNNywxOVYxN0g5VjE5SDdNMTEsMTlWMTdIMTNWMTlIMTFNMTUsMTlWMTdIMTdWMTlIMTVNNywxNVYxM0g5VjE1SDdNMTEsMTVWMTNIMTNWMTVIMTFNMTUsMTVWMTNIMTdWMTVIMTVNNywxMVY5SDlWMTFIN00xMSwxMVY5SDEzVjExSDExTTE1LDExVjlIMTdWMTFIMTVNNyw3VjVIOVY3SDdNMTEsN1Y1SDEzVjdIMTFNMTUsN1Y1SDE3VjdIMTVaXCI+XHJcbiAgICAgICAgICAgIDwvcGF0aD5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoZWNrYm94TGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wgfVwiPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLW1lbnUtbGlzdFwiICpuZ0lmPVwiIXNvcnRhYmxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWl0ZW1cIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja2JveExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sIH1cIj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWZvb3RlclwiICpuZ0lmPVwic2hvd0Zvb3RlclwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiZm9vdGVyVGVtcGxhdGVcIiBbbmdJZkVsc2VdPVwiZGVmYXVsdEZvb3RlclRwbFwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZvb3RlclRwbD57e2Zvb3RlclRleHR9fTwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY2hlY2tib3hMaXN0IGxldC1jb2w+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBpbm5hYmxlXCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLXBpbi1idXR0b25cIiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJwaW5MaXN0XCI+XHJcbiAgICAgIDxzdmcgY2xhc3M9XCJtdHgtZ3JpZC1pY29uIG10eC1ncmlkLWNvbHVtbi1waW4taWNvblwiICpuZ0lmPVwiY29sLnBpbm5lZFwiXHJcbiAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTE2LDEyVjRIMTdWMkg3VjRIOFYxMkw2LDE0VjE2SDExLjJWMjJIMTIuOFYxNkgxOFYxNEwxNiwxMlpcIiAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgICAgPHN2ZyBjbGFzcz1cIm10eC1ncmlkLWljb24gbXR4LWdyaWQtY29sdW1uLXBpbi1vZmYtaWNvblwiICpuZ0lmPVwiIWNvbC5waW5uZWRcIlxyXG4gICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTIuOCwxNi4wN1YyMkgxMS4yVjE2SDZWMTRMOCwxMlYxMS4yN0wyLDUuMjdNMTYsMTJMMTgsMTRWMTZIMTcuODJMOCw2LjE4VjRIN1YySDE3VjRIMTZWMTJaXCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxtYXQtbWVudSAjcGluTGlzdD1cIm1hdE1lbnVcIiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1waW4tbGlzdFwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLXBpbi1vcHRpb25cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwaW5PcHRpb25zXCIgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlUGluU2VsZWN0KGNvbCwgaXRlbS52YWx1ZSlcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1waW4tb3B0aW9uLXBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICA8IS0tIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvZXFlcWVxIC0tPlxyXG4gICAgICAgICAgPHN2ZyBjbGFzcz1cIm10eC1ncmlkLWljb24gbXR4LWdyaWQtY29sdW1uLXBpbi1jaGVjay1pY29uXCIgKm5nSWY9XCJjb2wucGlubmVkPT1pdGVtLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0yMSw3TDksMTlMMy41LDEzLjVMNC45MSwxMi4wOUw5LDE2LjE3TDE5LjU5LDUuNTlMMjEsN1pcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLXBpbi1vcHRpb24tdGV4dFwiPnt7aXRlbS5sYWJlbCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX08L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG1hdC1jaGVja2JveCBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWl0ZW0tbGFiZWxcIiAqbmdJZj1cInNlbGVjdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2xbc2VsZWN0YWJsZUNoZWNrZWRdXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIl9oYW5kbGVDaGVja2VkKCRldmVudClcIj5cclxuICAgIHt7Y29sLmhlYWRlciB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX1cclxuICA8L21hdC1jaGVja2JveD5cclxuICA8c3BhbiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWl0ZW0tbGFiZWxcIiAqbmdJZj1cIiFzZWxlY3RhYmxlXCI+XHJcbiAgICB7e2NvbC5oZWFkZXIgfCB0b09ic2VydmFibGUgfCBhc3luY319XHJcbiAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvY29sdW1uLW1lbnUudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvY29sdW1uLW1lbnUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQVcsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7QUFnQmpFLE1BQU0sT0FBTyxpQkFBaUI7SUFSOUI7UUFZVyxZQUFPLEdBQW9CLEVBQUUsQ0FBQztRQUM5QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLHNCQUFpQixHQUFvQixNQUFNLENBQUM7UUFDNUMsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBVWpCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGVBQVUsR0FBc0IsU0FBUyxDQUFDO1FBRTFDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFFOUIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFHN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQVdyRCxnQkFBVyxHQUE2QjtZQUM5QyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNwQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUN0QyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUNqQyxDQUFDO0tBaUJIO0lBdERDLElBQ0ksVUFBVTtRQUNaLE1BQU0sV0FBVyxHQUFHLFdBQVcsSUFBSSxDQUFDLGlCQUFpQixLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4RixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUMzRCxDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBaUJELElBQ0ksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsS0FBK0I7UUFDNUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUMxQjtJQUNILENBQUM7SUFPRCxhQUFhLENBQUMsQ0FBd0I7UUFDcEMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxjQUFjLENBQUMsQ0FBb0I7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFrQixFQUFFLEdBQTBCO1FBQzdELElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7WUFDckIsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztpSUEvRFUsaUJBQWlCO3FIQUFqQixpQkFBaUIsZ3RCQUVqQixjQUFjLGlGQy9CM0IsMG9OQWlJQTs7MkZEcEdhLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSxzQkFBc0IsWUFDdEIsbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OEJBR1YsU0FBUztzQkFBN0MsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNSLFdBQVc7c0JBQXJDLFNBQVM7dUJBQUMsY0FBYztnQkFFaEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRixVQUFVO3NCQURiLEtBQUs7Z0JBVUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUdILFVBQVU7c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdE1lbnUsIE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQge1xuICBNdHhHcmlkQnV0dG9uVHlwZSxcbiAgTXR4R3JpZENvbHVtbixcbiAgTXR4R3JpZENvbHVtblBpbk9wdGlvbixcbiAgTXR4R3JpZENvbHVtblBpblZhbHVlLFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdHgtZ3JpZC1jb2x1bW4tbWVudScsXG4gIGV4cG9ydEFzOiAnbXR4R3JpZENvbHVtbk1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLW1lbnUuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbHVtbi1tZW51LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE10eEdyaWRDb2x1bW5NZW51IHtcbiAgQFZpZXdDaGlsZCgnbWVudScsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnVQYW5lbCE6IE1hdE1lbnU7XG4gIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIG1lbnVUcmlnZ2VyITogTWF0TWVudVRyaWdnZXI7XG5cbiAgQElucHV0KCkgY29sdW1uczogTXR4R3JpZENvbHVtbltdID0gW107XG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSB0cnVlO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlQ2hlY2tlZDogJ3Nob3cnIHwgJ2hpZGUnID0gJ3Nob3cnO1xuICBASW5wdXQoKSBzb3J0YWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHBpbm5hYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBnZXQgYnV0dG9uVGV4dCgpIHtcbiAgICBjb25zdCBkZWZhdWx0VGV4dCA9IGBDb2x1bW5zICR7dGhpcy5zZWxlY3RhYmxlQ2hlY2tlZCA9PT0gJ3Nob3cnID8gJ1Nob3duJyA6ICdIaWRkZW4nfWA7XG4gICAgcmV0dXJuIHRoaXMuX2J1dHRvblRleHQgPyB0aGlzLl9idXR0b25UZXh0IDogZGVmYXVsdFRleHQ7XG4gIH1cbiAgc2V0IGJ1dHRvblRleHQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2J1dHRvblRleHQgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9idXR0b25UZXh0ID0gJyc7XG5cbiAgQElucHV0KCkgYnV0dG9uVHlwZTogTXR4R3JpZEJ1dHRvblR5cGUgPSAnc3Ryb2tlZCc7XG4gIEBJbnB1dCgpIGJ1dHRvbkNvbG9yOiBUaGVtZVBhbGV0dGU7XG4gIEBJbnB1dCgpIGJ1dHRvbkNsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGJ1dHRvbkljb24gPSAnJztcblxuICBASW5wdXQoKSBzaG93SGVhZGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhlYWRlclRleHQgPSAnQ29sdW1ucyBIZWFkZXInO1xuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIHNob3dGb290ZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9vdGVyVGV4dCA9ICdDb2x1bW5zIEZvb3Rlcic7XG4gIEBJbnB1dCgpIGZvb3RlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAT3V0cHV0KCkgY29sdW1uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdHhHcmlkQ29sdW1uW10+KCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHBpbk9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Bpbk9wdGlvbnM7XG4gIH1cbiAgc2V0IHBpbk9wdGlvbnModmFsdWU6IE10eEdyaWRDb2x1bW5QaW5PcHRpb25bXSkge1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9waW5PcHRpb25zID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3Bpbk9wdGlvbnM6IE10eEdyaWRDb2x1bW5QaW5PcHRpb25bXSA9IFtcbiAgICB7IGxhYmVsOiAnUGluIExlZnQnLCB2YWx1ZTogJ2xlZnQnIH0sXG4gICAgeyBsYWJlbDogJ1BpbiBSaWdodCcsIHZhbHVlOiAncmlnaHQnIH0sXG4gICAgeyBsYWJlbDogJ05vIFBpbicsIHZhbHVlOiBudWxsIH0sXG4gIF07XG5cbiAgX2hhbmRsZURyb3BlZChlOiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5jb2x1bW5zLCBlLnByZXZpb3VzSW5kZXgsIGUuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLmNvbHVtbkNoYW5nZS5lbWl0KHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICBfaGFuZGxlQ2hlY2tlZChlOiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMuY29sdW1uQ2hhbmdlLmVtaXQodGhpcy5jb2x1bW5zKTtcbiAgfVxuXG4gIF9oYW5kbGVQaW5TZWxlY3QoY29sOiBNdHhHcmlkQ29sdW1uLCB2YWw6IE10eEdyaWRDb2x1bW5QaW5WYWx1ZSkge1xuICAgIGlmIChjb2wucGlubmVkICE9IHZhbCkge1xuICAgICAgY29sLnBpbm5lZCA9IHZhbDtcbiAgICAgIHRoaXMuY29sdW1uQ2hhbmdlLmVtaXQodGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImJ1dHRvblR5cGVcIj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncmFpc2VkJ1wiPlxyXG4gICAgPGJ1dHRvbiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY29sb3JdPVwiYnV0dG9uQ29sb3JcIlxyXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJidXR0b25JY29uXCI+e3tidXR0b25JY29ufX08L21hdC1pY29uPiB7e2J1dHRvblRleHR9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3N0cm9rZWQnXCI+XHJcbiAgICA8YnV0dG9uIFtuZ0NsYXNzXT1cImJ1dHRvbkNsYXNzXCIgbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY29sb3JdPVwiYnV0dG9uQ29sb3JcIlxyXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJidXR0b25JY29uXCI+e3tidXR0b25JY29ufX08L21hdC1pY29uPiB7e2J1dHRvblRleHR9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZsYXQnXCI+XHJcbiAgICA8YnV0dG9uIFtuZ0NsYXNzXT1cImJ1dHRvbkNsYXNzXCIgbWF0LWZsYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY29sb3JdPVwiYnV0dG9uQ29sb3JcIlxyXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJidXR0b25JY29uXCI+e3tidXR0b25JY29ufX08L21hdC1pY29uPiB7e2J1dHRvblRleHR9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCI+XHJcbiAgICA8YnV0dG9uIFtuZ0NsYXNzXT1cImJ1dHRvbkNsYXNzXCIgbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY29sb3JdPVwiYnV0dG9uQ29sb3JcIlxyXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJidXR0b25JY29uXCI+e3tidXR0b25JY29ufX08L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZhYidcIj5cclxuICAgIDxidXR0b24gW25nQ2xhc3NdPVwiYnV0dG9uQ2xhc3NcIiBtYXQtZmFiIHR5cGU9XCJidXR0b25cIiBbY29sb3JdPVwiYnV0dG9uQ29sb3JcIlxyXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJidXR0b25JY29uXCI+e3tidXR0b25JY29ufX08L21hdC1pY29uPiB7e2J1dHRvblRleHR9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21pbmktZmFiJ1wiPlxyXG4gICAgPGJ1dHRvbiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiIG1hdC1taW5pLWZhYiB0eXBlPVwiYnV0dG9uXCIgW2NvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uSWNvblwiPnt7YnV0dG9uSWNvbn19PC9tYXQtaWNvbj4ge3tidXR0b25UZXh0fX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgIDxidXR0b24gW25nQ2xhc3NdPVwiYnV0dG9uQ2xhc3NcIiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY29sb3JdPVwiYnV0dG9uQ29sb3JcIlxyXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJidXR0b25JY29uXCI+e3tidXR0b25JY29ufX08L21hdC1pY29uPiB7e2J1dHRvblRleHR9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLW1lbnVcIj5cclxuICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLW1lbnUtY29udGVudFwiXHJcbiAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLW1lbnUtaGVhZGVyXCIgKm5nSWY9XCJzaG93SGVhZGVyXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJoZWFkZXJUZW1wbGF0ZVwiIFtuZ0lmRWxzZV09XCJkZWZhdWx0SGVhZGVyVHBsXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SGVhZGVyVHBsPnt7aGVhZGVyVGV4dH19PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tbWVudS1ib2R5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tbWVudS1saXN0XCIgKm5nSWY9XCJzb3J0YWJsZVwiXHJcbiAgICAgICAgICAgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJfaGFuZGxlRHJvcGVkKCRldmVudClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLW1lbnUtaXRlbVwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXHJcbiAgICAgICAgICAgICBjZGtEcmFnIFtjZGtEcmFnRGlzYWJsZWRdPVwic2VsZWN0YWJsZUNoZWNrZWQgPT09ICdzaG93Jz8gIWNvbC5zaG93IDogY29sLmhpZGVcIj5cclxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJtdHgtZ3JpZC1pY29uIG10eC1ncmlkLWNvbHVtbi1kcmFnLWhhbmRsZS1pY29uXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgZD1cIk03LDE5VjE3SDlWMTlIN00xMSwxOVYxN0gxM1YxOUgxMU0xNSwxOVYxN0gxN1YxOUgxNU03LDE1VjEzSDlWMTVIN00xMSwxNVYxM0gxM1YxNUgxMU0xNSwxNVYxM0gxN1YxNUgxNU03LDExVjlIOVYxMUg3TTExLDExVjlIMTNWMTFIMTFNMTUsMTFWOUgxN1YxMUgxNU03LDdWNUg5VjdIN00xMSw3VjVIMTNWN0gxMU0xNSw3VjVIMTdWN0gxNVpcIj5cclxuICAgICAgICAgICAgPC9wYXRoPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hlY2tib3hMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCB9XCI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tbWVudS1saXN0XCIgKm5nSWY9XCIhc29ydGFibGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLW1lbnUtaXRlbVwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoZWNrYm94TGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wgfVwiPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLW1lbnUtZm9vdGVyXCIgKm5nSWY9XCJzaG93Rm9vdGVyXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJmb290ZXJUZW1wbGF0ZVwiIFtuZ0lmRWxzZV09XCJkZWZhdWx0Rm9vdGVyVHBsXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Rm9vdGVyVHBsPnt7Zm9vdGVyVGV4dH19PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L21hdC1tZW51PlxyXG5cclxuPG5nLXRlbXBsYXRlICNjaGVja2JveExpc3QgbGV0LWNvbD5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicGlubmFibGVcIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tcGluLWJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInBpbkxpc3RcIj5cclxuICAgICAgPHN2ZyBjbGFzcz1cIm10eC1ncmlkLWljb24gbXR4LWdyaWQtY29sdW1uLXBpbi1pY29uXCIgKm5nSWY9XCJjb2wucGlubmVkXCJcclxuICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMTYsMTJWNEgxN1YySDdWNEg4VjEyTDYsMTRWMTZIMTEuMlYyMkgxMi44VjE2SDE4VjE0TDE2LDEyWlwiIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgICA8c3ZnIGNsYXNzPVwibXR4LWdyaWQtaWNvbiBtdHgtZ3JpZC1jb2x1bW4tcGluLW9mZi1pY29uXCIgKm5nSWY9XCIhY29sLnBpbm5lZFwiXHJcbiAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMiw1LjI3TDMuMjgsNEwyMCwyMC43MkwxOC43MywyMkwxMi44LDE2LjA3VjIySDExLjJWMTZINlYxNEw4LDEyVjExLjI3TDIsNS4yN00xNiwxMkwxOCwxNFYxNkgxNy44Mkw4LDYuMThWNEg3VjJIMTdWNEgxNlYxMlpcIiAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG1hdC1tZW51ICNwaW5MaXN0PVwibWF0TWVudVwiIGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLXBpbi1saXN0XCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tcGluLW9wdGlvblwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBpbk9wdGlvbnNcIiBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVQaW5TZWxlY3QoY29sLCBpdGVtLnZhbHVlKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLXBpbi1vcHRpb24tcGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS9lcWVxZXEgLS0+XHJcbiAgICAgICAgICA8c3ZnIGNsYXNzPVwibXR4LWdyaWQtaWNvbiBtdHgtZ3JpZC1jb2x1bW4tcGluLWNoZWNrLWljb25cIiAqbmdJZj1cImNvbC5waW5uZWQ9PWl0ZW0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTIxLDdMOSwxOUwzLjUsMTMuNUw0LjkxLDEyLjA5TDksMTYuMTdMMTkuNTksNS41OUwyMSw3WlwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tcGluLW9wdGlvbi10ZXh0XCI+e3tpdGVtLmxhYmVsIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L21hdC1tZW51PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bWF0LWNoZWNrYm94IGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLW1lbnUtaXRlbS1sYWJlbFwiICpuZ0lmPVwic2VsZWN0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbFtzZWxlY3RhYmxlQ2hlY2tlZF1cIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiX2hhbmRsZUNoZWNrZWQoJGV2ZW50KVwiPlxyXG4gICAge3tjb2wuaGVhZGVyIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fVxyXG4gIDwvbWF0LWNoZWNrYm94PlxyXG4gIDxzcGFuIGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLW1lbnUtaXRlbS1sYWJlbFwiICpuZ0lmPVwiIXNlbGVjdGFibGVcIj5cclxuICAgIHt7Y29sLmhlYWRlciB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX1cclxuICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|