@taiga-ui/addon-doc 3.11.0 → 3.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +8 -4
  2. package/bundles/taiga-ui-addon-doc.umd.js +239 -81
  3. package/bundles/taiga-ui-addon-doc.umd.js.map +1 -1
  4. package/components/demo/demo.component.d.ts +11 -3
  5. package/components/documentation/documentation-property-connector.directive.d.ts +1 -1
  6. package/components/documentation/documentation.component.d.ts +8 -9
  7. package/components/documentation/documentation.module.d.ts +16 -9
  8. package/components/documentation/pipes/cleaner.pipe.d.ts +7 -0
  9. package/components/documentation/pipes/content-tooltip.pipe.d.ts +7 -0
  10. package/components/documentation/pipes/opacity.pipe.d.ts +7 -0
  11. package/components/documentation/pipes/optional.pipe.d.ts +7 -0
  12. package/components/documentation/pipes/primitive-polymorpheus-content.pipe.d.ts +7 -0
  13. package/components/documentation/pipes/strip-optional.pipe.d.ts +7 -0
  14. package/components/documentation/pipes//321/201olor.pipe.d.ts +7 -0
  15. package/components/navigation/navigation.component.d.ts +1 -1
  16. package/directives/scroll-into-view/scroll-into-view.directive.d.ts +1 -1
  17. package/esm2015/components/demo/demo.component.js +62 -20
  18. package/esm2015/components/documentation/documentation-property-connector.directive.js +1 -1
  19. package/esm2015/components/documentation/documentation.component.js +36 -64
  20. package/esm2015/components/documentation/documentation.module.js +22 -1
  21. package/esm2015/components/documentation/pipes/cleaner.pipe.js +14 -0
  22. package/esm2015/components/documentation/pipes/content-tooltip.pipe.js +14 -0
  23. package/esm2015/components/documentation/pipes/opacity.pipe.js +26 -0
  24. package/esm2015/components/documentation/pipes/optional.pipe.js +14 -0
  25. package/esm2015/components/documentation/pipes/primitive-polymorpheus-content.pipe.js +15 -0
  26. package/esm2015/components/documentation/pipes/strip-optional.pipe.js +14 -0
  27. package/esm2015/components/documentation/pipes//321/201olor.pipe.js +35 -0
  28. package/esm2015/components/example/example.component.js +2 -2
  29. package/esm2015/components/navigation/navigation.component.js +5 -3
  30. package/esm2015/directives/scroll-into-view/scroll-into-view.directive.js +5 -3
  31. package/esm2015/internal/see-also/see-also.component.js +1 -1
  32. package/esm2015/utils/coerce-value.js +1 -1
  33. package/fesm2015/taiga-ui-addon-doc.js +218 -81
  34. package/fesm2015/taiga-ui-addon-doc.js.map +1 -1
  35. package/internal/see-also/see-also.component.d.ts +1 -1
  36. package/package.json +9 -9
  37. package/utils/coerce-value.d.ts +1 -1
