@smartbit4all/ng-client 4.3.20 → 4.3.21

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.
@@ -25,11 +25,11 @@ export class DefaultActionsPopupComponent {
25
25
  }
26
26
  }
27
27
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DefaultActionsPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DefaultActionsPopupComponent, selector: "lib-default-actions-popup", inputs: { buttons: "buttons", row: "row", colIdx: "colIdx" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["defaultActionsMenuTrigger"], descendants: true, read: MatContextMenuTriggerForDirective }], ngImport: i0, template: "<div #defaultActionsMenuTrigger [matContextMenuTriggerFor]=\"defaultActionsMenu\"></div>\n<mat-menu #defaultActionsMenu=\"matMenu\">\n <div *ngFor=\"let button of buttons | keyvalue\">\n <button\n *ngIf=\"button.key.type !== ACTION_SEPERATOR\"\n (click)=\"defaultActionButtonClicked(button)\"\n mat-menu-item\n [disabled]=\"button.value.disabled\"\n [smartTooltip]=\"\n button.value.descriptor?.tooltip\n ? button.value.descriptor?.tooltip\n : button.key.translator!(button.value).tooltip\n \"\n >\n <div\n class=\"smart-table-icon-container\"\n [ngClass]=\"button.key.translator!(button.value).iconPosition === 'POST' ? 'reversed' : ''\"\n ><smart-icon\n *ngIf=\"button.key.translator!(button.value).icon\"\n [icon]=\"button.key.translator!(button.value).icon!\"\n ></smart-icon>\n {{ button.key.translator!(button.value).title }}</div\n >\n </button>\n <mat-divider *ngIf=\"button.key.type === ACTION_SEPERATOR\"></mat-divider>\n </div>\n</mat-menu>\n", styles: [".smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}\n"], dependencies: [{ kind: "directive", type: i1.SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "component", type: i4.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i6.MatContextMenuTriggerForDirective, selector: "[matContextMenuTriggerFor]", inputs: ["matContextMenuTriggerFor"], exportAs: ["matContextMenuTriggerDirective"] }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }] }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DefaultActionsPopupComponent, selector: "lib-default-actions-popup", inputs: { buttons: "buttons", row: "row", colIdx: "colIdx" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["defaultActionsMenuTrigger"], descendants: true, read: MatContextMenuTriggerForDirective }], ngImport: i0, template: "<div #defaultActionsMenuTrigger [matContextMenuTriggerFor]=\"defaultActionsMenu\"></div>\n<mat-menu #defaultActionsMenu=\"matMenu\">\n <div *ngFor=\"let button of buttons | keyvalue\">\n <button\n *ngIf=\"button.key.type !== ACTION_SEPERATOR\"\n (click)=\"defaultActionButtonClicked(button)\"\n mat-menu-item\n [attr.data-testid]=\"button.value.code ?? null\"\n [disabled]=\"button.value.disabled\"\n [smartTooltip]=\"\n button.value.descriptor?.tooltip\n ? button.value.descriptor?.tooltip\n : button.key.translator!(button.value).tooltip\n \"\n >\n <div\n class=\"smart-table-icon-container\"\n [ngClass]=\"button.key.translator!(button.value).iconPosition === 'POST' ? 'reversed' : ''\"\n ><smart-icon\n *ngIf=\"button.key.translator!(button.value).icon\"\n [icon]=\"button.key.translator!(button.value).icon!\"\n ></smart-icon>\n {{ button.key.translator!(button.value).title }}</div\n >\n </button>\n <mat-divider *ngIf=\"button.key.type === ACTION_SEPERATOR\"></mat-divider>\n </div>\n</mat-menu>\n", styles: [".smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}\n"], dependencies: [{ kind: "directive", type: i1.SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "component", type: i4.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i6.MatContextMenuTriggerForDirective, selector: "[matContextMenuTriggerFor]", inputs: ["matContextMenuTriggerFor"], exportAs: ["matContextMenuTriggerDirective"] }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }] }); }
29
29
  }
