@odx/angular 9.1.3 → 9.2.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @odx/angular
2
2
 
3
+ ## 9.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 20ab0c2: main menu overlapping is fixed, main menu is popover based element
8
+ - 88191e2: box shadow for main menu fixed
9
+
10
+ ## 9.2.0
11
+
12
+ ### Minor Changes
13
+
14
+ - c930c9c: buttons inside datepicker and daterangepicker, select component styling
15
+
16
+ ### Patch Changes
17
+
18
+ - 885d365: inputs width calculation in daterange picker fixed
19
+ - 597ddcb: tooltips renders with content only
20
+
3
21
  ## 9.1.3
4
22
 
5
23
  ### Patch Changes
@@ -106,5 +106,5 @@ export declare class DatepickerComponent extends CustomFormControl<Date | null>
106
106
  protected openDatepicker(event: KeyboardEvent): void;
107
107
  private updateDateField;
108
108
  static ɵfac: i0.ɵɵFactoryDeclaration<DatepickerComponent, never>;
109
- static ɵcmp: i0.ɵɵComponentDeclaration<DatepickerComponent, "odx-datepicker", never, { "filterFn": { "alias": "filterFn"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "dropdownPosition": { "alias": "dropdownPosition"; "required": false; }; }, { "selectedChange": "selectedChange"; }, ["dateField"], ["input[odxDatepickerControl]"], true, never>;
109
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatepickerComponent, "odx-datepicker", never, { "filterFn": { "alias": "filterFn"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "dropdownPosition": { "alias": "dropdownPosition"; "required": false; }; }, { "selectedChange": "selectedChange"; }, ["dateField"], ["input[odxDatepickerControl]", "[odxButton]"], true, never>;
110
110
  }
@@ -131,5 +131,5 @@ export declare class DaterangepickerComponent extends CustomFormControl<DateRang
131
131
  private updateStartDateField;
132
132
  private updateEndDateField;
133
133
  static ɵfac: i0.ɵɵFactoryDeclaration<DaterangepickerComponent, never>;
134
- static ɵcmp: i0.ɵɵComponentDeclaration<DaterangepickerComponent, "odx-daterangepicker", never, { "filterFn": { "alias": "filterFn"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "dropdownPosition": { "alias": "dropdownPosition"; "required": false; }; }, { "selectedChange": "selectedChange"; }, ["dateFields"], ["input[odxDaterangepickerStartDateControl]", "input[odxDaterangepickerEndDateControl]"], true, never>;
134
+ static ɵcmp: i0.ɵɵComponentDeclaration<DaterangepickerComponent, "odx-daterangepicker", never, { "filterFn": { "alias": "filterFn"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "dropdownPosition": { "alias": "dropdownPosition"; "required": false; }; }, { "selectedChange": "selectedChange"; }, ["dateFields"], ["input[odxDaterangepickerStartDateControl]", "input[odxDaterangepickerEndDateControl]", "[odxButton]"], true, never>;
135
135
  }
@@ -1,3 +1,4 @@
1
+ import { AfterViewInit, ElementRef } from '@angular/core';
1
2
  import { DynamicTextContent } from '@odx/angular/cdk/dynamic-view';
2
3
  import { trackByIndex } from '@odx/angular/utils';
3
4
  import { MainMenuService } from './main-menu.service';
@@ -7,11 +8,13 @@ import * as i0 from "@angular/core";
7
8
  * It supports dynamic content for titles, subtitles, and copyright text, and can dynamically render additional links.
8
9
  * The menu includes animations for opening and closing states, and can be controlled programmatically or via user interaction.
9
10
  */
10
- export declare class MainMenuComponent {
11
+ export declare class MainMenuComponent implements AfterViewInit {
12
+ private readonly takeUntilDestroyed;
11
13
  protected readonly mainMenuService: MainMenuService;
12
14
  protected readonly mainMenuLinks$: import("rxjs").Observable<import("./models").MainMenuLink[]>;
13
15
  protected readonly trackByIndex: typeof trackByIndex;
14
- readonly element: import("@angular/core").ElementRef<HTMLElement>;
16
+ protected readonly isOpen$: import("rxjs").Observable<boolean>;
17
+ readonly element: ElementRef<HTMLElement>;
15
18
  /**
16
19
  * Input property for the title of the menu. The content is dynamic, allowing complex content structures
17
20
  * like translations or custom components.
@@ -52,10 +55,14 @@ export declare class MainMenuComponent {
52
55
  * @emits {boolean} The open state of the menu.
53
56
  */
54
57
  menuOpen: import("rxjs").Observable<boolean>;
58
+ menuInner: ElementRef<HTMLElement>;
59
+ ngAfterViewInit(): void;
55
60
  /**
56
61
  * Closes the menu.
57
62
  */
58
63
  close(): void;
64
+ private slideMenuInner;
65
+ private isPopoverElement;
59
66
  static ɵfac: i0.ɵɵFactoryDeclaration<MainMenuComponent, never>;
60
67
  static ɵcmp: i0.ɵɵComponentDeclaration<MainMenuComponent, "odx-main-menu", never, { "title": { "alias": "title"; "required": true; }; "subtitle": { "alias": "subtitle"; "required": false; }; "copyright": { "alias": "copyright"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; }, { "menuOpen": "menuOpen"; }, never, ["*", "[odxLink]"], true, never>;
61
68
  static ngAcceptInputType_isOpen: unknown;
@@ -142,7 +142,7 @@ export let DatepickerComponent = class DatepickerComponent extends CustomFormCon
142
142
  this.dateField.nativeElementValue = date ? format(date, dateFormat) : '';
143
143
  }
144
144
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
145
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatepickerComponent, isStandalone: true, selector: "odx-datepicker", inputs: { filterFn: "filterFn", minDate: "minDate", maxDate: "maxDate", dropdownPosition: "dropdownPosition" }, outputs: { selectedChange: "selectedChange" }, host: { listeners: { "keydown.alt.ArrowDown": "openDatepicker($event)" } }, queries: [{ propertyName: "dateField", first: true, predicate: DatepickerInputControlDirective, descendants: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: DropdownDirective, descendants: true }, { propertyName: "dropdownTriggerElement", first: true, predicate: ["dropdownTrigger"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"input[odxDatepickerControl]\"></ng-content>\n\n<odx-action-group class=\"odx-no-margin\">\n <button\n #dropdownTrigger\n class=\"odx-datepicker__trigger\"\n odxButton\n size=\"small\"\n variant=\"ghost\"\n [odxDropdown]=\"calendarOverlay\"\n [odxDropdownOptions]=\"{ position: dropdownPosition }\"\n [odxDropdownTriggerElement]=\"dropdownTriggerElement.nativeElement\"\n [odxDropdownHost]=\"null\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n >\n <odx-icon name=\"calendar\"></odx-icon>\n </button>\n</odx-action-group>\n\n<ng-template #calendarOverlay>\n <odx-calendar\n [selectedDate]=\"value || today\"\n [filterFn]=\"filterFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n (selectedDateChange)=\"selectDate($event)\"\n ></odx-calendar>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: CalendarComponent, selector: "odx-calendar", inputs: ["selectedDate", "selectedDateRange", "minDate", "maxDate", "filterFn"], outputs: ["selectedDateChange", "selectedDateRangeChange"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "directive", type: i2.DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
145
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatepickerComponent, isStandalone: true, selector: "odx-datepicker", inputs: { filterFn: "filterFn", minDate: "minDate", maxDate: "maxDate", dropdownPosition: "dropdownPosition" }, outputs: { selectedChange: "selectedChange" }, host: { listeners: { "keydown.alt.ArrowDown": "openDatepicker($event)" } }, queries: [{ propertyName: "dateField", first: true, predicate: DatepickerInputControlDirective, descendants: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: DropdownDirective, descendants: true }, { propertyName: "dropdownTriggerElement", first: true, predicate: ["dropdownTrigger"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"input[odxDatepickerControl]\"></ng-content>\n\n<odx-action-group class=\"odx-datepicker__trigger-wrapper\">\n <button\n #dropdownTrigger\n odxButton\n size=\"small\"\n variant=\"ghost\"\n class=\"odx-datepicker__trigger\"\n [odxDropdown]=\"calendarOverlay\"\n [odxDropdownOptions]=\"{ position: dropdownPosition }\"\n [odxDropdownTriggerElement]=\"dropdownTriggerElement.nativeElement\"\n [odxDropdownHost]=\"null\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n >\n <odx-icon name=\"calendar\"></odx-icon>\n </button>\n <ng-content select=\"[odxButton]\" ngProjectAs=\"[odxButton]\" />\n</odx-action-group>\n\n<ng-template #calendarOverlay>\n <odx-calendar\n [selectedDate]=\"value || today\"\n [filterFn]=\"filterFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n (selectedDateChange)=\"selectDate($event)\"\n ></odx-calendar>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: CalendarComponent, selector: "odx-calendar", inputs: ["selectedDate", "selectedDateRange", "minDate", "maxDate", "filterFn"], outputs: ["selectedDateChange", "selectedDateRangeChange"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "directive", type: i2.DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
146
146
  };
147
147
  DatepickerComponent = __decorate([
148
148
  CSSComponent('datepicker'),
@@ -150,7 +150,7 @@ DatepickerComponent = __decorate([
150
150
  ], DatepickerComponent);
151
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatepickerComponent, decorators: [{
152
152
  type: Component,
153
- args: [{ selector: 'odx-datepicker', standalone: true, imports: [A11yModule, ActionGroupComponent, ButtonComponent, CalendarComponent, DropdownModule, IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-content select=\"input[odxDatepickerControl]\"></ng-content>\n\n<odx-action-group class=\"odx-no-margin\">\n <button\n #dropdownTrigger\n class=\"odx-datepicker__trigger\"\n odxButton\n size=\"small\"\n variant=\"ghost\"\n [odxDropdown]=\"calendarOverlay\"\n [odxDropdownOptions]=\"{ position: dropdownPosition }\"\n [odxDropdownTriggerElement]=\"dropdownTriggerElement.nativeElement\"\n [odxDropdownHost]=\"null\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n >\n <odx-icon name=\"calendar\"></odx-icon>\n </button>\n</odx-action-group>\n\n<ng-template #calendarOverlay>\n <odx-calendar\n [selectedDate]=\"value || today\"\n [filterFn]=\"filterFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n (selectedDateChange)=\"selectDate($event)\"\n ></odx-calendar>\n</ng-template>\n" }]
153
+ args: [{ selector: 'odx-datepicker', standalone: true, imports: [A11yModule, ActionGroupComponent, ButtonComponent, CalendarComponent, DropdownModule, IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-content select=\"input[odxDatepickerControl]\"></ng-content>\n\n<odx-action-group class=\"odx-datepicker__trigger-wrapper\">\n <button\n #dropdownTrigger\n odxButton\n size=\"small\"\n variant=\"ghost\"\n class=\"odx-datepicker__trigger\"\n [odxDropdown]=\"calendarOverlay\"\n [odxDropdownOptions]=\"{ position: dropdownPosition }\"\n [odxDropdownTriggerElement]=\"dropdownTriggerElement.nativeElement\"\n [odxDropdownHost]=\"null\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n >\n <odx-icon name=\"calendar\"></odx-icon>\n </button>\n <ng-content select=\"[odxButton]\" ngProjectAs=\"[odxButton]\" />\n</odx-action-group>\n\n<ng-template #calendarOverlay>\n <odx-calendar\n [selectedDate]=\"value || today\"\n [filterFn]=\"filterFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n (selectedDateChange)=\"selectDate($event)\"\n ></odx-calendar>\n</ng-template>\n" }]
154
154
  }], ctorParameters: function () { return []; }, propDecorators: { filterFn: [{
155
155
  type: Input
156
156
  }], minDate: [{
@@ -174,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
174
174
  type: HostListener,
175
175
  args: ['keydown.alt.ArrowDown', ['$event']]
176
176
  }] } });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcGlja2VyL3NyYy9saWIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcGlja2VyL3NyYy9saWIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEYs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QUFpQixDQUFDLElBQUk7MEVBdUM5QixRQUFRO3NCQURkLEtBQUs7Z0JBV0MsT0FBTztzQkFEYixLQUFLO2dCQVdDLE9BQU87c0JBRGIsS0FBSztnQkFVQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBU0MsY0FBYztzQkFEcEIsTUFBTTtnQkFTQSxRQUFRO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCO2dCQVNyQixzQkFBc0I7c0JBRDVCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBU3pELFNBQVM7c0JBRGYsWUFBWTt1QkFBQywrQkFBK0I7Z0JBMERuQyxjQUFjO3NCQUR2QixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXMgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQ3VzdG9tRm9ybUNvbnRyb2wgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2N1c3RvbS1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHsgQWN0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9hY3Rpb24tZ3JvdXAnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50LCBEYXRlRmlsdGVyIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvY2FsZW5kYXInO1xuaW1wb3J0IHsgRHJvcGRvd25EaXJlY3RpdmUsIERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IFBvc2l0aW9uLCBkZWZlckZuLCBpbmplY3RFbGVtZW50LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmb3JtYXQsIHN0YXJ0T2ZEYXkgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBpbmplY3REYXRlcGlja2VyQ29uZmlnIH0gZnJvbSAnLi9kYXRlcGlja2VyLmNvbmZpZyc7XG5pbXBvcnQgeyBEYXRlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IGdldERhdGVwaWNrZXJJbnB1dEZvcm1hdCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBkYXRlcGlja2VyIGNvbXBvbmVudCBmb3Igc2VsZWN0aW5nIGEgZGF0ZS5cbiAqIEV4dGVuZHMgdGhlIGBDdXN0b21Gb3JtQ29udHJvbGAgY2xhc3MgYW5kIGltcGxlbWVudHMgdGhlIGBBZnRlclZpZXdJbml0YCBpbnRlcmZhY2UuXG4gKlxuICogQHNlZSB7Q3VzdG9tRm9ybUNvbnRyb2x9XG4gKi9cbkBDU1NDb21wb25lbnQoJ2RhdGVwaWNrZXInKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2R4LWRhdGVwaWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQWN0aW9uR3JvdXBDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgQ2FsZW5kYXJDb21wb25lbnQsIERyb3Bkb3duTW9kdWxlLCBJY29uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckNvbXBvbmVudCBleHRlbmRzIEN1c3RvbUZvcm1Db250cm9sPERhdGUgfCBudWxsPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveWVkID0gdW50aWxEZXN0cm95ZWQoKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0RGF0ZXBpY2tlckNvbmZpZygpO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBkYXRlcGlja2VyIGlzIGN1cnJlbnRseSBvcGVuLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZHJvcGRvd24uaXNPcGVuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgZGF0ZS5cbiAgICpcbiAgICogQHR5cGUge0RhdGV9XG4gICAqL1xuICBwdWJsaWMgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgZGF0ZSBzaG91bGQgYmUgaW5jbHVkZWQgb3IgZXhjbHVkZWQgaW4gdGhlIGRhdGVwaWNrZXIuXG4gICAqIElmIHNldCB0byBgbnVsbGAsIG5vIGZpbHRlcmluZyB3aWxsIGJlIGFwcGxpZWQuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlRmlsdGVyIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiAvLyBFeGNsdWRlcyBtb25kYXlzIGZyb20gdGhlIGRhdGVwaWNrZXIuXG4gICAqIGNvbnN0IGZpbHRlckZuOiBEYXRlRmlsdGVyID0gKGRhdGUpID0+IGRhdGUuZ2V0RGF5KCkgIT09IDE7XG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZpbHRlckZuOiBEYXRlRmlsdGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSBmb3IgdGhlIGRhdGVwaWNrZXIuXG4gICAqIElmIHNldCB0byBudWxsLCB0aGVyZSBpcyBubyBtaW5pbXVtIGRhdGUgcmVzdHJpY3Rpb24uXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gc2VsZWN0YWJsZSBkYXRlIGZvciB0aGUgZGF0ZXBpY2tlci5cbiAgICogSWYgc2V0IHRvIG51bGwsIHRoZXJlIGlzIG5vIG1heGltdW0gZGF0ZSByZXN0cmljdGlvbi5cbiAgICpcbiAgICogQHR5cGUge0RhdGUgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIGRyb3Bkb3duIHJlbGF0aXZlIHRvIHRoZSBpbnB1dCBmaWVsZC5cbiAgICpcbiAgICogQHR5cGUge1Bvc2l0aW9ufVxuICAgKiBAZGVmYXVsdCBQb3NpdGlvbi5CT1RUT01cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkcm9wZG93blBvc2l0aW9uOiBQb3NpdGlvbiA9ICdib3R0b20nO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgc2VsZWN0ZWQgZGF0ZSB3aGVuIGl0IGNoYW5nZXMuXG4gICAqXG4gICAqIEBlbWl0cyB7RGF0ZX1cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBkcm9wZG93biBkaXJlY3RpdmUgdXNlZCBpbiB0aGUgZGF0ZXBpY2tlciBjb21wb25lbnQuXG4gICAqXG4gICAqIEB0eXBlIHtEcm9wZG93bkRpcmVjdGl2ZX1cbiAgICovXG4gIEBWaWV3Q2hpbGQoRHJvcGRvd25EaXJlY3RpdmUpXG4gIHB1YmxpYyBkcm9wZG93biE6IERyb3Bkb3duRGlyZWN0aXZlO1xuXG4gIC8qKlxuICAgKiBUaGUgZHJvcGRvd24gdHJpZ2dlciBlbGVtZW50IHVzZWQgaW4gdGhlIGRhdGVwaWNrZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAdHlwZSB7RWxlbWVudFJlZjxIVE1MRWxlbWVudD59XG4gICAqL1xuICBAVmlld0NoaWxkKCdkcm9wZG93blRyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgZHJvcGRvd25UcmlnZ2VyRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSBmaWVsZCBpbnB1dCBjb250cm9sIGRpcmVjdGl2ZSB1c2VkIGluIHRoZSBkYXRlcGlja2VyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGUge0RhdGVwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWR9XG4gICAqL1xuICBAQ29udGVudENoaWxkKERhdGVwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUpXG4gIHB1YmxpYyBkYXRlRmllbGQ/OiBEYXRlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKG51bGwpO1xuICAgIGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzKHRoaXMpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZURhdGVGaWVsZENoYW5nZXMoKTtcbiAgICB0aGlzLmhhbmRsZURhdGVGaWVsZEZvY3VzKCk7XG5cbiAgICBkZWZlckZuKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy52YWx1ZSkgcmV0dXJuO1xuICAgICAgdGhpcy51cGRhdGVJbnRlcm5hbFZhbHVlKHN0YXJ0T2ZEYXkodGhpcy52YWx1ZSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSBkYXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGUgfCBudWxsfSB2YWx1ZSAtIFRoZSBkYXRlIHZhbHVlIHRvIGJlIHNlbGVjdGVkLlxuICAgKi9cbiAgcHVibGljIHNlbGVjdERhdGUodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy51cGRhdGVJbnRlcm5hbFZhbHVlKHZhbHVlKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cbiAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVJbnRlcm5hbFZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUludGVybmFsVmFsdWUodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy51cGRhdGVEYXRlRmllbGQodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURhdGVGaWVsZENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlRmllbGQ/LnZhbHVlQ2hhbmdlJC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuZGF0ZUZpZWxkPy52YWx1ZUFzRGF0ZSA/PyBudWxsKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRGF0ZUZpZWxkRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlRmllbGQ/LmZvY3VzZWQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKGlzRm9jdXNlZCkgPT4ge1xuICAgICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb3BlbkRhdGVwaWNrZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLmlzUmVhZG9ubHkgfHwgdGhpcy5pc0Rpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLmRyb3Bkb3duLm9wZW4oZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEYXRlRmllbGQoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0ZUZpZWxkKSByZXR1cm47XG5cbiAgICBjb25zdCBkYXRlRm9ybWF0ID0gZ2V0RGF0ZXBpY2tlcklucHV0Rm9ybWF0KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmRhdGVGaWVsZC5uYXRpdmVFbGVtZW50VmFsdWUgPSBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJyc7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0W29keERhdGVwaWNrZXJDb250cm9sXVwiPjwvbmctY29udGVudD5cblxuPG9keC1hY3Rpb24tZ3JvdXAgY2xhc3M9XCJvZHgtbm8tbWFyZ2luXCI+XG4gIDxidXR0b25cbiAgICAjZHJvcGRvd25UcmlnZ2VyXG4gICAgY2xhc3M9XCJvZHgtZGF0ZXBpY2tlcl9fdHJpZ2dlclwiXG4gICAgb2R4QnV0dG9uXG4gICAgc2l6ZT1cInNtYWxsXCJcbiAgICB2YXJpYW50PVwiZ2hvc3RcIlxuICAgIFtvZHhEcm9wZG93bl09XCJjYWxlbmRhck92ZXJsYXlcIlxuICAgIFtvZHhEcm9wZG93bk9wdGlvbnNdPVwieyBwb3NpdGlvbjogZHJvcGRvd25Qb3NpdGlvbiB9XCJcbiAgICBbb2R4RHJvcGRvd25UcmlnZ2VyRWxlbWVudF09XCJkcm9wZG93blRyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIFtvZHhEcm9wZG93bkhvc3RdPVwibnVsbFwiXG4gICAgW29keERyb3Bkb3duUmVmZXJlbmNlRWxlbWVudF09XCJlbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIChvZHhEcm9wZG93bkJlZm9yZUNsb3NlKT1cIm9uVG91Y2hlZCgpXCJcbiAgPlxuICAgIDxvZHgtaWNvbiBuYW1lPVwiY2FsZW5kYXJcIj48L29keC1pY29uPlxuICA8L2J1dHRvbj5cbjwvb2R4LWFjdGlvbi1ncm91cD5cblxuPG5nLXRlbXBsYXRlICNjYWxlbmRhck92ZXJsYXk+XG4gIDxvZHgtY2FsZW5kYXJcbiAgICBbc2VsZWN0ZWREYXRlXT1cInZhbHVlIHx8IHRvZGF5XCJcbiAgICBbZmlsdGVyRm5dPVwiZmlsdGVyRm5cIlxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgIGNka1RyYXBGb2N1c1xuICAgIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlXG4gICAgKHNlbGVjdGVkRGF0ZUNoYW5nZSk9XCJzZWxlY3REYXRlKCRldmVudClcIlxuICA+PC9vZHgtY2FsZW5kYXI+XG48L25nLXRlbXBsYXRlPlxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcGlja2VyL3NyYy9saWIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcGlja2VyL3NyYy9saWIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7OztBQUVuRDs7Ozs7R0FLRztBQVVJLFdBQU0sbUJBQW1CLEdBQXpCLE1BQU0sbUJBQW9CLFNBQVEsaUJBQThCO0lBT3JFOzs7O09BSUc7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBc0ZEO1FBQ0UsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBcEdLLHVCQUFrQixHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRXRDLFdBQU0sR0FBRyxzQkFBc0IsRUFBRSxDQUFDO1FBRXJDLFlBQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQztRQVcxQzs7OztXQUlHO1FBQ0ksVUFBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFMUI7Ozs7Ozs7Ozs7OztXQVlHO1FBRUksYUFBUSxHQUFzQixJQUFJLENBQUM7UUFFMUM7Ozs7OztXQU1HO1FBRUksWUFBTyxHQUFnQixJQUFJLENBQUM7UUFFbkM7Ozs7OztXQU1HO1FBRUksWUFBTyxHQUFnQixJQUFJLENBQUM7UUFFbkM7Ozs7O1dBS0c7UUFFSSxxQkFBZ0IsR0FBYSxRQUFRLENBQUM7UUFFN0M7Ozs7V0FJRztRQUVJLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQTRCL0MsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFNUIsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPO1lBQ3hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxLQUFrQjtRQUNsQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVTLG1CQUFtQixDQUFDLEtBQWtCO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsc0JBQXNCO1FBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEksQ0FBQztJQUVTLG9CQUFvQjtRQUM1QixJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUM5RSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNsQjtZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR1MsY0FBYyxDQUFDLEtBQW9CO1FBQzNDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBRS9DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBaUI7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUU1QixNQUFNLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRSxDQUFDOytHQXhLVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw0VkFpR2hCLCtCQUErQiwwRkFoQmxDLGlCQUFpQix1SUFRVSxVQUFVLGtFQ3BJbEQseWdDQWdDQSwyQ0RNWSxVQUFVLDBMQUFFLG9CQUFvQixrRkFBRSxlQUFlLHlHQUFFLGlCQUFpQixxTUFBRSxjQUFjLDJmQUFFLGFBQWE7O0FBS2xHLG1CQUFtQjtJQVQvQixZQUFZLENBQUMsWUFBWSxDQUFDOztHQVNkLG1CQUFtQixDQXlLL0I7NEZBektZLG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxhQUFhLENBQUMsbUJBRTdGLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7MEVBdUM5QixRQUFRO3NCQURkLEtBQUs7Z0JBV0MsT0FBTztzQkFEYixLQUFLO2dCQVdDLE9BQU87c0JBRGIsS0FBSztnQkFVQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBU0MsY0FBYztzQkFEcEIsTUFBTTtnQkFTQSxRQUFRO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCO2dCQVNyQixzQkFBc0I7c0JBRDVCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBU3pELFNBQVM7c0JBRGYsWUFBWTt1QkFBQywrQkFBK0I7Z0JBMERuQyxjQUFjO3NCQUR2QixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXMgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQ3VzdG9tRm9ybUNvbnRyb2wgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2N1c3RvbS1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHsgQWN0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9hY3Rpb24tZ3JvdXAnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50LCBEYXRlRmlsdGVyIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvY2FsZW5kYXInO1xuaW1wb3J0IHsgRHJvcGRvd25EaXJlY3RpdmUsIERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IFBvc2l0aW9uLCBkZWZlckZuLCBpbmplY3RFbGVtZW50LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmb3JtYXQsIHN0YXJ0T2ZEYXkgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBpbmplY3REYXRlcGlja2VyQ29uZmlnIH0gZnJvbSAnLi9kYXRlcGlja2VyLmNvbmZpZyc7XG5pbXBvcnQgeyBEYXRlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IGdldERhdGVwaWNrZXJJbnB1dEZvcm1hdCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBkYXRlcGlja2VyIGNvbXBvbmVudCBmb3Igc2VsZWN0aW5nIGEgZGF0ZS5cbiAqIEV4dGVuZHMgdGhlIGBDdXN0b21Gb3JtQ29udHJvbGAgY2xhc3MgYW5kIGltcGxlbWVudHMgdGhlIGBBZnRlclZpZXdJbml0YCBpbnRlcmZhY2UuXG4gKlxuICogQHNlZSB7Q3VzdG9tRm9ybUNvbnRyb2x9XG4gKi9cbkBDU1NDb21wb25lbnQoJ2RhdGVwaWNrZXInKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2R4LWRhdGVwaWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQWN0aW9uR3JvdXBDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgQ2FsZW5kYXJDb21wb25lbnQsIERyb3Bkb3duTW9kdWxlLCBJY29uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckNvbXBvbmVudCBleHRlbmRzIEN1c3RvbUZvcm1Db250cm9sPERhdGUgfCBudWxsPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveWVkID0gdW50aWxEZXN0cm95ZWQoKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0RGF0ZXBpY2tlckNvbmZpZygpO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBkYXRlcGlja2VyIGlzIGN1cnJlbnRseSBvcGVuLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZHJvcGRvd24uaXNPcGVuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgZGF0ZS5cbiAgICpcbiAgICogQHR5cGUge0RhdGV9XG4gICAqL1xuICBwdWJsaWMgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgZGF0ZSBzaG91bGQgYmUgaW5jbHVkZWQgb3IgZXhjbHVkZWQgaW4gdGhlIGRhdGVwaWNrZXIuXG4gICAqIElmIHNldCB0byBgbnVsbGAsIG5vIGZpbHRlcmluZyB3aWxsIGJlIGFwcGxpZWQuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlRmlsdGVyIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiAvLyBFeGNsdWRlcyBtb25kYXlzIGZyb20gdGhlIGRhdGVwaWNrZXIuXG4gICAqIGNvbnN0IGZpbHRlckZuOiBEYXRlRmlsdGVyID0gKGRhdGUpID0+IGRhdGUuZ2V0RGF5KCkgIT09IDE7XG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZpbHRlckZuOiBEYXRlRmlsdGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSBmb3IgdGhlIGRhdGVwaWNrZXIuXG4gICAqIElmIHNldCB0byBudWxsLCB0aGVyZSBpcyBubyBtaW5pbXVtIGRhdGUgcmVzdHJpY3Rpb24uXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gc2VsZWN0YWJsZSBkYXRlIGZvciB0aGUgZGF0ZXBpY2tlci5cbiAgICogSWYgc2V0IHRvIG51bGwsIHRoZXJlIGlzIG5vIG1heGltdW0gZGF0ZSByZXN0cmljdGlvbi5cbiAgICpcbiAgICogQHR5cGUge0RhdGUgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIGRyb3Bkb3duIHJlbGF0aXZlIHRvIHRoZSBpbnB1dCBmaWVsZC5cbiAgICpcbiAgICogQHR5cGUge1Bvc2l0aW9ufVxuICAgKiBAZGVmYXVsdCBQb3NpdGlvbi5CT1RUT01cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkcm9wZG93blBvc2l0aW9uOiBQb3NpdGlvbiA9ICdib3R0b20nO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgc2VsZWN0ZWQgZGF0ZSB3aGVuIGl0IGNoYW5nZXMuXG4gICAqXG4gICAqIEBlbWl0cyB7RGF0ZX1cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBkcm9wZG93biBkaXJlY3RpdmUgdXNlZCBpbiB0aGUgZGF0ZXBpY2tlciBjb21wb25lbnQuXG4gICAqXG4gICAqIEB0eXBlIHtEcm9wZG93bkRpcmVjdGl2ZX1cbiAgICovXG4gIEBWaWV3Q2hpbGQoRHJvcGRvd25EaXJlY3RpdmUpXG4gIHB1YmxpYyBkcm9wZG93biE6IERyb3Bkb3duRGlyZWN0aXZlO1xuXG4gIC8qKlxuICAgKiBUaGUgZHJvcGRvd24gdHJpZ2dlciBlbGVtZW50IHVzZWQgaW4gdGhlIGRhdGVwaWNrZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAdHlwZSB7RWxlbWVudFJlZjxIVE1MRWxlbWVudD59XG4gICAqL1xuICBAVmlld0NoaWxkKCdkcm9wZG93blRyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgZHJvcGRvd25UcmlnZ2VyRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSBmaWVsZCBpbnB1dCBjb250cm9sIGRpcmVjdGl2ZSB1c2VkIGluIHRoZSBkYXRlcGlja2VyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGUge0RhdGVwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWR9XG4gICAqL1xuICBAQ29udGVudENoaWxkKERhdGVwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUpXG4gIHB1YmxpYyBkYXRlRmllbGQ/OiBEYXRlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKG51bGwpO1xuICAgIGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzKHRoaXMpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZURhdGVGaWVsZENoYW5nZXMoKTtcbiAgICB0aGlzLmhhbmRsZURhdGVGaWVsZEZvY3VzKCk7XG5cbiAgICBkZWZlckZuKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy52YWx1ZSkgcmV0dXJuO1xuICAgICAgdGhpcy51cGRhdGVJbnRlcm5hbFZhbHVlKHN0YXJ0T2ZEYXkodGhpcy52YWx1ZSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSBkYXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGUgfCBudWxsfSB2YWx1ZSAtIFRoZSBkYXRlIHZhbHVlIHRvIGJlIHNlbGVjdGVkLlxuICAgKi9cbiAgcHVibGljIHNlbGVjdERhdGUodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy51cGRhdGVJbnRlcm5hbFZhbHVlKHZhbHVlKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cbiAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVJbnRlcm5hbFZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUludGVybmFsVmFsdWUodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy51cGRhdGVEYXRlRmllbGQodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURhdGVGaWVsZENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlRmllbGQ/LnZhbHVlQ2hhbmdlJC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuZGF0ZUZpZWxkPy52YWx1ZUFzRGF0ZSA/PyBudWxsKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRGF0ZUZpZWxkRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlRmllbGQ/LmZvY3VzZWQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKGlzRm9jdXNlZCkgPT4ge1xuICAgICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb3BlbkRhdGVwaWNrZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLmlzUmVhZG9ubHkgfHwgdGhpcy5pc0Rpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLmRyb3Bkb3duLm9wZW4oZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEYXRlRmllbGQoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0ZUZpZWxkKSByZXR1cm47XG5cbiAgICBjb25zdCBkYXRlRm9ybWF0ID0gZ2V0RGF0ZXBpY2tlcklucHV0Rm9ybWF0KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmRhdGVGaWVsZC5uYXRpdmVFbGVtZW50VmFsdWUgPSBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJyc7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0W29keERhdGVwaWNrZXJDb250cm9sXVwiPjwvbmctY29udGVudD5cblxuPG9keC1hY3Rpb24tZ3JvdXAgY2xhc3M9XCJvZHgtZGF0ZXBpY2tlcl9fdHJpZ2dlci13cmFwcGVyXCI+XG4gIDxidXR0b25cbiAgICAjZHJvcGRvd25UcmlnZ2VyXG4gICAgb2R4QnV0dG9uXG4gICAgc2l6ZT1cInNtYWxsXCJcbiAgICB2YXJpYW50PVwiZ2hvc3RcIlxuICAgIGNsYXNzPVwib2R4LWRhdGVwaWNrZXJfX3RyaWdnZXJcIlxuICAgIFtvZHhEcm9wZG93bl09XCJjYWxlbmRhck92ZXJsYXlcIlxuICAgIFtvZHhEcm9wZG93bk9wdGlvbnNdPVwieyBwb3NpdGlvbjogZHJvcGRvd25Qb3NpdGlvbiB9XCJcbiAgICBbb2R4RHJvcGRvd25UcmlnZ2VyRWxlbWVudF09XCJkcm9wZG93blRyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIFtvZHhEcm9wZG93bkhvc3RdPVwibnVsbFwiXG4gICAgW29keERyb3Bkb3duUmVmZXJlbmNlRWxlbWVudF09XCJlbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIChvZHhEcm9wZG93bkJlZm9yZUNsb3NlKT1cIm9uVG91Y2hlZCgpXCJcbiAgPlxuICAgIDxvZHgtaWNvbiBuYW1lPVwiY2FsZW5kYXJcIj48L29keC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW29keEJ1dHRvbl1cIiBuZ1Byb2plY3RBcz1cIltvZHhCdXR0b25dXCIgLz5cbjwvb2R4LWFjdGlvbi1ncm91cD5cblxuPG5nLXRlbXBsYXRlICNjYWxlbmRhck92ZXJsYXk+XG4gIDxvZHgtY2FsZW5kYXJcbiAgICBbc2VsZWN0ZWREYXRlXT1cInZhbHVlIHx8IHRvZGF5XCJcbiAgICBbZmlsdGVyRm5dPVwiZmlsdGVyRm5cIlxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgIGNka1RyYXBGb2N1c1xuICAgIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlXG4gICAgKHNlbGVjdGVkRGF0ZUNoYW5nZSk9XCJzZWxlY3REYXRlKCRldmVudClcIlxuICA+PC9vZHgtY2FsZW5kYXI+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -153,7 +153,7 @@ export let DaterangepickerComponent = class DaterangepickerComponent extends Cus
153
153
  const compensationPx = 2;
154
154
  source.nativeElement.textContent = value || target?.placeholder || null;
155
155
  if (target) {
156
- target.element.nativeElement.style.width = `${source.nativeElement.offsetWidth + compensationPx}px`;
156
+ deferFn(() => (target.element.nativeElement.style.width = `${source.nativeElement.offsetWidth + compensationPx}px`));
157
157
  }
158
158
  }
159
159
  handleDateFieldFocus() {
@@ -200,7 +200,7 @@ export let DaterangepickerComponent = class DaterangepickerComponent extends Cus
200
200
  displayAdjacentDays: false,
201
201
  selectionMode: CalendarSelectionMode.DateRange,
202
202
  }),
203
- ], queries: [{ propertyName: "dateFields", predicate: DaterangepickerInputControlDirective }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: DropdownDirective, descendants: true }, { propertyName: "dropdownTriggerElement", first: true, predicate: ["dropdownTrigger"], descendants: true, read: ElementRef, static: true }, { propertyName: "startDateMirror", first: true, predicate: ["startDateMirror"], descendants: true, read: ElementRef, static: true }, { propertyName: "endDateMirror", first: true, predicate: ["endDateMirror"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<span #startDateMirror role=\"none\" class=\"odx-daterangepicker__mirror\"></span>\n<ng-content select=\"input[odxDaterangepickerStartDateControl]\"></ng-content>\n<span role=\"none\" class=\"odx-daterangepicker__separator\">\u2013</span>\n<span #endDateMirror role=\"none\" class=\"odx-daterangepicker__mirror\"></span>\n<ng-content select=\"input[odxDaterangepickerEndDateControl]\"></ng-content>\n\n<odx-action-group class=\"odx-daterangepicker__trigger-wrapper\">\n <button\n #dropdownTrigger\n class=\"odx-daterangepicker__trigger\"\n odxButton\n size=\"small\"\n variant=\"ghost\"\n [odxDropdown]=\"calendarOverlay\"\n [odxDropdownOptions]=\"{ position: dropdownPosition }\"\n [odxDropdownTriggerElement]=\"dropdownTriggerElement.nativeElement\"\n [odxDropdownHost]=\"null\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n >\n <odx-icon name=\"calendar\"></odx-icon>\n </button>\n</odx-action-group>\n\n<ng-template #calendarOverlay>\n <odx-calendar\n [selectedDate]=\"today\"\n [selectedDateRange]=\"value\"\n (selectedDateRangeChange)=\"selectDateRange($event)\"\n [filterFn]=\"filterFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n ></odx-calendar>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: CalendarComponent, selector: "odx-calendar", inputs: ["selectedDate", "selectedDateRange", "minDate", "maxDate", "filterFn"], outputs: ["selectedDateChange", "selectedDateRangeChange"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "directive", type: i2.DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
203
+ ], queries: [{ propertyName: "dateFields", predicate: DaterangepickerInputControlDirective }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: DropdownDirective, descendants: true }, { propertyName: "dropdownTriggerElement", first: true, predicate: ["dropdownTrigger"], descendants: true, read: ElementRef, static: true }, { propertyName: "startDateMirror", first: true, predicate: ["startDateMirror"], descendants: true, read: ElementRef, static: true }, { propertyName: "endDateMirror", first: true, predicate: ["endDateMirror"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<span #startDateMirror role=\"none\" class=\"odx-daterangepicker__mirror\"></span>\n<ng-content select=\"input[odxDaterangepickerStartDateControl]\"></ng-content>\n<span role=\"none\" class=\"odx-daterangepicker__separator\">\u2013</span>\n<span #endDateMirror role=\"none\" class=\"odx-daterangepicker__mirror\"></span>\n<ng-content select=\"input[odxDaterangepickerEndDateControl]\"></ng-content>\n\n<odx-action-group class=\"odx-daterangepicker__trigger-wrapper\">\n <button\n #dropdownTrigger\n odxButton\n size=\"small\"\n variant=\"ghost\"\n class=\"odx-daterangepicker__trigger\"\n [odxDropdown]=\"calendarOverlay\"\n [odxDropdownOptions]=\"{ position: dropdownPosition }\"\n [odxDropdownTriggerElement]=\"dropdownTriggerElement.nativeElement\"\n [odxDropdownHost]=\"null\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n >\n <odx-icon name=\"calendar\"></odx-icon>\n </button>\n <ng-content select=\"[odxButton]\" ngProjectAs=\"[odxButton]\" />\n</odx-action-group>\n\n<ng-template #calendarOverlay>\n <odx-calendar\n [selectedDate]=\"today\"\n [selectedDateRange]=\"value\"\n (selectedDateRangeChange)=\"selectDateRange($event)\"\n [filterFn]=\"filterFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n ></odx-calendar>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }, { kind: "component", type: ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: CalendarComponent, selector: "odx-calendar", inputs: ["selectedDate", "selectedDateRange", "minDate", "maxDate", "filterFn"], outputs: ["selectedDateChange", "selectedDateRangeChange"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "directive", type: i2.DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
204
204
  };
205
205
  DaterangepickerComponent = __decorate([
206
206
  CSSComponent('daterangepicker'),
@@ -213,7 +213,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
213
213
  displayAdjacentDays: false,
214
214
  selectionMode: CalendarSelectionMode.DateRange,
215
215
  }),
216
- ], template: "<span #startDateMirror role=\"none\" class=\"odx-daterangepicker__mirror\"></span>\n<ng-content select=\"input[odxDaterangepickerStartDateControl]\"></ng-content>\n<span role=\"none\" class=\"odx-daterangepicker__separator\">\u2013</span>\n<span #endDateMirror role=\"none\" class=\"odx-daterangepicker__mirror\"></span>\n<ng-content select=\"input[odxDaterangepickerEndDateControl]\"></ng-content>\n\n<odx-action-group class=\"odx-daterangepicker__trigger-wrapper\">\n <button\n #dropdownTrigger\n class=\"odx-daterangepicker__trigger\"\n odxButton\n size=\"small\"\n variant=\"ghost\"\n [odxDropdown]=\"calendarOverlay\"\n [odxDropdownOptions]=\"{ position: dropdownPosition }\"\n [odxDropdownTriggerElement]=\"dropdownTriggerElement.nativeElement\"\n [odxDropdownHost]=\"null\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n >\n <odx-icon name=\"calendar\"></odx-icon>\n </button>\n</odx-action-group>\n\n<ng-template #calendarOverlay>\n <odx-calendar\n [selectedDate]=\"today\"\n [selectedDateRange]=\"value\"\n (selectedDateRangeChange)=\"selectDateRange($event)\"\n [filterFn]=\"filterFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n ></odx-calendar>\n</ng-template>\n" }]
216
+ ], template: "<span #startDateMirror role=\"none\" class=\"odx-daterangepicker__mirror\"></span>\n<ng-content select=\"input[odxDaterangepickerStartDateControl]\"></ng-content>\n<span role=\"none\" class=\"odx-daterangepicker__separator\">\u2013</span>\n<span #endDateMirror role=\"none\" class=\"odx-daterangepicker__mirror\"></span>\n<ng-content select=\"input[odxDaterangepickerEndDateControl]\"></ng-content>\n\n<odx-action-group class=\"odx-daterangepicker__trigger-wrapper\">\n <button\n #dropdownTrigger\n odxButton\n size=\"small\"\n variant=\"ghost\"\n class=\"odx-daterangepicker__trigger\"\n [odxDropdown]=\"calendarOverlay\"\n [odxDropdownOptions]=\"{ position: dropdownPosition }\"\n [odxDropdownTriggerElement]=\"dropdownTriggerElement.nativeElement\"\n [odxDropdownHost]=\"null\"\n [odxDropdownReferenceElement]=\"element.nativeElement\"\n (odxDropdownBeforeClose)=\"onTouched()\"\n >\n <odx-icon name=\"calendar\"></odx-icon>\n </button>\n <ng-content select=\"[odxButton]\" ngProjectAs=\"[odxButton]\" />\n</odx-action-group>\n\n<ng-template #calendarOverlay>\n <odx-calendar\n [selectedDate]=\"today\"\n [selectedDateRange]=\"value\"\n (selectedDateRangeChange)=\"selectDateRange($event)\"\n [filterFn]=\"filterFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n ></odx-calendar>\n</ng-template>\n" }]
217
217
  }], ctorParameters: function () { return []; }, propDecorators: { filterFn: [{
218
218
  type: Input
219
219
  }], minDate: [{
@@ -243,4 +243,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
243
243
  type: HostListener,
244
244
  args: ['keydown.alt.ArrowDown', ['$event']]
245
245
  }] } });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2RhdGVyYW5nZXBpY2tlci9zcmMvbGliL2RhdGVyYW5nZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcmFuZ2VwaWNrZXIvc3JjL2xpYi9kYXRlcmFuZ2VwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBeUIscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFB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SztnQkFVQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBU0MsY0FBYztzQkFEcEIsTUFBTTtnQkFTQSxRQUFRO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCO2dCQVNyQixzQkFBc0I7c0JBRDVCLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBU3pELFVBQVU7c0JBRGhCLGVBQWU7dUJBQUMsb0NBQW9DO2dCQVM5QyxlQUFlO3NCQURyQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVN6RCxhQUFhO3NCQURuQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkEwR3BELG1CQUFtQjtzQkFENUIsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXMgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQ3VzdG9tRm9ybUNvbnRyb2wgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2N1c3RvbS1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHsgQWN0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9hY3Rpb24tZ3JvdXAnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50LCBDYWxlbmRhclNlbGVjdGlvbk1vZGUsIERhdGVGaWx0ZXIsIERhdGVSYW5nZSwgcHJvdmlkZUNhbGVuZGFyQ29uZmlnIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvY2FsZW5kYXInO1xuaW1wb3J0IHsgRHJvcGRvd25EaXJlY3RpdmUsIERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IFBvc2l0aW9uLCBkZWZlckZuLCBpbmplY3RFbGVtZW50LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmb3JtYXQsIHN0YXJ0T2ZEYXkgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBpbmplY3REYXRlcmFuZ2VwaWNrZXJDb25maWcgfSBmcm9tICcuL2RhdGVyYW5nZXBpY2tlci5jb25maWcnO1xuaW1wb3J0IHsgRGF0ZXJhbmdlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IGdldERhdGVyYW5nZXBpY2tlcklucHV0Rm9ybWF0IH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogQSBjb21wb25lbnQgZm9yIHNlbGVjdGluZyBhIGRhdGUgcmFuZ2UsIGludGVncmF0ZWQgd2l0aCBkcm9wZG93bnMgYW5kIGlucHV0IGZpZWxkcyBmb3Igc3RhcnQgYW5kIGVuZCBkYXRlcy5cbiAqIEl0IHN1cHBvcnRzIGN1c3RvbSBjb25maWd1cmF0aW9ucyBmb3IgbWluaW11bSwgbWF4aW11bSBkYXRlcywgYW5kIGRhdGUgZmlsdGVycy4gVGhlIGNvbXBvbmVudCBhbHNvIGhhbmRsZXNcbiAqIHRoZSBkcm9wZG93bidzIGJlaGF2aW9yIGZvciBkYXRlIHNlbGVjdGlvbiBhbmQgYXBwbGllcyBkYXRlIGZvcm1hdHMgYXV0b21hdGljYWxseSBiYXNlZCBvbiBjb25maWd1cmF0aW9uLlxuICogVGhlIGNvbXBvbmVudCBleHRlbmRzIHRoZSBgQ3VzdG9tRm9ybUNvbnRyb2xgIGNsYXNzIHRvIHByb3ZpZGUgZm9ybSBjb250cm9sIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQHNlZSB7Q3VzdG9tRm9ybUNvbnRyb2x9XG4gKi9cbkBDU1NDb21wb25lbnQoJ2RhdGVyYW5nZXBpY2tlcicpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZHgtZGF0ZXJhbmdlcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0ExMXlNb2R1bGUsIEFjdGlvbkdyb3VwQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIENhbGVuZGFyQ29tcG9uZW50LCBEcm9wZG93bk1vZHVsZSwgSWNvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcmFuZ2VwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUNhbGVuZGFyQ29uZmlnKHtcbiAgICAgIGRpc3BsYXlBZGphY2VudERheXM6IGZhbHNlLFxuICAgICAgc2VsZWN0aW9uTW9kZTogQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlLkRhdGVSYW5nZSxcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXJhbmdlcGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tRm9ybUNvbnRyb2w8RGF0ZVJhbmdlIHwgbnVsbD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdERhdGVyYW5nZXBpY2tlckNvbmZpZygpO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZHJvcGRvd24gcGFydCBvZiB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgaXMgb3Blbi5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRyb3Bkb3duLmlzT3BlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRvZGF5J3MgZGF0ZSwgdXNlZCBmb3IgZGVmYXVsdCBzZWxlY3Rpb25zIGFuZCB2YWxpZGF0aW9ucy5cbiAgICpcbiAgICogQHR5cGUge0RhdGV9XG4gICAqL1xuICBwdWJsaWMgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgZGVmaW5lcyBhZGRpdGlvbmFsIHJ1bGVzIGZvciBkaXNhYmxlZCBkYXRlcyB3aXRoaW4gdGhlIHBpY2tlci5cbiAgICpcbiAgICogQHR5cGUge0RhdGVGaWx0ZXIgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIC8vIERpc2FibGVzIGFsbCBXZWRuZXNkYXlzIGluIHRoZSBwaWNrZXIuXG4gICAqIGNvbnN0IGZpbHRlckZuOiBEYXRlRmlsdGVyID0gKGRhdGU6IERhdGUpID0+IGRhdGUuZ2V0RGF5KCkgIT09IDM7XG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZpbHRlckZuOiBEYXRlRmlsdGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBlYXJsaWVzdCBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGluIHRoZSBwaWNrZXIuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGxhdGVzdCBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkIGluIHRoZSBwaWNrZXIuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIGRyb3Bkb3duIHJlbGF0aXZlIHRvIHRoZSBpbnB1dCBmaWVsZHMuXG4gICAqXG4gICAqIEB0eXBlIHtQb3NpdGlvbn1cbiAgICogQGRlZmF1bHQgUG9zaXRpb24uQk9UVE9NXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZHJvcGRvd25Qb3NpdGlvbjogUG9zaXRpb24gPSAnYm90dG9tJztcblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIGRhdGUgcmFuZ2Ugd2hlbiBpdCBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZW1pdHMge0RhdGVSYW5nZX1cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVSYW5nZT4oKTtcblxuICAvKipcbiAgICogRGlyZWN0aXZlIG1hbmFnaW5nIHRoZSBkcm9wZG93biBmdW5jdGlvbmFsaXR5LlxuICAgKlxuICAgKiBAdHlwZSB7RHJvcGRvd25EaXJlY3RpdmV9XG4gICAqL1xuICBAVmlld0NoaWxkKERyb3Bkb3duRGlyZWN0aXZlKVxuICBwdWJsaWMgZHJvcGRvd24hOiBEcm9wZG93bkRpcmVjdGl2ZTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHRyaWdnZXJpbmcgdGhlIGRyb3Bkb3duLlxuICAgKlxuICAgKiBAdHlwZSB7RWxlbWVudFJlZjxIVE1MRWxlbWVudD59XG4gICAqL1xuICBAVmlld0NoaWxkKCdkcm9wZG93blRyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgZHJvcGRvd25UcmlnZ2VyRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBRdWVyeSBsaXN0IG9mIHRoZSBpbnB1dCBjb250cm9scyB3aXRoaW4gdGhlIGRhdGUgcmFuZ2UgcGlja2VyLlxuICAgKlxuICAgKiBAdHlwZSB7UXVlcnlMaXN0PERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZT59XG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSlcbiAgcHVibGljIGRhdGVGaWVsZHMhOiBRdWVyeUxpc3Q8RGF0ZXJhbmdlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlPjtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG1pcnJvcmluZyB0aGUgc3RhcnQgZGF0ZSBpbnB1dCBmaWVsZC5cbiAgICpcbiAgICogQHR5cGUge0VsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+fVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlTWlycm9yJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHN0YXJ0RGF0ZU1pcnJvciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgbWlycm9yaW5nIHRoZSBlbmQgZGF0ZSBpbnB1dCBmaWVsZC5cbiAgICpcbiAgICogQHR5cGUge0VsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+fVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZW5kRGF0ZU1pcnJvcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBlbmREYXRlTWlycm9yITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBjb250cm9sIGZvciB0aGUgc3RhcnQgZGF0ZS5cbiAgICpcbiAgICogQHR5cGUge0RhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZH1cbiAgICovXG4gIHB1YmxpYyBnZXQgc3RhcnREYXRlRmllbGQoKTogRGF0ZXJhbmdlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBbc3RhcnREYXRlLCBfZW5kRGF0ZV0gPSB0aGlzLmRhdGVGaWVsZHM7XG4gICAgcmV0dXJuIHN0YXJ0RGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgY29udHJvbCBmb3IgdGhlIGVuZCBkYXRlLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZXJhbmdlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgcHVibGljIGdldCBlbmREYXRlRmllbGQoKTogRGF0ZXJhbmdlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBbX3N0YXJ0RGF0ZSwgZW5kRGF0ZV0gPSB0aGlzLmRhdGVGaWVsZHM7XG4gICAgcmV0dXJuIGVuZERhdGU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihudWxsKTtcbiAgICBkZXRlY3RDb250cm9sbGVyQ2hhbmdlcyh0aGlzKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVXaWR0aCh0aGlzLnN0YXJ0RGF0ZUZpZWxkLCB0aGlzLnN0YXJ0RGF0ZU1pcnJvcik7XG4gICAgdGhpcy51cGRhdGVXaWR0aCh0aGlzLmVuZERhdGVGaWVsZCwgdGhpcy5lbmREYXRlTWlycm9yKTtcbiAgICB0aGlzLmhhbmRsZURhdGVGaWVsZENoYW5nZXMoKTtcbiAgICB0aGlzLmhhbmRsZURhdGVGaWVsZEZvY3VzKCk7XG5cbiAgICBkZWZlckZuKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy52YWx1ZSB8fCAhdGhpcy52YWx1ZS5zdGFydCB8fCAhdGhpcy52YWx1ZS5lbmQpIHJldHVybjtcbiAgICAgIHRoaXMudXBkYXRlSW50ZXJuYWxWYWx1ZSh7XG4gICAgICAgIHN0YXJ0OiBzdGFydE9mRGF5KHRoaXMudmFsdWUuc3RhcnQpLFxuICAgICAgICBlbmQ6IHN0YXJ0T2ZEYXkodGhpcy52YWx1ZS5lbmQpLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyBhIGRhdGUgcmFuZ2UsIHVwZGF0ZXMgdGhlIGZvcm0gdmFsdWUsIGFuZCBlbWl0cyB0aGUgc2VsZWN0ZWQgcmFuZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RGF0ZVJhbmdlIHwgbnVsbH0gdmFsdWUgLSBUaGUgZGF0ZSByYW5nZSB0byBzZWxlY3QuXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0RGF0ZVJhbmdlKHZhbHVlOiBEYXRlUmFuZ2UgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuc3RhcnQgfHwgIXZhbHVlLmVuZCkgcmV0dXJuO1xuXG4gICAgdGhpcy51cGRhdGVJbnRlcm5hbFZhbHVlKHZhbHVlKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlSW50ZXJuYWxWYWx1ZSh7IHN0YXJ0OiBudWxsLCBlbmQ6IG51bGwgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlSW50ZXJuYWxWYWx1ZSh2YWx1ZTogRGF0ZVJhbmdlKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy51cGRhdGVTdGFydERhdGVGaWVsZCh2YWx1ZS5zdGFydCk7XG4gICAgdGhpcy51cGRhdGVFbmREYXRlRmllbGQodmFsdWUuZW5kKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVEYXRlRmllbGRDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnREYXRlRmllbGQ/LnZhbHVlQ2hhbmdlJC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZSh7IHN0YXJ0OiB0aGlzLnN0YXJ0RGF0ZUZpZWxkPy52YWx1ZUFzRGF0ZSA/PyBudWxsLCBlbmQ6IHRoaXMuZW5kRGF0ZUZpZWxkPy52YWx1ZUFzRGF0ZSA/PyBudWxsIH0pO1xuICAgICAgdGhpcy51cGRhdGVXaWR0aCh0aGlzLnN0YXJ0RGF0ZUZpZWxkLCB0aGlzLnN0YXJ0RGF0ZU1pcnJvciwgdmFsdWUpO1xuICAgIH0pO1xuICAgIHRoaXMuZW5kRGF0ZUZpZWxkPy52YWx1ZUNoYW5nZSQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoeyBzdGFydDogdGhpcy5zdGFydERhdGVGaWVsZD8udmFsdWVBc0RhdGUgPz8gbnVsbCwgZW5kOiB0aGlzLmVuZERhdGVGaWVsZD8udmFsdWVBc0RhdGUgPz8gbnVsbCB9KTtcbiAgICAgIHRoaXMudXBkYXRlV2lkdGgodGhpcy5lbmREYXRlRmllbGQsIHRoaXMuZW5kRGF0ZU1pcnJvciwgdmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpZHRoKHRhcmdldDogRGF0ZXJhbmdlcGlja2VySW5wdXRDb250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkLCBzb3VyY2U6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCB2YWx1ZSA9ICcnKSB7XG4gICAgY29uc3QgY29tcGVuc2F0aW9uUHggPSAyO1xuICAgIHNvdXJjZS5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50ID0gdmFsdWUgfHwgdGFyZ2V0Py5wbGFjZWhvbGRlciB8fCBudWxsO1xuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgIHRhcmdldC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtzb3VyY2UubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCArIGNvbXBlbnNhdGlvblB4fXB4YDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRGF0ZUZpZWxkRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydERhdGVGaWVsZD8uZm9jdXNlZC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoaXNGb2N1c2VkKSA9PiB7XG4gICAgICBpZiAoIWlzRm9jdXNlZCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmVuZERhdGVGaWVsZD8uZm9jdXNlZC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoaXNGb2N1c2VkKSA9PiB7XG4gICAgICBpZiAoIWlzRm9jdXNlZCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYWx0LkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvcGVuRGF0ZXJhbmdlcGlja2VyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5pc1JlYWRvbmx5IHx8IHRoaXMuaXNEaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5kcm9wZG93bi5vcGVuKGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhcnREYXRlRmllbGQoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RhcnREYXRlRmllbGQpIHJldHVybjtcblxuICAgIGNvbnN0IGRhdGVGb3JtYXQgPSBnZXREYXRlcmFuZ2VwaWNrZXJJbnB1dEZvcm1hdCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zdGFydERhdGVGaWVsZC5uYXRpdmVFbGVtZW50VmFsdWUgPSBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJyc7XG4gICAgdGhpcy51cGRhdGVXaWR0aCh0aGlzLnN0YXJ0RGF0ZUZpZWxkLCB0aGlzLnN0YXJ0RGF0ZU1pcnJvciwgZGF0ZSA/IGZvcm1hdChkYXRlLCBkYXRlRm9ybWF0KSA6ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRW5kRGF0ZUZpZWxkKGRhdGU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVuZERhdGVGaWVsZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGF0ZUZvcm1hdCA9IGdldERhdGVyYW5nZXBpY2tlcklucHV0Rm9ybWF0KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmVuZERhdGVGaWVsZC5uYXRpdmVFbGVtZW50VmFsdWUgPSBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJyc7XG4gICAgdGhpcy51cGRhdGVXaWR0aCh0aGlzLmVuZERhdGVGaWVsZCwgdGhpcy5lbmREYXRlTWlycm9yLCBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJycpO1xuICB9XG59XG4iLCI8c3BhbiAjc3RhcnREYXRlTWlycm9yIHJvbGU9XCJub25lXCIgY2xhc3M9XCJvZHgtZGF0ZXJhbmdlcGlja2VyX19taXJyb3JcIj48L3NwYW4+XG48bmctY29udGVudCBzZWxlY3Q9XCJpbnB1dFtvZHhEYXRlcmFuZ2VwaWNrZXJTdGFydERhdGVDb250cm9sXVwiPjwvbmctY29udGVudD5cbjxzcGFuIHJvbGU9XCJub25lXCIgY2xhc3M9XCJvZHgtZGF0ZXJhbmdlcGlja2VyX19zZXBhcmF0b3JcIj7igJM8L3NwYW4+XG48c3BhbiAjZW5kRGF0ZU1pcnJvciByb2xlPVwibm9uZVwiIGNsYXNzPVwib2R4LWRhdGVyYW5nZXBpY2tlcl9fbWlycm9yXCI+PC9zcGFuPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiaW5wdXRbb2R4RGF0ZXJhbmdlcGlja2VyRW5kRGF0ZUNvbnRyb2xdXCI+PC9uZy1jb250ZW50PlxuXG48b2R4LWFjdGlvbi1ncm91cCBjbGFzcz1cIm9keC1kYXRlcmFuZ2VwaWNrZXJfX3RyaWdnZXItd3JhcHBlclwiPlxuICA8YnV0dG9uXG4gICAgI2Ryb3Bkb3duVHJpZ2dlclxuICAgIGNsYXNzPVwib2R4LWRhdGVyYW5nZXBpY2tlcl9fdHJpZ2dlclwiXG4gICAgb2R4QnV0dG9uXG4gICAgc2l6ZT1cInNtYWxsXCJcbiAgICB2YXJpYW50PVwiZ2hvc3RcIlxuICAgIFtvZHhEcm9wZG93bl09XCJjYWxlbmRhck92ZXJsYXlcIlxuICAgIFtvZHhEcm9wZG93bk9wdGlvbnNdPVwieyBwb3NpdGlvbjogZHJvcGRvd25Qb3NpdGlvbiB9XCJcbiAgICBbb2R4RHJvcGRvd25UcmlnZ2VyRWxlbWVudF09XCJkcm9wZG93blRyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIFtvZHhEcm9wZG93bkhvc3RdPVwibnVsbFwiXG4gICAgW29keERyb3Bkb3duUmVmZXJlbmNlRWxlbWVudF09XCJlbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIChvZHhEcm9wZG93bkJlZm9yZUNsb3NlKT1cIm9uVG91Y2hlZCgpXCJcbiAgPlxuICAgIDxvZHgtaWNvbiBuYW1lPVwiY2FsZW5kYXJcIj48L29keC1pY29uPlxuICA8L2J1dHRvbj5cbjwvb2R4LWFjdGlvbi1ncm91cD5cblxuPG5nLXRlbXBsYXRlICNjYWxlbmRhck92ZXJsYXk+XG4gIDxvZHgtY2FsZW5kYXJcbiAgICBbc2VsZWN0ZWREYXRlXT1cInRvZGF5XCJcbiAgICBbc2VsZWN0ZWREYXRlUmFuZ2VdPVwidmFsdWVcIlxuICAgIChzZWxlY3RlZERhdGVSYW5nZUNoYW5nZSk9XCJzZWxlY3REYXRlUmFuZ2UoJGV2ZW50KVwiXG4gICAgW2ZpbHRlckZuXT1cImZpbHRlckZuXCJcbiAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICBjZGtUcmFwRm9jdXNcbiAgICBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZVxuICA+PC9vZHgtY2FsZW5kYXI+XG48L25nLXRlbXBsYXRlPlxuIl19
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2RhdGVyYW5nZXBpY2tlci9zcmMvbGliL2RhdGVyYW5nZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9kYXRlcmFuZ2VwaWNrZXIvc3JjL2xpYi9kYXRlcmFuZ2VwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBeUIscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFB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QVVDLE9BQU87c0JBRGIsS0FBSztnQkFVQyxPQUFPO3NCQURiLEtBQUs7Z0JBVUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVNDLGNBQWM7c0JBRHBCLE1BQU07Z0JBU0EsUUFBUTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQjtnQkFTckIsc0JBQXNCO3NCQUQ1QixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVN6RCxVQUFVO3NCQURoQixlQUFlO3VCQUFDLG9DQUFvQztnQkFTOUMsZUFBZTtzQkFEckIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFTekQsYUFBYTtzQkFEbkIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBMEdwRCxtQkFBbUI7c0JBRDVCLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEN1c3RvbUZvcm1Db250cm9sIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9jdXN0b20tZm9ybS1jb250cm9sJztcbmltcG9ydCB7IEFjdGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYWN0aW9uLWdyb3VwJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCwgQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlLCBEYXRlRmlsdGVyLCBEYXRlUmFuZ2UsIHByb3ZpZGVDYWxlbmRhckNvbmZpZyB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7IERyb3Bkb3duRGlyZWN0aXZlLCBEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBQb3NpdGlvbiwgZGVmZXJGbiwgaW5qZWN0RWxlbWVudCwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgZm9ybWF0LCBzdGFydE9mRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZXJhbmdlcGlja2VyQ29uZmlnIH0gZnJvbSAnLi9kYXRlcmFuZ2VwaWNrZXIuY29uZmlnJztcbmltcG9ydCB7IERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBnZXREYXRlcmFuZ2VwaWNrZXJJbnB1dEZvcm1hdCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IGZvciBzZWxlY3RpbmcgYSBkYXRlIHJhbmdlLCBpbnRlZ3JhdGVkIHdpdGggZHJvcGRvd25zIGFuZCBpbnB1dCBmaWVsZHMgZm9yIHN0YXJ0IGFuZCBlbmQgZGF0ZXMuXG4gKiBJdCBzdXBwb3J0cyBjdXN0b20gY29uZmlndXJhdGlvbnMgZm9yIG1pbmltdW0sIG1heGltdW0gZGF0ZXMsIGFuZCBkYXRlIGZpbHRlcnMuIFRoZSBjb21wb25lbnQgYWxzbyBoYW5kbGVzXG4gKiB0aGUgZHJvcGRvd24ncyBiZWhhdmlvciBmb3IgZGF0ZSBzZWxlY3Rpb24gYW5kIGFwcGxpZXMgZGF0ZSBmb3JtYXRzIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gY29uZmlndXJhdGlvbi5cbiAqIFRoZSBjb21wb25lbnQgZXh0ZW5kcyB0aGUgYEN1c3RvbUZvcm1Db250cm9sYCBjbGFzcyB0byBwcm92aWRlIGZvcm0gY29udHJvbCBmdW5jdGlvbmFsaXR5LlxuICpcbiAqIEBzZWUge0N1c3RvbUZvcm1Db250cm9sfVxuICovXG5AQ1NTQ29tcG9uZW50KCdkYXRlcmFuZ2VwaWNrZXInKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2R4LWRhdGVyYW5nZXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBMTF5TW9kdWxlLCBBY3Rpb25Hcm91cENvbXBvbmVudCwgQnV0dG9uQ29tcG9uZW50LCBDYWxlbmRhckNvbXBvbmVudCwgRHJvcGRvd25Nb2R1bGUsIEljb25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHByb3ZpZGVDYWxlbmRhckNvbmZpZyh7XG4gICAgICBkaXNwbGF5QWRqYWNlbnREYXlzOiBmYWxzZSxcbiAgICAgIHNlbGVjdGlvbk1vZGU6IENhbGVuZGFyU2VsZWN0aW9uTW9kZS5EYXRlUmFuZ2UsXG4gICAgfSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVyYW5nZXBpY2tlckNvbXBvbmVudCBleHRlbmRzIEN1c3RvbUZvcm1Db250cm9sPERhdGVSYW5nZSB8IG51bGw+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWcgPSBpbmplY3REYXRlcmFuZ2VwaWNrZXJDb25maWcoKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGRyb3Bkb3duIHBhcnQgb2YgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGlzIG9wZW4uXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kcm9wZG93bi5pc09wZW47XG4gIH1cblxuICAvKipcbiAgICogUmVwcmVzZW50cyB0b2RheSdzIGRhdGUsIHVzZWQgZm9yIGRlZmF1bHQgc2VsZWN0aW9ucyBhbmQgdmFsaWRhdGlvbnMuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlfVxuICAgKi9cbiAgcHVibGljIHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGRlZmluZXMgYWRkaXRpb25hbCBydWxlcyBmb3IgZGlzYWJsZWQgZGF0ZXMgd2l0aGluIHRoZSBwaWNrZXIuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlRmlsdGVyIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiAvLyBEaXNhYmxlcyBhbGwgV2VkbmVzZGF5cyBpbiB0aGUgcGlja2VyLlxuICAgKiBjb25zdCBmaWx0ZXJGbjogRGF0ZUZpbHRlciA9IChkYXRlOiBEYXRlKSA9PiBkYXRlLmdldERheSgpICE9PSAzO1xuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaWx0ZXJGbjogRGF0ZUZpbHRlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgZWFybGllc3QgZGF0ZSB0aGF0IGNhbiBiZSBzZWxlY3RlZCBpbiB0aGUgcGlja2VyLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZSB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlc3QgZGF0ZSB0aGF0IGNhbiBiZSBzZWxlY3RlZCBpbiB0aGUgcGlja2VyLlxuICAgKlxuICAgKiBAdHlwZSB7RGF0ZSB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biByZWxhdGl2ZSB0byB0aGUgaW5wdXQgZmllbGRzLlxuICAgKlxuICAgKiBAdHlwZSB7UG9zaXRpb259XG4gICAqIEBkZWZhdWx0IFBvc2l0aW9uLkJPVFRPTVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRyb3Bkb3duUG9zaXRpb246IFBvc2l0aW9uID0gJ2JvdHRvbSc7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBzZWxlY3RlZCBkYXRlIHJhbmdlIHdoZW4gaXQgY2hhbmdlcy5cbiAgICpcbiAgICogQGVtaXRzIHtEYXRlUmFuZ2V9XG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlUmFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIERpcmVjdGl2ZSBtYW5hZ2luZyB0aGUgZHJvcGRvd24gZnVuY3Rpb25hbGl0eS5cbiAgICpcbiAgICogQHR5cGUge0Ryb3Bkb3duRGlyZWN0aXZlfVxuICAgKi9cbiAgQFZpZXdDaGlsZChEcm9wZG93bkRpcmVjdGl2ZSlcbiAgcHVibGljIGRyb3Bkb3duITogRHJvcGRvd25EaXJlY3RpdmU7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCB0cmlnZ2VyaW5nIHRoZSBkcm9wZG93bi5cbiAgICpcbiAgICogQHR5cGUge0VsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+fVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25UcmlnZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGRyb3Bkb3duVHJpZ2dlckVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAvKipcbiAgICogUXVlcnkgbGlzdCBvZiB0aGUgaW5wdXQgY29udHJvbHMgd2l0aGluIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICpcbiAgICogQHR5cGUge1F1ZXJ5TGlzdDxEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmU+fVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUpXG4gIHB1YmxpYyBkYXRlRmllbGRzITogUXVlcnlMaXN0PERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZT47XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBtaXJyb3JpbmcgdGhlIHN0YXJ0IGRhdGUgaW5wdXQgZmllbGQuXG4gICAqXG4gICAqIEB0eXBlIHtFbGVtZW50UmVmPEhUTUxFbGVtZW50Pn1cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ3N0YXJ0RGF0ZU1pcnJvcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBzdGFydERhdGVNaXJyb3IhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG1pcnJvcmluZyB0aGUgZW5kIGRhdGUgaW5wdXQgZmllbGQuXG4gICAqXG4gICAqIEB0eXBlIHtFbGVtZW50UmVmPEhUTUxFbGVtZW50Pn1cbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2VuZERhdGVNaXJyb3InLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgZW5kRGF0ZU1pcnJvciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgY29udHJvbCBmb3IgdGhlIHN0YXJ0IGRhdGUuXG4gICAqXG4gICAqIEB0eXBlIHtEYXRlcmFuZ2VwaWNrZXJJbnB1dENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWR9XG4gICAqL1xuICBwdWJsaWMgZ2V0IHN0YXJ0RGF0ZUZpZWxkKCk6IERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgW3N0YXJ0RGF0ZSwgX2VuZERhdGVdID0gdGhpcy5kYXRlRmllbGRzO1xuICAgIHJldHVybiBzdGFydERhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGlucHV0IGNvbnRyb2wgZm9yIHRoZSBlbmQgZGF0ZS5cbiAgICpcbiAgICogQHR5cGUge0RhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZH1cbiAgICovXG4gIHB1YmxpYyBnZXQgZW5kRGF0ZUZpZWxkKCk6IERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgW19zdGFydERhdGUsIGVuZERhdGVdID0gdGhpcy5kYXRlRmllbGRzO1xuICAgIHJldHVybiBlbmREYXRlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIobnVsbCk7XG4gICAgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXModGhpcykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlV2lkdGgodGhpcy5zdGFydERhdGVGaWVsZCwgdGhpcy5zdGFydERhdGVNaXJyb3IpO1xuICAgIHRoaXMudXBkYXRlV2lkdGgodGhpcy5lbmREYXRlRmllbGQsIHRoaXMuZW5kRGF0ZU1pcnJvcik7XG4gICAgdGhpcy5oYW5kbGVEYXRlRmllbGRDaGFuZ2VzKCk7XG4gICAgdGhpcy5oYW5kbGVEYXRlRmllbGRGb2N1cygpO1xuXG4gICAgZGVmZXJGbigoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMudmFsdWUgfHwgIXRoaXMudmFsdWUuc3RhcnQgfHwgIXRoaXMudmFsdWUuZW5kKSByZXR1cm47XG4gICAgICB0aGlzLnVwZGF0ZUludGVybmFsVmFsdWUoe1xuICAgICAgICBzdGFydDogc3RhcnRPZkRheSh0aGlzLnZhbHVlLnN0YXJ0KSxcbiAgICAgICAgZW5kOiBzdGFydE9mRGF5KHRoaXMudmFsdWUuZW5kKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSBkYXRlIHJhbmdlLCB1cGRhdGVzIHRoZSBmb3JtIHZhbHVlLCBhbmQgZW1pdHMgdGhlIHNlbGVjdGVkIHJhbmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGVSYW5nZSB8IG51bGx9IHZhbHVlIC0gVGhlIGRhdGUgcmFuZ2UgdG8gc2VsZWN0LlxuICAgKi9cbiAgcHVibGljIHNlbGVjdERhdGVSYW5nZSh2YWx1ZTogRGF0ZVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLnN0YXJ0IHx8ICF2YWx1ZS5lbmQpIHJldHVybjtcblxuICAgIHRoaXMudXBkYXRlSW50ZXJuYWxWYWx1ZSh2YWx1ZSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUludGVybmFsVmFsdWUoeyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUludGVybmFsVmFsdWUodmFsdWU6IERhdGVSYW5nZSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlU3RhcnREYXRlRmllbGQodmFsdWUuc3RhcnQpO1xuICAgIHRoaXMudXBkYXRlRW5kRGF0ZUZpZWxkKHZhbHVlLmVuZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRGF0ZUZpZWxkQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0RGF0ZUZpZWxkPy52YWx1ZUNoYW5nZSQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoeyBzdGFydDogdGhpcy5zdGFydERhdGVGaWVsZD8udmFsdWVBc0RhdGUgPz8gbnVsbCwgZW5kOiB0aGlzLmVuZERhdGVGaWVsZD8udmFsdWVBc0RhdGUgPz8gbnVsbCB9KTtcbiAgICAgIHRoaXMudXBkYXRlV2lkdGgodGhpcy5zdGFydERhdGVGaWVsZCwgdGhpcy5zdGFydERhdGVNaXJyb3IsIHZhbHVlKTtcbiAgICB9KTtcbiAgICB0aGlzLmVuZERhdGVGaWVsZD8udmFsdWVDaGFuZ2UkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHsgc3RhcnQ6IHRoaXMuc3RhcnREYXRlRmllbGQ/LnZhbHVlQXNEYXRlID8/IG51bGwsIGVuZDogdGhpcy5lbmREYXRlRmllbGQ/LnZhbHVlQXNEYXRlID8/IG51bGwgfSk7XG4gICAgICB0aGlzLnVwZGF0ZVdpZHRoKHRoaXMuZW5kRGF0ZUZpZWxkLCB0aGlzLmVuZERhdGVNaXJyb3IsIHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaWR0aCh0YXJnZXQ6IERhdGVyYW5nZXBpY2tlcklucHV0Q29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZCwgc291cmNlOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgdmFsdWUgPSAnJyk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBlbnNhdGlvblB4ID0gMjtcbiAgICBzb3VyY2UubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCA9IHZhbHVlIHx8IHRhcmdldD8ucGxhY2Vob2xkZXIgfHwgbnVsbDtcbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICBkZWZlckZuKCgpID0+ICh0YXJnZXQuZWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7c291cmNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyBjb21wZW5zYXRpb25QeH1weGApKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRGF0ZUZpZWxkRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydERhdGVGaWVsZD8uZm9jdXNlZC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoaXNGb2N1c2VkKSA9PiB7XG4gICAgICBpZiAoIWlzRm9jdXNlZCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmVuZERhdGVGaWVsZD8uZm9jdXNlZC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoaXNGb2N1c2VkKSA9PiB7XG4gICAgICBpZiAoIWlzRm9jdXNlZCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYWx0LkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvcGVuRGF0ZXJhbmdlcGlja2VyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5pc1JlYWRvbmx5IHx8IHRoaXMuaXNEaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5kcm9wZG93bi5vcGVuKGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhcnREYXRlRmllbGQoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RhcnREYXRlRmllbGQpIHJldHVybjtcblxuICAgIGNvbnN0IGRhdGVGb3JtYXQgPSBnZXREYXRlcmFuZ2VwaWNrZXJJbnB1dEZvcm1hdCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zdGFydERhdGVGaWVsZC5uYXRpdmVFbGVtZW50VmFsdWUgPSBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJyc7XG4gICAgdGhpcy51cGRhdGVXaWR0aCh0aGlzLnN0YXJ0RGF0ZUZpZWxkLCB0aGlzLnN0YXJ0RGF0ZU1pcnJvciwgZGF0ZSA/IGZvcm1hdChkYXRlLCBkYXRlRm9ybWF0KSA6ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRW5kRGF0ZUZpZWxkKGRhdGU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVuZERhdGVGaWVsZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGF0ZUZvcm1hdCA9IGdldERhdGVyYW5nZXBpY2tlcklucHV0Rm9ybWF0KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmVuZERhdGVGaWVsZC5uYXRpdmVFbGVtZW50VmFsdWUgPSBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJyc7XG4gICAgdGhpcy51cGRhdGVXaWR0aCh0aGlzLmVuZERhdGVGaWVsZCwgdGhpcy5lbmREYXRlTWlycm9yLCBkYXRlID8gZm9ybWF0KGRhdGUsIGRhdGVGb3JtYXQpIDogJycpO1xuICB9XG59XG4iLCI8c3BhbiAjc3RhcnREYXRlTWlycm9yIHJvbGU9XCJub25lXCIgY2xhc3M9XCJvZHgtZGF0ZXJhbmdlcGlja2VyX19taXJyb3JcIj48L3NwYW4+XG48bmctY29udGVudCBzZWxlY3Q9XCJpbnB1dFtvZHhEYXRlcmFuZ2VwaWNrZXJTdGFydERhdGVDb250cm9sXVwiPjwvbmctY29udGVudD5cbjxzcGFuIHJvbGU9XCJub25lXCIgY2xhc3M9XCJvZHgtZGF0ZXJhbmdlcGlja2VyX19zZXBhcmF0b3JcIj7igJM8L3NwYW4+XG48c3BhbiAjZW5kRGF0ZU1pcnJvciByb2xlPVwibm9uZVwiIGNsYXNzPVwib2R4LWRhdGVyYW5nZXBpY2tlcl9fbWlycm9yXCI+PC9zcGFuPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiaW5wdXRbb2R4RGF0ZXJhbmdlcGlja2VyRW5kRGF0ZUNvbnRyb2xdXCI+PC9uZy1jb250ZW50PlxuXG48b2R4LWFjdGlvbi1ncm91cCBjbGFzcz1cIm9keC1kYXRlcmFuZ2VwaWNrZXJfX3RyaWdnZXItd3JhcHBlclwiPlxuICA8YnV0dG9uXG4gICAgI2Ryb3Bkb3duVHJpZ2dlclxuICAgIG9keEJ1dHRvblxuICAgIHNpemU9XCJzbWFsbFwiXG4gICAgdmFyaWFudD1cImdob3N0XCJcbiAgICBjbGFzcz1cIm9keC1kYXRlcmFuZ2VwaWNrZXJfX3RyaWdnZXJcIlxuICAgIFtvZHhEcm9wZG93bl09XCJjYWxlbmRhck92ZXJsYXlcIlxuICAgIFtvZHhEcm9wZG93bk9wdGlvbnNdPVwieyBwb3NpdGlvbjogZHJvcGRvd25Qb3NpdGlvbiB9XCJcbiAgICBbb2R4RHJvcGRvd25UcmlnZ2VyRWxlbWVudF09XCJkcm9wZG93blRyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIFtvZHhEcm9wZG93bkhvc3RdPVwibnVsbFwiXG4gICAgW29keERyb3Bkb3duUmVmZXJlbmNlRWxlbWVudF09XCJlbGVtZW50Lm5hdGl2ZUVsZW1lbnRcIlxuICAgIChvZHhEcm9wZG93bkJlZm9yZUNsb3NlKT1cIm9uVG91Y2hlZCgpXCJcbiAgPlxuICAgIDxvZHgtaWNvbiBuYW1lPVwiY2FsZW5kYXJcIj48L29keC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW29keEJ1dHRvbl1cIiBuZ1Byb2plY3RBcz1cIltvZHhCdXR0b25dXCIgLz5cbjwvb2R4LWFjdGlvbi1ncm91cD5cblxuPG5nLXRlbXBsYXRlICNjYWxlbmRhck92ZXJsYXk+XG4gIDxvZHgtY2FsZW5kYXJcbiAgICBbc2VsZWN0ZWREYXRlXT1cInRvZGF5XCJcbiAgICBbc2VsZWN0ZWREYXRlUmFuZ2VdPVwidmFsdWVcIlxuICAgIChzZWxlY3RlZERhdGVSYW5nZUNoYW5nZSk9XCJzZWxlY3REYXRlUmFuZ2UoJGV2ZW50KVwiXG4gICAgW2ZpbHRlckZuXT1cImZpbHRlckZuXCJcbiAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICBjZGtUcmFwRm9jdXNcbiAgICBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZVxuICA+PC9vZHgtY2FsZW5kYXI+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,8 +1,6 @@
1
1
  import { __decorate } from "tslib";
