@smartbit4all/ng-client 4.5.45 → 4.5.46

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.
@@ -76,11 +76,11 @@ export class SmartIconComponent {
76
76
  return Object.assign({}, ...styles.filter(Boolean));
77
77
  }
78
78
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartIconComponent, deps: [{ token: i1.SmartIconService }, { token: i0.ChangeDetectorRef }, { token: i2.DomSanitizer }, { token: COMPONENT_LIBRARY }], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartIconComponent, selector: "smart-icon", inputs: { iconWithoutNamespace: ["icon", "iconWithoutNamespace"], color: "color", imageResource: "imageResource" }, usesOnChanges: true, ngImport: i0, template: "@if(imageResource){\r\n<ng-container *ngTemplateOutlet=\"imageResourceIcon\" />\r\n} @else if(iconWithoutNamespace){\r\n<ng-container *ngTemplateOutlet=\"normalIcon\" />\r\n}\r\n\r\n<ng-template #imageResourceIcon>\r\n @if(imageResource){\r\n <div\r\n class=\"imageResourceIcon\"\r\n [smartTooltip]=\"imageResource.tooltip\"\r\n [uiBadge]=\"imageResource.badge\"\r\n >\r\n @if(imageResource.kind === imageResourceKind.URL){\r\n <img\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n class=\"imageIcon\"\r\n [src]=\"imageResource.source\"\r\n [alt]=\"imageResource.identifier\"\r\n />\r\n } @else if(imageResource.identifier){\r\n <ng-container *ngTemplateOutlet=\"normalIcon\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #normalIcon>\r\n @if(compLib === componentLibrary.PRIMENG){\r\n <ng-container *ngTemplateOutlet=\"primeIcon\" />\r\n }@else {\r\n <ng-container *ngTemplateOutlet=\"materialIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #primeIcon>\r\n @if (isCustom) {\r\n <i\r\n class=\"pi custom-prime-icon\"\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n >\r\n @if(iconHtml){\r\n <span\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [innerHTML]=\"iconHtml\"\r\n ></span>\r\n }\r\n </i>\r\n }@else if(icon) {\r\n <i\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [ngClass]=\"getIcon(icon)\"\r\n ></i>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #materialIcon>\r\n @if (isCustom) {\r\n <mat-icon\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n [color]=\"color ?? 'primary'\"\r\n svgIcon=\"{{ icon }}\"\r\n ></mat-icon>\r\n }@else if(icon) {\r\n <mat-icon [ngStyle]=\"getImageResourceStyle(imageResource)\" [color]=\"color ?? 'primary'\">\r\n {{ icon }}\r\n </mat-icon>\r\n }\r\n</ng-template>\r\n", styles: [".custom-prime-icon{height:1rem;width:auto}:host ::ng-deep .p-badge{background-color:var(--accent-color);color:#fff;font-size:.5rem;min-width:1rem;height:1rem;line-height:1rem}:host ::ng-deep .p-overlay-badge .p-badge{transform:translate(80%,-70%)}.imageIcon{height:1rem;max-width:1rem;border-radius:.3rem}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i6.UiBadgeDirective, selector: "[uiBadge], [uiBadgeValue]", inputs: ["uiBadge", "uiBadgeValue"] }] }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartIconComponent, selector: "smart-icon", inputs: { iconWithoutNamespace: ["icon", "iconWithoutNamespace"], color: "color", imageResource: "imageResource" }, usesOnChanges: true, ngImport: i0, template: "@if(imageResource){\r\n<ng-container *ngTemplateOutlet=\"imageResourceIcon\" />\r\n} @else if(iconWithoutNamespace){\r\n<ng-container *ngTemplateOutlet=\"normalIcon\" />\r\n}\r\n\r\n<ng-template #imageResourceIcon>\r\n @if(imageResource){\r\n <div\r\n class=\"imageResourceIcon\"\r\n [smartTooltip]=\"imageResource.tooltip\"\r\n [uiBadge]=\"imageResource.badge\"\r\n >\r\n @if(imageResource.kind === imageResourceKind.URL){\r\n <img\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n class=\"imageIcon\"\r\n [src]=\"imageResource.source\"\r\n [alt]=\"imageResource.identifier\"\r\n />\r\n } @else if(imageResource.identifier){\r\n <ng-container *ngTemplateOutlet=\"normalIcon\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #normalIcon>\r\n @if(compLib === componentLibrary.PRIMENG){\r\n <ng-container *ngTemplateOutlet=\"primeIcon\" />\r\n }@else {\r\n <ng-container *ngTemplateOutlet=\"materialIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #primeIcon>\r\n @if (isCustom) {\r\n <i\r\n class=\"pi custom-prime-icon\"\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n >\r\n @if(iconHtml){\r\n <span\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [innerHTML]=\"iconHtml\"\r\n ></span>\r\n }\r\n </i>\r\n }@else if(icon) {\r\n <i\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [ngClass]=\"getIcon(icon)\"\r\n ></i>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #materialIcon>\r\n @if (isCustom) {\r\n <mat-icon\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n [color]=\"color ?? 'primary'\"\r\n svgIcon=\"{{ icon }}\"\r\n ></mat-icon>\r\n }@else if(icon) {\r\n <mat-icon [ngStyle]=\"getImageResourceStyle(imageResource)\" [color]=\"color ?? 'primary'\">\r\n {{ icon }}\r\n </mat-icon>\r\n }\r\n</ng-template>\r\n", styles: [":host{display:inline-flex;min-width:1rem;width:1rem}.custom-prime-icon{height:1rem;width:auto}:host ::ng-deep .p-badge{background-color:var(--accent-color);color:#fff;font-size:.5rem;min-width:1rem;height:1rem;line-height:1rem}:host ::ng-deep .p-overlay-badge .p-badge{transform:translate(80%,-70%)}.imageIcon{height:1rem;max-width:1rem;border-radius:.3rem}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i6.UiBadgeDirective, selector: "[uiBadge], [uiBadgeValue]", inputs: ["uiBadge", "uiBadgeValue"] }] }); }
80
80
  }
81
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartIconComponent, decorators: [{
82
82
  type: Component,
83
- args: [{ selector: 'smart-icon', template: "@if(imageResource){\r\n<ng-container *ngTemplateOutlet=\"imageResourceIcon\" />\r\n} @else if(iconWithoutNamespace){\r\n<ng-container *ngTemplateOutlet=\"normalIcon\" />\r\n}\r\n\r\n<ng-template #imageResourceIcon>\r\n @if(imageResource){\r\n <div\r\n class=\"imageResourceIcon\"\r\n [smartTooltip]=\"imageResource.tooltip\"\r\n [uiBadge]=\"imageResource.badge\"\r\n >\r\n @if(imageResource.kind === imageResourceKind.URL){\r\n <img\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n class=\"imageIcon\"\r\n [src]=\"imageResource.source\"\r\n [alt]=\"imageResource.identifier\"\r\n />\r\n } @else if(imageResource.identifier){\r\n <ng-container *ngTemplateOutlet=\"normalIcon\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #normalIcon>\r\n @if(compLib === componentLibrary.PRIMENG){\r\n <ng-container *ngTemplateOutlet=\"primeIcon\" />\r\n }@else {\r\n <ng-container *ngTemplateOutlet=\"materialIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #primeIcon>\r\n @if (isCustom) {\r\n <i\r\n class=\"pi custom-prime-icon\"\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n >\r\n @if(iconHtml){\r\n <span\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [innerHTML]=\"iconHtml\"\r\n ></span>\r\n }\r\n </i>\r\n }@else if(icon) {\r\n <i\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [ngClass]=\"getIcon(icon)\"\r\n ></i>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #materialIcon>\r\n @if (isCustom) {\r\n <mat-icon\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n [color]=\"color ?? 'primary'\"\r\n svgIcon=\"{{ icon }}\"\r\n ></mat-icon>\r\n }@else if(icon) {\r\n <mat-icon [ngStyle]=\"getImageResourceStyle(imageResource)\" [color]=\"color ?? 'primary'\">\r\n {{ icon }}\r\n </mat-icon>\r\n }\r\n</ng-template>\r\n", styles: [".custom-prime-icon{height:1rem;width:auto}:host ::ng-deep .p-badge{background-color:var(--accent-color);color:#fff;font-size:.5rem;min-width:1rem;height:1rem;line-height:1rem}:host ::ng-deep .p-overlay-badge .p-badge{transform:translate(80%,-70%)}.imageIcon{height:1rem;max-width:1rem;border-radius:.3rem}\n"] }]
83
+ args: [{ selector: 'smart-icon', template: "@if(imageResource){\r\n<ng-container *ngTemplateOutlet=\"imageResourceIcon\" />\r\n} @else if(iconWithoutNamespace){\r\n<ng-container *ngTemplateOutlet=\"normalIcon\" />\r\n}\r\n\r\n<ng-template #imageResourceIcon>\r\n @if(imageResource){\r\n <div\r\n class=\"imageResourceIcon\"\r\n [smartTooltip]=\"imageResource.tooltip\"\r\n [uiBadge]=\"imageResource.badge\"\r\n >\r\n @if(imageResource.kind === imageResourceKind.URL){\r\n <img\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n class=\"imageIcon\"\r\n [src]=\"imageResource.source\"\r\n [alt]=\"imageResource.identifier\"\r\n />\r\n } @else if(imageResource.identifier){\r\n <ng-container *ngTemplateOutlet=\"normalIcon\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #normalIcon>\r\n @if(compLib === componentLibrary.PRIMENG){\r\n <ng-container *ngTemplateOutlet=\"primeIcon\" />\r\n }@else {\r\n <ng-container *ngTemplateOutlet=\"materialIcon\" />\r\n }\r\n</ng-template>\r\n\r\n<ng-template #primeIcon>\r\n @if (isCustom) {\r\n <i\r\n class=\"pi custom-prime-icon\"\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n >\r\n @if(iconHtml){\r\n <span\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [innerHTML]=\"iconHtml\"\r\n ></span>\r\n }\r\n </i>\r\n }@else if(icon) {\r\n <i\r\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\r\n [ngClass]=\"getIcon(icon)\"\r\n ></i>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #materialIcon>\r\n @if (isCustom) {\r\n <mat-icon\r\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\r\n [color]=\"color ?? 'primary'\"\r\n svgIcon=\"{{ icon }}\"\r\n ></mat-icon>\r\n }@else if(icon) {\r\n <mat-icon [ngStyle]=\"getImageResourceStyle(imageResource)\" [color]=\"color ?? 'primary'\">\r\n {{ icon }}\r\n </mat-icon>\r\n }\r\n</ng-template>\r\n", styles: [":host{display:inline-flex;min-width:1rem;width:1rem}.custom-prime-icon{height:1rem;width:auto}:host ::ng-deep .p-badge{background-color:var(--accent-color);color:#fff;font-size:.5rem;min-width:1rem;height:1rem;line-height:1rem}:host ::ng-deep .p-overlay-badge .p-badge{transform:translate(80%,-70%)}.imageIcon{height:1rem;max-width:1rem;border-radius:.3rem}\n"] }]
84
84
  }], ctorParameters: () => [{ type: i1.SmartIconService }, { type: i0.ChangeDetectorRef }, { type: i2.DomSanitizer }, { type: i7.ComponentLibrary, decorators: [{
85
85
  type: Inject,
86
86
  args: [COMPONENT_LIBRARY]
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudURlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvYXBpL21vZGVsL21lbnVEZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZpZXcgQVBJXG4gKiBWaWV3IEFQSVxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbmltcG9ydCB7IE1lbnVUcmlnZ2VyVHlwZSB9IGZyb20gJy4vbWVudVRyaWdnZXJUeXBlJztcbmltcG9ydCB7IE1lbnVPcGVuRGlyZWN0aW9uIH0gZnJvbSAnLi9tZW51T3BlbkRpcmVjdGlvbic7XG5cblxuZXhwb3J0IGludGVyZmFjZSBNZW51RGVzY3JpcHRvciB7IFxuICAgIHRyaWdnZXJUeXBlPzogTWVudVRyaWdnZXJUeXBlO1xuICAgIG9wZW5EaXJlY3Rpb24/OiBNZW51T3BlbkRpcmVjdGlvbjtcbn1cblxuXG5cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudURlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvYXBpL21vZGVsL21lbnVEZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVmlldyBBUElcclxuICogVmlldyBBUElcclxuICpcclxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXHJcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XHJcbiAqXHJcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXHJcbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxyXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXHJcbiAqL1xyXG5pbXBvcnQgeyBNZW51VHJpZ2dlclR5cGUgfSBmcm9tICcuL21lbnVUcmlnZ2VyVHlwZSc7XHJcbmltcG9ydCB7IE1lbnVPcGVuRGlyZWN0aW9uIH0gZnJvbSAnLi9tZW51T3BlbkRpcmVjdGlvbic7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZW51RGVzY3JpcHRvciB7IFxyXG4gICAgdHJpZ2dlclR5cGU/OiBNZW51VHJpZ2dlclR5cGU7XHJcbiAgICBvcGVuRGlyZWN0aW9uPzogTWVudU9wZW5EaXJlY3Rpb247XHJcbn1cclxuXHJcblxyXG5cclxuIl19
@@ -20,4 +20,4 @@ export var MenuOpenDirection;
20
20
  MenuOpenDirection["LEFT_TOP"] = "LEFT_TOP";
21
21
  MenuOpenDirection["LEFT_BOTTOM"] = "LEFT_BOTTOM";
22
22
  })(MenuOpenDirection || (MenuOpenDirection = {}));
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudU9wZW5EaXJlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvYXBpL21vZGVsL21lbnVPcGVuRGlyZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFHSCxNQUFNLENBQU4sSUFBWSxpQkFTWDtBQVRELFdBQVksaUJBQWlCO0lBQ3pCLDhDQUF5QixDQUFBO0lBQ3pCLGdEQUEyQixDQUFBO0lBQzNCLDhDQUF5QixDQUFBO0lBQ3pCLGdEQUEyQixDQUFBO0lBQzNCLDRDQUF1QixDQUFBO0lBQ3ZCLGtEQUE2QixDQUFBO0lBQzdCLDBDQUFxQixDQUFBO0lBQ3JCLGdEQUEyQixDQUFBO0FBQy9CLENBQUMsRUFUVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBUzVCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWaWV3IEFQSVxuICogVmlldyBBUElcbiAqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogMS4wLjBcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG5cblxuZXhwb3J0IGVudW0gTWVudU9wZW5EaXJlY3Rpb24ge1xuICAgIEJFTE9XX0xFRlQgPSAnQkVMT1dfTEVGVCcsXG4gICAgQkVMT1dfUklHSFQgPSAnQkVMT1dfUklHSFQnLFxuICAgIEFCT1ZFX0xFRlQgPSAnQUJPVkVfTEVGVCcsXG4gICAgQUJPVkVfUklHSFQgPSAnQUJPVkVfUklHSFQnLFxuICAgIFJJR0hUX1RPUCA9ICdSSUdIVF9UT1AnLFxuICAgIFJJR0hUX0JPVFRPTSA9ICdSSUdIVF9CT1RUT00nLFxuICAgIExFRlRfVE9QID0gJ0xFRlRfVE9QJyxcbiAgICBMRUZUX0JPVFRPTSA9ICdMRUZUX0JPVFRPTSdcbn1cblxuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudU9wZW5EaXJlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvYXBpL21vZGVsL21lbnVPcGVuRGlyZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFHSCxNQUFNLENBQU4sSUFBWSxpQkFTWDtBQVRELFdBQVksaUJBQWlCO0lBQ3pCLDhDQUF5QixDQUFBO0lBQ3pCLGdEQUEyQixDQUFBO0lBQzNCLDhDQUF5QixDQUFBO0lBQ3pCLGdEQUEyQixDQUFBO0lBQzNCLDRDQUF1QixDQUFBO0lBQ3ZCLGtEQUE2QixDQUFBO0lBQzdCLDBDQUFxQixDQUFBO0lBQ3JCLGdEQUEyQixDQUFBO0FBQy9CLENBQUMsRUFUVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBUzVCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFZpZXcgQVBJXHJcbiAqIFZpZXcgQVBJXHJcbiAqXHJcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxyXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxyXG4gKlxyXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxyXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcclxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxyXG4gKi9cclxuXHJcblxyXG5leHBvcnQgZW51bSBNZW51T3BlbkRpcmVjdGlvbiB7XHJcbiAgICBCRUxPV19MRUZUID0gJ0JFTE9XX0xFRlQnLFxyXG4gICAgQkVMT1dfUklHSFQgPSAnQkVMT1dfUklHSFQnLFxyXG4gICAgQUJPVkVfTEVGVCA9ICdBQk9WRV9MRUZUJyxcclxuICAgIEFCT1ZFX1JJR0hUID0gJ0FCT1ZFX1JJR0hUJyxcclxuICAgIFJJR0hUX1RPUCA9ICdSSUdIVF9UT1AnLFxyXG4gICAgUklHSFRfQk9UVE9NID0gJ1JJR0hUX0JPVFRPTScsXHJcbiAgICBMRUZUX1RPUCA9ICdMRUZUX1RPUCcsXHJcbiAgICBMRUZUX0JPVFRPTSA9ICdMRUZUX0JPVFRPTSdcclxufVxyXG5cclxuIl19
@@ -68,4 +68,4 @@ export * from './viewPlaceholder';
68
68
  export * from './viewState';
69
69
  export * from './viewStateUpdate';
70
70
  export * from './viewType';
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L2FwaS9tb2RlbC9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYWNrZ3JvdW5kUHJvY2Vzc0luZm8nO1xuZXhwb3J0ICogZnJvbSAnLi9iYWRnZURlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9jbGlwYm9hcmREYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vY2xvc2VSZXN1bHQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRDb25zdHJhaW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50TW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRNb2RlbENoYW5nZSc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGFDaGFuZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhQ2hhbmdlRXZlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhQ2hhbmdlS2luZCc7XG5leHBvcnQgKiBmcm9tICcuL2RldmljZUluZm8nO1xuZXhwb3J0ICogZnJvbSAnLi9kb3dubG9hZGVkRmlsZSc7XG5leHBvcnQgKiBmcm9tICcuL2ljb25Qb3NpdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlUmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saW5rJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudURlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51T3BlbkRpcmVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL21lbnVUcmlnZ2VyVHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VEYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZU9wdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VPcHRpb25UeXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZVJlc3VsdCc7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VUZXh0VHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VUeXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbXVsdGlDb21ib0JveEVsZW1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tdWx0aUNvbWJvQm94TW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9uYW1lZFZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL29wZW5QZW5kaW5nRGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL3B1Ymxpc2hlZFZpZXdEYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmVyUmVxdWVzdEV4ZWN1dGlvblN0YXQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2ZXJSZXF1ZXN0VHJhY2snO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2ZXJSZXF1ZXN0VHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3NoZWxsUHJvcGVydHknO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydExpbmtEYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vc21hcnRMaW5rTWlncmF0aW9uU3RhdHVzJztcbmV4cG9ydCAqIGZyb20gJy4vc3RhdGlzdGljUmVjb3JkJztcbmV4cG9ydCAqIGZyb20gJy4vc3R5bGUnO1xuZXhwb3J0ICogZnJvbSAnLi90aGVtZURlZmluaXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi90aGVtZURlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi90aGVtZVNoZWxsRGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL3VpQWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25CdXR0b25EZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25CdXR0b25UeXBlJztcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25Db25zdHJhaW50JztcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25EZWZpbml0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25EZWZpbml0aW9uRW50cnknO1xuZXhwb3J0ICogZnJvbSAnLi91aUFjdGlvbkRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi91aUFjdGlvbkRpYWxvZ0Rlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi91aUFjdGlvbkZlZWRiYWNrVHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3VpQWN0aW9uSW5wdXRUeXBlJztcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25SZXF1ZXN0JztcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25TY2hlZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3VpQWN0aW9uVG9vbHRpcCc7XG5leHBvcnQgKiBmcm9tICcuL3VpQWN0aW9uVXBsb2FkRGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL3VwbG9hZFdpZGdldFR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi91cGxvYWRlZEZpbGUnO1xuZXhwb3J0ICogZnJvbSAnLi92YWx1ZVNldCc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXcnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3QXBpRXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3Q29uc3RyYWludCc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdDb250ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vdmlld0NvbnRleHRDaGFuZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3Q29udGV4dERhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3Q29udGV4dFVwZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdEYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vdmlld0V2ZW50SGFuZGxlcic7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdQbGFjZWhvbGRlcic7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdTdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdTdGF0ZVVwZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdUeXBlJztcbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L2FwaS9tb2RlbC9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYWNrZ3JvdW5kUHJvY2Vzc0luZm8nO1xyXG5leHBvcnQgKiBmcm9tICcuL2JhZGdlRGVzY3JpcHRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2xpcGJvYXJkRGF0YSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2xvc2VSZXN1bHQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudENvbnN0cmFpbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudE1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRNb2RlbENoYW5nZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0YUNoYW5nZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0YUNoYW5nZUV2ZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9kYXRhQ2hhbmdlS2luZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGV2aWNlSW5mbyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZG93bmxvYWRlZEZpbGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ljb25Qb3NpdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2VSZXNvdXJjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGluayc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWVudURlc2NyaXB0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL21lbnVPcGVuRGlyZWN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9tZW51VHJpZ2dlclR5cGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VEYXRhJztcclxuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlT3B0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlT3B0aW9uVHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZVJlc3VsdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZVRleHRUeXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlVHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbXVsdGlDb21ib0JveEVsZW1lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL211bHRpQ29tYm9Cb3hNb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbmFtZWRWYWxpZGF0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL29wZW5QZW5kaW5nRGF0YSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcHVibGlzaGVkVmlld0RhdGEnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZlclJlcXVlc3RFeGVjdXRpb25TdGF0JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2ZXJSZXF1ZXN0VHJhY2snO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZlclJlcXVlc3RUeXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zaGVsbFByb3BlcnR5JztcclxuZXhwb3J0ICogZnJvbSAnLi9zbWFydExpbmtEYXRhJztcclxuZXhwb3J0ICogZnJvbSAnLi9zbWFydExpbmtNaWdyYXRpb25TdGF0dXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3N0YXRpc3RpY1JlY29yZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3R5bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RoZW1lRGVmaW5pdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGhlbWVEZXNjcmlwdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi90aGVtZVNoZWxsRGVzY3JpcHRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpQWN0aW9uQnV0dG9uRGVzY3JpcHRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25CdXR0b25UeXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi91aUFjdGlvbkNvbnN0cmFpbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpQWN0aW9uRGVmaW5pdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25EZWZpbml0aW9uRW50cnknO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpQWN0aW9uRGVzY3JpcHRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25EaWFsb2dEZXNjcmlwdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi91aUFjdGlvbkZlZWRiYWNrVHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25JbnB1dFR5cGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VpQWN0aW9uUmVxdWVzdCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25TY2hlZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdWlBY3Rpb25Ub29sdGlwJztcclxuZXhwb3J0ICogZnJvbSAnLi91aUFjdGlvblVwbG9hZERlc2NyaXB0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL3VwbG9hZFdpZGdldFR5cGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VwbG9hZGVkRmlsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmFsdWVTZXQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ZpZXcnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ZpZXdBcGlFcnJvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmlld0NvbnN0cmFpbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ZpZXdDb250ZXh0JztcclxuZXhwb3J0ICogZnJvbSAnLi92aWV3Q29udGV4dENoYW5nZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmlld0NvbnRleHREYXRhJztcclxuZXhwb3J0ICogZnJvbSAnLi92aWV3Q29udGV4dFVwZGF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmlld0RhdGEnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ZpZXdFdmVudEhhbmRsZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3ZpZXdQbGFjZWhvbGRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmlld1N0YXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi92aWV3U3RhdGVVcGRhdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ZpZXdUeXBlJztcclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlBY3Rpb25EZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L2FwaS9tb2RlbC91aUFjdGlvbkRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmlldyBBUElcbiAqIFZpZXcgQVBJXG4gKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuaW1wb3J0IHsgVWlBY3Rpb25Ub29sdGlwIH0gZnJvbSAnLi91aUFjdGlvblRvb2x0aXAnO1xuaW1wb3J0IHsgSW1hZ2VSZXNvdXJjZSB9IGZyb20gJy4vaW1hZ2VSZXNvdXJjZSc7XG5pbXBvcnQgeyBJY29uUG9zaXRpb24gfSBmcm9tICcuL2ljb25Qb3NpdGlvbic7XG5pbXBvcnQgeyBCYWRnZURlc2NyaXB0b3IgfSBmcm9tICcuL2JhZGdlRGVzY3JpcHRvcic7XG5pbXBvcnQgeyBNZW51RGVzY3JpcHRvciB9IGZyb20gJy4vbWVudURlc2NyaXB0b3InO1xuaW1wb3J0IHsgU3R5bGUgfSBmcm9tICcuL3N0eWxlJztcbmltcG9ydCB7IFVpQWN0aW9uRmVlZGJhY2tUeXBlIH0gZnJvbSAnLi91aUFjdGlvbkZlZWRiYWNrVHlwZSc7XG5pbXBvcnQgeyBVaUFjdGlvbkRpYWxvZ0Rlc2NyaXB0b3IgfSBmcm9tICcuL3VpQWN0aW9uRGlhbG9nRGVzY3JpcHRvcic7XG5pbXBvcnQgeyBVaUFjdGlvblVwbG9hZERlc2NyaXB0b3IgfSBmcm9tICcuL3VpQWN0aW9uVXBsb2FkRGVzY3JpcHRvcic7XG5pbXBvcnQgeyBVaUFjdGlvbkJ1dHRvblR5cGUgfSBmcm9tICcuL3VpQWN0aW9uQnV0dG9uVHlwZSc7XG5cblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGFwcGVhcmFuY2UgKGFzIGEgYnV0dG9uKSBhbmQgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHJlbGF0ZWQgZGlhbG9ncyBvZiBhIFVpQWN0aW9uLiBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVaUFjdGlvbkRlc2NyaXB0b3IgeyBcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZTtcbiAgICBjb2xvcjogc3RyaW5nO1xuICAgIGljb25SZXNvdXJjZT86IEltYWdlUmVzb3VyY2U7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBpY29uQ29sb3I/OiBzdHJpbmc7XG4gICAgaWNvblBvc2l0aW9uPzogSWNvblBvc2l0aW9uO1xuICAgIGRpYWxvZz86IFVpQWN0aW9uRGlhbG9nRGVzY3JpcHRvcjtcbiAgICBjb25maXJtRGlhbG9nPzogVWlBY3Rpb25EaWFsb2dEZXNjcmlwdG9yO1xuICAgIGlucHV0RGlhbG9nPzogVWlBY3Rpb25EaWFsb2dEZXNjcmlwdG9yO1xuICAgIGlucHV0MkRpYWxvZz86IFVpQWN0aW9uRGlhbG9nRGVzY3JpcHRvcjtcbiAgICBmZWVkYmFja1R5cGU/OiBVaUFjdGlvbkZlZWRiYWNrVHlwZTtcbiAgICBmZWVkYmFja1RleHQ/OiBzdHJpbmc7XG4gICAgYmFkZ2U/OiBCYWRnZURlc2NyaXB0b3I7XG4gICAgdXBsb2FkPzogVWlBY3Rpb25VcGxvYWREZXNjcmlwdG9yO1xuICAgIHRvb2x0aXA/OiBVaUFjdGlvblRvb2x0aXA7XG4gICAgc3R5bGU/OiBTdHlsZTtcbiAgICBtZW51PzogTWVudURlc2NyaXB0b3I7XG59XG5cblxuXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlBY3Rpb25EZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L2FwaS9tb2RlbC91aUFjdGlvbkRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBWaWV3IEFQSVxyXG4gKiBWaWV3IEFQSVxyXG4gKlxyXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogMS4wLjBcclxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcclxuICpcclxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cclxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXHJcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cclxuICovXHJcbmltcG9ydCB7IFVpQWN0aW9uVG9vbHRpcCB9IGZyb20gJy4vdWlBY3Rpb25Ub29sdGlwJztcclxuaW1wb3J0IHsgSW1hZ2VSZXNvdXJjZSB9IGZyb20gJy4vaW1hZ2VSZXNvdXJjZSc7XHJcbmltcG9ydCB7IEljb25Qb3NpdGlvbiB9IGZyb20gJy4vaWNvblBvc2l0aW9uJztcclxuaW1wb3J0IHsgQmFkZ2VEZXNjcmlwdG9yIH0gZnJvbSAnLi9iYWRnZURlc2NyaXB0b3InO1xyXG5pbXBvcnQgeyBNZW51RGVzY3JpcHRvciB9IGZyb20gJy4vbWVudURlc2NyaXB0b3InO1xyXG5pbXBvcnQgeyBTdHlsZSB9IGZyb20gJy4vc3R5bGUnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkZlZWRiYWNrVHlwZSB9IGZyb20gJy4vdWlBY3Rpb25GZWVkYmFja1R5cGUnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkRpYWxvZ0Rlc2NyaXB0b3IgfSBmcm9tICcuL3VpQWN0aW9uRGlhbG9nRGVzY3JpcHRvcic7XHJcbmltcG9ydCB7IFVpQWN0aW9uVXBsb2FkRGVzY3JpcHRvciB9IGZyb20gJy4vdWlBY3Rpb25VcGxvYWREZXNjcmlwdG9yJztcclxuaW1wb3J0IHsgVWlBY3Rpb25CdXR0b25UeXBlIH0gZnJvbSAnLi91aUFjdGlvbkJ1dHRvblR5cGUnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBEZXNjcmliZXMgdGhlIGFwcGVhcmFuY2UgKGFzIGEgYnV0dG9uKSBhbmQgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHJlbGF0ZWQgZGlhbG9ncyBvZiBhIFVpQWN0aW9uLiBcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlBY3Rpb25EZXNjcmlwdG9yIHsgXHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlO1xyXG4gICAgY29sb3I6IHN0cmluZztcclxuICAgIGljb25SZXNvdXJjZT86IEltYWdlUmVzb3VyY2U7XHJcbiAgICBpY29uPzogc3RyaW5nO1xyXG4gICAgaWNvbkNvbG9yPzogc3RyaW5nO1xyXG4gICAgaWNvblBvc2l0aW9uPzogSWNvblBvc2l0aW9uO1xyXG4gICAgZGlhbG9nPzogVWlBY3Rpb25EaWFsb2dEZXNjcmlwdG9yO1xyXG4gICAgY29uZmlybURpYWxvZz86IFVpQWN0aW9uRGlhbG9nRGVzY3JpcHRvcjtcclxuICAgIGlucHV0RGlhbG9nPzogVWlBY3Rpb25EaWFsb2dEZXNjcmlwdG9yO1xyXG4gICAgaW5wdXQyRGlhbG9nPzogVWlBY3Rpb25EaWFsb2dEZXNjcmlwdG9yO1xyXG4gICAgZmVlZGJhY2tUeXBlPzogVWlBY3Rpb25GZWVkYmFja1R5cGU7XHJcbiAgICBmZWVkYmFja1RleHQ/OiBzdHJpbmc7XHJcbiAgICBiYWRnZT86IEJhZGdlRGVzY3JpcHRvcjtcclxuICAgIHVwbG9hZD86IFVpQWN0aW9uVXBsb2FkRGVzY3JpcHRvcjtcclxuICAgIHRvb2x0aXA/OiBVaUFjdGlvblRvb2x0aXA7XHJcbiAgICBzdHlsZT86IFN0eWxlO1xyXG4gICAgbWVudT86IE1lbnVEZXNjcmlwdG9yO1xyXG59XHJcblxyXG5cclxuXHJcbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { Component, EventEmitter, HostListener, Inject, Input, Optional, Output, ViewChild, ViewChildren, } from '@angular/core';
2
2
  import { Subject, takeUntil } from 'rxjs';
3
3
  import { TemplatePortal } from '@angular/cdk/portal';
4
+ import { IconPosition, UiActionButtonType, } from '../../../../api';
4
5
  import { COMPONENT_LIBRARY, ComponentLibrary } from '../../../../utility/componentLibrary';
5
6
  import { getMenuPositions, getSubmenuPositions } from '../menu.constants';
6
7
  import * as i0 from "@angular/core";
@@ -25,6 +26,7 @@ export class ClickMenuComponent {
25
26
  this.submenuOpenMap = new Map();
26
27
  this.subActions = [];
27
28
  this.hasCheckedChildren = false;
29
+ this.hasSubActionSiblings = false;
28
30
  this.compLib = compLib ?? ComponentLibrary.PRIMENG;
29
31
  if (this.compLib === ComponentLibrary.PRIMENG) {
30
32
  this.icon = 'chevron-right';
@@ -48,11 +50,11 @@ export class ClickMenuComponent {
48
50
  }
49
51
  ngOnChanges(changes) {
50
52
  if (changes['triggerAction']) {
51
- var trigger = changes['triggerAction'].currentValue;
52
- var previousTrigger = changes['triggerAction'].previousValue;
53
- this.subActions = trigger?.subActions ?? [];
53
+ const trigger = changes['triggerAction'].currentValue;
54
+ const previousTrigger = changes['triggerAction'].previousValue;
55
+ this.subActions = this.normalizeSubActions(trigger?.subActions ?? []);
54
56
  if (this.isOpen && previousTrigger) {
55
- var hasSubActionsChanged = this.hasSubActionsChanged(previousTrigger?.subActions, trigger?.subActions);
57
+ const hasSubActionsChanged = this.hasSubActionsChanged(previousTrigger?.subActions, trigger?.subActions);
56
58
  if (hasSubActionsChanged) {
57
59
  this.refreshOverlay();
58
60
  }
@@ -172,12 +174,38 @@ export class ClickMenuComponent {
172
174
  }
173
175
  });
174
176
  }
177
+ normalizeSubActions(actions) {
178
+ this.hasSubActionSiblings = actions.some((a) => a.subActions && a.subActions.length > 0);
179
+ const anyHasIcon = actions.some((a) => a.descriptor?.icon || a.descriptor?.iconResource);
180
+ const lastSetPosition = [...actions].reverse().find((a) => a.descriptor?.iconPosition != null)?.descriptor
181
+ ?.iconPosition ?? IconPosition.PRE;
182
+ return actions.map((action) => {
183
+ const hasIcon = !!(action.descriptor?.icon || action.descriptor?.iconResource);
184
+ return {
185
+ ...action,
186
+ descriptor: action.descriptor
187
+ ? {
188
+ ...action.descriptor,
189
+ type: UiActionButtonType.NORMAL,
190
+ iconPosition: anyHasIcon
191
+ ? hasIcon
192
+ ? (action.descriptor.iconPosition ?? lastSetPosition)
193
+ : IconPosition.EMPTY
194
+ : action.descriptor.iconPosition,
195
+ }
196
+ : {
197
+ type: UiActionButtonType.NORMAL,
198
+ iconPosition: anyHasIcon ? IconPosition.EMPTY : undefined,
199
+ },
200
+ };
201
+ });
202
+ }
175
203
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ClickMenuComponent, deps: [{ token: i1.UiMenuService }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i2.OverlayPositionBuilder }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
176
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: ClickMenuComponent, selector: "ui-tiered-menu", inputs: { triggerAction: "triggerAction", isSubmenu: "isSubmenu", menuOpenDirection: "menuOpenDirection" }, 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) {\r\n <div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\r\n </div>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTemplate>\r\n <ul class=\"ui-tiered-menu sb4-menu-panel\">\r\n <li\r\n *ngFor=\"let action of subActions\"\r\n class=\"hoverEffect\"\r\n [class.disabled]=\"action.disabled\"\r\n (mouseenter)=\"closeSiblingSubmenus(action)\"\r\n >\r\n @if (action.subActions && action.subActions.length > 0) {\r\n <ui-tiered-menu\r\n #submenu\r\n [triggerAction]=\"action\"\r\n [isSubmenu]=\"true\"\r\n [subActions]=\"action.subActions!\"\r\n [menuOpenDirection]=\"triggerAction.descriptor?.menu?.openDirection\"\r\n (actionClick)=\"actionClick.emit($event)\"\r\n (submenuOpened)=\"onSubmenuOpened(submenu)\"\r\n ></ui-tiered-menu>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"action.descriptor!\"\r\n [code]=\"action.code\"\r\n [disabled]=\"!!action.disabled\"\r\n (actionClick)=\"!action.subActions?.length && onActionClick(action)\"\r\n ></ui-action-button>\r\n }\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<ng-template #triggerTempalte>\r\n <ui-action-button\r\n [descriptor]=\"triggerAction.descriptor!\"\r\n [code]=\"triggerAction.code\"\r\n [disabled]=\"!!triggerAction.disabled\"\r\n (actionClick)=\"toggleMenu($event.event)\"\r\n [class.submenuTrigger]=\"isSubmenu\"\r\n >\r\n </ui-action-button>\r\n</ng-template>\r\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: ClickMenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu", "menuOpenDirection"], outputs: ["actionClick", "submenuOpened"] }] }); }
204
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: ClickMenuComponent, selector: "ui-tiered-menu", inputs: { triggerAction: "triggerAction", isSubmenu: "isSubmenu", menuOpenDirection: "menuOpenDirection" }, 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) {\r\n <div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\r\n </div>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTemplate>\r\n <ul class=\"ui-tiered-menu sb4-menu-panel\">\r\n <li\r\n *ngFor=\"let action of subActions\"\r\n class=\"hoverEffect\"\r\n [class.disabled]=\"action.disabled\"\r\n (mouseenter)=\"closeSiblingSubmenus(action)\"\r\n >\r\n @if (action.subActions && action.subActions.length > 0) {\r\n <ui-tiered-menu\r\n #submenu\r\n [triggerAction]=\"action\"\r\n [isSubmenu]=\"true\"\r\n [subActions]=\"action.subActions!\"\r\n [menuOpenDirection]=\"triggerAction.descriptor?.menu?.openDirection\"\r\n (actionClick)=\"actionClick.emit($event)\"\r\n (submenuOpened)=\"onSubmenuOpened(submenu)\"\r\n ></ui-tiered-menu>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"action.descriptor!\"\r\n [code]=\"action.code\"\r\n [disabled]=\"!!action.disabled\"\r\n (actionClick)=\"!action.subActions?.length && onActionClick(action)\"\r\n ></ui-action-button>\r\n <smart-icon></smart-icon>\r\n }\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<ng-template #triggerTempalte>\r\n <ui-action-button\r\n [descriptor]=\"triggerAction.descriptor!\"\r\n [code]=\"triggerAction.code\"\r\n [disabled]=\"!!triggerAction.disabled\"\r\n (actionClick)=\"toggleMenu($event.event)\"\r\n [class.submenuTrigger]=\"isSubmenu\"\r\n >\r\n </ui-action-button>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;position:relative}li{display:flex}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}:host ::ng-deep .menu-row{display:flex;flex-direction:row;align-items:center}:host ::ng-deep .menu-row-reverse{display:flex;flex-direction:row-reverse;align-items: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: ClickMenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu", "menuOpenDirection"], outputs: ["actionClick", "submenuOpened"] }] }); }
177
205
  }
