@sachin9822/reports-lib 0.0.176 → 0.0.178

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.
@@ -477,9 +477,9 @@ export class AccountingReportComponent {
477
477
  }
478
478
  }
479
479
  AccountingReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AccountingReportComponent, deps: [{ token: i1.ReportService }, { token: i2.ExportService }], target: i0.ɵɵFactoryTarget.Component });
480
- AccountingReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AccountingReportComponent, selector: "lib-accounting-report", ngImport: i0, template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && accountingReportModel.accountingReportByBranchGroups?.length\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div class=\"report-accordion\">\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"title-stack line-1\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"group.receiveTransactions.entries\" [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\"\r\n [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event, i * 2 + 1)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important;height:auto!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important}::ng-deep .compact-grid .ag-cell{cursor:default!important;border-right:1px solid #e0e0e0;padding:2px 3px!important;font-size:9px!important;display:flex!important;align-items:center!important}::ng-deep .compact-grid .ag-cell-value{cursor:text!important;font-size:9px!important;padding:0 3px 0 2px!important}::ng-deep .compact-grid .ag-right-aligned-cell{text-align:right!important;justify-content:flex-end!important;text-overflow:ellipsis}.report-accordion .grid-size{width:100%!important;font-weight:500!important;height:390px!important}.report-accordion ::ng-deep .ag-root{-webkit-user-select:text!important;user-select:text!important}.report-accordion ::ng-deep .ag-cell{-webkit-user-select:text!important;user-select:text!important}.report-accordion .margin-bottom-30{margin-bottom:30px}.report-accordion ::ng-deep .accordion-button{display:flex;align-items:flex-start;width:100%;min-height:30px;background-color:#e7f1ff;border:0}.report-accordion .title-stack{display:flex;flex-direction:column}.report-accordion .line-1{font-weight:600}.report-accordion ::ng-deep .accordion-button.collapsed{color:#0c63e4!important;background-color:#f4f7fc!important}.report-accordion ::ng-deep .accordion-button{color:#052c65!important;background-color:#f4f7fc!important}.report-accordion ::ng-deep .accordion-item{margin-bottom:10px}.report-accordion ::ng-deep .accordion-item{border-radius:0!important;margin-bottom:10px}.report-accordion ::ng-deep .accordion-button{border-radius:0!important;font-size:13px!important}.report-accordion ::ng-deep .accordion-collapse{border-radius:0!important}.report-accordion ::ng-deep .accordion-body{border-radius:0!important}.report-accordion ::ng-deep .accordion-item{border:1px solid #b0bac5!important}.report-accordion ::ng-deep .accordion-item{border:1px solid #b0bac5;border-radius:0;margin-bottom:10px}.report-accordion ::ng-deep .accordion-button{border:none;background-color:#e7f1ff;box-shadow:none}.report-accordion ::ng-deep .accordion-button.collapsed{border-bottom:none!important}.report-accordion ::ng-deep .accordion-button:not(.collapsed){background-color:#fff;border-bottom:none!important}.report-accordion ::ng-deep .accordion-body{border-top:1px solid #b0bac5}.report-accordion :host ::ng-deep .my-2{margin-bottom:10px!important}.report-accordion label{margin-bottom:0!important}.report-accordion .subgroupcolumn{font-family:Open Sans!important;font-size:13px!important;color:#052c65!important;font-weight:700!important}.report-accordion ::ng-deep .accordion-button.collapsed,.report-accordion .card-header .btn-link{color:#0c63e4!important;padding:10px!important}.report-accordion ::ng-deep .accordion-button:not(.collapsed),.report-accordion .card-header .btn-link{color:#052c65!important;padding:10px!important}\n"], dependencies: [{ kind: "component", type: i3.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "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"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PageSizeSelectorComponent, selector: "lib-page-size-selector", inputs: ["pageSizeArray", "defaultSize", "totalEntries", "gridApi"] }, { kind: "component", type: i6.MetadataComponent, selector: "lib-metadata", inputs: ["metaDataOne", "metaDataTwo", "showmetaDataOne", "showmetaDataTwo", "reportName"], outputs: ["searchEvent", "exportEvent"] }, { kind: "component", type: i7.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i7.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i7.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { kind: "directive", type: i7.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { kind: "component", type: i8.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i9.SearchFilterComponent, selector: "lib-search-filter", inputs: ["ReportName"], outputs: ["searchClicked"] }] });
480
+ AccountingReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AccountingReportComponent, selector: "lib-accounting-report", ngImport: i0, template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && accountingReportModel.accountingReportByBranchGroups?.length\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"title-stack line-1\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.receiveTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2 + 1)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important;height:auto!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important}::ng-deep .compact-grid .ag-cell{cursor:default!important;border-right:1px solid #e0e0e0;padding:2px 3px!important;font-size:9px!important;display:flex!important;align-items:center!important}::ng-deep .compact-grid .ag-cell-value{cursor:text!important;font-size:9px!important;padding:0 3px 0 2px!important}::ng-deep .compact-grid .ag-right-aligned-cell{text-align:right!important;justify-content:flex-end!important;text-overflow:ellipsis}.grid-size{width:100%!important;font-weight:500!important;height:390px!important}::ng-deep .ag-root{-webkit-user-select:text!important;user-select:text!important}::ng-deep .ag-cell{-webkit-user-select:text!important;user-select:text!important}.margin-bottom-30{margin-bottom:30px}::ng-deep .accordion-button{display:flex;align-items:flex-start;width:100%;min-height:30px;background-color:#e7f1ff;border:0}.title-stack{display:flex;flex-direction:column}.line-1{font-weight:600}::ng-deep .accordion-button.collapsed{color:#0c63e4!important;background-color:#f4f7fc!important}::ng-deep .accordion-button{color:#052c65!important;background-color:#f4f7fc!important}::ng-deep .accordion-item{margin-bottom:10px}::ng-deep .accordion-item{border-radius:0!important;margin-bottom:10px}::ng-deep .accordion-button{border-radius:0!important;font-size:13px!important}::ng-deep .accordion-collapse{border-radius:0!important}::ng-deep .accordion-body{border-radius:0!important}::ng-deep .accordion-item{border:1px solid #b0bac5!important}::ng-deep .accordion-item{border:1px solid #b0bac5;border-radius:0;margin-bottom:10px}::ng-deep .accordion-button{border:none;background-color:#e7f1ff;box-shadow:none}::ng-deep .accordion-button.collapsed{border-bottom:none!important}::ng-deep .accordion-button:not(.collapsed){background-color:#fff;border-bottom:none!important}::ng-deep .accordion-body{border-top:1px solid #b0bac5}:host ::ng-deep .my-2{margin-bottom:10px!important}label{margin-bottom:0!important}::ng-deep .card-header .btn-link{font-size:13px!important;color:#0c63e4!important}.subgroupcolumn{font-family:Open Sans!important;font-size:13px!important;color:#052c65!important;font-weight:700!important}::ng-deep .accordion-button.collapsed{color:#0c63e4!important;padding:10px!important}::ng-deep .accordion-button:not(.collapsed){color:#052c65!important;padding:10px!important}\n"], dependencies: [{ kind: "component", type: i3.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "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"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PageSizeSelectorComponent, selector: "lib-page-size-selector", inputs: ["pageSizeArray", "defaultSize", "totalEntries", "gridApi"] }, { kind: "component", type: i6.MetadataComponent, selector: "lib-metadata", inputs: ["metaDataOne", "metaDataTwo", "showmetaDataOne", "showmetaDataTwo", "reportName"], outputs: ["searchEvent", "exportEvent"] }, { kind: "component", type: i7.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i7.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i7.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { kind: "directive", type: i7.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { kind: "component", type: i8.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i9.SearchFilterComponent, selector: "lib-search-filter", inputs: ["ReportName"], outputs: ["searchClicked"] }] });
481
481
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AccountingReportComponent, decorators: [{
482
482
  type: Component,
483
- args: [{ selector: 'lib-accounting-report', template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && accountingReportModel.accountingReportByBranchGroups?.length\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div class=\"report-accordion\">\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"title-stack line-1\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"group.receiveTransactions.entries\" [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\"\r\n [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event, i * 2 + 1)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important;height:auto!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important}::ng-deep .compact-grid .ag-cell{cursor:default!important;border-right:1px solid #e0e0e0;padding:2px 3px!important;font-size:9px!important;display:flex!important;align-items:center!important}::ng-deep .compact-grid .ag-cell-value{cursor:text!important;font-size:9px!important;padding:0 3px 0 2px!important}::ng-deep .compact-grid .ag-right-aligned-cell{text-align:right!important;justify-content:flex-end!important;text-overflow:ellipsis}.report-accordion .grid-size{width:100%!important;font-weight:500!important;height:390px!important}.report-accordion ::ng-deep .ag-root{-webkit-user-select:text!important;user-select:text!important}.report-accordion ::ng-deep .ag-cell{-webkit-user-select:text!important;user-select:text!important}.report-accordion .margin-bottom-30{margin-bottom:30px}.report-accordion ::ng-deep .accordion-button{display:flex;align-items:flex-start;width:100%;min-height:30px;background-color:#e7f1ff;border:0}.report-accordion .title-stack{display:flex;flex-direction:column}.report-accordion .line-1{font-weight:600}.report-accordion ::ng-deep .accordion-button.collapsed{color:#0c63e4!important;background-color:#f4f7fc!important}.report-accordion ::ng-deep .accordion-button{color:#052c65!important;background-color:#f4f7fc!important}.report-accordion ::ng-deep .accordion-item{margin-bottom:10px}.report-accordion ::ng-deep .accordion-item{border-radius:0!important;margin-bottom:10px}.report-accordion ::ng-deep .accordion-button{border-radius:0!important;font-size:13px!important}.report-accordion ::ng-deep .accordion-collapse{border-radius:0!important}.report-accordion ::ng-deep .accordion-body{border-radius:0!important}.report-accordion ::ng-deep .accordion-item{border:1px solid #b0bac5!important}.report-accordion ::ng-deep .accordion-item{border:1px solid #b0bac5;border-radius:0;margin-bottom:10px}.report-accordion ::ng-deep .accordion-button{border:none;background-color:#e7f1ff;box-shadow:none}.report-accordion ::ng-deep .accordion-button.collapsed{border-bottom:none!important}.report-accordion ::ng-deep .accordion-button:not(.collapsed){background-color:#fff;border-bottom:none!important}.report-accordion ::ng-deep .accordion-body{border-top:1px solid #b0bac5}.report-accordion :host ::ng-deep .my-2{margin-bottom:10px!important}.report-accordion label{margin-bottom:0!important}.report-accordion .subgroupcolumn{font-family:Open Sans!important;font-size:13px!important;color:#052c65!important;font-weight:700!important}.report-accordion ::ng-deep .accordion-button.collapsed,.report-accordion .card-header .btn-link{color:#0c63e4!important;padding:10px!important}.report-accordion ::ng-deep .accordion-button:not(.collapsed),.report-accordion .card-header .btn-link{color:#052c65!important;padding:10px!important}\n"] }]
483
+ args: [{ selector: 'lib-accounting-report', template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && accountingReportModel.accountingReportByBranchGroups?.length\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"title-stack line-1\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" style=\"width: 100%; height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.receiveTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2 + 1)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>", styles: [".transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important;height:auto!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important}::ng-deep .compact-grid .ag-cell{cursor:default!important;border-right:1px solid #e0e0e0;padding:2px 3px!important;font-size:9px!important;display:flex!important;align-items:center!important}::ng-deep .compact-grid .ag-cell-value{cursor:text!important;font-size:9px!important;padding:0 3px 0 2px!important}::ng-deep .compact-grid .ag-right-aligned-cell{text-align:right!important;justify-content:flex-end!important;text-overflow:ellipsis}.grid-size{width:100%!important;font-weight:500!important;height:390px!important}::ng-deep .ag-root{-webkit-user-select:text!important;user-select:text!important}::ng-deep .ag-cell{-webkit-user-select:text!important;user-select:text!important}.margin-bottom-30{margin-bottom:30px}::ng-deep .accordion-button{display:flex;align-items:flex-start;width:100%;min-height:30px;background-color:#e7f1ff;border:0}.title-stack{display:flex;flex-direction:column}.line-1{font-weight:600}::ng-deep .accordion-button.collapsed{color:#0c63e4!important;background-color:#f4f7fc!important}::ng-deep .accordion-button{color:#052c65!important;background-color:#f4f7fc!important}::ng-deep .accordion-item{margin-bottom:10px}::ng-deep .accordion-item{border-radius:0!important;margin-bottom:10px}::ng-deep .accordion-button{border-radius:0!important;font-size:13px!important}::ng-deep .accordion-collapse{border-radius:0!important}::ng-deep .accordion-body{border-radius:0!important}::ng-deep .accordion-item{border:1px solid #b0bac5!important}::ng-deep .accordion-item{border:1px solid #b0bac5;border-radius:0;margin-bottom:10px}::ng-deep .accordion-button{border:none;background-color:#e7f1ff;box-shadow:none}::ng-deep .accordion-button.collapsed{border-bottom:none!important}::ng-deep .accordion-button:not(.collapsed){background-color:#fff;border-bottom:none!important}::ng-deep .accordion-body{border-top:1px solid #b0bac5}:host ::ng-deep .my-2{margin-bottom:10px!important}label{margin-bottom:0!important}::ng-deep .card-header .btn-link{font-size:13px!important;color:#0c63e4!important}.subgroupcolumn{font-family:Open Sans!important;font-size:13px!important;color:#052c65!important;font-weight:700!important}::ng-deep .accordion-button.collapsed{color:#0c63e4!important;padding:10px!important}::ng-deep .accordion-button:not(.collapsed){color:#052c65!important;padding:10px!important}\n"] }]
484
484
  }], ctorParameters: function () { return [{ type: i1.ReportService }, { type: i2.ExportService }]; } });