2
- import { transition, trigger, useAnimation } from '@angular/animations';
3
- import { ChangeDetectionStrategy, Component, HostListener, Input, Output, ViewEncapsulation, booleanAttribute, inject } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, HostListener, Input, Output, ViewChild, ViewEncapsulation, booleanAttribute, inject, } from '@angular/core';
4
3
  import { CoreModule } from '@odx/angular';
5
- import { fadeIn, fadeOut, slideInLeft, slideOutLeft } from '@odx/angular/animations';
6
4
  import { A11yModule } from '@odx/angular/cdk/a11y';
7
5
  import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
8
6
  import { AreaHeaderModule } from '@odx/angular/components/area-header';
@@ -12,7 +10,8 @@ import { LinkDirective } from '@odx/angular/components/link';
12
10
  import { LogoDirective } from '@odx/angular/components/logo';
13
11
  import { CSSComponent } from '@odx/angular/internal';
14
12
  import { TranslatePipe, provideTranslations } from '@odx/angular/internal/translate';
15
- import { injectElement, trackByIndex } from '@odx/angular/utils';
13
+ import { injectElement, trackByIndex, untilDestroyed } from '@odx/angular/utils';
14
+ import { fromEvent, tap } from 'rxjs';
16
15
  import { createMainMenuLinks$ } from './helpers';