178
206
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ClickMenuComponent, decorators: [{
179
207
  type: Component,
180
- args: [{ selector: 'ui-tiered-menu', template: "@if (isSubmenu) {\r\n <div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\r\n </div>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTemplate>\r\n <ul class=\"ui-tiered-menu sb4-menu-panel\">\r\n <li\r\n *ngFor=\"let action of subActions\"\r\n class=\"hoverEffect\"\r\n [class.disabled]=\"action.disabled\"\r\n (mouseenter)=\"closeSiblingSubmenus(action)\"\r\n >\r\n @if (action.subActions && action.subActions.length > 0) {\r\n <ui-tiered-menu\r\n #submenu\r\n [triggerAction]=\"action\"\r\n [isSubmenu]=\"true\"\r\n [subActions]=\"action.subActions!\"\r\n [menuOpenDirection]=\"triggerAction.descriptor?.menu?.openDirection\"\r\n (actionClick)=\"actionClick.emit($event)\"\r\n (submenuOpened)=\"onSubmenuOpened(submenu)\"\r\n ></ui-tiered-menu>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"action.descriptor!\"\r\n [code]=\"action.code\"\r\n [disabled]=\"!!action.disabled\"\r\n (actionClick)=\"!action.subActions?.length && onActionClick(action)\"\r\n ></ui-action-button>\r\n }\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<ng-template #triggerTempalte>\r\n <ui-action-button\r\n [descriptor]=\"triggerAction.descriptor!\"\r\n [code]=\"triggerAction.code\"\r\n [disabled]=\"!!triggerAction.disabled\"\r\n (actionClick)=\"toggleMenu($event.event)\"\r\n [class.submenuTrigger]=\"isSubmenu\"\r\n >\r\n </ui-action-button>\r\n</ng-template>\r\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"] }]
208
+ args: [{ selector: 'ui-tiered-menu', template: "@if (isSubmenu) {\r\n <div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\r\n </div>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTemplate>\r\n <ul class=\"ui-tiered-menu sb4-menu-panel\">\r\n <li\r\n *ngFor=\"let action of subActions\"\r\n class=\"hoverEffect\"\r\n [class.disabled]=\"action.disabled\"\r\n (mouseenter)=\"closeSiblingSubmenus(action)\"\r\n >\r\n @if (action.subActions && action.subActions.length > 0) {\r\n <ui-tiered-menu\r\n #submenu\r\n [triggerAction]=\"action\"\r\n [isSubmenu]=\"true\"\r\n [subActions]=\"action.subActions!\"\r\n [menuOpenDirection]=\"triggerAction.descriptor?.menu?.openDirection\"\r\n (actionClick)=\"actionClick.emit($event)\"\r\n (submenuOpened)=\"onSubmenuOpened(submenu)\"\r\n ></ui-tiered-menu>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"action.descriptor!\"\r\n [code]=\"action.code\"\r\n [disabled]=\"!!action.disabled\"\r\n (actionClick)=\"!action.subActions?.length && onActionClick(action)\"\r\n ></ui-action-button>\r\n <smart-icon></smart-icon>\r\n }\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<ng-template #triggerTempalte>\r\n <ui-action-button\r\n [descriptor]=\"triggerAction.descriptor!\"\r\n [code]=\"triggerAction.code\"\r\n [disabled]=\"!!triggerAction.disabled\"\r\n (actionClick)=\"toggleMenu($event.event)\"\r\n [class.submenuTrigger]=\"isSubmenu\"\r\n >\r\n </ui-action-button>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;position:relative}li{display:flex}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}:host ::ng-deep .menu-row{display:flex;flex-direction:row;align-items:center}:host ::ng-deep .menu-row-reverse{display:flex;flex-direction:row-reverse;align-items:center}\n"] }]
181
209
  }], ctorParameters: () => [{ type: i1.UiMenuService }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i2.OverlayPositionBuilder }, { type: i6.ComponentLibrary, decorators: [{
182
210
  type: Inject,
183
211
  args: [COMPONENT_LIBRARY]
@@ -206,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
206
234
  type: HostListener,
207
235
  args: ['document:click', ['$event']]
208
236
  }] } });
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvbWVudS9jbGljay9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy9tZW51L2NsaWNrL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFJTixTQUFTLEVBQ1QsWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7QUFPMUUsTUFBTSxPQUFPLGtCQUFrQjtJQW1CN0IsWUFDVSxXQUEwQixFQUMxQixPQUFnQixFQUNoQixnQkFBa0MsRUFDbEMsc0JBQThDLEVBQ1IsT0FBMEI7UUFKaEUsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFD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bGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQ29ubmVjdGVkUG9zaXRpb24sXHJcbiAgT3ZlcmxheSxcclxuICBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxyXG4gIE92ZXJsYXlSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBNZW51T3BlbkRpcmVjdGlvbiwgVWlBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hcGknO1xyXG5pbXBvcnQgeyBVaU1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5pbXBvcnQgeyBnZXRNZW51UG9zaXRpb25zLCBnZXRTdWJtZW51UG9zaXRpb25zIH0gZnJvbSAnLi4vbWVudS5jb25zdGFudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS10aWVyZWQtbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5jc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpY2tNZW51Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgQFZpZXdDaGlsZHJlbignc3VibWVudScpIHN1Ym1lbnVDb21wb25lbnRzITogUXVlcnlMaXN0PENsaWNrTWVudUNvbXBvbmVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21lbnVUZW1wbGF0ZScpIG1lbnVUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSB0cmlnZ2VyQWN0aW9uITogVWlBY3Rpb247XHJcbiAgQElucHV0KCkgaXNTdWJtZW51OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbWVudU9wZW5EaXJlY3Rpb24/OiBNZW51T3BlbkRpcmVjdGlvbjtcclxuXHJcbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxVaUFjdGlvbj4oKTtcclxuICBAT3V0cHV0KCkgc3VibWVudU9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8VWlBY3Rpb24+KCk7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGljb24hOiBzdHJpbmc7XHJcbiAgc3VibWVudU9wZW5NYXAgPSBuZXcgTWFwPFVpQWN0aW9uLCBib29sZWFuPigpO1xyXG4gIHN1YkFjdGlvbnM6IFVpQWN0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIGhhc0NoZWNrZWRDaGlsZHJlbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IFVpTWVudVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIG92ZXJsYXlQb3NpdGlvbkJ1aWxkZXI6IE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHtcclxuICAgIHRoaXMuY29tcExpYiA9IGNvbXBMaWIgPz8gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORykge1xyXG4gICAgICB0aGlzLmljb24gPSAnY2hldnJvbi1yaWdodCc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5NQVRFUklBTCkge1xyXG4gICAgICB0aGlzLmljb24gPSAnY2hldnJvbl9yaWdodCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubWVudVNlcnZpY2VcclxuICAgICAgLmdldENsb3NlU2lnbmFsKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNsb3NlTWVudSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzT3BlbiAmJiAhdGhpcy5oYXNDaGVja2VkQ2hpbGRyZW4gJiYgdGhpcy5zdWJtZW51Q29tcG9uZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFzQ2hlY2tlZENoaWxkcmVuID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWyd0cmlnZ2VyQWN0aW9uJ10pIHtcclxuICAgICAgdmFyIHRyaWdnZXIgPSBjaGFuZ2VzWyd0cmlnZ2VyQWN0aW9uJ10uY3VycmVudFZhbHVlIGFzIFVpQWN0aW9uO1xyXG4gICAgICB2YXIgcHJldmlvdXNUcmlnZ2VyID0gY2hhbmdlc1sndHJpZ2dlckFjdGlvbiddLnByZXZpb3VzVmFsdWUgYXMgVWlBY3Rpb247XHJcblxyXG4gICAgICB0aGlzLnN1YkFjdGlvbnMgPSB0cmlnZ2VyPy5zdWJBY3Rpb25zID8/IFtdO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaXNPcGVuICYmIHByZXZpb3VzVHJpZ2dlcikge1xyXG4gICAgICAgIHZhciBoYXNTdWJBY3Rpb25zQ2hhbmdlZCA9IHRoaXMuaGFzU3ViQWN0aW9uc0NoYW5nZWQoXHJcbiAgICAgICAgICBwcmV2aW91c1RyaWdnZXI/LnN1YkFjdGlvbnMsXHJcbiAgICAgICAgICB0cmlnZ2VyPy5zdWJBY3Rpb25zXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGhhc1N1YkFjdGlvbnNDaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hPdmVybGF5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1N1YkFjdGlvbnNDaGFuZ2VkKFxyXG4gICAgb2xkU3ViQWN0aW9uczogVWlBY3Rpb25bXSB8IHVuZGVmaW5lZCxcclxuICAgIG5ld1N1YkFjdGlvbnM6IFVpQWN0aW9uW10gfCB1bmRlZmluZWRcclxuICApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG9sZExlbmd0aCA9IG9sZFN1YkFjdGlvbnM/Lmxlbmd0aCA/PyAwO1xyXG4gICAgY29uc3QgbmV3TGVuZ3RoID0gbmV3U3ViQWN0aW9ucz8ubGVuZ3RoID8/IDA7XHJcblxyXG4gICAgaWYgKG9sZExlbmd0aCAhPT0gbmV3TGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvbGRMZW5ndGggPiAwICYmIG5ld0xlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdMZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChvbGRTdWJBY3Rpb25zIVtpXS5jb2RlICE9PSBuZXdTdWJBY3Rpb25zIVtpXS5jb2RlKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25DbGljayhhY3Rpb246IFVpQWN0aW9uKSB7XHJcbiAgICBpZiAoIWFjdGlvbi5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uKTtcclxuICAgICAgdGhpcy5tZW51U2VydmljZS5jbG9zZUFsbE1lbnVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25NZW51Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlQWxsTWVudXMoKTtcclxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLm92ZXJsYXlSZWY7XHJcbiAgfVxyXG5cclxuICBjbG9zZU1lbnUoKSB7XHJcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XHJcbiAgICAgIHRoaXMuaGFzQ2hlY2tlZENoaWxkcmVuID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3VibWVudUNvbXBvbmVudHMgJiYgdGhpcy5zdWJtZW51Q29tcG9uZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc3VibWVudUNvbXBvbmVudHMuZm9yRWFjaCgoc3VibWVudSkgPT4ge1xyXG4gICAgICAgIHN1Ym1lbnUuY2xvc2VNZW51KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaE92ZXJsYXkoKSB7XHJcbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xyXG5cclxuICAgIGxldCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5tZW51VGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XHJcblxyXG4gICAgdGhpcy5oYXNDaGVja2VkQ2hpbGRyZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9wZW5NZW51KGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzU3VibWVudSkge1xyXG4gICAgICB0aGlzLnN1Ym1lbnVPcGVuZWQuZW1pdCh0aGlzLnRyaWdnZXJBY3Rpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tZW51U2VydmljZS5jbG9zZUFsbE1lbnVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRyaWdnZXJFbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHZhciBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSB0aGlzLmlzU3VibWVudVxyXG4gICAgICA/IGdldFN1Ym1lbnVQb3NpdGlvbnModGhpcy5tZW51T3BlbkRpcmVjdGlvbilcclxuICAgICAgOiBnZXRNZW51UG9zaXRpb25zKHRoaXMudHJpZ2dlckFjdGlvbj8uZGVzY3JpcHRvcj8ubWVudT8ub3BlbkRpcmVjdGlvbik7XHJcblxyXG4gICAgbGV0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlQb3NpdGlvbkJ1aWxkZXJcclxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odHJpZ2dlckVsZW1lbnQpXHJcbiAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxyXG4gICAgICAud2l0aFB1c2godHJ1ZSlcclxuICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKTtcclxuXHJcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcclxuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLm1lbnVUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcclxuICAgICAgdGhpcy5vcGVuTWVudShldmVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdWJtZW51T3BlbmVkKG9wZW5lZEFjdGlvbjogVWlBY3Rpb24pIHtcclxuICAgIGlmICghdGhpcy5zdWJtZW51Q29tcG9uZW50cyB8fCB0aGlzLnN1Ym1lbnVDb21wb25lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm9uU3VibWVudU9wZW5lZChvcGVuZWRBY3Rpb24pO1xyXG4gICAgICB9LCAwKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3VibWVudUNvbXBvbmVudHMuZm9yRWFjaCgoc3VibWVudSkgPT4ge1xyXG4gICAgICBpZiAoc3VibWVudS50cmlnZ2VyQWN0aW9uLmNvZGUgIT09IG9wZW5lZEFjdGlvbi5jb2RlICYmIHN1Ym1lbnUub3ZlcmxheVJlZikge1xyXG4gICAgICAgIHN1Ym1lbnUuY2xvc2VNZW51KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTaWJsaW5nU3VibWVudXMoZXhjZXB0QWN0aW9uOiBVaUFjdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJtZW51Q29tcG9uZW50cz8uZm9yRWFjaCgoc3VibWVudSkgPT4ge1xyXG4gICAgICBpZiAoc3VibWVudS50cmlnZ2VyQWN0aW9uLmNvZGUgIT09IGV4Y2VwdEFjdGlvbi5jb2RlICYmIHN1Ym1lbnUuaXNPcGVuKSB7XHJcbiAgICAgICAgc3VibWVudS5jbG9zZU1lbnUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoaXNTdWJtZW51KSB7XHJcbiAgPGRpdiBjbGFzcz1cInN1Ym1lbnUgaG92ZXJFZmZlY3RcIiBbY2xhc3MuYWN0aXZlU3VibWVudV09XCJpc09wZW5cIiAobW91c2VlbnRlcik9XCJvcGVuTWVudSgkZXZlbnQpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJpZ2dlclRlbXBhbHRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c21hcnQtaWNvbiBbaWNvbl09XCJpY29uXCIgY29sb3I9XCJibGFja1wiPjwvc21hcnQtaWNvbj5cclxuICA8L2Rpdj5cclxufSBAZWxzZSB7XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJUZW1wYWx0ZVwiPjwvbmctY29udGFpbmVyPlxyXG59XHJcblxyXG48bmctdGVtcGxhdGUgI21lbnVUZW1wbGF0ZT5cclxuICA8dWwgY2xhc3M9XCJ1aS10aWVyZWQtbWVudSBzYjQtbWVudS1wYW5lbFwiPlxyXG4gICAgPGxpXHJcbiAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygc3ViQWN0aW9uc1wiXHJcbiAgICAgIGNsYXNzPVwiaG92ZXJFZmZlY3RcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkXCJcclxuICAgICAgKG1vdXNlZW50ZXIpPVwiY2xvc2VTaWJsaW5nU3VibWVudXMoYWN0aW9uKVwiXHJcbiAgICA+XHJcbiAgICAgIEBpZiAoYWN0aW9uLnN1YkFjdGlvbnMgJiYgYWN0aW9uLnN1YkFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIDx1aS10aWVyZWQtbWVudVxyXG4gICAgICAgICAgI3N1Ym1lbnVcclxuICAgICAgICAgIFt0cmlnZ2VyQWN0aW9uXT1cImFjdGlvblwiXHJcbiAgICAgICAgICBbaXNTdWJtZW51XT1cInRydWVcIlxyXG4gICAgICAgICAgW3N1YkFjdGlvbnNdPVwiYWN0aW9uLnN1YkFjdGlvbnMhXCJcclxuICAgICAgICAgIFttZW51T3BlbkRpcmVjdGlvbl09XCJ0cmlnZ2VyQWN0aW9uLmRlc2NyaXB0b3I/Lm1lbnU/Lm9wZW5EaXJlY3Rpb25cIlxyXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImFjdGlvbkNsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoc3VibWVudU9wZW5lZCk9XCJvblN1Ym1lbnVPcGVuZWQoc3VibWVudSlcIlxyXG4gICAgICAgID48L3VpLXRpZXJlZC1tZW51PlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICAgICAgW2Rlc2NyaXB0b3JdPVwiYWN0aW9uLmRlc2NyaXB0b3IhXCJcclxuICAgICAgICAgIFtjb2RlXT1cImFjdGlvbi5jb2RlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhIWFjdGlvbi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiIWFjdGlvbi5zdWJBY3Rpb25zPy5sZW5ndGggJiYgb25BY3Rpb25DbGljayhhY3Rpb24pXCJcclxuICAgICAgICA+PC91aS1hY3Rpb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RyaWdnZXJUZW1wYWx0ZT5cclxuICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgW2Rlc2NyaXB0b3JdPVwidHJpZ2dlckFjdGlvbi5kZXNjcmlwdG9yIVwiXHJcbiAgICBbY29kZV09XCJ0cmlnZ2VyQWN0aW9uLmNvZGVcIlxyXG4gICAgW2Rpc2FibGVkXT1cIiEhdHJpZ2dlckFjdGlvbi5kaXNhYmxlZFwiXHJcbiAgICAoYWN0aW9uQ2xpY2spPVwidG9nZ2xlTWVudSgkZXZlbnQuZXZlbnQpXCJcclxuICAgIFtjbGFzcy5zdWJtZW51VHJpZ2dlcl09XCJpc1N1Ym1lbnVcIlxyXG4gID5cclxuICA8L3VpLWFjdGlvbi1idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvbWVudS9jbGljay9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy9tZW51L2NsaWNrL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFJTixTQUFTLEVBQ1QsWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsWUFBWSxFQUdaLGtCQUFrQixHQUVuQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7OztBQU8xRSxNQUFNLE9BQU8sa0JBQWtCO0lBbUI3QixZQUNVLFdBQTBCLEVBQzFCLE9BQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxzQkFBOEMsRUFDUixPQUEwQjtRQUpoRSxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLHFCQUFn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QkFBekMsWUFBWTt1QkFBQyxTQUFTO2dCQUVJLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFHaEIsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBNkZQLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTWpDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBDb25uZWN0ZWRQb3NpdGlvbixcclxuICBPdmVybGF5LFxyXG4gIE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXHJcbiAgT3ZlcmxheVJlZixcclxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7XHJcbiAgSWNvblBvc2l0aW9uLFxyXG4gIE1lbnVPcGVuRGlyZWN0aW9uLFxyXG4gIFVpQWN0aW9uLFxyXG4gIFVpQWN0aW9uQnV0dG9uVHlwZSxcclxuICBVaUFjdGlvbkRlc2NyaXB0b3IsXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vYXBpJztcclxuaW1wb3J0IHsgVWlNZW51U2VydmljZSB9IGZyb20gJy4uL21lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IENPTVBPTkVOVF9MSUJSQVJZLCBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0eS9jb21wb25lbnRMaWJyYXJ5JztcclxuaW1wb3J0IHsgZ2V0TWVudVBvc2l0aW9ucywgZ2V0U3VibWVudVBvc2l0aW9ucyB9IGZyb20gJy4uL21lbnUuY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktdGllcmVkLW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbWVudS5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaWNrTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQge1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3N1Ym1lbnUnKSBzdWJtZW51Q29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxDbGlja01lbnVDb21wb25lbnQ+O1xyXG5cclxuICBAVmlld0NoaWxkKCdtZW51VGVtcGxhdGUnKSBtZW51VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgdHJpZ2dlckFjdGlvbiE6IFVpQWN0aW9uO1xyXG4gIEBJbnB1dCgpIGlzU3VibWVudTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1lbnVPcGVuRGlyZWN0aW9uPzogTWVudU9wZW5EaXJlY3Rpb247XHJcblxyXG4gIEBPdXRwdXQoKSBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VWlBY3Rpb24+KCk7XHJcbiAgQE91dHB1dCgpIHN1Ym1lbnVPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFVpQWN0aW9uPigpO1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBpY29uITogc3RyaW5nO1xyXG4gIHN1Ym1lbnVPcGVuTWFwID0gbmV3IE1hcDxVaUFjdGlvbiwgYm9vbGVhbj4oKTtcclxuICBzdWJBY3Rpb25zOiBVaUFjdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBoYXNDaGVja2VkQ2hpbGRyZW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBVaU1lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBvdmVybGF5UG9zaXRpb25CdWlsZGVyOiBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxyXG4gICAgQEluamVjdChDT01QT05FTlRfTElCUkFSWSkgQE9wdGlvbmFsKCkgcHVibGljIGNvbXBMaWI/OiBDb21wb25lbnRMaWJyYXJ5XHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbXBMaWIgPSBjb21wTGliID8/IENvbXBvbmVudExpYnJhcnkuUFJJTUVORztcclxuXHJcbiAgICBpZiAodGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuICAgICAgdGhpcy5pY29uID0gJ2NoZXZyb24tcmlnaHQnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuTUFURVJJQUwpIHtcclxuICAgICAgdGhpcy5pY29uID0gJ2NoZXZyb25fcmlnaHQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1lbnVTZXJ2aWNlXHJcbiAgICAgIC5nZXRDbG9zZVNpZ25hbCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgIXRoaXMuaGFzQ2hlY2tlZENoaWxkcmVuICYmIHRoaXMuc3VibWVudUNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmhhc0NoZWNrZWRDaGlsZHJlbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1sndHJpZ2dlckFjdGlvbiddKSB7XHJcbiAgICAgIGNvbnN0IHRyaWdnZXIgPSBjaGFuZ2VzWyd0cmlnZ2VyQWN0aW9uJ10uY3VycmVudFZhbHVlIGFzIFVpQWN0aW9uO1xyXG4gICAgICBjb25zdCBwcmV2aW91c1RyaWdnZXIgPSBjaGFuZ2VzWyd0cmlnZ2VyQWN0aW9uJ10ucHJldmlvdXNWYWx1ZSBhcyBVaUFjdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuc3ViQWN0aW9ucyA9IHRoaXMubm9ybWFsaXplU3ViQWN0aW9ucyh0cmlnZ2VyPy5zdWJBY3Rpb25zID8/IFtdKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiBwcmV2aW91c1RyaWdnZXIpIHtcclxuICAgICAgICBjb25zdCBoYXNTdWJBY3Rpb25zQ2hhbmdlZCA9IHRoaXMuaGFzU3ViQWN0aW9uc0NoYW5nZWQoXHJcbiAgICAgICAgICBwcmV2aW91c1RyaWdnZXI/LnN1YkFjdGlvbnMsXHJcbiAgICAgICAgICB0cmlnZ2VyPy5zdWJBY3Rpb25zXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoaGFzU3ViQWN0aW9uc0NoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaE92ZXJsYXkoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzU3ViQWN0aW9uc0NoYW5nZWQoXHJcbiAgICBvbGRTdWJBY3Rpb25zOiBVaUFjdGlvbltdIHwgdW5kZWZpbmVkLFxyXG4gICAgbmV3U3ViQWN0aW9uczogVWlBY3Rpb25bXSB8IHVuZGVmaW5lZFxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgb2xkTGVuZ3RoID0gb2xkU3ViQWN0aW9ucz8ubGVuZ3RoID8/IDA7XHJcbiAgICBjb25zdCBuZXdMZW5ndGggPSBuZXdTdWJBY3Rpb25zPy5sZW5ndGggPz8gMDtcclxuXHJcbiAgICBpZiAob2xkTGVuZ3RoICE9PSBuZXdMZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9sZExlbmd0aCA+IDAgJiYgbmV3TGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0xlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKG9sZFN1YkFjdGlvbnMhW2ldLmNvZGUgIT09IG5ld1N1YkFjdGlvbnMhW2ldLmNvZGUpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogVWlBY3Rpb24pIHtcclxuICAgIGlmICghYWN0aW9uLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdChhY3Rpb24pO1xyXG4gICAgICB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlQWxsTWVudXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbk1lbnVDbGljayhldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMubWVudVNlcnZpY2UuY2xvc2VBbGxNZW51cygpO1xyXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMub3ZlcmxheVJlZjtcclxuICB9XHJcblxyXG4gIGNsb3NlTWVudSgpIHtcclxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcclxuICAgICAgdGhpcy5oYXNDaGVja2VkQ2hpbGRyZW4gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zdWJtZW51Q29tcG9uZW50cyAmJiB0aGlzLnN1Ym1lbnVDb21wb25lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zdWJtZW51Q29tcG9uZW50cy5mb3JFYWNoKChzdWJtZW51KSA9PiB7XHJcbiAgICAgICAgc3VibWVudS5jbG9zZU1lbnUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWZyZXNoT3ZlcmxheSgpIHtcclxuICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XHJcblxyXG4gICAgbGV0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLm1lbnVUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcclxuXHJcbiAgICB0aGlzLmhhc0NoZWNrZWRDaGlsZHJlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb3Blbk1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdWJtZW51KSB7XHJcbiAgICAgIHRoaXMuc3VibWVudU9wZW5lZC5lbWl0KHRoaXMudHJpZ2dlckFjdGlvbik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlQWxsTWVudXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdHJpZ2dlckVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdmFyIHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IHRoaXMuaXNTdWJtZW51XHJcbiAgICAgID8gZ2V0U3VibWVudVBvc2l0aW9ucyh0aGlzLm1lbnVPcGVuRGlyZWN0aW9uKVxyXG4gICAgICA6IGdldE1lbnVQb3NpdGlvbnModGhpcy50cmlnZ2VyQWN0aW9uPy5kZXNjcmlwdG9yPy5tZW51Py5vcGVuRGlyZWN0aW9uKTtcclxuXHJcbiAgICBsZXQgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVBvc2l0aW9uQnVpbGRlclxyXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0cmlnZ2VyRWxlbWVudClcclxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXHJcbiAgICAgIC53aXRoUHVzaCh0cnVlKVxyXG4gICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xyXG5cclxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxyXG4gICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMubWVudVRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTWVudShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICB0aGlzLm9wZW5NZW51KGV2ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xvc2VNZW51KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN1Ym1lbnVPcGVuZWQob3BlbmVkQWN0aW9uOiBVaUFjdGlvbikge1xyXG4gICAgaWYgKCF0aGlzLnN1Ym1lbnVDb21wb25lbnRzIHx8IHRoaXMuc3VibWVudUNvbXBvbmVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub25TdWJtZW51T3BlbmVkKG9wZW5lZEFjdGlvbik7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJtZW51Q29tcG9uZW50cy5mb3JFYWNoKChzdWJtZW51KSA9PiB7XHJcbiAgICAgIGlmIChzdWJtZW51LnRyaWdnZXJBY3Rpb24uY29kZSAhPT0gb3BlbmVkQWN0aW9uLmNvZGUgJiYgc3VibWVudS5vdmVybGF5UmVmKSB7XHJcbiAgICAgICAgc3VibWVudS5jbG9zZU1lbnUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZVNpYmxpbmdTdWJtZW51cyhleGNlcHRBY3Rpb246IFVpQWN0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1Ym1lbnVDb21wb25lbnRzPy5mb3JFYWNoKChzdWJtZW51KSA9PiB7XHJcbiAgICAgIGlmIChzdWJtZW51LnRyaWdnZXJBY3Rpb24uY29kZSAhPT0gZXhjZXB0QWN0aW9uLmNvZGUgJiYgc3VibWVudS5pc09wZW4pIHtcclxuICAgICAgICBzdWJtZW51LmNsb3NlTWVudSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgaGFzU3ViQWN0aW9uU2libGluZ3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBub3JtYWxpemVTdWJBY3Rpb25zKGFjdGlvbnM6IFVpQWN0aW9uW10pOiBVaUFjdGlvbltdIHtcclxuICAgIHRoaXMuaGFzU3ViQWN0aW9uU2libGluZ3MgPSBhY3Rpb25zLnNvbWUoKGEpID0+IGEuc3ViQWN0aW9ucyAmJiBhLnN1YkFjdGlvbnMubGVuZ3RoID4gMCk7XHJcbiAgICBjb25zdCBhbnlIYXNJY29uID0gYWN0aW9ucy5zb21lKChhKSA9PiBhLmRlc2NyaXB0b3I/Lmljb24gfHwgYS5kZXNjcmlwdG9yPy5pY29uUmVzb3VyY2UpO1xyXG5cclxuICAgIGNvbnN0IGxhc3RTZXRQb3NpdGlvbiA9XHJcbiAgICAgIFsuLi5hY3Rpb25zXS5yZXZlcnNlKCkuZmluZCgoYSkgPT4gYS5kZXNjcmlwdG9yPy5pY29uUG9zaXRpb24gIT0gbnVsbCk/LmRlc2NyaXB0b3JcclxuICAgICAgICA/Lmljb25Qb3NpdGlvbiA/PyBJY29uUG9zaXRpb24uUFJFO1xyXG5cclxuICAgIHJldHVybiBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiB7XHJcbiAgICAgIGNvbnN0IGhhc0ljb24gPSAhIShhY3Rpb24uZGVzY3JpcHRvcj8uaWNvbiB8fCBhY3Rpb24uZGVzY3JpcHRvcj8uaWNvblJlc291cmNlKTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uYWN0aW9uLFxyXG4gICAgICAgIGRlc2NyaXB0b3I6IGFjdGlvbi5kZXNjcmlwdG9yXHJcbiAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAuLi5hY3Rpb24uZGVzY3JpcHRvcixcclxuICAgICAgICAgICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuTk9STUFMLFxyXG4gICAgICAgICAgICAgIGljb25Qb3NpdGlvbjogYW55SGFzSWNvblxyXG4gICAgICAgICAgICAgICAgPyBoYXNJY29uXHJcbiAgICAgICAgICAgICAgICAgID8gKGFjdGlvbi5kZXNjcmlwdG9yLmljb25Qb3NpdGlvbiA/PyBsYXN0U2V0UG9zaXRpb24pXHJcbiAgICAgICAgICAgICAgICAgIDogSWNvblBvc2l0aW9uLkVNUFRZXHJcbiAgICAgICAgICAgICAgICA6IGFjdGlvbi5kZXNjcmlwdG9yLmljb25Qb3NpdGlvbixcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgOiAoe1xyXG4gICAgICAgICAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5OT1JNQUwsXHJcbiAgICAgICAgICAgICAgaWNvblBvc2l0aW9uOiBhbnlIYXNJY29uID8gSWNvblBvc2l0aW9uLkVNUFRZIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB9IGFzIFVpQWN0aW9uRGVzY3JpcHRvciksXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChpc1N1Ym1lbnUpIHtcclxuICA8ZGl2IGNsYXNzPVwic3VibWVudSBob3ZlckVmZmVjdFwiIFtjbGFzcy5hY3RpdmVTdWJtZW51XT1cImlzT3BlblwiIChtb3VzZWVudGVyKT1cIm9wZW5NZW51KCRldmVudClcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmlnZ2VyVGVtcGFsdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxzbWFydC1pY29uIFtpY29uXT1cImljb25cIiBjb2xvcj1cImJsYWNrXCI+PC9zbWFydC1pY29uPlxyXG4gIDwvZGl2PlxyXG59IEBlbHNlIHtcclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJpZ2dlclRlbXBhbHRlXCI+PC9uZy1jb250YWluZXI+XHJcbn1cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbWVudVRlbXBsYXRlPlxyXG4gIDx1bCBjbGFzcz1cInVpLXRpZXJlZC1tZW51IHNiNC1tZW51LXBhbmVsXCI+XHJcbiAgICA8bGlcclxuICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBzdWJBY3Rpb25zXCJcclxuICAgICAgY2xhc3M9XCJob3ZlckVmZmVjdFwiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWRcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJjbG9zZVNpYmxpbmdTdWJtZW51cyhhY3Rpb24pXCJcclxuICAgID5cclxuICAgICAgQGlmIChhY3Rpb24uc3ViQWN0aW9ucyAmJiBhY3Rpb24uc3ViQWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgPHVpLXRpZXJlZC1tZW51XHJcbiAgICAgICAgICAjc3VibWVudVxyXG4gICAgICAgICAgW3RyaWdnZXJBY3Rpb25dPVwiYWN0aW9uXCJcclxuICAgICAgICAgIFtpc1N1Ym1lbnVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbc3ViQWN0aW9uc109XCJhY3Rpb24uc3ViQWN0aW9ucyFcIlxyXG4gICAgICAgICAgW21lbnVPcGVuRGlyZWN0aW9uXT1cInRyaWdnZXJBY3Rpb24uZGVzY3JpcHRvcj8ubWVudT8ub3BlbkRpcmVjdGlvblwiXHJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgIChzdWJtZW51T3BlbmVkKT1cIm9uU3VibWVudU9wZW5lZChzdWJtZW51KVwiXHJcbiAgICAgICAgPjwvdWktdGllcmVkLW1lbnU+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICAgICAgICBbZGVzY3JpcHRvcl09XCJhY3Rpb24uZGVzY3JpcHRvciFcIlxyXG4gICAgICAgICAgW2NvZGVdPVwiYWN0aW9uLmNvZGVcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiEhYWN0aW9uLmRpc2FibGVkXCJcclxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCIhYWN0aW9uLnN1YkFjdGlvbnM/Lmxlbmd0aCAmJiBvbkFjdGlvbkNsaWNrKGFjdGlvbilcIlxyXG4gICAgICAgID48L3VpLWFjdGlvbi1idXR0b24+XHJcbiAgICAgICAgPHNtYXJ0LWljb24+PC9zbWFydC1pY29uPlxyXG4gICAgICB9XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RyaWdnZXJUZW1wYWx0ZT5cclxuICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgW2Rlc2NyaXB0b3JdPVwidHJpZ2dlckFjdGlvbi5kZXNjcmlwdG9yIVwiXHJcbiAgICBbY29kZV09XCJ0cmlnZ2VyQWN0aW9uLmNvZGVcIlxyXG4gICAgW2Rpc2FibGVkXT1cIiEhdHJpZ2dlckFjdGlvbi5kaXNhYmxlZFwiXHJcbiAgICAoYWN0aW9uQ2xpY2spPVwidG9nZ2xlTWVudSgkZXZlbnQuZXZlbnQpXCJcclxuICAgIFtjbGFzcy5zdWJtZW51VHJpZ2dlcl09XCJpc1N1Ym1lbnVcIlxyXG4gID5cclxuICA8L3VpLWFjdGlvbi1idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { Component, EventEmitter, HostListener, Inject, Input, Optional, Output, ViewChild, ViewChildren, } from '@angular/core';
2
2
  import { Subject, takeUntil } from 'rxjs';
