ngx-histaff-alpha 4.7.2 → 4.7.3

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.
@@ -297,7 +297,7 @@ export class CoreCompareDbPipelineComponent extends BaseComponent {
297
297
  }
298
298
  }
299
299
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: CoreCompareDbPipelineComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.AppService }], target: i0.ɵɵFactoryTarget.Component }); }
300
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: CoreCompareDbPipelineComponent, isStandalone: true, selector: "core-compare-db-pipeline", viewQueries: [{ propertyName: "toolBlock", first: true, predicate: ["toolBlock"], descendants: true }, { propertyName: "conflictType", first: true, predicate: ["conflictType"], descendants: true }, { propertyName: "sourceNullability", first: true, predicate: ["sourceNullability"], descendants: true }, { propertyName: "targetNullability", first: true, predicate: ["targetNullability"], descendants: true }, { propertyName: "sourceIsPrimaryKey", first: true, predicate: ["sourceIsPrimaryKey"], descendants: true }, { propertyName: "targetIsPrimaryKey", first: true, predicate: ["targetIsPrimaryKey"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"core-compare-db-pipeline-container\">\r\n <core-page-header [title]=\"'DB STRUCTURE COMPARE'\"\r\n [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[]\" [height]=\"45\" [headerLineHeight]=\"45\"\r\n (onHeaderClick)=\"onCoreTabsHeaderClick($event)\">\r\n </core-tabs>\r\n\r\n\r\n <core-table [columns]=\"columns\" [height]=\"tableHeight\" [data]=\"data\" [loading]=\"loading\"\r\n [autoColumnFitAvailableSpace]=\"false\" [frozen]=\"3\" [lazyLoading]=\"true\" [headerFirstRowHeight]=\"80\"\r\n (onSearching)=\"onSearching($event)\"></core-table>\r\n <div class=\"h15\"></div>\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <div class=\"conflict-total\" [class.error]=\"!!conflictTotal\">\r\n {{ !!conflictTotal ? conflictTotal + ' conflicts found!' : 'No conflict found' }} \r\n </div>\r\n <core-pagination [$height]=\"46\" [$currentPage]=\"currentPage$\" [$pageCount]=\"pageCount\" [$loading]=\"loading\"\r\n [$background]=\"'#848484'\" [$fixedPageSize]=\"20\"\r\n [$suspendCurrentPageSubscription]=\"suspendCurrentPageSubscription$\"></core-pagination>\r\n </div>\r\n\r\n @if (showRowResolverWindow) {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"row-resolver-window\">\r\n <core-page-header [title]=\"'RESOLVER WINDOW'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <i class=\"close-icon pointer feather-x fs24\" (click)=\"closeRowResolver($event)\"></i>\r\n <textarea class=\"form-control\" [rows]=\"'10'\" style=\"height: 400px; padding: 15px;\" disabled>\r\n {{ sqlCommand }}\r\n </textarea>\r\n <button class=\"btn btn-primary\" (click)=\"resolve($event)\" style=\"margin-top: 15px;\">Run</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #conflictType let-context=\"context\">\r\n <div class=\"conflict-type-wrapper d-flex d-flex-between\" [appTooltip]=\"context.conflictType\" [showAnyway]=\"true\">\r\n \r\n @switch (context.conflictType) {\r\n @case ('TMIT') {\r\n <i [class]=\"'feather-layout ' + context.conflictType\"></i>\r\n }\r\n @case ('CMIT') {\r\n <i [class]=\"'feather-sidebar ' + context.conflictType\"></i>\r\n }\r\n @case ('CPKM') {\r\n <i [class]=\"'feather-zap ' + context.conflictType\"></i>\r\n }\r\n @case ('CTM') {\r\n <i [class]=\"'feather-type ' + context.conflictType\"></i>\r\n }\r\n @case ('CSM') {\r\n <i [class]=\"'feather-layers ' + context.conflictType\"></i>\r\n }\r\n @case ('CNM') {\r\n <i [class]=\"'feather-droplet ' + context.conflictType\"></i>\r\n }\r\n @case ('CPSM') {\r\n <i [class]=\"'feather-move ' + context.conflictType\"></i>\r\n }\r\n }\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #toolBlock let-context=\"context\">\r\n <div class=\"tools inter-font d-flex d-flex-start\">\r\n <div class=\"icon-wrapper\" [appTooltip]=\"'Resolve'\" [position]=\"'right'\" [showAnyway]=\"true\" (click)=\"openRowResolver($event, context)\">\r\n <i class=\"feather-play fs24\"></i>\r\n </div>\r\n <span>{{ context.difference }}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template #sourceNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #sourceIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n</div>", styles: [".core-compare-db-pipeline-container .h15{height:15px}.core-compare-db-pipeline-container .tools{height:36px}.core-compare-db-pipeline-container .tools .icon-wrapper{color:#848484;opacity:.5;display:inline-flex;width:36px;height:36px;border-radius:50%}.core-compare-db-pipeline-container .tools .icon-wrapper:hover{opacity:1;color:#fff;background-color:#848484}.core-compare-db-pipeline-container .modal-content-root{padding-top:0}.core-compare-db-pipeline-container .close-icon{display:block;position:absolute;top:8px;right:8px;color:#848484}.core-compare-db-pipeline-container .close-icon:hover{color:inherit}.core-compare-db-pipeline-container .row-resolver-window{display:block;width:992px;max-width:100vw!important;height:500px}.core-compare-db-pipeline-container .conflict-total{height:50px;display:flex;align-items:center;justify-content:flex-start;color:#848484;font-size:24px;font-weight:700}.core-compare-db-pipeline-container .conflict-total.error{color:brown}.core-compare-db-pipeline-container .conflict-type-wrapper i{font-size:20px;font-weight:700}.core-compare-db-pipeline-container .conflict-type-wrapper .TMIT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .CMIT{color:orange}.core-compare-db-pipeline-container .conflict-type-wrapper .CTM{color:#d2691e}.core-compare-db-pipeline-container .conflict-type-wrapper .CSM{color:#ffa07a}.core-compare-db-pipeline-container .conflict-type-wrapper .CNM{color:#ffb6c1}\n"], dependencies: [{ kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "borderRadius", "headerColor", "headerBackgroundColor", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "disableSorting", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "primaryKey", "rowHoverBgColor", "noPaddingCell", "autoColumnFitAvailableSpace"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CorePaginationComponent, selector: "core-pagination", inputs: ["$currentPage", "$height", "$pageCount", "$loading", "$suspendCurrentPageSubscription", "$showAdd", "$background", "$fixedPageSize"], outputs: ["$onClickAdd"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }] }); }
300
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: CoreCompareDbPipelineComponent, isStandalone: true, selector: "core-compare-db-pipeline", viewQueries: [{ propertyName: "toolBlock", first: true, predicate: ["toolBlock"], descendants: true }, { propertyName: "conflictType", first: true, predicate: ["conflictType"], descendants: true }, { propertyName: "sourceNullability", first: true, predicate: ["sourceNullability"], descendants: true }, { propertyName: "targetNullability", first: true, predicate: ["targetNullability"], descendants: true }, { propertyName: "sourceIsPrimaryKey", first: true, predicate: ["sourceIsPrimaryKey"], descendants: true }, { propertyName: "targetIsPrimaryKey", first: true, predicate: ["targetIsPrimaryKey"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"core-compare-db-pipeline-container\">\r\n <core-page-header [title]=\"'DB STRUCTURE COMPARE'\"\r\n [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[]\" [height]=\"45\" [headerLineHeight]=\"45\"\r\n (onHeaderClick)=\"onCoreTabsHeaderClick($event)\">\r\n </core-tabs>\r\n\r\n\r\n <core-table [columns]=\"columns\" [height]=\"tableHeight\" [data]=\"data\" [loading]=\"loading\"\r\n [autoColumnFitAvailableSpace]=\"false\" [frozen]=\"3\" [lazyLoading]=\"true\" [headerFirstRowHeight]=\"80\"\r\n (onSearching)=\"onSearching($event)\"></core-table>\r\n <div class=\"h15\"></div>\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <div class=\"conflict-total\" [class.error]=\"!!conflictTotal\">\r\n {{ !!conflictTotal ? conflictTotal + ' conflicts found!' : 'No conflict found' }} \r\n </div>\r\n <core-pagination [$height]=\"46\" [$currentPage]=\"currentPage$\" [$pageCount]=\"pageCount\" [$loading]=\"loading\"\r\n [$background]=\"'#848484'\" [$fixedPageSize]=\"20\"\r\n [$suspendCurrentPageSubscription]=\"suspendCurrentPageSubscription$\"></core-pagination>\r\n </div>\r\n\r\n @if (showRowResolverWindow) {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"row-resolver-window\">\r\n <core-page-header [title]=\"'RESOLVER WINDOW'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <i class=\"close-icon pointer feather-x fs24\" (click)=\"closeRowResolver($event)\"></i>\r\n <textarea class=\"form-control\" [rows]=\"'10'\" style=\"height: 400px; padding: 15px;\" disabled>\r\n {{ sqlCommand }}\r\n </textarea>\r\n <button class=\"btn btn-primary\" (click)=\"resolve($event)\" style=\"margin-top: 15px;\">Run</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #conflictType let-context=\"context\">\r\n <div class=\"conflict-type-wrapper d-flex d-flex-between\" [appTooltip]=\"context.conflictType\" [showAnyway]=\"true\">\r\n \r\n @switch (context.conflictType) {\r\n @case ('TMIT') {\r\n <i [class]=\"'feather-layout ' + context.conflictType\"></i>\r\n }\r\n @case ('CMIT') {\r\n <i [class]=\"'feather-sidebar ' + context.conflictType\"></i>\r\n }\r\n @case ('CPKM') {\r\n <i [class]=\"'feather-zap ' + context.conflictType\"></i>\r\n }\r\n @case ('CTM') {\r\n <i [class]=\"'feather-type ' + context.conflictType\"></i>\r\n }\r\n @case ('CSM') {\r\n <i [class]=\"'feather-layers ' + context.conflictType\"></i>\r\n }\r\n @case ('CNM') {\r\n <i [class]=\"'feather-droplet ' + context.conflictType\"></i>\r\n }\r\n @case ('CPSM') {\r\n <i [class]=\"'feather-move ' + context.conflictType\"></i>\r\n }\r\n @case ('RT') {\r\n <i [class]=\"'feather-trash ' + context.conflictType\"></i>\r\n }\r\n @case ('RC') {\r\n <i [class]=\"'feather-trash ' + context.conflictType\"></i>\r\n }\r\n }\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #toolBlock let-context=\"context\">\r\n <div class=\"tools inter-font d-flex d-flex-start\">\r\n <div class=\"icon-wrapper\" [appTooltip]=\"'Resolve'\" [position]=\"'right'\" [showAnyway]=\"true\" (click)=\"openRowResolver($event, context)\">\r\n <i class=\"feather-play fs24\"></i>\r\n </div>\r\n <span>{{ context.difference }}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template #sourceNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #sourceIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n</div>", styles: [".core-compare-db-pipeline-container .h15{height:15px}.core-compare-db-pipeline-container .tools{height:36px}.core-compare-db-pipeline-container .tools .icon-wrapper{color:#848484;opacity:.5;display:inline-flex;width:36px;height:36px;border-radius:50%}.core-compare-db-pipeline-container .tools .icon-wrapper:hover{opacity:1;color:#fff;background-color:#848484}.core-compare-db-pipeline-container .modal-content-root{padding-top:0}.core-compare-db-pipeline-container .close-icon{display:block;position:absolute;top:8px;right:8px;color:#848484}.core-compare-db-pipeline-container .close-icon:hover{color:inherit}.core-compare-db-pipeline-container .row-resolver-window{display:block;width:992px;max-width:100vw!important;height:500px}.core-compare-db-pipeline-container .conflict-total{height:50px;display:flex;align-items:center;justify-content:flex-start;color:#848484;font-size:24px;font-weight:700}.core-compare-db-pipeline-container .conflict-total.error{color:brown}.core-compare-db-pipeline-container .conflict-type-wrapper i{font-size:20px;font-weight:700}.core-compare-db-pipeline-container .conflict-type-wrapper .TMIT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .CMIT{color:orange}.core-compare-db-pipeline-container .conflict-type-wrapper .CTM{color:#d2691e}.core-compare-db-pipeline-container .conflict-type-wrapper .CSM{color:#ffa07a}.core-compare-db-pipeline-container .conflict-type-wrapper .CNM{color:#ffb6c1}.core-compare-db-pipeline-container .conflict-type-wrapper .RT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .RC{color:#d2691e}\n"], dependencies: [{ kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "borderRadius", "headerColor", "headerBackgroundColor", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "disableSorting", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "primaryKey", "rowHoverBgColor", "noPaddingCell", "autoColumnFitAvailableSpace"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CorePaginationComponent, selector: "core-pagination", inputs: ["$currentPage", "$height", "$pageCount", "$loading", "$suspendCurrentPageSubscription", "$showAdd", "$background", "$fixedPageSize"], outputs: ["$onClickAdd"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }] }); }
301
301
  }
302
302
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: CoreCompareDbPipelineComponent, decorators: [{
303
303
  type: Component,
@@ -310,7 +310,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
310
310
  CoreCheckboxComponent,
311
311
  FormsModule,
312
312
  CoreTabsComponent
313
- ], template: "<div class=\"core-compare-db-pipeline-container\">\r\n <core-page-header [title]=\"'DB STRUCTURE COMPARE'\"\r\n [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[]\" [height]=\"45\" [headerLineHeight]=\"45\"\r\n (onHeaderClick)=\"onCoreTabsHeaderClick($event)\">\r\n </core-tabs>\r\n\r\n\r\n <core-table [columns]=\"columns\" [height]=\"tableHeight\" [data]=\"data\" [loading]=\"loading\"\r\n [autoColumnFitAvailableSpace]=\"false\" [frozen]=\"3\" [lazyLoading]=\"true\" [headerFirstRowHeight]=\"80\"\r\n (onSearching)=\"onSearching($event)\"></core-table>\r\n <div class=\"h15\"></div>\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <div class=\"conflict-total\" [class.error]=\"!!conflictTotal\">\r\n {{ !!conflictTotal ? conflictTotal + ' conflicts found!' : 'No conflict found' }} \r\n </div>\r\n <core-pagination [$height]=\"46\" [$currentPage]=\"currentPage$\" [$pageCount]=\"pageCount\" [$loading]=\"loading\"\r\n [$background]=\"'#848484'\" [$fixedPageSize]=\"20\"\r\n [$suspendCurrentPageSubscription]=\"suspendCurrentPageSubscription$\"></core-pagination>\r\n </div>\r\n\r\n @if (showRowResolverWindow) {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"row-resolver-window\">\r\n <core-page-header [title]=\"'RESOLVER WINDOW'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <i class=\"close-icon pointer feather-x fs24\" (click)=\"closeRowResolver($event)\"></i>\r\n <textarea class=\"form-control\" [rows]=\"'10'\" style=\"height: 400px; padding: 15px;\" disabled>\r\n {{ sqlCommand }}\r\n </textarea>\r\n <button class=\"btn btn-primary\" (click)=\"resolve($event)\" style=\"margin-top: 15px;\">Run</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #conflictType let-context=\"context\">\r\n <div class=\"conflict-type-wrapper d-flex d-flex-between\" [appTooltip]=\"context.conflictType\" [showAnyway]=\"true\">\r\n \r\n @switch (context.conflictType) {\r\n @case ('TMIT') {\r\n <i [class]=\"'feather-layout ' + context.conflictType\"></i>\r\n }\r\n @case ('CMIT') {\r\n <i [class]=\"'feather-sidebar ' + context.conflictType\"></i>\r\n }\r\n @case ('CPKM') {\r\n <i [class]=\"'feather-zap ' + context.conflictType\"></i>\r\n }\r\n @case ('CTM') {\r\n <i [class]=\"'feather-type ' + context.conflictType\"></i>\r\n }\r\n @case ('CSM') {\r\n <i [class]=\"'feather-layers ' + context.conflictType\"></i>\r\n }\r\n @case ('CNM') {\r\n <i [class]=\"'feather-droplet ' + context.conflictType\"></i>\r\n }\r\n @case ('CPSM') {\r\n <i [class]=\"'feather-move ' + context.conflictType\"></i>\r\n }\r\n }\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #toolBlock let-context=\"context\">\r\n <div class=\"tools inter-font d-flex d-flex-start\">\r\n <div class=\"icon-wrapper\" [appTooltip]=\"'Resolve'\" [position]=\"'right'\" [showAnyway]=\"true\" (click)=\"openRowResolver($event, context)\">\r\n <i class=\"feather-play fs24\"></i>\r\n </div>\r\n <span>{{ context.difference }}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template #sourceNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #sourceIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n</div>", styles: [".core-compare-db-pipeline-container .h15{height:15px}.core-compare-db-pipeline-container .tools{height:36px}.core-compare-db-pipeline-container .tools .icon-wrapper{color:#848484;opacity:.5;display:inline-flex;width:36px;height:36px;border-radius:50%}.core-compare-db-pipeline-container .tools .icon-wrapper:hover{opacity:1;color:#fff;background-color:#848484}.core-compare-db-pipeline-container .modal-content-root{padding-top:0}.core-compare-db-pipeline-container .close-icon{display:block;position:absolute;top:8px;right:8px;color:#848484}.core-compare-db-pipeline-container .close-icon:hover{color:inherit}.core-compare-db-pipeline-container .row-resolver-window{display:block;width:992px;max-width:100vw!important;height:500px}.core-compare-db-pipeline-container .conflict-total{height:50px;display:flex;align-items:center;justify-content:flex-start;color:#848484;font-size:24px;font-weight:700}.core-compare-db-pipeline-container .conflict-total.error{color:brown}.core-compare-db-pipeline-container .conflict-type-wrapper i{font-size:20px;font-weight:700}.core-compare-db-pipeline-container .conflict-type-wrapper .TMIT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .CMIT{color:orange}.core-compare-db-pipeline-container .conflict-type-wrapper .CTM{color:#d2691e}.core-compare-db-pipeline-container .conflict-type-wrapper .CSM{color:#ffa07a}.core-compare-db-pipeline-container .conflict-type-wrapper .CNM{color:#ffb6c1}\n"] }]
313
+ ], template: "<div class=\"core-compare-db-pipeline-container\">\r\n <core-page-header [title]=\"'DB STRUCTURE COMPARE'\"\r\n [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[]\" [height]=\"45\" [headerLineHeight]=\"45\"\r\n (onHeaderClick)=\"onCoreTabsHeaderClick($event)\">\r\n </core-tabs>\r\n\r\n\r\n <core-table [columns]=\"columns\" [height]=\"tableHeight\" [data]=\"data\" [loading]=\"loading\"\r\n [autoColumnFitAvailableSpace]=\"false\" [frozen]=\"3\" [lazyLoading]=\"true\" [headerFirstRowHeight]=\"80\"\r\n (onSearching)=\"onSearching($event)\"></core-table>\r\n <div class=\"h15\"></div>\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <div class=\"conflict-total\" [class.error]=\"!!conflictTotal\">\r\n {{ !!conflictTotal ? conflictTotal + ' conflicts found!' : 'No conflict found' }} \r\n </div>\r\n <core-pagination [$height]=\"46\" [$currentPage]=\"currentPage$\" [$pageCount]=\"pageCount\" [$loading]=\"loading\"\r\n [$background]=\"'#848484'\" [$fixedPageSize]=\"20\"\r\n [$suspendCurrentPageSubscription]=\"suspendCurrentPageSubscription$\"></core-pagination>\r\n </div>\r\n\r\n @if (showRowResolverWindow) {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"row-resolver-window\">\r\n <core-page-header [title]=\"'RESOLVER WINDOW'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <i class=\"close-icon pointer feather-x fs24\" (click)=\"closeRowResolver($event)\"></i>\r\n <textarea class=\"form-control\" [rows]=\"'10'\" style=\"height: 400px; padding: 15px;\" disabled>\r\n {{ sqlCommand }}\r\n </textarea>\r\n <button class=\"btn btn-primary\" (click)=\"resolve($event)\" style=\"margin-top: 15px;\">Run</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #conflictType let-context=\"context\">\r\n <div class=\"conflict-type-wrapper d-flex d-flex-between\" [appTooltip]=\"context.conflictType\" [showAnyway]=\"true\">\r\n \r\n @switch (context.conflictType) {\r\n @case ('TMIT') {\r\n <i [class]=\"'feather-layout ' + context.conflictType\"></i>\r\n }\r\n @case ('CMIT') {\r\n <i [class]=\"'feather-sidebar ' + context.conflictType\"></i>\r\n }\r\n @case ('CPKM') {\r\n <i [class]=\"'feather-zap ' + context.conflictType\"></i>\r\n }\r\n @case ('CTM') {\r\n <i [class]=\"'feather-type ' + context.conflictType\"></i>\r\n }\r\n @case ('CSM') {\r\n <i [class]=\"'feather-layers ' + context.conflictType\"></i>\r\n }\r\n @case ('CNM') {\r\n <i [class]=\"'feather-droplet ' + context.conflictType\"></i>\r\n }\r\n @case ('CPSM') {\r\n <i [class]=\"'feather-move ' + context.conflictType\"></i>\r\n }\r\n @case ('RT') {\r\n <i [class]=\"'feather-trash ' + context.conflictType\"></i>\r\n }\r\n @case ('RC') {\r\n <i [class]=\"'feather-trash ' + context.conflictType\"></i>\r\n }\r\n }\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #toolBlock let-context=\"context\">\r\n <div class=\"tools inter-font d-flex d-flex-start\">\r\n <div class=\"icon-wrapper\" [appTooltip]=\"'Resolve'\" [position]=\"'right'\" [showAnyway]=\"true\" (click)=\"openRowResolver($event, context)\">\r\n <i class=\"feather-play fs24\"></i>\r\n </div>\r\n <span>{{ context.difference }}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template #sourceNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #sourceIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n</div>", styles: [".core-compare-db-pipeline-container .h15{height:15px}.core-compare-db-pipeline-container .tools{height:36px}.core-compare-db-pipeline-container .tools .icon-wrapper{color:#848484;opacity:.5;display:inline-flex;width:36px;height:36px;border-radius:50%}.core-compare-db-pipeline-container .tools .icon-wrapper:hover{opacity:1;color:#fff;background-color:#848484}.core-compare-db-pipeline-container .modal-content-root{padding-top:0}.core-compare-db-pipeline-container .close-icon{display:block;position:absolute;top:8px;right:8px;color:#848484}.core-compare-db-pipeline-container .close-icon:hover{color:inherit}.core-compare-db-pipeline-container .row-resolver-window{display:block;width:992px;max-width:100vw!important;height:500px}.core-compare-db-pipeline-container .conflict-total{height:50px;display:flex;align-items:center;justify-content:flex-start;color:#848484;font-size:24px;font-weight:700}.core-compare-db-pipeline-container .conflict-total.error{color:brown}.core-compare-db-pipeline-container .conflict-type-wrapper i{font-size:20px;font-weight:700}.core-compare-db-pipeline-container .conflict-type-wrapper .TMIT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .CMIT{color:orange}.core-compare-db-pipeline-container .conflict-type-wrapper .CTM{color:#d2691e}.core-compare-db-pipeline-container .conflict-type-wrapper .CSM{color:#ffa07a}.core-compare-db-pipeline-container .conflict-type-wrapper .CNM{color:#ffb6c1}.core-compare-db-pipeline-container .conflict-type-wrapper .RT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .RC{color:#d2691e}\n"] }]
314
314
  }], ctorParameters: () => [{ type: i1.MultiLanguageService }, { type: i2.AppService }], propDecorators: { toolBlock: [{
315
315
  type: ViewChild,
316
316
  args: ['toolBlock']
@@ -330,4 +330,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
330
330
  type: ViewChild,
331
331
  args: ['targetIsPrimaryKey']
332
332
  }] } });
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUvY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUvY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDMUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQzdILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FB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QUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ08saUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNHLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ0Usa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1jb21wb25lbnQvYmFzZS9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtdGFibGUvY29yZS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1wYWdpbmF0aW9uL2NvcmUtcGFnaW5hdGlvbi9jb3JlLXBhZ2luYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZUJ1dHRvbkdyb3VwVm5zQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZVRhYnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLXRhYnMvY29yZS10YWJzL2NvcmUtdGFicy5jb21wb25lbnQnO1xyXG5cclxuaW50ZXJmYWNlIElDb21wYXJlRGJTdHJ1Y3R1cmVGaWx0ZXJJdGVtIHtcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIHNlYXJjaEZvcjogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSUNvbXBhcmVEYlN0cnVjdHVyZVJlcXVlc3Qge1xyXG4gIGZpbHRlcj86IElDb21wYXJlRGJTdHJ1Y3R1cmVGaWx0ZXJJdGVtW107XHJcbiAgcGFnZU51bWJlcjogbnVtYmVyO1xyXG4gIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgZm9yRXh0ZW5kZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSURiU3RydWN0dXJlRGlmZmVyZW5jZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBzb3VyY2VBbGlhczogc3RyaW5nO1xyXG4gIHRhcmdldEFsaWFzOiBzdHJpbmc7XHJcbiAgdGFibGVOYW1lOiBzdHJpbmc7XHJcbiAgY29sdW1uTmFtZTogc3RyaW5nO1xyXG4gIGNvbmZsaWN0VHlwZTogc3RyaW5nO1xyXG4gIHNvdXJjZVR5cGU/OiBzdHJpbmc7XHJcbiAgc291cmNlSXNQcmltYXJ5S2V5PzogYm9vbGVhbjtcclxuICBzb3VyY2VTaXplPzogbnVtYmVyO1xyXG4gIHNvdXJjZU51bGxhYmlsaXR5PzogYm9vbGVhbjtcclxuICBzb3VyY2VQcmVjaXNpb24/OiBudW1iZXI7XHJcbiAgc291cmNlU2NhbGU/OiBudW1iZXI7XHJcbiAgdGFyZ2V0VHlwZT86IHN0cmluZztcclxuICB0YXJnZXRJc1ByaW1hcnlLZXk/OiBib29sZWFuO1xyXG4gIHRhcmdldFNpemU/OiBudW1iZXI7XHJcbiAgdGFyZ2V0TnVsbGFiaWxpdHk/OiBib29sZWFuO1xyXG4gIHRhcmdldFByZWNpc2lvbj86IG51bWJlcjtcclxuICB0YXJnZXRTY2FsZT86IG51bWJlcjtcclxuICBkaWZmZXJlbmNlOiBzdHJpbmc7XHJcbiAgcmVzb2x2ZXJTZXNzaW9uSWQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCxcclxuICAgIENvcmVUYWJsZUNvbXBvbmVudCxcclxuICAgIENvcmVQYWdpbmF0aW9uQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZVRhYnNDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlQ29tcGFyZURiUGlwZWxpbmVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xCbG9jaycpIHRvb2xCbG9jayE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnY29uZmxpY3RUeXBlJykgY29uZmxpY3RUeXBlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdzb3VyY2VOdWxsYWJpbGl0eScpIHNvdXJjZU51bGxhYmlsaXR5ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCd0YXJnZXROdWxsYWJpbGl0eScpIHRhcmdldE51bGxhYmlsaXR5ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdzb3VyY2VJc1ByaW1hcnlLZXknKSBzb3VyY2VJc1ByaW1hcnlLZXkhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3RhcmdldElzUHJpbWFyeUtleScpIHRhcmdldElzUHJpbWFyeUtleSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGRhdGE6IElEYlN0cnVjdHVyZURpZmZlcmVuY2VbXSA9IFtdO1xyXG5cclxuICBzaG93Um93UmVzb2x2ZXJXaW5kb3chOiBib29sZWFuO1xyXG5cclxuICB0YWJIZWFkZXJzOiBzdHJpbmdbXSA9IFtcIkRldi1UZXN0LUxpdmVcIiwgXCJEZXYtRXh0ZW5kZWRcIl1cclxuXHJcbiAgY29sdW1uczogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXSA9IFtcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdpZCcsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnaWQnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICBoaWRkZW46IHRydWUsXHJcbiAgICAgIHdpZHRoOiAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ2RpZmZlcmVuY2UnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1Byb2JsZW0nLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAzMDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnY29uZmxpY3RUeXBlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdNYXJrZXInLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHdpZHRoOiA1MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdzb3VyY2VBbGlhcycsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnU291cmNlJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNjBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAndGFyZ2V0QWxpYXMnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1RhcmdldCcsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDYwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3RhYmxlTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFibGUnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAyMDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnY29sdW1uTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnQ29sdW1uJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogMjAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZVR5cGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSB0eXBlJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogMTAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZUlzUHJpbWFyeUtleScsXHJcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBpcyBQSycsXHJcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNjBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnc291cmNlTnVsbGFiaWxpdHknLFxyXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgIGNhcHRpb246ICdTb3VyY2UgbnVsbGFiaWxpdHknLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDcwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZVNpemUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBzaXplJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdzb3VyY2VQcmVjaXNpb24nLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBwcmVjaXNpb24nLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNTBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnc291cmNlU2NhbGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBzY2FsZScsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiA1MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRUeXBlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdUYXJnZXQgdHlwZScsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRJc1ByaW1hcnlLZXknLFxyXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgIGNhcHRpb246ICdUYXJnZXQgaXMgUEsnLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDYwXHJcbiAgICB9LFxyXG5cclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXROdWxsYWJpbGl0eScsXHJcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcclxuICAgICAgY2FwdGlvbjogJ1RhcmdldCBudWxsYWJpbGl0eScsXHJcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNzBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAndGFyZ2V0U2l6ZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2VyIHNpemUnLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogMTAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3RhcmdldFByZWNpc2lvbicsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2V0IHByZWNpc2lvbicsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiA1MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRTY2FsZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2V0IHNjYWxlJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDUwXHJcbiAgICB9LFxyXG4gIF1cclxuXHJcbiAgdGFibGVIZWlnaHQ6IG51bWJlciA9IDUwMDtcclxuXHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBkZWZhdWx0UmVxdWVzdDogSUNvbXBhcmVEYlN0cnVjdHVyZVJlcXVlc3QgPSB7XHJcbiAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgcGFnZVNpemU6IDUwXHJcbiAgfVxyXG5cclxuICByZXF1ZXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUNvbXBhcmVEYlN0cnVjdHVyZVJlcXVlc3Q+KHRoaXMuZGVmYXVsdFJlcXVlc3QpO1xyXG5cclxuICBjdXJyZW50UGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XHJcbiAgcGFnZVNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDUwKTtcclxuICBwYWdlQ291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gIHN1c3BlbmRDdXJyZW50UGFnZVN1YnNjcmlwdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgc3FsQ29tbWFuZDogc3RyaW5nID0gJyc7XHJcbiAgcmVzb2x2ZXJTZXNzaW9uSWQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBjb25mbGljdFRvdGFsOiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBvdmVycmlkZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtbHMpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaExpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0KCcvYXBpL1NxbFNlcnZlclBpcGVsaW5lL0NvbXBhcmVEYlN0cnVjdHVyZScsIHRoaXMucmVxdWVzdCQudmFsdWUpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGEgPSB4LmJvZHkuaW5uZXJCb2R5LmRhdGFcclxuICAgICAgICAgIHRoaXMucGFnZUNvdW50ID0gTWF0aC5jZWlsKHguYm9keS5pbm5lckJvZHkuY291bnQgLyB0aGlzLnBhZ2VTaXplJC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlJC5uZXh0KHguYm9keS5pbm5lckJvZHkucGFnZU51bWJlcik7XHJcbiAgICAgICAgICB0aGlzLmNvbmZsaWN0VG90YWwgPSB4LmJvZHkuaW5uZXJCb2R5LmNvdW50IHx8IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICBjb25zdCB0cnlGaWx0ZXJDb25mbGljdFR5cGUgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ2NvbmZsaWN0VHlwZScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJDb25mbGljdFR5cGUubGVuZ3RoKSB7XHJcbiAgICAgICAgdHJ5RmlsdGVyQ29uZmxpY3RUeXBlWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5jb25mbGljdFR5cGU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyRGlmZmVyZW5jZSA9IHRoaXMuY29sdW1ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSAnZGlmZmVyZW5jZScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJEaWZmZXJlbmNlLmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlckRpZmZlcmVuY2VbMF0udGVtcGxhdGVSZWYgPSB0aGlzLnRvb2xCbG9jaztcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0cnlGaWx0ZXJTb3VyY2VJc1ByaW1hcnlLZXkgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ3NvdXJjZUlzUHJpbWFyeUtleScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJTb3VyY2VJc1ByaW1hcnlLZXkubGVuZ3RoKSB7XHJcbiAgICAgICAgdHJ5RmlsdGVyU291cmNlSXNQcmltYXJ5S2V5WzBdLnRlbXBsYXRlUmVmID0gdGhpcy5zb3VyY2VJc1ByaW1hcnlLZXk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyVGFyZ2V0SXNQcmltYXJ5S2V5ID0gdGhpcy5jb2x1bW5zLmZpbHRlcih4ID0+IHguZmllbGQgPT09ICd0YXJnZXRJc1ByaW1hcnlLZXknKTtcclxuICAgICAgaWYgKCEhdHJ5RmlsdGVyVGFyZ2V0SXNQcmltYXJ5S2V5Lmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlclRhcmdldElzUHJpbWFyeUtleVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMudGFyZ2V0SXNQcmltYXJ5S2V5O1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRyeUZpbHRlclNvdXJjZU51bGxhYmlsaXR5ID0gdGhpcy5jb2x1bW5zLmZpbHRlcih4ID0+IHguZmllbGQgPT09ICdzb3VyY2VOdWxsYWJpbGl0eScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJTb3VyY2VOdWxsYWJpbGl0eS5sZW5ndGgpIHtcclxuICAgICAgICB0cnlGaWx0ZXJTb3VyY2VOdWxsYWJpbGl0eVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuc291cmNlTnVsbGFiaWxpdHk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyVGFyZ2V0TnVsbGFiaWxpdHkgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ3RhcmdldE51bGxhYmlsaXR5Jyk7XHJcbiAgICAgIGlmICghIXRyeUZpbHRlclRhcmdldE51bGxhYmlsaXR5Lmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlclRhcmdldE51bGxhYmlsaXR5WzBdLnRlbXBsYXRlUmVmID0gdGhpcy50YXJnZXROdWxsYWJpbGl0eTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy50YWJsZUhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIDYwIC0gNTAgLSA0NiAtIDMwIC0gNDU7XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJlcXVlc3QkLnBpcGUoXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJlLCBjdXIpID0+IEpTT04uc3RyaW5naWZ5KHByZSkgPT09IEpTT04uc3RyaW5naWZ5KGN1cikpLFxyXG4gICAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZyA9IHRydWUpLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKHggPT4gdGhpcy5hcHBTZXJ2aWNlLnBvc3QoJy9hcGkvU3FsU2VydmVyUGlwZWxpbmUvQ29tcGFyZURiU3RydWN0dXJlJywgeCkpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0geC5ib2R5LmlubmVyQm9keS5kYXRhXHJcbiAgICAgICAgICAgIHRoaXMucGFnZUNvdW50ID0gTWF0aC5jZWlsKHguYm9keS5pbm5lckJvZHkuY291bnQgLyB0aGlzLnBhZ2VTaXplJC52YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UkLm5leHQoeC5ib2R5LmlubmVyQm9keS5wYWdlTnVtYmVyKTtcclxuICAgICAgICAgICAgdGhpcy5jb25mbGljdFRvdGFsID0geC5ib2R5LmlubmVyQm9keS5jb3VudCB8fCAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5ld1JlcXVlc3Q6IElDb21wYXJlRGJTdHJ1Y3R1cmVSZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLnJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgICAgICBwYWdlTnVtYmVyOiB4XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnJlcXVlc3QkLm5leHQoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuZXdSZXF1ZXN0KSkpXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvblNlYXJjaGluZyhlOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbHRlcmVkID0gZS5maWx0ZXIoeCA9PiAhIXguc2VhcmNoRm9yLmxlbmd0aClcclxuICAgIHRoaXMucmVxdWVzdCQubmV4dCh7XHJcbiAgICAgIC4uLnRoaXMucmVxdWVzdCQudmFsdWUsXHJcbiAgICAgIGZpbHRlcjogZmlsdGVyZWRcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvcGVuUm93UmVzb2x2ZXIoZXZlbnQ6IGFueSwgY29udGV4dDogYW55KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoJy9hcGkvU3FsU2VydmVyUGlwZWxpbmUvR2VuZXJhdGVDb25mbGljdFJlc29sdmVyQ29tbWFuZCcsIGNvbnRleHQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSb3dSZXNvbHZlcldpbmRvdyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnJlc29sdmVyU2Vzc2lvbklkID0geC5ib2R5LmlubmVyQm9keS5yZXNvbHZlclNlc3Npb25JZFxyXG4gICAgICAgICAgdGhpcy5zcWxDb21tYW5kID0gKHguYm9keS5pbm5lckJvZHkuc3FsQ29tbWFuZCBhcyBzdHJpbmcpLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjbG9zZVJvd1Jlc29sdmVyKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1Jvd1Jlc29sdmVyV2luZG93ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZXNvbHZlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoJy9hcGkvU3FsU2VydmVyUGlwZWxpbmUvUnVuQ29uZmxpY3RSZXNvbHZlckNvbW1hbmQnLCB7XHJcbiAgICAgICAgcmVzb2x2ZXJTZXNzaW9uSWQ6IHRoaXMucmVzb2x2ZXJTZXNzaW9uSWQsXHJcbiAgICAgICAgc3FsQ29tbWFuZDogdGhpcy5zcWxDb21tYW5kXHJcbiAgICAgIH0pLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSb3dSZXNvbHZlcldpbmRvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIG9uQ29yZVRhYnNIZWFkZXJDbGljayhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQuaW5kZXggPT09IDApIHtcclxuICAgICAgY29uc3QgbmV3UmVxdWVzdDogSUNvbXBhcmVEYlN0cnVjdHVyZVJlcXVlc3QgPSB7XHJcbiAgICAgICAgLi4udGhpcy5yZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICBmb3JFeHRlbmRlZDogZmFsc2VcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlcXVlc3QkLm5leHQobmV3UmVxdWVzdCk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmluZGV4ID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IG5ld1JlcXVlc3Q6IElDb21wYXJlRGJTdHJ1Y3R1cmVSZXF1ZXN0ID0ge1xyXG4gICAgICAgIC4uLnRoaXMucmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgZm9yRXh0ZW5kZWQ6IHRydWVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlcXVlc3QkLm5leHQobmV3UmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUtY29udGFpbmVyXCI+XHJcbiAgICA8Y29yZS1wYWdlLWhlYWRlciBbdGl0bGVdPVwiJ0RCIFNUUlVDVFVSRSBDT01QQVJFJ1wiXHJcbiAgICAgICAgW2hpZGVCdXR0b25Hcm91cF09XCJ0cnVlXCI+PC9jb3JlLXBhZ2UtaGVhZGVyPlxyXG5cclxuICAgIDxjb3JlLXRhYnMgW2hlYWRlcnNdPVwidGFiSGVhZGVyc1wiIFtjb250ZW50c109XCJbXVwiIFtoZWlnaHRdPVwiNDVcIiBbaGVhZGVyTGluZUhlaWdodF09XCI0NVwiXHJcbiAgICAgICAgKG9uSGVhZGVyQ2xpY2spPVwib25Db3JlVGFic0hlYWRlckNsaWNrKCRldmVudClcIj5cclxuICAgIDwvY29yZS10YWJzPlxyXG5cclxuXHJcbiAgICA8Y29yZS10YWJsZSBbY29sdW1uc109XCJjb2x1bW5zXCIgW2hlaWdodF09XCJ0YWJsZUhlaWdodFwiIFtkYXRhXT1cImRhdGFcIiBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICBbYXV0b0NvbHVtbkZpdEF2YWlsYWJsZVNwYWNlXT1cImZhbHNlXCIgW2Zyb3plbl09XCIzXCIgW2xhenlMb2FkaW5nXT1cInRydWVcIiBbaGVhZGVyRmlyc3RSb3dIZWlnaHRdPVwiODBcIlxyXG4gICAgICAgIChvblNlYXJjaGluZyk9XCJvblNlYXJjaGluZygkZXZlbnQpXCI+PC9jb3JlLXRhYmxlPlxyXG4gICAgPGRpdiBjbGFzcz1cImgxNVwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBkLWZsZXgtYmV0d2VlblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25mbGljdC10b3RhbFwiIFtjbGFzcy5lcnJvcl09XCIhIWNvbmZsaWN0VG90YWxcIj5cclxuICAgICAgICAgICAge3sgISFjb25mbGljdFRvdGFsID8gY29uZmxpY3RUb3RhbCArICcgY29uZmxpY3RzIGZvdW5kIScgOiAnTm8gY29uZmxpY3QgZm91bmQnIH19IFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxjb3JlLXBhZ2luYXRpb24gWyRoZWlnaHRdPVwiNDZcIiBbJGN1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlJFwiIFskcGFnZUNvdW50XT1cInBhZ2VDb3VudFwiIFskbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgWyRiYWNrZ3JvdW5kXT1cIicjODQ4NDg0J1wiIFskZml4ZWRQYWdlU2l6ZV09XCIyMFwiXHJcbiAgICAgICAgICAgIFskc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uXT1cInN1c3BlbmRDdXJyZW50UGFnZVN1YnNjcmlwdGlvbiRcIj48L2NvcmUtcGFnaW5hdGlvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAoc2hvd1Jvd1Jlc29sdmVyV2luZG93KSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudC1yb290XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXJlc29sdmVyLXdpbmRvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCInUkVTT0xWRVIgV0lORE9XJ1wiIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNsb3NlLWljb24gcG9pbnRlciBmZWF0aGVyLXggZnMyNFwiIChjbGljayk9XCJjbG9zZVJvd1Jlc29sdmVyKCRldmVudClcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3Jvd3NdPVwiJzEwJ1wiIHN0eWxlPVwiaGVpZ2h0OiA0MDBweDsgcGFkZGluZzogMTVweDtcIiBkaXNhYmxlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc3FsQ29tbWFuZCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJyZXNvbHZlKCRldmVudClcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+UnVuPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNjb25mbGljdFR5cGUgbGV0LWNvbnRleHQ9XCJjb250ZXh0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZsaWN0LXR5cGUtd3JhcHBlciBkLWZsZXggZC1mbGV4LWJldHdlZW5cIiBbYXBwVG9vbHRpcF09XCJjb250ZXh0LmNvbmZsaWN0VHlwZVwiIFtzaG93QW55d2F5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIEBzd2l0Y2ggKGNvbnRleHQuY29uZmxpY3RUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ1RNSVQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLWxheW91dCAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NNSVQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLXNpZGViYXIgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDUEtNJykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCInZmVhdGhlci16YXAgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDVE0nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLXR5cGUgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDU00nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLWxheWVycyAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NOTScpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZlYXRoZXItZHJvcGxldCAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NQU00nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLW1vdmUgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3Rvb2xCbG9jayBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMgaW50ZXItZm9udCBkLWZsZXggZC1mbGV4LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLXdyYXBwZXJcIiBbYXBwVG9vbHRpcF09XCInUmVzb2x2ZSdcIiBbcG9zaXRpb25dPVwiJ3JpZ2h0J1wiIFtzaG93QW55d2F5XT1cInRydWVcIiAoY2xpY2spPVwib3BlblJvd1Jlc29sdmVyKCRldmVudCwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1wbGF5IGZzMjRcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3Bhbj57eyBjb250ZXh0LmRpZmZlcmVuY2UgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNzb3VyY2VOdWxsYWJpbGl0eSBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8Y29yZS1jaGVja2JveCBbbmdNb2RlbF09XCIhIWNvbnRleHQuc291cmNlTnVsbGFiaWxpdHlcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RhcmdldE51bGxhYmlsaXR5IGxldC1jb250ZXh0PVwiY29udGV4dFwiPlxyXG4gICAgICAgIDxjb3JlLWNoZWNrYm94IFtuZ01vZGVsXT1cIiEhY29udGV4dC50YXJnZXROdWxsYWJpbGl0eVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc291cmNlSXNQcmltYXJ5S2V5IGxldC1jb250ZXh0PVwiY29udGV4dFwiPlxyXG4gICAgICAgIDxjb3JlLWNoZWNrYm94IFtuZ01vZGVsXT1cIiEhY29udGV4dC5zb3VyY2VJc1ByaW1hcnlLZXlcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RhcmdldElzUHJpbWFyeUtleSBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8Y29yZS1jaGVja2JveCBbbmdNb2RlbF09XCIhIWNvbnRleHQudGFyZ2V0SXNQcmltYXJ5S2V5XCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj4iXX0=
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUvY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUvY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDMUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQzdILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FB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QUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ08saUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNHLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ0Usa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1jb21wb25lbnQvYmFzZS9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtdGFibGUvY29yZS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1wYWdpbmF0aW9uL2NvcmUtcGFnaW5hdGlvbi9jb3JlLXBhZ2luYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZUJ1dHRvbkdyb3VwVm5zQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3gvY29yZS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZVRhYnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLXRhYnMvY29yZS10YWJzL2NvcmUtdGFicy5jb21wb25lbnQnO1xyXG5cclxuaW50ZXJmYWNlIElDb21wYXJlRGJTdHJ1Y3R1cmVGaWx0ZXJJdGVtIHtcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIHNlYXJjaEZvcjogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSUNvbXBhcmVEYlN0cnVjdHVyZVJlcXVlc3Qge1xyXG4gIGZpbHRlcj86IElDb21wYXJlRGJTdHJ1Y3R1cmVGaWx0ZXJJdGVtW107XHJcbiAgcGFnZU51bWJlcjogbnVtYmVyO1xyXG4gIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgZm9yRXh0ZW5kZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSURiU3RydWN0dXJlRGlmZmVyZW5jZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBzb3VyY2VBbGlhczogc3RyaW5nO1xyXG4gIHRhcmdldEFsaWFzOiBzdHJpbmc7XHJcbiAgdGFibGVOYW1lOiBzdHJpbmc7XHJcbiAgY29sdW1uTmFtZTogc3RyaW5nO1xyXG4gIGNvbmZsaWN0VHlwZTogc3RyaW5nO1xyXG4gIHNvdXJjZVR5cGU/OiBzdHJpbmc7XHJcbiAgc291cmNlSXNQcmltYXJ5S2V5PzogYm9vbGVhbjtcclxuICBzb3VyY2VTaXplPzogbnVtYmVyO1xyXG4gIHNvdXJjZU51bGxhYmlsaXR5PzogYm9vbGVhbjtcclxuICBzb3VyY2VQcmVjaXNpb24/OiBudW1iZXI7XHJcbiAgc291cmNlU2NhbGU/OiBudW1iZXI7XHJcbiAgdGFyZ2V0VHlwZT86IHN0cmluZztcclxuICB0YXJnZXRJc1ByaW1hcnlLZXk/OiBib29sZWFuO1xyXG4gIHRhcmdldFNpemU/OiBudW1iZXI7XHJcbiAgdGFyZ2V0TnVsbGFiaWxpdHk/OiBib29sZWFuO1xyXG4gIHRhcmdldFByZWNpc2lvbj86IG51bWJlcjtcclxuICB0YXJnZXRTY2FsZT86IG51bWJlcjtcclxuICBkaWZmZXJlbmNlOiBzdHJpbmc7XHJcbiAgcmVzb2x2ZXJTZXNzaW9uSWQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1jb21wYXJlLWRiLXBpcGVsaW5lJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCxcclxuICAgIENvcmVUYWJsZUNvbXBvbmVudCxcclxuICAgIENvcmVQYWdpbmF0aW9uQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZVRhYnNDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlQ29tcGFyZURiUGlwZWxpbmVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2xCbG9jaycpIHRvb2xCbG9jayE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnY29uZmxpY3RUeXBlJykgY29uZmxpY3RUeXBlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdzb3VyY2VOdWxsYWJpbGl0eScpIHNvdXJjZU51bGxhYmlsaXR5ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCd0YXJnZXROdWxsYWJpbGl0eScpIHRhcmdldE51bGxhYmlsaXR5ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdzb3VyY2VJc1ByaW1hcnlLZXknKSBzb3VyY2VJc1ByaW1hcnlLZXkhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ3RhcmdldElzUHJpbWFyeUtleScpIHRhcmdldElzUHJpbWFyeUtleSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGRhdGE6IElEYlN0cnVjdHVyZURpZmZlcmVuY2VbXSA9IFtdO1xyXG5cclxuICBzaG93Um93UmVzb2x2ZXJXaW5kb3chOiBib29sZWFuO1xyXG5cclxuICB0YWJIZWFkZXJzOiBzdHJpbmdbXSA9IFtcIkRldi1UZXN0LUxpdmVcIiwgXCJEZXYtRXh0ZW5kZWRcIl1cclxuXHJcbiAgY29sdW1uczogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXSA9IFtcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdpZCcsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnaWQnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICBoaWRkZW46IHRydWUsXHJcbiAgICAgIHdpZHRoOiAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ2RpZmZlcmVuY2UnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1Byb2JsZW0nLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAzMDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnY29uZmxpY3RUeXBlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdNYXJrZXInLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHdpZHRoOiA1MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdzb3VyY2VBbGlhcycsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnU291cmNlJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNjBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAndGFyZ2V0QWxpYXMnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1RhcmdldCcsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDYwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3RhYmxlTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFibGUnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAyMDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnY29sdW1uTmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnQ29sdW1uJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogMjAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZVR5cGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSB0eXBlJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogMTAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZUlzUHJpbWFyeUtleScsXHJcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBpcyBQSycsXHJcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNjBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnc291cmNlTnVsbGFiaWxpdHknLFxyXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgIGNhcHRpb246ICdTb3VyY2UgbnVsbGFiaWxpdHknLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDcwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3NvdXJjZVNpemUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBzaXplJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICdzb3VyY2VQcmVjaXNpb24nLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBwcmVjaXNpb24nLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNTBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAnc291cmNlU2NhbGUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgY2FwdGlvbjogJ1NvdXJjZSBzY2FsZScsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiA1MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRUeXBlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGNhcHRpb246ICdUYXJnZXQgdHlwZScsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRJc1ByaW1hcnlLZXknLFxyXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgIGNhcHRpb246ICdUYXJnZXQgaXMgUEsnLFxyXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDYwXHJcbiAgICB9LFxyXG5cclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXROdWxsYWJpbGl0eScsXHJcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcclxuICAgICAgY2FwdGlvbjogJ1RhcmdldCBudWxsYWJpbGl0eScsXHJcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNzBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGZpZWxkOiAndGFyZ2V0U2l6ZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2VyIHNpemUnLFxyXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgc29ydERpc2FibGVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogMTAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3RhcmdldFByZWNpc2lvbicsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2V0IHByZWNpc2lvbicsXHJcbiAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICBzb3J0RGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiA1MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgZmllbGQ6ICd0YXJnZXRTY2FsZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBjYXB0aW9uOiAnVGFyZ2V0IHNjYWxlJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHNvcnREaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDUwXHJcbiAgICB9LFxyXG4gIF1cclxuXHJcbiAgdGFibGVIZWlnaHQ6IG51bWJlciA9IDUwMDtcclxuXHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBkZWZhdWx0UmVxdWVzdDogSUNvbXBhcmVEYlN0cnVjdHVyZVJlcXVlc3QgPSB7XHJcbiAgICBwYWdlTnVtYmVyOiAxLFxyXG4gICAgcGFnZVNpemU6IDUwXHJcbiAgfVxyXG5cclxuICByZXF1ZXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUNvbXBhcmVEYlN0cnVjdHVyZVJlcXVlc3Q+KHRoaXMuZGVmYXVsdFJlcXVlc3QpO1xyXG5cclxuICBjdXJyZW50UGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XHJcbiAgcGFnZVNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDUwKTtcclxuICBwYWdlQ291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gIHN1c3BlbmRDdXJyZW50UGFnZVN1YnNjcmlwdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgc3FsQ29tbWFuZDogc3RyaW5nID0gJyc7XHJcbiAgcmVzb2x2ZXJTZXNzaW9uSWQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBjb25mbGljdFRvdGFsOiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBvdmVycmlkZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtbHMpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaExpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0KCcvYXBpL1NxbFNlcnZlclBpcGVsaW5lL0NvbXBhcmVEYlN0cnVjdHVyZScsIHRoaXMucmVxdWVzdCQudmFsdWUpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGEgPSB4LmJvZHkuaW5uZXJCb2R5LmRhdGFcclxuICAgICAgICAgIHRoaXMucGFnZUNvdW50ID0gTWF0aC5jZWlsKHguYm9keS5pbm5lckJvZHkuY291bnQgLyB0aGlzLnBhZ2VTaXplJC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlJC5uZXh0KHguYm9keS5pbm5lckJvZHkucGFnZU51bWJlcik7XHJcbiAgICAgICAgICB0aGlzLmNvbmZsaWN0VG90YWwgPSB4LmJvZHkuaW5uZXJCb2R5LmNvdW50IHx8IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICBjb25zdCB0cnlGaWx0ZXJDb25mbGljdFR5cGUgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ2NvbmZsaWN0VHlwZScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJDb25mbGljdFR5cGUubGVuZ3RoKSB7XHJcbiAgICAgICAgdHJ5RmlsdGVyQ29uZmxpY3RUeXBlWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5jb25mbGljdFR5cGU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyRGlmZmVyZW5jZSA9IHRoaXMuY29sdW1ucy5maWx0ZXIoeCA9PiB4LmZpZWxkID09PSAnZGlmZmVyZW5jZScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJEaWZmZXJlbmNlLmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlckRpZmZlcmVuY2VbMF0udGVtcGxhdGVSZWYgPSB0aGlzLnRvb2xCbG9jaztcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0cnlGaWx0ZXJTb3VyY2VJc1ByaW1hcnlLZXkgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ3NvdXJjZUlzUHJpbWFyeUtleScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJTb3VyY2VJc1ByaW1hcnlLZXkubGVuZ3RoKSB7XHJcbiAgICAgICAgdHJ5RmlsdGVyU291cmNlSXNQcmltYXJ5S2V5WzBdLnRlbXBsYXRlUmVmID0gdGhpcy5zb3VyY2VJc1ByaW1hcnlLZXk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyVGFyZ2V0SXNQcmltYXJ5S2V5ID0gdGhpcy5jb2x1bW5zLmZpbHRlcih4ID0+IHguZmllbGQgPT09ICd0YXJnZXRJc1ByaW1hcnlLZXknKTtcclxuICAgICAgaWYgKCEhdHJ5RmlsdGVyVGFyZ2V0SXNQcmltYXJ5S2V5Lmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlclRhcmdldElzUHJpbWFyeUtleVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMudGFyZ2V0SXNQcmltYXJ5S2V5O1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRyeUZpbHRlclNvdXJjZU51bGxhYmlsaXR5ID0gdGhpcy5jb2x1bW5zLmZpbHRlcih4ID0+IHguZmllbGQgPT09ICdzb3VyY2VOdWxsYWJpbGl0eScpO1xyXG4gICAgICBpZiAoISF0cnlGaWx0ZXJTb3VyY2VOdWxsYWJpbGl0eS5sZW5ndGgpIHtcclxuICAgICAgICB0cnlGaWx0ZXJTb3VyY2VOdWxsYWJpbGl0eVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuc291cmNlTnVsbGFiaWxpdHk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdHJ5RmlsdGVyVGFyZ2V0TnVsbGFiaWxpdHkgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKHggPT4geC5maWVsZCA9PT0gJ3RhcmdldE51bGxhYmlsaXR5Jyk7XHJcbiAgICAgIGlmICghIXRyeUZpbHRlclRhcmdldE51bGxhYmlsaXR5Lmxlbmd0aCkge1xyXG4gICAgICAgIHRyeUZpbHRlclRhcmdldE51bGxhYmlsaXR5WzBdLnRlbXBsYXRlUmVmID0gdGhpcy50YXJnZXROdWxsYWJpbGl0eTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy50YWJsZUhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIDYwIC0gNTAgLSA0NiAtIDMwIC0gNDU7XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJlcXVlc3QkLnBpcGUoXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJlLCBjdXIpID0+IEpTT04uc3RyaW5naWZ5KHByZSkgPT09IEpTT04uc3RyaW5naWZ5KGN1cikpLFxyXG4gICAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZyA9IHRydWUpLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKHggPT4gdGhpcy5hcHBTZXJ2aWNlLnBvc3QoJy9hcGkvU3FsU2VydmVyUGlwZWxpbmUvQ29tcGFyZURiU3RydWN0dXJlJywgeCkpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhID0geC5ib2R5LmlubmVyQm9keS5kYXRhXHJcbiAgICAgICAgICAgIHRoaXMucGFnZUNvdW50ID0gTWF0aC5jZWlsKHguYm9keS5pbm5lckJvZHkuY291bnQgLyB0aGlzLnBhZ2VTaXplJC52YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UkLm5leHQoeC5ib2R5LmlubmVyQm9keS5wYWdlTnVtYmVyKTtcclxuICAgICAgICAgICAgdGhpcy5jb25mbGljdFRvdGFsID0geC5ib2R5LmlubmVyQm9keS5jb3VudCB8fCAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5ld1JlcXVlc3Q6IElDb21wYXJlRGJTdHJ1Y3R1cmVSZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLnJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgICAgICBwYWdlTnVtYmVyOiB4XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnJlcXVlc3QkLm5leHQoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuZXdSZXF1ZXN0KSkpXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvblNlYXJjaGluZyhlOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbHRlcmVkID0gZS5maWx0ZXIoeCA9PiAhIXguc2VhcmNoRm9yLmxlbmd0aClcclxuICAgIHRoaXMucmVxdWVzdCQubmV4dCh7XHJcbiAgICAgIC4uLnRoaXMucmVxdWVzdCQudmFsdWUsXHJcbiAgICAgIGZpbHRlcjogZmlsdGVyZWRcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvcGVuUm93UmVzb2x2ZXIoZXZlbnQ6IGFueSwgY29udGV4dDogYW55KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoJy9hcGkvU3FsU2VydmVyUGlwZWxpbmUvR2VuZXJhdGVDb25mbGljdFJlc29sdmVyQ29tbWFuZCcsIGNvbnRleHQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSb3dSZXNvbHZlcldpbmRvdyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnJlc29sdmVyU2Vzc2lvbklkID0geC5ib2R5LmlubmVyQm9keS5yZXNvbHZlclNlc3Npb25JZFxyXG4gICAgICAgICAgdGhpcy5zcWxDb21tYW5kID0gKHguYm9keS5pbm5lckJvZHkuc3FsQ29tbWFuZCBhcyBzdHJpbmcpLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjbG9zZVJvd1Jlc29sdmVyKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd1Jvd1Jlc29sdmVyV2luZG93ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZXNvbHZlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoJy9hcGkvU3FsU2VydmVyUGlwZWxpbmUvUnVuQ29uZmxpY3RSZXNvbHZlckNvbW1hbmQnLCB7XHJcbiAgICAgICAgcmVzb2x2ZXJTZXNzaW9uSWQ6IHRoaXMucmVzb2x2ZXJTZXNzaW9uSWQsXHJcbiAgICAgICAgc3FsQ29tbWFuZDogdGhpcy5zcWxDb21tYW5kXHJcbiAgICAgIH0pLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSb3dSZXNvbHZlcldpbmRvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIG9uQ29yZVRhYnNIZWFkZXJDbGljayhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQuaW5kZXggPT09IDApIHtcclxuICAgICAgY29uc3QgbmV3UmVxdWVzdDogSUNvbXBhcmVEYlN0cnVjdHVyZVJlcXVlc3QgPSB7XHJcbiAgICAgICAgLi4udGhpcy5yZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICBmb3JFeHRlbmRlZDogZmFsc2VcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlcXVlc3QkLm5leHQobmV3UmVxdWVzdCk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmluZGV4ID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IG5ld1JlcXVlc3Q6IElDb21wYXJlRGJTdHJ1Y3R1cmVSZXF1ZXN0ID0ge1xyXG4gICAgICAgIC4uLnRoaXMucmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgZm9yRXh0ZW5kZWQ6IHRydWVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlcXVlc3QkLm5leHQobmV3UmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb3JlLWNvbXBhcmUtZGItcGlwZWxpbmUtY29udGFpbmVyXCI+XHJcbiAgICA8Y29yZS1wYWdlLWhlYWRlciBbdGl0bGVdPVwiJ0RCIFNUUlVDVFVSRSBDT01QQVJFJ1wiXHJcbiAgICAgICAgW2hpZGVCdXR0b25Hcm91cF09XCJ0cnVlXCI+PC9jb3JlLXBhZ2UtaGVhZGVyPlxyXG5cclxuICAgIDxjb3JlLXRhYnMgW2hlYWRlcnNdPVwidGFiSGVhZGVyc1wiIFtjb250ZW50c109XCJbXVwiIFtoZWlnaHRdPVwiNDVcIiBbaGVhZGVyTGluZUhlaWdodF09XCI0NVwiXHJcbiAgICAgICAgKG9uSGVhZGVyQ2xpY2spPVwib25Db3JlVGFic0hlYWRlckNsaWNrKCRldmVudClcIj5cclxuICAgIDwvY29yZS10YWJzPlxyXG5cclxuXHJcbiAgICA8Y29yZS10YWJsZSBbY29sdW1uc109XCJjb2x1bW5zXCIgW2hlaWdodF09XCJ0YWJsZUhlaWdodFwiIFtkYXRhXT1cImRhdGFcIiBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICBbYXV0b0NvbHVtbkZpdEF2YWlsYWJsZVNwYWNlXT1cImZhbHNlXCIgW2Zyb3plbl09XCIzXCIgW2xhenlMb2FkaW5nXT1cInRydWVcIiBbaGVhZGVyRmlyc3RSb3dIZWlnaHRdPVwiODBcIlxyXG4gICAgICAgIChvblNlYXJjaGluZyk9XCJvblNlYXJjaGluZygkZXZlbnQpXCI+PC9jb3JlLXRhYmxlPlxyXG4gICAgPGRpdiBjbGFzcz1cImgxNVwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBkLWZsZXgtYmV0d2VlblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25mbGljdC10b3RhbFwiIFtjbGFzcy5lcnJvcl09XCIhIWNvbmZsaWN0VG90YWxcIj5cclxuICAgICAgICAgICAge3sgISFjb25mbGljdFRvdGFsID8gY29uZmxpY3RUb3RhbCArICcgY29uZmxpY3RzIGZvdW5kIScgOiAnTm8gY29uZmxpY3QgZm91bmQnIH19IFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxjb3JlLXBhZ2luYXRpb24gWyRoZWlnaHRdPVwiNDZcIiBbJGN1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlJFwiIFskcGFnZUNvdW50XT1cInBhZ2VDb3VudFwiIFskbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgWyRiYWNrZ3JvdW5kXT1cIicjODQ4NDg0J1wiIFskZml4ZWRQYWdlU2l6ZV09XCIyMFwiXHJcbiAgICAgICAgICAgIFskc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uXT1cInN1c3BlbmRDdXJyZW50UGFnZVN1YnNjcmlwdGlvbiRcIj48L2NvcmUtcGFnaW5hdGlvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAoc2hvd1Jvd1Jlc29sdmVyV2luZG93KSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudC1yb290XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXJlc29sdmVyLXdpbmRvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCInUkVTT0xWRVIgV0lORE9XJ1wiIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNsb3NlLWljb24gcG9pbnRlciBmZWF0aGVyLXggZnMyNFwiIChjbGljayk9XCJjbG9zZVJvd1Jlc29sdmVyKCRldmVudClcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW3Jvd3NdPVwiJzEwJ1wiIHN0eWxlPVwiaGVpZ2h0OiA0MDBweDsgcGFkZGluZzogMTVweDtcIiBkaXNhYmxlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc3FsQ29tbWFuZCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJyZXNvbHZlKCRldmVudClcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+UnVuPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNjb25mbGljdFR5cGUgbGV0LWNvbnRleHQ9XCJjb250ZXh0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZsaWN0LXR5cGUtd3JhcHBlciBkLWZsZXggZC1mbGV4LWJldHdlZW5cIiBbYXBwVG9vbHRpcF09XCJjb250ZXh0LmNvbmZsaWN0VHlwZVwiIFtzaG93QW55d2F5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIEBzd2l0Y2ggKGNvbnRleHQuY29uZmxpY3RUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ1RNSVQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLWxheW91dCAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NNSVQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLXNpZGViYXIgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDUEtNJykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCInZmVhdGhlci16YXAgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDVE0nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLXR5cGUgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdDU00nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLWxheWVycyAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NOTScpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZlYXRoZXItZHJvcGxldCAnICsgY29udGV4dC5jb25mbGljdFR5cGVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ0NQU00nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidmZWF0aGVyLW1vdmUgJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdSVCcpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZlYXRoZXItdHJhc2ggJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGNhc2UgKCdSQycpIHtcclxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZlYXRoZXItdHJhc2ggJyArIGNvbnRleHQuY29uZmxpY3RUeXBlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3Rvb2xCbG9jayBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHMgaW50ZXItZm9udCBkLWZsZXggZC1mbGV4LXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLXdyYXBwZXJcIiBbYXBwVG9vbHRpcF09XCInUmVzb2x2ZSdcIiBbcG9zaXRpb25dPVwiJ3JpZ2h0J1wiIFtzaG93QW55d2F5XT1cInRydWVcIiAoY2xpY2spPVwib3BlblJvd1Jlc29sdmVyKCRldmVudCwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1wbGF5IGZzMjRcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3Bhbj57eyBjb250ZXh0LmRpZmZlcmVuY2UgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNzb3VyY2VOdWxsYWJpbGl0eSBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8Y29yZS1jaGVja2JveCBbbmdNb2RlbF09XCIhIWNvbnRleHQuc291cmNlTnVsbGFiaWxpdHlcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RhcmdldE51bGxhYmlsaXR5IGxldC1jb250ZXh0PVwiY29udGV4dFwiPlxyXG4gICAgICAgIDxjb3JlLWNoZWNrYm94IFtuZ01vZGVsXT1cIiEhY29udGV4dC50YXJnZXROdWxsYWJpbGl0eVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc291cmNlSXNQcmltYXJ5S2V5IGxldC1jb250ZXh0PVwiY29udGV4dFwiPlxyXG4gICAgICAgIDxjb3JlLWNoZWNrYm94IFtuZ01vZGVsXT1cIiEhY29udGV4dC5zb3VyY2VJc1ByaW1hcnlLZXlcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvY29yZS1jaGVja2JveD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RhcmdldElzUHJpbWFyeUtleSBsZXQtY29udGV4dD1cImNvbnRleHRcIj5cclxuICAgICAgICA8Y29yZS1jaGVja2JveCBbbmdNb2RlbF09XCIhIWNvbnRleHQudGFyZ2V0SXNQcmltYXJ5S2V5XCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj4iXX0=
@@ -25832,7 +25832,7 @@ class CoreCompareDbPipelineComponent extends BaseComponent {
25832
25832
  }
