basesite-shared-grid-lib 15.8.6 → 15.9.6

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.
@@ -0,0 +1,27 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class ColumnValueFormatter {
5
+ constructor(datePipe) {
6
+ this.datePipe = datePipe;
7
+ }
8
+ colValueFormatter(params, colType) {
9
+ if (isNaN(+params.value)) {
10
+ var dateWrapper = new Date(params.value);
11
+ let isValidDate = !isNaN(dateWrapper.getDate());
12
+ if (isValidDate && colType == 'date') {
13
+ return this.datePipe.transform(params.value, 'MM-dd-yyyy');
14
+ }
15
+ else {
16
+ return params.value;
17
+ }
18
+ }
19
+ return params.value;
20
+ }
21
+ }
22
+ ColumnValueFormatter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ColumnValueFormatter, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
23
+ ColumnValueFormatter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ColumnValueFormatter });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: ColumnValueFormatter, decorators: [{
25
+ type: Injectable
26
+ }], ctorParameters: function () { return [{ type: i1.DatePipe }]; } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXZhbHVlLWZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYi9zcmMvbGliL2Zvcm1hdHRlcnMvY29sdW1uLXZhbHVlLWZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFJM0MsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcsQ0FBQztJQUNuQyxpQkFBaUIsQ0FBQyxNQUE0QixFQUFFLE9BQWU7UUFDcEUsSUFBSSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsSUFBSSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLElBQUksV0FBVyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSSxNQUFNLEVBQUU7Z0JBQ3BDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQzthQUM1RDtpQkFBTTtnQkFDTCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDckI7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDOztpSEFiVSxvQkFBb0I7cUhBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbHVlRm9ybWF0dGVyUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ29sdW1uVmFsdWVGb3JtYXR0ZXIge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlKSB7fVxyXG4gIHB1YmxpYyBjb2xWYWx1ZUZvcm1hdHRlcihwYXJhbXM6IFZhbHVlRm9ybWF0dGVyUGFyYW1zLCBjb2xUeXBlOiBzdHJpbmcpIHtcclxuICAgIGlmIChpc05hTigrcGFyYW1zLnZhbHVlKSkge1xyXG4gICAgICB2YXIgZGF0ZVdyYXBwZXIgPSBuZXcgRGF0ZShwYXJhbXMudmFsdWUpO1xyXG4gICAgICBsZXQgaXNWYWxpZERhdGUgPSAhaXNOYU4oZGF0ZVdyYXBwZXIuZ2V0RGF0ZSgpKTtcclxuICAgICAgaWYgKGlzVmFsaWREYXRlICYmIGNvbFR5cGUgPT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHBhcmFtcy52YWx1ZSwgJ01NLWRkLXl5eXknKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcGFyYW1zLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW1zLnZhbHVlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -6,12 +6,12 @@ import { CustomTooltip } from './renderer/tooltip-renderer/custom-tooltip-render
6
6
  import { DropdownRenderer } from './renderer/dropdown-renderer/drop-down-renderer';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "./grid-library.service";
9
- import * as i2 from "@angular/common";
9
+ import * as i2 from "./formatters/column-value-formatter";
10
10
  import * as i3 from "ag-grid-angular";