3
3
  import { TemplatePortal } from '@angular/cdk/portal';
4
+ import { IconPosition, UiActionButtonType, } from '../../../../api';
4
5
  import { COMPONENT_LIBRARY, ComponentLibrary } from '../../../../utility/componentLibrary';
5
6
  import { getMenuPositions, getSubmenuPositions } from '../menu.constants';
6
7
  import * as i0 from "@angular/core";
@@ -50,7 +51,7 @@ export class HoverMenuComponent {
50
51
  if (changes['triggerAction']) {
51
52
  const trigger = changes['triggerAction'].currentValue;
52
53
  const previousTrigger = changes['triggerAction'].previousValue;
53
- this.subActions = trigger?.subActions ?? [];
54
+ this.subActions = this.normalizeSubActions(trigger?.subActions ?? []);
54
55
  if (this.isOpen && previousTrigger) {
55
56
  const hasSubActionsChanged = this.hasSubActionsChanged(previousTrigger?.subActions, trigger?.subActions);
56
57
  if (hasSubActionsChanged) {
@@ -172,12 +173,32 @@ export class HoverMenuComponent {
172
173
  }
173
174
  });
174
175
  }
176
+ normalizeSubActions(actions) {
177
+ const anyHasIcon = actions.some((a) => a.descriptor?.icon || a.descriptor?.iconResource);
178
+ return actions.map((action) => ({
179
+ ...action,
180
+ descriptor: action.descriptor
181
+ ? {
182
+ ...action.descriptor,
183
+ type: UiActionButtonType.NORMAL,
184
+ iconPosition: anyHasIcon
185
+ ? action.descriptor.icon || action.descriptor.iconResource
186
+ ? action.descriptor.iconPosition
187
+ : IconPosition.EMPTY
188
+ : action.descriptor.iconPosition,
189
+ }
190
+ : {
191
+ type: UiActionButtonType.NORMAL,
192
+ iconPosition: anyHasIcon ? IconPosition.EMPTY : undefined,
193
+ },
194
+ }));
195
+ }
175
196
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: HoverMenuComponent, deps: [{ token: i1.UiMenuService }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i2.OverlayPositionBuilder }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
176
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: HoverMenuComponent, selector: "ui-hover-menu", inputs: { triggerAction: "triggerAction", isSubmenu: "isSubmenu", menuOpenDirection: "menuOpenDirection" }, 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) {\r\n <div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\r\n </div>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTemplate>\r\n <ul class=\"ui-hover-menu sb4-menu-panel\">\r\n <li\r\n *ngFor=\"let action of subActions\"\r\n class=\"hoverEffect\"\r\n [class.disabled]=\"action.disabled\"\r\n (mouseenter)=\"closeSiblingSubmenus(action)\"\r\n >\r\n @if (action.subActions && action.subActions.length > 0) {\r\n <ui-hover-menu\r\n #submenu\r\n [triggerAction]=\"action\"\r\n [isSubmenu]=\"true\"\r\n [subActions]=\"action.subActions!\"\r\n [menuOpenDirection]=\"triggerAction.descriptor?.menu?.openDirection\"\r\n (actionClick)=\"actionClick.emit($event)\"\r\n (submenuOpened)=\"onSubmenuOpened(submenu)\"\r\n ></ui-hover-menu>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"action.descriptor!\"\r\n [code]=\"action.code\"\r\n [disabled]=\"!!action.disabled\"\r\n (actionClick)=\"onActionClick(action)\"\r\n ></ui-action-button>\r\n }\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<ng-template #triggerTempalte>\r\n <ui-action-button\r\n [descriptor]=\"triggerAction.descriptor!\"\r\n [code]=\"triggerAction.code\"\r\n [disabled]=\"!!triggerAction.disabled\"\r\n (mouseenter)=\"openMenu($event)\"\r\n (actionClick)=\"onActionClick(triggerAction)\"\r\n [class.submenuTrigger]=\"isSubmenu\"\r\n >\r\n </ui-action-button>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;position:relative}ul,.ui-hover-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-hover-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-hover-menu ::ng-deep ui-action-button,.ui-hover-menu ::ng-deep ui-badge{width:100%}.ui-hover-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-hover-menu ui-hover-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: HoverMenuComponent, selector: "ui-hover-menu", inputs: ["triggerAction", "isSubmenu", "menuOpenDirection"], outputs: ["actionClick", "submenuOpened"] }] }); }
197
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: HoverMenuComponent, selector: "ui-hover-menu", inputs: { triggerAction: "triggerAction", isSubmenu: "isSubmenu", menuOpenDirection: "menuOpenDirection" }, 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: "<div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n @if (isSubmenu) {\r\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\r\n } @else {\r\n <smart-icon></smart-icon>\r\n }\r\n</div>\r\n\r\n<ng-template #menuTemplate>\r\n <ul class=\"ui-hover-menu sb4-menu-panel\">\r\n <li\r\n *ngFor=\"let action of subActions\"\r\n class=\"hoverEffect\"\r\n [class.disabled]=\"action.disabled\"\r\n (mouseenter)=\"closeSiblingSubmenus(action)\"\r\n >\r\n @if (action.subActions && action.subActions.length > 0) {\r\n <ui-hover-menu\r\n #submenu\r\n [triggerAction]=\"action\"\r\n [isSubmenu]=\"true\"\r\n [subActions]=\"action.subActions!\"\r\n [menuOpenDirection]=\"triggerAction.descriptor?.menu?.openDirection\"\r\n (actionClick)=\"actionClick.emit($event)\"\r\n (submenuOpened)=\"onSubmenuOpened(submenu)\"\r\n ></ui-hover-menu>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"action.descriptor!\"\r\n [code]=\"action.code\"\r\n [disabled]=\"!!action.disabled\"\r\n (actionClick)=\"onActionClick(action)\"\r\n ></ui-action-button>\r\n }\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<ng-template #triggerTempalte>\r\n <ui-action-button\r\n [descriptor]=\"triggerAction.descriptor!\"\r\n [code]=\"triggerAction.code\"\r\n [disabled]=\"!!triggerAction.disabled\"\r\n (mouseenter)=\"openMenu($event)\"\r\n (actionClick)=\"onActionClick(triggerAction)\"\r\n [class.submenuTrigger]=\"isSubmenu\"\r\n >\r\n </ui-action-button>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;position:relative}ul,.ui-hover-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-hover-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-hover-menu ::ng-deep ui-action-button,.ui-hover-menu ::ng-deep ui-badge{width:100%}.ui-hover-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-hover-menu ui-hover-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: HoverMenuComponent, selector: "ui-hover-menu", inputs: ["triggerAction", "isSubmenu", "menuOpenDirection"], outputs: ["actionClick", "submenuOpened"] }] }); }
177
198
  }
