@hestia-earth/ui-components 0.28.2 → 0.28.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import { TemplateRef } from '@angular/core';
2
2
  import type { AnimationEvent } from '@angular/animations';
3
+ import { drawerPosition } from './sidenav.store';
3
4
  import { INavigationMenuLink } from '../navigation-menu/navigation-menu.component';
4
5
  import { ResponsiveBreakpoint } from '../responsive.service';
5
6
  import * as i0 from "@angular/core";
@@ -19,7 +20,7 @@ export declare class DrawerContainerComponent {
19
20
  * @default 'tablet' - the drawer will be compact until the tablet breakpoint.
20
21
  */
21
22
  protected readonly compactBreakpoint: import("@angular/core").InputSignal<ResponsiveBreakpoint>;
22
- protected readonly position: import("@angular/core").InputSignal<"left" | "right">;
23
+ protected readonly position: import("@angular/core").InputSignal<drawerPosition>;
23
24
  protected readonly min: import("@angular/core").InputSignal<number>;
24
25
  protected readonly width: import("@angular/core").ModelSignal<number>;
25
26
  protected readonly max: import("@angular/core").InputSignal<number>;
@@ -1,9 +1,10 @@
1
+ export type drawerPosition = 'left' | 'right';
1
2
  export declare const initialState: {
2
3
  minWidth: number;
3
4
  maxWidth: number;
4
5
  width: number;
5
6
  expanded: boolean;
6
- side: "left" | "right";
7
+ side: drawerPosition;
7
8
  resizeEvent: {
8
9
  isResizing: boolean;
9
10
  startingCursorX: number;
@@ -18,7 +19,7 @@ export declare const sidenavStore: import("@angular/core").Type<{
18
19
  maxWidth: import("@angular/core").Signal<number>;
19
20
  width: import("@angular/core").Signal<number>;
20
21
  expanded: import("@angular/core").Signal<boolean>;
21
- side: import("@angular/core").Signal<"left" | "right">;
22
+ side: import("@angular/core").Signal<drawerPosition>;
22
23
  resizeEvent: import("@ngrx/signals").DeepSignal<{
23
24
  isResizing: boolean;
24
25
  startingCursorX: number;
@@ -35,7 +36,7 @@ export declare const sidenavStore: import("@angular/core").Type<{
35
36
  setExpanded: ((input: boolean | import("@angular/core").Signal<boolean> | import("rxjs").Observable<boolean>, config?: {
36
37
  injector?: import("@angular/core").Injector;
37
38
  }) => import("rxjs").Unsubscribable) & import("rxjs").Unsubscribable;
38
- setSide: ((input: "left" | "right" | import("rxjs").Observable<"left" | "right"> | import("@angular/core").Signal<"left" | "right">, config?: {
39
+ setSide: ((input: drawerPosition | import("rxjs").Observable<drawerPosition> | import("@angular/core").Signal<drawerPosition>, config?: {
39
40
  injector?: import("@angular/core").Injector;
40
41
  }) => import("rxjs").Unsubscribable) & import("rxjs").Unsubscribable;
41
42
  setMinMenuDistance: ((input: number | import("rxjs").Observable<number> | import("@angular/core").Signal<number>, config?: {
@@ -50,20 +51,29 @@ export declare const sidenavStore: import("@angular/core").Type<{
50
51
  setWidth: ((input: number | import("rxjs").Observable<number> | import("@angular/core").Signal<number>, config?: {
51
52
  injector?: import("@angular/core").Injector;
52
53
  }) => import("rxjs").Unsubscribable) & import("rxjs").Unsubscribable;
53
- setSidenavWidthCss: ((input: number | import("rxjs").Observable<number> | import("@angular/core").Signal<number>, config?: {
54
+ setSidenavWidthCss: ((input: {
55
+ position: drawerPosition;
56
+ width: number;
57
+ } | import("rxjs").Observable<{
58
+ position: drawerPosition;
59
+ width: number;
60
+ }> | import("@angular/core").Signal<{
61
+ position: drawerPosition;
62
+ width: number;
63
+ }>, config?: {
54
64
  injector?: import("@angular/core").Injector;
55
65
  }) => import("rxjs").Unsubscribable) & import("rxjs").Unsubscribable;
56
66
  setContentTransformCss: ((input: {
57
67
  expanded: boolean;
58
- position: 'left' | 'right';
68
+ position: drawerPosition;
59
69
  value: number;
60
70
  } | import("rxjs").Observable<{
61
71
  expanded: boolean;
62
- position: 'left' | 'right';
72
+ position: drawerPosition;
63
73
  value: number;
64
74
  }> | import("@angular/core").Signal<{
65
75
  expanded: boolean;
66
- position: 'left' | 'right';
76
+ position: drawerPosition;
67
77
  value: number;
68
78
  }>, config?: {
69
79
  injector?: import("@angular/core").Injector;
@@ -81,7 +91,7 @@ export declare const sidenavStore: import("@angular/core").Type<{
81
91
  maxWidth: number;
82
92
  width: number;
83
93
  expanded: boolean;
84
- side: "left" | "right";
94
+ side: drawerPosition;
85
95
  resizeEvent: {
86
96
  isResizing: boolean;
87
97
  startingCursorX: number;
@@ -1,4 +1,5 @@
1
1
  import { animate, state, style, transition, trigger } from '@angular/animations';
2
+ const animationDuration = '300ms';
2
3
  export const HE_SIDE_MENU_ANIMATION = [
3
4
  trigger('sideMenu', [
4
5
  state('void, hidden', style({
@@ -7,8 +8,8 @@ export const HE_SIDE_MENU_ANIMATION = [
7
8
  state('*', style({
8
9
  transform: 'translateX(0)'
9
10
  })),
10
- transition('hidden => *', animate('300ms ease-in')),
11
- transition('* => hidden', animate('300ms ease-out'))
11
+ transition('hidden => *', animate(`${animationDuration} ease-in`)),
12
+ transition('* => hidden', animate(`${animationDuration} ease-out`))
12
13
  ])
13
14
  ];
14
15
  export const HE_REDUCE_WIDTH_ANIMATION = [
@@ -17,12 +18,12 @@ export const HE_REDUCE_WIDTH_ANIMATION = [
17
18
  width: '100%'
18
19
  })),
19
20
  state('reduced', style({
20
- width: 'calc(100% - var(--sidenav-width) - 1em)'
21
+ width: 'calc(100% - var(--sidenav-width) - var(--sidenav-padding))'
21
22
  })),
22
23
  transition('void -> *', animate('0ms')),
23
24
  transition(':enter', animate(0)),
24
- transition('full => reduced', animate('300ms ease-in')),
25
- transition('reduced => full', animate('300ms ease-out'))
25
+ transition('full => reduced', animate(`${animationDuration} ease-in`)),
26
+ transition('reduced => full', animate(`${animationDuration} ease-out`))
26
27
  ])
27
28
  ];
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5hbmltYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9kcmF3ZXItY29udGFpbmVyL2RyYXdlci1jb250YWluZXIuYW5pbWF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7UUFDbEIsS0FBSyxDQUNILGNBQWMsRUFDZCxLQUFLLENBQUM7WUFDSixTQUFTLEVBQUUsd0VBQXdFO1NBQ3BGLENBQUMsQ0FDSDtRQUNELEtBQUssQ0FDSCxHQUFHLEVBQ0gsS0FBSyxDQUFDO1lBQ0osU0FBUyxFQUFFLGVBQWU7U0FDM0IsQ0FBQyxDQUNIO1FBQ0QsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkQsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUNyRCxDQUFDO0NBQ0gsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHO0lBQ3ZDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7UUFDckIsS0FBSyxDQUNILE1BQU0sRUFDTixLQUFLLENBQUM7WUFDSixLQUFLLEVBQUUsTUFBTTtTQUNkLENBQUMsQ0FDSDtRQUNELEtBQUssQ0FDSCxTQUFTLEVBQ1QsS0FBSyxDQUFDO1lBQ0osS0FBSyxFQUFFLHlDQUF5QztTQUNqRCxDQUFDLENBQ0g7UUFDRCxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZELFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUN6RCxDQUFDO0NBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgSEVfU0lERV9NRU5VX0FOSU1BVElPTiA9IFtcbiAgdHJpZ2dlcignc2lkZU1lbnUnLCBbXG4gICAgc3RhdGUoXG4gICAgICAndm9pZCwgaGlkZGVuJyxcbiAgICAgIHN0eWxlKHtcbiAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWChjYWxjKHZhcigtLXNpZGVuYXYtc2lkZS10cmFuc2Zvcm0pICogdmFyKC0tc2lkZW5hdi13aWR0aCkpKSdcbiAgICAgIH0pXG4gICAgKSxcbiAgICBzdGF0ZShcbiAgICAgICcqJyxcbiAgICAgIHN0eWxlKHtcbiAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKSdcbiAgICAgIH0pXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKCdoaWRkZW4gPT4gKicsIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nKSksXG4gICAgdHJhbnNpdGlvbignKiA9PiBoaWRkZW4nLCBhbmltYXRlKCczMDBtcyBlYXNlLW91dCcpKVxuICBdKVxuXTtcblxuZXhwb3J0IGNvbnN0IEhFX1JFRFVDRV9XSURUSF9BTklNQVRJT04gPSBbXG4gIHRyaWdnZXIoJ3JlZHVjZVdpZHRoJywgW1xuICAgIHN0YXRlKFxuICAgICAgJ2Z1bGwnLFxuICAgICAgc3R5bGUoe1xuICAgICAgICB3aWR0aDogJzEwMCUnXG4gICAgICB9KVxuICAgICksXG4gICAgc3RhdGUoXG4gICAgICAncmVkdWNlZCcsXG4gICAgICBzdHlsZSh7XG4gICAgICAgIHdpZHRoOiAnY2FsYygxMDAlIC0gdmFyKC0tc2lkZW5hdi13aWR0aCkgLSAxZW0pJ1xuICAgICAgfSlcbiAgICApLFxuICAgIHRyYW5zaXRpb24oJ3ZvaWQgLT4gKicsIGFuaW1hdGUoJzBtcycpKSxcbiAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBhbmltYXRlKDApKSxcbiAgICB0cmFuc2l0aW9uKCdmdWxsID0+IHJlZHVjZWQnLCBhbmltYXRlKCczMDBtcyBlYXNlLWluJykpLFxuICAgIHRyYW5zaXRpb24oJ3JlZHVjZWQgPT4gZnVsbCcsIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0JykpXG4gIF0pXG5dO1xuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5hbmltYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9kcmF3ZXItY29udGFpbmVyL2RyYXdlci1jb250YWluZXIuYW5pbWF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpGLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7UUFDbEIsS0FBSyxDQUNILGNBQWMsRUFDZCxLQUFLLENBQUM7WUFDSixTQUFTLEVBQUUsd0VBQXdFO1NBQ3BGLENBQUMsQ0FDSDtRQUNELEtBQUssQ0FDSCxHQUFHLEVBQ0gsS0FBSyxDQUFDO1lBQ0osU0FBUyxFQUFFLGVBQWU7U0FDM0IsQ0FBQyxDQUNIO1FBQ0QsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsR0FBRyxpQkFBaUIsVUFBVSxDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsR0FBRyxpQkFBaUIsV0FBVyxDQUFDLENBQUM7S0FDcEUsQ0FBQztDQUNILENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxPQUFPLENBQUMsYUFBYSxFQUFFO1FBQ3JCLEtBQUssQ0FDSCxNQUFNLEVBQ04sS0FBSyxDQUFDO1lBQ0osS0FBSyxFQUFFLE1BQU07U0FDZCxDQUFDLENBQ0g7UUFDRCxLQUFLLENBQ0gsU0FBUyxFQUNULEtBQUssQ0FBQztZQUNKLEtBQUssRUFBRSw0REFBNEQ7U0FDcEUsQ0FBQyxDQUNIO1FBQ0QsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxHQUFHLGlCQUFpQixVQUFVLENBQUMsQ0FBQztRQUN0RSxVQUFVLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsaUJBQWlCLFdBQVcsQ0FBQyxDQUFDO0tBQ3hFLENBQUM7Q0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmNvbnN0IGFuaW1hdGlvbkR1cmF0aW9uID0gJzMwMG1zJztcblxuZXhwb3J0IGNvbnN0IEhFX1NJREVfTUVOVV9BTklNQVRJT04gPSBbXG4gIHRyaWdnZXIoJ3NpZGVNZW51JywgW1xuICAgIHN0YXRlKFxuICAgICAgJ3ZvaWQsIGhpZGRlbicsXG4gICAgICBzdHlsZSh7XG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoY2FsYyh2YXIoLS1zaWRlbmF2LXNpZGUtdHJhbnNmb3JtKSAqIHZhcigtLXNpZGVuYXYtd2lkdGgpKSknXG4gICAgICB9KVxuICAgICksXG4gICAgc3RhdGUoXG4gICAgICAnKicsXG4gICAgICBzdHlsZSh7XG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknXG4gICAgICB9KVxuICAgICksXG4gICAgdHJhbnNpdGlvbignaGlkZGVuID0+IConLCBhbmltYXRlKGAke2FuaW1hdGlvbkR1cmF0aW9ufSBlYXNlLWluYCkpLFxuICAgIHRyYW5zaXRpb24oJyogPT4gaGlkZGVuJywgYW5pbWF0ZShgJHthbmltYXRpb25EdXJhdGlvbn0gZWFzZS1vdXRgKSlcbiAgXSlcbl07XG5cbmV4cG9ydCBjb25zdCBIRV9SRURVQ0VfV0lEVEhfQU5JTUFUSU9OID0gW1xuICB0cmlnZ2VyKCdyZWR1Y2VXaWR0aCcsIFtcbiAgICBzdGF0ZShcbiAgICAgICdmdWxsJyxcbiAgICAgIHN0eWxlKHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJ1xuICAgICAgfSlcbiAgICApLFxuICAgIHN0YXRlKFxuICAgICAgJ3JlZHVjZWQnLFxuICAgICAgc3R5bGUoe1xuICAgICAgICB3aWR0aDogJ2NhbGMoMTAwJSAtIHZhcigtLXNpZGVuYXYtd2lkdGgpIC0gdmFyKC0tc2lkZW5hdi1wYWRkaW5nKSknXG4gICAgICB9KVxuICAgICksXG4gICAgdHJhbnNpdGlvbigndm9pZCAtPiAqJywgYW5pbWF0ZSgnMG1zJykpLFxuICAgIHRyYW5zaXRpb24oJzplbnRlcicsIGFuaW1hdGUoMCkpLFxuICAgIHRyYW5zaXRpb24oJ2Z1bGwgPT4gcmVkdWNlZCcsIGFuaW1hdGUoYCR7YW5pbWF0aW9uRHVyYXRpb259IGVhc2UtaW5gKSksXG4gICAgdHJhbnNpdGlvbigncmVkdWNlZCA9PiBmdWxsJywgYW5pbWF0ZShgJHthbmltYXRpb25EdXJhdGlvbn0gZWFzZS1vdXRgKSlcbiAgXSlcbl07XG4iXX0=
@@ -72,11 +72,11 @@ export class DrawerContainerComponent {
72
72
  */
73
73
  this.reduceAnimation = toSignal(combineLatest([
74
74
  toObservable(this.expanded),
75
- this._isOverlapping$,
75
+ // this._isOverlapping$,
76
76
  toObservable(this.isCompact),
77
77
  toObservable(this.visible)
78
- ]).pipe(map(([expanded, isOverlapping, isCompact, visible]) => [expanded, !isOverlapping, !isCompact, visible].every(Boolean) ? 'reduced' : 'full')));
79
- this._contentContainerPadding$ = this._hostComponentWidth$.pipe(switchMap(() => this._contentContainer$.pipe(map(this._getContentLeftSideSpace))));
78
+ ]).pipe(map(([expanded, isCompact, visible]) => ([expanded, !isCompact, visible].every(Boolean) ? 'reduced' : 'full'))));
79
+ this._contentContainerPadding$ = this._hostComponentWidth$.pipe(switchMap(() => this._contentContainer$.pipe(map(el => this._getContentLeftSideSpace(el)))));
80
80
  this.storageKey = computed(() => [storageKey, this.id()].filter(Boolean).join('-'));
81
81
  this.sidenavStore.setSide(this.position);
82
82
  this.sidenavStore.setMinWidth(this.min);
@@ -94,6 +94,11 @@ export class DrawerContainerComponent {
94
94
  }
95
95
  }
96
96
  }, { allowSignalWrites: true });
97
+ effect(() => {
98
+ if (!this.visible()) {
99
+ setTimeout(() => this.menuState.set('close'));
100
+ }
101
+ }, { allowSignalWrites: true });
97
102
  }
98
103
  startResizing(event) {
99
104
  if (!this.resizable())
@@ -125,12 +130,13 @@ export class DrawerContainerComponent {
125
130
  this.menuState.set(didOpen ? 'open' : 'close');
126
131
  }
127
132
  _getContentLeftSideSpace(element) {
128
- const padding = window.getComputedStyle(element.nativeElement, null).getPropertyValue('padding-left');
129
- const margin = window.getComputedStyle(element.nativeElement, null).getPropertyValue('margin-left');
133
+ const position = this.position();
134
+ const padding = window.getComputedStyle(element.nativeElement, null).getPropertyValue('padding-' + position);
135
+ const margin = window.getComputedStyle(element.nativeElement, null).getPropertyValue('margin-' + position);
130
136
  return parseInt(padding, 10) + parseInt(margin, 10);
131
137
  }
132
138
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DrawerContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
133
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: DrawerContainerComponent, isStandalone: true, selector: "he-drawer-container", inputs: { compactBreakpoint: { classPropertyName: "compactBreakpoint", publicName: "compactBreakpoint", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, contentPaddingStyles: { classPropertyName: "contentPaddingStyles", publicName: "contentPaddingStyles", isSignal: true, isRequired: false, transformFunction: null }, menuOverlap: { classPropertyName: "menuOverlap", publicName: "menuOverlap", isSignal: true, isRequired: false, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, drawerHeaderTemplate: { classPropertyName: "drawerHeaderTemplate", publicName: "drawerHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, drawerMenuHeaderTemplate: { classPropertyName: "drawerMenuHeaderTemplate", publicName: "drawerMenuHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, compactHeaderClass: { classPropertyName: "compactHeaderClass", publicName: "compactHeaderClass", isSignal: true, isRequired: false, transformFunction: null }, minMenuDistance: { classPropertyName: "minMenuDistance", publicName: "minMenuDistance", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { width: "widthChange", opened: "opened", closed: "closed" }, host: { listeners: { "window:mouseup": "stopResizing()" }, properties: { "class": "hostClass()", "attr.drawer-position": "position()", "attr.drawer-state": "menuState()" } }, providers: [sidenavStore], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n } @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"toggleIcon()\" />\n </button>\n </div>\n </aside>\n }\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 1024px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "component", type: NavigationMenuComponent, selector: "he-navigation-menu", inputs: ["links", "sticky", "collapsible", "routerLinkMatchOptions"], outputs: ["closed"] }], animations: [...HE_SIDE_MENU_ANIMATION, ...HE_REDUCE_WIDTH_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
139
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: DrawerContainerComponent, isStandalone: true, selector: "he-drawer-container", inputs: { compactBreakpoint: { classPropertyName: "compactBreakpoint", publicName: "compactBreakpoint", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, contentPaddingStyles: { classPropertyName: "contentPaddingStyles", publicName: "contentPaddingStyles", isSignal: true, isRequired: false, transformFunction: null }, menuOverlap: { classPropertyName: "menuOverlap", publicName: "menuOverlap", isSignal: true, isRequired: false, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, drawerHeaderTemplate: { classPropertyName: "drawerHeaderTemplate", publicName: "drawerHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, drawerMenuHeaderTemplate: { classPropertyName: "drawerMenuHeaderTemplate", publicName: "drawerMenuHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, compactHeaderClass: { classPropertyName: "compactHeaderClass", publicName: "compactHeaderClass", isSignal: true, isRequired: false, transformFunction: null }, minMenuDistance: { classPropertyName: "minMenuDistance", publicName: "minMenuDistance", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { width: "widthChange", opened: "opened", closed: "closed" }, host: { listeners: { "window:mouseup": "stopResizing()" }, properties: { "class": "hostClass()", "attr.drawer-position": "position()", "attr.drawer-state": "menuState()" } }, providers: [sidenavStore], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n } @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"toggleIcon()\" />\n </button>\n </div>\n </aside>\n }\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-padding: 1em;--drawer-toggle-position: -20px;--sidenav-left-width: 256px;--sidenav-right-width: 256px;--content-transition-left-x: 0;--content-transition-right-x: 0}:host-context[drawer-position=left]{--sidenav-side-transform: -1;--sidenav-width: var(--sidenav-left-width);--content-transition-x: var(--content-transition-left-x)}:host-context[drawer-position=left][drawer-state=open]{--content-screen-padding-offset-start: calc(-1 * var(--sidenav-width))}:host-context[drawer-position=right]{--sidenav-side-transform: 1;--sidenav-width: var(--sidenav-right-width);--content-transition-x: var(--content-transition-right-x)}:host-context[drawer-position=right][drawer-state=open]{--content-screen-padding-offset-end: calc(-1 * var(--sidenav-width))}:host-context[drawer-position=right] aside{right:0;order:1}:host-context[drawer-position=right] aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context[drawer-position=right] aside .shell__menuContent--toggle{left:var(--drawer-toggle-position);border-radius:9px 0 0 9px}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toggle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute}:host-context([drawer-position=left]) .disable-transform-x{left:var(--content-transition-x)}:host-context([drawer-position=right]) .disable-transform-x{right:calc(-1px * var(--content-transition-x))}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "component", type: NavigationMenuComponent, selector: "he-navigation-menu", inputs: ["links", "sticky", "collapsible", "routerLinkMatchOptions"], outputs: ["closed"] }], animations: [...HE_SIDE_MENU_ANIMATION, ...HE_REDUCE_WIDTH_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
134
140
  }
135
141
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DrawerContainerComponent, decorators: [{
136
142
  type: Component,
@@ -147,9 +153,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
147
153
  '[class]': 'hostClass()',
148
154
  '[attr.drawer-position]': 'position()',
149
155
  '[attr.drawer-state]': 'menuState()'
150
- }, providers: [sidenavStore], template: "@if (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n } @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"toggleIcon()\" />\n </button>\n </div>\n </aside>\n }\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 1024px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"] }]
156
+ }, providers: [sidenavStore], template: "@if (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n } @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"toggleIcon()\" />\n </button>\n </div>\n </aside>\n }\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-padding: 1em;--drawer-toggle-position: -20px;--sidenav-left-width: 256px;--sidenav-right-width: 256px;--content-transition-left-x: 0;--content-transition-right-x: 0}:host-context[drawer-position=left]{--sidenav-side-transform: -1;--sidenav-width: var(--sidenav-left-width);--content-transition-x: var(--content-transition-left-x)}:host-context[drawer-position=left][drawer-state=open]{--content-screen-padding-offset-start: calc(-1 * var(--sidenav-width))}:host-context[drawer-position=right]{--sidenav-side-transform: 1;--sidenav-width: var(--sidenav-right-width);--content-transition-x: var(--content-transition-right-x)}:host-context[drawer-position=right][drawer-state=open]{--content-screen-padding-offset-end: calc(-1 * var(--sidenav-width))}:host-context[drawer-position=right] aside{right:0;order:1}:host-context[drawer-position=right] aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context[drawer-position=right] aside .shell__menuContent--toggle{left:var(--drawer-toggle-position);border-radius:9px 0 0 9px}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toggle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute}:host-context([drawer-position=left]) .disable-transform-x{left:var(--content-transition-x)}:host-context([drawer-position=right]) .disable-transform-x{right:calc(-1px * var(--content-transition-x))}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"] }]
151
157
  }], ctorParameters: () => [], propDecorators: { stopResizing: [{
152
158
  type: HostListener,
153
159
  args: ['window:mouseup']
154
160
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWMsTUFB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QUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDOytHQS9LVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixrdUVBRnhCLENBQUMsWUFBWSxDQUFDLDJIQVFpRCxVQUFVLDZDQy9EdEYscThGQWdGQSwyckZENUNJLGdCQUFnQixvSkFDaEIsZUFBZSw0TUFDZixPQUFPLG1GQUNQLFdBQVcsK0JBQ1gsV0FBVyxvTkFDWCxlQUFlLDhEQUNmLGlCQUFpQixnRUFDakIsdUJBQXVCLDRJQUtiLENBQUMsR0FBRyxzQkFBc0IsRUFBRSxHQUFHLHlCQUF5QixDQUFDOzs0RkFTMUQsd0JBQXdCO2tCQXpCcEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsdUJBQXVCO3FCQUN4QixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxDQUFDLEdBQUcsc0JBQXNCLEVBQUUsR0FBRyx5QkFBeUIsQ0FBQyxRQUUvRDt3QkFDSixTQUFTLEVBQUUsYUFBYTt3QkFDeEIsd0JBQXdCLEVBQUUsWUFBWTt3QkFDdEMscUJBQXFCLEVBQUUsYUFBYTtxQkFDckMsYUFDVSxDQUFDLFlBQVksQ0FBQzt3REErSXpCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICB2aWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZhSWNvbkNvbXBvbmVudCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IGZhQ2hldnJvbkRvd24sIGZhQ2hldnJvbkxlZnQsIGZhQ2hldnJvblJpZ2h0LCBmYUNoZXZyb25VcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgdHlwZSB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBvdXRwdXRGcm9tT2JzZXJ2YWJsZSwgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgc2tpcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd24sIE5nYkRyb3Bkb3duTWVudSwgTmdiRHJvcGRvd25Ub2dnbGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgY29tYmluZUxhdGVzdCwgRU1QVFksIGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJ25neC13ZWJzdG9yYWdlJztcblxuaW1wb3J0IHsgSEVfUkVEVUNFX1dJRFRIX0FOSU1BVElPTiwgSEVfU0lERV9NRU5VX0FOSU1BVElPTiB9IGZyb20gJy4vZHJhd2VyLWNvbnRhaW5lci5hbmltYXRpb25zJztcbmltcG9ydCB7IHNpZGVuYXZTdG9yZSwgaW5pdGlhbFN0YXRlIH0gZnJvbSAnLi9zaWRlbmF2LnN0b3JlJztcbmltcG9ydCB7IElOYXZpZ2F0aW9uTWVudUxpbmssIE5hdmlnYXRpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1tZW51L25hdmlnYXRpb24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzcG9uc2l2ZUJyZWFrcG9pbnQsIFJlc3BvbnNpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzcG9uc2l2ZS5zZXJ2aWNlJztcblxuY29uc3Qgc3RvcmFnZUtleSA9ICdoZS1kcmF3ZXItY29udGFpbmVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtZHJhd2VyLWNvbnRhaW5lcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEZhSWNvbkNvbXBvbmVudCxcbiAgICBOZ0NsYXNzLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5nYkRyb3Bkb3duLFxuICAgIE5nYkRyb3Bkb3duTWVudSxcbiAgICBOZ2JEcm9wZG93blRvZ2dsZSxcbiAgICBOYXZpZ2F0aW9uTWVudUNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kcmF3ZXItY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFsuLi5IRV9TSURFX01FTlVfQU5JTUFUSU9OLCAuLi5IRV9SRURVQ0VfV0lEVEhfQU5JTUFUSU9OXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzXSc6ICdob3N0Q2xhc3MoKScsXG4gICAgJ1thdHRyLmRyYXdlci1wb3NpdGlvbl0nOiAncG9zaXRpb24oKScsXG4gICAgJ1thdHRyLmRyYXdlci1zdGF0ZV0nOiAnbWVudVN0YXRlKCknXG4gIH0sXG4gIHByb3ZpZGVyczogW3NpZGVuYXZTdG9yZV1cbn0pXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29udGFpbmVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNpZGVuYXZTdG9yZSA9IGluamVjdChzaWRlbmF2U3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc3BvbnNpdmVTZXJ2aWNlID0gaW5qZWN0KFJlc3BvbnNpdmVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbFN0b3JhZ2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb250ZW50Q29udGFpbmVyID0gdmlld0NoaWxkKCdjb250ZW50Q29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51U3RhdGUgPSBzaWduYWw8J29wZW4nIHwgJ2Nsb3NlJz4oJ2Nsb3NlJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBleHBhbmRlZCA9IHNpZ25hbChpbml0aWFsU3RhdGUuZXhwYW5kZWQpO1xuXG4gIC8qKlxuICAgKiBUaGUgYnJlYWtwb2ludCBhdCB3aGljaCB0aGUgZHJhd2VyIHdpbGwgbm8gbG9uZ2VyIGJlIGNvbXBhY3QuXG4gICAqIElmIGEgbnVtYmVyIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGJlIHVzZWQgYXMgdGhlIHdpZHRoIGluIHBpeGVscy5cbiAgICogSWYgJ25vbmUnIGlzIHByb3ZpZGVkLCB0aGUgZHJhd2VyIHdpbGwgbmV2ZXIgYmUgY29tcGFjdC5cbiAgICogSWYgYSBicmVha3BvaW50IG5hbWUgaXMgcHJvdmlkZWQsIHRoZSBkcmF3ZXIgd2lsbCBiZSBjb21wYWN0IHVudGlsIHRoYXQgYnJlYWtwb2ludC5cbiAgICogQGRlZmF1bHQgJ3RhYmxldCcgLSB0aGUgZHJhd2VyIHdpbGwgYmUgY29tcGFjdCB1bnRpbCB0aGUgdGFibGV0IGJyZWFrcG9pbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tcGFjdEJyZWFrcG9pbnQgPSBpbnB1dDxSZXNwb25zaXZlQnJlYWtwb2ludD4oJ3RhYmxldCcpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9zaXRpb24gPSBpbnB1dDwnbGVmdCcgfCAncmlnaHQnPihpbml0aWFsU3RhdGUuc2lkZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtaW4gPSBpbnB1dDxudW1iZXI+KGluaXRpYWxTdGF0ZS5taW5XaWR0aCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB3aWR0aCA9IG1vZGVsPG51bWJlcj4oaW5pdGlhbFN0YXRlLndpZHRoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1heCA9IGlucHV0PG51bWJlcj4oaW5pdGlhbFN0YXRlLm1heFdpZHRoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlc2l6YWJsZSA9IGlucHV0KHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGVudFBhZGRpbmdTdHlsZXMgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51T3ZlcmxhcCA9IGlucHV0KHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGlua3MgPSBpbnB1dDxJTmF2aWdhdGlvbk1lbnVMaW5rW10+KFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyYXdlckhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb21wYWN0SGVhZGVyQ2xhc3MgPSBpbnB1dDxOZ0NsYXNzWyduZ0NsYXNzJ10+KG51bGwpO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gZGlzdGFuY2UgYmV0d2VlbiB0aGUgbWVudSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIGNvbnRlbnQgY29udGFpbmVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1pbk1lbnVEaXN0YW5jZSA9IGlucHV0PG51bWJlcj4oaW5pdGlhbFN0YXRlLm1pbk1lbnVEaXN0YW5jZSk7XG4gIC8qKlxuICAgKiBHaXZpbmcgYW4gaWQgdG8gdGhlIG1lbnUgc28gdGhhdCBpdCBjYW4gc3RvcmUgdGhlIHJlc2l6ZWQgcG9zaXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWQgPSBpbnB1dCgnJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wZW5lZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLm1lbnVTdGF0ZSkucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09ICdvcGVuJyksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjbG9zZWQgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZShcbiAgICB0b09ic2VydmFibGUodGhpcy5tZW51U3RhdGUpLnBpcGUoXG4gICAgICBza2lwKDEpLFxuICAgICAgZmlsdGVyKHN0YXRlID0+IHN0YXRlID09PSAnY2xvc2UnKSxcbiAgICAgIG1hcCgoKSA9PiB0cnVlKVxuICAgIClcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFDaGV2cm9uVXAgPSBmYUNoZXZyb25VcDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhQ2hldnJvbkRvd24gPSBmYUNoZXZyb25Eb3duO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB2aXNpYmxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBbdGhpcy5saW5rcygpPy5sZW5ndGggPiAwLCAhIXRoaXMuZHJhd2VySGVhZGVyVGVtcGxhdGUoKSwgISF0aGlzLmRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpXS5zb21lKEJvb2xlYW4pXG4gICk7XG5cbiAgLyoqXG4gICAqIERldGVjdCBzaG93aW5nIG1vZGFsIHdpdGhpbiB0aGUgY29udGVudCBvZiB0aGUgZHJhd2VyIGNvbnRhaW5lciwgd2hpY2ggYnJlYWtzIHRoZSBsYXlvdXQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzTW9kYWwgPSB0b1NpZ25hbChcbiAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kYWwnKS5sZW5ndGggPiAwKVxuICAgIClcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpc2FibGVBbmltYXRpb24gPSB0b1NpZ25hbCh0b09ic2VydmFibGUodGhpcy5oYXNNb2RhbCkucGlwZShkZWxheSgxMDAwKSkpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc0NvbXBhY3QgPSB0b1NpZ25hbChcbiAgICB0b09ic2VydmFibGUodGhpcy5jb21wYWN0QnJlYWtwb2ludCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChicmVha3BvaW50ID0+XG4gICAgICAgIHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuaXNBYm92ZUJyZWFrcG9pbnQkKGJyZWFrcG9pbnQpLnBpcGUobWFwKGlzQWJvdmVCcmVha3BvaW50ID0+ICFpc0Fib3ZlQnJlYWtwb2ludCkpXG4gICAgICApXG4gICAgKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaG9zdENsYXNzID0gY29tcHV0ZWQoKCkgPT5cbiAgICBbJ2lzLWZsZXgnLCB0aGlzLmlzQ29tcGFjdCgpID8gJ2lzLWZsZXgtZGlyZWN0aW9uLWNvbHVtbicgOiAnJywgdGhpcy5yZXNpemFibGUoKSA/ICdpcy1yZXNpemFibGUnIDogJyddLmpvaW4oJyAnKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNIb2xkaW5nVG9nZ2xlID0gdGhpcy5zaWRlbmF2U3RvcmUuaXNSZXNpemluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVTaWRlbmF2RXZlbnQkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2lkZW5hdlN0b3JlLmlzUmVzaXppbmcpLnBpcGUoXG4gICAgc3dpdGNoTWFwKGxpc3RlbiA9PiAobGlzdGVuID8gKGZyb21FdmVudCh3aW5kb3csICdtb3VzZW1vdmUnKSBhcyBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+KSA6IEVNUFRZKSksXG4gICAgdGhyb3R0bGVUaW1lKDAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50Q29udGFpbmVyJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRlbnRDb250YWluZXIpLnBpcGUoZmlsdGVyKHggPT4gISF4KSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hvc3RDb21wb25lbnRXaWR0aCQgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShzdGFydFdpdGgod2luZG93LmlubmVyV2lkdGgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNPdmVybGFwcGluZyQgPSB0b09ic2VydmFibGUodGhpcy5zaWRlbmF2U3RvcmUuaXNNZW51T3ZlcmxhcHBpbmcpO1xuXG4gIC8qKlxuICAgKiB3ZSB1c2UgY29tYmluZUxhdGVzdCBpbnN0ZWFkIG9mIGNvbXB1dGVkIHRvIGF2b2lkIHRoZSBhbmltYXRpb24gZmxpY2tlcmluZyAod2FpdCBmb3IgYWxsIHNvdXJjZXMgdG8gZW1pdClcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSByZWR1Y2VBbmltYXRpb24gPSB0b1NpZ25hbChcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmV4cGFuZGVkKSxcbiAgICAgIHRoaXMuX2lzT3ZlcmxhcHBpbmckLFxuICAgICAgdG9PYnNlcnZhYmxlKHRoaXMuaXNDb21wYWN0KSxcbiAgICAgIHRvT2JzZXJ2YWJsZSh0aGlzLnZpc2libGUpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2V4cGFuZGVkLCBpc092ZXJsYXBwaW5nLCBpc0NvbXBhY3QsIHZpc2libGVdKSA9PlxuICAgICAgICBbZXhwYW5kZWQsICFpc092ZXJsYXBwaW5nLCAhaXNDb21wYWN0LCB2aXNpYmxlXS5ldmVyeShCb29sZWFuKSA/ICdyZWR1Y2VkJyA6ICdmdWxsJ1xuICAgICAgKVxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudENvbnRhaW5lclBhZGRpbmckID0gdGhpcy5faG9zdENvbXBvbmVudFdpZHRoJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9jb250ZW50Q29udGFpbmVyJC5waXBlKG1hcCh0aGlzLl9nZXRDb250ZW50TGVmdFNpZGVTcGFjZSkpKVxuICApO1xuXG4gIHByaXZhdGUgc3RvcmFnZUtleSA9IGNvbXB1dGVkKCgpID0+IFtzdG9yYWdlS2V5LCB0aGlzLmlkKCldLmZpbHRlcihCb29sZWFuKS5qb2luKCctJykpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldFNpZGUodGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0TWluV2lkdGgodGhpcy5taW4pO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1heFdpZHRoKHRoaXMubWF4KTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRXaWR0aCh0aGlzLndpZHRoKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS51cGRhdGVSZXNpemluZyh0aGlzLl91cGRhdGVTaWRlbmF2RXZlbnQkKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRDb250ZW50Q29udGFpbmVyU3BhY2luZyh0aGlzLl9jb250ZW50Q29udGFpbmVyUGFkZGluZyQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldEV4cGFuZGVkKHRoaXMuZXhwYW5kZWQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1pbk1lbnVEaXN0YW5jZSh0aGlzLm1pbk1lbnVEaXN0YW5jZSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6YWJsZSgpKSB7XG4gICAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gSlNPTi5wYXJzZSh0aGlzLmxvY2FsU3RvcmFnZS5yZXRyaWV2ZSh0aGlzLnN0b3JhZ2VLZXkoKSkgfHwgJ3t9Jyk7XG4gICAgICAgICAgaWYgKHdpZHRoKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMud2lkdGguc2V0KHdpZHRoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIHN0YXJ0UmVzaXppbmcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVzaXphYmxlKCkpIHJldHVybjtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zdGFydFJlc2l6aW5nKGV2ZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZXVwJylcbiAgc3RvcFJlc2l6aW5nKCkge1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnN0b3BSZXNpemluZygpO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlLnN0b3JlKHRoaXMuc3RvcmFnZUtleSgpLCBKU09OLnN0cmluZ2lmeSh7IHdpZHRoOiB0aGlzLnNpZGVuYXZTdG9yZS53aWR0aCgpIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVJY29uKCkge1xuICAgIHJldHVybiAodGhpcy5leHBhbmRlZCgpICYmIHRoaXMucG9zaXRpb24oKSA9PT0gJ2xlZnQnKSB8fCAoIXRoaXMuZXhwYW5kZWQoKSAmJiB0aGlzLnBvc2l0aW9uKCkgPT09ICdyaWdodCcpXG4gICAgICA/IGZhQ2hldnJvbkxlZnRcbiAgICAgIDogZmFDaGV2cm9uUmlnaHQ7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcbiAgICBpZiAodGhpcy5zaWRlbmF2U3RvcmUuaGFzTWVudVdpZHRoQ2hhbmdlZCgpICYmIHRoaXMuZXhwYW5kZWQoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5leHBhbmRlZCgpID8gdGhpcy5oaWRlTWVudSgpIDogdGhpcy5zaG93TWVudSgpO1xuICB9XG5cbiAgcHVibGljIGhpZGVNZW51KCkge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93TWVudSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIGNvbnN0IGRpZE9wZW4gPSBldmVudC50b1N0YXRlICE9PSAnaGlkZGVuJztcbiAgICB0aGlzLm1lbnVTdGF0ZS5zZXQoZGlkT3BlbiA/ICdvcGVuJyA6ICdjbG9zZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29udGVudExlZnRTaWRlU3BhY2UoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBjb25zdCBwYWRkaW5nID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudC5uYXRpdmVFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWxlZnQnKTtcbiAgICBjb25zdCBtYXJnaW4gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ21hcmdpbi1sZWZ0Jyk7XG4gICAgcmV0dXJuIHBhcnNlSW50KHBhZGRpbmcsIDEwKSArIHBhcnNlSW50KG1hcmdpbiwgMTApO1xuICB9XG59XG4iLCJAaWYgKHZpc2libGUoKSkge1xuICBAaWYgKGlzQ29tcGFjdCgpKSB7XG4gICAgPGRpdiBjbGFzcz1cImNvbXBhY3QtaGVhZGVyXCI+XG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cImNvbXBhY3RIZWFkZXJDbGFzcygpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpcy1mbGV4IGlzLWFsaWduLWl0ZW1zLWZsZXgtc3RhcnQgaXMtanVzdGlmeS1jb250ZW50LXNwYWNlLWJldHdlZW4gdy0xMDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXMtZmxleCBpcy1mbGV4LWdyb3ctMSBpcy1qdXN0aWZ5LWNvbnRlbnQtc3BhY2UtYmV0d2VlbiBpcy1mbGV4LWRpcmVjdGlvbi1jb2x1bW5cIj5cbiAgICAgICAgICAgIEBpZiAoZHJhd2VySGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyYXdlckhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChsaW5rcygpPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duICNvcHRpb25EZD1cIm5nYkRyb3Bkb3duXCIgY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb21wYWN0LWhlYWRlci0tYnRuIGJ1dHRvbiBpcy1zbWFsbCBpcy1uby1zaGFkb3dcIlxuICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJkcmF3ZXItbWVudVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIE1lbnVcblxuICAgICAgICAgICAgICAgIDxmYS1pY29uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbXBhY3QtaGVhZGVyLS1idG5fX2ljb25cIlxuICAgICAgICAgICAgICAgICAgW2ljb25dPVwib3B0aW9uRGQuaXNPcGVuKCkgPyBmYUNoZXZyb25VcCA6IGZhQ2hldnJvbkRvd25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBpZD1cImRyYXdlci1tZW51XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRlbnQgbmF2aWdhdGlvbi1tZW51LWRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICA8aGUtbmF2aWdhdGlvbi1tZW51IChjbG9zZWQpPVwib3B0aW9uRGQuY2xvc2UoKVwiIFtsaW5rc109XCJsaW5rcygpXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICAgIDxhc2lkZT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzaGVsbF9fbWVudUNvbnRlbnQgfCBoLTEwMFwiXG4gICAgICAgIChAc2lkZU1lbnUuZG9uZSk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIlxuICAgICAgICBbQHNpZGVNZW51XT1cImV4cGFuZGVkKCkgPyAnZnVsbCcgOiAnaGlkZGVuJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgc2hlbGxfX21lbnVDb250ZW50LS1jb250YWluZXJcIj5cbiAgICAgICAgICBAaWYgKGRyYXdlckhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VySGVhZGVyVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChsaW5rcygpPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8aGUtbmF2aWdhdGlvbi1tZW51IFtsaW5rc109XCJsaW5rcygpXCI+XG4gICAgICAgICAgICAgIEBpZiAoZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG91dGVyLWNvbnRlbnQgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2hlLW5hdmlnYXRpb24tbWVudT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVNZW51KClcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXppbmcoJGV2ZW50KVwiIGNsYXNzPVwic2hlbGxfX21lbnVDb250ZW50LS10b2dnbGVcIj5cbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJ0b2dnbGVJY29uKClcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXNpZGU+XG4gIH1cbn1cblxuPGRpdlxuICBbY2xhc3MuaXMtcmVzaXppbmddPVwiaXNIb2xkaW5nVG9nZ2xlKClcIlxuICBbQHJlZHVjZVdpZHRoXT1cInJlZHVjZUFuaW1hdGlvbigpXCJcbiAgY2xhc3M9XCJzaGVsbF9fY29udGVudCB8IGgtMTAwIHctMTAwIGlzLWZsZXggaXMtanVzdGlmeS1jb250ZW50LWZsZXgtZW5kXCI+XG4gIDxkaXZcbiAgICBbY2xhc3MuZGlzYWJsZS1hbmltYXRpb25dPVwiZGlzYWJsZUFuaW1hdGlvbigpXCJcbiAgICBbY2xhc3MuZGlzYWJsZS10cmFuc2Zvcm0teF09XCJoYXNNb2RhbCgpXCJcbiAgICBjbGFzcz1cInNoZWxsX19jb250ZW50LS1ib2R5IHwgdy0xMDBcIj5cbiAgICA8ZGl2ICNjb250ZW50Q29udGFpbmVyIFtjbGFzc05hbWVdPVwiY29udGVudFBhZGRpbmdTdHlsZXMoKVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RyYXdlci1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWtCLE1BQU0saUJBQWlCLENBQUM7QUFDN0UsT0FBTyxFQUF1Qix1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzVHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFaEYsTUFBTSxVQUFVLEdBQUcscUJBQXFCLENBQUM7QUEyQnpDLE1BQU0sT0FBTyx3QkFBd0I7SUE4R25DO1FBN0dpQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFM0MscUJBQWdCLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFckUsY0FBUyxHQUFHLE1BQU0sQ0FBbUIsT0FBTyxDQUFDLENBQUM7UUFDOUMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUQ7Ozs7OztXQU1HO1FBQ2dCLHNCQUFpQixHQUFHLEtBQUssQ0FBdUIsUUFBUSxDQUFDLENBQUM7UUFDMUQsYUFBUSxHQUFHLEtBQUssQ0FBaUIsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELFFBQUcsR0FBRyxLQUFLLENBQVMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLFVBQUssR0FBRyxLQUFLLENBQVMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLFFBQUcsR0FBRyxLQUFLLENBQVMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLGNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIseUJBQW9CLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdkMsZ0JBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsVUFBSyxHQUFHLEtBQUssQ0FBd0IsRUFBRSxDQUFDLENBQUM7UUFDekMseUJBQW9CLEdBQUcsS0FBSyxFQUFvQixDQUFDO1FBQ2pELDZCQUF3QixHQUFHLEtBQUssRUFBb0IsQ0FBQztRQUNyRCx1QkFBa0IsR0FBRyxLQUFLLENBQXFCLElBQUksQ0FBQyxDQUFDO1FBQ3hFOztXQUVHO1FBQ2dCLG9CQUFlLEdBQUcsS0FBSyxDQUFTLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRjs7V0FFRztRQUNnQixPQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWYsV0FBTSxHQUFHLG9CQUFvQixDQUM5QyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDL0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsRUFDakMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUNoQixDQUNGLENBQUM7UUFDaUIsV0FBTSxHQUFHLG9CQUFvQixDQUM5QyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDL0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsRUFDbEMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUNoQixDQUNGLENBQUM7UUFFaUIsZ0JBQVcsR0FBRyxXQUFXLENBQUM7UUFDMUIsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFFOUIsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDekMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUMzRyxDQUFDO1FBRUY7O1dBRUc7UUFDZ0IsYUFBUSxHQUFHLFFBQVEsQ0FDcEMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDcEQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDcEYsQ0FDRixDQUFDO1FBQ2lCLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNFLGNBQVMsR0FBRyxRQUFRLENBQ3JDLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQ3ZDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQ3pHLENBQ0YsQ0FDRixDQUFDO1FBQ2lCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQzNDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUNsSCxDQUFDO1FBQ2lCLG9CQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFFakQseUJBQW9CLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUNyRixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQTRCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ2xHLFlBQVksQ0FBQyxDQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FDekMsQ0FBQztRQUNlLHVCQUFrQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEYseUJBQW9CLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLG9CQUFlLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVyRjs7V0FFRztRQUNnQixvQkFBZSxHQUFHLFFBQVEsQ0FDM0MsYUFBYSxDQUFDO1lBQ1osWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDM0Isd0JBQXdCO1lBQ3hCLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzVCLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQzNCLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUMvRyxDQUNGLENBQUM7UUFDZSw4QkFBeUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUN6RSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzVGLENBQUM7UUFFTSxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUdyRixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFM0QsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO2dCQUNwRixJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMxQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO1FBRUYsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFpQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUFFLE9BQU87UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUdELFlBQVk7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVTLFVBQVU7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssT0FBTyxDQUFDO1lBQ3pHLENBQUMsQ0FBQyxhQUFhO1lBQ2YsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUNyQixDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPO1FBRXZFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFUyxhQUFhLENBQUMsS0FBcUI7UUFDM0MsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxPQUFnQztRQUMvRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQzdHLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUMzRyxPQUFPLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDOytHQXZMVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixrdUVBRnhCLENBQUMsWUFBWSxDQUFDLDJIQVFpRCxVQUFVLDZDQy9EdEYscThGQWdGQSxnL0ZENUNJLGdCQUFnQixvSkFDaEIsZUFBZSw0TUFDZixPQUFPLG1GQUNQLFdBQVcsK0JBQ1gsV0FBVyxvTkFDWCxlQUFlLDhEQUNmLGlCQUFpQixnRUFDakIsdUJBQXVCLDRJQUtiLENBQUMsR0FBRyxzQkFBc0IsRUFBRSxHQUFHLHlCQUF5QixDQUFDOzs0RkFTMUQsd0JBQXdCO2tCQXpCcEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsdUJBQXVCO3FCQUN4QixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxDQUFDLEdBQUcsc0JBQXNCLEVBQUUsR0FBRyx5QkFBeUIsQ0FBQyxRQUUvRDt3QkFDSixTQUFTLEVBQUUsYUFBYTt3QkFDeEIsd0JBQXdCLEVBQUUsWUFBWTt3QkFDdEMscUJBQXFCLEVBQUUsYUFBYTtxQkFDckMsYUFDVSxDQUFDLFlBQVksQ0FBQzt3REFzSnpCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICB2aWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZhSWNvbkNvbXBvbmVudCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IGZhQ2hldnJvbkRvd24sIGZhQ2hldnJvbkxlZnQsIGZhQ2hldnJvblJpZ2h0LCBmYUNoZXZyb25VcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgdHlwZSB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBvdXRwdXRGcm9tT2JzZXJ2YWJsZSwgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgc2tpcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd24sIE5nYkRyb3Bkb3duTWVudSwgTmdiRHJvcGRvd25Ub2dnbGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgY29tYmluZUxhdGVzdCwgRU1QVFksIGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJ25neC13ZWJzdG9yYWdlJztcblxuaW1wb3J0IHsgSEVfUkVEVUNFX1dJRFRIX0FOSU1BVElPTiwgSEVfU0lERV9NRU5VX0FOSU1BVElPTiB9IGZyb20gJy4vZHJhd2VyLWNvbnRhaW5lci5hbmltYXRpb25zJztcbmltcG9ydCB7IHNpZGVuYXZTdG9yZSwgaW5pdGlhbFN0YXRlLCBkcmF3ZXJQb3NpdGlvbiB9IGZyb20gJy4vc2lkZW5hdi5zdG9yZSc7XG5pbXBvcnQgeyBJTmF2aWdhdGlvbk1lbnVMaW5rLCBOYXZpZ2F0aW9uTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tbWVudS9uYXZpZ2F0aW9uLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFJlc3BvbnNpdmVCcmVha3BvaW50LCBSZXNwb25zaXZlU2VydmljZSB9IGZyb20gJy4uL3Jlc3BvbnNpdmUuc2VydmljZSc7XG5cbmNvbnN0IHN0b3JhZ2VLZXkgPSAnaGUtZHJhd2VyLWNvbnRhaW5lcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWRyYXdlci1jb250YWluZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBGYUljb25Db21wb25lbnQsXG4gICAgTmdDbGFzcyxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ2JEcm9wZG93bixcbiAgICBOZ2JEcm9wZG93bk1lbnUsXG4gICAgTmdiRHJvcGRvd25Ub2dnbGUsXG4gICAgTmF2aWdhdGlvbk1lbnVDb21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RyYXdlci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbLi4uSEVfU0lERV9NRU5VX0FOSU1BVElPTiwgLi4uSEVfUkVEVUNFX1dJRFRIX0FOSU1BVElPTl0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgJ1tjbGFzc10nOiAnaG9zdENsYXNzKCknLFxuICAgICdbYXR0ci5kcmF3ZXItcG9zaXRpb25dJzogJ3Bvc2l0aW9uKCknLFxuICAgICdbYXR0ci5kcmF3ZXItc3RhdGVdJzogJ21lbnVTdGF0ZSgpJ1xuICB9LFxuICBwcm92aWRlcnM6IFtzaWRlbmF2U3RvcmVdXG59KVxuZXhwb3J0IGNsYXNzIERyYXdlckNvbnRhaW5lckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzaWRlbmF2U3RvcmUgPSBpbmplY3Qoc2lkZW5hdlN0b3JlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNwb25zaXZlU2VydmljZSA9IGluamVjdChSZXNwb25zaXZlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTdG9yYWdlID0gaW5qZWN0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGVudENvbnRhaW5lciA9IHZpZXdDaGlsZCgnY29udGVudENvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWVudVN0YXRlID0gc2lnbmFsPCdvcGVuJyB8ICdjbG9zZSc+KCdjbG9zZScpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXhwYW5kZWQgPSBzaWduYWwoaW5pdGlhbFN0YXRlLmV4cGFuZGVkKTtcblxuICAvKipcbiAgICogVGhlIGJyZWFrcG9pbnQgYXQgd2hpY2ggdGhlIGRyYXdlciB3aWxsIG5vIGxvbmdlciBiZSBjb21wYWN0LlxuICAgKiBJZiBhIG51bWJlciBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSB1c2VkIGFzIHRoZSB3aWR0aCBpbiBwaXhlbHMuXG4gICAqIElmICdub25lJyBpcyBwcm92aWRlZCwgdGhlIGRyYXdlciB3aWxsIG5ldmVyIGJlIGNvbXBhY3QuXG4gICAqIElmIGEgYnJlYWtwb2ludCBuYW1lIGlzIHByb3ZpZGVkLCB0aGUgZHJhd2VyIHdpbGwgYmUgY29tcGFjdCB1bnRpbCB0aGF0IGJyZWFrcG9pbnQuXG4gICAqIEBkZWZhdWx0ICd0YWJsZXQnIC0gdGhlIGRyYXdlciB3aWxsIGJlIGNvbXBhY3QgdW50aWwgdGhlIHRhYmxldCBicmVha3BvaW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbXBhY3RCcmVha3BvaW50ID0gaW5wdXQ8UmVzcG9uc2l2ZUJyZWFrcG9pbnQ+KCd0YWJsZXQnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8ZHJhd2VyUG9zaXRpb24+KGluaXRpYWxTdGF0ZS5zaWRlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1pbiA9IGlucHV0PG51bWJlcj4oaW5pdGlhbFN0YXRlLm1pbldpZHRoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpZHRoID0gbW9kZWw8bnVtYmVyPihpbml0aWFsU3RhdGUud2lkdGgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8bnVtYmVyPihpbml0aWFsU3RhdGUubWF4V2lkdGgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVzaXphYmxlID0gaW5wdXQodHJ1ZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb250ZW50UGFkZGluZ1N0eWxlcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1lbnVPdmVybGFwID0gaW5wdXQodHJ1ZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsaW5rcyA9IGlucHV0PElOYXZpZ2F0aW9uTWVudUxpbmtbXT4oW10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJhd2VySGVhZGVyVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbXBhY3RIZWFkZXJDbGFzcyA9IGlucHV0PE5nQ2xhc3NbJ25nQ2xhc3MnXT4obnVsbCk7XG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBtZW51IGFuZCB0aGUgZWRnZSBvZiB0aGUgY29udGVudCBjb250YWluZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWluTWVudURpc3RhbmNlID0gaW5wdXQ8bnVtYmVyPihpbml0aWFsU3RhdGUubWluTWVudURpc3RhbmNlKTtcbiAgLyoqXG4gICAqIEdpdmluZyBhbiBpZCB0byB0aGUgbWVudSBzbyB0aGF0IGl0IGNhbiBzdG9yZSB0aGUgcmVzaXplZCBwb3NpdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBpZCA9IGlucHV0KCcnKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3BlbmVkID0gb3V0cHV0RnJvbU9ic2VydmFibGUoXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMubWVudVN0YXRlKS5waXBlKFxuICAgICAgc2tpcCgxKSxcbiAgICAgIGZpbHRlcihzdGF0ZSA9PiBzdGF0ZSA9PT0gJ29wZW4nKSxcbiAgICAgIG1hcCgoKSA9PiB0cnVlKVxuICAgIClcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsb3NlZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLm1lbnVTdGF0ZSkucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09ICdjbG9zZScpLFxuICAgICAgbWFwKCgpID0+IHRydWUpXG4gICAgKVxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYUNoZXZyb25VcCA9IGZhQ2hldnJvblVwO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFDaGV2cm9uRG93biA9IGZhQ2hldnJvbkRvd247XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpc2libGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIFt0aGlzLmxpbmtzKCk/Lmxlbmd0aCA+IDAsICEhdGhpcy5kcmF3ZXJIZWFkZXJUZW1wbGF0ZSgpLCAhIXRoaXMuZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKCldLnNvbWUoQm9vbGVhbilcbiAgKTtcblxuICAvKipcbiAgICogRGV0ZWN0IHNob3dpbmcgbW9kYWwgd2l0aGluIHRoZSBjb250ZW50IG9mIHRoZSBkcmF3ZXIgY29udGFpbmVyLCB3aGljaCBicmVha3MgdGhlIGxheW91dC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBoYXNNb2RhbCA9IHRvU2lnbmFsKFxuICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJykucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RhbCcpLmxlbmd0aCA+IDApXG4gICAgKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYWJsZUFuaW1hdGlvbiA9IHRvU2lnbmFsKHRvT2JzZXJ2YWJsZSh0aGlzLmhhc01vZGFsKS5waXBlKGRlbGF5KDEwMDApKSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzQ29tcGFjdCA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmNvbXBhY3RCcmVha3BvaW50KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGJyZWFrcG9pbnQgPT5cbiAgICAgICAgdGhpcy5yZXNwb25zaXZlU2VydmljZS5pc0Fib3ZlQnJlYWtwb2ludCQoYnJlYWtwb2ludCkucGlwZShtYXAoaXNBYm92ZUJyZWFrcG9pbnQgPT4gIWlzQWJvdmVCcmVha3BvaW50KSlcbiAgICAgIClcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIFsnaXMtZmxleCcsIHRoaXMuaXNDb21wYWN0KCkgPyAnaXMtZmxleC1kaXJlY3Rpb24tY29sdW1uJyA6ICcnLCB0aGlzLnJlc2l6YWJsZSgpID8gJ2lzLXJlc2l6YWJsZScgOiAnJ10uam9pbignICcpXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc0hvbGRpbmdUb2dnbGUgPSB0aGlzLnNpZGVuYXZTdG9yZS5pc1Jlc2l6aW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3VwZGF0ZVNpZGVuYXZFdmVudCQgPSB0b09ic2VydmFibGUodGhpcy5zaWRlbmF2U3RvcmUuaXNSZXNpemluZykucGlwZShcbiAgICBzd2l0Y2hNYXAobGlzdGVuID0+IChsaXN0ZW4gPyAoZnJvbUV2ZW50KHdpbmRvdywgJ21vdXNlbW92ZScpIGFzIE9ic2VydmFibGU8TW91c2VFdmVudD4pIDogRU1QVFkpKSxcbiAgICB0aHJvdHRsZVRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRDb250YWluZXIkID0gdG9PYnNlcnZhYmxlKHRoaXMuY29udGVudENvbnRhaW5lcikucGlwZShmaWx0ZXIoeCA9PiAhIXgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaG9zdENvbXBvbmVudFdpZHRoJCA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5waXBlKHN0YXJ0V2l0aCh3aW5kb3cuaW5uZXJXaWR0aCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc092ZXJsYXBwaW5nJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNpZGVuYXZTdG9yZS5pc01lbnVPdmVybGFwcGluZyk7XG5cbiAgLyoqXG4gICAqIHdlIHVzZSBjb21iaW5lTGF0ZXN0IGluc3RlYWQgb2YgY29tcHV0ZWQgdG8gYXZvaWQgdGhlIGFuaW1hdGlvbiBmbGlja2VyaW5nICh3YWl0IGZvciBhbGwgc291cmNlcyB0byBlbWl0KVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlZHVjZUFuaW1hdGlvbiA9IHRvU2lnbmFsKFxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdG9PYnNlcnZhYmxlKHRoaXMuZXhwYW5kZWQpLFxuICAgICAgLy8gdGhpcy5faXNPdmVybGFwcGluZyQsXG4gICAgICB0b09ic2VydmFibGUodGhpcy5pc0NvbXBhY3QpLFxuICAgICAgdG9PYnNlcnZhYmxlKHRoaXMudmlzaWJsZSlcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbZXhwYW5kZWQsIGlzQ29tcGFjdCwgdmlzaWJsZV0pID0+IChbZXhwYW5kZWQsICFpc0NvbXBhY3QsIHZpc2libGVdLmV2ZXJ5KEJvb2xlYW4pID8gJ3JlZHVjZWQnIDogJ2Z1bGwnKSlcbiAgICApXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRDb250YWluZXJQYWRkaW5nJCA9IHRoaXMuX2hvc3RDb21wb25lbnRXaWR0aCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fY29udGVudENvbnRhaW5lciQucGlwZShtYXAoZWwgPT4gdGhpcy5fZ2V0Q29udGVudExlZnRTaWRlU3BhY2UoZWwpKSkpXG4gICk7XG5cbiAgcHJpdmF0ZSBzdG9yYWdlS2V5ID0gY29tcHV0ZWQoKCkgPT4gW3N0b3JhZ2VLZXksIHRoaXMuaWQoKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy0nKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0U2lkZSh0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRNaW5XaWR0aCh0aGlzLm1pbik7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0TWF4V2lkdGgodGhpcy5tYXgpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldFdpZHRoKHRoaXMud2lkdGgpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnVwZGF0ZVJlc2l6aW5nKHRoaXMuX3VwZGF0ZVNpZGVuYXZFdmVudCQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldENvbnRlbnRDb250YWluZXJTcGFjaW5nKHRoaXMuX2NvbnRlbnRDb250YWluZXJQYWRkaW5nJCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0RXhwYW5kZWQodGhpcy5leHBhbmRlZCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0TWluTWVudURpc3RhbmNlKHRoaXMubWluTWVudURpc3RhbmNlKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXphYmxlKCkpIHtcbiAgICAgICAgICBjb25zdCB7IHdpZHRoIH0gPSBKU09OLnBhcnNlKHRoaXMubG9jYWxTdG9yYWdlLnJldHJpZXZlKHRoaXMuc3RvcmFnZUtleSgpKSB8fCAne30nKTtcbiAgICAgICAgICBpZiAod2lkdGgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy53aWR0aC5zZXQod2lkdGgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSgpKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm1lbnVTdGF0ZS5zZXQoJ2Nsb3NlJykpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIHN0YXJ0UmVzaXppbmcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVzaXphYmxlKCkpIHJldHVybjtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zdGFydFJlc2l6aW5nKGV2ZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZXVwJylcbiAgc3RvcFJlc2l6aW5nKCkge1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnN0b3BSZXNpemluZygpO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlLnN0b3JlKHRoaXMuc3RvcmFnZUtleSgpLCBKU09OLnN0cmluZ2lmeSh7IHdpZHRoOiB0aGlzLnNpZGVuYXZTdG9yZS53aWR0aCgpIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVJY29uKCkge1xuICAgIHJldHVybiAodGhpcy5leHBhbmRlZCgpICYmIHRoaXMucG9zaXRpb24oKSA9PT0gJ2xlZnQnKSB8fCAoIXRoaXMuZXhwYW5kZWQoKSAmJiB0aGlzLnBvc2l0aW9uKCkgPT09ICdyaWdodCcpXG4gICAgICA/IGZhQ2hldnJvbkxlZnRcbiAgICAgIDogZmFDaGV2cm9uUmlnaHQ7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcbiAgICBpZiAodGhpcy5zaWRlbmF2U3RvcmUuaGFzTWVudVdpZHRoQ2hhbmdlZCgpICYmIHRoaXMuZXhwYW5kZWQoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5leHBhbmRlZCgpID8gdGhpcy5oaWRlTWVudSgpIDogdGhpcy5zaG93TWVudSgpO1xuICB9XG5cbiAgcHVibGljIGhpZGVNZW51KCkge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93TWVudSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgIGNvbnN0IGRpZE9wZW4gPSBldmVudC50b1N0YXRlICE9PSAnaGlkZGVuJztcbiAgICB0aGlzLm1lbnVTdGF0ZS5zZXQoZGlkT3BlbiA/ICdvcGVuJyA6ICdjbG9zZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29udGVudExlZnRTaWRlU3BhY2UoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb24oKTtcbiAgICBjb25zdCBwYWRkaW5nID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudC5uYXRpdmVFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLScgKyBwb3NpdGlvbik7XG4gICAgY29uc3QgbWFyZ2luID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudC5uYXRpdmVFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdtYXJnaW4tJyArIHBvc2l0aW9uKTtcbiAgICByZXR1cm4gcGFyc2VJbnQocGFkZGluZywgMTApICsgcGFyc2VJbnQobWFyZ2luLCAxMCk7XG4gIH1cbn1cbiIsIkBpZiAodmlzaWJsZSgpKSB7XG4gIEBpZiAoaXNDb21wYWN0KCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiY29tcGFjdC1oZWFkZXJcIj5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwiY29tcGFjdEhlYWRlckNsYXNzKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlzLWZsZXggaXMtYWxpZ24taXRlbXMtZmxleC1zdGFydCBpcy1qdXN0aWZ5LWNvbnRlbnQtc3BhY2UtYmV0d2VlbiB3LTEwMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpcy1mbGV4IGlzLWZsZXgtZ3Jvdy0xIGlzLWp1c3RpZnktY29udGVudC1zcGFjZS1iZXR3ZWVuIGlzLWZsZXgtZGlyZWN0aW9uLWNvbHVtblwiPlxuICAgICAgICAgICAgQGlmIChkcmF3ZXJIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJhd2VySGVhZGVyVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICBAaWYgKGxpbmtzKCk/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gI29wdGlvbkRkPVwibmdiRHJvcGRvd25cIiBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tLWVuZFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbXBhY3QtaGVhZGVyLS1idG4gYnV0dG9uIGlzLXNtYWxsIGlzLW5vLXNoYWRvd1wiXG4gICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz1cImRyYXdlci1tZW51XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgTWVudVxuXG4gICAgICAgICAgICAgICAgPGZhLWljb25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tcGFjdC1oZWFkZXItLWJ0bl9faWNvblwiXG4gICAgICAgICAgICAgICAgICBbaWNvbl09XCJvcHRpb25EZC5pc09wZW4oKSA/IGZhQ2hldnJvblVwIDogZmFDaGV2cm9uRG93blwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGlkPVwiZHJhd2VyLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudCBuYXZpZ2F0aW9uLW1lbnUtZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgIDxoZS1uYXZpZ2F0aW9uLW1lbnUgKGNsb3NlZCk9XCJvcHRpb25EZC5jbG9zZSgpXCIgW2xpbmtzXT1cImxpbmtzKClcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGFzaWRlPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNoZWxsX19tZW51Q29udGVudCB8IGgtMTAwXCJcbiAgICAgICAgKEBzaWRlTWVudS5kb25lKT1cImFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgICAgIFtAc2lkZU1lbnVdPVwiZXhwYW5kZWQoKSA/ICdmdWxsJyA6ICdoaWRkZW4nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCBzaGVsbF9fbWVudUNvbnRlbnQtLWNvbnRhaW5lclwiPlxuICAgICAgICAgIEBpZiAoZHJhd2VySGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkcmF3ZXJIZWFkZXJUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGxpbmtzKCk/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIDxoZS1uYXZpZ2F0aW9uLW1lbnUgW2xpbmtzXT1cImxpbmtzKClcIj5cbiAgICAgICAgICAgICAgQGlmIChkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgb3V0ZXItY29udGVudCBbbmdUZW1wbGF0ZU91dGxldF09XCJkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvaGUtbmF2aWdhdGlvbi1tZW51PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiIChtb3VzZWRvd24pPVwic3RhcnRSZXNpemluZygkZXZlbnQpXCIgY2xhc3M9XCJzaGVsbF9fbWVudUNvbnRlbnQtLXRvZ2dsZVwiPlxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cInRvZ2dsZUljb24oKVwiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9hc2lkZT5cbiAgfVxufVxuXG48ZGl2XG4gIFtjbGFzcy5pcy1yZXNpemluZ109XCJpc0hvbGRpbmdUb2dnbGUoKVwiXG4gIFtAcmVkdWNlV2lkdGhdPVwicmVkdWNlQW5pbWF0aW9uKClcIlxuICBjbGFzcz1cInNoZWxsX19jb250ZW50IHwgaC0xMDAgdy0xMDAgaXMtZmxleCBpcy1qdXN0aWZ5LWNvbnRlbnQtZmxleC1lbmRcIj5cbiAgPGRpdlxuICAgIFtjbGFzcy5kaXNhYmxlLWFuaW1hdGlvbl09XCJkaXNhYmxlQW5pbWF0aW9uKClcIlxuICAgIFtjbGFzcy5kaXNhYmxlLXRyYW5zZm9ybS14XT1cImhhc01vZGFsKClcIlxuICAgIGNsYXNzPVwic2hlbGxfX2NvbnRlbnQtLWJvZHkgfCB3LTEwMFwiPlxuICAgIDxkaXYgI2NvbnRlbnRDb250YWluZXIgW2NsYXNzTmFtZV09XCJjb250ZW50UGFkZGluZ1N0eWxlcygpXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZHJhd2VyLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -28,8 +28,8 @@ export const sidenavStore = signalStore(withState(initialState), withComputed(({
28
28
  setMinWidth: rxMethod(pipe(tap((min) => patchState(store, { minWidth: min })))),
29
29
  setMaxWidth: rxMethod(pipe(tap((max) => patchState(store, { maxWidth: max })))),
30
30
  setWidth: rxMethod(pipe(tap((width) => patchState(store, { width })))),
31
- setSidenavWidthCss: rxMethod(pipe(throttleTime(0, animationFrameScheduler), tap((width) => document.body.style.setProperty('--sidenav-width', `${width}px`)))),
32
- setContentTransformCss: rxMethod(pipe(tap(({ expanded, position, value }) => document.body.style.setProperty('--contentTransitionX', `${expanded ? (position == 'left' ? 1 : -1) * value : 0}px`)))),
31
+ setSidenavWidthCss: rxMethod(pipe(throttleTime(0, animationFrameScheduler), tap(({ position, width }) => document.body.style.setProperty(`--sidenav-${position}-width`, `${width}px`)))),
32
+ setContentTransformCss: rxMethod(pipe(tap(({ expanded, position, value }) => document.body.style.setProperty(`--content-transition-${position}-x`, `${expanded ? (position == 'left' ? 1 : -1) * value : 0}px`)))),
33
33
  setContentContainerSpacing: rxMethod(pipe(tap((contentContainerSpacing) => patchState(store, { contentContainerSpacing })))),
34
34
  startResizing: (event) => patchState(store, {
35
35
  resizeEvent: {
@@ -82,7 +82,11 @@ export const sidenavStore = signalStore(withState(initialState), withComputed(({
82
82
  value: contentContainerTransform()
83
83
  }));
84
84
  setContentTransformCss(contentTransform);
85
- setSidenavWidthCss(sidenavWidth);
85
+ const width = computed(() => ({
86
+ width: sidenavWidth(),
87
+ position: side()
88
+ }));
89
+ setSidenavWidthCss(width);
86
90
  }
87
91
  })));
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vZHJhd2VyLWNvbnRhaW5lci9zaWRlbmF2LnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixVQUFVLEVBQUUsS0FBSztJQUNqQixlQUFlLEVBQUUsQ0FBQztJQUNsQixhQUFhLEVBQUUsQ0FBQztJQUNoQixRQUFRLEVBQUUsQ0FBQztDQUNaLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsUUFBUSxFQUFFLEdBQUc7SUFDYixRQUFRLEVBQUUsR0FBRztJQUNiLEtBQUssRUFBRSxHQUFHO0lBQ1YsUUFBUSxFQUFFLElBQUk7SUFDZCxJQUFJLEVBQUUsTUFBMEI7SUFDaEMsV0FBVyxFQUFFLGtCQUFrQjtJQUMvQix1QkFBdUIsRUFBRSxDQUFDO0lBQzFCLGVBQWUsRUFBRSxFQUFFO0NBQ3BCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUNyQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQ3ZCLFlBQVksQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQyxZ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YXIvY29yZSc7XG5pbXBvcnQgeyBwYXRjaFN0YXRlLCBzaWduYWxTdG9yZSwgd2l0aENvbXB1dGVkLCB3aXRoSG9va3MsIHdpdGhNZXRob2RzLCB3aXRoU3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IHJ4TWV0aG9kIH0gZnJvbSAnQG5ncngvc2lnbmFscy9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIHBpcGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBpbml0aWFsUmVzaXplRXZlbnQgPSB7XG4gIGlzUmVzaXppbmc6IGZhbHNlLFxuICBzdGFydGluZ0N1cnNvclg6IDAsXG4gIHN0YXJ0aW5nV2lkdGg6IDAsXG4gIG5ld1dpZHRoOiAwXG59O1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICBtaW5XaWR0aDogMjUwLFxuICBtYXhXaWR0aDogNjAwLFxuICB3aWR0aDogMjU2LFxuICBleHBhbmRlZDogdHJ1ZSxcbiAgc2lkZTogJ2xlZnQnIGFzICdsZWZ0JyB8ICdyaWdodCcsXG4gIHJlc2l6ZUV2ZW50OiBpbml0aWFsUmVzaXplRXZlbnQsXG4gIGNvbnRlbnRDb250YWluZXJTcGFjaW5nOiAwLFxuICBtaW5NZW51RGlzdGFuY2U6IDIwXG59O1xuXG5leHBvcnQgY29uc3Qgc2lkZW5hdlN0b3JlID0gc2lnbmFsU3RvcmUoXG4gIHdpdGhTdGF0ZShpbml0aWFsU3RhdGUpLFxuICB3aXRoQ29tcHV0ZWQoKHsgbWluV2lkdGgsIHdpZHRoLCBtYXhXaWR0aCB9KSA9PiAoe1xuICAgIHNpZGVuYXZXaWR0aDogY29tcHV0ZWQoKCkgPT4gTWF0aC5taW4oTWF0aC5tYXgod2lkdGgoKSwgbWluV2lkdGgoKSksIG1heFdpZHRoKCkpKVxuICB9KSksXG4gIHdpdGhNZXRob2RzKHN0b3JlID0+ICh7XG4gICAgc2V0RXhwYW5kZWQ6IHJ4TWV0aG9kPGJvb2xlYW4+KHBpcGUodGFwKChleHBhbmRlZDogYm9vbGVhbikgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyBleHBhbmRlZCB9KSkpKSxcbiAgICBzZXRTaWRlOiByeE1ldGhvZDwnbGVmdCcgfCAncmlnaHQnPihwaXBlKHRhcCgoc2lkZTogJ2xlZnQnIHwgJ3JpZ2h0JykgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyBzaWRlIH0pKSkpLFxuICAgIHNldE1pbk1lbnVEaXN0YW5jZTogcnhNZXRob2Q8bnVtYmVyPihcbiAgICAgIHBpcGUodGFwKChtaW5NZW51RGlzdGFuY2U6IG51bWJlcikgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyBtaW5NZW51RGlzdGFuY2U6IG1pbk1lbnVEaXN0YW5jZSB9KSkpXG4gICAgKSxcbiAgICBzZXRNaW5XaWR0aDogcnhNZXRob2Q8bnVtYmVyPihwaXBlKHRhcCgobWluOiBudW1iZXIpID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgbWluV2lkdGg6IG1pbiB9KSkpKSxcbiAgICBzZXRNYXhXaWR0aDogcnhNZXRob2Q8bnVtYmVyPihwaXBlKHRhcCgobWF4OiBudW1iZXIpID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgbWF4V2lkdGg6IG1heCB9KSkpKSxcbiAgICBzZXRXaWR0aDogcnhNZXRob2Q8bnVtYmVyPihwaXBlKHRhcCgod2lkdGg6IG51bWJlcikgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyB3aWR0aCB9KSkpKSxcbiAgICBzZXRTaWRlbmF2V2lkdGhDc3M6IHJ4TWV0aG9kPG51bWJlcj4oXG4gICAgICBwaXBlKFxuICAgICAgICB0aHJvdHRsZVRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpLFxuICAgICAgICB0YXAoKHdpZHRoOiBudW1iZXIpID0+IGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2lkZW5hdi13aWR0aCcsIGAke3dpZHRofXB4YCkpXG4gICAgICApXG4gICAgKSxcbiAgICBzZXRDb250ZW50VHJhbnNmb3JtQ3NzOiByeE1ldGhvZDx7XG4gICAgICBleHBhbmRlZDogYm9vbGVhbjtcbiAgICAgIHBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnO1xuICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICB9PihcbiAgICAgIHBpcGUoXG4gICAgICAgIHRhcCgoeyBleHBhbmRlZCwgcG9zaXRpb24sIHZhbHVlIH0pID0+XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICctLWNvbnRlbnRUcmFuc2l0aW9uWCcsXG4gICAgICAgICAgICBgJHtleHBhbmRlZCA/IChwb3NpdGlvbiA9PSAnbGVmdCcgPyAxIDogLTEpICogdmFsdWUgOiAwfXB4YFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICksXG4gICAgc2V0Q29udGVudENvbnRhaW5lclNwYWNpbmc6IHJ4TWV0aG9kPG51bWJlcj4oXG4gICAgICBwaXBlKHRhcCgoY29udGVudENvbnRhaW5lclNwYWNpbmc6IG51bWJlcikgPT4gcGF0Y2hTdGF0ZShzdG9yZSwgeyBjb250ZW50Q29udGFpbmVyU3BhY2luZyB9KSkpXG4gICAgKSxcbiAgICBzdGFydFJlc2l6aW5nOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+XG4gICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgIHJlc2l6ZUV2ZW50OiB7XG4gICAgICAgICAgaXNSZXNpemluZzogdHJ1ZSxcbiAgICAgICAgICBzdGFydGluZ0N1cnNvclg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgc3RhcnRpbmdXaWR0aDogc3RvcmUuc2lkZW5hdldpZHRoKCksXG4gICAgICAgICAgbmV3V2lkdGg6IHN0b3JlLnNpZGVuYXZXaWR0aCgpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIHVwZGF0ZVJlc2l6aW5nOiByeE1ldGhvZDxNb3VzZUV2ZW50PihcbiAgICAgIHRhcCgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzaXplRXZlbnQgPSBzdG9yZS5yZXNpemVFdmVudCgpO1xuICAgICAgICAvLyBObyBuZWVkIHRvIGV2ZW4gY29udGludWUgaWYgd2UncmUgbm90IHJlc2l6aW5nXG4gICAgICAgIGlmICghcmVzaXplRXZlbnQuaXNSZXNpemluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDEuIENhbGN1bGF0ZSBob3cgbXVjaCBtb3VzZSBoYXMgbW92ZWQgb24gdGhlIHgtYXhpc1xuICAgICAgICBjb25zdCBjdXJzb3JEZWx0YVggPSBldmVudC5jbGllbnRYIC0gcmVzaXplRXZlbnQuc3RhcnRpbmdDdXJzb3JYO1xuXG4gICAgICAgIC8vIDIuIENhbGN1bGF0ZSB0aGUgbmV3IHdpZHRoIGFjY29yZGluZyB0byBpbml0aWFsIHdpZHRoIGFuZCBtb3VzZSBtb3ZlbWVudFxuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IHJlc2l6ZUV2ZW50LnN0YXJ0aW5nV2lkdGggLSAoc3RvcmUuc2lkZSgpID09PSAnbGVmdCcgPyAtMSA6IDEpICogY3Vyc29yRGVsdGFYO1xuXG4gICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgcmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnJlc2l6ZUV2ZW50LFxuICAgICAgICAgICAgbmV3V2lkdGhcbiAgICAgICAgICB9LFxuICAgICAgICAgIHdpZHRoOiBuZXdXaWR0aFxuICAgICAgICB9KSk7XG4gICAgICB9KVxuICAgICksXG4gICAgc3RvcFJlc2l6aW5nOiAoKSA9PlxuICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICByZXNpemVFdmVudDoge1xuICAgICAgICAgIC4uLnN0b3JlLnJlc2l6ZUV2ZW50KCksXG4gICAgICAgICAgaXNSZXNpemluZzogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSkpLFxuICB3aXRoQ29tcHV0ZWQoKHsgc2lkZW5hdldpZHRoLCBtaW5NZW51RGlzdGFuY2UsIHJlc2l6ZUV2ZW50LCBjb250ZW50Q29udGFpbmVyU3BhY2luZyB9KSA9PiB7XG4gICAgY29uc3QgaXNNZW51T3ZlcmxhcHBpbmcgPSBjb21wdXRlZCgoKSA9PiBzaWRlbmF2V2lkdGgoKSA8IGNvbnRlbnRDb250YWluZXJTcGFjaW5nKCkgKiAyKTtcblxuICAgIHJldHVybiB7XG4gICAgICBoYXNNZW51V2lkdGhDaGFuZ2VkOiBjb21wdXRlZCgoKSA9PiByZXNpemVFdmVudCgpLnN0YXJ0aW5nV2lkdGggIT09IHJlc2l6ZUV2ZW50KCkubmV3V2lkdGgpLFxuICAgICAgaXNSZXNpemluZzogY29tcHV0ZWQoKCkgPT4gcmVzaXplRXZlbnQoKS5pc1Jlc2l6aW5nKSxcbiAgICAgIGlzTWVudU92ZXJsYXBwaW5nOiBpc01lbnVPdmVybGFwcGluZyxcbiAgICAgIGNvbnRlbnRDb250YWluZXJUcmFuc2Zvcm06IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHNpZGVuYXZXaWR0aCgpICsgbWluTWVudURpc3RhbmNlKCkgPiBjb250ZW50Q29udGFpbmVyU3BhY2luZygpICYmIGlzTWVudU92ZXJsYXBwaW5nKClcbiAgICAgICAgICA/IHNpZGVuYXZXaWR0aCgpICsgbWluTWVudURpc3RhbmNlKCkgLSBjb250ZW50Q29udGFpbmVyU3BhY2luZygpXG4gICAgICAgICAgOiAwXG4gICAgICApXG4gICAgfTtcbiAgfSksXG4gIHdpdGhIb29rcyhcbiAgICAoeyBzaWRlbmF2V2lkdGgsIHNldFNpZGVuYXZXaWR0aENzcywgc2V0Q29udGVudFRyYW5zZm9ybUNzcywgc2lkZSwgZXhwYW5kZWQsIGNvbnRlbnRDb250YWluZXJUcmFuc2Zvcm0gfSkgPT4gKHtcbiAgICAgIG9uSW5pdDogKCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50VHJhbnNmb3JtID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQoKSxcbiAgICAgICAgICBwb3NpdGlvbjogc2lkZSgpLFxuICAgICAgICAgIHZhbHVlOiBjb250ZW50Q29udGFpbmVyVHJhbnNmb3JtKClcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHNldENvbnRlbnRUcmFuc2Zvcm1Dc3MoY29udGVudFRyYW5zZm9ybSk7XG4gICAgICAgIHNldFNpZGVuYXZXaWR0aENzcyhzaWRlbmF2V2lkdGgpO1xuICAgICAgfVxuICAgIH0pXG4gIClcbik7XG4iXX0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vZHJhd2VyLWNvbnRhaW5lci9zaWRlbmF2LnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJbkQsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixVQUFVLEVBQUUsS0FBSztJQUNqQixlQUFlLEVBQUUsQ0FBQztJQUNsQixhQUFhLEVBQUUsQ0FBQztJQUNoQixRQUFRLEVBQUUsQ0FBQztDQUNaLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsUUFBUSxFQUFFLEdBQUc7SUFDYixRQUFRLEVBQUUsR0FBRztJQUNiLEtBQUssRUFBRSxHQUFHO0lBQ1YsUUFBUSxFQUFFLElBQUk7SUFDZCxJQUFJLEVBQUUsTUFBd0I7SUFDOUIsV0FBVyxFQUFFLGtCQUFrQjtJQUMvQix1QkFBdUIsRUFBRSxDQUFDO0lBQzFCLGVBQWUsRUFBRSxFQUFFO0NBQ3BCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUNyQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQ3ZCLFlBQVksQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQyxZ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UUFBUSxFQUFFLElBQUksRUFBRTtTQUNqQixDQUFDLENBQUMsQ0FBQztRQUNKLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRixDQUFDLENBQ0gsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHBhdGNoU3RhdGUsIHNpZ25hbFN0b3JlLCB3aXRoQ29tcHV0ZWQsIHdpdGhIb29rcywgd2l0aE1ldGhvZHMsIHdpdGhTdGF0ZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHsgcnhNZXRob2QgfSBmcm9tICdAbmdyeC9zaWduYWxzL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgcGlwZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCB0eXBlIGRyYXdlclBvc2l0aW9uID0gJ2xlZnQnIHwgJ3JpZ2h0JztcblxuY29uc3QgaW5pdGlhbFJlc2l6ZUV2ZW50ID0ge1xuICBpc1Jlc2l6aW5nOiBmYWxzZSxcbiAgc3RhcnRpbmdDdXJzb3JYOiAwLFxuICBzdGFydGluZ1dpZHRoOiAwLFxuICBuZXdXaWR0aDogMFxufTtcblxuZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgbWluV2lkdGg6IDI1MCxcbiAgbWF4V2lkdGg6IDYwMCxcbiAgd2lkdGg6IDI1NixcbiAgZXhwYW5kZWQ6IHRydWUsXG4gIHNpZGU6ICdsZWZ0JyBhcyBkcmF3ZXJQb3NpdGlvbixcbiAgcmVzaXplRXZlbnQ6IGluaXRpYWxSZXNpemVFdmVudCxcbiAgY29udGVudENvbnRhaW5lclNwYWNpbmc6IDAsXG4gIG1pbk1lbnVEaXN0YW5jZTogMjBcbn07XG5cbmV4cG9ydCBjb25zdCBzaWRlbmF2U3RvcmUgPSBzaWduYWxTdG9yZShcbiAgd2l0aFN0YXRlKGluaXRpYWxTdGF0ZSksXG4gIHdpdGhDb21wdXRlZCgoeyBtaW5XaWR0aCwgd2lkdGgsIG1heFdpZHRoIH0pID0+ICh7XG4gICAgc2lkZW5hdldpZHRoOiBjb21wdXRlZCgoKSA9PiBNYXRoLm1pbihNYXRoLm1heCh3aWR0aCgpLCBtaW5XaWR0aCgpKSwgbWF4V2lkdGgoKSkpXG4gIH0pKSxcbiAgd2l0aE1ldGhvZHMoc3RvcmUgPT4gKHtcbiAgICBzZXRFeHBhbmRlZDogcnhNZXRob2Q8Ym9vbGVhbj4ocGlwZSh0YXAoKGV4cGFuZGVkOiBib29sZWFuKSA9PiBwYXRjaFN0YXRlKHN0b3JlLCB7IGV4cGFuZGVkIH0pKSkpLFxuICAgIHNldFNpZGU6IHJ4TWV0aG9kPGRyYXdlclBvc2l0aW9uPihwaXBlKHRhcCgoc2lkZTogZHJhd2VyUG9zaXRpb24pID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgc2lkZSB9KSkpKSxcbiAgICBzZXRNaW5NZW51RGlzdGFuY2U6IHJ4TWV0aG9kPG51bWJlcj4oXG4gICAgICBwaXBlKHRhcCgobWluTWVudURpc3RhbmNlOiBudW1iZXIpID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgbWluTWVudURpc3RhbmNlOiBtaW5NZW51RGlzdGFuY2UgfSkpKVxuICAgICksXG4gICAgc2V0TWluV2lkdGg6IHJ4TWV0aG9kPG51bWJlcj4ocGlwZSh0YXAoKG1pbjogbnVtYmVyKSA9PiBwYXRjaFN0YXRlKHN0b3JlLCB7IG1pbldpZHRoOiBtaW4gfSkpKSksXG4gICAgc2V0TWF4V2lkdGg6IHJ4TWV0aG9kPG51bWJlcj4ocGlwZSh0YXAoKG1heDogbnVtYmVyKSA9PiBwYXRjaFN0YXRlKHN0b3JlLCB7IG1heFdpZHRoOiBtYXggfSkpKSksXG4gICAgc2V0V2lkdGg6IHJ4TWV0aG9kPG51bWJlcj4ocGlwZSh0YXAoKHdpZHRoOiBudW1iZXIpID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgd2lkdGggfSkpKSksXG4gICAgc2V0U2lkZW5hdldpZHRoQ3NzOiByeE1ldGhvZDx7XG4gICAgICBwb3NpdGlvbjogZHJhd2VyUG9zaXRpb247XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH0+KFxuICAgICAgcGlwZShcbiAgICAgICAgdGhyb3R0bGVUaW1lKDAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICAgICAgdGFwKCh7IHBvc2l0aW9uLCB3aWR0aCB9KSA9PiBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KGAtLXNpZGVuYXYtJHtwb3NpdGlvbn0td2lkdGhgLCBgJHt3aWR0aH1weGApKVxuICAgICAgKVxuICAgICksXG4gICAgc2V0Q29udGVudFRyYW5zZm9ybUNzczogcnhNZXRob2Q8e1xuICAgICAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gICAgICBwb3NpdGlvbjogZHJhd2VyUG9zaXRpb247XG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH0+KFxuICAgICAgcGlwZShcbiAgICAgICAgdGFwKCh7IGV4cGFuZGVkLCBwb3NpdGlvbiwgdmFsdWUgfSkgPT5cbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgYC0tY29udGVudC10cmFuc2l0aW9uLSR7cG9zaXRpb259LXhgLFxuICAgICAgICAgICAgYCR7ZXhwYW5kZWQgPyAocG9zaXRpb24gPT0gJ2xlZnQnID8gMSA6IC0xKSAqIHZhbHVlIDogMH1weGBcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHNldENvbnRlbnRDb250YWluZXJTcGFjaW5nOiByeE1ldGhvZDxudW1iZXI+KFxuICAgICAgcGlwZSh0YXAoKGNvbnRlbnRDb250YWluZXJTcGFjaW5nOiBudW1iZXIpID0+IHBhdGNoU3RhdGUoc3RvcmUsIHsgY29udGVudENvbnRhaW5lclNwYWNpbmcgfSkpKVxuICAgICksXG4gICAgc3RhcnRSZXNpemluZzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PlxuICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICByZXNpemVFdmVudDoge1xuICAgICAgICAgIGlzUmVzaXppbmc6IHRydWUsXG4gICAgICAgICAgc3RhcnRpbmdDdXJzb3JYOiBldmVudC5jbGllbnRYLFxuICAgICAgICAgIHN0YXJ0aW5nV2lkdGg6IHN0b3JlLnNpZGVuYXZXaWR0aCgpLFxuICAgICAgICAgIG5ld1dpZHRoOiBzdG9yZS5zaWRlbmF2V2lkdGgoKVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICB1cGRhdGVSZXNpemluZzogcnhNZXRob2Q8TW91c2VFdmVudD4oXG4gICAgICB0YXAoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc2l6ZUV2ZW50ID0gc3RvcmUucmVzaXplRXZlbnQoKTtcbiAgICAgICAgLy8gTm8gbmVlZCB0byBldmVuIGNvbnRpbnVlIGlmIHdlJ3JlIG5vdCByZXNpemluZ1xuICAgICAgICBpZiAoIXJlc2l6ZUV2ZW50LmlzUmVzaXppbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyAxLiBDYWxjdWxhdGUgaG93IG11Y2ggbW91c2UgaGFzIG1vdmVkIG9uIHRoZSB4LWF4aXNcbiAgICAgICAgY29uc3QgY3Vyc29yRGVsdGFYID0gZXZlbnQuY2xpZW50WCAtIHJlc2l6ZUV2ZW50LnN0YXJ0aW5nQ3Vyc29yWDtcblxuICAgICAgICAvLyAyLiBDYWxjdWxhdGUgdGhlIG5ldyB3aWR0aCBhY2NvcmRpbmcgdG8gaW5pdGlhbCB3aWR0aCBhbmQgbW91c2UgbW92ZW1lbnRcbiAgICAgICAgY29uc3QgbmV3V2lkdGggPSByZXNpemVFdmVudC5zdGFydGluZ1dpZHRoIC0gKHN0b3JlLnNpZGUoKSA9PT0gJ2xlZnQnID8gLTEgOiAxKSAqIGN1cnNvckRlbHRhWDtcblxuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHJlc2l6ZUV2ZW50OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5yZXNpemVFdmVudCxcbiAgICAgICAgICAgIG5ld1dpZHRoXG4gICAgICAgICAgfSxcbiAgICAgICAgICB3aWR0aDogbmV3V2lkdGhcbiAgICAgICAgfSkpO1xuICAgICAgfSlcbiAgICApLFxuICAgIHN0b3BSZXNpemluZzogKCkgPT5cbiAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgcmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICAuLi5zdG9yZS5yZXNpemVFdmVudCgpLFxuICAgICAgICAgIGlzUmVzaXppbmc6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pKSxcbiAgd2l0aENvbXB1dGVkKCh7IHNpZGVuYXZXaWR0aCwgbWluTWVudURpc3RhbmNlLCByZXNpemVFdmVudCwgY29udGVudENvbnRhaW5lclNwYWNpbmcgfSkgPT4ge1xuICAgIGNvbnN0IGlzTWVudU92ZXJsYXBwaW5nID0gY29tcHV0ZWQoKCkgPT4gc2lkZW5hdldpZHRoKCkgPCBjb250ZW50Q29udGFpbmVyU3BhY2luZygpICogMik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaGFzTWVudVdpZHRoQ2hhbmdlZDogY29tcHV0ZWQoKCkgPT4gcmVzaXplRXZlbnQoKS5zdGFydGluZ1dpZHRoICE9PSByZXNpemVFdmVudCgpLm5ld1dpZHRoKSxcbiAgICAgIGlzUmVzaXppbmc6IGNvbXB1dGVkKCgpID0+IHJlc2l6ZUV2ZW50KCkuaXNSZXNpemluZyksXG4gICAgICBpc01lbnVPdmVybGFwcGluZzogaXNNZW51T3ZlcmxhcHBpbmcsXG4gICAgICBjb250ZW50Q29udGFpbmVyVHJhbnNmb3JtOiBjb21wdXRlZCgoKSA9PlxuICAgICAgICBzaWRlbmF2V2lkdGgoKSArIG1pbk1lbnVEaXN0YW5jZSgpID4gY29udGVudENvbnRhaW5lclNwYWNpbmcoKSAmJiBpc01lbnVPdmVybGFwcGluZygpXG4gICAgICAgICAgPyBzaWRlbmF2V2lkdGgoKSArIG1pbk1lbnVEaXN0YW5jZSgpIC0gY29udGVudENvbnRhaW5lclNwYWNpbmcoKVxuICAgICAgICAgIDogMFxuICAgICAgKVxuICAgIH07XG4gIH0pLFxuICB3aXRoSG9va3MoXG4gICAgKHsgc2lkZW5hdldpZHRoLCBzZXRTaWRlbmF2V2lkdGhDc3MsIHNldENvbnRlbnRUcmFuc2Zvcm1Dc3MsIHNpZGUsIGV4cGFuZGVkLCBjb250ZW50Q29udGFpbmVyVHJhbnNmb3JtIH0pID0+ICh7XG4gICAgICBvbkluaXQ6ICgpID0+IHtcbiAgICAgICAgY29uc3QgY29udGVudFRyYW5zZm9ybSA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgICAgICAgZXhwYW5kZWQ6IGV4cGFuZGVkKCksXG4gICAgICAgICAgcG9zaXRpb246IHNpZGUoKSxcbiAgICAgICAgICB2YWx1ZTogY29udGVudENvbnRhaW5lclRyYW5zZm9ybSgpXG4gICAgICAgIH0pKTtcblxuICAgICAgICBzZXRDb250ZW50VHJhbnNmb3JtQ3NzKGNvbnRlbnRUcmFuc2Zvcm0pO1xuXG4gICAgICAgIGNvbnN0IHdpZHRoID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgICAgICB3aWR0aDogc2lkZW5hdldpZHRoKCksXG4gICAgICAgICAgcG9zaXRpb246IHNpZGUoKVxuICAgICAgICB9KSk7XG4gICAgICAgIHNldFNpZGVuYXZXaWR0aENzcyh3aWR0aCk7XG4gICAgICB9XG4gICAgfSlcbiAgKVxuKTtcbiJdfQ==