@wavemaker/app-ng-runtime 11.14.1-1.6289 → 11.14.1-10.6348
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/base/bundles/index.umd.js +86 -17
- package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
- package/components/base/esm2022/utils/widget-utils.mjs +3 -3
- package/components/base/esm2022/widgets/common/base/base.component.mjs +67 -7
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +7 -3
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +7 -2
- package/components/base/fesm2022/index.mjs +87 -18
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +5 -5
- package/components/basic/label/bundles/index.umd.js +9 -1
- package/components/basic/label/esm2022/label.directive.mjs +10 -2
- package/components/basic/label/fesm2022/index.mjs +9 -1
- package/components/basic/label/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/bundles/index.umd.js +4 -0
- package/components/data/pagination/esm2022/pagination.component.mjs +5 -1
- package/components/data/pagination/fesm2022/index.mjs +4 -0
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/table/bundles/index.umd.js +371 -15
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +8 -1
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +107 -3
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +9 -1
- package/components/data/table/esm2022/table-cud.directive.mjs +8 -2
- package/components/data/table/esm2022/table-filter.directive.mjs +12 -2
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +8 -1
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +8 -1
- package/components/data/table/esm2022/table.component.mjs +219 -12
- package/components/data/table/fesm2022/index.mjs +371 -15
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-action/table-action.directive.d.ts +3 -2
- package/components/data/table/table-column/table-column.directive.d.ts +3 -2
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +3 -2
- package/components/data/table/table-cud.directive.d.ts +3 -1
- package/components/data/table/table-filter.directive.d.ts +3 -1
- package/components/data/table/table-row/table-row.directive.d.ts +3 -2
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +3 -2
- package/components/data/table/table.component.d.ts +6 -2
- package/components/navigation/menu/bundles/index.umd.js +5 -0
- package/components/navigation/menu/esm2022/menu.component.mjs +6 -1
- package/components/navigation/menu/fesm2022/index.mjs +5 -0
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/bundles/index.umd.js +6 -6
- package/components/navigation/popover/esm2022/popover.component.mjs +4 -4
- package/components/navigation/popover/fesm2022/index.mjs +3 -3
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +6 -0
- package/core/bundles/index.umd.js +411 -82
- package/core/esm2022/public_api.mjs +3 -3
- package/core/esm2022/utils/utils.mjs +6 -2
- package/core/esm2022/utils/watcher.mjs +402 -81
- package/core/fesm2022/index.mjs +410 -84
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +2 -2
- package/core/utils/utils.d.ts +1 -0
- package/core/utils/watcher.d.ts +28 -5
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +22 -2
- package/runtime/base/esm2022/components/app-component/app.component.mjs +4 -2
- package/runtime/base/esm2022/components/base-page.component.mjs +6 -2
- package/runtime/base/esm2022/components/base-partial.component.mjs +7 -2
- package/runtime/base/esm2022/components/base-prefab.component.mjs +7 -2
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +6 -2
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +4 -4
- package/runtime/base/fesm2022/index.mjs +23 -3
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +101 -15
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Injector, OnInit } from '@angular/core';
|
|
1
|
+
import { Injector, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { BaseComponent } from '@wm/components/base';
|
|
3
3
|
import { TableComponent } from '../table.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class TableActionDirective extends BaseComponent implements OnInit {
|
|
5
|
+
export declare class TableActionDirective extends BaseComponent implements OnInit, OnDestroy {
|
|
6
6
|
table: TableComponent;
|
|
7
7
|
static initializeProps: void;
|
|
8
8
|
accessroles: any;
|
|
@@ -29,6 +29,7 @@ export declare class TableActionDirective extends BaseComponent implements OnIni
|
|
|
29
29
|
populateAction(): void;
|
|
30
30
|
ngOnInit(): void;
|
|
31
31
|
onPropertyChange(key: any, nv: any): void;
|
|
32
|
+
ngOnDestroy(): void;
|
|
32
33
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableActionDirective, [null, { optional: true; }, { optional: true; }]>;
|
|
33
34
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TableActionDirective, "[wmTableAction]", never, {}, {}, never, never, true, never>;
|
|
34
35
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { AfterContentInit, AfterViewInit, Injector, OnInit, TemplateRef } from '@angular/core';
|
|
1
|
+
import { AfterContentInit, AfterViewInit, Injector, OnDestroy, OnInit, TemplateRef } from '@angular/core';
|
|
2
2
|
import { AppDefaults } from '@wm/core';
|
|
3
3
|
import { BaseComponent } from '@wm/components/base';
|
|
4
4
|
import { TableComponent } from '../table.component';
|
|
5
5
|
import { TableColumnGroupDirective } from '../table-column-group/table-column-group.directive';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
-
export declare class TableColumnDirective extends BaseComponent implements OnInit, AfterContentInit, AfterViewInit {
|
|
7
|
+
export declare class TableColumnDirective extends BaseComponent implements OnInit, AfterContentInit, AfterViewInit, OnDestroy {
|
|
8
8
|
private appDefaults;
|
|
9
9
|
table: TableComponent;
|
|
10
10
|
group: TableColumnGroupDirective;
|
|
@@ -146,6 +146,7 @@ export declare class TableColumnDirective extends BaseComponent implements OnIni
|
|
|
146
146
|
populateFieldDef(): void;
|
|
147
147
|
onPropertyChange(key: any, nv: any, ov: any): void;
|
|
148
148
|
setProperty(property: any, nv: any): void;
|
|
149
|
+
ngOnDestroy(): void;
|
|
149
150
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableColumnDirective, [null, null, { optional: true; }, { optional: true; }, { attribute: "filterdataset.bind"; }, { attribute: "dataset.bind"; }, { optional: true; }]>;
|
|
150
151
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TableColumnDirective, "[wmTableColumn]", never, {}, {}, ["customExprTmpl", "inlineWidthTempRef", "filterTemplateRef", "_filterInstances", "_inlineInstances", "_inlineInstancesNew"], never, true, never>;
|
|
151
152
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Injector, OnInit } from '@angular/core';
|
|
1
|
+
import { Injector, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { BaseComponent } from '@wm/components/base';
|
|
3
3
|
import { TableComponent } from '../table.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class TableColumnGroupDirective extends BaseComponent implements OnInit {
|
|
5
|
+
export declare class TableColumnGroupDirective extends BaseComponent implements OnInit, OnDestroy {
|
|
6
6
|
group: TableColumnGroupDirective;
|
|
7
7
|
table: TableComponent;
|
|
8
8
|
static initializeProps: void;
|
|
@@ -17,6 +17,7 @@ export declare class TableColumnGroupDirective extends BaseComponent implements
|
|
|
17
17
|
populateConfig(): void;
|
|
18
18
|
onPropertyChange(key: any, nv: any, ov?: any): void;
|
|
19
19
|
ngOnInit(): void;
|
|
20
|
+
ngOnDestroy(): void;
|
|
20
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableColumnGroupDirective, [null, { optional: true; skipSelf: true; }, { optional: true; }, { optional: true; }]>;
|
|
21
22
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TableColumnGroupDirective, "[wmTableColumnGroup]", never, {}, {}, never, never, true, never>;
|
|
22
23
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
|
1
2
|
import { AbstractDialogService, App } from '@wm/core';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class TableCUDDirective {
|
|
4
|
+
export declare class TableCUDDirective implements OnDestroy {
|
|
4
5
|
private table;
|
|
5
6
|
private dialogService;
|
|
6
7
|
private app;
|
|
@@ -27,6 +28,7 @@ export declare class TableCUDDirective {
|
|
|
27
28
|
hideEditRow(): void;
|
|
28
29
|
saveRow(): void;
|
|
29
30
|
cancelRow(): void;
|
|
31
|
+
ngOnDestroy(): void;
|
|
30
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableCUDDirective, [{ self: true; }, null, null]>;
|
|
31
33
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TableCUDDirective, "[wmTableCUD]", never, {}, {}, never, never, true, never>;
|
|
32
34
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
2
|
-
export declare class TableFilterSortDirective {
|
|
3
|
+
export declare class TableFilterSortDirective implements OnDestroy {
|
|
3
4
|
private table;
|
|
4
5
|
constructor(table: any);
|
|
5
6
|
adjustContainer(fieldName: any): void;
|
|
@@ -28,6 +29,7 @@ export declare class TableFilterSortDirective {
|
|
|
28
29
|
private getFilterOnFieldValues;
|
|
29
30
|
onRowFilterChange(fieldName: any): void;
|
|
30
31
|
refreshData(isSamePage: any): void;
|
|
32
|
+
ngOnDestroy(): void;
|
|
31
33
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableFilterSortDirective, [{ self: true; }]>;
|
|
32
34
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TableFilterSortDirective, "[wmTableFilterSort]", never, {}, {}, never, never, true, never>;
|
|
33
35
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Injector, OnInit } from '@angular/core';
|
|
1
|
+
import { Injector, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { BaseComponent } from '@wm/components/base';
|
|
3
3
|
import { TableComponent } from '../table.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class TableRowDirective extends BaseComponent implements OnInit {
|
|
5
|
+
export declare class TableRowDirective extends BaseComponent implements OnInit, OnDestroy {
|
|
6
6
|
table: TableComponent;
|
|
7
7
|
static initializeProps: void;
|
|
8
8
|
config: any;
|
|
@@ -19,6 +19,7 @@ export declare class TableRowDirective extends BaseComponent implements OnInit {
|
|
|
19
19
|
populateConfig(): void;
|
|
20
20
|
ngOnInit(): void;
|
|
21
21
|
onPropertyChange(key: string, nv: any): void;
|
|
22
|
+
ngOnDestroy(): void;
|
|
22
23
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableRowDirective, [null, { optional: true; skipSelf: true; }, { optional: true; }]>;
|
|
23
24
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TableRowDirective, "[wmTableRow]", never, {}, {}, never, never, true, never>;
|
|
24
25
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Injector, OnInit } from '@angular/core';
|
|
1
|
+
import { Injector, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { BaseComponent } from '@wm/components/base';
|
|
3
3
|
import { TableComponent } from '../table.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class TableRowActionDirective extends BaseComponent implements OnInit {
|
|
5
|
+
export declare class TableRowActionDirective extends BaseComponent implements OnInit, OnDestroy {
|
|
6
6
|
table: TableComponent;
|
|
7
7
|
static initializeProps: void;
|
|
8
8
|
accessroles: any;
|
|
@@ -25,6 +25,7 @@ export declare class TableRowActionDirective extends BaseComponent implements On
|
|
|
25
25
|
getTitle(): any;
|
|
26
26
|
populateAction(): void;
|
|
27
27
|
ngOnInit(): void;
|
|
28
|
+
ngOnDestroy(): void;
|
|
28
29
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableRowActionDirective, [null, { optional: true; }, { self: true; }, { optional: true; }]>;
|
|
29
30
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TableRowActionDirective, "[wmTableRowAction]", never, {}, {}, never, never, true, never>;
|
|
30
31
|
}
|
|
@@ -109,7 +109,7 @@ export declare class TableComponent extends StylableComponent implements AfterCo
|
|
|
109
109
|
exportOptions: any[];
|
|
110
110
|
exportdatasize: any;
|
|
111
111
|
formWidgets: any;
|
|
112
|
-
headerConfig: any
|
|
112
|
+
headerConfig: any;
|
|
113
113
|
items: any[];
|
|
114
114
|
navControls: any;
|
|
115
115
|
rowActions: any[];
|
|
@@ -128,10 +128,11 @@ export declare class TableComponent extends StylableComponent implements AfterCo
|
|
|
128
128
|
actionRowIndex: any;
|
|
129
129
|
actionRowPage: any;
|
|
130
130
|
prevFilterExpression: any;
|
|
131
|
-
fieldDefs: any
|
|
131
|
+
fieldDefs: any;
|
|
132
132
|
rowDef: any;
|
|
133
133
|
rowInstance: any;
|
|
134
134
|
pagesizeoptions: any;
|
|
135
|
+
prevPagesizeoptions: any;
|
|
135
136
|
multiselecttitle: any;
|
|
136
137
|
multiselectarialabel: any;
|
|
137
138
|
radioselecttitle: any;
|
|
@@ -378,6 +379,9 @@ export declare class TableComponent extends StylableComponent implements AfterCo
|
|
|
378
379
|
getSortExpr(): any;
|
|
379
380
|
onPropertyChange(key: string, nv: any, ov?: any): void;
|
|
380
381
|
setDefaultPageSize(nv: any): void;
|
|
382
|
+
isPageSizeOptionsChanged(): boolean;
|
|
383
|
+
selectPageSize(pagesize: number): void;
|
|
384
|
+
sanitizeCommaSeparatedIntegers(input: string): string;
|
|
381
385
|
onDataSourceChange(): void;
|
|
382
386
|
private clearActionRowVars;
|
|
383
387
|
onStyleChange(key: any, nv: any, ov: any): void;
|
|
@@ -768,6 +768,11 @@
|
|
|
768
768
|
}
|
|
769
769
|
ngAfterViewInit() {
|
|
770
770
|
super.ngAfterViewInit();
|
|
771
|
+
// Fix tabindex if it's NaN (ensure it's fixed after view initialization)
|
|
772
|
+
if (this.widget.tabindex !== undefined && (typeof this.widget.tabindex === 'number' && isNaN(this.widget.tabindex))) {
|
|
773
|
+
this.widget.tabindex = 0;
|
|
774
|
+
this.tabindex = 0;
|
|
775
|
+
}
|
|
771
776
|
base.styler(this.nativeElement.querySelector('.dropdown-toggle'), this);
|
|
772
777
|
}
|
|
773
778
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: MenuComponent, deps: [{ token: i0__namespace.Injector }, { token: i1__namespace.Router }, { token: i2__namespace.UserDefinedExecutionContext }, { token: i2__namespace.App }, { token: i3$1__namespace.BsDropdownDirective, optional: true, self: true }, { token: NavComponent, optional: true }, { token: 'select.event', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
|
|
@@ -218,6 +218,11 @@ export class MenuComponent extends DatasetAwareNavComponent {
|
|
|
218
218
|
}
|
|
219
219
|
ngAfterViewInit() {
|
|
220
220
|
super.ngAfterViewInit();
|
|
221
|
+
// Fix tabindex if it's NaN (ensure it's fixed after view initialization)
|
|
222
|
+
if (this.widget.tabindex !== undefined && (typeof this.widget.tabindex === 'number' && isNaN(this.widget.tabindex))) {
|
|
223
|
+
this.widget.tabindex = 0;
|
|
224
|
+
this.tabindex = 0;
|
|
225
|
+
}
|
|
221
226
|
styler(this.nativeElement.querySelector('.dropdown-toggle'), this);
|
|
222
227
|
}
|
|
223
228
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i2.UserDefinedExecutionContext }, { token: i2.App }, { token: i3.BsDropdownDirective, optional: true, self: true }, { token: i4.NavComponent, optional: true }, { token: 'select.event', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -272,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
272
277
|
type: HostListener,
|
|
273
278
|
args: ['keydown.enter', ['$event', '"ENTER"']]
|
|
274
279
|
}] } });
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvbmF2aWdhdGlvbi9tZW51L3NyYy9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9uYXZpZ2F0aW9uL21lbnUvc3JjL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBRUgsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFHUixRQUFRLEVBQ1IsSUFBSSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RSxPQUFPLEVBQ0gsVUFBVSxFQUNWLFFBQVEsRUFDUixHQUFHLEVBQ0gsV0FBVyxFQUNYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsMkJBQTJCLEVBQzlCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsTUFBTSxFQUNOLG9CQUFvQixFQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBRTlELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLGNBQWMsRUFBRSxhQUFhO0lBQzdCLGNBQWMsRUFBRSxhQUFhO0lBQzdCLE1BQU0sRUFBRSxLQUFLO0lBQ2IsWUFBWSxFQUFFLFdBQVc7SUFDekIsU0FBUyxFQUFFLEtBQUs7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUN6QixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtJQUNwQixTQUFTLEVBQUUsV0FBVztJQUN0QixVQUFVLEVBQUUsWUFBWTtJQUN4QixNQUFNLEVBQUUsUUFBUTtDQUNuQixDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUc7SUFDYixVQUFVLEVBQUUsWUFBWTtJQUN4QixTQUFTLEVBQUUsV0FBVztJQUN0QixRQUFRLEVBQUUsVUFBVTtJQUNwQixPQUFPLEVBQUUsU0FBUztJQUNsQixNQUFNLEVBQUUsUUFBUTtDQUNuQixDQUFDO0FBQ0YsTUFBTSxTQUFTLEdBQUc7SUFDZCxFQUFFLEVBQUUsYUFBYTtJQUNqQixJQUFJLEVBQUUsZUFBZTtDQUN4QixDQUFDO0FBQ0YsTUFBTSxRQUFRLEdBQUc7SUFDYixJQUFJLEVBQUUsV0FBVztJQUNqQixLQUFLLEVBQUUsWUFBWTtDQUN0QixDQUFDO0FBRUYsTUFBTSxTQUFTLEdBQUc7SUFDZCxLQUFLLEVBQUUsT0FBTztJQUNkLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLE1BQU0sRUFBRSxRQUFRO0NBQ25CLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUM7QUFXaEYsTUFBTSxPQUFPLGFBQWMsU0FBUSx3QkFBd0I7YUFDaEQsb0JBQWUsR0FBRyxhQUFhLEVBQUUsQUFBbEIsQ0FBbUI7SUF1QmhCLE1BQU07UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1RixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxVQUFVLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBQ3lCLE1BQU07UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsaURBQWlEO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUN2RixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsVUFBVSxFQUFFLENBQUM7SUFDakIsQ0FBQztJQVFxRCxTQUFTLENBQUMsTUFBTSxFQUFFLFdBQVc7UUFDL0UsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQyxhQUFhLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztZQUNyQyxhQUFhLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUN6QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyRCxhQUFhLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztZQUNyQyxhQUFhLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztZQUNyQyxhQUFhLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztZQUN4QyxhQUFhLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2RCxhQUFhLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztZQUN4QyxhQUFhLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1RixDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksV0FBVyxLQUFLLGFBQWEsQ0FBQyxRQUFRLElBQUksQ0FBQyxXQUFXLEtBQUssYUFBYSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN0SCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO2FBQU0sSUFBSSxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxhQUFhLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksY0FBYyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNqTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQ0ksR0FBYSxFQUNOLEtBQWEsRUFDWiwyQkFBd0QsRUFDeEQsR0FBUSxFQUNXLFVBQStCLEVBQ3RDLFNBQXVCLEVBQ1QsYUFBcUIsRUFDZixlQUFvQjtRQUU1RCxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQVJwQyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ1osZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQ1csZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFDdEMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUNULGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBbkVuRCxjQUFTLEdBQUcsZUFBZSxDQUFDO1FBQzVCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQXNFN0IsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDO1FBQzdELENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDOUMsQ0FBQztRQUNELGlDQUFpQztRQUNqQyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNuRCxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzVGLENBQUM7Z0JBQ0QsZ0lBQWdJO2dCQUNoSSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDakIsT0FBTztnQkFDWCxDQUFDO2dCQUNELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDdEIsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNwQixJQUFJLFNBQVMsRUFBRSxDQUFDOzRCQUNaLE9BQU87d0JBQ1gsQ0FBQzt3QkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzs0QkFDaEIsU0FBUyxHQUFHLElBQUksQ0FBQzs0QkFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzs0QkFDbkQsaURBQWlEOzRCQUNqRCxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7NEJBQzlCLE9BQU8sS0FBSyxDQUFDO3dCQUNqQixDQUFDO3dCQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7NEJBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQzNCLENBQUM7b0JBRUwsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDO2dCQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFMUUsQ0FBQztJQUVTLFVBQVU7UUFDaEIsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25CLHlHQUF5RztRQUN6RyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsV0FBVyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUUsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFnQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQztRQUNsSixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVcsRUFBRSxFQUFPLEVBQUUsRUFBUTtRQUUzQyxJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksR0FBRyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLEVBQUUsS0FBSyxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQzNELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFTSxlQUFlO1FBQ2xCLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hCLEtBQUssUUFBUSxDQUFDLFVBQVU7Z0JBQ3BCLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDaEMsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFDLFNBQVM7Z0JBQ25CLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDaEMsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFDLE9BQU87Z0JBQ2pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFDLFFBQVE7Z0JBQ2xCLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFDLE1BQU07Z0JBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUM7Z0JBQ25DLE1BQU07UUFDZCxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQUk7UUFDeEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RGLENBQUM7K0dBdk1RLGFBQWEseU9BcUZQLGNBQWMsOEJBQ2pCLGtCQUFrQjttR0F0RnJCLGFBQWEsdWZBTFg7WUFDUCxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7U0FFcEMsaURDOUZMLG03Q0E4Q0EsMkNEMENjLGdCQUFnQixrVEFBRSxZQUFZLDZIQUFFLG9CQUFvQixtRkFBRSxlQUFlLGdGQUFFLGVBQWUscUZBQUUscUJBQXFCOzs0RkFROUcsYUFBYTtrQkFWekIsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQyxZQUM5RyxVQUFVLGFBRVQ7d0JBQ1Asa0JBQWtCLGVBQWU7cUJBRXBDOzswQkFxRkksSUFBSTs7MEJBQUksUUFBUTs7MEJBQ2hCLFFBQVE7OzBCQUNSLFNBQVM7MkJBQUMsY0FBYzs7MEJBQ3hCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQTlEaEIsTUFBTTtzQkFBOUIsWUFBWTt1QkFBQyxTQUFTO2dCQVNHLE1BQU07c0JBQS9CLFlBQVk7dUJBQUMsVUFBVTtnQkFlOEIsU0FBUztzQkFOOUQsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7O3NCQUN4RCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7O3NCQUN0RCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7O3NCQUN0RCxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQzs7c0JBQzVELFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDOztzQkFDOUQsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUM7O3NCQUM1RCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvYnV0dG9uJztcbmltcG9ydCB7IE1lbnVEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1kcm9wZG93bi9tZW51LWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0JzRHJvcGRvd25EaXJlY3RpdmUsIEJzRHJvcGRvd25Nb2R1bGV9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuXG5pbXBvcnQge1xuICAgICRhcHBEaWdlc3QsXG4gICAgYWRkQ2xhc3MsXG4gICAgQXBwLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIHRyaWdnZXJJdGVtQWN0aW9uLFxuICAgIFVzZXJEZWZpbmVkRXhlY3V0aW9uQ29udGV4dFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFVVE9DTE9TRV9UWVBFLFxuICAgIERhdGFzZXRBd2FyZU5hdkNvbXBvbmVudCxcbiAgICBoYXNMaW5rVG9DdXJyZW50UGFnZSxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgc3R5bGVyLFxuICAgIFRleHRDb250ZW50RGlyZWN0aXZlXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtOYXZDb21wb25lbnR9IGZyb20gJy4vbmF2L25hdi5jb21wb25lbnQnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vbWVudS5wcm9wcyc7XG5pbXBvcnQge2Nsb25lLCBmb3JFYWNoLCBpbmNsdWRlcywgaXNFbXB0eX0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQW5jaG9yQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMvYW5jaG9yJztcblxuZXhwb3J0IGNvbnN0IEtFWUJPQVJEX01PVkVNRU5UUyA9IHtcbiAgICBNT1ZFX1VQOiAnVVAtQVJST1cnLFxuICAgIE1PVkVfTEVGVDogJ0xFRlQtQVJST1cnLFxuICAgIE1PVkVfUklHSFQ6ICdSSUdIVC1BUlJPVycsXG4gICAgTU9WRV9ET1dOOiAnRE9XTi1BUlJPVycsXG4gICAgT05fRU5URVI6ICdFTlRFUicsXG4gICAgT05fTU9VU0VfRU5URVI6ICdNT1VTRS1FTlRFUicsXG4gICAgT05fTU9VU0VfTEVBVkU6ICdNT1VTRS1MRUFWRScsXG4gICAgT05fVEFCOiAnVEFCJyxcbiAgICBPTl9TSElGVF9UQUI6ICdTSElGVC1UQUInLFxuICAgIE9OX0VTQ0FQRTogJ0VTQydcbn07XG5cbmV4cG9ydCBjb25zdCBNRU5VX1BPU0lUSU9OID0ge1xuICAgIFVQX0xFRlQ6ICd1cCxsZWZ0JyxcbiAgICBVUF9SSUdIVDogJ3VwLHJpZ2h0JyxcbiAgICBET1dOX0xFRlQ6ICdkb3duLGxlZnQnLFxuICAgIERPV05fUklHSFQ6ICdkb3duLHJpZ2h0JyxcbiAgICBJTkxJTkU6ICdpbmxpbmUnXG59O1xuXG5jb25zdCBQT1NJVElPTiA9IHtcbiAgICBET1dOX1JJR0hUOiAnZG93bixyaWdodCcsXG4gICAgRE9XTl9MRUZUOiAnZG93bixsZWZ0JyxcbiAgICBVUF9SSUdIVDogJ3VwLHJpZ2h0JyxcbiAgICBVUF9MRUZUOiAndXAsbGVmdCcsXG4gICAgSU5MSU5FOiAnaW5saW5lJ1xufTtcbmNvbnN0IENBUkVUX0NMUyA9IHtcbiAgICBVUDogJ2ZhLWNhcmV0LXVwJyxcbiAgICBET1dOOiAnZmEtY2FyZXQtZG93bidcbn07XG5jb25zdCBQVUxMX0NMUyA9IHtcbiAgICBMRUZUOiAncHVsbC1sZWZ0JyxcbiAgICBSSUdIVDogJ3B1bGwtcmlnaHQnXG59O1xuXG5jb25zdCBBVVRPX09QRU4gPSB7XG4gICAgTkVWRVI6ICduZXZlcicsXG4gICAgQUNUSVZFX1BBR0U6ICdhY3RpdmVwYWdlJyxcbiAgICBBTFdBWVM6ICdhbHdheXMnXG59O1xuXG5jb25zdCBXSURHRVRfQ09ORklHID0geyB3aWRnZXRUeXBlOiAnd20tbWVudScsIGhvc3RDbGFzczogJ2Ryb3Bkb3duIGFwcC1tZW51JyB9O1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQnNEcm9wZG93bk1vZHVsZSwgQ29tbW9uTW9kdWxlLCBUZXh0Q29udGVudERpcmVjdGl2ZSwgQW5jaG9yQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIE1lbnVEcm9wZG93bkNvbXBvbmVudF0sXG4gICAgc2VsZWN0b3I6ICdbd21NZW51XScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoTWVudUNvbXBvbmVudCksXG5cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgZXh0ZW5kcyBEYXRhc2V0QXdhcmVOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBtZW51YWxpZ246IHN0cmluZztcbiAgICBwdWJsaWMgbWVudXBvc2l0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIG1lbnVsYXlvdXQ6IHN0cmluZztcbiAgICBwdWJsaWMgbWVudWNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGxpbmt0YXJnZXQ6IHN0cmluZztcbiAgICBwdWJsaWMgaWNvbmNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGFuaW1hdGVpdGVtczogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNhYmxlTWVudUNvbnRleHQ6IGJvb2xlYW47XG4gICAgcHVibGljIHNob3dvbmhvdmVyOiBib29sZWFuO1xuICAgIHB1YmxpYyBhdXRvY2xvc2U6IHN0cmluZztcbiAgICBwdWJsaWMgYXV0b29wZW46IHN0cmluZztcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHB1YmxpYyBhcmlhbGFiZWw6IHN0cmluZztcblxuICAgIHByaXZhdGUgaXRlbUFjdGlvbkZuOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIG1lbnVDYXJldCA9ICdmYS1jYXJldC1kb3duJztcbiAgICBwcml2YXRlIF9zZWxlY3RGaXJzdEl0ZW0gPSBmYWxzZTtcblxuICAgIHB1YmxpYyB0eXBlOiBhbnk7XG4gICAgcHVibGljIF9tZW51cG9zaXRpb246IHN0cmluZztcblxuICAgIEBIb3N0TGlzdGVuZXIoJ29uU2hvd24nKSBvblNob3coKSB7XG4gICAgICAgIHRoaXMuX21lbnVwb3NpdGlvbiA9IHRoaXMubWVudXBvc2l0aW9uO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0Rmlyc3RJdGVtKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJz4gdWxbd21tZW51ZHJvcGRvd25dIGxpLmFwcC1tZW51LWl0ZW0nKS5maXJzdCgpLmZpbmQoJz4gYScpLmZvY3VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuICAgIEBIb3N0TGlzdGVuZXIoJ29uSGlkZGVuJykgb25IaWRlKCkge1xuICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJ2xpJykucmVtb3ZlQ2xhc3MoJ29wZW4nKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0Rmlyc3RJdGVtID0gZmFsc2U7XG4gICAgICAgIC8vIHJlc2V0IHRoZSBtZW51cG9zaXRpb24gd2hlbiBkcm9wZG93biBpcyBjbG9zZWRcbiAgICAgICAgdGhpcy5tZW51cG9zaXRpb24gPSB0aGlzLl9tZW51cG9zaXRpb24gPyB0aGlzLl9tZW51cG9zaXRpb24gOiBNRU5VX1BPU0lUSU9OLkRPV05fUklHSFQ7XG4gICAgICAgIHRoaXMuc2V0TWVudVBvc2l0aW9uKCk7XG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93dXAnLCBbJyRldmVudCcsICdcIlVQLUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnLCAnXCJNT1VTRS1FTlRFUlwiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50JywgJ1wiTU9VU0UtTEVBVkVcIiddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dkb3duJywgWyckZXZlbnQnLCAnXCJET1dOLUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93cmlnaHQnLCBbJyRldmVudCcsICdcIlJJR0hULUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93bGVmdCcsIFsnJGV2ZW50JywgJ1wiTEVGVC1BUlJPV1wiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50JywgJ1wiRU5URVJcIiddKSBvbktleURvd24oJGV2ZW50LCBldmVudEFjdGlvbikge1xuICAgICAgICBjb25zdCBLRVlfTU9WRU1FTlRTID0gY2xvbmUoS0VZQk9BUkRfTU9WRU1FTlRTKTtcbiAgICAgICAgaWYgKHRoaXMubWVudXBvc2l0aW9uID09PSBNRU5VX1BPU0lUSU9OLlVQX1JJR0hUKSB7XG4gICAgICAgICAgICBLRVlfTU9WRU1FTlRTLk1PVkVfVVAgPSAnRE9XTi1BUlJPVyc7XG4gICAgICAgICAgICBLRVlfTU9WRU1FTlRTLk1PVkVfRE9XTiA9ICdVUC1BUlJPVyc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZW51cG9zaXRpb24gPT09IE1FTlVfUE9TSVRJT04uVVBfTEVGVCkge1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1VQID0gJ0RPV04tQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0RPV04gPSAnVVAtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlQgPSAnUklHSFQtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUID0gJ0xFRlQtQVJST1cnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWVudXBvc2l0aW9uID09PSBNRU5VX1BPU0lUSU9OLkRPV05fTEVGVCkge1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlQgPSAnUklHSFQtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUID0gJ0xFRlQtQVJST1cnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluY2x1ZGVzKFtLRVlfTU9WRU1FTlRTLk1PVkVfRE9XTiwgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUXSwgZXZlbnRBY3Rpb24pKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYnNEcm9wZG93bi5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGaXJzdEl0ZW0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYnNEcm9wZG93bi5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnPiB1bFt3bW1lbnVkcm9wZG93bl0gbGkuYXBwLW1lbnUtaXRlbScpLmZpcnN0KCkuZmluZCgnPiBhJykuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChldmVudEFjdGlvbiA9PT0gS0VZX01PVkVNRU5UUy5PTl9FTlRFUiB8fCAoZXZlbnRBY3Rpb24gPT09IEtFWV9NT1ZFTUVOVFMuT05fTU9VU0VfRU5URVIgJiYgdGhpcy5zaG93b25ob3ZlcikpIHtcbiAgICAgICAgICAgIHRoaXMuYnNEcm9wZG93bi50b2dnbGUodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZXMoW0tFWV9NT1ZFTUVOVFMuTU9WRV9VUCwgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlRdLCBldmVudEFjdGlvbikgfHwgKGV2ZW50QWN0aW9uID09IEtFWV9NT1ZFTUVOVFMuT05fTU9VU0VfTEVBVkUgJiYgdGhpcy5hdXRvY2xvc2UgPT0gQVVUT0NMT1NFX1RZUEUuQUxXQVlTICYmIHRoaXMuc2hvd29uaG92ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwdWJsaWMgcm91dGU6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSB1c2VyRGVmaW5lZEV4ZWN1dGlvbkNvbnRleHQ6IFVzZXJEZWZpbmVkRXhlY3V0aW9uQ29udGV4dCxcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgYnNEcm9wZG93bjogQnNEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnROYXY6IE5hdkNvbXBvbmVudCxcbiAgICAgICAgQEF0dHJpYnV0ZSgnc2VsZWN0LmV2ZW50JykgcHVibGljIHNlbGVjdEV2ZW50Q0I6IHN0cmluZyxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcbiAgICAgICAgaWYgKHBhcmVudE5hdikge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlTWVudUNvbnRleHQgPSAhIXBhcmVudE5hdi5kaXNhYmxlTWVudUNvbnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVNZW51Q29udGV4dCA9ICEhc2VsZWN0RXZlbnRDQjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGb3Igc2VsZWN0aW5nIHRoZSBpdGVtIG9uIGxvYWRcbiAgICAgICAgY29uc3QgZGF0YXNldFN1YnNjcmlwdGlvbiA9IHRoaXMubm9kZXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy5ub2RlcykpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzTGlua1RvQ3VycmVudFBhZ2UodGhpcy5ub2RlcywgdGhpcy5yb3V0ZS51cmwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tdG9nZ2xlJykgYXMgSFRNTEVsZW1lbnQsICdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gSWYgbWVudSB3aWRnZXQgaXMgaW5zaWRlIG5hdiB3aWRnZXQgdGhlbiBkb250IGNoZWNrIGZvciBpdGVtIGlzYWN0aXZlIHByb3BlcnR5IGJlY2F1c2UgdGhlc2Ugd2lsbCBiZSBoYW5kbGVkIGZvcm0gbmF2IHdpZGdldC5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnROYXYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgaXRlbUZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2V0SXRlbSA9IChub2RlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmb3JFYWNoKG5vZGVzLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1Gb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlzYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTWVudUl0ZW1TZWxlY3QoeyAkZXZlbnQ6IHt9LCAkaXRlbTogaXRlbSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIHRoZSBhY3Rpb24gYXNzb2NpYXRlZCB3aXRoIGFjdGl2ZSBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckl0ZW1BY3Rpb24odGhpcywgaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SXRlbShpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGdldEl0ZW0odGhpcy5ub2Rlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IGRhdGFzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG5cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzZXROb2RlcygpIHtcbiAgICAgICAgc3VwZXIucmVzZXROb2RlcygpO1xuICAgICAgICAvLyBvcGVuIHRoZSBtZW51IGlmIGFueSBvZiBpdHMgbWVudSBpdGVtcyBoYXMgbGluayB0byBjdXJyZW50IHBhZ2UgYW5kIGlmIGF1dG9vcGVuIHZhbHVlIGlzICdhY3RpdmUgcGFnZSdcbiAgICAgICAgaWYgKCh0aGlzLmF1dG9vcGVuID09PSBBVVRPX09QRU4uQUNUSVZFX1BBR0UgJiYgaGFzTGlua1RvQ3VycmVudFBhZ2UodGhpcy5ub2RlcywgdGhpcy5yb3V0ZS51cmwpKSB8fCB0aGlzLmF1dG9vcGVuID09PSBBVVRPX09QRU4uQUxXQVlTKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0TWVudVBvc2l0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgY2FuY2VsU3Vic2NyaXB0aW9uID0gdGhpcy5hcHAuc3Vic2NyaWJlKFwiaGlnaGxpZ2h0QWN0aXZlTGlua1wiLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi10b2dnbGUnKSBhcyBIVE1MRWxlbWVudCwgJ2FjdGl2ZScsIGhhc0xpbmtUb0N1cnJlbnRQYWdlKHRoaXMubm9kZXMsIHRoaXMucm91dGUudXJsICkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBjYW5jZWxTdWJzY3JpcHRpb24oKSk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcblxuICAgICAgICBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5ID09PSAnYXV0b2Nsb3NlJykge1xuICAgICAgICAgICAgdGhpcy5ic0Ryb3Bkb3duLmF1dG9DbG9zZSA9IG52ICE9PSBBVVRPQ0xPU0VfVFlQRS5ESVNBQkxFRDtcbiAgICAgICAgICAgIHRoaXMuYXV0b2Nsb3NlID0gbnY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNZW51UG9zaXRpb24oKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5tZW51cG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uRE9XTl9SSUdIVDpcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLkxFRlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuRE9XTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uRE9XTl9MRUZUOlxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2Ryb3B1cCcpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudWFsaWduID0gUFVMTF9DTFMuUklHSFQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuRE9XTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uVVBfTEVGVDpcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLlJJR0hUO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUNhcmV0ID0gQ0FSRVRfQ0xTLlVQO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQT1NJVElPTi5VUF9SSUdIVDpcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLkxFRlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuVVA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBPU0lUSU9OLklOTElORTpcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9ICdkcm9waW5saW5lLW1lbnUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWVudUl0ZW1TZWxlY3QoYXJncykge1xuICAgICAgICBjb25zdCB7ICRldmVudCB9ID0gYXJncztcbiAgICAgICAgY29uc3QgJGl0ZW0gPSBhcmdzLiRpdGVtLnZhbHVlO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdCcsIHsgJGV2ZW50LCAkaXRlbSB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi10b2dnbGUnKSBhcyBIVE1MRWxlbWVudCwgdGhpcyk7XG4gICAgfVxufVxuIiwiXG5cbjxuZy10ZW1wbGF0ZSAjaW5uZXJUZW1wbGF0ZT5cbiAgPGkgY2xhc3M9XCJhcHAtaWNvbiB7e2ljb25jbGFzc319XCI+PC9pPlxuICA8c3BhbiBjbGFzcz1cImNhcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiY2FwdGlvblwiPjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IGNhcmV0IGZhIHt7bWVudUNhcmV0fX1cIj48L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG5AaWYgKHR5cGUgPT09ICdhbmNob3InKSB7XG4gIDxhIHdtQW5jaG9yXG4gICAgZHJvcGRvd25Ub2dnbGVcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbCB8fCAnTWVudSdcIlxuICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICBoaW50LmJpbmQ9XCJoaW50XCJcbiAgICBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSB7e21lbnVjbGFzc319XCJcbiAgICBzaG9ydGN1dGtleS5iaW5kPVwic2hvcnRjdXRrZXlcIlxuICAgIHRhYmluZGV4LmJpbmQ9XCJ0YWJpbmRleFwiXG4gICAgY2FwdGlvbi5iaW5kPVwiY2FwdGlvblwiXG4gICAgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgIGljb25wb3NpdGlvbi5iaW5kPVwiaWNvbnBvc2l0aW9uXCJcbiAgICBiYWRnZXZhbHVlLmJpbmQ9XCJiYWRnZXZhbHVlXCJcbiAgICA+XG4gICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IGNhcmV0IGZhXCIgW25nQ2xhc3NdPVwiW21lbnVDYXJldF1cIj48L3NwYW4+XG4gIDwvYT5cbn0gQGVsc2Uge1xuICA8YnV0dG9uIHdtQnV0dG9uXG4gICAgZHJvcGRvd25Ub2dnbGVcbiAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbCB8fCAnTWVudSdcIlxuICAgIGNsYXNzPVwiYnRuIGFwcC1idXR0b24gZHJvcGRvd24tdG9nZ2xlIHt7bWVudWNsYXNzfX1cIlxuICAgIGhpbnQuYmluZD1cImhpbnRcIlxuICAgIHNob3J0Y3V0a2V5LmJpbmQ9XCJzaG9ydGN1dGtleVwiXG4gICAgdGFiaW5kZXguYmluZD1cInRhYmluZGV4XCJcbiAgICBjYXB0aW9uLmJpbmQ9XCJjYXB0aW9uXCJcbiAgICBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgaWNvbnBvc2l0aW9uLmJpbmQ9XCJpY29ucG9zaXRpb25cIj5cbiAgICA8c3BhbiBjbGFzcz1cInB1bGwtcmlnaHQgY2FyZXQgZmFcIiBbbmdDbGFzc109XCJbbWVudUNhcmV0XVwiPjwvc3Bhbj5cbiAgPC9idXR0b24+XG59XG5cbjx1bCAqZHJvcGRvd25NZW51IFtpdGVtc109XCJub2Rlc1wiIFtuZ0NsYXNzXT1cIm1lbnVsYXlvdXRcIiBjbGFzcz1cImljb24tcG9zaXRpb24te3tpY29ucG9zaXRpb259fVwiIHJvbGU9XCJtZW51YmFyXCJcbndtTWVudURyb3Bkb3duPjwvdWw+XG4iXX0=
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvbmF2aWdhdGlvbi9tZW51L3NyYy9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9uYXZpZ2F0aW9uL21lbnUvc3JjL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBRUgsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFHUixRQUFRLEVBQ1IsSUFBSSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RSxPQUFPLEVBQ0gsVUFBVSxFQUNWLFFBQVEsRUFDUixHQUFHLEVBQ0gsV0FBVyxFQUNYLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsMkJBQTJCLEVBQzlCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsTUFBTSxFQUNOLG9CQUFvQixFQUN2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFB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U0FFcEMsaURDOUZMLG03Q0E4Q0EsMkNEMENjLGdCQUFnQixrVEFBRSxZQUFZLDZIQUFFLG9CQUFvQixtRkFBRSxlQUFlLGdGQUFFLGVBQWUscUZBQUUscUJBQXFCOzs0RkFROUcsYUFBYTtrQkFWekIsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQyxZQUM5RyxVQUFVLGFBRVQ7d0JBQ1Asa0JBQWtCLGVBQWU7cUJBRXBDOzswQkFxRkksSUFBSTs7MEJBQUksUUFBUTs7MEJBQ2hCLFFBQVE7OzBCQUNSLFNBQVM7MkJBQUMsY0FBYzs7MEJBQ3hCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQTlEaEIsTUFBTTtzQkFBOUIsWUFBWTt1QkFBQyxTQUFTO2dCQVNHLE1BQU07c0JBQS9CLFlBQVk7dUJBQUMsVUFBVTtnQkFlOEIsU0FBUztzQkFOOUQsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUM7O3NCQUN4RCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7O3NCQUN0RCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUM7O3NCQUN0RCxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQzs7c0JBQzVELFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDOztzQkFDOUQsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUM7O3NCQUM1RCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvYnV0dG9uJztcbmltcG9ydCB7IE1lbnVEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1kcm9wZG93bi9tZW51LWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0JzRHJvcGRvd25EaXJlY3RpdmUsIEJzRHJvcGRvd25Nb2R1bGV9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuXG5pbXBvcnQge1xuICAgICRhcHBEaWdlc3QsXG4gICAgYWRkQ2xhc3MsXG4gICAgQXBwLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIHRyaWdnZXJJdGVtQWN0aW9uLFxuICAgIFVzZXJEZWZpbmVkRXhlY3V0aW9uQ29udGV4dFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFVVE9DTE9TRV9UWVBFLFxuICAgIERhdGFzZXRBd2FyZU5hdkNvbXBvbmVudCxcbiAgICBoYXNMaW5rVG9DdXJyZW50UGFnZSxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgc3R5bGVyLFxuICAgIFRleHRDb250ZW50RGlyZWN0aXZlXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtOYXZDb21wb25lbnR9IGZyb20gJy4vbmF2L25hdi5jb21wb25lbnQnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vbWVudS5wcm9wcyc7XG5pbXBvcnQge2Nsb25lLCBmb3JFYWNoLCBpbmNsdWRlcywgaXNFbXB0eX0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQW5jaG9yQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMvYW5jaG9yJztcblxuZXhwb3J0IGNvbnN0IEtFWUJPQVJEX01PVkVNRU5UUyA9IHtcbiAgICBNT1ZFX1VQOiAnVVAtQVJST1cnLFxuICAgIE1PVkVfTEVGVDogJ0xFRlQtQVJST1cnLFxuICAgIE1PVkVfUklHSFQ6ICdSSUdIVC1BUlJPVycsXG4gICAgTU9WRV9ET1dOOiAnRE9XTi1BUlJPVycsXG4gICAgT05fRU5URVI6ICdFTlRFUicsXG4gICAgT05fTU9VU0VfRU5URVI6ICdNT1VTRS1FTlRFUicsXG4gICAgT05fTU9VU0VfTEVBVkU6ICdNT1VTRS1MRUFWRScsXG4gICAgT05fVEFCOiAnVEFCJyxcbiAgICBPTl9TSElGVF9UQUI6ICdTSElGVC1UQUInLFxuICAgIE9OX0VTQ0FQRTogJ0VTQydcbn07XG5cbmV4cG9ydCBjb25zdCBNRU5VX1BPU0lUSU9OID0ge1xuICAgIFVQX0xFRlQ6ICd1cCxsZWZ0JyxcbiAgICBVUF9SSUdIVDogJ3VwLHJpZ2h0JyxcbiAgICBET1dOX0xFRlQ6ICdkb3duLGxlZnQnLFxuICAgIERPV05fUklHSFQ6ICdkb3duLHJpZ2h0JyxcbiAgICBJTkxJTkU6ICdpbmxpbmUnXG59O1xuXG5jb25zdCBQT1NJVElPTiA9IHtcbiAgICBET1dOX1JJR0hUOiAnZG93bixyaWdodCcsXG4gICAgRE9XTl9MRUZUOiAnZG93bixsZWZ0JyxcbiAgICBVUF9SSUdIVDogJ3VwLHJpZ2h0JyxcbiAgICBVUF9MRUZUOiAndXAsbGVmdCcsXG4gICAgSU5MSU5FOiAnaW5saW5lJ1xufTtcbmNvbnN0IENBUkVUX0NMUyA9IHtcbiAgICBVUDogJ2ZhLWNhcmV0LXVwJyxcbiAgICBET1dOOiAnZmEtY2FyZXQtZG93bidcbn07XG5jb25zdCBQVUxMX0NMUyA9IHtcbiAgICBMRUZUOiAncHVsbC1sZWZ0JyxcbiAgICBSSUdIVDogJ3B1bGwtcmlnaHQnXG59O1xuXG5jb25zdCBBVVRPX09QRU4gPSB7XG4gICAgTkVWRVI6ICduZXZlcicsXG4gICAgQUNUSVZFX1BBR0U6ICdhY3RpdmVwYWdlJyxcbiAgICBBTFdBWVM6ICdhbHdheXMnXG59O1xuXG5jb25zdCBXSURHRVRfQ09ORklHID0geyB3aWRnZXRUeXBlOiAnd20tbWVudScsIGhvc3RDbGFzczogJ2Ryb3Bkb3duIGFwcC1tZW51JyB9O1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQnNEcm9wZG93bk1vZHVsZSwgQ29tbW9uTW9kdWxlLCBUZXh0Q29udGVudERpcmVjdGl2ZSwgQW5jaG9yQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIE1lbnVEcm9wZG93bkNvbXBvbmVudF0sXG4gICAgc2VsZWN0b3I6ICdbd21NZW51XScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoTWVudUNvbXBvbmVudCksXG5cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgZXh0ZW5kcyBEYXRhc2V0QXdhcmVOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHB1YmxpYyBtZW51YWxpZ246IHN0cmluZztcbiAgICBwdWJsaWMgbWVudXBvc2l0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIG1lbnVsYXlvdXQ6IHN0cmluZztcbiAgICBwdWJsaWMgbWVudWNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGxpbmt0YXJnZXQ6IHN0cmluZztcbiAgICBwdWJsaWMgaWNvbmNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGFuaW1hdGVpdGVtczogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNhYmxlTWVudUNvbnRleHQ6IGJvb2xlYW47XG4gICAgcHVibGljIHNob3dvbmhvdmVyOiBib29sZWFuO1xuICAgIHB1YmxpYyBhdXRvY2xvc2U6IHN0cmluZztcbiAgICBwdWJsaWMgYXV0b29wZW46IHN0cmluZztcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHB1YmxpYyBhcmlhbGFiZWw6IHN0cmluZztcblxuICAgIHByaXZhdGUgaXRlbUFjdGlvbkZuOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIG1lbnVDYXJldCA9ICdmYS1jYXJldC1kb3duJztcbiAgICBwcml2YXRlIF9zZWxlY3RGaXJzdEl0ZW0gPSBmYWxzZTtcblxuICAgIHB1YmxpYyB0eXBlOiBhbnk7XG4gICAgcHVibGljIF9tZW51cG9zaXRpb246IHN0cmluZztcblxuICAgIEBIb3N0TGlzdGVuZXIoJ29uU2hvd24nKSBvblNob3coKSB7XG4gICAgICAgIHRoaXMuX21lbnVwb3NpdGlvbiA9IHRoaXMubWVudXBvc2l0aW9uO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0Rmlyc3RJdGVtKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJz4gdWxbd21tZW51ZHJvcGRvd25dIGxpLmFwcC1tZW51LWl0ZW0nKS5maXJzdCgpLmZpbmQoJz4gYScpLmZvY3VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuICAgIEBIb3N0TGlzdGVuZXIoJ29uSGlkZGVuJykgb25IaWRlKCkge1xuICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJ2xpJykucmVtb3ZlQ2xhc3MoJ29wZW4nKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0Rmlyc3RJdGVtID0gZmFsc2U7XG4gICAgICAgIC8vIHJlc2V0IHRoZSBtZW51cG9zaXRpb24gd2hlbiBkcm9wZG93biBpcyBjbG9zZWRcbiAgICAgICAgdGhpcy5tZW51cG9zaXRpb24gPSB0aGlzLl9tZW51cG9zaXRpb24gPyB0aGlzLl9tZW51cG9zaXRpb24gOiBNRU5VX1BPU0lUSU9OLkRPV05fUklHSFQ7XG4gICAgICAgIHRoaXMuc2V0TWVudVBvc2l0aW9uKCk7XG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93dXAnLCBbJyRldmVudCcsICdcIlVQLUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnLCAnXCJNT1VTRS1FTlRFUlwiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50JywgJ1wiTU9VU0UtTEVBVkVcIiddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dkb3duJywgWyckZXZlbnQnLCAnXCJET1dOLUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93cmlnaHQnLCBbJyRldmVudCcsICdcIlJJR0hULUFSUk9XXCInXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93bGVmdCcsIFsnJGV2ZW50JywgJ1wiTEVGVC1BUlJPV1wiJ10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50JywgJ1wiRU5URVJcIiddKSBvbktleURvd24oJGV2ZW50LCBldmVudEFjdGlvbikge1xuICAgICAgICBjb25zdCBLRVlfTU9WRU1FTlRTID0gY2xvbmUoS0VZQk9BUkRfTU9WRU1FTlRTKTtcbiAgICAgICAgaWYgKHRoaXMubWVudXBvc2l0aW9uID09PSBNRU5VX1BPU0lUSU9OLlVQX1JJR0hUKSB7XG4gICAgICAgICAgICBLRVlfTU9WRU1FTlRTLk1PVkVfVVAgPSAnRE9XTi1BUlJPVyc7XG4gICAgICAgICAgICBLRVlfTU9WRU1FTlRTLk1PVkVfRE9XTiA9ICdVUC1BUlJPVyc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZW51cG9zaXRpb24gPT09IE1FTlVfUE9TSVRJT04uVVBfTEVGVCkge1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1VQID0gJ0RPV04tQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0RPV04gPSAnVVAtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlQgPSAnUklHSFQtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUID0gJ0xFRlQtQVJST1cnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWVudXBvc2l0aW9uID09PSBNRU5VX1BPU0lUSU9OLkRPV05fTEVGVCkge1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlQgPSAnUklHSFQtQVJST1cnO1xuICAgICAgICAgICAgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUID0gJ0xFRlQtQVJST1cnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluY2x1ZGVzKFtLRVlfTU9WRU1FTlRTLk1PVkVfRE9XTiwgS0VZX01PVkVNRU5UUy5NT1ZFX1JJR0hUXSwgZXZlbnRBY3Rpb24pKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYnNEcm9wZG93bi5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RGaXJzdEl0ZW0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYnNEcm9wZG93bi5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuZmluZCgnPiB1bFt3bW1lbnVkcm9wZG93bl0gbGkuYXBwLW1lbnUtaXRlbScpLmZpcnN0KCkuZmluZCgnPiBhJykuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChldmVudEFjdGlvbiA9PT0gS0VZX01PVkVNRU5UUy5PTl9FTlRFUiB8fCAoZXZlbnRBY3Rpb24gPT09IEtFWV9NT1ZFTUVOVFMuT05fTU9VU0VfRU5URVIgJiYgdGhpcy5zaG93b25ob3ZlcikpIHtcbiAgICAgICAgICAgIHRoaXMuYnNEcm9wZG93bi50b2dnbGUodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZXMoW0tFWV9NT1ZFTUVOVFMuTU9WRV9VUCwgS0VZX01PVkVNRU5UUy5NT1ZFX0xFRlRdLCBldmVudEFjdGlvbikgfHwgKGV2ZW50QWN0aW9uID09IEtFWV9NT1ZFTUVOVFMuT05fTU9VU0VfTEVBVkUgJiYgdGhpcy5hdXRvY2xvc2UgPT0gQVVUT0NMT1NFX1RZUEUuQUxXQVlTICYmIHRoaXMuc2hvd29uaG92ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwdWJsaWMgcm91dGU6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSB1c2VyRGVmaW5lZEV4ZWN1dGlvbkNvbnRleHQ6IFVzZXJEZWZpbmVkRXhlY3V0aW9uQ29udGV4dCxcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgYnNEcm9wZG93bjogQnNEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnROYXY6IE5hdkNvbXBvbmVudCxcbiAgICAgICAgQEF0dHJpYnV0ZSgnc2VsZWN0LmV2ZW50JykgcHVibGljIHNlbGVjdEV2ZW50Q0I6IHN0cmluZyxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcbiAgICAgICAgaWYgKHBhcmVudE5hdikge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlTWVudUNvbnRleHQgPSAhIXBhcmVudE5hdi5kaXNhYmxlTWVudUNvbnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVNZW51Q29udGV4dCA9ICEhc2VsZWN0RXZlbnRDQjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGb3Igc2VsZWN0aW5nIHRoZSBpdGVtIG9uIGxvYWRcbiAgICAgICAgY29uc3QgZGF0YXNldFN1YnNjcmlwdGlvbiA9IHRoaXMubm9kZXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy5ub2RlcykpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzTGlua1RvQ3VycmVudFBhZ2UodGhpcy5ub2RlcywgdGhpcy5yb3V0ZS51cmwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tdG9nZ2xlJykgYXMgSFRNTEVsZW1lbnQsICdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gSWYgbWVudSB3aWRnZXQgaXMgaW5zaWRlIG5hdiB3aWRnZXQgdGhlbiBkb250IGNoZWNrIGZvciBpdGVtIGlzYWN0aXZlIHByb3BlcnR5IGJlY2F1c2UgdGhlc2Ugd2lsbCBiZSBoYW5kbGVkIGZvcm0gbmF2IHdpZGdldC5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnROYXYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgaXRlbUZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2V0SXRlbSA9IChub2RlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmb3JFYWNoKG5vZGVzLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1Gb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlzYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTWVudUl0ZW1TZWxlY3QoeyAkZXZlbnQ6IHt9LCAkaXRlbTogaXRlbSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIHRoZSBhY3Rpb24gYXNzb2NpYXRlZCB3aXRoIGFjdGl2ZSBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckl0ZW1BY3Rpb24odGhpcywgaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SXRlbShpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGdldEl0ZW0odGhpcy5ub2Rlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IGRhdGFzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG5cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzZXROb2RlcygpIHtcbiAgICAgICAgc3VwZXIucmVzZXROb2RlcygpO1xuICAgICAgICAvLyBvcGVuIHRoZSBtZW51IGlmIGFueSBvZiBpdHMgbWVudSBpdGVtcyBoYXMgbGluayB0byBjdXJyZW50IHBhZ2UgYW5kIGlmIGF1dG9vcGVuIHZhbHVlIGlzICdhY3RpdmUgcGFnZSdcbiAgICAgICAgaWYgKCh0aGlzLmF1dG9vcGVuID09PSBBVVRPX09QRU4uQUNUSVZFX1BBR0UgJiYgaGFzTGlua1RvQ3VycmVudFBhZ2UodGhpcy5ub2RlcywgdGhpcy5yb3V0ZS51cmwpKSB8fCB0aGlzLmF1dG9vcGVuID09PSBBVVRPX09QRU4uQUxXQVlTKSB7XG4gICAgICAgICAgICB0aGlzLmJzRHJvcGRvd24uc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0TWVudVBvc2l0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgY2FuY2VsU3Vic2NyaXB0aW9uID0gdGhpcy5hcHAuc3Vic2NyaWJlKFwiaGlnaGxpZ2h0QWN0aXZlTGlua1wiLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi10b2dnbGUnKSBhcyBIVE1MRWxlbWVudCwgJ2FjdGl2ZScsIGhhc0xpbmtUb0N1cnJlbnRQYWdlKHRoaXMubm9kZXMsIHRoaXMucm91dGUudXJsICkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBjYW5jZWxTdWJzY3JpcHRpb24oKSk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcblxuICAgICAgICBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5ID09PSAnYXV0b2Nsb3NlJykge1xuICAgICAgICAgICAgdGhpcy5ic0Ryb3Bkb3duLmF1dG9DbG9zZSA9IG52ICE9PSBBVVRPQ0xPU0VfVFlQRS5ESVNBQkxFRDtcbiAgICAgICAgICAgIHRoaXMuYXV0b2Nsb3NlID0gbnY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNZW51UG9zaXRpb24oKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5tZW51cG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uRE9XTl9SSUdIVDpcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLkxFRlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuRE9XTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uRE9XTl9MRUZUOlxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2Ryb3B1cCcpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudWFsaWduID0gUFVMTF9DTFMuUklHSFQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuRE9XTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUE9TSVRJT04uVVBfTEVGVDpcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLlJJR0hUO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUNhcmV0ID0gQ0FSRVRfQ0xTLlVQO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQT1NJVElPTi5VUF9SSUdIVDpcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkcm9wdXAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9IFBVTExfQ0xTLkxFRlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2FyZXQgPSBDQVJFVF9DTFMuVVA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBPU0lUSU9OLklOTElORTpcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVhbGlnbiA9ICdkcm9waW5saW5lLW1lbnUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWVudUl0ZW1TZWxlY3QoYXJncykge1xuICAgICAgICBjb25zdCB7ICRldmVudCB9ID0gYXJncztcbiAgICAgICAgY29uc3QgJGl0ZW0gPSBhcmdzLiRpdGVtLnZhbHVlO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdCcsIHsgJGV2ZW50LCAkaXRlbSB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICAvLyBGaXggdGFiaW5kZXggaWYgaXQncyBOYU4gKGVuc3VyZSBpdCdzIGZpeGVkIGFmdGVyIHZpZXcgaW5pdGlhbGl6YXRpb24pXG4gICAgICAgIGlmICh0aGlzLndpZGdldC50YWJpbmRleCAhPT0gdW5kZWZpbmVkICYmICh0eXBlb2YgdGhpcy53aWRnZXQudGFiaW5kZXggPT09ICdudW1iZXInICYmIGlzTmFOKHRoaXMud2lkZ2V0LnRhYmluZGV4KSkpIHtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0LnRhYmluZGV4ID0gMDtcbiAgICAgICAgICAgICh0aGlzIGFzIGFueSkudGFiaW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmRyb3Bkb3duLXRvZ2dsZScpIGFzIEhUTUxFbGVtZW50LCB0aGlzKTtcbiAgICB9XG59XG4iLCJcblxuPG5nLXRlbXBsYXRlICNpbm5lclRlbXBsYXRlPlxuICA8aSBjbGFzcz1cImFwcC1pY29uIHt7aWNvbmNsYXNzfX1cIj48L2k+XG4gIDxzcGFuIGNsYXNzPVwiY2FwdGlvblwiIFt0ZXh0Q29udGVudF09XCJjYXB0aW9uXCI+PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cInB1bGwtcmlnaHQgY2FyZXQgZmEge3ttZW51Q2FyZXR9fVwiPjwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbkBpZiAodHlwZSA9PT0gJ2FuY2hvcicpIHtcbiAgPGEgd21BbmNob3JcbiAgICBkcm9wZG93blRvZ2dsZVxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYWxhYmVsIHx8ICdNZW51J1wiXG4gICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIlxuICAgIHJvbGU9XCJidXR0b25cIlxuICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgIGhpbnQuYmluZD1cImhpbnRcIlxuICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIHt7bWVudWNsYXNzfX1cIlxuICAgIHNob3J0Y3V0a2V5LmJpbmQ9XCJzaG9ydGN1dGtleVwiXG4gICAgdGFiaW5kZXguYmluZD1cInRhYmluZGV4XCJcbiAgICBjYXB0aW9uLmJpbmQ9XCJjYXB0aW9uXCJcbiAgICBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgaWNvbnBvc2l0aW9uLmJpbmQ9XCJpY29ucG9zaXRpb25cIlxuICAgIGJhZGdldmFsdWUuYmluZD1cImJhZGdldmFsdWVcIlxuICAgID5cbiAgICA8c3BhbiBjbGFzcz1cInB1bGwtcmlnaHQgY2FyZXQgZmFcIiBbbmdDbGFzc109XCJbbWVudUNhcmV0XVwiPjwvc3Bhbj5cbiAgPC9hPlxufSBAZWxzZSB7XG4gIDxidXR0b24gd21CdXR0b25cbiAgICBkcm9wZG93blRvZ2dsZVxuICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYWxhYmVsIHx8ICdNZW51J1wiXG4gICAgY2xhc3M9XCJidG4gYXBwLWJ1dHRvbiBkcm9wZG93bi10b2dnbGUge3ttZW51Y2xhc3N9fVwiXG4gICAgaGludC5iaW5kPVwiaGludFwiXG4gICAgc2hvcnRjdXRrZXkuYmluZD1cInNob3J0Y3V0a2V5XCJcbiAgICB0YWJpbmRleC5iaW5kPVwidGFiaW5kZXhcIlxuICAgIGNhcHRpb24uYmluZD1cImNhcHRpb25cIlxuICAgIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgICBpY29ucG9zaXRpb24uYmluZD1cImljb25wb3NpdGlvblwiPlxuICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodCBjYXJldCBmYVwiIFtuZ0NsYXNzXT1cIlttZW51Q2FyZXRdXCI+PC9zcGFuPlxuICA8L2J1dHRvbj5cbn1cblxuPHVsICpkcm9wZG93bk1lbnUgW2l0ZW1zXT1cIm5vZGVzXCIgW25nQ2xhc3NdPVwibWVudWxheW91dFwiIGNsYXNzPVwiaWNvbi1wb3NpdGlvbi17e2ljb25wb3NpdGlvbn19XCIgcm9sZT1cIm1lbnViYXJcIlxud21NZW51RHJvcGRvd24+PC91bD5cbiJdfQ==
|
|
@@ -756,6 +756,11 @@ class MenuComponent extends DatasetAwareNavComponent {
|
|
|
756
756
|
}
|
|
757
757
|
ngAfterViewInit() {
|
|
758
758
|
super.ngAfterViewInit();
|
|
759
|
+
// Fix tabindex if it's NaN (ensure it's fixed after view initialization)
|
|
760
|
+
if (this.widget.tabindex !== undefined && (typeof this.widget.tabindex === 'number' && isNaN(this.widget.tabindex))) {
|
|
761
|
+
this.widget.tabindex = 0;
|
|
762
|
+
this.tabindex = 0;
|
|
763
|
+
}
|
|
759
764
|
styler(this.nativeElement.querySelector('.dropdown-toggle'), this);
|
|
760
765
|
}
|
|
761
766
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MenuComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i2.UserDefinedExecutionContext }, { token: i2.App }, { token: i3$1.BsDropdownDirective, optional: true, self: true }, { token: NavComponent, optional: true }, { token: 'select.event', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|