11
11
  export class GridLibraryComponent {
12
- constructor(gridService, datePipe) {
12
+ constructor(gridService, formatterService) {
13
13
  this.gridService = gridService;
14
- this.datePipe = datePipe;
14
+ this.formatterService = formatterService;
15
15
  this.pageSize = 20;
16
16
  this.rowSelection = 'multiple';
17
17
  this.enableServerSidePaging = false;
@@ -23,6 +23,9 @@ export class GridLibraryComponent {
23
23
  this.firstDataRendered = new EventEmitter();
24
24
  this.filterChanged = new EventEmitter();
25
25
  this.selectionChanged = new EventEmitter();
26
+ //paramters
27
+ this.rowDataHidden = [];
28
+ this.exportColumnsList = [];
26
29
  this.tooltipShowDelay = 0;
27
30
  this.tooltipHideDelay = 2000;
28
31
  this.rowModelType = 'clientSide';
@@ -39,6 +42,34 @@ export class GridLibraryComponent {
39
42
  var data = params.data;
40
43
  return data.id ?? 0;
41
44
  };
45
+ // Custom right click Context Menu to support custom excel exports
46
+ this.getContextMenuItems = (params) => {
47
+ let res = [
48
+ 'cut',
49
+ 'copy',
50
+ 'copyWithHeaders',
51
+ 'copyWithGroupHeaders',
52
+ 'paste',
53
+ {
54
+ name: 'Export',
55
+ subMenu: [
56
+ {
57
+ name: 'CSV Export',
58
+ action: () => {
59
+ this.exportFile('csv');
60
+ },
61
+ },
62
+ {
63
+ name: 'Excel Export',
64
+ action: () => {
65
+ this.exportFile('xlsx');
66
+ },
67
+ },
68
+ ],
69
+ },
70
+ ];
71
+ return res;
72
+ };
42
73
  }
43
74
  onSortChangedEvent() {
44
75
  this.gridColumnState = this.agGrid.columnApi.getColumnState();
@@ -118,7 +149,7 @@ export class GridLibraryComponent {
118
149
  sortable: true,
119
150
  tooltipField: res.field,
120
151
  floatingFilter: this.floatingFilter,
121
- valueFormatter: this.colValueFormatter.bind(this),
152
+ valueFormatter: (params) => this.formatterService.colValueFormatter(params, res.columnType),
122
153
  filterable: res.filterable,
123
154
  filter: res.columnType == 'string'
124
155
  ? 'agTextColumnFilter'
@@ -176,6 +207,7 @@ export class GridLibraryComponent {
176
207
  };
177
208
  }
178
209
  });
210
+ this.exportColumnsList = response.list;
179
211
  this.columnDefs = coldef;
180
212
  this.agGrid.gridOptions?.api?.setColumnDefs(coldef);
181
213
  this.getGridState();
@@ -271,18 +303,6 @@ export class GridLibraryComponent {
271
303
  console.log('btn click=>', e);
272
304
  this.btnClickHandler.emit(e.rowData);
273
305
  }
274
- onSelectionChanged(e) {
275
- console.log('Selection Change click=>', e);
276
- this.selectionChanged.emit(e);
277
- }
278
- onFilterChanged(e) {
279
- console.log('Filter change click=>', e);
280
- this.filterChanged.emit(e);
281
- }
282
- onFirstDataRendered(e) {
283
- console.log('First data rendered click=>', e);
284
- this.firstDataRendered.emit(e);
285
- }
286
306
  onSaveGridColumnState(event) {
287
307
  let columnState = this.agGrid.columnApi?.getColumnState();
288
308
  let columnData = {
@@ -300,21 +320,79 @@ export class GridLibraryComponent {
300
320
  });
301
321
  }
302
322
  }
303
- colValueFormatter(params) {
304
- if (isNaN(+params.value)) {
305
- var dateWrapper = new Date(params.value);
306
- let isValidDate = !isNaN(dateWrapper.getDate());
307
- if (isValidDate) {
308
- return this.datePipe.transform(params.value, 'MM-dd-yyyy');
323
+ //custom export method
324
+ exportFile(type) {
325
+ this.getDataForExcelExport(type);
326
+ }
327
+ //Generate only those columns for export which are visible and are not of other types that are not required for export
328
+ generateColumnsForExcel() {
329
+ let columnsToBeDisplayedForExcel = [];
330
+ this.exportColumnsList.forEach((column) => {
331
+ if (column.visible == true &&
332
+ column.columnType != 'checkbox' &&
333
+ column.columnType != 'dropdown' &&
334
+ column.columnType != '') {
335
+ columnsToBeDisplayedForExcel.push(column.field);
336
+ }
337
+ });
338
+ return columnsToBeDisplayedForExcel;
339
+ }
340
+ //Get data from server without paging so that whole data can be exported to excel
341
+ // and also check for server side and client side rendering of data for export.
342
+ getDataForExcelExport(type) {
343
+ this.agGrid.api.showLoadingOverlay();
344
+ if (this.enableServerSidePaging) {
345
+ this.gridService
346
+ .getDataForExport(this.serverDataUrl)
347
+ .subscribe((response) => {
348
+ this.agGrid.api.hideOverlay();
349
+ if (response && response.value.length > 0) {
350
+ this.excelAPI.setRowData(response.value);
351
+ this.excelAPI.sizeColumnsToFit();
352
+ if (type == 'csv') {
353
+ this.excelAPI.exportDataAsCsv({
354
+ columnKeys: this.generateColumnsForExcel(),
355
+ });
356
+ }
357
+ else {
358
+ this.excelAPI.exportDataAsExcel({
359
+ columnKeys: this.generateColumnsForExcel(),
360
+ });
361
+ }
362
+ }
363
+ else {
364
+ console.log('Error while fetching data for excel/csv export');
365
+ }
366
+ });
367
+ }
368
+ else {
369
+ this.agGrid.api.hideOverlay();
370
+ if (type == 'csv') {
371
+ this.agGrid.api.exportDataAsCsv({
372
+ columnKeys: this.generateColumnsForExcel(),
373
+ });
309
374
  }
310
375
  else {
311
- return params.value;
376
+ this.agGrid.api.exportDataAsExcel({
377
+ columnKeys: this.generateColumnsForExcel(),
378
+ });
312
379
  }
313
380
  }
314
- return params.value;
381
+ }
382
+ onSelectionChanged(e) {
383
+ this.selectionChanged.emit(e);
384
+ }
385
+ onFilterChanged(e) {
386
+ this.filterChanged.emit(e);
387
+ }
388
+ onFirstDataRendered(e) {
389
+ this.firstDataRendered.emit(e);
390
+ }
391
+ onGridReadyExcel(params) {
392
+ this.excelAPI = params.api;
315
393
  }
316
394
  }
317
- GridLibraryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GridLibraryComponent, deps: [{ token: i1.GridLibraryService }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
395
+ GridLibraryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GridLibraryComponent, deps: [{ token: i1.GridLibraryService }, { token: i2.ColumnValueFormatter }], target: i0.ɵɵFactoryTarget.Component });
318
396
  GridLibraryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: GridLibraryComponent, selector: "lib-basesite-shared-grid-lib", inputs: { columnDefs: "columnDefs", rowData: "rowData", pageSize: "pageSize", rowSelection: "rowSelection", gridId: "gridId", loggedInUser: "loggedInUser", enableServerSidePaging: "enableServerSidePaging", serverDataUrl: "serverDataUrl", environment: "environment", cacheBlockSize: "cacheBlockSize", rowMultiSelectWithClick: "rowMultiSelectWithClick", floatingFilter: "floatingFilter" }, outputs: { btnClickHandler: "btnClickHandler", firstDataRendered: "firstDataRendered", filterChanged: "filterChanged", selectionChanged: "selectionChanged" }, viewQueries: [{ propertyName: "agGrid", first: true, predicate: AgGridAngular, descendants: true }], ngImport: i0, template: `
319
397
  <ag-grid-angular
320
398
  style="width: 100%;height:98.2vh"
@@ -341,11 +419,26 @@ GridLibraryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
341
419
  (columnMoved)="onSaveGridColumnState($event)"
342
420
  (sortChanged)="onSortChangedEvent()"
343
421
  [rowMultiSelectWithClick]="rowMultiSelectWithClick"
422
+ [getContextMenuItems]="getContextMenuItems"
344
423
  (selectionChanged)="onSelectionChanged($event)"
345
424
  (filterChanged)="onFilterChanged($event)"
346
425
  (firstDataRendered)="onFirstDataRendered($event)"
347
426
  >
348
427
  </ag-grid-angular>
428
+ <ag-grid-angular
429
+ #agGridHidden
430
+ style="height:100vh; width:100%;display:none"
431
+ class="ag-theme-balham"
432
+ [rowData]="rowDataHidden"
433
+ [columnDefs]="columnDefs"
434
+ [defaultColDef]="defaultColDef"
435
+ [animateRows]="false"
436
+ [rowSelection]="'multiple'"
437
+ (gridReady)="onGridReadyExcel($event)"
438
+ [suppressScrollOnNewData]="true"
439
+ [cacheQuickFilter]="false"
440
+ >
441
+ </ag-grid-angular>
349
442
  `, isInline: true, dependencies: [{ kind: "component", type: i3.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "suppressServerSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }] });
350
443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GridLibraryComponent, decorators: [{
351
444
  type: Component,
@@ -375,13 +468,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
375
468
  (columnMoved)="onSaveGridColumnState($event)"
376
469
  (sortChanged)="onSortChangedEvent()"
377
470
  [rowMultiSelectWithClick]="rowMultiSelectWithClick"
471
+ [getContextMenuItems]="getContextMenuItems"
378
472
  (selectionChanged)="onSelectionChanged($event)"
379
473
  (filterChanged)="onFilterChanged($event)"
380
474
  (firstDataRendered)="onFirstDataRendered($event)"
381
475
  >
382
476
  </ag-grid-angular>
477
+ <ag-grid-angular
478
+ #agGridHidden
479
+ style="height:100vh; width:100%;display:none"
480
+ class="ag-theme-balham"
481
+ [rowData]="rowDataHidden"
482
+ [columnDefs]="columnDefs"
483
+ [defaultColDef]="defaultColDef"
484
+ [animateRows]="false"
485
+ [rowSelection]="'multiple'"
486
+ (gridReady)="onGridReadyExcel($event)"
487
+ [suppressScrollOnNewData]="true"
488
+ [cacheQuickFilter]="false"
489
+ >
490
+ </ag-grid-angular>
383
491
  ` }]
384
- }], ctorParameters: function () { return [{ type: i1.GridLibraryService }, { type: i2.DatePipe }]; }, propDecorators: { columnDefs: [{
492
+ }], ctorParameters: function () { return [{ type: i1.GridLibraryService }, { type: i2.ColumnValueFormatter }]; }, propDecorators: { columnDefs: [{
385
493
  type: Input
386
494
  }], rowData: [{
387
495
  type: Input
@@ -417,4 +525,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
417
525
  type: ViewChild,
418
526
  args: [AgGridAngular]
419
527
  }] } });
420
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYi9zcmMvbGliL2dyaWQtbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBWWhELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7O0FBc0NuRixNQUFNLE9BQU8sb0JBQW9CO0lBOEIvQixZQUNVLFdBQStCLEVBQy9CLFFBQWtCO1FBRGxCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBNUJuQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGlCQUFZLEdBQVEsVUFBVSxDQUFDO1FBRy9CLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUd4QyxtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUMzQiw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFDekMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDekMsZ0JBQWdCO1FBQ04sb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3hDLHFCQUFnQixHQUFHLElB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dEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBR21CLE1BQU07c0JBQS9CLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBZ0dyaWRBbmd1bGFyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcclxuaW1wb3J0IHtcclxuICBDb2xEZWYsXHJcbiAgR2V0Um93SWRGdW5jLFxyXG4gIEdldFJvd0lkUGFyYW1zLFxyXG4gIEdyaWRSZWFkeUV2ZW50LFxyXG4gIFBhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJQYXJhbXMsXHJcbiAgUm93TW9kZWxUeXBlLFxyXG4gIFJvd05vZGUsXHJcbiAgVmFsdWVGb3JtYXR0ZXJQYXJhbXMsXHJcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBHcmlkTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuL2dyaWQtbGlicmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2RhdGFTZXJ2ZXJTaWRlUHJvdmlkZXIgfSBmcm9tICcuL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBCdXR0b25SZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXIvYnV0dG9uLXJlbmRlcmVyL2J1dHRvbi1yZW5kZXJlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21Ub29sdGlwIH0gZnJvbSAnLi9yZW5kZXJlci90b29sdGlwLXJlbmRlcmVyL2N1c3RvbS10b29sdGlwLXJlbmRlcmVyJztcclxuaW1wb3J0IHsgRHJvcGRvd25SZW5kZXJlciB9IGZyb20gJy4vcmVuZGVyZXIvZHJvcGRvd24tcmVuZGVyZXIvZHJvcC1kb3duLXJlbmRlcmVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxhZy1ncmlkLWFuZ3VsYXJcclxuICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTtoZWlnaHQ6OTguMnZoXCJcclxuICAgICAgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW0gc2hhcmVkLWdyaWQtbGliXCJcclxuICAgICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiXHJcbiAgICAgIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIlxyXG4gICAgICBbcm93RGF0YV09XCJyb3dEYXRhXCJcclxuICAgICAgW3Jvd1NlbGVjdGlvbl09XCJyb3dTZWxlY3Rpb25cIlxyXG4gICAgICBbYW5pbWF0ZVJvd3NdPVwidHJ1ZVwiXHJcbiAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiXHJcbiAgICAgIFtwYWdpbmF0aW9uXT1cInRydWVcIlxyXG4gICAgICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cImdyaWRQYWdlU2l6ZVwiXHJcbiAgICAgIFtwYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyXT1cInBhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJcIlxyXG4gICAgICAobW9kZWxVcGRhdGVkKT1cIm9uTW9kZWxVcGRhdGVkKClcIlxyXG4gICAgICBbdG9vbHRpcFNob3dEZWxheV09XCJ0b29sdGlwU2hvd0RlbGF5XCJcclxuICAgICAgW3Rvb2x0aXBIaWRlRGVsYXldPVwidG9vbHRpcEhpZGVEZWxheVwiXHJcbiAgICAgIFtyb3dNb2RlbFR5cGVdPVwicm93TW9kZWxUeXBlXCJcclxuICAgICAgW2NhY2hlQmxvY2tTaXplXT1cImNhY2hlQmxvY2tTaXplXCJcclxuICAgICAgW21heENvbmN1cnJlbnREYXRhc291cmNlUmVxdWVzdHNdPVwiMVwiXHJcbiAgICAgIFtibG9ja0xvYWREZWJvdW5jZU1pbGxpc109XCIxMDBcIlxyXG4gICAgICAoY29sdW1uVmlzaWJsZSk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChjb2x1bW5QaW5uZWQpPVwib25TYXZlR3JpZENvbHVtblN0YXRlKCRldmVudClcIlxyXG4gICAgICAoY29sdW1uUmVzaXplZCk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChjb2x1bW5Nb3ZlZCk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkRXZlbnQoKVwiXHJcbiAgICAgIFtyb3dNdWx0aVNlbGVjdFdpdGhDbGlja109XCJyb3dNdWx0aVNlbGVjdFdpdGhDbGlja1wiXHJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgKGZpbHRlckNoYW5nZWQpPVwib25GaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAoZmlyc3REYXRhUmVuZGVyZWQpPVwib25GaXJzdERhdGFSZW5kZXJlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyaWRMaWJyYXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL2lucHV0IHBhcmFtc1xyXG4gIEBJbnB1dCgpIGNvbHVtbkRlZnM6IGFueTtcclxuICBASW5wdXQoKSByb3dEYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDIwO1xyXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGlvbjogYW55ID0gJ211bHRpcGxlJztcclxuICBASW5wdXQoKSBncmlkSWQ6IGFueTtcclxuICBASW5wdXQoKSBsb2dnZWRJblVzZXI6IGFueTtcclxuICBASW5wdXQoKSBlbmFibGVTZXJ2ZXJTaWRlUGFnaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VydmVyRGF0YVVybCE6IHN0cmluZztcclxuICBASW5wdXQoKSBlbnZpcm9ubWVudCE6IHN0cmluZztcclxuICBASW5wdXQoKSBjYWNoZUJsb2NrU2l6ZTogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKSByb3dNdWx0aVNlbGVjdFdpdGhDbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZsb2F0aW5nRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy9ldmVudCBlbWl0dGVyc1xyXG4gIEBPdXRwdXQoKSBidG5DbGlja0hhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZmlyc3REYXRhUmVuZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8vdmlld0NoaWxkc1xyXG4gIEBWaWV3Q2hpbGQoQWdHcmlkQW5ndWxhcikgYWdHcmlkITogQWdHcmlkQW5ndWxhcjtcclxuXHJcbiAgLy9wYXJhbXRlcnNcclxuICBncmlkQ29sdW1uU3RhdGU6IGFueTtcclxuICBwdWJsaWMgdG9vbHRpcFNob3dEZWxheSA9IDA7XHJcbiAgcHVibGljIHRvb2x0aXBIaWRlRGVsYXkgPSAyMDAwO1xyXG4gIHB1YmxpYyByb3dNb2RlbFR5cGU6IFJvd01vZGVsVHlwZSA9ICdjbGllbnRTaWRlJztcclxuICBwdWJsaWMgZ3JpZFBhZ2VTaXplOiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZ3JpZFNlcnZpY2U6IEdyaWRMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlXHJcbiAgKSB7fVxyXG5cclxuICBvblNvcnRDaGFuZ2VkRXZlbnQoKSB7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5TdGF0ZSA9IHRoaXMuYWdHcmlkLmNvbHVtbkFwaS5nZXRDb2x1bW5TdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgZmlsdGVyOiB0cnVlLFxyXG4gICAgdG9vbHRpcENvbXBvbmVudDogQ3VzdG9tVG9vbHRpcCxcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ3JpZFBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMuY2FjaGVCbG9ja1NpemUgPSB0aGlzLmNhY2hlQmxvY2tTaXplID0gMFxyXG4gICAgICA/IHRoaXMucGFnZVNpemVcclxuICAgICAgOiB0aGlzLmNhY2hlQmxvY2tTaXplO1xyXG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRCYXNlVXJsKHRoaXMuZW52aXJvbm1lbnQpO1xyXG4gICAgdGhpcy5nZXRHcmlkU3RhdGUoKTtcclxuICAgIHRoaXMuZ2V0Q29sRGVmKCk7XHJcbiAgICBpZiAodGhpcy5lbmFibGVTZXJ2ZXJTaWRlUGFnaW5nID09IHRydWUpIHtcclxuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnc2VydmVyU2lkZSc7XHJcbiAgICAgIHRoaXMucm93RGF0YSA9ICcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnY2xpZW50U2lkZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFnaW5hdGlvbk51bWJlckZvcm1hdHRlcjogKFxyXG4gICAgcGFyYW1zOiBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zXHJcbiAgKSA9PiBzdHJpbmcgPSAocGFyYW1zOiBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zKSA9PiB7XHJcbiAgICByZXR1cm4gJ1snICsgcGFyYW1zLnZhbHVlLnRvTG9jYWxlU3RyaW5nKCkgKyAnXSc7XHJcbiAgfTtcclxuXHJcbiAgb25Nb2RlbFVwZGF0ZWQoKSB7XHJcbiAgICB0aGlzLnNldEdyaWRTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sRGVmKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZElkICYmIHRoaXMubG9nZ2VkSW5Vc2VyKSB7XHJcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZ2V0Q29sRGVmKHRoaXMuZ3JpZElkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDEpIHtcclxuICAgICAgICAgIGxldCBjb2xkZWY6IENvbERlZltdID0gcmVzcG9uc2UubGlzdC5tYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuaXNCdXR0b24gPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5jb2x1bW5UeXBlID09PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBmaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiByZXMudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgaGVhZGVyQ2hlY2tib3hTZWxlY3Rpb246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgY2hlY2tib3hTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHNob3dEaXNhYmxlZENoZWNrYm94ZXM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHN1cHByZXNzRmlsdGVyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICBzdXBwcmVzc1NvcnRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHN1cHByZXNzTWVudTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgd2lkdGg6IDU1LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5jb2x1bW5UeXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBmaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiByZXMudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBzdXBwcmVzc0ZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICBzdXBwcmVzc01lbnU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IERyb3Bkb3duUmVuZGVyZXIsXHJcbiAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMub25CdG5DbGljay5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHJlcy50b29sdGlwLFxyXG4gICAgICAgICAgICAgICAgICAgIGRyb3BEb3duRGF0YTogcmVzLmRyb3BEb3duRGF0YSxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgb25DZWxsQ2xpY2tlZDogKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGUubm9kZS5zZXRTZWxlY3RlZChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiA0MCxcclxuICAgICAgICAgICAgICAgICAgcGlubmVkOiByZXMucGluUG9zaXRpb24sXHJcbiAgICAgICAgICAgICAgICAgIGxvY2tQaW5uZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBmaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiByZXMudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgaGlkZTogIXJlcy52aXNpYmxlLFxyXG4gICAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgIGZsb2F0aW5nRmlsdGVyOiB0aGlzLmZsb2F0aW5nRmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZUZvcm1hdHRlcjogdGhpcy5jb2xWYWx1ZUZvcm1hdHRlci5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJhYmxlOiByZXMuZmlsdGVyYWJsZSxcclxuICAgICAgICAgICAgICAgICAgZmlsdGVyOlxyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5jb2x1bW5UeXBlID09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICdhZ1RleHRDb2x1bW5GaWx0ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IHJlcy5jb2x1bW5UeXBlID09ICdudW1iZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICdhZ051bWJlckNvbHVtbkZpbHRlcidcclxuICAgICAgICAgICAgICAgICAgICAgIDogJ2FnRGF0ZUNvbHVtbkZpbHRlcicsXHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhcmF0b3I6IChcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQ6IGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgIGNlbGxWYWx1ZTogYW55XHJcbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlQXNTdHJpbmcgPSBjZWxsVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGVBc1N0cmluZyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5jb2x1bW5UeXBlID09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsRGF0ZSA9IG5ldyBEYXRlKGRhdGVBc1N0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsRGF0ZSA8IGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2VsbERhdGUgPiBmaWx0ZXJMb2NhbERhdGVBdE1pZG5pZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IHJlcy50aXRsZSxcclxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGhpZGU6ICFyZXMudmlzaWJsZSxcclxuICAgICAgICAgICAgICAgIHN1cHByZXNzRmlsdGVyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IEJ1dHRvblJlbmRlcmVyQ29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMub25CdG5DbGljay5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgICBsYWJlbDogcmVzLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICBpY29uOiByZXMuaWNvbixcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uTmFtZTogcmVzLmJ1dHRvbk5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHJlcy50b29sdGlwLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHZhbHVlR2V0dGVyOiAocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcy50b29sdGlwIHx8IHJlcy50aXRsZTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogMjAsXHJcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICdhY3Rpb24tYnV0dG9uJyxcclxuICAgICAgICAgICAgICAgIHBpbm5lZDogcmVzLnBpblBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgbG9ja1Bpbm5lZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiByZXMubGFiZWwgPyAxMDAgOiA0MCxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29sdW1uRGVmcyA9IGNvbGRlZjtcclxuICAgICAgICAgIHRoaXMuYWdHcmlkLmdyaWRPcHRpb25zPy5hcGk/LnNldENvbHVtbkRlZnMoY29sZGVmKTtcclxuICAgICAgICAgIHRoaXMuZ2V0R3JpZFN0YXRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdDb2xEZWYgUmVhZCBFcnJvcj0+JywgcmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdQbGVhc2UgcGFzcyB2YWxpZCBHcmlkSWQgYW5kIGxvZ2dlZEluIHVzZXIgSWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEV4dGVybmFsRmlsdGVycyhvcHRpb25zOiBhbnkpIHtcclxuICAgIHZhciBzZXJ2ZXJVcmwgPSAnJztcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZXJ2ZXJEYXRhVXJsLmluZGV4T2YoJ2ZpbHRlcicpID49IDAgJiZcclxuICAgICAgb3B0aW9ucy5pbmRleE9mKCdmaWx0ZXInKSA+PSAwXHJcbiAgICApIHtcclxuICAgICAgbGV0IHNsdWcgPSB0aGlzLnNlcnZlckRhdGFVcmwuc3BsaXQoJz8kZmlsdGVyPScpO1xyXG4gICAgICBpZiAoc2x1ZyAmJiBzbHVnLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyArICcgYW5kICcgKyBzbHVnWzFdO1xyXG4gICAgICAgIHNlcnZlclVybCA9IHNsdWdbMF07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZXJ2ZXJEYXRhVXJsLmluZGV4T2YoJz8nKSA+PSAwKSB7XHJcbiAgICAgIHNlcnZlclVybCA9IHRoaXMuc2VydmVyRGF0YVVybDtcclxuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMucmVwbGFjZSgnPycsICcmJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7c2VydmVyVXJsfSR7b3B0aW9uc31gO1xyXG4gIH1cclxuXHJcbiAgb25HcmlkUmVhZHkocGFyYW1zOiBHcmlkUmVhZHlFdmVudCkge1xyXG4gICAgdGhpcy5ncmlkUGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlU2VydmVyU2lkZVBhZ2luZyA9PSB0cnVlKSB7XHJcbiAgICAgIHBhcmFtcy5hcGkuc2V0U2VydmVyU2lkZURhdGFzb3VyY2UoXHJcbiAgICAgICAgbmV3IE9kYXRhU2VydmVyU2lkZVByb3ZpZGVyKHtcclxuICAgICAgICAgIGlzQ2FzZVNlbnNpdGl2ZVN0cmluZ0ZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgICBjYWxsQXBpOiAob3B0aW9ucykgPT5cclxuICAgICAgICAgICAgZmV0Y2goYCR7dGhpcy5zZXRFeHRlcm5hbEZpbHRlcnMob3B0aW9ucyl9YCwge1xyXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICdDb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuanNvbigpKSxcclxuICAgICAgICAgIGFmdGVyTG9hZERhdGE6IChvcHRpb25zLCByb3dEYXRhLCB0b3RhbENvdW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcm93RGF0YSB8fCByb3dEYXRhLmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZ0dyaWQuYXBpLnNob3dOb1Jvd3NPdmVybGF5KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZ0dyaWQuYXBpLmhpZGVPdmVybGF5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEdyaWRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmdyaWRDb2x1bW5TdGF0ZSkge1xyXG4gICAgICB0aGlzLmFnR3JpZC5jb2x1bW5BcGkuYXBwbHlDb2x1bW5TdGF0ZSh7XHJcbiAgICAgICAgc3RhdGU6IHRoaXMuZ3JpZENvbHVtblN0YXRlLFxyXG4gICAgICAgIGFwcGx5T3JkZXI6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGNvbHVtbnMgPSB0aGlzLmFnR3JpZC5jb2x1bW5BcGkuZ2V0Q29sdW1ucygpO1xyXG4gICAgICBpZiAoY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPiAxNSkge1xyXG4gICAgICAgICAgY29uc3QgYWxsQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5hZ0dyaWQuY29sdW1uQXBpIS5nZXRDb2x1bW5zKCkhLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgICBhbGxDb2x1bW5JZHMucHVzaChjb2x1bW4uZ2V0SWQoKSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuYWdHcmlkLmNvbHVtbkFwaSEuYXV0b1NpemVDb2x1bW5zKGFsbENvbHVtbklkcywgZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFnR3JpZC5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0R3JpZFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZElkICYmIHRoaXMubG9nZ2VkSW5Vc2VyKSB7XHJcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2VcclxuICAgICAgICAuZ2V0R3JpZFN0YXRlKHRoaXMuZ3JpZElkLCB0aGlzLmxvZ2dlZEluVXNlcilcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHJlc3BvbnNlLnN0YXR1cyA9PSAxICYmXHJcbiAgICAgICAgICAgIHJlc3BvbnNlLm9iamVjdCAmJlxyXG4gICAgICAgICAgICByZXNwb25zZS5vYmplY3QuZ3JpZENvbmZpZ1xyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZENvbHVtblN0YXRlID0gSlNPTi5wYXJzZShyZXNwb25zZS5vYmplY3QuZ3JpZENvbmZpZyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0R3JpZFN0YXRlKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgbG9hZGluZyBncmlkIHN0YXRlJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJ0bkNsaWNrKGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2J0biBjbGljaz0+JywgZSk7XHJcbiAgICB0aGlzLmJ0bkNsaWNrSGFuZGxlci5lbWl0KGUucm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZWQoZTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZygnU2VsZWN0aW9uIENoYW5nZSBjbGljaz0+JywgZSk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChlKTtcclxuICB9XHJcbiAgb25GaWx0ZXJDaGFuZ2VkKGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ0ZpbHRlciBjaGFuZ2UgY2xpY2s9PicsIGUpO1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VkLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBvbkZpcnN0RGF0YVJlbmRlcmVkKGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ0ZpcnN0IGRhdGEgcmVuZGVyZWQgY2xpY2s9PicsIGUpO1xyXG4gICAgdGhpcy5maXJzdERhdGFSZW5kZXJlZC5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlR3JpZENvbHVtblN0YXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCBjb2x1bW5TdGF0ZSA9IHRoaXMuYWdHcmlkLmNvbHVtbkFwaT8uZ2V0Q29sdW1uU3RhdGUoKTtcclxuICAgIGxldCBjb2x1bW5EYXRhID0ge1xyXG4gICAgICBncmlkQ29uZmlnOiBKU09OLnN0cmluZ2lmeShjb2x1bW5TdGF0ZSksXHJcbiAgICAgIHVpR3JpZElkOiB0aGlzLmdyaWRJZCxcclxuICAgICAgdXNlcklkOiB0aGlzLmxvZ2dlZEluVXNlcixcclxuICAgIH07XHJcbiAgICBpZiAoZXZlbnQuZmluaXNoZWQgPT0gdHJ1ZSB8fCBldmVudC50eXBlID09PSAnY29sdW1uUGlubmVkJykge1xyXG4gICAgICB0aGlzLmdyaWRDb2x1bW5TdGF0ZSA9IGNvbHVtblN0YXRlO1xyXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNhdmVDb2x1bW5Db25maWcoY29sdW1uRGF0YSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0R3JpZFN0YXRlKCk7XHJcbiAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT0gMCkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIHdoaWxlIHNhdmluZyBjb2x1bW4gY29uZmlndXJhdGlvbjonLCByZXMubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJvd0J5SWQ6IEdldFJvd0lkRnVuYyA9IChwYXJhbXM6IEdldFJvd0lkUGFyYW1zKSA9PiB7XHJcbiAgICB2YXIgZGF0YSA9IHBhcmFtcy5kYXRhO1xyXG4gICAgcmV0dXJuIGRhdGEuaWQgPz8gMDtcclxuICB9O1xyXG5cclxuICBjb2xWYWx1ZUZvcm1hdHRlcihwYXJhbXM6IFZhbHVlRm9ybWF0dGVyUGFyYW1zKSB7XHJcbiAgICBpZiAoaXNOYU4oK3BhcmFtcy52YWx1ZSkpIHtcclxuICAgICAgdmFyIGRhdGVXcmFwcGVyID0gbmV3IERhdGUocGFyYW1zLnZhbHVlKTtcclxuICAgICAgbGV0IGlzVmFsaWREYXRlID0gIWlzTmFOKGRhdGVXcmFwcGVyLmdldERhdGUoKSk7XHJcbiAgICAgIGlmIChpc1ZhbGlkRGF0ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShwYXJhbXMudmFsdWUsICdNTS1kZC15eXl5Jyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBhcmFtcy52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcmFtcy52YWx1ZTtcclxuICB9XHJcbn1cclxuIl19
528
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYi9zcmMvbGliL2dyaWQtbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBZWhELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7O0FBc0RuRixNQUFNLE9BQU8sb0JBQW9CO0lBaUMvQixZQUNVLFdBQStCLEVBQy9CLGdCQUFzQztRQUR0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFzQjtRQS9CdkMsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixpQkFBWSxHQUFRLFVBQVUsQ0FBQztRQUcvQiwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFHeEMsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0IsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBQ3pDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ3pDLGdCQUFnQjtRQUNOLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzVDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN4QyxxQkFBZ0Is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QUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBZ0dyaWRBbmd1bGFyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcclxuaW1wb3J0IHtcclxuICBDb2xEZWYsXHJcbiAgR2V0Q29udGV4dE1lbnVJdGVtc1BhcmFtcyxcclxuICBHZXRSb3dJZEZ1bmMsXHJcbiAgR2V0Um93SWRQYXJhbXMsXHJcbiAgR3JpZEFwaSxcclxuICBHcmlkUmVhZHlFdmVudCxcclxuICBNZW51SXRlbURlZixcclxuICBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zLFxyXG4gIFJvd01vZGVsVHlwZSxcclxuICBSb3dOb2RlLFxyXG4gIFZhbHVlRm9ybWF0dGVyUGFyYW1zLFxyXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcclxuaW1wb3J0IHsgR3JpZExpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi9ncmlkLWxpYnJhcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IE9kYXRhU2VydmVyU2lkZVByb3ZpZGVyIH0gZnJvbSAnLi9oZWxwZXJzJztcclxuaW1wb3J0IHsgQnV0dG9uUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL3JlbmRlcmVyL2J1dHRvbi1yZW5kZXJlci9idXR0b24tcmVuZGVyZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tVG9vbHRpcCB9IGZyb20gJy4vcmVuZGVyZXIvdG9vbHRpcC1yZW5kZXJlci9jdXN0b20tdG9vbHRpcC1yZW5kZXJlcic7XHJcbmltcG9ydCB7IERyb3Bkb3duUmVuZGVyZXIgfSBmcm9tICcuL3JlbmRlcmVyL2Ryb3Bkb3duLXJlbmRlcmVyL2Ryb3AtZG93bi1yZW5kZXJlcic7XHJcbmltcG9ydCB7IENvbHVtblZhbHVlRm9ybWF0dGVyIH0gZnJvbSAnLi9mb3JtYXR0ZXJzL2NvbHVtbi12YWx1ZS1mb3JtYXR0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYmFzZXNpdGUtc2hhcmVkLWdyaWQtbGliJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGFnLWdyaWQtYW5ndWxhclxyXG4gICAgICBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDo5OC4ydmhcIlxyXG4gICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbSBzaGFyZWQtZ3JpZC1saWJcIlxyXG4gICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcclxuICAgICAgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiXHJcbiAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFcIlxyXG4gICAgICBbcm93U2VsZWN0aW9uXT1cInJvd1NlbGVjdGlvblwiXHJcbiAgICAgIFthbmltYXRlUm93c109XCJ0cnVlXCJcclxuICAgICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeSgkZXZlbnQpXCJcclxuICAgICAgW3BhZ2luYXRpb25dPVwidHJ1ZVwiXHJcbiAgICAgIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwiZ3JpZFBhZ2VTaXplXCJcclxuICAgICAgW3BhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJdPVwicGFnaW5hdGlvbk51bWJlckZvcm1hdHRlclwiXHJcbiAgICAgIChtb2RlbFVwZGF0ZWQpPVwib25Nb2RlbFVwZGF0ZWQoKVwiXHJcbiAgICAgIFt0b29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIlxyXG4gICAgICBbdG9vbHRpcEhpZGVEZWxheV09XCJ0b29sdGlwSGlkZURlbGF5XCJcclxuICAgICAgW3Jvd01vZGVsVHlwZV09XCJyb3dNb2RlbFR5cGVcIlxyXG4gICAgICBbY2FjaGVCbG9ja1NpemVdPVwiY2FjaGVCbG9ja1NpemVcIlxyXG4gICAgICBbbWF4Q29uY3VycmVudERhdGFzb3VyY2VSZXF1ZXN0c109XCIxXCJcclxuICAgICAgW2Jsb2NrTG9hZERlYm91bmNlTWlsbGlzXT1cIjEwMFwiXHJcbiAgICAgIChjb2x1bW5WaXNpYmxlKT1cIm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgKGNvbHVtblBpbm5lZCk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChjb2x1bW5SZXNpemVkKT1cIm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgKGNvbHVtbk1vdmVkKT1cIm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgKHNvcnRDaGFuZ2VkKT1cIm9uU29ydENoYW5nZWRFdmVudCgpXCJcclxuICAgICAgW3Jvd011bHRpU2VsZWN0V2l0aENsaWNrXT1cInJvd011bHRpU2VsZWN0V2l0aENsaWNrXCJcclxuICAgICAgW2dldENvbnRleHRNZW51SXRlbXNdPVwiZ2V0Q29udGV4dE1lbnVJdGVtc1wiXHJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgKGZpbHRlckNoYW5nZWQpPVwib25GaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAoZmlyc3REYXRhUmVuZGVyZWQpPVwib25GaXJzdERhdGFSZW5kZXJlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgPGFnLWdyaWQtYW5ndWxhclxyXG4gICAgICAjYWdHcmlkSGlkZGVuXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OjEwMHZoOyB3aWR0aDoxMDAlO2Rpc3BsYXk6bm9uZVwiXHJcbiAgICAgIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCJcclxuICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YUhpZGRlblwiXHJcbiAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIlxyXG4gICAgICBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcclxuICAgICAgW2FuaW1hdGVSb3dzXT1cImZhbHNlXCJcclxuICAgICAgW3Jvd1NlbGVjdGlvbl09XCInbXVsdGlwbGUnXCJcclxuICAgICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeUV4Y2VsKCRldmVudClcIlxyXG4gICAgICBbc3VwcHJlc3NTY3JvbGxPbk5ld0RhdGFdPVwidHJ1ZVwiXHJcbiAgICAgIFtjYWNoZVF1aWNrRmlsdGVyXT1cImZhbHNlXCJcclxuICAgID5cclxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyaWRMaWJyYXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL2lucHV0IHBhcmFtc1xyXG4gIEBJbnB1dCgpIGNvbHVtbkRlZnM6IGFueTtcclxuICBASW5wdXQoKSByb3dEYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDIwO1xyXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGlvbjogYW55ID0gJ211bHRpcGxlJztcclxuICBASW5wdXQoKSBncmlkSWQ6IGFueTtcclxuICBASW5wdXQoKSBsb2dnZWRJblVzZXI6IGFueTtcclxuICBASW5wdXQoKSBlbmFibGVTZXJ2ZXJTaWRlUGFnaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VydmVyRGF0YVVybCE6IHN0cmluZztcclxuICBASW5wdXQoKSBlbnZpcm9ubWVudCE6IHN0cmluZztcclxuICBASW5wdXQoKSBjYWNoZUJsb2NrU2l6ZTogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKSByb3dNdWx0aVNlbGVjdFdpdGhDbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZsb2F0aW5nRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy9ldmVudCBlbWl0dGVyc1xyXG4gIEBPdXRwdXQoKSBidG5DbGlja0hhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZmlyc3REYXRhUmVuZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8vdmlld0NoaWxkc1xyXG4gIEBWaWV3Q2hpbGQoQWdHcmlkQW5ndWxhcikgYWdHcmlkITogQWdHcmlkQW5ndWxhcjtcclxuXHJcbiAgLy9wYXJhbXRlcnNcclxuICByb3dEYXRhSGlkZGVuOiBhbnkgPSBbXTtcclxuICBncmlkQ29sdW1uU3RhdGU6IGFueTtcclxuICBleHBvcnRDb2x1bW5zTGlzdDogYW55ID0gW107XHJcbiAgcHVibGljIHRvb2x0aXBTaG93RGVsYXkgPSAwO1xyXG4gIHB1YmxpYyB0b29sdGlwSGlkZURlbGF5ID0gMjAwMDtcclxuICBwdWJsaWMgcm93TW9kZWxUeXBlOiBSb3dNb2RlbFR5cGUgPSAnY2xpZW50U2lkZSc7XHJcbiAgcHVibGljIGdyaWRQYWdlU2l6ZTogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIGV4Y2VsQVBJITogR3JpZEFwaTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZvcm1hdHRlclNlcnZpY2U6IENvbHVtblZhbHVlRm9ybWF0dGVyXHJcbiAgKSB7fVxyXG5cclxuICBvblNvcnRDaGFuZ2VkRXZlbnQoKSB7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5TdGF0ZSA9IHRoaXMuYWdHcmlkLmNvbHVtbkFwaS5nZXRDb2x1bW5TdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgZmlsdGVyOiB0cnVlLFxyXG4gICAgdG9vbHRpcENvbXBvbmVudDogQ3VzdG9tVG9vbHRpcCxcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ3JpZFBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMuY2FjaGVCbG9ja1NpemUgPSB0aGlzLmNhY2hlQmxvY2tTaXplID0gMFxyXG4gICAgICA/IHRoaXMucGFnZVNpemVcclxuICAgICAgOiB0aGlzLmNhY2hlQmxvY2tTaXplO1xyXG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRCYXNlVXJsKHRoaXMuZW52aXJvbm1lbnQpO1xyXG4gICAgdGhpcy5nZXRHcmlkU3RhdGUoKTtcclxuICAgIHRoaXMuZ2V0Q29sRGVmKCk7XHJcbiAgICBpZiAodGhpcy5lbmFibGVTZXJ2ZXJTaWRlUGFnaW5nID09IHRydWUpIHtcclxuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnc2VydmVyU2lkZSc7XHJcbiAgICAgIHRoaXMucm93RGF0YSA9ICcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnY2xpZW50U2lkZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFnaW5hdGlvbk51bWJlckZvcm1hdHRlcjogKFxyXG4gICAgcGFyYW1zOiBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zXHJcbiAgKSA9PiBzdHJpbmcgPSAocGFyYW1zOiBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zKSA9PiB7XHJcbiAgICByZXR1cm4gJ1snICsgcGFyYW1zLnZhbHVlLnRvTG9jYWxlU3RyaW5nKCkgKyAnXSc7XHJcbiAgfTtcclxuXHJcbiAgb25Nb2RlbFVwZGF0ZWQoKSB7XHJcbiAgICB0aGlzLnNldEdyaWRTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sRGVmKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZElkICYmIHRoaXMubG9nZ2VkSW5Vc2VyKSB7XHJcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZ2V0Q29sRGVmKHRoaXMuZ3JpZElkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDEpIHtcclxuICAgICAgICAgIGxldCBjb2xkZWY6IENvbERlZltdID0gcmVzcG9uc2UubGlzdC5tYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuaXNCdXR0b24gPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5jb2x1bW5UeXBlID09PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBmaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiByZXMudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgaGVhZGVyQ2hlY2tib3hTZWxlY3Rpb246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgY2hlY2tib3hTZWxlY3Rpb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHNob3dEaXNhYmxlZENoZWNrYm94ZXM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHN1cHByZXNzRmlsdGVyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICBzdXBwcmVzc1NvcnRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHN1cHByZXNzTWVudTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgd2lkdGg6IDU1LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5jb2x1bW5UeXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBmaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiByZXMudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBzdXBwcmVzc0ZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICBzdXBwcmVzc01lbnU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IERyb3Bkb3duUmVuZGVyZXIsXHJcbiAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMub25CdG5DbGljay5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHJlcy50b29sdGlwLFxyXG4gICAgICAgICAgICAgICAgICAgIGRyb3BEb3duRGF0YTogcmVzLmRyb3BEb3duRGF0YSxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgb25DZWxsQ2xpY2tlZDogKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGUubm9kZS5zZXRTZWxlY3RlZChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiA0MCxcclxuICAgICAgICAgICAgICAgICAgcGlubmVkOiByZXMucGluUG9zaXRpb24sXHJcbiAgICAgICAgICAgICAgICAgIGxvY2tQaW5uZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBmaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiByZXMudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgaGlkZTogIXJlcy52aXNpYmxlLFxyXG4gICAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgIGZsb2F0aW5nRmlsdGVyOiB0aGlzLmZsb2F0aW5nRmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZUZvcm1hdHRlcjogKHBhcmFtczogVmFsdWVGb3JtYXR0ZXJQYXJhbXMpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZXJTZXJ2aWNlLmNvbFZhbHVlRm9ybWF0dGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcmVzLmNvbHVtblR5cGVcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJhYmxlOiByZXMuZmlsdGVyYWJsZSxcclxuICAgICAgICAgICAgICAgICAgZmlsdGVyOlxyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5jb2x1bW5UeXBlID09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICdhZ1RleHRDb2x1bW5GaWx0ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IHJlcy5jb2x1bW5UeXBlID09ICdudW1iZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICdhZ051bWJlckNvbHVtbkZpbHRlcidcclxuICAgICAgICAgICAgICAgICAgICAgIDogJ2FnRGF0ZUNvbHVtbkZpbHRlcicsXHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBhcmF0b3I6IChcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQ6IGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgIGNlbGxWYWx1ZTogYW55XHJcbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlQXNTdHJpbmcgPSBjZWxsVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGVBc1N0cmluZyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5jb2x1bW5UeXBlID09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsRGF0ZSA9IG5ldyBEYXRlKGRhdGVBc1N0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsRGF0ZSA8IGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2VsbERhdGUgPiBmaWx0ZXJMb2NhbERhdGVBdE1pZG5pZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IHJlcy50aXRsZSxcclxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGhpZGU6ICFyZXMudmlzaWJsZSxcclxuICAgICAgICAgICAgICAgIHN1cHByZXNzRmlsdGVyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IEJ1dHRvblJlbmRlcmVyQ29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMub25CdG5DbGljay5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgICBsYWJlbDogcmVzLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICBpY29uOiByZXMuaWNvbixcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uTmFtZTogcmVzLmJ1dHRvbk5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IHJlcy50b29sdGlwLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHZhbHVlR2V0dGVyOiAocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcy50b29sdGlwIHx8IHJlcy50aXRsZTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogMjAsXHJcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICdhY3Rpb24tYnV0dG9uJyxcclxuICAgICAgICAgICAgICAgIHBpbm5lZDogcmVzLnBpblBvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgbG9ja1Bpbm5lZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiByZXMubGFiZWwgPyAxMDAgOiA0MCxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZXhwb3J0Q29sdW1uc0xpc3QgPSByZXNwb25zZS5saXN0O1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW5EZWZzID0gY29sZGVmO1xyXG4gICAgICAgICAgdGhpcy5hZ0dyaWQuZ3JpZE9wdGlvbnM/LmFwaT8uc2V0Q29sdW1uRGVmcyhjb2xkZWYpO1xyXG4gICAgICAgICAgdGhpcy5nZXRHcmlkU3RhdGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0NvbERlZiBSZWFkIEVycm9yPT4nLCByZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coJ1BsZWFzZSBwYXNzIHZhbGlkIEdyaWRJZCBhbmQgbG9nZ2VkSW4gdXNlciBJZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RXh0ZXJuYWxGaWx0ZXJzKG9wdGlvbnM6IGFueSkge1xyXG4gICAgdmFyIHNlcnZlclVybCA9ICcnO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlcnZlckRhdGFVcmwuaW5kZXhPZignZmlsdGVyJykgPj0gMCAmJlxyXG4gICAgICBvcHRpb25zLmluZGV4T2YoJ2ZpbHRlcicpID49IDBcclxuICAgICkge1xyXG4gICAgICBsZXQgc2x1ZyA9IHRoaXMuc2VydmVyRGF0YVVybC5zcGxpdCgnPyRmaWx0ZXI9Jyk7XHJcbiAgICAgIGlmIChzbHVnICYmIHNsdWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zICsgJyBhbmQgJyArIHNsdWdbMV07XHJcbiAgICAgICAgc2VydmVyVXJsID0gc2x1Z1swXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlcnZlckRhdGFVcmwuaW5kZXhPZignPycpID49IDApIHtcclxuICAgICAgc2VydmVyVXJsID0gdGhpcy5zZXJ2ZXJEYXRhVXJsO1xyXG4gICAgICBvcHRpb25zID0gb3B0aW9ucy5yZXBsYWNlKCc/JywgJyYnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHtzZXJ2ZXJVcmx9JHtvcHRpb25zfWA7XHJcbiAgfVxyXG5cclxuICBvbkdyaWRSZWFkeShwYXJhbXM6IEdyaWRSZWFkeUV2ZW50KSB7XHJcbiAgICB0aGlzLmdyaWRQYWdlU2l6ZSA9IHRoaXMucGFnZVNpemU7XHJcbiAgICBpZiAodGhpcy5lbmFibGVTZXJ2ZXJTaWRlUGFnaW5nID09IHRydWUpIHtcclxuICAgICAgcGFyYW1zLmFwaS5zZXRTZXJ2ZXJTaWRlRGF0YXNvdXJjZShcclxuICAgICAgICBuZXcgT2RhdGFTZXJ2ZXJTaWRlUHJvdmlkZXIoe1xyXG4gICAgICAgICAgaXNDYXNlU2Vuc2l0aXZlU3RyaW5nRmlsdGVyOiBmYWxzZSxcclxuICAgICAgICAgIGNhbGxBcGk6IChvcHRpb25zKSA9PlxyXG4gICAgICAgICAgICBmZXRjaChgJHt0aGlzLnNldEV4dGVybmFsRmlsdGVycyhvcHRpb25zKX1gLCB7XHJcbiAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpLFxyXG4gICAgICAgICAgYWZ0ZXJMb2FkRGF0YTogKG9wdGlvbnMsIHJvd0RhdGEsIHRvdGFsQ291bnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFyb3dEYXRhIHx8IHJvd0RhdGEubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmFnR3JpZC5hcGkuc2hvd05vUm93c092ZXJsYXkoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmFnR3JpZC5hcGkuaGlkZU92ZXJsYXkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0R3JpZFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZENvbHVtblN0YXRlKSB7XHJcbiAgICAgIHRoaXMuYWdHcmlkLmNvbHVtbkFwaS5hcHBseUNvbHVtblN0YXRlKHtcclxuICAgICAgICBzdGF0ZTogdGhpcy5ncmlkQ29sdW1uU3RhdGUsXHJcbiAgICAgICAgYXBwbHlPcmRlcjogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgY29sdW1ucyA9IHRoaXMuYWdHcmlkLmNvbHVtbkFwaS5nZXRDb2x1bW5zKCk7XHJcbiAgICAgIGlmIChjb2x1bW5zICYmIGNvbHVtbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA+IDE1KSB7XHJcbiAgICAgICAgICBjb25zdCBhbGxDb2x1bW5JZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICB0aGlzLmFnR3JpZC5jb2x1bW5BcGkhLmdldENvbHVtbnMoKSEuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICAgIGFsbENvbHVtbklkcy5wdXNoKGNvbHVtbi5nZXRJZCgpKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5hZ0dyaWQuY29sdW1uQXBpIS5hdXRvU2l6ZUNvbHVtbnMoYWxsQ29sdW1uSWRzLCBmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWdHcmlkLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRHcmlkU3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5ncmlkSWQgJiYgdGhpcy5sb2dnZWRJblVzZXIpIHtcclxuICAgICAgdGhpcy5ncmlkU2VydmljZVxyXG4gICAgICAgIC5nZXRHcmlkU3RhdGUodGhpcy5ncmlkSWQsIHRoaXMubG9nZ2VkSW5Vc2VyKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzID09IDEgJiZcclxuICAgICAgICAgICAgcmVzcG9uc2Uub2JqZWN0ICYmXHJcbiAgICAgICAgICAgIHJlc3BvbnNlLm9iamVjdC5ncmlkQ29uZmlnXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5ncmlkQ29sdW1uU3RhdGUgPSBKU09OLnBhcnNlKHJlc3BvbnNlLm9iamVjdC5ncmlkQ29uZmlnKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRHcmlkU3RhdGUoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciB3aGlsZSBsb2FkaW5nIGdyaWQgc3RhdGUnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQnRuQ2xpY2soZTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZygnYnRuIGNsaWNrPT4nLCBlKTtcclxuICAgIHRoaXMuYnRuQ2xpY2tIYW5kbGVyLmVtaXQoZS5yb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZUdyaWRDb2x1bW5TdGF0ZShldmVudDogYW55KSB7XHJcbiAgICBsZXQgY29sdW1uU3RhdGUgPSB0aGlzLmFnR3JpZC5jb2x1bW5BcGk/LmdldENvbHVtblN0YXRlKCk7XHJcbiAgICBsZXQgY29sdW1uRGF0YSA9IHtcclxuICAgICAgZ3JpZENvbmZpZzogSlNPTi5zdHJpbmdpZnkoY29sdW1uU3RhdGUpLFxyXG4gICAgICB1aUdyaWRJZDogdGhpcy5ncmlkSWQsXHJcbiAgICAgIHVzZXJJZDogdGhpcy5sb2dnZWRJblVzZXIsXHJcbiAgICB9O1xyXG4gICAgaWYgKGV2ZW50LmZpbmlzaGVkID09IHRydWUgfHwgZXZlbnQudHlwZSA9PT0gJ2NvbHVtblBpbm5lZCcpIHtcclxuICAgICAgdGhpcy5ncmlkQ29sdW1uU3RhdGUgPSBjb2x1bW5TdGF0ZTtcclxuICAgICAgdGhpcy5ncmlkU2VydmljZS5zYXZlQ29sdW1uQ29uZmlnKGNvbHVtbkRhdGEpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNldEdyaWRTdGF0ZSgpO1xyXG4gICAgICAgIGlmIChyZXMuc3RhdHVzID09IDApIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciB3aGlsZSBzYXZpbmcgY29sdW1uIGNvbmZpZ3VyYXRpb246JywgcmVzLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSb3dCeUlkOiBHZXRSb3dJZEZ1bmMgPSAocGFyYW1zOiBHZXRSb3dJZFBhcmFtcykgPT4ge1xyXG4gICAgdmFyIGRhdGEgPSBwYXJhbXMuZGF0YTtcclxuICAgIHJldHVybiBkYXRhLmlkID8/IDA7XHJcbiAgfTtcclxuXHJcbiAgLy8gQ3VzdG9tIHJpZ2h0IGNsaWNrIENvbnRleHQgTWVudSB0byBzdXBwb3J0IGN1c3RvbSBleGNlbCBleHBvcnRzXHJcbiAgcHVibGljIGdldENvbnRleHRNZW51SXRlbXMgPSAoXHJcbiAgICBwYXJhbXM6IEdldENvbnRleHRNZW51SXRlbXNQYXJhbXNcclxuICApOiAoc3RyaW5nIHwgTWVudUl0ZW1EZWYpW10gPT4ge1xyXG4gICAgbGV0IHJlczogKHN0cmluZyB8IE1lbnVJdGVtRGVmKVtdID0gW1xyXG4gICAgICAnY3V0JyxcclxuICAgICAgJ2NvcHknLFxyXG4gICAgICAnY29weVdpdGhIZWFkZXJzJyxcclxuICAgICAgJ2NvcHlXaXRoR3JvdXBIZWFkZXJzJyxcclxuICAgICAgJ3Bhc3RlJyxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdFeHBvcnQnLFxyXG4gICAgICAgIHN1Yk1lbnU6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ0NTViBFeHBvcnQnLFxyXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmV4cG9ydEZpbGUoJ2NzdicpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ0V4Y2VsIEV4cG9ydCcsXHJcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZSgneGxzeCcpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgLy9jdXN0b20gZXhwb3J0IG1ldGhvZFxyXG4gIHB1YmxpYyBleHBvcnRGaWxlKHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5nZXREYXRhRm9yRXhjZWxFeHBvcnQodHlwZSk7XHJcbiAgfVxyXG4gIC8vR2VuZXJhdGUgb25seSB0aG9zZSBjb2x1bW5zIGZvciBleHBvcnQgd2hpY2ggYXJlIHZpc2libGUgYW5kIGFyZSBub3Qgb2Ygb3RoZXIgdHlwZXMgdGhhdCBhcmUgbm90IHJlcXVpcmVkIGZvciBleHBvcnRcclxuICBnZW5lcmF0ZUNvbHVtbnNGb3JFeGNlbCgpOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgY29sdW1uc1RvQmVEaXNwbGF5ZWRGb3JFeGNlbDogYW55ID0gW107XHJcbiAgICB0aGlzLmV4cG9ydENvbHVtbnNMaXN0LmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBjb2x1bW4udmlzaWJsZSA9PSB0cnVlICYmXHJcbiAgICAgICAgY29sdW1uLmNvbHVtblR5cGUgIT0gJ2NoZWNrYm94JyAmJlxyXG4gICAgICAgIGNvbHVtbi5jb2x1bW5UeXBlICE9ICdkcm9wZG93bicgJiZcclxuICAgICAgICBjb2x1bW4uY29sdW1uVHlwZSAhPSAnJ1xyXG4gICAgICApIHtcclxuICAgICAgICBjb2x1bW5zVG9CZURpc3BsYXllZEZvckV4Y2VsLnB1c2goY29sdW1uLmZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29sdW1uc1RvQmVEaXNwbGF5ZWRGb3JFeGNlbDtcclxuICB9XHJcblxyXG4gIC8vR2V0IGRhdGEgZnJvbSBzZXJ2ZXIgd2l0aG91dCBwYWdpbmcgc28gdGhhdCB3aG9sZSBkYXRhIGNhbiBiZSBleHBvcnRlZCB0byBleGNlbFxyXG4gIC8vIGFuZCBhbHNvIGNoZWNrIGZvciBzZXJ2ZXIgc2lkZSBhbmQgY2xpZW50IHNpZGUgcmVuZGVyaW5nIG9mIGRhdGEgZm9yIGV4cG9ydC5cclxuICBnZXREYXRhRm9yRXhjZWxFeHBvcnQodHlwZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFnR3JpZC5hcGkuc2hvd0xvYWRpbmdPdmVybGF5KCk7XHJcbiAgICBpZiAodGhpcy5lbmFibGVTZXJ2ZXJTaWRlUGFnaW5nKSB7XHJcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2VcclxuICAgICAgICAuZ2V0RGF0YUZvckV4cG9ydCh0aGlzLnNlcnZlckRhdGFVcmwpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hZ0dyaWQuYXBpLmhpZGVPdmVybGF5KCk7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLnNldFJvd0RhdGEocmVzcG9uc2UudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ2NzdicpIHtcclxuICAgICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLmV4cG9ydERhdGFBc0Nzdih7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5LZXlzOiB0aGlzLmdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leGNlbEFQSS5leHBvcnREYXRhQXNFeGNlbCh7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5LZXlzOiB0aGlzLmdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciB3aGlsZSBmZXRjaGluZyBkYXRhIGZvciBleGNlbC9jc3YgZXhwb3J0Jyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFnR3JpZC5hcGkuaGlkZU92ZXJsYXkoKTtcclxuICAgICAgaWYgKHR5cGUgPT0gJ2NzdicpIHtcclxuICAgICAgICB0aGlzLmFnR3JpZC5hcGkuZXhwb3J0RGF0YUFzQ3N2KHtcclxuICAgICAgICAgIGNvbHVtbktleXM6IHRoaXMuZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFnR3JpZC5hcGkuZXhwb3J0RGF0YUFzRXhjZWwoe1xyXG4gICAgICAgICAgY29sdW1uS2V5czogdGhpcy5nZW5lcmF0ZUNvbHVtbnNGb3JFeGNlbCgpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZWQoZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyQ2hhbmdlZChlOiBhbnkpIHtcclxuICAgIHRoaXMuZmlsdGVyQ2hhbmdlZC5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25GaXJzdERhdGFSZW5kZXJlZChlOiBhbnkpIHtcclxuICAgIHRoaXMuZmlyc3REYXRhUmVuZGVyZWQuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG9uR3JpZFJlYWR5RXhjZWwocGFyYW1zOiBhbnkpIHtcclxuICAgIHRoaXMuZXhjZWxBUEkgPSBwYXJhbXMuYXBpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -8,8 +8,10 @@ import { CommonModule, DatePipe } from '@angular/common';
8
8
  import { CustomTooltip } from './renderer/tooltip-renderer/custom-tooltip-renderer';
9
9
  import { GridLibraryComponent } from './grid-library.component';
10
10
  import { DropdownRenderer } from './renderer/dropdown-renderer/drop-down-renderer';
11
+ import { GridLibraryService } from './grid-library.service';
12
+ import { ColumnValueFormatter } from './formatters/column-value-formatter';
11
13
  import * as i0 from "@angular/core";
12
- LicenseManager.setLicenseKey("Using_this_AG_Grid_Enterprise_key_( AG-040308 )_in_excess_of_the_licence_granted_is_not_permitted___Please_report_misuse_to_( legal@ag-grid.com )___For_help_with_changing_this_key_please_contact_( info@ag-grid.com )___( Basesite )_is_granted_a_( Multiple Applications )_Developer_License_for_( 2 )_Front-End_JavaScript_developers___All_Front-End_JavaScript_developers_need_to_be_licensed_in_addition_to_the_ones_working_with_AG_Grid_Enterprise___This_key_has_been_granted_a_Deployment_License_Add-on_for_( 2 )_Production_Environments___This_key_works_with_AG_Grid_Enterprise_versions_released_before_( 18 May 2024 )____[v2]_MTcxNTk4NjgwMDAwMA==60418a73ee93fedd598e5d8aa02b2926");
14
+ LicenseManager.setLicenseKey("CompanyName=Basesite,LicensedGroup=Basesite,LicenseType=MultipleApplications,LicensedConcurrentDeveloperCount=2,LicensedProductionInstancesCount=2,AssetReference=AG-028469,ExpiryDate=19_May_2023_[v2]_MTY4NDQ1MDgwMDAwMA==ed6f437ea331cf602f669128db7b5387");
13
15
  export class GridLibraryModule {
14
16
  }
15
17
  GridLibraryModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GridLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -19,7 +21,7 @@ GridLibraryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
19
21
  DropdownRenderer], imports: [AgGridModule,
20
22
  HttpClientModule,
21
23
  CommonModule], exports: [GridLibraryComponent] });
22
- GridLibraryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GridLibraryModule, providers: [DatePipe], imports: [AgGridModule,
24
+ GridLibraryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GridLibraryModule, providers: [DatePipe, GridLibraryService, ColumnValueFormatter], imports: [AgGridModule,
23
25
  HttpClientModule,
24
26
  CommonModule] });
25
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GridLibraryModule, decorators: [{
@@ -39,7 +41,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
39
41
  exports: [
40
42
  GridLibraryComponent
41
43
  ],
42
- providers: [DatePipe]
44
+ providers: [DatePipe, GridLibraryService, ColumnValueFormatter]
43
45
  }]
44
46
  }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYi9zcmMvbGliL2dyaWQtbGlicmFyeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDcEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBTm5GLGNBQWMsQ0FBQyxhQUFhLENBQUMsc3FCQUFzcUIsQ0FBQyxDQUFDO0FBeUJyc0IsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQWYxQixvQkFBb0I7UUFDcEIsdUJBQXVCO1FBQ3ZCLGFBQWE7UUFDYixnQkFBZ0IsYUFHaEIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixZQUFZLGFBR1osb0JBQW9COytHQUlYLGlCQUFpQixhQUZqQixDQUFDLFFBQVEsQ0FBQyxZQVBuQixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFlBQVk7MkZBT0gsaUJBQWlCO2tCQWpCN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjtxQkFDckI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBZ0dyaWRNb2R1bGUgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHtMaWNlbnNlTWFuYWdlcn0gZnJvbSBcImFnLWdyaWQtZW50ZXJwcmlzZVwiO1xuaW1wb3J0ICdhZy1ncmlkLWVudGVycHJpc2UnO1xuTGljZW5zZU1hbmFnZXIuc2V0TGljZW5zZUtleShcIlVzaW5nX3RoaXNfQUdfR3JpZF9FbnRlcnByaXNlX2tleV8oIEFHLTA0MDMwOCApX2luX2V4Y2Vzc19vZl90aGVfbGljZW5jZV9ncmFudGVkX2lzX25vdF9wZXJtaXR0ZWRfX19QbGVhc2VfcmVwb3J0X21pc3VzZV90b18oIGxlZ2FsQGFnLWdyaWQuY29tIClfX19Gb3JfaGVscF93aXRoX2NoYW5naW5nX3RoaXNfa2V5X3BsZWFzZV9jb250YWN0XyggaW5mb0BhZy1ncmlkLmNvbSApX19fKCBCYXNlc2l0ZSApX2lzX2dyYW50ZWRfYV8oIE11bHRpcGxlIEFwcGxpY2F0aW9ucyApX0RldmVsb3Blcl9MaWNlbnNlX2Zvcl8oIDIgKV9Gcm9udC1FbmRfSmF2YVNjcmlwdF9kZXZlbG9wZXJzX19fQWxsX0Zyb250LUVuZF9KYXZhU2NyaXB0X2RldmVsb3BlcnNfbmVlZF90b19iZV9saWNlbnNlZF9pbl9hZGRpdGlvbl90b190aGVfb25lc193b3JraW5nX3dpdGhfQUdfR3JpZF9FbnRlcnByaXNlX19fVGhpc19rZXlfaGFzX2JlZW5fZ3JhbnRlZF9hX0RlcGxveW1lbnRfTGljZW5zZV9BZGQtb25fZm9yXyggMiApX1Byb2R1Y3Rpb25fRW52aXJvbm1lbnRzX19fVGhpc19rZXlfd29ya3Nfd2l0aF9BR19HcmlkX0VudGVycHJpc2VfdmVyc2lvbnNfcmVsZWFzZWRfYmVmb3JlXyggMTggTWF5IDIwMjQgKV9fX19bdjJdX01UY3hOVGs0Tmpnd01EQXdNQT09NjA0MThhNzNlZTkzZmVkZDU5OGU1ZDhhYTAyYjI5MjZcIik7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBCdXR0b25SZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXIvYnV0dG9uLXJlbmRlcmVyL2J1dHRvbi1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDdXN0b21Ub29sdGlwIH0gZnJvbSAnLi9yZW5kZXJlci90b29sdGlwLXJlbmRlcmVyL2N1c3RvbS10b29sdGlwLXJlbmRlcmVyJztcbmltcG9ydCB7IEdyaWRMaWJyYXJ5Q29tcG9uZW50IH0gZnJvbSAnLi9ncmlkLWxpYnJhcnkuY29tcG9uZW50JztcbmltcG9ydCB7IERyb3Bkb3duUmVuZGVyZXIgfSBmcm9tICcuL3JlbmRlcmVyL2Ryb3Bkb3duLXJlbmRlcmVyL2Ryb3AtZG93bi1yZW5kZXJlcic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEdyaWRMaWJyYXJ5Q29tcG9uZW50LFxuICAgIEJ1dHRvblJlbmRlcmVyQ29tcG9uZW50LFxuICAgIEN1c3RvbVRvb2x0aXAsXG4gICAgRHJvcGRvd25SZW5kZXJlclxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQWdHcmlkTW9kdWxlLFxuICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgR3JpZExpYnJhcnlDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRMaWJyYXJ5TW9kdWxlIHsgfVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYi9zcmMvbGliL2dyaWQtbGlicmFyeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDcEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBUjNFLGNBQWMsQ0FBQyxhQUFhLENBQUMsOFBBQThQLENBQUMsQ0FBQztBQTJCN1IsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQWYxQixvQkFBb0I7UUFDcEIsdUJBQXVCO1FBQ3ZCLGFBQWE7UUFDYixnQkFBZ0IsYUFHaEIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixZQUFZLGFBR1osb0JBQW9COytHQUlYLGlCQUFpQixhQUZqQixDQUFDLFFBQVEsRUFBQyxrQkFBa0IsRUFBQyxvQkFBb0IsQ0FBQyxZQVAzRCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFlBQVk7MkZBT0gsaUJBQWlCO2tCQWpCN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjtxQkFDckI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFDLGtCQUFrQixFQUFDLG9CQUFvQixDQUFDO2lCQUM5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFnR3JpZE1vZHVsZSB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XHJcbmltcG9ydCB7TGljZW5zZU1hbmFnZXJ9IGZyb20gXCJhZy1ncmlkLWVudGVycHJpc2VcIjtcclxuaW1wb3J0ICdhZy1ncmlkLWVudGVycHJpc2UnO1xyXG5MaWNlbnNlTWFuYWdlci5zZXRMaWNlbnNlS2V5KFwiQ29tcGFueU5hbWU9QmFzZXNpdGUsTGljZW5zZWRHcm91cD1CYXNlc2l0ZSxMaWNlbnNlVHlwZT1NdWx0aXBsZUFwcGxpY2F0aW9ucyxMaWNlbnNlZENvbmN1cnJlbnREZXZlbG9wZXJDb3VudD0yLExpY2Vuc2VkUHJvZHVjdGlvbkluc3RhbmNlc0NvdW50PTIsQXNzZXRSZWZlcmVuY2U9QUctMDI4NDY5LEV4cGlyeURhdGU9MTlfTWF5XzIwMjNfW3YyXV9NVFk0TkRRMU1EZ3dNREF3TUE9PWVkNmY0MzdlYTMzMWNmNjAyZjY2OTEyOGRiN2I1Mzg3XCIpO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEJ1dHRvblJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9yZW5kZXJlci9idXR0b24tcmVuZGVyZXIvYnV0dG9uLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDdXN0b21Ub29sdGlwIH0gZnJvbSAnLi9yZW5kZXJlci90b29sdGlwLXJlbmRlcmVyL2N1c3RvbS10b29sdGlwLXJlbmRlcmVyJztcclxuaW1wb3J0IHsgR3JpZExpYnJhcnlDb21wb25lbnQgfSBmcm9tICcuL2dyaWQtbGlicmFyeS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93blJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlci9kcm9wZG93bi1yZW5kZXJlci9kcm9wLWRvd24tcmVuZGVyZXInO1xyXG5pbXBvcnQgeyBHcmlkTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuL2dyaWQtbGlicmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29sdW1uVmFsdWVGb3JtYXR0ZXIgfSBmcm9tICcuL2Zvcm1hdHRlcnMvY29sdW1uLXZhbHVlLWZvcm1hdHRlcic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgR3JpZExpYnJhcnlDb21wb25lbnQsXHJcbiAgICBCdXR0b25SZW5kZXJlckNvbXBvbmVudCxcclxuICAgIEN1c3RvbVRvb2x0aXAsXHJcbiAgICBEcm9wZG93blJlbmRlcmVyXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBBZ0dyaWRNb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgR3JpZExpYnJhcnlDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW0RhdGVQaXBlLEdyaWRMaWJyYXJ5U2VydmljZSxDb2x1bW5WYWx1ZUZvcm1hdHRlcl1cclxufSlcclxuZXhwb3J0IGNsYXNzIEdyaWRMaWJyYXJ5TW9kdWxlIHsgfVxyXG4iXX0=
@@ -29,6 +29,9 @@ export class GridLibraryService {
29
29
  getGridState(gridId, loggedInUserId) {
30
30
  return this.httpClient.get(`${this.baseUrl}/GridConfiguration?gridId=${gridId}&userId=${loggedInUserId}`);
31
31
  }
32
+ getDataForExport(serverUrl) {
33
+ return this.httpClient.get(`${serverUrl}`);
34
+ }
32
35
  }
33
36
  GridLibraryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GridLibraryService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
34
37
  GridLibraryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GridLibraryService, providedIn: 'root' });
@@ -38,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
38
41
  providedIn: 'root',
39
42
  }]
40
43
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXNlc2l0ZS1zaGFyZWQtZ3JpZC1saWIvc3JjL2xpYi9ncmlkLWxpYnJhcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRGxDLFlBQU8sR0FBSyw0QkFBNEIsQ0FBQztJQUVqRCxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQWU7UUFDeEIsSUFBRyxXQUFXLEtBQUcsTUFBTSxFQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUMseUNBQXlDLENBQUE7U0FDdkQ7YUFDSSxJQUFHLFdBQVcsSUFBRSxLQUFLLEVBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBQyx3Q0FBd0MsQ0FBQTtTQUN0RDthQUNJLElBQUcsV0FBVyxJQUFFLFlBQVksRUFBQztZQUMvQixJQUFJLENBQUMsT0FBTyxHQUFDLHFDQUFxQyxDQUFBO1NBQ3BEO2FBQ0c7WUFDRixJQUFJLENBQUMsT0FBTyxHQUFDLDRCQUE0QixDQUFBO1NBQzFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLEdBQUcsSUFBSSxDQUFDLE9BQU8sc0JBQXNCLE1BQU0sRUFBRSxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLFlBQWdCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLEdBQUcsSUFBSSxDQUFDLE9BQU8sZ0RBQWdELEVBQUMsWUFBWSxDQUM3RSxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFhLEVBQUMsY0FBcUI7UUFDOUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsR0FBRyxJQUFJLENBQUMsT0FBTyw2QkFBNkIsTUFBTSxXQUFXLGNBQWMsRUFBRSxDQUM5RSxDQUFDO0lBQ0osQ0FBQzs7K0dBcENVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHcmlkTGlicmFyeVNlcnZpY2Uge1xuICBwcml2YXRlIGJhc2VVcmw6YW55PSdodHRwczovL2xvY2FsaG9zdDo4MDc1L2FwaSc7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCkge1xuICB9ICBcblxuICBzZXRCYXNlVXJsKGVudmlyb25tZW50OmFueSl7XG4gICAgaWYoZW52aXJvbm1lbnQ9PT0ndGVzdCcpe1xuICAgICAgdGhpcy5iYXNlVXJsPSdodHRwczovL2ZjZXNoYXJlZGdyaWR0ZXN0LmludGVsLmNvbS9hcGknXG4gICAgfVxuICAgIGVsc2UgaWYoZW52aXJvbm1lbnQ9PSd1YXQnKXtcbiAgICAgIHRoaXMuYmFzZVVybD0naHR0cHM6Ly9mY2VzaGFyZWRncmlkdWF0LmludGVsLmNvbS9hcGknXG4gICAgfVxuICAgIGVsc2UgaWYoZW52aXJvbm1lbnQ9PSdwcm9kdWN0aW9uJyl7XG4gICAgICAgdGhpcy5iYXNlVXJsPSdodHRwczovL2ZjZXNoYXJlZGdyaWQuaW50ZWwuY29tL2FwaSdcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHRoaXMuYmFzZVVybD0naHR0cHM6Ly9sb2NhbGhvc3Q6ODA3NS9hcGknXG4gICAgfVxuICB9XG5cbiAgZ2V0Q29sRGVmKGdyaWRJZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxhbnk+KFxuICAgICAgYCR7dGhpcy5iYXNlVXJsfS9HcmlkQ29uZmlndXJhdGlvbi8ke2dyaWRJZH1gXG4gICAgKTtcbiAgfVxuXG4gIHNhdmVDb2x1bW5Db25maWcoY29sdW1uQ29uZmlnOmFueSl7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PGFueT4oXG4gICAgICBgJHt0aGlzLmJhc2VVcmx9L0dyaWRDb25maWd1cmF0aW9uL3NhdmVVSVVzZXJHcmlkQ29uZmlndXJhdGlvbmAsY29sdW1uQ29uZmlnXG4gICAgKTtcbiAgfVxuXG4gIGdldEdyaWRTdGF0ZShncmlkSWQ6bnVtYmVyLGxvZ2dlZEluVXNlcklkOm51bWJlcil7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8YW55PihcbiAgICAgIGAke3RoaXMuYmFzZVVybH0vR3JpZENvbmZpZ3VyYXRpb24/Z3JpZElkPSR7Z3JpZElkfSZ1c2VySWQ9JHtsb2dnZWRJblVzZXJJZH1gXG4gICAgKTtcbiAgfVxufVxuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXNlc2l0ZS1zaGFyZWQtZ3JpZC1saWIvc3JjL2xpYi9ncmlkLWxpYnJhcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRGxDLFlBQU8sR0FBSyw0QkFBNEIsQ0FBQztJQUVqRCxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQWU7UUFDeEIsSUFBRyxXQUFXLEtBQUcsTUFBTSxFQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUMseUNBQXlDLENBQUE7U0FDdkQ7YUFDSSxJQUFHLFdBQVcsSUFBRSxLQUFLLEVBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBQyx3Q0FBd0MsQ0FBQTtTQUN0RDthQUNJLElBQUcsV0FBVyxJQUFFLFlBQVksRUFBQztZQUMvQixJQUFJLENBQUMsT0FBTyxHQUFDLHFDQUFxQyxDQUFBO1NBQ3BEO2FBQ0c7WUFDRixJQUFJLENBQUMsT0FBTyxHQUFDLDRCQUE0QixDQUFBO1NBQzFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLEdBQUcsSUFBSSxDQUFDLE9BQU8sc0JBQXNCLE1BQU0sRUFBRSxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLFlBQWdCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLEdBQUcsSUFBSSxDQUFDLE9BQU8sZ0RBQWdELEVBQUMsWUFBWSxDQUM3RSxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFhLEVBQUMsY0FBcUI7UUFDOUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsR0FBRyxJQUFJLENBQUMsT0FBTyw2QkFBNkIsTUFBTSxXQUFXLGNBQWMsRUFBRSxDQUM5RSxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLFNBQWM7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsR0FBRyxTQUFTLEVBQUUsQ0FDZixDQUFDO0lBQ0osQ0FBQzs7K0dBMUNVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyaWRMaWJyYXJ5U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBiYXNlVXJsOmFueT0naHR0cHM6Ly9sb2NhbGhvc3Q6ODA3NS9hcGknO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCkge1xyXG4gIH0gIFxyXG5cclxuICBzZXRCYXNlVXJsKGVudmlyb25tZW50OmFueSl7XHJcbiAgICBpZihlbnZpcm9ubWVudD09PSd0ZXN0Jyl7XHJcbiAgICAgIHRoaXMuYmFzZVVybD0naHR0cHM6Ly9mY2VzaGFyZWRncmlkdGVzdC5pbnRlbC5jb20vYXBpJ1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihlbnZpcm9ubWVudD09J3VhdCcpe1xyXG4gICAgICB0aGlzLmJhc2VVcmw9J2h0dHBzOi8vZmNlc2hhcmVkZ3JpZHVhdC5pbnRlbC5jb20vYXBpJ1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihlbnZpcm9ubWVudD09J3Byb2R1Y3Rpb24nKXtcclxuICAgICAgIHRoaXMuYmFzZVVybD0naHR0cHM6Ly9mY2VzaGFyZWRncmlkLmludGVsLmNvbS9hcGknXHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICB0aGlzLmJhc2VVcmw9J2h0dHBzOi8vbG9jYWxob3N0OjgwNzUvYXBpJ1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29sRGVmKGdyaWRJZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PGFueT4oXHJcbiAgICAgIGAke3RoaXMuYmFzZVVybH0vR3JpZENvbmZpZ3VyYXRpb24vJHtncmlkSWR9YFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNhdmVDb2x1bW5Db25maWcoY29sdW1uQ29uZmlnOmFueSl7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8YW55PihcclxuICAgICAgYCR7dGhpcy5iYXNlVXJsfS9HcmlkQ29uZmlndXJhdGlvbi9zYXZlVUlVc2VyR3JpZENvbmZpZ3VyYXRpb25gLGNvbHVtbkNvbmZpZ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEdyaWRTdGF0ZShncmlkSWQ6bnVtYmVyLGxvZ2dlZEluVXNlcklkOm51bWJlcil7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxhbnk+KFxyXG4gICAgICBgJHt0aGlzLmJhc2VVcmx9L0dyaWRDb25maWd1cmF0aW9uP2dyaWRJZD0ke2dyaWRJZH0mdXNlcklkPSR7bG9nZ2VkSW5Vc2VySWR9YFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldERhdGFGb3JFeHBvcnQoc2VydmVyVXJsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8YW55PihcclxuICAgICAgYCR7c2VydmVyVXJsfWBcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==