17
16
  import mainMenuTranslations from './main-menu.i18n';
18
17
  import { MainMenuService } from './main-menu.service';
@@ -30,9 +29,11 @@ import * as i6 from "@odx/angular/components/icon";
30
29
  */
31
30
  export let MainMenuComponent = class MainMenuComponent {
32
31
  constructor() {
32
+ this.takeUntilDestroyed = untilDestroyed();
33
33
  this.mainMenuService = inject(MainMenuService);
34
34
  this.mainMenuLinks$ = createMainMenuLinks$();
35
35
  this.trackByIndex = trackByIndex;
36
+ this.isOpen$ = this.mainMenuService.isOpen$.pipe(tap((isOpen) => this.slideMenuInner(isOpen)));
36
37
  this.element = injectElement();
37
38
  /**
38
39
  * Optional input property for the subtitle of the menu.
@@ -72,29 +73,36 @@ export let MainMenuComponent = class MainMenuComponent {
72
73
  get isOpen() {
73
74
  return this.mainMenuService.isOpen();
74
75
  }
76
+ ngAfterViewInit() {
77
+ fromEvent(this.menuInner?.nativeElement, 'toggle')
78
+ .pipe(tap((e) => 'newState' in e && this.mainMenuService.toggle(e.newState === 'open')), this.takeUntilDestroyed())
79
+ .subscribe();
80
+ }
75
81
  /**
76
82
  * Closes the menu.
77
83
  */
78
84
  close() {
79
85
  this.mainMenuService.close();
80
86
  }
87
+ slideMenuInner(isOpen = false) {
88
+ const { nativeElement } = this.menuInner || {};
89
+ if (!(nativeElement && this.isPopoverElement(nativeElement)))
90
+ return;
91
+ const method = isOpen ? 'showPopover' : 'hidePopover';
92
+ nativeElement[method]();
93
+ }
94
+ isPopoverElement(element) {
95
+ return element.hasAttribute('popover') && 'showPopover' in element && 'hidePopover' in element;
96
+ }
81
97
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MainMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: MainMenuComponent, isStandalone: true, selector: "odx-main-menu", inputs: { title: "title", subtitle: "subtitle", copyright: "copyright", isOpen: ["isOpen", "isOpen", booleanAttribute] }, outputs: { menuOpen: "menuOpen" }, host: { listeners: { "window:keyup.esc": "close()" }, properties: { "class.is-open": "isOpen" } }, providers: [provideTranslations(mainMenuTranslations)], ngImport: i0, template: "<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: CoreModule }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i4.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i4.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i5.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i6.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }, { kind: "directive", type: LinkDirective, selector: "a[odxLink]" }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], animations: [
83
- trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),
84
- trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),
85
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
98
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: MainMenuComponent, isStandalone: true, selector: "odx-main-menu", inputs: { title: "title", subtitle: "subtitle", copyright: "copyright", isOpen: ["isOpen", "isOpen", booleanAttribute] }, outputs: { menuOpen: "menuOpen" }, host: { listeners: { "window:keyup.esc": "close()" }, properties: { "class.is-open": "isOpen" } }, providers: [provideTranslations(mainMenuTranslations)], viewQueries: [{ propertyName: "menuInner", first: true, predicate: ["menuInner"], descendants: true }], ngImport: i0, template: "<aside class=\"odx-main-menu__inner\" [ngClass]=\"(isOpen$ | async) ? 'opened' : 'closed'\" #menuInner popover=\"auto\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: CoreModule }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i4.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i4.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i5.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i6.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "pipe", type: TranslatePipe, name: "odxTranslate" }, { kind: "directive", type: LinkDirective, selector: "a[odxLink]" }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
86
99
  };