30
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DefaultActionsPopupComponent, decorators: [{
31
31
  type: Component,
32
- args: [{ selector: 'lib-default-actions-popup', template: "<div #defaultActionsMenuTrigger [matContextMenuTriggerFor]=\"defaultActionsMenu\"></div>\n<mat-menu #defaultActionsMenu=\"matMenu\">\n <div *ngFor=\"let button of buttons | keyvalue\">\n <button\n *ngIf=\"button.key.type !== ACTION_SEPERATOR\"\n (click)=\"defaultActionButtonClicked(button)\"\n mat-menu-item\n [disabled]=\"button.value.disabled\"\n [smartTooltip]=\"\n button.value.descriptor?.tooltip\n ? button.value.descriptor?.tooltip\n : button.key.translator!(button.value).tooltip\n \"\n >\n <div\n class=\"smart-table-icon-container\"\n [ngClass]=\"button.key.translator!(button.value).iconPosition === 'POST' ? 'reversed' : ''\"\n ><smart-icon\n *ngIf=\"button.key.translator!(button.value).icon\"\n [icon]=\"button.key.translator!(button.value).icon!\"\n ></smart-icon>\n {{ button.key.translator!(button.value).title }}</div\n >\n </button>\n <mat-divider *ngIf=\"button.key.type === ACTION_SEPERATOR\"></mat-divider>\n </div>\n</mat-menu>\n", styles: [".smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}\n"] }]
32
+ args: [{ selector: 'lib-default-actions-popup', template: "<div #defaultActionsMenuTrigger [matContextMenuTriggerFor]=\"defaultActionsMenu\"></div>\n<mat-menu #defaultActionsMenu=\"matMenu\">\n <div *ngFor=\"let button of buttons | keyvalue\">\n <button\n *ngIf=\"button.key.type !== ACTION_SEPERATOR\"\n (click)=\"defaultActionButtonClicked(button)\"\n mat-menu-item\n [attr.data-testid]=\"button.value.code ?? null\"\n [disabled]=\"button.value.disabled\"\n [smartTooltip]=\"\n button.value.descriptor?.tooltip\n ? button.value.descriptor?.tooltip\n : button.key.translator!(button.value).tooltip\n \"\n >\n <div\n class=\"smart-table-icon-container\"\n [ngClass]=\"button.key.translator!(button.value).iconPosition === 'POST' ? 'reversed' : ''\"\n ><smart-icon\n *ngIf=\"button.key.translator!(button.value).icon\"\n [icon]=\"button.key.translator!(button.value).icon!\"\n ></smart-icon>\n {{ button.key.translator!(button.value).title }}</div\n >\n </button>\n <mat-divider *ngIf=\"button.key.type === ACTION_SEPERATOR\"></mat-divider>\n </div>\n</mat-menu>\n", styles: [".smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}\n"] }]
33
33
  }], ctorParameters: () => [], propDecorators: { trigger: [{
34
34
  type: ViewChild,
35
35
  args: ['defaultActionsMenuTrigger', { read: MatContextMenuTriggerForDirective }]
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
40
40
  }], colIdx: [{
41
41
  type: Input
42
42
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL2NvbXBvbmVudHMvZGVmYXVsdC1hY3Rpb25zLXBvcHVwL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS9jb21wb25lbnRzL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC9kZWZhdWx0LWFjdGlvbnMtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBb0Isb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdoRixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5REFBeUQsQ0FBQzs7Ozs7Ozs7QUFRNUcsTUFBTSxPQUFPLDRCQUE0QjtJQVd2QztRQVBnQixxQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUM7UUFLbEUseUJBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFFN0IsQ0FBQztJQUVoQixzQkFBc0IsQ0FBQyxDQUFhO1FBQ2xDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsTUFBNEM7UUFDckUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDOytHQXhCVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixnT0FDUyxpQ0FBaUMsNkJDZm5GLCtqQ0EyQkE7OzRGRGJhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSwyQkFBMkI7d0RBTXJDLE9BQU87c0JBRE4sU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLElBQUksRUFBRSxpQ0FBaUMsRUFBRTtnQkFJMUUsT0FBTztzQkFBZixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5cbmltcG9ydCB7IFNtYXJ0VGFibGVCdXR0b24sIFNtYXJ0VGFibGVCdXR0b25UeXBlIH0gZnJvbSAnLi4vLi4vc21hcnR0YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBHcmlkUm93IH0gZnJvbSAnLi4vLi4vLi4vc21hcnQtZ3JpZC9hcGkvZ3JpZC1hcGkvbW9kZWwvbW9kZWxzJztcbmltcG9ydCB7IFVpQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdmlldy1jb250ZXh0L2FwaS9tb2RlbC9tb2RlbHMnO1xuaW1wb3J0IHsgTWF0Q29udGV4dE1lbnVUcmlnZ2VyRm9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9tYXQtY29udGV4dC1tZW51LXRyaWdnZXItZm9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kZWZhdWx0LWFjdGlvbnMtcG9wdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRBY3Rpb25zTWVudVRyaWdnZXInLCB7IHJlYWQ6IE1hdENvbnRleHRNZW51VHJpZ2dlckZvckRpcmVjdGl2ZSB9KVxuICB0cmlnZ2VyITogTWF0Q29udGV4dE1lbnVUcmlnZ2VyRm9yRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyByZWFkb25seSBBQ1RJT05fU0VQRVJBVE9SID0gU21hcnRUYWJsZUJ1dHRvblR5cGUuU0VQQVJBVE9SO1xuICBASW5wdXQoKSBidXR0b25zITogTWFwPFNtYXJ0VGFibGVCdXR0b24sIFVpQWN0aW9uPjtcbiAgQElucHV0KCkgcm93ITogR3JpZFJvdztcbiAgQElucHV0KCkgY29sSWR4PzogbnVtYmVyO1xuXG4gIHNtYXJ0VGFibGVCdXR0b25UeXBlID0gU21hcnRUYWJsZUJ1dHRvblR5cGU7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG9wZW5EZWZhdWx0QWN0aW9uc01lbnUoZTogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJ1dHRvbnMpIHtcbiAgICAgIHRoaXMudHJpZ2dlci5sYXN0TW91c2VFdmVudCA9IGU7XG4gICAgICB0aGlzLnRyaWdnZXIub3Blbk1lbnUoKTtcbiAgICB9XG4gIH1cblxuICBkZWZhdWx0QWN0aW9uQnV0dG9uQ2xpY2tlZChidXR0b246IEtleVZhbHVlPFNtYXJ0VGFibGVCdXR0b24sIFVpQWN0aW9uPik6IHZvaWQge1xuICAgIGlmIChidXR0b24ua2V5LmNhbGxiYWNrKSB7XG4gICAgICBidXR0b24ua2V5LmNhbGxiYWNrKGJ1dHRvbi5rZXkuYXJncywgdGhpcy5yb3csIGJ1dHRvbi52YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICNkZWZhdWx0QWN0aW9uc01lbnVUcmlnZ2VyIFttYXRDb250ZXh0TWVudVRyaWdnZXJGb3JdPVwiZGVmYXVsdEFjdGlvbnNNZW51XCI+PC9kaXY+XG48bWF0LW1lbnUgI2RlZmF1bHRBY3Rpb25zTWVudT1cIm1hdE1lbnVcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGJ1dHRvbnMgfCBrZXl2YWx1ZVwiPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiYnV0dG9uLmtleS50eXBlICE9PSBBQ1RJT05fU0VQRVJBVE9SXCJcbiAgICAgIChjbGljayk9XCJkZWZhdWx0QWN0aW9uQnV0dG9uQ2xpY2tlZChidXR0b24pXCJcbiAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgIFtkaXNhYmxlZF09XCJidXR0b24udmFsdWUuZGlzYWJsZWRcIlxuICAgICAgW3NtYXJ0VG9vbHRpcF09XCJcbiAgICAgICAgYnV0dG9uLnZhbHVlLmRlc2NyaXB0b3I/LnRvb2x0aXBcbiAgICAgICAgICA/IGJ1dHRvbi52YWx1ZS5kZXNjcmlwdG9yPy50b29sdGlwXG4gICAgICAgICAgOiBidXR0b24ua2V5LnRyYW5zbGF0b3IhKGJ1dHRvbi52YWx1ZSkudG9vbHRpcFxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic21hcnQtdGFibGUtaWNvbi1jb250YWluZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJidXR0b24ua2V5LnRyYW5zbGF0b3IhKGJ1dHRvbi52YWx1ZSkuaWNvblBvc2l0aW9uID09PSAnUE9TVCcgPyAncmV2ZXJzZWQnIDogJydcIlxuICAgICAgICA+PHNtYXJ0LWljb25cbiAgICAgICAgICAqbmdJZj1cImJ1dHRvbi5rZXkudHJhbnNsYXRvciEoYnV0dG9uLnZhbHVlKS5pY29uXCJcbiAgICAgICAgICBbaWNvbl09XCJidXR0b24ua2V5LnRyYW5zbGF0b3IhKGJ1dHRvbi52YWx1ZSkuaWNvbiFcIlxuICAgICAgICA+PC9zbWFydC1pY29uPlxuICAgICAgICB7eyBidXR0b24ua2V5LnRyYW5zbGF0b3IhKGJ1dHRvbi52YWx1ZSkudGl0bGUgfX08L2RpdlxuICAgICAgPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cImJ1dHRvbi5rZXkudHlwZSA9PT0gQUNUSU9OX1NFUEVSQVRPUlwiPjwvbWF0LWRpdmlkZXI+XG4gIDwvZGl2PlxuPC9tYXQtbWVudT5cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRhYmxlL2NvbXBvbmVudHMvZGVmYXVsdC1hY3Rpb25zLXBvcHVwL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC10YWJsZS9jb21wb25lbnRzL2RlZmF1bHQtYWN0aW9ucy1wb3B1cC9kZWZhdWx0LWFjdGlvbnMtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVELE9BQU8sRUFBb0Isb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdoRixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5REFBeUQsQ0FBQzs7Ozs7Ozs7QUFRNUcsTUFBTSxPQUFPLDRCQUE0QjtJQVd2QztRQVBnQixxQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUM7UUFLbEUseUJBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFFN0IsQ0FBQztJQUVoQixzQkFBc0IsQ0FBQyxDQUFhO1FBQ2xDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsTUFBNEM7UUFDckUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDOytHQXhCVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixnT0FDUyxpQ0FBaUMsNkJDZm5GLHVuQ0E0QkE7OzRGRGRhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSwyQkFBMkI7d0RBTXJDLE9BQU87c0JBRE4sU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLElBQUksRUFBRSxpQ0FBaUMsRUFBRTtnQkFJMUUsT0FBTztzQkFBZixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5cbmltcG9ydCB7IFNtYXJ0VGFibGVCdXR0b24sIFNtYXJ0VGFibGVCdXR0b25UeXBlIH0gZnJvbSAnLi4vLi4vc21hcnR0YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBHcmlkUm93IH0gZnJvbSAnLi4vLi4vLi4vc21hcnQtZ3JpZC9hcGkvZ3JpZC1hcGkvbW9kZWwvbW9kZWxzJztcbmltcG9ydCB7IFVpQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdmlldy1jb250ZXh0L2FwaS9tb2RlbC9tb2RlbHMnO1xuaW1wb3J0IHsgTWF0Q29udGV4dE1lbnVUcmlnZ2VyRm9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9tYXQtY29udGV4dC1tZW51LXRyaWdnZXItZm9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kZWZhdWx0LWFjdGlvbnMtcG9wdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGVmYXVsdC1hY3Rpb25zLXBvcHVwLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGVmYXVsdEFjdGlvbnNQb3B1cENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRBY3Rpb25zTWVudVRyaWdnZXInLCB7IHJlYWQ6IE1hdENvbnRleHRNZW51VHJpZ2dlckZvckRpcmVjdGl2ZSB9KVxuICB0cmlnZ2VyITogTWF0Q29udGV4dE1lbnVUcmlnZ2VyRm9yRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyByZWFkb25seSBBQ1RJT05fU0VQRVJBVE9SID0gU21hcnRUYWJsZUJ1dHRvblR5cGUuU0VQQVJBVE9SO1xuICBASW5wdXQoKSBidXR0b25zITogTWFwPFNtYXJ0VGFibGVCdXR0b24sIFVpQWN0aW9uPjtcbiAgQElucHV0KCkgcm93ITogR3JpZFJvdztcbiAgQElucHV0KCkgY29sSWR4PzogbnVtYmVyO1xuXG4gIHNtYXJ0VGFibGVCdXR0b25UeXBlID0gU21hcnRUYWJsZUJ1dHRvblR5cGU7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG9wZW5EZWZhdWx0QWN0aW9uc01lbnUoZTogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJ1dHRvbnMpIHtcbiAgICAgIHRoaXMudHJpZ2dlci5sYXN0TW91c2VFdmVudCA9IGU7XG4gICAgICB0aGlzLnRyaWdnZXIub3Blbk1lbnUoKTtcbiAgICB9XG4gIH1cblxuICBkZWZhdWx0QWN0aW9uQnV0dG9uQ2xpY2tlZChidXR0b246IEtleVZhbHVlPFNtYXJ0VGFibGVCdXR0b24sIFVpQWN0aW9uPik6IHZvaWQge1xuICAgIGlmIChidXR0b24ua2V5LmNhbGxiYWNrKSB7XG4gICAgICBidXR0b24ua2V5LmNhbGxiYWNrKGJ1dHRvbi5rZXkuYXJncywgdGhpcy5yb3csIGJ1dHRvbi52YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICNkZWZhdWx0QWN0aW9uc01lbnVUcmlnZ2VyIFttYXRDb250ZXh0TWVudVRyaWdnZXJGb3JdPVwiZGVmYXVsdEFjdGlvbnNNZW51XCI+PC9kaXY+XG48bWF0LW1lbnUgI2RlZmF1bHRBY3Rpb25zTWVudT1cIm1hdE1lbnVcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGJ1dHRvbnMgfCBrZXl2YWx1ZVwiPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiYnV0dG9uLmtleS50eXBlICE9PSBBQ1RJT05fU0VQRVJBVE9SXCJcbiAgICAgIChjbGljayk9XCJkZWZhdWx0QWN0aW9uQnV0dG9uQ2xpY2tlZChidXR0b24pXCJcbiAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cImJ1dHRvbi52YWx1ZS5jb2RlID8/IG51bGxcIlxuICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbi52YWx1ZS5kaXNhYmxlZFwiXG4gICAgICBbc21hcnRUb29sdGlwXT1cIlxuICAgICAgICBidXR0b24udmFsdWUuZGVzY3JpcHRvcj8udG9vbHRpcFxuICAgICAgICAgID8gYnV0dG9uLnZhbHVlLmRlc2NyaXB0b3I/LnRvb2x0aXBcbiAgICAgICAgICA6IGJ1dHRvbi5rZXkudHJhbnNsYXRvciEoYnV0dG9uLnZhbHVlKS50b29sdGlwXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzbWFydC10YWJsZS1pY29uLWNvbnRhaW5lclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImJ1dHRvbi5rZXkudHJhbnNsYXRvciEoYnV0dG9uLnZhbHVlKS5pY29uUG9zaXRpb24gPT09ICdQT1NUJyA/ICdyZXZlcnNlZCcgOiAnJ1wiXG4gICAgICAgID48c21hcnQtaWNvblxuICAgICAgICAgICpuZ0lmPVwiYnV0dG9uLmtleS50cmFuc2xhdG9yIShidXR0b24udmFsdWUpLmljb25cIlxuICAgICAgICAgIFtpY29uXT1cImJ1dHRvbi5rZXkudHJhbnNsYXRvciEoYnV0dG9uLnZhbHVlKS5pY29uIVwiXG4gICAgICAgID48L3NtYXJ0LWljb24+XG4gICAgICAgIHt7IGJ1dHRvbi5rZXkudHJhbnNsYXRvciEoYnV0dG9uLnZhbHVlKS50aXRsZSB9fTwvZGl2XG4gICAgICA+XG4gICAgPC9idXR0b24+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwiYnV0dG9uLmtleS50eXBlID09PSBBQ1RJT05fU0VQRVJBVE9SXCI+PC9tYXQtZGl2aWRlcj5cbiAgPC9kaXY+XG48L21hdC1tZW51PlxuIl19
@@ -171,6 +171,7 @@ export class SmarttreeGenericService extends SmarttreeService {
171
171
  menuItemButtons: node.actions.map((action) => {
172
172
  return {
173
173
  type: SmartTreeNodeButtonType.NORMAL,
174
+ code: action.code,
174
175
  label: this.getLabelByAction(action),
175
176
  callback: this.doAction.bind(this),
176
177
  args: [action, node.identifier],
@@ -286,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
286
287
  type: Inject,
287
288
  args: ['treeMenuIcon']
288
289
  }] }] });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0cmVlLWdlbmVyaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRyZWUvc21hcnR0cmVlLWdlbmVyaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBSXZCLHlCQUF5QixFQUd6QixlQUFlLEdBR2hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBVXhDLE1BQU0sT0FBTyx1QkFDWCxTQUFRLGdCQUFpQztJQWlCekMsWUFDRSxNQUFnQixFQUNjLFFBQWdCLEVBQ2xCLE1BQWMsRUFDVixZQUFxQjtRQUVyRCxLQUFLLEVBQUUsQ0FBQztRQUpzQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDVixpQkFBWSxHQUFaLFlBQVksQ0FBUztRQWxCdkQseUJBQXlCO1FBQ3pCLFdBQU0sR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVuRCx3QkFBbUIsR0FBb0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQWtCL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMs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LENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3RCxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FDdkUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUMzRixDQUFDO0lBQ0osQ0FBQztJQUVELG1DQUFtQyxDQUNqQyxRQUFrQixFQUNsQixlQUFnQztRQUVoQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQzsrR0E5VVUsdUJBQXVCLDBDQW9CeEIsVUFBVSxhQUNWLFFBQVEsYUFDUixjQUFjO21IQXRCYix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBcUJJLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXG4gIFVpQWN0aW9uLFxuICBVaUFjdGlvbkFkZGl0aW9uYWxQYXJhbXMsXG4gIFVpQWN0aW9uRGVzY3JpcHRvcixcbiAgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSxcbiAgVWlBY3Rpb25Nb2RlbCxcbiAgVWlBY3Rpb25SZXF1ZXN0LFxuICBVaUFjdGlvblNlcnZpY2UsXG4gIFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZSxcbiAgVXNlVWlBY3Rpb24sXG59IGZyb20gJy4uL3ZpZXctY29udGV4dC9wcm9qZWN0cyc7XG5pbXBvcnQgeyBUcmVlU2VydmljZSB9IGZyb20gJy4vdHJlZS1hcGkvYXBpL3RyZWUuc2VydmljZSc7XG5pbXBvcnQgeyBTbWFydFRyZWVOb2RlLCBTbWFydFRyZWVOb2RlQnV0dG9uVHlwZSB9IGZyb20gJy4vc21hcnR0cmVlLm1vZGVsJztcbmltcG9ydCB7IFNtYXJ0dHJlZVNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0dHJlZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJ2Zhc3QtZXF1YWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBTbWFydHRyZWVDb25maWd1cmF0aW9uIHtcbiAgdHJlZWlkOiBzdHJpbmc7XG4gIHBhZ2VOYW1lOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydHRyZWVHZW5lcmljU2VydmljZVxuICBleHRlbmRzIFNtYXJ0dHJlZVNlcnZpY2U8U21hcnRUcmVlTm9kZVtdPlxuICBpbXBsZW1lbnRzIFVzZVVpQWN0aW9uXG57XG4gIC8vIFVzZVVpQWN0aW9uIHByb3BlcnRpZXNcbiAgc3VibWl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcmVTdWJzY3JpYmVUb0NoYW5nZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgdWlBY3Rpb25EZXNjcmlwdG9yczogTWFwPHN0cmluZywgVWlBY3Rpb25EZXNjcmlwdG9yPiA9IG5ldyBNYXAoKTtcblxuICBzZWxlY3RlZE5vZGU/OiBTbWFydFRyZWVOb2RlO1xuXG4gIHByb3RlY3RlZCB2aWV3Q29udGV4dCE6IFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlO1xuICBwcml2YXRlIHNlcnZpY2UhOiBUcmVlU2VydmljZTtcblxuICBwcml2YXRlIHVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UhOiBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xuICBwcml2YXRlIHVpQWN0aW9uU2VydmljZSE6IFVpQWN0aW9uU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3Q6IEluamVjdG9yLFxuICAgIEBJbmplY3QoJ3BhZ2VOYW1lJykgcHJvdGVjdGVkIHBhZ2VOYW1lOiBzdHJpbmcsXG4gICAgQEluamVjdCgndHJlZUlkJykgcHJvdGVjdGVkIHRyZWVJZDogc3RyaW5nLFxuICAgIEBJbmplY3QoJ3RyZWVNZW51SWNvbicpIHByaXZhdGUgdHJlZU1lbnVJY29uPzogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAoIXRoaXMudHJlZU1lbnVJY29uKSB7XG4gICAgICB0aGlzLnRyZWVNZW51SWNvbiA9IGluamVjdC5nZXQoJ3RyZWVNZW51SWNvbicpO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZ3VyZVRyZWUoe1xuICAgICAgcGFnZU5hbWU6IHRoaXMucGFnZU5hbWUsXG4gICAgICB0cmVlaWQ6IHRoaXMudHJlZUlkLFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWV3Q29udGV4dCA9IGluamVjdC5nZXQoU21hcnRWaWV3Q29udGV4dFNlcnZpY2UpO1xuICAgIHRoaXMuc2VydmljZSA9IGluamVjdC5nZXQoVHJlZVNlcnZpY2UpO1xuXG4gICAgdGhpcy51aUFjdGlvblNlcnZpY2UgPSBpbmplY3QuZ2V0KFVpQWN0aW9uU2VydmljZSk7XG4gICAgdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlKTtcblxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgY29uc3RydWN0VWlBY3Rpb25Nb2RlbHModWlBY3Rpb25zOiBVaUFjdGlvbltdKTogdm9pZCB7XG4gICAgdGhpcy51aUFjdGlvbk1vZGVscyA9IHVpQWN0aW9ucy5tYXAoKHVpQWN0aW9uOiBVaUFjdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VydmljZVRvVXNlOiB0aGlzLFxuICAgICAgICB1aUFjdGlvbixcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBjb25maWd1cmVUcmVlKGNvbmZpZ3VyYXRpb246IFNtYXJ0dHJlZUNvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnRyZWVJZCA9IGNvbmZpZ3VyYXRpb24udHJlZWlkO1xuICAgIHRoaXMucGFnZU5hbWUgPSBjb25maWd1cmF0aW9uLnBhZ2VOYW1lO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy52aWV3Q29udGV4dC5oYXNWaWV3Q29udGV4dFV1aWQoKSkge1xuICAgICAgYXdhaXQgdGhpcy5kb3dubG9hZFRyZWUoKS50aGVuKChyb290Tm9kZXM6IFNtYXJ0VHJlZU5vZGVbXSkgPT4ge1xuICAgICAgICBpZiAoIWRlZXBFcXVhbCh0aGlzLnRyZWVGcm9tQmFja2VuZCwgcm9vdE5vZGVzKSkge1xuICAgICAgICAgIHRoaXMudHJlZUZyb21CYWNrZW5kID0gcm9vdE5vZGVzO1xuICAgICAgICAgIHRoaXMuc3luY1RyZWUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG92ZXJyaWRlIGFzeW5jIGRvd25sb2FkVHJlZSgpOiBQcm9taXNlPFNtYXJ0VHJlZU5vZGVbXT4ge1xuICAgIGxldCB1dWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUhKTtcbiAgICBjb25zdCByb290Tm9kZXMgPSBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5nZXRSb290Tm9kZXMyKHV1aWQsIHRoaXMudHJlZUlkISkudG9Qcm9taXNlKClcbiAgICApO1xuICAgIGNvbnN0IHVpQWN0aW9ucyA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmdldE1haW5BY3Rpb25zMih1dWlkLCB0aGlzLnRyZWVJZCEpLnRvUHJvbWlzZSgpXG4gICAgKTtcblxuICAgIGlmICh1aUFjdGlvbnMpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0VWlBY3Rpb25Nb2RlbHModWlBY3Rpb25zKTtcbiAgICB9XG5cbiAgICBpZiAoIXJvb3ROb2Rlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb290Tm9kZXMgYXJlIHVuZGVmaW5lZCEnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvb3ROb2RlcztcbiAgfVxuICBvdmVycmlkZSBhc3luYyBkb3dubG9hZENoaWxkcmVuKHBhcmVudE5vZGU6IFNtYXJ0VHJlZU5vZGUpOiBQcm9taXNlPFNtYXJ0VHJlZU5vZGVbXT4ge1xuICAgIGxldCB1dWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUhKTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmdldENoaWxkcmVuTm9kZXMyKHV1aWQsIHRoaXMudHJlZUlkISwgcGFyZW50Tm9kZS5pZGVudGlmaWVyISkudG9Qcm9taXNlKClcbiAgICApO1xuICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSB3aXRoIGlkZW50aWZpZXIgJHtwYXJlbnROb2RlLmlkZW50aWZpZXJ9IGRvZXMgbm90IGhhdmUgY2hpbGRyZW4uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIG92ZXJyaWRlIGFzeW5jIG9uVHJlZU5vZGVPcGVuKHRyZWVOb2RlOiBTbWFydFRyZWVOb2RlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHZpZXdVdWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUhKTtcblxuICAgIGlmICh0cmVlTm9kZT8uZXhwYW5kZWQpIHtcbiAgICAgIGxldCB0ZW1wVHJlZU5vZGUgPSBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmNvbGxhcHNlTm9kZTIodmlld1V1aWQsIHRoaXMudHJlZUlkISwgdHJlZU5vZGUuaWRlbnRpZmllciEpLnRvUHJvbWlzZSgpXG4gICAgICApO1xuICAgICAgdHJlZU5vZGUgPSB0ZW1wVHJlZU5vZGUhO1xuICAgIH0gZWxzZSBpZiAoIXRyZWVOb2RlPy5leHBhbmRlZCkge1xuICAgICAgbGV0IHRlbXBUcmVlTm9kZSA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuZXhwYW5kTm9kZTIodmlld1V1aWQsIHRoaXMudHJlZUlkISwgdHJlZU5vZGU/LmlkZW50aWZpZXIhKS50b1Byb21pc2UoKVxuICAgICAgKTtcbiAgICAgIHRyZWVOb2RlID0gdGVtcFRyZWVOb2RlITtcbiAgICB9XG4gICAgbGV0IG5vZGUgPSB0aGlzLmRlZXBTZWFyY2hUcmVlTm9kZSh0cmVlTm9kZT8uaWRlbnRpZmllciEsIHRoaXMudHJlZUZyb21CYWNrZW5kISk7XG5cbiAgICBub2RlIS5leHBhbmRlZCA9IHRyZWVOb2RlPy5leHBhbmRlZDtcbiAgICBub2RlIS5jaGlsZHJlbk5vZGVzID0gdHJlZU5vZGU/LmNoaWxkcmVuTm9kZXM7XG4gICAgdGhpcy5zeW5jVHJlZSgpO1xuICB9XG4gIG92ZXJyaWRlIG9uVHJlZU5vZGVDbGljayh0cmVlTm9kZTogU21hcnRUcmVlTm9kZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0Rm9sZGVyKHRyZWVOb2RlLmlkZW50aWZpZXIhLCB0cmVlTm9kZSk7XG4gIH1cbiAgYXN5bmMgc2VsZWN0Rm9sZGVyKGZvbGRlclVyaTogc3RyaW5nLCB0cmVlTm9kZT86IFNtYXJ0VHJlZU5vZGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgdmlld1V1aWQgPSB0aGlzLnZpZXdDb250ZXh0LmdldFV1aWRPZlBhZ2UodGhpcy5wYWdlTmFtZSEpO1xuXG4gICAgbGV0IHVwZGF0ZWRUcmVlTm9kZSA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnNlbGVjdE5vZGUyKHZpZXdVdWlkLCB0aGlzLnRyZWVJZCEsIHRyZWVOb2RlIS5pZGVudGlmaWVyISkudG9Qcm9taXNlKClcbiAgICApO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSB1cGRhdGVkVHJlZU5vZGU7XG4gICAgbGV0IG5vZGUgPSB0aGlzLmRlZXBTZWFyY2hUcmVlTm9kZSh1cGRhdGVkVHJlZU5vZGU/LmlkZW50aWZpZXIhLCB0aGlzLnRyZWVGcm9tQmFja2VuZCEpO1xuICAgIGlmICghbm9kZSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1RyZWUgbm9kZSBkb2VzIG5vdCBleGlzdCcpO1xuICAgIH1cbiAgICBub2RlLmV4cGFuZGVkID0gdXBkYXRlZFRyZWVOb2RlPy5leHBhbmRlZCE7XG4gICAgbm9kZS5jaGlsZHJlbk5vZGVzID0gdXBkYXRlZFRyZWVOb2RlPy5jaGlsZHJlbk5vZGVzITtcbiAgICBub2RlLnNlbGVjdGVkID0gdXBkYXRlZFRyZWVOb2RlPy5zZWxlY3RlZCE7XG4gICAgdHJlZU5vZGUgPSB1cGRhdGVkVHJlZU5vZGU7XG4gICAgdGhpcy5zeW5jVHJlZSgpO1xuICAgIC8vdGhpcy52aWV3Q29udGV4dC5nZXRBbmRTeW5jVmlld0NvbnRleHQodGhpcy52aWV3Q29udGV4dC5nZXRWaWV3Q29udGV4dFV1aWQoKSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVUcmVlT25UaGVGbHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBzeW5jVHJlZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy50cmVlRnJvbUJhY2tlbmQgPT09IG51bGwgfHwgdGhpcy50cmVlRnJvbUJhY2tlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy90aHJvdyBuZXcgRXJyb3IoJ1RoZXJlIGlzIG5vIHRyZWVGcm9tQmFja2VuZCBhdmFpbGFibGUhJyk7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZXJlIGlzIG5vIHRyZWVGcm9tQmFja2VuZCBhdmFpbGFibGUgaW4gc3luY1RyZWUhJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY2FjaGVBY3Rpb25EZXNjaXB0b3JzKHRoaXMuZ2V0QWxsTm9kZXModGhpcy50cmVlRnJvbUJhY2tlbmQhKSk7XG5cbiAgICBpZiAoIXRoaXMuc21hcnRUcmVlTW9kZWwpIHtcbiAgICAgIHRoaXMuc21hcnRUcmVlTW9kZWwgPSB7XG4gICAgICAgIHJvb3ROb2RlczogW10sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBzbWFydFRyZWVOb2RlczogU21hcnRUcmVlTm9kZVtdID0gdGhpcy5jcmVhdGVCdXR0b25zRm9yVHJlZU5vZGVzKHRoaXMudHJlZUZyb21CYWNrZW5kKTtcbiAgICB0aGlzLnNtYXJ0VHJlZU1vZGVsID0gdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5zbWFydFRyZWVNb2RlbCA9IHtcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMudHJlZUlkLFxuICAgICAgcm9vdE5vZGVzOiBbXSxcbiAgICB9O1xuICAgIHRoaXMuc21hcnRUcmVlTW9kZWxDaGFuZ2VkLm5leHQodGhpcy5zbWFydFRyZWVNb2RlbCk7XG5cbiAgICB0aGlzLnNtYXJ0VHJlZU1vZGVsLnJvb3ROb2RlcyA9IHNtYXJ0VHJlZU5vZGVzO1xuXG4gICAgdGhpcy5maW5kU2VsZWN0ZWQodGhpcy5zbWFydFRyZWVNb2RlbC5yb290Tm9kZXMpO1xuXG4gICAgdGhpcy5zbWFydFRyZWVNb2RlbENoYW5nZWQubmV4dCh0aGlzLnNtYXJ0VHJlZU1vZGVsKTtcbiAgfVxuXG4gIGRlZXBTZWFyY2hUcmVlTm9kZShpZGVudGlmaWVyOiBzdHJpbmcsIG5vZGVzOiBTbWFydFRyZWVOb2RlW10pOiBTbWFydFRyZWVOb2RlIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgdHJlZU5vZGU6IFNtYXJ0VHJlZU5vZGUgfCB1bmRlZmluZWQ7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG5vZGVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2luZGV4XTtcblxuICAgICAgaWYgKG5vZGUuaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgICB0cmVlTm9kZSA9IG5vZGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW5Ob2RlcyAmJiBub2RlLmNoaWxkcmVuTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHRyZWVOb2RlID0gdGhpcy5kZWVwU2VhcmNoVHJlZU5vZGUoaWRlbnRpZmllciwgbm9kZS5jaGlsZHJlbk5vZGVzKTtcbiAgICAgICAgaWYgKHRyZWVOb2RlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRyZWVOb2RlO1xuICB9XG5cbiAgZmluZFNlbGVjdGVkKG5vZGVzOiBTbWFydFRyZWVOb2RlW10pOiB2b2lkIHtcbiAgICByZXR1cm4gbm9kZXMuZm9yRWFjaCgobm9kZTogU21hcnRUcmVlTm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUuc2VsZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBub2RlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGRyZW5Ob2RlcyAmJiBub2RlLmNoaWxkcmVuTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRTZWxlY3RlZChub2RlLmNoaWxkcmVuTm9kZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlQnV0dG9uc0ZvclRyZWVOb2Rlcyhub2RlczogU21hcnRUcmVlTm9kZVtdKTogU21hcnRUcmVlTm9kZVtdIHtcbiAgICBsZXQgaWNvbiA9IHRoaXMudHJlZU1lbnVJY29uID8/ICdtb3JlX3ZlcnQnO1xuXG4gICAgbm9kZXMubWFwKChub2RlOiBTbWFydFRyZWVOb2RlKSA9PiB7XG4gICAgICBub2RlLmJ1dHRvbiA9IG5vZGUuYWN0aW9ucz8ubGVuZ3RoXG4gICAgICAgID8ge1xuICAgICAgICAgICAgdHlwZTogU21hcnRUcmVlTm9kZUJ1dHRvblR5cGUuTUVOVSxcbiAgICAgICAgICAgIGljb246IGljb24sXG4gICAgICAgICAgICBtZW51SXRlbUJ1dHRvbnM6IG5vZGUuYWN0aW9ucy5tYXAoKGFjdGlvbjogVWlBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTbWFydFRyZWVOb2RlQnV0dG9uVHlwZS5OT1JNQUwsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0TGFiZWxCeUFjdGlvbihhY3Rpb24pLFxuICAgICAgICAgICAgICAgIGNhbGxiYWNrOiB0aGlzLmRvQWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgYXJnczogW2FjdGlvbiwgbm9kZS5pZGVudGlmaWVyXSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBub2RlLmljb24gPSAnRm9sZGVycyc7XG4gICAgICBpZiAobm9kZS5jaGlsZHJlbk5vZGVzKSB7XG4gICAgICAgIG5vZGUuY2hpbGRyZW5Ob2RlcyA9IHRoaXMuY3JlYXRlQnV0dG9uc0ZvclRyZWVOb2Rlcyhub2RlLmNoaWxkcmVuTm9kZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIGFzeW5jIGRvQWN0aW9uKGFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHVpQWN0aW9uOiBVaUFjdGlvbiA9IGFyZ3NbMF07XG4gICAgbGV0IG5vZGVVdWlkOiBzdHJpbmcgPSBhcmdzWzFdO1xuXG4gICAgaWYgKHVpQWN0aW9uLnBhcmFtcykge1xuICAgICAgdWlBY3Rpb24ucGFyYW1zWydub2RlVXVpZCddID0gbm9kZVV1aWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVpQWN0aW9uLnBhcmFtcyA9IHtcbiAgICAgICAgbm9kZVV1aWQ6IG5vZGVVdWlkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBsZXQgdWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCA9IHtcbiAgICAgIHNlcnZpY2VUb1VzZTogdGhpcyxcbiAgICAgIHVpQWN0aW9uLFxuICAgIH07XG4gICAgdGhpcy51aUFjdGlvblNlcnZpY2UudWlBY3Rpb25Nb2RlbCA9IHVpQWN0aW9uTW9kZWw7XG4gICAgdGhpcy51aUFjdGlvblNlcnZpY2UuZXhlY3V0ZSh1aUFjdGlvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QWxsTm9kZXMobm9kZXM6IFNtYXJ0VHJlZU5vZGVbXSk6IFNtYXJ0VHJlZU5vZGVbXSB7XG4gICAgcmV0dXJuIG5vZGVzLmZsYXRNYXAoKG4pID0+IFtuLCAuLi50aGlzLmdldEFsbE5vZGVzKG4uY2hpbGRyZW5Ob2RlcyldKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjYWNoZUFjdGlvbkRlc2NpcHRvcnMobm9kZXM6IFNtYXJ0VHJlZU5vZGVbXSkge1xuICAgIGxldCBuZXdVaUFjdGlvbnMgPSBuZXcgU2V0PFVpQWN0aW9uPigpO1xuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIG5vZGUuYWN0aW9uc1xuICAgICAgICA/LmZpbHRlcigodWlBY3Rpb246IFVpQWN0aW9uKSA9PiAhdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JzLmdldCh1aUFjdGlvbi5jb2RlISkpXG4gICAgICAgIC5mb3JFYWNoKChhY3Rpb24pID0+IG5ld1VpQWN0aW9ucy5hZGQoYWN0aW9uKSk7XG4gICAgfSk7XG4gICAgZm9yIChsZXQgYWN0aW9uIG9mIG5ld1VpQWN0aW9ucykge1xuICAgICAgaWYgKCF0aGlzLnVpQWN0aW9uRGVzY3JpcHRvcnMuZ2V0KGFjdGlvbi5jb2RlISkpIHtcbiAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBhd2FpdCB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UuZ2V0QWN0aW9uRGVzY3JpcHRvcihhY3Rpb24pO1xuICAgICAgICB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvcnMuc2V0KGFjdGlvbi5jb2RlISwgZGVzY3JpcHRvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldExhYmVsQnlBY3Rpb24oYWN0aW9uOiBVaUFjdGlvbik6IHN0cmluZyB7XG4gICAgbGV0IGRlc2MgPSB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvcnMuZ2V0KGFjdGlvbi5jb2RlISk7XG4gICAgcmV0dXJuIGRlc2MhLnRpdGxlO1xuICB9XG5cbiAgLy8gI3JlZ2lvbiBVc2VVaUFjdGlvblxuICBnZXRBZGRpdGlvbmFsUGFyYW1zKHVpQWN0aW9uOiBVaUFjdGlvbik6IFVpQWN0aW9uQWRkaXRpb25hbFBhcmFtcyB7XG4gICAgaWYgKHVpQWN0aW9uLnBhcmFtcyAmJiB1aUFjdGlvbi5wYXJhbXNbJ25vZGVVdWlkJ10pIHtcbiAgICAgIGxldCBub2RlVXVpZCA9IHVpQWN0aW9uLnBhcmFtcyFbJ25vZGVVdWlkJ107XG5cbiAgICAgIGxldCBub2RlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHVpQWN0aW9uLmNvZGUgPT09ICdSRU5BTUUnKSB7XG4gICAgICAgIG5vZGVOYW1lID0gdGhpcy5kZWVwU2VhcmNoVHJlZU5vZGUobm9kZVV1aWQsIHRoaXMudHJlZUZyb21CYWNrZW5kISk/LmNhcHRpb247XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvclRleHRBcmVhOiAnJyxcbiAgICAgICAgZm9yVGV4dEZpZWxkOiBub2RlTmFtZSA/IG5vZGVOYW1lIDogJycsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBmb3JUZXh0QXJlYTogJycsXG4gICAgICBmb3JUZXh0RmllbGQ6ICcnLFxuICAgIH07XG4gIH1cbiAgZ2V0TW9kZWwoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgYXN5bmMgcGVyZm9ybVVpQWN0aW9uUmVxdWVzdCh1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ25vZGVVdWlkJ10pIHtcbiAgICAgIGF3YWl0IHRoaXMucGVyZm9ybU5vZGVVaUFjdGlvblJlcXVlc3QodWlBY3Rpb25SZXF1ZXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5wZXJmb3JtTWFpblVpQWN0aW9uUmVxdWVzdCh1aUFjdGlvblJlcXVlc3QpO1xuICAgIH1cblxuICAgIC8vYXdhaXQgdGhpcy52aWV3Q29udGV4dC5nZXRBbmRTeW5jVmlld0NvbnRleHQoKTtcblxuICAgIHRoaXMuc3luY1RyZWUoKTtcbiAgfVxuXG4gIGFzeW5jIHBlcmZvcm1Ob2RlVWlBY3Rpb25SZXF1ZXN0KHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxhbnk+IHtcbiAgICBsZXQgbm9kZUlkID0gdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snbm9kZVV1aWQnXTtcbiAgICBkZWxldGUgdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snbm9kZVV1aWQnXTtcblxuICAgIGxldCB2aWV3VXVpZCA9IHRoaXMudmlld0NvbnRleHQuZ2V0VXVpZE9mUGFnZSh0aGlzLnBhZ2VOYW1lKTtcblxuICAgIHRoaXMudHJlZUZyb21CYWNrZW5kID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UucGVyZm9ybUFjdGlvbjIodmlld1V1aWQsIHRoaXMudHJlZUlkISwgbm9kZUlkLCB1aUFjdGlvblJlcXVlc3QpLnRvUHJvbWlzZSgpXG4gICAgKTtcbiAgfVxuICBhc3luYyBwZXJmb3JtTWFpblVpQWN0aW9uUmVxdWVzdCh1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCk6IFByb21pc2U8YW55PiB7XG4gICAgbGV0IHZpZXdVdWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUpO1xuXG4gICAgdGhpcy50cmVlRnJvbUJhY2tlbmQgPSBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5wZXJmb3JtTWFpbkFjdGlvbjIodmlld1V1aWQsIHRoaXMudHJlZUlkISwgdWlBY3Rpb25SZXF1ZXN0KS50b1Byb21pc2UoKVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVTcGVjaWZpY0RlbWFuZHNBc3luY2hyb25vdXNseShcbiAgICB1aUFjdGlvbjogVWlBY3Rpb24sXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcbiAgKTogUHJvbWlzZTxVaUFjdGlvblNwZWNpZmljRGVtYW5kUmVzcG9uc2U+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxufVxuIl19
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0cmVlLWdlbmVyaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRyZWUvc21hcnR0cmVlLWdlbmVyaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsdUJBQXVCLEVBSXZCLHlCQUF5QixFQUd6QixlQUFlLEdBR2hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBVXhDLE1BQU0sT0FBTyx1QkFDWCxTQUFRLGdCQUFpQztJQWlCekMsWUFDRSxNQUFnQixFQUNjLFFBQWdCLEVBQ2xCLE1BQWMsRUFDVixZQUFxQjtRQUVyRCxLQUFLLEVBQUUsQ0FBQztRQUpzQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDVixpQkFBWSxHQUFaLFlBQVksQ0FBUztRQWxCdkQseUJBQXlCO1FBQ3pCLFdBQU0sR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVuRCx3QkFBbUIsR0FBb0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQWtCL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMs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L0QsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUN2RSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFPLEVBQUUsZUFBZSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQzNGLENBQUM7SUFDSixDQUFDO0lBRUQsbUNBQW1DLENBQ2pDLFFBQWtCLEVBQ2xCLGVBQWdDO1FBRWhDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDOytHQS9VVSx1QkFBdUIsMENBb0J4QixVQUFVLGFBQ1YsUUFBUSxhQUNSLGNBQWM7bUhBdEJiLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFxQkksTUFBTTsyQkFBQyxVQUFVOzswQkFDakIsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTbWFydFZpZXdDb250ZXh0U2VydmljZSxcbiAgVWlBY3Rpb24sXG4gIFVpQWN0aW9uQWRkaXRpb25hbFBhcmFtcyxcbiAgVWlBY3Rpb25EZXNjcmlwdG9yLFxuICBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlLFxuICBVaUFjdGlvbk1vZGVsLFxuICBVaUFjdGlvblJlcXVlc3QsXG4gIFVpQWN0aW9uU2VydmljZSxcbiAgVWlBY3Rpb25TcGVjaWZpY0RlbWFuZFJlc3BvbnNlLFxuICBVc2VVaUFjdGlvbixcbn0gZnJvbSAnLi4vdmlldy1jb250ZXh0L3Byb2plY3RzJztcbmltcG9ydCB7IFRyZWVTZXJ2aWNlIH0gZnJvbSAnLi90cmVlLWFwaS9hcGkvdHJlZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNtYXJ0VHJlZU5vZGUsIFNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlIH0gZnJvbSAnLi9zbWFydHRyZWUubW9kZWwnO1xuaW1wb3J0IHsgU21hcnR0cmVlU2VydmljZSB9IGZyb20gJy4vc21hcnR0cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnZmFzdC1lcXVhbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0dHJlZUNvbmZpZ3VyYXRpb24ge1xuICB0cmVlaWQ6IHN0cmluZztcbiAgcGFnZU5hbWU6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlXG4gIGV4dGVuZHMgU21hcnR0cmVlU2VydmljZTxTbWFydFRyZWVOb2RlW10+XG4gIGltcGxlbWVudHMgVXNlVWlBY3Rpb25cbntcbiAgLy8gVXNlVWlBY3Rpb24gcHJvcGVydGllc1xuICBzdWJtaXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICByZVN1YnNjcmliZVRvQ2hhbmdlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICB1aUFjdGlvbkRlc2NyaXB0b3JzOiBNYXA8c3RyaW5nLCBVaUFjdGlvbkRlc2NyaXB0b3I+ID0gbmV3IE1hcCgpO1xuXG4gIHNlbGVjdGVkTm9kZT86IFNtYXJ0VHJlZU5vZGU7XG5cbiAgcHJvdGVjdGVkIHZpZXdDb250ZXh0ITogU21hcnRWaWV3Q29udGV4dFNlcnZpY2U7XG4gIHByaXZhdGUgc2VydmljZSE6IFRyZWVTZXJ2aWNlO1xuXG4gIHByaXZhdGUgdWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSE6IFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2U7XG4gIHByaXZhdGUgdWlBY3Rpb25TZXJ2aWNlITogVWlBY3Rpb25TZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdDogSW5qZWN0b3IsXG4gICAgQEluamVjdCgncGFnZU5hbWUnKSBwcm90ZWN0ZWQgcGFnZU5hbWU6IHN0cmluZyxcbiAgICBASW5qZWN0KCd0cmVlSWQnKSBwcm90ZWN0ZWQgdHJlZUlkOiBzdHJpbmcsXG4gICAgQEluamVjdCgndHJlZU1lbnVJY29uJykgcHJpdmF0ZSB0cmVlTWVudUljb24/OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICghdGhpcy50cmVlTWVudUljb24pIHtcbiAgICAgIHRoaXMudHJlZU1lbnVJY29uID0gaW5qZWN0LmdldCgndHJlZU1lbnVJY29uJyk7XG4gICAgfVxuICAgIHRoaXMuY29uZmlndXJlVHJlZSh7XG4gICAgICBwYWdlTmFtZTogdGhpcy5wYWdlTmFtZSxcbiAgICAgIHRyZWVpZDogdGhpcy50cmVlSWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZXdDb250ZXh0ID0gaW5qZWN0LmdldChTbWFydFZpZXdDb250ZXh0U2VydmljZSk7XG4gICAgdGhpcy5zZXJ2aWNlID0gaW5qZWN0LmdldChUcmVlU2VydmljZSk7XG5cbiAgICB0aGlzLnVpQWN0aW9uU2VydmljZSA9IGluamVjdC5nZXQoVWlBY3Rpb25TZXJ2aWNlKTtcbiAgICB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UgPSBpbmplY3QuZ2V0KFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UpO1xuXG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RVaUFjdGlvbk1vZGVscyh1aUFjdGlvbnM6IFVpQWN0aW9uW10pOiB2b2lkIHtcbiAgICB0aGlzLnVpQWN0aW9uTW9kZWxzID0gdWlBY3Rpb25zLm1hcCgodWlBY3Rpb246IFVpQWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZXJ2aWNlVG9Vc2U6IHRoaXMsXG4gICAgICAgIHVpQWN0aW9uLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbmZpZ3VyZVRyZWUoY29uZmlndXJhdGlvbjogU21hcnR0cmVlQ29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudHJlZUlkID0gY29uZmlndXJhdGlvbi50cmVlaWQ7XG4gICAgdGhpcy5wYWdlTmFtZSA9IGNvbmZpZ3VyYXRpb24ucGFnZU5hbWU7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnZpZXdDb250ZXh0Lmhhc1ZpZXdDb250ZXh0VXVpZCgpKSB7XG4gICAgICBhd2FpdCB0aGlzLmRvd25sb2FkVHJlZSgpLnRoZW4oKHJvb3ROb2RlczogU21hcnRUcmVlTm9kZVtdKSA9PiB7XG4gICAgICAgIGlmICghZGVlcEVxdWFsKHRoaXMudHJlZUZyb21CYWNrZW5kLCByb290Tm9kZXMpKSB7XG4gICAgICAgICAgdGhpcy50cmVlRnJvbUJhY2tlbmQgPSByb290Tm9kZXM7XG4gICAgICAgICAgdGhpcy5zeW5jVHJlZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgb3ZlcnJpZGUgYXN5bmMgZG93bmxvYWRUcmVlKCk6IFByb21pc2U8U21hcnRUcmVlTm9kZVtdPiB7XG4gICAgbGV0IHV1aWQgPSB0aGlzLnZpZXdDb250ZXh0LmdldFV1aWRPZlBhZ2UodGhpcy5wYWdlTmFtZSEpO1xuICAgIGNvbnN0IHJvb3ROb2RlcyA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmdldFJvb3ROb2RlczIodXVpZCwgdGhpcy50cmVlSWQhKS50b1Byb21pc2UoKVxuICAgICk7XG4gICAgY29uc3QgdWlBY3Rpb25zID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0TWFpbkFjdGlvbnMyKHV1aWQsIHRoaXMudHJlZUlkISkudG9Qcm9taXNlKClcbiAgICApO1xuXG4gICAgaWYgKHVpQWN0aW9ucykge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RVaUFjdGlvbk1vZGVscyh1aUFjdGlvbnMpO1xuICAgIH1cblxuICAgIGlmICghcm9vdE5vZGVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jvb3ROb2RlcyBhcmUgdW5kZWZpbmVkIScpO1xuICAgIH1cbiAgICByZXR1cm4gcm9vdE5vZGVzO1xuICB9XG4gIG92ZXJyaWRlIGFzeW5jIGRvd25sb2FkQ2hpbGRyZW4ocGFyZW50Tm9kZTogU21hcnRUcmVlTm9kZSk6IFByb21pc2U8U21hcnRUcmVlTm9kZVtdPiB7XG4gICAgbGV0IHV1aWQgPSB0aGlzLnZpZXdDb250ZXh0LmdldFV1aWRPZlBhZ2UodGhpcy5wYWdlTmFtZSEpO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0Q2hpbGRyZW5Ob2RlczIodXVpZCwgdGhpcy50cmVlSWQhLCBwYXJlbnROb2RlLmlkZW50aWZpZXIhKS50b1Byb21pc2UoKVxuICAgICk7XG4gICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlIHdpdGggaWRlbnRpZmllciAke3BhcmVudE5vZGUuaWRlbnRpZmllcn0gZG9lcyBub3QgaGF2ZSBjaGlsZHJlbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgb3ZlcnJpZGUgYXN5bmMgb25UcmVlTm9kZU9wZW4odHJlZU5vZGU6IFNtYXJ0VHJlZU5vZGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgdmlld1V1aWQgPSB0aGlzLnZpZXdDb250ZXh0LmdldFV1aWRPZlBhZ2UodGhpcy5wYWdlTmFtZSEpO1xuXG4gICAgaWYgKHRyZWVOb2RlPy5leHBhbmRlZCkge1xuICAgICAgbGV0IHRlbXBUcmVlTm9kZSA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuY29sbGFwc2VOb2RlMih2aWV3VXVpZCwgdGhpcy50cmVlSWQhLCB0cmVlTm9kZS5pZGVudGlmaWVyISkudG9Qcm9taXNlKClcbiAgICAgICk7XG4gICAgICB0cmVlTm9kZSA9IHRlbXBUcmVlTm9kZSE7XG4gICAgfSBlbHNlIGlmICghdHJlZU5vZGU/LmV4cGFuZGVkKSB7XG4gICAgICBsZXQgdGVtcFRyZWVOb2RlID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5leHBhbmROb2RlMih2aWV3VXVpZCwgdGhpcy50cmVlSWQhLCB0cmVlTm9kZT8uaWRlbnRpZmllciEpLnRvUHJvbWlzZSgpXG4gICAgICApO1xuICAgICAgdHJlZU5vZGUgPSB0ZW1wVHJlZU5vZGUhO1xuICAgIH1cbiAgICBsZXQgbm9kZSA9IHRoaXMuZGVlcFNlYXJjaFRyZWVOb2RlKHRyZWVOb2RlPy5pZGVudGlmaWVyISwgdGhpcy50cmVlRnJvbUJhY2tlbmQhKTtcblxuICAgIG5vZGUhLmV4cGFuZGVkID0gdHJlZU5vZGU/LmV4cGFuZGVkO1xuICAgIG5vZGUhLmNoaWxkcmVuTm9kZXMgPSB0cmVlTm9kZT8uY2hpbGRyZW5Ob2RlcztcbiAgICB0aGlzLnN5bmNUcmVlKCk7XG4gIH1cbiAgb3ZlcnJpZGUgb25UcmVlTm9kZUNsaWNrKHRyZWVOb2RlOiBTbWFydFRyZWVOb2RlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RGb2xkZXIodHJlZU5vZGUuaWRlbnRpZmllciEsIHRyZWVOb2RlKTtcbiAgfVxuICBhc3luYyBzZWxlY3RGb2xkZXIoZm9sZGVyVXJpOiBzdHJpbmcsIHRyZWVOb2RlPzogU21hcnRUcmVlTm9kZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCB2aWV3VXVpZCA9IHRoaXMudmlld0NvbnRleHQuZ2V0VXVpZE9mUGFnZSh0aGlzLnBhZ2VOYW1lISk7XG5cbiAgICBsZXQgdXBkYXRlZFRyZWVOb2RlID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5oYW5kbGVQZXJmb3JtQWN0aW9uUmVzcG9uc2UoXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2Uuc2VsZWN0Tm9kZTIodmlld1V1aWQsIHRoaXMudHJlZUlkISwgdHJlZU5vZGUhLmlkZW50aWZpZXIhKS50b1Byb21pc2UoKVxuICAgICk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWROb2RlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHVwZGF0ZWRUcmVlTm9kZTtcbiAgICBsZXQgbm9kZSA9IHRoaXMuZGVlcFNlYXJjaFRyZWVOb2RlKHVwZGF0ZWRUcmVlTm9kZT8uaWRlbnRpZmllciEsIHRoaXMudHJlZUZyb21CYWNrZW5kISk7XG4gICAgaWYgKCFub2RlKSB7XG4gICAgICB0aHJvdyBFcnJvcignVHJlZSBub2RlIGRvZXMgbm90IGV4aXN0Jyk7XG4gICAgfVxuICAgIG5vZGUuZXhwYW5kZWQgPSB1cGRhdGVkVHJlZU5vZGU/LmV4cGFuZGVkITtcbiAgICBub2RlLmNoaWxkcmVuTm9kZXMgPSB1cGRhdGVkVHJlZU5vZGU/LmNoaWxkcmVuTm9kZXMhO1xuICAgIG5vZGUuc2VsZWN0ZWQgPSB1cGRhdGVkVHJlZU5vZGU/LnNlbGVjdGVkITtcbiAgICB0cmVlTm9kZSA9IHVwZGF0ZWRUcmVlTm9kZTtcbiAgICB0aGlzLnN5bmNUcmVlKCk7XG4gICAgLy90aGlzLnZpZXdDb250ZXh0LmdldEFuZFN5bmNWaWV3Q29udGV4dCh0aGlzLnZpZXdDb250ZXh0LmdldFZpZXdDb250ZXh0VXVpZCgpKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVRyZWVPblRoZUZseSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHN5bmNUcmVlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnRyZWVGcm9tQmFja2VuZCA9PT0gbnVsbCB8fCB0aGlzLnRyZWVGcm9tQmFja2VuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvL3Rocm93IG5ldyBFcnJvcignVGhlcmUgaXMgbm8gdHJlZUZyb21CYWNrZW5kIGF2YWlsYWJsZSEnKTtcbiAgICAgIGNvbnNvbGUud2FybignVGhlcmUgaXMgbm8gdHJlZUZyb21CYWNrZW5kIGF2YWlsYWJsZSBpbiBzeW5jVHJlZSEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5jYWNoZUFjdGlvbkRlc2NpcHRvcnModGhpcy5nZXRBbGxOb2Rlcyh0aGlzLnRyZWVGcm9tQmFja2VuZCEpKTtcblxuICAgIGlmICghdGhpcy5zbWFydFRyZWVNb2RlbCkge1xuICAgICAgdGhpcy5zbWFydFRyZWVNb2RlbCA9IHtcbiAgICAgICAgcm9vdE5vZGVzOiBbXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IHNtYXJ0VHJlZU5vZGVzOiBTbWFydFRyZWVOb2RlW10gPSB0aGlzLmNyZWF0ZUJ1dHRvbnNGb3JUcmVlTm9kZXModGhpcy50cmVlRnJvbUJhY2tlbmQpO1xuICAgIHRoaXMuc21hcnRUcmVlTW9kZWwgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnNtYXJ0VHJlZU1vZGVsID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy50cmVlSWQsXG4gICAgICByb290Tm9kZXM6IFtdLFxuICAgIH07XG4gICAgdGhpcy5zbWFydFRyZWVNb2RlbENoYW5nZWQubmV4dCh0aGlzLnNtYXJ0VHJlZU1vZGVsKTtcblxuICAgIHRoaXMuc21hcnRUcmVlTW9kZWwucm9vdE5vZGVzID0gc21hcnRUcmVlTm9kZXM7XG5cbiAgICB0aGlzLmZpbmRTZWxlY3RlZCh0aGlzLnNtYXJ0VHJlZU1vZGVsLnJvb3ROb2Rlcyk7XG5cbiAgICB0aGlzLnNtYXJ0VHJlZU1vZGVsQ2hhbmdlZC5uZXh0KHRoaXMuc21hcnRUcmVlTW9kZWwpO1xuICB9XG5cbiAgZGVlcFNlYXJjaFRyZWVOb2RlKGlkZW50aWZpZXI6IHN0cmluZywgbm9kZXM6IFNtYXJ0VHJlZU5vZGVbXSk6IFNtYXJ0VHJlZU5vZGUgfCB1bmRlZmluZWQge1xuICAgIGxldCB0cmVlTm9kZTogU21hcnRUcmVlTm9kZSB8IHVuZGVmaW5lZDtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbm9kZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBub2RlID0gbm9kZXNbaW5kZXhdO1xuXG4gICAgICBpZiAobm9kZS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICAgIHRyZWVOb2RlID0gbm9kZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5jaGlsZHJlbk5vZGVzICYmIG5vZGUuY2hpbGRyZW5Ob2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgdHJlZU5vZGUgPSB0aGlzLmRlZXBTZWFyY2hUcmVlTm9kZShpZGVudGlmaWVyLCBub2RlLmNoaWxkcmVuTm9kZXMpO1xuICAgICAgICBpZiAodHJlZU5vZGUpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJlZU5vZGU7XG4gIH1cblxuICBmaW5kU2VsZWN0ZWQobm9kZXM6IFNtYXJ0VHJlZU5vZGVbXSk6IHZvaWQge1xuICAgIHJldHVybiBub2Rlcy5mb3JFYWNoKChub2RlOiBTbWFydFRyZWVOb2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZHJlbk5vZGVzICYmIG5vZGUuY2hpbGRyZW5Ob2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZFNlbGVjdGVkKG5vZGUuY2hpbGRyZW5Ob2Rlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVCdXR0b25zRm9yVHJlZU5vZGVzKG5vZGVzOiBTbWFydFRyZWVOb2RlW10pOiBTbWFydFRyZWVOb2RlW10ge1xuICAgIGxldCBpY29uID0gdGhpcy50cmVlTWVudUljb24gPz8gJ21vcmVfdmVydCc7XG5cbiAgICBub2Rlcy5tYXAoKG5vZGU6IFNtYXJ0VHJlZU5vZGUpID0+IHtcbiAgICAgIG5vZGUuYnV0dG9uID0gbm9kZS5hY3Rpb25zPy5sZW5ndGhcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB0eXBlOiBTbWFydFRyZWVOb2RlQnV0dG9uVHlwZS5NRU5VLFxuICAgICAgICAgICAgaWNvbjogaWNvbixcbiAgICAgICAgICAgIG1lbnVJdGVtQnV0dG9uczogbm9kZS5hY3Rpb25zLm1hcCgoYWN0aW9uOiBVaUFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlLk5PUk1BTCxcbiAgICAgICAgICAgICAgICBjb2RlOiBhY3Rpb24uY29kZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbEJ5QWN0aW9uKGFjdGlvbiksXG4gICAgICAgICAgICAgICAgY2FsbGJhY2s6IHRoaXMuZG9BY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBhcmdzOiBbYWN0aW9uLCBub2RlLmlkZW50aWZpZXJdLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIG5vZGUuaWNvbiA9ICdGb2xkZXJzJztcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuTm9kZXMpIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbk5vZGVzID0gdGhpcy5jcmVhdGVCdXR0b25zRm9yVHJlZU5vZGVzKG5vZGUuY2hpbGRyZW5Ob2Rlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG5cbiAgYXN5bmMgZG9BY3Rpb24oYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgdWlBY3Rpb246IFVpQWN0aW9uID0gYXJnc1swXTtcbiAgICBsZXQgbm9kZVV1aWQ6IHN0cmluZyA9IGFyZ3NbMV07XG5cbiAgICBpZiAodWlBY3Rpb24ucGFyYW1zKSB7XG4gICAgICB1aUFjdGlvbi5wYXJhbXNbJ25vZGVVdWlkJ10gPSBub2RlVXVpZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdWlBY3Rpb24ucGFyYW1zID0ge1xuICAgICAgICBub2RlVXVpZDogbm9kZVV1aWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCB1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsID0ge1xuICAgICAgc2VydmljZVRvVXNlOiB0aGlzLFxuICAgICAgdWlBY3Rpb24sXG4gICAgfTtcbiAgICB0aGlzLnVpQWN0aW9uU2VydmljZS51aUFjdGlvbk1vZGVsID0gdWlBY3Rpb25Nb2RlbDtcbiAgICB0aGlzLnVpQWN0aW9uU2VydmljZS5leGVjdXRlKHVpQWN0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRBbGxOb2Rlcyhub2RlczogU21hcnRUcmVlTm9kZVtdKTogU21hcnRUcmVlTm9kZVtdIHtcbiAgICByZXR1cm4gbm9kZXMuZmxhdE1hcCgobikgPT4gW24sIC4uLnRoaXMuZ2V0QWxsTm9kZXMobi5jaGlsZHJlbk5vZGVzKV0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNhY2hlQWN0aW9uRGVzY2lwdG9ycyhub2RlczogU21hcnRUcmVlTm9kZVtdKSB7XG4gICAgbGV0IG5ld1VpQWN0aW9ucyA9IG5ldyBTZXQ8VWlBY3Rpb24+KCk7XG4gICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgbm9kZS5hY3Rpb25zXG4gICAgICAgID8uZmlsdGVyKCh1aUFjdGlvbjogVWlBY3Rpb24pID0+ICF0aGlzLnVpQWN0aW9uRGVzY3JpcHRvcnMuZ2V0KHVpQWN0aW9uLmNvZGUhKSlcbiAgICAgICAgLmZvckVhY2goKGFjdGlvbikgPT4gbmV3VWlBY3Rpb25zLmFkZChhY3Rpb24pKTtcbiAgICB9KTtcbiAgICBmb3IgKGxldCBhY3Rpb24gb2YgbmV3VWlBY3Rpb25zKSB7XG4gICAgICBpZiAoIXRoaXMudWlBY3Rpb25EZXNjcmlwdG9ycy5nZXQoYWN0aW9uLmNvZGUhKSkge1xuICAgICAgICBsZXQgZGVzY3JpcHRvciA9IGF3YWl0IHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZS5nZXRBY3Rpb25EZXNjcmlwdG9yKGFjdGlvbik7XG4gICAgICAgIHRoaXMudWlBY3Rpb25EZXNjcmlwdG9ycy5zZXQoYWN0aW9uLmNvZGUhLCBkZXNjcmlwdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZ2V0TGFiZWxCeUFjdGlvbihhY3Rpb246IFVpQWN0aW9uKTogc3RyaW5nIHtcbiAgICBsZXQgZGVzYyA9IHRoaXMudWlBY3Rpb25EZXNjcmlwdG9ycy5nZXQoYWN0aW9uLmNvZGUhKTtcbiAgICByZXR1cm4gZGVzYyEudGl0bGU7XG4gIH1cblxuICAvLyAjcmVnaW9uIFVzZVVpQWN0aW9uXG4gIGdldEFkZGl0aW9uYWxQYXJhbXModWlBY3Rpb246IFVpQWN0aW9uKTogVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zIHtcbiAgICBpZiAodWlBY3Rpb24ucGFyYW1zICYmIHVpQWN0aW9uLnBhcmFtc1snbm9kZVV1aWQnXSkge1xuICAgICAgbGV0IG5vZGVVdWlkID0gdWlBY3Rpb24ucGFyYW1zIVsnbm9kZVV1aWQnXTtcblxuICAgICAgbGV0IG5vZGVOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAodWlBY3Rpb24uY29kZSA9PT0gJ1JFTkFNRScpIHtcbiAgICAgICAgbm9kZU5hbWUgPSB0aGlzLmRlZXBTZWFyY2hUcmVlTm9kZShub2RlVXVpZCwgdGhpcy50cmVlRnJvbUJhY2tlbmQhKT8uY2FwdGlvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9yVGV4dEFyZWE6ICcnLFxuICAgICAgICBmb3JUZXh0RmllbGQ6IG5vZGVOYW1lID8gbm9kZU5hbWUgOiAnJyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZvclRleHRBcmVhOiAnJyxcbiAgICAgIGZvclRleHRGaWVsZDogJycsXG4gICAgfTtcbiAgfVxuICBnZXRNb2RlbCgpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBhc3luYyBwZXJmb3JtVWlBY3Rpb25SZXF1ZXN0KHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAodWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snbm9kZVV1aWQnXSkge1xuICAgICAgYXdhaXQgdGhpcy5wZXJmb3JtTm9kZVVpQWN0aW9uUmVxdWVzdCh1aUFjdGlvblJlcXVlc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnBlcmZvcm1NYWluVWlBY3Rpb25SZXF1ZXN0KHVpQWN0aW9uUmVxdWVzdCk7XG4gICAgfVxuXG4gICAgLy9hd2FpdCB0aGlzLnZpZXdDb250ZXh0LmdldEFuZFN5bmNWaWV3Q29udGV4dCgpO1xuXG4gICAgdGhpcy5zeW5jVHJlZSgpO1xuICB9XG5cbiAgYXN5bmMgcGVyZm9ybU5vZGVVaUFjdGlvblJlcXVlc3QodWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QpOiBQcm9taXNlPGFueT4ge1xuICAgIGxldCBub2RlSWQgPSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydub2RlVXVpZCddO1xuICAgIGRlbGV0ZSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydub2RlVXVpZCddO1xuXG4gICAgbGV0IHZpZXdVdWlkID0gdGhpcy52aWV3Q29udGV4dC5nZXRVdWlkT2ZQYWdlKHRoaXMucGFnZU5hbWUpO1xuXG4gICAgdGhpcy50cmVlRnJvbUJhY2tlbmQgPSBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmhhbmRsZVBlcmZvcm1BY3Rpb25SZXNwb25zZShcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5wZXJmb3JtQWN0aW9uMih2aWV3VXVpZCwgdGhpcy50cmVlSWQhLCBub2RlSWQsIHVpQWN0aW9uUmVxdWVzdCkudG9Qcm9taXNlKClcbiAgICApO1xuICB9XG4gIGFzeW5jIHBlcmZvcm1NYWluVWlBY3Rpb25SZXF1ZXN0KHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxhbnk+IHtcbiAgICBsZXQgdmlld1V1aWQgPSB0aGlzLnZpZXdDb250ZXh0LmdldFV1aWRPZlBhZ2UodGhpcy5wYWdlTmFtZSk7XG5cbiAgICB0aGlzLnRyZWVGcm9tQmFja2VuZCA9IGF3YWl0IHRoaXMudmlld0NvbnRleHQuaGFuZGxlUGVyZm9ybUFjdGlvblJlc3BvbnNlKFxuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnBlcmZvcm1NYWluQWN0aW9uMih2aWV3VXVpZCwgdGhpcy50cmVlSWQhLCB1aUFjdGlvblJlcXVlc3QpLnRvUHJvbWlzZSgpXG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5KFxuICAgIHVpQWN0aW9uOiBVaUFjdGlvbixcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdFxuICApOiBQcm9taXNlPFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG59XG4iXX0=
@@ -162,11 +162,11 @@ export class SmartTreeComponent {
162
162
  return `${cssClass}-${plusProperty}`;
163
163
  }
164
164
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartTreeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
165
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartTreeComponent, selector: "smart-tree", inputs: { treeStyle: "treeStyle", treeService: "treeService" }, viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true }, { propertyName: "trigger", predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div class=\"smartTreeContainer\">\n <smart-ui-action-toolbar\n *ngIf=\"uiActionModels.length\"\n [uiActionModels]=\"uiActionModels\"\n ></smart-ui-action-toolbar>\n <mat-tree\n #tree\n *ngIf=\"treeData\"\n [dataSource]=\"dataSource\"\n [treeControl]=\"treeControl\"\n class=\"sm-tree\"\n >\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodeToggle=\"{{ getIfExpanded(node) }}\"\n [ngClass]=\"getClassesForTreeNode(node)\"\n [ngStyle]=\"getNodeStyle(node)\"\n >\n <div\n [ngStyle]=\"getNodePadding(node)\"\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\n class=\"mat-tree-node sm-tree-node\"\n (click)=\"onNodeClick($event, node)\"\n >\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' + node.name\">\n <mat-icon\n class=\"mat-icon-rtl-mirror\"\n matTreeNodeToggle\n (click)=\"onOpenNode($event, node)\"\n >\n <div *ngIf=\"hasChild(node.level, node)\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </div>\n </mat-icon>\n </button>\n <smart-icon [icon]=\"node.icon\"> </smart-icon>\n <div class=\"sm-tree-row\" [ngClass]=\"node.classes\">\n <div class=\"sm-tree-row-caption\">\n {{ node.caption }}\n </div>\n <div class=\"sm-shortDescription-spacer\"></div>\n <div class=\"sm-tree-row-shortDescription\">\n {{ node.shortDescription }}\n </div>\n <div class=\"sm-shortDescription-button-spacer\"></div>\n <div *ngIf=\"node.button\" class=\"sm-tree-node-button\" [ngSwitch]=\"node.button.type\">\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.ICON\"\n mat-icon-button\n >\n <smart-icon title=\"{{ node.button.icon }}\" [icon]=\"node.button.icon\"></smart-icon>\n </button>\n <div *ngSwitchCase=\"smartTreeNodeButtonType.MENU\">\n <button\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, node.button, true)\"\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon\n >{{ node.button.label }}\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n *ngFor=\"let button of node.button.menuItemButtons\"\n (click)=\"customButtonClicked($event, button, true)\"\n mat-menu-item\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon\n >{{ button.label }}\n </button>\n </mat-menu>\n </div>\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.NORMAL\"\n mat-raised-button\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon>\n {{ node.button.icon }}\n </button>\n </div>\n </div>\n </div>\n <div\n [class.sm-tree-invisible]=\"!treeControl.isExpanded(node)\"\n [ngClass]=\"getClassesForTreeNodeChildren(node)\"\n role=\"group\"\n >\n <ng-container matTreeNodeOutlet></ng-container>\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n <div *ngIf=\"!treeData\">\n <h3>\n {{ errorMessage }}\n </h3>\n </div>\n</div>\n", styles: [".smartTreeContainer{display:flex;flex-direction:column;gap:.5rem}.sm-tree-invisible{display:none}.sm-tree ul,.sm-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.sm-tree div[role=group]>.mat-tree-node{padding-left:40px}.sm-tee-node{padding-left:40px}.sm-tree-node-name{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tree-node-name-row{padding-left:15px;padding-top:15px;display:flex;flex-direction:row;justify-content:space-between}.sm-tree-node-name-col{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tee-node-id{font-weight:lighter}.mat-tree-node:hover{cursor:pointer}::ng-deep .mat-icon-rtl-mirror{display:flex;flex-direction:row}.sm-tree-row{display:flex;flex-direction:row;flex:1;align-items:center}.sm-shortDescription-spacer{flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i4.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i4.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i4.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i4.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i6.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i7.UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }] }); }
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartTreeComponent, selector: "smart-tree", inputs: { treeStyle: "treeStyle", treeService: "treeService" }, viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true }, { propertyName: "trigger", predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div class=\"smartTreeContainer\">\n <smart-ui-action-toolbar\n *ngIf=\"uiActionModels.length\"\n [uiActionModels]=\"uiActionModels\"\n ></smart-ui-action-toolbar>\n <mat-tree\n #tree\n *ngIf=\"treeData\"\n [dataSource]=\"dataSource\"\n [treeControl]=\"treeControl\"\n class=\"sm-tree\"\n >\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodeToggle=\"{{ getIfExpanded(node) }}\"\n [ngClass]=\"getClassesForTreeNode(node)\"\n [ngStyle]=\"getNodeStyle(node)\"\n >\n <div\n [ngStyle]=\"getNodePadding(node)\"\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\n class=\"mat-tree-node sm-tree-node\"\n (click)=\"onNodeClick($event, node)\"\n >\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' + node.name\">\n <mat-icon\n class=\"mat-icon-rtl-mirror\"\n matTreeNodeToggle\n (click)=\"onOpenNode($event, node)\"\n >\n <div *ngIf=\"hasChild(node.level, node)\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </div>\n </mat-icon>\n </button>\n <smart-icon [icon]=\"node.icon\"> </smart-icon>\n <div class=\"sm-tree-row\" [ngClass]=\"node.classes\">\n <div class=\"sm-tree-row-caption\">\n {{ node.caption }}\n </div>\n <div class=\"sm-shortDescription-spacer\"></div>\n <div class=\"sm-tree-row-shortDescription\">\n {{ node.shortDescription }}\n </div>\n <div class=\"sm-shortDescription-button-spacer\"></div>\n <div *ngIf=\"node.button\" class=\"sm-tree-node-button\" [ngSwitch]=\"node.button.type\">\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.ICON\"\n mat-icon-button\n >\n <smart-icon title=\"{{ node.button.icon }}\" [icon]=\"node.button.icon\"></smart-icon>\n </button>\n <div *ngSwitchCase=\"smartTreeNodeButtonType.MENU\">\n <button\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, node.button, true)\"\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon\n >{{ node.button.label }}\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n *ngFor=\"let button of node.button.menuItemButtons\"\n (click)=\"customButtonClicked($event, button, true)\"\n mat-menu-item\n [attr.data-testid]=\"button.code ?? null\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon\n >{{ button.label }}\n </button>\n </mat-menu>\n </div>\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.NORMAL\"\n mat-raised-button\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon>\n {{ node.button.icon }}\n </button>\n </div>\n </div>\n </div>\n <div\n [class.sm-tree-invisible]=\"!treeControl.isExpanded(node)\"\n [ngClass]=\"getClassesForTreeNodeChildren(node)\"\n role=\"group\"\n >\n <ng-container matTreeNodeOutlet></ng-container>\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n <div *ngIf=\"!treeData\">\n <h3>\n {{ errorMessage }}\n </h3>\n </div>\n</div>\n", styles: [".smartTreeContainer{display:flex;flex-direction:column;gap:.5rem}.sm-tree-invisible{display:none}.sm-tree ul,.sm-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.sm-tree div[role=group]>.mat-tree-node{padding-left:40px}.sm-tee-node{padding-left:40px}.sm-tree-node-name{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tree-node-name-row{padding-left:15px;padding-top:15px;display:flex;flex-direction:row;justify-content:space-between}.sm-tree-node-name-col{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tee-node-id{font-weight:lighter}.mat-tree-node:hover{cursor:pointer}::ng-deep .mat-icon-rtl-mirror{display:flex;flex-direction:row}.sm-tree-row{display:flex;flex-direction:row;flex:1;align-items:center}.sm-shortDescription-spacer{flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i4.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i4.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i4.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i4.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i6.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i7.UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }] }); }
166
166
  }
167
167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartTreeComponent, decorators: [{
168
168
  type: Component,
169
- args: [{ selector: 'smart-tree', template: "<div class=\"smartTreeContainer\">\n <smart-ui-action-toolbar\n *ngIf=\"uiActionModels.length\"\n [uiActionModels]=\"uiActionModels\"\n ></smart-ui-action-toolbar>\n <mat-tree\n #tree\n *ngIf=\"treeData\"\n [dataSource]=\"dataSource\"\n [treeControl]=\"treeControl\"\n class=\"sm-tree\"\n >\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodeToggle=\"{{ getIfExpanded(node) }}\"\n [ngClass]=\"getClassesForTreeNode(node)\"\n [ngStyle]=\"getNodeStyle(node)\"\n >\n <div\n [ngStyle]=\"getNodePadding(node)\"\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\n class=\"mat-tree-node sm-tree-node\"\n (click)=\"onNodeClick($event, node)\"\n >\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' + node.name\">\n <mat-icon\n class=\"mat-icon-rtl-mirror\"\n matTreeNodeToggle\n (click)=\"onOpenNode($event, node)\"\n >\n <div *ngIf=\"hasChild(node.level, node)\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </div>\n </mat-icon>\n </button>\n <smart-icon [icon]=\"node.icon\"> </smart-icon>\n <div class=\"sm-tree-row\" [ngClass]=\"node.classes\">\n <div class=\"sm-tree-row-caption\">\n {{ node.caption }}\n </div>\n <div class=\"sm-shortDescription-spacer\"></div>\n <div class=\"sm-tree-row-shortDescription\">\n {{ node.shortDescription }}\n </div>\n <div class=\"sm-shortDescription-button-spacer\"></div>\n <div *ngIf=\"node.button\" class=\"sm-tree-node-button\" [ngSwitch]=\"node.button.type\">\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.ICON\"\n mat-icon-button\n >\n <smart-icon title=\"{{ node.button.icon }}\" [icon]=\"node.button.icon\"></smart-icon>\n </button>\n <div *ngSwitchCase=\"smartTreeNodeButtonType.MENU\">\n <button\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, node.button, true)\"\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon\n >{{ node.button.label }}\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n *ngFor=\"let button of node.button.menuItemButtons\"\n (click)=\"customButtonClicked($event, button, true)\"\n mat-menu-item\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon\n >{{ button.label }}\n </button>\n </mat-menu>\n </div>\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.NORMAL\"\n mat-raised-button\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon>\n {{ node.button.icon }}\n </button>\n </div>\n </div>\n </div>\n <div\n [class.sm-tree-invisible]=\"!treeControl.isExpanded(node)\"\n [ngClass]=\"getClassesForTreeNodeChildren(node)\"\n role=\"group\"\n >\n <ng-container matTreeNodeOutlet></ng-container>\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n <div *ngIf=\"!treeData\">\n <h3>\n {{ errorMessage }}\n </h3>\n </div>\n</div>\n", styles: [".smartTreeContainer{display:flex;flex-direction:column;gap:.5rem}.sm-tree-invisible{display:none}.sm-tree ul,.sm-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.sm-tree div[role=group]>.mat-tree-node{padding-left:40px}.sm-tee-node{padding-left:40px}.sm-tree-node-name{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tree-node-name-row{padding-left:15px;padding-top:15px;display:flex;flex-direction:row;justify-content:space-between}.sm-tree-node-name-col{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tee-node-id{font-weight:lighter}.mat-tree-node:hover{cursor:pointer}::ng-deep .mat-icon-rtl-mirror{display:flex;flex-direction:row}.sm-tree-row{display:flex;flex-direction:row;flex:1;align-items:center}.sm-shortDescription-spacer{flex:1}\n"] }]
169
+ args: [{ selector: 'smart-tree', template: "<div class=\"smartTreeContainer\">\n <smart-ui-action-toolbar\n *ngIf=\"uiActionModels.length\"\n [uiActionModels]=\"uiActionModels\"\n ></smart-ui-action-toolbar>\n <mat-tree\n #tree\n *ngIf=\"treeData\"\n [dataSource]=\"dataSource\"\n [treeControl]=\"treeControl\"\n class=\"sm-tree\"\n >\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodeToggle=\"{{ getIfExpanded(node) }}\"\n [ngClass]=\"getClassesForTreeNode(node)\"\n [ngStyle]=\"getNodeStyle(node)\"\n >\n <div\n [ngStyle]=\"getNodePadding(node)\"\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\n class=\"mat-tree-node sm-tree-node\"\n (click)=\"onNodeClick($event, node)\"\n >\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' + node.name\">\n <mat-icon\n class=\"mat-icon-rtl-mirror\"\n matTreeNodeToggle\n (click)=\"onOpenNode($event, node)\"\n >\n <div *ngIf=\"hasChild(node.level, node)\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </div>\n </mat-icon>\n </button>\n <smart-icon [icon]=\"node.icon\"> </smart-icon>\n <div class=\"sm-tree-row\" [ngClass]=\"node.classes\">\n <div class=\"sm-tree-row-caption\">\n {{ node.caption }}\n </div>\n <div class=\"sm-shortDescription-spacer\"></div>\n <div class=\"sm-tree-row-shortDescription\">\n {{ node.shortDescription }}\n </div>\n <div class=\"sm-shortDescription-button-spacer\"></div>\n <div *ngIf=\"node.button\" class=\"sm-tree-node-button\" [ngSwitch]=\"node.button.type\">\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.ICON\"\n mat-icon-button\n >\n <smart-icon title=\"{{ node.button.icon }}\" [icon]=\"node.button.icon\"></smart-icon>\n </button>\n <div *ngSwitchCase=\"smartTreeNodeButtonType.MENU\">\n <button\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, node.button, true)\"\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon\n >{{ node.button.label }}\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n *ngFor=\"let button of node.button.menuItemButtons\"\n (click)=\"customButtonClicked($event, button, true)\"\n mat-menu-item\n [attr.data-testid]=\"button.code ?? null\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon\n >{{ button.label }}\n </button>\n </mat-menu>\n </div>\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.NORMAL\"\n mat-raised-button\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon>\n {{ node.button.icon }}\n </button>\n </div>\n </div>\n </div>\n <div\n [class.sm-tree-invisible]=\"!treeControl.isExpanded(node)\"\n [ngClass]=\"getClassesForTreeNodeChildren(node)\"\n role=\"group\"\n >\n <ng-container matTreeNodeOutlet></ng-container>\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n <div *ngIf=\"!treeData\">\n <h3>\n {{ errorMessage }}\n </h3>\n </div>\n</div>\n", styles: [".smartTreeContainer{display:flex;flex-direction:column;gap:.5rem}.sm-tree-invisible{display:none}.sm-tree ul,.sm-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.sm-tree div[role=group]>.mat-tree-node{padding-left:40px}.sm-tee-node{padding-left:40px}.sm-tree-node-name{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tree-node-name-row{padding-left:15px;padding-top:15px;display:flex;flex-direction:row;justify-content:space-between}.sm-tree-node-name-col{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tee-node-id{font-weight:lighter}.mat-tree-node:hover{cursor:pointer}::ng-deep .mat-icon-rtl-mirror{display:flex;flex-direction:row}.sm-tree-row{display:flex;flex-direction:row;flex:1;align-items:center}.sm-shortDescription-spacer{flex:1}\n"] }]
170
170
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { trigger: [{
171
171
  type: ViewChildren,
172
172
  args: [MatMenuTrigger]
@@ -178,4 +178,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
178
178
  }], treeService: [{
179
179
  type: Input
180
180
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRyZWUvc21hcnR0cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRyZWUvc21hcnR0cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFFTCxTQUFTLEVBQ1QsS0FBSyxFQUlMLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFJTCx1QkFBdUIsR0FDeEIsTUFBTSxtQkFBbUIsQ0FBQztBQUczQixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBUTFDLE1BQU0sT0FBTyxrQkFBa0I7SUFtQjdCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbEJsQyxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFNakQsZ0JBQVcsR0FBRyxJQUFJLGlCQUFpQixDQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pGLGVBQVUsR0FBRyxJQUFJLHVCQUF1QixFQUFpQixDQUFDO1FBSzFELDRCQUF1QixHQUFHLHVCQUF1QixDQUFDO1FBSWxELG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQThEckMsYUFBUSxHQUFHLENBQUMsQ0FBUyxFQUFFLElBQW1C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SyxDQUFDLENBQUMsQ0FBQztRQUV2RCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCLEVBQUUsWUFBaUI7UUFDaEQsT0FBTyxHQUFHLFFBQVEsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDOytHQXJMVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw2TkFHZixjQUFjLGdEQ2hDOUIsZ3JIQW1HQTs7NEZEdEVhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxZQUFZO3NGQU9RLE9BQU87c0JBQXBDLFlBQVk7dUJBQUMsY0FBYztnQkFFVCxJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBTVIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFRyZWVOZXN0ZWREYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XG5pbXBvcnQge1xuICBTbWFydFRyZWVNb2RlbCxcbiAgU21hcnRUcmVlTm9kZSxcbiAgU21hcnRUcmVlTm9kZUJ1dHRvbixcbiAgU21hcnRUcmVlTm9kZUJ1dHRvblR5cGUsXG59IGZyb20gJy4vc21hcnR0cmVlLm1vZGVsJztcbmltcG9ydCB7IFRyZWVTdHlsZSB9IGZyb20gJy4vc21hcnR0cmVlLm5vZGUubW9kZWwnO1xuaW1wb3J0IHsgU21hcnR0cmVlU2VydmljZSB9IGZyb20gJy4vc21hcnR0cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVaUFjdGlvbk1vZGVsIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzbWFydC10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0dHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0dHJlZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0VHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oTWF0TWVudVRyaWdnZXIpIHRyaWdnZXIhOiBRdWVyeUxpc3Q8TWF0TWVudVRyaWdnZXI+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RyZWUnKSB0cmVlOiBhbnk7XG5cbiAgdHJlZUNvbnRyb2wgPSBuZXcgTmVzdGVkVHJlZUNvbnRyb2w8U21hcnRUcmVlTm9kZT4oKG5vZGUpID0+IG5vZGUuY2hpbGRyZW5Ob2Rlcyk7XG4gIGRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2U8U21hcnRUcmVlTm9kZT4oKTtcbiAgdGVtcEFjdGl2ZU5vZGU/OiBTbWFydFRyZWVOb2RlO1xuICB0cmVlRGF0YT86IFNtYXJ0VHJlZU1vZGVsO1xuICBASW5wdXQoKSB0cmVlU3R5bGU/OiBUcmVlU3R5bGU7XG4gIEBJbnB1dCgpIHRyZWVTZXJ2aWNlITogU21hcnR0cmVlU2VydmljZTxhbnk+O1xuICBzbWFydFRyZWVOb2RlQnV0dG9uVHlwZSA9IFNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlO1xuXG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcblxuICB1aUFjdGlvbk1vZGVsczogVWlBY3Rpb25Nb2RlbFtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudHJlZVNlcnZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJlZVNlcnZpY2UgaGFzIG5vdCBiZWVuIGdpdmVuIScpO1xuICAgIH1cbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJlZVNlcnZpY2UuZXJyb3JNZXNzYWdlO1xuXG4gICAgdGhpcy50cmVlU2VydmljZS5zbWFydFRyZWVNb2RlbENoYW5nZWQuc3Vic2NyaWJlKChuZXdTbWFydFRyZWU6IFNtYXJ0VHJlZU1vZGVsKSA9PiB7XG4gICAgICB0aGlzLnRyZWVEYXRhID0gbmV3U21hcnRUcmVlO1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnRyZWVEYXRhLnJvb3ROb2RlcyE7XG4gICAgICB0aGlzLmV4cGFuZFRyZWVOb2RlcygpO1xuICAgIH0pO1xuICAgIHRoaXMudHJlZVNlcnZpY2UudWlBY3Rpb25Nb2RlbHNDaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRyZWVTZXJ2aWNlLnVpQWN0aW9uTW9kZWxzKSB7XG4gICAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB0aGlzLnRyZWVTZXJ2aWNlLnVpQWN0aW9uTW9kZWxzO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0SWZFeHBhbmRlZChub2RlOiBTbWFydFRyZWVOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKTtcbiAgfVxuXG4gIGV4cGFuZFRyZWVOb2RlcygpIHtcbiAgICB0aGlzLmV4cGFuZFRyZWVOb2Rlc0RlZXBseSh0aGlzLmRhdGFTb3VyY2UuZGF0YSk7XG4gIH1cblxuICBleHBhbmRUcmVlTm9kZXNEZWVwbHkobm9kZXM6IFNtYXJ0VHJlZU5vZGVbXSkge1xuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLmV4cGFuZGVkKSB7XG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW5Ob2RlcyAmJiBub2RlLmNoaWxkcmVuTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5leHBhbmRUcmVlTm9kZXNEZWVwbHkobm9kZS5jaGlsZHJlbk5vZGVzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5jb2xsYXBzZShub2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uTm9kZUNsaWNrKGV2ZW50OiBhbnksIG5vZGU6IFNtYXJ0VHJlZU5vZGUpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLnRlbXBBY3RpdmVOb2RlKSB0aGlzLnRlbXBBY3RpdmVOb2RlLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgbm9kZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy50ZW1wQWN0aXZlTm9kZSA9IG5vZGU7XG5cbiAgICB0aGlzLnRyZWVTZXJ2aWNlLm9uVHJlZU5vZGVDbGljayhub2RlKTtcbiAgfVxuXG4gIG9uT3Blbk5vZGUoZXZlbnQ6IGFueSwgbm9kZTogU21hcnRUcmVlTm9kZSkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudHJlZVNlcnZpY2Uub25UcmVlTm9kZU9wZW4obm9kZSk7XG4gIH1cblxuICBoYXNDaGlsZCA9IChfOiBudW1iZXIsIG5vZGU6IFNtYXJ0VHJlZU5vZGUpID0+IG5vZGUuaGFzQ2hpbGRyZW47XG5cbiAgZ2V0Tm9kZVN0eWxlKG5vZGU6IFNtYXJ0VHJlZU5vZGUpIHtcbiAgICBpZiAodGhpcy50cmVlU3R5bGUpIHtcbiAgICAgIHZhciBzdHlsZSA9IG5vZGUuc2VsZWN0ZWRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0aGlzLnRyZWVTdHlsZS5hY3RpdmVTdHlsZT8uYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgY29sb3I6IHRoaXMudHJlZVN0eWxlLmFjdGl2ZVN0eWxlPy5jb2xvcixcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdGhpcy50cmVlU3R5bGUubGV2ZWxCYWNrZ3JvdW5kQ29sb3IhW25vZGUubGV2ZWwhXSxcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnRyZWVTdHlsZS5jb2xvciEsXG4gICAgICAgICAgfTtcbiAgICAgIHJldHVybiBzdHlsZTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIGdldE5vZGVQYWRkaW5nKG5vZGU6IFNtYXJ0VHJlZU5vZGUpIHtcbiAgICBpZiAodGhpcy50cmVlU3R5bGUpIHtcbiAgICAgIHZhciBzdHlsZSA9IG5vZGUuc2VsZWN0ZWRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAncGFkZGluZy1sZWZ0JzogMTUgKiBub2RlLmxldmVsISArICdweCcsXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgICdwYWRkaW5nLWxlZnQnOiAxNSAqIG5vZGUubGV2ZWwhICsgJ3B4JyxcbiAgICAgICAgICB9O1xuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjdXN0b21CdXR0b25DbGlja2VkKGV2ZW50OiBhbnksIGJ1dHRvbjogU21hcnRUcmVlTm9kZUJ1dHRvbiwgY2xvc2U/OiBib29sZWFuKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoYnV0dG9uLnR5cGUgPT09IFNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlLk1FTlUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWJ1dHRvbi5jYWxsYmFjaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBCdXR0b24gd2l0aCBuYW1lICR7YnV0dG9uLmxhYmVsIHx8IGJ1dHRvbi5pY29ufSBkb2VzIG5vdCBoYXZlIGEgY2FsbGJhY2shYCk7XG4gICAgfVxuICAgIGJ1dHRvbi5jYWxsYmFjayhidXR0b24uYXJncyk7XG4gICAgaWYgKGNsb3NlKSB7XG4gICAgICBsZXQgb3Blbk1lbnVzID0gdGhpcy50cmlnZ2VyLmZpbHRlcihcbiAgICAgICAgKG1hdE1lbnVUcmlnZ2VyOiBNYXRNZW51VHJpZ2dlcikgPT4gbWF0TWVudVRyaWdnZXIubWVudU9wZW5cbiAgICAgICk7XG4gICAgICBvcGVuTWVudXMuZm9yRWFjaCgobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiB7XG4gICAgICAgIG1hdE1lbnVUcmlnZ2VyLmNsb3NlTWVudSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3Nlc0ZvclRyZWVOb2RlKG5vZGU6IFNtYXJ0VHJlZU5vZGUpOiBzdHJpbmdbXSB7XG4gICAgbGV0IGNsYXNzZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAobm9kZS5leHBhbmRlZCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuZ2V0Q3VzdG9tQ2xhc3MoJ2V4cGFuZGVkJywgbm9kZS5sZXZlbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGFzc2VzLnB1c2godGhpcy5nZXRDdXN0b21DbGFzcygnY29sbGFwc2VkJywgbm9kZS5sZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChub2RlLnNlbGVjdGVkKSB7XG4gICAgICBjbGFzc2VzLnB1c2godGhpcy5nZXRDdXN0b21DbGFzcygnc2VsZWN0ZWQnLCBub2RlLmxldmVsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzZXMucHVzaCh0aGlzLmdldEN1c3RvbUNsYXNzKCd1bnNlbGVjdGVkJywgbm9kZS5sZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChub2RlLmxldmVsICE9PSAwKSB7XG4gICAgICBjbGFzc2VzLnB1c2godGhpcy5nZXRDdXN0b21DbGFzcygnY2hpbGQnLCBub2RlLmxldmVsKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXM7XG4gIH1cblxuICBnZXRJbm5lckNsYXNzZXNGb3JUcmVlTm9kZShub2RlOiBTbWFydFRyZWVOb2RlKTogc3RyaW5nW10ge1xuICAgIGxldCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKG5vZGUuZXhwYW5kZWQpIHtcbiAgICAgIGNsYXNzZXMucHVzaCh0aGlzLmdldEN1c3RvbUNsYXNzKCdpbm5lci1leHBhbmRlZCcsIG5vZGUubGV2ZWwpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuZ2V0Q3VzdG9tQ2xhc3MoJ2lubmVyLWNvbGxhcHNlZCcsIG5vZGUubGV2ZWwpKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuZ2V0Q3VzdG9tQ2xhc3MoJ2lubmVyLXNlbGVjdGVkJywgbm9kZS5sZXZlbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGFzc2VzLnB1c2godGhpcy5nZXRDdXN0b21DbGFzcygnaW5uZXItdW5zZWxlY3RlZCcsIG5vZGUubGV2ZWwpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIGdldENsYXNzZXNGb3JUcmVlTm9kZUNoaWxkcmVuKG5vZGU6IFNtYXJ0VHJlZU5vZGUpOiBzdHJpbmdbXSB7XG4gICAgbGV0IGNsYXNzZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBjbGFzc2VzLnB1c2godGhpcy5nZXRDdXN0b21DbGFzcygnZ3JvdXAnLCBub2RlLmxldmVsKSk7XG5cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIGdldEN1c3RvbUNsYXNzKGNzc0NsYXNzOiBzdHJpbmcsIHBsdXNQcm9wZXJ0eTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7Y3NzQ2xhc3N9LSR7cGx1c1Byb3BlcnR5fWA7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzbWFydFRyZWVDb250YWluZXJcIj5cbiAgPHNtYXJ0LXVpLWFjdGlvbi10b29sYmFyXG4gICAgKm5nSWY9XCJ1aUFjdGlvbk1vZGVscy5sZW5ndGhcIlxuICAgIFt1aUFjdGlvbk1vZGVsc109XCJ1aUFjdGlvbk1vZGVsc1wiXG4gID48L3NtYXJ0LXVpLWFjdGlvbi10b29sYmFyPlxuICA8bWF0LXRyZWVcbiAgICAjdHJlZVxuICAgICpuZ0lmPVwidHJlZURhdGFcIlxuICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICAgIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiXG4gICAgY2xhc3M9XCJzbS10cmVlXCJcbiAgPlxuICAgIDxtYXQtbmVzdGVkLXRyZWUtbm9kZVxuICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IGhhc0NoaWxkXCJcbiAgICAgIG1hdFRyZWVOb2RlVG9nZ2xlPVwie3sgZ2V0SWZFeHBhbmRlZChub2RlKSB9fVwiXG4gICAgICBbbmdDbGFzc109XCJnZXRDbGFzc2VzRm9yVHJlZU5vZGUobm9kZSlcIlxuICAgICAgW25nU3R5bGVdPVwiZ2V0Tm9kZVN0eWxlKG5vZGUpXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIFtuZ1N0eWxlXT1cImdldE5vZGVQYWRkaW5nKG5vZGUpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SW5uZXJDbGFzc2VzRm9yVHJlZU5vZGUobm9kZSlcIlxuICAgICAgICBjbGFzcz1cIm1hdC10cmVlLW5vZGUgc20tdHJlZS1ub2RlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTm9kZUNsaWNrKCRldmVudCwgbm9kZSlcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidUb2dnbGUgJyArIG5vZGUubmFtZVwiPlxuICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCJcbiAgICAgICAgICAgIG1hdFRyZWVOb2RlVG9nZ2xlXG4gICAgICAgICAgICAoY2xpY2spPVwib25PcGVuTm9kZSgkZXZlbnQsIG5vZGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGFzQ2hpbGQobm9kZS5sZXZlbCwgbm9kZSlcIj5cbiAgICAgICAgICAgICAge3sgdHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdleHBhbmRfbW9yZScgOiAnY2hldnJvbl9yaWdodCcgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c21hcnQtaWNvbiBbaWNvbl09XCJub2RlLmljb25cIj4gPC9zbWFydC1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic20tdHJlZS1yb3dcIiBbbmdDbGFzc109XCJub2RlLmNsYXNzZXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic20tdHJlZS1yb3ctY2FwdGlvblwiPlxuICAgICAgICAgICAge3sgbm9kZS5jYXB0aW9uIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtLXNob3J0RGVzY3JpcHRpb24tc3BhY2VyXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtLXRyZWUtcm93LXNob3J0RGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIHt7IG5vZGUuc2hvcnREZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbS1zaG9ydERlc2NyaXB0aW9uLWJ1dHRvbi1zcGFjZXJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5idXR0b25cIiBjbGFzcz1cInNtLXRyZWUtbm9kZS1idXR0b25cIiBbbmdTd2l0Y2hdPVwibm9kZS5idXR0b24udHlwZVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAoY2xpY2spPVwiY3VzdG9tQnV0dG9uQ2xpY2tlZCgkZXZlbnQsIG5vZGUuYnV0dG9uKVwiXG4gICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJzbWFydFRyZWVOb2RlQnV0dG9uVHlwZS5JQ09OXCJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbWFydC1pY29uIHRpdGxlPVwie3sgbm9kZS5idXR0b24uaWNvbiB9fVwiIFtpY29uXT1cIm5vZGUuYnV0dG9uLmljb25cIj48L3NtYXJ0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cInNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlLk1FTlVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBub2RlLmJ1dHRvbiwgdHJ1ZSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNtYXJ0LWljb24gKm5nSWY9XCJub2RlLmJ1dHRvbi5pY29uXCIgW2ljb25dPVwibm9kZS5idXR0b24uaWNvblwiPjwvc21hcnQtaWNvblxuICAgICAgICAgICAgICAgID57eyBub2RlLmJ1dHRvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBidXR0b24gb2Ygbm9kZS5idXR0b24ubWVudUl0ZW1CdXR0b25zXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNtYXJ0LWljb24gKm5nSWY9XCJidXR0b24uaWNvblwiIFtpY29uXT1cImJ1dHRvbi5pY29uXCI+PC9zbWFydC1pY29uXG4gICAgICAgICAgICAgICAgICA+e3sgYnV0dG9uLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBub2RlLmJ1dHRvbilcIlxuICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwic21hcnRUcmVlTm9kZUJ1dHRvblR5cGUuTk9STUFMXCJcbiAgICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNtYXJ0LWljb24gKm5nSWY9XCJub2RlLmJ1dHRvbi5pY29uXCIgW2ljb25dPVwibm9kZS5idXR0b24uaWNvblwiPjwvc21hcnQtaWNvbj5cbiAgICAgICAgICAgICAge3sgbm9kZS5idXR0b24uaWNvbiB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIFtjbGFzcy5zbS10cmVlLWludmlzaWJsZV09XCIhdHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldENsYXNzZXNGb3JUcmVlTm9kZUNoaWxkcmVuKG5vZGUpXCJcbiAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRUcmVlTm9kZU91dGxldD48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LW5lc3RlZC10cmVlLW5vZGU+XG4gIDwvbWF0LXRyZWU+XG4gIDxkaXYgKm5nSWY9XCIhdHJlZURhdGFcIj5cbiAgICA8aDM+XG4gICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICA8L2gzPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRyZWUvc21hcnR0cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LXRyZWUvc21hcnR0cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFFTCxTQUFTLEVBQ1QsS0FBSyxFQUlMLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFJTCx1QkFBdUIsR0FDeEIsTUFBTSxtQkFBbUIsQ0FBQztBQUczQixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBUTFDLE1BQU0sT0FBTyxrQkFBa0I7SUFtQjdCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbEJsQyxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFNakQsZ0JBQVcsR0FBRyxJQUFJLGlCQUFpQixDQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pGLGVBQVUsR0FBRyxJQUFJLHVCQUF1QixFQUFpQixDQUFDO1FBSzFELDRCQUF1QixHQUFHLHVCQUF1QixDQUFDO1FBSWxELG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQThEckMsYUFBUSxHQUFHLENBQUMsQ0FBUyxFQUFFLElBQW1C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SyxDQUFDLENBQUMsQ0FBQztRQUV2RCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCLEVBQUUsWUFBaUI7UUFDaEQsT0FBTyxHQUFHLFFBQVEsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDOytHQXJMVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw2TkFHZixjQUFjLGdEQ2hDOUIsOHVIQW9HQTs7NEZEdkVhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxZQUFZO3NGQU9RLE9BQU87c0JBQXBDLFlBQVk7dUJBQUMsY0FBYztnQkFFVCxJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBTVIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFRyZWVOZXN0ZWREYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XG5pbXBvcnQge1xuICBTbWFydFRyZWVNb2RlbCxcbiAgU21hcnRUcmVlTm9kZSxcbiAgU21hcnRUcmVlTm9kZUJ1dHRvbixcbiAgU21hcnRUcmVlTm9kZUJ1dHRvblR5cGUsXG59IGZyb20gJy4vc21hcnR0cmVlLm1vZGVsJztcbmltcG9ydCB7IFRyZWVTdHlsZSB9IGZyb20gJy4vc21hcnR0cmVlLm5vZGUubW9kZWwnO1xuaW1wb3J0IHsgU21hcnR0cmVlU2VydmljZSB9IGZyb20gJy4vc21hcnR0cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVaUFjdGlvbk1vZGVsIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzbWFydC10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0dHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0dHJlZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0VHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oTWF0TWVudVRyaWdnZXIpIHRyaWdnZXIhOiBRdWVyeUxpc3Q8TWF0TWVudVRyaWdnZXI+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RyZWUnKSB0cmVlOiBhbnk7XG5cbiAgdHJlZUNvbnRyb2wgPSBuZXcgTmVzdGVkVHJlZUNvbnRyb2w8U21hcnRUcmVlTm9kZT4oKG5vZGUpID0+IG5vZGUuY2hpbGRyZW5Ob2Rlcyk7XG4gIGRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2U8U21hcnRUcmVlTm9kZT4oKTtcbiAgdGVtcEFjdGl2ZU5vZGU/OiBTbWFydFRyZWVOb2RlO1xuICB0cmVlRGF0YT86IFNtYXJ0VHJlZU1vZGVsO1xuICBASW5wdXQoKSB0cmVlU3R5bGU/OiBUcmVlU3R5bGU7XG4gIEBJbnB1dCgpIHRyZWVTZXJ2aWNlITogU21hcnR0cmVlU2VydmljZTxhbnk+O1xuICBzbWFydFRyZWVOb2RlQnV0dG9uVHlwZSA9IFNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlO1xuXG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcblxuICB1aUFjdGlvbk1vZGVsczogVWlBY3Rpb25Nb2RlbFtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudHJlZVNlcnZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJlZVNlcnZpY2UgaGFzIG5vdCBiZWVuIGdpdmVuIScpO1xuICAgIH1cbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJlZVNlcnZpY2UuZXJyb3JNZXNzYWdlO1xuXG4gICAgdGhpcy50cmVlU2VydmljZS5zbWFydFRyZWVNb2RlbENoYW5nZWQuc3Vic2NyaWJlKChuZXdTbWFydFRyZWU6IFNtYXJ0VHJlZU1vZGVsKSA9PiB7XG4gICAgICB0aGlzLnRyZWVEYXRhID0gbmV3U21hcnRUcmVlO1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnRyZWVEYXRhLnJvb3ROb2RlcyE7XG4gICAgICB0aGlzLmV4cGFuZFRyZWVOb2RlcygpO1xuICAgIH0pO1xuICAgIHRoaXMudHJlZVNlcnZpY2UudWlBY3Rpb25Nb2RlbHNDaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRyZWVTZXJ2aWNlLnVpQWN0aW9uTW9kZWxzKSB7XG4gICAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB0aGlzLnRyZWVTZXJ2aWNlLnVpQWN0aW9uTW9kZWxzO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0SWZFeHBhbmRlZChub2RlOiBTbWFydFRyZWVOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKTtcbiAgfVxuXG4gIGV4cGFuZFRyZWVOb2RlcygpIHtcbiAgICB0aGlzLmV4cGFuZFRyZWVOb2Rlc0RlZXBseSh0aGlzLmRhdGFTb3VyY2UuZGF0YSk7XG4gIH1cblxuICBleHBhbmRUcmVlTm9kZXNEZWVwbHkobm9kZXM6IFNtYXJ0VHJlZU5vZGVbXSkge1xuICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLmV4cGFuZGVkKSB7XG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW5Ob2RlcyAmJiBub2RlLmNoaWxkcmVuTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5leHBhbmRUcmVlTm9kZXNEZWVwbHkobm9kZS5jaGlsZHJlbk5vZGVzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50cmVlQ29udHJvbC5jb2xsYXBzZShub2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uTm9kZUNsaWNrKGV2ZW50OiBhbnksIG5vZGU6IFNtYXJ0VHJlZU5vZGUpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLnRlbXBBY3RpdmVOb2RlKSB0aGlzLnRlbXBBY3RpdmVOb2RlLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgbm9kZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy50ZW1wQWN0aXZlTm9kZSA9IG5vZGU7XG5cbiAgICB0aGlzLnRyZWVTZXJ2aWNlLm9uVHJlZU5vZGVDbGljayhub2RlKTtcbiAgfVxuXG4gIG9uT3Blbk5vZGUoZXZlbnQ6IGFueSwgbm9kZTogU21hcnRUcmVlTm9kZSkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudHJlZVNlcnZpY2Uub25UcmVlTm9kZU9wZW4obm9kZSk7XG4gIH1cblxuICBoYXNDaGlsZCA9IChfOiBudW1iZXIsIG5vZGU6IFNtYXJ0VHJlZU5vZGUpID0+IG5vZGUuaGFzQ2hpbGRyZW47XG5cbiAgZ2V0Tm9kZVN0eWxlKG5vZGU6IFNtYXJ0VHJlZU5vZGUpIHtcbiAgICBpZiAodGhpcy50cmVlU3R5bGUpIHtcbiAgICAgIHZhciBzdHlsZSA9IG5vZGUuc2VsZWN0ZWRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0aGlzLnRyZWVTdHlsZS5hY3RpdmVTdHlsZT8uYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgY29sb3I6IHRoaXMudHJlZVN0eWxlLmFjdGl2ZVN0eWxlPy5jb2xvcixcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdGhpcy50cmVlU3R5bGUubGV2ZWxCYWNrZ3JvdW5kQ29sb3IhW25vZGUubGV2ZWwhXSxcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnRyZWVTdHlsZS5jb2xvciEsXG4gICAgICAgICAgfTtcbiAgICAgIHJldHVybiBzdHlsZTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIGdldE5vZGVQYWRkaW5nKG5vZGU6IFNtYXJ0VHJlZU5vZGUpIHtcbiAgICBpZiAodGhpcy50cmVlU3R5bGUpIHtcbiAgICAgIHZhciBzdHlsZSA9IG5vZGUuc2VsZWN0ZWRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAncGFkZGluZy1sZWZ0JzogMTUgKiBub2RlLmxldmVsISArICdweCcsXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgICdwYWRkaW5nLWxlZnQnOiAxNSAqIG5vZGUubGV2ZWwhICsgJ3B4JyxcbiAgICAgICAgICB9O1xuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjdXN0b21CdXR0b25DbGlja2VkKGV2ZW50OiBhbnksIGJ1dHRvbjogU21hcnRUcmVlTm9kZUJ1dHRvbiwgY2xvc2U/OiBib29sZWFuKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoYnV0dG9uLnR5cGUgPT09IFNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlLk1FTlUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWJ1dHRvbi5jYWxsYmFjaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBCdXR0b24gd2l0aCBuYW1lICR7YnV0dG9uLmxhYmVsIHx8IGJ1dHRvbi5pY29ufSBkb2VzIG5vdCBoYXZlIGEgY2FsbGJhY2shYCk7XG4gICAgfVxuICAgIGJ1dHRvbi5jYWxsYmFjayhidXR0b24uYXJncyk7XG4gICAgaWYgKGNsb3NlKSB7XG4gICAgICBsZXQgb3Blbk1lbnVzID0gdGhpcy50cmlnZ2VyLmZpbHRlcihcbiAgICAgICAgKG1hdE1lbnVUcmlnZ2VyOiBNYXRNZW51VHJpZ2dlcikgPT4gbWF0TWVudVRyaWdnZXIubWVudU9wZW5cbiAgICAgICk7XG4gICAgICBvcGVuTWVudXMuZm9yRWFjaCgobWF0TWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyKSA9PiB7XG4gICAgICAgIG1hdE1lbnVUcmlnZ2VyLmNsb3NlTWVudSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3Nlc0ZvclRyZWVOb2RlKG5vZGU6IFNtYXJ0VHJlZU5vZGUpOiBzdHJpbmdbXSB7XG4gICAgbGV0IGNsYXNzZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAobm9kZS5leHBhbmRlZCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuZ2V0Q3VzdG9tQ2xhc3MoJ2V4cGFuZGVkJywgbm9kZS5sZXZlbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGFzc2VzLnB1c2godGhpcy5nZXRDdXN0b21DbGFzcygnY29sbGFwc2VkJywgbm9kZS5sZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChub2RlLnNlbGVjdGVkKSB7XG4gICAgICBjbGFzc2VzLnB1c2godGhpcy5nZXRDdXN0b21DbGFzcygnc2VsZWN0ZWQnLCBub2RlLmxldmVsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzZXMucHVzaCh0aGlzLmdldEN1c3RvbUNsYXNzKCd1bnNlbGVjdGVkJywgbm9kZS5sZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChub2RlLmxldmVsICE9PSAwKSB7XG4gICAgICBjbGFzc2VzLnB1c2godGhpcy5nZXRDdXN0b21DbGFzcygnY2hpbGQnLCBub2RlLmxldmVsKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXM7XG4gIH1cblxuICBnZXRJbm5lckNsYXNzZXNGb3JUcmVlTm9kZShub2RlOiBTbWFydFRyZWVOb2RlKTogc3RyaW5nW10ge1xuICAgIGxldCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKG5vZGUuZXhwYW5kZWQpIHtcbiAgICAgIGNsYXNzZXMucHVzaCh0aGlzLmdldEN1c3RvbUNsYXNzKCdpbm5lci1leHBhbmRlZCcsIG5vZGUubGV2ZWwpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuZ2V0Q3VzdG9tQ2xhc3MoJ2lubmVyLWNvbGxhcHNlZCcsIG5vZGUubGV2ZWwpKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuZ2V0Q3VzdG9tQ2xhc3MoJ2lubmVyLXNlbGVjdGVkJywgbm9kZS5sZXZlbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGFzc2VzLnB1c2godGhpcy5nZXRDdXN0b21DbGFzcygnaW5uZXItdW5zZWxlY3RlZCcsIG5vZGUubGV2ZWwpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIGdldENsYXNzZXNGb3JUcmVlTm9kZUNoaWxkcmVuKG5vZGU6IFNtYXJ0VHJlZU5vZGUpOiBzdHJpbmdbXSB7XG4gICAgbGV0IGNsYXNzZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBjbGFzc2VzLnB1c2godGhpcy5nZXRDdXN0b21DbGFzcygnZ3JvdXAnLCBub2RlLmxldmVsKSk7XG5cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIGdldEN1c3RvbUNsYXNzKGNzc0NsYXNzOiBzdHJpbmcsIHBsdXNQcm9wZXJ0eTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7Y3NzQ2xhc3N9LSR7cGx1c1Byb3BlcnR5fWA7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzbWFydFRyZWVDb250YWluZXJcIj5cbiAgPHNtYXJ0LXVpLWFjdGlvbi10b29sYmFyXG4gICAgKm5nSWY9XCJ1aUFjdGlvbk1vZGVscy5sZW5ndGhcIlxuICAgIFt1aUFjdGlvbk1vZGVsc109XCJ1aUFjdGlvbk1vZGVsc1wiXG4gID48L3NtYXJ0LXVpLWFjdGlvbi10b29sYmFyPlxuICA8bWF0LXRyZWVcbiAgICAjdHJlZVxuICAgICpuZ0lmPVwidHJlZURhdGFcIlxuICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICAgIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiXG4gICAgY2xhc3M9XCJzbS10cmVlXCJcbiAgPlxuICAgIDxtYXQtbmVzdGVkLXRyZWUtbm9kZVxuICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IGhhc0NoaWxkXCJcbiAgICAgIG1hdFRyZWVOb2RlVG9nZ2xlPVwie3sgZ2V0SWZFeHBhbmRlZChub2RlKSB9fVwiXG4gICAgICBbbmdDbGFzc109XCJnZXRDbGFzc2VzRm9yVHJlZU5vZGUobm9kZSlcIlxuICAgICAgW25nU3R5bGVdPVwiZ2V0Tm9kZVN0eWxlKG5vZGUpXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIFtuZ1N0eWxlXT1cImdldE5vZGVQYWRkaW5nKG5vZGUpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0SW5uZXJDbGFzc2VzRm9yVHJlZU5vZGUobm9kZSlcIlxuICAgICAgICBjbGFzcz1cIm1hdC10cmVlLW5vZGUgc20tdHJlZS1ub2RlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTm9kZUNsaWNrKCRldmVudCwgbm9kZSlcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidUb2dnbGUgJyArIG5vZGUubmFtZVwiPlxuICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCJcbiAgICAgICAgICAgIG1hdFRyZWVOb2RlVG9nZ2xlXG4gICAgICAgICAgICAoY2xpY2spPVwib25PcGVuTm9kZSgkZXZlbnQsIG5vZGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGFzQ2hpbGQobm9kZS5sZXZlbCwgbm9kZSlcIj5cbiAgICAgICAgICAgICAge3sgdHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdleHBhbmRfbW9yZScgOiAnY2hldnJvbl9yaWdodCcgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c21hcnQtaWNvbiBbaWNvbl09XCJub2RlLmljb25cIj4gPC9zbWFydC1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic20tdHJlZS1yb3dcIiBbbmdDbGFzc109XCJub2RlLmNsYXNzZXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic20tdHJlZS1yb3ctY2FwdGlvblwiPlxuICAgICAgICAgICAge3sgbm9kZS5jYXB0aW9uIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtLXNob3J0RGVzY3JpcHRpb24tc3BhY2VyXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtLXRyZWUtcm93LXNob3J0RGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIHt7IG5vZGUuc2hvcnREZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbS1zaG9ydERlc2NyaXB0aW9uLWJ1dHRvbi1zcGFjZXJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5idXR0b25cIiBjbGFzcz1cInNtLXRyZWUtbm9kZS1idXR0b25cIiBbbmdTd2l0Y2hdPVwibm9kZS5idXR0b24udHlwZVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAoY2xpY2spPVwiY3VzdG9tQnV0dG9uQ2xpY2tlZCgkZXZlbnQsIG5vZGUuYnV0dG9uKVwiXG4gICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJzbWFydFRyZWVOb2RlQnV0dG9uVHlwZS5JQ09OXCJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbWFydC1pY29uIHRpdGxlPVwie3sgbm9kZS5idXR0b24uaWNvbiB9fVwiIFtpY29uXT1cIm5vZGUuYnV0dG9uLmljb25cIj48L3NtYXJ0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cInNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlLk1FTlVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBub2RlLmJ1dHRvbiwgdHJ1ZSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNtYXJ0LWljb24gKm5nSWY9XCJub2RlLmJ1dHRvbi5pY29uXCIgW2ljb25dPVwibm9kZS5idXR0b24uaWNvblwiPjwvc21hcnQtaWNvblxuICAgICAgICAgICAgICAgID57eyBub2RlLmJ1dHRvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBidXR0b24gb2Ygbm9kZS5idXR0b24ubWVudUl0ZW1CdXR0b25zXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJidXR0b24uY29kZSA/PyBudWxsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c21hcnQtaWNvbiAqbmdJZj1cImJ1dHRvbi5pY29uXCIgW2ljb25dPVwiYnV0dG9uLmljb25cIj48L3NtYXJ0LWljb25cbiAgICAgICAgICAgICAgICAgID57eyBidXR0b24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAoY2xpY2spPVwiY3VzdG9tQnV0dG9uQ2xpY2tlZCgkZXZlbnQsIG5vZGUuYnV0dG9uKVwiXG4gICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJzbWFydFRyZWVOb2RlQnV0dG9uVHlwZS5OT1JNQUxcIlxuICAgICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c21hcnQtaWNvbiAqbmdJZj1cIm5vZGUuYnV0dG9uLmljb25cIiBbaWNvbl09XCJub2RlLmJ1dHRvbi5pY29uXCI+PC9zbWFydC1pY29uPlxuICAgICAgICAgICAgICB7eyBub2RlLmJ1dHRvbi5pY29uIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgW2NsYXNzLnNtLXRyZWUtaW52aXNpYmxlXT1cIiF0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Q2xhc3Nlc0ZvclRyZWVOb2RlQ2hpbGRyZW4obm9kZSlcIlxuICAgICAgICByb2xlPVwiZ3JvdXBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdFRyZWVOb2RlT3V0bGV0PjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtbmVzdGVkLXRyZWUtbm9kZT5cbiAgPC9tYXQtdHJlZT5cbiAgPGRpdiAqbmdJZj1cIiF0cmVlRGF0YVwiPlxuICAgIDxoMz5cbiAgICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICAgIDwvaDM+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -4,4 +4,4 @@ export var SmartTreeNodeButtonType;
4
4
  SmartTreeNodeButtonType["ICON"] = "ICON";
5
5
  SmartTreeNodeButtonType["NORMAL"] = "NORMAL";
6
6
  })(SmartTreeNodeButtonType || (SmartTreeNodeButtonType = {}));
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0cmVlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtdHJlZS9zbWFydHRyZWUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUNBLE1BQU0sQ0FBTixJQUFZLHVCQUlYO0FBSkQsV0FBWSx1QkFBdUI7SUFDakMsd0NBQWEsQ0FBQTtJQUNiLHdDQUFhLENBQUE7SUFDYiw0Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUlsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVpQWN0aW9uIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L2FwaSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUcmVlTW9kZWwge1xuICAvLyBuZW0gdGVtcG9yw6FsaXMgc3RvcmFnZS1iYSB0ZW5uaSBhIFVJIGJlYW4tZWtldFxuICBpZGVudGlmaWVyPzogc3RyaW5nO1xuICByb290Tm9kZXM6IEFycmF5PFNtYXJ0VHJlZU5vZGU+O1xuICBzZWxlY3RlZE5vZGVJZGVudGlmaWVyPzogc3RyaW5nO1xuICBuYXZpZ2F0aW9uVXJsc0J5Tm9kZVR5cGU/OiBBcnJheTxTbWFydFRyZWVOb2RlVHlwZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUcmVlTm9kZSB7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNhcHRpb246IHN0cmluZztcbiAgY2xhc3Nlcz86IEFycmF5PHN0cmluZz47XG4gIGhhc0NoaWxkcmVuOiBib29sZWFuO1xuICBjaGlsZHJlbk5vZGVzOiBBcnJheTxTbWFydFRyZWVOb2RlPjtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICBjaGlsZHJlbk5vZGVzTG9hZGVkOiBib29sZWFuO1xuICBsZXZlbDogbnVtYmVyO1xuICBzaG9ydERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpZGVudGlmaWVyPzogc3RyaW5nO1xuICBvYmplY3RVcmk/OiBzdHJpbmc7XG4gIG5vZGVUeXBlOiBzdHJpbmc7XG4gIGJ1dHRvbj86IFNtYXJ0VHJlZU5vZGVCdXR0b247XG4gIGFjdGlvbnM/OiBBcnJheTxVaUFjdGlvbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUcmVlTm9kZUJ1dHRvbiB7XG4gIGljb24/OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICB0eXBlOiBTbWFydFRyZWVOb2RlQnV0dG9uVHlwZTtcbiAgbWVudUl0ZW1CdXR0b25zPzogU21hcnRUcmVlTm9kZUJ1dHRvbltdO1xuICBjYWxsYmFjaz86ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuICBhcmdzPzogYW55W107XG59XG5cbmV4cG9ydCBlbnVtIFNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlIHtcbiAgTUVOVSA9ICdNRU5VJyxcbiAgSUNPTiA9ICdJQ09OJyxcbiAgTk9STUFMID0gJ05PUk1BTCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUcmVlTm9kZVR5cGUge1xuICBub2RlVHlwZTogc3RyaW5nO1xuICBuYXZpZ2F0aW9uVXJsOiBhbnlbXTtcbn1cbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR0cmVlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtdHJlZS9zbWFydHRyZWUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0NBLE1BQU0sQ0FBTixJQUFZLHVCQUlYO0FBSkQsV0FBWSx1QkFBdUI7SUFDakMsd0NBQWEsQ0FBQTtJQUNiLHdDQUFhLENBQUE7SUFDYiw0Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUlsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVpQWN0aW9uIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L2FwaSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUcmVlTW9kZWwge1xuICAvLyBuZW0gdGVtcG9yw6FsaXMgc3RvcmFnZS1iYSB0ZW5uaSBhIFVJIGJlYW4tZWtldFxuICBpZGVudGlmaWVyPzogc3RyaW5nO1xuICByb290Tm9kZXM6IEFycmF5PFNtYXJ0VHJlZU5vZGU+O1xuICBzZWxlY3RlZE5vZGVJZGVudGlmaWVyPzogc3RyaW5nO1xuICBuYXZpZ2F0aW9uVXJsc0J5Tm9kZVR5cGU/OiBBcnJheTxTbWFydFRyZWVOb2RlVHlwZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUcmVlTm9kZSB7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNhcHRpb246IHN0cmluZztcbiAgY2xhc3Nlcz86IEFycmF5PHN0cmluZz47XG4gIGhhc0NoaWxkcmVuOiBib29sZWFuO1xuICBjaGlsZHJlbk5vZGVzOiBBcnJheTxTbWFydFRyZWVOb2RlPjtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICBjaGlsZHJlbk5vZGVzTG9hZGVkOiBib29sZWFuO1xuICBsZXZlbDogbnVtYmVyO1xuICBzaG9ydERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpZGVudGlmaWVyPzogc3RyaW5nO1xuICBvYmplY3RVcmk/OiBzdHJpbmc7XG4gIG5vZGVUeXBlOiBzdHJpbmc7XG4gIGJ1dHRvbj86IFNtYXJ0VHJlZU5vZGVCdXR0b247XG4gIGFjdGlvbnM/OiBBcnJheTxVaUFjdGlvbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUcmVlTm9kZUJ1dHRvbiB7XG4gIGljb24/OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBjb2RlPzogc3RyaW5nO1xuICB0eXBlOiBTbWFydFRyZWVOb2RlQnV0dG9uVHlwZTtcbiAgbWVudUl0ZW1CdXR0b25zPzogU21hcnRUcmVlTm9kZUJ1dHRvbltdO1xuICBjYWxsYmFjaz86ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuICBhcmdzPzogYW55W107XG59XG5cbmV4cG9ydCBlbnVtIFNtYXJ0VHJlZU5vZGVCdXR0b25UeXBlIHtcbiAgTUVOVSA9ICdNRU5VJyxcbiAgSUNPTiA9ICdJQ09OJyxcbiAgTk9STUFMID0gJ05PUk1BTCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRUcmVlTm9kZVR5cGUge1xuICBub2RlVHlwZTogc3RyaW5nO1xuICBuYXZpZ2F0aW9uVXJsOiBhbnlbXTtcbn1cbiJdfQ==
@@ -119,11 +119,11 @@ export class MenuComponent {
119
119
  });
120
120
  }
121
121
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MenuComponent, deps: [{ token: i1.UiMenuService }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i2.OverlayPositionBuilder }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: MenuComponent, selector: "ui-tiered-menu", inputs: { triggerAction: "triggerAction", isSubmenu: "isSubmenu" }, outputs: { actionClick: "actionClick", submenuOpened: "submenuOpened" }, host: { listeners: { "click": "onMenuClick($event)", "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "menuTemplate", first: true, predicate: ["menuTemplate"], descendants: true }, { propertyName: "submenuComponents", predicate: ["submenu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (isSubmenu) {\n<div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\n</div>\n}@else {\n<ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n}\n\n<ng-template #menuTemplate>\n <ul class=\"ui-tiered-menu\">\n <li *ngFor=\"let action of subActions\" class=\"hoverEffect\" [class.disabled]=\"action.disabled\">\n @if (action.subActions && action.subActions.length > 0) {\n\n <ui-tiered-menu\n #submenu\n [triggerAction]=\"action\"\n [isSubmenu]=\"true\"\n [subActions]=\"action.subActions!\"\n (actionClick)=\"actionClick.emit($event)\"\n (submenuOpened)=\"onSubmenuOpened(action)\"\n ></ui-tiered-menu>\n\n } @else {\n <ui-action-button\n [descriptor]=\"action.descriptor!\"\n [disabled]=\"!!action.disabled\"\n (actionClick)=\"!action.subActions?.length && onActionClick(action)\"\n ></ui-action-button>\n }\n </li>\n </ul>\n</ng-template>\n\n<ng-template #triggerTempalte>\n <ui-action-button\n [descriptor]=\"triggerAction.descriptor!\"\n [disabled]=\"!!triggerAction.disabled\"\n (actionClick)=\"toggleMenu($event.event)\"\n [class.submenuTrigger]=\"isSubmenu\"\n >\n </ui-action-button>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}ul,.ui-tiered-menu{top:100%;left:0;list-style:none;padding-left:0;margin:0;background:#fff;width:fit-content;box-shadow:2px 2px 8px #0003;z-index:1000;border-radius:5px;padding:.1rem}.submenuTrigger,.ui-tiered-menu ::ng-deep button{background-color:#fff;box-shadow:unset;border:unset;border-radius:unset;color:#000;width:100%;justify-content:flex-start}.hoverEffect:hover,.hoverEffect ::ng-deep button:hover{background-color:#f1f5f9}.hoverEffect.activeSubmenu,.hoverEffect.activeSubmenu ::ng-deep button{background-color:#f1f5f9}.ui-tiered-menu ::ng-deep ui-action-button,.ui-tiered-menu ::ng-deep ui-badge{width:100%}.ui-tiered-menu>li{position:relative}.submenu{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.submenu ::ng-deep ui-action-button{flex:1}.disabled{color:#aaa;cursor:not-allowed}.ui-tiered-menu ui-tiered-menu{width:100%}smart-icon{align-content:center}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: MenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu"], outputs: ["actionClick", "submenuOpened"] }] }); }
122
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: MenuComponent, selector: "ui-tiered-menu", inputs: { triggerAction: "triggerAction", isSubmenu: "isSubmenu" }, outputs: { actionClick: "actionClick", submenuOpened: "submenuOpened" }, host: { listeners: { "click": "onMenuClick($event)", "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "menuTemplate", first: true, predicate: ["menuTemplate"], descendants: true }, { propertyName: "submenuComponents", predicate: ["submenu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (isSubmenu) {\n<div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\n</div>\n}@else {\n<ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n}\n\n<ng-template #menuTemplate>\n <ul class=\"ui-tiered-menu\">\n <li *ngFor=\"let action of subActions\" class=\"hoverEffect\" [class.disabled]=\"action.disabled\">\n @if (action.subActions && action.subActions.length > 0) {\n\n <ui-tiered-menu\n #submenu\n [triggerAction]=\"action\"\n [isSubmenu]=\"true\"\n [subActions]=\"action.subActions!\"\n (actionClick)=\"actionClick.emit($event)\"\n (submenuOpened)=\"onSubmenuOpened(action)\"\n ></ui-tiered-menu>\n\n } @else {\n <ui-action-button\n [descriptor]=\"action.descriptor!\"\n [code]=\"action.code\"\n [disabled]=\"!!action.disabled\"\n (actionClick)=\"!action.subActions?.length && onActionClick(action)\"\n ></ui-action-button>\n }\n </li>\n </ul>\n</ng-template>\n\n<ng-template #triggerTempalte>\n <ui-action-button\n [descriptor]=\"triggerAction.descriptor!\"\n [code]=\"triggerAction.code\"\n [disabled]=\"!!triggerAction.disabled\"\n (actionClick)=\"toggleMenu($event.event)\"\n [class.submenuTrigger]=\"isSubmenu\"\n >\n </ui-action-button>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}ul,.ui-tiered-menu{top:100%;left:0;list-style:none;padding-left:0;margin:0;background:#fff;width:fit-content;box-shadow:2px 2px 8px #0003;z-index:1000;border-radius:5px;padding:.1rem}.submenuTrigger,.ui-tiered-menu ::ng-deep button{background-color:#fff;box-shadow:unset;border:unset;border-radius:unset;color:#000;width:100%;justify-content:flex-start}.hoverEffect:hover,.hoverEffect ::ng-deep button:hover{background-color:#f1f5f9}.hoverEffect.activeSubmenu,.hoverEffect.activeSubmenu ::ng-deep button{background-color:#f1f5f9}.ui-tiered-menu ::ng-deep ui-action-button,.ui-tiered-menu ::ng-deep ui-badge{width:100%}.ui-tiered-menu>li{position:relative}.submenu{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.submenu ::ng-deep ui-action-button{flex:1}.disabled{color:#aaa;cursor:not-allowed}.ui-tiered-menu ui-tiered-menu{width:100%}smart-icon{align-content:center}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: MenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu"], outputs: ["actionClick", "submenuOpened"] }] }); }
123
123
  }
124
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MenuComponent, decorators: [{
125
125
  type: Component,
126
- args: [{ selector: 'ui-tiered-menu', template: "@if (isSubmenu) {\n<div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\n</div>\n}@else {\n<ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n}\n\n<ng-template #menuTemplate>\n <ul class=\"ui-tiered-menu\">\n <li *ngFor=\"let action of subActions\" class=\"hoverEffect\" [class.disabled]=\"action.disabled\">\n @if (action.subActions && action.subActions.length > 0) {\n\n <ui-tiered-menu\n #submenu\n [triggerAction]=\"action\"\n [isSubmenu]=\"true\"\n [subActions]=\"action.subActions!\"\n (actionClick)=\"actionClick.emit($event)\"\n (submenuOpened)=\"onSubmenuOpened(action)\"\n ></ui-tiered-menu>\n\n } @else {\n <ui-action-button\n [descriptor]=\"action.descriptor!\"\n [disabled]=\"!!action.disabled\"\n (actionClick)=\"!action.subActions?.length && onActionClick(action)\"\n ></ui-action-button>\n }\n </li>\n </ul>\n</ng-template>\n\n<ng-template #triggerTempalte>\n <ui-action-button\n [descriptor]=\"triggerAction.descriptor!\"\n [disabled]=\"!!triggerAction.disabled\"\n (actionClick)=\"toggleMenu($event.event)\"\n [class.submenuTrigger]=\"isSubmenu\"\n >\n </ui-action-button>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}ul,.ui-tiered-menu{top:100%;left:0;list-style:none;padding-left:0;margin:0;background:#fff;width:fit-content;box-shadow:2px 2px 8px #0003;z-index:1000;border-radius:5px;padding:.1rem}.submenuTrigger,.ui-tiered-menu ::ng-deep button{background-color:#fff;box-shadow:unset;border:unset;border-radius:unset;color:#000;width:100%;justify-content:flex-start}.hoverEffect:hover,.hoverEffect ::ng-deep button:hover{background-color:#f1f5f9}.hoverEffect.activeSubmenu,.hoverEffect.activeSubmenu ::ng-deep button{background-color:#f1f5f9}.ui-tiered-menu ::ng-deep ui-action-button,.ui-tiered-menu ::ng-deep ui-badge{width:100%}.ui-tiered-menu>li{position:relative}.submenu{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.submenu ::ng-deep ui-action-button{flex:1}.disabled{color:#aaa;cursor:not-allowed}.ui-tiered-menu ui-tiered-menu{width:100%}smart-icon{align-content:center}\n"] }]
126
+ args: [{ selector: 'ui-tiered-menu', template: "@if (isSubmenu) {\n<div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\n</div>\n}@else {\n<ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n}\n\n<ng-template #menuTemplate>\n <ul class=\"ui-tiered-menu\">\n <li *ngFor=\"let action of subActions\" class=\"hoverEffect\" [class.disabled]=\"action.disabled\">\n @if (action.subActions && action.subActions.length > 0) {\n\n <ui-tiered-menu\n #submenu\n [triggerAction]=\"action\"\n [isSubmenu]=\"true\"\n [subActions]=\"action.subActions!\"\n (actionClick)=\"actionClick.emit($event)\"\n (submenuOpened)=\"onSubmenuOpened(action)\"\n ></ui-tiered-menu>\n\n } @else {\n <ui-action-button\n [descriptor]=\"action.descriptor!\"\n [code]=\"action.code\"\n [disabled]=\"!!action.disabled\"\n (actionClick)=\"!action.subActions?.length && onActionClick(action)\"\n ></ui-action-button>\n }\n </li>\n </ul>\n</ng-template>\n\n<ng-template #triggerTempalte>\n <ui-action-button\n [descriptor]=\"triggerAction.descriptor!\"\n [code]=\"triggerAction.code\"\n [disabled]=\"!!triggerAction.disabled\"\n (actionClick)=\"toggleMenu($event.event)\"\n [class.submenuTrigger]=\"isSubmenu\"\n >\n </ui-action-button>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}ul,.ui-tiered-menu{top:100%;left:0;list-style:none;padding-left:0;margin:0;background:#fff;width:fit-content;box-shadow:2px 2px 8px #0003;z-index:1000;border-radius:5px;padding:.1rem}.submenuTrigger,.ui-tiered-menu ::ng-deep button{background-color:#fff;box-shadow:unset;border:unset;border-radius:unset;color:#000;width:100%;justify-content:flex-start}.hoverEffect:hover,.hoverEffect ::ng-deep button:hover{background-color:#f1f5f9}.hoverEffect.activeSubmenu,.hoverEffect.activeSubmenu ::ng-deep button{background-color:#f1f5f9}.ui-tiered-menu ::ng-deep ui-action-button,.ui-tiered-menu ::ng-deep ui-badge{width:100%}.ui-tiered-menu>li{position:relative}.submenu{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.submenu ::ng-deep ui-action-button{flex:1}.disabled{color:#aaa;cursor:not-allowed}.ui-tiered-menu ui-tiered-menu{width:100%}smart-icon{align-content:center}\n"] }]
127
127
  }], ctorParameters: () => [{ type: i1.UiMenuService }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i2.OverlayPositionBuilder }, { type: i6.ComponentLibrary, decorators: [{
128
128
  type: Inject,
129
129
  args: [COMPONENT_LIBRARY]
@@ -150,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
150
150
  type: HostListener,
151
151
  args: ['document:click', ['$event']]
152
152
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFJTixTQUFTLEVBQ1QsWUFBWSxHQUViLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBT3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7QUFPMUUsTUFBTSxPQUFPLGFBQWE7SUFpQnhCLFlBQ1UsV0FBMEIsRUFDMUIsT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLHNCQUE4QyxFQUNSLE9BQTBCO1FBSmhFLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ1IsWUFBTyxHQUFQLE9BQU8sQ0FB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O0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUFzQjtRQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDekMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDM0UsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBcElVLGFBQWEsNElBc0JkLGlCQUFpQjttR0F0QmhCLGFBQWEsOGZDbEMxQix1NUNBMkNBLGltRERUYSxhQUFhOzs0RkFBYixhQUFhO2tCQUx6QixTQUFTOytCQUNFLGdCQUFnQjs7MEJBMEJ2QixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQUcsUUFBUTt5Q0FyQmIsaUJBQWlCO3NCQUF6QyxZQUFZO3VCQUFDLFNBQVM7Z0JBRUksWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUdoQixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQW1EUCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1qQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVaUFjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2FwaSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVpTWVudVNlcnZpY2UgfSBmcm9tICcuL21lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBDT01QT05FTlRfTElCUkFSWSwgQ29tcG9uZW50TGlicmFyeSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XG5pbXBvcnQge1xuICBDb25uZWN0ZWRQb3NpdGlvbixcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheVBvc2l0aW9uQnVpbGRlcixcbiAgT3ZlcmxheVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFNVQk1FTlVfUE9TSVRJT05TLCBST09UX01FTlVfUE9TSVRJT05TIH0gZnJvbSAnLi9tZW51LmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLXRpZXJlZC1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbWVudS5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGRyZW4oJ3N1Ym1lbnUnKSBzdWJtZW51Q29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxNZW51Q29tcG9uZW50PjtcblxuICBAVmlld0NoaWxkKCdtZW51VGVtcGxhdGUnKSBtZW51VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KCkgdHJpZ2dlckFjdGlvbiE6IFVpQWN0aW9uO1xuICBASW5wdXQoKSBpc1N1Ym1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFVpQWN0aW9uPigpO1xuICBAT3V0cHV0KCkgc3VibWVudU9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8VWlBY3Rpb24+KCk7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGljb24hOiBzdHJpbmc7XG4gIHN1Ym1lbnVPcGVuTWFwID0gbmV3IE1hcDxVaUFjdGlvbiwgYm9vbGVhbj4oKTtcbiAgc3ViQWN0aW9uczogVWlBY3Rpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IFVpTWVudVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIG92ZXJsYXlQb3NpdGlvbkJ1aWxkZXI6IE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXG4gICAgQEluamVjdChDT01QT05FTlRfTElCUkFSWSkgQE9wdGlvbmFsKCkgcHVibGljIGNvbXBMaWI/OiBDb21wb25lbnRMaWJyYXJ5XG4gICkge1xuICAgIHRoaXMuY29tcExpYiA9IGNvbXBMaWIgPz8gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HO1xuXG4gICAgaWYgKHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XG4gICAgICB0aGlzLmljb24gPSAnY2hldnJvbi1yaWdodCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuTUFURVJJQUwpIHtcbiAgICAgIHRoaXMuaWNvbiA9ICdjaGV2cm9uX3JpZ2h0JztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlXG4gICAgICAuZ2V0Q2xvc2VTaWduYWwoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sndHJpZ2dlckFjdGlvbiddKSB7XG4gICAgICBjb25zdCB0cmlnZ2VyID0gY2hhbmdlc1sndHJpZ2dlckFjdGlvbiddLmN1cnJlbnRWYWx1ZSBhcyBVaUFjdGlvbjtcbiAgICAgIHRoaXMuc3ViQWN0aW9ucyA9IHRyaWdnZXI/LnN1YkFjdGlvbnMgPz8gW107XG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBVaUFjdGlvbikge1xuICAgIGlmICghYWN0aW9uLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uKTtcbiAgICAgIHRoaXMubWVudVNlcnZpY2UuY2xvc2VBbGxNZW51cygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgb25NZW51Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlQWxsTWVudXMoKTtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vdmVybGF5UmVmO1xuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3VibWVudUNvbXBvbmVudHMuZm9yRWFjaCgoc3VibWVudSkgPT4ge1xuICAgICAgc3VibWVudS5jbG9zZU1lbnUoKTtcbiAgICB9KTtcbiAgfVxuICBvcGVuTWVudShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU3VibWVudSkge1xuICAgICAgdGhpcy5zdWJtZW51T3BlbmVkLmVtaXQodGhpcy50cmlnZ2VyQWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZW51U2VydmljZS5jbG9zZUFsbE1lbnVzKCk7XG4gICAgfVxuXG4gICAgbGV0IHRyaWdnZXJFbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSB0aGlzLmlzU3VibWVudSA/IFNVQk1FTlVfUE9TSVRJT05TIDogUk9PVF9NRU5VX1BPU0lUSU9OUztcblxuICAgIGxldCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5UG9zaXRpb25CdWlsZGVyXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0cmlnZ2VyRWxlbWVudClcbiAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgLndpdGhQdXNoKHRydWUpXG4gICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIGxldCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5tZW51VGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuICB9XG5cbiAgdG9nZ2xlTWVudShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMub3Blbk1lbnUoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uU3VibWVudU9wZW5lZChvcGVuZWRBY3Rpb246IFVpQWN0aW9uKSB7XG4gICAgdGhpcy5zdWJtZW51Q29tcG9uZW50cy5mb3JFYWNoKChzdWJtZW51KSA9PiB7XG4gICAgICBpZiAoc3VibWVudS50cmlnZ2VyQWN0aW9uLmNvZGUgIT09IG9wZW5lZEFjdGlvbi5jb2RlICYmIHN1Ym1lbnUub3ZlcmxheVJlZikge1xuICAgICAgICBzdWJtZW51LmNsb3NlTWVudSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCJAaWYgKGlzU3VibWVudSkge1xuPGRpdiBjbGFzcz1cInN1Ym1lbnUgaG92ZXJFZmZlY3RcIiBbY2xhc3MuYWN0aXZlU3VibWVudV09XCJpc09wZW5cIiAobW91c2VlbnRlcik9XCJvcGVuTWVudSgkZXZlbnQpXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmlnZ2VyVGVtcGFsdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPHNtYXJ0LWljb24gW2ljb25dPVwiaWNvblwiIGNvbG9yPVwiYmxhY2tcIj48L3NtYXJ0LWljb24+XG48L2Rpdj5cbn1AZWxzZSB7XG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJpZ2dlclRlbXBhbHRlXCI+PC9uZy1jb250YWluZXI+XG59XG5cbjxuZy10ZW1wbGF0ZSAjbWVudVRlbXBsYXRlPlxuICA8dWwgY2xhc3M9XCJ1aS10aWVyZWQtbWVudVwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHN1YkFjdGlvbnNcIiBjbGFzcz1cImhvdmVyRWZmZWN0XCIgW2NsYXNzLmRpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZFwiPlxuICAgICAgQGlmIChhY3Rpb24uc3ViQWN0aW9ucyAmJiBhY3Rpb24uc3ViQWN0aW9ucy5sZW5ndGggPiAwKSB7XG5cbiAgICAgIDx1aS10aWVyZWQtbWVudVxuICAgICAgICAjc3VibWVudVxuICAgICAgICBbdHJpZ2dlckFjdGlvbl09XCJhY3Rpb25cIlxuICAgICAgICBbaXNTdWJtZW51XT1cInRydWVcIlxuICAgICAgICBbc3ViQWN0aW9uc109XCJhY3Rpb24uc3ViQWN0aW9ucyFcIlxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwiYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHN1Ym1lbnVPcGVuZWQpPVwib25TdWJtZW51T3BlbmVkKGFjdGlvbilcIlxuICAgICAgPjwvdWktdGllcmVkLW1lbnU+XG5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgPHVpLWFjdGlvbi1idXR0b25cbiAgICAgICAgW2Rlc2NyaXB0b3JdPVwiYWN0aW9uLmRlc2NyaXB0b3IhXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiEhYWN0aW9uLmRpc2FibGVkXCJcbiAgICAgICAgKGFjdGlvbkNsaWNrKT1cIiFhY3Rpb24uc3ViQWN0aW9ucz8ubGVuZ3RoICYmIG9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXG4gICAgICA+PC91aS1hY3Rpb24tYnV0dG9uPlxuICAgICAgfVxuICAgIDwvbGk+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyaWdnZXJUZW1wYWx0ZT5cbiAgPHVpLWFjdGlvbi1idXR0b25cbiAgICBbZGVzY3JpcHRvcl09XCJ0cmlnZ2VyQWN0aW9uLmRlc2NyaXB0b3IhXCJcbiAgICBbZGlzYWJsZWRdPVwiISF0cmlnZ2VyQWN0aW9uLmRpc2FibGVkXCJcbiAgICAoYWN0aW9uQ2xpY2spPVwidG9nZ2xlTWVudSgkZXZlbnQuZXZlbnQpXCJcbiAgICBbY2xhc3Muc3VibWVudVRyaWdnZXJdPVwiaXNTdWJtZW51XCJcbiAgPlxuICA8L3VpLWFjdGlvbi1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFJTixTQUFTLEVBQ1QsWUFBWSxHQUViLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBT3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7QUFPMUUsTUFBTSxPQUFPLGFBQWE7SUFpQnhCLFlBQ1UsV0FBMEIsRUFDMUIsT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLHNCQUE4QyxFQUNSLE9BQTBCO1FBSmhFLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ1IsWUFBTyxHQUFQLE9BQU8sQ0FB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O0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUFzQjtRQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDekMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDM0UsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBcElVLGFBQWEsNElBc0JkLGlCQUFpQjttR0F0QmhCLGFBQWEsOGZDbEMxQiwwOUNBNkNBLGltRERYYSxhQUFhOzs0RkFBYixhQUFhO2tCQUx6QixTQUFTOytCQUNFLGdCQUFnQjs7MEJBMEJ2QixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQUcsUUFBUTt5Q0FyQmIsaUJBQWlCO3NCQUF6QyxZQUFZO3VCQUFDLFNBQVM7Z0JBRUksWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUdoQixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQW1EUCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1qQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVaUFjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2FwaSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVpTWVudVNlcnZpY2UgfSBmcm9tICcuL21lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBDT01QT05FTlRfTElCUkFSWSwgQ29tcG9uZW50TGlicmFyeSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XG5pbXBvcnQge1xuICBDb25uZWN0ZWRQb3NpdGlvbixcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheVBvc2l0aW9uQnVpbGRlcixcbiAgT3ZlcmxheVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFNVQk1FTlVfUE9TSVRJT05TLCBST09UX01FTlVfUE9TSVRJT05TIH0gZnJvbSAnLi9tZW51LmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLXRpZXJlZC1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbWVudS5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGRyZW4oJ3N1Ym1lbnUnKSBzdWJtZW51Q29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxNZW51Q29tcG9uZW50PjtcblxuICBAVmlld0NoaWxkKCdtZW51VGVtcGxhdGUnKSBtZW51VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KCkgdHJpZ2dlckFjdGlvbiE6IFVpQWN0aW9uO1xuICBASW5wdXQoKSBpc1N1Ym1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFVpQWN0aW9uPigpO1xuICBAT3V0cHV0KCkgc3VibWVudU9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8VWlBY3Rpb24+KCk7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGljb24hOiBzdHJpbmc7XG4gIHN1Ym1lbnVPcGVuTWFwID0gbmV3IE1hcDxVaUFjdGlvbiwgYm9vbGVhbj4oKTtcbiAgc3ViQWN0aW9uczogVWlBY3Rpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IFVpTWVudVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIG92ZXJsYXlQb3NpdGlvbkJ1aWxkZXI6IE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXG4gICAgQEluamVjdChDT01QT05FTlRfTElCUkFSWSkgQE9wdGlvbmFsKCkgcHVibGljIGNvbXBMaWI/OiBDb21wb25lbnRMaWJyYXJ5XG4gICkge1xuICAgIHRoaXMuY29tcExpYiA9IGNvbXBMaWIgPz8gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HO1xuXG4gICAgaWYgKHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XG4gICAgICB0aGlzLmljb24gPSAnY2hldnJvbi1yaWdodCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuTUFURVJJQUwpIHtcbiAgICAgIHRoaXMuaWNvbiA9ICdjaGV2cm9uX3JpZ2h0JztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlXG4gICAgICAuZ2V0Q2xvc2VTaWduYWwoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sndHJpZ2dlckFjdGlvbiddKSB7XG4gICAgICBjb25zdCB0cmlnZ2VyID0gY2hhbmdlc1sndHJpZ2dlckFjdGlvbiddLmN1cnJlbnRWYWx1ZSBhcyBVaUFjdGlvbjtcbiAgICAgIHRoaXMuc3ViQWN0aW9ucyA9IHRyaWdnZXI/LnN1YkFjdGlvbnMgPz8gW107XG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBVaUFjdGlvbikge1xuICAgIGlmICghYWN0aW9uLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uKTtcbiAgICAgIHRoaXMubWVudVNlcnZpY2UuY2xvc2VBbGxNZW51cygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgb25NZW51Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlQWxsTWVudXMoKTtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vdmVybGF5UmVmO1xuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3VibWVudUNvbXBvbmVudHMuZm9yRWFjaCgoc3VibWVudSkgPT4ge1xuICAgICAgc3VibWVudS5jbG9zZU1lbnUoKTtcbiAgICB9KTtcbiAgfVxuICBvcGVuTWVudShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU3VibWVudSkge1xuICAgICAgdGhpcy5zdWJtZW51T3BlbmVkLmVtaXQodGhpcy50cmlnZ2VyQWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZW51U2VydmljZS5jbG9zZUFsbE1lbnVzKCk7XG4gICAgfVxuXG4gICAgbGV0IHRyaWdnZXJFbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSB0aGlzLmlzU3VibWVudSA/IFNVQk1FTlVfUE9TSVRJT05TIDogUk9PVF9NRU5VX1BPU0lUSU9OUztcblxuICAgIGxldCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5UG9zaXRpb25CdWlsZGVyXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0cmlnZ2VyRWxlbWVudClcbiAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgLndpdGhQdXNoKHRydWUpXG4gICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIGxldCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5tZW51VGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuICB9XG5cbiAgdG9nZ2xlTWVudShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMub3Blbk1lbnUoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uU3VibWVudU9wZW5lZChvcGVuZWRBY3Rpb246IFVpQWN0aW9uKSB7XG4gICAgdGhpcy5zdWJtZW51Q29tcG9uZW50cy5mb3JFYWNoKChzdWJtZW51KSA9PiB7XG4gICAgICBpZiAoc3VibWVudS50cmlnZ2VyQWN0aW9uLmNvZGUgIT09IG9wZW5lZEFjdGlvbi5jb2RlICYmIHN1Ym1lbnUub3ZlcmxheVJlZikge1xuICAgICAgICBzdWJtZW51LmNsb3NlTWVudSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCJAaWYgKGlzU3VibWVudSkge1xuPGRpdiBjbGFzcz1cInN1Ym1lbnUgaG92ZXJFZmZlY3RcIiBbY2xhc3MuYWN0aXZlU3VibWVudV09XCJpc09wZW5cIiAobW91c2VlbnRlcik9XCJvcGVuTWVudSgkZXZlbnQpXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmlnZ2VyVGVtcGFsdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPHNtYXJ0LWljb24gW2ljb25dPVwiaWNvblwiIGNvbG9yPVwiYmxhY2tcIj48L3NtYXJ0LWljb24+XG48L2Rpdj5cbn1AZWxzZSB7XG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJpZ2dlclRlbXBhbHRlXCI+PC9uZy1jb250YWluZXI+XG59XG5cbjxuZy10ZW1wbGF0ZSAjbWVudVRlbXBsYXRlPlxuICA8dWwgY2xhc3M9XCJ1aS10aWVyZWQtbWVudVwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHN1YkFjdGlvbnNcIiBjbGFzcz1cImhvdmVyRWZmZWN0XCIgW2NsYXNzLmRpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZFwiPlxuICAgICAgQGlmIChhY3Rpb24uc3ViQWN0aW9ucyAmJiBhY3Rpb24uc3ViQWN0aW9ucy5sZW5ndGggPiAwKSB7XG5cbiAgICAgIDx1aS10aWVyZWQtbWVudVxuICAgICAgICAjc3VibWVudVxuICAgICAgICBbdHJpZ2dlckFjdGlvbl09XCJhY3Rpb25cIlxuICAgICAgICBbaXNTdWJtZW51XT1cInRydWVcIlxuICAgICAgICBbc3ViQWN0aW9uc109XCJhY3Rpb24uc3ViQWN0aW9ucyFcIlxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwiYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHN1Ym1lbnVPcGVuZWQpPVwib25TdWJtZW51T3BlbmVkKGFjdGlvbilcIlxuICAgICAgPjwvdWktdGllcmVkLW1lbnU+XG5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgPHVpLWFjdGlvbi1idXR0b25cbiAgICAgICAgW2Rlc2NyaXB0b3JdPVwiYWN0aW9uLmRlc2NyaXB0b3IhXCJcbiAgICAgICAgW2NvZGVdPVwiYWN0aW9uLmNvZGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiISFhY3Rpb24uZGlzYWJsZWRcIlxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwiIWFjdGlvbi5zdWJBY3Rpb25zPy5sZW5ndGggJiYgb25BY3Rpb25DbGljayhhY3Rpb24pXCJcbiAgICAgID48L3VpLWFjdGlvbi1idXR0b24+XG4gICAgICB9XG4gICAgPC9saT5cbiAgPC91bD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdHJpZ2dlclRlbXBhbHRlPlxuICA8dWktYWN0aW9uLWJ1dHRvblxuICAgIFtkZXNjcmlwdG9yXT1cInRyaWdnZXJBY3Rpb24uZGVzY3JpcHRvciFcIlxuICAgIFtjb2RlXT1cInRyaWdnZXJBY3Rpb24uY29kZVwiXG4gICAgW2Rpc2FibGVkXT1cIiEhdHJpZ2dlckFjdGlvbi5kaXNhYmxlZFwiXG4gICAgKGFjdGlvbkNsaWNrKT1cInRvZ2dsZU1lbnUoJGV2ZW50LmV2ZW50KVwiXG4gICAgW2NsYXNzLnN1Ym1lbnVUcmlnZ2VyXT1cImlzU3VibWVudVwiXG4gID5cbiAgPC91aS1hY3Rpb24tYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==