@huntsman-cancer-institute/dictionary-editor 15.0.3 → 16.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/components/detail.component.mjs +6 -6
- package/{esm2020 → esm2022}/components/home.component.mjs +6 -6
- package/{esm2020 → esm2022}/components/new-row.component.mjs +6 -6
- package/{esm2020 → esm2022}/dictionary-editor.component.mjs +6 -6
- package/{esm2020 → esm2022}/dictionary-editor.module.mjs +24 -24
- package/{esm2020 → esm2022}/grid-editors/ag-grid-date-cell-editor.component.mjs +6 -6
- package/{esm2020 → esm2022}/grid-editors/ag-grid-editor.module.mjs +20 -20
- package/esm2022/grid-editors/datepicker.component.mjs +111 -0
- package/{esm2020 → esm2022}/grid-editors/select.editor.mjs +6 -6
- package/{esm2020 → esm2022}/grid-renderers/ag-grid-renderer.module.mjs +11 -11
- package/{esm2020 → esm2022}/grid-renderers/date.renderer.mjs +6 -6
- package/{esm2020 → esm2022}/grid-renderers/select.renderer.mjs +7 -7
- package/{fesm2020 → fesm2022}/huntsman-cancer-institute-dictionary-editor.mjs +117 -117
- package/{fesm2020 → fesm2022}/huntsman-cancer-institute-dictionary-editor.mjs.map +1 -1
- package/grid-editors/datepicker.component.d.ts +1 -1
- package/package.json +15 -21
- package/esm2020/grid-editors/datepicker.component.mjs +0 -111
- package/fesm2015/huntsman-cancer-institute-dictionary-editor.mjs +0 -2150
- package/fesm2015/huntsman-cancer-institute-dictionary-editor.mjs.map +0 -1
- /package/{esm2020 → esm2022}/dictionary-editor.routes.mjs +0 -0
- /package/{esm2020 → esm2022}/grid-renderers/cell-renderer-validation.mjs +0 -0
- /package/{esm2020 → esm2022}/huntsman-cancer-institute-dictionary-editor.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
|
@@ -576,9 +576,8 @@ export class DictionaryEditorDetailComponent {
|
|
|
576
576
|
}
|
|
577
577
|
return date1Number - date2Number;
|
|
578
578
|
}
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
DictionaryEditorDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DictionaryEditorDetailComponent, selector: "hci-dictionary-editor-detail", host: { properties: { "class": "this.classList" } }, ngImport: i0, template: `
|
|
579
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DictionaryEditorDetailComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.NgbModal }, { token: i3.DictionaryService }, { token: DICTIONARY_ENDPOINT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
580
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DictionaryEditorDetailComponent, selector: "hci-dictionary-editor-detail", host: { properties: { "class": "this.classList" } }, ngImport: i0, template: `
|
|
582
581
|
<div class="d-flex flex-column hci-dictionary-detail-body"
|
|
583
582
|
>
|
|
584
583
|
<hci-busy [busySubjects]="loadingSubjects"></hci-busy>
|
|
@@ -662,8 +661,9 @@ DictionaryEditorDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion:
|
|
|
662
661
|
</div>
|
|
663
662
|
</ng-template>
|
|
664
663
|
</div>
|
|
665
|
-
`, isInline: true, styles: [".full-height{height:100%}.full-width{width:100%}.ag-theme-balham{font-family:Prompt;font-weight:500}.active-color{float:right;font-size:15px;color:var(--bluewarm-dark)}.deactivated-color{float:right;font-size:15px;color:var(--greywarm-medlight)}.dictionary-info-section{padding-top:10px}.dictionary-title{float:left;font-size:16px;padding-left:10px;padding-right:10px;padding-top:5px}.metadata-button{color:var(--white-lightest);float:left;font-size:15px}:host::ng-deep .ag-header-cell{background-color:var(--bluewarmvividfade-lightest);border:lightgray solid thin}:host::ng-deep .ag-cell{border-right:lightgray solid thin;border-left:lightgray solid thin}:host::ng-deep .ag-row{border-bottom:0;border-top:0}:host::ng-deep .ag-row-even{background-color:var(--white-medium)}.hci-dictionary-detail-body{height:100%;width:100%;background:linear-gradient(0deg,var(--white-lightest) 30%,var(--bluewarmvividfade-lighter) 100%)!important}.hci-dictoinary-display-grid{padding-right:5px;padding-left:5px;box-shadow:#00000059 0 5px 15px}:host::ng-deep .ag-row-hover{color:#666!important;background-color:var(--bluewarmvividfade-lighter)!important}:host::ng-deep .ag-row-selected .ag-cell{color:var(--white-lightest)!important}:host::ng-deep .ag-row-selected{color:var(--white-darker)!important;background-color:var(--bluewarmvivid-lighter)!important}\n"], dependencies: [{ kind: "component", type: i4.BusyComponent, selector: "hci-busy", inputs: ["busy", "busySubjects", "getBusySubjects", "parentSelector", "rootClass", "icon", "iconSize", "showIcon", "mxAuto", "myAuto", "text", "template", "config"] }, { kind: "component", type: i5.AgGridAngular, selector: "ag-grid-angular", inputs: ["statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "undoRedoCellEditing", "undoRedoCellEditingLimit", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "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", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideStoreType", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "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", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "getDataPath", "defaultGroupSortComparator", "getChildCount", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow", "gridOptions", "modules"], outputs: ["toolPanelVisibleChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "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"] }] });
|
|
666
|
-
|
|
664
|
+
`, isInline: true, styles: [".full-height{height:100%}.full-width{width:100%}.ag-theme-balham{font-family:Prompt;font-weight:500}.active-color{float:right;font-size:15px;color:var(--bluewarm-dark)}.deactivated-color{float:right;font-size:15px;color:var(--greywarm-medlight)}.dictionary-info-section{padding-top:10px}.dictionary-title{float:left;font-size:16px;padding-left:10px;padding-right:10px;padding-top:5px}.metadata-button{color:var(--white-lightest);float:left;font-size:15px}:host::ng-deep .ag-header-cell{background-color:var(--bluewarmvividfade-lightest);border:lightgray solid thin}:host::ng-deep .ag-cell{border-right:lightgray solid thin;border-left:lightgray solid thin}:host::ng-deep .ag-row{border-bottom:0;border-top:0}:host::ng-deep .ag-row-even{background-color:var(--white-medium)}.hci-dictionary-detail-body{height:100%;width:100%;background:linear-gradient(0deg,var(--white-lightest) 30%,var(--bluewarmvividfade-lighter) 100%)!important}.hci-dictoinary-display-grid{padding-right:5px;padding-left:5px;box-shadow:#00000059 0 5px 15px}:host::ng-deep .ag-row-hover{color:#666!important;background-color:var(--bluewarmvividfade-lighter)!important}:host::ng-deep .ag-row-selected .ag-cell{color:var(--white-lightest)!important}:host::ng-deep .ag-row-selected{color:var(--white-darker)!important;background-color:var(--bluewarmvivid-lighter)!important}\n"], dependencies: [{ kind: "component", type: i4.BusyComponent, selector: "hci-busy", inputs: ["busy", "busySubjects", "getBusySubjects", "parentSelector", "rootClass", "icon", "iconSize", "showIcon", "mxAuto", "myAuto", "text", "template", "config"] }, { kind: "component", type: i5.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", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "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", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "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", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "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", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "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", "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"] }] }); }
|
|
665
|
+
}
|
|
666
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DictionaryEditorDetailComponent, decorators: [{
|
|
667
667
|
type: Component,
|
|
668
668
|
args: [{ selector: "hci-dictionary-editor-detail", template: `
|
|
669
669
|
<div class="d-flex flex-column hci-dictionary-detail-body"
|
|
@@ -770,4 +770,4 @@ function monthToComparableNumber(date) {
|
|
|
770
770
|
let dayNumber = date.substring(8, 10);
|
|
771
771
|
return yearNumber * 10000 + monthNumber * 100 + dayNumber;
|
|
772
772
|
}
|
|
773
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2RpY3Rpb25hcnktZWRpdG9yL3NyYy9jb21wb25lbnRzL2RldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFhLFdBQVcsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQWMsTUFBTSw0QkFBNEIsQ0FBQztBQUVqRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQVFyRyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDakUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7O0FBRWpHOzs7Ozs7OztHQVFHO0FBZ01ILE1BQU0sT0FBTywrQkFBK0I7SUE4QjFDLFlBQ1UsS0FBcUIsRUFDckIsWUFBc0IsRUFDdEIsaUJBQW9DLEVBQ1Asa0JBQTBCO1FBSHZELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3RCLHNC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RUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDekcsRUFBQyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDbkksRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDM0YsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQztZQUN0RyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDO1lBQzlGLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDOUYsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDN0YsRUFBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFB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LENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtRQUM3RCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFdEMsT0FBTyxVQUFVLEdBQUcsS0FBSyxHQUFHLFdBQVcsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDO0FBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBpc0Rldk1vZGUsIFZpZXdDaGlsZCwgSG9zdEJpbmRpbmcsIFRlbXBsYXRlUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtmaW5hbGl6ZSwgbWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtOZ2JNb2RhbCwgTmdiTW9kYWxSZWZ9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5cclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZSwgRElDVElPTkFSWV9FTkRQT0lOVH0gZnJvbSBcIkBodW50c21hbi1jYW5jZXItaW5zdGl0dXRlL2RpY3Rpb25hcnktc2VydmljZVwiO1xyXG5cclxuaW1wb3J0IHtcclxuICBDb2x1bW5BcGksXHJcbiAgR3JpZE9wdGlvbnMsXHJcbiAgR3JpZFJlYWR5RXZlbnQsXHJcbiAgR3JpZEFwaVxyXG59IGZyb20gXCJhZy1ncmlkLWNvbW11bml0eVwiO1xyXG5pbXBvcnQge1NlbGVjdFJlbmRlcmVyfSBmcm9tIFwiLi4vZ3JpZC1yZW5kZXJlcnMvc2VsZWN0LnJlbmRlcmVyXCI7XHJcbmltcG9ydCB7U2VsZWN0RWRpdG9yfSBmcm9tIFwiLi4vZ3JpZC1lZGl0b3JzL3NlbGVjdC5lZGl0b3JcIjtcclxuaW1wb3J0IHtOZXdSb3dDb21wb25lbnR9IGZyb20gXCIuL25ldy1yb3cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJ1dGlsXCI7XHJcbmltcG9ydCB7RGF0ZVJlbmRlcmVyfSBmcm9tIFwiLi4vZ3JpZC1yZW5kZXJlcnMvZGF0ZS5yZW5kZXJlclwiO1xyXG5pbXBvcnQge0FnR3JpZERhdGVDZWxsRWRpdG9yQ29tcG9uZW50fSBmcm9tIFwiLi4vZ3JpZC1lZGl0b3JzL2FnLWdyaWQtZGF0ZS1jZWxsLWVkaXRvci5jb21wb25lbnRcIjtcclxuXHJcbi8qKlxyXG4gKiBXaGVuIGEgZGljdGlvbmFyeSBpcyBzZWxlY3RlZCB0aGlzIGNvbXBvbmVudCBpcyBzaG93bi4gIFRoZXJlIGlzIGEgdG9wIGdyaWQgd2hpY2ggZm9yIGl0cyBkYXRhIHNob3dzIGFsbCB0aGUgY29sdW1uc1xyXG4gKiBmb3IgdGhlIGRpY3Rpb25hcnkuIEN1cnJlbnRseSwga2VlcCB0aGlzIGZvciByZWZlcmVuY2Ugb25seSBhbmQgaGF2ZSBub24tZWRpdGFibGUuXHJcbiAqIFRoZSBib3R0b20gZ3JpZCB3aWxsIHNob3cgdGhvc2UgY29sdW1ucyBhcyBhY3R1YWwgY29sdW1ucyBhbmQgaXRzIGRhdGEgYXJlIGFsbCB0aGUgZGljdGlvbmFyeSB2YWx1ZXMuICBSb3dzIGNhbiBiZVxyXG4gKiBhZGRlZC4gIEZvciBkZWxldGluZywgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGlkIGlzIG5vdCB1c2VkIGFueXdoZXJlLiAgRm9yIGVkaXRpbmcsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIG9yIGFueXRoaW5nXHJcbiAqIGVsc2UgaXNuJ3QgYmVpbmcgcmVmZXJlbmNlZC5cclxuICpcclxuICogQHNpbmNlIDEuMC4wXHJcbiAqL1xyXG5AQ29tcG9uZW50KFxyXG4gIHtcclxuICAgIHNlbGVjdG9yOiBcImhjaS1kaWN0aW9uYXJ5LWVkaXRvci1kZXRhaWxcIixcclxuICAgIHRlbXBsYXRlOlxyXG4gICAgICBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBoY2ktZGljdGlvbmFyeS1kZXRhaWwtYm9keVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGhjaS1idXN5IFtidXN5U3ViamVjdHNdPVwibG9hZGluZ1N1YmplY3RzXCI+PC9oY2ktYnVzeT5cclxuXHJcbiAgICAgICAgICA8IS0tIERpY3Rpb25hcnkgVGl0bGUgQW5kIE1ldGFkYXRhIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRpY3Rpb25hcnktaW5mby1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGljdGlvbmFyeS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgIHt7ZGlzcGxheU5hbWV9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWV0YWRhdGEtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3Blbk1vZGFsKG1ldGFEYXRhTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgVmlldyBNZXRhIERhdGFcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIERpY3Rpb25hcnkgRWRpdCBCdXR0b25zIC0tPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBbY2xhc3NdPVwiZGlzYWJsZURlbGV0ZT8gJ2RlYWN0aXZhdGVkLWNvbG9yJzogJ2FjdGl2ZS1jb2xvcidcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlRGVsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkFyZVlvdVN1cmVNb2RhbChhcmVZb3VTdXJlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbWludXNcIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHN0eWxlPVwiY29sb3I6IHZhcigtLWJsdWV3YXJtLWRhcmspOyBmbG9hdDogcmlnaHQ7IGZvbnQtc2l6ZTogMTVweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlQWRkUm93XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0FkZFJvdygpXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIERpY3Rpb25hcnkgRGlzcGxheSBHcmlkIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyIGlkPVwiZGljdGlvbmFyeS1ncmlkLWRpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkYXRhR3JpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtIGZ1bGwtaGVpZ2h0IGZ1bGwtd2lkdGggaGNpLWRpY3RvaW5hcnktZGlzcGxheS1ncmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93RGF0YV09XCJkaWN0aW9uYXJ5RW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd1NlbGVjdGlvbl09XCInbXVsdGlwbGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2luZ2xlQ2xpY2tFZGl0XT1cIid0cnVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2luYXRpb25dPVwiJ3RydWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnaW5hdGlvbkF1dG9QYWdlU2l6ZV09XCIndHJ1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNlbGxWYWx1ZUNoYW5nZWQpPVwidXBkYXRlRGljdGlvbmFyeSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gRGljdGlvbmFyeSBNZXRhZGF0YSBQb3B1cCAtLT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbWV0YURhdGFNb2RhbCBsZXQtY2xvc2U9XCJjbG9zZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MTAwMHB4XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgTWV0YSBEYXRhIGZvciB7e2NsYXNzTmFtZX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtb2RhbC1ib2R5XCJcclxuICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsgd2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyICNtZXRhR3JpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbSBmdWxsLXdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDI1MHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncmlkUmVhZHkpPVwidGhpcy5vbk1ldGFHcmlkUmVhZHkoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJ0aGlzLm1ldGFHcmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dTZWxlY3Rpb25dPVwiJ3NpbmdsZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZnJhbWV3b3JrQ29tcG9uZW50c109XCJmcmFtZXdvcmtDb21wb25lbnRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZGljdGlvbmFyeT8uZmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImNsb3NlKCdDbG9zZScpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDwhLS0gRGljdGlvbmFyeSBEZWxldGUgQ29tZmlybWF0aW9uIFBvcHVwIC0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNhcmVZb3VTdXJlTW9kYWwgbGV0LWNsb3NlPVwiY2xvc2VcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgIENvbmZpcm1hdGlvblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgQXJlIHlvdSBzdXJlP1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiY2xvc2UoJ0NhbmNlbCcpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tcmVkXCIgKGNsaWNrKT1cImNsb3NlKCdEZWxldGUnKVwiPkRlbGV0ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIGAsXHJcbiAgICBzdHlsZXM6IFtcclxuICAgICAgYFxyXG4gICAgICAgIC5mdWxsLWhlaWdodCB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZnVsbC13aWR0aCB7XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5hZy10aGVtZS1iYWxoYW0ge1xyXG4gICAgICAgICAgZm9udC1mYW1pbHk6IFwiUHJvbXB0XCI7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmFjdGl2ZS1jb2xvciB7XHJcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZXdhcm0tZGFyayk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZGVhY3RpdmF0ZWQtY29sb3Ige1xyXG4gICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xyXG4gICAgICAgICAgY29sb3I6IHZhcigtLWdyZXl3YXJtLW1lZGxpZ2h0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5kaWN0aW9uYXJ5LWluZm8tc2VjdGlvbiB7XHJcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5kaWN0aW9uYXJ5LXRpdGxlIHtcclxuICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcclxuICAgICAgICAgIHBhZGRpbmctdG9wOiA1cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAubWV0YWRhdGEtYnV0dG9uIHtcclxuICAgICAgICAgIGNvbG9yOiB2YXIoLS13aGl0ZS1saWdodGVzdCk7XHJcbiAgICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1oZWFkZXItY2VsbCB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVld2FybXZpdmlkZmFkZS1saWdodGVzdCk7XHJcbiAgICAgICAgICBib3JkZXI6IGxpZ2h0Z3JheSBzb2xpZCB0aGluO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmFnLWNlbGwge1xyXG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiBsaWdodGdyYXkgc29saWQgdGhpbjtcclxuICAgICAgICAgIGJvcmRlci1sZWZ0OiBsaWdodGdyYXkgc29saWQgdGhpbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1yb3cge1xyXG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgICAgIGJvcmRlci10b3A6IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA6aG9zdDo6bmctZGVlcCAuYWctcm93LWV2ZW4ge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td2hpdGUtbWVkaXVtKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5oY2ktZGljdGlvbmFyeS1kZXRhaWwtYm9keSB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCB2YXIoLS13aGl0ZS1saWdodGVzdCkgMzAlLCB2YXIoLS1ibHVld2FybXZpdmlkZmFkZS1saWdodGVyKSAxMDAlKSAhaW1wb3J0YW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmhjaS1kaWN0b2luYXJ5LWRpc3BsYXktZ3JpZCB7XHJcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XHJcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcclxuICAgICAgICAgIGJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNSkgMHB4IDVweCAxNXB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgKiBEaWN0aW9uYXJ5IFJvdyBIb3ZlciBDU1NcclxuICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgICA6aG9zdDo6bmctZGVlcCAuYWctcm93LWhvdmVyIHtcclxuICAgICAgICAgIGNvbG9yOiAjNjY2ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVld2FybXZpdmlkZmFkZS1saWdodGVyKSAhaW1wb3J0YW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgKiBEaWN0aW9uYXJ5IENlbGwgU2VsZWN0ZWQgQ1NTXHJcbiAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmFnLXJvdy1zZWxlY3RlZCAuYWctY2VsbCB7XHJcbiAgICAgICAgICBjb2xvcjogdmFyKC0td2hpdGUtbGlnaHRlc3QpICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAqIERpY3Rpb25hcnkgUm93IFNlbGVjdGVkIENTU1xyXG4gICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1yb3ctc2VsZWN0ZWQge1xyXG4gICAgICAgICAgY29sb3I6IHZhcigtLXdoaXRlLWRhcmtlcikgIWltcG9ydGFudDtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdWV3YXJtdml2aWQtbGlnaHRlcikgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcbiAgICAgIGBcclxuICAgIF1cclxuICB9XHJcbilcclxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlFZGl0b3JEZXRhaWxDb21wb25lbnQge1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBjbGFzc0xpc3Q6IHN0cmluZyA9IFwib3V0bGV0LWNvbHVtbiB5LWF1dG9cIjtcclxuXHJcbiAgcHJpdmF0ZSBzZWNvbmRhcnlEaWN0aW9uYXJ5RW50cmllczogYW55O1xyXG4gIGNsYXNzTmFtZTogc3RyaW5nO1xyXG4gIGRpc3BsYXlOYW1lOiBhbnk7XHJcbiAgZGljdGlvbmFyeTogYW55O1xyXG4gIGRpY3Rpb25hcnlFbnRyaWVzOiBhbnlbXSA9IFtdO1xyXG4gIGRhdGFDb2x1bW5zOiBhbnlbXTtcclxuXHJcbiAgaWRDb2x1bW46IHN0cmluZztcclxuICBzZWxlY3RlZFJvd3M6IGFueVtdID0gW107XHJcbiAgbG9hZGluZ1N1YmplY3RzOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj5bXSA9IFtdO1xyXG5cclxuICBib3VuZE5ld1Jvd1Bvc3RDYWxsOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xyXG4gIG5ld1Jvd1N1YnNjcmlwdGlvbjogYW55O1xyXG5cclxuICBtZXRhR3JpZE9wdGlvbnMgPSB7XHJcbiAgICByb3dTdHlsZToge1xyXG4gICAgICBcImZvbnQtZmFtaWx5XCI6IFwiUHJvbXB0LCBzYW5zLXNlcmlmXCJcclxuICAgIH0sXHJcbiAgICBlbmFibGVDZWxsVGV4dFNlbGVjdGlvbjogdHJ1ZSxcclxuICAgIGVuc3VyZURvbU9yZGVyOiB0cnVlXHJcbiAgfTtcclxuICBmcmFtZXdvcmtDb21wb25lbnRzOiBhbnk7XHJcbiAgcHVibGljIGdyaWRBcGlNZXRhOiBHcmlkQXBpO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgQEluamVjdChESUNUSU9OQVJZX0VORFBPSU5UKSBwcml2YXRlIGRpY3Rpb25hcnlFbmRwb2ludDogc3RyaW5nXHJcbiAgKSB7XHJcblxyXG4gICAgdGhpcy5ncmlkT3B0aW9ucyA9IDxHcmlkT3B0aW9ucz57XHJcbiAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICBjb21wb25lbnRQYXJlbnQ6IHRoaXNcclxuICAgICAgfSxcclxuICAgICAgb25HcmlkUmVhZHk6IERpY3Rpb25hcnlFZGl0b3JEZXRhaWxDb21wb25lbnQub25TYW1wbGVzR3JpZFJlYWR5LFxyXG4gICAgICBvbkdyaWRTaXplQ2hhbmdlZDogRGljdGlvbmFyeUVkaXRvckRldGFpbENvbXBvbmVudC5vbkdyaWRTaXplQ2hhbmdlZCxcclxuICAgICAgc3VwcHJlc3NIb3Jpem9udGFsU2Nyb2xsOiBmYWxzZSxcclxuICAgICAgc2VsZWN0aW9uTW9kZTogXCJtdWx0aXBsZVwiLFxyXG4gICAgICBzdG9wRWRpdGluZ1doZW5HcmlkTG9zZXNGb2N1czogdHJ1ZSxcclxuICAgICAgZW5hYmxlU29ydGluZzogdHJ1ZSxcclxuICAgICAgZW5hYmxlRmlsdGVyOiB0cnVlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmFzZWQgb24gdGhlIHJvdXRlIGNsYXNzIG5hbWUsIG1ha2UgdGhlIGNhbGwgdG8gZmV0Y2ggdGhlIGRpY3Rpb25hcnkgZGF0YS4gIFNpbmNlIHRoaXMgY29tcG9uZW50IGlzIHJvdXRlIGJhc2VkLFxyXG4gICAqIHdoZW4gdGhlIGRpY3Rpb25hcnkgY2xhc3MgaW4gdGhlIHJvdXRlIGNoYW5nZXMsIHRoaXMgY29tcG9uZW50IGlzIHJlbG9hZGVkLlxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMuYm91bmROZXdSb3dQb3N0Q2FsbCA9IHRoaXMubmV3Um93UG9zdC5iaW5kKHRoaXMpO1xyXG5cclxuICAgIHRoaXMubG9hZGluZ1N1YmplY3RzLnB1c2gobmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSkpO1xyXG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdHMucHVzaChuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKSk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKFxyXG4gICAgICBwYXJhbXMgPT4ge1xyXG4gICAgICAgIGxldCBjbGFzc05hbWU6IHN0cmluZyA9IHBhcmFtc1tcImNsYXNzTmFtZVwiXTtcclxuXHJcbiAgICAgICAgdGhpcy5nZXREaWN0aW9uYXJ5KGNsYXNzTmFtZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvcGVuTW9kYWwobW9kYWw6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKG1vZGFsLCB7d2luZG93Q2xhc3M6IFwibW9kYWwteGxcIn0pLnJlc3VsdC50aGVuKFxyXG4gICAgICAocmVzdWx0KSA9PiB7XHJcbiAgICAgIH0sXHJcbiAgICAgIChyZWFzb24pID0+IHtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHJcbiAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29sdW1uRGVmTWV0YSgpIDogYW55W10ge1xyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtmaWVsZDogXCJuYW1lXCIsIGhlYWRlck5hbWU6IFwiTmFtZVwiLCB3aWR0aDogMTc1LCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZGVzY3JpcHRpb25cIiwgaGVhZGVyTmFtZTogXCJEZXNjcmlwdGlvblwiLCB3aWR0aDogMjUwLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiaWRcIiwgaGVhZGVyTmFtZTogXCJJZFwiLCB3aWR0aDogNjAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJ0eXBlXCIsIGhlYWRlck5hbWU6IFwiVHlwZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwicHJvdGVjdGlvblR5cGVcIiwgaGVhZGVyTmFtZTogXCJQcm90ZWN0aW9uVHlwZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZmlsdGVyRGljdGlvbmFyeUNsYXNzXCIsIGhlYWRlck5hbWU6IFwiRmlsdGVyRGljdGlvbmFyeUNsYXNzXCIsIHdpZHRoOiAxODAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJub3ROdWxsXCIsIGhlYWRlck5hbWU6IFwiTm90TnVsbFwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiaW50ZWdlclwiLCBoZWFkZXJOYW1lOiBcIkludGVnZXJcIiwgd2lkdGg6IDc1LCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwibWluXCIsIGhlYWRlck5hbWU6IFwiTWluXCIsIHdpZHRoOiA2MCwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcIm1heFwiLCBoZWFkZXJOYW1lOiBcIk1heFwiLCB3aWR0aDogNjAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJmcmFjdGlvblwiLCBoZWFkZXJOYW1lOiBcIkZyYWN0aW9uXCIsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJkaWN0aW9uYXJ5VG9vbHRpcFwiLCBoZWFkZXJOYW1lOiBcIkRpY3Rpb25hcnlUb29sdGlwXCIsIHdpZHRoOiAyMDAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJkaWN0aW9uYXJ5RGlzcGxheVwiLCBoZWFkZXJOYW1lOiBcIkRpY3Rpb25hcnlEaXNwbGF5XCIsIHdpZHRoOiAxNzUsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJmaWx0ZXJhYmxlXCIsIGhlYWRlck5hbWU6IFwiRmlsdGVyYWJsZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZGlzcGxheU5hbWVcIiwgaGVhZGVyTmFtZTogXCJEaXNwbGF5TmFtZVwiLCB3aWR0aDogMTc1LCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZGlzcGxheU9yZGVyXCIsIGhlYWRlck5hbWU6IFwiRGlzcGxheU9yZGVyXCIsIHdpZHRoOiA2MCwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcImNlbGxTdHlsZVwiLCBoZWFkZXJOYW1lOiBcIkNlbGxTdHlsZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgXTsgLy8gdGhlIHdpZHRocyBmb3IgdGhlIGxhc3QgMiBjb3VsZCBiZSB3cm9uZy5cclxuXHJcbiAgfVxyXG5cclxuICBvbk1ldGFHcmlkUmVhZHkocGFyYW1zIDogYW55KSB7XHJcblxyXG4gICAgdGhpcy5ncmlkQXBpTWV0YSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmdyaWRBcGlNZXRhLnNldENvbHVtbkRlZnModGhpcy5jb2x1bW5EZWZNZXRhKCkpO1xyXG4gICAgdGhpcy5ncmlkQXBpTWV0YS5zZXRSb3dEYXRhKHRoaXMuZGljdGlvbmFyeT8uZmllbGRzKTtcclxuICAgIC8vIHRoaXMuZ3JpZEFwaU1ldGEuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG5cclxuICB9XHJcblxyXG4gIG9wZW5BcmVZb3VTdXJlTW9kYWwobW9kYWw6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKG1vZGFsKS5yZXN1bHQudGhlbihcclxuICAgICAgKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT09IFwiRGVsZXRlXCIpIHtcclxuICAgICAgICAgIHRoaXMuZGVsZXRlRGljdGlvbmFyeUVudHJpZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChyZWFzb24pID0+IHtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoIHRoZSBkaWN0aW9uYXJ5IG1ldGFkYXRhIGFuZCBkaWN0aW9uYXJ5IGVudHJpZXMgYmFzZWQgdXBvbiB0aGUgZGljdGlvbmFyeSBjbGFzcyBuYW1lLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxyXG4gICAqL1xyXG4gIGdldERpY3Rpb25hcnkoY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuXHJcbiAgICAvLyBXaGVuIFNlbGVjdGluZyBBIE5ldyBEaWN0aW9uYXJ5LCBOYXZpZ2F0ZSBUbyBGaXJzdCBQYWdlXHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucyAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaSkge1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5wYWdpbmF0aW9uR29Ub0ZpcnN0UGFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xyXG4gICAgdGhpcy5kYXRhQ29sdW1ucyA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMubG9hZGluZ1N1YmplY3RzWzBdLm5leHQodHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXREaWN0aW9uYXJ5KGNsYXNzTmFtZSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmluYWxpemUoXHJcbiAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3RzWzBdLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkaWN0aW9uYXJ5OiBPYmplY3QpID0+IHtcclxuICAgICAgICB0aGlzLnNldFVwRGljdGlvbmFyeUdyaWQoZGljdGlvbmFyeSk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdHNbMF0ubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5nZXREaWN0aW9uYXJ5RW50cmllcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGljdGlvbmFyeUVudHJpZXMoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdHNbMV0ubmV4dCh0cnVlKTtcclxuXHJcbiAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldERpY3Rpb25hcnlFbnRyaWVzKHRoaXMuY2xhc3NOYW1lKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaW5hbGl6ZShcclxuICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdHNbMV0ubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICApLnN1YnNjcmliZShcclxuICAgICAgKGRpY3Rpb25hcnlFbnRyaWVzOiBPYmplY3RbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGljdGlvbmFyeUVudHJpZXMgPSBkaWN0aW9uYXJ5RW50cmllcztcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRSb3dEYXRhKGRpY3Rpb25hcnlFbnRyaWVzKTtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdHNbMV0ubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIGRpY3Rpb25hcnkgbWV0YWRhdGEuICBUaGlzIGlzIHVzZWQgdG8gYnVpbGQgdGhlIGNvbHVtbnMgZm9yIHRoZSBkaWN0aW9uYXJ5IGVudHJpZXMuICBUaGUgbmFtZXMsIHZhbGlkYXRpb24sXHJcbiAgICogYW5kIGZpbHRlciBjbGFzc2VzIGJ1aWxkIHRoZSBjb2x1bW4gZGVmaW5pdGlvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkaWN0aW9uYXJ5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRVcERpY3Rpb25hcnlHcmlkKGRpY3Rpb25hcnk6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICBjb25zb2xlLmRlYnVnKFwiRGljdGlvbmFyeUVkaXRvckRldGFpbENvbXBvbmVudC5zZXREaWN0aW9uYXJ5XCIpO1xyXG4gICAgICBjb25zb2xlLmRlYnVnKGRpY3Rpb25hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGljdGlvbmFyeSA9IGRpY3Rpb25hcnk7XHJcbiAgICB0aGlzLnNlY29uZGFyeURpY3Rpb25hcnlFbnRyaWVzID0gW107XHJcbiAgICBsZXQgZGljdGlvbmFyeUNsYXNzTmFtZXMgPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBmaWVsZCBvZiBkaWN0aW9uYXJ5LmZpZWxkcykge1xyXG4gICAgICBpZiAoZmllbGQuZmlsdGVyRGljdGlvbmFyeUNsYXNzKSB7XHJcbiAgICAgICAgZGljdGlvbmFyeUNsYXNzTmFtZXMucHVzaChmaWVsZC5maWx0ZXJEaWN0aW9uYXJ5Q2xhc3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5nZXRTZWNvbmRhcnlEaWN0aW9uYXJpZXMoZGljdGlvbmFyeUNsYXNzTmFtZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTZWNvbmRhcnlEaWN0aW9uYXJpZXMoZGljdGlvbmFyeU5hbWVzOiBzdHJpbmdbXSkge1xyXG5cclxuICAgIGlmIChkaWN0aW9uYXJ5TmFtZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5maW5pc2hDb2x1bW5TZXR1cCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGRpY3Rpb25hcnlOYW1lID0gZGljdGlvbmFyeU5hbWVzLnBvcCgpO1xyXG5cclxuICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXREaWN0aW9uYXJ5RHJvcGRvd25FbnRyaWVzKGRpY3Rpb25hcnlOYW1lKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2Vjb25kYXJ5RGljdGlvbmFyeUVudHJpZXMucHVzaCh7ZGljdGlvbmFyeU5hbWU6IGRpY3Rpb25hcnlOYW1lLCBlbnRyaWVzOiByZXNwb25zZX0pO1xyXG4gICAgICAgICAgdGhpcy5nZXRTZWNvbmRhcnlEaWN0aW9uYXJpZXMoZGljdGlvbmFyeU5hbWVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmlzaENvbHVtblNldHVwKCkge1xyXG5cclxuICAgIHRoaXMuZGlzcGxheU5hbWUgPSB0aGlzLmRpY3Rpb25hcnkuZGlzcGxheU5hbWU7XHJcblxyXG4gICAgLy8gVGhpcyBlc3RhYmxpc2hlcyB0aGUgcmVhZE9ubHkgZnVuY3Rpb25hbGl0eVxyXG4gICAgbGV0IGNvbHM6IGFueVtdID0gW107XHJcblxyXG4gICAgLy8gUHJvY2VzcyBDb2x1bW5zIEFuZCBDcmVhdGUgQ29sdW1uIERlZmluaXRpb25cclxuICAgIGZvciAobGV0IGZpZWxkIG9mIHRoaXMuZGljdGlvbmFyeS5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLmlkICYmIChpc051bGxPclVuZGVmaW5lZChmaWVsZC5jb2RlKSB8fCBmaWVsZC5jb2RlID09IGZhbHNlKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgY29sOiBhbnk7XHJcblxyXG4gICAgICBpZiAoZmllbGQuZmlsdGVyRGljdGlvbmFyeUNsYXNzKSB7XHJcbiAgICAgICAgLy8gdGhpcyBpcyBhIGRyb3Bkb3duIG9mIGFub3RoZXIgZGljdGlvbmFyeVxyXG4gICAgICAgIGxldCBvcHRpb25zID0gdGhpcy5zZWNvbmRhcnlEaWN0aW9uYXJ5RW50cmllcy5maW5kKFxyXG4gICAgICAgICAgKGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gYS5kaWN0aW9uYXJ5TmFtZSA9PT0gZmllbGQuZmlsdGVyRGljdGlvbmFyeUNsYXNzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbCA9IHtcclxuICAgICAgICAgIGZpZWxkOiBmaWVsZC5uYW1lLFxyXG4gICAgICAgICAgaGVhZGVyTmFtZTogZmllbGQuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICBlZGl0YWJsZTogdGhpcy5pc0VkaXRhYmxlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjZWxsUmVuZGVyZXJGcmFtZXdvcms6IFNlbGVjdFJlbmRlcmVyLFxyXG4gICAgICAgICAgY2VsbEVkaXRvckZyYW1ld29yazogU2VsZWN0RWRpdG9yLFxyXG4gICAgICAgICAgc2VsZWN0T3B0aW9uc0Rpc3BsYXlGaWVsZDogXCJkaXNwbGF5XCIsXHJcbiAgICAgICAgICBzZWxlY3RPcHRpb25zVmFsdWVGaWVsZDogXCJpZFwiLFxyXG4gICAgICAgICAgc29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICBmaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICBmaWx0ZXJWYWx1ZUdldHRlcjogdGhpcy5jb21ib0ZpbHRlclZhbHVlR2V0dGVyLFxyXG4gICAgICAgICAgc2VsZWN0T3B0aW9uczogW10sXHJcbiAgICAgICAgICBjb21wYXJhdG9yOiAodmFsdWVBLCB2YWx1ZUIsIG5vZGVBLCBub2RlQiwgaXNJbnZlcnRlZCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmVudHJpZXMpIHtcclxuICAgICAgICAgIGNvbC5zZWxlY3RPcHRpb25zID0gb3B0aW9ucy5lbnRyaWVzLnNvcnQoXHJcbiAgICAgICAgICAgIChvcHRpb25BLCBvcHRpb25CKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbkEgJiYgIW9wdGlvbkIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbkIgJiYgIW9wdGlvbkEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmICghb3B0aW9uQSAmJiAhb3B0aW9uQikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAob3B0aW9uQS5kaXNwbGF5LnRvTG93ZXJDYXNlKCkgPiBvcHRpb25CLmRpc3BsYXkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICgob3B0aW9uQi5kaXNwbGF5LnRvTG93ZXJDYXNlKCkgPiBvcHRpb25BLmRpc3BsYXkudG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGNvbC5jb21wYXJhdG9yID0gKHZhbHVlQSwgdmFsdWVCLCBub2RlQSwgbm9kZUIsIGlzSW52ZXJ0ZWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmVudHJpZXMpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHZhbHVlQSAmJiAhdmFsdWVCKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh2YWx1ZUIgJiYgIXZhbHVlQSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCF2YWx1ZUEgJiYgIXZhbHVlQikge1xyXG4gICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgb3B0aW9uQSA9IG9wdGlvbnMuZW50cmllcy5maW5kKChlbnRyeSkgPT4gKFwiXCIgKyBlbnRyeS5pZCA9PT0gXCJcIiArIHZhbHVlQSkpO1xyXG4gICAgICAgICAgICBsZXQgb3B0aW9uQiA9IG9wdGlvbnMuZW50cmllcy5maW5kKChlbnRyeSkgPT4gKFwiXCIgKyBlbnRyeS5pZCA9PT0gXCJcIiArIHZhbHVlQikpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG9wdGlvbkEgJiYgIW9wdGlvbkIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKG9wdGlvbkIgJiYgIW9wdGlvbkEpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghb3B0aW9uQSAmJiAhb3B0aW9uQikge1xyXG4gICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9uQS5kaXNwbGF5LnRvTG93ZXJDYXNlKCkgPiBvcHRpb25CLmRpc3BsYXkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKChvcHRpb25CLmRpc3BsYXkudG9Mb3dlckNhc2UoKSA+IG9wdGlvbkEuZGlzcGxheS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbC5jZWxsU3R5bGUgPSBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgbGV0IGNvbHVtbjogYW55ID0ge307XHJcblxyXG4gICAgICAgICAgZm9yIChsZXQgZmllbGQgb2YgcGFyYW1zLmNvbnRleHQuY29tcG9uZW50UGFyZW50LmRpY3Rpb25hcnkuZmllbGRzKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY29sRGVmLmZpZWxkID09IGZpZWxkLm5hbWUpIHtcclxuICAgICAgICAgICAgICBjb2x1bW4gPSBmaWVsZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChwYXJhbXMuZGF0YS5lZGl0T3JOZXcgJiYgcGFyYW1zLmRhdGEuZWRpdE9yTmV3ID09IFwibmV3XCIpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb250ZXh0LnJlYWRPbmx5IHx8IGNvbHVtbi5yZWFkT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIlJlYWQgT25seVwiKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbnRleHQucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIgfHwgY29sdW1uLmNyZWF0ZU9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJDcmVhdGUgT25seVwiIHx8IGNvbHVtbi5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29sLmRpc3BsYXlPcmRlciA9IGZpZWxkLmRpc3BsYXlPcmRlcjtcclxuICAgICAgICBjb2wuZGljdGlvbmFyeURpc3BsYXkgPSBmaWVsZC5kaWN0aW9uYXJ5RGlzcGxheTtcclxuICAgICAgICBjb2wuZGljdGlvbmFyeVRvb2x0aXAgPSBmaWVsZC5kaWN0aW9uYXJ5VG9vbHRpcDtcclxuXHJcbiAgICAgICAgLy8gU2V0IGRlZmF1bHQgZmlsdGVyIGFzIGNvbXBhcmUgYnkgdGV4dC9udW1iZXJcclxuICAgICAgICAvLyBjb2wuZmlsdGVyUmVuZGVyZXIgPSBDb21wYXJlRmlsdGVyUmVuZGVyZXI7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSAmJiBmaWVsZC50eXBlID09IFwiRGF0ZVwiKSB7XHJcbiAgICAgICAgLy9kYXRlIHZhbHVlXHJcbiAgICAgICAgY29sID0ge1xyXG4gICAgICAgICAgZmllbGQ6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgICBoZWFkZXJOYW1lOiBmaWVsZC5kaXNwbGF5TmFtZSxcclxuICAgICAgICAgIGNlbGxSZW5kZXJlckZyYW1ld29yazogRGF0ZVJlbmRlcmVyLFxyXG4gICAgICAgICAgY2VsbEVkaXRvckZyYW1ld29yazogQWdHcmlkRGF0ZUNlbGxFZGl0b3JDb21wb25lbnQsXHJcbiAgICAgICAgICBlZGl0YWJsZTogdGhpcy5pc0VkaXRhYmxlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIGZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgIGRpY3Rpb25hcnlEaXNwbGF5OiBmaWVsZC5kaWN0aW9uYXJ5RGlzcGxheVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbC5jb21wYXJhdG9yID0gKHZhbHVlQSwgdmFsdWVCLCBub2RlQSwgbm9kZUIsIGlzSW52ZXJ0ZWQpID0+IHtcclxuICAgICAgICAgIGxldCBudW0gPSB0aGlzLmRhdGVDb21wYXJhdG9yKHZhbHVlQSwgdmFsdWVCKTtcclxuICAgICAgICAgIHJldHVybiBpc0ludmVydGVkID8gLTEgKiBudW0gOiBudW07IC8vZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGluZyB3aXRoIGludmVydGVkP1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbC5jZWxsU3R5bGUgPSBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgdmFyIGNvbHVtbjogYW55ID0ge307XHJcbiAgICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiBwYXJhbXMuY29udGV4dC5jb21wb25lbnRQYXJlbnQuZGljdGlvbmFyeS5maWVsZHMpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb2xEZWYuZmllbGQgPT0gZmllbGQubmFtZSkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbiA9IGZpZWxkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHBhcmFtcy5kYXRhLmVkaXRPck5ldyAmJiBwYXJhbXMuZGF0YS5lZGl0T3JOZXcgPT0gXCJuZXdcIikge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbnRleHQucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge2NvbG9yOiBcIiM4YTk0OTlcIn07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY29udGV4dC5yZWFkT25seSB8fCBjb2x1bW4ucmVhZE9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJSZWFkIE9ubHlcIiB8fCBjb2x1bW4uY3JlYXRlT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIkNyZWF0ZSBPbmx5XCIgfHwgY29sdW1uLmNvZGUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge2NvbG9yOiBcIiM4YTk0OTlcIn07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb2wuZGlzcGxheU9yZGVyID0gZmllbGQuZGlzcGxheU9yZGVyO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHRoaXMgaXMgYSBzdHJpbmcgdmFsdWVcclxuICAgICAgICBjb2wgPSB7XHJcbiAgICAgICAgICBmaWVsZDogZmllbGQubmFtZSxcclxuICAgICAgICAgIGhlYWRlck5hbWU6IGZpZWxkLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgZWRpdGFibGU6IHRoaXMuaXNFZGl0YWJsZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgc29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICBmaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICBkaWN0aW9uYXJ5RGlzcGxheTogZmllbGQuZGljdGlvbmFyeURpc3BsYXlcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb2wuY29tcGFyYXRvciA9ICh2YWx1ZUEsIHZhbHVlQiwgbm9kZUEsIG5vZGVCLCBpc0ludmVydGVkKSA9PiB7XHJcbiAgICAgICAgICBpZiAodmFsdWVBICYmICF2YWx1ZUIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHZhbHVlQiAmJiAhdmFsdWVBKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoIXZhbHVlQSAmJiAhdmFsdWVCKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh2YWx1ZUEudG9Mb3dlckNhc2UoKSA+IHZhbHVlQi50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICgodmFsdWVCLnRvTG93ZXJDYXNlKCkgPiB2YWx1ZUEudG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29sLmNlbGxTdHlsZSA9IHBhcmFtcyA9PiB7XHJcbiAgICAgICAgICB2YXIgY29sdW1uOiBhbnkgPSB7fTtcclxuICAgICAgICAgIGZvciAobGV0IGZpZWxkIG9mIHBhcmFtcy5jb250ZXh0LmNvbXBvbmVudFBhcmVudC5kaWN0aW9uYXJ5LmZpZWxkcykge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbERlZi5maWVsZCA9PSBmaWVsZC5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uID0gZmllbGQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChwYXJhbXMuZGF0YS5lZGl0T3JOZXcgJiYgcGFyYW1zLmRhdGEuZWRpdE9yTmV3ID09IFwibmV3XCIpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb250ZXh0LnJlYWRPbmx5IHx8IGNvbHVtbi5yZWFkT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIlJlYWQgT25seVwiKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbnRleHQucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIgfHwgY29sdW1uLmNyZWF0ZU9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJDcmVhdGUgT25seVwiIHx8IGNvbHVtbi5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29sLmRpc3BsYXlPcmRlciA9IGZpZWxkLmRpc3BsYXlPcmRlcjtcclxuICAgICAgICAvLyBTZXQgZGVmYXVsdCBmaWx0ZXIgYXMgY29tcGFyZSBieSB0ZXh0L251bWJlclxyXG4gICAgICAgIC8vIGNvbC5maWx0ZXJSZW5kZXJlciA9IENvbXBhcmVGaWx0ZXJSZW5kZXJlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29scy5wdXNoKGNvbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTm93IHdlIG5lZWQgdG8gc29ydCB0aGUgY29sdW1uc1xyXG4gICAgaWYgKCF0aGlzLmRpY3Rpb25hcnkuZmllbGRzWzBdLmhhc093blByb3BlcnR5KFwiZGlzcGxheU9yZGVyXCIpKSB7XHJcbiAgICAgIC8vIGRlZmF1bHQgY2FzZSwgbm8gZGlzcGxheU9yZGVyXHJcbiAgICAgIGNvbHMgPSBjb2xzLnNvcnQoXHJcbiAgICAgICAgKGEsIGIpID0+IHtcclxuICAgICAgICAgIGlmICghYS5oZWFkZXJOYW1lICYmIGIuaGVhZGVyTmFtZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIWIuaGVhZGVyTmFtZSAmJiBhLmhlYWRlck5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChhLmRpY3Rpb25hcnlEaXNwbGF5ID09PSB0cnVlICYmIGIuZGljdGlvbmFyeURpc3BsYXkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoYi5kaWN0aW9uYXJ5RGlzcGxheSA9PT0gdHJ1ZSAmJiBhLmRpY3Rpb25hcnlEaXNwbGF5ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoYS5kaWN0aW9uYXJ5VG9vbHRpcCA9PT0gdHJ1ZSAmJiBiLmRpY3Rpb25hcnlUb29sdGlwID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGIuZGljdGlvbmFyeVRvb2x0aXAgPT09IHRydWUgJiYgYS5kaWN0aW9uYXJ5VG9vbHRpcCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRGlzcGxheU9yZGVyIGNhc2VcclxuICAgICAgLy8gSSB0aGluayB0aGlzIHdvcmtzPyBDaGVjayBsYXRlclxyXG4gICAgICBjb2xzID0gY29scy5zb3J0KFxyXG4gICAgICAgIChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWEuaGVhZGVyTmFtZSAmJiBiLmhlYWRlck5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKCFiLmhlYWRlck5hbWUgJiYgYS5oZWFkZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhLmRpc3BsYXlPcmRlciAtIGIuZGlzcGxheU9yZGVyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBZnRlciBDb2x1bW5zIEhhdmUgQmVlbiBTb3J0ZWRcclxuICAgIC8vIERpY3Rpb25hcnkgR3JpZCBXaWxsIFNvcnQgVGhlIEdyaWQgQXNjZW5kaW5nIE9yZGVyIEJ5IEZpcnN0IENvbHVtblxyXG4gICAgaWYoY29scyAgJiYgY29scy5sZW5ndGggIT0gMCkge1xyXG4gICAgICBjb2xzWzBdLnNvcnQgPSBcImFzY1wiO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YUNvbHVtbnMgPSBjb2xzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhQ29sdW1ucykgJiYgdGhpcy5ncmlkT3B0aW9ucyAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaSkge1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRDb2x1bW5EZWZzKHRoaXMuZGF0YUNvbHVtbnMpO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0VkaXRhYmxlKHBhcmFtcyk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGxldCBpc0VkaXRhYmxlOiBib29sZWFuO1xyXG5cclxuICAgIGxldCBjb2x1bW46IGFueSA9IHt9O1xyXG4gICAgZm9yIChsZXQgZmllbGQgb2YgdGhpcy5kaWN0aW9uYXJ5LmZpZWxkcykge1xyXG4gICAgICBpZiAocGFyYW1zLmNvbERlZi5maWVsZCA9PSBmaWVsZC5uYW1lKSB7XHJcbiAgICAgICAgY29sdW1uID0gZmllbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocGFyYW1zLmRhdGEuZWRpdE9yTmV3ICYmIHBhcmFtcy5kYXRhLmVkaXRPck5ldyA9PSBcIm5ld1wiKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwibmV3IGVkaXRhYmxlP1wiKTtcclxuICAgICAgaXNFZGl0YWJsZSA9ICEodGhpcy5kaWN0aW9uYXJ5LnJlYWRPbmx5IHx8IGNvbHVtbi5yZWFkT25seSB8fFxyXG4gICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIlJlYWQgT25seVwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiZWRpdCBlZGl0YWJsZT9cIik7XHJcbiAgICAgIGlzRWRpdGFibGUgPSAhKHRoaXMuZGljdGlvbmFyeS5yZWFkT25seSB8fCBjb2x1bW4ucmVhZE9ubHkgfHxcclxuICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJSZWFkIE9ubHlcIiB8fCBjb2x1bW4uY3JlYXRlT25seSB8fFxyXG4gICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIkNyZWF0ZSBPbmx5XCIgfHwgY29sdW1uLmNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpc0VkaXRhYmxlO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRGljdGlvbmFyeUVudHJpZXMoKTogdm9pZCB7XHJcblxyXG4gICAgbGV0IGRlbGV0ZVJvd3M6IGFueVtdID0gdGhpcy5ncmlkT3B0aW9ucy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCk7XHJcblxyXG4gICAgZm9yIChsZXQgZGVsZXRlSWQgb2YgdGhpcy5zZWxlY3RlZFJvd3MpIHtcclxuICAgICAgZm9yIChsZXQgZW50cnkgb2YgdGhpcy5kaWN0aW9uYXJ5RW50cmllcykge1xyXG4gICAgICAgIGlmIChlbnRyeVt0aGlzLmlkQ29sdW1uXSA9PT0gZGVsZXRlSWQpIHtcclxuICAgICAgICAgIGRlbGV0ZVJvd3MucHVzaChlbnRyeSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmRlbGV0ZURpY3Rpb25hcnlFbnRyaWVzKHRoaXMuY2xhc3NOYW1lLCBkZWxldGVSb3dzKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXREaWN0aW9uYXJ5RW50cmllcygpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGljdGlvbmFyeShldmVudDogYW55KTogdm9pZCB7XHJcblxyXG4gICAgLy8gSW1wb3J0YW50IHRvIG5vdGUgdGhpcyB3aWxsIG5vdCB1cGRhdGUgY2VsbHMgdG8gdGhlIGRlbW8gYnV0IHdpbGwgd2hlbiBpbXBvcnRlZCB0byBDT1JFIG9yIG90aGVyIGFwcGxpY2F0aW9ucy5cclxuICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UudXBkYXRlRGljdGlvbmFyeUVudHJpZXModGhpcy5jbGFzc05hbWUsIFtldmVudC5kYXRhXSkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55W10pID0+IHtcclxuICAgICAgICB0aGlzLmdldERpY3Rpb25hcnlFbnRyaWVzKCk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZEVudHJpZXMoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICB9XHJcblxyXG4gIG5ld1Jvd1Bvc3QoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5hZGREaWN0aW9uYXJ5RW50cmllcyh0aGlzLmNsYXNzTmFtZSwgW2RhdGFdKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoXHJcbiAgICAgICAgICAoZGF0YTogT2JqZWN0W10pID0+IHtcclxuICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gPGFueT5kYXRhWzBdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBvblNhbXBsZXNHcmlkUmVhZHkoZXZlbnQ6IEdyaWRSZWFkeUV2ZW50KTogdm9pZCB7XHJcblxyXG4gICAgZXZlbnQuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgb25HcmlkU2l6ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xyXG5cclxuICAgIGlmIChldmVudCAmJiBldmVudC5hcGkpIHtcclxuICAgICAgZXZlbnQuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGlzYWJsZUFkZFJvdygpOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGljdGlvbmFyeSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5kaWN0aW9uYXJ5LnJlYWRPbmx5ICYmIHRoaXMuZGljdGlvbmFyeS5yZWFkT25seSA9PT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGlzYWJsZURlbGV0ZSgpOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGljdGlvbmFyeSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kaWN0aW9uYXJ5LnJlYWRPbmx5ICYmIHRoaXMuZGljdGlvbmFyeS5yZWFkT25seSA9PT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucyAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaSAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoID09PSAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbWJvRmlsdGVyVmFsdWVHZXR0ZXIocGFyYW1zKTogYW55IHtcclxuXHJcbiAgICBsZXQgdmFsdWUgPSBwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLmZpZWxkXTtcclxuXHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgbGV0IG9wdGlvbiA9ICgocGFyYW1zLmNvbERlZiBhcyBhbnkpLnNlbGVjdE9wdGlvbnMgYXMgYW55W10pLmZpbmQoKGVudHJ5KSA9PiAoZW50cnlbcGFyYW1zLmNvbERlZi5zZWxlY3RPcHRpb25zVmFsdWVGaWVsZF0gPT09IHZhbHVlKSk7XHJcbiAgICAgIHJldHVybiBvcHRpb24gPyBvcHRpb25bcGFyYW1zLmNvbERlZi5zZWxlY3RPcHRpb25zRGlzcGxheUZpZWxkXSA6IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQWRkUm93KCkge1xyXG5cclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihOZXdSb3dDb21wb25lbnQsXHJcbiAgICAgIHtcclxuICAgICAgICBzaXplOiBcImxnXCIsXHJcbiAgICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxyXG4gICAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLFxyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNvbERlZnMgPSB0aGlzLmRhdGFDb2x1bW5zO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGljdGlvbmFyeSA9IHRoaXMuZGljdGlvbmFyeTtcclxuXHJcbiAgICBpZiAoIXRoaXMubmV3Um93U3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIC8vIHRlbGwgb3RoZXIgYWctZ3JpZCB0byBhZGQgcm93IHRvIGl0XHJcbiAgICAgIHRoaXMubmV3Um93U3Vic2NyaXB0aW9uID0gbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UubmV3Um93U3ViamVjdC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHRoZU5ld1JvdzogYW55W10pID0+IHtcclxuICAgICAgICAgIHRoaXMuZGljdGlvbmFyeUVudHJpZXMgPSB0aGVOZXdSb3cuY29uY2F0KHRoaXMuZGljdGlvbmFyeUVudHJpZXMpO1xyXG4gICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuc2V0Um93RGF0YSh0aGlzLmRpY3Rpb25hcnlFbnRyaWVzKTtcclxuICAgICAgICAgIHRoaXMubmV3Um93U3Vic2NyaXB0aW9uID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAvLyBJbXBvcnRhbnQgdG8gbm90ZSB0aGlzIHdpbGwgbm90IGFkZCByb3dzIHRvIHRoZSBkZW1vIGJ1dCB3aWxsIHdoZW4gaW1wb3J0ZWQgdG8gQ09SRSBvciBvdGhlciBhcHBsaWNhdGlvbnMuXHJcbiAgICAgICAgICB0aGlzLm5ld1Jvd1Bvc3QodGhlTmV3Um93WzBdKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmdldERpY3Rpb25hcnlFbnRyaWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcGFyYXRlciBUbyBDb21wYXJlIDIgRGF0ZXNcclxuICAgKiBAcGFyYW0gZGF0ZTEgRGF0ZSAxXHJcbiAgICogQHBhcmFtIGRhdGUyIERhdGUgMlxyXG4gICAqL1xyXG4gIGRhdGVDb21wYXJhdG9yKGRhdGUxLCBkYXRlMikge1xyXG5cclxuICAgIGxldCBkYXRlMU51bWJlciA9IG1vbnRoVG9Db21wYXJhYmxlTnVtYmVyKGRhdGUxKTtcclxuICAgIGxldCBkYXRlMk51bWJlciA9IG1vbnRoVG9Db21wYXJhYmxlTnVtYmVyKGRhdGUyKTtcclxuXHJcbiAgICBpZiAoZGF0ZTFOdW1iZXIgPT09IG51bGwgJiYgZGF0ZTJOdW1iZXIgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGUxTnVtYmVyID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiAtMTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0ZTJOdW1iZXIgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGUxTnVtYmVyIC0gZGF0ZTJOdW1iZXI7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogRXh0cmFjdHMgRGF0ZSBBbmQgVHVybiBUbyBBIE51bWVyaWNhbCBWYWx1ZSBGb3IgQ29tcGFyaW5nIFB1cnBvc2VzXHJcbiAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNvbXBhcmFibGUgbnVtYmVyXHJcbiAqL1xyXG5mdW5jdGlvbiBtb250aFRvQ29tcGFyYWJsZU51bWJlcihkYXRlKSB7XHJcblxyXG4gIGlmIChkYXRlID09PSB1bmRlZmluZWQgfHwgZGF0ZSA9PT0gbnVsbCB8fCBkYXRlLmxlbmd0aCAhPT0gMTApIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgbGV0IHllYXJOdW1iZXIgPSBkYXRlLnN1YnN0cmluZygwLCA0KTtcclxuICBsZXQgbW9udGhOdW1iZXIgPSBkYXRlLnN1YnN0cmluZyg1LCA3KTtcclxuICBsZXQgZGF5TnVtYmVyID0gZGF0ZS5zdWJzdHJpbmcoOCwgMTApO1xyXG5cclxuICByZXR1cm4geWVhck51bWJlciAqIDEwMDAwICsgbW9udGhOdW1iZXIgKiAxMDAgKyBkYXlOdW1iZXI7XHJcbn1cclxuIl19
|
|
773
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2RpY3Rpb25hcnktZWRpdG9yL3NyYy9jb21wb25lbnRzL2RldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFhLFdBQVcsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQWMsTUFBTSw0QkFBNEIsQ0FBQztBQUVqRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQVFyRyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDakUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7O0FBRWpHOzs7Ozs7OztHQVFHO0FBZ01ILE1BQU0sT0FBTywrQkFBK0I7SUE4QjFDLFlBQ1UsS0FBcUIsRUFDckIsWUFBc0IsRUFDdEIsaUJBQW9DLEVBQ1Asa0JBQTBCO1FBSHZELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3RCLHNC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RUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDekcsRUFBQyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDbkksRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDM0YsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQztZQUN0RyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDO1lBQzlGLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDOUYsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDN0YsRUFBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFB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LENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtRQUM3RCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFdEMsT0FBTyxVQUFVLEdBQUcsS0FBSyxHQUFHLFdBQVcsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDO0FBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBpc0Rldk1vZGUsIFZpZXdDaGlsZCwgSG9zdEJpbmRpbmcsIFRlbXBsYXRlUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtmaW5hbGl6ZSwgbWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtOZ2JNb2RhbCwgTmdiTW9kYWxSZWZ9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5cclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZSwgRElDVElPTkFSWV9FTkRQT0lOVH0gZnJvbSBcIkBodW50c21hbi1jYW5jZXItaW5zdGl0dXRlL2RpY3Rpb25hcnktc2VydmljZVwiO1xyXG5cclxuaW1wb3J0IHtcclxuICBDb2x1bW5BcGksXHJcbiAgR3JpZE9wdGlvbnMsXHJcbiAgR3JpZFJlYWR5RXZlbnQsXHJcbiAgR3JpZEFwaVxyXG59IGZyb20gXCJhZy1ncmlkLWNvbW11bml0eVwiO1xyXG5pbXBvcnQge1NlbGVjdFJlbmRlcmVyfSBmcm9tIFwiLi4vZ3JpZC1yZW5kZXJlcnMvc2VsZWN0LnJlbmRlcmVyXCI7XHJcbmltcG9ydCB7U2VsZWN0RWRpdG9yfSBmcm9tIFwiLi4vZ3JpZC1lZGl0b3JzL3NlbGVjdC5lZGl0b3JcIjtcclxuaW1wb3J0IHtOZXdSb3dDb21wb25lbnR9IGZyb20gXCIuL25ldy1yb3cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJ1dGlsXCI7XHJcbmltcG9ydCB7RGF0ZVJlbmRlcmVyfSBmcm9tIFwiLi4vZ3JpZC1yZW5kZXJlcnMvZGF0ZS5yZW5kZXJlclwiO1xyXG5pbXBvcnQge0FnR3JpZERhdGVDZWxsRWRpdG9yQ29tcG9uZW50fSBmcm9tIFwiLi4vZ3JpZC1lZGl0b3JzL2FnLWdyaWQtZGF0ZS1jZWxsLWVkaXRvci5jb21wb25lbnRcIjtcclxuXHJcbi8qKlxyXG4gKiBXaGVuIGEgZGljdGlvbmFyeSBpcyBzZWxlY3RlZCB0aGlzIGNvbXBvbmVudCBpcyBzaG93bi4gIFRoZXJlIGlzIGEgdG9wIGdyaWQgd2hpY2ggZm9yIGl0cyBkYXRhIHNob3dzIGFsbCB0aGUgY29sdW1uc1xyXG4gKiBmb3IgdGhlIGRpY3Rpb25hcnkuIEN1cnJlbnRseSwga2VlcCB0aGlzIGZvciByZWZlcmVuY2Ugb25seSBhbmQgaGF2ZSBub24tZWRpdGFibGUuXHJcbiAqIFRoZSBib3R0b20gZ3JpZCB3aWxsIHNob3cgdGhvc2UgY29sdW1ucyBhcyBhY3R1YWwgY29sdW1ucyBhbmQgaXRzIGRhdGEgYXJlIGFsbCB0aGUgZGljdGlvbmFyeSB2YWx1ZXMuICBSb3dzIGNhbiBiZVxyXG4gKiBhZGRlZC4gIEZvciBkZWxldGluZywgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGlkIGlzIG5vdCB1c2VkIGFueXdoZXJlLiAgRm9yIGVkaXRpbmcsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIG9yIGFueXRoaW5nXHJcbiAqIGVsc2UgaXNuJ3QgYmVpbmcgcmVmZXJlbmNlZC5cclxuICpcclxuICogQHNpbmNlIDEuMC4wXHJcbiAqL1xyXG5AQ29tcG9uZW50KFxyXG4gIHtcclxuICAgIHNlbGVjdG9yOiBcImhjaS1kaWN0aW9uYXJ5LWVkaXRvci1kZXRhaWxcIixcclxuICAgIHRlbXBsYXRlOlxyXG4gICAgICBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBoY2ktZGljdGlvbmFyeS1kZXRhaWwtYm9keVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGhjaS1idXN5IFtidXN5U3ViamVjdHNdPVwibG9hZGluZ1N1YmplY3RzXCI+PC9oY2ktYnVzeT5cclxuXHJcbiAgICAgICAgICA8IS0tIERpY3Rpb25hcnkgVGl0bGUgQW5kIE1ldGFkYXRhIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRpY3Rpb25hcnktaW5mby1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGljdGlvbmFyeS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgIHt7ZGlzcGxheU5hbWV9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWV0YWRhdGEtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3Blbk1vZGFsKG1ldGFEYXRhTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgVmlldyBNZXRhIERhdGFcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIERpY3Rpb25hcnkgRWRpdCBCdXR0b25zIC0tPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBbY2xhc3NdPVwiZGlzYWJsZURlbGV0ZT8gJ2RlYWN0aXZhdGVkLWNvbG9yJzogJ2FjdGl2ZS1jb2xvcidcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlRGVsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkFyZVlvdVN1cmVNb2RhbChhcmVZb3VTdXJlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbWludXNcIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHN0eWxlPVwiY29sb3I6IHZhcigtLWJsdWV3YXJtLWRhcmspOyBmbG9hdDogcmlnaHQ7IGZvbnQtc2l6ZTogMTVweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlQWRkUm93XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0FkZFJvdygpXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIERpY3Rpb25hcnkgRGlzcGxheSBHcmlkIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyIGlkPVwiZGljdGlvbmFyeS1ncmlkLWRpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkYXRhR3JpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtIGZ1bGwtaGVpZ2h0IGZ1bGwtd2lkdGggaGNpLWRpY3RvaW5hcnktZGlzcGxheS1ncmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93RGF0YV09XCJkaWN0aW9uYXJ5RW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd1NlbGVjdGlvbl09XCInbXVsdGlwbGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2luZ2xlQ2xpY2tFZGl0XT1cIid0cnVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2luYXRpb25dPVwiJ3RydWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnaW5hdGlvbkF1dG9QYWdlU2l6ZV09XCIndHJ1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNlbGxWYWx1ZUNoYW5nZWQpPVwidXBkYXRlRGljdGlvbmFyeSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gRGljdGlvbmFyeSBNZXRhZGF0YSBQb3B1cCAtLT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbWV0YURhdGFNb2RhbCBsZXQtY2xvc2U9XCJjbG9zZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MTAwMHB4XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgTWV0YSBEYXRhIGZvciB7e2NsYXNzTmFtZX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBtb2RhbC1ib2R5XCJcclxuICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsgd2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyICNtZXRhR3JpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbSBmdWxsLXdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDI1MHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncmlkUmVhZHkpPVwidGhpcy5vbk1ldGFHcmlkUmVhZHkoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJ0aGlzLm1ldGFHcmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dTZWxlY3Rpb25dPVwiJ3NpbmdsZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZnJhbWV3b3JrQ29tcG9uZW50c109XCJmcmFtZXdvcmtDb21wb25lbnRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZGljdGlvbmFyeT8uZmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImNsb3NlKCdDbG9zZScpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDwhLS0gRGljdGlvbmFyeSBEZWxldGUgQ29tZmlybWF0aW9uIFBvcHVwIC0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNhcmVZb3VTdXJlTW9kYWwgbGV0LWNsb3NlPVwiY2xvc2VcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgIENvbmZpcm1hdGlvblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgQXJlIHlvdSBzdXJlP1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiY2xvc2UoJ0NhbmNlbCcpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tcmVkXCIgKGNsaWNrKT1cImNsb3NlKCdEZWxldGUnKVwiPkRlbGV0ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIGAsXHJcbiAgICBzdHlsZXM6IFtcclxuICAgICAgYFxyXG4gICAgICAgIC5mdWxsLWhlaWdodCB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZnVsbC13aWR0aCB7XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5hZy10aGVtZS1iYWxoYW0ge1xyXG4gICAgICAgICAgZm9udC1mYW1pbHk6IFwiUHJvbXB0XCI7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmFjdGl2ZS1jb2xvciB7XHJcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZXdhcm0tZGFyayk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZGVhY3RpdmF0ZWQtY29sb3Ige1xyXG4gICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xyXG4gICAgICAgICAgY29sb3I6IHZhcigtLWdyZXl3YXJtLW1lZGxpZ2h0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5kaWN0aW9uYXJ5LWluZm8tc2VjdGlvbiB7XHJcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5kaWN0aW9uYXJ5LXRpdGxlIHtcclxuICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcclxuICAgICAgICAgIHBhZGRpbmctdG9wOiA1cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAubWV0YWRhdGEtYnV0dG9uIHtcclxuICAgICAgICAgIGNvbG9yOiB2YXIoLS13aGl0ZS1saWdodGVzdCk7XHJcbiAgICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1oZWFkZXItY2VsbCB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVld2FybXZpdmlkZmFkZS1saWdodGVzdCk7XHJcbiAgICAgICAgICBib3JkZXI6IGxpZ2h0Z3JheSBzb2xpZCB0aGluO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmFnLWNlbGwge1xyXG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiBsaWdodGdyYXkgc29saWQgdGhpbjtcclxuICAgICAgICAgIGJvcmRlci1sZWZ0OiBsaWdodGdyYXkgc29saWQgdGhpbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1yb3cge1xyXG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgICAgIGJvcmRlci10b3A6IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA6aG9zdDo6bmctZGVlcCAuYWctcm93LWV2ZW4ge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td2hpdGUtbWVkaXVtKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5oY2ktZGljdGlvbmFyeS1kZXRhaWwtYm9keSB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCB2YXIoLS13aGl0ZS1saWdodGVzdCkgMzAlLCB2YXIoLS1ibHVld2FybXZpdmlkZmFkZS1saWdodGVyKSAxMDAlKSAhaW1wb3J0YW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmhjaS1kaWN0b2luYXJ5LWRpc3BsYXktZ3JpZCB7XHJcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XHJcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcclxuICAgICAgICAgIGJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNSkgMHB4IDVweCAxNXB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgKiBEaWN0aW9uYXJ5IFJvdyBIb3ZlciBDU1NcclxuICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgICA6aG9zdDo6bmctZGVlcCAuYWctcm93LWhvdmVyIHtcclxuICAgICAgICAgIGNvbG9yOiAjNjY2ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVld2FybXZpdmlkZmFkZS1saWdodGVyKSAhaW1wb3J0YW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgKiBEaWN0aW9uYXJ5IENlbGwgU2VsZWN0ZWQgQ1NTXHJcbiAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmFnLXJvdy1zZWxlY3RlZCAuYWctY2VsbCB7XHJcbiAgICAgICAgICBjb2xvcjogdmFyKC0td2hpdGUtbGlnaHRlc3QpICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAqIERpY3Rpb25hcnkgUm93IFNlbGVjdGVkIENTU1xyXG4gICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1yb3ctc2VsZWN0ZWQge1xyXG4gICAgICAgICAgY29sb3I6IHZhcigtLXdoaXRlLWRhcmtlcikgIWltcG9ydGFudDtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdWV3YXJtdml2aWQtbGlnaHRlcikgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcbiAgICAgIGBcclxuICAgIF1cclxuICB9XHJcbilcclxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlFZGl0b3JEZXRhaWxDb21wb25lbnQge1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBjbGFzc0xpc3Q6IHN0cmluZyA9IFwib3V0bGV0LWNvbHVtbiB5LWF1dG9cIjtcclxuXHJcbiAgcHJpdmF0ZSBzZWNvbmRhcnlEaWN0aW9uYXJ5RW50cmllczogYW55O1xyXG4gIGNsYXNzTmFtZTogc3RyaW5nO1xyXG4gIGRpc3BsYXlOYW1lOiBhbnk7XHJcbiAgZGljdGlvbmFyeTogYW55O1xyXG4gIGRpY3Rpb25hcnlFbnRyaWVzOiBhbnlbXSA9IFtdO1xyXG4gIGRhdGFDb2x1bW5zOiBhbnlbXTtcclxuXHJcbiAgaWRDb2x1bW46IHN0cmluZztcclxuICBzZWxlY3RlZFJvd3M6IGFueVtdID0gW107XHJcbiAgbG9hZGluZ1N1YmplY3RzOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj5bXSA9IFtdO1xyXG5cclxuICBib3VuZE5ld1Jvd1Bvc3RDYWxsOiAoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xyXG4gIG5ld1Jvd1N1YnNjcmlwdGlvbjogYW55O1xyXG5cclxuICBtZXRhR3JpZE9wdGlvbnMgPSB7XHJcbiAgICByb3dTdHlsZToge1xyXG4gICAgICBcImZvbnQtZmFtaWx5XCI6IFwiUHJvbXB0LCBzYW5zLXNlcmlmXCJcclxuICAgIH0sXHJcbiAgICBlbmFibGVDZWxsVGV4dFNlbGVjdGlvbjogdHJ1ZSxcclxuICAgIGVuc3VyZURvbU9yZGVyOiB0cnVlXHJcbiAgfTtcclxuICBmcmFtZXdvcmtDb21wb25lbnRzOiBhbnk7XHJcbiAgcHVibGljIGdyaWRBcGlNZXRhOiBHcmlkQXBpO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgQEluamVjdChESUNUSU9OQVJZX0VORFBPSU5UKSBwcml2YXRlIGRpY3Rpb25hcnlFbmRwb2ludDogc3RyaW5nXHJcbiAgKSB7XHJcblxyXG4gICAgdGhpcy5ncmlkT3B0aW9ucyA9IDxHcmlkT3B0aW9ucz57XHJcbiAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICBjb21wb25lbnRQYXJlbnQ6IHRoaXNcclxuICAgICAgfSxcclxuICAgICAgb25HcmlkUmVhZHk6IERpY3Rpb25hcnlFZGl0b3JEZXRhaWxDb21wb25lbnQub25TYW1wbGVzR3JpZFJlYWR5LFxyXG4gICAgICBvbkdyaWRTaXplQ2hhbmdlZDogRGljdGlvbmFyeUVkaXRvckRldGFpbENvbXBvbmVudC5vbkdyaWRTaXplQ2hhbmdlZCxcclxuICAgICAgc3VwcHJlc3NIb3Jpem9udGFsU2Nyb2xsOiBmYWxzZSxcclxuICAgICAgc2VsZWN0aW9uTW9kZTogXCJtdWx0aXBsZVwiLFxyXG4gICAgICBzdG9wRWRpdGluZ1doZW5HcmlkTG9zZXNGb2N1czogdHJ1ZSxcclxuICAgICAgZW5hYmxlU29ydGluZzogdHJ1ZSxcclxuICAgICAgZW5hYmxlRmlsdGVyOiB0cnVlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmFzZWQgb24gdGhlIHJvdXRlIGNsYXNzIG5hbWUsIG1ha2UgdGhlIGNhbGwgdG8gZmV0Y2ggdGhlIGRpY3Rpb25hcnkgZGF0YS4gIFNpbmNlIHRoaXMgY29tcG9uZW50IGlzIHJvdXRlIGJhc2VkLFxyXG4gICAqIHdoZW4gdGhlIGRpY3Rpb25hcnkgY2xhc3MgaW4gdGhlIHJvdXRlIGNoYW5nZXMsIHRoaXMgY29tcG9uZW50IGlzIHJlbG9hZGVkLlxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMuYm91bmROZXdSb3dQb3N0Q2FsbCA9IHRoaXMubmV3Um93UG9zdC5iaW5kKHRoaXMpO1xyXG5cclxuICAgIHRoaXMubG9hZGluZ1N1YmplY3RzLnB1c2gobmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSkpO1xyXG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdHMucHVzaChuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKSk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKFxyXG4gICAgICBwYXJhbXMgPT4ge1xyXG4gICAgICAgIGxldCBjbGFzc05hbWU6IHN0cmluZyA9IHBhcmFtc1tcImNsYXNzTmFtZVwiXTtcclxuXHJcbiAgICAgICAgdGhpcy5nZXREaWN0aW9uYXJ5KGNsYXNzTmFtZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvcGVuTW9kYWwobW9kYWw6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKG1vZGFsLCB7d2luZG93Q2xhc3M6IFwibW9kYWwteGxcIn0pLnJlc3VsdC50aGVuKFxyXG4gICAgICAocmVzdWx0KSA9PiB7XHJcbiAgICAgIH0sXHJcbiAgICAgIChyZWFzb24pID0+IHtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHJcbiAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29sdW1uRGVmTWV0YSgpIDogYW55W10ge1xyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtmaWVsZDogXCJuYW1lXCIsIGhlYWRlck5hbWU6IFwiTmFtZVwiLCB3aWR0aDogMTc1LCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZGVzY3JpcHRpb25cIiwgaGVhZGVyTmFtZTogXCJEZXNjcmlwdGlvblwiLCB3aWR0aDogMjUwLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiaWRcIiwgaGVhZGVyTmFtZTogXCJJZFwiLCB3aWR0aDogNjAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJ0eXBlXCIsIGhlYWRlck5hbWU6IFwiVHlwZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwicHJvdGVjdGlvblR5cGVcIiwgaGVhZGVyTmFtZTogXCJQcm90ZWN0aW9uVHlwZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZmlsdGVyRGljdGlvbmFyeUNsYXNzXCIsIGhlYWRlck5hbWU6IFwiRmlsdGVyRGljdGlvbmFyeUNsYXNzXCIsIHdpZHRoOiAxODAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJub3ROdWxsXCIsIGhlYWRlck5hbWU6IFwiTm90TnVsbFwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiaW50ZWdlclwiLCBoZWFkZXJOYW1lOiBcIkludGVnZXJcIiwgd2lkdGg6IDc1LCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwibWluXCIsIGhlYWRlck5hbWU6IFwiTWluXCIsIHdpZHRoOiA2MCwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcIm1heFwiLCBoZWFkZXJOYW1lOiBcIk1heFwiLCB3aWR0aDogNjAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJmcmFjdGlvblwiLCBoZWFkZXJOYW1lOiBcIkZyYWN0aW9uXCIsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJkaWN0aW9uYXJ5VG9vbHRpcFwiLCBoZWFkZXJOYW1lOiBcIkRpY3Rpb25hcnlUb29sdGlwXCIsIHdpZHRoOiAyMDAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJkaWN0aW9uYXJ5RGlzcGxheVwiLCBoZWFkZXJOYW1lOiBcIkRpY3Rpb25hcnlEaXNwbGF5XCIsIHdpZHRoOiAxNzUsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJmaWx0ZXJhYmxlXCIsIGhlYWRlck5hbWU6IFwiRmlsdGVyYWJsZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZGlzcGxheU5hbWVcIiwgaGVhZGVyTmFtZTogXCJEaXNwbGF5TmFtZVwiLCB3aWR0aDogMTc1LCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZGlzcGxheU9yZGVyXCIsIGhlYWRlck5hbWU6IFwiRGlzcGxheU9yZGVyXCIsIHdpZHRoOiA2MCwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcImNlbGxTdHlsZVwiLCBoZWFkZXJOYW1lOiBcIkNlbGxTdHlsZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgXTsgLy8gdGhlIHdpZHRocyBmb3IgdGhlIGxhc3QgMiBjb3VsZCBiZSB3cm9uZy5cclxuXHJcbiAgfVxyXG5cclxuICBvbk1ldGFHcmlkUmVhZHkocGFyYW1zIDogYW55KSB7XHJcblxyXG4gICAgdGhpcy5ncmlkQXBpTWV0YSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmdyaWRBcGlNZXRhLnNldENvbHVtbkRlZnModGhpcy5jb2x1bW5EZWZNZXRhKCkpO1xyXG4gICAgdGhpcy5ncmlkQXBpTWV0YS5zZXRSb3dEYXRhKHRoaXMuZGljdGlvbmFyeT8uZmllbGRzKTtcclxuICAgIC8vIHRoaXMuZ3JpZEFwaU1ldGEuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG5cclxuICB9XHJcblxyXG4gIG9wZW5BcmVZb3VTdXJlTW9kYWwobW9kYWw6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKG1vZGFsKS5yZXN1bHQudGhlbihcclxuICAgICAgKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT09IFwiRGVsZXRlXCIpIHtcclxuICAgICAgICAgIHRoaXMuZGVsZXRlRGljdGlvbmFyeUVudHJpZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChyZWFzb24pID0+IHtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoIHRoZSBkaWN0aW9uYXJ5IG1ldGFkYXRhIGFuZCBkaWN0aW9uYXJ5IGVudHJpZXMgYmFzZWQgdXBvbiB0aGUgZGljdGlvbmFyeSBjbGFzcyBuYW1lLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxyXG4gICAqL1xyXG4gIGdldERpY3Rpb25hcnkoY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuXHJcbiAgICAvLyBXaGVuIFNlbGVjdGluZyBBIE5ldyBEaWN0aW9uYXJ5LCBOYXZpZ2F0ZSBUbyBGaXJzdCBQYWdlXHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucyAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaSkge1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5wYWdpbmF0aW9uR29Ub0ZpcnN0UGFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xyXG4gICAgdGhpcy5kYXRhQ29sdW1ucyA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMubG9hZGluZ1N1YmplY3RzWzBdLm5leHQodHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXREaWN0aW9uYXJ5KGNsYXNzTmFtZSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmluYWxpemUoXHJcbiAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3RzWzBdLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkaWN0aW9uYXJ5OiBPYmplY3QpID0+IHtcclxuICAgICAgICB0aGlzLnNldFVwRGljdGlvbmFyeUdyaWQoZGljdGlvbmFyeSk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdHNbMF0ubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5nZXREaWN0aW9uYXJ5RW50cmllcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGljdGlvbmFyeUVudHJpZXMoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdHNbMV0ubmV4dCh0cnVlKTtcclxuXHJcbiAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldERpY3Rpb25hcnlFbnRyaWVzKHRoaXMuY2xhc3NOYW1lKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaW5hbGl6ZShcclxuICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdHNbMV0ubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICApLnN1YnNjcmliZShcclxuICAgICAgKGRpY3Rpb25hcnlFbnRyaWVzOiBPYmplY3RbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGljdGlvbmFyeUVudHJpZXMgPSBkaWN0aW9uYXJ5RW50cmllcztcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRSb3dEYXRhKGRpY3Rpb25hcnlFbnRyaWVzKTtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdHNbMV0ubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIGRpY3Rpb25hcnkgbWV0YWRhdGEuICBUaGlzIGlzIHVzZWQgdG8gYnVpbGQgdGhlIGNvbHVtbnMgZm9yIHRoZSBkaWN0aW9uYXJ5IGVudHJpZXMuICBUaGUgbmFtZXMsIHZhbGlkYXRpb24sXHJcbiAgICogYW5kIGZpbHRlciBjbGFzc2VzIGJ1aWxkIHRoZSBjb2x1bW4gZGVmaW5pdGlvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkaWN0aW9uYXJ5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRVcERpY3Rpb25hcnlHcmlkKGRpY3Rpb25hcnk6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICBjb25zb2xlLmRlYnVnKFwiRGljdGlvbmFyeUVkaXRvckRldGFpbENvbXBvbmVudC5zZXREaWN0aW9uYXJ5XCIpO1xyXG4gICAgICBjb25zb2xlLmRlYnVnKGRpY3Rpb25hcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGljdGlvbmFyeSA9IGRpY3Rpb25hcnk7XHJcbiAgICB0aGlzLnNlY29uZGFyeURpY3Rpb25hcnlFbnRyaWVzID0gW107XHJcbiAgICBsZXQgZGljdGlvbmFyeUNsYXNzTmFtZXMgPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBmaWVsZCBvZiBkaWN0aW9uYXJ5LmZpZWxkcykge1xyXG4gICAgICBpZiAoZmllbGQuZmlsdGVyRGljdGlvbmFyeUNsYXNzKSB7XHJcbiAgICAgICAgZGljdGlvbmFyeUNsYXNzTmFtZXMucHVzaChmaWVsZC5maWx0ZXJEaWN0aW9uYXJ5Q2xhc3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5nZXRTZWNvbmRhcnlEaWN0aW9uYXJpZXMoZGljdGlvbmFyeUNsYXNzTmFtZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTZWNvbmRhcnlEaWN0aW9uYXJpZXMoZGljdGlvbmFyeU5hbWVzOiBzdHJpbmdbXSkge1xyXG5cclxuICAgIGlmIChkaWN0aW9uYXJ5TmFtZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5maW5pc2hDb2x1bW5TZXR1cCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGRpY3Rpb25hcnlOYW1lID0gZGljdGlvbmFyeU5hbWVzLnBvcCgpO1xyXG5cclxuICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXREaWN0aW9uYXJ5RHJvcGRvd25FbnRyaWVzKGRpY3Rpb25hcnlOYW1lKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2Vjb25kYXJ5RGljdGlvbmFyeUVudHJpZXMucHVzaCh7ZGljdGlvbmFyeU5hbWU6IGRpY3Rpb25hcnlOYW1lLCBlbnRyaWVzOiByZXNwb25zZX0pO1xyXG4gICAgICAgICAgdGhpcy5nZXRTZWNvbmRhcnlEaWN0aW9uYXJpZXMoZGljdGlvbmFyeU5hbWVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmlzaENvbHVtblNldHVwKCkge1xyXG5cclxuICAgIHRoaXMuZGlzcGxheU5hbWUgPSB0aGlzLmRpY3Rpb25hcnkuZGlzcGxheU5hbWU7XHJcblxyXG4gICAgLy8gVGhpcyBlc3RhYmxpc2hlcyB0aGUgcmVhZE9ubHkgZnVuY3Rpb25hbGl0eVxyXG4gICAgbGV0IGNvbHM6IGFueVtdID0gW107XHJcblxyXG4gICAgLy8gUHJvY2VzcyBDb2x1bW5zIEFuZCBDcmVhdGUgQ29sdW1uIERlZmluaXRpb25cclxuICAgIGZvciAobGV0IGZpZWxkIG9mIHRoaXMuZGljdGlvbmFyeS5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLmlkICYmIChpc051bGxPclVuZGVmaW5lZChmaWVsZC5jb2RlKSB8fCBmaWVsZC5jb2RlID09IGZhbHNlKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgY29sOiBhbnk7XHJcblxyXG4gICAgICBpZiAoZmllbGQuZmlsdGVyRGljdGlvbmFyeUNsYXNzKSB7XHJcbiAgICAgICAgLy8gdGhpcyBpcyBhIGRyb3Bkb3duIG9mIGFub3RoZXIgZGljdGlvbmFyeVxyXG4gICAgICAgIGxldCBvcHRpb25zID0gdGhpcy5zZWNvbmRhcnlEaWN0aW9uYXJ5RW50cmllcy5maW5kKFxyXG4gICAgICAgICAgKGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gYS5kaWN0aW9uYXJ5TmFtZSA9PT0gZmllbGQuZmlsdGVyRGljdGlvbmFyeUNsYXNzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbCA9IHtcclxuICAgICAgICAgIGZpZWxkOiBmaWVsZC5uYW1lLFxyXG4gICAgICAgICAgaGVhZGVyTmFtZTogZmllbGQuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICBlZGl0YWJsZTogdGhpcy5pc0VkaXRhYmxlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjZWxsUmVuZGVyZXJGcmFtZXdvcms6IFNlbGVjdFJlbmRlcmVyLFxyXG4gICAgICAgICAgY2VsbEVkaXRvckZyYW1ld29yazogU2VsZWN0RWRpdG9yLFxyXG4gICAgICAgICAgc2VsZWN0T3B0aW9uc0Rpc3BsYXlGaWVsZDogXCJkaXNwbGF5XCIsXHJcbiAgICAgICAgICBzZWxlY3RPcHRpb25zVmFsdWVGaWVsZDogXCJpZFwiLFxyXG4gICAgICAgICAgc29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICBmaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICBmaWx0ZXJWYWx1ZUdldHRlcjogdGhpcy5jb21ib0ZpbHRlclZhbHVlR2V0dGVyLFxyXG4gICAgICAgICAgc2VsZWN0T3B0aW9uczogW10sXHJcbiAgICAgICAgICBjb21wYXJhdG9yOiAodmFsdWVBLCB2YWx1ZUIsIG5vZGVBLCBub2RlQiwgaXNJbnZlcnRlZCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmVudHJpZXMpIHtcclxuICAgICAgICAgIGNvbC5zZWxlY3RPcHRpb25zID0gb3B0aW9ucy5lbnRyaWVzLnNvcnQoXHJcbiAgICAgICAgICAgIChvcHRpb25BLCBvcHRpb25CKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbkEgJiYgIW9wdGlvbkIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbkIgJiYgIW9wdGlvbkEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmICghb3B0aW9uQSAmJiAhb3B0aW9uQikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAob3B0aW9uQS5kaXNwbGF5LnRvTG93ZXJDYXNlKCkgPiBvcHRpb25CLmRpc3BsYXkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICgob3B0aW9uQi5kaXNwbGF5LnRvTG93ZXJDYXNlKCkgPiBvcHRpb25BLmRpc3BsYXkudG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGNvbC5jb21wYXJhdG9yID0gKHZhbHVlQSwgdmFsdWVCLCBub2RlQSwgbm9kZUIsIGlzSW52ZXJ0ZWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmVudHJpZXMpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHZhbHVlQSAmJiAhdmFsdWVCKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh2YWx1ZUIgJiYgIXZhbHVlQSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCF2YWx1ZUEgJiYgIXZhbHVlQikge1xyXG4gICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgb3B0aW9uQSA9IG9wdGlvbnMuZW50cmllcy5maW5kKChlbnRyeSkgPT4gKFwiXCIgKyBlbnRyeS5pZCA9PT0gXCJcIiArIHZhbHVlQSkpO1xyXG4gICAgICAgICAgICBsZXQgb3B0aW9uQiA9IG9wdGlvbnMuZW50cmllcy5maW5kKChlbnRyeSkgPT4gKFwiXCIgKyBlbnRyeS5pZCA9PT0gXCJcIiArIHZhbHVlQikpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG9wdGlvbkEgJiYgIW9wdGlvbkIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKG9wdGlvbkIgJiYgIW9wdGlvbkEpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghb3B0aW9uQSAmJiAhb3B0aW9uQikge1xyXG4gICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9uQS5kaXNwbGF5LnRvTG93ZXJDYXNlKCkgPiBvcHRpb25CLmRpc3BsYXkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKChvcHRpb25CLmRpc3BsYXkudG9Mb3dlckNhc2UoKSA+IG9wdGlvbkEuZGlzcGxheS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbC5jZWxsU3R5bGUgPSBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgbGV0IGNvbHVtbjogYW55ID0ge307XHJcblxyXG4gICAgICAgICAgZm9yIChsZXQgZmllbGQgb2YgcGFyYW1zLmNvbnRleHQuY29tcG9uZW50UGFyZW50LmRpY3Rpb25hcnkuZmllbGRzKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY29sRGVmLmZpZWxkID09IGZpZWxkLm5hbWUpIHtcclxuICAgICAgICAgICAgICBjb2x1bW4gPSBmaWVsZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChwYXJhbXMuZGF0YS5lZGl0T3JOZXcgJiYgcGFyYW1zLmRhdGEuZWRpdE9yTmV3ID09IFwibmV3XCIpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb250ZXh0LnJlYWRPbmx5IHx8IGNvbHVtbi5yZWFkT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIlJlYWQgT25seVwiKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbnRleHQucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIgfHwgY29sdW1uLmNyZWF0ZU9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJDcmVhdGUgT25seVwiIHx8IGNvbHVtbi5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29sLmRpc3BsYXlPcmRlciA9IGZpZWxkLmRpc3BsYXlPcmRlcjtcclxuICAgICAgICBjb2wuZGljdGlvbmFyeURpc3BsYXkgPSBmaWVsZC5kaWN0aW9uYXJ5RGlzcGxheTtcclxuICAgICAgICBjb2wuZGljdGlvbmFyeVRvb2x0aXAgPSBmaWVsZC5kaWN0aW9uYXJ5VG9vbHRpcDtcclxuXHJcbiAgICAgICAgLy8gU2V0IGRlZmF1bHQgZmlsdGVyIGFzIGNvbXBhcmUgYnkgdGV4dC9udW1iZXJcclxuICAgICAgICAvLyBjb2wuZmlsdGVyUmVuZGVyZXIgPSBDb21wYXJlRmlsdGVyUmVuZGVyZXI7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSAmJiBmaWVsZC50eXBlID09IFwiRGF0ZVwiKSB7XHJcbiAgICAgICAgLy9kYXRlIHZhbHVlXHJcbiAgICAgICAgY29sID0ge1xyXG4gICAgICAgICAgZmllbGQ6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgICBoZWFkZXJOYW1lOiBmaWVsZC5kaXNwbGF5TmFtZSxcclxuICAgICAgICAgIGNlbGxSZW5kZXJlckZyYW1ld29yazogRGF0ZVJlbmRlcmVyLFxyXG4gICAgICAgICAgY2VsbEVkaXRvckZyYW1ld29yazogQWdHcmlkRGF0ZUNlbGxFZGl0b3JDb21wb25lbnQsXHJcbiAgICAgICAgICBlZGl0YWJsZTogdGhpcy5pc0VkaXRhYmxlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIGZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgIGRpY3Rpb25hcnlEaXNwbGF5OiBmaWVsZC5kaWN0aW9uYXJ5RGlzcGxheVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbC5jb21wYXJhdG9yID0gKHZhbHVlQSwgdmFsdWVCLCBub2RlQSwgbm9kZUIsIGlzSW52ZXJ0ZWQpID0+IHtcclxuICAgICAgICAgIGxldCBudW0gPSB0aGlzLmRhdGVDb21wYXJhdG9yKHZhbHVlQSwgdmFsdWVCKTtcclxuICAgICAgICAgIHJldHVybiBpc0ludmVydGVkID8gLTEgKiBudW0gOiBudW07IC8vZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGluZyB3aXRoIGludmVydGVkP1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbC5jZWxsU3R5bGUgPSBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgdmFyIGNvbHVtbjogYW55ID0ge307XHJcbiAgICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiBwYXJhbXMuY29udGV4dC5jb21wb25lbnRQYXJlbnQuZGljdGlvbmFyeS5maWVsZHMpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb2xEZWYuZmllbGQgPT0gZmllbGQubmFtZSkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbiA9IGZpZWxkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHBhcmFtcy5kYXRhLmVkaXRPck5ldyAmJiBwYXJhbXMuZGF0YS5lZGl0T3JOZXcgPT0gXCJuZXdcIikge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbnRleHQucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge2NvbG9yOiBcIiM4YTk0OTlcIn07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY29udGV4dC5yZWFkT25seSB8fCBjb2x1bW4ucmVhZE9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJSZWFkIE9ubHlcIiB8fCBjb2x1bW4uY3JlYXRlT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIkNyZWF0ZSBPbmx5XCIgfHwgY29sdW1uLmNvZGUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge2NvbG9yOiBcIiM4YTk0OTlcIn07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb2wuZGlzcGxheU9yZGVyID0gZmllbGQuZGlzcGxheU9yZGVyO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHRoaXMgaXMgYSBzdHJpbmcgdmFsdWVcclxuICAgICAgICBjb2wgPSB7XHJcbiAgICAgICAgICBmaWVsZDogZmllbGQubmFtZSxcclxuICAgICAgICAgIGhlYWRlck5hbWU6IGZpZWxkLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgZWRpdGFibGU6IHRoaXMuaXNFZGl0YWJsZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgc29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICBmaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICBkaWN0aW9uYXJ5RGlzcGxheTogZmllbGQuZGljdGlvbmFyeURpc3BsYXlcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb2wuY29tcGFyYXRvciA9ICh2YWx1ZUEsIHZhbHVlQiwgbm9kZUEsIG5vZGVCLCBpc0ludmVydGVkKSA9PiB7XHJcbiAgICAgICAgICBpZiAodmFsdWVBICYmICF2YWx1ZUIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHZhbHVlQiAmJiAhdmFsdWVBKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoIXZhbHVlQSAmJiAhdmFsdWVCKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh2YWx1ZUEudG9Mb3dlckNhc2UoKSA+IHZhbHVlQi50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICgodmFsdWVCLnRvTG93ZXJDYXNlKCkgPiB2YWx1ZUEudG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29sLmNlbGxTdHlsZSA9IHBhcmFtcyA9PiB7XHJcbiAgICAgICAgICB2YXIgY29sdW1uOiBhbnkgPSB7fTtcclxuICAgICAgICAgIGZvciAobGV0IGZpZWxkIG9mIHBhcmFtcy5jb250ZXh0LmNvbXBvbmVudFBhcmVudC5kaWN0aW9uYXJ5LmZpZWxkcykge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbERlZi5maWVsZCA9PSBmaWVsZC5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uID0gZmllbGQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChwYXJhbXMuZGF0YS5lZGl0T3JOZXcgJiYgcGFyYW1zLmRhdGEuZWRpdE9yTmV3ID09IFwibmV3XCIpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb250ZXh0LnJlYWRPbmx5IHx8IGNvbHVtbi5yZWFkT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIlJlYWQgT25seVwiKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbnRleHQucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIgfHwgY29sdW1uLmNyZWF0ZU9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJDcmVhdGUgT25seVwiIHx8IGNvbHVtbi5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29sLmRpc3BsYXlPcmRlciA9IGZpZWxkLmRpc3BsYXlPcmRlcjtcclxuICAgICAgICAvLyBTZXQgZGVmYXVsdCBmaWx0ZXIgYXMgY29tcGFyZSBieSB0ZXh0L251bWJlclxyXG4gICAgICAgIC8vIGNvbC5maWx0ZXJSZW5kZXJlciA9IENvbXBhcmVGaWx0ZXJSZW5kZXJlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29scy5wdXNoKGNvbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTm93IHdlIG5lZWQgdG8gc29ydCB0aGUgY29sdW1uc1xyXG4gICAgaWYgKCF0aGlzLmRpY3Rpb25hcnkuZmllbGRzWzBdLmhhc093blByb3BlcnR5KFwiZGlzcGxheU9yZGVyXCIpKSB7XHJcbiAgICAgIC8vIGRlZmF1bHQgY2FzZSwgbm8gZGlzcGxheU9yZGVyXHJcbiAgICAgIGNvbHMgPSBjb2xzLnNvcnQoXHJcbiAgICAgICAgKGEsIGIpID0+IHtcclxuICAgICAgICAgIGlmICghYS5oZWFkZXJOYW1lICYmIGIuaGVhZGVyTmFtZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIWIuaGVhZGVyTmFtZSAmJiBhLmhlYWRlck5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChhLmRpY3Rpb25hcnlEaXNwbGF5ID09PSB0cnVlICYmIGIuZGljdGlvbmFyeURpc3BsYXkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoYi5kaWN0aW9uYXJ5RGlzcGxheSA9PT0gdHJ1ZSAmJiBhLmRpY3Rpb25hcnlEaXNwbGF5ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoYS5kaWN0aW9uYXJ5VG9vbHRpcCA9PT0gdHJ1ZSAmJiBiLmRpY3Rpb25hcnlUb29sdGlwID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGIuZGljdGlvbmFyeVRvb2x0aXAgPT09IHRydWUgJiYgYS5kaWN0aW9uYXJ5VG9vbHRpcCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRGlzcGxheU9yZGVyIGNhc2VcclxuICAgICAgLy8gSSB0aGluayB0aGlzIHdvcmtzPyBDaGVjayBsYXRlclxyXG4gICAgICBjb2xzID0gY29scy5zb3J0KFxyXG4gICAgICAgIChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWEuaGVhZGVyTmFtZSAmJiBiLmhlYWRlck5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKCFiLmhlYWRlck5hbWUgJiYgYS5oZWFkZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhLmRpc3BsYXlPcmRlciAtIGIuZGlzcGxheU9yZGVyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBZnRlciBDb2x1bW5zIEhhdmUgQmVlbiBTb3J0ZWRcclxuICAgIC8vIERpY3Rpb25hcnkgR3JpZCBXaWxsIFNvcnQgVGhlIEdyaWQgQXNjZW5kaW5nIE9yZGVyIEJ5IEZpcnN0IENvbHVtblxyXG4gICAgaWYoY29scyAgJiYgY29scy5sZW5ndGggIT0gMCkge1xyXG4gICAgICBjb2xzWzBdLnNvcnQgPSBcImFzY1wiO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YUNvbHVtbnMgPSBjb2xzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhQ29sdW1ucykgJiYgdGhpcy5ncmlkT3B0aW9ucyAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaSkge1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRDb2x1bW5EZWZzKHRoaXMuZGF0YUNvbHVtbnMpO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0VkaXRhYmxlKHBhcmFtcyk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGxldCBpc0VkaXRhYmxlOiBib29sZWFuO1xyXG5cclxuICAgIGxldCBjb2x1bW46IGFueSA9IHt9O1xyXG4gICAgZm9yIChsZXQgZmllbGQgb2YgdGhpcy5kaWN0aW9uYXJ5LmZpZWxkcykge1xyXG4gICAgICBpZiAocGFyYW1zLmNvbERlZi5maWVsZCA9PSBmaWVsZC5uYW1lKSB7XHJcbiAgICAgICAgY29sdW1uID0gZmllbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocGFyYW1zLmRhdGEuZWRpdE9yTmV3ICYmIHBhcmFtcy5kYXRhLmVkaXRPck5ldyA9PSBcIm5ld1wiKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwibmV3IGVkaXRhYmxlP1wiKTtcclxuICAgICAgaXNFZGl0YWJsZSA9ICEodGhpcy5kaWN0aW9uYXJ5LnJlYWRPbmx5IHx8IGNvbHVtbi5yZWFkT25seSB8fFxyXG4gICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIlJlYWQgT25seVwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiZWRpdCBlZGl0YWJsZT9cIik7XHJcbiAgICAgIGlzRWRpdGFibGUgPSAhKHRoaXMuZGljdGlvbmFyeS5yZWFkT25seSB8fCBjb2x1bW4ucmVhZE9ubHkgfHxcclxuICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJSZWFkIE9ubHlcIiB8fCBjb2x1bW4uY3JlYXRlT25seSB8fFxyXG4gICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIkNyZWF0ZSBPbmx5XCIgfHwgY29sdW1uLmNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpc0VkaXRhYmxlO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRGljdGlvbmFyeUVudHJpZXMoKTogdm9pZCB7XHJcblxyXG4gICAgbGV0IGRlbGV0ZVJvd3M6IGFueVtdID0gdGhpcy5ncmlkT3B0aW9ucy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCk7XHJcblxyXG4gICAgZm9yIChsZXQgZGVsZXRlSWQgb2YgdGhpcy5zZWxlY3RlZFJvd3MpIHtcclxuICAgICAgZm9yIChsZXQgZW50cnkgb2YgdGhpcy5kaWN0aW9uYXJ5RW50cmllcykge1xyXG4gICAgICAgIGlmIChlbnRyeVt0aGlzLmlkQ29sdW1uXSA9PT0gZGVsZXRlSWQpIHtcclxuICAgICAgICAgIGRlbGV0ZVJvd3MucHVzaChlbnRyeSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmRlbGV0ZURpY3Rpb25hcnlFbnRyaWVzKHRoaXMuY2xhc3NOYW1lLCBkZWxldGVSb3dzKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXREaWN0aW9uYXJ5RW50cmllcygpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGljdGlvbmFyeShldmVudDogYW55KTogdm9pZCB7XHJcblxyXG4gICAgLy8gSW1wb3J0YW50IHRvIG5vdGUgdGhpcyB3aWxsIG5vdCB1cGRhdGUgY2VsbHMgdG8gdGhlIGRlbW8gYnV0IHdpbGwgd2hlbiBpbXBvcnRlZCB0byBDT1JFIG9yIG90aGVyIGFwcGxpY2F0aW9ucy5cclxuICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UudXBkYXRlRGljdGlvbmFyeUVudHJpZXModGhpcy5jbGFzc05hbWUsIFtldmVudC5kYXRhXSkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55W10pID0+IHtcclxuICAgICAgICB0aGlzLmdldERpY3Rpb25hcnlFbnRyaWVzKCk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZEVudHJpZXMoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICB9XHJcblxyXG4gIG5ld1Jvd1Bvc3QoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5hZGREaWN0aW9uYXJ5RW50cmllcyh0aGlzLmNsYXNzTmFtZSwgW2RhdGFdKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoXHJcbiAgICAgICAgICAoZGF0YTogT2JqZWN0W10pID0+IHtcclxuICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gPGFueT5kYXRhWzBdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBvblNhbXBsZXNHcmlkUmVhZHkoZXZlbnQ6IEdyaWRSZWFkeUV2ZW50KTogdm9pZCB7XHJcblxyXG4gICAgZXZlbnQuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgb25HcmlkU2l6ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xyXG5cclxuICAgIGlmIChldmVudCAmJiBldmVudC5hcGkpIHtcclxuICAgICAgZXZlbnQuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGlzYWJsZUFkZFJvdygpOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGljdGlvbmFyeSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5kaWN0aW9uYXJ5LnJlYWRPbmx5ICYmIHRoaXMuZGljdGlvbmFyeS5yZWFkT25seSA9PT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGlzYWJsZURlbGV0ZSgpOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGljdGlvbmFyeSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kaWN0aW9uYXJ5LnJlYWRPbmx5ICYmIHRoaXMuZGljdGlvbmFyeS5yZWFkT25seSA9PT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucyAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaSAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCkubGVuZ3RoID09PSAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbWJvRmlsdGVyVmFsdWVHZXR0ZXIocGFyYW1zKTogYW55IHtcclxuXHJcbiAgICBsZXQgdmFsdWUgPSBwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLmZpZWxkXTtcclxuXHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgbGV0IG9wdGlvbiA9ICgocGFyYW1zLmNvbERlZiBhcyBhbnkpLnNlbGVjdE9wdGlvbnMgYXMgYW55W10pLmZpbmQoKGVudHJ5KSA9PiAoZW50cnlbcGFyYW1zLmNvbERlZi5zZWxlY3RPcHRpb25zVmFsdWVGaWVsZF0gPT09IHZhbHVlKSk7XHJcbiAgICAgIHJldHVybiBvcHRpb24gPyBvcHRpb25bcGFyYW1zLmNvbERlZi5zZWxlY3RPcHRpb25zRGlzcGxheUZpZWxkXSA6IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQWRkUm93KCkge1xyXG5cclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihOZXdSb3dDb21wb25lbnQsXHJcbiAgICAgIHtcclxuICAgICAgICBzaXplOiBcImxnXCIsXHJcbiAgICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxyXG4gICAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLFxyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNvbERlZnMgPSB0aGlzLmRhdGFDb2x1bW5zO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGljdGlvbmFyeSA9IHRoaXMuZGljdGlvbmFyeTtcclxuXHJcbiAgICBpZiAoIXRoaXMubmV3Um93U3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIC8vIHRlbGwgb3RoZXIgYWctZ3JpZCB0byBhZGQgcm93IHRvIGl0XHJcbiAgICAgIHRoaXMubmV3Um93U3Vic2NyaXB0aW9uID0gbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UubmV3Um93U3ViamVjdC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHRoZU5ld1JvdzogYW55W10pID0+IHtcclxuICAgICAgICAgIHRoaXMuZGljdGlvbmFyeUVudHJpZXMgPSB0aGVOZXdSb3cuY29uY2F0KHRoaXMuZGljdGlvbmFyeUVudHJpZXMpO1xyXG4gICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuc2V0Um93RGF0YSh0aGlzLmRpY3Rpb25hcnlFbnRyaWVzKTtcclxuICAgICAgICAgIHRoaXMubmV3Um93U3Vic2NyaXB0aW9uID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAvLyBJbXBvcnRhbnQgdG8gbm90ZSB0aGlzIHdpbGwgbm90IGFkZCByb3dzIHRvIHRoZSBkZW1vIGJ1dCB3aWxsIHdoZW4gaW1wb3J0ZWQgdG8gQ09SRSBvciBvdGhlciBhcHBsaWNhdGlvbnMuXHJcbiAgICAgICAgICB0aGlzLm5ld1Jvd1Bvc3QodGhlTmV3Um93WzBdKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmdldERpY3Rpb25hcnlFbnRyaWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcGFyYXRlciBUbyBDb21wYXJlIDIgRGF0ZXNcclxuICAgKiBAcGFyYW0gZGF0ZTEgRGF0ZSAxXHJcbiAgICogQHBhcmFtIGRhdGUyIERhdGUgMlxyXG4gICAqL1xyXG4gIGRhdGVDb21wYXJhdG9yKGRhdGUxLCBkYXRlMikge1xyXG5cclxuICAgIGxldCBkYXRlMU51bWJlciA9IG1vbnRoVG9Db21wYXJhYmxlTnVtYmVyKGRhdGUxKTtcclxuICAgIGxldCBkYXRlMk51bWJlciA9IG1vbnRoVG9Db21wYXJhYmxlTnVtYmVyKGRhdGUyKTtcclxuXHJcbiAgICBpZiAoZGF0ZTFOdW1iZXIgPT09IG51bGwgJiYgZGF0ZTJOdW1iZXIgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGUxTnVtYmVyID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiAtMTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0ZTJOdW1iZXIgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGUxTnVtYmVyIC0gZGF0ZTJOdW1iZXI7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogRXh0cmFjdHMgRGF0ZSBBbmQgVHVybiBUbyBBIE51bWVyaWNhbCBWYWx1ZSBGb3IgQ29tcGFyaW5nIFB1cnBvc2VzXHJcbiAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNvbXBhcmFibGUgbnVtYmVyXHJcbiAqL1xyXG5mdW5jdGlvbiBtb250aFRvQ29tcGFyYWJsZU51bWJlcihkYXRlKSB7XHJcblxyXG4gIGlmIChkYXRlID09PSB1bmRlZmluZWQgfHwgZGF0ZSA9PT0gbnVsbCB8fCBkYXRlLmxlbmd0aCAhPT0gMTApIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgbGV0IHllYXJOdW1iZXIgPSBkYXRlLnN1YnN0cmluZygwLCA0KTtcclxuICBsZXQgbW9udGhOdW1iZXIgPSBkYXRlLnN1YnN0cmluZyg1LCA3KTtcclxuICBsZXQgZGF5TnVtYmVyID0gZGF0ZS5zdWJzdHJpbmcoOCwgMTApO1xyXG5cclxuICByZXR1cm4geWVhck51bWJlciAqIDEwMDAwICsgbW9udGhOdW1iZXIgKiAxMDAgKyBkYXlOdW1iZXI7XHJcbn1cclxuIl19
|
|
@@ -11,9 +11,8 @@ export class DictionaryEditorHomeComponent {
|
|
|
11
11
|
constructor() {
|
|
12
12
|
this.classList = "outlet-column y-auto";
|
|
13
13
|
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
DictionaryEditorHomeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DictionaryEditorHomeComponent, selector: "core-dictionary-editor-home", host: { properties: { "class": "this.classList" } }, ngImport: i0, template: `
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DictionaryEditorHomeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DictionaryEditorHomeComponent, selector: "core-dictionary-editor-home", host: { properties: { "class": "this.classList" } }, ngImport: i0, template: `
|
|
17
16
|
<div class="d-flex m-3 flex-column flex-grow">
|
|
18
17
|
<h4>Dictionary Editor</h4>
|
|
19
18
|
|
|
@@ -21,8 +20,9 @@ DictionaryEditorHomeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "1
|
|
|
21
20
|
Select a dictionary from the sidebar to view its properties and data.
|
|
22
21
|
</div>
|
|
23
22
|
</div>
|
|
24
|
-
`, isInline: true });
|
|
25
|
-
|
|
23
|
+
`, isInline: true }); }
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DictionaryEditorHomeComponent, decorators: [{
|
|
26
26
|
type: Component,
|
|
27
27
|
args: [{
|
|
28
28
|
selector: "core-dictionary-editor-home",
|
|
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
40
40
|
type: HostBinding,
|
|
41
41
|
args: ["class"]
|
|
42
42
|
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWN0aW9uYXJ5LWVkaXRvci9zcmMvY29tcG9uZW50cy9ob21lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFckQ7Ozs7OztHQU1HO0FBYUgsTUFBTSxPQUFPLDZCQUE2QjtJQVoxQztRQWN3QixjQUFTLEdBQVcsc0JBQXNCLENBQUM7S0FFbEU7K0dBSlksNkJBQTZCO21HQUE3Qiw2QkFBNkIsd0hBVjlCOzs7Ozs7OztHQVFUOzs0RkFFVSw2QkFBNkI7a0JBWnpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsUUFBUSxFQUFFOzs7Ozs7OztHQVFUO2lCQUNGOzhCQUd1QixTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSG9zdEJpbmRpbmd9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKipcclxuICogU3BsYXNoIHNjcmVlbiBmb3IgdGhlIGVkaXRvciB3aGVuIG5vIGRpY3Rpb25hcnkgaXMgc2VsZWN0ZWQuXHJcbiAqXHJcbiAqIFRPRE86IFVzZSB0aGlzIHBhZ2UgdG8gcHV0IG1vcmUgb2YgYSBndWlkZSBvbiBob3cgdG8gdXNlIHRoZSBlZGl0b3I/XHJcbiAqXHJcbiAqIEBzaW5jZSAxLjAuMFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY29yZS1kaWN0aW9uYXJ5LWVkaXRvci1ob21lXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbS0zIGZsZXgtY29sdW1uIGZsZXgtZ3Jvd1wiPlxyXG4gICAgICA8aDQ+RGljdGlvbmFyeSBFZGl0b3I8L2g0PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgIFNlbGVjdCBhIGRpY3Rpb25hcnkgZnJvbSB0aGUgc2lkZWJhciB0byB2aWV3IGl0cyBwcm9wZXJ0aWVzIGFuZCBkYXRhLlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGBcclxufSlcclxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlFZGl0b3JIb21lQ29tcG9uZW50IHtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIikgY2xhc3NMaXN0OiBzdHJpbmcgPSBcIm91dGxldC1jb2x1bW4geS1hdXRvXCI7XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -70,9 +70,8 @@ export class NewRowComponent {
|
|
|
70
70
|
event.api.sizeColumnsToFit();
|
|
71
71
|
this.gridApi = event.api;
|
|
72
72
|
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
NewRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: NewRowComponent, selector: "new-row", ngImport: i0, template: `
|
|
73
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NewRowComponent, deps: [{ token: i1.NgbActiveModal }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NewRowComponent, selector: "new-row", ngImport: i0, template: `
|
|
76
75
|
<div class="d-flex flex-column" style="height:11em; width:58vw;">
|
|
77
76
|
<div class="d-flex flex-row">
|
|
78
77
|
<div class="flex-grow-1"></div>
|
|
@@ -106,8 +105,9 @@ NewRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
|
|
|
106
105
|
</button>
|
|
107
106
|
</div>
|
|
108
107
|
</div>
|
|
109
|
-
`, isInline: true, styles: [".full-height{height:100%}.full-width{width:100%}:host ::ng-deep .ag-ltr .ag-cell{border-right-color:gray}\n"], dependencies: [{ kind: "component", type: i2.AgGridAngular, selector: "ag-grid-angular", inputs: ["statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "undoRedoCellEditing", "undoRedoCellEditingLimit", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "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", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideStoreType", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "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", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "getDataPath", "defaultGroupSortComparator", "getChildCount", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"
|
|
110
|
-
|
|
108
|
+
`, isInline: true, styles: [".full-height{height:100%}.full-width{width:100%}:host ::ng-deep .ag-ltr .ag-cell{border-right-color:gray}\n"], dependencies: [{ kind: "component", type: i2.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", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "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", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "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", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "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", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "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", "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"] }] }); }
|
|
109
|
+
}
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NewRowComponent, decorators: [{
|
|
111
111
|
type: Component,
|
|
112
112
|
args: [{ selector: "new-row", template: `
|
|
113
113
|
<div class="d-flex flex-column" style="height:11em; width:58vw;">
|
|
@@ -145,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
145
145
|
</div>
|
|
146
146
|
`, styles: [".full-height{height:100%}.full-width{width:100%}:host ::ng-deep .ag-ltr .ag-cell{border-right-color:gray}\n"] }]
|
|
147
147
|
}], ctorParameters: function () { return [{ type: i1.NgbActiveModal }]; } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWN0aW9uYXJ5LWVkaXRvci9zcmMvY29tcG9uZW50cy9uZXctcm93LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7O0FBMEQ3QixNQUFNLE9BQU8sZUFBZTtJQUcxQixJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLE9BQU8sQ0FBQyxLQUFZO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsOEJBQThCO1FBQ25FLEtBQUssSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBT0QsWUFBbUIsaUJBQWlDO1FBQWpDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZ0I7UUFuQjdDLGtCQUFhLEdBQW1CLElBQUksT0FBTyxFQUFTLENBQUM7UUFjckQsV0FBTSxHQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFNMUIsSUFBSSxDQUFDLFdBQVcsR0FBZ0I7WUFDOUIsT0FBTyxFQUFFO2dCQUNQLGVBQWUsRUFBRSxJQUFJO2FBQ3RCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxJQUFJO1FBQ1Qsc0JBQXNCO1FBQ3RCLGdFQUFnRTtRQUNoRSw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUzQixVQUFVLENBQ1IsR0FBRyxFQUFFO1lBQ0gsSUFBSSxPQUFPLEdBQVUsRUFBRSxDQUFDO1lBRXhCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN0QixDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLENBQUMsQ0FDRixDQUFDO1lBRUYsK0JBQStCO1lBQy9CLElBQUksT0FBTyxHQUFZLElBQUksQ0FBQztZQUU1QixLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQy9CLElBQUksTUFBTSxDQUFDLGlCQUFpQixJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ2pFLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO29CQUU1QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWU7MkJBQ25FLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUU7d0JBQ3hELElBQUksVUFBVSxHQUFVLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO3dCQUNuRixnQkFBZ0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztxQkFDakY7b0JBRUQsc0VBQXNFO29CQUN0RSxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLGNBQWMsS0FBSyxXQUFXLEVBQUU7d0JBQ3ZFLE9BQU8sR0FBRyxJQUFJLENBQUM7cUJBQ2hCO3lCQUFNO3dCQUNMLE9BQU8sR0FBRyxLQUFLLENBQUM7cUJBQ2pCO2lCQUNGO2FBQ0Y7WUFFRCxJQUFJLE9BQU8sRUFBRTtnQkFDWCx3Q0FBd0M7Z0JBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzFDO2lCQUFNO2dCQUNMLHVDQUF1QztnQkFDdkMsS0FBSyxDQUFDLDBFQUEwRSxDQUFDLENBQUM7YUFDbkY7UUFDSCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFxQjtRQUM3QyxLQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUMzQixDQUFDOytHQWxGVSxlQUFlO21HQUFmLGVBQWUsK0NBckR0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtDQzs7NEZBbUJNLGVBQWU7a0JBeEQzQixTQUFTOytCQUNJLFNBQVMsWUFFakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtOZ2JBY3RpdmVNb2RhbH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7R3JpZEFwaSwgR3JpZE9wdGlvbnMsIEdyaWRSZWFkeUV2ZW50fSBmcm9tIFwiYWctZ3JpZC1jb21tdW5pdHlcIjtcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJuZXctcm93XCIsXHJcbiAgICB0ZW1wbGF0ZTpcclxuICAgICAgYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIiBzdHlsZT1cImhlaWdodDoxMWVtOyB3aWR0aDo1OHZ3O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHg7IHdpZHRoOiAyMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZU1vZGFsU2VhcmNoLmRpc21pc3MoJ0NhbmNlbCcpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDhweDsgcGFkZGluZy1sZWZ0OiA4cHg7XCI+XHJcbiAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW0gZnVsbC1oZWlnaHQgZnVsbC13aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwibmV3Um93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2luZ2xlQ2xpY2tFZGl0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyaWRSZWFkeSk9XCJ0aGlzLm9uU2FtcGxlc0dyaWRSZWFkeSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiIHN0eWxlPVwicGFkZGluZzogMC41ZW07XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1yZWQgbWwtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogd2hpdGU7XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlTW9kYWxTZWFyY2guZGlzbWlzcygnQ2FuY2VsJylcIj5cclxuICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWwtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogd2hpdGU7XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCI+XHJcbiAgICAgICAgICAgICAgU2F2ZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICBgXHJcbiAgICAsXHJcbiAgICBzdHlsZXM6IFtcclxuICAgICAgYFxyXG4gICAgICAgIC5mdWxsLWhlaWdodCB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZnVsbC13aWR0aCB7XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDpob3N0IDo6bmctZGVlcCAuYWctbHRyIC5hZy1jZWxsIHtcclxuICAgICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogZ3JheTtcclxuICAgICAgICB9XHJcbiAgICAgIGBcclxuICAgIF1cclxuICB9XHJcbilcclxuZXhwb3J0IGNsYXNzIE5ld1Jvd0NvbXBvbmVudCB7XHJcbiAgcHVibGljIG5ld1Jvd1N1YmplY3Q6IFN1YmplY3Q8YW55W10+ID0gbmV3IFN1YmplY3Q8YW55W10+KCk7XHJcbiAgcHJpdmF0ZSBfY29sRGVmczogYW55W107XHJcbiAgcHVibGljIGdldCBjb2xEZWZzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbERlZnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGNvbERlZnModmFsdWU6IGFueVtdKSB7XHJcbiAgICB0aGlzLl9jb2xEZWZzID0gdmFsdWU7XHJcbiAgICB0aGlzLm5ld1Jvd1swXVtcImVkaXRPck5ld1wiXSA9IFwibmV3XCI7IC8vbmVlZGVkIGZvciBlZGl0YWJsZSBmdW5jdGlvblxyXG4gICAgZm9yIChsZXQgY29sRGVmIG9mIHRoaXMuY29sRGVmcykge1xyXG4gICAgICB0aGlzLm5ld1Jvd1swXVtjb2xEZWYuZmllbGRdID0gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXdSb3c6IGFueVtdID0gW3t9XTtcclxuICBkaWN0aW9uYXJ5OiBhbnk7XHJcbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xyXG4gIGdyaWRBcGk6IEdyaWRBcGk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhY3RpdmVNb2RhbFNlYXJjaDogTmdiQWN0aXZlTW9kYWwpIHtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSA8R3JpZE9wdGlvbnM+e1xyXG4gICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgY29tcG9uZW50UGFyZW50OiB0aGlzXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZSgpIHtcclxuICAgIC8vIGdldCBjb250ZW50cyBvZiByb3dcclxuICAgIC8vbWFraW5nIHN1cmUgdGhlIGdyaWQgaGFzIHN0b3BwZWQgZWRpdGluZyB3aGVuIHVzZXIgY2xpY2tzIHNhdmVcclxuICAgIC8vIHdhaXRpbmcgYSB0aWNrIHRvIG1ha2Ugc3VyZSB0aGF0IGFzeW5jIGV2ZW50IGhhcyBmaW5pc2hlZFxyXG4gICAgdGhpcy5ncmlkQXBpLnN0b3BFZGl0aW5nKCk7XHJcblxyXG4gICAgc2V0VGltZW91dChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGxldCBuZXdEYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmdyaWRBcGkuZm9yRWFjaE5vZGUoXHJcbiAgICAgICAgICAobm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIG5ld0RhdGEucHVzaChub2RlLmRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIHZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiByb3dcclxuICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGNvbERlZiBvZiB0aGlzLmNvbERlZnMpIHtcclxuICAgICAgICAgIGlmIChjb2xEZWYuZGljdGlvbmFyeURpc3BsYXkgPT0gdHJ1ZSAmJiAhbmV3RGF0YVswXVtjb2xEZWYuZmllbGRdKSB7XHJcbiAgICAgICAgICAgIGxldCBkaXNwbGF5RGljdEZpZWxkID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQgJiYgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LmNvbXBvbmVudFBhcmVudFxyXG4gICAgICAgICAgICAgICYmIHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5jb21wb25lbnRQYXJlbnQuZGljdGlvbmFyeSkge1xyXG4gICAgICAgICAgICAgIGxldCBkaWN0RmllbGRzOiBhbnlbXSA9IHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5jb21wb25lbnRQYXJlbnQuZGljdGlvbmFyeS5maWVsZHM7XHJcbiAgICAgICAgICAgICAgZGlzcGxheURpY3RGaWVsZCA9IGRpY3RGaWVsZHMuZmluZChmaWVsZCA9PiAoZmllbGQuZGljdGlvbmFyeURpc3BsYXkgPT09IHRydWUpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9kb24ndCByZXF1aXJlIGRpc3BsYXlGaWVsZCBpZiBpdCBpcyByZWFkb25seSB3aGVuIG1ha2luZyBhIG5ldyBlbnRyeVxyXG4gICAgICAgICAgICBpZiAoZGlzcGxheURpY3RGaWVsZCAmJiBkaXNwbGF5RGljdEZpZWxkLnByb3RlY3Rpb25UeXBlID09PSBcIlJlYWQgT25seVwiKSB7XHJcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgLy8gc2VuZCBjb250ZW50cyBvZiByb3cgdG8gb3RoZXIgYWctZ3JpZFxyXG4gICAgICAgICAgdGhpcy5uZXdSb3dTdWJqZWN0Lm5leHQobmV3RGF0YSk7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsU2VhcmNoLmRpc21pc3MoXCJDYW5jZWxcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIHNpZ25hbCB0aGV5IG5lZWQgdG8gZmlsbCBvdXQgdGhlIHJvd1xyXG4gICAgICAgICAgYWxlcnQoXCJUaGUgZGlzcGxheSB2YWx1ZSBpcyByZXF1aXJlZCwgcGxlYXNlIGVudGVyIGEgdmFsdWUgYW5kIHRoZW4gc2F2ZSBhZ2Fpbi5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2FtcGxlc0dyaWRSZWFkeShldmVudDogR3JpZFJlYWR5RXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LmFwaS5zZXRDb2x1bW5EZWZzKHRoaXMuY29sRGVmcyk7XHJcbiAgICBldmVudC5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgdGhpcy5ncmlkQXBpID0gZXZlbnQuYXBpO1xyXG4gIH1cclxufVxyXG4iXX0=
|