485
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudGluZy1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9hY2NvdW50aW5nLXJlcG9ydC9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUtyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFL0UsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7O0FBMEJ4QyxNQUFNLE9BQU8seUJBQXlCO0lBd0VwQyxZQUFvQixhQUE0QixFQUFVLGFBQTRCO1FBQWxFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF0RXRGLGVBQVUsR0FBVyxZQUFZLENBQUM7UUFNbEMsMEJBQXFCLEdBQUcsc0JBQXNCLENBQUM7UUFDL0MsaUJBQVksR0FBMkIsc0JBQXNCLENBQUMsUUFBUSxDQUFDO1FBQ3ZFLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBSzdCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFF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S0FBSyxDQUFDLFFBQVE7WUFDekIsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3JCLGVBQWUsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUs7WUFDM0MsZUFBZSxFQUFFLEtBQUssQ0FBQyxjQUFjLElBQUksS0FBSztZQUM5Qyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUs7WUFDbkQsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDcEQsY0FBYyxFQUFFLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSztZQUN2QyxlQUFlLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLO1lBQ3ZDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUs7WUFDakMsV0FBVyxFQUFFLEtBQUssQ0FBQywrQ0FBK0M7U0FDbkUsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDOztzSEExaUJVLHlCQUF5QjswR0FBekIseUJBQXlCLDZEQ3JDdEMsaWlIQThETTsyRkR6Qk8seUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY2NvdW50aW5nUmVwb3J0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWNjb3VudGluZy1yZXBvcnQvYWNjb3VudGluZy1yZXBvcnQtbW9kZWwnO1xyXG5pbXBvcnQgeyBDb2xEZWYsIENvbHVtbkFwaSwgR3JpZEFwaSwgR3JpZFJlYWR5RXZlbnQgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IFJlcG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXhwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50TG9hZGluZ1N0YXRlcyB9IGZyb20gJy4uLy4uL21vZGVscy9jb21wb25lbnQtbG9hZGluZy1zdGF0ZXMnO1xyXG5pbXBvcnQgeyBBY2NvdW50aW5nUmVwb3J0QnJhbmNoR3JvdXAgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWNjb3VudGluZy1yZXBvcnQvYWNjb3VudGluZy1yZXBvcnQtYnJhbmNoLWdyb3VwJztcclxuaW1wb3J0IGpzUERGIGZyb20gJ2pzcGRmJztcclxuaW1wb3J0ICdqc3BkZi1hdXRvdGFibGUnO1xyXG5pbXBvcnQgKiBhcyBFeGNlbEpTIGZyb20gJ2V4Y2VsanMnO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcblxyXG5kZWNsYXJlIG1vZHVsZSAnanNwZGYnIHtcclxuICBpbnRlcmZhY2UganNQREYge1xyXG4gICAgYXV0b1RhYmxlOiAob3B0aW9uczogYW55KSA9PiBqc1BERjtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudGluZ1JlcG9ydFJlcXVlc3Qge1xyXG4gIHN0YXJ0RGF0ZTogc3RyaW5nO1xyXG4gIGVuZERhdGU6IHN0cmluZztcclxuICBzZW5kQ291bnRyeUNvZGU6IHN0cmluZztcclxuICByZWN2Q291bnRyeUNvZGU6IHN0cmluZztcclxuICBidXNpbmVzc1BhcnRuZXJDb3JyZWxhdGlvbklEOiBzdHJpbmc7XHJcbiAgdHJhbnNhY3Rpb25TdGF0dXM6IHN0cmluZztcclxuICBwYXlvdXRDdXJyZW5jeTogc3RyaW5nO1xyXG4gIHRyYW5zYWN0aW9uVHlwZTogc3RyaW5nO1xyXG4gIGJyYW5jaENvZGU6IHN0cmluZztcclxuICBjb21wYW55Q29kZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hY2NvdW50aW5nLXJlcG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY291bnRpbmctcmVwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNjb3VudGluZ1JlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIFJlcG9ydE5hbWU6IHN0cmluZyA9IFwiQWNjb3VudGluZ1wiO1xyXG4gIHJlcG9ydFVzZXI6IGFueTtcclxuICByZXBvcnRUaW1lOiBhbnk7XHJcbiAgcmVwb3J0UGVyaW9kOiBhbnk7XHJcbiAgYnJhbmNoTmFtZUFuZENvZGU6IGFueTtcclxuICBzdWJHcm91cENvbHVtbjogYW55O1xyXG4gIENvbXBvbmVudExvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXM7XHJcbiAgbG9hZGluZ1N0YXRlOiBDb21wb25lbnRMb2FkaW5nU3RhdGVzID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICBub0RhdGFGb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBsZWZ0RGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICByaWdodERhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHJvd0RhdGEgPSBbXTtcclxuICBhY2NvdW50aW5nUmVwb3J0TW9kZWw6IEFjY291bnRpbmdSZXBvcnRNb2RlbDtcclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMTU7XHJcblxyXG4gIHNlbGVjdGVkRXhwb3J0T3B0aW9uOiBzdHJpbmcgPSAnZXhjZWwnO1xyXG4gIGV4cG9ydEZvcm1hdHMgPSBbeyBmb3JtYXROYW1lOiBcIkV4Y2VsXCIsIGNvZGU6ICdleGNlbCcgfSwgeyBmb3JtYXROYW1lOiBcIlBERlwiLCBjb2RlOiAncGRmJyB9LCB7IGZvcm1hdE5hbWU6IFwiQ1NWXCIsIGNvZGU6ICdjc3YnIH1dXHJcblxyXG4gIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgIG1pbldpZHRoOiA0MCxcclxuICAgIHN1cHByZXNzU2l6ZVRvRml0OiBmYWxzZSxcclxuICAgIGNlbGxTdHlsZTogeyB1c2VyU2VsZWN0OiAndGV4dCcsICdsaW5lLWhlaWdodCc6ICcxLjInLCAnd2hpdGUtc3BhY2UnOiAnbm9ybWFsJywgJ3dvcmQtYnJlYWsnOiAnbm9ybWFsJywgJ292ZXJmbG93LXdyYXAnOiAnYnJlYWstd29yZCcgfSxcclxuXHJcbiAgICAvLyAgSGVhZGVyIHdyYXBwaW5nXHJcbiAgICB3cmFwSGVhZGVyVGV4dDogdHJ1ZSxcclxuICAgIGF1dG9IZWFkZXJIZWlnaHQ6IHRydWUsXHJcblxyXG4gICAgLy8gIENlbGwgd3JhcHBpbmdcclxuICAgIHdyYXBUZXh0OiB0cnVlLFxyXG4gICAgYXV0b0hlaWdodDogdHJ1ZVxyXG4gIH07XHJcblxyXG4gIGNvbHVtbkRlZnM6IENvbERlZltdID0gW1xyXG4gICAgeyBoZWFkZXJOYW1lOiAnQnVzaW5lc3NEYXRlJywgZmllbGQ6ICdidXNpbmVzc0RhdGUnLCB0b29sdGlwRmllbGQ6ICdidXNpbmVzc0RhdGUnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUeG5EYXRlJlRpbWUnLCBmaWVsZDogJ3RyYW5zYWN0aW9uRGF0ZUFuZFRpbWUnLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbkRhdGVBbmRUaW1lJywgbWluV2lkdGg6IDExMCwgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1RyYW5zYWN0aW9uIE51bWJlcicsIGZpZWxkOiAndHJhbnNhY3Rpb25OdW1iZXInLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbk51bWJlcicgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NlbmRDbGllbnQnLCBmaWVsZDogJ3NlbmRDbGllbnQnLCB0b29sdGlwRmllbGQ6ICdzZW5kQ2xpZW50JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUHJpbmNpcGxlIFNlbmRDbGllbnQgKElmIEFwcGxpY2FibGUpJywgZmllbGQ6ICdwcmluY2lwbGVTZW5kQ2xpZW50JywgdG9vbHRpcEZpZWxkOiAncHJpbmNpcGxlU2VuZENsaWVudCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1JlY2VpdmVDbGllbnQnLCBmaWVsZDogJ3JlY2VpdmVDbGllbnQnLCB0b29sdGlwRmllbGQ6ICdyZWNlaXZlQ2xpZW50JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUHJpbmNpcGxlIFJlY2VpdmVDbGllbnQgKElmIEFwcGxpY2FibGUpJywgZmllbGQ6ICdwcmluY2lwbGVSZWNlaXZlQ2xpZW50JywgdG9vbHRpcEZpZWxkOiAncHJpbmNpcGxlUmVjZWl2ZUNsaWVudCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1JlY2VpdmVDY3knLCBmaWVsZDogJ3JlY2VpdmVDdXJyZW5jeScsIHRvb2x0aXBGaWVsZDogJ3JlY2VpdmVDdXJyZW5jeScgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ0Ftb3VudFBhaWQnLCBmaWVsZDogJ2Ftb3VudFBhaWQnLCB0b29sdGlwRmllbGQ6ICdhbW91bnRQYWlkJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2VuZENjeScsIGZpZWxkOiAnc2VuZEN1cnJlbmN5JywgdG9vbHRpcEZpZWxkOiAnc2VuZEN1cnJlbmN5JywgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NlcnZpY2VGZWUnLCBmaWVsZDogJ3NlcnZpY2VGZWUnLCB0b29sdGlwRmllbGQ6ICdzZXJ2aWNlRmVlJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnVGF4JywgZmllbGQ6ICd0YXgnLCB0b29sdGlwRmllbGQ6ICd0YXgnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdQcmluY2lwbGVTZW5kIEFtb3VudCcsIGZpZWxkOiAncHJpbmNpcGxlU2VuZEFtb3VudCcsIHRvb2x0aXBGaWVsZDogJ3ByaW5jaXBsZVNlbmRBbW91bnQnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUcmFuc2FjdGlvbiBTdGF0dXMnLCBmaWVsZDogJ3RyYW5zYWN0aW9uU3RhdHVzJywgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25TdGF0dXMnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZXR0bGVtZW50Q2N5JywgZmllbGQ6ICdzZXR0bGVtZW50Q3VycmVuY3knLCB0b29sdGlwRmllbGQ6ICdzZXR0bGVtZW50Q3VycmVuY3knLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdDbGllbnRTZXR0bCAoaW4gU0NjeSknLCBmaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblNDY3knLCB0b29sdGlwRmllbGQ6ICdjbGllbnRTZXR0bGVtZW50SW5TQ2N5JywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnQ2xpZW50U2V0dGwgKGluIFVTRCknLCBmaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblVTRCcsIHRvb2x0aXBGaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblVTRCcsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NoYXJlVHlwZScsIGZpZWxkOiAnc2hhcmVUeXBlJywgdG9vbHRpcEZpZWxkOiAnc2hhcmVUeXBlJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2hhcmVWYWx1ZScsIGZpZWxkOiAnc2hhcmVWYWx1ZScsIHRvb2x0aXBGaWVsZDogJ3NoYXJlVmFsdWUnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZW5kL1JlY2VpdmUgRmVlQ2N5JywgZmllbGQ6ICdzZW5kUmVjZWl2ZUZlZUNjeScsIHRvb2x0aXBGaWVsZDogJ3NlbmRSZWNlaXZlRmVlQ2N5JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2hhcmVBbXQgKGluIFVTRCknLCBmaWVsZDogJ3NoYXJlQW1vdW50SW5VU0QnLCB0b29sdGlwRmllbGQ6ICdzaGFyZUFtb3VudEluVVNEJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2V0dGxlbWVudCBSYXRlJywgZmllbGQ6ICdzZXR0bGVtZW50UmF0ZScsIHRvb2x0aXBGaWVsZDogJ3NldHRsZW1lbnRSYXRlJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gIF07XHJcblxyXG5cclxuICBncmlkQXBpczogR3JpZEFwaVtdID0gW107XHJcbiAgZ3JpZENvbHVtbkFwaXM6IENvbHVtbkFwaVtdID0gW107XHJcblxyXG4gIHBhZ2luYXRpb25BcnJheTogYW55W107XHJcbiAgZXpyZW1pdFVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvcmlnaW5hbEdyb3VwRW50cmllczogQWNjb3VudGluZ1JlcG9ydEJyYW5jaEdyb3VwW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXBvcnRTZXJ2aWNlOiBSZXBvcnRTZXJ2aWNlLCBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IEV4cG9ydFNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV6cmVtaXR1c2VybmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2V6cmVtaXR1c2VybmFtZScpO1xyXG4gICAgaWYgKGV6cmVtaXR1c2VybmFtZSkge1xyXG4gICAgICB0aGlzLmV6cmVtaXRVc2VyID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBY2NvdW50aW5nUmVwb3J0KHJlcXVlc3Q/OiBBY2NvdW50aW5nUmVwb3J0UmVxdWVzdCkge1xyXG4gICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkxvYWRpbmc7XHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuYnJhbmNoTmFtZUFuZENvZGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN1Ykdyb3VwQ29sdW1uID0gdW5kZWZpbmVkO1xyXG4gICAgY29uc3QgZmluYWxSZXEgPSByZXF1ZXN0O1xyXG5cclxuICAgIHRoaXMucmVwb3J0U2VydmljZS5nZXRBY2NvdW50aW5nUmVwb3J0KGZpbmFsUmVxKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsID0gZGF0YTtcclxuICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG5cclxuICAgICAgY29uc29sZS5sb2codGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwpO1xyXG5cclxuICAgICAgdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICAgIGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcyA9IGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcy5tYXAoZW50cnkgPT4gKHtcclxuICAgICAgICAgIC4uLmVudHJ5LFxyXG4gICAgICAgICAgYnVzaW5lc3NEYXRlOiBmb3JtYXREYXRlKGVudHJ5LmJ1c2luZXNzRGF0ZSwgJ2RkL01NL3l5eXknLCAnZW4tVVMnKSxcclxuICAgICAgICAgIHRyYW5zYWN0aW9uRGF0ZUFuZFRpbWU6IGZvcm1hdERhdGUoZW50cnkudHJhbnNhY3Rpb25EYXRlQW5kVGltZSwgJ2RkL01NL3l5eXkgaGg6bW0gYScsICdlbi1VUycpLFxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzID0gZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzLm1hcChlbnRyeSA9PiAoe1xyXG4gICAgICAgICAgLi4uZW50cnksXHJcbiAgICAgICAgICBidXNpbmVzc0RhdGU6IGZvcm1hdERhdGUoZW50cnkuYnVzaW5lc3NEYXRlLCAnZGQvTU0veXl5eScsICdlbi1VUycpLFxyXG4gICAgICAgICAgdHJhbnNhY3Rpb25EYXRlQW5kVGltZTogZm9ybWF0RGF0ZShlbnRyeS50cmFuc2FjdGlvbkRhdGVBbmRUaW1lLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJyksXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbCA9IGRhdGE7XHJcbiAgICAgIHRoaXMubm9EYXRhRm91bmQgPSBPYmplY3Qua2V5cyh0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMpLmxlbmd0aCA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICBjb25zdCBicmFuY2hDb3VudCA9IHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbkFycmF5ID0gbmV3IEFycmF5KGJyYW5jaENvdW50ICogMikuZmlsbCgxNSk7XHJcblxyXG5cclxuICAgICAgdGhpcy5yZXBvcnRVc2VyID0gdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwucmVwb3J0VXNlcjtcclxuICAgICAgdGhpcy5yZXBvcnRUaW1lID0gZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJyk7XHJcbiAgICAgIHRoaXMucmVwb3J0UGVyaW9kID0gYCR7Zm9ybWF0RGF0ZShmaW5hbFJlcS5zdGFydERhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9IC0gJHtmb3JtYXREYXRlKGZpbmFsUmVxLmVuZERhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9YDtcclxuXHJcbiAgICAgIHRoaXMubGVmdERhdGEgPSB7XHJcbiAgICAgICAgJ1JlcG9ydCBVc2VyICc6IGAke3RoaXMucmVwb3J0VXNlcn1gLFxyXG4gICAgICAgICdSZXBvcnQgVGltZSc6IGAke3RoaXMucmVwb3J0VGltZX1gLFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJpZ2h0RGF0YSA9IHtcclxuICAgICAgICAnUmVwb3J0IFBlcmlvZCc6IGAke3RoaXMucmVwb3J0UGVyaW9kfWAsXHJcbiAgICAgICAgJ0NvbXBhbnknOiBcIlhwcmVzcyBNb25leVwiXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERlZXAgY29weSB0byBwcmVzZXJ2ZSBvcmlnaW5hbCBkYXRhIGZvciBzZWFyY2hcclxuICAgICAgdGhpcy5vcmlnaW5hbEdyb3VwRW50cmllcyA9IHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5tYXAoZ3JvdXAgPT4gKHtcclxuICAgICAgICAuLi5ncm91cCxcclxuICAgICAgICBzZW5kVHJhbnNhY3Rpb25zOiB7XHJcbiAgICAgICAgICAuLi5ncm91cC5zZW5kVHJhbnNhY3Rpb25zLFxyXG4gICAgICAgICAgZW50cmllczogWy4uLmdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllc11cclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlY2VpdmVUcmFuc2FjdGlvbnM6IHtcclxuICAgICAgICAgIC4uLmdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMsXHJcbiAgICAgICAgICBlbnRyaWVzOiBbLi4uZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXVxyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG5cclxuXHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaGFuZGxlRXhwb3J0KG9wdGlvbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID0gb3B0aW9uO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncGRmJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvUGRmKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgICAgdGhpcy5leHBvcnRUb0NzdigpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGFsZXJ0KCdQbGVhc2Ugc2VsZWN0IGFuIGV4cG9ydCBmb3JtYXQuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZSA9IChzdHI6IGFueSk6IHN0cmluZyA9PlxyXG4gICAgICBzdHI/LnRvU3RyaW5nKClcclxuICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIC5yZXBsYWNlKC8sL2csICcnKVxyXG4gICAgICAgIC5yZXBsYWNlKC9cXHMrL2csICcgJylcclxuICAgICAgICAucmVwbGFjZSgvW1xcdTIwMEItXFx1MjAwRFxcdUZFRkZdL2csICcnKVxyXG4gICAgICAgIC50cmltKCk7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dDtcclxuICAgIGNvbnN0IHNlYXJjaCA9IG5vcm1hbGl6ZSh0ZXh0KTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsPy5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaCgoZ3JvdXAsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsU2VuZEVudHJpZXMgPSB0aGlzLm9yaWdpbmFsR3JvdXBFbnRyaWVzW2luZGV4XT8uc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzIHx8IFtdO1xyXG4gICAgICBjb25zdCBvcmlnaW5hbFJlY2VpdmVFbnRyaWVzID0gdGhpcy5vcmlnaW5hbEdyb3VwRW50cmllc1tpbmRleF0/LnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllcyB8fCBbXTtcclxuXHJcbiAgICAgIGlmIChzZWFyY2gpIHtcclxuICAgICAgICBncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBvcmlnaW5hbFNlbmRFbnRyaWVzLmZpbHRlcihlbnRyeSA9PlxyXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhlbnRyeSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBvcmlnaW5hbFJlY2VpdmVFbnRyaWVzLmZpbHRlcihlbnRyeSA9PlxyXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhlbnRyeSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBbLi4ub3JpZ2luYWxTZW5kRW50cmllc107XHJcbiAgICAgICAgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzID0gWy4uLm9yaWdpbmFsUmVjZWl2ZUVudHJpZXNdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZXNldCBib3RoIGdyaWRzXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMsIGdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllc10uZm9yRWFjaCgoZW50cmllcywgaWR4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ3JpZEFwaSA9IHRoaXMuZ3JpZEFwaXNbaW5kZXggKiAyICsgaWR4XTsgLy8ga2VlcCBzZXBhcmF0ZSBpZHMgZm9yIGdyaWRzXHJcbiAgICAgICAgaWYgKGdyaWRBcGkpIHtcclxuICAgICAgICAgIGdyaWRBcGkuc2V0Um93RGF0YShlbnRyaWVzKTtcclxuICAgICAgICAgIGlmIChncmlkQXBpLnBhZ2luYXRpb25Hb1RvRmlyc3RQYWdlKSBncmlkQXBpLnBhZ2luYXRpb25Hb1RvRmlyc3RQYWdlKCk7XHJcbiAgICAgICAgICBpZiAoZ3JpZEFwaS5wYWdpbmF0aW9uU2V0UGFnZVNpemUpIGdyaWRBcGkucGFnaW5hdGlvblNldFBhZ2VTaXplKHRoaXMucGFnZVNpemUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBvbkdyaWRSZWFkeShwYXJhbXM6IEdyaWRSZWFkeUV2ZW50LCBpZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmdyaWRBcGlzW2lkXSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5BcGlzW2lkXSA9IHBhcmFtcy5jb2x1bW5BcGk7ICAgLy8g4pyFIGtlZXAgcGVyIGdyaWRcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b1NpemVBbGxDb2x1bW5zKGlkKSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuICBvbkdyaWRTaXplQ2hhbmdlZChwYXJhbXM6IGFueSwgaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5hdXRvU2l6ZUFsbENvbHVtbnMoaWQpO1xyXG4gIH1cclxuXHJcblxyXG4gIGF1dG9TaXplQWxsQ29sdW1ucyhpZDogbnVtYmVyLCBza2lwSGVhZGVyOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNvbHVtbkFwaSA9IHRoaXMuZ3JpZENvbHVtbkFwaXNbaWRdO1xyXG4gICAgaWYgKCFjb2x1bW5BcGkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBhbGxDb2x1bW5JZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBjb2x1bW5BcGkuZ2V0Q29sdW1ucygpLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgIGFsbENvbHVtbklkcy5wdXNoKGNvbHVtbi5nZXRJZCgpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbHVtbkFwaS5hdXRvU2l6ZUNvbHVtbnMoYWxsQ29sdW1uSWRzLCBza2lwSGVhZGVyKTtcclxuICB9XHJcblxyXG5cclxuICBmb3JtYXROdW1iZXIocGFyYW1zOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKHBhcmFtcy52YWx1ZSA9PSBudWxsKSByZXR1cm4gJyc7XHJcblxyXG4gICAgY29uc3QgZmllbGQgPSBwYXJhbXMuY29sRGVmLmZpZWxkO1xyXG5cclxuICAgIGlmIChmaWVsZCA9PT0gJ3NldHRsZW1lbnRSYXRlJykge1xyXG4gICAgICByZXR1cm4gTnVtYmVyKHBhcmFtcy52YWx1ZSkudG9GaXhlZCg4KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gTnVtYmVyKHBhcmFtcy52YWx1ZSkudG9GaXhlZCgzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwb3J0VG9QZGYoKSB7XHJcbiAgICBpZiAoIXRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcz8ubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCB0aXRsZSA9ICdBY2NvdW50aW5nIFJlcG9ydCc7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9ICdBY2NvdW50aW5nLVJlcG9ydC5wZGYnO1xyXG5cclxuICAgIGNvbnN0IG1ldGFkYXRhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnUmVwb3J0IFVzZXI6JywgdGhpcy5yZXBvcnRVc2VyXSxcclxuICAgICAgWydSZXBvcnQgVGltZTonLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2Q6JywgdGhpcy5yZXBvcnRQZXJpb2RdLFxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBkb2MgPSBuZXcganNQREYoeyBvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScsIHVuaXQ6ICdtbScsIGZvcm1hdDogWzcwMCwgMjEwXSB9KTtcclxuXHJcbiAgICBjb25zdCBsb2dvV2lkdGggPSAzOC40LCBsb2dvSGVpZ2h0ID0gMTcuNSwgbG9nb1ggPSAxNSwgbG9nb1kgPSA4O1xyXG4gICAgY29uc3QgcGFnZVdpZHRoID0gZG9jLmludGVybmFsLnBhZ2VTaXplLndpZHRoO1xyXG4gICAgY29uc3QgdGl0bGVZID0gMTg7XHJcblxyXG4gICAgLy8gTG9nb1xyXG4gICAgaWYgKHRoaXMuZXhwb3J0U2VydmljZVsnbG9nb0Jhc2U2NCddKSB7XHJcbiAgICAgIGRvYy5hZGRJbWFnZSh0aGlzLmV4cG9ydFNlcnZpY2VbJ2xvZ29CYXNlNjQnXSwgJ1BORycsIGxvZ29YLCBsb2dvWSwgbG9nb1dpZHRoLCBsb2dvSGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaXRsZVxyXG4gICAgZG9jLnNldEZvbnRTaXplKDE1KTtcclxuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG4gICAgZG9jLnRleHQodGl0bGUsIHBhZ2VXaWR0aCAvIDIsIHRpdGxlWSwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XHJcblxyXG4gICAgbGV0IGN1cnJlbnRZID0gdGl0bGVZICsgMTQ7XHJcblxyXG4gICAgLy8gTWV0YWRhdGFcclxuICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICBtZXRhZGF0YS5mb3JFYWNoKChbbGFiZWwsIHZhbHVlXSwgaSkgPT4ge1xyXG4gICAgICBjb25zdCB5ID0gY3VycmVudFkgKyBpICogNztcclxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgIGRvYy50ZXh0KGxhYmVsLCAxNSwgeSk7XHJcbiAgICAgIGNvbnN0IGxhYmVsV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKGxhYmVsICsgJyAnKTtcclxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdub3JtYWwnKTtcclxuICAgICAgZG9jLnRleHQodmFsdWUgPz8gJycsIDE1ICsgbGFiZWxXaWR0aCwgeSk7XHJcbiAgICB9KTtcclxuICAgIGN1cnJlbnRZICs9IG1ldGFkYXRhLmxlbmd0aCAqIDcgKyA1O1xyXG5cclxuICAgIC8vIEJyYW5jaGVzXHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG5cclxuICAgICAgY29uc3QgYnJhbmNoVGV4dCA9IGBCcmFuY2ggKE5hbWUgJiBDb2RlKTogJHtncm91cC5icmFuY2hOYW1lQW5kQ29kZX1gO1xyXG4gICAgICBkb2MudGV4dChicmFuY2hUZXh0LCAxNSwgY3VycmVudFkpO1xyXG4gICAgICBjdXJyZW50WSArPSA3O1xyXG5cclxuICAgICAgLy8gTG9vcCBzdWJncm91cHMgKFNlbmQgKyBSZWNlaXZlKVxyXG4gICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9uc10uZm9yRWFjaChzdWJHcm91cCA9PiB7XHJcbiAgICAgICAgaWYgKCFzdWJHcm91cC5lbnRyaWVzPy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgICAgZG9jLnRleHQoYFN1YiBHcm91cDogJHtzdWJHcm91cC5zdWJHcm91cE5hbWV9YCwgMTUsIGN1cnJlbnRZKTtcclxuICAgICAgICBjdXJyZW50WSArPSA1O1xyXG5cclxuICAgICAgICBjb25zdCB7IGhlYWRlcnMsIHJvd3MgfSA9IHRoaXMucHJlcGFyZUFjY291bnRpbmdUYWJsZShzdWJHcm91cC5lbnRyaWVzKTtcclxuXHJcbiAgICAgICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XHJcbiAgICAgICAgICBoZWFkOiBbaGVhZGVyc10sXHJcbiAgICAgICAgICBib2R5OiByb3dzLFxyXG4gICAgICAgICAgc3RhcnRZOiBjdXJyZW50WSxcclxuICAgICAgICAgIHRoZW1lOiAnZ3JpZCcsXHJcbiAgICAgICAgICBoZWFkU3R5bGVzOiB7XHJcbiAgICAgICAgICAgIGZpbGxDb2xvcjogWzIyMCwgMjIwLCAyMjBdLCB0ZXh0Q29sb3I6IDAsXHJcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ2JvbGQnLCBmb250U2l6ZTogOSwgaGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBib2R5U3R5bGVzOiB7IGZvbnRTaXplOiA4LCBmaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1XSwgdGV4dENvbG9yOiBbMCwgMCwgMF0gfSxcclxuICAgICAgICAgIHN0eWxlczogeyBjZWxsUGFkZGluZzogMiwgb3ZlcmZsb3c6ICdsaW5lYnJlYWsnLCBtaW5DZWxsSGVpZ2h0OiA2IH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN1cnJlbnRZID0gKGRvYyBhcyBhbnkpLmxhc3RBdXRvVGFibGUuZmluYWxZICsgMTA7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZG9jLnNhdmUoZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBvcnRUb0V4Y2VsKCkge1xyXG4gICAgaWYgKCF0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGl0bGUgPSAnQWNjb3VudGluZyBSZXBvcnQnO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSAnQWNjb3VudGluZy1SZXBvcnQueGxzeCc7XHJcblxyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgRXhjZWxKUy5Xb3JrYm9vaygpO1xyXG4gICAgY29uc3Qgd29ya3NoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KCdBY2NvdW50aW5nIFJlcG9ydCcpO1xyXG4gICAgbGV0IGN1cnJlbnRSb3cgPSAxO1xyXG5cclxuICAgIC8vIExvZ29cclxuICAgIGlmICh0aGlzLmV4cG9ydFNlcnZpY2UubG9nb0Jhc2U2NCkge1xyXG4gICAgICBjb25zdCBiYXNlNjREYXRhID0gdGhpcy5leHBvcnRTZXJ2aWNlLmxvZ29CYXNlNjQucmVwbGFjZSgvXmRhdGE6aW1hZ2VcXC9cXHcrO2Jhc2U2NCwvLCAnJyk7XHJcbiAgICAgIGNvbnN0IGltYWdlSWQgPSB3b3JrYm9vay5hZGRJbWFnZSh7XHJcbiAgICAgICAgYmFzZTY0OiBiYXNlNjREYXRhLFxyXG4gICAgICAgIGV4dGVuc2lvbjogJ3BuZycsXHJcbiAgICAgIH0pO1xyXG4gICAgICB3b3Jrc2hlZXQuYWRkSW1hZ2UoaW1hZ2VJZCwgeyB0bDogeyBjb2w6IDAsIHJvdzogMCB9LCBleHQ6IHsgd2lkdGg6IDE0NSwgaGVpZ2h0OiA2NiB9LCBlZGl0QXM6ICdvbmVDZWxsJyB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaXRsZVxyXG4gICAgY29uc3QgdGl0bGVSb3cgPSB3b3Jrc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3cpO1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS52YWx1ZSA9IHRpdGxlO1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS5mb250ID0geyBib2xkOiB0cnVlLCBzaXplOiAxNiB9O1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS5hbGlnbm1lbnQgPSB7IHZlcnRpY2FsOiAnbWlkZGxlJywgaG9yaXpvbnRhbDogJ2xlZnQnIH07XHJcbiAgICB3b3Jrc2hlZXQubWVyZ2VDZWxscyhgRiR7Y3VycmVudFJvd306SiR7Y3VycmVudFJvd31gKTtcclxuICAgIGN1cnJlbnRSb3cgKz0gMztcclxuXHJcbiAgICAvLyBNZXRhZGF0YVxyXG4gICAgY29uc3QgbWV0YWRhdGE6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcclxuICAgICAgWydSZXBvcnQgVXNlcicsIHRoaXMucmVwb3J0VXNlcl0sXHJcbiAgICAgIFsnUmVwb3J0IFRpbWUnLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2QnLCB0aGlzLnJlcG9ydFBlcmlvZF0sXHJcbiAgICBdO1xyXG4gICAgbWV0YWRhdGEuZm9yRWFjaCgoW2xhYmVsLCB2YWx1ZV0pID0+IHtcclxuICAgICAgY29uc3Qgcm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICByb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHtcclxuICAgICAgICByaWNoVGV4dDogW1xyXG4gICAgICAgICAgeyB0ZXh0OiBgJHtsYWJlbH06IGAsIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9IH0sXHJcbiAgICAgICAgICB7IHRleHQ6IHZhbHVlID8/ICcnLCBmb250OiB7IGJvbGQ6IGZhbHNlIH0gfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHdvcmtzaGVldC5hZGRSb3coW10pOyBjdXJyZW50Um93Kys7XHJcblxyXG4gICAgLy8gQnJhbmNoZXNcclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgY29uc3QgYnJhbmNoUm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICBicmFuY2hSb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHtcclxuICAgICAgICByaWNoVGV4dDogW1xyXG4gICAgICAgICAgeyB0ZXh0OiAnQnJhbmNoIChOYW1lICYgQ29kZSk6ICcsIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9IH0sXHJcbiAgICAgICAgICB7IHRleHQ6IGdyb3VwLmJyYW5jaE5hbWVBbmRDb2RlID8/ICcnLCBmb250OiB7IGJvbGQ6IGZhbHNlIH0gfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgICAgd29ya3NoZWV0LmFkZFJvdyhbXSk7IGN1cnJlbnRSb3crKztcclxuXHJcbiAgICAgIC8vIExvb3Agc3ViZ3JvdXBzXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zXS5mb3JFYWNoKHN1Ykdyb3VwID0+IHtcclxuICAgICAgICBpZiAoIXN1Ykdyb3VwLmVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJHcm91cFJvdyA9IHdvcmtzaGVldC5nZXRSb3coY3VycmVudFJvdysrKTtcclxuICAgICAgICBzdWJHcm91cFJvdy5nZXRDZWxsKDEpLnZhbHVlID0ge1xyXG4gICAgICAgICAgcmljaFRleHQ6IFtcclxuICAgICAgICAgICAgeyB0ZXh0OiAnU3ViIEdyb3VwOiAnLCBmb250OiB7IGJvbGQ6IHRydWUgfSB9LFxyXG4gICAgICAgICAgICB7IHRleHQ6IHN1Ykdyb3VwLnN1Ykdyb3VwTmFtZSA/PyAnJywgZm9udDogeyBib2xkOiBmYWxzZSB9IH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB3b3Jrc2hlZXQuYWRkUm93KFtdKTsgY3VycmVudFJvdysrO1xyXG5cclxuICAgICAgICAvLyBIZWFkZXJzXHJcbiAgICAgICAgY29uc3QgeyBoZWFkZXJzLCByb3dzIH0gPSB0aGlzLnByZXBhcmVBY2NvdW50aW5nVGFibGUoc3ViR3JvdXAuZW50cmllcyk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyUm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICAgIGhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBpKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjZWxsID0gaGVhZGVyUm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgY2VsbC52YWx1ZSA9IGhlYWRlcjtcclxuICAgICAgICAgIGNlbGwuZm9udCA9IHsgYm9sZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgY2VsbC5maWxsID0geyB0eXBlOiAncGF0dGVybicsIHBhdHRlcm46ICdzb2xpZCcsIGZnQ29sb3I6IHsgYXJnYjogJ0Q5RDlEOScgfSB9O1xyXG4gICAgICAgICAgY2VsbC5hbGlnbm1lbnQgPSB7IHZlcnRpY2FsOiAnbWlkZGxlJywgaG9yaXpvbnRhbDogJ2NlbnRlcicgfTtcclxuICAgICAgICAgIGNlbGwuYm9yZGVyID0geyB0b3A6IHsgc3R5bGU6ICd0aGluJyB9LCBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LCBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSwgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9IH07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFJvd3NcclxuICAgICAgICByb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgICBjb25zdCByb3cgPSB3b3Jrc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3crKyk7XHJcbiAgICAgICAgICByLmZvckVhY2goKHZhbCwgaSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjZWxsID0gcm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgICBjZWxsLnZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgICBjZWxsLmJvcmRlciA9IHsgdG9wOiB7IHN0eWxlOiAndGhpbicgfSwgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSwgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSB9O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHdvcmtzaGVldC5hZGRSb3coW10pOyBjdXJyZW50Um93Kys7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g8J+UuSBBdXRvLWFkanVzdCBjb2x1bW4gd2lkdGhzIChpbmNsdWRpbmcgU3IgTm8pXHJcbiAgICBjb25zdCBhbGxIZWFkZXJzID0gWydTciBObycsIC4uLnRoaXMuY29sdW1uRGVmcy5tYXAoYyA9PiBjLmhlYWRlck5hbWUpXTtcclxuICAgIGFsbEhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBpKSA9PiB7XHJcbiAgICAgIGxldCBtYXhMZW5ndGggPSBoZWFkZXIubGVuZ3RoOyAvLyBzdGFydCB3aXRoIGhlYWRlciBsZW5ndGhcclxuXHJcbiAgICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9uc10uZm9yRWFjaChzdWJHcm91cCA9PiB7XHJcbiAgICAgICAgICBzdWJHcm91cC5lbnRyaWVzLmZvckVhY2goZW50cnkgPT4ge1xyXG4gICAgICAgICAgICAvLyBTciBObyBjb2x1bW4gKGkgPSAwKSBpcyBqdXN0IG51bWJlcnNcclxuICAgICAgICAgICAgbGV0IHZhbCA9IGkgPT09IDAgPyAoc3ViR3JvdXAuZW50cmllcy5pbmRleE9mKGVudHJ5KSArIDEpLnRvU3RyaW5nKCkgOiAoZW50cnlbdGhpcy5jb2x1bW5EZWZzW2kgLSAxXT8uZmllbGRdID8/ICcnKTtcclxuICAgICAgICAgICAgY29uc3QgbGVuID0gdmFsLnRvU3RyaW5nKCkubGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAobGVuID4gbWF4TGVuZ3RoKSBtYXhMZW5ndGggPSBsZW47XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGkgKyAxKS53aWR0aCA9IG1heExlbmd0aCArIDU7IC8vIHBhZGRpbmdcclxuICAgIH0pO1xyXG5cclxuICAgIHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKS50aGVuKGJ1ZmZlciA9PiB7XHJcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCdcclxuICAgICAgfSk7XHJcbiAgICAgIEZpbGVTYXZlci5zYXZlQXMoYmxvYiwgZmlsZU5hbWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlQWNjb3VudGluZ1RhYmxlKGRhdGE6IGFueVtdKTogeyBoZWFkZXJzOiBzdHJpbmdbXSwgcm93czogYW55W11bXSB9IHtcclxuICAgIGNvbnN0IGN1cnJlbmN5RmllbGRzID0gWydhbW91bnRQYWlkJywgJ3NlcnZpY2VGZWUnLCAndGF4JywgJ3ByaW5jaXBsZVNlbmRBbW91bnQnLCAnY2xpZW50U2V0dGxlbWVudEluU0NjeSddO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IFsnU3IgTm8nLCAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGMgPT4gYy5oZWFkZXJOYW1lKV07XHJcblxyXG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB7IGhlYWRlcnMsIHJvd3M6IFtdIH07IC8vIOKchSByZXR1cm4gaGVhZGVycyBvbmx5LCBlbXB0eSByb3dzXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm93cyA9IGRhdGEubWFwKChyb3csIGkpID0+IHtcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICBpICsgMSxcclxuICAgICAgICAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGNvbCA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsID0gcm93W2NvbC5maWVsZF07XHJcbiAgICAgICAgICBpZiAodmFsID09IG51bGwpIHJldHVybiAnJztcclxuICAgICAgICAgIGlmIChjdXJyZW5jeUZpZWxkcy5pbmNsdWRlcyhjb2wuZmllbGQpKSByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoMyk7XHJcbiAgICAgICAgICBpZiAoY29sLmZpZWxkID09PSAnc2V0dGxlbWVudFJhdGUnKSByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoOCk7XHJcbiAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIF07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4geyBoZWFkZXJzLCByb3dzIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cG9ydFRvQ3N2KCkge1xyXG4gICAgaWYgKCF0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSAnQWNjb3VudGluZy1SZXBvcnQuY3N2JztcclxuICAgIGNvbnN0IHJvd3M6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgcm93cy5wdXNoKCdSZXBvcnQgVGl0bGU6IEFjY291bnRpbmcgUmVwb3J0Jyk7XHJcbiAgICByb3dzLnB1c2goJycpO1xyXG4gICAgcm93cy5wdXNoKGBSZXBvcnQgVXNlcjogJHt0aGlzLnJlcG9ydFVzZXJ9YCk7XHJcbiAgICByb3dzLnB1c2goYFJlcG9ydCBUaW1lOiAke3RoaXMucmVwb3J0VGltZX1gKTtcclxuICAgIHJvd3MucHVzaChgUmVwb3J0IFBlcmlvZDogJHt0aGlzLnJlcG9ydFBlcmlvZH1gKTtcclxuICAgIHJvd3MucHVzaChgQ29tcGFueTogWHByZXNzIE1vbmV5YCk7XHJcbiAgICByb3dzLnB1c2goJycpO1xyXG5cclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgcm93cy5wdXNoKGBCcmFuY2ggKE5hbWUgJiBDb2RlKTogJHtncm91cC5icmFuY2hOYW1lQW5kQ29kZX1gKTtcclxuXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zXS5mb3JFYWNoKHN1Ykdyb3VwID0+IHtcclxuICAgICAgICBpZiAoIXN1Ykdyb3VwLmVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgICAgICByb3dzLnB1c2goYFN1YiBHcm91cDogJHtzdWJHcm91cC5zdWJHcm91cE5hbWV9YCk7XHJcblxyXG4gICAgICAgIC8vIPCflLkgQWRkIFwiU3IgTm9cIiBhdCB0aGUgYmVnaW5uaW5nIG9mIGhlYWRlcnNcclxuICAgICAgICByb3dzLnB1c2goWydcIlNyIE5vXCInLCAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGNvbCA9PiBgXCIke2NvbC5oZWFkZXJOYW1lfVwiYCldLmpvaW4oJywnKSk7XHJcblxyXG4gICAgICAgIHN1Ykdyb3VwLmVudHJpZXMuZm9yRWFjaCgoZW50cnksIGlkeCkgPT4ge1xyXG4gICAgICAgICAgLy8g8J+UuSBBZGQgc2VyaWFsIG51bWJlciBhdCBzdGFydCBvZiBlYWNoIHJvd1xyXG4gICAgICAgICAgY29uc3Qgcm93ID0gW1xyXG4gICAgICAgICAgICAoaWR4ICsgMSkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgLi4udGhpcy5jb2x1bW5EZWZzLm1hcChjb2wgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGVudHJ5W2NvbC5maWVsZF07XHJcbiAgICAgICAgICAgICAgaWYgKHZhbCA9PSBudWxsKSByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgaWYgKFsnYW1vdW50UGFpZCcsICdzZXJ2aWNlRmVlJywgJ3RheCcsICdwcmluY2lwbGVTZW5kQW1vdW50JywgJ2NsaWVudFNldHRsZW1lbnRJblNDY3knXS5pbmNsdWRlcyhjb2wuZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoMyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChjb2wuZmllbGQgPT09ICdzZXR0bGVtZW50UmF0ZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbCkudG9GaXhlZCg4KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGBcIiR7dmFsfVwiYDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF0uam9pbignLCcpO1xyXG4gICAgICAgICAgcm93cy5wdXNoKHJvdyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJvd3MucHVzaCgnJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyb3dzLmpvaW4oJ1xcbicpXSwgeyB0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtODsnIH0pO1xyXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICBnZXRSZXBvcnQocGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCBtb2RhbCA9IHBheWxvYWQ/Lm1vZGFsIHx8IHBheWxvYWQ7XHJcblxyXG4gICAgY29uc3QgcmVxOiBBY2NvdW50aW5nUmVwb3J0UmVxdWVzdCA9IHtcclxuICAgICAgc3RhcnREYXRlOiBtb2RhbC5mcm9tRGF0ZSwgLy8geXl5eS1NTS1kZCBmcm9tIHRoZSBmaWx0ZXJcclxuICAgICAgZW5kRGF0ZTogbW9kYWwudG9EYXRlLFxyXG4gICAgICBzZW5kQ291bnRyeUNvZGU6IG1vZGFsLnNlbmRDb3VudHJ5ID8/ICdBTEwnLFxyXG4gICAgICByZWN2Q291bnRyeUNvZGU6IG1vZGFsLnJlY2VpdmVDb3VudHJ5ID8/ICdBTEwnLFxyXG4gICAgICBidXNpbmVzc1BhcnRuZXJDb3JyZWxhdGlvbklEOiBtb2RhbC5jbGllbnQgPz8gJ0FMTCcsXHJcbiAgICAgIHRyYW5zYWN0aW9uU3RhdHVzOiBtb2RhbC50cmFuc2FjdGlvblN0YXR1cy5qb2luKFwiLFwiKSxcclxuICAgICAgcGF5b3V0Q3VycmVuY3k6IG1vZGFsLmN1cnJlbmN5ID8/ICdBTEwnLFxyXG4gICAgICB0cmFuc2FjdGlvblR5cGU6IG1vZGFsLnByb2R1Y3QgPz8gJ0FMTCcsXHJcbiAgICAgIGJyYW5jaENvZGU6IG1vZGFsLmJyYW5jaCA/PyAnQUxMJyxcclxuICAgICAgY29tcGFueUNvZGU6ICdBTEwnIC8vIG9yICdCSCcgaWYgeW91ciBBUEkgcmVxdWlyZXMgaXQgc3BlY2lmaWNhbGx5XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZ2V0QWNjb3VudGluZ1JlcG9ydChyZXEpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGxpYi1zZWFyY2gtZmlsdGVyIFtSZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiAoc2VhcmNoQ2xpY2tlZCk9XCJnZXRSZXBvcnQoJGV2ZW50KVwiPjwvbGliLXNlYXJjaC1maWx0ZXI+XHJcblxyXG48YXBwLWxvYWRlciBjbGFzcz1cIlwiICpuZ0lmPVwibG9hZGluZ1N0YXRlID09IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG5cclxuPGRpdiAqbmdJZj1cImFjY291bnRpbmdSZXBvcnRNb2RlbCE9dW5kZWZpbmVkICYmIGFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aFwiPlxyXG5cclxuICA8bGliLW1ldGFkYXRhIFtyZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiBbc2hvd21ldGFEYXRhT25lXT1cInRydWVcIiBbc2hvd21ldGFEYXRhVHdvXT1cInRydWVcIiBbbWV0YURhdGFPbmVdPVwibGVmdERhdGFcIlxyXG4gICAgW21ldGFEYXRhVHdvXT1cInJpZ2h0RGF0YVwiIChleHBvcnRFdmVudCk9XCJoYW5kbGVFeHBvcnQoJGV2ZW50KVwiIChzZWFyY2hFdmVudCk9XCJvblNlYXJjaCgkZXZlbnQpXCI+PC9saWItbWV0YWRhdGE+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyZXBvcnQtYWNjb3JkaW9uXCI+XHJcbiAgICA8bmdiLWFjY29yZGlvbiAjYWNjPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cImZhbHNlXCIgW2FjdGl2ZUlkc109XCIncGFuZWwtMCdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgYWNjb3VudGluZ1JlcG9ydE1vZGVsPy5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8bmdiLXBhbmVsIFtpZF09XCIncGFuZWwtJyArIGlcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbFRpdGxlPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0aXRsZS1zdGFjayBsaW5lLTFcIj5cclxuICAgICAgICAgICAgICB7eyBncm91cC5icmFuY2hOYW1lQW5kQ29kZSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxyXG4gICAgICAgICAgICA8IS0tIFNlbmQgVHJhbnNhY3Rpb25zIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgIDxoNiBjbGFzcz1cInN1Ymdyb3VwY29sdW1uXCI+e3sgZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucy5zdWJHcm91cE5hbWUgfX08L2g2PlxyXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXBhZ2Utc2l6ZS1zZWxlY3RvciBbdG90YWxFbnRyaWVzXT1cImdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcy5sZW5ndGhcIiBbZGVmYXVsdFNpemVdPVwiJzE1J1wiXHJcbiAgICAgICAgICAgICAgICAgIFtncmlkQXBpXT1cImdyaWRBcGlzW2kgKiAyXVwiPlxyXG4gICAgICAgICAgICAgICAgPC9saWItcGFnZS1zaXplLXNlbGVjdG9yPlxyXG5cclxuICAgICAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgY29tcGFjdC1ncmlkIGdyaWQtc2l6ZVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMzcwcHg7XCJcclxuICAgICAgICAgICAgICAgICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIiBbcm93RGF0YV09XCJncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXNcIlxyXG4gICAgICAgICAgICAgICAgICBbcm93SGVpZ2h0XT1cIjIwXCIgW2hlYWRlckhlaWdodF09XCIyNFwiIFtwYWdpbmF0aW9uXT1cInRydWVcIiBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb25BcnJheVtpXVwiXHJcbiAgICAgICAgICAgICAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50LCBpICogMilcIiAoZ3JpZFNpemVDaGFuZ2VkKT1cIm9uR3JpZFNpemVDaGFuZ2VkKCRldmVudCwgaSAqIDIpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFJlY2VpdmUgVHJhbnNhY3Rpb25zIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzLmxlbmd0aFwiIGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgIDxoNiBjbGFzcz1cInN1Ymdyb3VwY29sdW1uXCI+e3sgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5zdWJHcm91cE5hbWUgfX08L2g2PlxyXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXBhZ2Utc2l6ZS1zZWxlY3RvciBbdG90YWxFbnRyaWVzXT1cImdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllcy5sZW5ndGhcIiBbZGVmYXVsdFNpemVdPVwiJzE1J1wiXHJcbiAgICAgICAgICAgICAgICAgIFtncmlkQXBpXT1cImdyaWRBcGlzW2kgKiAyICsgMV1cIj5cclxuICAgICAgICAgICAgICAgIDwvbGliLXBhZ2Utc2l6ZS1zZWxlY3Rvcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyIGNsYXNzPVwiYWctdGhlbWUtYWxwaW5lIGNvbXBhY3QtZ3JpZCBncmlkLXNpemVcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDM3MHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIiBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcclxuICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXCIgW3Jvd0hlaWdodF09XCIyMFwiIFtoZWFkZXJIZWlnaHRdPVwiMjRcIiBbcGFnaW5hdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdpbmF0aW9uQXJyYXlbaV1cIiAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudCwgaSAqIDIgKyAxKVwiXHJcbiAgICAgICAgICAgICAgICAgIChncmlkU2l6ZUNoYW5nZWQpPVwib25HcmlkU2l6ZUNoYW5nZWQoJGV2ZW50LCBpICogMilcIj5cclxuICAgICAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZ2ItcGFuZWw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZ2ItYWNjb3JkaW9uPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtdC0zXCIgKm5nSWY9XCJub0RhdGFGb3VuZCAmJiBsb2FkaW5nU3RhdGUhPUNvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+XHJcbiAgTm8gRGF0YSBmb3VuZCBtYXRjaGluZyB5b3VyIHNlYXJjaCBjcml0ZXJpYS5cclxuPC9kaXY+Il19
485
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudGluZy1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9hY2NvdW50aW5nLXJlcG9ydC9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUtyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFL0UsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7O0FBMEJ4QyxNQUFNLE9BQU8seUJBQXlCO0lBd0VwQyxZQUFvQixhQUE0QixFQUFVLGFBQTRCO1FBQWxFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF0RXRGLGVBQVUsR0FBVyxZQUFZLENBQUM7UUFNbEMsMEJBQXFCLEdBQUcsc0JBQXNCLENBQUM7UUFDL0MsaUJBQVksR0FBMkIsc0JBQXNCLENBQUMsUUFBUSxDQUFDO1FBQ3ZFLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBSzdCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFF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S0FBSyxDQUFDLFFBQVE7WUFDekIsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3JCLGVBQWUsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUs7WUFDM0MsZUFBZSxFQUFFLEtBQUssQ0FBQyxjQUFjLElBQUksS0FBSztZQUM5Qyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUs7WUFDbkQsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDcEQsY0FBYyxFQUFFLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSztZQUN2QyxlQUFlLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLO1lBQ3ZDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUs7WUFDakMsV0FBVyxFQUFFLEtBQUssQ0FBQywrQ0FBK0M7U0FDbkUsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDOztzSEExaUJVLHlCQUF5QjswR0FBekIseUJBQXlCLDZEQ3JDdEMsNDRHQTRETTsyRkR2Qk8seUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY2NvdW50aW5nUmVwb3J0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWNjb3VudGluZy1yZXBvcnQvYWNjb3VudGluZy1yZXBvcnQtbW9kZWwnO1xyXG5pbXBvcnQgeyBDb2xEZWYsIENvbHVtbkFwaSwgR3JpZEFwaSwgR3JpZFJlYWR5RXZlbnQgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IFJlcG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXhwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50TG9hZGluZ1N0YXRlcyB9IGZyb20gJy4uLy4uL21vZGVscy9jb21wb25lbnQtbG9hZGluZy1zdGF0ZXMnO1xyXG5pbXBvcnQgeyBBY2NvdW50aW5nUmVwb3J0QnJhbmNoR3JvdXAgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWNjb3VudGluZy1yZXBvcnQvYWNjb3VudGluZy1yZXBvcnQtYnJhbmNoLWdyb3VwJztcclxuaW1wb3J0IGpzUERGIGZyb20gJ2pzcGRmJztcclxuaW1wb3J0ICdqc3BkZi1hdXRvdGFibGUnO1xyXG5pbXBvcnQgKiBhcyBFeGNlbEpTIGZyb20gJ2V4Y2VsanMnO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcblxyXG5kZWNsYXJlIG1vZHVsZSAnanNwZGYnIHtcclxuICBpbnRlcmZhY2UganNQREYge1xyXG4gICAgYXV0b1RhYmxlOiAob3B0aW9uczogYW55KSA9PiBqc1BERjtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudGluZ1JlcG9ydFJlcXVlc3Qge1xyXG4gIHN0YXJ0RGF0ZTogc3RyaW5nO1xyXG4gIGVuZERhdGU6IHN0cmluZztcclxuICBzZW5kQ291bnRyeUNvZGU6IHN0cmluZztcclxuICByZWN2Q291bnRyeUNvZGU6IHN0cmluZztcclxuICBidXNpbmVzc1BhcnRuZXJDb3JyZWxhdGlvbklEOiBzdHJpbmc7XHJcbiAgdHJhbnNhY3Rpb25TdGF0dXM6IHN0cmluZztcclxuICBwYXlvdXRDdXJyZW5jeTogc3RyaW5nO1xyXG4gIHRyYW5zYWN0aW9uVHlwZTogc3RyaW5nO1xyXG4gIGJyYW5jaENvZGU6IHN0cmluZztcclxuICBjb21wYW55Q29kZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hY2NvdW50aW5nLXJlcG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY291bnRpbmctcmVwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNjb3VudGluZ1JlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIFJlcG9ydE5hbWU6IHN0cmluZyA9IFwiQWNjb3VudGluZ1wiO1xyXG4gIHJlcG9ydFVzZXI6IGFueTtcclxuICByZXBvcnRUaW1lOiBhbnk7XHJcbiAgcmVwb3J0UGVyaW9kOiBhbnk7XHJcbiAgYnJhbmNoTmFtZUFuZENvZGU6IGFueTtcclxuICBzdWJHcm91cENvbHVtbjogYW55O1xyXG4gIENvbXBvbmVudExvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXM7XHJcbiAgbG9hZGluZ1N0YXRlOiBDb21wb25lbnRMb2FkaW5nU3RhdGVzID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICBub0RhdGFGb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBsZWZ0RGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICByaWdodERhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHJvd0RhdGEgPSBbXTtcclxuICBhY2NvdW50aW5nUmVwb3J0TW9kZWw6IEFjY291bnRpbmdSZXBvcnRNb2RlbDtcclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMTU7XHJcblxyXG4gIHNlbGVjdGVkRXhwb3J0T3B0aW9uOiBzdHJpbmcgPSAnZXhjZWwnO1xyXG4gIGV4cG9ydEZvcm1hdHMgPSBbeyBmb3JtYXROYW1lOiBcIkV4Y2VsXCIsIGNvZGU6ICdleGNlbCcgfSwgeyBmb3JtYXROYW1lOiBcIlBERlwiLCBjb2RlOiAncGRmJyB9LCB7IGZvcm1hdE5hbWU6IFwiQ1NWXCIsIGNvZGU6ICdjc3YnIH1dXHJcblxyXG4gIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgIG1pbldpZHRoOiA0MCxcclxuICAgIHN1cHByZXNzU2l6ZVRvRml0OiBmYWxzZSxcclxuICAgIGNlbGxTdHlsZTogeyB1c2VyU2VsZWN0OiAndGV4dCcsICdsaW5lLWhlaWdodCc6ICcxLjInLCAnd2hpdGUtc3BhY2UnOiAnbm9ybWFsJywgJ3dvcmQtYnJlYWsnOiAnbm9ybWFsJywgJ292ZXJmbG93LXdyYXAnOiAnYnJlYWstd29yZCcgfSxcclxuXHJcbiAgICAvLyAgSGVhZGVyIHdyYXBwaW5nXHJcbiAgICB3cmFwSGVhZGVyVGV4dDogdHJ1ZSxcclxuICAgIGF1dG9IZWFkZXJIZWlnaHQ6IHRydWUsXHJcblxyXG4gICAgLy8gIENlbGwgd3JhcHBpbmdcclxuICAgIHdyYXBUZXh0OiB0cnVlLFxyXG4gICAgYXV0b0hlaWdodDogdHJ1ZVxyXG4gIH07XHJcblxyXG4gIGNvbHVtbkRlZnM6IENvbERlZltdID0gW1xyXG4gICAgeyBoZWFkZXJOYW1lOiAnQnVzaW5lc3NEYXRlJywgZmllbGQ6ICdidXNpbmVzc0RhdGUnLCB0b29sdGlwRmllbGQ6ICdidXNpbmVzc0RhdGUnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUeG5EYXRlJlRpbWUnLCBmaWVsZDogJ3RyYW5zYWN0aW9uRGF0ZUFuZFRpbWUnLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbkRhdGVBbmRUaW1lJywgbWluV2lkdGg6IDExMCwgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1RyYW5zYWN0aW9uIE51bWJlcicsIGZpZWxkOiAndHJhbnNhY3Rpb25OdW1iZXInLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbk51bWJlcicgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NlbmRDbGllbnQnLCBmaWVsZDogJ3NlbmRDbGllbnQnLCB0b29sdGlwRmllbGQ6ICdzZW5kQ2xpZW50JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUHJpbmNpcGxlIFNlbmRDbGllbnQgKElmIEFwcGxpY2FibGUpJywgZmllbGQ6ICdwcmluY2lwbGVTZW5kQ2xpZW50JywgdG9vbHRpcEZpZWxkOiAncHJpbmNpcGxlU2VuZENsaWVudCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1JlY2VpdmVDbGllbnQnLCBmaWVsZDogJ3JlY2VpdmVDbGllbnQnLCB0b29sdGlwRmllbGQ6ICdyZWNlaXZlQ2xpZW50JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUHJpbmNpcGxlIFJlY2VpdmVDbGllbnQgKElmIEFwcGxpY2FibGUpJywgZmllbGQ6ICdwcmluY2lwbGVSZWNlaXZlQ2xpZW50JywgdG9vbHRpcEZpZWxkOiAncHJpbmNpcGxlUmVjZWl2ZUNsaWVudCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1JlY2VpdmVDY3knLCBmaWVsZDogJ3JlY2VpdmVDdXJyZW5jeScsIHRvb2x0aXBGaWVsZDogJ3JlY2VpdmVDdXJyZW5jeScgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ0Ftb3VudFBhaWQnLCBmaWVsZDogJ2Ftb3VudFBhaWQnLCB0b29sdGlwRmllbGQ6ICdhbW91bnRQYWlkJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2VuZENjeScsIGZpZWxkOiAnc2VuZEN1cnJlbmN5JywgdG9vbHRpcEZpZWxkOiAnc2VuZEN1cnJlbmN5JywgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NlcnZpY2VGZWUnLCBmaWVsZDogJ3NlcnZpY2VGZWUnLCB0b29sdGlwRmllbGQ6ICdzZXJ2aWNlRmVlJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnVGF4JywgZmllbGQ6ICd0YXgnLCB0b29sdGlwRmllbGQ6ICd0YXgnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdQcmluY2lwbGVTZW5kIEFtb3VudCcsIGZpZWxkOiAncHJpbmNpcGxlU2VuZEFtb3VudCcsIHRvb2x0aXBGaWVsZDogJ3ByaW5jaXBsZVNlbmRBbW91bnQnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUcmFuc2FjdGlvbiBTdGF0dXMnLCBmaWVsZDogJ3RyYW5zYWN0aW9uU3RhdHVzJywgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25TdGF0dXMnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZXR0bGVtZW50Q2N5JywgZmllbGQ6ICdzZXR0bGVtZW50Q3VycmVuY3knLCB0b29sdGlwRmllbGQ6ICdzZXR0bGVtZW50Q3VycmVuY3knLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdDbGllbnRTZXR0bCAoaW4gU0NjeSknLCBmaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblNDY3knLCB0b29sdGlwRmllbGQ6ICdjbGllbnRTZXR0bGVtZW50SW5TQ2N5JywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnQ2xpZW50U2V0dGwgKGluIFVTRCknLCBmaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblVTRCcsIHRvb2x0aXBGaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblVTRCcsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NoYXJlVHlwZScsIGZpZWxkOiAnc2hhcmVUeXBlJywgdG9vbHRpcEZpZWxkOiAnc2hhcmVUeXBlJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2hhcmVWYWx1ZScsIGZpZWxkOiAnc2hhcmVWYWx1ZScsIHRvb2x0aXBGaWVsZDogJ3NoYXJlVmFsdWUnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZW5kL1JlY2VpdmUgRmVlQ2N5JywgZmllbGQ6ICdzZW5kUmVjZWl2ZUZlZUNjeScsIHRvb2x0aXBGaWVsZDogJ3NlbmRSZWNlaXZlRmVlQ2N5JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2hhcmVBbXQgKGluIFVTRCknLCBmaWVsZDogJ3NoYXJlQW1vdW50SW5VU0QnLCB0b29sdGlwRmllbGQ6ICdzaGFyZUFtb3VudEluVVNEJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2V0dGxlbWVudCBSYXRlJywgZmllbGQ6ICdzZXR0bGVtZW50UmF0ZScsIHRvb2x0aXBGaWVsZDogJ3NldHRsZW1lbnRSYXRlJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gIF07XHJcblxyXG5cclxuICBncmlkQXBpczogR3JpZEFwaVtdID0gW107XHJcbiAgZ3JpZENvbHVtbkFwaXM6IENvbHVtbkFwaVtdID0gW107XHJcblxyXG4gIHBhZ2luYXRpb25BcnJheTogYW55W107XHJcbiAgZXpyZW1pdFVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvcmlnaW5hbEdyb3VwRW50cmllczogQWNjb3VudGluZ1JlcG9ydEJyYW5jaEdyb3VwW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXBvcnRTZXJ2aWNlOiBSZXBvcnRTZXJ2aWNlLCBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IEV4cG9ydFNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV6cmVtaXR1c2VybmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2V6cmVtaXR1c2VybmFtZScpO1xyXG4gICAgaWYgKGV6cmVtaXR1c2VybmFtZSkge1xyXG4gICAgICB0aGlzLmV6cmVtaXRVc2VyID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBY2NvdW50aW5nUmVwb3J0KHJlcXVlc3Q/OiBBY2NvdW50aW5nUmVwb3J0UmVxdWVzdCkge1xyXG4gICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkxvYWRpbmc7XHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuYnJhbmNoTmFtZUFuZENvZGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN1Ykdyb3VwQ29sdW1uID0gdW5kZWZpbmVkO1xyXG4gICAgY29uc3QgZmluYWxSZXEgPSByZXF1ZXN0O1xyXG5cclxuICAgIHRoaXMucmVwb3J0U2VydmljZS5nZXRBY2NvdW50aW5nUmVwb3J0KGZpbmFsUmVxKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsID0gZGF0YTtcclxuICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG5cclxuICAgICAgY29uc29sZS5sb2codGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwpO1xyXG5cclxuICAgICAgdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICAgIGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcyA9IGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcy5tYXAoZW50cnkgPT4gKHtcclxuICAgICAgICAgIC4uLmVudHJ5LFxyXG4gICAgICAgICAgYnVzaW5lc3NEYXRlOiBmb3JtYXREYXRlKGVudHJ5LmJ1c2luZXNzRGF0ZSwgJ2RkL01NL3l5eXknLCAnZW4tVVMnKSxcclxuICAgICAgICAgIHRyYW5zYWN0aW9uRGF0ZUFuZFRpbWU6IGZvcm1hdERhdGUoZW50cnkudHJhbnNhY3Rpb25EYXRlQW5kVGltZSwgJ2RkL01NL3l5eXkgaGg6bW0gYScsICdlbi1VUycpLFxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzID0gZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzLm1hcChlbnRyeSA9PiAoe1xyXG4gICAgICAgICAgLi4uZW50cnksXHJcbiAgICAgICAgICBidXNpbmVzc0RhdGU6IGZvcm1hdERhdGUoZW50cnkuYnVzaW5lc3NEYXRlLCAnZGQvTU0veXl5eScsICdlbi1VUycpLFxyXG4gICAgICAgICAgdHJhbnNhY3Rpb25EYXRlQW5kVGltZTogZm9ybWF0RGF0ZShlbnRyeS50cmFuc2FjdGlvbkRhdGVBbmRUaW1lLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJyksXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbCA9IGRhdGE7XHJcbiAgICAgIHRoaXMubm9EYXRhRm91bmQgPSBPYmplY3Qua2V5cyh0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMpLmxlbmd0aCA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICBjb25zdCBicmFuY2hDb3VudCA9IHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbkFycmF5ID0gbmV3IEFycmF5KGJyYW5jaENvdW50ICogMikuZmlsbCgxNSk7XHJcblxyXG5cclxuICAgICAgdGhpcy5yZXBvcnRVc2VyID0gdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwucmVwb3J0VXNlcjtcclxuICAgICAgdGhpcy5yZXBvcnRUaW1lID0gZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJyk7XHJcbiAgICAgIHRoaXMucmVwb3J0UGVyaW9kID0gYCR7Zm9ybWF0RGF0ZShmaW5hbFJlcS5zdGFydERhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9IC0gJHtmb3JtYXREYXRlKGZpbmFsUmVxLmVuZERhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9YDtcclxuXHJcbiAgICAgIHRoaXMubGVmdERhdGEgPSB7XHJcbiAgICAgICAgJ1JlcG9ydCBVc2VyICc6IGAke3RoaXMucmVwb3J0VXNlcn1gLFxyXG4gICAgICAgICdSZXBvcnQgVGltZSc6IGAke3RoaXMucmVwb3J0VGltZX1gLFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJpZ2h0RGF0YSA9IHtcclxuICAgICAgICAnUmVwb3J0IFBlcmlvZCc6IGAke3RoaXMucmVwb3J0UGVyaW9kfWAsXHJcbiAgICAgICAgJ0NvbXBhbnknOiBcIlhwcmVzcyBNb25leVwiXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERlZXAgY29weSB0byBwcmVzZXJ2ZSBvcmlnaW5hbCBkYXRhIGZvciBzZWFyY2hcclxuICAgICAgdGhpcy5vcmlnaW5hbEdyb3VwRW50cmllcyA9IHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5tYXAoZ3JvdXAgPT4gKHtcclxuICAgICAgICAuLi5ncm91cCxcclxuICAgICAgICBzZW5kVHJhbnNhY3Rpb25zOiB7XHJcbiAgICAgICAgICAuLi5ncm91cC5zZW5kVHJhbnNhY3Rpb25zLFxyXG4gICAgICAgICAgZW50cmllczogWy4uLmdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllc11cclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlY2VpdmVUcmFuc2FjdGlvbnM6IHtcclxuICAgICAgICAgIC4uLmdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMsXHJcbiAgICAgICAgICBlbnRyaWVzOiBbLi4uZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXVxyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG5cclxuXHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaGFuZGxlRXhwb3J0KG9wdGlvbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID0gb3B0aW9uO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncGRmJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvUGRmKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgICAgdGhpcy5leHBvcnRUb0NzdigpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGFsZXJ0KCdQbGVhc2Ugc2VsZWN0IGFuIGV4cG9ydCBmb3JtYXQuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZSA9IChzdHI6IGFueSk6IHN0cmluZyA9PlxyXG4gICAgICBzdHI/LnRvU3RyaW5nKClcclxuICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIC5yZXBsYWNlKC8sL2csICcnKVxyXG4gICAgICAgIC5yZXBsYWNlKC9cXHMrL2csICcgJylcclxuICAgICAgICAucmVwbGFjZSgvW1xcdTIwMEItXFx1MjAwRFxcdUZFRkZdL2csICcnKVxyXG4gICAgICAgIC50cmltKCk7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dDtcclxuICAgIGNvbnN0IHNlYXJjaCA9IG5vcm1hbGl6ZSh0ZXh0KTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsPy5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaCgoZ3JvdXAsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsU2VuZEVudHJpZXMgPSB0aGlzLm9yaWdpbmFsR3JvdXBFbnRyaWVzW2luZGV4XT8uc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzIHx8IFtdO1xyXG4gICAgICBjb25zdCBvcmlnaW5hbFJlY2VpdmVFbnRyaWVzID0gdGhpcy5vcmlnaW5hbEdyb3VwRW50cmllc1tpbmRleF0/LnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllcyB8fCBbXTtcclxuXHJcbiAgICAgIGlmIChzZWFyY2gpIHtcclxuICAgICAgICBncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBvcmlnaW5hbFNlbmRFbnRyaWVzLmZpbHRlcihlbnRyeSA9PlxyXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhlbnRyeSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBvcmlnaW5hbFJlY2VpdmVFbnRyaWVzLmZpbHRlcihlbnRyeSA9PlxyXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhlbnRyeSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMgPSBbLi4ub3JpZ2luYWxTZW5kRW50cmllc107XHJcbiAgICAgICAgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzID0gWy4uLm9yaWdpbmFsUmVjZWl2ZUVudHJpZXNdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZXNldCBib3RoIGdyaWRzXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMsIGdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllc10uZm9yRWFjaCgoZW50cmllcywgaWR4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ3JpZEFwaSA9IHRoaXMuZ3JpZEFwaXNbaW5kZXggKiAyICsgaWR4XTsgLy8ga2VlcCBzZXBhcmF0ZSBpZHMgZm9yIGdyaWRzXHJcbiAgICAgICAgaWYgKGdyaWRBcGkpIHtcclxuICAgICAgICAgIGdyaWRBcGkuc2V0Um93RGF0YShlbnRyaWVzKTtcclxuICAgICAgICAgIGlmIChncmlkQXBpLnBhZ2luYXRpb25Hb1RvRmlyc3RQYWdlKSBncmlkQXBpLnBhZ2luYXRpb25Hb1RvRmlyc3RQYWdlKCk7XHJcbiAgICAgICAgICBpZiAoZ3JpZEFwaS5wYWdpbmF0aW9uU2V0UGFnZVNpemUpIGdyaWRBcGkucGFnaW5hdGlvblNldFBhZ2VTaXplKHRoaXMucGFnZVNpemUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBvbkdyaWRSZWFkeShwYXJhbXM6IEdyaWRSZWFkeUV2ZW50LCBpZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmdyaWRBcGlzW2lkXSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5BcGlzW2lkXSA9IHBhcmFtcy5jb2x1bW5BcGk7ICAgLy8g4pyFIGtlZXAgcGVyIGdyaWRcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b1NpemVBbGxDb2x1bW5zKGlkKSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuICBvbkdyaWRTaXplQ2hhbmdlZChwYXJhbXM6IGFueSwgaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5hdXRvU2l6ZUFsbENvbHVtbnMoaWQpO1xyXG4gIH1cclxuXHJcblxyXG4gIGF1dG9TaXplQWxsQ29sdW1ucyhpZDogbnVtYmVyLCBza2lwSGVhZGVyOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNvbHVtbkFwaSA9IHRoaXMuZ3JpZENvbHVtbkFwaXNbaWRdO1xyXG4gICAgaWYgKCFjb2x1bW5BcGkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBhbGxDb2x1bW5JZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBjb2x1bW5BcGkuZ2V0Q29sdW1ucygpLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgIGFsbENvbHVtbklkcy5wdXNoKGNvbHVtbi5nZXRJZCgpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbHVtbkFwaS5hdXRvU2l6ZUNvbHVtbnMoYWxsQ29sdW1uSWRzLCBza2lwSGVhZGVyKTtcclxuICB9XHJcblxyXG5cclxuICBmb3JtYXROdW1iZXIocGFyYW1zOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKHBhcmFtcy52YWx1ZSA9PSBudWxsKSByZXR1cm4gJyc7XHJcblxyXG4gICAgY29uc3QgZmllbGQgPSBwYXJhbXMuY29sRGVmLmZpZWxkO1xyXG5cclxuICAgIGlmIChmaWVsZCA9PT0gJ3NldHRsZW1lbnRSYXRlJykge1xyXG4gICAgICByZXR1cm4gTnVtYmVyKHBhcmFtcy52YWx1ZSkudG9GaXhlZCg4KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gTnVtYmVyKHBhcmFtcy52YWx1ZSkudG9GaXhlZCgzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwb3J0VG9QZGYoKSB7XHJcbiAgICBpZiAoIXRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcz8ubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCB0aXRsZSA9ICdBY2NvdW50aW5nIFJlcG9ydCc7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9ICdBY2NvdW50aW5nLVJlcG9ydC5wZGYnO1xyXG5cclxuICAgIGNvbnN0IG1ldGFkYXRhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnUmVwb3J0IFVzZXI6JywgdGhpcy5yZXBvcnRVc2VyXSxcclxuICAgICAgWydSZXBvcnQgVGltZTonLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2Q6JywgdGhpcy5yZXBvcnRQZXJpb2RdLFxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBkb2MgPSBuZXcganNQREYoeyBvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScsIHVuaXQ6ICdtbScsIGZvcm1hdDogWzcwMCwgMjEwXSB9KTtcclxuXHJcbiAgICBjb25zdCBsb2dvV2lkdGggPSAzOC40LCBsb2dvSGVpZ2h0ID0gMTcuNSwgbG9nb1ggPSAxNSwgbG9nb1kgPSA4O1xyXG4gICAgY29uc3QgcGFnZVdpZHRoID0gZG9jLmludGVybmFsLnBhZ2VTaXplLndpZHRoO1xyXG4gICAgY29uc3QgdGl0bGVZID0gMTg7XHJcblxyXG4gICAgLy8gTG9nb1xyXG4gICAgaWYgKHRoaXMuZXhwb3J0U2VydmljZVsnbG9nb0Jhc2U2NCddKSB7XHJcbiAgICAgIGRvYy5hZGRJbWFnZSh0aGlzLmV4cG9ydFNlcnZpY2VbJ2xvZ29CYXNlNjQnXSwgJ1BORycsIGxvZ29YLCBsb2dvWSwgbG9nb1dpZHRoLCBsb2dvSGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaXRsZVxyXG4gICAgZG9jLnNldEZvbnRTaXplKDE1KTtcclxuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG4gICAgZG9jLnRleHQodGl0bGUsIHBhZ2VXaWR0aCAvIDIsIHRpdGxlWSwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XHJcblxyXG4gICAgbGV0IGN1cnJlbnRZID0gdGl0bGVZICsgMTQ7XHJcblxyXG4gICAgLy8gTWV0YWRhdGFcclxuICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICBtZXRhZGF0YS5mb3JFYWNoKChbbGFiZWwsIHZhbHVlXSwgaSkgPT4ge1xyXG4gICAgICBjb25zdCB5ID0gY3VycmVudFkgKyBpICogNztcclxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgIGRvYy50ZXh0KGxhYmVsLCAxNSwgeSk7XHJcbiAgICAgIGNvbnN0IGxhYmVsV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKGxhYmVsICsgJyAnKTtcclxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdub3JtYWwnKTtcclxuICAgICAgZG9jLnRleHQodmFsdWUgPz8gJycsIDE1ICsgbGFiZWxXaWR0aCwgeSk7XHJcbiAgICB9KTtcclxuICAgIGN1cnJlbnRZICs9IG1ldGFkYXRhLmxlbmd0aCAqIDcgKyA1O1xyXG5cclxuICAgIC8vIEJyYW5jaGVzXHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG5cclxuICAgICAgY29uc3QgYnJhbmNoVGV4dCA9IGBCcmFuY2ggKE5hbWUgJiBDb2RlKTogJHtncm91cC5icmFuY2hOYW1lQW5kQ29kZX1gO1xyXG4gICAgICBkb2MudGV4dChicmFuY2hUZXh0LCAxNSwgY3VycmVudFkpO1xyXG4gICAgICBjdXJyZW50WSArPSA3O1xyXG5cclxuICAgICAgLy8gTG9vcCBzdWJncm91cHMgKFNlbmQgKyBSZWNlaXZlKVxyXG4gICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9uc10uZm9yRWFjaChzdWJHcm91cCA9PiB7XHJcbiAgICAgICAgaWYgKCFzdWJHcm91cC5lbnRyaWVzPy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgICAgZG9jLnRleHQoYFN1YiBHcm91cDogJHtzdWJHcm91cC5zdWJHcm91cE5hbWV9YCwgMTUsIGN1cnJlbnRZKTtcclxuICAgICAgICBjdXJyZW50WSArPSA1O1xyXG5cclxuICAgICAgICBjb25zdCB7IGhlYWRlcnMsIHJvd3MgfSA9IHRoaXMucHJlcGFyZUFjY291bnRpbmdUYWJsZShzdWJHcm91cC5lbnRyaWVzKTtcclxuXHJcbiAgICAgICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XHJcbiAgICAgICAgICBoZWFkOiBbaGVhZGVyc10sXHJcbiAgICAgICAgICBib2R5OiByb3dzLFxyXG4gICAgICAgICAgc3RhcnRZOiBjdXJyZW50WSxcclxuICAgICAgICAgIHRoZW1lOiAnZ3JpZCcsXHJcbiAgICAgICAgICBoZWFkU3R5bGVzOiB7XHJcbiAgICAgICAgICAgIGZpbGxDb2xvcjogWzIyMCwgMjIwLCAyMjBdLCB0ZXh0Q29sb3I6IDAsXHJcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ2JvbGQnLCBmb250U2l6ZTogOSwgaGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBib2R5U3R5bGVzOiB7IGZvbnRTaXplOiA4LCBmaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1XSwgdGV4dENvbG9yOiBbMCwgMCwgMF0gfSxcclxuICAgICAgICAgIHN0eWxlczogeyBjZWxsUGFkZGluZzogMiwgb3ZlcmZsb3c6ICdsaW5lYnJlYWsnLCBtaW5DZWxsSGVpZ2h0OiA2IH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN1cnJlbnRZID0gKGRvYyBhcyBhbnkpLmxhc3RBdXRvVGFibGUuZmluYWxZICsgMTA7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZG9jLnNhdmUoZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBvcnRUb0V4Y2VsKCkge1xyXG4gICAgaWYgKCF0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGl0bGUgPSAnQWNjb3VudGluZyBSZXBvcnQnO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSAnQWNjb3VudGluZy1SZXBvcnQueGxzeCc7XHJcblxyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgRXhjZWxKUy5Xb3JrYm9vaygpO1xyXG4gICAgY29uc3Qgd29ya3NoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KCdBY2NvdW50aW5nIFJlcG9ydCcpO1xyXG4gICAgbGV0IGN1cnJlbnRSb3cgPSAxO1xyXG5cclxuICAgIC8vIExvZ29cclxuICAgIGlmICh0aGlzLmV4cG9ydFNlcnZpY2UubG9nb0Jhc2U2NCkge1xyXG4gICAgICBjb25zdCBiYXNlNjREYXRhID0gdGhpcy5leHBvcnRTZXJ2aWNlLmxvZ29CYXNlNjQucmVwbGFjZSgvXmRhdGE6aW1hZ2VcXC9cXHcrO2Jhc2U2NCwvLCAnJyk7XHJcbiAgICAgIGNvbnN0IGltYWdlSWQgPSB3b3JrYm9vay5hZGRJbWFnZSh7XHJcbiAgICAgICAgYmFzZTY0OiBiYXNlNjREYXRhLFxyXG4gICAgICAgIGV4dGVuc2lvbjogJ3BuZycsXHJcbiAgICAgIH0pO1xyXG4gICAgICB3b3Jrc2hlZXQuYWRkSW1hZ2UoaW1hZ2VJZCwgeyB0bDogeyBjb2w6IDAsIHJvdzogMCB9LCBleHQ6IHsgd2lkdGg6IDE0NSwgaGVpZ2h0OiA2NiB9LCBlZGl0QXM6ICdvbmVDZWxsJyB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaXRsZVxyXG4gICAgY29uc3QgdGl0bGVSb3cgPSB3b3Jrc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3cpO1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS52YWx1ZSA9IHRpdGxlO1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS5mb250ID0geyBib2xkOiB0cnVlLCBzaXplOiAxNiB9O1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS5hbGlnbm1lbnQgPSB7IHZlcnRpY2FsOiAnbWlkZGxlJywgaG9yaXpvbnRhbDogJ2xlZnQnIH07XHJcbiAgICB3b3Jrc2hlZXQubWVyZ2VDZWxscyhgRiR7Y3VycmVudFJvd306SiR7Y3VycmVudFJvd31gKTtcclxuICAgIGN1cnJlbnRSb3cgKz0gMztcclxuXHJcbiAgICAvLyBNZXRhZGF0YVxyXG4gICAgY29uc3QgbWV0YWRhdGE6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcclxuICAgICAgWydSZXBvcnQgVXNlcicsIHRoaXMucmVwb3J0VXNlcl0sXHJcbiAgICAgIFsnUmVwb3J0IFRpbWUnLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2QnLCB0aGlzLnJlcG9ydFBlcmlvZF0sXHJcbiAgICBdO1xyXG4gICAgbWV0YWRhdGEuZm9yRWFjaCgoW2xhYmVsLCB2YWx1ZV0pID0+IHtcclxuICAgICAgY29uc3Qgcm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICByb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHtcclxuICAgICAgICByaWNoVGV4dDogW1xyXG4gICAgICAgICAgeyB0ZXh0OiBgJHtsYWJlbH06IGAsIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9IH0sXHJcbiAgICAgICAgICB7IHRleHQ6IHZhbHVlID8/ICcnLCBmb250OiB7IGJvbGQ6IGZhbHNlIH0gfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHdvcmtzaGVldC5hZGRSb3coW10pOyBjdXJyZW50Um93Kys7XHJcblxyXG4gICAgLy8gQnJhbmNoZXNcclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgY29uc3QgYnJhbmNoUm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICBicmFuY2hSb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHtcclxuICAgICAgICByaWNoVGV4dDogW1xyXG4gICAgICAgICAgeyB0ZXh0OiAnQnJhbmNoIChOYW1lICYgQ29kZSk6ICcsIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9IH0sXHJcbiAgICAgICAgICB7IHRleHQ6IGdyb3VwLmJyYW5jaE5hbWVBbmRDb2RlID8/ICcnLCBmb250OiB7IGJvbGQ6IGZhbHNlIH0gfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgICAgd29ya3NoZWV0LmFkZFJvdyhbXSk7IGN1cnJlbnRSb3crKztcclxuXHJcbiAgICAgIC8vIExvb3Agc3ViZ3JvdXBzXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zXS5mb3JFYWNoKHN1Ykdyb3VwID0+IHtcclxuICAgICAgICBpZiAoIXN1Ykdyb3VwLmVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJHcm91cFJvdyA9IHdvcmtzaGVldC5nZXRSb3coY3VycmVudFJvdysrKTtcclxuICAgICAgICBzdWJHcm91cFJvdy5nZXRDZWxsKDEpLnZhbHVlID0ge1xyXG4gICAgICAgICAgcmljaFRleHQ6IFtcclxuICAgICAgICAgICAgeyB0ZXh0OiAnU3ViIEdyb3VwOiAnLCBmb250OiB7IGJvbGQ6IHRydWUgfSB9LFxyXG4gICAgICAgICAgICB7IHRleHQ6IHN1Ykdyb3VwLnN1Ykdyb3VwTmFtZSA/PyAnJywgZm9udDogeyBib2xkOiBmYWxzZSB9IH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB3b3Jrc2hlZXQuYWRkUm93KFtdKTsgY3VycmVudFJvdysrO1xyXG5cclxuICAgICAgICAvLyBIZWFkZXJzXHJcbiAgICAgICAgY29uc3QgeyBoZWFkZXJzLCByb3dzIH0gPSB0aGlzLnByZXBhcmVBY2NvdW50aW5nVGFibGUoc3ViR3JvdXAuZW50cmllcyk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyUm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICAgIGhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBpKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjZWxsID0gaGVhZGVyUm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgY2VsbC52YWx1ZSA9IGhlYWRlcjtcclxuICAgICAgICAgIGNlbGwuZm9udCA9IHsgYm9sZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgY2VsbC5maWxsID0geyB0eXBlOiAncGF0dGVybicsIHBhdHRlcm46ICdzb2xpZCcsIGZnQ29sb3I6IHsgYXJnYjogJ0Q5RDlEOScgfSB9O1xyXG4gICAgICAgICAgY2VsbC5hbGlnbm1lbnQgPSB7IHZlcnRpY2FsOiAnbWlkZGxlJywgaG9yaXpvbnRhbDogJ2NlbnRlcicgfTtcclxuICAgICAgICAgIGNlbGwuYm9yZGVyID0geyB0b3A6IHsgc3R5bGU6ICd0aGluJyB9LCBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LCBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSwgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9IH07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFJvd3NcclxuICAgICAgICByb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgICBjb25zdCByb3cgPSB3b3Jrc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3crKyk7XHJcbiAgICAgICAgICByLmZvckVhY2goKHZhbCwgaSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjZWxsID0gcm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgICBjZWxsLnZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgICBjZWxsLmJvcmRlciA9IHsgdG9wOiB7IHN0eWxlOiAndGhpbicgfSwgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSwgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSB9O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHdvcmtzaGVldC5hZGRSb3coW10pOyBjdXJyZW50Um93Kys7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g8J+UuSBBdXRvLWFkanVzdCBjb2x1bW4gd2lkdGhzIChpbmNsdWRpbmcgU3IgTm8pXHJcbiAgICBjb25zdCBhbGxIZWFkZXJzID0gWydTciBObycsIC4uLnRoaXMuY29sdW1uRGVmcy5tYXAoYyA9PiBjLmhlYWRlck5hbWUpXTtcclxuICAgIGFsbEhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBpKSA9PiB7XHJcbiAgICAgIGxldCBtYXhMZW5ndGggPSBoZWFkZXIubGVuZ3RoOyAvLyBzdGFydCB3aXRoIGhlYWRlciBsZW5ndGhcclxuXHJcbiAgICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9uc10uZm9yRWFjaChzdWJHcm91cCA9PiB7XHJcbiAgICAgICAgICBzdWJHcm91cC5lbnRyaWVzLmZvckVhY2goZW50cnkgPT4ge1xyXG4gICAgICAgICAgICAvLyBTciBObyBjb2x1bW4gKGkgPSAwKSBpcyBqdXN0IG51bWJlcnNcclxuICAgICAgICAgICAgbGV0IHZhbCA9IGkgPT09IDAgPyAoc3ViR3JvdXAuZW50cmllcy5pbmRleE9mKGVudHJ5KSArIDEpLnRvU3RyaW5nKCkgOiAoZW50cnlbdGhpcy5jb2x1bW5EZWZzW2kgLSAxXT8uZmllbGRdID8/ICcnKTtcclxuICAgICAgICAgICAgY29uc3QgbGVuID0gdmFsLnRvU3RyaW5nKCkubGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAobGVuID4gbWF4TGVuZ3RoKSBtYXhMZW5ndGggPSBsZW47XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB3b3Jrc2hlZXQuZ2V0Q29sdW1uKGkgKyAxKS53aWR0aCA9IG1heExlbmd0aCArIDU7IC8vIHBhZGRpbmdcclxuICAgIH0pO1xyXG5cclxuICAgIHdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKS50aGVuKGJ1ZmZlciA9PiB7XHJcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCdcclxuICAgICAgfSk7XHJcbiAgICAgIEZpbGVTYXZlci5zYXZlQXMoYmxvYiwgZmlsZU5hbWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlQWNjb3VudGluZ1RhYmxlKGRhdGE6IGFueVtdKTogeyBoZWFkZXJzOiBzdHJpbmdbXSwgcm93czogYW55W11bXSB9IHtcclxuICAgIGNvbnN0IGN1cnJlbmN5RmllbGRzID0gWydhbW91bnRQYWlkJywgJ3NlcnZpY2VGZWUnLCAndGF4JywgJ3ByaW5jaXBsZVNlbmRBbW91bnQnLCAnY2xpZW50U2V0dGxlbWVudEluU0NjeSddO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IFsnU3IgTm8nLCAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGMgPT4gYy5oZWFkZXJOYW1lKV07XHJcblxyXG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB7IGhlYWRlcnMsIHJvd3M6IFtdIH07IC8vIOKchSByZXR1cm4gaGVhZGVycyBvbmx5LCBlbXB0eSByb3dzXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm93cyA9IGRhdGEubWFwKChyb3csIGkpID0+IHtcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICBpICsgMSxcclxuICAgICAgICAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGNvbCA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsID0gcm93W2NvbC5maWVsZF07XHJcbiAgICAgICAgICBpZiAodmFsID09IG51bGwpIHJldHVybiAnJztcclxuICAgICAgICAgIGlmIChjdXJyZW5jeUZpZWxkcy5pbmNsdWRlcyhjb2wuZmllbGQpKSByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoMyk7XHJcbiAgICAgICAgICBpZiAoY29sLmZpZWxkID09PSAnc2V0dGxlbWVudFJhdGUnKSByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoOCk7XHJcbiAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIF07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4geyBoZWFkZXJzLCByb3dzIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cG9ydFRvQ3N2KCkge1xyXG4gICAgaWYgKCF0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSAnQWNjb3VudGluZy1SZXBvcnQuY3N2JztcclxuICAgIGNvbnN0IHJvd3M6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgcm93cy5wdXNoKCdSZXBvcnQgVGl0bGU6IEFjY291bnRpbmcgUmVwb3J0Jyk7XHJcbiAgICByb3dzLnB1c2goJycpO1xyXG4gICAgcm93cy5wdXNoKGBSZXBvcnQgVXNlcjogJHt0aGlzLnJlcG9ydFVzZXJ9YCk7XHJcbiAgICByb3dzLnB1c2goYFJlcG9ydCBUaW1lOiAke3RoaXMucmVwb3J0VGltZX1gKTtcclxuICAgIHJvd3MucHVzaChgUmVwb3J0IFBlcmlvZDogJHt0aGlzLnJlcG9ydFBlcmlvZH1gKTtcclxuICAgIHJvd3MucHVzaChgQ29tcGFueTogWHByZXNzIE1vbmV5YCk7XHJcbiAgICByb3dzLnB1c2goJycpO1xyXG5cclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgcm93cy5wdXNoKGBCcmFuY2ggKE5hbWUgJiBDb2RlKTogJHtncm91cC5icmFuY2hOYW1lQW5kQ29kZX1gKTtcclxuXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zXS5mb3JFYWNoKHN1Ykdyb3VwID0+IHtcclxuICAgICAgICBpZiAoIXN1Ykdyb3VwLmVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgICAgICByb3dzLnB1c2goYFN1YiBHcm91cDogJHtzdWJHcm91cC5zdWJHcm91cE5hbWV9YCk7XHJcblxyXG4gICAgICAgIC8vIPCflLkgQWRkIFwiU3IgTm9cIiBhdCB0aGUgYmVnaW5uaW5nIG9mIGhlYWRlcnNcclxuICAgICAgICByb3dzLnB1c2goWydcIlNyIE5vXCInLCAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGNvbCA9PiBgXCIke2NvbC5oZWFkZXJOYW1lfVwiYCldLmpvaW4oJywnKSk7XHJcblxyXG4gICAgICAgIHN1Ykdyb3VwLmVudHJpZXMuZm9yRWFjaCgoZW50cnksIGlkeCkgPT4ge1xyXG4gICAgICAgICAgLy8g8J+UuSBBZGQgc2VyaWFsIG51bWJlciBhdCBzdGFydCBvZiBlYWNoIHJvd1xyXG4gICAgICAgICAgY29uc3Qgcm93ID0gW1xyXG4gICAgICAgICAgICAoaWR4ICsgMSkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgLi4udGhpcy5jb2x1bW5EZWZzLm1hcChjb2wgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGVudHJ5W2NvbC5maWVsZF07XHJcbiAgICAgICAgICAgICAgaWYgKHZhbCA9PSBudWxsKSByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgaWYgKFsnYW1vdW50UGFpZCcsICdzZXJ2aWNlRmVlJywgJ3RheCcsICdwcmluY2lwbGVTZW5kQW1vdW50JywgJ2NsaWVudFNldHRsZW1lbnRJblNDY3knXS5pbmNsdWRlcyhjb2wuZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoMyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChjb2wuZmllbGQgPT09ICdzZXR0bGVtZW50UmF0ZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbCkudG9GaXhlZCg4KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGBcIiR7dmFsfVwiYDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF0uam9pbignLCcpO1xyXG4gICAgICAgICAgcm93cy5wdXNoKHJvdyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJvd3MucHVzaCgnJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyb3dzLmpvaW4oJ1xcbicpXSwgeyB0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtODsnIH0pO1xyXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICBnZXRSZXBvcnQocGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCBtb2RhbCA9IHBheWxvYWQ/Lm1vZGFsIHx8IHBheWxvYWQ7XHJcblxyXG4gICAgY29uc3QgcmVxOiBBY2NvdW50aW5nUmVwb3J0UmVxdWVzdCA9IHtcclxuICAgICAgc3RhcnREYXRlOiBtb2RhbC5mcm9tRGF0ZSwgLy8geXl5eS1NTS1kZCBmcm9tIHRoZSBmaWx0ZXJcclxuICAgICAgZW5kRGF0ZTogbW9kYWwudG9EYXRlLFxyXG4gICAgICBzZW5kQ291bnRyeUNvZGU6IG1vZGFsLnNlbmRDb3VudHJ5ID8/ICdBTEwnLFxyXG4gICAgICByZWN2Q291bnRyeUNvZGU6IG1vZGFsLnJlY2VpdmVDb3VudHJ5ID8/ICdBTEwnLFxyXG4gICAgICBidXNpbmVzc1BhcnRuZXJDb3JyZWxhdGlvbklEOiBtb2RhbC5jbGllbnQgPz8gJ0FMTCcsXHJcbiAgICAgIHRyYW5zYWN0aW9uU3RhdHVzOiBtb2RhbC50cmFuc2FjdGlvblN0YXR1cy5qb2luKFwiLFwiKSxcclxuICAgICAgcGF5b3V0Q3VycmVuY3k6IG1vZGFsLmN1cnJlbmN5ID8/ICdBTEwnLFxyXG4gICAgICB0cmFuc2FjdGlvblR5cGU6IG1vZGFsLnByb2R1Y3QgPz8gJ0FMTCcsXHJcbiAgICAgIGJyYW5jaENvZGU6IG1vZGFsLmJyYW5jaCA/PyAnQUxMJyxcclxuICAgICAgY29tcGFueUNvZGU6ICdBTEwnIC8vIG9yICdCSCcgaWYgeW91ciBBUEkgcmVxdWlyZXMgaXQgc3BlY2lmaWNhbGx5XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZ2V0QWNjb3VudGluZ1JlcG9ydChyZXEpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGxpYi1zZWFyY2gtZmlsdGVyIFtSZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiAoc2VhcmNoQ2xpY2tlZCk9XCJnZXRSZXBvcnQoJGV2ZW50KVwiPjwvbGliLXNlYXJjaC1maWx0ZXI+XHJcblxyXG48YXBwLWxvYWRlciBjbGFzcz1cIlwiICpuZ0lmPVwibG9hZGluZ1N0YXRlID09IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG5cclxuPGRpdiAqbmdJZj1cImFjY291bnRpbmdSZXBvcnRNb2RlbCE9dW5kZWZpbmVkICYmIGFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aFwiPlxyXG5cclxuICA8bGliLW1ldGFkYXRhIFtyZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiBbc2hvd21ldGFEYXRhT25lXT1cInRydWVcIiBbc2hvd21ldGFEYXRhVHdvXT1cInRydWVcIiBbbWV0YURhdGFPbmVdPVwibGVmdERhdGFcIlxyXG4gICAgW21ldGFEYXRhVHdvXT1cInJpZ2h0RGF0YVwiIChleHBvcnRFdmVudCk9XCJoYW5kbGVFeHBvcnQoJGV2ZW50KVwiIChzZWFyY2hFdmVudCk9XCJvblNlYXJjaCgkZXZlbnQpXCI+PC9saWItbWV0YWRhdGE+XHJcblxyXG4gIDxuZ2ItYWNjb3JkaW9uICNhY2M9XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwiZmFsc2VcIiBbYWN0aXZlSWRzXT1cIidwYW5lbC0wJ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgYWNjb3VudGluZ1JlcG9ydE1vZGVsPy5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgPG5nYi1wYW5lbCBbaWRdPVwiJ3BhbmVsLScgKyBpXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsVGl0bGU+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0aXRsZS1zdGFjayBsaW5lLTFcIj5cclxuICAgICAgICAgICAge3sgZ3JvdXAuYnJhbmNoTmFtZUFuZENvZGUgfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsQ29udGVudD5cclxuICAgICAgICAgIDwhLS0gU2VuZCBUcmFuc2FjdGlvbnMgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8aDYgY2xhc3M9XCJzdWJncm91cGNvbHVtblwiPnt7IGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuc3ViR3JvdXBOYW1lIH19PC9oNj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgICAgICAgICA8bGliLXBhZ2Utc2l6ZS1zZWxlY3RvciBbdG90YWxFbnRyaWVzXT1cImdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcy5sZW5ndGhcIiBbZGVmYXVsdFNpemVdPVwiJzE1J1wiXHJcbiAgICAgICAgICAgICAgICBbZ3JpZEFwaV09XCJncmlkQXBpc1tpICogMl1cIj5cclxuICAgICAgICAgICAgICA8L2xpYi1wYWdlLXNpemUtc2VsZWN0b3I+XHJcblxyXG4gICAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgY29tcGFjdC1ncmlkIGdyaWQtc2l6ZVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMzcwcHg7XCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIiBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCIgW3Jvd0RhdGFdPVwiZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzXCJcclxuICAgICAgICAgICAgICAgIFtyb3dIZWlnaHRdPVwiMjBcIiBbaGVhZGVySGVpZ2h0XT1cIjI0XCIgW3BhZ2luYXRpb25dPVwidHJ1ZVwiIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnaW5hdGlvbkFycmF5W2ldXCJcclxuICAgICAgICAgICAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50LCBpICogMilcIiAoZ3JpZFNpemVDaGFuZ2VkKT1cIm9uR3JpZFNpemVDaGFuZ2VkKCRldmVudCwgaSAqIDIpXCI+XHJcbiAgICAgICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBSZWNlaXZlIFRyYW5zYWN0aW9ucyAtLT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLmVudHJpZXMubGVuZ3RoXCIgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgIDxoNiBjbGFzcz1cInN1Ymdyb3VwY29sdW1uXCI+e3sgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5zdWJHcm91cE5hbWUgfX08L2g2PlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG4gICAgICAgICAgICAgIDxsaWItcGFnZS1zaXplLXNlbGVjdG9yIFt0b3RhbEVudHJpZXNdPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzLmxlbmd0aFwiIFtkZWZhdWx0U2l6ZV09XCInMTUnXCJcclxuICAgICAgICAgICAgICAgIFtncmlkQXBpXT1cImdyaWRBcGlzW2kgKiAyICsgMV1cIj5cclxuICAgICAgICAgICAgICA8L2xpYi1wYWdlLXNpemUtc2VsZWN0b3I+XHJcblxyXG4gICAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgY29tcGFjdC1ncmlkIGdyaWQtc2l6ZVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMzcwcHg7XCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIiBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCIgW3Jvd0RhdGFdPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXCJcclxuICAgICAgICAgICAgICAgIFtyb3dIZWlnaHRdPVwiMjBcIiBbaGVhZGVySGVpZ2h0XT1cIjI0XCIgW3BhZ2luYXRpb25dPVwidHJ1ZVwiIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnaW5hdGlvbkFycmF5W2ldXCJcclxuICAgICAgICAgICAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50LCBpICogMiArIDEpXCIgKGdyaWRTaXplQ2hhbmdlZCk9XCJvbkdyaWRTaXplQ2hhbmdlZCgkZXZlbnQsIGkgKiAyKVwiPlxyXG4gICAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmdiLXBhbmVsPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZ2ItYWNjb3JkaW9uPlxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbXQtM1wiICpuZ0lmPVwibm9EYXRhRm91bmQgJiYgbG9hZGluZ1N0YXRlIT1Db21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZ1wiPlxyXG4gIE5vIERhdGEgZm91bmQgbWF0Y2hpbmcgeW91ciBzZWFyY2ggY3JpdGVyaWEuXHJcbjwvZGl2PiJdfQ==