178
199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: HoverMenuComponent, decorators: [{
179
200
  type: Component,
180
- args: [{ selector: 'ui-hover-menu', template: "@if (isSubmenu) {\r\n <div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\r\n </div>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTemplate>\r\n <ul class=\"ui-hover-menu sb4-menu-panel\">\r\n <li\r\n *ngFor=\"let action of subActions\"\r\n class=\"hoverEffect\"\r\n [class.disabled]=\"action.disabled\"\r\n (mouseenter)=\"closeSiblingSubmenus(action)\"\r\n >\r\n @if (action.subActions && action.subActions.length > 0) {\r\n <ui-hover-menu\r\n #submenu\r\n [triggerAction]=\"action\"\r\n [isSubmenu]=\"true\"\r\n [subActions]=\"action.subActions!\"\r\n [menuOpenDirection]=\"triggerAction.descriptor?.menu?.openDirection\"\r\n (actionClick)=\"actionClick.emit($event)\"\r\n (submenuOpened)=\"onSubmenuOpened(submenu)\"\r\n ></ui-hover-menu>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"action.descriptor!\"\r\n [code]=\"action.code\"\r\n [disabled]=\"!!action.disabled\"\r\n (actionClick)=\"onActionClick(action)\"\r\n ></ui-action-button>\r\n }\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<ng-template #triggerTempalte>\r\n <ui-action-button\r\n [descriptor]=\"triggerAction.descriptor!\"\r\n [code]=\"triggerAction.code\"\r\n [disabled]=\"!!triggerAction.disabled\"\r\n (mouseenter)=\"openMenu($event)\"\r\n (actionClick)=\"onActionClick(triggerAction)\"\r\n [class.submenuTrigger]=\"isSubmenu\"\r\n >\r\n </ui-action-button>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;position:relative}ul,.ui-hover-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-hover-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-hover-menu ::ng-deep ui-action-button,.ui-hover-menu ::ng-deep ui-badge{width:100%}.ui-hover-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-hover-menu ui-hover-menu{width:100%}smart-icon{align-content:center}\n"] }]
201
+ args: [{ selector: 'ui-hover-menu', template: "<div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\r\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\r\n @if (isSubmenu) {\r\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\r\n } @else {\r\n <smart-icon></smart-icon>\r\n }\r\n</div>\r\n\r\n<ng-template #menuTemplate>\r\n <ul class=\"ui-hover-menu sb4-menu-panel\">\r\n <li\r\n *ngFor=\"let action of subActions\"\r\n class=\"hoverEffect\"\r\n [class.disabled]=\"action.disabled\"\r\n (mouseenter)=\"closeSiblingSubmenus(action)\"\r\n >\r\n @if (action.subActions && action.subActions.length > 0) {\r\n <ui-hover-menu\r\n #submenu\r\n [triggerAction]=\"action\"\r\n [isSubmenu]=\"true\"\r\n [subActions]=\"action.subActions!\"\r\n [menuOpenDirection]=\"triggerAction.descriptor?.menu?.openDirection\"\r\n (actionClick)=\"actionClick.emit($event)\"\r\n (submenuOpened)=\"onSubmenuOpened(submenu)\"\r\n ></ui-hover-menu>\r\n } @else {\r\n <ui-action-button\r\n [descriptor]=\"action.descriptor!\"\r\n [code]=\"action.code\"\r\n [disabled]=\"!!action.disabled\"\r\n (actionClick)=\"onActionClick(action)\"\r\n ></ui-action-button>\r\n }\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<ng-template #triggerTempalte>\r\n <ui-action-button\r\n [descriptor]=\"triggerAction.descriptor!\"\r\n [code]=\"triggerAction.code\"\r\n [disabled]=\"!!triggerAction.disabled\"\r\n (mouseenter)=\"openMenu($event)\"\r\n (actionClick)=\"onActionClick(triggerAction)\"\r\n [class.submenuTrigger]=\"isSubmenu\"\r\n >\r\n </ui-action-button>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;position:relative}ul,.ui-hover-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-hover-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-hover-menu ::ng-deep ui-action-button,.ui-hover-menu ::ng-deep ui-badge{width:100%}.ui-hover-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-hover-menu ui-hover-menu{width:100%}smart-icon{align-content:center}\n"] }]
181
202
  }], ctorParameters: () => [{ type: i1.UiMenuService }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i2.OverlayPositionBuilder }, { type: i6.ComponentLibrary, decorators: [{
182
203
  type: Inject,
183
204
  args: [COMPONENT_LIBRARY]
@@ -206,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
206
227
  type: HostListener,
207
228
  args: ['document:click', ['$event']]
208
229
  }] } });
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvbWVudS9ob3Zlci9ob3Zlci1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy9tZW51L2hvdmVyL2hvdmVyLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFJTixTQUFTLEVBQ1QsWUFBWSxHQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7QUFPMUUsTUFBTSxPQUFPLGtCQUFrQjtJQW1CN0IsWUFDVSxXQUEwQixFQUMxQixPQUFnQixFQUNoQixnQkFBa0MsRUFDbEMsc0JBQThDLEVBQ1IsT0FBMEI7UUFKaEUsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLDJCQUFzQixHQUF0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ZnRlclZpZXdDaGVja2VkLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQ29ubmVjdGVkUG9zaXRpb24sXHJcbiAgT3ZlcmxheSxcclxuICBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxyXG4gIE92ZXJsYXlSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBNZW51T3BlbkRpcmVjdGlvbiwgVWlBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hcGknO1xyXG5pbXBvcnQgeyBVaU1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5pbXBvcnQgeyBnZXRNZW51UG9zaXRpb25zLCBnZXRTdWJtZW51UG9zaXRpb25zIH0gZnJvbSAnLi4vbWVudS5jb25zdGFudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1ob3Zlci1tZW51JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaG92ZXItbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2hvdmVyLW1lbnUuY29tcG9uZW50LmNzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb3Zlck1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZHJlbignc3VibWVudScpIHN1Ym1lbnVDb21wb25lbnRzITogUXVlcnlMaXN0PEhvdmVyTWVudUNvbXBvbmVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21lbnVUZW1wbGF0ZScpIG1lbnVUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSB0cmlnZ2VyQWN0aW9uITogVWlBY3Rpb247XHJcbiAgQElucHV0KCkgaXNTdWJtZW51OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbWVudU9wZW5EaXJlY3Rpb24/OiBNZW51T3BlbkRpcmVjdGlvbjtcclxuXHJcbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxVaUFjdGlvbj4oKTtcclxuICBAT3V0cHV0KCkgc3VibWVudU9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8VWlBY3Rpb24+KCk7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGljb24hOiBzdHJpbmc7XHJcbiAgc3VibWVudU9wZW5NYXAgPSBuZXcgTWFwPFVpQWN0aW9uLCBib29sZWFuPigpO1xyXG4gIHN1YkFjdGlvbnM6IFVpQWN0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIGhhc0NoZWNrZWRDaGlsZHJlbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IFVpTWVudVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIG92ZXJsYXlQb3NpdGlvbkJ1aWxkZXI6IE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHtcclxuICAgIHRoaXMuY29tcExpYiA9IGNvbXBMaWIgPz8gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORykge1xyXG4gICAgICB0aGlzLmljb24gPSAnY2hldnJvbi1yaWdodCc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5NQVRFUklBTCkge1xyXG4gICAgICB0aGlzLmljb24gPSAnY2hldnJvbl9yaWdodCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubWVudVNlcnZpY2VcclxuICAgICAgLmdldENsb3NlU2lnbmFsKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNsb3NlTWVudSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzT3BlbiAmJiAhdGhpcy5oYXNDaGVja2VkQ2hpbGRyZW4gJiYgdGhpcy5zdWJtZW51Q29tcG9uZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFzQ2hlY2tlZENoaWxkcmVuID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWyd0cmlnZ2VyQWN0aW9uJ10pIHtcclxuICAgICAgY29uc3QgdHJpZ2dlciA9IGNoYW5nZXNbJ3RyaWdnZXJBY3Rpb24nXS5jdXJyZW50VmFsdWUgYXMgVWlBY3Rpb247XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzVHJpZ2dlciA9IGNoYW5nZXNbJ3RyaWdnZXJBY3Rpb24nXS5wcmV2aW91c1ZhbHVlIGFzIFVpQWN0aW9uO1xyXG5cclxuICAgICAgdGhpcy5zdWJBY3Rpb25zID0gdHJpZ2dlcj8uc3ViQWN0aW9ucyA/PyBbXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiBwcmV2aW91c1RyaWdnZXIpIHtcclxuICAgICAgICBjb25zdCBoYXNTdWJBY3Rpb25zQ2hhbmdlZCA9IHRoaXMuaGFzU3ViQWN0aW9uc0NoYW5nZWQoXHJcbiAgICAgICAgICBwcmV2aW91c1RyaWdnZXI/LnN1YkFjdGlvbnMsXHJcbiAgICAgICAgICB0cmlnZ2VyPy5zdWJBY3Rpb25zXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGhhc1N1YkFjdGlvbnNDaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hPdmVybGF5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1N1YkFjdGlvbnNDaGFuZ2VkKFxyXG4gICAgb2xkU3ViQWN0aW9uczogVWlBY3Rpb25bXSB8IHVuZGVmaW5lZCxcclxuICAgIG5ld1N1YkFjdGlvbnM6IFVpQWN0aW9uW10gfCB1bmRlZmluZWRcclxuICApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG9sZExlbmd0aCA9IG9sZFN1YkFjdGlvbnM/Lmxlbmd0aCA/PyAwO1xyXG4gICAgY29uc3QgbmV3TGVuZ3RoID0gbmV3U3ViQWN0aW9ucz8ubGVuZ3RoID8/IDA7XHJcblxyXG4gICAgaWYgKG9sZExlbmd0aCAhPT0gbmV3TGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvbGRMZW5ndGggPiAwICYmIG5ld0xlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdMZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChvbGRTdWJBY3Rpb25zIVtpXS5jb2RlICE9PSBuZXdTdWJBY3Rpb25zIVtpXS5jb2RlKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25DbGljayhhY3Rpb246IFVpQWN0aW9uKSB7XHJcbiAgICBpZiAoIWFjdGlvbi5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uKTtcclxuICAgICAgdGhpcy5tZW51U2VydmljZS5jbG9zZUFsbE1lbnVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25NZW51Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlQWxsTWVudXMoKTtcclxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLm92ZXJsYXlSZWY7XHJcbiAgfVxyXG5cclxuICBjbG9zZU1lbnUoKSB7XHJcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XHJcbiAgICAgIHRoaXMuaGFzQ2hlY2tlZENoaWxkcmVuID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3VibWVudUNvbXBvbmVudHMgJiYgdGhpcy5zdWJtZW51Q29tcG9uZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc3VibWVudUNvbXBvbmVudHMuZm9yRWFjaCgoc3VibWVudSkgPT4ge1xyXG4gICAgICAgIHN1Ym1lbnUuY2xvc2VNZW51KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaE92ZXJsYXkoKSB7XHJcbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xyXG5cclxuICAgIGxldCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5tZW51VGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XHJcblxyXG4gICAgdGhpcy5oYXNDaGVja2VkQ2hpbGRyZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9wZW5NZW51KGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzU3VibWVudSkge1xyXG4gICAgICB0aGlzLnN1Ym1lbnVPcGVuZWQuZW1pdCh0aGlzLnRyaWdnZXJBY3Rpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tZW51U2VydmljZS5jbG9zZUFsbE1lbnVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRyaWdnZXJFbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHZhciBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSB0aGlzLmlzU3VibWVudVxyXG4gICAgICA/IGdldFN1Ym1lbnVQb3NpdGlvbnModGhpcy5tZW51T3BlbkRpcmVjdGlvbilcclxuICAgICAgOiBnZXRNZW51UG9zaXRpb25zKHRoaXMudHJpZ2dlckFjdGlvbj8uZGVzY3JpcHRvcj8ubWVudT8ub3BlbkRpcmVjdGlvbik7XHJcblxyXG4gICAgbGV0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlQb3NpdGlvbkJ1aWxkZXJcclxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odHJpZ2dlckVsZW1lbnQpXHJcbiAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxyXG4gICAgICAud2l0aFB1c2godHJ1ZSlcclxuICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKTtcclxuXHJcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcclxuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLm1lbnVUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcclxuICAgICAgdGhpcy5vcGVuTWVudShldmVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdWJtZW51T3BlbmVkKG9wZW5lZEFjdGlvbjogVWlBY3Rpb24pIHtcclxuICAgIGlmICghdGhpcy5zdWJtZW51Q29tcG9uZW50cyB8fCB0aGlzLnN1Ym1lbnVDb21wb25lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm9uU3VibWVudU9wZW5lZChvcGVuZWRBY3Rpb24pO1xyXG4gICAgICB9LCAwKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3VibWVudUNvbXBvbmVudHMuZm9yRWFjaCgoc3VibWVudSkgPT4ge1xyXG4gICAgICBpZiAoc3VibWVudS50cmlnZ2VyQWN0aW9uLmNvZGUgIT09IG9wZW5lZEFjdGlvbi5jb2RlICYmIHN1Ym1lbnUub3ZlcmxheVJlZikge1xyXG4gICAgICAgIHN1Ym1lbnUuY2xvc2VNZW51KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTaWJsaW5nU3VibWVudXMoZXhjZXB0QWN0aW9uOiBVaUFjdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJtZW51Q29tcG9uZW50cz8uZm9yRWFjaCgoc3VibWVudSkgPT4ge1xyXG4gICAgICBpZiAoc3VibWVudS50cmlnZ2VyQWN0aW9uLmNvZGUgIT09IGV4Y2VwdEFjdGlvbi5jb2RlICYmIHN1Ym1lbnUuaXNPcGVuKSB7XHJcbiAgICAgICAgc3VibWVudS5jbG9zZU1lbnUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoaXNTdWJtZW51KSB7XHJcbiAgPGRpdiBjbGFzcz1cInN1Ym1lbnUgaG92ZXJFZmZlY3RcIiBbY2xhc3MuYWN0aXZlU3VibWVudV09XCJpc09wZW5cIiAobW91c2VlbnRlcik9XCJvcGVuTWVudSgkZXZlbnQpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJpZ2dlclRlbXBhbHRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c21hcnQtaWNvbiBbaWNvbl09XCJpY29uXCIgY29sb3I9XCJibGFja1wiPjwvc21hcnQtaWNvbj5cclxuICA8L2Rpdj5cclxufSBAZWxzZSB7XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJUZW1wYWx0ZVwiPjwvbmctY29udGFpbmVyPlxyXG59XHJcblxyXG48bmctdGVtcGxhdGUgI21lbnVUZW1wbGF0ZT5cclxuICA8dWwgY2xhc3M9XCJ1aS1ob3Zlci1tZW51IHNiNC1tZW51LXBhbmVsXCI+XHJcbiAgICA8bGlcclxuICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBzdWJBY3Rpb25zXCJcclxuICAgICAgY2xhc3M9XCJob3ZlckVmZmVjdFwiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWRcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJjbG9zZVNpYmxpbmdTdWJtZW51cyhhY3Rpb24pXCJcclxuICAgID5cclxuICAgICAgQGlmIChhY3Rpb24uc3ViQWN0aW9ucyAmJiBhY3Rpb24uc3ViQWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgPHVpLWhvdmVyLW1lbnVcclxuICAgICAgICAgICNzdWJtZW51XHJcbiAgICAgICAgICBbdHJpZ2dlckFjdGlvbl09XCJhY3Rpb25cIlxyXG4gICAgICAgICAgW2lzU3VibWVudV09XCJ0cnVlXCJcclxuICAgICAgICAgIFtzdWJBY3Rpb25zXT1cImFjdGlvbi5zdWJBY3Rpb25zIVwiXHJcbiAgICAgICAgICBbbWVudU9wZW5EaXJlY3Rpb25dPVwidHJpZ2dlckFjdGlvbi5kZXNjcmlwdG9yPy5tZW51Py5vcGVuRGlyZWN0aW9uXCJcclxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJhY3Rpb25DbGljay5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgKHN1Ym1lbnVPcGVuZWQpPVwib25TdWJtZW51T3BlbmVkKHN1Ym1lbnUpXCJcclxuICAgICAgICA+PC91aS1ob3Zlci1tZW51PlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICAgICAgW2Rlc2NyaXB0b3JdPVwiYWN0aW9uLmRlc2NyaXB0b3IhXCJcclxuICAgICAgICAgIFtjb2RlXT1cImFjdGlvbi5jb2RlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhIWFjdGlvbi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25DbGljayhhY3Rpb24pXCJcclxuICAgICAgICA+PC91aS1hY3Rpb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RyaWdnZXJUZW1wYWx0ZT5cclxuICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgW2Rlc2NyaXB0b3JdPVwidHJpZ2dlckFjdGlvbi5kZXNjcmlwdG9yIVwiXHJcbiAgICBbY29kZV09XCJ0cmlnZ2VyQWN0aW9uLmNvZGVcIlxyXG4gICAgW2Rpc2FibGVkXT1cIiEhdHJpZ2dlckFjdGlvbi5kaXNhYmxlZFwiXHJcbiAgICAobW91c2VlbnRlcik9XCJvcGVuTWVudSgkZXZlbnQpXCJcclxuICAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbkNsaWNrKHRyaWdnZXJBY3Rpb24pXCJcclxuICAgIFtjbGFzcy5zdWJtZW51VHJpZ2dlcl09XCJpc1N1Ym1lbnVcIlxyXG4gID5cclxuICA8L3VpLWFjdGlvbi1idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2NvbXBvbmVudHMvbWVudS9ob3Zlci9ob3Zlci1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vY29tcG9uZW50cy9tZW51L2hvdmVyL2hvdmVyLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFJTixTQUFTLEVBQ1QsWUFBWSxHQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsWUFBWSxFQUdaLGtCQUFrQixHQUVuQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7OztBQU8xRSxNQUFNLE9BQU8sa0JBQWtCO0lBbUI3QixZQUNVLFdBQTBCLEVBQzFCLE9BQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxzQkFBOEMsRUFDUixPQUEwQjtRQUpoRSxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQixZQUFPLEdBQVAsT0FB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QUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWTs0QkFDeEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWTs0QkFDaEMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZO2lCQUNuQztnQkFDSCxDQUFDLENBQUU7b0JBQ0MsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE1BQU07b0JBQy9CLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7aUJBQ25DO1NBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzsrR0F0T1Usa0JBQWtCLDRJQXdCbkIsaUJBQWlCO21HQXhCaEIsa0JBQWtCLHFpQkMzQy9CLG92REFrREEsMGxERFBhLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlOzswQkE0QnRCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFBRyxRQUFRO3lDQXZCYixpQkFBaUI7c0JBQXpDLFlBQVk7dUJBQUMsU0FBUztnQkFFSSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBR2hCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQTZGUCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1qQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0NoZWNrZWQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBDb25uZWN0ZWRQb3NpdGlvbixcclxuICBPdmVybGF5LFxyXG4gIE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXHJcbiAgT3ZlcmxheVJlZixcclxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7XHJcbiAgSWNvblBvc2l0aW9uLFxyXG4gIE1lbnVPcGVuRGlyZWN0aW9uLFxyXG4gIFVpQWN0aW9uLFxyXG4gIFVpQWN0aW9uQnV0dG9uVHlwZSxcclxuICBVaUFjdGlvbkRlc2NyaXB0b3IsXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vYXBpJztcclxuaW1wb3J0IHsgVWlNZW51U2VydmljZSB9IGZyb20gJy4uL21lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IENPTVBPTkVOVF9MSUJSQVJZLCBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0eS9jb21wb25lbnRMaWJyYXJ5JztcclxuaW1wb3J0IHsgZ2V0TWVudVBvc2l0aW9ucywgZ2V0U3VibWVudVBvc2l0aW9ucyB9IGZyb20gJy4uL21lbnUuY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktaG92ZXItbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hvdmVyLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9ob3Zlci1tZW51LmNvbXBvbmVudC5jc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSG92ZXJNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3N1Ym1lbnUnKSBzdWJtZW51Q29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxIb3Zlck1lbnVDb21wb25lbnQ+O1xyXG5cclxuICBAVmlld0NoaWxkKCdtZW51VGVtcGxhdGUnKSBtZW51VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgdHJpZ2dlckFjdGlvbiE6IFVpQWN0aW9uO1xyXG4gIEBJbnB1dCgpIGlzU3VibWVudTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1lbnVPcGVuRGlyZWN0aW9uPzogTWVudU9wZW5EaXJlY3Rpb247XHJcblxyXG4gIEBPdXRwdXQoKSBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VWlBY3Rpb24+KCk7XHJcbiAgQE91dHB1dCgpIHN1Ym1lbnVPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFVpQWN0aW9uPigpO1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBpY29uITogc3RyaW5nO1xyXG4gIHN1Ym1lbnVPcGVuTWFwID0gbmV3IE1hcDxVaUFjdGlvbiwgYm9vbGVhbj4oKTtcclxuICBzdWJBY3Rpb25zOiBVaUFjdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBoYXNDaGVja2VkQ2hpbGRyZW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBVaU1lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBvdmVybGF5UG9zaXRpb25CdWlsZGVyOiBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxyXG4gICAgQEluamVjdChDT01QT05FTlRfTElCUkFSWSkgQE9wdGlvbmFsKCkgcHVibGljIGNvbXBMaWI/OiBDb21wb25lbnRMaWJyYXJ5XHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbXBMaWIgPSBjb21wTGliID8/IENvbXBvbmVudExpYnJhcnkuUFJJTUVORztcclxuXHJcbiAgICBpZiAodGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuICAgICAgdGhpcy5pY29uID0gJ2NoZXZyb24tcmlnaHQnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuTUFURVJJQUwpIHtcclxuICAgICAgdGhpcy5pY29uID0gJ2NoZXZyb25fcmlnaHQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1lbnVTZXJ2aWNlXHJcbiAgICAgIC5nZXRDbG9zZVNpZ25hbCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgIXRoaXMuaGFzQ2hlY2tlZENoaWxkcmVuICYmIHRoaXMuc3VibWVudUNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmhhc0NoZWNrZWRDaGlsZHJlbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1sndHJpZ2dlckFjdGlvbiddKSB7XHJcbiAgICAgIGNvbnN0IHRyaWdnZXIgPSBjaGFuZ2VzWyd0cmlnZ2VyQWN0aW9uJ10uY3VycmVudFZhbHVlIGFzIFVpQWN0aW9uO1xyXG4gICAgICBjb25zdCBwcmV2aW91c1RyaWdnZXIgPSBjaGFuZ2VzWyd0cmlnZ2VyQWN0aW9uJ10ucHJldmlvdXNWYWx1ZSBhcyBVaUFjdGlvbjtcclxuXHJcbiAgICAgIHRoaXMuc3ViQWN0aW9ucyA9IHRoaXMubm9ybWFsaXplU3ViQWN0aW9ucyh0cmlnZ2VyPy5zdWJBY3Rpb25zID8/IFtdKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiBwcmV2aW91c1RyaWdnZXIpIHtcclxuICAgICAgICBjb25zdCBoYXNTdWJBY3Rpb25zQ2hhbmdlZCA9IHRoaXMuaGFzU3ViQWN0aW9uc0NoYW5nZWQoXHJcbiAgICAgICAgICBwcmV2aW91c1RyaWdnZXI/LnN1YkFjdGlvbnMsXHJcbiAgICAgICAgICB0cmlnZ2VyPy5zdWJBY3Rpb25zXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoaGFzU3ViQWN0aW9uc0NoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaE92ZXJsYXkoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzU3ViQWN0aW9uc0NoYW5nZWQoXHJcbiAgICBvbGRTdWJBY3Rpb25zOiBVaUFjdGlvbltdIHwgdW5kZWZpbmVkLFxyXG4gICAgbmV3U3ViQWN0aW9uczogVWlBY3Rpb25bXSB8IHVuZGVmaW5lZFxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgb2xkTGVuZ3RoID0gb2xkU3ViQWN0aW9ucz8ubGVuZ3RoID8/IDA7XHJcbiAgICBjb25zdCBuZXdMZW5ndGggPSBuZXdTdWJBY3Rpb25zPy5sZW5ndGggPz8gMDtcclxuXHJcbiAgICBpZiAob2xkTGVuZ3RoICE9PSBuZXdMZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9sZExlbmd0aCA+IDAgJiYgbmV3TGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0xlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKG9sZFN1YkFjdGlvbnMhW2ldLmNvZGUgIT09IG5ld1N1YkFjdGlvbnMhW2ldLmNvZGUpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogVWlBY3Rpb24pIHtcclxuICAgIGlmICghYWN0aW9uLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdChhY3Rpb24pO1xyXG4gICAgICB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlQWxsTWVudXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbk1lbnVDbGljayhldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMubWVudVNlcnZpY2UuY2xvc2VBbGxNZW51cygpO1xyXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMub3ZlcmxheVJlZjtcclxuICB9XHJcblxyXG4gIGNsb3NlTWVudSgpIHtcclxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcclxuICAgICAgdGhpcy5oYXNDaGVja2VkQ2hpbGRyZW4gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zdWJtZW51Q29tcG9uZW50cyAmJiB0aGlzLnN1Ym1lbnVDb21wb25lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zdWJtZW51Q29tcG9uZW50cy5mb3JFYWNoKChzdWJtZW51KSA9PiB7XHJcbiAgICAgICAgc3VibWVudS5jbG9zZU1lbnUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWZyZXNoT3ZlcmxheSgpIHtcclxuICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XHJcblxyXG4gICAgbGV0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLm1lbnVUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcclxuXHJcbiAgICB0aGlzLmhhc0NoZWNrZWRDaGlsZHJlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb3Blbk1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdWJtZW51KSB7XHJcbiAgICAgIHRoaXMuc3VibWVudU9wZW5lZC5lbWl0KHRoaXMudHJpZ2dlckFjdGlvbik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlQWxsTWVudXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdHJpZ2dlckVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdmFyIHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IHRoaXMuaXNTdWJtZW51XHJcbiAgICAgID8gZ2V0U3VibWVudVBvc2l0aW9ucyh0aGlzLm1lbnVPcGVuRGlyZWN0aW9uKVxyXG4gICAgICA6IGdldE1lbnVQb3NpdGlvbnModGhpcy50cmlnZ2VyQWN0aW9uPy5kZXNjcmlwdG9yPy5tZW51Py5vcGVuRGlyZWN0aW9uKTtcclxuXHJcbiAgICBsZXQgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVBvc2l0aW9uQnVpbGRlclxyXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0cmlnZ2VyRWxlbWVudClcclxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXHJcbiAgICAgIC53aXRoUHVzaCh0cnVlKVxyXG4gICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xyXG5cclxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxyXG4gICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMubWVudVRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTWVudShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICB0aGlzLm9wZW5NZW51KGV2ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xvc2VNZW51KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN1Ym1lbnVPcGVuZWQob3BlbmVkQWN0aW9uOiBVaUFjdGlvbikge1xyXG4gICAgaWYgKCF0aGlzLnN1Ym1lbnVDb21wb25lbnRzIHx8IHRoaXMuc3VibWVudUNvbXBvbmVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub25TdWJtZW51T3BlbmVkKG9wZW5lZEFjdGlvbik7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJtZW51Q29tcG9uZW50cy5mb3JFYWNoKChzdWJtZW51KSA9PiB7XHJcbiAgICAgIGlmIChzdWJtZW51LnRyaWdnZXJBY3Rpb24uY29kZSAhPT0gb3BlbmVkQWN0aW9uLmNvZGUgJiYgc3VibWVudS5vdmVybGF5UmVmKSB7XHJcbiAgICAgICAgc3VibWVudS5jbG9zZU1lbnUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZVNpYmxpbmdTdWJtZW51cyhleGNlcHRBY3Rpb246IFVpQWN0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1Ym1lbnVDb21wb25lbnRzPy5mb3JFYWNoKChzdWJtZW51KSA9PiB7XHJcbiAgICAgIGlmIChzdWJtZW51LnRyaWdnZXJBY3Rpb24uY29kZSAhPT0gZXhjZXB0QWN0aW9uLmNvZGUgJiYgc3VibWVudS5pc09wZW4pIHtcclxuICAgICAgICBzdWJtZW51LmNsb3NlTWVudSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbm9ybWFsaXplU3ViQWN0aW9ucyhhY3Rpb25zOiBVaUFjdGlvbltdKTogVWlBY3Rpb25bXSB7XHJcbiAgICBjb25zdCBhbnlIYXNJY29uID0gYWN0aW9ucy5zb21lKChhKSA9PiBhLmRlc2NyaXB0b3I/Lmljb24gfHwgYS5kZXNjcmlwdG9yPy5pY29uUmVzb3VyY2UpO1xyXG5cclxuICAgIHJldHVybiBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiAoe1xyXG4gICAgICAuLi5hY3Rpb24sXHJcbiAgICAgIGRlc2NyaXB0b3I6IGFjdGlvbi5kZXNjcmlwdG9yXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIC4uLmFjdGlvbi5kZXNjcmlwdG9yLFxyXG4gICAgICAgICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuTk9STUFMLFxyXG4gICAgICAgICAgICBpY29uUG9zaXRpb246IGFueUhhc0ljb25cclxuICAgICAgICAgICAgICA/IGFjdGlvbi5kZXNjcmlwdG9yLmljb24gfHwgYWN0aW9uLmRlc2NyaXB0b3IuaWNvblJlc291cmNlXHJcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5kZXNjcmlwdG9yLmljb25Qb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgOiBJY29uUG9zaXRpb24uRU1QVFlcclxuICAgICAgICAgICAgICA6IGFjdGlvbi5kZXNjcmlwdG9yLmljb25Qb3NpdGlvbixcclxuICAgICAgICAgIH1cclxuICAgICAgICA6ICh7XHJcbiAgICAgICAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5OT1JNQUwsXHJcbiAgICAgICAgICAgIGljb25Qb3NpdGlvbjogYW55SGFzSWNvbiA/IEljb25Qb3NpdGlvbi5FTVBUWSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIH0gYXMgVWlBY3Rpb25EZXNjcmlwdG9yKSxcclxuICAgIH0pKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInN1Ym1lbnUgaG92ZXJFZmZlY3RcIiBbY2xhc3MuYWN0aXZlU3VibWVudV09XCJpc09wZW5cIiAobW91c2VlbnRlcik9XCJvcGVuTWVudSgkZXZlbnQpXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJUZW1wYWx0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gIEBpZiAoaXNTdWJtZW51KSB7XHJcbiAgICA8c21hcnQtaWNvbiBbaWNvbl09XCJpY29uXCIgY29sb3I9XCJibGFja1wiPjwvc21hcnQtaWNvbj5cclxuICB9IEBlbHNlIHtcclxuICAgIDxzbWFydC1pY29uPjwvc21hcnQtaWNvbj5cclxuICB9XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNtZW51VGVtcGxhdGU+XHJcbiAgPHVsIGNsYXNzPVwidWktaG92ZXItbWVudSBzYjQtbWVudS1wYW5lbFwiPlxyXG4gICAgPGxpXHJcbiAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygc3ViQWN0aW9uc1wiXHJcbiAgICAgIGNsYXNzPVwiaG92ZXJFZmZlY3RcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkXCJcclxuICAgICAgKG1vdXNlZW50ZXIpPVwiY2xvc2VTaWJsaW5nU3VibWVudXMoYWN0aW9uKVwiXHJcbiAgICA+XHJcbiAgICAgIEBpZiAoYWN0aW9uLnN1YkFjdGlvbnMgJiYgYWN0aW9uLnN1YkFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIDx1aS1ob3Zlci1tZW51XHJcbiAgICAgICAgICAjc3VibWVudVxyXG4gICAgICAgICAgW3RyaWdnZXJBY3Rpb25dPVwiYWN0aW9uXCJcclxuICAgICAgICAgIFtpc1N1Ym1lbnVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbc3ViQWN0aW9uc109XCJhY3Rpb24uc3ViQWN0aW9ucyFcIlxyXG4gICAgICAgICAgW21lbnVPcGVuRGlyZWN0aW9uXT1cInRyaWdnZXJBY3Rpb24uZGVzY3JpcHRvcj8ubWVudT8ub3BlbkRpcmVjdGlvblwiXHJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgIChzdWJtZW51T3BlbmVkKT1cIm9uU3VibWVudU9wZW5lZChzdWJtZW51KVwiXHJcbiAgICAgICAgPjwvdWktaG92ZXItbWVudT5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgICAgICAgIFtkZXNjcmlwdG9yXT1cImFjdGlvbi5kZXNjcmlwdG9yIVwiXHJcbiAgICAgICAgICBbY29kZV09XCJhY3Rpb24uY29kZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiISFhY3Rpb24uZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXHJcbiAgICAgICAgPjwvdWktYWN0aW9uLWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgPC9saT5cclxuICA8L3VsPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0cmlnZ2VyVGVtcGFsdGU+XHJcbiAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgIFtkZXNjcmlwdG9yXT1cInRyaWdnZXJBY3Rpb24uZGVzY3JpcHRvciFcIlxyXG4gICAgW2NvZGVdPVwidHJpZ2dlckFjdGlvbi5jb2RlXCJcclxuICAgIFtkaXNhYmxlZF09XCIhIXRyaWdnZXJBY3Rpb24uZGlzYWJsZWRcIlxyXG4gICAgKG1vdXNlZW50ZXIpPVwib3Blbk1lbnUoJGV2ZW50KVwiXHJcbiAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25DbGljayh0cmlnZ2VyQWN0aW9uKVwiXHJcbiAgICBbY2xhc3Muc3VibWVudVRyaWdnZXJdPVwiaXNTdWJtZW51XCJcclxuICA+XHJcbiAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=