@flywheel-io/vision 2.1.0-beta.1 → 2.1.0

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.
@@ -11,13 +11,13 @@ export declare class FwAvatarComponent {
11
11
  imageUrl?: string;
12
12
  imageAltText?: string;
13
13
  icon?: IconType;
14
- colorSeed: import("@angular/core").InputSignal<string>;
14
+ colorSeed: import("@angular/core").ModelSignal<string>;
15
15
  hasedColor: import("@angular/core").Signal<string>;
16
16
  colorToDisplay: import("@angular/core").Signal<string>;
17
17
  isImageBroken: boolean;
18
18
  loadImage(): void;
19
19
  errorImage(): void;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<FwAvatarComponent, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<FwAvatarComponent, "fw-avatar", never, { "color": { "alias": "color"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "content": { "alias": "content"; "required": false; }; "size": { "alias": "size"; "required": false; }; "initial": { "alias": "initial"; "required": false; }; "imageUrl": { "alias": "imageUrl"; "required": false; }; "imageAltText": { "alias": "imageAltText"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "colorSeed": { "alias": "colorSeed"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<FwAvatarComponent, "fw-avatar", never, { "color": { "alias": "color"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "content": { "alias": "content"; "required": false; }; "size": { "alias": "size"; "required": false; }; "initial": { "alias": "initial"; "required": false; }; "imageUrl": { "alias": "imageUrl"; "required": false; }; "imageAltText": { "alias": "imageAltText"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "colorSeed": { "alias": "colorSeed"; "required": false; "isSignal": true; }; }, { "colorSeed": "colorSeedChange"; }, never, never, false, never>;
22
22
  }
23
23
  export {};
@@ -1,4 +1,4 @@
1
- import { Component, computed, HostBinding, Input, input } from '@angular/core';
1
+ import { Component, computed, HostBinding, Input, model } from '@angular/core';
2
2
  import { pickColorViaHash } from '../../color.utils';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
@@ -22,7 +22,7 @@ export class FwAvatarComponent {
22
22
  this.imageUrl = '';
23
23
  this.imageAltText = '';
24
24
  this.icon = 'user';
25
- this.colorSeed = input();
25
+ this.colorSeed = model();
26
26
  this.hasedColor = computed(() => pickColorViaHash(this.colorSeed()));
27
27
  this.colorToDisplay = computed(() => this.colorSeed() ? this.hasedColor() : namedColorMap[this.color]);
28
28
  this.isImageBroken = false;
@@ -38,7 +38,7 @@ export class FwAvatarComponent {
38
38
  this.isImageBroken = true;
39
39
  }
40
40
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwAvatarComponent, selector: "fw-avatar", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, initial: { classPropertyName: "initial", publicName: "initial", isSignal: false, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: false, isRequired: false, transformFunction: null }, imageAltText: { classPropertyName: "imageAltText", publicName: "imageAltText", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, colorSeed: { classPropertyName: "colorSeed", publicName: "colorSeed", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"content\">\n <div [style.backgroundColor]=\"colorToDisplay()\" *ngSwitchCase=\"'image'\" class=\"avatar\">\n <img\n *ngIf=\"!isImageBroken else displayInitial\"\n [src]=\"imageUrl\"\n [alt]=\"imageAltText\"\n (load)=\"loadImage()\"\n (error)=\"errorImage()\">\n </div>\n <div *ngSwitchCase=\"'icon'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayIcon\"></ng-container>\n </div>\n <div *ngSwitchCase=\"'initial'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayInitial\"></ng-container>\n </div>\n</ng-container>\n<ng-template #displayInitial>\n <span class=\"initial\" *ngIf=\"initial else displayIcon\">{{ initial }}</span>\n</ng-template>\n<ng-template #displayIcon>\n <fw-icon>{{ icon }}</fw-icon>\n</ng-template>\n", styles: [":host{display:block}:host .avatar{display:flex;flex-direction:row;justify-content:center;align-items:center;width:inherit;height:inherit;border-radius:inherit;font-size:inherit}:host .avatar fw-icon{color:var(--typography-contrast);font-size:inherit}:host .avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}:host .avatar .initial{font-family:Inter,sans-serif;font-style:normal;font-weight:500;color:var(--typography-contrast);font-size:inherit}:host.small{width:16px;height:16px;font-size:8px}:host.small .avatar fw-icon{font-size:12px}:host.medium{width:32px;height:32px;font-size:14px}:host.medium .avatar fw-icon{font-size:24px}:host.large{width:48px;height:48px;font-size:22px}:host.large .avatar fw-icon{font-size:32px}:host.x-large{width:96px;height:96px;font-size:36px}:host.x-large .avatar fw-icon{font-size:64px}:host.rounded.small{border-radius:4px}:host.rounded.medium{border-radius:8px}:host.rounded.large{border-radius:12px}:host.rounded.x-large{border-radius:16px}:host.circular{border-radius:64px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwAvatarComponent, selector: "fw-avatar", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, initial: { classPropertyName: "initial", publicName: "initial", isSignal: false, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: false, isRequired: false, transformFunction: null }, imageAltText: { classPropertyName: "imageAltText", publicName: "imageAltText", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, colorSeed: { classPropertyName: "colorSeed", publicName: "colorSeed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { colorSeed: "colorSeedChange" }, host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"content\">\n <div [style.backgroundColor]=\"colorToDisplay()\" *ngSwitchCase=\"'image'\" class=\"avatar\">\n <img\n *ngIf=\"!isImageBroken else displayInitial\"\n [src]=\"imageUrl\"\n [alt]=\"imageAltText\"\n (load)=\"loadImage()\"\n (error)=\"errorImage()\">\n </div>\n <div *ngSwitchCase=\"'icon'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayIcon\"></ng-container>\n </div>\n <div *ngSwitchCase=\"'initial'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayInitial\"></ng-container>\n </div>\n</ng-container>\n<ng-template #displayInitial>\n <span class=\"initial\" *ngIf=\"initial else displayIcon\">{{ initial }}</span>\n</ng-template>\n<ng-template #displayIcon>\n <fw-icon>{{ icon }}</fw-icon>\n</ng-template>\n", styles: [":host{display:block}:host .avatar{display:flex;flex-direction:row;justify-content:center;align-items:center;width:inherit;height:inherit;border-radius:inherit;font-size:inherit}:host .avatar fw-icon{color:var(--typography-contrast);font-size:inherit}:host .avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}:host .avatar .initial{font-family:Inter,sans-serif;font-style:normal;font-weight:500;color:var(--typography-contrast);font-size:inherit}:host.small{width:16px;height:16px;font-size:8px}:host.small .avatar fw-icon{font-size:12px}:host.medium{width:32px;height:32px;font-size:14px}:host.medium .avatar fw-icon{font-size:24px}:host.large{width:48px;height:48px;font-size:22px}:host.large .avatar fw-icon{font-size:32px}:host.x-large{width:96px;height:96px;font-size:36px}:host.x-large .avatar fw-icon{font-size:64px}:host.rounded.small{border-radius:4px}:host.rounded.medium{border-radius:8px}:host.rounded.large{border-radius:12px}:host.rounded.x-large{border-radius:16px}:host.circular{border-radius:64px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] }); }
42
42
  }
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwAvatarComponent, decorators: [{
44
44
  type: Component,
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
63
63
  }], icon: [{
64
64
  type: Input
65
65
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUtyRCxNQUFNLGFBQWEsR0FBeUM7SUFDMUQsT0FBTyxFQUFFLHFCQUFxQjtJQUM5QixTQUFTLEVBQUUsdUJBQXVCO0lBQ2xDLEdBQUcsRUFBRSxpQkFBaUI7SUFDdEIsYUFBYSxFQUFFLG9CQUFvQjtJQUNuQyxLQUFLLEVBQUUsbUJBQW1CO0lBQzFCLE9BQU8sRUFBRSxvQkFBb0I7SUFDN0IsT0FBTyxFQUFFLG1CQUFtQjtDQUM3QixDQUFBO0FBTUQsTUFBTSxPQUFPLGlCQUFpQjtJQUw5QjtRQVVXLFVBQUssR0FBdUIsU0FBUyxDQUFDO1FBQ3RDLFlBQU8sR0FBdUMsVUFBVSxDQUFDO1FBQ3pELFlBQU8sR0FBa0MsTUFBTSxDQUFDO1FBQ2hELFNBQUksR0FBOEMsT0FBTyxDQUFDO1FBQzFELFlBQU8sR0FBWSxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFZLEVBQUUsQ0FBQztRQUN2QixpQkFBWSxHQUFZLEVBQUUsQ0FBQztRQUMzQixTQUFJLEdBQWMsTUFBTSxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUU1QixlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFaEUsbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVsRyxrQkFBYSxHQUFZLEtBQUssQ0FBQztLQVNoQztJQTNCQyxJQUErQixPQUFPO1FBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUFBLENBQUM7SUFrQkYsU0FBUztRQUNQLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQzsrR0EzQlUsaUJBQWlCO21HQUFqQixpQkFBaUIsMnVDQ3JCOUIsNjRCQXNCQTs7NEZERGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFdBQVc7OEJBS1UsT0FBTztzQkFBckMsV0FBVzt1QkFBQyxZQUFZO2dCQUloQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLEhvc3RCaW5kaW5nLCBJbnB1dCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgcGlja0NvbG9yVmlhSGFzaCB9IGZyb20gJy4uLy4uL2NvbG9yLnV0aWxzJztcbmltcG9ydCB7IEljb25UeXBlIH0gZnJvbSAnLi4vaWNvbi9pY29uLnR5cGVzJztcblxudHlwZSBBdmF0YXJDb2xvck9wdGlvbiA9ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ3JlZCcgfCAnbGlnaHQtc2xhdGUnIHwgJ3NsYXRlJyB8ICd3YXJuaW5nJyB8ICdzdWNjZXNzJztcblxuY29uc3QgbmFtZWRDb2xvck1hcDogeyBbSyBpbiBBdmF0YXJDb2xvck9wdGlvbl06IHN0cmluZyB9ID0ge1xuICBwcmltYXJ5OiAndmFyKC0tcHJpbWFyeS1iYXNlKScsXG4gIHNlY29uZGFyeTogJ3ZhcigtLXNlY29uZGFyeS1iYXNlKScsXG4gIHJlZDogJ3ZhcigtLXJlZC1iYXNlKScsXG4gICdsaWdodC1zbGF0ZSc6ICd2YXIoLS1zbGF0ZS1saWdodCknLFxuICBzbGF0ZTogJ3ZhcigtLXNsYXRlLWJhc2UpJyxcbiAgd2FybmluZzogJ3ZhcigtLW9yYW5nZS1iYXNlKScsXG4gIHN1Y2Nlc3M6ICd2YXIoLS1ncmVlbi1iYXNlKScsXG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy1hdmF0YXInLFxuICBzdHlsZVVybHM6IFsnLi9hdmF0YXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F2YXRhci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEZ3QXZhdGFyQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNsYXNzJykgZ2V0IGNsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW3RoaXMuc2l6ZSwgdGhpcy52YXJpYW50LCB0aGlzLmNvbnRlbnRdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gIH07XG5cbiAgQElucHV0KCkgY29sb3I/OiBBdmF0YXJDb2xvck9wdGlvbiA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgdmFyaWFudD86ICdjaXJjdWxhcicgfCAncm91bmRlZCcgfCAnc3F1YXJlJyA9ICdjaXJjdWxhcic7XG4gIEBJbnB1dCgpIGNvbnRlbnQ/OiAnaW1hZ2UnIHwgJ2ljb24nIHwgJ2luaXRpYWwnID0gJ2ljb24nO1xuICBASW5wdXQoKSBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyB8ICd4LWxhcmdlJyA9ICdzbWFsbCc7XG4gIEBJbnB1dCgpIGluaXRpYWw/OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaW1hZ2VVcmw/OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaW1hZ2VBbHRUZXh0Pzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGljb24/OiBJY29uVHlwZSA9ICd1c2VyJztcbiAgY29sb3JTZWVkID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIGhhc2VkQ29sb3IgPSBjb21wdXRlZCgoKSA9PiBwaWNrQ29sb3JWaWFIYXNoKHRoaXMuY29sb3JTZWVkKCkpKTtcblxuICBjb2xvclRvRGlzcGxheSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29sb3JTZWVkKCkgPyB0aGlzLmhhc2VkQ29sb3IoKSA6IG5hbWVkQ29sb3JNYXBbdGhpcy5jb2xvcl0pO1xuXG4gIGlzSW1hZ2VCcm9rZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBsb2FkSW1hZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ltYWdlQnJva2VuID0gZmFsc2U7XG4gIH1cblxuICBlcnJvckltYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbWFnZUJyb2tlbiA9IHRydWU7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbnRlbnRcIj5cbiAgPGRpdiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNvbG9yVG9EaXNwbGF5KClcIiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlJ1wiIGNsYXNzPVwiYXZhdGFyXCI+XG4gICAgPGltZ1xuICAgICAgKm5nSWY9XCIhaXNJbWFnZUJyb2tlbiBlbHNlIGRpc3BsYXlJbml0aWFsXCJcbiAgICAgIFtzcmNdPVwiaW1hZ2VVcmxcIlxuICAgICAgW2FsdF09XCJpbWFnZUFsdFRleHRcIlxuICAgICAgKGxvYWQpPVwibG9hZEltYWdlKClcIlxuICAgICAgKGVycm9yKT1cImVycm9ySW1hZ2UoKVwiPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjb2xvclRvRGlzcGxheSgpXCIgY2xhc3M9XCJhdmF0YXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGxheUljb25cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidpbml0aWFsJ1wiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY29sb3JUb0Rpc3BsYXkoKVwiIGNsYXNzPVwiYXZhdGFyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpc3BsYXlJbml0aWFsXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI2Rpc3BsYXlJbml0aWFsPlxuICA8c3BhbiBjbGFzcz1cImluaXRpYWxcIiAqbmdJZj1cImluaXRpYWwgZWxzZSBkaXNwbGF5SWNvblwiPnt7IGluaXRpYWwgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkaXNwbGF5SWNvbj5cbiAgPGZ3LWljb24+e3sgaWNvbiB9fTwvZnctaWNvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUtyRCxNQUFNLGFBQWEsR0FBeUM7SUFDMUQsT0FBTyxFQUFFLHFCQUFxQjtJQUM5QixTQUFTLEVBQUUsdUJBQXVCO0lBQ2xDLEdBQUcsRUFBRSxpQkFBaUI7SUFDdEIsYUFBYSxFQUFFLG9CQUFvQjtJQUNuQyxLQUFLLEVBQUUsbUJBQW1CO0lBQzFCLE9BQU8sRUFBRSxvQkFBb0I7SUFDN0IsT0FBTyxFQUFFLG1CQUFtQjtDQUM3QixDQUFBO0FBTUQsTUFBTSxPQUFPLGlCQUFpQjtJQUw5QjtRQVVXLFVBQUssR0FBdUIsU0FBUyxDQUFDO1FBQ3RDLFlBQU8sR0FBdUMsVUFBVSxDQUFDO1FBQ3pELFlBQU8sR0FBa0MsTUFBTSxDQUFDO1FBQ2hELFNBQUksR0FBOEMsT0FBTyxDQUFDO1FBQzFELFlBQU8sR0FBWSxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFZLEVBQUUsQ0FBQztRQUN2QixpQkFBWSxHQUFZLEVBQUUsQ0FBQztRQUMzQixTQUFJLEdBQWMsTUFBTSxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUU1QixlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFaEUsbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVsRyxrQkFBYSxHQUFZLEtBQUssQ0FBQztLQVNoQztJQTNCQyxJQUErQixPQUFPO1FBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUFBLENBQUM7SUFrQkYsU0FBUztRQUNQLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQzsrR0EzQlUsaUJBQWlCO21HQUFqQixpQkFBaUIsc3hDQ3JCOUIsNjRCQXNCQTs7NEZERGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFdBQVc7OEJBS1UsT0FBTztzQkFBckMsV0FBVzt1QkFBQyxZQUFZO2dCQUloQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLEhvc3RCaW5kaW5nLCBJbnB1dCwgbW9kZWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgcGlja0NvbG9yVmlhSGFzaCB9IGZyb20gJy4uLy4uL2NvbG9yLnV0aWxzJztcbmltcG9ydCB7IEljb25UeXBlIH0gZnJvbSAnLi4vaWNvbi9pY29uLnR5cGVzJztcblxudHlwZSBBdmF0YXJDb2xvck9wdGlvbiA9ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ3JlZCcgfCAnbGlnaHQtc2xhdGUnIHwgJ3NsYXRlJyB8ICd3YXJuaW5nJyB8ICdzdWNjZXNzJztcblxuY29uc3QgbmFtZWRDb2xvck1hcDogeyBbSyBpbiBBdmF0YXJDb2xvck9wdGlvbl06IHN0cmluZyB9ID0ge1xuICBwcmltYXJ5OiAndmFyKC0tcHJpbWFyeS1iYXNlKScsXG4gIHNlY29uZGFyeTogJ3ZhcigtLXNlY29uZGFyeS1iYXNlKScsXG4gIHJlZDogJ3ZhcigtLXJlZC1iYXNlKScsXG4gICdsaWdodC1zbGF0ZSc6ICd2YXIoLS1zbGF0ZS1saWdodCknLFxuICBzbGF0ZTogJ3ZhcigtLXNsYXRlLWJhc2UpJyxcbiAgd2FybmluZzogJ3ZhcigtLW9yYW5nZS1iYXNlKScsXG4gIHN1Y2Nlc3M6ICd2YXIoLS1ncmVlbi1iYXNlKScsXG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy1hdmF0YXInLFxuICBzdHlsZVVybHM6IFsnLi9hdmF0YXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F2YXRhci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEZ3QXZhdGFyQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNsYXNzJykgZ2V0IGNsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW3RoaXMuc2l6ZSwgdGhpcy52YXJpYW50LCB0aGlzLmNvbnRlbnRdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gIH07XG5cbiAgQElucHV0KCkgY29sb3I/OiBBdmF0YXJDb2xvck9wdGlvbiA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgdmFyaWFudD86ICdjaXJjdWxhcicgfCAncm91bmRlZCcgfCAnc3F1YXJlJyA9ICdjaXJjdWxhcic7XG4gIEBJbnB1dCgpIGNvbnRlbnQ/OiAnaW1hZ2UnIHwgJ2ljb24nIHwgJ2luaXRpYWwnID0gJ2ljb24nO1xuICBASW5wdXQoKSBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyB8ICd4LWxhcmdlJyA9ICdzbWFsbCc7XG4gIEBJbnB1dCgpIGluaXRpYWw/OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaW1hZ2VVcmw/OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaW1hZ2VBbHRUZXh0Pzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGljb24/OiBJY29uVHlwZSA9ICd1c2VyJztcbiAgY29sb3JTZWVkID0gbW9kZWw8c3RyaW5nPigpO1xuXG4gIGhhc2VkQ29sb3IgPSBjb21wdXRlZCgoKSA9PiBwaWNrQ29sb3JWaWFIYXNoKHRoaXMuY29sb3JTZWVkKCkpKTtcblxuICBjb2xvclRvRGlzcGxheSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29sb3JTZWVkKCkgPyB0aGlzLmhhc2VkQ29sb3IoKSA6IG5hbWVkQ29sb3JNYXBbdGhpcy5jb2xvcl0pO1xuXG4gIGlzSW1hZ2VCcm9rZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBsb2FkSW1hZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ltYWdlQnJva2VuID0gZmFsc2U7XG4gIH1cblxuICBlcnJvckltYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbWFnZUJyb2tlbiA9IHRydWU7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbnRlbnRcIj5cbiAgPGRpdiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNvbG9yVG9EaXNwbGF5KClcIiAqbmdTd2l0Y2hDYXNlPVwiJ2ltYWdlJ1wiIGNsYXNzPVwiYXZhdGFyXCI+XG4gICAgPGltZ1xuICAgICAgKm5nSWY9XCIhaXNJbWFnZUJyb2tlbiBlbHNlIGRpc3BsYXlJbml0aWFsXCJcbiAgICAgIFtzcmNdPVwiaW1hZ2VVcmxcIlxuICAgICAgW2FsdF09XCJpbWFnZUFsdFRleHRcIlxuICAgICAgKGxvYWQpPVwibG9hZEltYWdlKClcIlxuICAgICAgKGVycm9yKT1cImVycm9ySW1hZ2UoKVwiPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjb2xvclRvRGlzcGxheSgpXCIgY2xhc3M9XCJhdmF0YXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGxheUljb25cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidpbml0aWFsJ1wiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY29sb3JUb0Rpc3BsYXkoKVwiIGNsYXNzPVwiYXZhdGFyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpc3BsYXlJbml0aWFsXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI2Rpc3BsYXlJbml0aWFsPlxuICA8c3BhbiBjbGFzcz1cImluaXRpYWxcIiAqbmdJZj1cImluaXRpYWwgZWxzZSBkaXNwbGF5SWNvblwiPnt7IGluaXRpYWwgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkaXNwbGF5SWNvbj5cbiAgPGZ3LWljb24+e3sgaWNvbiB9fTwvZnctaWNvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -39,7 +39,7 @@ export class FwMenuContainerComponent {
39
39
  this.emptyText = input('No results');
40
40
  this.filteredMenuItemChange = output();
41
41
  this.defaultFilterFn = (filter, menuItems) => {
42
- return menuItems.filter(menuItem => menuItem.title.toLowerCase().includes(filter.toLowerCase()));
42
+ return menuItems?.filter(menuItem => menuItem.title?.toLowerCase().includes(filter?.toLowerCase()));
43
43
  };
44
44
  this.filterFn = input(this.defaultFilterFn);
45
45
  this.filterChanged = output();
@@ -123,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
123
123
  type: HostBinding,
124
124
  args: ['style']
125
125
  }] } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbWVudS9tZW51LWNvbnRhaW5lci9tZW51LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tZW51L21lbnUtY29udGFpbmVyL21lbnUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBRUwsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osZUFBZSxFQUNmLFdBQVcsRUFDWCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7QUFRdkUsTUFBTSxPQUFPLHdCQUF3QjtJQXNDbkMsSUFBK0IsT0FBTztRQUNwQyxPQUFPO1lBQ0wsbUJBQW1CO1lBQ25CLGlCQUFpQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzlCLFVBQVUsSUFBSSxDQUFDLE1BQU0sRUFBRTtTQUN4QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLENBQUM7SUFBQSxDQUFDO0lBRUYsSUFBMEIsS0FBSztRQUM3QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUM7ZUFDcEMsSUFBSSxDQUFDLEtBQUs7b0JBQ0wsSUFBSSxDQUFDLFNBQVM7b0JBQ2QsSUFBSSxDQUFDLFNBQVM7b0JBQ2QsSUFBSSxDQUFDLE1BQU07S0FDMUIsQ0FBQyxDQUFDO0lBQ0ws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RXlCLE9BQU87c0JBQXJDLFdBQVc7dUJBQUMsWUFBWTtnQkFRQyxLQUFLO3NCQUE5QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBDb250ZW50Q2hpbGQsXG4gIGNvbnRlbnRDaGlsZHJlbixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlU3R5bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgRndUZXh0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi90ZXh0LWlucHV0L3RleHQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3TWVudUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3TWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9tZW51LWl0ZW0vbWVudS1pdGVtLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LW1lbnUtY29udGFpbmVyLCBmdy1tZW51LWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lbnUtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEZ3TWVudUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIEBJbnB1dCgpIHdpZHRoPzogc3RyaW5nID0gJ2luaGVyaXQnO1xuICBASW5wdXQoKSBtYXhIZWlnaHQ/OiBzdHJpbmcgPSAnYXV0byc7XG4gIEBJbnB1dCgpIG1pbkhlaWdodD86IHN0cmluZyA9ICdhdXRvJztcbiAgQElucHV0KCkgYm9yZGVyPzogJ25vbmUnIHwgJ2RlZmF1bHQnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBzaGFkb3c/OiAnbm9uZScgfCAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJ2V4dHJhLWxhcmdlJyB8ICdpbm5lcicgPSAnbGFyZ2UnO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWw6IEJvb2xlYW5JbnB1dCkgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbCkgfSkgc2hvd0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBmaWx0ZXJUZXh0Pzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbDogQm9vbGVhbklucHV0KSA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSB9KSBmb2N1c0ZpbHRlck9uTW91bnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgb2Zmc2V0Pzogc3RyaW5nID0gJzBweCc7XG4gIGVtcHR5VGV4dCA9IGlucHV0KCdObyByZXN1bHRzJylcblxuICBmaWx0ZXJlZE1lbnVJdGVtczogRndNZW51SXRlbUNvbXBvbmVudFtdO1xuICBmaWx0ZXJlZE1lbnVJdGVtQ2hhbmdlID0gb3V0cHV0PEZ3TWVudUl0ZW1Db21wb25lbnRbXT4oKTtcblxuICBwcml2YXRlIGRlZmF1bHRGaWx0ZXJGbiA9IChmaWx0ZXI6IHN0cmluZywgbWVudUl0ZW1zOiBGd01lbnVJdGVtQ29tcG9uZW50W10pOiBGd01lbnVJdGVtQ29tcG9uZW50W10gPT4ge1xuICAgIHJldHVybiBtZW51SXRlbXMuZmlsdGVyKG1lbnVJdGVtID0+IG1lbnVJdGVtLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyLnRvTG93ZXJDYXNlKCkpKTtcbiAgfVxuXG4gIGZpbHRlckZuID0gaW5wdXQodGhpcy5kZWZhdWx0RmlsdGVyRm4pO1xuXG4gIGZpbHRlckNoYW5nZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICBAVmlld0NoaWxkKCdtZW51RmlsdGVyJykgZmlsdGVyUmVmOiBGd1RleHRJbnB1dENvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKEZ3TWVudUNvbXBvbmVudCkgbWVudTogRndNZW51Q29tcG9uZW50O1xuXG4gIC8vIGZvciBwYXNzaW5nIG1lbnUgaXRlbXMgZm9yIHRoZSBjb250YWluZXIgdG8gZmlsdGVyXG4gIC8vIHdvcmtzIGFyb3VuZCBhIHByb2JsZW0gd2l0aCBuZXN0ZWQgY29udGVudCBjaGlsZHJlblxuICAvLyBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzYyODg2NjEzL2FuZ3VsYXItOS1uZXN0ZWQtbmctY29udGVudC1hbmQtY29udGVudGNoaWxkcmVuXG4gIGFkZGl0aW9uYWxNZW51SXRlbXMgPSBpbnB1dDxGd01lbnVJdGVtQ29tcG9uZW50W10+KFtdKTtcbiAgY2hpbGRNZW51SXRlbXMgPSBjb250ZW50Q2hpbGRyZW4oRndNZW51SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBjb21iaW5lZE1lbnVJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gWy4uLnRoaXMuY2hpbGRNZW51SXRlbXMoKSwgLi4udGhpcy5hZGRpdGlvbmFsTWVudUl0ZW1zKCldO1xuICB9KTtcblxuICBASW5wdXQoKSBrZXlIYW5kbGVyOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNsYXNzJykgZ2V0IGNsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2Z3LW1lbnUtY29udGFpbmVyJyxcbiAgICAgIGB2aXNpb24tc2hhZG93LSR7dGhpcy5zaGFkb3d9YCxcbiAgICAgIGBib3JkZXItJHt0aGlzLmJvcmRlcn1gLFxuICAgIF0uam9pbignICcpO1xuICB9O1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUnKSBnZXQgc3R5bGUoKTogU2FmZVN0eWxlIHtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKGBcbiAgICAgIHdpZHRoOiAke3RoaXMud2lkdGh9O1xuICAgICAgbWF4LWhlaWdodDogJHt0aGlzLm1heEhlaWdodH07XG4gICAgICBtaW4taGVpZ2h0OiAke3RoaXMubWluSGVpZ2h0fTtcbiAgICAgIG1hcmdpbi10b3A6ICR7dGhpcy5vZmZzZXR9O1xuICAgIGApO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9jdXNGaWx0ZXJPbk1vdW50ICYmIHRoaXMuc2hvd0ZpbHRlcikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL3ByZWZlci1uby1sYXlvdXQtc2Vuc2l0aXZlLWFwaXNcbiAgICAgIHRoaXMuZmlsdGVyUmVmPy5mb2N1cygpO1xuICAgIH1cblxuICAgIC8vIHdlIG5lZWQgdG8gcnVuIHRoZSBmaWx0ZXIgb24gaW5pdCBpbiBjYXNlIHRoZSBjdXN0b20gZmlsdGVyIGlzIGZpbHRlcmluZyB0aGluZ3NcbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKCcnKTtcbiAgfVxuXG4gIG5vUmVzdWx0cyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgaGFuZGxlRmlsdGVyQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZHtcbiAgICAvLyBzdG9wcyBmaWx0ZXJzIGluIG1lbnVzIGZyb20gY2xvc2luZyB0aGUgcGFyZW50IG1lbnVcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGhhbmRsZUZpbHRlcklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSBpbnB1dC52YWx1ZTtcbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKGZpbHRlclZhbHVlKTtcbiAgfVxuXG4gIG9uRmlsdGVyQ2hhbmdlKGZpbHRlcjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYWxsTWVudUl0ZW1zID0gdGhpcy5jb21iaW5lZE1lbnVJdGVtcygpO1xuXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VkLmVtaXQoZmlsdGVyKTtcbiAgICBjb25zdCBmaWx0ZXJGbiA9IHRoaXMuZmlsdGVyRm4oKTtcblxuICAgIHRoaXMuZmlsdGVyZWRNZW51SXRlbXMgPSBmaWx0ZXJGbihmaWx0ZXIsIGFsbE1lbnVJdGVtcyk7XG5cbiAgICBhbGxNZW51SXRlbXMuZm9yRWFjaChtZW51SXRlbSA9PiB7XG4gICAgICBjb25zdCBzaG91bGRCZUhpZGRlbiA9ICF0aGlzLmZpbHRlcmVkTWVudUl0ZW1zLmluY2x1ZGVzKG1lbnVJdGVtKTtcbiAgICAgIG1lbnVJdGVtLmhpZGRlbiA9IHNob3VsZEJlSGlkZGVuO1xuICAgIH0pXG5cbiAgICB0aGlzLm5vUmVzdWx0cy5zZXQoYWxsTWVudUl0ZW1zLmV2ZXJ5KGl0ZW0gPT4gaXRlbS5oaWRkZW4pKTtcblxuICAgIHRoaXMuZmlsdGVyZWRNZW51SXRlbUNoYW5nZS5lbWl0KHRoaXMuZmlsdGVyZWRNZW51SXRlbXMpO1xuICB9XG59XG4iLCI8ZGl2ICNmaWx0ZXJCb3ggKm5nSWY9XCJzaG93RmlsdGVyXCIgY2xhc3M9XCJmaWx0ZXItYm94XCIgY2RrTWVudUJhcj5cbiAgPGZ3LXRleHQtaW5wdXRcbiAgICAoY2xpY2spPVwiaGFuZGxlRmlsdGVyQ2xpY2soJGV2ZW50KVwiXG4gICAgI21lbnVGaWx0ZXJcbiAgICAoa2V5ZG93bik9XCJrZXlIYW5kbGVyPy4oJGV2ZW50KVwiXG4gICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIiBsZWZ0SWNvbj1cInNlYXJjaFwiIGF1dG9mb2N1c1xuICAgIFt2YWx1ZV09XCJmaWx0ZXJUZXh0XCIgKGlucHV0KT1cImhhbmRsZUZpbHRlcklucHV0KCRldmVudClcIj5cbiAgPC9mdy10ZXh0LWlucHV0PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuZmlsdGVyLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtZW51LXdyYXBwZXJcIj5cbiAgPGZ3LW1lbnUtaXRlbSAqbmdJZj1cIm5vUmVzdWx0cygpXCIgW3RpdGxlXT1cImVtcHR5VGV4dCgpXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2Z3LW1lbnUtaXRlbT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJjdXN0b20tbWVudS1pdGVtc1wiPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbWVudS9tZW51LWNvbnRhaW5lci9tZW51LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tZW51L21lbnUtY29udGFpbmVyL21lbnUtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBRUwsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osZUFBZSxFQUNmLFdBQVcsRUFDWCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7QUFRdkUsTUFBTSxPQUFPLHdCQUF3QjtJQXNDbkMsSUFBK0IsT0FBTztRQUNwQyxPQUFPO1lBQ0wsbUJBQW1CO1lBQ25CLGlCQUFpQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzlCLFVBQVUsSUFBSSxDQUFDLE1BQU0sRUFBRTtTQUN4QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLENBQUM7SUFBQSxDQUFDO0lBRUYsSUFBMEIsS0FBSztRQUM3QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUM7ZUFDcEMsSUFBSSxDQUFDLEtBQUs7b0JBQ0wsSUFBSSxDQUFDLFNBQVM7b0JBQ2QsSUFBSSxDQUFDLFNBQVM7b0JBQ2QsSUFBSSxDQUFDLE1BQU07S0FDMUIsQ0FBQyxDQUFDO0lBQ0ws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RXlCLE9BQU87c0JBQXJDLFdBQVc7dUJBQUMsWUFBWTtnQkFRQyxLQUFLO3NCQUE5QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBDb250ZW50Q2hpbGQsXG4gIGNvbnRlbnRDaGlsZHJlbixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlU3R5bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgRndUZXh0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi90ZXh0LWlucHV0L3RleHQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3TWVudUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3TWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9tZW51LWl0ZW0vbWVudS1pdGVtLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LW1lbnUtY29udGFpbmVyLCBmdy1tZW51LWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lbnUtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEZ3TWVudUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIEBJbnB1dCgpIHdpZHRoPzogc3RyaW5nID0gJ2luaGVyaXQnO1xuICBASW5wdXQoKSBtYXhIZWlnaHQ/OiBzdHJpbmcgPSAnYXV0byc7XG4gIEBJbnB1dCgpIG1pbkhlaWdodD86IHN0cmluZyA9ICdhdXRvJztcbiAgQElucHV0KCkgYm9yZGVyPzogJ25vbmUnIHwgJ2RlZmF1bHQnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBzaGFkb3c/OiAnbm9uZScgfCAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJ2V4dHJhLWxhcmdlJyB8ICdpbm5lcicgPSAnbGFyZ2UnO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWw6IEJvb2xlYW5JbnB1dCkgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbCkgfSkgc2hvd0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBmaWx0ZXJUZXh0Pzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbDogQm9vbGVhbklucHV0KSA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSB9KSBmb2N1c0ZpbHRlck9uTW91bnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgb2Zmc2V0Pzogc3RyaW5nID0gJzBweCc7XG4gIGVtcHR5VGV4dCA9IGlucHV0KCdObyByZXN1bHRzJylcblxuICBmaWx0ZXJlZE1lbnVJdGVtczogRndNZW51SXRlbUNvbXBvbmVudFtdO1xuICBmaWx0ZXJlZE1lbnVJdGVtQ2hhbmdlID0gb3V0cHV0PEZ3TWVudUl0ZW1Db21wb25lbnRbXT4oKTtcblxuICBwcml2YXRlIGRlZmF1bHRGaWx0ZXJGbiA9IChmaWx0ZXI6IHN0cmluZywgbWVudUl0ZW1zOiBGd01lbnVJdGVtQ29tcG9uZW50W10pOiBGd01lbnVJdGVtQ29tcG9uZW50W10gPT4ge1xuICAgIHJldHVybiBtZW51SXRlbXM/LmZpbHRlcihtZW51SXRlbSA9PiBtZW51SXRlbS50aXRsZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXI/LnRvTG93ZXJDYXNlKCkpKTtcbiAgfVxuXG4gIGZpbHRlckZuID0gaW5wdXQodGhpcy5kZWZhdWx0RmlsdGVyRm4pO1xuXG4gIGZpbHRlckNoYW5nZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICBAVmlld0NoaWxkKCdtZW51RmlsdGVyJykgZmlsdGVyUmVmOiBGd1RleHRJbnB1dENvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKEZ3TWVudUNvbXBvbmVudCkgbWVudTogRndNZW51Q29tcG9uZW50O1xuXG4gIC8vIGZvciBwYXNzaW5nIG1lbnUgaXRlbXMgZm9yIHRoZSBjb250YWluZXIgdG8gZmlsdGVyXG4gIC8vIHdvcmtzIGFyb3VuZCBhIHByb2JsZW0gd2l0aCBuZXN0ZWQgY29udGVudCBjaGlsZHJlblxuICAvLyBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzYyODg2NjEzL2FuZ3VsYXItOS1uZXN0ZWQtbmctY29udGVudC1hbmQtY29udGVudGNoaWxkcmVuXG4gIGFkZGl0aW9uYWxNZW51SXRlbXMgPSBpbnB1dDxGd01lbnVJdGVtQ29tcG9uZW50W10+KFtdKTtcbiAgY2hpbGRNZW51SXRlbXMgPSBjb250ZW50Q2hpbGRyZW4oRndNZW51SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBjb21iaW5lZE1lbnVJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gWy4uLnRoaXMuY2hpbGRNZW51SXRlbXMoKSwgLi4udGhpcy5hZGRpdGlvbmFsTWVudUl0ZW1zKCldO1xuICB9KTtcblxuICBASW5wdXQoKSBrZXlIYW5kbGVyOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNsYXNzJykgZ2V0IGNsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2Z3LW1lbnUtY29udGFpbmVyJyxcbiAgICAgIGB2aXNpb24tc2hhZG93LSR7dGhpcy5zaGFkb3d9YCxcbiAgICAgIGBib3JkZXItJHt0aGlzLmJvcmRlcn1gLFxuICAgIF0uam9pbignICcpO1xuICB9O1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUnKSBnZXQgc3R5bGUoKTogU2FmZVN0eWxlIHtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKGBcbiAgICAgIHdpZHRoOiAke3RoaXMud2lkdGh9O1xuICAgICAgbWF4LWhlaWdodDogJHt0aGlzLm1heEhlaWdodH07XG4gICAgICBtaW4taGVpZ2h0OiAke3RoaXMubWluSGVpZ2h0fTtcbiAgICAgIG1hcmdpbi10b3A6ICR7dGhpcy5vZmZzZXR9O1xuICAgIGApO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9jdXNGaWx0ZXJPbk1vdW50ICYmIHRoaXMuc2hvd0ZpbHRlcikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL3ByZWZlci1uby1sYXlvdXQtc2Vuc2l0aXZlLWFwaXNcbiAgICAgIHRoaXMuZmlsdGVyUmVmPy5mb2N1cygpO1xuICAgIH1cblxuICAgIC8vIHdlIG5lZWQgdG8gcnVuIHRoZSBmaWx0ZXIgb24gaW5pdCBpbiBjYXNlIHRoZSBjdXN0b20gZmlsdGVyIGlzIGZpbHRlcmluZyB0aGluZ3NcbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKCcnKTtcbiAgfVxuXG4gIG5vUmVzdWx0cyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgaGFuZGxlRmlsdGVyQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZHtcbiAgICAvLyBzdG9wcyBmaWx0ZXJzIGluIG1lbnVzIGZyb20gY2xvc2luZyB0aGUgcGFyZW50IG1lbnVcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGhhbmRsZUZpbHRlcklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSBpbnB1dC52YWx1ZTtcbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKGZpbHRlclZhbHVlKTtcbiAgfVxuXG4gIG9uRmlsdGVyQ2hhbmdlKGZpbHRlcjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYWxsTWVudUl0ZW1zID0gdGhpcy5jb21iaW5lZE1lbnVJdGVtcygpO1xuXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VkLmVtaXQoZmlsdGVyKTtcbiAgICBjb25zdCBmaWx0ZXJGbiA9IHRoaXMuZmlsdGVyRm4oKTtcblxuICAgIHRoaXMuZmlsdGVyZWRNZW51SXRlbXMgPSBmaWx0ZXJGbihmaWx0ZXIsIGFsbE1lbnVJdGVtcyk7XG5cbiAgICBhbGxNZW51SXRlbXMuZm9yRWFjaChtZW51SXRlbSA9PiB7XG4gICAgICBjb25zdCBzaG91bGRCZUhpZGRlbiA9ICF0aGlzLmZpbHRlcmVkTWVudUl0ZW1zLmluY2x1ZGVzKG1lbnVJdGVtKTtcbiAgICAgIG1lbnVJdGVtLmhpZGRlbiA9IHNob3VsZEJlSGlkZGVuO1xuICAgIH0pXG5cbiAgICB0aGlzLm5vUmVzdWx0cy5zZXQoYWxsTWVudUl0ZW1zLmV2ZXJ5KGl0ZW0gPT4gaXRlbS5oaWRkZW4pKTtcblxuICAgIHRoaXMuZmlsdGVyZWRNZW51SXRlbUNoYW5nZS5lbWl0KHRoaXMuZmlsdGVyZWRNZW51SXRlbXMpO1xuICB9XG59XG4iLCI8ZGl2ICNmaWx0ZXJCb3ggKm5nSWY9XCJzaG93RmlsdGVyXCIgY2xhc3M9XCJmaWx0ZXItYm94XCIgY2RrTWVudUJhcj5cbiAgPGZ3LXRleHQtaW5wdXRcbiAgICAoY2xpY2spPVwiaGFuZGxlRmlsdGVyQ2xpY2soJGV2ZW50KVwiXG4gICAgI21lbnVGaWx0ZXJcbiAgICAoa2V5ZG93bik9XCJrZXlIYW5kbGVyPy4oJGV2ZW50KVwiXG4gICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIiBsZWZ0SWNvbj1cInNlYXJjaFwiIGF1dG9mb2N1c1xuICAgIFt2YWx1ZV09XCJmaWx0ZXJUZXh0XCIgKGlucHV0KT1cImhhbmRsZUZpbHRlcklucHV0KCRldmVudClcIj5cbiAgPC9mdy10ZXh0LWlucHV0PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuZmlsdGVyLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtZW51LXdyYXBwZXJcIj5cbiAgPGZ3LW1lbnUtaXRlbSAqbmdJZj1cIm5vUmVzdWx0cygpXCIgW3RpdGxlXT1cImVtcHR5VGV4dCgpXCIgW2Rpc2FibGVkXT1cInRydWVcIj48L2Z3LW1lbnUtaXRlbT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJjdXN0b20tbWVudS1pdGVtc1wiPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
@@ -159,10 +159,10 @@ export class FwMultiSelectMenuComponent {
159
159
  }
160
160
  registerCustomMenuItems() {
161
161
  // first filter any menuItems we've already registered as options
162
- const newMenuItems = this.customMenuItems.filter(menuItem => !this.options.find(option => menuItem.value === option.value));
162
+ const newMenuItems = this.customMenuItems?.filter(menuItem => !this.options.find(option => menuItem.value === option.value));
163
163
  newMenuItems.forEach((newMenuItem) => {
164
164
  // sync render settings
165
- this.customMenuItems.forEach(menuItem => {
165
+ this.customMenuItems?.forEach(menuItem => {
166
166
  menuItem.showCheckbox = this.useCheckbox;
167
167
  menuItem.multiSelect = true;
168
168
  });
@@ -268,7 +268,7 @@ export class FwMultiSelectMenuComponent {
268
268
  }
269
269
  postSelectSideEffects() {
270
270
  this.menuFilter()?.onFilterChange('');
271
- this.customMenuItems.forEach(menuItem => {
271
+ this.customMenuItems?.forEach(menuItem => {
272
272
  menuItem.selected = this.value.includes(menuItem.value);
273
273
  });
274
274
  if (this.closeOnSelect) {
@@ -365,4 +365,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
365
365
  type: HostListener,
366
366
  args: ['keydown', ['$event']]
367
367
  }] } });
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsTUFBTSxFQUVOLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFFTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7QUFFL0U7OztHQUdHO0FBYUgsTUFBTSxPQUFPLDBCQUEwQjtJQUNMLFlBQVk7UUFDMUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsT0FB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MkJBQTJCLENBQUM7NEJBQ3pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOytHQUcrQixZQUFZO3NCQUEzQyxZQUFZO3VCQUFDLGdCQUFnQjtnQkFXckIsT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBUUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUdxQixPQUFPO3NCQUFqQyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0csSUFBSTtzQkFBL0IsU0FBUzt1QkFBQyxlQUFlO2dCQUVTLGlCQUFpQjtzQkFBbkQsWUFBWTt1QkFBQyxtQkFBbUI7Z0JBQzRCLGVBQWU7c0JBQTNFLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQWVqRCxNQUFNO3NCQUFmLE1BQU07Z0JBR0gsS0FBSztzQkFEUixLQUFLO2dCQWdCbUIsUUFBUTtzQkFBaEMsV0FBVzt1QkFBQyxVQUFVO2dCQUNjLGFBQWE7c0JBQWpELFdBQVc7dUJBQUMsc0JBQXNCO2dCQXNPbkMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDZGtNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9tZW51JztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBpbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRndNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbWVudS9tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGd01lbnVDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tZW51L21lbnUtY29udGFpbmVyL21lbnUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGd01lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbWVudS9tZW51LWl0ZW0vbWVudS1pdGVtLmNvbXBvbmVudCc7XG5cbi8qKlxuICogRndNdWx0aVNlbGVjdCBhIGNvbXBvbmVudCBmb3Igc2VsZWN0aW5nIG11bHRpcGxlIG9wdGlvbnNcbiAqIEBzZWUgW1N0b3J5Ym9vayBEb2NzXShodHRwczovL2Nkbi5mbHl3aGVlbC5pby9kb2NzL3Zpc2lvbi9tYXN0ZXIvP3BhdGg9L2RvY3MvZm9ybS1jb250cm9scy1tdWx0aS1zZWxlY3QtLWRvY3MpXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LW11bHRpLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1zZWxlY3QtbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpLXNlbGVjdC1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRndNdWx0aVNlbGVjdE1lbnVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRndNdWx0aVNlbGVjdE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snKSBvdXRzaWRlQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzT3Blbikge1xuICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJpZ2dlciAmJiB0aGlzLnRyaWdnZXIuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gb3B0aW9uc1xuICBASW5wdXQoKSBvcHRpb25zOiBvYmplY3RbXSA9IFtdO1xuICBASW5wdXQoKSB2YWx1ZVByb3BlcnR5Pzogc3RyaW5nID0gJ3ZhbHVlJztcbiAgQElucHV0KCkgdGl0bGVQcm9wZXJ0eT86IHN0cmluZyA9ICd0aXRsZSc7XG4gIEBJbnB1dCgpIGljb25Qcm9wZXJ0eT86IHN0cmluZyA9ICdpY29uJztcblxuXG4gIC8vIGJlaGF2aW91clxuICBASW5wdXQoKSBlbXB0eVRleHQ6IHN0cmluZyA9ICdObyBtYXRjaGVzIGZvdW5kLi4uJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3Qgc29tZXRoaW5nLi4uJztcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHVzZUNoZWNrYm94PzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjbG9zZU9uU2VsZWN0PzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIG1heFNlbGVjdGVkU2hvd246IG51bWJlciA9IDEwMDtcblxuICBzaG93Q2xlYXIgPSBpbnB1dChmYWxzZSk7XG4gIHNob3dGaWx0ZXIgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogKHZhbDogQm9vbGVhbklucHV0KSA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSB9KTtcbiAgc2hvd1NlbGVjdGlvbkluZm8gPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06ICh2YWw6IEJvb2xlYW5JbnB1dCkgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbCkgfSk7XG4gIGZpbHRlckl0ZW1zT25TZWxlY3QgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogKHZhbDogQm9vbGVhbklucHV0KSA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSB9KTtcblxuICAvLyBzaXppbmdcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcyMDBweCc7XG4gIEBJbnB1dCgpIG1pbkhlaWdodDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcbiAgQElucHV0KCkgb3B0aW9uc1dpZHRoPzogc3RyaW5nO1xuICBASW5wdXQoKSBtaW5PcHRpb25zSGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBtYXhPcHRpb25zSGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdtZWRpdW0nO1xuXG4gIC8vIHZpZXcgY2hpbGRyZW5cbiAgQFZpZXdDaGlsZChDZGtNZW51VHJpZ2dlcikgdHJpZ2dlcjogQ2RrTWVudVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoRndNZW51Q29tcG9uZW50KSBtZW51OiBGd01lbnVDb21wb25lbnQ7XG4gIG1lbnVGaWx0ZXIgPSB2aWV3Q2hpbGQoRndNZW51Q29udGFpbmVyQ29tcG9uZW50KTtcbiAgQFZpZXdDaGlsZHJlbihGd01lbnVJdGVtQ29tcG9uZW50KSByZW5kZXJlZE1lbnVJdGVtczogUXVlcnlMaXN0PEZ3TWVudUl0ZW1Db21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKEZ3TWVudUl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY3VzdG9tTWVudUl0ZW1zOiBRdWVyeUxpc3Q8RndNZW51SXRlbUNvbXBvbmVudD47XG5cbiAgLy8gbmVlZCB0aGlzIGZvciB0aGUgdGVtcGxhdGVcbiAgY3JlYXRlQXJyYXkgPSAoZDogSXRlcmFibGU8dW5rbm93bj4pOiB1bmtub3duW10gPT4gQXJyYXkuZnJvbShkKTtcblxuICAvLyBpbnRlcm5hbCBzdGF0ZVxuICBzZWxlY3RlZFZhbHVlczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG4gIHNlbGVjdGVkT3B0aW9uczogb2JqZWN0W10gPSBbXTtcbiAgZGlzcGxheWVkT3B0aW9uczogV3JpdGFibGVTaWduYWw8RndNZW51SXRlbUNvbXBvbmVudFtdPiA9IHNpZ25hbChbXSk7XG4gIGZvY3VzZWRJbmRleCA9IHNpZ25hbCgwKTtcbiAgdG91Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUobmV3VmFsdWU6IGFueVtdKSB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF92YWx1ZTogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICkge31cblxuICBASG9zdEJpbmRpbmcoJ3RhYkluZGV4JykgdGFiSW5kZXggPSAwO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnBvaW50ZXItZXZlbnRzJykgcG9pbnRlckV2ZW50cyA9ICdhdXRvJztcblxuICBvbkNoYW5nZTogKHZhbHVlOiBhbnlbXSkgPT4gdm9pZDtcbiAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgdGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3RlckN1c3RvbU1lbnVJdGVtcygpXG5cbiAgICB0aGlzLmN1c3RvbU1lbnVJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyQ3VzdG9tTWVudUl0ZW1zKCk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJDdXN0b21NZW51SXRlbXMoKTogdm9pZCB7XG4gICAgLy8gZmlyc3QgZmlsdGVyIGFueSBtZW51SXRlbXMgd2UndmUgYWxyZWFkeSByZWdpc3RlcmVkIGFzIG9wdGlvbnNcbiAgICBjb25zdCBuZXdNZW51SXRlbXMgPSB0aGlzLmN1c3RvbU1lbnVJdGVtcy5maWx0ZXIoXG4gICAgICBtZW51SXRlbSA9PiAhdGhpcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IG1lbnVJdGVtLnZhbHVlID09PSAob3B0aW9uIGFzIGFueSkudmFsdWUpLFxuICAgIClcblxuICAgIG5ld01lbnVJdGVtcy5mb3JFYWNoKChuZXdNZW51SXRlbSkgPT4ge1xuXG4gICAgICAvLyBzeW5jIHJlbmRlciBzZXR0aW5nc1xuICAgICAgdGhpcy5jdXN0b21NZW51SXRlbXMuZm9yRWFjaChtZW51SXRlbSA9PiB7XG4gICAgICAgIG1lbnVJdGVtLnNob3dDaGVja2JveCA9IHRoaXMudXNlQ2hlY2tib3g7XG4gICAgICAgIG1lbnVJdGVtLm11bHRpU2VsZWN0ID0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBhZGQgaXQgdG8gdGhlIG9wdGlvbnNcbiAgICAgIC8vIGEgbG90IG9mIG91ciB2YWx1ZSBoYW5kbGluZyBsb2dpYyByZWxpZXMgb25cbiAgICAgIGNvbnN0IG5ld09wdGlvbiA9IHtcbiAgICAgICAgdmFsdWU6IG5ld01lbnVJdGVtLnZhbHVlLFxuICAgICAgICB0aXRsZTogbmV3TWVudUl0ZW0udGl0bGUsXG4gICAgICAgIGljb246IG5ld01lbnVJdGVtLmljb24sXG4gICAgICB9XG4gICAgICB0aGlzLm9wdGlvbnMucHVzaChuZXdPcHRpb24pO1xuXG4gICAgICBuZXdNZW51SXRlbS5tb3VzZUVudGVySGFuZGxlci5zZXQoKGV2ZW50LCBpdGVtKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNlZEluZGV4KGl0ZW0pO1xuICAgICAgfSlcblxuICAgICAgLy8gYWRkIGNsaWNrIGxpc3RlbmVyXG4gICAgICBjb25zdCBzdWIgPSBuZXdNZW51SXRlbS5jbGljay5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLmFkZFZhbHVlKHZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3ViKTtcbiAgICB9KVxuICB9XG5cbiAgaGFuZGxlVG91Y2hlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICB9XG5cbiAgaGFuZGxlQ2hpcENsb3NlKGNoaXA6IG9iamVjdCk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1ZhbHVlcyA9IHRoaXMudmFsdWUuZmlsdGVyKHZhbCA9PiB2YWwgIT09IGNoaXBbdGhpcy52YWx1ZVByb3BlcnR5XSk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZXMpO1xuICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICB9XG5cbiAgLy8gaGFuZGxlcyB0aGUgdmFsdWUgZW1pc3Npb24gZnJvbSB0aGUgbWVudVxuICAvLyBUT0RPOiBtYWtlIG1lbnUgYSBkdW1iIGNvbXBvbmVudCwgaXQgc2hvdWxkbid0IGJlIGhhbmRsaW5nIHZhbHVlcyBpZGVhbGx5XG4gIGhhbmRsZU1lbnVDaGFuZ2UoZTogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlKSkge1xuICAgICAgaWYgKGUudG9TdHJpbmcoKSAhPT0gdGhpcy5zZWxlY3RlZFZhbHVlcy50b1N0cmluZygpKSB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVWYWx1ZShlKTtcbiAgICB9XG4gIH1cblxuXG4gIC8vIGFkZHMgYSBzaW5nbGUgdmFsdWVcbiAgYWRkVmFsdWUoaW5jb21pbmc6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGFscmVhZHlTZWxlY3RlZCA9IHRoaXMudmFsdWUuaW5jbHVkZXMoaW5jb21pbmcpO1xuXG4gICAgaWYgKGFscmVhZHlTZWxlY3RlZCkge1xuICAgICAgY29uc3Qgc3BsaWNlZE91dCA9IHRoaXMudmFsdWUudG9TcGxpY2VkKHRoaXMudmFsdWUuaW5kZXhPZihpbmNvbWluZyksIDEpO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZShzcGxpY2VkT3V0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKFsuLi50aGlzLnZhbHVlLCBpbmNvbWluZ10pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGhhbmRsZXMgYWxsIHRoZSBkaXNwbGF5IHNpZGUgZWZmZWN0cyBvZiBhIHZhbHVlIGNoYW5nZVxuICB1cGRhdGVWYWx1ZShpbmNvbWluZ1ZhbHVlczogYW55W10pOiB2b2lkIHtcblxuICAgIGlmICghaW5jb21pbmdWYWx1ZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLmNsZWFyKCk7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcblxuICAgIGluY29taW5nVmFsdWVzLmZvckVhY2goaW5jb21pbmcgPT4ge1xuXG4gICAgICBpZiAodHlwZW9mIGluY29taW5nID09PSAnb2JqZWN0Jykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLmFkZChpbmNvbWluZ1t0aGlzLnZhbHVlUHJvcGVydHldKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaChpbmNvbWluZyk7XG5cbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5hZGQoaW5jb21pbmcpO1xuXG4gICAgICAgIGNvbnN0IGluY29taW5nTWFwcGVkVG9PcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZChvcHQgPT4gb3B0W3RoaXMudmFsdWVQcm9wZXJ0eV0gPT09IGluY29taW5nKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaChpbmNvbWluZ01hcHBlZFRvT3B0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbHVlID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkVmFsdWVzKTtcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICAgIHRoaXMucG9zdFNlbGVjdFNpZGVFZmZlY3RzKCk7XG4gIH1cblxuICAvLyBjdXN0b20gZmlsdGVyIGZvciBoYW5kbGluZyBmaWx0ZXJPblNlbGVjdFxuICBjdXN0b21GaWx0ZXIgPSAoZmlsdGVyOiBzdHJpbmcsIG1lbnVJdGVtczogRndNZW51SXRlbUNvbXBvbmVudFtdKTogRndNZW51SXRlbUNvbXBvbmVudFtdID0+IHtcbiAgICByZXR1cm4gbWVudUl0ZW1zLmZpbHRlcihtZW51SXRlbSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJNYXRjaGVzID0gbWVudUl0ZW0udGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXIudG9Mb3dlckNhc2UoKSk7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy52YWx1ZS5pbmNsdWRlcyhtZW51SXRlbS52YWx1ZSk7XG4gICAgICBjb25zdCBmaWx0ZXJCZWNhdXNlU2VsZWN0ZWQgPSBpc1NlbGVjdGVkICYmIHRoaXMuZmlsdGVySXRlbXNPblNlbGVjdCgpO1xuXG4gICAgICByZXR1cm4gZmlsdGVyTWF0Y2hlcyAmJiAhZmlsdGVyQmVjYXVzZVNlbGVjdGVkO1xuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIG1vdmVGb2N1c2VkKGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmRpc3BsYXllZE9wdGlvbnMoKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9jdXNlZEluZGV4KCk7XG5cbiAgICBjb25zdCBjbGFtcEluZGV4ID0gKG46IG51bWJlcik6IG51bWJlciA9PiB7XG4gICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKG4gPj0gb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4Q2hhbmdlID0gZGlyZWN0aW9uID09PSAndXAnID8gLTEgOiAxO1xuXG4gICAgY29uc3QgbmV3SW5kZXggPSBjbGFtcEluZGV4KGluZGV4ICsgaW5kZXhDaGFuZ2UpO1xuICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldChuZXdJbmRleCk7XG5cbiAgICBjb25zdCBuZXdseUZvY3VzZWQgPSB0aGlzLmRpc3BsYXllZE9wdGlvbnMoKVt0aGlzLmZvY3VzZWRJbmRleCgpXTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAcngtYW5ndWxhci9wcmVmZXItbm8tbGF5b3V0LXNlbnNpdGl2ZS1hcGlzXG4gICAgbmV3bHlGb2N1c2VkLnNjcm9sbEludG9WaWV3KCk7XG4gIH1cblxuICBzZXRGb2N1c2VkSW5kZXgoaXRlbTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IGZvdW5kSW5kZXggPSB0aGlzLmRpc3BsYXllZE9wdGlvbnMoKS5maW5kSW5kZXgoaSA9PiBpLnZhbHVlID09PSBpdGVtW3RoaXMudmFsdWVQcm9wZXJ0eV0pO1xuICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldChmb3VuZEluZGV4KTtcbiAgfVxuXG4gIGRpc3BsYXlGb2N1c0luZGljYXRvciA9IGVmZmVjdCgoKSA9PiB7XG4gICAgdGhpcy5kaXNwbGF5ZWRPcHRpb25zKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGl0ZW0uZm9jdXNlZCA9IGluZGV4ID09PSB0aGlzLmZvY3VzZWRJbmRleCgpO1xuICAgIH0pXG4gIH0pXG5cbiAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uLCBAcngtYW5ndWxhci9wcmVmZXItbm8tbGF5b3V0LXNlbnNpdGl2ZS1hcGlzICovXG4gIHByaXZhdGUga2V5Ym9hcmRBY3Rpb25NYXAgPSB7XG4gICAgJ0Fycm93RG93bic6ICgpID0+IHtcbiAgICAgIHRoaXMubW92ZUZvY3VzZWQoJ2Rvd24nKTtcbiAgICB9LFxuICAgICdBcnJvd1VwJzogKCkgPT4ge1xuICAgICAgdGhpcy5tb3ZlRm9jdXNlZCgndXAnKTtcbiAgICB9LFxuICAgICdUYWInOiAoKSA9PiB7XG4gICAgICB0aGlzLnRyaWdnZXIuY2xvc2UoKTtcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfSxcbiAgICAnRXNjYXBlJzogKCkgPT4ge1xuICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH0sXG4gICAgJ0VudGVyJzogKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRNZW51SXRlbSA9IHRoaXMuZGlzcGxheWVkT3B0aW9ucygpW3RoaXMuZm9jdXNlZEluZGV4KCldO1xuXG4gICAgICBpZiAoIXNlbGVjdGVkTWVudUl0ZW0pIHsgcmV0dXJuIH1cblxuICAgICAgdGhpcy5hZGRWYWx1ZShzZWxlY3RlZE1lbnVJdGVtLnZhbHVlKTtcbiAgICAgIHRoaXMucG9zdFNlbGVjdFNpZGVFZmZlY3RzKCk7XG4gICAgfSxcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VkVHJpZ2dlcktleWJvYXJkQWN0aW9uc01hcCA9IHtcbiAgICAnRW50ZXInOiAoKSA9PiB7XG4gICAgICB0aGlzLnRyaWdnZXIub3BlbigpO1xuICAgIH0sXG4gICAgJ0JhY2tzcGFjZSc6ICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy52YWx1ZS50b1NwbGljZWQoLTEpKTtcbiAgICB9LFxuICB9XG4gIC8qIGVzbGludC1lbmFibGUgKi9cblxuICAvLyBuZWVkcyB0byBiZSBhbiBhcnJvdyBmdW5jdGlvbiB0byBsb2NrIHRoZSBzY29wZVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT57XG5cbiAgICBjb25zdCBoYW5kbGVyID0gdGhpcy50cmlnZ2VyLmlzT3BlbigpID8gdGhpcy5rZXlib2FyZEFjdGlvbk1hcFtldmVudC5rZXldIDogdGhpcy5jbG9zZWRUcmlnZ2VyS2V5Ym9hcmRBY3Rpb25zTWFwW2V2ZW50LmtleV07XG5cbiAgICBpZiAoaGFuZGxlcikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGhhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBvc3RTZWxlY3RTaWRlRWZmZWN0cygpOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVGaWx0ZXIoKT8ub25GaWx0ZXJDaGFuZ2UoJycpO1xuXG4gICAgdGhpcy5jdXN0b21NZW51SXRlbXMuZm9yRWFjaChtZW51SXRlbSA9PiB7XG4gICAgICBtZW51SXRlbS5zZWxlY3RlZCA9IHRoaXMudmFsdWUuaW5jbHVkZXMobWVudUl0ZW0udmFsdWUpO1xuICAgIH0pXG5cbiAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAcngtYW5ndWxhci9wcmVmZXItbm8tbGF5b3V0LXNlbnNpdGl2ZS1hcGlzXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9LCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudHJpZ2dlci5vcGVuKCk7XG4gICAgICB9LCAwKTtcblxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBbbmdTdHlsZV09XCJ7d2lkdGg6IHdpZHRofVwiICN3cmFwcGVyPlxuXG4gIDxkaXZcbiAgICBmd01lbnVSZWdpc3RlclxuICAgIGNsYXNzPVwiY2hpcC1ncmlkXCJcbiAgICBbbmdDbGFzc109XCJbc2l6ZV1cIlxuICAgIFtuZ1N0eWxlXT1cInsgbWluSGVpZ2h0OiBtaW5IZWlnaHQsIG1heEhlaWdodDogbWF4SGVpZ2h0IH1cIlxuICAgIFtjZGtNZW51VHJpZ2dlckZvcl09XCJzZWxlY3RNZW51XCI+XG4gICAgPHNwYW4gKm5nSWY9XCJ2YWx1ZS5sZW5ndGggPT09IDBcIiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9zcGFuPlxuXG4gICAgPCEtLSBDSElQUyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiaW5uZXItY2hpcC1ncmlkXCIgKm5nSWY9XCJ2YWx1ZSAmJiB2YWx1ZS5sZW5ndGg+MFwiPlxuICAgICAgPGZ3LWNoaXBcbiAgICAgICAgKm5nRm9yPVwibGV0IGNoaXAgb2Ygc2VsZWN0ZWRPcHRpb25zIHwgc2xpY2U6MDptYXhTZWxlY3RlZFNob3duXCJcbiAgICAgICAgW3RpdGxlXT1cImNoaXBbdGl0bGVQcm9wZXJ0eV1cIlxuICAgICAgICBbdmFsdWVdPVwiY2hpcFt2YWx1ZVByb3BlcnR5XVwiXG4gICAgICAgIFtpY29uXT1cImNoaXBbaWNvblByb3BlcnR5XVwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIFtzaG93Q2xvc2VdPVwidHJ1ZVwiXG4gICAgICAgIChjbG9zZSk9XCJoYW5kbGVDaGlwQ2xvc2UoY2hpcClcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiPlxuICAgICAgPC9mdy1jaGlwPlxuICAgICAgPHNwYW4gKm5nSWY9XCJtYXhTZWxlY3RlZFNob3duID09PSAwICYmIHZhbHVlLmxlbmd0aCA+IDBcIiBjbGFzcz1cInNlbGVjdGVkLXRleHRcIj5cbiAgICAgICAge3sgdmFsdWUubGVuZ3RoIH19IHNlbGVjdGVkXG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cInZhbHVlLmxlbmd0aCA+IG1heFNlbGVjdGVkU2hvd24gJiYgbWF4U2VsZWN0ZWRTaG93biA+IDBcIiBjbGFzcz1cIm1heC1leGNlZWRlZFwiPlxuICAgICAgICAre3sgdmFsdWUubGVuZ3RoIC0gbWF4U2VsZWN0ZWRTaG93biB9fSBtb3JlXG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZnctaWNvbiAqbmdJZj1cInNob3dDbGVhcigpICYmIHZhbHVlLmxlbmd0aCA+IDBcIiAoY2xpY2spPVwidXBkYXRlVmFsdWUoW10pXCI+Y2xvc2U8L2Z3LWljb24+XG4gICAgPGZ3LWljb24+Y2hldnJvbi1kb3duPC9mdy1pY29uPlxuICA8L2Rpdj5cblxuICA8IS0tIE1FTlUgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjc2VsZWN0TWVudT5cbiAgICA8ZnctbWVudS1maWx0ZXJcbiAgICAgIFtrZXlIYW5kbGVyXT1cImhhbmRsZUtleURvd25cIlxuICAgICAgW3Nob3dGaWx0ZXJdPVwic2hvd0ZpbHRlcigpXCJcbiAgICAgIFtmb2N1c0ZpbHRlck9uTW91bnRdPVwic2hvd0ZpbHRlcigpXCJcbiAgICAgIFt3aWR0aF09XCJvcHRpb25zV2lkdGggfHwgKHdyYXBwZXIub2Zmc2V0V2lkdGggLSAyKSArICdweCdcIlxuICAgICAgW2FkZGl0aW9uYWxNZW51SXRlbXNdPVwidGhpcy5jdXN0b21NZW51SXRlbXNcIlxuICAgICAgW2VtcHR5VGV4dF09XCJlbXB0eVRleHRcIlxuICAgICAgW21heEhlaWdodF09XCJtYXhPcHRpb25zSGVpZ2h0XCJcbiAgICAgIFttaW5IZWlnaHRdPVwibWluT3B0aW9uc0hlaWdodFwiXG4gICAgICBbZmlsdGVyRm5dPVwiY3VzdG9tRmlsdGVyXCJcbiAgICAgIChmaWx0ZXJlZE1lbnVJdGVtQ2hhbmdlKT1cImRpc3BsYXllZE9wdGlvbnMuc2V0KCRldmVudClcIlxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jb250ZW50XCIgKm5nSWY9XCJzaG93U2VsZWN0aW9uSW5mbygpXCI+XG4gICAgICAgIDxwPnt7dmFsdWUubGVuZ3RofX0gc2VsZWN0aW9uczwvcD5cbiAgICAgICAgPGZ3LWJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiAoY2xpY2spPVwidXBkYXRlVmFsdWUoW10pXCI+Q2xlYXI8L2Z3LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGZ3LW1lbnVcbiAgICAgICAgW211bHRpU2VsZWN0XT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbdmFsdWVdPVwiY3JlYXRlQXJyYXkoc2VsZWN0ZWRWYWx1ZXMpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVNZW51Q2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbU1lbnVJdGVtcy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICA8ZnctbWVudS1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zOyBpbmRleCBhcyAkaW5kZXhcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bdGl0bGVQcm9wZXJ0eV1cIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1bdmFsdWVQcm9wZXJ0eV1cIlxuICAgICAgICAgICAgW2ljb25dPVwiaXRlbVtpY29uUHJvcGVydHldXCJcbiAgICAgICAgICAgIFttdWx0aVNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJ2YWx1ZS5pbmNsdWRlcyhpdGVtW3ZhbHVlUHJvcGVydHldKVwiXG4gICAgICAgICAgICBbc2hvd0NoZWNrYm94XT1cInVzZUNoZWNrYm94XCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInNldEZvY3VzZWRJbmRleChpdGVtKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvZnctbWVudS1pdGVtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRlbnQgbmdQcm9qZWN0QXM9XCJjdXN0b20tbWVudS1pdGVtc1wiIHNlbGVjdD1cIltmdy1tZW51LWl0ZW0sIGZ3LW1lbnUtc2VwYXJhdG9yLCBmdy1tZW51LWl0ZW0tZ3JvdXAsIGZ3LW1lbnUtaGVhZGVyXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZnctbWVudT5cbiAgICA8L2Z3LW1lbnUtZmlsdGVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUvbXVsdGktc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsTUFBTSxFQUVOLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFFTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7QUFFL0U7OztHQUdHO0FBYUgsTUFBTSxPQUFPLDBCQUEwQjtJQUNMLFlBQVk7UUFDMUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQXFERCxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLFFBQWU7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBSUQsWUFDWSxrQkFBcUMsRUFDdkMsVUFBc0I7UUFEcEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUN2QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBaEVoQyxVQUFVO1FBQ0QsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUN2QixrQkFBYSxHQUFZLE9BQU8sQ0FBQztRQUNqQyxrQkFBYSxHQUFZLE9BQU8sQ0FBQztRQUNqQyxpQkFBWSxHQUFZLE1BQU0sQ0FBQztRQUd4QyxZQUFZO1FBQ0gsY0FBUyxHQUFXLHFCQUFxQixDQUFDO1FBQzFDLGdCQUFXLEdBQVcscUJBQXFCLENBQUM7UUFDNUMsYUFBUSxHQUFhLEtBQUssQ0FBQztRQUMzQixnQkFBVyxHQUFhLEtBQUssQ0FBQztRQUM5QixrQkFBYSxHQUFhLElBQUksQ0FBQztRQUMvQixxQkFBZ0IsR0FBVyxHQUFHLENBQUM7UUFFeEMsY0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixlQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQWlCLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzRixzQkFBaUIsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBaUIsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25HLHdCQUFtQixHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFpQixFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEcsU0FBUztRQUNBLFVBQUssR0FBVyxPQUFPLENBQUM7UUFDeEIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixjQUFTLEdBQVcsT0FBTyxDQUFDO1FBSTVCLFNBQUksR0FBa0MsUUFBUSxDQUFDO1FBS3hELGVBQVUsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUlqRCw2QkFBNkI7UUFDN0IsZ0JBQVcsR0FBRyxDQUFDLENBQW9CLEVBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakUsaUJBQWlCO1FBQ2pCLG1CQUFjLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDeEMsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFDL0IscUJBQWdCLEdBQTBDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ1Isa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFeEIsNERBQTREO1FBQ2xELFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBV25DLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFPRixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ0Qsa0JBQWEsR0FBRyxNQUFNLENBQUM7UUFHNUQsY0FBUyxHQUFHLEdBQVMsRUFBRSxHQUFFLENBQUMsQ0FBQztRQTZJM0IsNENBQTRDO1FBQzVDLGlCQUFZLEdBQUcsQ0FBQyxNQUFjLEVBQUUsU0FBZ0MsRUFBeUIsRUFBRTtZQUN6RixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2pDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZELE1BQU0scUJBQXFCLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUV2RSxPQUFPLGFBQWEsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFBO1FBaUNELDBCQUFxQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtRQUVGLHNHQUFzRztRQUM5RixzQkFBaUIsR0FBRztZQUMxQixXQUFXLEVBQUUsR0FBRyxFQUFFO2dCQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEMsQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEMsQ0FBQztZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ1osTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztnQkFFdEUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQUMsT0FBTTtnQkFBQyxDQUFDO2dCQUVqQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvQixDQUFDO1NBQ0YsQ0FBQTtRQUVPLG9DQUErQixHQUFHO1lBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0QixDQUFDO1lBQ0QsV0FBVyxFQUFFLEdBQUcsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUE7UUFDRCxtQkFBbUI7UUFFbkIsa0RBQWtEO1FBRWxELGtCQUFhLEdBQUcsQ0FBQyxLQUFvQixFQUFRLEVBQUU7WUFFN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUU1SCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1FBQ0gsQ0FBQyxDQUFBO0lBalBFLENBQUM7SUFRSixnQkFBZ0IsQ0FBQyxFQUEwQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFZO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsS0FBSyxNQUFNLFlBQVksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO1FBRTlCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDMUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLGlFQUFpRTtRQUNqRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FDL0MsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBTSxNQUFjLENBQUMsS0FBSyxDQUFDLENBQ25GLENBQUE7UUFFRCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFFbkMsdUJBQXVCO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN2QyxRQUFRLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ3pDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQzlCLENBQUMsQ0FBQyxDQUFDO1lBRUgsd0JBQXdCO1lBQ3hCLDhDQUE4QztZQUM5QyxNQUFNLFNBQVMsR0FBRztnQkFDaEIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO2dCQUN4QixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7Z0JBQ3hCLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSTthQUN2QixDQUFBO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFN0IsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQTtZQUVGLHFCQUFxQjtZQUNyQixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFckIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVk7UUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLDRFQUE0RTtJQUM1RSxnQkFBZ0IsQ0FBQyxDQUFXO1FBQzFCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUdELHNCQUFzQjtJQUN0QixRQUFRLENBQUMsUUFBZ0I7UUFDdkIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEQsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9CLENBQUM7YUFDSSxDQUFDO1lBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRUQseURBQXlEO0lBQ3pELFdBQVcsQ0FBQyxjQUFxQjtRQUUvQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBRTFCLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFFaEMsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV0QyxDQUFDO2lCQUFNLENBQUM7Z0JBRU4sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRWxDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDO2dCQUM5RixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBYU8sV0FBVyxDQUFDLFNBQXdCO1FBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVsQyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQVMsRUFBVSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNWLE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDNUIsQ0FBQztpQkFDSSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztZQUVELE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFBO1FBRUQsTUFBTSxXQUFXLEdBQUcsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRWxFLHVFQUF1RTtRQUN2RSxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFhO1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUF3RE8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdkMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JCLHVFQUF1RTtnQkFDdkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ1IsQ0FBQzthQUFNLENBQUM7WUFDTixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRVIsQ0FBQztJQUNILENBQUM7K0dBbFZVLDBCQUEwQjttR0FBMUIsMEJBQTBCLHF3R0FSMUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO2dCQUN6RCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMERBK0NnQixtQkFBbUIsNEZBRmIsd0JBQXdCLDBGQUZwQyxjQUFjLHVFQUNkLGVBQWUsdUVBRVosbUJBQW1CLGdEQzVGbkMsbzNGQTJFQTs7NEZEM0JhLDBCQUEwQjtrQkFadEMsU0FBUzsrQkFDRSxpQkFBaUIsYUFHaEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7NEJBQ3pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOytHQUcrQixZQUFZO3NCQUEzQyxZQUFZO3VCQUFDLGdCQUFnQjtnQkFXckIsT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBUUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUdxQixPQUFPO3NCQUFqQyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0csSUFBSTtzQkFBL0IsU0FBUzt1QkFBQyxlQUFlO2dCQUVTLGlCQUFpQjtzQkFBbkQsWUFBWTt1QkFBQyxtQkFBbUI7Z0JBQzRCLGVBQWU7c0JBQTNFLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQWVqRCxNQUFNO3NCQUFmLE1BQU07Z0JBR0gsS0FBSztzQkFEUixLQUFLO2dCQWdCbUIsUUFBUTtzQkFBaEMsV0FBVzt1QkFBQyxVQUFVO2dCQUNjLGFBQWE7c0JBQWpELFdBQVc7dUJBQUMsc0JBQXNCO2dCQXNPbkMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDZGtNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9tZW51JztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBpbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRndNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbWVudS9tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGd01lbnVDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tZW51L21lbnUtY29udGFpbmVyL21lbnUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGd01lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbWVudS9tZW51LWl0ZW0vbWVudS1pdGVtLmNvbXBvbmVudCc7XG5cbi8qKlxuICogRndNdWx0aVNlbGVjdCBhIGNvbXBvbmVudCBmb3Igc2VsZWN0aW5nIG11bHRpcGxlIG9wdGlvbnNcbiAqIEBzZWUgW1N0b3J5Ym9vayBEb2NzXShodHRwczovL2Nkbi5mbHl3aGVlbC5pby9kb2NzL3Zpc2lvbi9tYXN0ZXIvP3BhdGg9L2RvY3MvZm9ybS1jb250cm9scy1tdWx0aS1zZWxlY3QtLWRvY3MpXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LW11bHRpLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1zZWxlY3QtbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpLXNlbGVjdC1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRndNdWx0aVNlbGVjdE1lbnVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRndNdWx0aVNlbGVjdE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snKSBvdXRzaWRlQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzT3Blbikge1xuICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJpZ2dlciAmJiB0aGlzLnRyaWdnZXIuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gb3B0aW9uc1xuICBASW5wdXQoKSBvcHRpb25zOiBvYmplY3RbXSA9IFtdO1xuICBASW5wdXQoKSB2YWx1ZVByb3BlcnR5Pzogc3RyaW5nID0gJ3ZhbHVlJztcbiAgQElucHV0KCkgdGl0bGVQcm9wZXJ0eT86IHN0cmluZyA9ICd0aXRsZSc7XG4gIEBJbnB1dCgpIGljb25Qcm9wZXJ0eT86IHN0cmluZyA9ICdpY29uJztcblxuXG4gIC8vIGJlaGF2aW91clxuICBASW5wdXQoKSBlbXB0eVRleHQ6IHN0cmluZyA9ICdObyBtYXRjaGVzIGZvdW5kLi4uJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3Qgc29tZXRoaW5nLi4uJztcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHVzZUNoZWNrYm94PzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjbG9zZU9uU2VsZWN0PzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIG1heFNlbGVjdGVkU2hvd246IG51bWJlciA9IDEwMDtcblxuICBzaG93Q2xlYXIgPSBpbnB1dChmYWxzZSk7XG4gIHNob3dGaWx0ZXIgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogKHZhbDogQm9vbGVhbklucHV0KSA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSB9KTtcbiAgc2hvd1NlbGVjdGlvbkluZm8gPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06ICh2YWw6IEJvb2xlYW5JbnB1dCkgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbCkgfSk7XG4gIGZpbHRlckl0ZW1zT25TZWxlY3QgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogKHZhbDogQm9vbGVhbklucHV0KSA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKSB9KTtcblxuICAvLyBzaXppbmdcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcyMDBweCc7XG4gIEBJbnB1dCgpIG1pbkhlaWdodDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcbiAgQElucHV0KCkgb3B0aW9uc1dpZHRoPzogc3RyaW5nO1xuICBASW5wdXQoKSBtaW5PcHRpb25zSGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBtYXhPcHRpb25zSGVpZ2h0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdtZWRpdW0nO1xuXG4gIC8vIHZpZXcgY2hpbGRyZW5cbiAgQFZpZXdDaGlsZChDZGtNZW51VHJpZ2dlcikgdHJpZ2dlcjogQ2RrTWVudVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoRndNZW51Q29tcG9uZW50KSBtZW51OiBGd01lbnVDb21wb25lbnQ7XG4gIG1lbnVGaWx0ZXIgPSB2aWV3Q2hpbGQoRndNZW51Q29udGFpbmVyQ29tcG9uZW50KTtcbiAgQFZpZXdDaGlsZHJlbihGd01lbnVJdGVtQ29tcG9uZW50KSByZW5kZXJlZE1lbnVJdGVtczogUXVlcnlMaXN0PEZ3TWVudUl0ZW1Db21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKEZ3TWVudUl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY3VzdG9tTWVudUl0ZW1zOiBRdWVyeUxpc3Q8RndNZW51SXRlbUNvbXBvbmVudD47XG5cbiAgLy8gbmVlZCB0aGlzIGZvciB0aGUgdGVtcGxhdGVcbiAgY3JlYXRlQXJyYXkgPSAoZDogSXRlcmFibGU8dW5rbm93bj4pOiB1bmtub3duW10gPT4gQXJyYXkuZnJvbShkKTtcblxuICAvLyBpbnRlcm5hbCBzdGF0ZVxuICBzZWxlY3RlZFZhbHVlczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG4gIHNlbGVjdGVkT3B0aW9uczogb2JqZWN0W10gPSBbXTtcbiAgZGlzcGxheWVkT3B0aW9uczogV3JpdGFibGVTaWduYWw8RndNZW51SXRlbUNvbXBvbmVudFtdPiA9IHNpZ25hbChbXSk7XG4gIGZvY3VzZWRJbmRleCA9IHNpZ25hbCgwKTtcbiAgdG91Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUobmV3VmFsdWU6IGFueVtdKSB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF92YWx1ZTogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICkge31cblxuICBASG9zdEJpbmRpbmcoJ3RhYkluZGV4JykgdGFiSW5kZXggPSAwO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnBvaW50ZXItZXZlbnRzJykgcG9pbnRlckV2ZW50cyA9ICdhdXRvJztcblxuICBvbkNoYW5nZTogKHZhbHVlOiBhbnlbXSkgPT4gdm9pZDtcbiAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgdGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3RlckN1c3RvbU1lbnVJdGVtcygpXG5cbiAgICB0aGlzLmN1c3RvbU1lbnVJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyQ3VzdG9tTWVudUl0ZW1zKCk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJDdXN0b21NZW51SXRlbXMoKTogdm9pZCB7XG4gICAgLy8gZmlyc3QgZmlsdGVyIGFueSBtZW51SXRlbXMgd2UndmUgYWxyZWFkeSByZWdpc3RlcmVkIGFzIG9wdGlvbnNcbiAgICBjb25zdCBuZXdNZW51SXRlbXMgPSB0aGlzLmN1c3RvbU1lbnVJdGVtcz8uZmlsdGVyKFxuICAgICAgbWVudUl0ZW0gPT4gIXRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBtZW51SXRlbS52YWx1ZSA9PT0gKG9wdGlvbiBhcyBhbnkpLnZhbHVlKSxcbiAgICApXG5cbiAgICBuZXdNZW51SXRlbXMuZm9yRWFjaCgobmV3TWVudUl0ZW0pID0+IHtcblxuICAgICAgLy8gc3luYyByZW5kZXIgc2V0dGluZ3NcbiAgICAgIHRoaXMuY3VzdG9tTWVudUl0ZW1zPy5mb3JFYWNoKG1lbnVJdGVtID0+IHtcbiAgICAgICAgbWVudUl0ZW0uc2hvd0NoZWNrYm94ID0gdGhpcy51c2VDaGVja2JveDtcbiAgICAgICAgbWVudUl0ZW0ubXVsdGlTZWxlY3QgPSB0cnVlO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIGFkZCBpdCB0byB0aGUgb3B0aW9uc1xuICAgICAgLy8gYSBsb3Qgb2Ygb3VyIHZhbHVlIGhhbmRsaW5nIGxvZ2ljIHJlbGllcyBvblxuICAgICAgY29uc3QgbmV3T3B0aW9uID0ge1xuICAgICAgICB2YWx1ZTogbmV3TWVudUl0ZW0udmFsdWUsXG4gICAgICAgIHRpdGxlOiBuZXdNZW51SXRlbS50aXRsZSxcbiAgICAgICAgaWNvbjogbmV3TWVudUl0ZW0uaWNvbixcbiAgICAgIH1cbiAgICAgIHRoaXMub3B0aW9ucy5wdXNoKG5ld09wdGlvbik7XG5cbiAgICAgIG5ld01lbnVJdGVtLm1vdXNlRW50ZXJIYW5kbGVyLnNldCgoZXZlbnQsIGl0ZW0pID0+IHtcbiAgICAgICAgdGhpcy5zZXRGb2N1c2VkSW5kZXgoaXRlbSk7XG4gICAgICB9KVxuXG4gICAgICAvLyBhZGQgY2xpY2sgbGlzdGVuZXJcbiAgICAgIGNvbnN0IHN1YiA9IG5ld01lbnVJdGVtLmNsaWNrLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuYWRkVmFsdWUodmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWIpO1xuICAgIH0pXG4gIH1cblxuICBoYW5kbGVUb3VjaGVkKCk6IHZvaWQge1xuICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gIH1cblxuICBoYW5kbGVDaGlwQ2xvc2UoY2hpcDogb2JqZWN0KTogdm9pZCB7XG4gICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy52YWx1ZS5maWx0ZXIodmFsID0+IHZhbCAhPT0gY2hpcFt0aGlzLnZhbHVlUHJvcGVydHldKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlcyk7XG4gICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gIH1cblxuICAvLyBoYW5kbGVzIHRoZSB2YWx1ZSBlbWlzc2lvbiBmcm9tIHRoZSBtZW51XG4gIC8vIFRPRE86IG1ha2UgbWVudSBhIGR1bWIgY29tcG9uZW50LCBpdCBzaG91bGRuJ3QgYmUgaGFuZGxpbmcgdmFsdWVzIGlkZWFsbHlcbiAgaGFuZGxlTWVudUNoYW5nZShlOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XG4gICAgICBpZiAoZS50b1N0cmluZygpICE9PSB0aGlzLnNlbGVjdGVkVmFsdWVzLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKGUpO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gYWRkcyBhIHNpbmdsZSB2YWx1ZVxuICBhZGRWYWx1ZShpbmNvbWluZzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYWxyZWFkeVNlbGVjdGVkID0gdGhpcy52YWx1ZS5pbmNsdWRlcyhpbmNvbWluZyk7XG5cbiAgICBpZiAoYWxyZWFkeVNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBzcGxpY2VkT3V0ID0gdGhpcy52YWx1ZS50b1NwbGljZWQodGhpcy52YWx1ZS5pbmRleE9mKGluY29taW5nKSwgMSk7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHNwbGljZWRPdXQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoWy4uLnRoaXMudmFsdWUsIGluY29taW5nXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gaGFuZGxlcyBhbGwgdGhlIGRpc3BsYXkgc2lkZSBlZmZlY3RzIG9mIGEgdmFsdWUgY2hhbmdlXG4gIHVwZGF0ZVZhbHVlKGluY29taW5nVmFsdWVzOiBhbnlbXSk6IHZvaWQge1xuXG4gICAgaWYgKCFpbmNvbWluZ1ZhbHVlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMuY2xlYXIoKTtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuXG4gICAgaW5jb21pbmdWYWx1ZXMuZm9yRWFjaChpbmNvbWluZyA9PiB7XG5cbiAgICAgIGlmICh0eXBlb2YgaW5jb21pbmcgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMuYWRkKGluY29taW5nW3RoaXMudmFsdWVQcm9wZXJ0eV0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5wdXNoKGluY29taW5nKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLmFkZChpbmNvbWluZyk7XG5cbiAgICAgICAgY29uc3QgaW5jb21pbmdNYXBwZWRUb09wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKG9wdCA9PiBvcHRbdGhpcy52YWx1ZVByb3BlcnR5XSA9PT0gaW5jb21pbmcpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5wdXNoKGluY29taW5nTWFwcGVkVG9PcHRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsdWUgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XG4gICAgdGhpcy5wb3N0U2VsZWN0U2lkZUVmZmVjdHMoKTtcbiAgfVxuXG4gIC8vIGN1c3RvbSBmaWx0ZXIgZm9yIGhhbmRsaW5nIGZpbHRlck9uU2VsZWN0XG4gIGN1c3RvbUZpbHRlciA9IChmaWx0ZXI6IHN0cmluZywgbWVudUl0ZW1zOiBGd01lbnVJdGVtQ29tcG9uZW50W10pOiBGd01lbnVJdGVtQ29tcG9uZW50W10gPT4ge1xuICAgIHJldHVybiBtZW51SXRlbXMuZmlsdGVyKG1lbnVJdGVtID0+IHtcbiAgICAgIGNvbnN0IGZpbHRlck1hdGNoZXMgPSBtZW51SXRlbS50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlci50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnZhbHVlLmluY2x1ZGVzKG1lbnVJdGVtLnZhbHVlKTtcbiAgICAgIGNvbnN0IGZpbHRlckJlY2F1c2VTZWxlY3RlZCA9IGlzU2VsZWN0ZWQgJiYgdGhpcy5maWx0ZXJJdGVtc09uU2VsZWN0KCk7XG5cbiAgICAgIHJldHVybiBmaWx0ZXJNYXRjaGVzICYmICFmaWx0ZXJCZWNhdXNlU2VsZWN0ZWQ7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUZvY3VzZWQoZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZGlzcGxheWVkT3B0aW9ucygpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mb2N1c2VkSW5kZXgoKTtcblxuICAgIGNvbnN0IGNsYW1wSW5kZXggPSAobjogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICAgIGlmIChuIDwgMCkge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAobiA+PSBvcHRpb25zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG47XG4gICAgfVxuXG4gICAgY29uc3QgaW5kZXhDaGFuZ2UgPSBkaXJlY3Rpb24gPT09ICd1cCcgPyAtMSA6IDE7XG5cbiAgICBjb25zdCBuZXdJbmRleCA9IGNsYW1wSW5kZXgoaW5kZXggKyBpbmRleENoYW5nZSk7XG4gICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KG5ld0luZGV4KTtcblxuICAgIGNvbnN0IG5ld2x5Rm9jdXNlZCA9IHRoaXMuZGlzcGxheWVkT3B0aW9ucygpW3RoaXMuZm9jdXNlZEluZGV4KCldO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL3ByZWZlci1uby1sYXlvdXQtc2Vuc2l0aXZlLWFwaXNcbiAgICBuZXdseUZvY3VzZWQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgfVxuXG4gIHNldEZvY3VzZWRJbmRleChpdGVtOiB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc3QgZm91bmRJbmRleCA9IHRoaXMuZGlzcGxheWVkT3B0aW9ucygpLmZpbmRJbmRleChpID0+IGkudmFsdWUgPT09IGl0ZW1bdGhpcy52YWx1ZVByb3BlcnR5XSk7XG4gICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KGZvdW5kSW5kZXgpO1xuICB9XG5cbiAgZGlzcGxheUZvY3VzSW5kaWNhdG9yID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLmRpc3BsYXllZE9wdGlvbnMoKS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgaXRlbS5mb2N1c2VkID0gaW5kZXggPT09IHRoaXMuZm9jdXNlZEluZGV4KCk7XG4gICAgfSlcbiAgfSlcblxuICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24sIEByeC1hbmd1bGFyL3ByZWZlci1uby1sYXlvdXQtc2Vuc2l0aXZlLWFwaXMgKi9cbiAgcHJpdmF0ZSBrZXlib2FyZEFjdGlvbk1hcCA9IHtcbiAgICAnQXJyb3dEb3duJzogKCkgPT4ge1xuICAgICAgdGhpcy5tb3ZlRm9jdXNlZCgnZG93bicpO1xuICAgIH0sXG4gICAgJ0Fycm93VXAnOiAoKSA9PiB7XG4gICAgICB0aGlzLm1vdmVGb2N1c2VkKCd1cCcpO1xuICAgIH0sXG4gICAgJ1RhYic6ICgpID0+IHtcbiAgICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9LFxuICAgICdFc2NhcGUnOiAoKSA9PiB7XG4gICAgICB0aGlzLnRyaWdnZXIuY2xvc2UoKTtcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfSxcbiAgICAnRW50ZXInOiAoKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZE1lbnVJdGVtID0gdGhpcy5kaXNwbGF5ZWRPcHRpb25zKClbdGhpcy5mb2N1c2VkSW5kZXgoKV07XG5cbiAgICAgIGlmICghc2VsZWN0ZWRNZW51SXRlbSkgeyByZXR1cm4gfVxuXG4gICAgICB0aGlzLmFkZFZhbHVlKHNlbGVjdGVkTWVudUl0ZW0udmFsdWUpO1xuICAgICAgdGhpcy5wb3N0U2VsZWN0U2lkZUVmZmVjdHMoKTtcbiAgICB9LFxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZWRUcmlnZ2VyS2V5Ym9hcmRBY3Rpb25zTWFwID0ge1xuICAgICdFbnRlcic6ICgpID0+IHtcbiAgICAgIHRoaXMudHJpZ2dlci5vcGVuKCk7XG4gICAgfSxcbiAgICAnQmFja3NwYWNlJzogKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlLnRvU3BsaWNlZCgtMSkpO1xuICAgIH0sXG4gIH1cbiAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG4gIC8vIG5lZWRzIHRvIGJlIGFuIGFycm93IGZ1bmN0aW9uIHRvIGxvY2sgdGhlIHNjb3BlXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCA9PntcblxuICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLnRyaWdnZXIuaXNPcGVuKCkgPyB0aGlzLmtleWJvYXJkQWN0aW9uTWFwW2V2ZW50LmtleV0gOiB0aGlzLmNsb3NlZFRyaWdnZXJLZXlib2FyZEFjdGlvbnNNYXBbZXZlbnQua2V5XTtcblxuICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaGFuZGxlcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zdFNlbGVjdFNpZGVFZmZlY3RzKCk6IHZvaWQge1xuICAgIHRoaXMubWVudUZpbHRlcigpPy5vbkZpbHRlckNoYW5nZSgnJyk7XG5cbiAgICB0aGlzLmN1c3RvbU1lbnVJdGVtcz8uZm9yRWFjaChtZW51SXRlbSA9PiB7XG4gICAgICBtZW51SXRlbS5zZWxlY3RlZCA9IHRoaXMudmFsdWUuaW5jbHVkZXMobWVudUl0ZW0udmFsdWUpO1xuICAgIH0pXG5cbiAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAcngtYW5ndWxhci9wcmVmZXItbm8tbGF5b3V0LXNlbnNpdGl2ZS1hcGlzXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9LCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudHJpZ2dlci5vcGVuKCk7XG4gICAgICB9LCAwKTtcblxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBbbmdTdHlsZV09XCJ7d2lkdGg6IHdpZHRofVwiICN3cmFwcGVyPlxuXG4gIDxkaXZcbiAgICBmd01lbnVSZWdpc3RlclxuICAgIGNsYXNzPVwiY2hpcC1ncmlkXCJcbiAgICBbbmdDbGFzc109XCJbc2l6ZV1cIlxuICAgIFtuZ1N0eWxlXT1cInsgbWluSGVpZ2h0OiBtaW5IZWlnaHQsIG1heEhlaWdodDogbWF4SGVpZ2h0IH1cIlxuICAgIFtjZGtNZW51VHJpZ2dlckZvcl09XCJzZWxlY3RNZW51XCI+XG4gICAgPHNwYW4gKm5nSWY9XCJ2YWx1ZS5sZW5ndGggPT09IDBcIiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+e3twbGFjZWhvbGRlcn19PC9zcGFuPlxuXG4gICAgPCEtLSBDSElQUyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiaW5uZXItY2hpcC1ncmlkXCIgKm5nSWY9XCJ2YWx1ZSAmJiB2YWx1ZS5sZW5ndGg+MFwiPlxuICAgICAgPGZ3LWNoaXBcbiAgICAgICAgKm5nRm9yPVwibGV0IGNoaXAgb2Ygc2VsZWN0ZWRPcHRpb25zIHwgc2xpY2U6MDptYXhTZWxlY3RlZFNob3duXCJcbiAgICAgICAgW3RpdGxlXT1cImNoaXBbdGl0bGVQcm9wZXJ0eV1cIlxuICAgICAgICBbdmFsdWVdPVwiY2hpcFt2YWx1ZVByb3BlcnR5XVwiXG4gICAgICAgIFtpY29uXT1cImNoaXBbaWNvblByb3BlcnR5XVwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIFtzaG93Q2xvc2VdPVwidHJ1ZVwiXG4gICAgICAgIChjbG9zZSk9XCJoYW5kbGVDaGlwQ2xvc2UoY2hpcClcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiPlxuICAgICAgPC9mdy1jaGlwPlxuICAgICAgPHNwYW4gKm5nSWY9XCJtYXhTZWxlY3RlZFNob3duID09PSAwICYmIHZhbHVlLmxlbmd0aCA+IDBcIiBjbGFzcz1cInNlbGVjdGVkLXRleHRcIj5cbiAgICAgICAge3sgdmFsdWUubGVuZ3RoIH19IHNlbGVjdGVkXG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cInZhbHVlLmxlbmd0aCA+IG1heFNlbGVjdGVkU2hvd24gJiYgbWF4U2VsZWN0ZWRTaG93biA+IDBcIiBjbGFzcz1cIm1heC1leGNlZWRlZFwiPlxuICAgICAgICAre3sgdmFsdWUubGVuZ3RoIC0gbWF4U2VsZWN0ZWRTaG93biB9fSBtb3JlXG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZnctaWNvbiAqbmdJZj1cInNob3dDbGVhcigpICYmIHZhbHVlLmxlbmd0aCA+IDBcIiAoY2xpY2spPVwidXBkYXRlVmFsdWUoW10pXCI+Y2xvc2U8L2Z3LWljb24+XG4gICAgPGZ3LWljb24+Y2hldnJvbi1kb3duPC9mdy1pY29uPlxuICA8L2Rpdj5cblxuICA8IS0tIE1FTlUgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjc2VsZWN0TWVudT5cbiAgICA8ZnctbWVudS1maWx0ZXJcbiAgICAgIFtrZXlIYW5kbGVyXT1cImhhbmRsZUtleURvd25cIlxuICAgICAgW3Nob3dGaWx0ZXJdPVwic2hvd0ZpbHRlcigpXCJcbiAgICAgIFtmb2N1c0ZpbHRlck9uTW91bnRdPVwic2hvd0ZpbHRlcigpXCJcbiAgICAgIFt3aWR0aF09XCJvcHRpb25zV2lkdGggfHwgKHdyYXBwZXIub2Zmc2V0V2lkdGggLSAyKSArICdweCdcIlxuICAgICAgW2FkZGl0aW9uYWxNZW51SXRlbXNdPVwidGhpcy5jdXN0b21NZW51SXRlbXNcIlxuICAgICAgW2VtcHR5VGV4dF09XCJlbXB0eVRleHRcIlxuICAgICAgW21heEhlaWdodF09XCJtYXhPcHRpb25zSGVpZ2h0XCJcbiAgICAgIFttaW5IZWlnaHRdPVwibWluT3B0aW9uc0hlaWdodFwiXG4gICAgICBbZmlsdGVyRm5dPVwiY3VzdG9tRmlsdGVyXCJcbiAgICAgIChmaWx0ZXJlZE1lbnVJdGVtQ2hhbmdlKT1cImRpc3BsYXllZE9wdGlvbnMuc2V0KCRldmVudClcIlxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jb250ZW50XCIgKm5nSWY9XCJzaG93U2VsZWN0aW9uSW5mbygpXCI+XG4gICAgICAgIDxwPnt7dmFsdWUubGVuZ3RofX0gc2VsZWN0aW9uczwvcD5cbiAgICAgICAgPGZ3LWJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiAoY2xpY2spPVwidXBkYXRlVmFsdWUoW10pXCI+Q2xlYXI8L2Z3LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGZ3LW1lbnVcbiAgICAgICAgW211bHRpU2VsZWN0XT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbdmFsdWVdPVwiY3JlYXRlQXJyYXkoc2VsZWN0ZWRWYWx1ZXMpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVNZW51Q2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbU1lbnVJdGVtcy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICA8ZnctbWVudS1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zOyBpbmRleCBhcyAkaW5kZXhcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bdGl0bGVQcm9wZXJ0eV1cIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1bdmFsdWVQcm9wZXJ0eV1cIlxuICAgICAgICAgICAgW2ljb25dPVwiaXRlbVtpY29uUHJvcGVydHldXCJcbiAgICAgICAgICAgIFttdWx0aVNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJ2YWx1ZS5pbmNsdWRlcyhpdGVtW3ZhbHVlUHJvcGVydHldKVwiXG4gICAgICAgICAgICBbc2hvd0NoZWNrYm94XT1cInVzZUNoZWNrYm94XCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInNldEZvY3VzZWRJbmRleChpdGVtKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvZnctbWVudS1pdGVtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRlbnQgbmdQcm9qZWN0QXM9XCJjdXN0b20tbWVudS1pdGVtc1wiIHNlbGVjdD1cIltmdy1tZW51LWl0ZW0sIGZ3LW1lbnUtc2VwYXJhdG9yLCBmdy1tZW51LWl0ZW0tZ3JvdXAsIGZ3LW1lbnUtaGVhZGVyXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZnctbWVudT5cbiAgICA8L2Z3LW1lbnUtZmlsdGVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { HostBinding, Input, ChangeDetectionStrategy, Component, EventEmitter, Output, NgModule, input, computed, ContentChildren, ViewChild, ViewEncapsulation, Directive, forwardRef, HostListener, Optional, Inject, SkipSelf, Injectable, Pipe, model, ContentChild, output, contentChildren, signal, Host, viewChild, effect, ViewChildren, Self } from '@angular/core';
2
+ import { HostBinding, Input, ChangeDetectionStrategy, Component, EventEmitter, Output, NgModule, model, computed, ContentChildren, ViewChild, ViewEncapsulation, Directive, forwardRef, HostListener, Optional, Inject, SkipSelf, Injectable, Pipe, ContentChild, input, output, contentChildren, signal, Host, viewChild, effect, ViewChildren, Self } from '@angular/core';
3
3
  import * as i1$1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i1 from '@angular/platform-browser';
@@ -361,7 +361,7 @@ class FwAvatarComponent {
361
361
  this.imageUrl = '';
362
362
  this.imageAltText = '';
363
363
  this.icon = 'user';
364
- this.colorSeed = input();
364
+ this.colorSeed = model();
365
365
  this.hasedColor = computed(() => pickColorViaHash(this.colorSeed()));
366
366
  this.colorToDisplay = computed(() => this.colorSeed() ? this.hasedColor() : namedColorMap[this.color]);
367
367
  this.isImageBroken = false;
@@ -377,7 +377,7 @@ class FwAvatarComponent {
377
377
  this.isImageBroken = true;
378
378
  }
379
379
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
380
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwAvatarComponent, selector: "fw-avatar", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, initial: { classPropertyName: "initial", publicName: "initial", isSignal: false, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: false, isRequired: false, transformFunction: null }, imageAltText: { classPropertyName: "imageAltText", publicName: "imageAltText", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, colorSeed: { classPropertyName: "colorSeed", publicName: "colorSeed", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"content\">\n <div [style.backgroundColor]=\"colorToDisplay()\" *ngSwitchCase=\"'image'\" class=\"avatar\">\n <img\n *ngIf=\"!isImageBroken else displayInitial\"\n [src]=\"imageUrl\"\n [alt]=\"imageAltText\"\n (load)=\"loadImage()\"\n (error)=\"errorImage()\">\n </div>\n <div *ngSwitchCase=\"'icon'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayIcon\"></ng-container>\n </div>\n <div *ngSwitchCase=\"'initial'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayInitial\"></ng-container>\n </div>\n</ng-container>\n<ng-template #displayInitial>\n <span class=\"initial\" *ngIf=\"initial else displayIcon\">{{ initial }}</span>\n</ng-template>\n<ng-template #displayIcon>\n <fw-icon>{{ icon }}</fw-icon>\n</ng-template>\n", styles: [":host{display:block}:host .avatar{display:flex;flex-direction:row;justify-content:center;align-items:center;width:inherit;height:inherit;border-radius:inherit;font-size:inherit}:host .avatar fw-icon{color:var(--typography-contrast);font-size:inherit}:host .avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}:host .avatar .initial{font-family:Inter,sans-serif;font-style:normal;font-weight:500;color:var(--typography-contrast);font-size:inherit}:host.small{width:16px;height:16px;font-size:8px}:host.small .avatar fw-icon{font-size:12px}:host.medium{width:32px;height:32px;font-size:14px}:host.medium .avatar fw-icon{font-size:24px}:host.large{width:48px;height:48px;font-size:22px}:host.large .avatar fw-icon{font-size:32px}:host.x-large{width:96px;height:96px;font-size:36px}:host.x-large .avatar fw-icon{font-size:64px}:host.rounded.small{border-radius:4px}:host.rounded.medium{border-radius:8px}:host.rounded.large{border-radius:12px}:host.rounded.x-large{border-radius:16px}:host.circular{border-radius:64px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] }); }
380
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwAvatarComponent, selector: "fw-avatar", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, initial: { classPropertyName: "initial", publicName: "initial", isSignal: false, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: false, isRequired: false, transformFunction: null }, imageAltText: { classPropertyName: "imageAltText", publicName: "imageAltText", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, colorSeed: { classPropertyName: "colorSeed", publicName: "colorSeed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { colorSeed: "colorSeedChange" }, host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"content\">\n <div [style.backgroundColor]=\"colorToDisplay()\" *ngSwitchCase=\"'image'\" class=\"avatar\">\n <img\n *ngIf=\"!isImageBroken else displayInitial\"\n [src]=\"imageUrl\"\n [alt]=\"imageAltText\"\n (load)=\"loadImage()\"\n (error)=\"errorImage()\">\n </div>\n <div *ngSwitchCase=\"'icon'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayIcon\"></ng-container>\n </div>\n <div *ngSwitchCase=\"'initial'\" [style.backgroundColor]=\"colorToDisplay()\" class=\"avatar\">\n <ng-container *ngTemplateOutlet=\"displayInitial\"></ng-container>\n </div>\n</ng-container>\n<ng-template #displayInitial>\n <span class=\"initial\" *ngIf=\"initial else displayIcon\">{{ initial }}</span>\n</ng-template>\n<ng-template #displayIcon>\n <fw-icon>{{ icon }}</fw-icon>\n</ng-template>\n", styles: [":host{display:block}:host .avatar{display:flex;flex-direction:row;justify-content:center;align-items:center;width:inherit;height:inherit;border-radius:inherit;font-size:inherit}:host .avatar fw-icon{color:var(--typography-contrast);font-size:inherit}:host .avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}:host .avatar .initial{font-family:Inter,sans-serif;font-style:normal;font-weight:500;color:var(--typography-contrast);font-size:inherit}:host.small{width:16px;height:16px;font-size:8px}:host.small .avatar fw-icon{font-size:12px}:host.medium{width:32px;height:32px;font-size:14px}:host.medium .avatar fw-icon{font-size:24px}:host.large{width:48px;height:48px;font-size:22px}:host.large .avatar fw-icon{font-size:32px}:host.x-large{width:96px;height:96px;font-size:36px}:host.x-large .avatar fw-icon{font-size:64px}:host.rounded.small{border-radius:4px}:host.rounded.medium{border-radius:8px}:host.rounded.large{border-radius:12px}:host.rounded.x-large{border-radius:16px}:host.circular{border-radius:64px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] }); }
381
381
  }
382
382
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwAvatarComponent, decorators: [{
383
383
  type: Component,
@@ -4224,7 +4224,7 @@ class FwMenuContainerComponent {
4224
4224
  this.emptyText = input('No results');
4225
4225
  this.filteredMenuItemChange = output();
4226
4226
  this.defaultFilterFn = (filter, menuItems) => {
4227
- return menuItems.filter(menuItem => menuItem.title.toLowerCase().includes(filter.toLowerCase()));
4227
+ return menuItems?.filter(menuItem => menuItem.title?.toLowerCase().includes(filter?.toLowerCase()));
4228
4228
  };
4229
4229
  this.filterFn = input(this.defaultFilterFn);
4230
4230
  this.filterChanged = output();
@@ -5196,10 +5196,10 @@ class FwMultiSelectMenuComponent {
5196
5196
  }
5197
5197
  registerCustomMenuItems() {
5198
5198
  // first filter any menuItems we've already registered as options
5199
- const newMenuItems = this.customMenuItems.filter(menuItem => !this.options.find(option => menuItem.value === option.value));
5199
+ const newMenuItems = this.customMenuItems?.filter(menuItem => !this.options.find(option => menuItem.value === option.value));
5200
5200
  newMenuItems.forEach((newMenuItem) => {
5201
5201
  // sync render settings
5202
- this.customMenuItems.forEach(menuItem => {
5202
+ this.customMenuItems?.forEach(menuItem => {
5203
5203
  menuItem.showCheckbox = this.useCheckbox;
5204
5204
  menuItem.multiSelect = true;
5205
5205
  });
@@ -5305,7 +5305,7 @@ class FwMultiSelectMenuComponent {
5305
5305
  }
5306
5306
  postSelectSideEffects() {
5307
5307
  this.menuFilter()?.onFilterChange('');
5308
- this.customMenuItems.forEach(menuItem => {
5308
+ this.customMenuItems?.forEach(menuItem => {
5309
5309
  menuItem.selected = this.value.includes(menuItem.value);
5310
5310
  });
5311
5311
  if (this.closeOnSelect) {