87
100
  MainMenuComponent = __decorate([
88
101
  CSSComponent('main-menu')
89
102
  ], MainMenuComponent);
90
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MainMenuComponent, decorators: [{
91
104
  type: Component,
92
- args: [{ selector: 'odx-main-menu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective, DynamicViewDirective], providers: [provideTranslations(mainMenuTranslations)], standalone: true, host: {
93
- '[class.is-open]': 'isOpen',
94
- }, animations: [
95
- trigger('menuAnimation', [transition(':enter', [useAnimation(slideInLeft)]), transition(':leave', [useAnimation(slideOutLeft)])]),
96
- trigger('overlayAnimation', [transition(':enter', [useAnimation(fadeIn())]), transition(':leave', [useAnimation(fadeOut())])]),
97
- ], template: "<aside @menuAnimation class=\"odx-main-menu__inner\" cdkTrapFocus cdkTrapFocusAutoCapture *ngIf=\"menuOpen | async\">\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n<div @overlayAnimation class=\"odx-main-menu__overlay\" (click)=\"close()\" *ngIf=\"menuOpen | async\"></div>\n" }]
105
+ args: [{ selector: 'odx-main-menu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective, DynamicViewDirective], providers: [provideTranslations(mainMenuTranslations)], standalone: true, host: { '[class.is-open]': 'isOpen' }, template: "<aside class=\"odx-main-menu__inner\" [ngClass]=\"(isOpen$ | async) ? 'opened' : 'closed'\" #menuInner popover=\"auto\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\">\n <odx-icon name=\"close\" iconSet=\"core\"></odx-icon>\n </button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n <odx-area-header-subtitle *ngIf=\"subtitle\">\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content></ng-content>\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\"></ng-content>\n <a odxLink [href]=\"link.url\" target=\"_blank\" *ngFor=\"let link of mainMenuLinks$ | async; trackBy: trackByIndex\">\n {{ link.name | odxTranslate | async }}\n </a>\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\"></odx-logo>\n <p class=\"odx-text odx-text--small\" *ngIf=\"copyright\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n </div>\n</aside>\n" }]
98
106
  }], propDecorators: { title: [{
99
107
  type: Input,
100
108
  args: [{ required: true }]
@@ -107,8 +115,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
107
115
  args: [{ transform: booleanAttribute }]
108
116
  }], menuOpen: [{
109
117
  type: Output
118
+ }], menuInner: [{
119
+ type: ViewChild,
120
+ args: ['menuInner']
110
121
  }], close: [{
111
122
  type: HostListener,
112
123
  args: ['window:keyup.esc']
113
124
  }] } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21haW4tbWVudS9zcmMvbGliL21haW4tbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9tYWluLW1lbnUvc3JjL2xpYi9tYWluLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQXNCLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUs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QUFVLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNqSSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDL0g7OEJBZU0sS0FBSztzQkFEWCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFVbEIsUUFBUTtzQkFEZCxLQUFLO2dCQVVDLFNBQVM7c0JBRGYsS0FBSztnQkFVSyxNQUFNO3NCQURoQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQW9CL0IsUUFBUTtzQkFEZCxNQUFNO2dCQU9BLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0cmFuc2l0aW9uLCB0cmlnZ2VyLCB1c2VBbmltYXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIGJvb2xlYW5BdHRyaWJ1dGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBmYWRlSW4sIGZhZGVPdXQsIHNsaWRlSW5MZWZ0LCBzbGlkZU91dExlZnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IER5bmFtaWNUZXh0Q29udGVudCwgRHluYW1pY1ZpZXdEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBBcmVhSGVhZGVyTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYXJlYS1oZWFkZXInO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IExpbmtEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9saW5rJztcbmltcG9ydCB7IExvZ29EaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9sb2dvJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlLCBwcm92aWRlVHJhbnNsYXRpb25zIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsL3RyYW5zbGF0ZSc7XG5pbXBvcnQgeyBpbmplY3RFbGVtZW50LCB0cmFja0J5SW5kZXggfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgY3JlYXRlTWFpbk1lbnVMaW5rcyQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IG1haW5NZW51VHJhbnNsYXRpb25zIGZyb20gJy4vbWFpbi1tZW51LmkxOG4nO1xuaW1wb3J0IHsgTWFpbk1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9tYWluLW1lbnUuc2VydmljZSc7XG5cbi8qKlxuICogVGhlIGBNYWluTWVudUNvbXBvbmVudGAgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIHVzZXIgaW50ZXJmYWNlIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhIG5hdmlnYXRpb24gbWVudSB3aXRoaW4gYW4gYXBwbGljYXRpb24uXG4gKiBJdCBzdXBwb3J0cyBkeW5hbWljIGNvbnRlbnQgZm9yIHRpdGxlcywgc3VidGl0bGVzLCBhbmQgY29weXJpZ2h0IHRleHQsIGFuZCBjYW4gZHluYW1pY2FsbHkgcmVuZGVyIGFkZGl0aW9uYWwgbGlua3MuXG4gKiBUaGUgbWVudSBpbmNsdWRlcyBhbmltYXRpb25zIGZvciBvcGVuaW5nIGFuZCBjbG9zaW5nIHN0YXRlcywgYW5kIGNhbiBiZSBjb250cm9sbGVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdmlhIHVzZXIgaW50ZXJhY3Rpb24uXG4gKi9cbkBDU1NDb21wb25lbnQoJ21haW4tbWVudScpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZHgtbWFpbi1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21haW4tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQ29yZU1vZHVsZSwgQXJlYUhlYWRlck1vZHVsZSwgQnV0dG9uQ29tcG9uZW50LCBJY29uQ29tcG9uZW50LCBMb2dvRGlyZWN0aXZlLCBUcmFuc2xhdGVQaXBlLCBMaW5rRGlyZWN0aXZlLCBEeW5hbWljVmlld0RpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVUcmFuc2xhdGlvbnMobWFpbk1lbnVUcmFuc2xhdGlvbnMpXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuaXMtb3Blbl0nOiAnaXNPcGVuJyxcbiAgfSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ21lbnVBbmltYXRpb24nLCBbdHJhbnNpdGlvbignOmVudGVyJywgW3VzZUFuaW1hdGlvbihzbGlkZUluTGVmdCldKSwgdHJhbnNpdGlvbignOmxlYXZlJywgW3VzZUFuaW1hdGlvbihzbGlkZU91dExlZnQpXSldKSxcbiAgICB0cmlnZ2VyKCdvdmVybGF5QW5pbWF0aW9uJywgW3RyYW5zaXRpb24oJzplbnRlcicsIFt1c2VBbmltYXRpb24oZmFkZUluKCkpXSksIHRyYW5zaXRpb24oJzpsZWF2ZScsIFt1c2VBbmltYXRpb24oZmFkZU91dCgpKV0pXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1haW5NZW51Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1haW5NZW51U2VydmljZSA9IGluamVjdChNYWluTWVudVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFpbk1lbnVMaW5rcyQgPSBjcmVhdGVNYWluTWVudUxpbmtzJCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhY2tCeUluZGV4ID0gdHJhY2tCeUluZGV4O1xuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICAvKipcbiAgICogSW5wdXQgcHJvcGVydHkgZm9yIHRoZSB0aXRsZSBvZiB0aGUgbWVudS4gVGhlIGNvbnRlbnQgaXMgZHluYW1pYywgYWxsb3dpbmcgY29tcGxleCBjb250ZW50IHN0cnVjdHVyZXNcbiAgICogbGlrZSB0cmFuc2xhdGlvbnMgb3IgY3VzdG9tIGNvbXBvbmVudHMuXG4gICAqXG4gICAqIEB0eXBlIHtEeW5hbWljVGV4dENvbnRlbnR9XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgdGl0bGUhOiBEeW5hbWljVGV4dENvbnRlbnQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGlucHV0IHByb3BlcnR5IGZvciB0aGUgc3VidGl0bGUgb2YgdGhlIG1lbnUuXG4gICAqXG4gICAqIEB0eXBlIHtEeW5hbWljVGV4dENvbnRlbnQgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3VidGl0bGU/OiBEeW5hbWljVGV4dENvbnRlbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgaW5wdXQgcHJvcGVydHkgZm9yIHRoZSBjb3B5cmlnaHQgdGV4dCBvZiB0aGUgbWVudS5cbiAgICpcbiAgICogQHR5cGUge0R5bmFtaWNUZXh0Q29udGVudCB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb3B5cmlnaHQ/OiBEeW5hbWljVGV4dENvbnRlbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogSW5wdXQgcHJvcGVydHkgdG8gY29udHJvbCB0aGUgb3BlbiBzdGF0ZSBvZiB0aGUgbWVudS4gVXNlcyBib29sZWFuIHRyYW5zZm9ybWF0aW9uIHRvIGhhbmRsZSB0cnVlL2ZhbHNlIHN0YXRlcy5cbiAgICogQ2hhbmdpbmcgdGhpcyBwcm9wZXJ0eSB3aWxsIHRvZ2dsZSB0aGUgbWVudSdzIG9wZW4gc3RhdGUgdmlhIHRoZSBNYWluTWVudVNlcnZpY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdmFsdWUgLSBUaGUgb3BlbiBzdGF0ZSBvZiB0aGUgbWVudS5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubWFpbk1lbnVTZXJ2aWNlLnRvZ2dsZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBvcGVuIHN0YXRlIG9mIHRoZSBtZW51IGZyb20gdGhlIE1haW5NZW51U2VydmljZS5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgbWVudSBpcyBvcGVuLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1haW5NZW51U2VydmljZS5pc09wZW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdXRwdXRzIHRoZSBvYnNlcnZhYmxlIHRoYXQgdHJhY2tzIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSBtZW51LlxuICAgKlxuICAgKiBAZW1pdHMge2Jvb2xlYW59IFRoZSBvcGVuIHN0YXRlIG9mIHRoZSBtZW51LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBtZW51T3BlbiA9IHRoaXMubWFpbk1lbnVTZXJ2aWNlLmlzT3BlbiQ7XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgbWVudS5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cC5lc2MnKVxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5tYWluTWVudVNlcnZpY2UuY2xvc2UoKTtcbiAgfVxufVxuIiwiPGFzaWRlIEBtZW51QW5pbWF0aW9uIGNsYXNzPVwib2R4LW1haW4tbWVudV9faW5uZXJcIiBjZGtUcmFwRm9jdXMgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUgKm5nSWY9XCJtZW51T3BlbiB8IGFzeW5jXCI+XG4gIDxkaXYgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19hY3Rpb25zXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm9keC1tYWluLW1lbnVfX2Nsb3NlXCIgb2R4QnV0dG9uIGRpc2FibGVkPVwiZmFsc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgPG9keC1pY29uIG5hbWU9XCJjbG9zZVwiIGljb25TZXQ9XCJjb3JlXCI+PC9vZHgtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxvZHgtYXJlYS1oZWFkZXIgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19oZWFkZXJcIiBzaXplPVwibGFyZ2VcIj5cbiAgICA8bmctdGVtcGxhdGUgW29keER5bmFtaWNWaWV3XT1cInRpdGxlXCIgLz5cbiAgICA8b2R4LWFyZWEtaGVhZGVyLXN1YnRpdGxlICpuZ0lmPVwic3VidGl0bGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbb2R4RHluYW1pY1ZpZXddPVwic3VidGl0bGVcIiAvPlxuICAgIDwvb2R4LWFyZWEtaGVhZGVyLXN1YnRpdGxlPlxuICA8L29keC1hcmVhLWhlYWRlcj5cbiAgPG5hdiBjbGFzcz1cIm9keC1tYWluLW1lbnVfX2NvbnRlbnRcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvbmF2PlxuICA8ZGl2IGNsYXNzPVwib2R4LW1haW4tbWVudV9faW5mb1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvZHhMaW5rXVwiPjwvbmctY29udGVudD5cbiAgICA8YSBvZHhMaW5rIFtocmVmXT1cImxpbmsudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nRm9yPVwibGV0IGxpbmsgb2YgbWFpbk1lbnVMaW5rcyQgfCBhc3luYzsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+XG4gICAgICB7eyBsaW5rLm5hbWUgfCBvZHhUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgIDwvYT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19mb290ZXJcIj5cbiAgICA8b2R4LWxvZ28gdmFyaWFudD1cImludmVyc2VcIj48L29keC1sb2dvPlxuICAgIDxwIGNsYXNzPVwib2R4LXRleHQgb2R4LXRleHQtLXNtYWxsXCIgKm5nSWY9XCJjb3B5cmlnaHRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbb2R4RHluYW1pY1ZpZXddPVwiY29weXJpZ2h0XCIgLz5cbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9hc2lkZT5cbjxkaXYgQG92ZXJsYXlBbmltYXRpb24gY2xhc3M9XCJvZHgtbWFpbi1tZW51X19vdmVybGF5XCIgKGNsaWNrKT1cImNsb3NlKClcIiAqbmdJZj1cIm1lbnVPcGVuIHwgYXN5bmNcIj48L2Rpdj5cbiJdfQ==
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21haW4tbWVudS9zcmMvbGliL21haW4tbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9tYWluLW1lbnUvc3JjL2xpYi9tYWluLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFzQixvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGNBQWMs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QUFFLGFBQWEsdURBQUUsb0JBQW9COztBQUsxSSxpQkFBaUI7SUFYN0IsWUFBWSxDQUFDLFdBQVcsQ0FBQztHQVdiLGlCQUFpQixDQTZGN0I7NEZBN0ZZLGlCQUFpQjtrQkFWN0IsU0FBUzsrQkFDRSxlQUFlLGlCQUVWLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLENBQUMsYUFDM0ksQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLGNBQzFDLElBQUksUUFDVixFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRTs4QkFpQjlCLEtBQUs7c0JBRFgsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBVWxCLFFBQVE7c0JBRGQsS0FBSztnQkFVQyxTQUFTO3NCQURmLEtBQUs7Z0JBVUssTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFvQi9CLFFBQVE7c0JBRGQsTUFBTTtnQkFJQSxTQUFTO3NCQURmLFNBQVM7dUJBQUMsV0FBVztnQkFnQmYsS0FBSztzQkFEWCxZQUFZO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBEeW5hbWljVGV4dENvbnRlbnQsIER5bmFtaWNWaWV3RGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuaW1wb3J0IHsgQXJlYUhlYWRlck1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2FyZWEtaGVhZGVyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBMaW5rRGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvbGluayc7XG5pbXBvcnQgeyBMb2dvRGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvbG9nbyc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSwgcHJvdmlkZVRyYW5zbGF0aW9ucyB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbC90cmFuc2xhdGUnO1xuaW1wb3J0IHsgaW5qZWN0RWxlbWVudCwgdHJhY2tCeUluZGV4LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY3JlYXRlTWFpbk1lbnVMaW5rcyQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IG1haW5NZW51VHJhbnNsYXRpb25zIGZyb20gJy4vbWFpbi1tZW51LmkxOG4nO1xuaW1wb3J0IHsgTWFpbk1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9tYWluLW1lbnUuc2VydmljZSc7XG5cbi8qKlxuICogVGhlIGBNYWluTWVudUNvbXBvbmVudGAgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIHVzZXIgaW50ZXJmYWNlIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhIG5hdmlnYXRpb24gbWVudSB3aXRoaW4gYW4gYXBwbGljYXRpb24uXG4gKiBJdCBzdXBwb3J0cyBkeW5hbWljIGNvbnRlbnQgZm9yIHRpdGxlcywgc3VidGl0bGVzLCBhbmQgY29weXJpZ2h0IHRleHQsIGFuZCBjYW4gZHluYW1pY2FsbHkgcmVuZGVyIGFkZGl0aW9uYWwgbGlua3MuXG4gKiBUaGUgbWVudSBpbmNsdWRlcyBhbmltYXRpb25zIGZvciBvcGVuaW5nIGFuZCBjbG9zaW5nIHN0YXRlcywgYW5kIGNhbiBiZSBjb250cm9sbGVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdmlhIHVzZXIgaW50ZXJhY3Rpb24uXG4gKi9cbkBDU1NDb21wb25lbnQoJ21haW4tbWVudScpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZHgtbWFpbi1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21haW4tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQ29yZU1vZHVsZSwgQXJlYUhlYWRlck1vZHVsZSwgQnV0dG9uQ29tcG9uZW50LCBJY29uQ29tcG9uZW50LCBMb2dvRGlyZWN0aXZlLCBUcmFuc2xhdGVQaXBlLCBMaW5rRGlyZWN0aXZlLCBEeW5hbWljVmlld0RpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVUcmFuc2xhdGlvbnMobWFpbk1lbnVUcmFuc2xhdGlvbnMpXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDogeyAnW2NsYXNzLmlzLW9wZW5dJzogJ2lzT3BlbicgfSxcbn0pXG5leHBvcnQgY2xhc3MgTWFpbk1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFpbk1lbnVTZXJ2aWNlID0gaW5qZWN0KE1haW5NZW51U2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtYWluTWVudUxpbmtzJCA9IGNyZWF0ZU1haW5NZW51TGlua3MkKCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFja0J5SW5kZXggPSB0cmFja0J5SW5kZXg7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc09wZW4kID0gdGhpcy5tYWluTWVudVNlcnZpY2UuaXNPcGVuJC5waXBlKHRhcCgoaXNPcGVuOiBib29sZWFuKSA9PiB0aGlzLnNsaWRlTWVudUlubmVyKGlzT3BlbikpKTtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciB0aGUgdGl0bGUgb2YgdGhlIG1lbnUuIFRoZSBjb250ZW50IGlzIGR5bmFtaWMsIGFsbG93aW5nIGNvbXBsZXggY29udGVudCBzdHJ1Y3R1cmVzXG4gICAqIGxpa2UgdHJhbnNsYXRpb25zIG9yIGN1c3RvbSBjb21wb25lbnRzLlxuICAgKlxuICAgKiBAdHlwZSB7RHluYW1pY1RleHRDb250ZW50fVxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIHRpdGxlITogRHluYW1pY1RleHRDb250ZW50O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBpbnB1dCBwcm9wZXJ0eSBmb3IgdGhlIHN1YnRpdGxlIG9mIHRoZSBtZW51LlxuICAgKlxuICAgKiBAdHlwZSB7RHluYW1pY1RleHRDb250ZW50IHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHN1YnRpdGxlPzogRHluYW1pY1RleHRDb250ZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGlucHV0IHByb3BlcnR5IGZvciB0aGUgY29weXJpZ2h0IHRleHQgb2YgdGhlIG1lbnUuXG4gICAqXG4gICAqIEB0eXBlIHtEeW5hbWljVGV4dENvbnRlbnQgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY29weXJpZ2h0PzogRHluYW1pY1RleHRDb250ZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IHRvIGNvbnRyb2wgdGhlIG9wZW4gc3RhdGUgb2YgdGhlIG1lbnUuIFVzZXMgYm9vbGVhbiB0cmFuc2Zvcm1hdGlvbiB0byBoYW5kbGUgdHJ1ZS9mYWxzZSBzdGF0ZXMuXG4gICAqIENoYW5naW5nIHRoaXMgcHJvcGVydHkgd2lsbCB0b2dnbGUgdGhlIG1lbnUncyBvcGVuIHN0YXRlIHZpYSB0aGUgTWFpbk1lbnVTZXJ2aWNlLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZhbHVlIC0gVGhlIG9wZW4gc3RhdGUgb2YgdGhlIG1lbnUuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm1haW5NZW51U2VydmljZS50b2dnbGUodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgb3BlbiBzdGF0ZSBvZiB0aGUgbWVudSBmcm9tIHRoZSBNYWluTWVudVNlcnZpY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIG1lbnUgaXMgb3BlbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tYWluTWVudVNlcnZpY2UuaXNPcGVuKCk7XG4gIH1cblxuICAvKipcbiAgICogT3V0cHV0cyB0aGUgb2JzZXJ2YWJsZSB0aGF0IHRyYWNrcyB0aGUgb3BlbiBzdGF0ZSBvZiB0aGUgbWVudS5cbiAgICpcbiAgICogQGVtaXRzIHtib29sZWFufSBUaGUgb3BlbiBzdGF0ZSBvZiB0aGUgbWVudS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbWVudU9wZW4gPSB0aGlzLm1haW5NZW51U2VydmljZS5pc09wZW4kO1xuXG4gIEBWaWV3Q2hpbGQoJ21lbnVJbm5lcicpXG4gIHB1YmxpYyBtZW51SW5uZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGZyb21FdmVudDxFdmVudD4odGhpcy5tZW51SW5uZXI/Lm5hdGl2ZUVsZW1lbnQsICd0b2dnbGUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZSkgPT4gJ25ld1N0YXRlJyBpbiBlICYmIHRoaXMubWFpbk1lbnVTZXJ2aWNlLnRvZ2dsZShlLm5ld1N0YXRlID09PSAnb3BlbicpKSxcbiAgICAgICAgdGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG1lbnUuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5dXAuZXNjJylcbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMubWFpbk1lbnVTZXJ2aWNlLmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHNsaWRlTWVudUlubmVyKGlzT3BlbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgeyBuYXRpdmVFbGVtZW50IH0gPSB0aGlzLm1lbnVJbm5lciB8fCB7fTtcbiAgICBpZiAoIShuYXRpdmVFbGVtZW50ICYmIHRoaXMuaXNQb3BvdmVyRWxlbWVudChuYXRpdmVFbGVtZW50KSkpIHJldHVybjtcbiAgICBjb25zdCBtZXRob2QgPSBpc09wZW4gPyAnc2hvd1BvcG92ZXInIDogJ2hpZGVQb3BvdmVyJztcbiAgICBuYXRpdmVFbGVtZW50W21ldGhvZF0oKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNQb3BvdmVyRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgSFRNTEVsZW1lbnQgJiB7IHNob3dQb3BvdmVyOiAoKSA9PiB2b2lkOyBoaWRlUG9wb3ZlcjogKCkgPT4gdm9pZCB9IHtcbiAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3BvcG92ZXInKSAmJiAnc2hvd1BvcG92ZXInIGluIGVsZW1lbnQgJiYgJ2hpZGVQb3BvdmVyJyBpbiBlbGVtZW50O1xuICB9XG59XG4iLCI8YXNpZGUgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19pbm5lclwiIFtuZ0NsYXNzXT1cIihpc09wZW4kIHwgYXN5bmMpID8gJ29wZW5lZCcgOiAnY2xvc2VkJ1wiICNtZW51SW5uZXIgcG9wb3Zlcj1cImF1dG9cIiBjZGtUcmFwRm9jdXMgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gIDxkaXYgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19hY3Rpb25zXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm9keC1tYWluLW1lbnVfX2Nsb3NlXCIgb2R4QnV0dG9uIGRpc2FibGVkPVwiZmFsc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgPG9keC1pY29uIG5hbWU9XCJjbG9zZVwiIGljb25TZXQ9XCJjb3JlXCI+PC9vZHgtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxvZHgtYXJlYS1oZWFkZXIgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19oZWFkZXJcIiBzaXplPVwibGFyZ2VcIj5cbiAgICA8bmctdGVtcGxhdGUgW29keER5bmFtaWNWaWV3XT1cInRpdGxlXCIgLz5cbiAgICA8b2R4LWFyZWEtaGVhZGVyLXN1YnRpdGxlICpuZ0lmPVwic3VidGl0bGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbb2R4RHluYW1pY1ZpZXddPVwic3VidGl0bGVcIiAvPlxuICAgIDwvb2R4LWFyZWEtaGVhZGVyLXN1YnRpdGxlPlxuICA8L29keC1hcmVhLWhlYWRlcj5cbiAgPG5hdiBjbGFzcz1cIm9keC1tYWluLW1lbnVfX2NvbnRlbnRcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvbmF2PlxuICA8ZGl2IGNsYXNzPVwib2R4LW1haW4tbWVudV9faW5mb1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvZHhMaW5rXVwiPjwvbmctY29udGVudD5cbiAgICA8YSBvZHhMaW5rIFtocmVmXT1cImxpbmsudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nRm9yPVwibGV0IGxpbmsgb2YgbWFpbk1lbnVMaW5rcyQgfCBhc3luYzsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+XG4gICAgICB7eyBsaW5rLm5hbWUgfCBvZHhUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgIDwvYT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvZHgtbWFpbi1tZW51X19mb290ZXJcIj5cbiAgICA8b2R4LWxvZ28gdmFyaWFudD1cImludmVyc2VcIj48L29keC1sb2dvPlxuICAgIDxwIGNsYXNzPVwib2R4LXRleHQgb2R4LXRleHQtLXNtYWxsXCIgKm5nSWY9XCJjb3B5cmlnaHRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbb2R4RHluYW1pY1ZpZXddPVwiY29weXJpZ2h0XCIgLz5cbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9hc2lkZT5cbiJdfQ==