@taiga-ui/core 4.9.0 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/components/root/root.component.d.ts +1 -0
  2. package/components/scrollbar/scroll-controls.component.d.ts +1 -0
  3. package/components/scrollbar/scrollbar.component.d.ts +3 -0
  4. package/components/scrollbar/scrollbar.options.d.ts +2 -4
  5. package/components/textfield/select.directive.d.ts +0 -1
  6. package/components/textfield/textfield.component.d.ts +1 -1
  7. package/components/textfield/textfield.directive.d.ts +2 -0
  8. package/directives/dropdown/dropdown-context.directive.d.ts +0 -5
  9. package/directives/dropdown/dropdown-fixed.directive.d.ts +6 -0
  10. package/directives/dropdown/index.d.ts +1 -0
  11. package/directives/hint/hint.component.d.ts +1 -2
  12. package/directives/hint/hint.directive.d.ts +1 -1
  13. package/directives/surface/surface.directive.d.ts +2 -1
  14. package/esm2022/animations/animations.mjs +88 -88
  15. package/esm2022/components/data-list/data-list.component.mjs +5 -5
  16. package/esm2022/components/dialog/dialog.component.mjs +3 -3
  17. package/esm2022/components/error/error.component.mjs +3 -3
  18. package/esm2022/components/expand/expand.component.mjs +2 -3
  19. package/esm2022/components/icon/icon.component.mjs +2 -2
  20. package/esm2022/components/root/root.component.mjs +10 -6
  21. package/esm2022/components/scrollbar/scroll-controls.component.mjs +5 -3
  22. package/esm2022/components/scrollbar/scrollbar.component.mjs +10 -7
  23. package/esm2022/components/scrollbar/scrollbar.options.mjs +3 -6
  24. package/esm2022/components/textfield/select.directive.mjs +3 -5
  25. package/esm2022/components/textfield/textfield.component.mjs +5 -10
  26. package/esm2022/components/textfield/textfield.directive.mjs +7 -3
  27. package/esm2022/directives/dropdown/dropdown-context.directive.mjs +4 -30
  28. package/esm2022/directives/dropdown/dropdown-fixed.directive.mjs +21 -0
  29. package/esm2022/directives/dropdown/index.mjs +2 -1
  30. package/esm2022/directives/hint/hint-unstyled.component.mjs +2 -2
  31. package/esm2022/directives/hint/hint.component.mjs +9 -11
  32. package/esm2022/directives/hint/hint.directive.mjs +5 -4
  33. package/esm2022/directives/surface/surface.directive.mjs +12 -4
  34. package/esm2022/pipes/fallback-src/fallback-src.pipe.mjs +2 -2
  35. package/esm2022/tokens/common-icons.mjs +4 -1
  36. package/esm2022/tokens/icon-resolver.mjs +3 -6
  37. package/fesm2022/taiga-ui-core-animations.mjs +87 -87
  38. package/fesm2022/taiga-ui-core-animations.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-core-components-data-list.mjs +4 -4
  40. package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
  41. package/fesm2022/taiga-ui-core-components-dialog.mjs +2 -2
  42. package/fesm2022/taiga-ui-core-components-dialog.mjs.map +1 -1
  43. package/fesm2022/taiga-ui-core-components-error.mjs +2 -2
  44. package/fesm2022/taiga-ui-core-components-error.mjs.map +1 -1
  45. package/fesm2022/taiga-ui-core-components-expand.mjs +1 -2
  46. package/fesm2022/taiga-ui-core-components-expand.mjs.map +1 -1
  47. package/fesm2022/taiga-ui-core-components-icon.mjs +2 -2
  48. package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
  49. package/fesm2022/taiga-ui-core-components-root.mjs +9 -5
  50. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  51. package/fesm2022/taiga-ui-core-components-scrollbar.mjs +19 -17
  52. package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
  53. package/fesm2022/taiga-ui-core-components-textfield.mjs +12 -15
  54. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  55. package/fesm2022/taiga-ui-core-directives-dropdown.mjs +21 -31
  56. package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +1 -1
  57. package/fesm2022/taiga-ui-core-directives-hint.mjs +12 -13
  58. package/fesm2022/taiga-ui-core-directives-hint.mjs.map +1 -1
  59. package/fesm2022/taiga-ui-core-directives-surface.mjs +11 -3
  60. package/fesm2022/taiga-ui-core-directives-surface.mjs.map +1 -1
  61. package/fesm2022/taiga-ui-core-pipes-fallback-src.mjs +1 -1
  62. package/fesm2022/taiga-ui-core-pipes-fallback-src.mjs.map +1 -1
  63. package/fesm2022/taiga-ui-core-tokens.mjs +5 -5
  64. package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
  65. package/package.json +19 -19
  66. package/styles/components/icon.less +1 -0
  67. package/styles/mixins/mixins.less +8 -0
  68. package/styles/mixins/mixins.scss +7 -0
  69. package/styles/theme/palette.less +6 -0
  70. package/tokens/common-icons.d.ts +2 -0
