angular-slickgrid
Version:
Slickgrid components made available in Angular
263 lines • 31.4 kB
JavaScript
import { DelimiterType, EventNamingStyle, FileType, Filters, OperatorType, } from '@slickgrid-universal/common';
/** Global Grid Options Defaults */
export const GlobalGridOptions = {
alwaysShowVerticalScroll: true,
autoEdit: false,
asyncEditorLoading: false,
autoFitColumnsOnFirstLoad: true,
autoResize: {
applyResizeToContainer: true,
autoHeight: true,
autoHeightRecalcRow: 100,
calculateAvailableSizeBy: 'window',
bottomPadding: 20,
minHeight: 250,
minWidth: 300,
rightPadding: 0,
},
cellHighlightCssClass: 'slick-cell-modified',
checkboxSelector: {
cssClass: 'slick-cell-checkboxsel',
},
columnPicker: {
hideForceFitButton: false,
hideSyncResizeButton: true,
headerColumnValueExtractor: pickerHeaderColumnValueExtractor,
},
cellMenu: {
autoAdjustDrop: true,
autoAlignSide: true,
hideCloseButton: true,
hideCommandSection: false,
hideOptionSection: false,
},
contextMenu: {
autoAdjustDrop: true,
autoAlignSide: true,
hideCloseButton: true,
hideClearAllGrouping: false,
hideCollapseAllGroups: false,
hideCommandSection: false,
hideCopyCellValueCommand: false,
hideExpandAllGroups: false,
hideExportCsvCommand: false,
hideExportExcelCommand: false,
hideExportTextDelimitedCommand: true,
hideMenuOnScroll: true,
hideOptionSection: false,
iconCollapseAllGroupsCommand: 'mdi mdi-arrow-collapse',
iconExpandAllGroupsCommand: 'mdi mdi-arrow-expand',
iconClearGroupingCommand: 'mdi mdi-close',
iconCopyCellValueCommand: 'mdi mdi-content-copy',
iconExportCsvCommand: 'mdi mdi-download',
iconExportExcelCommand: 'mdi mdi-file-excel-outline',
iconExportTextDelimitedCommand: 'mdi mdi-download',
showBulletWhenIconMissing: true,
subItemChevronClass: 'mdi mdi-chevron-down mdi-rotate-270',
},
customFooterOptions: {
dateFormat: 'YYYY-MM-DD, hh:mm a',
hideRowSelectionCount: false,
hideTotalItemCount: false,
hideLastUpdateTimestamp: true,
footerHeight: 25,
leftContainerClass: 'col-xs-12 col-sm-5',
rightContainerClass: 'col-xs-6 col-sm-7',
metricSeparator: '|',
metricTexts: {
items: 'items',
itemsKey: 'ITEMS',
itemsSelected: 'items selected',
itemsSelectedKey: 'ITEMS_SELECTED',
of: 'of',
ofKey: 'OF',
},
},
dataView: {
// when enabled, this will preserve the row selection even after filtering/sorting/grouping
syncGridSelection: {
preserveHidden: false,
preserveHiddenOnSelectionChange: true,
},
syncGridSelectionWithBackendService: false, // but disable it when using backend services
},
datasetIdPropertyName: 'id',
defaultFilter: Filters.input,
defaultBackendServiceFilterTypingDebounce: 500,
defaultColumnSortFieldId: 'id',
defaultFilterPlaceholder: '🔎︎',
defaultFilterRangeOperator: OperatorType.rangeInclusive,
editable: false,
enableAutoResize: true,
enableAutoSizeColumns: true,
enableCellNavigation: false,
enableColumnPicker: true,
enableColumnReorder: true,
enableColumnResizeOnDoubleClick: true,
enableContextMenu: true,
enableExcelExport: false,
enableTextExport: false, // CSV/Text with Tab Delimited
enableFilterTrimWhiteSpace: false, // do we want to trim white spaces on all Filters?
enableGridMenu: true,
enableHeaderMenu: true,
enableEmptyDataWarningMessage: true,
emptyDataWarning: {
className: 'slick-empty-data-warning',
message: 'No data to display.',
messageKey: 'EMPTY_DATA_WARNING_MESSAGE',
hideFrozenLeftWarning: false,
hideFrozenRightWarning: false,
leftViewportMarginLeft: '40%',
rightViewportMarginLeft: '40%',
frozenLeftViewportMarginLeft: '0px',
frozenRightViewportMarginLeft: '40%',
},
enableMouseHoverHighlightRow: true,
enableSorting: true,
enableTextSelectionOnCells: true,
eventNamingStyle: EventNamingStyle.camelCase,
explicitInitialization: true,
excelExportOptions: {
addGroupIndentation: true,
exportWithFormatter: false,
filename: 'export',
format: FileType.xlsx,
groupingColumnHeaderTitle: 'Group By',
groupCollapsedSymbol: '⮞',
groupExpandedSymbol: '⮟',
groupingAggregatorRowText: '',
sanitizeDataExport: false,
},
textExportOptions: {
delimiter: DelimiterType.comma,
exportWithFormatter: false,
filename: 'export',
format: FileType.csv,
groupingColumnHeaderTitle: 'Group By',
groupingAggregatorRowText: '',
sanitizeDataExport: false,
useUtf8WithBom: true,
},
filterTypingDebounce: 0,
forceFitColumns: false,
frozenHeaderWidthCalcDifferential: 0,
gridMenu: {
dropSide: 'left',
commandLabels: {
clearAllFiltersCommandKey: 'CLEAR_ALL_FILTERS',
clearAllSortingCommandKey: 'CLEAR_ALL_SORTING',
clearFrozenColumnsCommandKey: 'CLEAR_PINNING',
exportCsvCommandKey: 'EXPORT_TO_CSV',
exportExcelCommandKey: 'EXPORT_TO_EXCEL',
exportTextDelimitedCommandKey: 'EXPORT_TO_TAB_DELIMITED',
refreshDatasetCommandKey: 'REFRESH_DATASET',
toggleDarkModeCommandKey: 'TOGGLE_DARK_MODE',
toggleFilterCommandKey: 'TOGGLE_FILTER_ROW',
togglePreHeaderCommandKey: 'TOGGLE_PRE_HEADER_ROW',
},
hideClearAllFiltersCommand: false,
hideClearAllSortingCommand: false,
hideClearFrozenColumnsCommand: true, // opt-in command
hideExportCsvCommand: false,
hideExportExcelCommand: false,
hideExportTextDelimitedCommand: true,
hideForceFitButton: false,
hideRefreshDatasetCommand: false,
hideSyncResizeButton: true,
hideToggleDarkModeCommand: true,
hideToggleFilterCommand: false,
hideTogglePreHeaderCommand: false,
iconCssClass: 'mdi mdi-menu',
iconClearAllFiltersCommand: 'mdi mdi-filter-remove-outline',
iconClearAllSortingCommand: 'mdi mdi-sort-variant-off',
iconClearFrozenColumnsCommand: 'mdi mdi-pin-off-outline',
iconExportCsvCommand: 'mdi mdi-download',
iconExportExcelCommand: 'mdi mdi-file-excel-outline',
iconExportTextDelimitedCommand: 'mdi mdi-download',
iconRefreshDatasetCommand: 'mdi mdi-sync',
iconToggleDarkModeCommand: 'mdi mdi-brightness-4',
iconToggleFilterCommand: 'mdi mdi-flip-vertical',
iconTogglePreHeaderCommand: 'mdi mdi-flip-vertical',
menuWidth: 16,
resizeOnShowHeaderRow: true,
subItemChevronClass: 'mdi mdi-chevron-down mdi-rotate-270',
headerColumnValueExtractor: pickerHeaderColumnValueExtractor,
},
headerMenu: {
autoAlign: true,
autoAlignOffset: 12,
minWidth: 140,
iconClearFilterCommand: 'mdi mdi-filter-remove-outline',
iconClearSortCommand: 'mdi mdi-sort-variant-off',
iconFreezeColumns: 'mdi mdi-pin-outline',
iconSortAscCommand: 'mdi mdi-sort-ascending',
iconSortDescCommand: 'mdi mdi-sort-descending',
iconColumnHideCommand: 'mdi mdi-close',
iconColumnResizeByContentCommand: 'mdi mdi-arrow-expand-horizontal',
hideColumnResizeByContentCommand: false,
hideColumnHideCommand: false,
hideClearFilterCommand: false,
hideClearSortCommand: false,
hideFreezeColumnsCommand: true, // opt-in command
hideSortCommands: false,
subItemChevronClass: 'mdi mdi-chevron-down mdi-rotate-270',
},
headerRowHeight: 35,
multiColumnSort: true,
numberedMultiColumnSort: true,
tristateMultiColumnSort: false,
sortColNumberInSeparateSpan: true,
suppressActiveCellChangeOnEdit: false,
pagination: {
pageSizes: [10, 15, 20, 25, 30, 40, 50, 75, 100],
pageSize: 25,
totalItems: 0,
},
// technically speaking the Row Detail requires the process & viewComponent but we'll ignore it just to set certain options
rowDetailView: {
collapseAllOnSort: true,
cssClass: 'detail-view-toggle',
panelRows: 1,
keyPrefix: '__',
useRowClick: false,
saveDetailViewOnScroll: false,
},
rowHeight: 35,
topPanelHeight: 35,
preHeaderPanelWidth: '100%', // mostly useful for Draggable Grouping dropzone to take full width
translationNamespaceSeparator: ':',
resetFilterSearchValueAfterOnBeforeCancellation: true,
resizeByContentOnlyOnFirstLoad: true,
resizeByContentOptions: {
alwaysRecalculateColumnWidth: false,
cellCharWidthInPx: 7.8,
cellPaddingWidthInPx: 14,
defaultRatioForStringType: 0.88,
formatterPaddingWidthInPx: 0,
maxItemToInspectCellContentWidth: 1000,
maxItemToInspectSingleColumnWidthByContent: 5000,
widthToRemoveFromExceededWidthReadjustment: 50,
},
treeDataOptions: {
exportIndentMarginLeft: 5,
exportIndentationLeadingChar: '͏͏͏͏͏͏͏͏͏·',
},
};
/**
* Value Extractor for both ColumnPicker & GridMenu Picker
* when using Column Header Grouping, we'll prefix the column group title
* else we'll simply return the column name title
*/
function pickerHeaderColumnValueExtractor(column, gridOptions) {
let colName = column?.columnPickerLabel ?? column?.name ?? '';
if (colName instanceof HTMLElement || colName instanceof DocumentFragment) {
colName = colName.textContent || '';
}
const headerGroup = column?.columnGroup || '';
const columnGroupSeparator = gridOptions?.columnGroupSeparator ?? ' - ';
if (headerGroup) {
return headerGroup + columnGroupSeparator + colName;
}
return colName;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWdyaWQtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9hbmd1bGFyLXNsaWNrZ3JpZC9nbG9iYWwtZ3JpZC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixPQUFPLEVBRVAsWUFBWSxHQUViLE1BQU0sNkJBQTZCLENBQUM7QUFHckMsbUNBQW1DO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUF3QjtJQUNwRCx3QkFBd0IsRUFBRSxJQUFJO0lBQzlCLFFBQVEsRUFBRSxLQUFLO0lBQ2Ysa0JBQWtCLEVBQUUsS0FBSztJQUN6Qix5QkFBeUIsRUFBRSxJQUFJO0lBQy9CLFVBQVUsRUFBRTtRQUNWLHNCQUFzQixFQUFFLElBQUk7UUFDNUIsVUFBVSxFQUFFLElBQUk7UUFDaEIsbUJBQW1CLEVBQUUsR0FBRztRQUN4Qix3QkFBd0IsRUFBRSxRQUFRO1FBQ2xDLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFNBQVMsRUFBRSxHQUFHO1FBQ2QsUUFBUSxFQUFFLEdBQUc7UUFDYixZQUFZLEVBQUUsQ0FBQztLQUNoQjtJQUNELHFCQUFxQixFQUFFLHFCQUFxQjtJQUM1QyxnQkFBZ0IsRUFBRTtRQUNoQixRQUFRLEVBQUUsd0JBQXdCO0tBQ25DO0lBQ0QsWUFBWSxFQUFFO1FBQ1osa0JBQWtCLEVBQUUsS0FBSztRQUN6QixvQkFBb0IsRUFBRSxJQUFJO1FBQzFCLDBCQUEwQixFQUFFLGdDQUFnQztLQUM3RDtJQUNELFFBQVEsRUFBRTtRQUNSLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLGtCQUFrQixFQUFFLEtBQUs7UUFDekIsaUJBQWlCLEVBQUUsS0FBSztLQUN6QjtJQUNELFdBQVcsRUFBRTtRQUNYLGNBQWMs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Q0FBQztRQUM1QixnQ0FBZ0MsRUFBRSxJQUFJO1FBQ3RDLDBDQUEwQyxFQUFFLElBQUk7UUFDaEQsMENBQTBDLEVBQUUsRUFBRTtLQUMvQztJQUNELGVBQWUsRUFBRTtRQUNmLHNCQUFzQixFQUFFLENBQUM7UUFDekIsNEJBQTRCLEVBQUUsWUFBWTtLQUNkO0NBQy9CLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsU0FBUyxnQ0FBZ0MsQ0FBQyxNQUFjLEVBQUUsV0FBaUM7SUFDekYsSUFBSSxPQUFPLEdBQUcsTUFBTSxFQUFFLGlCQUFpQixJQUFJLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzlELElBQUksT0FBTyxZQUFZLFdBQVcsSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUUsQ0FBQztRQUMxRSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO0lBQzlDLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxFQUFFLG9CQUFvQixJQUFJLEtBQUssQ0FBQztJQUN4RSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sV0FBVyxHQUFHLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztJQUN0RCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ29sdW1uLFxuICBEZWxpbWl0ZXJUeXBlLFxuICBFdmVudE5hbWluZ1N0eWxlLFxuICBGaWxlVHlwZSxcbiAgRmlsdGVycyxcbiAgdHlwZSBHcmlkT3B0aW9uIGFzIEdyaWRPcHRpb25Vbml2ZXJzYWwsXG4gIE9wZXJhdG9yVHlwZSxcbiAgdHlwZSBUcmVlRGF0YU9wdGlvbixcbn0gZnJvbSAnQHNsaWNrZ3JpZC11bml2ZXJzYWwvY29tbW9uJztcbmltcG9ydCB0eXBlIHsgR3JpZE9wdGlvbiwgUm93RGV0YWlsVmlldyB9IGZyb20gJy4vbW9kZWxzL2luZGV4JztcblxuLyoqIEdsb2JhbCBHcmlkIE9wdGlvbnMgRGVmYXVsdHMgKi9cbmV4cG9ydCBjb25zdCBHbG9iYWxHcmlkT3B0aW9uczogUGFydGlhbDxHcmlkT3B0aW9uPiA9IHtcbiAgYWx3YXlzU2hvd1ZlcnRpY2FsU2Nyb2xsOiB0cnVlLFxuICBhdXRvRWRpdDogZmFsc2UsXG4gIGFzeW5jRWRpdG9yTG9hZGluZzogZmFsc2UsXG4gIGF1dG9GaXRDb2x1bW5zT25GaXJzdExvYWQ6IHRydWUsXG4gIGF1dG9SZXNpemU6IHtcbiAgICBhcHBseVJlc2l6ZVRvQ29udGFpbmVyOiB0cnVlLFxuICAgIGF1dG9IZWlnaHQ6IHRydWUsXG4gICAgYXV0b0hlaWdodFJlY2FsY1JvdzogMTAwLFxuICAgIGNhbGN1bGF0ZUF2YWlsYWJsZVNpemVCeTogJ3dpbmRvdycsXG4gICAgYm90dG9tUGFkZGluZzogMjAsXG4gICAgbWluSGVpZ2h0OiAyNTAsXG4gICAgbWluV2lkdGg6IDMwMCxcbiAgICByaWdodFBhZGRpbmc6IDAsXG4gIH0sXG4gIGNlbGxIaWdobGlnaHRDc3NDbGFzczogJ3NsaWNrLWNlbGwtbW9kaWZpZWQnLFxuICBjaGVja2JveFNlbGVjdG9yOiB7XG4gICAgY3NzQ2xhc3M6ICdzbGljay1jZWxsLWNoZWNrYm94c2VsJyxcbiAgfSxcbiAgY29sdW1uUGlja2VyOiB7XG4gICAgaGlkZUZvcmNlRml0QnV0dG9uOiBmYWxzZSxcbiAgICBoaWRlU3luY1Jlc2l6ZUJ1dHRvbjogdHJ1ZSxcbiAgICBoZWFkZXJDb2x1bW5WYWx1ZUV4dHJhY3RvcjogcGlja2VySGVhZGVyQ29sdW1uVmFsdWVFeHRyYWN0b3IsXG4gIH0sXG4gIGNlbGxNZW51OiB7XG4gICAgYXV0b0FkanVzdERyb3A6IHRydWUsXG4gICAgYXV0b0FsaWduU2lkZTogdHJ1ZSxcbiAgICBoaWRlQ2xvc2VCdXR0b246IHRydWUsXG4gICAgaGlkZUNvbW1hbmRTZWN0aW9uOiBmYWxzZSxcbiAgICBoaWRlT3B0aW9uU2VjdGlvbjogZmFsc2UsXG4gIH0sXG4gIGNvbnRleHRNZW51OiB7XG4gICAgYXV0b0FkanVzdERyb3A6IHRydWUsXG4gICAgYXV0b0FsaWduU2lkZTogdHJ1ZSxcbiAgICBoaWRlQ2xvc2VCdXR0b246IHRydWUsXG4gICAgaGlkZUNsZWFyQWxsR3JvdXBpbmc6IGZhbHNlLFxuICAgIGhpZGVDb2xsYXBzZUFsbEdyb3VwczogZmFsc2UsXG4gICAgaGlkZUNvbW1hbmRTZWN0aW9uOiBmYWxzZSxcbiAgICBoaWRlQ29weUNlbGxWYWx1ZUNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVFeHBhbmRBbGxHcm91cHM6IGZhbHNlLFxuICAgIGhpZGVFeHBvcnRDc3ZDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlRXhwb3J0RXhjZWxDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlRXhwb3J0VGV4dERlbGltaXRlZENvbW1hbmQ6IHRydWUsXG4gICAgaGlkZU1lbnVPblNjcm9sbDogdHJ1ZSxcbiAgICBoaWRlT3B0aW9uU2VjdGlvbjogZmFsc2UsXG4gICAgaWNvbkNvbGxhcHNlQWxsR3JvdXBzQ29tbWFuZDogJ21kaSBtZGktYXJyb3ctY29sbGFwc2UnLFxuICAgIGljb25FeHBhbmRBbGxHcm91cHNDb21tYW5kOiAnbWRpIG1kaS1hcnJvdy1leHBhbmQnLFxuICAgIGljb25DbGVhckdyb3VwaW5nQ29tbWFuZDogJ21kaSBtZGktY2xvc2UnLFxuICAgIGljb25Db3B5Q2VsbFZhbHVlQ29tbWFuZDogJ21kaSBtZGktY29udGVudC1jb3B5JyxcbiAgICBpY29uRXhwb3J0Q3N2Q29tbWFuZDogJ21kaSBtZGktZG93bmxvYWQnLFxuICAgIGljb25FeHBvcnRFeGNlbENvbW1hbmQ6ICdtZGkgbWRpLWZpbGUtZXhjZWwtb3V0bGluZScsXG4gICAgaWNvbkV4cG9ydFRleHREZWxpbWl0ZWRDb21tYW5kOiAnbWRpIG1kaS1kb3dubG9hZCcsXG4gICAgc2hvd0J1bGxldFdoZW5JY29uTWlzc2luZzogdHJ1ZSxcbiAgICBzdWJJdGVtQ2hldnJvbkNsYXNzOiAnbWRpIG1kaS1jaGV2cm9uLWRvd24gbWRpLXJvdGF0ZS0yNzAnLFxuICB9LFxuICBjdXN0b21Gb290ZXJPcHRpb25zOiB7XG4gICAgZGF0ZUZvcm1hdDogJ1lZWVktTU0tREQsIGhoOm1tIGEnLFxuICAgIGhpZGVSb3dTZWxlY3Rpb25Db3VudDogZmFsc2UsXG4gICAgaGlkZVRvdGFsSXRlbUNvdW50OiBmYWxzZSxcbiAgICBoaWRlTGFzdFVwZGF0ZVRpbWVzdGFtcDogdHJ1ZSxcbiAgICBmb290ZXJIZWlnaHQ6IDI1LFxuICAgIGxlZnRDb250YWluZXJDbGFzczogJ2NvbC14cy0xMiBjb2wtc20tNScsXG4gICAgcmlnaHRDb250YWluZXJDbGFzczogJ2NvbC14cy02IGNvbC1zbS03JyxcbiAgICBtZXRyaWNTZXBhcmF0b3I6ICd8JyxcbiAgICBtZXRyaWNUZXh0czoge1xuICAgICAgaXRlbXM6ICdpdGVtcycsXG4gICAgICBpdGVtc0tleTogJ0lURU1TJyxcbiAgICAgIGl0ZW1zU2VsZWN0ZWQ6ICdpdGVtcyBzZWxlY3RlZCcsXG4gICAgICBpdGVtc1NlbGVjdGVkS2V5OiAnSVRFTVNfU0VMRUNURUQnLFxuICAgICAgb2Y6ICdvZicsXG4gICAgICBvZktleTogJ09GJyxcbiAgICB9LFxuICB9LFxuICBkYXRhVmlldzoge1xuICAgIC8vIHdoZW4gZW5hYmxlZCwgdGhpcyB3aWxsIHByZXNlcnZlIHRoZSByb3cgc2VsZWN0aW9uIGV2ZW4gYWZ0ZXIgZmlsdGVyaW5nL3NvcnRpbmcvZ3JvdXBpbmdcbiAgICBzeW5jR3JpZFNlbGVjdGlvbjoge1xuICAgICAgcHJlc2VydmVIaWRkZW46IGZhbHNlLFxuICAgICAgcHJlc2VydmVIaWRkZW5PblNlbGVjdGlvbkNoYW5nZTogdHJ1ZSxcbiAgICB9LFxuICAgIHN5bmNHcmlkU2VsZWN0aW9uV2l0aEJhY2tlbmRTZXJ2aWNlOiBmYWxzZSwgLy8gYnV0IGRpc2FibGUgaXQgd2hlbiB1c2luZyBiYWNrZW5kIHNlcnZpY2VzXG4gIH0sXG4gIGRhdGFzZXRJZFByb3BlcnR5TmFtZTogJ2lkJyxcbiAgZGVmYXVsdEZpbHRlcjogRmlsdGVycy5pbnB1dCxcbiAgZGVmYXVsdEJhY2tlbmRTZXJ2aWNlRmlsdGVyVHlwaW5nRGVib3VuY2U6IDUwMCxcbiAgZGVmYXVsdENvbHVtblNvcnRGaWVsZElkOiAnaWQnLFxuICBkZWZhdWx0RmlsdGVyUGxhY2Vob2xkZXI6ICfwn5SO77iOJyxcbiAgZGVmYXVsdEZpbHRlclJhbmdlT3BlcmF0b3I6IE9wZXJhdG9yVHlwZS5yYW5nZUluY2x1c2l2ZSxcbiAgZWRpdGFibGU6IGZhbHNlLFxuICBlbmFibGVBdXRvUmVzaXplOiB0cnVlLFxuICBlbmFibGVBdXRvU2l6ZUNvbHVtbnM6IHRydWUsXG4gIGVuYWJsZUNlbGxOYXZpZ2F0aW9uOiBmYWxzZSxcbiAgZW5hYmxlQ29sdW1uUGlja2VyOiB0cnVlLFxuICBlbmFibGVDb2x1bW5SZW9yZGVyOiB0cnVlLFxuICBlbmFibGVDb2x1bW5SZXNpemVPbkRvdWJsZUNsaWNrOiB0cnVlLFxuICBlbmFibGVDb250ZXh0TWVudTogdHJ1ZSxcbiAgZW5hYmxlRXhjZWxFeHBvcnQ6IGZhbHNlLFxuICBlbmFibGVUZXh0RXhwb3J0OiBmYWxzZSwgLy8gQ1NWL1RleHQgd2l0aCBUYWIgRGVsaW1pdGVkXG4gIGVuYWJsZUZpbHRlclRyaW1XaGl0ZVNwYWNlOiBmYWxzZSwgLy8gZG8gd2Ugd2FudCB0byB0cmltIHdoaXRlIHNwYWNlcyBvbiBhbGwgRmlsdGVycz9cbiAgZW5hYmxlR3JpZE1lbnU6IHRydWUsXG4gIGVuYWJsZUhlYWRlck1lbnU6IHRydWUsXG4gIGVuYWJsZUVtcHR5RGF0YVdhcm5pbmdNZXNzYWdlOiB0cnVlLFxuICBlbXB0eURhdGFXYXJuaW5nOiB7XG4gICAgY2xhc3NOYW1lOiAnc2xpY2stZW1wdHktZGF0YS13YXJuaW5nJyxcbiAgICBtZXNzYWdlOiAnTm8gZGF0YSB0byBkaXNwbGF5LicsXG4gICAgbWVzc2FnZUtleTogJ0VNUFRZX0RBVEFfV0FSTklOR19NRVNTQUdFJyxcbiAgICBoaWRlRnJvemVuTGVmdFdhcm5pbmc6IGZhbHNlLFxuICAgIGhpZGVGcm96ZW5SaWdodFdhcm5pbmc6IGZhbHNlLFxuICAgIGxlZnRWaWV3cG9ydE1hcmdpbkxlZnQ6ICc0MCUnLFxuICAgIHJpZ2h0Vmlld3BvcnRNYXJnaW5MZWZ0OiAnNDAlJyxcbiAgICBmcm96ZW5MZWZ0Vmlld3BvcnRNYXJnaW5MZWZ0OiAnMHB4JyxcbiAgICBmcm96ZW5SaWdodFZpZXdwb3J0TWFyZ2luTGVmdDogJzQwJScsXG4gIH0sXG4gIGVuYWJsZU1vdXNlSG92ZXJIaWdobGlnaHRSb3c6IHRydWUsXG4gIGVuYWJsZVNvcnRpbmc6IHRydWUsXG4gIGVuYWJsZVRleHRTZWxlY3Rpb25PbkNlbGxzOiB0cnVlLFxuICBldmVudE5hbWluZ1N0eWxlOiBFdmVudE5hbWluZ1N0eWxlLmNhbWVsQ2FzZSxcbiAgZXhwbGljaXRJbml0aWFsaXphdGlvbjogdHJ1ZSxcbiAgZXhjZWxFeHBvcnRPcHRpb25zOiB7XG4gICAgYWRkR3JvdXBJbmRlbnRhdGlvbjogdHJ1ZSxcbiAgICBleHBvcnRXaXRoRm9ybWF0dGVyOiBmYWxzZSxcbiAgICBmaWxlbmFtZTogJ2V4cG9ydCcsXG4gICAgZm9ybWF0OiBGaWxlVHlwZS54bHN4LFxuICAgIGdyb3VwaW5nQ29sdW1uSGVhZGVyVGl0bGU6ICdHcm91cCBCeScsXG4gICAgZ3JvdXBDb2xsYXBzZWRTeW1ib2w6ICfirp4nLFxuICAgIGdyb3VwRXhwYW5kZWRTeW1ib2w6ICfirp8nLFxuICAgIGdyb3VwaW5nQWdncmVnYXRvclJvd1RleHQ6ICcnLFxuICAgIHNhbml0aXplRGF0YUV4cG9ydDogZmFsc2UsXG4gIH0sXG4gIHRleHRFeHBvcnRPcHRpb25zOiB7XG4gICAgZGVsaW1pdGVyOiBEZWxpbWl0ZXJUeXBlLmNvbW1hLFxuICAgIGV4cG9ydFdpdGhGb3JtYXR0ZXI6IGZhbHNlLFxuICAgIGZpbGVuYW1lOiAnZXhwb3J0JyxcbiAgICBmb3JtYXQ6IEZpbGVUeXBlLmNzdixcbiAgICBncm91cGluZ0NvbHVtbkhlYWRlclRpdGxlOiAnR3JvdXAgQnknLFxuICAgIGdyb3VwaW5nQWdncmVnYXRvclJvd1RleHQ6ICcnLFxuICAgIHNhbml0aXplRGF0YUV4cG9ydDogZmFsc2UsXG4gICAgdXNlVXRmOFdpdGhCb206IHRydWUsXG4gIH0sXG4gIGZpbHRlclR5cGluZ0RlYm91bmNlOiAwLFxuICBmb3JjZUZpdENvbHVtbnM6IGZhbHNlLFxuICBmcm96ZW5IZWFkZXJXaWR0aENhbGNEaWZmZXJlbnRpYWw6IDAsXG4gIGdyaWRNZW51OiB7XG4gICAgZHJvcFNpZGU6ICdsZWZ0JyxcbiAgICBjb21tYW5kTGFiZWxzOiB7XG4gICAgICBjbGVhckFsbEZpbHRlcnNDb21tYW5kS2V5OiAnQ0xFQVJfQUxMX0ZJTFRFUlMnLFxuICAgICAgY2xlYXJBbGxTb3J0aW5nQ29tbWFuZEtleTogJ0NMRUFSX0FMTF9TT1JUSU5HJyxcbiAgICAgIGNsZWFyRnJvemVuQ29sdW1uc0NvbW1hbmRLZXk6ICdDTEVBUl9QSU5OSU5HJyxcbiAgICAgIGV4cG9ydENzdkNvbW1hbmRLZXk6ICdFWFBPUlRfVE9fQ1NWJyxcbiAgICAgIGV4cG9ydEV4Y2VsQ29tbWFuZEtleTogJ0VYUE9SVF9UT19FWENFTCcsXG4gICAgICBleHBvcnRUZXh0RGVsaW1pdGVkQ29tbWFuZEtleTogJ0VYUE9SVF9UT19UQUJfREVMSU1JVEVEJyxcbiAgICAgIHJlZnJlc2hEYXRhc2V0Q29tbWFuZEtleTogJ1JFRlJFU0hfREFUQVNFVCcsXG4gICAgICB0b2dnbGVEYXJrTW9kZUNvbW1hbmRLZXk6ICdUT0dHTEVfREFSS19NT0RFJyxcbiAgICAgIHRvZ2dsZUZpbHRlckNvbW1hbmRLZXk6ICdUT0dHTEVfRklMVEVSX1JPVycsXG4gICAgICB0b2dnbGVQcmVIZWFkZXJDb21tYW5kS2V5OiAnVE9HR0xFX1BSRV9IRUFERVJfUk9XJyxcbiAgICB9LFxuICAgIGhpZGVDbGVhckFsbEZpbHRlcnNDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlQ2xlYXJBbGxTb3J0aW5nQ29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUNsZWFyRnJvemVuQ29sdW1uc0NvbW1hbmQ6IHRydWUsIC8vIG9wdC1pbiBjb21tYW5kXG4gICAgaGlkZUV4cG9ydENzdkNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVFeHBvcnRFeGNlbENvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVFeHBvcnRUZXh0RGVsaW1pdGVkQ29tbWFuZDogdHJ1ZSxcbiAgICBoaWRlRm9yY2VGaXRCdXR0b246IGZhbHNlLFxuICAgIGhpZGVSZWZyZXNoRGF0YXNldENvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVTeW5jUmVzaXplQnV0dG9uOiB0cnVlLFxuICAgIGhpZGVUb2dnbGVEYXJrTW9kZUNvbW1hbmQ6IHRydWUsXG4gICAgaGlkZVRvZ2dsZUZpbHRlckNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVUb2dnbGVQcmVIZWFkZXJDb21tYW5kOiBmYWxzZSxcbiAgICBpY29uQ3NzQ2xhc3M6ICdtZGkgbWRpLW1lbnUnLFxuICAgIGljb25DbGVhckFsbEZpbHRlcnNDb21tYW5kOiAnbWRpIG1kaS1maWx0ZXItcmVtb3ZlLW91dGxpbmUnLFxuICAgIGljb25DbGVhckFsbFNvcnRpbmdDb21tYW5kOiAnbWRpIG1kaS1zb3J0LXZhcmlhbnQtb2ZmJyxcbiAgICBpY29uQ2xlYXJGcm96ZW5Db2x1bW5zQ29tbWFuZDogJ21kaSBtZGktcGluLW9mZi1vdXRsaW5lJyxcbiAgICBpY29uRXhwb3J0Q3N2Q29tbWFuZDogJ21kaSBtZGktZG93bmxvYWQnLFxuICAgIGljb25FeHBvcnRFeGNlbENvbW1hbmQ6ICdtZGkgbWRpLWZpbGUtZXhjZWwtb3V0bGluZScsXG4gICAgaWNvbkV4cG9ydFRleHREZWxpbWl0ZWRDb21tYW5kOiAnbWRpIG1kaS1kb3dubG9hZCcsXG4gICAgaWNvblJlZnJlc2hEYXRhc2V0Q29tbWFuZDogJ21kaSBtZGktc3luYycsXG4gICAgaWNvblRvZ2dsZURhcmtNb2RlQ29tbWFuZDogJ21kaSBtZGktYnJpZ2h0bmVzcy00JyxcbiAgICBpY29uVG9nZ2xlRmlsdGVyQ29tbWFuZDogJ21kaSBtZGktZmxpcC12ZXJ0aWNhbCcsXG4gICAgaWNvblRvZ2dsZVByZUhlYWRlckNvbW1hbmQ6ICdtZGkgbWRpLWZsaXAtdmVydGljYWwnLFxuICAgIG1lbnVXaWR0aDogMTYsXG4gICAgcmVzaXplT25TaG93SGVhZGVyUm93OiB0cnVlLFxuICAgIHN1Ykl0ZW1DaGV2cm9uQ2xhc3M6ICdtZGkgbWRpLWNoZXZyb24tZG93biBtZGktcm90YXRlLTI3MCcsXG4gICAgaGVhZGVyQ29sdW1uVmFsdWVFeHRyYWN0b3I6IHBpY2tlckhlYWRlckNvbHVtblZhbHVlRXh0cmFjdG9yLFxuICB9LFxuICBoZWFkZXJNZW51OiB7XG4gICAgYXV0b0FsaWduOiB0cnVlLFxuICAgIGF1dG9BbGlnbk9mZnNldDogMTIsXG4gICAgbWluV2lkdGg6IDE0MCxcbiAgICBpY29uQ2xlYXJGaWx0ZXJDb21tYW5kOiAnbWRpIG1kaS1maWx0ZXItcmVtb3ZlLW91dGxpbmUnLFxuICAgIGljb25DbGVhclNvcnRDb21tYW5kOiAnbWRpIG1kaS1zb3J0LXZhcmlhbnQtb2ZmJyxcbiAgICBpY29uRnJlZXplQ29sdW1uczogJ21kaSBtZGktcGluLW91dGxpbmUnLFxuICAgIGljb25Tb3J0QXNjQ29tbWFuZDogJ21kaSBtZGktc29ydC1hc2NlbmRpbmcnLFxuICAgIGljb25Tb3J0RGVzY0NvbW1hbmQ6ICdtZGkgbWRpLXNvcnQtZGVzY2VuZGluZycsXG4gICAgaWNvbkNvbHVtbkhpZGVDb21tYW5kOiAnbWRpIG1kaS1jbG9zZScsXG4gICAgaWNvbkNvbHVtblJlc2l6ZUJ5Q29udGVudENvbW1hbmQ6ICdtZGkgbWRpLWFycm93LWV4cGFuZC1ob3Jpem9udGFsJyxcbiAgICBoaWRlQ29sdW1uUmVzaXplQnlDb250ZW50Q29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUNvbHVtbkhpZGVDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlQ2xlYXJGaWx0ZXJDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlQ2xlYXJTb3J0Q29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUZyZWV6ZUNvbHVtbnNDb21tYW5kOiB0cnVlLCAvLyBvcHQtaW4gY29tbWFuZFxuICAgIGhpZGVTb3J0Q29tbWFuZHM6IGZhbHNlLFxuICAgIHN1Ykl0ZW1DaGV2cm9uQ2xhc3M6ICdtZGkgbWRpLWNoZXZyb24tZG93biBtZGktcm90YXRlLTI3MCcsXG4gIH0sXG4gIGhlYWRlclJvd0hlaWdodDogMzUsXG4gIG11bHRpQ29sdW1uU29ydDogdHJ1ZSxcbiAgbnVtYmVyZWRNdWx0aUNvbHVtblNvcnQ6IHRydWUsXG4gIHRyaXN0YXRlTXVsdGlDb2x1bW5Tb3J0OiBmYWxzZSxcbiAgc29ydENvbE51bWJlckluU2VwYXJhdGVTcGFuOiB0cnVlLFxuICBzdXBwcmVzc0FjdGl2ZUNlbGxDaGFuZ2VPbkVkaXQ6IGZhbHNlLFxuICBwYWdpbmF0aW9uOiB7XG4gICAgcGFnZVNpemVzOiBbMTAsIDE1LCAyMCwgMjUsIDMwLCA0MCwgNTAsIDc1LCAxMDBdLFxuICAgIHBhZ2VTaXplOiAyNSxcbiAgICB0b3RhbEl0ZW1zOiAwLFxuICB9LFxuICAvLyB0ZWNobmljYWxseSBzcGVha2luZyB0aGUgUm93IERldGFpbCByZXF1aXJlcyB0aGUgcHJvY2VzcyAmIHZpZXdDb21wb25lbnQgYnV0IHdlJ2xsIGlnbm9yZSBpdCBqdXN0IHRvIHNldCBjZXJ0YWluIG9wdGlvbnNcbiAgcm93RGV0YWlsVmlldzoge1xuICAgIGNvbGxhcHNlQWxsT25Tb3J0OiB0cnVlLFxuICAgIGNzc0NsYXNzOiAnZGV0YWlsLXZpZXctdG9nZ2xlJyxcbiAgICBwYW5lbFJvd3M6IDEsXG4gICAga2V5UHJlZml4OiAnX18nLFxuICAgIHVzZVJvd0NsaWNrOiBmYWxzZSxcbiAgICBzYXZlRGV0YWlsVmlld09uU2Nyb2xsOiBmYWxzZSxcbiAgfSBhcyBSb3dEZXRhaWxWaWV3LFxuICByb3dIZWlnaHQ6IDM1LFxuICB0b3BQYW5lbEhlaWdodDogMzUsXG4gIHByZUhlYWRlclBhbmVsV2lkdGg6ICcxMDAlJywgLy8gbW9zdGx5IHVzZWZ1bCBmb3IgRHJhZ2dhYmxlIEdyb3VwaW5nIGRyb3B6b25lIHRvIHRha2UgZnVsbCB3aWR0aFxuICB0cmFuc2xhdGlvbk5hbWVzcGFjZVNlcGFyYXRvcjogJzonLFxuICByZXNldEZpbHRlclNlYXJjaFZhbHVlQWZ0ZXJPbkJlZm9yZUNhbmNlbGxhdGlvbjogdHJ1ZSxcbiAgcmVzaXplQnlDb250ZW50T25seU9uRmlyc3RMb2FkOiB0cnVlLFxuICByZXNpemVCeUNvbnRlbnRPcHRpb25zOiB7XG4gICAgYWx3YXlzUmVjYWxjdWxhdGVDb2x1bW5XaWR0aDogZmFsc2UsXG4gICAgY2VsbENoYXJXaWR0aEluUHg6IDcuOCxcbiAgICBjZWxsUGFkZGluZ1dpZHRoSW5QeDogMTQsXG4gICAgZGVmYXVsdFJhdGlvRm9yU3RyaW5nVHlwZTogMC44OCxcbiAgICBmb3JtYXR0ZXJQYWRkaW5nV2lkdGhJblB4OiAwLFxuICAgIG1heEl0ZW1Ub0luc3BlY3RDZWxsQ29udGVudFdpZHRoOiAxMDAwLFxuICAgIG1heEl0ZW1Ub0luc3BlY3RTaW5nbGVDb2x1bW5XaWR0aEJ5Q29udGVudDogNTAwMCxcbiAgICB3aWR0aFRvUmVtb3ZlRnJvbUV4Y2VlZGVkV2lkdGhSZWFkanVzdG1lbnQ6IDUwLFxuICB9LFxuICB0cmVlRGF0YU9wdGlvbnM6IHtcbiAgICBleHBvcnRJbmRlbnRNYXJnaW5MZWZ0OiA1LFxuICAgIGV4cG9ydEluZGVudGF0aW9uTGVhZGluZ0NoYXI6ICfNj82PzY/Nj82PzY/Nj82PzY/CtycsXG4gIH0gYXMgdW5rbm93biBhcyBUcmVlRGF0YU9wdGlvbixcbn07XG5cbi8qKlxuICogVmFsdWUgRXh0cmFjdG9yIGZvciBib3RoIENvbHVtblBpY2tlciAmIEdyaWRNZW51IFBpY2tlclxuICogd2hlbiB1c2luZyBDb2x1bW4gSGVhZGVyIEdyb3VwaW5nLCB3ZSdsbCBwcmVmaXggdGhlIGNvbHVtbiBncm91cCB0aXRsZVxuICogZWxzZSB3ZSdsbCBzaW1wbHkgcmV0dXJuIHRoZSBjb2x1bW4gbmFtZSB0aXRsZVxuICovXG5mdW5jdGlvbiBwaWNrZXJIZWFkZXJDb2x1bW5WYWx1ZUV4dHJhY3Rvcihjb2x1bW46IENvbHVtbiwgZ3JpZE9wdGlvbnM/OiBHcmlkT3B0aW9uVW5pdmVyc2FsKSB7XG4gIGxldCBjb2xOYW1lID0gY29sdW1uPy5jb2x1bW5QaWNrZXJMYWJlbCA/PyBjb2x1bW4/Lm5hbWUgPz8gJyc7XG4gIGlmIChjb2xOYW1lIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgY29sTmFtZSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpIHtcbiAgICBjb2xOYW1lID0gY29sTmFtZS50ZXh0Q29udGVudCB8fCAnJztcbiAgfVxuICBjb25zdCBoZWFkZXJHcm91cCA9IGNvbHVtbj8uY29sdW1uR3JvdXAgfHwgJyc7XG4gIGNvbnN0IGNvbHVtbkdyb3VwU2VwYXJhdG9yID0gZ3JpZE9wdGlvbnM/LmNvbHVtbkdyb3VwU2VwYXJhdG9yID8/ICcgLSAnO1xuICBpZiAoaGVhZGVyR3JvdXApIHtcbiAgICByZXR1cm4gaGVhZGVyR3JvdXAgKyBjb2x1bW5Hcm91cFNlcGFyYXRvciArIGNvbE5hbWU7XG4gIH1cbiAgcmV0dXJuIGNvbE5hbWU7XG59XG4iXX0=