@@ -10,6 +10,8 @@ export declare class TuiDocDemoComponent implements OnInit, AfterViewInit {
10
10
  readonly isMobile: boolean;
11
11
  private readonly destroy$;
12
12
  private readonly renderer;
13
+ private readonly locationRef;
14
+ private readonly urlSerializer;
13
15
  readonly texts: [string, string, string];
14
16
  private readonly content?;
15
17
  private readonly wrapper?;
@@ -21,7 +23,7 @@ export declare class TuiDocDemoComponent implements OnInit, AfterViewInit {
21
23
  readonly template: TemplateRef<Record<string, unknown>> | null;
22
24
  testForm?: FormGroup;
23
25
  updateOnVariants: string[];
24
- updateOn: 'change' | 'blur' | 'submit';
26
+ updateOn: 'blur' | 'change' | 'submit';
25
27
  expanded: boolean;
26
28
  opaque: boolean;
27
29
  modeControl: FormControl;
@@ -37,9 +39,15 @@ export declare class TuiDocDemoComponent implements OnInit, AfterViewInit {
37
39
  onDragContinues(event: MouseEvent): void;
38
40
  onDragEnd(): void;
39
41
  toggleDetails(): void;
40
- updateOnChange(updateOn: 'change' | 'blur' | 'submit'): void;
42
+ updateOnChange(updateOn: 'blur' | 'change' | 'submit'): void;
41
43
  private createForm;
42
44
  private resizeContent;
43
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiDocDemoComponent, never>;
45
+ private setWidthWrapper;
46
+ private updateUrl;
47
+ private getUrlTree;
48
+ private getPaddingOfWrapper;
49
+ private getResizeButtonWidth;
50
+ private updateSandboxWidth;
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiDocDemoComponent, [null, { self: true; }, null, null, null, null, null]>;
44
52
  static ɵcmp: i0.ɵɵComponentDeclaration<TuiDocDemoComponent, "tui-doc-demo", never, { "control": "control"; }, {}, ["template"], ["*"]>;
45
53
  }
@@ -3,7 +3,7 @@ import { EventEmitter, OnChanges, OnInit, TemplateRef } from '@angular/core';
3
3
  import { ActivatedRoute, UrlSerializer } from '@angular/router';
4
4
  import { BehaviorSubject, Subject } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
- export declare type DocumentationPropertyType = 'input' | 'output' | 'input-output' | null;
6
+ export declare type DocumentationPropertyType = 'input-output' | 'input' | 'output' | null;
7
7
  export declare class TuiDocDocumentationPropertyConnectorDirective<T> implements OnInit, OnChanges {
8
8
  readonly template: TemplateRef<Record<string, unknown>>;
9
9
  private readonly locationRef;
@@ -1,26 +1,25 @@
1
1
  import { AfterContentInit, ChangeDetectorRef, QueryList } from '@angular/core';
2
+ import { TuiDestroyService } from '@taiga-ui/cdk';
2
3
  import { TuiDocDocumentationPropertyConnectorDirective } from './documentation-property-connector.directive';
4
+ import { TuiGetOpacityPipe } from './pipes/opacity.pipe';
5
+ import { TuiGetColorPipe } from './pipes/сolor.pipe';
3
6
  import * as i0 from "@angular/core";
4
7
  export declare class TuiDocDocumentationComponent implements AfterContentInit {
5
8
  private readonly changeDetectorRef;
6
9
  readonly texts: [string, string, string, string, string];
10
+ private readonly destroy$;
11
+ private readonly getColor;
12
+ private readonly getOpacity;
7
13
  heading: string;
8
14
  showValues: boolean;
9
15
  isAPI: boolean;
10
16
  propertiesConnectors: QueryList<TuiDocDocumentationPropertyConnectorDirective<any>>;
11
17
  activeItemIndex: number;
12
- constructor(changeDetectorRef: ChangeDetectorRef, texts: [string, string, string, string, string]);
18
+ constructor(changeDetectorRef: ChangeDetectorRef, texts: [string, string, string, string, string], destroy$: TuiDestroyService, getColor: TuiGetColorPipe, getOpacity: TuiGetOpacityPipe);
13
19
  ngAfterContentInit(): void;
14
20
  get type(): string;
15
- getColor(color: string): string;
16
- getOpacity(color: string): number;
17
21
  onColorChange(connector: TuiDocDocumentationPropertyConnectorDirective<string>, color: string): void;
18
22
  onOpacityChange(connector: TuiDocDocumentationPropertyConnectorDirective<string>, opacity: number): void;
19
- stripOptional(name: string): string;
20
- isOptional(name: string): boolean;
21
- isPrimitivePolymorpheusContent(value: unknown): boolean;
22
- showCleaner(type: string): boolean;
23
- showContentTooltip(type: string): boolean;
24
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiDocDocumentationComponent, never>;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiDocDocumentationComponent, [null, null, { self: true; }, null, null]>;
25
24
  static ɵcmp: i0.ɵɵComponentDeclaration<TuiDocDocumentationComponent, "tui-doc-documentation", never, { "heading": "heading"; "showValues": "showValues"; "isAPI": "isAPI"; }, {}, ["propertiesConnectors"], ["*"]>;
26
25
  }
@@ -1,15 +1,22 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./pipes/inspect.pipe";
3
- import * as i2 from "./documentation.component";
4
- import * as i3 from "./documentation-property-connector.directive";
5
- import * as i4 from "@angular/common";
6
- import * as i5 from "@angular/forms";
7
- import * as i6 from "@angular/router";
8
- import * as i7 from "@taiga-ui/kit";
9
- import * as i8 from "@taiga-ui/core";
10
- import * as i9 from "../../internal/input-opacity/input-opacity.module";
3
+ import * as i2 from "./pipes/\u0441olor.pipe";
4
+ import * as i3 from "./pipes/opacity.pipe";
5
+ import * as i4 from "./pipes/optional.pipe";
6
+ import * as i5 from "./pipes/cleaner.pipe";
7
+ import * as i6 from "./pipes/strip-optional.pipe";
8
+ import * as i7 from "./pipes/content-tooltip.pipe";
9
+ import * as i8 from "./documentation.component";
10
+ import * as i9 from "./pipes/primitive-polymorpheus-content.pipe";
11
+ import * as i10 from "./documentation-property-connector.directive";
12
+ import * as i11 from "@angular/common";
13
+ import * as i12 from "@angular/forms";
14
+ import * as i13 from "@angular/router";
15
+ import * as i14 from "@taiga-ui/kit";
16
+ import * as i15 from "@taiga-ui/core";
17
+ import * as i16 from "../../internal/input-opacity/input-opacity.module";
11
18
  export declare class TuiDocDocumentationModule {
12
19
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiDocDocumentationModule, never>;
13
- static ɵmod: i0.ɵɵNgModuleDeclaration<TuiDocDocumentationModule, [typeof i1.TuiInspectPipe, typeof i2.TuiDocDocumentationComponent, typeof i3.TuiDocDocumentationPropertyConnectorDirective], [typeof i4.CommonModule, typeof i5.FormsModule, typeof i6.RouterModule, typeof i7.TuiBadgeModule, typeof i7.TuiSelectModule, typeof i7.TuiToggleModule, typeof i8.TuiTooltipModule, typeof i8.TuiLinkModule, typeof i7.TuiInputCountModule, typeof i8.TuiModeModule, typeof i8.TuiGroupModule, typeof i9.TuiInputOpacityModule, typeof i8.TuiPrimitiveTextfieldModule, typeof i8.TuiTextfieldControllerModule, typeof i8.TuiDropdownModule, typeof i8.TuiDataListModule, typeof i7.TuiDataListWrapperModule, typeof i8.TuiNotificationModule], [typeof i2.TuiDocDocumentationComponent, typeof i3.TuiDocDocumentationPropertyConnectorDirective]>;
20
+ static ɵmod: i0.ɵɵNgModuleDeclaration<TuiDocDocumentationModule, [typeof i1.TuiInspectPipe, typeof i2.TuiGetColorPipe, typeof i3.TuiGetOpacityPipe, typeof i4.TuiIsOptionalPipe, typeof i5.TuiShowCleanerPipe, typeof i6.TuiStripOptionalPipe, typeof i7.TuiShowContentTooltip, typeof i8.TuiDocDocumentationComponent, typeof i9.TuiIsPrimitivePolymorpheusContentPipe, typeof i10.TuiDocDocumentationPropertyConnectorDirective], [typeof i11.CommonModule, typeof i12.FormsModule, typeof i13.RouterModule, typeof i14.TuiBadgeModule, typeof i14.TuiSelectModule, typeof i14.TuiToggleModule, typeof i15.TuiTooltipModule, typeof i15.TuiLinkModule, typeof i14.TuiInputCountModule, typeof i15.TuiModeModule, typeof i15.TuiGroupModule, typeof i16.TuiInputOpacityModule, typeof i15.TuiPrimitiveTextfieldModule, typeof i15.TuiTextfieldControllerModule, typeof i15.TuiDropdownModule, typeof i15.TuiDataListModule, typeof i14.TuiDataListWrapperModule, typeof i15.TuiNotificationModule], [typeof i8.TuiDocDocumentationComponent, typeof i10.TuiDocDocumentationPropertyConnectorDirective]>;
14
21
  static ɵinj: i0.ɵɵInjectorDeclaration<TuiDocDocumentationModule>;
15
22
  }
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TuiShowCleanerPipe implements PipeTransform {
4
+ transform(type: string): boolean;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiShowCleanerPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<TuiShowCleanerPipe, "tuiShowCleanerPipe">;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TuiShowContentTooltip implements PipeTransform {
4
+ transform(type: string): boolean;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiShowContentTooltip, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<TuiShowContentTooltip, "tuiShowContentTooltip">;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TuiGetOpacityPipe implements PipeTransform {
4
+ transform(color: string): number;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiGetOpacityPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<TuiGetOpacityPipe, "tuiGetOpacity">;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TuiIsOptionalPipe implements PipeTransform {
4
+ transform(name: string): boolean;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiIsOptionalPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<TuiIsOptionalPipe, "tuiIsOptionalPipe">;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TuiIsPrimitivePolymorpheusContentPipe implements PipeTransform {
4
+ transform(value: unknown): boolean;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiIsPrimitivePolymorpheusContentPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<TuiIsPrimitivePolymorpheusContentPipe, "tuiIsPrimitivePolymorpheusContentPipe">;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TuiStripOptionalPipe implements PipeTransform {
4
+ transform(name: string): string;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiStripOptionalPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<TuiStripOptionalPipe, "tuiStripOptionalPipe">;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TuiGetColorPipe implements PipeTransform {
4
+ transform(color: string): string;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiGetColorPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<TuiGetColorPipe, "tuiGetColorPipe">;
7
+ }
@@ -40,6 +40,6 @@ export declare class TuiDocNavigationComponent {
40
40
  private handleAnchorLink;
41
41
  private openActivePageGroup;
42
42
  private navigateToAnchorLink;
43
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiDocNavigationComponent, [null, null, null, null, null, { optional: true; }, null, null, null, null, null, null, null, null]>;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiDocNavigationComponent, [null, null, null, null, null, { optional: true; }, null, null, null, null, null, { self: true; }, null, null]>;
44
44
  static ɵcmp: i0.ɵɵComponentDeclaration<TuiDocNavigationComponent, "tui-doc-navigation", never, {}, {}, never, ["*"]>;
45
45
  }
@@ -7,6 +7,6 @@ export declare class TuiScrollIntoViewLinkDirective {
7
7
  set tuiScrollIntoViewLink(shallWe: boolean);
8
8
  private readonly scroll$;
9
9
  constructor(destroy$: TuiDestroyService, { nativeElement }: ElementRef<HTMLElement>, readyToScroll$: Observable<boolean>);
10
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiScrollIntoViewLinkDirective, never>;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiScrollIntoViewLinkDirective, [{ self: true; }, null, null]>;
11
11
  static ɵdir: i0.ɵɵDirectiveDeclaration<TuiScrollIntoViewLinkDirective, "[tuiScrollIntoViewLink]", never, { "tuiScrollIntoViewLink": "tuiScrollIntoViewLink"; }, {}, never>;
12
12
  }
@@ -1,8 +1,9 @@
1
+ import { __decorate } from "tslib";
1
2
  import { isPlatformBrowser, Location } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, ContentChild, forwardRef, HostListener, Inject, Input, PLATFORM_ID, Renderer2, TemplateRef, ViewChild, } from '@angular/core';
3
+ import { ChangeDetectionStrategy, Component, ContentChild, forwardRef, HostListener, Inject, Input, PLATFORM_ID, Renderer2, Self, TemplateRef, ViewChild, } from '@angular/core';
3
4
  import { FormControl, FormGroup } from '@angular/forms';
4
5
  import { UrlSerializer } from '@angular/router';
5
- import { TUI_IS_MOBILE, TuiDestroyService, tuiPx } from '@taiga-ui/cdk';
6
+ import { TUI_IS_MOBILE, tuiDebounce, TuiDestroyService, tuiPx } from '@taiga-ui/cdk';
6
7
  import { TuiModeDirective } from '@taiga-ui/core';
7
8
  import { Subject } from 'rxjs';
8
9
  import { startWith, takeUntil } from 'rxjs/operators';
@@ -20,6 +21,8 @@ export class TuiDocDemoComponent {
20
21
  this.isMobile = isMobile;
21
22
  this.destroy$ = destroy$;
22
23
  this.renderer = renderer;
24
+ this.locationRef = locationRef;
25
+ this.urlSerializer = urlSerializer;
23
26
  this.texts = texts;
24
27
  this.initialX = 0;
25
28
  this.wrapperWidth = 0;
@@ -38,15 +41,6 @@ export class TuiDocDemoComponent {
38
41
  if (parsedMode !== null && parsedMode.length > 0) {
39
42
  this.modeControl.setValue(parsedMode[1]);
40
43
  }
41
- this.modeControl.valueChanges
42
- .pipe(startWith(this.modeControl.value), takeUntil(this.destroy$))
43
- .subscribe(mode => {
44
- const urlTree = urlSerializer.parse(locationRef.path());
45
- urlTree.queryParams = Object.assign(Object.assign({}, urlTree.queryParams), { tuiMode: mode });
46
- locationRef.go(String(urlTree));
47
- this.mode = mode;
48
- this.change$.next();
49
- });
50
44
  }
51
45
  onResize() {
52
46
  this.setResizerTextContent();
@@ -55,17 +49,27 @@ export class TuiDocDemoComponent {
55
49
  this.createForm();
56
50
  }
57
51
  ngAfterViewInit() {
58
- this.setResizerTextContent();
52
+ this.modeControl.valueChanges
53
+ .pipe(startWith(this.modeControl.value), takeUntil(this.destroy$))
54
+ .subscribe(mode => {
55
+ this.updateUrl(mode);
56
+ const wrapperWidth = parseInt(this.getUrlTree().queryParams.sandboxWidth, 10) +
57
+ this.getPaddingOfWrapper() +
58
+ this.getResizeButtonWidth();
59
+ if (!Number.isNaN(wrapperWidth)) {
60
+ this.wrapperWidth = wrapperWidth;
61
+ this.setWidthWrapper(tuiPx(wrapperWidth));
62
+ }
63
+ this.setResizerTextContent();
64
+ this.mode = mode;
65
+ this.change$.next();
66
+ });
59
67
  }
60
68
  setResizerTextContent() {
61
69
  if (!this.content || !this.resizerText) {
62
70
  return;
63
71
  }
64
- const paddingLeft = this.isBrowser
65
- ? getComputedStyle(this.content.nativeElement).paddingLeft
66
- : `0`;
67
- const { offsetWidth } = this.content.nativeElement;
68
- this.resizerText.nativeElement.textContent = String(offsetWidth - parseInt(paddingLeft || `0`, 10) * 2);
72
+ this.resizerText.nativeElement.textContent = (this.content.nativeElement.offsetWidth - this.getPaddingOfWrapper()).toString();
69
73
  }
70
74
  onDragStart(event) {
71
75
  event.preventDefault();
@@ -79,6 +83,7 @@ export class TuiDocDemoComponent {
79
83
  }
80
84
  onDragEnd() {
81
85
  this.wrapperWidth = this.wrapper ? this.wrapper.nativeElement.offsetWidth : 0;
86
+ this.updateSandboxWidth();
82
87
  }
83
88
  toggleDetails() {
84
89
  this.expanded = !this.expanded;
@@ -95,13 +100,45 @@ export class TuiDocDemoComponent {
95
100
  this.testForm = new FormGroup({ testValue: control }, { updateOn });
96
101
  }
97
102
  resizeContent(delta) {
103
+ this.setWidthWrapper(tuiPx(Math.max(this.wrapperWidth - delta, MIN_COMPONENT_WIDTH)));
104
+ }
105
+ setWidthWrapper(width) {
98
106
  if (!this.wrapper) {
99
107
  return;
100
108
  }
101
- this.renderer.setStyle(this.wrapper.nativeElement, `width`, tuiPx(Math.max(this.wrapperWidth - delta, MIN_COMPONENT_WIDTH)));
109
+ this.renderer.setStyle(this.wrapper.nativeElement, `width`, width);
110
+ }
111
+ updateUrl(mode) {
112
+ const urlTree = this.getUrlTree();
113
+ const modeParam = (mode !== null && mode !== void 0 ? mode : urlTree.queryParams.tuiMode) ? { tuiMode: mode } : {};
114
+ const sandboxWidth = parseInt(urlTree.queryParams.sandboxWidth, 10);
115
+ const resizeParam = !Number.isNaN(sandboxWidth) && MIN_COMPONENT_WIDTH > sandboxWidth
116
+ ? { sandboxWidth }
117
+ : {};
118
+ urlTree.queryParams = Object.assign(Object.assign(Object.assign({}, urlTree.queryParams), modeParam), resizeParam);
119
+ this.locationRef.go(String(urlTree));
120
+ }
121
+ getUrlTree() {
122
+ return this.urlSerializer.parse(this.locationRef.path());
123
+ }
124
+ getPaddingOfWrapper() {
125
+ const paddingLeft = this.isBrowser && this.content
126
+ ? getComputedStyle(this.content.nativeElement).paddingLeft
127
+ : `0`;
128
+ return parseInt(paddingLeft || `0`, 10) * 2;
129
+ }
130
+ getResizeButtonWidth() {
131
+ var _a, _b, _c;
132
+ return (_c = (_b = (_a = this.resizerText) === null || _a === void 0 ? void 0 : _a.nativeElement.parentElement) === null || _b === void 0 ? void 0 : _b.offsetWidth) !== null && _c !== void 0 ? _c : 0;
133
+ }
134
+ updateSandboxWidth() {
135
+ var _a, _b;
136
+ const urlTree = this.getUrlTree();
137
+ urlTree.queryParams.sandboxWidth = parseInt((_b = (_a = this.resizerText) === null || _a === void 0 ? void 0 : _a.nativeElement.textContent) !== null && _b !== void 0 ? _b : `0`, 10);
138
+ this.locationRef.go(String(urlTree));
102
139
  }
103
140
  }
104
- TuiDocDemoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiDocDemoComponent, deps: [{ token: TUI_IS_MOBILE }, { token: TuiDestroyService }, { token: Renderer2 }, { token: PLATFORM_ID }, { token: Location }, { token: UrlSerializer }, { token: TUI_DOC_DEMO_TEXTS }], target: i0.ɵɵFactoryTarget.Component });
141
+ TuiDocDemoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiDocDemoComponent, deps: [{ token: TUI_IS_MOBILE }, { token: TuiDestroyService, self: true }, { token: Renderer2 }, { token: PLATFORM_ID }, { token: Location }, { token: UrlSerializer }, { token: TUI_DOC_DEMO_TEXTS }], target: i0.ɵɵFactoryTarget.Component });
105
142
  TuiDocDemoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiDocDemoComponent, selector: "tui-doc-demo", inputs: { control: "control" }, host: { listeners: { "window:resize": "onResize()" } }, providers: [
106
143
  TuiDestroyService,
107
144
  {
@@ -109,6 +146,9 @@ TuiDocDemoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
109
146
  useExisting: forwardRef(() => TuiDocDemoComponent),
110
147
  },
111
148
  ], queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "resizerText", first: true, predicate: ["resizerText"], descendants: true }], ngImport: i0, template: "<div\n class=\"t-bg-toggle\"\n [tuiMode]=\"null\"\n>\n <ng-template #tooltip>\n {{ texts[0] }}\n <a\n tuiLink\n tuiMode=\"onDark\"\n routerLink=\"/directives/mode\"\n >\n <code>tuiMode</code>\n </a>\n </ng-template>\n <ng-container *ngIf=\"isMobile; else desktop\">\n <tui-select\n tuiTextfieldSize=\"s\"\n class=\"t-mode\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiHintContent]=\"tooltip\"\n [formControl]=\"modeControl\"\n >\n tuiMode\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"items\"\n ></tui-data-list-wrapper>\n </tui-select>\n </ng-container>\n <ng-template #desktop>\n tuiMode:\n <tui-tooltip\n describeId=\"form\"\n [content]=\"tooltip\"\n ></tui-tooltip>\n <div\n tuiGroup\n class=\"t-group\"\n [collapsed]=\"true\"\n >\n <tui-radio-block\n size=\"s\"\n nativeId=\"form\"\n class=\"tui-group__auto-width-item\"\n [item]=\"null\"\n [hideRadio]=\"true\"\n [formControl]=\"modeControl\"\n >\n null\n </tui-radio-block>\n <tui-radio-block\n item=\"onDark\"\n size=\"s\"\n nativeId=\"form\"\n class=\"tui-group__auto-width-item\"\n [hideRadio]=\"true\"\n [formControl]=\"modeControl\"\n >\n onDark\n </tui-radio-block>\n <tui-radio-block\n item=\"onLight\"\n size=\"s\"\n nativeId=\"form\"\n class=\"tui-group__auto-width-item\"\n [hideRadio]=\"true\"\n [formControl]=\"modeControl\"\n >\n onLight\n </tui-radio-block>\n </div>\n </ng-template>\n <tui-checkbox-labeled\n size=\"m\"\n class=\"t-checkbox\"\n [(ngModel)]=\"opaque\"\n >\n {{ texts[1] }}\n </tui-checkbox-labeled>\n</div>\n<div\n #wrapper\n class=\"t-wrapper\"\n [class.t-wrapper_dark]=\"modeControl.value === 'onDark'\"\n [class.t-wrapper_gray]=\"modeControl.value === 'onLight'\"\n [class.t-wrapper_transparent]=\"!opaque\"\n>\n <div\n #content\n id=\"demoContent\"\n class=\"t-content\"\n >\n <form\n *ngIf=\"testForm\"\n class=\"t-form\"\n [formGroup]=\"testForm\"\n >\n <div class=\"t-input-wrapper\">\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n </div>\n <button\n tuiButton\n type=\"button\"\n size=\"s\"\n class=\"t-button\"\n [iconRight]=\"icon\"\n (click)=\"toggleDetails()\"\n >\n {{ texts[2] }}\n </button>\n <ng-template #icon>\n <tui-svg\n src=\"tuiIconChevronDown\"\n class=\"t-icon\"\n [class.t-icon_rotated]=\"expanded\"\n ></tui-svg>\n </ng-template>\n <tui-expand\n class=\"t-expand\"\n [expanded]=\"expanded\"\n >\n <ng-template tuiExpandContent>\n <pre class=\"t-value\">Form data: {{ testForm.value | json }}</pre>\n <div\n tuiGroup\n class=\"t-form-controls\"\n >\n <tui-select\n tuiTextfieldSize=\"s\"\n class=\"t-select\"\n [ngModel]=\"updateOn\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"updateOnChange($event)\"\n >\n updateOn\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"updateOnVariants\"\n ></tui-data-list-wrapper>\n </tui-select>\n <button\n tuiButton\n type=\"reset\"\n size=\"s\"\n class=\"tui-group__auto-width-item\"\n >\n Reset\n </button>\n <button\n tuiButton\n type=\"submit\"\n size=\"s\"\n class=\"tui-group__auto-width-item\"\n >\n Submit\n </button>\n </div>\n </ng-template>\n </tui-expand>\n </form>\n <ng-content></ng-content>\n </div>\n <button\n tabindex=\"-1\"\n class=\"t-resizer\"\n (tuiDragStart)=\"onDragStart($event)\"\n (tuiDragContinues)=\"onDragContinues($event)\"\n (tuiDragEnd)=\"onDragEnd()\"\n >\n <span\n #resizerText\n class=\"t-resizer-text\"\n ></span>\n </button>\n</div>\n", styles: [":host{position:relative;display:block;min-width:100%;margin:1.5rem 0}.t-bg-toggle{position:absolute;bottom:calc(100% + .75rem);display:flex;align-items:center;justify-content:flex-end;pointer-events:none;width:100%}.t-bg-toggle>*{pointer-events:auto}.t-wrapper{box-shadow:0 1.5rem 1rem rgba(0,0,0,.03),0 .75rem .75rem rgba(0,0,0,.04),0 .25rem .375rem rgba(0,0,0,.05);display:flex;border:1px solid var(--tui-base-03);border-radius:var(--tui-radius-m);max-width:100%;min-height:6rem;width:100%;background-color:var(--tui-base-01);overflow:hidden}.t-wrapper.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-base-02) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-base-02) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-base-02) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-base-02) 75%);background-size:1.25rem 1.25rem;background-position:0 0,0 .625rem,.625rem -.625rem,-.625rem 0}.t-wrapper.t-wrapper_dark{background-color:#454e58;color:var(--tui-base-01)}.t-wrapper.t-wrapper_gray{background-color:#e5e7ea}.t-wrapper.t-wrapper_dark.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-focus) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-focus) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-focus) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-focus) 75%)}.t-wrapper.t-wrapper_gray.t-wrapper_transparent{background-image:linear-gradient(45deg,var(--tui-base-05) 25%,transparent 25%),linear-gradient(-45deg,var(--tui-base-05) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--tui-base-05) 75%),linear-gradient(-45deg,transparent 75%,var(--tui-base-05) 75%)}:host-context(tui-root._mobile) .t-wrapper{min-height:auto}.t-content{flex:1 1 0;min-width:0;padding:1.5rem;box-sizing:border-box;overflow:hidden}:host-context(tui-root._mobile) .t-content{padding:1rem}.t-form{display:flex;flex-wrap:wrap;align-items:flex-start}.t-input-wrapper{width:100%;margin-bottom:.5rem}.t-expand{width:100%}.t-icon{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}.t-icon_rotated{transform:rotate(180deg)}.t-value{flex:1;background:var(--tui-clear-inverse);padding:.75rem;border-radius:.25rem}.t-mode{width:12.5rem}.t-select{max-width:15rem}.t-resizer{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;box-shadow:0 1.5rem 1rem rgba(0,0,0,.03),0 .75rem .75rem rgba(0,0,0,.04),0 .25rem .375rem rgba(0,0,0,.05);position:relative;width:3.5rem;min-height:inherit;flex-shrink:0;border-left:1px solid var(--tui-base-03);cursor:col-resize;outline:none;background:var(--tui-base-01);color:var(--tui-text-01)}.t-resizer:before,.t-resizer:after{content:\"\";position:absolute;top:.75rem;left:50%;bottom:.75rem;width:1px;background:var(--tui-base-05)}.t-resizer:before{transform:translate(.125rem)}.t-resizer:after{transform:translate(-.1875rem)}:host-context(tui-root._mobile) .t-resizer{display:none}.t-resizer-text{font:var(--tui-font-text-s);position:relative;z-index:1;padding:.75rem;background:var(--tui-base-01)}.wrapper_light .t-resizer-text{background:#3e464e}.t-group,.t-checkbox{margin-left:.75rem}.t-button,.t-form-controls{margin-top:.75rem}@supports ((position: -webkit-sticky) or (position: sticky)){@media screen and (min-height: 37.5rem){:host{position:-webkit-sticky;position:sticky;top:4.625rem;z-index:2}}}\n"], components: [{ type: i1.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { type: i2.TuiSelectComponent, selector: "tui-select", inputs: ["stringify", "identityMatcher", "valueContent"] }, { type: i2.TuiDataListWrapperComponent, selector: "tui-data-list-wrapper:not([labels])", inputs: ["items"] }, { type: i1.TuiTooltipComponent, selector: "tui-tooltip", inputs: ["content", "direction", "appearance", "showDelay", "hideDelay", "describeId"] }, { type: i2.TuiRadioBlockComponent, selector: "tui-radio-block", inputs: ["item", "identityMatcher", "contentAlign", "size", "hideRadio", "pseudoDisabled"] }, { type: i2.TuiCheckboxLabeledComponent, selector: "tui-checkbox-labeled", inputs: ["size"] }, { type: i1.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { type: i1.TuiExpandComponent, selector: "tui-expand", inputs: ["async", "expanded"] }], directives: [{ type: i1.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TuiSelectDirective, selector: "tui-select" }, { type: i1.TuiTextfieldSizeDirective, selector: "[tuiTextfieldSize]", inputs: ["tuiTextfieldSize"] }, { type: i1.TuiTextfieldCleanerDirective, selector: "[tuiTextfieldCleaner]", inputs: ["tuiTextfieldCleaner"] }, { type: i1.TuiHintOptionsDirective, selector: "[tuiHintContent]", inputs: ["tuiHintContent", "tuiHintDirection", "tuiHintAppearance", "tuiHintShowDelay", "tuiHintHideDelay"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { type: i1.TuiGroupDirective, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "adaptive", "collapsed", "rounded", "size"] }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.TuiExpandContentDirective, selector: "[tuiExpandContent]" }, { type: i6.TuiDragDirective, selector: "[tuiDragStart], [tuiDragContinues], [tuiDragEnd]", outputs: ["tuiDragStart", "tuiDragContinues", "tuiDragEnd"] }], pipes: { "json": i4.JsonPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
149
+ __decorate([
150
+ tuiDebounce(200)
151
+ ], TuiDocDemoComponent.prototype, "onResize", null);
112
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiDocDemoComponent, decorators: [{
113
153
  type: Component,
114
154
  args: [{
@@ -128,6 +168,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
128
168
  type: Inject,
129
169
  args: [TUI_IS_MOBILE]
130
170
  }] }, { type: i6.TuiDestroyService, decorators: [{
171
+ type: Self
172
+ }, {
131
173
  type: Inject,
132
174
  args: [TuiDestroyService]
133
175
  }] }, { type: i0.Renderer2, decorators: [{
@@ -163,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
163
205
  type: HostListener,
164
206
  args: [`window:resize`]
165
207
  }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1kb2Mvc3JjL2NvbXBvbmVudHMvZGVtby9kZW1vLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWRvYy9zcmMvY29tcG9uZW50cy9kZW1vL2RlbW8udGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUVaLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQixXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBZ0IsZ0JBQWdCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7O0FBRXJELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBZWhDLE1BQU0sT0FBTyxtQkFBbUI7SUE4QjVCLFlBQ29DLFFBQWlCLEVBQ0wsUUFBMkIsRUFDbkMsUUFBbUIsRUFDbEMsVUFBbUMs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bEIsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLGFBQWE7OzBCQUNwQixNQUFNOzJCQUFDLGtCQUFrQjs0Q0FuQ2IsT0FBTztzQkFEdkIsU0FBUzt1QkFBQyxTQUFTO2dCQUlILE9BQU87c0JBRHZCLFNBQVM7dUJBQUMsU0FBUztnQkFJSCxXQUFXO3NCQUQzQixTQUFTO3VCQUFDLGFBQWE7Z0JBUXhCLE9BQU87c0JBRE4sS0FBSztnQkFJRyxRQUFRO3NCQURoQixZQUFZO3VCQUFDLFdBQVc7Z0JBZ0R6QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNQbGF0Zm9ybUJyb3dzZXIsIExvY2F0aW9ufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFJlbmRlcmVyMixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VXJsU2VyaWFsaXplcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VFVJX0lTX01PQklMRSwgVHVpRGVzdHJveVNlcnZpY2UsIHR1aVB4fSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7VHVpQnJpZ2h0bmVzcywgVHVpTW9kZURpcmVjdGl2ZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3RhcnRXaXRoLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtUVUlfRE9DX0RFTU9fVEVYVFN9IGZyb20gJy4uLy4uL3Rva2Vucy9pMThuJztcblxuY29uc3QgTUlOX0NPTVBPTkVOVF9XSURUSCA9IDEwNDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IGB0dWktZG9jLWRlbW9gLFxuICAgIHRlbXBsYXRlVXJsOiBgLi9kZW1vLnRlbXBsYXRlLmh0bWxgLFxuICAgIHN0eWxlVXJsczogW2AuL2RlbW8uc3R5bGUubGVzc2BdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBUdWlEZXN0cm95U2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVHVpTW9kZURpcmVjdGl2ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aURvY0RlbW9Db21wb25lbnQpLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aURvY0RlbW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIEBWaWV3Q2hpbGQoYGNvbnRlbnRgKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGVudD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZChgd3JhcHBlcmApXG4gICAgcHJpdmF0ZSByZWFkb25seSB3cmFwcGVyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKGByZXNpemVyVGV4dGApXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNpemVyVGV4dD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0Jyb3dzZXI6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBpbml0aWFsWCA9IDA7XG4gICAgcHJpdmF0ZSB3cmFwcGVyV2lkdGggPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gbnVsbDtcblxuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpXG4gICAgcmVhZG9ubHkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB8IG51bGwgPSBudWxsO1xuXG4gICAgdGVzdEZvcm0/OiBGb3JtR3JvdXA7XG4gICAgdXBkYXRlT25WYXJpYW50cyA9IFtgY2hhbmdlYCwgYGJsdXJgLCBgc3VibWl0YF07XG4gICAgdXBkYXRlT246ICdjaGFuZ2UnIHwgJ2JsdXInIHwgJ3N1Ym1pdCcgPSBgY2hhbmdlYDtcbiAgICBleHBhbmRlZCA9IGZhbHNlO1xuICAgIG9wYXF1ZSA9IHRydWU7XG4gICAgbW9kZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBtb2RlOiBUdWlCcmlnaHRuZXNzIHwgbnVsbCA9IG51bGw7XG4gICAgcmVhZG9ubHkgY2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcmVhZG9ubHkgaXRlbXM6IHJlYWRvbmx5IFR1aUJyaWdodG5lc3NbXSA9IFtgb25MaWdodGAsIGBvbkRhcmtgXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFR1aURlc3Ryb3lTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkOiBUdWlEZXN0cm95U2VydmljZSxcbiAgICAgICAgQEluamVjdChSZW5kZXJlcjIpIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgIEBJbmplY3QoTG9jYXRpb24pIGxvY2F0aW9uUmVmOiBMb2NhdGlvbixcbiAgICAgICAgQEluamVjdChVcmxTZXJpYWxpemVyKSB1cmxTZXJpYWxpemVyOiBVcmxTZXJpYWxpemVyLFxuICAgICAgICBASW5qZWN0KFRVSV9ET0NfREVNT19URVhUUykgcmVhZG9ubHkgdGV4dHM6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5pc0Jyb3dzZXIgPSBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKTtcblxuICAgICAgICBjb25zdCBwYXJzZWRNb2RlID0gbG9jYXRpb25SZWYucGF0aCgpLm1hdGNoKC90dWlNb2RlPShvbkRhcmt8b25MaWdodCkvKTtcblxuICAgICAgICBpZiAocGFyc2VkTW9kZSAhPT0gbnVsbCAmJiBwYXJzZWRNb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubW9kZUNvbnRyb2wuc2V0VmFsdWUocGFyc2VkTW9kZVsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1vZGVDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoc3RhcnRXaXRoKHRoaXMubW9kZUNvbnRyb2wudmFsdWUpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKG1vZGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVybFRyZWUgPSB1cmxTZXJpYWxpemVyLnBhcnNlKGxvY2F0aW9uUmVmLnBhdGgoKSk7XG5cbiAgICAgICAgICAgICAgICB1cmxUcmVlLnF1ZXJ5UGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi51cmxUcmVlLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICB0dWlNb2RlOiBtb2RlLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBsb2NhdGlvblJlZi5nbyhTdHJpbmcodXJsVHJlZSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZSQubmV4dCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihgd2luZG93OnJlc2l6ZWApXG4gICAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0UmVzaXplclRleHRDb250ZW50KCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRSZXNpemVyVGV4dENvbnRlbnQoKTtcbiAgICB9XG5cbiAgICBzZXRSZXNpemVyVGV4dENvbnRlbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb250ZW50IHx8ICF0aGlzLnJlc2l6ZXJUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYWRkaW5nTGVmdCA9IHRoaXMuaXNCcm93c2VyXG4gICAgICAgICAgICA/IGdldENvbXB1dGVkU3R5bGUodGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQpLnBhZGRpbmdMZWZ0XG4gICAgICAgICAgICA6IGAwYDtcbiAgICAgICAgY29uc3Qge29mZnNldFdpZHRofSA9IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIHRoaXMucmVzaXplclRleHQubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCA9IFN0cmluZyhcbiAgICAgICAgICAgIG9mZnNldFdpZHRoIC0gcGFyc2VJbnQocGFkZGluZ0xlZnQgfHwgYDBgLCAxMCkgKiAyLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uRHJhZ1N0YXJ0KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbFggPSBldmVudC5jbGllbnRYO1xuICAgICAgICB0aGlzLndyYXBwZXJXaWR0aCA9IHRoaXMud3JhcHBlciA/IHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDogMDtcbiAgICB9XG5cbiAgICBvbkRyYWdDb250aW51ZXMoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGVsdGFYID0gdGhpcy5pbml0aWFsWCAtIGV2ZW50LmNsaWVudFg7XG5cbiAgICAgICAgdGhpcy5yZXNpemVDb250ZW50KGRlbHRhWCk7XG4gICAgICAgIHRoaXMuc2V0UmVzaXplclRleHRDb250ZW50KCk7XG4gICAgfVxuXG4gICAgb25EcmFnRW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyYXBwZXJXaWR0aCA9IHRoaXMud3JhcHBlciA/IHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDogMDtcbiAgICB9XG5cbiAgICB0b2dnbGVEZXRhaWxzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgfVxuXG4gICAgdXBkYXRlT25DaGFuZ2UodXBkYXRlT246ICdjaGFuZ2UnIHwgJ2JsdXInIHwgJ3N1Ym1pdCcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVPbiA9IHVwZGF0ZU9uO1xuICAgICAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUZvcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHtjb250cm9sLCB1cGRhdGVPbn0gPSB0aGlzO1xuXG4gICAgICAgIGlmICghY29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50ZXN0Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe3Rlc3RWYWx1ZTogY29udHJvbH0sIHt1cGRhdGVPbn0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzaXplQ29udGVudChkZWx0YTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy53cmFwcGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBgd2lkdGhgLFxuICAgICAgICAgICAgdHVpUHgoTWF0aC5tYXgodGhpcy53cmFwcGVyV2lkdGggLSBkZWx0YSwgTUlOX0NPTVBPTkVOVF9XSURUSCkpLFxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cInQtYmctdG9nZ2xlXCJcbiAgICBbdHVpTW9kZV09XCJudWxsXCJcbj5cbiAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXA+XG4gICAgICAgIHt7IHRleHRzWzBdIH19XG4gICAgICAgIDxhXG4gICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICB0dWlNb2RlPVwib25EYXJrXCJcbiAgICAgICAgICAgIHJvdXRlckxpbms9XCIvZGlyZWN0aXZlcy9tb2RlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGNvZGU+dHVpTW9kZTwvY29kZT5cbiAgICAgICAgPC9hPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9iaWxlOyBlbHNlIGRlc2t0b3BcIj5cbiAgICAgICAgPHR1aS1zZWxlY3RcbiAgICAgICAgICAgIHR1aVRleHRmaWVsZFNpemU9XCJzXCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1tb2RlXCJcbiAgICAgICAgICAgIFt0dWlUZXh0ZmllbGRDbGVhbmVyXT1cInRydWVcIlxuICAgICAgICAgICAgW3R1aUhpbnRDb250ZW50XT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm1vZGVDb250cm9sXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgdHVpTW9kZVxuICAgICAgICAgICAgPHR1aS1kYXRhLWxpc3Qtd3JhcHBlclxuICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICA+PC90dWktZGF0YS1saXN0LXdyYXBwZXI+XG4gICAgICAgIDwvdHVpLXNlbGVjdD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2Rlc2t0b3A+XG4gICAgICAgIHR1aU1vZGU6XG4gICAgICAgIDx0dWktdG9vbHRpcFxuICAgICAgICAgICAgZGVzY3JpYmVJZD1cImZvcm1cIlxuICAgICAgICAgICAgW2NvbnRlbnRdPVwidG9vbHRpcFwiXG4gICAgICAgID48L3R1aS10b29sdGlwPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICB0dWlHcm91cFxuICAgICAgICAgICAgY2xhc3M9XCJ0LWdyb3VwXCJcbiAgICAgICAgICAgIFtjb2xsYXBzZWRdPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx0dWktcmFkaW8tYmxvY2tcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgbmF0aXZlSWQ9XCJmb3JtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInR1aS1ncm91cF9fYXV0by13aWR0aC1pdGVtXCJcbiAgICAgICAgICAgICAgICBbaXRlbV09XCJudWxsXCJcbiAgICAgICAgICAgICAgICBbaGlkZVJhZGlvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJtb2RlQ29udHJvbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgPC90dWktcmFkaW8tYmxvY2s+XG4gICAgICAgICAgICA8dHVpLXJhZGlvLWJsb2NrXG4gICAgICAgICAgICAgICAgaXRlbT1cIm9uRGFya1wiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIG5hdGl2ZUlkPVwiZm9ybVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0dWktZ3JvdXBfX2F1dG8td2lkdGgtaXRlbVwiXG4gICAgICAgICAgICAgICAgW2hpZGVSYWRpb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibW9kZUNvbnRyb2xcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIG9uRGFya1xuICAgICAgICAgICAgPC90dWktcmFkaW8tYmxvY2s+XG4gICAgICAgICAgICA8dHVpLXJhZGlvLWJsb2NrXG4gICAgICAgICAgICAgICAgaXRlbT1cIm9uTGlnaHRcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICBuYXRpdmVJZD1cImZvcm1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHVpLWdyb3VwX19hdXRvLXdpZHRoLWl0ZW1cIlxuICAgICAgICAgICAgICAgIFtoaWRlUmFkaW9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm1vZGVDb250cm9sXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBvbkxpZ2h0XG4gICAgICAgICAgICA8L3R1aS1yYWRpby1ibG9jaz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8dHVpLWNoZWNrYm94LWxhYmVsZWRcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICBjbGFzcz1cInQtY2hlY2tib3hcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cIm9wYXF1ZVwiXG4gICAgPlxuICAgICAgICB7eyB0ZXh0c1sxXSB9fVxuICAgIDwvdHVpLWNoZWNrYm94LWxhYmVsZWQ+XG48L2Rpdj5cbjxkaXZcbiAgICAjd3JhcHBlclxuICAgIGNsYXNzPVwidC13cmFwcGVyXCJcbiAgICBbY2xhc3MudC13cmFwcGVyX2RhcmtdPVwibW9kZUNvbnRyb2wudmFsdWUgPT09ICdvbkRhcmsnXCJcbiAgICBbY2xhc3MudC13cmFwcGVyX2dyYXldPVwibW9kZUNvbnRyb2wudmFsdWUgPT09ICdvbkxpZ2h0J1wiXG4gICAgW2NsYXNzLnQtd3JhcHBlcl90cmFuc3BhcmVudF09XCIhb3BhcXVlXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgICNjb250ZW50XG4gICAgICAgIGlkPVwiZGVtb0NvbnRlbnRcIlxuICAgICAgICBjbGFzcz1cInQtY29udGVudFwiXG4gICAgPlxuICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgKm5nSWY9XCJ0ZXN0Rm9ybVwiXG4gICAgICAgICAgICBjbGFzcz1cInQtZm9ybVwiXG4gICAgICAgICAgICBbZm9ybUdyb3VwXT1cInRlc3RGb3JtXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInQtaW5wdXQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbaWNvblJpZ2h0XT1cImljb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWxzKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHRleHRzWzJdIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvbj5cbiAgICAgICAgICAgICAgICA8dHVpLXN2Z1xuICAgICAgICAgICAgICAgICAgICBzcmM9XCJ0dWlJY29uQ2hldnJvbkRvd25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy50LWljb25fcm90YXRlZF09XCJleHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8dHVpLWV4cGFuZFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1leHBhbmRcIlxuICAgICAgICAgICAgICAgIFtleHBhbmRlZF09XCJleHBhbmRlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHR1aUV4cGFuZENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJ0LXZhbHVlXCI+Rm9ybSBkYXRhOiB7eyB0ZXN0Rm9ybS52YWx1ZSB8IGpzb24gfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1mb3JtLWNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlUZXh0ZmllbGRTaXplPVwic1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidXBkYXRlT25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZU9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZU9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS1kYXRhLWxpc3Qtd3JhcHBlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInVwZGF0ZU9uVmFyaWFudHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3R1aS1kYXRhLWxpc3Qtd3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHVpLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInR1aS1ncm91cF9fYXV0by13aWR0aC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNldFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHVpLWdyb3VwX19hdXRvLXdpZHRoLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1Ym1pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3R1aS1leHBhbmQ+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwidC1yZXNpemVyXCJcbiAgICAgICAgKHR1aURyYWdTdGFydCk9XCJvbkRyYWdTdGFydCgkZXZlbnQpXCJcbiAgICAgICAgKHR1aURyYWdDb250aW51ZXMpPVwib25EcmFnQ29udGludWVzKCRldmVudClcIlxuICAgICAgICAodHVpRHJhZ0VuZCk9XCJvbkRyYWdFbmQoKVwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgI3Jlc2l6ZXJUZXh0XG4gICAgICAgICAgICBjbGFzcz1cInQtcmVzaXplci10ZXh0XCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1kb2Mvc3JjL2NvbXBvbmVudHMvZGVtby9kZW1vLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWRvYy9zcmMvY29tcG9uZW50cy9kZW1vL2RlbW8udGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFFWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBZ0IsZ0JBQWdCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7O0FBRXJELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBZWhDLE1BQU0sT0FBTyxtQkFBbUI7SUE4QjVCLFlBQ29DLFFBQWlCLEVBQ0csUUFBMkIsRUFD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cm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFJlbmRlcmVyMixcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtVcmxTZXJpYWxpemVyLCBVcmxUcmVlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUVUlfSVNfTU9CSUxFLCB0dWlEZWJvdW5jZSwgVHVpRGVzdHJveVNlcnZpY2UsIHR1aVB4fSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7VHVpQnJpZ2h0bmVzcywgVHVpTW9kZURpcmVjdGl2ZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3RhcnRXaXRoLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtUVUlfRE9DX0RFTU9fVEVYVFN9IGZyb20gJy4uLy4uL3Rva2Vucy9pMThuJztcblxuY29uc3QgTUlOX0NPTVBPTkVOVF9XSURUSCA9IDEwNDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IGB0dWktZG9jLWRlbW9gLFxuICAgIHRlbXBsYXRlVXJsOiBgLi9kZW1vLnRlbXBsYXRlLmh0bWxgLFxuICAgIHN0eWxlVXJsczogW2AuL2RlbW8uc3R5bGUubGVzc2BdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBUdWlEZXN0cm95U2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVHVpTW9kZURpcmVjdGl2ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aURvY0RlbW9Db21wb25lbnQpLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aURvY0RlbW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIEBWaWV3Q2hpbGQoYGNvbnRlbnRgKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGVudD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZChgd3JhcHBlcmApXG4gICAgcHJpdmF0ZSByZWFkb25seSB3cmFwcGVyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKGByZXNpemVyVGV4dGApXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNpemVyVGV4dD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0Jyb3dzZXI6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBpbml0aWFsWCA9IDA7XG4gICAgcHJpdmF0ZSB3cmFwcGVyV2lkdGggPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gbnVsbDtcblxuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpXG4gICAgcmVhZG9ubHkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB8IG51bGwgPSBudWxsO1xuXG4gICAgdGVzdEZvcm0/OiBGb3JtR3JvdXA7XG4gICAgdXBkYXRlT25WYXJpYW50cyA9IFtgY2hhbmdlYCwgYGJsdXJgLCBgc3VibWl0YF07XG4gICAgdXBkYXRlT246ICdibHVyJyB8ICdjaGFuZ2UnIHwgJ3N1Ym1pdCcgPSBgY2hhbmdlYDtcbiAgICBleHBhbmRlZCA9IGZhbHNlO1xuICAgIG9wYXF1ZSA9IHRydWU7XG4gICAgbW9kZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBtb2RlOiBUdWlCcmlnaHRuZXNzIHwgbnVsbCA9IG51bGw7XG4gICAgcmVhZG9ubHkgY2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcmVhZG9ubHkgaXRlbXM6IHJlYWRvbmx5IFR1aUJyaWdodG5lc3NbXSA9IFtgb25MaWdodGAsIGBvbkRhcmtgXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBAU2VsZigpIEBJbmplY3QoVHVpRGVzdHJveVNlcnZpY2UpIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQ6IFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFJlbmRlcmVyMikgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgQEluamVjdChMb2NhdGlvbikgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvblJlZjogTG9jYXRpb24sXG4gICAgICAgIEBJbmplY3QoVXJsU2VyaWFsaXplcikgcHJpdmF0ZSByZWFkb25seSB1cmxTZXJpYWxpemVyOiBVcmxTZXJpYWxpemVyLFxuICAgICAgICBASW5qZWN0KFRVSV9ET0NfREVNT19URVhUUykgcmVhZG9ubHkgdGV4dHM6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5pc0Jyb3dzZXIgPSBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKTtcblxuICAgICAgICBjb25zdCBwYXJzZWRNb2RlID0gbG9jYXRpb25SZWYucGF0aCgpLm1hdGNoKC90dWlNb2RlPShvbkRhcmt8b25MaWdodCkvKTtcblxuICAgICAgICBpZiAocGFyc2VkTW9kZSAhPT0gbnVsbCAmJiBwYXJzZWRNb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubW9kZUNvbnRyb2wuc2V0VmFsdWUocGFyc2VkTW9kZVsxXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAdHVpRGVib3VuY2UoMjAwKVxuICAgIEBIb3N0TGlzdGVuZXIoYHdpbmRvdzpyZXNpemVgKVxuICAgIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFJlc2l6ZXJUZXh0Q29udGVudCgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9kZUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShzdGFydFdpdGgodGhpcy5tb2RlQ29udHJvbC52YWx1ZSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUobW9kZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVVcmwobW9kZSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyV2lkdGggPVxuICAgICAgICAgICAgICAgICAgICBwYXJzZUludCh0aGlzLmdldFVybFRyZWUoKS5xdWVyeVBhcmFtcy5zYW5kYm94V2lkdGgsIDEwKSArXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGFkZGluZ09mV3JhcHBlcigpICtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRSZXNpemVCdXR0b25XaWR0aCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4od3JhcHBlcldpZHRoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXJXaWR0aCA9IHdyYXBwZXJXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRXaWR0aFdyYXBwZXIodHVpUHgod3JhcHBlcldpZHRoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRSZXNpemVyVGV4dENvbnRlbnQoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2UkLm5leHQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFJlc2l6ZXJUZXh0Q29udGVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnQgfHwgIXRoaXMucmVzaXplclRleHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzaXplclRleHQubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCA9IChcbiAgICAgICAgICAgIHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gdGhpcy5nZXRQYWRkaW5nT2ZXcmFwcGVyKClcbiAgICAgICAgKS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIG9uRHJhZ1N0YXJ0KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbFggPSBldmVudC5jbGllbnRYO1xuICAgICAgICB0aGlzLndyYXBwZXJXaWR0aCA9IHRoaXMud3JhcHBlciA/IHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDogMDtcbiAgICB9XG5cbiAgICBvbkRyYWdDb250aW51ZXMoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGVsdGFYID0gdGhpcy5pbml0aWFsWCAtIGV2ZW50LmNsaWVudFg7XG5cbiAgICAgICAgdGhpcy5yZXNpemVDb250ZW50KGRlbHRhWCk7XG4gICAgICAgIHRoaXMuc2V0UmVzaXplclRleHRDb250ZW50KCk7XG4gICAgfVxuXG4gICAgb25EcmFnRW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyYXBwZXJXaWR0aCA9IHRoaXMud3JhcHBlciA/IHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDogMDtcbiAgICAgICAgdGhpcy51cGRhdGVTYW5kYm94V2lkdGgoKTtcbiAgICB9XG5cbiAgICB0b2dnbGVEZXRhaWxzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgfVxuXG4gICAgdXBkYXRlT25DaGFuZ2UodXBkYXRlT246ICdibHVyJyB8ICdjaGFuZ2UnIHwgJ3N1Ym1pdCcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVPbiA9IHVwZGF0ZU9uO1xuICAgICAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUZvcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHtjb250cm9sLCB1cGRhdGVPbn0gPSB0aGlzO1xuXG4gICAgICAgIGlmICghY29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50ZXN0Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe3Rlc3RWYWx1ZTogY29udHJvbH0sIHt1cGRhdGVPbn0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzaXplQ29udGVudChkZWx0YTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0V2lkdGhXcmFwcGVyKFxuICAgICAgICAgICAgdHVpUHgoTWF0aC5tYXgodGhpcy53cmFwcGVyV2lkdGggLSBkZWx0YSwgTUlOX0NPTVBPTkVOVF9XSURUSCkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0V2lkdGhXcmFwcGVyKHdpZHRoOiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLndyYXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQsIGB3aWR0aGAsIHdpZHRoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVVybChtb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXJsVHJlZSA9IHRoaXMuZ2V0VXJsVHJlZSgpO1xuICAgICAgICBjb25zdCBtb2RlUGFyYW0gPSBtb2RlID8/IHVybFRyZWUucXVlcnlQYXJhbXMudHVpTW9kZSA/IHt0dWlNb2RlOiBtb2RlfSA6IHt9O1xuICAgICAgICBjb25zdCBzYW5kYm94V2lkdGggPSBwYXJzZUludCh1cmxUcmVlLnF1ZXJ5UGFyYW1zLnNhbmRib3hXaWR0aCwgMTApO1xuICAgICAgICBjb25zdCByZXNpemVQYXJhbSA9XG4gICAgICAgICAgICAhTnVtYmVyLmlzTmFOKHNhbmRib3hXaWR0aCkgJiYgTUlOX0NPTVBPTkVOVF9XSURUSCA+IHNhbmRib3hXaWR0aFxuICAgICAgICAgICAgICAgID8ge3NhbmRib3hXaWR0aH1cbiAgICAgICAgICAgICAgICA6IHt9O1xuXG4gICAgICAgIHVybFRyZWUucXVlcnlQYXJhbXMgPSB7XG4gICAgICAgICAgICAuLi51cmxUcmVlLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgLi4ubW9kZVBhcmFtLFxuICAgICAgICAgICAgLi4ucmVzaXplUGFyYW0sXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5sb2NhdGlvblJlZi5nbyhTdHJpbmcodXJsVHJlZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VXJsVHJlZSgpOiBVcmxUcmVlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXJsU2VyaWFsaXplci5wYXJzZSh0aGlzLmxvY2F0aW9uUmVmLnBhdGgoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYWRkaW5nT2ZXcmFwcGVyKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHBhZGRpbmdMZWZ0ID1cbiAgICAgICAgICAgIHRoaXMuaXNCcm93c2VyICYmIHRoaXMuY29udGVudFxuICAgICAgICAgICAgICAgID8gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudCkucGFkZGluZ0xlZnRcbiAgICAgICAgICAgICAgICA6IGAwYDtcblxuICAgICAgICByZXR1cm4gcGFyc2VJbnQocGFkZGluZ0xlZnQgfHwgYDBgLCAxMCkgKiAyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmVzaXplQnV0dG9uV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzaXplclRleHQ/Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVNhbmRib3hXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXJsVHJlZSA9IHRoaXMuZ2V0VXJsVHJlZSgpO1xuXG4gICAgICAgIHVybFRyZWUucXVlcnlQYXJhbXMuc2FuZGJveFdpZHRoID0gcGFyc2VJbnQoXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZXJUZXh0Py5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50ID8/IGAwYCxcbiAgICAgICAgICAgIDEwLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMubG9jYXRpb25SZWYuZ28oU3RyaW5nKHVybFRyZWUpKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJ0LWJnLXRvZ2dsZVwiXG4gICAgW3R1aU1vZGVdPVwibnVsbFwiXG4+XG4gICAgPG5nLXRlbXBsYXRlICN0b29sdGlwPlxuICAgICAgICB7eyB0ZXh0c1swXSB9fVxuICAgICAgICA8YVxuICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgdHVpTW9kZT1cIm9uRGFya1wiXG4gICAgICAgICAgICByb3V0ZXJMaW5rPVwiL2RpcmVjdGl2ZXMvbW9kZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxjb2RlPnR1aU1vZGU8L2NvZGU+XG4gICAgICAgIDwvYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc01vYmlsZTsgZWxzZSBkZXNrdG9wXCI+XG4gICAgICAgIDx0dWktc2VsZWN0XG4gICAgICAgICAgICB0dWlUZXh0ZmllbGRTaXplPVwic1wiXG4gICAgICAgICAgICBjbGFzcz1cInQtbW9kZVwiXG4gICAgICAgICAgICBbdHVpVGV4dGZpZWxkQ2xlYW5lcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0dWlIaW50Q29udGVudF09XCJ0b29sdGlwXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJtb2RlQ29udHJvbFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHR1aU1vZGVcbiAgICAgICAgICAgIDx0dWktZGF0YS1saXN0LXdyYXBwZXJcbiAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbXNcIlxuICAgICAgICAgICAgPjwvdHVpLWRhdGEtbGlzdC13cmFwcGVyPlxuICAgICAgICA8L3R1aS1zZWxlY3Q+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZXNrdG9wPlxuICAgICAgICB0dWlNb2RlOlxuICAgICAgICA8dHVpLXRvb2x0aXBcbiAgICAgICAgICAgIGRlc2NyaWJlSWQ9XCJmb3JtXCJcbiAgICAgICAgICAgIFtjb250ZW50XT1cInRvb2x0aXBcIlxuICAgICAgICA+PC90dWktdG9vbHRpcD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgdHVpR3JvdXBcbiAgICAgICAgICAgIGNsYXNzPVwidC1ncm91cFwiXG4gICAgICAgICAgICBbY29sbGFwc2VkXT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8dHVpLXJhZGlvLWJsb2NrXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgIG5hdGl2ZUlkPVwiZm9ybVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0dWktZ3JvdXBfX2F1dG8td2lkdGgtaXRlbVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1dPVwibnVsbFwiXG4gICAgICAgICAgICAgICAgW2hpZGVSYWRpb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibW9kZUNvbnRyb2xcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgIDwvdHVpLXJhZGlvLWJsb2NrPlxuICAgICAgICAgICAgPHR1aS1yYWRpby1ibG9ja1xuICAgICAgICAgICAgICAgIGl0ZW09XCJvbkRhcmtcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICBuYXRpdmVJZD1cImZvcm1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHVpLWdyb3VwX19hdXRvLXdpZHRoLWl0ZW1cIlxuICAgICAgICAgICAgICAgIFtoaWRlUmFkaW9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm1vZGVDb250cm9sXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBvbkRhcmtcbiAgICAgICAgICAgIDwvdHVpLXJhZGlvLWJsb2NrPlxuICAgICAgICAgICAgPHR1aS1yYWRpby1ibG9ja1xuICAgICAgICAgICAgICAgIGl0ZW09XCJvbkxpZ2h0XCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgbmF0aXZlSWQ9XCJmb3JtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInR1aS1ncm91cF9fYXV0by13aWR0aC1pdGVtXCJcbiAgICAgICAgICAgICAgICBbaGlkZVJhZGlvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJtb2RlQ29udHJvbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgb25MaWdodFxuICAgICAgICAgICAgPC90dWktcmFkaW8tYmxvY2s+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPHR1aS1jaGVja2JveC1sYWJlbGVkXG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgY2xhc3M9XCJ0LWNoZWNrYm94XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJvcGFxdWVcIlxuICAgID5cbiAgICAgICAge3sgdGV4dHNbMV0gfX1cbiAgICA8L3R1aS1jaGVja2JveC1sYWJlbGVkPlxuPC9kaXY+XG48ZGl2XG4gICAgI3dyYXBwZXJcbiAgICBjbGFzcz1cInQtd3JhcHBlclwiXG4gICAgW2NsYXNzLnQtd3JhcHBlcl9kYXJrXT1cIm1vZGVDb250cm9sLnZhbHVlID09PSAnb25EYXJrJ1wiXG4gICAgW2NsYXNzLnQtd3JhcHBlcl9ncmF5XT1cIm1vZGVDb250cm9sLnZhbHVlID09PSAnb25MaWdodCdcIlxuICAgIFtjbGFzcy50LXdyYXBwZXJfdHJhbnNwYXJlbnRdPVwiIW9wYXF1ZVwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjY29udGVudFxuICAgICAgICBpZD1cImRlbW9Db250ZW50XCJcbiAgICAgICAgY2xhc3M9XCJ0LWNvbnRlbnRcIlxuICAgID5cbiAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICpuZ0lmPVwidGVzdEZvcm1cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWZvcm1cIlxuICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJ0ZXN0Rm9ybVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0LWlucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2ljb25SaWdodF09XCJpY29uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlscygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyB0ZXh0c1syXSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ljb24+XG4gICAgICAgICAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwidHVpSWNvbkNoZXZyb25Eb3duXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWljb25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1pY29uX3JvdGF0ZWRdPVwiZXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgID48L3R1aS1zdmc+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPHR1aS1leHBhbmRcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtZXhwYW5kXCJcbiAgICAgICAgICAgICAgICBbZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB0dWlFeHBhbmRDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPVwidC12YWx1ZVwiPkZvcm0gZGF0YToge3sgdGVzdEZvcm0udmFsdWUgfCBqc29uIH19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtZm9ybS1jb250cm9sc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkU2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInVwZGF0ZU9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVPbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVPblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktZGF0YS1saXN0LXdyYXBwZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJ1cGRhdGVPblZhcmlhbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90dWktZGF0YS1saXN0LXdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3R1aS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJlc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0dWktZ3JvdXBfX2F1dG8td2lkdGgtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInR1aS1ncm91cF9fYXV0by13aWR0aC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJtaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90dWktZXhwYW5kPlxuICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBjbGFzcz1cInQtcmVzaXplclwiXG4gICAgICAgICh0dWlEcmFnU3RhcnQpPVwib25EcmFnU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICh0dWlEcmFnQ29udGludWVzKT1cIm9uRHJhZ0NvbnRpbnVlcygkZXZlbnQpXCJcbiAgICAgICAgKHR1aURyYWdFbmQpPVwib25EcmFnRW5kKClcIlxuICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICNyZXNpemVyVGV4dFxuICAgICAgICAgICAgY2xhc3M9XCJ0LXJlc2l6ZXItdGV4dFwiXG4gICAgICAgID48L3NwYW4+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -115,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
115
115
  }], documentationPropertyValueChange: [{
116
116
  type: Output
117
117
  }] } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRhdGlvbi1wcm9wZXJ0eS1jb25uZWN0b3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tZG9jL3NyYy9jb21wb25lbnRzL2RvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi1wcm9wZXJ0eS1jb25uZWN0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGNBQWMsRUFBVSxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsZUFBZSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU5QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFFeEQsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFJOUIsNENBQTRDO0FBSzVDLE1BQU0sT0FBTyw2Q0FBNkM7SUE0QnRELFlBQ2tDLFFBQThDLEVBQ3pDLFdBQXFCLEVBQ2YsY0FBOEIsRUFDL0IsYUFBNEI7UUFIdEMsYUFBUSxHQUFSLFFBQVEsQ0FBc0M7UUFDekMsZ0JBQVcsR0FBWCxXQUFXLENBQVU7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUE1QnhFLDhCQUF5QixHQUFHLEVBQUUsQ0FBQztRQUcvQiw4QkFBeUIsR0FBOEIsSUFBSSxDQUFDO1FBRzVELDhCQUF5QixHQUFHLEVBQUUsQ0FBQztRQU0vQixvQ0FBK0IsR0FBRyxLQUFLLENBQUM7UUFHeEMsZ0NBQTJCLEdBQXdCLElBQUksQ0FBQztRQUcvQyxxQ0FBZ0Ms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QUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixHQUFHLE1BQU0sQ0FBQztRQUV6RCxJQUFJLENBQUMsV0FBVyxtQ0FDVCxJQUFJLENBQUMsV0FBVyxLQUNuQixDQUFDLFFBQVEsQ0FBQyxFQUFFLGFBQWEsR0FDNUIsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OzJJQWhIUSw2Q0FBNkMsa0JBNkIxQyxXQUFXLGFBQ1gsUUFBUSxhQUNSLGNBQWMsYUFDZCxhQUFhOytIQWhDaEIsNkNBQTZDOzRGQUE3Qyw2Q0FBNkM7a0JBSnpELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdDQUF3QztvQkFDbEQsUUFBUSxFQUFFLHVCQUF1QjtpQkFDcEM7OzBCQThCUSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsYUFBYTs0Q0E1QnpCLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFJTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixLQUFLO2dCQUlOLDBCQUEwQjtzQkFEekIsS0FBSztnQkFJTiwrQkFBK0I7c0JBRDlCLEtBQUs7Z0JBSU4sMkJBQTJCO3NCQUQxQixLQUFLO2dCQUlHLGdDQUFnQztzQkFEeEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgVXJsU2VyaWFsaXplcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHt0dWlDb2VyY2VWYWx1ZX0gZnJvbSAnLi4vLi4vdXRpbHMvY29lcmNlLXZhbHVlJztcblxuY29uc3QgU0VSSUFMSVpFRF9TVUZGSVggPSBgJGA7XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50YXRpb25Qcm9wZXJ0eVR5cGUgPSAnaW5wdXQnIHwgJ291dHB1dCcgfCAnaW5wdXQtb3V0cHV0JyB8IG51bGw7XG5cbi8vIEBiYWQgVE9ETzogcmVmYWN0b3Igb3V0cHV0IGFuZCB2YWx1ZSBzeW5jXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYG5nLXRlbXBsYXRlW2RvY3VtZW50YXRpb25Qcm9wZXJ0eU5hbWVdYCxcbiAgICBleHBvcnRBczogYGRvY3VtZW50YXRpb25Qcm9wZXJ0eWAsXG59KVxuZXhwb3J0IGNsYXNzIFR1aURvY0RvY3VtZW50YXRpb25Qcm9wZXJ0eUNvbm5lY3RvckRpcmVjdGl2ZTxUPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgICBASW5wdXQoKVxuICAgIGRvY3VtZW50YXRpb25Qcm9wZXJ0eU5hbWUgPSBgYDtcblxuICAgIEBJbnB1dCgpXG4gICAgZG9jdW1lbnRhdGlvblByb3BlcnR5TW9kZTogRG9jdW1lbnRhdGlvblByb3BlcnR5VHlwZSA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIGRvY3VtZW50YXRpb25Qcm9wZXJ0eVR5cGUgPSBgYDtcblxuICAgIEBJbnB1dCgpXG4gICAgZG9jdW1lbnRhdGlvblByb3BlcnR5VmFsdWUhOiBUO1xuXG4gICAgQElucHV0KClcbiAgICBkb2N1bWVudGF0aW9uUHJvcGVydHlEZXByZWNhdGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGRvY3VtZW50YXRpb25Qcm9wZXJ0eVZhbHVlczogcmVhZG9ubHkgVFtdIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBkb2N1bWVudGF0aW9uUHJvcGVydHlWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIHJlYWRvbmx5IGNoYW5nZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHJlYWRvbmx5IGVtaXRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUZW1wbGF0ZVJlZikgcmVhZG9ubHkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PixcbiAgICAgICAgQEluamVjdChMb2NhdGlvbikgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvblJlZjogTG9jYXRpb24sXG4gICAgICAgIEBJbmplY3QoQWN0aXZhdGVkUm91dGUpIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBASW5qZWN0KFVybFNlcmlhbGl6ZXIpIHByaXZhdGUgcmVhZG9ubHkgdXJsU2VyaWFsaXplcjogVXJsU2VyaWFsaXplcixcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXJzZVBhcmFtcyh0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zKTtcbiAgICB9XG5cbiAgICBnZXQgYXR0ck5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmRvY3VtZW50YXRpb25Qcm9wZXJ0eU1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgYGlucHV0YDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFske3RoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5TmFtZX1dYDtcbiAgICAgICAgICAgIGNhc2UgYG91dHB1dGA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAoJHt0aGlzLmRvY3VtZW50YXRpb25Qcm9wZXJ0eU5hbWV9KWA7XG4gICAgICAgICAgICBjYXNlIGBpbnB1dC1vdXRwdXRgOlxuICAgICAgICAgICAgICAgIHJldHVybiBgWygke3RoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5TmFtZX0pXWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50YXRpb25Qcm9wZXJ0eU5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaGFzSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5VmFsdWVzO1xuICAgIH1cblxuICAgIGdldCBzaG91bGRTaG93VmFsdWVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudGF0aW9uUHJvcGVydHlNb2RlICE9PSBgb3V0cHV0YDtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvY3VtZW50YXRpb25Qcm9wZXJ0eVZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5VmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0UXVlcnlQYXJhbSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZW1pdEV2ZW50KGV2ZW50OiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIC8vIEZvciBtb3JlIGNvbnZlbmllbnQgZGVidWdnaW5nXG4gICAgICAgIGNvbnNvbGUuaW5mbyh0aGlzLmF0dHJOYW1lLCBldmVudCk7XG5cbiAgICAgICAgdGhpcy5lbWl0cyQubmV4dCh0aGlzLmVtaXRzJC52YWx1ZSArIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VQYXJhbXMocGFyYW1zOiBQYXJhbXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJvcGVydHlWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gcGFyYW1zW3RoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5TmFtZV07XG4gICAgICAgIGNvbnN0IHByb3BlcnR5VmFsdWVXaXRoU3VmZml4OiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgICAgICAgcGFyYW1zW2Ake3RoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5TmFtZX0ke1NFUklBTElaRURfU1VGRklYfWBdO1xuXG4gICAgICAgIGlmICghcHJvcGVydHlWYWx1ZSAmJiAhcHJvcGVydHlWYWx1ZVdpdGhTdWZmaXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgICAgICEhcHJvcGVydHlWYWx1ZVdpdGhTdWZmaXggJiYgdGhpcy5kb2N1bWVudGF0aW9uUHJvcGVydHlWYWx1ZXNcbiAgICAgICAgICAgICAgICA/IHRoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5VmFsdWVzW3Byb3BlcnR5VmFsdWVXaXRoU3VmZml4IGFzIG51bWJlcl1cbiAgICAgICAgICAgICAgICA6IHR1aUNvZXJjZVZhbHVlKHByb3BlcnR5VmFsdWUpO1xuXG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZSh2YWx1ZSBhcyBUKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFF1ZXJ5UGFyYW0odmFsdWU6IFQgfCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0cmVlID0gdGhpcy51cmxTZXJpYWxpemVyLnBhcnNlKHRoaXMubG9jYXRpb25SZWYucGF0aCgpKTtcblxuICAgICAgICBjb25zdCBpc1ZhbHVlQXZhaWxhYmxlQnlLZXkgPSB2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdDtcbiAgICAgICAgY29uc3QgY29tcHV0ZWRWYWx1ZSA9XG4gICAgICAgICAgICBpc1ZhbHVlQXZhaWxhYmxlQnlLZXkgJiYgdGhpcy5kb2N1bWVudGF0aW9uUHJvcGVydHlWYWx1ZXNcbiAgICAgICAgICAgICAgICA/IHRoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5VmFsdWVzLmluZGV4T2YodmFsdWUgYXMgVClcbiAgICAgICAgICAgICAgICA6IHZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHN1ZmZpeCA9IGlzVmFsdWVBdmFpbGFibGVCeUtleSA/IFNFUklBTElaRURfU1VGRklYIDogYGA7XG4gICAgICAgIGNvbnN0IHByb3BOYW1lID0gdGhpcy5kb2N1bWVudGF0aW9uUHJvcGVydHlOYW1lICsgc3VmZml4O1xuXG4gICAgICAgIHRyZWUucXVlcnlQYXJhbXMgPSB7XG4gICAgICAgICAgICAuLi50cmVlLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgW3Byb3BOYW1lXTogY29tcHV0ZWRWYWx1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmxvY2F0aW9uUmVmLmdvKFN0cmluZyh0cmVlKSk7XG4gICAgfVxufVxuIl19
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRhdGlvbi1wcm9wZXJ0eS1jb25uZWN0b3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tZG9jL3NyYy9jb21wb25lbnRzL2RvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi1wcm9wZXJ0eS1jb25uZWN0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGNBQWMsRUFBVSxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsZUFBZSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU5QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFFeEQsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFJOUIsNENBQTRDO0FBSzVDLE1BQU0sT0FBTyw2Q0FBNkM7SUE0QnRELFlBQ2tDLFFBQThDLEVBQ3pDLFdBQXFCLEVBQ2YsY0FBOEIsRUFDL0IsYUFBNEI7UUFIdEMsYUFBUSxHQUFSLFFBQVEsQ0FBc0M7UUFDekMsZ0JBQVcsR0FBWCxXQUFXLENBQVU7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUE1QnhFLDhCQUF5QixHQUFHLEVBQUUsQ0FBQztRQUcvQiw4QkFBeUIsR0FBOEIsSUFBSSxDQUFDO1FBRzVELDhCQUF5QixHQUFHLEVBQUUsQ0FBQztRQU0vQixvQ0FBK0IsR0FBRyxLQUFLLENBQUM7UUFHeEMsZ0NBQTJCLEdBQXdCLElBQUksQ0FBQztRQUcvQyxxQ0FBZ0Ms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QUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixHQUFHLE1BQU0sQ0FBQztRQUV6RCxJQUFJLENBQUMsV0FBVyxtQ0FDVCxJQUFJLENBQUMsV0FBVyxLQUNuQixDQUFDLFFBQVEsQ0FBQyxFQUFFLGFBQWEsR0FDNUIsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OzJJQWhIUSw2Q0FBNkMsa0JBNkIxQyxXQUFXLGFBQ1gsUUFBUSxhQUNSLGNBQWMsYUFDZCxhQUFhOytIQWhDaEIsNkNBQTZDOzRGQUE3Qyw2Q0FBNkM7a0JBSnpELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdDQUF3QztvQkFDbEQsUUFBUSxFQUFFLHVCQUF1QjtpQkFDcEM7OzBCQThCUSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsYUFBYTs0Q0E1QnpCLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFJTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixLQUFLO2dCQUlOLDBCQUEwQjtzQkFEekIsS0FBSztnQkFJTiwrQkFBK0I7c0JBRDlCLEtBQUs7Z0JBSU4sMkJBQTJCO3NCQUQxQixLQUFLO2dCQUlHLGdDQUFnQztzQkFEeEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgVXJsU2VyaWFsaXplcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHt0dWlDb2VyY2VWYWx1ZX0gZnJvbSAnLi4vLi4vdXRpbHMvY29lcmNlLXZhbHVlJztcblxuY29uc3QgU0VSSUFMSVpFRF9TVUZGSVggPSBgJGA7XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50YXRpb25Qcm9wZXJ0eVR5cGUgPSAnaW5wdXQtb3V0cHV0JyB8ICdpbnB1dCcgfCAnb3V0cHV0JyB8IG51bGw7XG5cbi8vIEBiYWQgVE9ETzogcmVmYWN0b3Igb3V0cHV0IGFuZCB2YWx1ZSBzeW5jXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYG5nLXRlbXBsYXRlW2RvY3VtZW50YXRpb25Qcm9wZXJ0eU5hbWVdYCxcbiAgICBleHBvcnRBczogYGRvY3VtZW50YXRpb25Qcm9wZXJ0eWAsXG59KVxuZXhwb3J0IGNsYXNzIFR1aURvY0RvY3VtZW50YXRpb25Qcm9wZXJ0eUNvbm5lY3RvckRpcmVjdGl2ZTxUPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgICBASW5wdXQoKVxuICAgIGRvY3VtZW50YXRpb25Qcm9wZXJ0eU5hbWUgPSBgYDtcblxuICAgIEBJbnB1dCgpXG4gICAgZG9jdW1lbnRhdGlvblByb3BlcnR5TW9kZTogRG9jdW1lbnRhdGlvblByb3BlcnR5VHlwZSA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIGRvY3VtZW50YXRpb25Qcm9wZXJ0eVR5cGUgPSBgYDtcblxuICAgIEBJbnB1dCgpXG4gICAgZG9jdW1lbnRhdGlvblByb3BlcnR5VmFsdWUhOiBUO1xuXG4gICAgQElucHV0KClcbiAgICBkb2N1bWVudGF0aW9uUHJvcGVydHlEZXByZWNhdGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGRvY3VtZW50YXRpb25Qcm9wZXJ0eVZhbHVlczogcmVhZG9ubHkgVFtdIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBkb2N1bWVudGF0aW9uUHJvcGVydHlWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIHJlYWRvbmx5IGNoYW5nZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHJlYWRvbmx5IGVtaXRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUZW1wbGF0ZVJlZikgcmVhZG9ubHkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PixcbiAgICAgICAgQEluamVjdChMb2NhdGlvbikgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvblJlZjogTG9jYXRpb24sXG4gICAgICAgIEBJbmplY3QoQWN0aXZhdGVkUm91dGUpIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBASW5qZWN0KFVybFNlcmlhbGl6ZXIpIHByaXZhdGUgcmVhZG9ubHkgdXJsU2VyaWFsaXplcjogVXJsU2VyaWFsaXplcixcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXJzZVBhcmFtcyh0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zKTtcbiAgICB9XG5cbiAgICBnZXQgYXR0ck5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmRvY3VtZW50YXRpb25Qcm9wZXJ0eU1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgYGlucHV0YDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFske3RoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5TmFtZX1dYDtcbiAgICAgICAgICAgIGNhc2UgYG91dHB1dGA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAoJHt0aGlzLmRvY3VtZW50YXRpb25Qcm9wZXJ0eU5hbWV9KWA7XG4gICAgICAgICAgICBjYXNlIGBpbnB1dC1vdXRwdXRgOlxuICAgICAgICAgICAgICAgIHJldHVybiBgWygke3RoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5TmFtZX0pXWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50YXRpb25Qcm9wZXJ0eU5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaGFzSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5VmFsdWVzO1xuICAgIH1cblxuICAgIGdldCBzaG91bGRTaG93VmFsdWVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudGF0aW9uUHJvcGVydHlNb2RlICE9PSBgb3V0cHV0YDtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvY3VtZW50YXRpb25Qcm9wZXJ0eVZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5VmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0UXVlcnlQYXJhbSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZW1pdEV2ZW50KGV2ZW50OiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIC8vIEZvciBtb3JlIGNvbnZlbmllbnQgZGVidWdnaW5nXG4gICAgICAgIGNvbnNvbGUuaW5mbyh0aGlzLmF0dHJOYW1lLCBldmVudCk7XG5cbiAgICAgICAgdGhpcy5lbWl0cyQubmV4dCh0aGlzLmVtaXRzJC52YWx1ZSArIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VQYXJhbXMocGFyYW1zOiBQYXJhbXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJvcGVydHlWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gcGFyYW1zW3RoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5TmFtZV07XG4gICAgICAgIGNvbnN0IHByb3BlcnR5VmFsdWVXaXRoU3VmZml4OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQgPVxuICAgICAgICAgICAgcGFyYW1zW2Ake3RoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5TmFtZX0ke1NFUklBTElaRURfU1VGRklYfWBdO1xuXG4gICAgICAgIGlmICghcHJvcGVydHlWYWx1ZSAmJiAhcHJvcGVydHlWYWx1ZVdpdGhTdWZmaXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgICAgICEhcHJvcGVydHlWYWx1ZVdpdGhTdWZmaXggJiYgdGhpcy5kb2N1bWVudGF0aW9uUHJvcGVydHlWYWx1ZXNcbiAgICAgICAgICAgICAgICA/IHRoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5VmFsdWVzW3Byb3BlcnR5VmFsdWVXaXRoU3VmZml4IGFzIG51bWJlcl1cbiAgICAgICAgICAgICAgICA6IHR1aUNvZXJjZVZhbHVlKHByb3BlcnR5VmFsdWUpO1xuXG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZSh2YWx1ZSBhcyBUKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFF1ZXJ5UGFyYW0odmFsdWU6IFQgfCBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0cmVlID0gdGhpcy51cmxTZXJpYWxpemVyLnBhcnNlKHRoaXMubG9jYXRpb25SZWYucGF0aCgpKTtcblxuICAgICAgICBjb25zdCBpc1ZhbHVlQXZhaWxhYmxlQnlLZXkgPSB2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdDtcbiAgICAgICAgY29uc3QgY29tcHV0ZWRWYWx1ZSA9XG4gICAgICAgICAgICBpc1ZhbHVlQXZhaWxhYmxlQnlLZXkgJiYgdGhpcy5kb2N1bWVudGF0aW9uUHJvcGVydHlWYWx1ZXNcbiAgICAgICAgICAgICAgICA/IHRoaXMuZG9jdW1lbnRhdGlvblByb3BlcnR5VmFsdWVzLmluZGV4T2YodmFsdWUgYXMgVClcbiAgICAgICAgICAgICAgICA6IHZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHN1ZmZpeCA9IGlzVmFsdWVBdmFpbGFibGVCeUtleSA/IFNFUklBTElaRURfU1VGRklYIDogYGA7XG4gICAgICAgIGNvbnN0IHByb3BOYW1lID0gdGhpcy5kb2N1bWVudGF0aW9uUHJvcGVydHlOYW1lICsgc3VmZml4O1xuXG4gICAgICAgIHRyZWUucXVlcnlQYXJhbXMgPSB7XG4gICAgICAgICAgICAuLi50cmVlLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgW3Byb3BOYW1lXTogY29tcHV0ZWRWYWx1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmxvY2F0aW9uUmVmLmdvKFN0cmluZyh0cmVlKSk7XG4gICAgfVxufVxuIl19