@@ -4,6 +4,7 @@ export declare class TuiRoot {
4
4
  protected readonly reducedMotion: boolean;
5
5
  protected readonly duration: number;
6
6
  protected readonly isMobileRes: import("@angular/core").Signal<boolean>;
7
+ protected readonly nativeScrollbar: boolean;
7
8
  protected readonly scrollbars: import("@angular/core").Signal<boolean>;
8
9
  constructor();
9
10
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiRoot, never>;
@@ -1,6 +1,7 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class TuiScrollControls {
3
3
  private readonly scrollRef;
4
+ protected readonly nativeScrollbar: boolean;
4
5
  protected readonly options: import("@angular/animations").AnimationOptions;
5
6
  protected readonly refresh$: import("rxjs").Observable<[boolean, boolean] | boolean[]>;
6
7
  private get scrollbars();
@@ -14,6 +14,9 @@ export declare class TuiScrollbar {
14
14
  protected readonly options: import("./scrollbar.options").TuiScrollbarOptions;
15
15
  protected readonly isIOS: boolean;
16
16
  protected readonly browserScrollRef: ElementRef<HTMLElement>;
17
+ /**
18
+ * @deprecated: use tuiScrollbarOptionsProvider({ mode: 'hidden' })
19
+ */
17
20
  hidden: boolean;
18
21
  protected get delegated(): boolean;
19
22
  protected get scrollRef(): HTMLElement;
@@ -1,7 +1,5 @@
1
- import type { Provider } from '@angular/core';
2
1
  export interface TuiScrollbarOptions {
3
- mode: 'always' | 'hover';
2
+ mode: 'always' | 'hidden' | 'hover' | 'native';
4
3
  }
5
4
  export declare const TUI_DEFAULT_SCROLLBAR_OPTIONS: TuiScrollbarOptions;
6
- export declare const TUI_SCROLLBAR_OPTIONS: import("@angular/core").InjectionToken<TuiScrollbarOptions>;
7
- export declare function tuiScrollbarOptionsProvider(options: Partial<TuiScrollbarOptions>): Provider;
5
+ export declare const TUI_SCROLLBAR_OPTIONS: import("@angular/core").InjectionToken<TuiScrollbarOptions>, tuiScrollbarOptionsProvider: (item: Partial<TuiScrollbarOptions>) => import("@angular/core").FactoryProvider;
@@ -4,7 +4,6 @@ import * as i1 from "@taiga-ui/cdk/directives/native-validator";
4
4
  import * as i2 from "@taiga-ui/core/directives/appearance";
5
5
  export declare class TuiSelect<T> extends TuiTextfieldBase<T> {
6
6
  private readonly nav;
7
- private readonly control;
8
7
  placeholder: string;
9
8
  setValue(value: T): void;
10
9
  focus(): void;
@@ -34,5 +34,5 @@ export declare class TuiTextfieldComponent<T> implements TuiDataListHost<T> {
34
34
  protected get hasLabel(): boolean;
35
35
  protected onResize({ contentRect }: ResizeObserverEntry): void;
36
36
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldComponent<any>, never>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiTextfieldComponent<any>, "tui-textfield", never, { "stringify": { "alias": "stringify"; "required": false; }; "content": { "alias": "content"; "required": false; }; "fillerSetter": { "alias": "filler"; "required": false; }; }, {}, ["directive", "label", "control", "input"], ["input", "select", "label", "*", "tui-icon"], true, [{ directive: typeof i1.TuiDropdownDirective; inputs: {}; outputs: {}; }, { directive: typeof i1.TuiWithDropdownOpen; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithTextfieldDropdown; inputs: {}; outputs: {}; }, { directive: typeof i3.TuiWithIcons; inputs: {}; outputs: {}; }]>;
37
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiTextfieldComponent<any>, "tui-textfield", never, { "stringify": { "alias": "stringify"; "required": false; }; "content": { "alias": "content"; "required": false; }; "fillerSetter": { "alias": "filler"; "required": false; }; }, {}, ["directive", "label", "control", "input"], ["input", "select", "label", "*", "tui-icon"], true, [{ directive: typeof i1.TuiDropdownFixed; inputs: {}; outputs: {}; }, { directive: typeof i1.TuiDropdownDirective; inputs: {}; outputs: {}; }, { directive: typeof i1.TuiWithDropdownOpen; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithTextfieldDropdown; inputs: {}; outputs: {}; }, { directive: typeof i3.TuiWithIcons; inputs: {}; outputs: {}; }]>;
38
38
  }
@@ -1,4 +1,5 @@
1
1
  import type { OnChanges } from '@angular/core';
2
+ import { NgControl } from '@angular/forms';
2
3
  import type { TuiInteractiveState } from '@taiga-ui/core/types';
3
4
  import { TuiTextfieldComponent } from './textfield.component';
4
5
  import * as i0 from "@angular/core";
@@ -6,6 +7,7 @@ import * as i1 from "@taiga-ui/cdk/directives/native-validator";
6
7
  import * as i2 from "@taiga-ui/core/directives/appearance";
7
8
  export declare class TuiTextfieldBase<T> implements OnChanges {
8
9
  private readonly focused;
10
+ protected readonly control: NgControl | null;
9
11
  protected readonly a: import("@angular/core").WritableSignal<string>;
10
12
  protected readonly s: import("@angular/core").WritableSignal<TuiInteractiveState | null>;
11
13
  protected readonly m: import("@angular/core").WritableSignal<string | readonly string[] | null>;
@@ -2,20 +2,15 @@ import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
2
2
  import { TuiRectAccessor } from '@taiga-ui/core/classes';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class TuiDropdownContext extends TuiRectAccessor {
5
- private readonly isIOS;
6
5
  private readonly isTouch;
7
6
  private readonly driver;
8
7
  private currentRect;
9
- private longTapTimeout;
10
8
  protected readonly userSelect: import("@angular/core").Signal<"none" | null>;
11
9
  protected readonly activeZone: TuiActiveZone;
12
10
  readonly type = "dropdown";
13
11
  getClientRect(): DOMRect;
14
12
  protected closeDropdown(_event?: Event): void;
15
13
  protected onContextMenu(x: number, y: number): void;
16
- protected onTouchStart(x: number, y: number): void;
17
- protected onTouchMove(x: number, y: number): void;
18
- protected onTouchEnd(): void;
19
14
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiDropdownContext, never>;
20
15
  static ɵdir: i0.ɵɵDirectiveDeclaration<TuiDropdownContext, "[tuiDropdownContext]", never, {}, {}, never, never, true, never>;
21
16
  }
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class TuiDropdownFixed {
3
+ constructor();
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiDropdownFixed, never>;
5
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiDropdownFixed, never, never, {}, {}, never, never, true, never>;
6
+ }
@@ -6,6 +6,7 @@ export * from './dropdown.driver';
6
6
  export * from './dropdown.providers';
7
7
  export * from './dropdown.service';
8
8
  export * from './dropdown-context.directive';
9
+ export * from './dropdown-fixed.directive';
9
10
  export * from './dropdown-hover.directive';
10
11
  export * from './dropdown-hover.options';
11
12
  export * from './dropdown-manual.directive';
@@ -1,7 +1,6 @@
1
1
  import { TuiHoveredService } from '@taiga-ui/cdk/directives/hovered';
2
2
  import { TuiRectAccessor } from '@taiga-ui/core/classes';
3
3
  import { TuiPositionService } from '@taiga-ui/core/services';
4
- import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
5
4
  import { TuiHintDirective } from './hint.directive';
6
5
  import { TuiHintPointer } from './hint-pointer.directive';
7
6
  import * as i0 from "@angular/core";
@@ -15,9 +14,9 @@ export declare class TuiHintComponent<C = any> {
15
14
  protected readonly pointer: TuiHintPointer | null;
16
15
  protected readonly accessor: TuiRectAccessor;
17
16
  protected readonly hint: TuiHintDirective<C>;
17
+ protected readonly content: import("@angular/core").WritableSignal<import("@taiga-ui/polymorpheus").PolymorpheusContent<C>>;
18
18
  protected readonly appearance: string | null | undefined;
19
19
  constructor();
20
- protected get content(): PolymorpheusContent<C>;
21
20
  protected onClick(target: HTMLElement): void;
22
21
  private apply;
23
22
  private update;
@@ -12,7 +12,7 @@ export declare class TuiHintDirective<C> implements OnDestroy, TuiPortalItem<C>,
12
12
  private readonly service;
13
13
  context?: C;
14
14
  appearance: string;
15
- content: PolymorpheusContent<C>;
15
+ content: import("@angular/core").WritableSignal<PolymorpheusContent<C>>;
16
16
  component: PolymorpheusComponent<any>;
17
17
  readonly el: HTMLElement;
18
18
  readonly activeZone?: TuiActiveZone | null | undefined;
@@ -1,7 +1,8 @@
1
1
  import * as i0 from "@angular/core";
2
+ import * as i1 from "@taiga-ui/core/directives/appearance";
2
3
  export declare class TuiSurface {
3
4
  protected readonly nothing: undefined;
4
5
  tuiSurface: string;
5
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiSurface, never>;
6
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiSurface, "[tuiSurface]", never, { "tuiSurface": { "alias": "tuiSurface"; "required": false; }; }, {}, never, never, true, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiSurface, "[tuiSurface]", never, { "tuiSurface": { "alias": "tuiSurface"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiAppearance; inputs: { "tuiAppearance": "tuiSurface"; }; outputs: {}; }]>;
7
8
  }
@@ -81,141 +81,141 @@ export const tuiFadeInList = trigger('tuiFadeInList', [
81
81
  ]);
82
82
  export const tuiFadeInTop = trigger('tuiFadeInTop', [
83
83
  transition(':enter', [
84
- style({ transform: 'translateY(-10px)', opacity: 0 }),
85
- animate(TRANSITION, style({ transform: 'translateY(0)', opacity: 1 })),
86
- ], DURATION),
84
+ style({ transform: 'translateY(-{{start}}px)', opacity: 0 }),
85
+ animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 })),
86
+ ], { params: { end: 0, start: 10, duration: 300 } }),
87
87
  transition(':leave', [
88
- style({ transform: 'translateY(0)', opacity: 1 }),
89
- animate(TRANSITION, style({ transform: 'translateY(-10px)', opacity: 0 })),
90
- ], DURATION),
88
+ style({ transform: 'translateY({{end}})', opacity: 1 }),
89
+ animate(TRANSITION, style({ transform: 'translateY(-{{start}}px)', opacity: 0 })),
90
+ ], { params: { end: 0, start: 10, duration: 300 } }),
91
91
  ]);
92
92
  export const tuiFadeInBottom = trigger('tuiFadeInBottom', [
93
93
  transition(':enter', [
94
- style({ transform: 'translateY(10px)', opacity: 0 }),
95
- animate(TRANSITION, style({ transform: 'translateY(0)', opacity: 1 })),
96
- ], DURATION),
94
+ style({ transform: 'translateY({{start}}px)', opacity: 0 }),
95
+ animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 })),
96
+ ], { params: { end: 0, start: 10, duration: 300 } }),
97
97
  transition(':leave', [
98
- style({ transform: 'translateY(0)', opacity: 1 }),
99
- animate(TRANSITION, style({ transform: 'translateY(10px)', opacity: 0 })),
100
- ], DURATION),
98
+ style({ transform: 'translateY({{end}})', opacity: 1 }),
99
+ animate(TRANSITION, style({ transform: 'translateY({{start}}px)', opacity: 0 })),
100
+ ], { params: { end: 0, start: 10, duration: 300 } }),
101
101
  ]);
