@trudb/tru-common-lib 0.1.628 → 0.1.629
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
2
|
import { TruViewBase } from '../../base-views/tru-view-base';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "../../services/tru-text-manager";
|
|
@@ -258,12 +258,14 @@ export class TruCloneView extends TruViewBase {
|
|
|
258
258
|
this.childFlatList.length = 0;
|
|
259
259
|
}
|
|
260
260
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruCloneView, deps: [{ token: i1.TruTextManager }, { token: i2.TruWindowEventHandler }, { token: i3.TruDataContext }, { token: i4.TruModelTableLookup }, { token: i5.TruModelPropertyLookup }, { token: i6.TruModelTypeLookup }, { token: i7.TruModelNavigationPropertiesLookup }, { token: i8.TruUiNotification }], target: i0.ɵɵFactoryTarget.Component });
|
|
261
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruCloneView, selector: "tru-clone-view", usesInheritance: true, ngImport: i0, template: "<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"loading\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"loading\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"loading\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content clone\">\r\n <ng-template #groupNodeRenderer let-data>\r\n <div *ngIf=\"!data.child || data.showEntities\"\r\n class=\"clone-modal-tree-group\">\r\n <input [(ngModel)]=\"data.checked\"\r\n (click)=\"data.onCheckedChanged()\"\r\n [disabled]=\"data.root\"\r\n type=\"checkbox\" />\r\n <a (click)=\"data.onGroupDisplayNameClicked()\"\r\n [ngClass]=\"{'clone-modal-tree-group-root-name': data.root || data.child}\"\r\n [ngStyle]=\"{'max-width': data.childNode ? '300px' : 'auto'}\">{{data.displayName}}</a>\r\n <span *ngIf=\"!data.root && !data.child\"\r\n class=\"clone-modal-tree-group-count\">({{data.nodes.length}})</span>\r\n </div>\r\n <ul>\r\n <li *ngFor=\"let data of data.nodes; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n <div *ngIf=\"loadingMessage\"\r\n class=\"clone-modal-loading\">\r\n <span class=\"clone-modal-loading-message\">{{loadingMessage}}</span>\r\n </div>\r\n <div *ngIf=\"doneProcessing\"\r\n class=\"clone-modal-tree\">\r\n <ul>\r\n <li *ngFor=\"let data of displayTree; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\">Clone</button>\r\n </div>\r\n</div>\r\n", styles: [".tru-dialog-footer{position:absolute;left:0;right:0;bottom:0;padding:4px 15px 5px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px #fff}.tru-dialog-footer button{height:30px}::ng-deep tru-toolbar-button svg{height:20px!important}.clone ul{list-style-type:none}.clone-modal-loading{position:absolute;inset:15px 0 -15px;overflow:hidden;margin-top:10px}.clone-modal-loading-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.clone-modal-tree{position:absolute;inset:15px 0 -15px;overflow-y:auto;margin-top:10px}.clone-modal-tree ul{padding-left:15px}.clone-modal-tree-group{display:flex;margin-top:5px}.clone-modal-tree-group input{float:left}.clone-modal-tree-group a{text-decoration-line:underline}.clone-modal-tree-group-root-name{text-decoration-line:none!important;color:#000}.clone-modal-tree-group span{margin-left:5px}.clone-modal-tree-group a{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:18px;margin-left:5px;float:left}.clone-modal-tree-group-count{vertical-align:middle;float:left}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i10.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i12.TruToolbar, selector: "tru-toolbar", inputs: ["config"] }, { kind: "component", type: i13.TruToolbarButton, selector: "tru-toolbar-button", inputs: ["config", "icon", "text", "disabled", "tooltip", "type"], outputs: ["onClick", "onKeydown"] }, { kind: "component", type: i14.TruToolbarDropdown, selector: "tru-toolbar-dropdown", inputs: ["config", "options", "tooltip", "multiple", "filterable", "filterTooltip", "width", "selectedOption", "disabled"], outputs: ["selectedOptionChange", "selectionChange"] }, { kind: "component", type: i15.TruToolbarText, selector: "tru-toolbar-text", inputs: ["config", "icon", "text", "tooltip"] }] });
|
|
261
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruCloneView, selector: "tru-clone-view", inputs: { ready: "ready" }, usesInheritance: true, ngImport: i0, template: "<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"loading\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"loading\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"loading\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content clone\">\r\n <ng-template #groupNodeRenderer let-data>\r\n <div *ngIf=\"!data.child || data.showEntities\"\r\n class=\"clone-modal-tree-group\">\r\n <input [(ngModel)]=\"data.checked\"\r\n (click)=\"data.onCheckedChanged()\"\r\n [disabled]=\"data.root\"\r\n type=\"checkbox\" />\r\n <a (click)=\"data.onGroupDisplayNameClicked()\"\r\n [ngClass]=\"{'clone-modal-tree-group-root-name': data.root || data.child}\"\r\n [ngStyle]=\"{'max-width': data.childNode ? '300px' : 'auto'}\">{{data.displayName}}</a>\r\n <span *ngIf=\"!data.root && !data.child\"\r\n class=\"clone-modal-tree-group-count\">({{data.nodes.length}})</span>\r\n </div>\r\n <ul>\r\n <li *ngFor=\"let data of data.nodes; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n <div *ngIf=\"loadingMessage\"\r\n class=\"clone-modal-loading\">\r\n <span class=\"clone-modal-loading-message\">{{loadingMessage}}</span>\r\n </div>\r\n <div *ngIf=\"doneProcessing\"\r\n class=\"clone-modal-tree\">\r\n <ul>\r\n <li *ngFor=\"let data of displayTree; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\" [disabled]=\"!ready\">Clone</button>\r\n </div>\r\n</div>\r\n", styles: [".tru-dialog-footer{position:absolute;left:0;right:0;bottom:0;padding:4px 15px 5px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px #fff}.tru-dialog-footer button{height:30px}::ng-deep tru-toolbar-button svg{height:20px!important}.clone ul{list-style-type:none}.clone-modal-loading{position:absolute;inset:15px 0 -15px;overflow:hidden;margin-top:10px}.clone-modal-loading-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.clone-modal-tree{position:absolute;inset:15px 0 -15px;overflow-y:auto;margin-top:10px}.clone-modal-tree ul{padding-left:15px}.clone-modal-tree-group{display:flex;margin-top:5px}.clone-modal-tree-group input{float:left}.clone-modal-tree-group a{text-decoration-line:underline}.clone-modal-tree-group-root-name{text-decoration-line:none!important;color:#000}.clone-modal-tree-group span{margin-left:5px}.clone-modal-tree-group a{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:18px;margin-left:5px;float:left}.clone-modal-tree-group-count{vertical-align:middle;float:left}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i10.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i12.TruToolbar, selector: "tru-toolbar", inputs: ["config"] }, { kind: "component", type: i13.TruToolbarButton, selector: "tru-toolbar-button", inputs: ["config", "icon", "text", "disabled", "tooltip", "type"], outputs: ["onClick", "onKeydown"] }, { kind: "component", type: i14.TruToolbarDropdown, selector: "tru-toolbar-dropdown", inputs: ["config", "options", "tooltip", "multiple", "filterable", "filterTooltip", "width", "selectedOption", "disabled"], outputs: ["selectedOptionChange", "selectionChange"] }, { kind: "component", type: i15.TruToolbarText, selector: "tru-toolbar-text", inputs: ["config", "icon", "text", "tooltip"] }] });
|
|
262
262
|
}
|
|
263
263
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruCloneView, decorators: [{
|
|
264
264
|
type: Component,
|
|
265
|
-
args: [{ selector: 'tru-clone-view', template: "<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"loading\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"loading\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"loading\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content clone\">\r\n <ng-template #groupNodeRenderer let-data>\r\n <div *ngIf=\"!data.child || data.showEntities\"\r\n class=\"clone-modal-tree-group\">\r\n <input [(ngModel)]=\"data.checked\"\r\n (click)=\"data.onCheckedChanged()\"\r\n [disabled]=\"data.root\"\r\n type=\"checkbox\" />\r\n <a (click)=\"data.onGroupDisplayNameClicked()\"\r\n [ngClass]=\"{'clone-modal-tree-group-root-name': data.root || data.child}\"\r\n [ngStyle]=\"{'max-width': data.childNode ? '300px' : 'auto'}\">{{data.displayName}}</a>\r\n <span *ngIf=\"!data.root && !data.child\"\r\n class=\"clone-modal-tree-group-count\">({{data.nodes.length}})</span>\r\n </div>\r\n <ul>\r\n <li *ngFor=\"let data of data.nodes; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n <div *ngIf=\"loadingMessage\"\r\n class=\"clone-modal-loading\">\r\n <span class=\"clone-modal-loading-message\">{{loadingMessage}}</span>\r\n </div>\r\n <div *ngIf=\"doneProcessing\"\r\n class=\"clone-modal-tree\">\r\n <ul>\r\n <li *ngFor=\"let data of displayTree; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\">Clone</button>\r\n </div>\r\n</div>\r\n", styles: [".tru-dialog-footer{position:absolute;left:0;right:0;bottom:0;padding:4px 15px 5px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px #fff}.tru-dialog-footer button{height:30px}::ng-deep tru-toolbar-button svg{height:20px!important}.clone ul{list-style-type:none}.clone-modal-loading{position:absolute;inset:15px 0 -15px;overflow:hidden;margin-top:10px}.clone-modal-loading-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.clone-modal-tree{position:absolute;inset:15px 0 -15px;overflow-y:auto;margin-top:10px}.clone-modal-tree ul{padding-left:15px}.clone-modal-tree-group{display:flex;margin-top:5px}.clone-modal-tree-group input{float:left}.clone-modal-tree-group a{text-decoration-line:underline}.clone-modal-tree-group-root-name{text-decoration-line:none!important;color:#000}.clone-modal-tree-group span{margin-left:5px}.clone-modal-tree-group a{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:18px;margin-left:5px;float:left}.clone-modal-tree-group-count{vertical-align:middle;float:left}\n"] }]
|
|
266
|
-
}], ctorParameters: () => [{ type: i1.TruTextManager }, { type: i2.TruWindowEventHandler }, { type: i3.TruDataContext }, { type: i4.TruModelTableLookup }, { type: i5.TruModelPropertyLookup }, { type: i6.TruModelTypeLookup }, { type: i7.TruModelNavigationPropertiesLookup }, { type: i8.TruUiNotification }]
|
|
265
|
+
args: [{ selector: 'tru-clone-view', template: "<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"loading\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"loading\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"loading\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content clone\">\r\n <ng-template #groupNodeRenderer let-data>\r\n <div *ngIf=\"!data.child || data.showEntities\"\r\n class=\"clone-modal-tree-group\">\r\n <input [(ngModel)]=\"data.checked\"\r\n (click)=\"data.onCheckedChanged()\"\r\n [disabled]=\"data.root\"\r\n type=\"checkbox\" />\r\n <a (click)=\"data.onGroupDisplayNameClicked()\"\r\n [ngClass]=\"{'clone-modal-tree-group-root-name': data.root || data.child}\"\r\n [ngStyle]=\"{'max-width': data.childNode ? '300px' : 'auto'}\">{{data.displayName}}</a>\r\n <span *ngIf=\"!data.root && !data.child\"\r\n class=\"clone-modal-tree-group-count\">({{data.nodes.length}})</span>\r\n </div>\r\n <ul>\r\n <li *ngFor=\"let data of data.nodes; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n <div *ngIf=\"loadingMessage\"\r\n class=\"clone-modal-loading\">\r\n <span class=\"clone-modal-loading-message\">{{loadingMessage}}</span>\r\n </div>\r\n <div *ngIf=\"doneProcessing\"\r\n class=\"clone-modal-tree\">\r\n <ul>\r\n <li *ngFor=\"let data of displayTree; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\" [disabled]=\"!ready\">Clone</button>\r\n </div>\r\n</div>\r\n", styles: [".tru-dialog-footer{position:absolute;left:0;right:0;bottom:0;padding:4px 15px 5px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px #fff}.tru-dialog-footer button{height:30px}::ng-deep tru-toolbar-button svg{height:20px!important}.clone ul{list-style-type:none}.clone-modal-loading{position:absolute;inset:15px 0 -15px;overflow:hidden;margin-top:10px}.clone-modal-loading-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.clone-modal-tree{position:absolute;inset:15px 0 -15px;overflow-y:auto;margin-top:10px}.clone-modal-tree ul{padding-left:15px}.clone-modal-tree-group{display:flex;margin-top:5px}.clone-modal-tree-group input{float:left}.clone-modal-tree-group a{text-decoration-line:underline}.clone-modal-tree-group-root-name{text-decoration-line:none!important;color:#000}.clone-modal-tree-group span{margin-left:5px}.clone-modal-tree-group a{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:18px;margin-left:5px;float:left}.clone-modal-tree-group-count{vertical-align:middle;float:left}\n"] }]
|
|
266
|
+
}], ctorParameters: () => [{ type: i1.TruTextManager }, { type: i2.TruWindowEventHandler }, { type: i3.TruDataContext }, { type: i4.TruModelTableLookup }, { type: i5.TruModelPropertyLookup }, { type: i6.TruModelTypeLookup }, { type: i7.TruModelNavigationPropertiesLookup }, { type: i8.TruUiNotification }], propDecorators: { ready: [{
|
|
267
|
+
type: Input
|
|
268
|
+
}] } });
|
|
267
269
|
class Node {
|
|
268
270
|
ref;
|
|
269
271
|
tableName;
|
|
@@ -331,4 +333,4 @@ class Node {
|
|
|
331
333
|
}
|
|
332
334
|
};
|
|
333
335
|
}
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNsb25lLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xvbmUtdmlldy90cnUtY2xvbmUtdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jbG9uZS12aWV3L3RydS1jbG9uZS12aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0I3RCxNQUFNLE9BQU8sWUFBYSxTQUFRLFdBQVc7SUF1Qy9CO0lBQ0E7SUFDRjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUE1Q1YsSUFBSSxLQUFLLENBQUMsT0FBZ0I7UUFDeEIsSUFBSSxPQUFPO1lBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxPQUFPLEdBQVksSUFBSSxDQUFDO0lBQ3hCLGNBQWMsR0FBVyxrQ0FBa0MsQ0FBQztJQUM1RCxjQUFjLENBQWtDO0lBQ2hELHNCQUFzQixDQUE0QjtJQUNsRCxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLFFBQVEsR0FBZ0IsSUFBSSxDQUFDO0lBQzdCLGtCQUFrQixHQUFHO1FBQ25CLFlBQVk7UUFDWixTQUFTO1FBQ1QsWUFBWTtRQUNaLFNBQVM7UUFDVCxRQUFRO1FBQ1IseUJBQXlCO1FBQ3pCLGNBQWM7UUFDZCx1QkFBdUI7UUFDdkIsZUFBZTtRQUNmLGNBQWM7UUFDZCxZQUFZO1FBQ1osWUFBWTtRQUNaLGVBQWU7UUFDZixhQUFhO1FBQ2IsYUFBYTtRQUNiLHVCQUF1QjtRQUN2QixLQUFLO0tBQ04sQ0FBQztJQUNGLFFBQVEsR0FBRyxF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QkFDRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO29CQUN6QixpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1Vmlld0Jhc2UgfSBmcm9tICcuLi8uLi9iYXNlLXZpZXdzL3RydS12aWV3LWJhc2UnO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vdG9vbGJhci9jbGFzc2VzL3RydS10b29sYmFyLWRyb3Bkb3duLW9wdGlvbic7XHJcbmltcG9ydCB7IFRydVRleHRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXRleHQtbWFuYWdlcic7XHJcbmltcG9ydCB7IFRydVdpbmRvd0V2ZW50SGFuZGxlciB9IGZyb20gJy4uL2Rlc2t0b3Avc2VydmljZXMvdHJ1LXdpbmRvdy1ldmVudC1oYW5kbGVyJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxUYWJsZUxvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC10YWJsZS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVVaU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS11aS1ub3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFByb3BlcnR5TG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXByb3BlcnR5LWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydU1vZGVsVHlwZUxvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC10eXBlLWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydU1vZGVsTmF2aWdhdGlvblByb3BlcnRpZXNMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtbmF2aWdhdGlvbi1wcm9wZXJ0aWVzLWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydU5hdmlnYXRpb25Qcm9wZXJ0eUNvbmZpZyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdHJ1LW5hdmlnYXRpb24tcHJvcGVydHktY29uZmlnJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1jbG9uZS12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWNsb25lLXZpZXcuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWNsb25lLXZpZXcuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydUNsb25lVmlldyBleHRlbmRzIFRydVZpZXdCYXNlIHtcclxuXHJcbiAgc2V0IHJlYWR5KGlzUmVhZHk6IGJvb2xlYW4pIHtcclxuICAgIGlmIChpc1JlYWR5KSB0aGlzLmRvbmUoKTtcclxuICB9XHJcblxyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGxvYWRpbmdNZXNzYWdlOiBzdHJpbmcgPSAnU2VhcmNoaW5nIGZvciByZWxhdGVkIHJlY29yZHMuLi4nO1xyXG4gIG51bWJlck9mQ29waWVzOiBBcnJheTxJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uPlxyXG4gIHNlbGVjdGVkTnVtYmVyT2ZDb3BpZXM6IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb247XHJcbiAgY29udGV4dEZpbHRlcnMgPSBudWxsO1xyXG4gIHJvb3ROb2RlOiBOb2RlIHwgbnVsbCA9IG51bGw7IFxyXG4gIGlnbm9yZVByb3BlcnR5TGlzdCA9IFtcclxuICAgICdDcmVhdGVkUmVmJyxcclxuICAgICdDcmVhdGVkJyxcclxuICAgICdVcGRhdGVkUmVmJyxcclxuICAgICdVcGRhdGVkJyxcclxuICAgICdyb3d2ZXInLFxyXG4gICAgJ19jdXN0b21WYWxpZGF0aW9uRXJyb3JzJyxcclxuICAgICdlbnRpdHlBc3BlY3QnLFxyXG4gICAgJ19hc3NvY2lhdGVkRGF0YUNhY2hlZCcsXHJcbiAgICAnX2JhY2tpbmdTdG9yZScsXHJcbiAgICAnX3NldERlZmF1bHRzJyxcclxuICAgICdfJHR5cGVOYW1lJyxcclxuICAgICdlbnRpdHlUeXBlJyxcclxuICAgICdfJGludGVyY2VwdG9yJyxcclxuICAgICdnZXRQcm9wZXJ0eScsXHJcbiAgICAnc2V0UHJvcGVydHknLFxyXG4gICAgJ19wZW5kaW5nQmFja2luZ1N0b3JlcycsXHJcbiAgICAnUmVmJ1xyXG4gIF07XHJcbiAgZGF0YVRyZWUgPSBbXTtcclxuICBmbGF0TGlzdDogQXJyYXk8Tm9kZT4gPSBbXTtcclxuICBjaGlsZEZsYXRMaXN0OiBBcnJheTxOb2RlPiA9IFtdO1xyXG4gIHByb2Nlc3NlZENvdW50OiBudW1iZXIgPSAwO1xyXG4gIGRvbmVQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzcGxheVRyZWUgPSBbdGhpcy5yb290Tm9kZV07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHRleHRNYW5hZ2VyOiBUcnVUZXh0TWFuYWdlcixcclxuICAgIHByb3RlY3RlZCB3aW5kb3dFdmVudEhhbmRsZXI6IFRydVdpbmRvd0V2ZW50SGFuZGxlcixcclxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJpdmF0ZSBtb2RlbFRhYmxlTG9va3VwOiBUcnVNb2RlbFRhYmxlTG9va3VwLFxyXG4gICAgcHJpdmF0ZSBtb2RlbFByb3BlcnR5TG9va3VwOiBUcnVNb2RlbFByb3BlcnR5TG9va3VwLFxyXG4gICAgcHJpdmF0ZSBtb2RlbFR5cGVMb29rdXA6IFRydU1vZGVsVHlwZUxvb2t1cCxcclxuICAgIHByaXZhdGUgbW9kZWxOYXZpZ2F0aW9uUHJvcGVydGllc0xvb2t1cDogVHJ1TW9kZWxOYXZpZ2F0aW9uUHJvcGVydGllc0xvb2t1cCxcclxuICAgIHByaXZhdGUgdWlOb3RpZmljYXRpb246IFRydVVpTm90aWZpY2F0aW9uKSB7XHJcbiAgICBzdXBlcih0ZXh0TWFuYWdlciwgd2luZG93RXZlbnRIYW5kbGVyKTtcclxuICAgIHRoaXMubnVtYmVyT2ZDb3BpZXMgPSB0aGlzLmdldE51bWJlck9mQ29waWVzKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTnVtYmVyT2ZDb3BpZXMgPSB0aGlzLm51bWJlck9mQ29waWVzWzBdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXROdW1iZXJPZkNvcGllcyA9ICgpOiBBcnJheTxJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uPiA9PiB7XHJcbiAgICBsZXQgY29waWVzOiBBcnJheTxJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uPiA9IFtdO1xyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMjU7IGkrKykge1xyXG4gICAgICBjb3BpZXMucHVzaCh7XHJcbiAgICAgICAgdmFsdWU6IGksXHJcbiAgICAgICAgbGFiZWw6IGkudG9TdHJpbmcoKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb3BpZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb3BlcnR5SXNBbGxvd2VkID0gKHByb3BlcnR5TmFtZTogc3RyaW5nLCB0YWJsZU5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gdGFibGVOYW1lICsgJ1JlZicpIHJldHVybiBmYWxzZTtcclxuICAgIGlmIChwcm9wZXJ0eU5hbWUuc3RhcnRzV2l0aCgnbycpKSByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgcHJvcGVydHkgPSB0aGlzLm1vZGVsUHJvcGVydHlMb29rdXAubG9va3VwLmdldChwcm9wZXJ0eU5hbWUpO1xyXG4gICAgaWYgKHByb3BlcnR5ICYmIHByb3BlcnR5LmV4Y2x1ZGVGcm9tQ2xvbmluZykgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuaWdub3JlUHJvcGVydHlMaXN0LnNvbWUoZnVuY3Rpb24gKHByb3BlcnR5VG9JZ25vcmUpIHsgcmV0dXJuIHByb3BlcnR5VG9JZ25vcmUgPT09IHByb3BlcnR5TmFtZTsgfSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlICBnZXRQcm90b3R5cGVQcm9wZXJ0aWVzID0gKG9iajogYW55KSA9PiB7XHJcbiAgICB2YXIgcmVzdWx0ID0gW107XHJcbiAgICBmb3IgKHZhciBwcm9wIGluIG9iaikge1xyXG4gICAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKHByb3ApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDaGlsZFByb3BlcnRpZXNGb3JDdXJyZW50RW50aXR5ID0gKGN1cnJlbnRFbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgLy92YXIgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5rZXlzKE9iamVjdC5nZXRQcm90b3R5cGVPZihjdXJyZW50RW50aXR5KSk7XHJcbiAgICBsZXQgZW50aXR5TmFtZSA9IHRoaXMuZ2V0VHlwZUZyb21FbnRpdHlUeXBlTmFtZShjdXJyZW50RW50aXR5LiR0eXBlKTtcclxuICAgIGxldCBjaGlsZExvb2t1cCA9IHRoaXMubW9kZWxOYXZpZ2F0aW9uUHJvcGVydGllc0xvb2t1cC5sb29rdXAuZ2V0KGVudGl0eU5hbWUpIGFzIFRydU5hdmlnYXRpb25Qcm9wZXJ0eUNvbmZpZ1tdO1xyXG4gICAgbGV0IHByb3BlcnR5TmFtZXMgPSBPYmplY3Qua2V5cyhjdXJyZW50RW50aXR5KTtcclxuICAgIGxldCBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lcyA9IHByb3BlcnR5TmFtZXMuZmlsdGVyKChuKSA9PiB7IHJldHVybiBuLnN0YXJ0c1dpdGgoJ28nKTsgfSk7XHJcbiAgICBsZXQgY2hpbGROYXZpZ2F0aW9uUHJvcGVydHlOYW1lcyA9IG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzLmZpbHRlcigobikgPT4ge1xyXG4gICAgICByZXR1cm4gY2hpbGRMb29rdXAuc29tZSgobG9va3VwOiBhbnkpID0+IHsgcmV0dXJuIGxvb2t1cC5uYW1lID09PSBuOyB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBjaGlsZFByb3BlcnRpZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIGNoaWxkTmF2aWdhdGlvblByb3BlcnR5TmFtZXMuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgIGlmIChjdXJyZW50RW50aXR5W25dICYmIGN1cnJlbnRFbnRpdHlbbl0ubGVuZ3RoKSBjaGlsZFByb3BlcnRpZXMucHVzaChjdXJyZW50RW50aXR5W25dKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjaGlsZFByb3BlcnRpZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUgPSAodHlwZU5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgdmFyIHAxcyA9IHR5cGVOYW1lLnNwbGl0KCcsJylbMF07XHJcbiAgICB2YXIgcDJzID0gcDFzLnNwbGl0KCcuJyk7XHJcbiAgICByZXR1cm4gcDJzW3Aycy5sZW5ndGggLSAxXTtcclxuICB9XHJcblxyXG5wcml2YXRlIGJ1aWxkQ2xvbmVUcmVlID0gKGN1cnJlbnRFbnRpdHk6IGFueSwgbm9kZTogYW55KSA9PiB7XHJcbiAgdmFyIGNoaWxkUHJvcGVydGllcyA9IHRoaXMuZ2V0Q2hpbGRQcm9wZXJ0aWVzRm9yQ3VycmVudEVudGl0eShjdXJyZW50RW50aXR5KTtcclxuICBjaGlsZFByb3BlcnRpZXMuZm9yRWFjaCgoY2hpbGRFbnRpdGllczogYW55KSA9PiB7XHJcbiAgICBsZXQgdHlwZSA9IHRoaXMuZ2V0VHlwZUZyb21FbnRpdHlUeXBlTmFtZShjaGlsZEVudGl0aWVzWzBdLiR0eXBlKTtcclxuICAgIGxldCBjaGlsZExvb2t1cCA9IHRoaXMubW9kZWxUYWJsZUxvb2t1cC5sb29rdXAuZ2V0KHR5cGUpO1xyXG4gICAgbGV0IGdyb3VwTm9kZSA9IG5ldyBOb2RlKFxyXG4gICAgICBudWxsLFxyXG4gICAgICBjaGlsZEVudGl0aWVzWzBdLmNvbnN0cnVjdG9yLm5hbWUsXHJcbiAgICAgIGNoaWxkTG9va3VwPy5wbHVyYWxMYWJlbCBhcyBzdHJpbmcsXHJcbiAgICAgIGZhbHNlLFxyXG4gICAgICB0cnVlLFxyXG4gICAgICBbXSxcclxuICAgICAgJycsXHJcbiAgICAgIGZhbHNlLFxyXG4gICAgICBub2RlLFxyXG4gICAgICBudWxsXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuZmxhdExpc3QucHVzaChncm91cE5vZGUpO1xyXG5cclxuICAgIGNoaWxkRW50aXRpZXMuZm9yRWFjaCgoY2hpbGRFbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdHlwZSA9IHRoaXMuZ2V0VHlwZUZyb21FbnRpdHlUeXBlTmFtZShjaGlsZEVudGl0eS4kdHlwZSk7XHJcbiAgICAgIGxldCBjaGlsZE5vZGUgPSBuZXcgTm9kZShcclxuICAgICAgICBjaGlsZEVudGl0eVt0eXBlICsgJ1JlZiddLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICAgIHRydWUsXHJcbiAgICAgICAgW10sXHJcbiAgICAgICAgJycsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZ3JvdXBOb2RlLFxyXG4gICAgICAgIGNoaWxkRW50aXR5XHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmNoaWxkRmxhdExpc3QucHVzaChjaGlsZE5vZGUpO1xyXG4gICAgICBncm91cE5vZGUubm9kZXMucHVzaChjaGlsZE5vZGUpO1xyXG4gICAgICB0aGlzLmJ1aWxkQ2xvbmVUcmVlKGNoaWxkRW50aXR5LCBjaGlsZE5vZGUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbm9kZS5ub2Rlcy5wdXNoKGdyb3VwTm9kZSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbiAgcHJpdmF0ZSBhc3luY0ZvckVhY2hSZWNvcmRJZCA9IChhcnI6IGFueSwgY2I6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIGFyci5yZWR1Y2UoKHA6IGFueSwgYzogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBwLnRoZW4oKCkgPT4gY2IoYykpO1xyXG4gICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaFJlY29yZElkID0gKGNoaWxkOiBhbnkpID0+IHtcclxuICAgIHZhciBjID0gY2hpbGQ7XHJcbiAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgcmVmOiBjLnJlZixcclxuICAgICAgdGFibGVOYW1lOiBjLnRhYmxlTmFtZVxyXG4gICAgfTtcclxuICAgIGRhdGEgPSB0aGlzLnRleHRNYW5hZ2VyLmZvcm1hdEFzVXJsUGFyYW1ldGVycyhkYXRhKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IGFueSkgPT4ge1xyXG4gICAgICBjLmRpc3BsYXlOYW1lID0gY2hpbGQuZW50aXR5LkhJRDtcclxuICAgICAgdGhpcy5wcm9jZXNzZWRDb3VudCsrO1xyXG4gICAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJ0Zvcm1hdHRpbmcgZGF0YS4uLnByb2Nlc3NlZCAoJyArIHRoaXMucHJvY2Vzc2VkQ291bnQgKyAnLycgKyB0aGlzLmNoaWxkRmxhdExpc3QubGVuZ3RoICsgJykgcmVjb3Jkcyc7XHJcbiAgICAgIGlmICh0aGlzLnByb2Nlc3NlZENvdW50ID49IHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGgpXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nTWVzc2FnZSA9ICdSZW5kZXJpbmcgdHJlZS4uLic7XHJcbiAgICAgIHJlc29sdmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb25lID0gKCkgPT4ge1xyXG4gICAgdGhpcy5kb25lUHJvY2Vzc2luZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYXZlcnNlID0gKG5vZGU6IGFueSwgY3VycmVudEVudGl0eTogYW55KSA9PiB7XHJcbiAgICB2YXIgZ3JvdXAgPSAhbm9kZS5jaGlsZDtcclxuICAgIGlmIChncm91cCkge1xyXG4gICAgICB2YXIgZ3JvdXBOb2RlcyA9IG5vZGUubm9kZXM7XHJcbiAgICAgIGdyb3VwTm9kZXMuZm9yRWFjaCgoZ3JvdXBOb2RlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXBOb2RlLmNoZWNrZWQpXHJcbiAgICAgICAgICBncm91cE5vZGUubm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50cmF2ZXJzZShjaGlsZE5vZGUsIGN1cnJlbnRFbnRpdHkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKG5vZGUuY2hlY2tlZCkge1xyXG4gICAgICAgIGxldCB0YWJsZVR5cGUgPSB0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKHRoaXMudGFibGVOYW1lKTtcclxuICAgICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGFibGVUeXBlLCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgdGhpcy5nZXRQcm90b3R5cGVQcm9wZXJ0aWVzKG5ld0VudGl0eSkuZm9yRWFjaCgocHJvcGVydHlOYW1lKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eUlzQWxsb3dlZChwcm9wZXJ0eU5hbWUsIG5vZGUudGFibGVOYW1lKSkge1xyXG4gICAgICAgICAgICBuZXdFbnRpdHlbcHJvcGVydHlOYW1lIGFzIE9iamVjdEtleV0gPSBub2RlLmVudGl0eVtwcm9wZXJ0eU5hbWVdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBuZXdFbnRpdHkuc2V0UHJvcGVydHkhKCdfYXNzb2NpYXRlZERhdGFDYWNoZWQnLCB0cnVlKTtcclxuXHJcbiAgICAgICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbFRhYmxlTG9va3VwLmxvb2t1cC5nZXQobm9kZS50YWJsZU5hbWUpO1xyXG4gICAgICAgIGN1cnJlbnRFbnRpdHlbJ28nICsgY2hpbGRMb29rdXAhLnBsdXJhbE5hbWVdLnB1c2gobmV3RW50aXR5KTtcclxuICAgICAgICBsZXQgY2hpbGROb2RlcyA9IG5vZGUubm9kZXM7XHJcbiAgICAgICAgY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkTm9kZS5jaGVja2VkKVxyXG4gICAgICAgICAgICBjaGlsZE5vZGUubm9kZXMuZm9yRWFjaCgoZ3JvdXBOb2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRyYXZlcnNlKGdyb3VwTm9kZSwgbmV3RW50aXR5KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwcml2YXRlIGdldERhdGFGb3JDbG9uaW5nID0gKCkgPT4ge1xyXG4gICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5jbG9uZSh7XHJcbiAgICAgIHJlZjogdGhpcy5lbnRpdHkuUmVmLFxyXG4gICAgICB0YWJsZU5hbWU6IHRoaXMudGFibGVOYW1lXHJcbiAgICB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVRyZWUgPSByZXNwb25zZS5Db250ZW50WzBdO1xyXG4gICAgICAgIHRoaXMuYnVpbGRDbG9uZVRyZWUodGhpcy5kYXRhVHJlZSwgdGhpcy5yb290Tm9kZSk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZ01lc3NhZ2UgPSAnRm9ybWF0dGluZyBkYXRhLi4uKDAvJyArIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggKyAnKSByZWNvcmRzJztcclxuICAgICAgICB0aGlzLmFzeW5jRm9yRWFjaFJlY29yZElkKHRoaXMuY2hpbGRGbGF0TGlzdCwgdGhpcy5mZXRjaFJlY29yZElkKS50aGVuKHRoaXMuZG9uZSk7XHJcblxyXG4gICAgICAgIHRoaXMuZGlzcGxheVRyZWUgPSBbdGhpcy5yb290Tm9kZV07XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdlcnJvcicsIHRoaXMudWlOb3RpZmljYXRpb24uZXJyb3IoJ1NlcnZlciBFcnJvcjogJyArIGV4LnN0YXR1cywgW2V4LmVycm9yLk1lc3NhZ2VdKSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsb25lID0gKCkgPT4ge1xyXG4gICAgbGV0IGNvcGllcyA9IHRoaXMuc2VsZWN0ZWROdW1iZXJPZkNvcGllcy52YWx1ZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29waWVzOyBpKyspIHtcclxuICAgICAgbGV0IHRhYmxlVHlwZSA9IHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUodGhpcy50YWJsZU5hbWUpO1xyXG4gICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGFibGVUeXBlLCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgbmV3RW50aXR5O1xyXG4gICAgICB0aGlzLmdldFByb3RvdHlwZVByb3BlcnRpZXModGhpcy5lbnRpdHkpLmZvckVhY2goKHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHlJc0FsbG93ZWQocHJvcGVydHlOYW1lLCB0aGlzLnRhYmxlTmFtZSkpIHtcclxuICAgICAgICAgIG5ld0VudGl0eVtwcm9wZXJ0eU5hbWUgYXMgT2JqZWN0S2V5XSA9IHRoaXMuZW50aXR5W3Byb3BlcnR5TmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIG5ld0VudGl0eS5zZXRQcm9wZXJ0eSEoJ19hc3NvY2lhdGVkRGF0YUNhY2hlZCcsIHRydWUpO1xyXG5cclxuICAgICAgdGhpcy50cmF2ZXJzZSh0aGlzLmRpc3BsYXlUcmVlWzBdLCBuZXdFbnRpdHkpO1xyXG4gICAgICAvL3RoaXMudmlldy5kYXRhLmFkZChuZXdFbnRpdHkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53aW5kb3dFdmVudEhhbmRsZXIuY2xvc2UoKTtcclxuICB9O1xyXG5cclxuICBvbkNhbmNlbCA9ICgpID0+IHtcclxuICAgIHRoaXMud2luZG93RXZlbnRIYW5kbGVyLmNsb3NlKCk7XHJcbiAgfTtcclxuXHJcbiAgb25FeHBhbmRDbGlja2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jaGlsZEZsYXRMaXN0LmZpbmQoKG5vZGU6IE5vZGUpID0+IHsgbm9kZS5zaG93RW50aXRpZXMgPSB0cnVlOyB9KTtcclxuICB9XHJcbiAgICAgXHJcbiAgb25Db2xsYXBzZUNsaWNrZWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNoaWxkRmxhdExpc3QuZmluZCgobm9kZTogTm9kZSkgPT4geyBub2RlLnNob3dFbnRpdGllcyA9IGZhbHNlOyB9KTtcclxuICB9XHJcblxyXG4gIG9uTnVtYmVyT2ZDb3BpZXNDaGFuZ2VkID0gKGV2ZW50OiBhbnkpID0+IHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudGFibGVOYW1lID0gdGhpcy52aWV3LndpbmRvdy50YWJsZU5hbWU7XHJcbiAgICB0aGlzLmVudGl0aWVzID0gdGhpcy52aWV3LmVudGl0aWVzIGFzIGFueTtcclxuICAgIHRoaXMuZW50aXR5ID0gdGhpcy5lbnRpdGllc1t0aGlzLnZpZXcuZW50aXR5SW5kZXhdO1xyXG4gICAgdGhpcy5yb290Tm9kZSA9IG5ldyBOb2RlKG51bGwsIHRoaXMudGFibGVOYW1lLCB0aGlzLnRhYmxlTmFtZSwgZmFsc2UsIHRydWUsIG51bGwsIG51bGwsIHRydWUsIG51bGwsIG51bGwpO1xyXG4gICAgdGhpcy5zZXRFbnRpdHlEaXNwbGF5VmFsdWVzKHRoaXMudmlldy53aW5kb3cudGFibGVOYW1lKTtcclxuICAgIHRoaXMuZ2V0RGF0YUZvckNsb25pbmcoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kYXRhVHJlZS5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5mbGF0TGlzdC5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5jaGlsZEZsYXRMaXN0Lmxlbmd0aCA9IDA7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBOb2RlIHtcclxuICByZWY6IG51bWJlciB8IG51bGw7XHJcbiAgdGFibGVOYW1lOiBzdHJpbmc7XHJcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcclxuICBjaGVja2VkOiBib29sZWFuO1xyXG4gIGNoaWxkOiBhbnk7XHJcbiAgY2hpbGROb2RlczogYW55O1xyXG4gIHNob3dFbnRpdGllczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBhdGhGcm9tUm9vdDogc3RyaW5nIHwgbnVsbDtcclxuICBub2RlczogTm9kZVtdID0gW107XHJcbiAgcm9vdDogYW55O1xyXG4gIHBhcmVudDogYW55O1xyXG4gIGVudGl0eTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHJlZjogbnVtYmVyIHwgbnVsbCxcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZyxcclxuICAgIGNoaWxkOiBhbnksXHJcbiAgICBjaGVja2VkOiBib29sZWFuLFxyXG4gICAgY2hpbGRFbnRpdGllczogYW55LFxyXG4gICAgcGF0aEZyb21Sb290OiBzdHJpbmcgfCBudWxsLFxyXG4gICAgcm9vdDogYm9vbGVhbixcclxuICAgIHBhcmVudDogYW55LFxyXG4gICAgZW50aXR5OiBhbnkpIHtcclxuICAgIHRoaXMucmVmID0gcmVmO1xyXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XHJcbiAgICB0aGlzLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XHJcbiAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgdGhpcy5jaGlsZCA9IGNoaWxkO1xyXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGRFbnRpdGllcztcclxuICAgIHRoaXMucGF0aEZyb21Sb290ID0gcGF0aEZyb21Sb290O1xyXG4gICAgdGhpcy5yb290ID0gcm9vdDtcclxuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xyXG4gICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XHJcbiAgfVxyXG5cclxuICBvbkdyb3VwRGlzcGxheSA9ICgpID0+IHtcclxuICAgIHZhciBjdXJyZW50VmFsdWUgPSB0aGlzLnNob3dFbnRpdGllcyA9ICF0aGlzLnNob3dFbnRpdGllcztcclxuICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgIG4uc2hvd0VudGl0aWVzID0gY3VycmVudFZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrZWRDaGFuZ2VkID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tlZCkge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBwID0gdGhpcy5wYXJlbnQ7XHJcbiAgICAgICAgd2hpbGUgKHApIHtcclxuICAgICAgICAgIHAuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICBwID0gcC5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7IG4uY2hlY2tlZCA9IHRydWU7IH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBhbGxVbmNoZWNrZWQgPSB0aGlzLnBhcmVudC5ub2Rlcy5ldmVyeSgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbi5jaGVja2VkID09PSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoYWxsVW5jaGVja2VkKVxyXG4gICAgICAgICAgdGhpcy5wYXJlbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB1bmNoZWNrQ2hpbGROb2RlcyA9IChub2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgIG5vZGUubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgICBuLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5maW5kKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgbi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIjxkaXY+XHJcbiAgPHRydS10b29sYmFyPlxyXG4gICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCInZXhwYW5kLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0V4cGFuZCdcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIChvbkNsaWNrKT1cIm9uRXhwYW5kQ2xpY2tlZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIidjb2xsYXBzZS1pY29uJ1wiIFt0b29sdGlwXT1cIidDb2xsYXBzZSdcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIChvbkNsaWNrKT1cIm9uQ29sbGFwc2VDbGlja2VkKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgIDx0cnUtdG9vbGJhci10ZXh0IFt0ZXh0XT1cIidDb3BpZXM6J1wiPjwvdHJ1LXRvb2xiYXItdGV4dD5cclxuICAgIDx0cnUtdG9vbGJhci1kcm9wZG93biBbb3B0aW9uc109XCJudW1iZXJPZkNvcGllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE9wdGlvbildPVwic2VsZWN0ZWROdW1iZXJPZkNvcGllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25OdW1iZXJPZkNvcGllc0NoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgPC90cnUtdG9vbGJhci1kcm9wZG93bj5cclxuICA8L3RydS10b29sYmFyPlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGlhbG9nLWNvbnRlbnQgY2xvbmVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXBOb2RlUmVuZGVyZXIgbGV0LWRhdGE+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhZGF0YS5jaGlsZCB8fCBkYXRhLnNob3dFbnRpdGllc1wiXHJcbiAgICAgICAgICAgY2xhc3M9XCJjbG9uZS1tb2RhbC10cmVlLWdyb3VwXCI+XHJcbiAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGEub25DaGVja2VkQ2hhbmdlZCgpXCJcclxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGEucm9vdFwiXHJcbiAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIC8+XHJcbiAgICAgICAgPGEgKGNsaWNrKT1cImRhdGEub25Hcm91cERpc3BsYXlOYW1lQ2xpY2tlZCgpXCJcclxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Nsb25lLW1vZGFsLXRyZWUtZ3JvdXAtcm9vdC1uYW1lJzogZGF0YS5yb290IHx8IGRhdGEuY2hpbGR9XCJcclxuICAgICAgICAgICBbbmdTdHlsZV09XCJ7J21heC13aWR0aCc6IGRhdGEuY2hpbGROb2RlID8gJzMwMHB4JyA6ICdhdXRvJ31cIj57e2RhdGEuZGlzcGxheU5hbWV9fTwvYT5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFkYXRhLnJvb3QgJiYgIWRhdGEuY2hpbGRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtdHJlZS1ncm91cC1jb3VudFwiPih7e2RhdGEubm9kZXMubGVuZ3RofX0pPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHVsPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkYXRhLm5vZGVzOyBsZXQgbGFzdCA9IGxhc3RcIiBbYXR0ci5yZWFkeV09XCJsYXN0ID8gdHJ1ZSA6IGZhbHNlXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBOb2RlUmVuZGVyZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGF9XCI+PC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ01lc3NhZ2VcIlxyXG4gICAgICAgICBjbGFzcz1cImNsb25lLW1vZGFsLWxvYWRpbmdcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjbG9uZS1tb2RhbC1sb2FkaW5nLW1lc3NhZ2VcIj57e2xvYWRpbmdNZXNzYWdlfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkb25lUHJvY2Vzc2luZ1wiXHJcbiAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtdHJlZVwiPlxyXG4gICAgICA8dWw+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRpc3BsYXlUcmVlOyBsZXQgbGFzdCA9IGxhc3RcIiBbYXR0ci5yZWFkeV09XCJsYXN0ID8gdHJ1ZSA6IGZhbHNlXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBOb2RlUmVuZGVyZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGF9XCI+PC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGlhbG9nLWZvb3RlclwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkNsb25lKClcIiAoa2V5dXAuZW50ZXIpPVwib25DbG9uZSgpXCI+Q2xvbmU8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNsb25lLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xvbmUtdmlldy90cnUtY2xvbmUtdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jbG9uZS12aWV3L3RydS1jbG9uZS12aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQWtCN0QsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUFXO0lBd0MvQjtJQUNBO0lBQ0Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBN0NWLElBQ0ksS0FBSyxDQUFDLE9BQWdCO1FBQ3hCLElBQUksT0FBTztZQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxHQUFZLElBQUksQ0FBQztJQUN4QixjQUFjLEdBQVcsa0NBQWtDLENBQUM7SUFDNUQsY0FBYyxDQUFrQztJQUNoRCxzQkFBc0IsQ0FBNEI7SUFDbEQsY0FBYyxHQUFHLElBQUksQ0FBQztJQUN0QixRQUFRLEdBQWdCLElBQUksQ0FBQztJQUM3QixrQkFBa0IsR0FBRztRQUNuQixZQUFZO1FBQ1osU0FBUztRQUNULFlBQVk7UUFDWixTQUFTO1FBQ1QsUUFBUTtRQUNSLHlCQUF5QjtRQUN6QixjQUFjO1FBQ2QsdUJBQXVCO1FBQ3ZCLGVBQWU7UUFDZixjQUFjO1FBQ2QsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlO1FBQ2YsYUFBYTtRQUNiLGFBQWE7UUFDYix1QkFBdUI7UUFDdkIsS0FBSztLQUNOLENBQUM7SUFDRixR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Q0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7b0JBQ3pCLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyQixDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcnVWaWV3QmFzZSB9IGZyb20gJy4uLy4uL2Jhc2Utdmlld3MvdHJ1LXZpZXctYmFzZSc7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi90b29sYmFyL2NsYXNzZXMvdHJ1LXRvb2xiYXItZHJvcGRvd24tb3B0aW9uJztcclxuaW1wb3J0IHsgVHJ1VGV4dE1hbmFnZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdGV4dC1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vZGVza3RvcC9zZXJ2aWNlcy90cnUtd2luZG93LWV2ZW50LWhhbmRsZXInO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFRhYmxlTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXRhYmxlLWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydVVpTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXVpLW5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFRydU1vZGVsUHJvcGVydHlMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtcHJvcGVydHktbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxUeXBlTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXR5cGUtbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxOYXZpZ2F0aW9uUHJvcGVydGllc0xvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC1uYXZpZ2F0aW9uLXByb3BlcnRpZXMtbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1TmF2aWdhdGlvblByb3BlcnR5Q29uZmlnIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90cnUtbmF2aWdhdGlvbi1wcm9wZXJ0eS1jb25maWcnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWNsb25lLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtY2xvbmUtdmlldy5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cnUtY2xvbmUtdmlldy5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1Q2xvbmVWaWV3IGV4dGVuZHMgVHJ1Vmlld0Jhc2Uge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCByZWFkeShpc1JlYWR5OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaXNSZWFkeSkgdGhpcy5kb25lKCk7XHJcbiAgfVxyXG5cclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBsb2FkaW5nTWVzc2FnZTogc3RyaW5nID0gJ1NlYXJjaGluZyBmb3IgcmVsYXRlZCByZWNvcmRzLi4uJztcclxuICBudW1iZXJPZkNvcGllczogQXJyYXk8SVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbj5cclxuICBzZWxlY3RlZE51bWJlck9mQ29waWVzOiBJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uO1xyXG4gIGNvbnRleHRGaWx0ZXJzID0gbnVsbDtcclxuICByb290Tm9kZTogTm9kZSB8IG51bGwgPSBudWxsOyBcclxuICBpZ25vcmVQcm9wZXJ0eUxpc3QgPSBbXHJcbiAgICAnQ3JlYXRlZFJlZicsXHJcbiAgICAnQ3JlYXRlZCcsXHJcbiAgICAnVXBkYXRlZFJlZicsXHJcbiAgICAnVXBkYXRlZCcsXHJcbiAgICAncm93dmVyJyxcclxuICAgICdfY3VzdG9tVmFsaWRhdGlvbkVycm9ycycsXHJcbiAgICAnZW50aXR5QXNwZWN0JyxcclxuICAgICdfYXNzb2NpYXRlZERhdGFDYWNoZWQnLFxyXG4gICAgJ19iYWNraW5nU3RvcmUnLFxyXG4gICAgJ19zZXREZWZhdWx0cycsXHJcbiAgICAnXyR0eXBlTmFtZScsXHJcbiAgICAnZW50aXR5VHlwZScsXHJcbiAgICAnXyRpbnRlcmNlcHRvcicsXHJcbiAgICAnZ2V0UHJvcGVydHknLFxyXG4gICAgJ3NldFByb3BlcnR5JyxcclxuICAgICdfcGVuZGluZ0JhY2tpbmdTdG9yZXMnLFxyXG4gICAgJ1JlZidcclxuICBdO1xyXG4gIGRhdGFUcmVlID0gW107XHJcbiAgZmxhdExpc3Q6IEFycmF5PE5vZGU+ID0gW107XHJcbiAgY2hpbGRGbGF0TGlzdDogQXJyYXk8Tm9kZT4gPSBbXTtcclxuICBwcm9jZXNzZWRDb3VudDogbnVtYmVyID0gMDtcclxuICBkb25lUHJvY2Vzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpc3BsYXlUcmVlID0gW3RoaXMucm9vdE5vZGVdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB0ZXh0TWFuYWdlcjogVHJ1VGV4dE1hbmFnZXIsXHJcbiAgICBwcm90ZWN0ZWQgd2luZG93RXZlbnRIYW5kbGVyOiBUcnVXaW5kb3dFdmVudEhhbmRsZXIsXHJcbiAgICBwcml2YXRlIGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCxcclxuICAgIHByaXZhdGUgbW9kZWxUYWJsZUxvb2t1cDogVHJ1TW9kZWxUYWJsZUxvb2t1cCxcclxuICAgIHByaXZhdGUgbW9kZWxQcm9wZXJ0eUxvb2t1cDogVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCxcclxuICAgIHByaXZhdGUgbW9kZWxUeXBlTG9va3VwOiBUcnVNb2RlbFR5cGVMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsTmF2aWdhdGlvblByb3BlcnRpZXNMb29rdXA6IFRydU1vZGVsTmF2aWdhdGlvblByb3BlcnRpZXNMb29rdXAsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvbikge1xyXG4gICAgc3VwZXIodGV4dE1hbmFnZXIsIHdpbmRvd0V2ZW50SGFuZGxlcik7XHJcbiAgICB0aGlzLm51bWJlck9mQ29waWVzID0gdGhpcy5nZXROdW1iZXJPZkNvcGllcygpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE51bWJlck9mQ29waWVzID0gdGhpcy5udW1iZXJPZkNvcGllc1swXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TnVtYmVyT2ZDb3BpZXMgPSAoKTogQXJyYXk8SVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbj4gPT4ge1xyXG4gICAgbGV0IGNvcGllczogQXJyYXk8SVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbj4gPSBbXTtcclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDI1OyBpKyspIHtcclxuICAgICAgY29waWVzLnB1c2goe1xyXG4gICAgICAgIHZhbHVlOiBpLFxyXG4gICAgICAgIGxhYmVsOiBpLnRvU3RyaW5nKClcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29waWVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9wZXJ0eUlzQWxsb3dlZCA9IChwcm9wZXJ0eU5hbWU6IHN0cmluZywgdGFibGVOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09IHRhYmxlTmFtZSArICdSZWYnKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAocHJvcGVydHlOYW1lLnN0YXJ0c1dpdGgoJ28nKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgbGV0IHByb3BlcnR5ID0gdGhpcy5tb2RlbFByb3BlcnR5TG9va3VwLmxvb2t1cC5nZXQocHJvcGVydHlOYW1lKTtcclxuICAgIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5leGNsdWRlRnJvbUNsb25pbmcpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICh0aGlzLmlnbm9yZVByb3BlcnR5TGlzdC5zb21lKGZ1bmN0aW9uIChwcm9wZXJ0eVRvSWdub3JlKSB7IHJldHVybiBwcm9wZXJ0eVRvSWdub3JlID09PSBwcm9wZXJ0eU5hbWU7IH0pKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSAgZ2V0UHJvdG90eXBlUHJvcGVydGllcyA9IChvYmo6IGFueSkgPT4ge1xyXG4gICAgdmFyIHJlc3VsdCA9IFtdO1xyXG4gICAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHtcclxuICAgICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcclxuICAgICAgICByZXN1bHQucHVzaChwcm9wKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q2hpbGRQcm9wZXJ0aWVzRm9yQ3VycmVudEVudGl0eSA9IChjdXJyZW50RW50aXR5OiBhbnkpID0+IHtcclxuICAgIC8vdmFyIHByb3BlcnR5TmFtZXMgPSBPYmplY3Qua2V5cyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VycmVudEVudGl0eSkpO1xyXG4gICAgbGV0IGVudGl0eU5hbWUgPSB0aGlzLmdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUoY3VycmVudEVudGl0eS4kdHlwZSk7XHJcbiAgICBsZXQgY2hpbGRMb29rdXAgPSB0aGlzLm1vZGVsTmF2aWdhdGlvblByb3BlcnRpZXNMb29rdXAubG9va3VwLmdldChlbnRpdHlOYW1lKSBhcyBUcnVOYXZpZ2F0aW9uUHJvcGVydHlDb25maWdbXTtcclxuICAgIGxldCBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmtleXMoY3VycmVudEVudGl0eSk7XHJcbiAgICBsZXQgbmF2aWdhdGlvblByb3BlcnR5TmFtZXMgPSBwcm9wZXJ0eU5hbWVzLmZpbHRlcigobikgPT4geyByZXR1cm4gbi5zdGFydHNXaXRoKCdvJyk7IH0pO1xyXG4gICAgbGV0IGNoaWxkTmF2aWdhdGlvblByb3BlcnR5TmFtZXMgPSBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lcy5maWx0ZXIoKG4pID0+IHtcclxuICAgICAgcmV0dXJuIGNoaWxkTG9va3VwLnNvbWUoKGxvb2t1cDogYW55KSA9PiB7IHJldHVybiBsb29rdXAubmFtZSA9PT0gbjsgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgY2hpbGRQcm9wZXJ0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBjaGlsZE5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzLmZpbHRlcihmdW5jdGlvbiAobikge1xyXG4gICAgICBpZiAoY3VycmVudEVudGl0eVtuXSAmJiBjdXJyZW50RW50aXR5W25dLmxlbmd0aCkgY2hpbGRQcm9wZXJ0aWVzLnB1c2goY3VycmVudEVudGl0eVtuXSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gY2hpbGRQcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lID0gKHR5cGVOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgIHZhciBwMXMgPSB0eXBlTmFtZS5zcGxpdCgnLCcpWzBdO1xyXG4gICAgdmFyIHAycyA9IHAxcy5zcGxpdCgnLicpO1xyXG4gICAgcmV0dXJuIHAyc1twMnMubGVuZ3RoIC0gMV07XHJcbiAgfVxyXG5cclxucHJpdmF0ZSBidWlsZENsb25lVHJlZSA9IChjdXJyZW50RW50aXR5OiBhbnksIG5vZGU6IGFueSkgPT4ge1xyXG4gIHZhciBjaGlsZFByb3BlcnRpZXMgPSB0aGlzLmdldENoaWxkUHJvcGVydGllc0ZvckN1cnJlbnRFbnRpdHkoY3VycmVudEVudGl0eSk7XHJcbiAgY2hpbGRQcm9wZXJ0aWVzLmZvckVhY2goKGNoaWxkRW50aXRpZXM6IGFueSkgPT4ge1xyXG4gICAgbGV0IHR5cGUgPSB0aGlzLmdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUoY2hpbGRFbnRpdGllc1swXS4kdHlwZSk7XHJcbiAgICBsZXQgY2hpbGRMb29rdXAgPSB0aGlzLm1vZGVsVGFibGVMb29rdXAubG9va3VwLmdldCh0eXBlKTtcclxuICAgIGxldCBncm91cE5vZGUgPSBuZXcgTm9kZShcclxuICAgICAgbnVsbCxcclxuICAgICAgY2hpbGRFbnRpdGllc1swXS5jb25zdHJ1Y3Rvci5uYW1lLFxyXG4gICAgICBjaGlsZExvb2t1cD8ucGx1cmFsTGFiZWwgYXMgc3RyaW5nLFxyXG4gICAgICBmYWxzZSxcclxuICAgICAgdHJ1ZSxcclxuICAgICAgW10sXHJcbiAgICAgICcnLFxyXG4gICAgICBmYWxzZSxcclxuICAgICAgbm9kZSxcclxuICAgICAgbnVsbFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmZsYXRMaXN0LnB1c2goZ3JvdXBOb2RlKTtcclxuXHJcbiAgICBjaGlsZEVudGl0aWVzLmZvckVhY2goKGNoaWxkRW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHR5cGUgPSB0aGlzLmdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUoY2hpbGRFbnRpdHkuJHR5cGUpO1xyXG4gICAgICBsZXQgY2hpbGROb2RlID0gbmV3IE5vZGUoXHJcbiAgICAgICAgY2hpbGRFbnRpdHlbdHlwZSArICdSZWYnXSxcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICAgIFtdLFxyXG4gICAgICAgICcnLFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIGdyb3VwTm9kZSxcclxuICAgICAgICBjaGlsZEVudGl0eVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5jaGlsZEZsYXRMaXN0LnB1c2goY2hpbGROb2RlKTtcclxuICAgICAgZ3JvdXBOb2RlLm5vZGVzLnB1c2goY2hpbGROb2RlKTtcclxuICAgICAgdGhpcy5idWlsZENsb25lVHJlZShjaGlsZEVudGl0eSwgY2hpbGROb2RlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIG5vZGUubm9kZXMucHVzaChncm91cE5vZGUpO1xyXG4gIH0pO1xyXG59XHJcblxyXG4gIHByaXZhdGUgYXN5bmNGb3JFYWNoUmVjb3JkSWQgPSAoYXJyOiBhbnksIGNiOiBhbnkpID0+IHtcclxuICAgIHJldHVybiBhcnIucmVkdWNlKChwOiBhbnksIGM6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gcC50aGVuKCgpID0+IGNiKGMpKTtcclxuICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hSZWNvcmRJZCA9IChjaGlsZDogYW55KSA9PiB7XHJcbiAgICB2YXIgYyA9IGNoaWxkO1xyXG4gICAgdmFyIGRhdGEgPSB7XHJcbiAgICAgIHJlZjogYy5yZWYsXHJcbiAgICAgIHRhYmxlTmFtZTogYy50YWJsZU5hbWVcclxuICAgIH07XHJcbiAgICBkYXRhID0gdGhpcy50ZXh0TWFuYWdlci5mb3JtYXRBc1VybFBhcmFtZXRlcnMoZGF0YSk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBhbnkpID0+IHtcclxuICAgICAgYy5kaXNwbGF5TmFtZSA9IGNoaWxkLmVudGl0eS5ISUQ7XHJcbiAgICAgIHRoaXMucHJvY2Vzc2VkQ291bnQrKztcclxuICAgICAgdGhpcy5sb2FkaW5nTWVzc2FnZSA9ICdGb3JtYXR0aW5nIGRhdGEuLi5wcm9jZXNzZWQgKCcgKyB0aGlzLnByb2Nlc3NlZENvdW50ICsgJy8nICsgdGhpcy5jaGlsZEZsYXRMaXN0Lmxlbmd0aCArICcpIHJlY29yZHMnO1xyXG4gICAgICBpZiAodGhpcy5wcm9jZXNzZWRDb3VudCA+PSB0aGlzLmNoaWxkRmxhdExpc3QubGVuZ3RoKVxyXG4gICAgICAgIHRoaXMubG9hZGluZ01lc3NhZ2UgPSAnUmVuZGVyaW5nIHRyZWUuLi4nO1xyXG4gICAgICByZXNvbHZlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZG9uZSA9ICgpID0+IHtcclxuICAgIHRoaXMuZG9uZVByb2Nlc3NpbmcgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmF2ZXJzZSA9IChub2RlOiBhbnksIGN1cnJlbnRFbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgdmFyIGdyb3VwID0gIW5vZGUuY2hpbGQ7XHJcbiAgICBpZiAoZ3JvdXApIHtcclxuICAgICAgdmFyIGdyb3VwTm9kZXMgPSBub2RlLm5vZGVzO1xyXG4gICAgICBncm91cE5vZGVzLmZvckVhY2goKGdyb3VwTm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGdyb3VwTm9kZS5jaGVja2VkKVxyXG4gICAgICAgICAgZ3JvdXBOb2RlLm5vZGVzLmZvckVhY2goKGNoaWxkTm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhdmVyc2UoY2hpbGROb2RlLCBjdXJyZW50RW50aXR5KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChub2RlLmNoZWNrZWQpIHtcclxuICAgICAgICBsZXQgdGFibGVUeXBlID0gdGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgICAgICAgbGV0IG5ld0VudGl0eSA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKHRhYmxlVHlwZSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgbmV3RW50aXR5O1xyXG4gICAgICAgIHRoaXMuZ2V0UHJvdG90eXBlUHJvcGVydGllcyhuZXdFbnRpdHkpLmZvckVhY2goKHByb3BlcnR5TmFtZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMucHJvcGVydHlJc0FsbG93ZWQocHJvcGVydHlOYW1lLCBub2RlLnRhYmxlTmFtZSkpIHtcclxuICAgICAgICAgICAgbmV3RW50aXR5W3Byb3BlcnR5TmFtZSBhcyBPYmplY3RLZXldID0gbm9kZS5lbnRpdHlbcHJvcGVydHlOYW1lXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbmV3RW50aXR5LnNldFByb3BlcnR5ISgnX2Fzc29jaWF0ZWREYXRhQ2FjaGVkJywgdHJ1ZSk7XHJcblxyXG4gICAgICAgIGxldCBjaGlsZExvb2t1cCA9IHRoaXMubW9kZWxUYWJsZUxvb2t1cC5sb29rdXAuZ2V0KG5vZGUudGFibGVOYW1lKTtcclxuICAgICAgICBjdXJyZW50RW50aXR5WydvJyArIGNoaWxkTG9va3VwIS5wbHVyYWxOYW1lXS5wdXNoKG5ld0VudGl0eSk7XHJcbiAgICAgICAgbGV0IGNoaWxkTm9kZXMgPSBub2RlLm5vZGVzO1xyXG4gICAgICAgIGNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGlsZE5vZGUuY2hlY2tlZClcclxuICAgICAgICAgICAgY2hpbGROb2RlLm5vZGVzLmZvckVhY2goKGdyb3VwTm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy50cmF2ZXJzZShncm91cE5vZGUsIG5ld0VudGl0eSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhRm9yQ2xvbmluZyA9ICgpID0+IHtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuY2xvbmUoe1xyXG4gICAgICByZWY6IHRoaXMuZW50aXR5LlJlZixcclxuICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZVxyXG4gICAgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFUcmVlID0gcmVzcG9uc2UuQ29udGVudFswXTtcclxuICAgICAgICB0aGlzLmJ1aWxkQ2xvbmVUcmVlKHRoaXMuZGF0YVRyZWUsIHRoaXMucm9vdE5vZGUpO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJ0Zvcm1hdHRpbmcgZGF0YS4uLigwLycgKyB0aGlzLmNoaWxkRmxhdExpc3QubGVuZ3RoICsgJykgcmVjb3Jkcyc7XHJcbiAgICAgICAgdGhpcy5hc3luY0ZvckVhY2hSZWNvcmRJZCh0aGlzLmNoaWxkRmxhdExpc3QsIHRoaXMuZmV0Y2hSZWNvcmRJZCkudGhlbih0aGlzLmRvbmUpO1xyXG5cclxuICAgICAgICB0aGlzLmRpc3BsYXlUcmVlID0gW3RoaXMucm9vdE5vZGVdO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGV4OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnZXJyb3InLCB0aGlzLnVpTm90aWZpY2F0aW9uLmVycm9yKCdTZXJ2ZXIgRXJyb3I6ICcgKyBleC5zdGF0dXMsIFtleC5lcnJvci5NZXNzYWdlXSkpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DbG9uZSA9ICgpID0+IHtcclxuICAgIGxldCBjb3BpZXMgPSB0aGlzLnNlbGVjdGVkTnVtYmVyT2ZDb3BpZXMudmFsdWU7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvcGllczsgaSsrKSB7XHJcbiAgICAgIGxldCB0YWJsZVR5cGUgPSB0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKHRoaXMudGFibGVOYW1lKTtcclxuICAgICAgbGV0IG5ld0VudGl0eSA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKHRhYmxlVHlwZSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIG5ld0VudGl0eTtcclxuICAgICAgdGhpcy5nZXRQcm90b3R5cGVQcm9wZXJ0aWVzKHRoaXMuZW50aXR5KS5mb3JFYWNoKChwcm9wZXJ0eU5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5SXNBbGxvd2VkKHByb3BlcnR5TmFtZSwgdGhpcy50YWJsZU5hbWUpKSB7XHJcbiAgICAgICAgICBuZXdFbnRpdHlbcHJvcGVydHlOYW1lIGFzIE9iamVjdEtleV0gPSB0aGlzLmVudGl0eVtwcm9wZXJ0eU5hbWVdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBuZXdFbnRpdHkuc2V0UHJvcGVydHkhKCdfYXNzb2NpYXRlZERhdGFDYWNoZWQnLCB0cnVlKTtcclxuXHJcbiAgICAgIHRoaXMudHJhdmVyc2UodGhpcy5kaXNwbGF5VHJlZVswXSwgbmV3RW50aXR5KTtcclxuICAgICAgLy90aGlzLnZpZXcuZGF0YS5hZGQobmV3RW50aXR5KTtcclxuICAgIH1cclxuICAgIHRoaXMud2luZG93RXZlbnRIYW5kbGVyLmNsb3NlKCk7XHJcbiAgfTtcclxuXHJcbiAgb25DYW5jZWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLndpbmRvd0V2ZW50SGFuZGxlci5jbG9zZSgpO1xyXG4gIH07XHJcblxyXG4gIG9uRXhwYW5kQ2xpY2tlZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5maW5kKChub2RlOiBOb2RlKSA9PiB7IG5vZGUuc2hvd0VudGl0aWVzID0gdHJ1ZTsgfSk7XHJcbiAgfVxyXG4gICAgIFxyXG4gIG9uQ29sbGFwc2VDbGlja2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jaGlsZEZsYXRMaXN0LmZpbmQoKG5vZGU6IE5vZGUpID0+IHsgbm9kZS5zaG93RW50aXRpZXMgPSBmYWxzZTsgfSk7XHJcbiAgfVxyXG5cclxuICBvbk51bWJlck9mQ29waWVzQ2hhbmdlZCA9IChldmVudDogYW55KSA9PiB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRhYmxlTmFtZSA9IHRoaXMudmlldy53aW5kb3cudGFibGVOYW1lO1xyXG4gICAgdGhpcy5lbnRpdGllcyA9IHRoaXMudmlldy5lbnRpdGllcyBhcyBhbnk7XHJcbiAgICB0aGlzLmVudGl0eSA9IHRoaXMuZW50aXRpZXNbdGhpcy52aWV3LmVudGl0eUluZGV4XTtcclxuICAgIHRoaXMucm9vdE5vZGUgPSBuZXcgTm9kZShudWxsLCB0aGlzLnRhYmxlTmFtZSwgdGhpcy50YWJsZU5hbWUsIGZhbHNlLCB0cnVlLCBudWxsLCBudWxsLCB0cnVlLCBudWxsLCBudWxsKTtcclxuICAgIHRoaXMuc2V0RW50aXR5RGlzcGxheVZhbHVlcyh0aGlzLnZpZXcud2luZG93LnRhYmxlTmFtZSk7XHJcbiAgICB0aGlzLmdldERhdGFGb3JDbG9uaW5nKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGF0YVRyZWUubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuZmxhdExpc3QubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggPSAwO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgTm9kZSB7XHJcbiAgcmVmOiBudW1iZXIgfCBudWxsO1xyXG4gIHRhYmxlTmFtZTogc3RyaW5nO1xyXG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgY2hlY2tlZDogYm9vbGVhbjtcclxuICBjaGlsZDogYW55O1xyXG4gIGNoaWxkTm9kZXM6IGFueTtcclxuICBzaG93RW50aXRpZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXRoRnJvbVJvb3Q6IHN0cmluZyB8IG51bGw7XHJcbiAgbm9kZXM6IE5vZGVbXSA9IFtdO1xyXG4gIHJvb3Q6IGFueTtcclxuICBwYXJlbnQ6IGFueTtcclxuICBlbnRpdHk6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwsXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXHJcbiAgICBjaGlsZDogYW55LFxyXG4gICAgY2hlY2tlZDogYm9vbGVhbixcclxuICAgIGNoaWxkRW50aXRpZXM6IGFueSxcclxuICAgIHBhdGhGcm9tUm9vdDogc3RyaW5nIHwgbnVsbCxcclxuICAgIHJvb3Q6IGJvb2xlYW4sXHJcbiAgICBwYXJlbnQ6IGFueSxcclxuICAgIGVudGl0eTogYW55KSB7XHJcbiAgICB0aGlzLnJlZiA9IHJlZjtcclxuICAgIHRoaXMudGFibGVOYW1lID0gdGFibGVOYW1lO1xyXG4gICAgdGhpcy5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xyXG4gICAgdGhpcy5jaGVja2VkID0gY2hlY2tlZDtcclxuICAgIHRoaXMuY2hpbGQgPSBjaGlsZDtcclxuICAgIHRoaXMuY2hpbGROb2RlcyA9IGNoaWxkRW50aXRpZXM7XHJcbiAgICB0aGlzLnBhdGhGcm9tUm9vdCA9IHBhdGhGcm9tUm9vdDtcclxuICAgIHRoaXMucm9vdCA9IHJvb3Q7XHJcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcclxuICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xyXG4gIH1cclxuXHJcbiAgb25Hcm91cERpc3BsYXkgPSAoKSA9PiB7XHJcbiAgICB2YXIgY3VycmVudFZhbHVlID0gdGhpcy5zaG93RW50aXRpZXMgPSAhdGhpcy5zaG93RW50aXRpZXM7XHJcbiAgICB0aGlzLm5vZGVzLmZpbmQoKG46IGFueSkgPT4ge1xyXG4gICAgICBuLnNob3dFbnRpdGllcyA9IGN1cnJlbnRWYWx1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGVja2VkQ2hhbmdlZCA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmNoZWNrZWQpIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGQpIHtcclxuICAgICAgICB2YXIgcCA9IHRoaXMucGFyZW50O1xyXG4gICAgICAgIHdoaWxlIChwKSB7XHJcbiAgICAgICAgICBwLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcCA9IHAucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vZGVzLmZpbmQoKG46IGFueSkgPT4geyBuLmNoZWNrZWQgPSB0cnVlOyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGQpIHtcclxuICAgICAgICB2YXIgYWxsVW5jaGVja2VkID0gdGhpcy5wYXJlbnQubm9kZXMuZXZlcnkoKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG4uY2hlY2tlZCA9PT0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGFsbFVuY2hlY2tlZClcclxuICAgICAgICAgIHRoaXMucGFyZW50LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgdW5jaGVja0NoaWxkTm9kZXMgPSAobm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBub2RlLm5vZGVzLmZpbmQoKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB1bmNoZWNrQ2hpbGROb2RlcyhuKTtcclxuICAgICAgICAgICAgbi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICB1bmNoZWNrQ2hpbGROb2RlcyhuKTtcclxuICAgICAgICAgIG4uY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8ZGl2PlxyXG4gIDx0cnUtdG9vbGJhcj5cclxuICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ2V4cGFuZC1pY29uJ1wiIFt0b29sdGlwXT1cIidFeHBhbmQnXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIiAob25DbGljayk9XCJvbkV4cGFuZENsaWNrZWQoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCInY29sbGFwc2UtaWNvbidcIiBbdG9vbHRpcF09XCInQ29sbGFwc2UnXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIiAob25DbGljayk9XCJvbkNvbGxhcHNlQ2xpY2tlZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICA8dHJ1LXRvb2xiYXItdGV4dCBbdGV4dF09XCInQ29waWVzOidcIj48L3RydS10b29sYmFyLXRleHQ+XHJcbiAgICA8dHJ1LXRvb2xiYXItZHJvcGRvd24gW29wdGlvbnNdPVwibnVtYmVyT2ZDb3BpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRPcHRpb24pXT1cInNlbGVjdGVkTnVtYmVyT2ZDb3BpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uTnVtYmVyT2ZDb3BpZXNDaGFuZ2VkKCRldmVudClcIj5cclxuICAgIDwvdHJ1LXRvb2xiYXItZHJvcGRvd24+XHJcbiAgPC90cnUtdG9vbGJhcj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWRpYWxvZy1jb250ZW50IGNsb25lXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgI2dyb3VwTm9kZVJlbmRlcmVyIGxldC1kYXRhPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWRhdGEuY2hpbGQgfHwgZGF0YS5zaG93RW50aXRpZXNcIlxyXG4gICAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtdHJlZS1ncm91cFwiPlxyXG4gICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImRhdGEuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRhLm9uQ2hlY2tlZENoYW5nZWQoKVwiXHJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkYXRhLnJvb3RcIlxyXG4gICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiAvPlxyXG4gICAgICAgIDxhIChjbGljayk9XCJkYXRhLm9uR3JvdXBEaXNwbGF5TmFtZUNsaWNrZWQoKVwiXHJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydjbG9uZS1tb2RhbC10cmVlLWdyb3VwLXJvb3QtbmFtZSc6IGRhdGEucm9vdCB8fCBkYXRhLmNoaWxkfVwiXHJcbiAgICAgICAgICAgW25nU3R5bGVdPVwieydtYXgtd2lkdGgnOiBkYXRhLmNoaWxkTm9kZSA/ICczMDBweCcgOiAnYXV0byd9XCI+e3tkYXRhLmRpc3BsYXlOYW1lfX08L2E+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhZGF0YS5yb290ICYmICFkYXRhLmNoaWxkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNsb25lLW1vZGFsLXRyZWUtZ3JvdXAtY291bnRcIj4oe3tkYXRhLm5vZGVzLmxlbmd0aH19KTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDx1bD5cclxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgZGF0YS5ub2RlczsgbGV0IGxhc3QgPSBsYXN0XCIgW2F0dHIucmVhZHldPVwibGFzdCA/IHRydWUgOiBmYWxzZVwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwTm9kZVJlbmRlcmVyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkYXRhfVwiPjwvZGl2PlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdNZXNzYWdlXCJcclxuICAgICAgICAgY2xhc3M9XCJjbG9uZS1tb2RhbC1sb2FkaW5nXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY2xvbmUtbW9kYWwtbG9hZGluZy1tZXNzYWdlXCI+e3tsb2FkaW5nTWVzc2FnZX19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZG9uZVByb2Nlc3NpbmdcIlxyXG4gICAgICAgICBjbGFzcz1cImNsb25lLW1vZGFsLXRyZWVcIj5cclxuICAgICAgPHVsPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkaXNwbGF5VHJlZTsgbGV0IGxhc3QgPSBsYXN0XCIgW2F0dHIucmVhZHldPVwibGFzdCA/IHRydWUgOiBmYWxzZVwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwTm9kZVJlbmRlcmVyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkYXRhfVwiPjwvZGl2PlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWRpYWxvZy1mb290ZXJcIj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25DbG9uZSgpXCIgKGtleXVwLmVudGVyKT1cIm9uQ2xvbmUoKVwiIFtkaXNhYmxlZF09XCIhcmVhZHlcIj5DbG9uZTwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -5865,12 +5865,14 @@ class TruCloneView extends TruViewBase {
|
|
|
5865
5865
|
this.childFlatList.length = 0;
|
|
5866
5866
|
}
|
|
5867
5867
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruCloneView, deps: [{ token: TruTextManager }, { token: TruWindowEventHandler }, { token: TruDataContext }, { token: TruModelTableLookup }, { token: TruModelPropertyLookup }, { token: TruModelTypeLookup }, { token: TruModelNavigationPropertiesLookup }, { token: TruUiNotification }], target: i0.ɵɵFactoryTarget.Component });
|
|
5868
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruCloneView, selector: "tru-clone-view", usesInheritance: true, ngImport: i0, template: "<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"loading\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"loading\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"loading\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content clone\">\r\n <ng-template #groupNodeRenderer let-data>\r\n <div *ngIf=\"!data.child || data.showEntities\"\r\n class=\"clone-modal-tree-group\">\r\n <input [(ngModel)]=\"data.checked\"\r\n (click)=\"data.onCheckedChanged()\"\r\n [disabled]=\"data.root\"\r\n type=\"checkbox\" />\r\n <a (click)=\"data.onGroupDisplayNameClicked()\"\r\n [ngClass]=\"{'clone-modal-tree-group-root-name': data.root || data.child}\"\r\n [ngStyle]=\"{'max-width': data.childNode ? '300px' : 'auto'}\">{{data.displayName}}</a>\r\n <span *ngIf=\"!data.root && !data.child\"\r\n class=\"clone-modal-tree-group-count\">({{data.nodes.length}})</span>\r\n </div>\r\n <ul>\r\n <li *ngFor=\"let data of data.nodes; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n <div *ngIf=\"loadingMessage\"\r\n class=\"clone-modal-loading\">\r\n <span class=\"clone-modal-loading-message\">{{loadingMessage}}</span>\r\n </div>\r\n <div *ngIf=\"doneProcessing\"\r\n class=\"clone-modal-tree\">\r\n <ul>\r\n <li *ngFor=\"let data of displayTree; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\">Clone</button>\r\n </div>\r\n</div>\r\n", styles: [".tru-dialog-footer{position:absolute;left:0;right:0;bottom:0;padding:4px 15px 5px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px #fff}.tru-dialog-footer button{height:30px}::ng-deep tru-toolbar-button svg{height:20px!important}.clone ul{list-style-type:none}.clone-modal-loading{position:absolute;inset:15px 0 -15px;overflow:hidden;margin-top:10px}.clone-modal-loading-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.clone-modal-tree{position:absolute;inset:15px 0 -15px;overflow-y:auto;margin-top:10px}.clone-modal-tree ul{padding-left:15px}.clone-modal-tree-group{display:flex;margin-top:5px}.clone-modal-tree-group input{float:left}.clone-modal-tree-group a{text-decoration-line:underline}.clone-modal-tree-group-root-name{text-decoration-line:none!important;color:#000}.clone-modal-tree-group span{margin-left:5px}.clone-modal-tree-group a{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:18px;margin-left:5px;float:left}.clone-modal-tree-group-count{vertical-align:middle;float:left}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: TruToolbar, selector: "tru-toolbar", inputs: ["config"] }, { kind: "component", type: TruToolbarButton, selector: "tru-toolbar-button", inputs: ["config", "icon", "text", "disabled", "tooltip", "type"], outputs: ["onClick", "onKeydown"] }, { kind: "component", type: TruToolbarDropdown, selector: "tru-toolbar-dropdown", inputs: ["config", "options", "tooltip", "multiple", "filterable", "filterTooltip", "width", "selectedOption", "disabled"], outputs: ["selectedOptionChange", "selectionChange"] }, { kind: "component", type: TruToolbarText, selector: "tru-toolbar-text", inputs: ["config", "icon", "text", "tooltip"] }] });
|
|
5868
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruCloneView, selector: "tru-clone-view", inputs: { ready: "ready" }, usesInheritance: true, ngImport: i0, template: "<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"loading\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"loading\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"loading\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content clone\">\r\n <ng-template #groupNodeRenderer let-data>\r\n <div *ngIf=\"!data.child || data.showEntities\"\r\n class=\"clone-modal-tree-group\">\r\n <input [(ngModel)]=\"data.checked\"\r\n (click)=\"data.onCheckedChanged()\"\r\n [disabled]=\"data.root\"\r\n type=\"checkbox\" />\r\n <a (click)=\"data.onGroupDisplayNameClicked()\"\r\n [ngClass]=\"{'clone-modal-tree-group-root-name': data.root || data.child}\"\r\n [ngStyle]=\"{'max-width': data.childNode ? '300px' : 'auto'}\">{{data.displayName}}</a>\r\n <span *ngIf=\"!data.root && !data.child\"\r\n class=\"clone-modal-tree-group-count\">({{data.nodes.length}})</span>\r\n </div>\r\n <ul>\r\n <li *ngFor=\"let data of data.nodes; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n <div *ngIf=\"loadingMessage\"\r\n class=\"clone-modal-loading\">\r\n <span class=\"clone-modal-loading-message\">{{loadingMessage}}</span>\r\n </div>\r\n <div *ngIf=\"doneProcessing\"\r\n class=\"clone-modal-tree\">\r\n <ul>\r\n <li *ngFor=\"let data of displayTree; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\" [disabled]=\"!ready\">Clone</button>\r\n </div>\r\n</div>\r\n", styles: [".tru-dialog-footer{position:absolute;left:0;right:0;bottom:0;padding:4px 15px 5px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px #fff}.tru-dialog-footer button{height:30px}::ng-deep tru-toolbar-button svg{height:20px!important}.clone ul{list-style-type:none}.clone-modal-loading{position:absolute;inset:15px 0 -15px;overflow:hidden;margin-top:10px}.clone-modal-loading-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.clone-modal-tree{position:absolute;inset:15px 0 -15px;overflow-y:auto;margin-top:10px}.clone-modal-tree ul{padding-left:15px}.clone-modal-tree-group{display:flex;margin-top:5px}.clone-modal-tree-group input{float:left}.clone-modal-tree-group a{text-decoration-line:underline}.clone-modal-tree-group-root-name{text-decoration-line:none!important;color:#000}.clone-modal-tree-group span{margin-left:5px}.clone-modal-tree-group a{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:18px;margin-left:5px;float:left}.clone-modal-tree-group-count{vertical-align:middle;float:left}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: TruToolbar, selector: "tru-toolbar", inputs: ["config"] }, { kind: "component", type: TruToolbarButton, selector: "tru-toolbar-button", inputs: ["config", "icon", "text", "disabled", "tooltip", "type"], outputs: ["onClick", "onKeydown"] }, { kind: "component", type: TruToolbarDropdown, selector: "tru-toolbar-dropdown", inputs: ["config", "options", "tooltip", "multiple", "filterable", "filterTooltip", "width", "selectedOption", "disabled"], outputs: ["selectedOptionChange", "selectionChange"] }, { kind: "component", type: TruToolbarText, selector: "tru-toolbar-text", inputs: ["config", "icon", "text", "tooltip"] }] });
|
|
5869
5869
|
}
|
|
5870
5870
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruCloneView, decorators: [{
|
|
5871
5871
|
type: Component,
|
|
5872
|
-
args: [{ selector: 'tru-clone-view', template: "<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"loading\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"loading\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"loading\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content clone\">\r\n <ng-template #groupNodeRenderer let-data>\r\n <div *ngIf=\"!data.child || data.showEntities\"\r\n class=\"clone-modal-tree-group\">\r\n <input [(ngModel)]=\"data.checked\"\r\n (click)=\"data.onCheckedChanged()\"\r\n [disabled]=\"data.root\"\r\n type=\"checkbox\" />\r\n <a (click)=\"data.onGroupDisplayNameClicked()\"\r\n [ngClass]=\"{'clone-modal-tree-group-root-name': data.root || data.child}\"\r\n [ngStyle]=\"{'max-width': data.childNode ? '300px' : 'auto'}\">{{data.displayName}}</a>\r\n <span *ngIf=\"!data.root && !data.child\"\r\n class=\"clone-modal-tree-group-count\">({{data.nodes.length}})</span>\r\n </div>\r\n <ul>\r\n <li *ngFor=\"let data of data.nodes; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n <div *ngIf=\"loadingMessage\"\r\n class=\"clone-modal-loading\">\r\n <span class=\"clone-modal-loading-message\">{{loadingMessage}}</span>\r\n </div>\r\n <div *ngIf=\"doneProcessing\"\r\n class=\"clone-modal-tree\">\r\n <ul>\r\n <li *ngFor=\"let data of displayTree; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\">Clone</button>\r\n </div>\r\n</div>\r\n", styles: [".tru-dialog-footer{position:absolute;left:0;right:0;bottom:0;padding:4px 15px 5px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px #fff}.tru-dialog-footer button{height:30px}::ng-deep tru-toolbar-button svg{height:20px!important}.clone ul{list-style-type:none}.clone-modal-loading{position:absolute;inset:15px 0 -15px;overflow:hidden;margin-top:10px}.clone-modal-loading-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.clone-modal-tree{position:absolute;inset:15px 0 -15px;overflow-y:auto;margin-top:10px}.clone-modal-tree ul{padding-left:15px}.clone-modal-tree-group{display:flex;margin-top:5px}.clone-modal-tree-group input{float:left}.clone-modal-tree-group a{text-decoration-line:underline}.clone-modal-tree-group-root-name{text-decoration-line:none!important;color:#000}.clone-modal-tree-group span{margin-left:5px}.clone-modal-tree-group a{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:18px;margin-left:5px;float:left}.clone-modal-tree-group-count{vertical-align:middle;float:left}\n"] }]
|
|
5873
|
-
}], ctorParameters: () => [{ type: TruTextManager }, { type: TruWindowEventHandler }, { type: TruDataContext }, { type: TruModelTableLookup }, { type: TruModelPropertyLookup }, { type: TruModelTypeLookup }, { type: TruModelNavigationPropertiesLookup }, { type: TruUiNotification }]
|
|
5872
|
+
args: [{ selector: 'tru-clone-view', template: "<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"loading\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"loading\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"loading\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content clone\">\r\n <ng-template #groupNodeRenderer let-data>\r\n <div *ngIf=\"!data.child || data.showEntities\"\r\n class=\"clone-modal-tree-group\">\r\n <input [(ngModel)]=\"data.checked\"\r\n (click)=\"data.onCheckedChanged()\"\r\n [disabled]=\"data.root\"\r\n type=\"checkbox\" />\r\n <a (click)=\"data.onGroupDisplayNameClicked()\"\r\n [ngClass]=\"{'clone-modal-tree-group-root-name': data.root || data.child}\"\r\n [ngStyle]=\"{'max-width': data.childNode ? '300px' : 'auto'}\">{{data.displayName}}</a>\r\n <span *ngIf=\"!data.root && !data.child\"\r\n class=\"clone-modal-tree-group-count\">({{data.nodes.length}})</span>\r\n </div>\r\n <ul>\r\n <li *ngFor=\"let data of data.nodes; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n <div *ngIf=\"loadingMessage\"\r\n class=\"clone-modal-loading\">\r\n <span class=\"clone-modal-loading-message\">{{loadingMessage}}</span>\r\n </div>\r\n <div *ngIf=\"doneProcessing\"\r\n class=\"clone-modal-tree\">\r\n <ul>\r\n <li *ngFor=\"let data of displayTree; let last = last\" [attr.ready]=\"last ? true : false\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\" [disabled]=\"!ready\">Clone</button>\r\n </div>\r\n</div>\r\n", styles: [".tru-dialog-footer{position:absolute;left:0;right:0;bottom:0;padding:4px 15px 5px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px #fff}.tru-dialog-footer button{height:30px}::ng-deep tru-toolbar-button svg{height:20px!important}.clone ul{list-style-type:none}.clone-modal-loading{position:absolute;inset:15px 0 -15px;overflow:hidden;margin-top:10px}.clone-modal-loading-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%)}.clone-modal-tree{position:absolute;inset:15px 0 -15px;overflow-y:auto;margin-top:10px}.clone-modal-tree ul{padding-left:15px}.clone-modal-tree-group{display:flex;margin-top:5px}.clone-modal-tree-group input{float:left}.clone-modal-tree-group a{text-decoration-line:underline}.clone-modal-tree-group-root-name{text-decoration-line:none!important;color:#000}.clone-modal-tree-group span{margin-left:5px}.clone-modal-tree-group a{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:18px;margin-left:5px;float:left}.clone-modal-tree-group-count{vertical-align:middle;float:left}\n"] }]
|
|
5873
|
+
}], ctorParameters: () => [{ type: TruTextManager }, { type: TruWindowEventHandler }, { type: TruDataContext }, { type: TruModelTableLookup }, { type: TruModelPropertyLookup }, { type: TruModelTypeLookup }, { type: TruModelNavigationPropertiesLookup }, { type: TruUiNotification }], propDecorators: { ready: [{
|
|
5874
|
+
type: Input
|
|
5875
|
+
}] } });
|
|
5874
5876
|
class Node {
|
|
5875
5877
|
ref;
|
|
5876
5878
|
tableName;
|