25833
25833
  }
25834
25834
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: CoreCompareDbPipelineComponent, deps: [{ token: MultiLanguageService }, { token: AppService }], target: i0.ɵɵFactoryTarget.Component }); }
25835
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: CoreCompareDbPipelineComponent, isStandalone: true, selector: "core-compare-db-pipeline", viewQueries: [{ propertyName: "toolBlock", first: true, predicate: ["toolBlock"], descendants: true }, { propertyName: "conflictType", first: true, predicate: ["conflictType"], descendants: true }, { propertyName: "sourceNullability", first: true, predicate: ["sourceNullability"], descendants: true }, { propertyName: "targetNullability", first: true, predicate: ["targetNullability"], descendants: true }, { propertyName: "sourceIsPrimaryKey", first: true, predicate: ["sourceIsPrimaryKey"], descendants: true }, { propertyName: "targetIsPrimaryKey", first: true, predicate: ["targetIsPrimaryKey"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"core-compare-db-pipeline-container\">\r\n <core-page-header [title]=\"'DB STRUCTURE COMPARE'\"\r\n [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[]\" [height]=\"45\" [headerLineHeight]=\"45\"\r\n (onHeaderClick)=\"onCoreTabsHeaderClick($event)\">\r\n </core-tabs>\r\n\r\n\r\n <core-table [columns]=\"columns\" [height]=\"tableHeight\" [data]=\"data\" [loading]=\"loading\"\r\n [autoColumnFitAvailableSpace]=\"false\" [frozen]=\"3\" [lazyLoading]=\"true\" [headerFirstRowHeight]=\"80\"\r\n (onSearching)=\"onSearching($event)\"></core-table>\r\n <div class=\"h15\"></div>\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <div class=\"conflict-total\" [class.error]=\"!!conflictTotal\">\r\n {{ !!conflictTotal ? conflictTotal + ' conflicts found!' : 'No conflict found' }} \r\n </div>\r\n <core-pagination [$height]=\"46\" [$currentPage]=\"currentPage$\" [$pageCount]=\"pageCount\" [$loading]=\"loading\"\r\n [$background]=\"'#848484'\" [$fixedPageSize]=\"20\"\r\n [$suspendCurrentPageSubscription]=\"suspendCurrentPageSubscription$\"></core-pagination>\r\n </div>\r\n\r\n @if (showRowResolverWindow) {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"row-resolver-window\">\r\n <core-page-header [title]=\"'RESOLVER WINDOW'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <i class=\"close-icon pointer feather-x fs24\" (click)=\"closeRowResolver($event)\"></i>\r\n <textarea class=\"form-control\" [rows]=\"'10'\" style=\"height: 400px; padding: 15px;\" disabled>\r\n {{ sqlCommand }}\r\n </textarea>\r\n <button class=\"btn btn-primary\" (click)=\"resolve($event)\" style=\"margin-top: 15px;\">Run</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #conflictType let-context=\"context\">\r\n <div class=\"conflict-type-wrapper d-flex d-flex-between\" [appTooltip]=\"context.conflictType\" [showAnyway]=\"true\">\r\n \r\n @switch (context.conflictType) {\r\n @case ('TMIT') {\r\n <i [class]=\"'feather-layout ' + context.conflictType\"></i>\r\n }\r\n @case ('CMIT') {\r\n <i [class]=\"'feather-sidebar ' + context.conflictType\"></i>\r\n }\r\n @case ('CPKM') {\r\n <i [class]=\"'feather-zap ' + context.conflictType\"></i>\r\n }\r\n @case ('CTM') {\r\n <i [class]=\"'feather-type ' + context.conflictType\"></i>\r\n }\r\n @case ('CSM') {\r\n <i [class]=\"'feather-layers ' + context.conflictType\"></i>\r\n }\r\n @case ('CNM') {\r\n <i [class]=\"'feather-droplet ' + context.conflictType\"></i>\r\n }\r\n @case ('CPSM') {\r\n <i [class]=\"'feather-move ' + context.conflictType\"></i>\r\n }\r\n }\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #toolBlock let-context=\"context\">\r\n <div class=\"tools inter-font d-flex d-flex-start\">\r\n <div class=\"icon-wrapper\" [appTooltip]=\"'Resolve'\" [position]=\"'right'\" [showAnyway]=\"true\" (click)=\"openRowResolver($event, context)\">\r\n <i class=\"feather-play fs24\"></i>\r\n </div>\r\n <span>{{ context.difference }}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template #sourceNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #sourceIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n</div>", styles: [".core-compare-db-pipeline-container .h15{height:15px}.core-compare-db-pipeline-container .tools{height:36px}.core-compare-db-pipeline-container .tools .icon-wrapper{color:#848484;opacity:.5;display:inline-flex;width:36px;height:36px;border-radius:50%}.core-compare-db-pipeline-container .tools .icon-wrapper:hover{opacity:1;color:#fff;background-color:#848484}.core-compare-db-pipeline-container .modal-content-root{padding-top:0}.core-compare-db-pipeline-container .close-icon{display:block;position:absolute;top:8px;right:8px;color:#848484}.core-compare-db-pipeline-container .close-icon:hover{color:inherit}.core-compare-db-pipeline-container .row-resolver-window{display:block;width:992px;max-width:100vw!important;height:500px}.core-compare-db-pipeline-container .conflict-total{height:50px;display:flex;align-items:center;justify-content:flex-start;color:#848484;font-size:24px;font-weight:700}.core-compare-db-pipeline-container .conflict-total.error{color:brown}.core-compare-db-pipeline-container .conflict-type-wrapper i{font-size:20px;font-weight:700}.core-compare-db-pipeline-container .conflict-type-wrapper .TMIT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .CMIT{color:orange}.core-compare-db-pipeline-container .conflict-type-wrapper .CTM{color:#d2691e}.core-compare-db-pipeline-container .conflict-type-wrapper .CSM{color:#ffa07a}.core-compare-db-pipeline-container .conflict-type-wrapper .CNM{color:#ffb6c1}\n"], dependencies: [{ kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "borderRadius", "headerColor", "headerBackgroundColor", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "disableSorting", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "primaryKey", "rowHoverBgColor", "noPaddingCell", "autoColumnFitAvailableSpace"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CorePaginationComponent, selector: "core-pagination", inputs: ["$currentPage", "$height", "$pageCount", "$loading", "$suspendCurrentPageSubscription", "$showAdd", "$background", "$fixedPageSize"], outputs: ["$onClickAdd"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }] }); }
25835
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: CoreCompareDbPipelineComponent, isStandalone: true, selector: "core-compare-db-pipeline", viewQueries: [{ propertyName: "toolBlock", first: true, predicate: ["toolBlock"], descendants: true }, { propertyName: "conflictType", first: true, predicate: ["conflictType"], descendants: true }, { propertyName: "sourceNullability", first: true, predicate: ["sourceNullability"], descendants: true }, { propertyName: "targetNullability", first: true, predicate: ["targetNullability"], descendants: true }, { propertyName: "sourceIsPrimaryKey", first: true, predicate: ["sourceIsPrimaryKey"], descendants: true }, { propertyName: "targetIsPrimaryKey", first: true, predicate: ["targetIsPrimaryKey"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"core-compare-db-pipeline-container\">\r\n <core-page-header [title]=\"'DB STRUCTURE COMPARE'\"\r\n [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[]\" [height]=\"45\" [headerLineHeight]=\"45\"\r\n (onHeaderClick)=\"onCoreTabsHeaderClick($event)\">\r\n </core-tabs>\r\n\r\n\r\n <core-table [columns]=\"columns\" [height]=\"tableHeight\" [data]=\"data\" [loading]=\"loading\"\r\n [autoColumnFitAvailableSpace]=\"false\" [frozen]=\"3\" [lazyLoading]=\"true\" [headerFirstRowHeight]=\"80\"\r\n (onSearching)=\"onSearching($event)\"></core-table>\r\n <div class=\"h15\"></div>\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <div class=\"conflict-total\" [class.error]=\"!!conflictTotal\">\r\n {{ !!conflictTotal ? conflictTotal + ' conflicts found!' : 'No conflict found' }} \r\n </div>\r\n <core-pagination [$height]=\"46\" [$currentPage]=\"currentPage$\" [$pageCount]=\"pageCount\" [$loading]=\"loading\"\r\n [$background]=\"'#848484'\" [$fixedPageSize]=\"20\"\r\n [$suspendCurrentPageSubscription]=\"suspendCurrentPageSubscription$\"></core-pagination>\r\n </div>\r\n\r\n @if (showRowResolverWindow) {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"row-resolver-window\">\r\n <core-page-header [title]=\"'RESOLVER WINDOW'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <i class=\"close-icon pointer feather-x fs24\" (click)=\"closeRowResolver($event)\"></i>\r\n <textarea class=\"form-control\" [rows]=\"'10'\" style=\"height: 400px; padding: 15px;\" disabled>\r\n {{ sqlCommand }}\r\n </textarea>\r\n <button class=\"btn btn-primary\" (click)=\"resolve($event)\" style=\"margin-top: 15px;\">Run</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #conflictType let-context=\"context\">\r\n <div class=\"conflict-type-wrapper d-flex d-flex-between\" [appTooltip]=\"context.conflictType\" [showAnyway]=\"true\">\r\n \r\n @switch (context.conflictType) {\r\n @case ('TMIT') {\r\n <i [class]=\"'feather-layout ' + context.conflictType\"></i>\r\n }\r\n @case ('CMIT') {\r\n <i [class]=\"'feather-sidebar ' + context.conflictType\"></i>\r\n }\r\n @case ('CPKM') {\r\n <i [class]=\"'feather-zap ' + context.conflictType\"></i>\r\n }\r\n @case ('CTM') {\r\n <i [class]=\"'feather-type ' + context.conflictType\"></i>\r\n }\r\n @case ('CSM') {\r\n <i [class]=\"'feather-layers ' + context.conflictType\"></i>\r\n }\r\n @case ('CNM') {\r\n <i [class]=\"'feather-droplet ' + context.conflictType\"></i>\r\n }\r\n @case ('CPSM') {\r\n <i [class]=\"'feather-move ' + context.conflictType\"></i>\r\n }\r\n @case ('RT') {\r\n <i [class]=\"'feather-trash ' + context.conflictType\"></i>\r\n }\r\n @case ('RC') {\r\n <i [class]=\"'feather-trash ' + context.conflictType\"></i>\r\n }\r\n }\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #toolBlock let-context=\"context\">\r\n <div class=\"tools inter-font d-flex d-flex-start\">\r\n <div class=\"icon-wrapper\" [appTooltip]=\"'Resolve'\" [position]=\"'right'\" [showAnyway]=\"true\" (click)=\"openRowResolver($event, context)\">\r\n <i class=\"feather-play fs24\"></i>\r\n </div>\r\n <span>{{ context.difference }}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template #sourceNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #sourceIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n</div>", styles: [".core-compare-db-pipeline-container .h15{height:15px}.core-compare-db-pipeline-container .tools{height:36px}.core-compare-db-pipeline-container .tools .icon-wrapper{color:#848484;opacity:.5;display:inline-flex;width:36px;height:36px;border-radius:50%}.core-compare-db-pipeline-container .tools .icon-wrapper:hover{opacity:1;color:#fff;background-color:#848484}.core-compare-db-pipeline-container .modal-content-root{padding-top:0}.core-compare-db-pipeline-container .close-icon{display:block;position:absolute;top:8px;right:8px;color:#848484}.core-compare-db-pipeline-container .close-icon:hover{color:inherit}.core-compare-db-pipeline-container .row-resolver-window{display:block;width:992px;max-width:100vw!important;height:500px}.core-compare-db-pipeline-container .conflict-total{height:50px;display:flex;align-items:center;justify-content:flex-start;color:#848484;font-size:24px;font-weight:700}.core-compare-db-pipeline-container .conflict-total.error{color:brown}.core-compare-db-pipeline-container .conflict-type-wrapper i{font-size:20px;font-weight:700}.core-compare-db-pipeline-container .conflict-type-wrapper .TMIT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .CMIT{color:orange}.core-compare-db-pipeline-container .conflict-type-wrapper .CTM{color:#d2691e}.core-compare-db-pipeline-container .conflict-type-wrapper .CSM{color:#ffa07a}.core-compare-db-pipeline-container .conflict-type-wrapper .CNM{color:#ffb6c1}.core-compare-db-pipeline-container .conflict-type-wrapper .RT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .RC{color:#d2691e}\n"], dependencies: [{ kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "borderRadius", "headerColor", "headerBackgroundColor", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "disableSorting", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "primaryKey", "rowHoverBgColor", "noPaddingCell", "autoColumnFitAvailableSpace"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CorePaginationComponent, selector: "core-pagination", inputs: ["$currentPage", "$height", "$pageCount", "$loading", "$suspendCurrentPageSubscription", "$showAdd", "$background", "$fixedPageSize"], outputs: ["$onClickAdd"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }] }); }
25836
25836
  }
25837
25837
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: CoreCompareDbPipelineComponent, decorators: [{
25838
25838
  type: Component,
@@ -25845,7 +25845,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
25845
25845
  CoreCheckboxComponent,
25846
25846
  FormsModule,
25847
25847
  CoreTabsComponent
25848
- ], template: "<div class=\"core-compare-db-pipeline-container\">\r\n <core-page-header [title]=\"'DB STRUCTURE COMPARE'\"\r\n [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[]\" [height]=\"45\" [headerLineHeight]=\"45\"\r\n (onHeaderClick)=\"onCoreTabsHeaderClick($event)\">\r\n </core-tabs>\r\n\r\n\r\n <core-table [columns]=\"columns\" [height]=\"tableHeight\" [data]=\"data\" [loading]=\"loading\"\r\n [autoColumnFitAvailableSpace]=\"false\" [frozen]=\"3\" [lazyLoading]=\"true\" [headerFirstRowHeight]=\"80\"\r\n (onSearching)=\"onSearching($event)\"></core-table>\r\n <div class=\"h15\"></div>\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <div class=\"conflict-total\" [class.error]=\"!!conflictTotal\">\r\n {{ !!conflictTotal ? conflictTotal + ' conflicts found!' : 'No conflict found' }} \r\n </div>\r\n <core-pagination [$height]=\"46\" [$currentPage]=\"currentPage$\" [$pageCount]=\"pageCount\" [$loading]=\"loading\"\r\n [$background]=\"'#848484'\" [$fixedPageSize]=\"20\"\r\n [$suspendCurrentPageSubscription]=\"suspendCurrentPageSubscription$\"></core-pagination>\r\n </div>\r\n\r\n @if (showRowResolverWindow) {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"row-resolver-window\">\r\n <core-page-header [title]=\"'RESOLVER WINDOW'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <i class=\"close-icon pointer feather-x fs24\" (click)=\"closeRowResolver($event)\"></i>\r\n <textarea class=\"form-control\" [rows]=\"'10'\" style=\"height: 400px; padding: 15px;\" disabled>\r\n {{ sqlCommand }}\r\n </textarea>\r\n <button class=\"btn btn-primary\" (click)=\"resolve($event)\" style=\"margin-top: 15px;\">Run</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #conflictType let-context=\"context\">\r\n <div class=\"conflict-type-wrapper d-flex d-flex-between\" [appTooltip]=\"context.conflictType\" [showAnyway]=\"true\">\r\n \r\n @switch (context.conflictType) {\r\n @case ('TMIT') {\r\n <i [class]=\"'feather-layout ' + context.conflictType\"></i>\r\n }\r\n @case ('CMIT') {\r\n <i [class]=\"'feather-sidebar ' + context.conflictType\"></i>\r\n }\r\n @case ('CPKM') {\r\n <i [class]=\"'feather-zap ' + context.conflictType\"></i>\r\n }\r\n @case ('CTM') {\r\n <i [class]=\"'feather-type ' + context.conflictType\"></i>\r\n }\r\n @case ('CSM') {\r\n <i [class]=\"'feather-layers ' + context.conflictType\"></i>\r\n }\r\n @case ('CNM') {\r\n <i [class]=\"'feather-droplet ' + context.conflictType\"></i>\r\n }\r\n @case ('CPSM') {\r\n <i [class]=\"'feather-move ' + context.conflictType\"></i>\r\n }\r\n }\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #toolBlock let-context=\"context\">\r\n <div class=\"tools inter-font d-flex d-flex-start\">\r\n <div class=\"icon-wrapper\" [appTooltip]=\"'Resolve'\" [position]=\"'right'\" [showAnyway]=\"true\" (click)=\"openRowResolver($event, context)\">\r\n <i class=\"feather-play fs24\"></i>\r\n </div>\r\n <span>{{ context.difference }}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template #sourceNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #sourceIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n</div>", styles: [".core-compare-db-pipeline-container .h15{height:15px}.core-compare-db-pipeline-container .tools{height:36px}.core-compare-db-pipeline-container .tools .icon-wrapper{color:#848484;opacity:.5;display:inline-flex;width:36px;height:36px;border-radius:50%}.core-compare-db-pipeline-container .tools .icon-wrapper:hover{opacity:1;color:#fff;background-color:#848484}.core-compare-db-pipeline-container .modal-content-root{padding-top:0}.core-compare-db-pipeline-container .close-icon{display:block;position:absolute;top:8px;right:8px;color:#848484}.core-compare-db-pipeline-container .close-icon:hover{color:inherit}.core-compare-db-pipeline-container .row-resolver-window{display:block;width:992px;max-width:100vw!important;height:500px}.core-compare-db-pipeline-container .conflict-total{height:50px;display:flex;align-items:center;justify-content:flex-start;color:#848484;font-size:24px;font-weight:700}.core-compare-db-pipeline-container .conflict-total.error{color:brown}.core-compare-db-pipeline-container .conflict-type-wrapper i{font-size:20px;font-weight:700}.core-compare-db-pipeline-container .conflict-type-wrapper .TMIT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .CMIT{color:orange}.core-compare-db-pipeline-container .conflict-type-wrapper .CTM{color:#d2691e}.core-compare-db-pipeline-container .conflict-type-wrapper .CSM{color:#ffa07a}.core-compare-db-pipeline-container .conflict-type-wrapper .CNM{color:#ffb6c1}\n"] }]
25848
+ ], template: "<div class=\"core-compare-db-pipeline-container\">\r\n <core-page-header [title]=\"'DB STRUCTURE COMPARE'\"\r\n [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[]\" [height]=\"45\" [headerLineHeight]=\"45\"\r\n (onHeaderClick)=\"onCoreTabsHeaderClick($event)\">\r\n </core-tabs>\r\n\r\n\r\n <core-table [columns]=\"columns\" [height]=\"tableHeight\" [data]=\"data\" [loading]=\"loading\"\r\n [autoColumnFitAvailableSpace]=\"false\" [frozen]=\"3\" [lazyLoading]=\"true\" [headerFirstRowHeight]=\"80\"\r\n (onSearching)=\"onSearching($event)\"></core-table>\r\n <div class=\"h15\"></div>\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <div class=\"conflict-total\" [class.error]=\"!!conflictTotal\">\r\n {{ !!conflictTotal ? conflictTotal + ' conflicts found!' : 'No conflict found' }} \r\n </div>\r\n <core-pagination [$height]=\"46\" [$currentPage]=\"currentPage$\" [$pageCount]=\"pageCount\" [$loading]=\"loading\"\r\n [$background]=\"'#848484'\" [$fixedPageSize]=\"20\"\r\n [$suspendCurrentPageSubscription]=\"suspendCurrentPageSubscription$\"></core-pagination>\r\n </div>\r\n\r\n @if (showRowResolverWindow) {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"row-resolver-window\">\r\n <core-page-header [title]=\"'RESOLVER WINDOW'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <i class=\"close-icon pointer feather-x fs24\" (click)=\"closeRowResolver($event)\"></i>\r\n <textarea class=\"form-control\" [rows]=\"'10'\" style=\"height: 400px; padding: 15px;\" disabled>\r\n {{ sqlCommand }}\r\n </textarea>\r\n <button class=\"btn btn-primary\" (click)=\"resolve($event)\" style=\"margin-top: 15px;\">Run</button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #conflictType let-context=\"context\">\r\n <div class=\"conflict-type-wrapper d-flex d-flex-between\" [appTooltip]=\"context.conflictType\" [showAnyway]=\"true\">\r\n \r\n @switch (context.conflictType) {\r\n @case ('TMIT') {\r\n <i [class]=\"'feather-layout ' + context.conflictType\"></i>\r\n }\r\n @case ('CMIT') {\r\n <i [class]=\"'feather-sidebar ' + context.conflictType\"></i>\r\n }\r\n @case ('CPKM') {\r\n <i [class]=\"'feather-zap ' + context.conflictType\"></i>\r\n }\r\n @case ('CTM') {\r\n <i [class]=\"'feather-type ' + context.conflictType\"></i>\r\n }\r\n @case ('CSM') {\r\n <i [class]=\"'feather-layers ' + context.conflictType\"></i>\r\n }\r\n @case ('CNM') {\r\n <i [class]=\"'feather-droplet ' + context.conflictType\"></i>\r\n }\r\n @case ('CPSM') {\r\n <i [class]=\"'feather-move ' + context.conflictType\"></i>\r\n }\r\n @case ('RT') {\r\n <i [class]=\"'feather-trash ' + context.conflictType\"></i>\r\n }\r\n @case ('RC') {\r\n <i [class]=\"'feather-trash ' + context.conflictType\"></i>\r\n }\r\n }\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #toolBlock let-context=\"context\">\r\n <div class=\"tools inter-font d-flex d-flex-start\">\r\n <div class=\"icon-wrapper\" [appTooltip]=\"'Resolve'\" [position]=\"'right'\" [showAnyway]=\"true\" (click)=\"openRowResolver($event, context)\">\r\n <i class=\"feather-play fs24\"></i>\r\n </div>\r\n <span>{{ context.difference }}</span>\r\n </div>\r\n </ng-template>\r\n <ng-template #sourceNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetNullability let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetNullability\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #sourceIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.sourceIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n <ng-template #targetIsPrimaryKey let-context=\"context\">\r\n <core-checkbox [ngModel]=\"!!context.targetIsPrimaryKey\" [disabled]=\"true\"></core-checkbox>\r\n </ng-template>\r\n</div>", styles: [".core-compare-db-pipeline-container .h15{height:15px}.core-compare-db-pipeline-container .tools{height:36px}.core-compare-db-pipeline-container .tools .icon-wrapper{color:#848484;opacity:.5;display:inline-flex;width:36px;height:36px;border-radius:50%}.core-compare-db-pipeline-container .tools .icon-wrapper:hover{opacity:1;color:#fff;background-color:#848484}.core-compare-db-pipeline-container .modal-content-root{padding-top:0}.core-compare-db-pipeline-container .close-icon{display:block;position:absolute;top:8px;right:8px;color:#848484}.core-compare-db-pipeline-container .close-icon:hover{color:inherit}.core-compare-db-pipeline-container .row-resolver-window{display:block;width:992px;max-width:100vw!important;height:500px}.core-compare-db-pipeline-container .conflict-total{height:50px;display:flex;align-items:center;justify-content:flex-start;color:#848484;font-size:24px;font-weight:700}.core-compare-db-pipeline-container .conflict-total.error{color:brown}.core-compare-db-pipeline-container .conflict-type-wrapper i{font-size:20px;font-weight:700}.core-compare-db-pipeline-container .conflict-type-wrapper .TMIT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .CMIT{color:orange}.core-compare-db-pipeline-container .conflict-type-wrapper .CTM{color:#d2691e}.core-compare-db-pipeline-container .conflict-type-wrapper .CSM{color:#ffa07a}.core-compare-db-pipeline-container .conflict-type-wrapper .CNM{color:#ffb6c1}.core-compare-db-pipeline-container .conflict-type-wrapper .RT{color:red}.core-compare-db-pipeline-container .conflict-type-wrapper .RC{color:#d2691e}\n"] }]
25849
25849
  }], ctorParameters: () => [{ type: MultiLanguageService }, { type: AppService }], propDecorators: { toolBlock: [{
25850
25850
  type: ViewChild,
25851
25851
  args: ['toolBlock']