102
102
  export const tuiDropdownAnimation = trigger('tuiDropdownAnimation', [
103
103
  transition(':enter', [
104
- style({ transform: 'translateY(-10px)', opacity: 0 }),
105
- animate(TRANSITION, style({ transform: 'translateY(0)', opacity: 1 })),
106
- ], DURATION),
104
+ style({ transform: 'translateY(-{{start}}px)', opacity: 0 }),
105
+ animate(TRANSITION, style({ transform: 'translateY({{end}})', opacity: 1 })),
106
+ ], { params: { end: 0, start: 10, duration: 300 } }),
107
107
  transition(':leave', [
108
- style({ transform: 'translateY(0)', opacity: 1 }),
109
- animate(TRANSITION, style({ transform: 'translateY(-10px)', opacity: 0 })),
110
- ], DURATION),
108
+ style({ transform: 'translateY({{end}})', opacity: 1 }),
109
+ animate(TRANSITION, style({ transform: 'translateY(-{{start}}px)', opacity: 0 })),
110
+ ], { params: { end: 0, start: 10, duration: 300 } }),
111
111
  ]);
112
112
  export const tuiScaleIn = trigger('tuiScaleIn', [
113
113
  transition(':enter', [
114
- style({ transform: 'scale(0)' }),
115
- animate(TRANSITION, style({ transform: 'scale(1)' })),
116
- ], DURATION),
114
+ style({ transform: 'scale({{start}})' }),
115
+ animate(TRANSITION, style({ transform: 'scale({{end}})' })),
116
+ ], { params: { end: 1, start: 0, duration: 300 } }),
117
117
  transition(':leave', [
118
- style({ transform: 'scale(1)' }),
119
- animate(TRANSITION, style({ transform: 'scale(0)' })),
120
- ], DURATION),
118
+ style({ transform: 'scale({{end}})' }),
119
+ animate(TRANSITION, style({ transform: 'scale({{start}})' })),
120
+ ], { params: { end: 1, start: 0, duration: 300 } }),
121
121
  ]);
122
122
  export const tuiPop = trigger('tuiPop', [
123
123
  transition(':enter', [
124
- style({ transform: 'scale(0)' }),
125
- animate(TRANSITION, style({ transform: 'scale(1.1)' })),
126
- animate(TRANSITION, style({ transform: 'scale(1)' })),
127
- ], DURATION),
124
+ style({ transform: 'scale({{start}})' }),
125
+ animate(TRANSITION, style({ transform: 'scale({{middle}})' })),
126
+ animate(TRANSITION, style({ transform: 'scale({{end}})' })),
127
+ ], { params: { end: 1, middle: 1.1, start: 0, duration: 300 } }),
128
128
  transition(':leave', [
129
- style({ transform: 'scale(1)' }),
130
- animate(TRANSITION, style({ transform: 'scale(1.1)' })),
131
- animate(TRANSITION, style({ transform: 'scale(0)' })),
132
- ], DURATION),
129
+ style({ transform: 'scale({{end}})' }),
130
+ animate(TRANSITION, style({ transform: 'scale({{middle}})' })),
131
+ animate(TRANSITION, style({ transform: 'scale({{start}})' })),
132
+ ], { params: { end: 1, middle: 1.1, start: 0, duration: 300 } }),
133
133
  ]);
134
134
  export const tuiScaleInList = trigger('tuiScaleInList', [
135
135
  transition('* => *', [
136
136
  query(':enter', [
137
- style({ transform: 'scale(0)' }),
137
+ style({ transform: 'scale({{start}})' }),
138
138
  stagger(STAGGER, [
139
- animate(TRANSITION, style({ transform: 'scale(1)' })),
139
+ animate(TRANSITION, style({ transform: 'scale({{end}})' })),
140
140
  ]),
141
141
  ], { optional: true }),
142
142
  query(':leave', [
143
- style({ transform: 'scale(1)' }),
143
+ style({ transform: 'scale({{end}})' }),
144
144
  stagger(STAGGER, [
145
- animate(TRANSITION, style({ transform: 'scale(0)' })),
145
+ animate(TRANSITION, style({ transform: 'scale({{start}})' })),
146
146
  ]),
147
147
  ], { optional: true }),
148
- ], DURATION),
148
+ ], { params: { end: 1, start: 0, duration: 300 } }),
149
149
  ]);
150
150
  export const tuiSlideIn = trigger('tuiSlideIn', [
151
151
  transition('* => left', [
152
- style({ transform: 'translateX(-100%)' }),
153
- animate(TRANSITION, style({ transform: 'translateX(0)' })),
154
- ], DURATION),
152
+ style({ transform: 'translateX(-{{start}})' }),
153
+ animate(TRANSITION, style({ transform: 'translateX({{end}})' })),
154
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
155
155
  transition('left => *', [
156
- style({ transform: 'translateX(0)' }),
157
- animate(TRANSITION, style({ transform: 'translateX(-100%)' })),
158
- ], DURATION),
156
+ style({ transform: 'translateX({{end}})' }),
157
+ animate(TRANSITION, style({ transform: 'translateX(-{{start}})' })),
158
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
159
159
  transition('* => right', [
160
- style({ transform: 'translateX(100%)' }),
161
- animate(TRANSITION, style({ transform: 'translateX(0)' })),
162
- ], DURATION),
160
+ style({ transform: 'translateX({{start}})' }),
161
+ animate(TRANSITION, style({ transform: 'translateX({{end}})' })),
162
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
163
163
  transition('right => *', [
164
- style({ transform: 'translateX(0)' }),
165
- animate(TRANSITION, style({ transform: 'translateX(100%)' })),
166
- ], DURATION),
164
+ style({ transform: 'translateX({{end}})' }),
165
+ animate(TRANSITION, style({ transform: 'translateX({{start}})' })),
166
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
167
167
  ]);
168
168
  export const tuiSlideInLeft = trigger('tuiSlideInLeft', [
169
169
  transition(':enter', [
170
- style({ transform: 'translateX(-100%)' }),
171
- animate(TRANSITION, style({ transform: 'translateX(0)' })),
172
- ], DURATION),
170
+ style({ transform: 'translateX(-{{start}})' }),
171
+ animate(TRANSITION, style({ transform: 'translateX({{end}})' })),
172
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
173
173
  transition(':leave', [
174
- style({ transform: 'translateX(0)' }),
175
- animate(TRANSITION, style({ transform: 'translateX(-100%)' })),
176
- ], DURATION),
174
+ style({ transform: 'translateX({{end}})' }),
175
+ animate(TRANSITION, style({ transform: 'translateX(-{{start}})' })),
176
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
177
177
  ]);
178
178
  export const tuiSlideInLeftList = trigger('tuiSlideInLeftList', [
179
179
  transition('* => *', [
180
180
  query(':enter', [
181
- style({ transform: 'translateX(-100%)' }),
181
+ style({ transform: 'translateX(-{{start}})' }),
182
182
  stagger(STAGGER, [
183
- animate(TRANSITION, style({ transform: 'translateX(0)' })),
183
+ animate(TRANSITION, style({ transform: 'translateX({{end}})' })),
184
184
  ]),
185
185
  ], { optional: true }),
186
186
  query(':leave', [
187
- style({ transform: 'translateX(0)' }),
187
+ style({ transform: 'translateX({{end}})' }),
188
188
  stagger(STAGGER, [
189
- animate(TRANSITION, style({ transform: 'translateX(-100%)' })),
189
+ animate(TRANSITION, style({ transform: 'translateX(-{{start}})' })),
190
190
  ]),
191
191
  ], { optional: true }),
192
- ], DURATION),
192
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
193
193
  ]);
194
194
  export const tuiSlideInRight = trigger('tuiSlideInRight', [
195
195
  transition(':enter', [
196
- style({ transform: 'translateX(100%)' }),
197
- animate(TRANSITION, style({ transform: 'translateX(0)' })),
198
- ], DURATION),
196
+ style({ transform: 'translateX({{start}})' }),
197
+ animate(TRANSITION, style({ transform: 'translateX({{end}})' })),
198
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
199
199
  transition(':leave', [
200
- style({ transform: 'translateX(0)' }),
201
- animate(TRANSITION, style({ transform: 'translateX(100%)' })),
202
- ], DURATION),
200
+ style({ transform: 'translateX({{end}})' }),
201
+ animate(TRANSITION, style({ transform: 'translateX({{start}})' })),
202
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
203
203
  ]);
204
204
  export const tuiSlideInRightList = trigger('tuiSlideInRightList', [
205
205
  transition('* => *', [
206
206
  query(':enter', [
207
- style({ transform: 'translateX(100%)' }),
207
+ style({ transform: 'translateX({{start}})' }),
208
208
  stagger(STAGGER, [
209
- animate(TRANSITION, style({ transform: 'translateX(0)' })),
209
+ animate(TRANSITION, style({ transform: 'translateX({{end}})' })),
210
210
  ]),
211
211
  ], { optional: true }),
212
212
  query(':leave', [
213
- style({ transform: 'translateX(0)' }),
213
+ style({ transform: 'translateX({{end}})' }),
214
214
  stagger(STAGGER, [
215
- animate(TRANSITION, style({ transform: 'translateX(100%)' })),
215
+ animate(TRANSITION, style({ transform: 'translateX({{start}})' })),
216
216
  ]),
217
217
  ], { optional: true }),
218
- ], DURATION),
218
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
219
219
  ]);
220
220
  export const tuiSlideInTop = trigger('tuiSlideInTop', [
221
221
  transition(':enter', [
@@ -230,43 +230,43 @@ export const tuiSlideInTop = trigger('tuiSlideInTop', [
230
230
  export const tuiSlideInTopList = trigger('tuiSlideInTopList', [
231
231
  transition('* => *', [
232
232
  query(':enter', [
233
- style({ transform: 'translateY(100%)' }),
233
+ style({ transform: 'translateY({{start}})' }),
234
234
  stagger(STAGGER, [
235
- animate(TRANSITION, style({ transform: 'translateY(0)' })),
235
+ animate(TRANSITION, style({ transform: 'translateY({{end}})' })),
236
236
  ]),
237
237
  ], { optional: true }),
238
238
  query(':leave', [
239
- style({ transform: 'translateY(0)' }),
239
+ style({ transform: 'translateY({{end}})' }),
240
240
  stagger(STAGGER, [
241
- animate(TRANSITION, style({ transform: 'translateY(100%)' })),
241
+ animate(TRANSITION, style({ transform: 'translateY({{start}})' })),
242
242
  ]),
243
243
  ], { optional: true }),
244
- ], DURATION),
244
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
245
245
  ]);
246
246
  export const tuiSlideInBottom = trigger('tuiSlideInBottom', [
247
247
  transition(':enter', [
248
- style({ transform: 'translateY(-100%)' }),
249
- animate(TRANSITION, style({ transform: 'translateY(0)' })),
250
- ], DURATION),
248
+ style({ transform: 'translateY(-{{start}})' }),
249
+ animate(TRANSITION, style({ transform: 'translateY({{end}})' })),
250
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
251
251
  transition(':leave', [
252
- style({ transform: 'translateY(0)' }),
253
- animate(TRANSITION, style({ transform: 'translateY(-100%)' })),
254
- ], DURATION),
252
+ style({ transform: 'translateY({{end}})' }),
253
+ animate(TRANSITION, style({ transform: 'translateY(-{{start}})' })),
254
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
255
255
  ]);
256
256
  export const tuiSlideInBottomList = trigger('tuiSlideInBottomList', [
257
257
  transition('* => *', [
258
258
  query(':enter', [
259
- style({ transform: 'translateY(-100%)' }),
259
+ style({ transform: 'translateY(-{{start}})' }),
260
260
  stagger(STAGGER, [
261
- animate(TRANSITION, style({ transform: 'translateY(0)' })),
261
+ animate(TRANSITION, style({ transform: 'translateY({{end}})' })),
262
262
  ]),
263
263
  ], { optional: true }),
264
264
  query(':leave', [
265
- style({ transform: 'translateY(0)' }),
265
+ style({ transform: 'translateY({{end}})' }),
266
266
  stagger(STAGGER, [
267
- animate(TRANSITION, style({ transform: 'translateY(-100%)' })),
267
+ animate(TRANSITION, style({ transform: 'translateY(-{{start}})' })),
268
268
  ]),
269
269
  ], { optional: true }),
270
- ], DURATION),
270
+ ], { params: { end: 0, start: '100%', duration: 300 } }),
271
271
  ]);
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvYW5pbWF0aW9ucy9hbmltYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxPQUFPLEVBQ1AsWUFBWSxFQUNaLEtBQUssRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1YsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQztBQUNoRCxNQUFNLFFBQVEsR0FBRyxFQUFDLE1BQU0sRUFBRSxFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUMsRUFBQyxDQUFDO0FBQzNDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQztBQU9wQjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtJQUM1RCxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2xGLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRTtJQUN0QyxVQUFVLENBQUMsUUFBUSxFQUFFO1FBQ2pCLEtBQUssQ0FBQyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsQ0FBQztRQUN6QixLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQztLQUMxRCxDQUFD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QUMsQ0FBQztRQUNuQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxDQUFDLENBQUM7S0FDL0QsRUFDRCxRQUFRLENBQ1g7Q0FDSixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsc0JBQXNCLEVBQUU7SUFDaEUsVUFBVSxDQUNOLFFBQVEsRUFDUjtRQUNJLEtBQUssQ0FDRCxRQUFRLEVBQ1I7WUFDSSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUMsQ0FBQztZQUN2QyxPQUFPLENBQUMsT0FBTyxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQUM7YUFDM0QsQ0FBQztTQUNMLEVBQ0QsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQ25CO1FBQ0QsS0FBSyxDQUNELFFBQVEsRUFDUjtZQUNJLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUMsQ0FBQztZQUNuQyxPQUFPLENBQUMsT0FBTyxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFDLENBQUMsQ0FBQzthQUMvRCxDQUFDO1NBQ0wsRUFDRCxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FDbkI7S0FDSixFQUNELFFBQVEsQ0FDWDtDQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgYW5pbWF0ZSxcbiAgICBhbmltYXRlQ2hpbGQsXG4gICAgcXVlcnksXG4gICAgc3RhZ2dlcixcbiAgICBzdHlsZSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIHRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5jb25zdCBUUkFOU0lUSU9OID0gJ3t7ZHVyYXRpb259fW1zIGVhc2UtaW4tb3V0JztcbmNvbnN0IERVUkFUSU9OID0ge3BhcmFtczoge2R1cmF0aW9uOiAzMDB9fTtcbmNvbnN0IFNUQUdHRVIgPSAzMDA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHVpRHVyYXRpb25PcHRpb25zIHtcbiAgICBwYXJhbXM6IHtkdXJhdGlvbjogbnVtYmVyfTtcbiAgICB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFkZCB0byBlbmFibGUgY2hpbGQgOmxlYXZlIGFuaW1hdGlvbiAoZml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTU3NTMpXG4gKi9cbmV4cG9ydCBjb25zdCB0dWlQYXJlbnRBbmltYXRpb24gPSB0cmlnZ2VyKCd0dWlQYXJlbnRBbmltYXRpb24nLCBbXG4gICAgdHJhbnNpdGlvbignOmxlYXZlJywgW3F1ZXJ5KCc6c2NvcGUgPiAqJywgW2FuaW1hdGVDaGlsZCgpXSwge29wdGlvbmFsOiB0cnVlfSldKSxcbl0pO1xuXG4vKipcbiAqIEFkZCBvbiBwYXJlbnQgdG8gc3RvcCBpbml0aWFsIDplbnRlciBhbmltYXRpb24gZm9yIGNoaWxkcmVuXG4gKi9cbmV4cG9ydCBjb25zdCB0dWlQYXJlbnRTdG9wID0gdHJpZ2dlcigndHVpUGFyZW50U3RvcCcsIFt0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXSldKTtcblxuZXhwb3J0IGNvbnN0IHR1aUhvc3QgPSB0cmlnZ2VyKCd0dWlIb3N0JywgW1xuICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoe292ZXJmbG93OiAnY2xpcCd9KSxcbiAgICAgICAgcXVlcnkoJzpzY29wZSA+IConLCBbYW5pbWF0ZUNoaWxkKCldLCB7b3B0aW9uYWw6IHRydWV9KSxcbiAgICBdKSxcbiAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbcXVlcnkoJzpzY29wZSA+IConLCBbYW5pbWF0ZUNoaWxkKCldLCB7b3B0aW9uYWw6IHRydWV9KV0pLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlIZWlnaHRDb2xsYXBzZSA9IHRyaWdnZXIoJ3R1aUhlaWdodENvbGxhcHNlJywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6ZW50ZXInLFxuICAgICAgICBbc3R5bGUoe2hlaWdodDogMH0pLCBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHtoZWlnaHQ6ICcqJ30pKV0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgIFtzdHlsZSh7aGVpZ2h0OiAnKid9KSwgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7aGVpZ2h0OiAwfSkpXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpSGVpZ2h0Q29sbGFwc2VMaXN0ID0gdHJpZ2dlcigndHVpSGVpZ2h0Q29sbGFwc2VMaXN0JywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICcqID0+IConLFxuICAgICAgICBbXG4gICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHtoZWlnaHQ6IDB9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7aGVpZ2h0OiAnKid9KSldKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHtoZWlnaHQ6ICcqJ30pLFxuICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyKFNUQUdHRVIsIFthbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHtoZWlnaHQ6IDB9KSldKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aVdpZHRoQ29sbGFwc2UgPSB0cmlnZ2VyKCd0dWlXaWR0aENvbGxhcHNlJywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6ZW50ZXInLFxuICAgICAgICBbc3R5bGUoe3dpZHRoOiAwfSksIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3dpZHRoOiAnKid9KSldLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6bGVhdmUnLFxuICAgICAgICBbc3R5bGUoe3dpZHRoOiAnKid9KSwgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7d2lkdGg6IDB9KSldLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlXaWR0aENvbGxhcHNlTGlzdCA9IHRyaWdnZXIoJ3R1aVdpZHRoQ29sbGFwc2VMaXN0JywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICcqID0+IConLFxuICAgICAgICBbXG4gICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHt3aWR0aDogMH0pLFxuICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyKFNUQUdHRVIsIFthbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt3aWR0aDogJyonfSkpXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcXVlcnkoXG4gICAgICAgICAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7d2lkdGg6ICcqJ30pLFxuICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyKFNUQUdHRVIsIFthbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt3aWR0aDogMH0pKV0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpRmFkZUluID0gdHJpZ2dlcigndHVpRmFkZUluJywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6ZW50ZXInLFxuICAgICAgICBbc3R5bGUoe29wYWNpdHk6IDB9KSwgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7b3BhY2l0eTogMX0pKV0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgIFtzdHlsZSh7b3BhY2l0eTogMX0pLCBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHtvcGFjaXR5OiAwfSkpXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpRmFkZUluTGlzdCA9IHRyaWdnZXIoJ3R1aUZhZGVJbkxpc3QnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJyogPT4gKicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6ZW50ZXInLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe29wYWNpdHk6IDB9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7b3BhY2l0eTogMX0pKV0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6bGVhdmUnLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe29wYWNpdHk6IDF9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7b3BhY2l0eTogMH0pKV0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpRmFkZUluVG9wID0gdHJpZ2dlcigndHVpRmFkZUluVG9wJywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6ZW50ZXInLFxuICAgICAgICBbXG4gICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTBweCknLCBvcGFjaXR5OiAwfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJywgb3BhY2l0eTogMX0pKSxcbiAgICAgICAgXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAxfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMHB4KScsIG9wYWNpdHk6IDB9KSksXG4gICAgICAgIF0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aUZhZGVJbkJvdHRvbSA9IHRyaWdnZXIoJ3R1aUZhZGVJbkJvdHRvbScsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTBweCknLCBvcGFjaXR5OiAwfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJywgb3BhY2l0eTogMX0pKSxcbiAgICAgICAgXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLCBvcGFjaXR5OiAxfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwcHgpJywgb3BhY2l0eTogMH0pKSxcbiAgICAgICAgXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpRHJvcGRvd25BbmltYXRpb24gPSB0cmlnZ2VyKCd0dWlEcm9wZG93bkFuaW1hdGlvbicsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTEwcHgpJywgb3BhY2l0eTogMH0pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsIG9wYWNpdHk6IDF9KSksXG4gICAgICAgIF0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJywgb3BhY2l0eTogMX0pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTBweCknLCBvcGFjaXR5OiAwfSkpLFxuICAgICAgICBdLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlTY2FsZUluID0gdHJpZ2dlcigndHVpU2NhbGVJbicsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3NjYWxlKDApJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAnc2NhbGUoMSknfSkpLFxuICAgICAgICBdLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6bGVhdmUnLFxuICAgICAgICBbXG4gICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAnc2NhbGUoMSknfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSgwKSd9KSksXG4gICAgICAgIF0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aVBvcCA9IHRyaWdnZXIoJ3R1aVBvcCcsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3NjYWxlKDApJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAnc2NhbGUoMS4xKSd9KSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSgxKSd9KSksXG4gICAgICAgIF0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSgxKSd9KSxcbiAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3NjYWxlKDEuMSknfSkpLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAnc2NhbGUoMCknfSkpLFxuICAgICAgICBdLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlTY2FsZUluTGlzdCA9IHRyaWdnZXIoJ3R1aVNjYWxlSW5MaXN0JywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICcqID0+IConLFxuICAgICAgICBbXG4gICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSgwKSd9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSgxKSd9KSksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge29wdGlvbmFsOiB0cnVlfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSgxKSd9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSgwKSd9KSksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge29wdGlvbmFsOiB0cnVlfSxcbiAgICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aVNsaWRlSW4gPSB0cmlnZ2VyKCd0dWlTbGlkZUluJywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICcqID0+IGxlZnQnLFxuICAgICAgICBbXG4gICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwJSknfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJ30pKSxcbiAgICAgICAgXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnbGVmdCA9PiAqJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKSd9KSksXG4gICAgICAgIF0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJyogPT4gcmlnaHQnLFxuICAgICAgICBbXG4gICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKSd9KSxcbiAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknfSkpLFxuICAgICAgICBdLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICdyaWdodCA9PiAqJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJ30pKSxcbiAgICAgICAgXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpU2xpZGVJbkxlZnQgPSB0cmlnZ2VyKCd0dWlTbGlkZUluTGVmdCcsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTEwMCUpJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKSd9KSksXG4gICAgICAgIF0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwJSknfSkpLFxuICAgICAgICBdLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlTbGlkZUluTGVmdExpc3QgPSB0cmlnZ2VyKCd0dWlTbGlkZUluTGVmdExpc3QnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJyogPT4gKicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6ZW50ZXInLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTEwMCUpJ30pLFxuICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyKFNUQUdHRVIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknfSkpLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHtvcHRpb25hbDogdHJ1ZX0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcXVlcnkoXG4gICAgICAgICAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKSd9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKSd9KSksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge29wdGlvbmFsOiB0cnVlfSxcbiAgICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aVNsaWRlSW5SaWdodCA9IHRyaWdnZXIoJ3R1aVNsaWRlSW5SaWdodCcsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJ30pKSxcbiAgICAgICAgXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJ30pKSxcbiAgICAgICAgXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpU2xpZGVJblJpZ2h0TGlzdCA9IHRyaWdnZXIoJ3R1aVNsaWRlSW5SaWdodExpc3QnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJyogPT4gKicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6ZW50ZXInLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknfSksXG4gICAgICAgICAgICAgICAgICAgIHN0YWdnZXIoU1RBR0dFUiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKSd9KSksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge29wdGlvbmFsOiB0cnVlfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJ30pLFxuICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyKFNUQUdHRVIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknfSkpLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHtvcHRpb25hbDogdHJ1ZX0sXG4gICAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlTbGlkZUluVG9wID0gdHJpZ2dlcigndHVpU2xpZGVJblRvcCcsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAse3tzdGFydH19LDApJywgcG9pbnRlckV2ZW50czogJ25vbmUnfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLHt7ZW5kfX0sMCknfSkpLFxuICAgICAgICBdLFxuICAgICAgICB7cGFyYW1zOiB7ZW5kOiAwLCBzdGFydDogJzEwMCUnLCBkdXJhdGlvbjogMzAwfX0sXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAse3tlbmR9fSwwKSd9KSxcbiAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAse3tzdGFydH19LDApJ30pKSxcbiAgICAgICAgXSxcbiAgICAgICAge3BhcmFtczoge2VuZDogMCwgc3RhcnQ6ICcxMDAlJywgZHVyYXRpb246IDMwMH19LFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aVNsaWRlSW5Ub3BMaXN0ID0gdHJpZ2dlcigndHVpU2xpZGVJblRvcExpc3QnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJyogPT4gKicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6ZW50ZXInLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTAwJSknfSksXG4gICAgICAgICAgICAgICAgICAgIHN0YWdnZXIoU1RBR0dFUiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKSd9KSksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge29wdGlvbmFsOiB0cnVlfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJ30pLFxuICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyKFNUQUdHRVIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTAwJSknfSkpLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHtvcHRpb25hbDogdHJ1ZX0sXG4gICAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlTbGlkZUluQm90dG9tID0gdHJpZ2dlcigndHVpU2xpZGVJbkJvdHRvbScsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTEwMCUpJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKSd9KSksXG4gICAgICAgIF0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTAwJSknfSkpLFxuICAgICAgICBdLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlTbGlkZUluQm90dG9tTGlzdCA9IHRyaWdnZXIoJ3R1aVNsaWRlSW5Cb3R0b21MaXN0JywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICcqID0+IConLFxuICAgICAgICBbXG4gICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDAlKSd9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJ30pKSxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB7b3B0aW9uYWw6IHRydWV9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6bGVhdmUnLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknfSksXG4gICAgICAgICAgICAgICAgICAgIHN0YWdnZXIoU1RBR0dFUiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTAwJSknfSkpLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHtvcHRpb25hbDogdHJ1ZX0sXG4gICAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG4iXX0=
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvYW5pbWF0aW9ucy9hbmltYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxPQUFPLEVBQ1AsWUFBWSxFQUNaLEtBQUssRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1YsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQztBQUNoRCxNQUFNLFFBQVEsR0FBRyxFQUFDLE1BQU0sRUFBRSxFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUMsRUFBQyxDQUFDO0FBQzNDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQztBQU9wQjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtJQUM1RCxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2xGLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRTtJQUN0QyxVQUFVLENBQUMsUUFBUSxFQUFFO1FBQ2pCLEtBQUssQ0FBQyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUMsQ0FBQztRQUN6QixLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQztLQUMxRCxDQUFD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QUNKLEVBQ0QsRUFBQyxNQUFNLEVBQUUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBQyxFQUFDLENBQ25EO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBhbmltYXRlLFxuICAgIGFuaW1hdGVDaGlsZCxcbiAgICBxdWVyeSxcbiAgICBzdGFnZ2VyLFxuICAgIHN0eWxlLFxuICAgIHRyYW5zaXRpb24sXG4gICAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmNvbnN0IFRSQU5TSVRJT04gPSAne3tkdXJhdGlvbn19bXMgZWFzZS1pbi1vdXQnO1xuY29uc3QgRFVSQVRJT04gPSB7cGFyYW1zOiB7ZHVyYXRpb246IDMwMH19O1xuY29uc3QgU1RBR0dFUiA9IDMwMDtcblxuZXhwb3J0IGludGVyZmFjZSBUdWlEdXJhdGlvbk9wdGlvbnMge1xuICAgIHBhcmFtczoge2R1cmF0aW9uOiBudW1iZXJ9O1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQWRkIHRvIGVuYWJsZSBjaGlsZCA6bGVhdmUgYW5pbWF0aW9uIChmaXhlcyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xNTc1MylcbiAqL1xuZXhwb3J0IGNvbnN0IHR1aVBhcmVudEFuaW1hdGlvbiA9IHRyaWdnZXIoJ3R1aVBhcmVudEFuaW1hdGlvbicsIFtcbiAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbcXVlcnkoJzpzY29wZSA+IConLCBbYW5pbWF0ZUNoaWxkKCldLCB7b3B0aW9uYWw6IHRydWV9KV0pLFxuXSk7XG5cbi8qKlxuICogQWRkIG9uIHBhcmVudCB0byBzdG9wIGluaXRpYWwgOmVudGVyIGFuaW1hdGlvbiBmb3IgY2hpbGRyZW5cbiAqL1xuZXhwb3J0IGNvbnN0IHR1aVBhcmVudFN0b3AgPSB0cmlnZ2VyKCd0dWlQYXJlbnRTdG9wJywgW3RyYW5zaXRpb24oJzplbnRlcicsIFtdKV0pO1xuXG5leHBvcnQgY29uc3QgdHVpSG9zdCA9IHRyaWdnZXIoJ3R1aUhvc3QnLCBbXG4gICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7b3ZlcmZsb3c6ICdjbGlwJ30pLFxuICAgICAgICBxdWVyeSgnOnNjb3BlID4gKicsIFthbmltYXRlQ2hpbGQoKV0sIHtvcHRpb25hbDogdHJ1ZX0pLFxuICAgIF0pLFxuICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtxdWVyeSgnOnNjb3BlID4gKicsIFthbmltYXRlQ2hpbGQoKV0sIHtvcHRpb25hbDogdHJ1ZX0pXSksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aUhlaWdodENvbGxhcHNlID0gdHJpZ2dlcigndHVpSGVpZ2h0Q29sbGFwc2UnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzplbnRlcicsXG4gICAgICAgIFtzdHlsZSh7aGVpZ2h0OiAwfSksIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe2hlaWdodDogJyonfSkpXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgW3N0eWxlKHtoZWlnaHQ6ICcqJ30pLCBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHtoZWlnaHQ6IDB9KSldLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlIZWlnaHRDb2xsYXBzZUxpc3QgPSB0cmlnZ2VyKCd0dWlIZWlnaHRDb2xsYXBzZUxpc3QnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJyogPT4gKicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6ZW50ZXInLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe2hlaWdodDogMH0pLFxuICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyKFNUQUdHRVIsIFthbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHtoZWlnaHQ6ICcqJ30pKV0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6bGVhdmUnLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe2hlaWdodDogJyonfSksXG4gICAgICAgICAgICAgICAgICAgIHN0YWdnZXIoU1RBR0dFUiwgW2FuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe2hlaWdodDogMH0pKV0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpV2lkdGhDb2xsYXBzZSA9IHRyaWdnZXIoJ3R1aVdpZHRoQ29sbGFwc2UnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzplbnRlcicsXG4gICAgICAgIFtzdHlsZSh7d2lkdGg6IDB9KSwgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7d2lkdGg6ICcqJ30pKV0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgIFtzdHlsZSh7d2lkdGg6ICcqJ30pLCBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt3aWR0aDogMH0pKV0sXG4gICAgICAgIERVUkFUSU9OLFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aVdpZHRoQ29sbGFwc2VMaXN0ID0gdHJpZ2dlcigndHVpV2lkdGhDb2xsYXBzZUxpc3QnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJyogPT4gKicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6ZW50ZXInLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe3dpZHRoOiAwfSksXG4gICAgICAgICAgICAgICAgICAgIHN0YWdnZXIoU1RBR0dFUiwgW2FuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3dpZHRoOiAnKid9KSldKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHt3aWR0aDogJyonfSksXG4gICAgICAgICAgICAgICAgICAgIHN0YWdnZXIoU1RBR0dFUiwgW2FuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3dpZHRoOiAwfSkpXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlGYWRlSW4gPSB0cmlnZ2VyKCd0dWlGYWRlSW4nLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzplbnRlcicsXG4gICAgICAgIFtzdHlsZSh7b3BhY2l0eTogMH0pLCBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHtvcGFjaXR5OiAxfSkpXSxcbiAgICAgICAgRFVSQVRJT04sXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgW3N0eWxlKHtvcGFjaXR5OiAxfSksIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe29wYWNpdHk6IDB9KSldLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlGYWRlSW5MaXN0ID0gdHJpZ2dlcigndHVpRmFkZUluTGlzdCcsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnKiA9PiAqJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgcXVlcnkoXG4gICAgICAgICAgICAgICAgJzplbnRlcicsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7b3BhY2l0eTogMH0pLFxuICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyKFNUQUdHRVIsIFthbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHtvcGFjaXR5OiAxfSkpXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcXVlcnkoXG4gICAgICAgICAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7b3BhY2l0eTogMX0pLFxuICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyKFNUQUdHRVIsIFthbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHtvcGFjaXR5OiAwfSkpXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBEVVJBVElPTixcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlGYWRlSW5Ub3AgPSB0cmlnZ2VyKCd0dWlGYWRlSW5Ub3AnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzplbnRlcicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC17e3N0YXJ0fX1weCknLCBvcGFjaXR5OiAwfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKHt7ZW5kfX0pJywgb3BhY2l0eTogMX0pKSxcbiAgICAgICAgXSxcbiAgICAgICAge3BhcmFtczoge2VuZDogMCwgc3RhcnQ6IDEwLCBkdXJhdGlvbjogMzAwfX0sXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoe3tlbmR9fSknLCBvcGFjaXR5OiAxfSksXG4gICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAgIFRSQU5TSVRJT04sXG4gICAgICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLXt7c3RhcnR9fXB4KScsIG9wYWNpdHk6IDB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICAgIHtwYXJhbXM6IHtlbmQ6IDAsIHN0YXJ0OiAxMCwgZHVyYXRpb246IDMwMH19LFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aUZhZGVJbkJvdHRvbSA9IHRyaWdnZXIoJ3R1aUZhZGVJbkJvdHRvbScsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoe3tzdGFydH19cHgpJywgb3BhY2l0eTogMH0pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSh7e2VuZH19KScsIG9wYWNpdHk6IDF9KSksXG4gICAgICAgIF0sXG4gICAgICAgIHtwYXJhbXM6IHtlbmQ6IDAsIHN0YXJ0OiAxMCwgZHVyYXRpb246IDMwMH19LFxuICAgICksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKHt7ZW5kfX0pJywgb3BhY2l0eTogMX0pLFxuICAgICAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgICAgICBUUkFOU0lUSU9OLFxuICAgICAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKHt7c3RhcnR9fXB4KScsIG9wYWNpdHk6IDB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICAgIHtwYXJhbXM6IHtlbmQ6IDAsIHN0YXJ0OiAxMCwgZHVyYXRpb246IDMwMH19LFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aURyb3Bkb3duQW5pbWF0aW9uID0gdHJpZ2dlcigndHVpRHJvcGRvd25BbmltYXRpb24nLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzplbnRlcicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC17e3N0YXJ0fX1weCknLCBvcGFjaXR5OiAwfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKHt7ZW5kfX0pJywgb3BhY2l0eTogMX0pKSxcbiAgICAgICAgXSxcbiAgICAgICAge3BhcmFtczoge2VuZDogMCwgc3RhcnQ6IDEwLCBkdXJhdGlvbjogMzAwfX0sXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoe3tlbmR9fSknLCBvcGFjaXR5OiAxfSksXG4gICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAgIFRSQU5TSVRJT04sXG4gICAgICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLXt7c3RhcnR9fXB4KScsIG9wYWNpdHk6IDB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICAgIHtwYXJhbXM6IHtlbmQ6IDAsIHN0YXJ0OiAxMCwgZHVyYXRpb246IDMwMH19LFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aVNjYWxlSW4gPSB0cmlnZ2VyKCd0dWlTY2FsZUluJywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6ZW50ZXInLFxuICAgICAgICBbXG4gICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAnc2NhbGUoe3tzdGFydH19KSd9KSxcbiAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3NjYWxlKHt7ZW5kfX0pJ30pKSxcbiAgICAgICAgXSxcbiAgICAgICAge3BhcmFtczoge2VuZDogMSwgc3RhcnQ6IDAsIGR1cmF0aW9uOiAzMDB9fSxcbiAgICApLFxuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6bGVhdmUnLFxuICAgICAgICBbXG4gICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAnc2NhbGUoe3tlbmR9fSknfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSh7e3N0YXJ0fX0pJ30pKSxcbiAgICAgICAgXSxcbiAgICAgICAge3BhcmFtczoge2VuZDogMSwgc3RhcnQ6IDAsIGR1cmF0aW9uOiAzMDB9fSxcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlQb3AgPSB0cmlnZ2VyKCd0dWlQb3AnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzplbnRlcicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSh7e3N0YXJ0fX0pJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAnc2NhbGUoe3ttaWRkbGV9fSknfSkpLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAnc2NhbGUoe3tlbmR9fSknfSkpLFxuICAgICAgICBdLFxuICAgICAgICB7cGFyYW1zOiB7ZW5kOiAxLCBtaWRkbGU6IDEuMSwgc3RhcnQ6IDAsIGR1cmF0aW9uOiAzMDB9fSxcbiAgICApLFxuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6bGVhdmUnLFxuICAgICAgICBbXG4gICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAnc2NhbGUoe3tlbmR9fSknfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSh7e21pZGRsZX19KSd9KSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSh7e3N0YXJ0fX0pJ30pKSxcbiAgICAgICAgXSxcbiAgICAgICAge3BhcmFtczoge2VuZDogMSwgbWlkZGxlOiAxLjEsIHN0YXJ0OiAwLCBkdXJhdGlvbjogMzAwfX0sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpU2NhbGVJbkxpc3QgPSB0cmlnZ2VyKCd0dWlTY2FsZUluTGlzdCcsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnKiA9PiAqJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgcXVlcnkoXG4gICAgICAgICAgICAgICAgJzplbnRlcicsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAnc2NhbGUoe3tzdGFydH19KSd9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSh7e2VuZH19KSd9KSksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge29wdGlvbmFsOiB0cnVlfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSh7e2VuZH19KSd9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICdzY2FsZSh7e3N0YXJ0fX0pJ30pKSxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB7b3B0aW9uYWw6IHRydWV9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAge3BhcmFtczoge2VuZDogMSwgc3RhcnQ6IDAsIGR1cmF0aW9uOiAzMDB9fSxcbiAgICApLFxuXSk7XG5cbmV4cG9ydCBjb25zdCB0dWlTbGlkZUluID0gdHJpZ2dlcigndHVpU2xpZGVJbicsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnKiA9PiBsZWZ0JyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLXt7c3RhcnR9fSknfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKHt7ZW5kfX0pJ30pKSxcbiAgICAgICAgXSxcbiAgICAgICAge3BhcmFtczoge2VuZDogMCwgc3RhcnQ6ICcxMDAlJywgZHVyYXRpb246IDMwMH19LFxuICAgICksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJ2xlZnQgPT4gKicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKHt7ZW5kfX0pJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgte3tzdGFydH19KSd9KSksXG4gICAgICAgIF0sXG4gICAgICAgIHtwYXJhbXM6IHtlbmQ6IDAsIHN0YXJ0OiAnMTAwJScsIGR1cmF0aW9uOiAzMDB9fSxcbiAgICApLFxuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICcqID0+IHJpZ2h0JyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoe3tzdGFydH19KSd9KSxcbiAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoe3tlbmR9fSknfSkpLFxuICAgICAgICBdLFxuICAgICAgICB7cGFyYW1zOiB7ZW5kOiAwLCBzdGFydDogJzEwMCUnLCBkdXJhdGlvbjogMzAwfX0sXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAncmlnaHQgPT4gKicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKHt7ZW5kfX0pJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCh7e3N0YXJ0fX0pJ30pKSxcbiAgICAgICAgXSxcbiAgICAgICAge3BhcmFtczoge2VuZDogMCwgc3RhcnQ6ICcxMDAlJywgZHVyYXRpb246IDMwMH19LFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aVNsaWRlSW5MZWZ0ID0gdHJpZ2dlcigndHVpU2xpZGVJbkxlZnQnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzplbnRlcicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC17e3N0YXJ0fX0pJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCh7e2VuZH19KSd9KSksXG4gICAgICAgIF0sXG4gICAgICAgIHtwYXJhbXM6IHtlbmQ6IDAsIHN0YXJ0OiAnMTAwJScsIGR1cmF0aW9uOiAzMDB9fSxcbiAgICApLFxuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6bGVhdmUnLFxuICAgICAgICBbXG4gICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCh7e2VuZH19KSd9KSxcbiAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLXt7c3RhcnR9fSknfSkpLFxuICAgICAgICBdLFxuICAgICAgICB7cGFyYW1zOiB7ZW5kOiAwLCBzdGFydDogJzEwMCUnLCBkdXJhdGlvbjogMzAwfX0sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpU2xpZGVJbkxlZnRMaXN0ID0gdHJpZ2dlcigndHVpU2xpZGVJbkxlZnRMaXN0JywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICcqID0+IConLFxuICAgICAgICBbXG4gICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC17e3N0YXJ0fX0pJ30pLFxuICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyKFNUQUdHRVIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoe3tlbmR9fSknfSkpLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHtvcHRpb25hbDogdHJ1ZX0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcXVlcnkoXG4gICAgICAgICAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCh7e2VuZH19KSd9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC17e3N0YXJ0fX0pJ30pKSxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB7b3B0aW9uYWw6IHRydWV9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAge3BhcmFtczoge2VuZDogMCwgc3RhcnQ6ICcxMDAlJywgZHVyYXRpb246IDMwMH19LFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aVNsaWRlSW5SaWdodCA9IHRyaWdnZXIoJ3R1aVNsaWRlSW5SaWdodCcsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoe3tzdGFydH19KSd9KSxcbiAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoe3tlbmR9fSknfSkpLFxuICAgICAgICBdLFxuICAgICAgICB7cGFyYW1zOiB7ZW5kOiAwLCBzdGFydDogJzEwMCUnLCBkdXJhdGlvbjogMzAwfX0sXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoe3tlbmR9fSknfSksXG4gICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKHt7c3RhcnR9fSknfSkpLFxuICAgICAgICBdLFxuICAgICAgICB7cGFyYW1zOiB7ZW5kOiAwLCBzdGFydDogJzEwMCUnLCBkdXJhdGlvbjogMzAwfX0sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpU2xpZGVJblJpZ2h0TGlzdCA9IHRyaWdnZXIoJ3R1aVNsaWRlSW5SaWdodExpc3QnLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJyogPT4gKicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6ZW50ZXInLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoe3tzdGFydH19KSd9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKHt7ZW5kfX0pJ30pKSxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB7b3B0aW9uYWw6IHRydWV9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6bGVhdmUnLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoe3tlbmR9fSknfSksXG4gICAgICAgICAgICAgICAgICAgIHN0YWdnZXIoU1RBR0dFUiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCh7e3N0YXJ0fX0pJ30pKSxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB7b3B0aW9uYWw6IHRydWV9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAge3BhcmFtczoge2VuZDogMCwgc3RhcnQ6ICcxMDAlJywgZHVyYXRpb246IDMwMH19LFxuICAgICksXG5dKTtcblxuZXhwb3J0IGNvbnN0IHR1aVNsaWRlSW5Ub3AgPSB0cmlnZ2VyKCd0dWlTbGlkZUluVG9wJywgW1xuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6ZW50ZXInLFxuICAgICAgICBbXG4gICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCx7e3N0YXJ0fX0sMCknLCBwb2ludGVyRXZlbnRzOiAnbm9uZSd9KSxcbiAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAse3tlbmR9fSwwKSd9KSksXG4gICAgICAgIF0sXG4gICAgICAgIHtwYXJhbXM6IHtlbmQ6IDAsIHN0YXJ0OiAnMTAwJScsIGR1cmF0aW9uOiAzMDB9fSxcbiAgICApLFxuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6bGVhdmUnLFxuICAgICAgICBbXG4gICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCx7e2VuZH19LDApJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCx7e3N0YXJ0fX0sMCknfSkpLFxuICAgICAgICBdLFxuICAgICAgICB7cGFyYW1zOiB7ZW5kOiAwLCBzdGFydDogJzEwMCUnLCBkdXJhdGlvbjogMzAwfX0sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpU2xpZGVJblRvcExpc3QgPSB0cmlnZ2VyKCd0dWlTbGlkZUluVG9wTGlzdCcsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnKiA9PiAqJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgcXVlcnkoXG4gICAgICAgICAgICAgICAgJzplbnRlcicsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSh7e3N0YXJ0fX0pJ30pLFxuICAgICAgICAgICAgICAgICAgICBzdGFnZ2VyKFNUQUdHRVIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoe3tlbmR9fSknfSkpLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHtvcHRpb25hbDogdHJ1ZX0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcXVlcnkoXG4gICAgICAgICAgICAgICAgJzpsZWF2ZScsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSh7e2VuZH19KSd9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKHt7c3RhcnR9fSknfSkpLFxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHtvcHRpb25hbDogdHJ1ZX0sXG4gICAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICB7cGFyYW1zOiB7ZW5kOiAwLCBzdGFydDogJzEwMCUnLCBkdXJhdGlvbjogMzAwfX0sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpU2xpZGVJbkJvdHRvbSA9IHRyaWdnZXIoJ3R1aVNsaWRlSW5Cb3R0b20nLCBbXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJzplbnRlcicsXG4gICAgICAgIFtcbiAgICAgICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC17e3N0YXJ0fX0pJ30pLFxuICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSh7e2VuZH19KSd9KSksXG4gICAgICAgIF0sXG4gICAgICAgIHtwYXJhbXM6IHtlbmQ6IDAsIHN0YXJ0OiAnMTAwJScsIGR1cmF0aW9uOiAzMDB9fSxcbiAgICApLFxuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICc6bGVhdmUnLFxuICAgICAgICBbXG4gICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSh7e2VuZH19KSd9KSxcbiAgICAgICAgICAgIGFuaW1hdGUoVFJBTlNJVElPTiwgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLXt7c3RhcnR9fSknfSkpLFxuICAgICAgICBdLFxuICAgICAgICB7cGFyYW1zOiB7ZW5kOiAwLCBzdGFydDogJzEwMCUnLCBkdXJhdGlvbjogMzAwfX0sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgdHVpU2xpZGVJbkJvdHRvbUxpc3QgPSB0cmlnZ2VyKCd0dWlTbGlkZUluQm90dG9tTGlzdCcsIFtcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnKiA9PiAqJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgcXVlcnkoXG4gICAgICAgICAgICAgICAgJzplbnRlcicsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSgte3tzdGFydH19KSd9KSxcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcihTVEFHR0VSLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlKFRSQU5TSVRJT04sIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKHt7ZW5kfX0pJ30pKSxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB7b3B0aW9uYWw6IHRydWV9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHF1ZXJ5KFxuICAgICAgICAgICAgICAgICc6bGVhdmUnLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoe3tlbmR9fSknfSksXG4gICAgICAgICAgICAgICAgICAgIHN0YWdnZXIoU1RBR0dFUiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZShUUkFOU0lUSU9OLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSgte3tzdGFydH19KSd9KSksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAge29wdGlvbmFsOiB0cnVlfSxcbiAgICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICAgIHtwYXJhbXM6IHtlbmQ6IDAsIHN0YXJ0OiAnMTAwJScsIGR1cmF0aW9uOiAzMDB9fSxcbiAgICApLFxuXSk7XG4iXX0=