ets-fe-ng-sdk 17.0.428 → 17.0.430
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/esm2022/lib/Reusables/reusable-comps/find-item/find-item.component.mjs +6 -3
- package/esm2022/lib/Shared/components/form-generator/form-generator.base.component.mjs +20 -8
- package/esm2022/lib/Shared/components/table-plain/table-base.component.mjs +8 -4
- package/esm2022/lib/Shared/components/table-plain/table-plain.service.mjs +3 -1
- package/esm2022/lib/Shared/components/text-case-2/text-case-2.component.mjs +2 -2
- package/esm2022/lib/Shared/prototypes/prototypes.mjs +11 -5
- package/fesm2022/ets-fe-ng-sdk.mjs +40 -14
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Reusables/reusable-comps/find-item/find-item.component.d.ts +3 -2
- package/lib/Services/api.service.d.ts +1 -1
- package/lib/Shared/components/form-generator/form-generated-value/form-generated-value.component.d.ts +1 -1
- package/lib/Shared/components/form-generator/form-generator.base.component.d.ts +9 -2
- package/lib/Shared/components/index-comp-layout/index-comp-layout.component.d.ts +1 -1
- package/lib/Shared/components/page-template/page-template.component.d.ts +1 -1
- package/lib/Shared/components/table-plain/table-base.component.d.ts +4 -2
- package/lib/Shared/components/table-plain/table-plain.service.d.ts +4 -0
- package/lib/Shared/components/text-case-2/text-case-2.component.d.ts +4 -4
- package/lib/Shared/prototypes/prototypes.d.ts +14 -3
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
2
|
-
import { ChangeDetectorRef, Component, EventEmitter, Output, ViewChild, computed, inject, input, signal, } from '@angular/core';
|
|
2
|
+
import { ChangeDetectorRef, Component, EventEmitter, Output, ViewChild, computed, inject, input, model, signal, } from '@angular/core';
|
|
3
3
|
import { MatPaginator as MatPaginator } from '@angular/material/paginator';
|
|
4
4
|
import { MatSort } from '@angular/material/sort';
|
|
5
5
|
import { cloneDeep } from 'lodash-es';
|
|
@@ -45,7 +45,10 @@ export class TableBaseComponent {
|
|
|
45
45
|
this.useSelection = input(false);
|
|
46
46
|
this.formSchemaToColumns = input();
|
|
47
47
|
this.uploadSchemaToColumns = input();
|
|
48
|
-
this.
|
|
48
|
+
this._displayedColumns = input([], { alias: 'displayedColumns' });
|
|
49
|
+
this.displayedColumns = computed(() => this.useCustomLabels()
|
|
50
|
+
? this.tS.globalColumnsFormatter(this._displayedColumns())
|
|
51
|
+
: this._displayedColumns());
|
|
49
52
|
this.overrideDisplayedColumns = signal(null);
|
|
50
53
|
this.displayedColumnsNoAC = computed(() => cloneDeep(this.displayedColumns()?.filter((x) => !x.additionalColumn)));
|
|
51
54
|
this.displayedColumnsMap = computed(() => cloneDeep(this.displayedColumns()?.toMap('f')));
|
|
@@ -85,6 +88,7 @@ export class TableBaseComponent {
|
|
|
85
88
|
this.cellFormatterMap = {};
|
|
86
89
|
this.uS = inject(UtilityService);
|
|
87
90
|
this.tS = inject(TableService);
|
|
91
|
+
this.useCustomLabels = model(true);
|
|
88
92
|
/** Whether the number of selected elements matches the total number of rows. */
|
|
89
93
|
this.isAllSelected = computed(() => this.selectedItemsSignal().length == this.data()?.length);
|
|
90
94
|
this.isAnySelected = computed(() => this.selectedItemsSignal().length > 0);
|
|
@@ -229,7 +233,7 @@ export class TableBaseComponent {
|
|
|
229
233
|
this.cdr.detectChanges();
|
|
230
234
|
}
|
|
231
235
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: TableBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
232
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: TableBaseComponent, isStandalone: true, selector: "ng-component", inputs: { rowOptions: { classPropertyName: "rowOptions", publicName: "rowOptions", isSignal: true, isRequired: false, transformFunction: null }, centerCells: { classPropertyName: "centerCells", publicName: "centerCells", isSignal: true, isRequired: false, transformFunction: null }, curvy: { classPropertyName: "curvy", publicName: "curvy", isSignal: true, isRequired: false, transformFunction: null }, distinct: { classPropertyName: "distinct", publicName: "distinct", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, isExpandable: { classPropertyName: "isExpandable", publicName: "isExpandable", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, isDisabledFunc: { classPropertyName: "isDisabledFunc", publicName: "isDisabledFunc", isSignal: true, isRequired: false, transformFunction: null }, noItemTxt: { classPropertyName: "noItemTxt", publicName: "noItemTxt", isSignal: true, isRequired: false, transformFunction: null }, nowrap: { classPropertyName: "nowrap", publicName: "nowrap", isSignal: true, isRequired: false, transformFunction: null }, expandedRowTemplate: { classPropertyName: "expandedRowTemplate", publicName: "expandedRowTemplate", isSignal: true, isRequired: false, transformFunction: null }, orderDirection: { classPropertyName: "orderDirection", publicName: "orderDirection", isSignal: true, isRequired: false, transformFunction: null }, orderField: { classPropertyName: "orderField", publicName: "orderField", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, startSectionTemplate: { classPropertyName: "startSectionTemplate", publicName: "startSectionTemplate", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, placeSelectionAtRight: { classPropertyName: "placeSelectionAtRight", publicName: "placeSelectionAtRight", isSignal: true, isRequired: false, transformFunction: null }, showAdditionalColumns: { classPropertyName: "showAdditionalColumns", publicName: "showAdditionalColumns", isSignal: true, isRequired: false, transformFunction: null }, showExport: { classPropertyName: "showExport", publicName: "showExport", isSignal: true, isRequired: false, transformFunction: null }, showRowPointer: { classPropertyName: "showRowPointer", publicName: "showRowPointer", isSignal: true, isRequired: false, transformFunction: null }, smallerFonts: { classPropertyName: "smallerFonts", publicName: "smallerFonts", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, tableContainerClass: { classPropertyName: "tableContainerClass", publicName: "tableContainerClass", isSignal: true, isRequired: false, transformFunction: null }, useSelection: { classPropertyName: "useSelection", publicName: "useSelection", isSignal: true, isRequired: false, transformFunction: null }, formSchemaToColumns: { classPropertyName: "formSchemaToColumns", publicName: "formSchemaToColumns", isSignal: true, isRequired: false, transformFunction: null }, uploadSchemaToColumns: { classPropertyName: "uploadSchemaToColumns", publicName: "uploadSchemaToColumns", isSignal: true, isRequired: false, transformFunction: null },
|
|
236
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: TableBaseComponent, isStandalone: true, selector: "ng-component", inputs: { rowOptions: { classPropertyName: "rowOptions", publicName: "rowOptions", isSignal: true, isRequired: false, transformFunction: null }, centerCells: { classPropertyName: "centerCells", publicName: "centerCells", isSignal: true, isRequired: false, transformFunction: null }, curvy: { classPropertyName: "curvy", publicName: "curvy", isSignal: true, isRequired: false, transformFunction: null }, distinct: { classPropertyName: "distinct", publicName: "distinct", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, isExpandable: { classPropertyName: "isExpandable", publicName: "isExpandable", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, isDisabledFunc: { classPropertyName: "isDisabledFunc", publicName: "isDisabledFunc", isSignal: true, isRequired: false, transformFunction: null }, noItemTxt: { classPropertyName: "noItemTxt", publicName: "noItemTxt", isSignal: true, isRequired: false, transformFunction: null }, nowrap: { classPropertyName: "nowrap", publicName: "nowrap", isSignal: true, isRequired: false, transformFunction: null }, expandedRowTemplate: { classPropertyName: "expandedRowTemplate", publicName: "expandedRowTemplate", isSignal: true, isRequired: false, transformFunction: null }, orderDirection: { classPropertyName: "orderDirection", publicName: "orderDirection", isSignal: true, isRequired: false, transformFunction: null }, orderField: { classPropertyName: "orderField", publicName: "orderField", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, startSectionTemplate: { classPropertyName: "startSectionTemplate", publicName: "startSectionTemplate", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, placeSelectionAtRight: { classPropertyName: "placeSelectionAtRight", publicName: "placeSelectionAtRight", isSignal: true, isRequired: false, transformFunction: null }, showAdditionalColumns: { classPropertyName: "showAdditionalColumns", publicName: "showAdditionalColumns", isSignal: true, isRequired: false, transformFunction: null }, showExport: { classPropertyName: "showExport", publicName: "showExport", isSignal: true, isRequired: false, transformFunction: null }, showRowPointer: { classPropertyName: "showRowPointer", publicName: "showRowPointer", isSignal: true, isRequired: false, transformFunction: null }, smallerFonts: { classPropertyName: "smallerFonts", publicName: "smallerFonts", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, tableContainerClass: { classPropertyName: "tableContainerClass", publicName: "tableContainerClass", isSignal: true, isRequired: false, transformFunction: null }, useSelection: { classPropertyName: "useSelection", publicName: "useSelection", isSignal: true, isRequired: false, transformFunction: null }, formSchemaToColumns: { classPropertyName: "formSchemaToColumns", publicName: "formSchemaToColumns", isSignal: true, isRequired: false, transformFunction: null }, uploadSchemaToColumns: { classPropertyName: "uploadSchemaToColumns", publicName: "uploadSchemaToColumns", isSignal: true, isRequired: false, transformFunction: null }, _displayedColumns: { classPropertyName: "_displayedColumns", publicName: "displayedColumns", isSignal: true, isRequired: false, transformFunction: null }, useCustomLabels: { classPropertyName: "useCustomLabels", publicName: "useCustomLabels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { _rowClick: "rowClick", selectionChanged: "selectionChanged", emitCheckbox: "emitCheckbox", useCustomLabels: "useCustomLabelsChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "table", first: true, predicate: ["table"], descendants: true }], ngImport: i0, template: '', isInline: true }); }
|
|
233
237
|
}
|
|
234
238
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: TableBaseComponent, decorators: [{
|
|
235
239
|
type: Component,
|
|
@@ -255,4 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
255
259
|
type: ViewChild,
|
|
256
260
|
args: ['table']
|
|
257
261
|
}] } });
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtcGxhaW4vdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUdOLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksSUFBSSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBUTNDLE1BQU0sT0FBZ0Isa0JBQWtCO0lBTHhDO1FBTXFCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxQyxlQUFVLEdBQUcsS0FBSyxFQUF1QixDQUFDO1FBQzFDLGdCQUFXLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLFVBQUssR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDOUIsYUFBUSxH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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbkNoYW5nZSwgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgV3JpdGFibGVTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIGFzIE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZSBhcyBNYXRUYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXNjaGVtYS5tb2RlbCc7XG5pbXBvcnQge1xuICBJT2JqZWN0TGl0ZXJhbCxcbiAgSVJvd09wdGlvbixcbiAgSVN0cmljdEZvcm1Hcm91cCxcbiAgU29ydFR5cGUsXG4gIFRhYmxlQ29sLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1wbGFpbi5zZXJ2aWNlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGgsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlQ29tcG9uZW50PFRJdGVtIGV4dGVuZHMgSU9iamVjdExpdGVyYWw+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5IHJvd09wdGlvbnMgPSBpbnB1dDxJUm93T3B0aW9uPFRJdGVtPltdPigpO1xuICByZWFkb25seSBjZW50ZXJDZWxscyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY3VydnkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc3RpbmN0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKkFwcGVhcnMgYWJvdmUgdGhlIHRhYmxlICovXG4gIHJlYWRvbmx5IGhlYWRlciA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgaXNFeHBhbmRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogVXNlZCB0byBuYW1lIG1ldGFkYXRhIG9mIHRoZSB0YWJsZSBsaWtlIGV4cG9ydGVkIGZpbGVzICovXG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBpc0Rpc2FibGVkRnVuYyA9IGlucHV0PChyb3c6IFRJdGVtKSA9PiBib29sZWFuPigpO1xuICByZWFkb25seSBub0l0ZW1UeHQgPSBpbnB1dCgnVGhlcmUgYXJlIG5vIGl0ZW1zJyk7XG4gIHJlYWRvbmx5IG5vd3JhcCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBleHBhbmRlZFJvd1RlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgb3JkZXJEaXJlY3Rpb24gPSBpbnB1dDxTb3J0VHlwZT4oJ2FzYycpO1xuICByZWFkb25seSBvcmRlckZpZWxkID0gaW5wdXQ8a2V5b2YgVEl0ZW0+KCk7XG4gIHJlYWRvbmx5IHBhZ2VTaXplID0gaW5wdXQoMTApO1xuICByZWFkb25seSBzdGFydFNlY3Rpb25UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50Pj4oKTtcbiAgcmVhZG9ubHkgY29tcHV0ZWRQYWdlU2l6ZU9wdGlvbnMgPSBjb21wdXRlZDxudW1iZXJbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLmRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMoKSxcbiAgICAgIHBhZ2VTaXplT3B0aW9ucyA9IHRoaXMucGFnZVNpemVPcHRpb25zKCksXG4gICAgICByZXN1bHRzTGVuZ3RoID0gdGhpcy5yZXN1bHRzTGVuZ3RoKCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHBhZ2VTaXplT3B0aW9ucz8ubGVuZ3RoID8gcGFnZVNpemVPcHRpb25zIDogZGVmYXVsdFBhZ2VTaXplT3B0aW9ucztcbiAgICByZXR1cm4gb3B0aW9ucy5jb25jYXQob3B0aW9ucz8ubGFzdEl0ZW0oKSA+IHJlc3VsdHNMZW5ndGggPyBbXSA6IFtyZXN1bHRzTGVuZ3RoXSk7XG4gIH0pO1xuICByZWFkb25seSBkZWZhdWx0UGFnZVNpemVPcHRpb25zID0gc2lnbmFsKFs1LCAxMCwgMjAsIDUwLCAxMDAsIDUwMCwgMTAwMCwgNTAwMF0pO1xuICByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBpbnB1dDxudW1iZXJbXT4oKTtcbiAgcmVhZG9ubHkgcGxhY2VTZWxlY3Rpb25BdFJpZ2h0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBzdXBwb3J0IGN1c3RvbWl6aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0IGNoZWNrYm94ZXMuXG4gIHJlYWRvbmx5IHNob3dBZGRpdGlvbmFsQ29sdW1ucyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd0V4cG9ydCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd1Jvd1BvaW50ZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNtYWxsZXJGb250cyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc3RyaXBlZCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSB0YWJsZUNvbnRhaW5lckNsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB1c2VTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgZm9ybVNjaGVtYVRvQ29sdW1ucyA9IGlucHV0PElGb3JtU2NoZW1hPElTdHJpY3RGb3JtR3JvdXA8VEl0ZW0+PltdPigpO1xuICByZWFkb25seSB1cGxvYWRTY2hlbWFUb0NvbHVtbnMgPSBpbnB1dDx7IGZpZWxkPzoga2V5b2YgVEl0ZW07IGxhYmVsPzogc3RyaW5nIH1bXT4oKTtcblxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gaW5wdXQ8VGFibGVDb2w8VEl0ZW0+W10+KCk7XG4gIHJlYWRvbmx5IG92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucyA9IHNpZ25hbDxUYWJsZUNvbDxUSXRlbT5bXT4obnVsbCk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1uc05vQUMgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNsb25lRGVlcCh0aGlzLmRpc3BsYXllZENvbHVtbnMoKT8uZmlsdGVyKCh4KSA9PiAheC5hZGRpdGlvbmFsQ29sdW1uKSksXG4gICk7XG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnNNYXAgPSBjb21wdXRlZCgoKSA9PiBjbG9uZURlZXAodGhpcy5kaXNwbGF5ZWRDb2x1bW5zKCk/LnRvTWFwKCdmJykpKTtcbiAgcmVhZG9ubHkgY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zTWFwID0gY29tcHV0ZWQoKCkgPT5cbiAgICBjbG9uZURlZXAoXG4gICAgICB0aGlzLmNvbXB1dGVkRGlzcGxheWVkQ29sdW1ucygpPy50b01hcCgnZicpIGFzIHsgW2sgaW4ga2V5b2YgVEl0ZW1dOiBUYWJsZUNvbDxUSXRlbT4gfSxcbiAgICApLFxuICApO1xuXG4gIHJlYWRvbmx5IGNvbXB1dGVkRGlzcGxheWVkQ29sdW1ucyA9IGNvbXB1dGVkPFRhYmxlQ29sPFRJdGVtPltdPigoKSA9PiB7XG4gICAgY29uc3QgZGMgPVxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnNOb0FDKCk/Lm1hcCgoYykgPT4ge1xuICAgICAgICAgIGlmICghYy50KSB7XG4gICAgICAgICAgICBpZiAoYy50eXBlID09ICdidXR0b24nKSBjLnQgPSAnQWN0aW9uJztcbiAgICAgICAgICAgIGVsc2UgaWYgKGMudHlwZSA9PSAnYnRucycpIGMudCA9ICdBY3Rpb25zJztcbiAgICAgICAgICAgIGMuc3RpY2t5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgIH0pIHx8IFtdLFxuICAgICAgb3ZlcnJpZGVDb2x1bW5zID0gdGhpcy5vdmVycmlkZURpc3BsYXllZENvbHVtbnMoKSxcbiAgICAgIGZvcm1TY2hlbWFUb0NvbHVtbnMgPSB0aGlzLmZvcm1TY2hlbWFUb0NvbHVtbnMoKSxcbiAgICAgIHVwbG9hZFNjaGVtYVRvQ29sdW1ucyA9IHRoaXMudXBsb2FkU2NoZW1hVG9Db2x1bW5zKCk7XG4gICAgbGV0IGNvbHVtbnMgPSAob3ZlcnJpZGVDb2x1bW5zPy5sZW5ndGggPyBvdmVycmlkZUNvbHVtbnMgOiBkYylcbiAgICAgIC5jb25jYXQoXG4gICAgICAgIGZvcm1TY2hlbWFUb0NvbHVtbnM/Lm1hcCgoeCkgPT4gKHtcbiAgICAgICAgICBmOiB4LmZpZWxkIGFzIGtleW9mIFRJdGVtLFxuICAgICAgICAgIHQ6IHgubGFiZWwsXG4gICAgICAgICAgZm9ybWF0dGVyOiB4LnRhYmxlRm9ybWF0dGVyLFxuICAgICAgICB9KSkgfHwgW10sXG4gICAgICApXG4gICAgICAuY29uY2F0KFxuICAgICAgICB1cGxvYWRTY2hlbWFUb0NvbHVtbnM/LmZpbHRlcigoeCkgPT4geC5maWVsZCkubWFwKCh4KSA9PiAoeyBmOiB4LmZpZWxkLCB0OiB4LmxhYmVsIH0pKSB8fFxuICAgICAgICAgIFtdLFxuICAgICAgKTtcbiAgICBjb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoKHgpID0+IHguZik7XG4gICAgdGhpcy5hdXRvU2V0Q29sdW1uRm9ybWF0dGVyKGNvbHVtbnMpO1xuICAgIHJldHVybiBjb2x1bW5zO1xuICB9KTtcblxuICBAT3V0cHV0KCdyb3dDbGljaycpIF9yb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VEl0ZW0+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb25DaGFuZ2U8YW55Pj4oKTtcbiAgQE91dHB1dCgpIGVtaXRDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGZpZWxkOiBrZXlvZiBUSXRlbTtcbiAgICBpdGVtOiBUSXRlbTtcbiAgICB2YWx1ZTogYm9vbGVhbjtcbiAgfT4oKTtcblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc29ydDogTWF0U29ydDtcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZTogTWF0VGFibGU8YW55PjtcbiAgcmVhZG9ubHkgcmVzdWx0c0xlbmd0aDogU2lnbmFsPG51bWJlcj47XG4gIHByb3RlY3RlZCByZWFkb25seSBzdGFydGVyU2VjdGlvbkNsYXNzID0gc2lnbmFsKCdyb3cgcm93LWNvbHMtbGctYXV0byBnLTMgYWxpZ24taXRlbXMtY2VudGVyJyk7XG4gIHJlYWRvbmx5IHJhd0NvbHVtbnMgPSBjb21wdXRlZDxzdHJpbmdbXT4oKCkgPT5cbiAgICB0aGlzLnRTLmdldFJhd0ZpZWxkcyhcbiAgICAgIHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zKCksXG4gICAgICB0aGlzLnJvd09wdGlvbnMoKT8ubGVuZ3RoLFxuICAgICAgdGhpcy51c2VTZWxlY3Rpb24oKSxcbiAgICAgIHRoaXMucGxhY2VTZWxlY3Rpb25BdFJpZ2h0KCksXG4gICAgICB0aGlzLmlzRXhwYW5kYWJsZSgpLFxuICAgICksXG4gICk7XG4gIHJlYWRvbmx5IGV4cGFuZGVkRWxlbWVudCA9IHNpZ25hbDxUSXRlbT4obnVsbCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUSXRlbT4odHJ1ZSwgW10pO1xuICBwcm90ZWN0ZWQgX3NlbGVjdGlvbkNoYW5nZWQgPSB0b1NpZ25hbCh0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtc1NpZ25hbCA9IHRvU2lnbmFsKFxuICAgIHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQucGlwZShcbiAgICAgIHRhcCgocikgPT4gdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQocikpLFxuICAgICAgbWFwKChyKSA9PiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCksXG4gICAgICBzdGFydFdpdGgoW10pLFxuICAgICksXG4gICk7XG5cbiAgcmVhZG9ubHkgY2VsbEZvcm1hdHRlck1hcDoge1xuICAgIFtrIGluIGtleW9mIFRJdGVtXT86IHtcbiAgICAgIG5vRm9ybWF0PzogYm9vbGVhbjtcbiAgICAgIGZvcm1hdHRlcj86IFRhYmxlQ29sWydmb3JtYXR0ZXInXTtcbiAgICB9O1xuICB9ID0ge307XG4gIHB1YmxpYyB1UyA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG4gIHB1YmxpYyB0UyA9IGluamVjdChUYWJsZVNlcnZpY2UpO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MuICovXG4gIHJlYWRvbmx5IGlzQWxsU2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXNTaWduYWwoKS5sZW5ndGggPT0gdGhpcy5kYXRhKCk/Lmxlbmd0aCk7XG4gIHJlYWRvbmx5IGlzQW55U2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXNTaWduYWwoKS5sZW5ndGggPiAwKTtcblxuICAvKiogVGhlIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggb24gdGhlIHBhc3NlZCByb3cgKi9cbiAgY2hlY2tib3hMYWJlbChyb3c/OiBUSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gYWxsYDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gcm93IGA7XG4gIH1cblxuICBmaWVsZHNDaGFuZ2VkKCRldmVudDogeyBuRmllbGRzOiBUYWJsZUNvbFtdOyBhbGxGaWVsZHM6IFRhYmxlQ29sW10gfSkge1xuICAgIGNvbnN0IGNvbHMgPSAkZXZlbnQubkZpZWxkcztcbiAgICB0aGlzLm92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucy5zZXQoXG4gICAgICBjb2xzXG4gICAgICAgIC5maWx0ZXIoKHgpID0+ICEoeC50eXBlID09ICdidG5zJyAmJiB4LnN0aWNreSkpXG4gICAgICAgIC5jb25jYXQoY29scy5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnYnRucycgJiYgeC5zdGlja3kpKVxuICAgICAgICAubWFwKCh4KSA9PiB7XG4gICAgICAgICAgaWYgKHgudHlwZSA9PT0gJ251bWJlcicpIHguZm9ybWF0dGVyID0gdGhpcy51Uy5tb25leVBhcnNlcjtcbiAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGdldEFjdGlvblN0YXR1c0NhbGxiYWNrKGNvbCkge1xuICAgIHJldHVybiAoc3RhdGU6IGJvb2xlYW4pID0+IChjb2wuYnRuLmxvYWRpbmcgPSBzdGF0ZSk7XG4gIH1cbiAgcmVhZG9ubHkgZGF0YTogV3JpdGFibGVTaWduYWw8VEl0ZW1bXT47XG5cbiAgYXV0b1NldENvbHVtbkZvcm1hdHRlciA9IChjb2x1bW5zOiBUYWJsZUNvbDxUSXRlbT5bXSkgPT4ge1xuICAgIGlmICghY29sdW1ucykgcmV0dXJuO1xuICAgIGNvbnN0IGNlbGxzVG9DaGVja0ZvcjogeyBbayBpbiBrZXlvZiBUSXRlbV0/OiBudW1iZXIgfSA9IHt9O1xuICAgIC8vIGNvbnN0IGRhdGVGaWVsZHMgPSB7IGNyZWF0ZWRPbjogMSwgdXBkYXRlZE9uOiAxIH07XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvbHVtbnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBpdGVtID0gY29sdW1uc1tpbmRleF07XG4gICAgICBpZiAoaXRlbS5ub0Zvcm1hdCB8fCBpdGVtLmZvcm1hdHRlciB8fCBpdGVtLmZvcm1hdHRlclJvdykge1xuICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBbaXRlbS5mXSA9IHtcbiAgICAgICAgICBub0Zvcm1hdDogaXRlbS5ub0Zvcm1hdCxcbiAgICAgICAgICBmb3JtYXR0ZXI6IGl0ZW0uZm9ybWF0dGVyLFxuICAgICAgICB9O1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNhdmVkQ29uZmlnID0gdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2l0ZW0uZl07XG4gICAgICBpZiAoc2F2ZWRDb25maWcpIHtcbiAgICAgICAgaXRlbS5ub0Zvcm1hdCA9IHNhdmVkQ29uZmlnLm5vRm9ybWF0O1xuICAgICAgICBpdGVtLmZvcm1hdHRlciA9IHNhdmVkQ29uZmlnLmZvcm1hdHRlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpdGVtRmllbGRMb3dlciA9IGl0ZW0uZj8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaXRlbUZpZWxkTG93ZXIgPT0gJ2lkJyB8fFxuICAgICAgICAgIGl0ZW1GaWVsZExvd2VyLmluY2x1ZGVzKCd5ZWFyJykgfHxcbiAgICAgICAgICBpdGVtRmllbGRMb3dlci5pbmNsdWRlcygnYWdlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXRlbS5ub0Zvcm1hdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2l0ZW0uZl0gPSBpdGVtO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNlbGxzVG9DaGVja0ZvcltpdGVtLmZdID0gaW5kZXg7XG4gICAgfVxuICAgIGlmICghdGhpcy5kYXRhKCkpIHJldHVybjtcbiAgICBjb25zb2xlLmxvZygnY2VsbHNUb0NoZWNrRm9yJywgSlNPTi5zdHJpbmdpZnkoY2VsbHNUb0NoZWNrRm9yKSk7XG4gICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5kYXRhKCkpIHtcbiAgICAgIGlmICghT2JqZWN0LmtleXMoY2VsbHNUb0NoZWNrRm9yKS5sZW5ndGgpIGJyZWFrO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY2VsbHNUb0NoZWNrRm9yKSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBjb2x1bW5zW2NlbGxzVG9DaGVja0ZvcltrZXldXTtcbiAgICAgICAgY29uc3QgdHlwZW8gPSB0eXBlb2Ygcm93W2tleV07XG4gICAgICAgIGlmICh0eXBlbyA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBjZWxsLmZvcm1hdHRlciA9IHRoaXMudVMueWVzTm9DZWxsRm9ybWF0dGVyO1xuICAgICAgICAgIGRlbGV0ZSBjZWxsc1RvQ2hlY2tGb3Jba2V5XTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IGNlbGw7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW8gPT0gJ251bWJlcicpIHtcbiAgICAgICAgICBjZWxsLmZvcm1hdHRlciA9IHRoaXMudVMubW9uZXlQYXJzZXI7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVTLmlzRGF0VGltZVZhbHVlKHJvd1trZXldKSkge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5mdWxsRGF0ZVRpbWU7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVTLmlzRGF0ZVZhbHVlKHJvd1trZXldKSkge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5kYXRlRm9ybWF0O1xuICAgICAgICAgIGRlbGV0ZSBjZWxsc1RvQ2hlY2tGb3Jba2V5XTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IGNlbGw7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY2VsbHNUb0NoZWNrRm9yKSB7XG4gICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IHsgbm9Gb3JtYXQ6IHRydWUgfTtcbiAgICB9XG4gIH07XG5cbiAgb3V0cHV0Q2hlY2tib3goZmllbGQ6IGtleW9mIFRJdGVtLCBpdGVtOiBUSXRlbSwgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuZW1pdENoZWNrYm94LmVtaXQoeyBmaWVsZCwgaXRlbSwgdmFsdWUgfSk7XG4gIH1cblxuICByZWFkb25seSBhbGxUYWJsZUNvbHVtbnMgPSBjb21wdXRlZDxUYWJsZUNvbDxUSXRlbT5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmRhdGEoKT8uWzBdIHx8IHt9KSxcbiAgICAgIGRpc3BsYXllZENvbHVtbnNNYXAgPSB0aGlzLmRpc3BsYXllZENvbHVtbnNNYXAoKSxcbiAgICAgIGNvbXB1dGVkRGlzcGxheWVkQ29sdW1uc01hcCA9IHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zTWFwKCk7XG5cbiAgICByZXR1cm4ga2V5c1xuICAgICAgLm1hcCgoaykgPT4ge1xuICAgICAgICBjb25zdCBlID0gZGlzcGxheWVkQ29sdW1uc01hcFtrXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5lLFxuICAgICAgICAgIGY6IGsgYXMgYW55LFxuICAgICAgICAgIHQ6IGU/LnQgfHwgdGhpcy51Uy5mb3JtYXRGaWVsZChrKSxcbiAgICAgICAgICBhY3RpdmU6ICEhY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zTWFwW2tdLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgICh4KSA9PiAhKHg/LmY/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnaWQnKSAmJiB4Py5mPy50b1N0cmluZygpLmxlbmd0aCA9PT0gMiksXG4gICAgICApXG4gICAgICAuc29ydDIoJ3QnLCB0cnVlKTtcbiAgfSk7XG5cbiAgcm93Q2xpY2soZTogVEl0ZW0pIHtcbiAgICB0aGlzLl9yb3dDbGljay5lbWl0KGUpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkO1xuICB9XG5cbiAgZXh0cmFjdFJvdXRlID0gKGNlbGw6IFRhYmxlQ29sLCByb3c6IFRJdGVtKTogeyByb3V0ZTogc3RyaW5nOyBxdWVyeVBhcmFtczoge30gfSA9PiB7XG4gICAgY29uc3QgW3JvdXRlLCBxcF0gPSBjZWxsLnJvdXRlRm9ybWF0dGVyKHJvdyk/LnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSAoY2VsbC5tcXVlcnlQYXJhbXMgPyBjZWxsLm1xdWVyeVBhcmFtcyhyb3cpIDoge30pIHx8IHt9O1xuICAgIGlmIChxcClcbiAgICAgIHFwLnNwbGl0KCcmJykuZm9yRWFjaCgocSkgPT4ge1xuICAgICAgICBjb25zdCBbZmllbGQsIHZhbF0gPSBxLnNwbGl0KCc9Jyk7XG4gICAgICAgIHF1ZXJ5UGFyYW1zW2ZpZWxkXSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHJvdXRlLCBxcCk7XG4gICAgcmV0dXJuIHsgcm91dGUsIHF1ZXJ5UGFyYW1zIH07XG4gIH07XG5cbiAgcmVhZG9ubHkgbmdBZnRlclZpZXdJbml0U2lnbmFsID0gc2lnbmFsPG51bWJlcj4obnVsbCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRDZWxsRm9yRXhwYW5zaW9uID0gc2lnbmFsPHsgY29sdW1uOiBUYWJsZUNvbDsgcm93OiBUSXRlbSB9Pih1bmRlZmluZWQpO1xuXG4gIGV4cGFuZENlbGwocm93OiBUSXRlbSwgY29sdW1uOiBUYWJsZUNvbCwgbW9kYWw6IE1vZGFsQ29tcG9uZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHsgcm93LCBjb2x1bW4gfSk7XG4gICAgbW9kYWwub3BlbigpO1xuICB9XG5cbiAgY2xvc2VFeHBhbmRlZENlbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICByZWZyZXNoVUkoKSB7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iXX0=
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtcGxhaW4vdGFibGUtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUdOLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLElBQUksWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFTdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVEzQyxNQUFNLE9BQWdCLGtCQUFrQjtJQUx4QztRQU1xQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUMsZUFBVSxHQUFHLEtBQUssRUFBdUIsQ0FBQztRQUMxQyxnQkFBVyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNwQyxVQUFLLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzlCLGFBQVEsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDekMsNkJBQTZCO1FBQ3BCLFdBQU0sR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUN6QixpQkFBWSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM5Qyw2REFBNkQ7UUFDcEQsVUFBSyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsS0FBSyxFQUEyQixDQUFDO1FBQ2xELGNBQVMsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4QyxXQUFNLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQzlCLHdCQUFtQixHQUFHLEtBQUssRUFBb0IsQ0FBQztRQUNoRCxtQkFBYyxHQUFHLEtBQUssQ0FBVyxLQUFLLENBQUMsQ0FBQztRQUN4QyxlQUFVLEdBQUcsS0FBSyxFQUFlLENBQUM7UUFDbEMsYUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQix5QkFBb0IsR0FBRyxLQUFLLEVBQTRCLENBQUM7UUFDekQsNEJBQXVCLEdBQUcsUUFBUSxDQUFXLEdBQUcsRUFBRTtZQUN6RCxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUMxRCxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUN4QyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7WUFDbkYsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLENBQUMsQ0FBQyxDQUFDO1FBQ00sMkJBQXNCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkUsb0JBQWUsR0FBRyxLQUFLLEVBQVksQ0FBQztRQUNwQywwQkFBcUIsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyw2REFBNkQ7UUFDNUcsMEJBQXFCLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzlDLGVBQVUsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkMsbUJBQWMsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdkMsaUJBQVksR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDckMsWUFBTyxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUMvQix3QkFBbUIsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVyQyx3QkFBbUIsR0FBRyxLQUFLLEVBQTBDLENBQUM7UUFDdEUsMEJBQXFCLEdBQUcsS0FBSyxFQUE2QyxDQUFDO1FBRTNFLHNCQUFpQixHQUFHLEtBQUssQ0FBb0IsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUNoRixxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ3hDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDMUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUM3QixDQUFDO1FBQ08sNkJBQXdCLEdBQUcsTUFBTSxDQUFvQixJQUFJLENBQUMsQ0FBQztRQUUzRCx5QkFBb0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQzVDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FDdkUsQ0FBQztRQUNPLHdCQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRixnQ0FBMkIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ25ELFNBQVMsQ0FDUCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUE0QyxDQUN2RixDQUNGLENBQUM7UUFFTyw2QkFBd0IsR0FBRyxRQUFRLENBQW9CLEdBQUcsRUFBRTtZQUNuRSxNQUFNLEVBQUUsR0FDSixJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ1IsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLFFBQVE7d0JBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7eUJBQ2xDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNO3dCQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUMzQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztpQkFDakI7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQ1YsZUFBZSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUNqRCxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFDaEQscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDdkQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDM0QsTUFBTSxDQUNMLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFvQjtnQkFDekIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNWLFNBQVMsRUFBRSxDQUFDLENBQUMsY0FBYzthQUM1QixDQUFDLENBQUMsSUFBSSxFQUFFLENBQ1Y7aUJBQ0EsTUFBTSxDQUNMLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDcEYsRUFBRSxDQUNMLENBQUM7WUFDSixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUVpQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUM1RCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUlyQyxDQUFDO1FBTWMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDdEYsZUFBVSxHQUFHLFFBQVEsQ0FBVyxHQUFHLEVBQUUsQ0FDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQ2xCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUMvQixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLEVBQ25CLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUM1QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQ3BCLENBQ0YsQ0FBQztRQUNPLG9CQUFlLEdBQUcsTUFBTSxDQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3RDLGNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBUSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0Msc0JBQWlCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsd0JBQW1CLEdBQUcsUUFBUSxDQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3pCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQ25DLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FDZCxDQUNGLENBQUM7UUFFTyxxQkFBZ0IsR0FLckIsRUFBRSxDQUFDO1FBQ0EsT0FBRSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QixPQUFFLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLGdGQUFnRjtRQUN2RSxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pGLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQTRCL0UsMkJBQXNCLEdBQUcsQ0FBQyxPQUEwQixFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTztZQUNyQixNQUFNLGVBQWUsR0FBb0MsRUFBRSxDQUFDO1lBQzVELHFEQUFxRDtZQUNyRCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDbkQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUN4RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO3dCQUM5QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztxQkFDMUIsQ0FBQztvQkFDRixTQUFTO2lCQUNWO2dCQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xELElBQUksV0FBVyxFQUFFO29CQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztvQkFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO29CQUN2QyxTQUFTO2lCQUNWO3FCQUFNO29CQUNMLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3hELElBQ0UsY0FBYyxJQUFJLElBQUk7d0JBQ3RCLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO3dCQUMvQixjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUM5Qjt3QkFDQSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzt3QkFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7d0JBQ3JDLFNBQVM7cUJBQ1Y7aUJBQ0Y7Z0JBRUQsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDakM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFBRSxPQUFPO1lBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNO29CQUFFLE1BQU07Z0JBQ2hELEtBQUssTUFBTSxHQUFHLElBQUksZUFBZSxFQUFFO29CQUNqQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzNDLE1BQU0sS0FBSyxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM5QixJQUFJLEtBQUssSUFBSSxTQUFTLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzt3QkFDNUMsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7d0JBQ2xDLFNBQVM7cUJBQ1Y7eUJBQU0sSUFBSSxLQUFLLElBQUksUUFBUSxFQUFFO3dCQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO3dCQUNyQyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQzt3QkFDbEMsU0FBUztxQkFDVjt5QkFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO3dCQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO3dCQUN0QyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQzt3QkFDbEMsU0FBUztxQkFDVjt5QkFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO3dCQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDO3dCQUNwQyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQzt3QkFDbEMsU0FBUztxQkFDVjtpQkFDRjthQUNGO1lBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUNqRDtRQUNILENBQUMsQ0FBQztRQU1PLG9CQUFlLEdBQUcsUUFBUSxDQUFvQixHQUFHLEVBQUU7WUFDMUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDOUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQ2hELDJCQUEyQixHQUFHLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1lBRW5FLE9BQU8sSUFBSTtpQkFDUixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDVCxNQUFNLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsT0FBTztvQkFDTCxHQUFHLENBQUM7b0JBQ0osQ0FBQyxFQUFFLENBQVE7b0JBQ1gsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUNqQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztpQkFDekMsQ0FBQztZQUNKLENBQUMsQ0FBQztpQkFDRCxNQUFNLENBQ0wsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FDekY7aUJBQ0EsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQVVILGlCQUFZLEdBQUcsQ0FBQyxJQUFjLEVBQUUsR0FBVSxFQUFzQyxFQUFFO1lBQ2hGLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUUsSUFBSSxFQUFFO2dCQUNKLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzFCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbEMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDLENBQUM7WUFDTCwwQkFBMEI7WUFDMUIsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUM7UUFFTywwQkFBcUIsR0FBRyxNQUFNLENBQVMsSUFBSSxDQUFDLENBQUM7UUFFN0MsNkJBQXdCLEdBQUcsTUFBTSxDQUFtQyxTQUFTLENBQUMsQ0FBQztLQWN6RjtJQTNKQyxtREFBbUQ7SUFDbkQsYUFBYSxDQUFDLEdBQVc7UUFDdkIsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxNQUFNLENBQUM7U0FDOUQ7UUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxPQUFPLENBQUM7SUFDMUUsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFzRDtRQUNsRSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQy9CLElBQUk7YUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN4RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNULElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRO2dCQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7WUFDM0QsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QixDQUFDLEdBQUc7UUFDekIsT0FBTyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBdUVELGNBQWMsQ0FBQyxLQUFrQixFQUFFLElBQVcsRUFBRSxLQUFVO1FBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUF1QkQsUUFBUSxDQUFDLENBQVE7UUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBa0JELFVBQVUsQ0FBQyxHQUFVLEVBQUUsTUFBZ0IsRUFBRSxLQUFxQjtRQUM1RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbkQsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBalNtQixrQkFBa0I7a0dBQWxCLGtCQUFrQixvc0lBZ0czQixZQUFZLHVFQUNaLE9BQU8saUlBckdSLEVBQUU7OzJGQUlRLGtCQUFrQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7aUJBQ1o7OEJBeUZxQixTQUFTO3NCQUE1QixNQUFNO3VCQUFDLFVBQVU7Z0JBQ1IsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBTWtCLFNBQVM7c0JBQWpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSCxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0UsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uQ2hhbmdlLCBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIGFzIE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZSBhcyBNYXRUYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXNjaGVtYS5tb2RlbCc7XG5pbXBvcnQge1xuICBJT2JqZWN0TGl0ZXJhbCxcbiAgSVJvd09wdGlvbixcbiAgSVN0cmljdEZvcm1Hcm91cCxcbiAgU29ydFR5cGUsXG4gIFRhYmxlQ29sLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi90YWJsZS1wbGFpbi5zZXJ2aWNlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGgsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlQ29tcG9uZW50PFRJdGVtIGV4dGVuZHMgSU9iamVjdExpdGVyYWw+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5IHJvd09wdGlvbnMgPSBpbnB1dDxJUm93T3B0aW9uPFRJdGVtPltdPigpO1xuICByZWFkb25seSBjZW50ZXJDZWxscyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY3VydnkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc3RpbmN0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKkFwcGVhcnMgYWJvdmUgdGhlIHRhYmxlICovXG4gIHJlYWRvbmx5IGhlYWRlciA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgaXNFeHBhbmRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogVXNlZCB0byBuYW1lIG1ldGFkYXRhIG9mIHRoZSB0YWJsZSBsaWtlIGV4cG9ydGVkIGZpbGVzICovXG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBpc0Rpc2FibGVkRnVuYyA9IGlucHV0PChyb3c6IFRJdGVtKSA9PiBib29sZWFuPigpO1xuICByZWFkb25seSBub0l0ZW1UeHQgPSBpbnB1dCgnVGhlcmUgYXJlIG5vIGl0ZW1zJyk7XG4gIHJlYWRvbmx5IG5vd3JhcCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBleHBhbmRlZFJvd1RlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgb3JkZXJEaXJlY3Rpb24gPSBpbnB1dDxTb3J0VHlwZT4oJ2FzYycpO1xuICByZWFkb25seSBvcmRlckZpZWxkID0gaW5wdXQ8a2V5b2YgVEl0ZW0+KCk7XG4gIHJlYWRvbmx5IHBhZ2VTaXplID0gaW5wdXQoMTApO1xuICByZWFkb25seSBzdGFydFNlY3Rpb25UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50Pj4oKTtcbiAgcmVhZG9ubHkgY29tcHV0ZWRQYWdlU2l6ZU9wdGlvbnMgPSBjb21wdXRlZDxudW1iZXJbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLmRlZmF1bHRQYWdlU2l6ZU9wdGlvbnMoKSxcbiAgICAgIHBhZ2VTaXplT3B0aW9ucyA9IHRoaXMucGFnZVNpemVPcHRpb25zKCksXG4gICAgICByZXN1bHRzTGVuZ3RoID0gdGhpcy5yZXN1bHRzTGVuZ3RoKCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHBhZ2VTaXplT3B0aW9ucz8ubGVuZ3RoID8gcGFnZVNpemVPcHRpb25zIDogZGVmYXVsdFBhZ2VTaXplT3B0aW9ucztcbiAgICByZXR1cm4gb3B0aW9ucy5jb25jYXQob3B0aW9ucz8ubGFzdEl0ZW0oKSA+IHJlc3VsdHNMZW5ndGggPyBbXSA6IFtyZXN1bHRzTGVuZ3RoXSk7XG4gIH0pO1xuICByZWFkb25seSBkZWZhdWx0UGFnZVNpemVPcHRpb25zID0gc2lnbmFsKFs1LCAxMCwgMjAsIDUwLCAxMDAsIDUwMCwgMTAwMCwgNTAwMF0pO1xuICByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBpbnB1dDxudW1iZXJbXT4oKTtcbiAgcmVhZG9ubHkgcGxhY2VTZWxlY3Rpb25BdFJpZ2h0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBzdXBwb3J0IGN1c3RvbWl6aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0IGNoZWNrYm94ZXMuXG4gIHJlYWRvbmx5IHNob3dBZGRpdGlvbmFsQ29sdW1ucyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd0V4cG9ydCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd1Jvd1BvaW50ZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNtYWxsZXJGb250cyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc3RyaXBlZCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSB0YWJsZUNvbnRhaW5lckNsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB1c2VTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgZm9ybVNjaGVtYVRvQ29sdW1ucyA9IGlucHV0PElGb3JtU2NoZW1hPElTdHJpY3RGb3JtR3JvdXA8VEl0ZW0+PltdPigpO1xuICByZWFkb25seSB1cGxvYWRTY2hlbWFUb0NvbHVtbnMgPSBpbnB1dDx7IGZpZWxkPzoga2V5b2YgVEl0ZW07IGxhYmVsPzogc3RyaW5nIH1bXT4oKTtcblxuICByZWFkb25seSBfZGlzcGxheWVkQ29sdW1ucyA9IGlucHV0PFRhYmxlQ29sPFRJdGVtPltdPihbXSwgeyBhbGlhczogJ2Rpc3BsYXllZENvbHVtbnMnIH0pO1xuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnVzZUN1c3RvbUxhYmVscygpXG4gICAgICA/IHRoaXMudFMuZ2xvYmFsQ29sdW1uc0Zvcm1hdHRlcih0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zKCkpXG4gICAgICA6IHRoaXMuX2Rpc3BsYXllZENvbHVtbnMoKSxcbiAgKTtcbiAgcmVhZG9ubHkgb3ZlcnJpZGVEaXNwbGF5ZWRDb2x1bW5zID0gc2lnbmFsPFRhYmxlQ29sPFRJdGVtPltdPihudWxsKTtcblxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zTm9BQyA9IGNvbXB1dGVkKCgpID0+XG4gICAgY2xvbmVEZWVwKHRoaXMuZGlzcGxheWVkQ29sdW1ucygpPy5maWx0ZXIoKHgpID0+ICF4LmFkZGl0aW9uYWxDb2x1bW4pKSxcbiAgKTtcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1uc01hcCA9IGNvbXB1dGVkKCgpID0+IGNsb25lRGVlcCh0aGlzLmRpc3BsYXllZENvbHVtbnMoKT8udG9NYXAoJ2YnKSkpO1xuICByZWFkb25seSBjb21wdXRlZERpc3BsYXllZENvbHVtbnNNYXAgPSBjb21wdXRlZCgoKSA9PlxuICAgIGNsb25lRGVlcChcbiAgICAgIHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zKCk/LnRvTWFwKCdmJykgYXMgeyBbayBpbiBrZXlvZiBUSXRlbV06IFRhYmxlQ29sPFRJdGVtPiB9LFxuICAgICksXG4gICk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zID0gY29tcHV0ZWQ8VGFibGVDb2w8VEl0ZW0+W10+KCgpID0+IHtcbiAgICBjb25zdCBkYyA9XG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc05vQUMoKT8ubWFwKChjKSA9PiB7XG4gICAgICAgICAgaWYgKCFjLnQpIHtcbiAgICAgICAgICAgIGlmIChjLnR5cGUgPT0gJ2J1dHRvbicpIGMudCA9ICdBY3Rpb24nO1xuICAgICAgICAgICAgZWxzZSBpZiAoYy50eXBlID09ICdidG5zJykgYy50ID0gJ0FjdGlvbnMnO1xuICAgICAgICAgICAgYy5zdGlja3kgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSkgfHwgW10sXG4gICAgICBvdmVycmlkZUNvbHVtbnMgPSB0aGlzLm92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucygpLFxuICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucyA9IHRoaXMuZm9ybVNjaGVtYVRvQ29sdW1ucygpLFxuICAgICAgdXBsb2FkU2NoZW1hVG9Db2x1bW5zID0gdGhpcy51cGxvYWRTY2hlbWFUb0NvbHVtbnMoKTtcbiAgICBsZXQgY29sdW1ucyA9IChvdmVycmlkZUNvbHVtbnM/Lmxlbmd0aCA/IG92ZXJyaWRlQ29sdW1ucyA6IGRjKVxuICAgICAgLmNvbmNhdChcbiAgICAgICAgZm9ybVNjaGVtYVRvQ29sdW1ucz8ubWFwKCh4KSA9PiAoe1xuICAgICAgICAgIGY6IHguZmllbGQgYXMga2V5b2YgVEl0ZW0sXG4gICAgICAgICAgdDogeC5sYWJlbCxcbiAgICAgICAgICBmb3JtYXR0ZXI6IHgudGFibGVGb3JtYXR0ZXIsXG4gICAgICAgIH0pKSB8fCBbXSxcbiAgICAgIClcbiAgICAgIC5jb25jYXQoXG4gICAgICAgIHVwbG9hZFNjaGVtYVRvQ29sdW1ucz8uZmlsdGVyKCh4KSA9PiB4LmZpZWxkKS5tYXAoKHgpID0+ICh7IGY6IHguZmllbGQsIHQ6IHgubGFiZWwgfSkpIHx8XG4gICAgICAgICAgW10sXG4gICAgICApO1xuICAgIGNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigoeCkgPT4geC5mKTtcbiAgICB0aGlzLmF1dG9TZXRDb2x1bW5Gb3JtYXR0ZXIoY29sdW1ucyk7XG4gICAgcmV0dXJuIGNvbHVtbnM7XG4gIH0pO1xuXG4gIEBPdXRwdXQoJ3Jvd0NsaWNrJykgX3Jvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUSXRlbT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvbkNoYW5nZTxhbnk+PigpO1xuICBAT3V0cHV0KCkgZW1pdENoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgZmllbGQ6IGtleW9mIFRJdGVtO1xuICAgIGl0ZW06IFRJdGVtO1xuICAgIHZhbHVlOiBib29sZWFuO1xuICB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0OiBNYXRTb3J0O1xuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlOiBNYXRUYWJsZTxhbnk+O1xuICByZWFkb25seSByZXN1bHRzTGVuZ3RoOiBTaWduYWw8bnVtYmVyPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXJ0ZXJTZWN0aW9uQ2xhc3MgPSBzaWduYWwoJ3JvdyByb3ctY29scy1sZy1hdXRvIGctMyBhbGlnbi1pdGVtcy1jZW50ZXInKTtcbiAgcmVhZG9ubHkgcmF3Q29sdW1ucyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PlxuICAgIHRoaXMudFMuZ2V0UmF3RmllbGRzKFxuICAgICAgdGhpcy5jb21wdXRlZERpc3BsYXllZENvbHVtbnMoKSxcbiAgICAgIHRoaXMucm93T3B0aW9ucygpPy5sZW5ndGgsXG4gICAgICB0aGlzLnVzZVNlbGVjdGlvbigpLFxuICAgICAgdGhpcy5wbGFjZVNlbGVjdGlvbkF0UmlnaHQoKSxcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlKCksXG4gICAgKSxcbiAgKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWRFbGVtZW50ID0gc2lnbmFsPFRJdGVtPihudWxsKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPFRJdGVtPih0cnVlLCBbXSk7XG4gIHByb3RlY3RlZCBfc2VsZWN0aW9uQ2hhbmdlZCA9IHRvU2lnbmFsKHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQpO1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zU2lnbmFsID0gdG9TaWduYWwoXG4gICAgdGhpcy5zZWxlY3Rpb24uY2hhbmdlZC5waXBlKFxuICAgICAgdGFwKChyKSA9PiB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChyKSksXG4gICAgICBtYXAoKHIpID0+IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKSxcbiAgICAgIHN0YXJ0V2l0aChbXSksXG4gICAgKSxcbiAgKTtcblxuICByZWFkb25seSBjZWxsRm9ybWF0dGVyTWFwOiB7XG4gICAgW2sgaW4ga2V5b2YgVEl0ZW1dPzoge1xuICAgICAgbm9Gb3JtYXQ/OiBib29sZWFuO1xuICAgICAgZm9ybWF0dGVyPzogVGFibGVDb2xbJ2Zvcm1hdHRlciddO1xuICAgIH07XG4gIH0gPSB7fTtcbiAgcHVibGljIHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlKTtcbiAgcHVibGljIHRTID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XG4gIHJlYWRvbmx5IHVzZUN1c3RvbUxhYmVscyA9IG1vZGVsKHRydWUpO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MuICovXG4gIHJlYWRvbmx5IGlzQWxsU2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXNTaWduYWwoKS5sZW5ndGggPT0gdGhpcy5kYXRhKCk/Lmxlbmd0aCk7XG4gIHJlYWRvbmx5IGlzQW55U2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSXRlbXNTaWduYWwoKS5sZW5ndGggPiAwKTtcblxuICAvKiogVGhlIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggb24gdGhlIHBhc3NlZCByb3cgKi9cbiAgY2hlY2tib3hMYWJlbChyb3c/OiBUSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gYWxsYDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KSA/ICdkZXNlbGVjdCcgOiAnc2VsZWN0J30gcm93IGA7XG4gIH1cblxuICBmaWVsZHNDaGFuZ2VkKCRldmVudDogeyBuRmllbGRzOiBUYWJsZUNvbFtdOyBhbGxGaWVsZHM6IFRhYmxlQ29sW10gfSkge1xuICAgIGNvbnN0IGNvbHMgPSAkZXZlbnQubkZpZWxkcztcbiAgICB0aGlzLm92ZXJyaWRlRGlzcGxheWVkQ29sdW1ucy5zZXQoXG4gICAgICBjb2xzXG4gICAgICAgIC5maWx0ZXIoKHgpID0+ICEoeC50eXBlID09ICdidG5zJyAmJiB4LnN0aWNreSkpXG4gICAgICAgIC5jb25jYXQoY29scy5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnYnRucycgJiYgeC5zdGlja3kpKVxuICAgICAgICAubWFwKCh4KSA9PiB7XG4gICAgICAgICAgaWYgKHgudHlwZSA9PT0gJ251bWJlcicpIHguZm9ybWF0dGVyID0gdGhpcy51Uy5tb25leVBhcnNlcjtcbiAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGdldEFjdGlvblN0YXR1c0NhbGxiYWNrKGNvbCkge1xuICAgIHJldHVybiAoc3RhdGU6IGJvb2xlYW4pID0+IChjb2wuYnRuLmxvYWRpbmcgPSBzdGF0ZSk7XG4gIH1cbiAgcmVhZG9ubHkgZGF0YTogV3JpdGFibGVTaWduYWw8VEl0ZW1bXT47XG5cbiAgYXV0b1NldENvbHVtbkZvcm1hdHRlciA9IChjb2x1bW5zOiBUYWJsZUNvbDxUSXRlbT5bXSkgPT4ge1xuICAgIGlmICghY29sdW1ucykgcmV0dXJuO1xuICAgIGNvbnN0IGNlbGxzVG9DaGVja0ZvcjogeyBbayBpbiBrZXlvZiBUSXRlbV0/OiBudW1iZXIgfSA9IHt9O1xuICAgIC8vIGNvbnN0IGRhdGVGaWVsZHMgPSB7IGNyZWF0ZWRPbjogMSwgdXBkYXRlZE9uOiAxIH07XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvbHVtbnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBpdGVtID0gY29sdW1uc1tpbmRleF07XG4gICAgICBpZiAoaXRlbS5ub0Zvcm1hdCB8fCBpdGVtLmZvcm1hdHRlciB8fCBpdGVtLmZvcm1hdHRlclJvdykge1xuICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBbaXRlbS5mXSA9IHtcbiAgICAgICAgICBub0Zvcm1hdDogaXRlbS5ub0Zvcm1hdCxcbiAgICAgICAgICBmb3JtYXR0ZXI6IGl0ZW0uZm9ybWF0dGVyLFxuICAgICAgICB9O1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNhdmVkQ29uZmlnID0gdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2l0ZW0uZl07XG4gICAgICBpZiAoc2F2ZWRDb25maWcpIHtcbiAgICAgICAgaXRlbS5ub0Zvcm1hdCA9IHNhdmVkQ29uZmlnLm5vRm9ybWF0O1xuICAgICAgICBpdGVtLmZvcm1hdHRlciA9IHNhdmVkQ29uZmlnLmZvcm1hdHRlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpdGVtRmllbGRMb3dlciA9IGl0ZW0uZj8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgaXRlbUZpZWxkTG93ZXIgPT0gJ2lkJyB8fFxuICAgICAgICAgIGl0ZW1GaWVsZExvd2VyLmluY2x1ZGVzKCd5ZWFyJykgfHxcbiAgICAgICAgICBpdGVtRmllbGRMb3dlci5pbmNsdWRlcygnYWdlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXRlbS5ub0Zvcm1hdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZWxsRm9ybWF0dGVyTWFwW2l0ZW0uZl0gPSBpdGVtO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNlbGxzVG9DaGVja0ZvcltpdGVtLmZdID0gaW5kZXg7XG4gICAgfVxuICAgIGlmICghdGhpcy5kYXRhKCkpIHJldHVybjtcbiAgICBjb25zb2xlLmxvZygnY2VsbHNUb0NoZWNrRm9yJywgSlNPTi5zdHJpbmdpZnkoY2VsbHNUb0NoZWNrRm9yKSk7XG4gICAgZm9yIChjb25zdCByb3cgb2YgdGhpcy5kYXRhKCkpIHtcbiAgICAgIGlmICghT2JqZWN0LmtleXMoY2VsbHNUb0NoZWNrRm9yKS5sZW5ndGgpIGJyZWFrO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY2VsbHNUb0NoZWNrRm9yKSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBjb2x1bW5zW2NlbGxzVG9DaGVja0ZvcltrZXldXTtcbiAgICAgICAgY29uc3QgdHlwZW8gPSB0eXBlb2Ygcm93W2tleV07XG4gICAgICAgIGlmICh0eXBlbyA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBjZWxsLmZvcm1hdHRlciA9IHRoaXMudVMueWVzTm9DZWxsRm9ybWF0dGVyO1xuICAgICAgICAgIGRlbGV0ZSBjZWxsc1RvQ2hlY2tGb3Jba2V5XTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IGNlbGw7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW8gPT0gJ251bWJlcicpIHtcbiAgICAgICAgICBjZWxsLmZvcm1hdHRlciA9IHRoaXMudVMubW9uZXlQYXJzZXI7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVTLmlzRGF0VGltZVZhbHVlKHJvd1trZXldKSkge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5mdWxsRGF0ZVRpbWU7XG4gICAgICAgICAgZGVsZXRlIGNlbGxzVG9DaGVja0ZvcltrZXldO1xuICAgICAgICAgIHRoaXMuY2VsbEZvcm1hdHRlck1hcFtrZXldID0gY2VsbDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVTLmlzRGF0ZVZhbHVlKHJvd1trZXldKSkge1xuICAgICAgICAgIGNlbGwuZm9ybWF0dGVyID0gdGhpcy51Uy5kYXRlRm9ybWF0O1xuICAgICAgICAgIGRlbGV0ZSBjZWxsc1RvQ2hlY2tGb3Jba2V5XTtcbiAgICAgICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IGNlbGw7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY2VsbHNUb0NoZWNrRm9yKSB7XG4gICAgICB0aGlzLmNlbGxGb3JtYXR0ZXJNYXBba2V5XSA9IHsgbm9Gb3JtYXQ6IHRydWUgfTtcbiAgICB9XG4gIH07XG5cbiAgb3V0cHV0Q2hlY2tib3goZmllbGQ6IGtleW9mIFRJdGVtLCBpdGVtOiBUSXRlbSwgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuZW1pdENoZWNrYm94LmVtaXQoeyBmaWVsZCwgaXRlbSwgdmFsdWUgfSk7XG4gIH1cblxuICByZWFkb25seSBhbGxUYWJsZUNvbHVtbnMgPSBjb21wdXRlZDxUYWJsZUNvbDxUSXRlbT5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmRhdGEoKT8uWzBdIHx8IHt9KSxcbiAgICAgIGRpc3BsYXllZENvbHVtbnNNYXAgPSB0aGlzLmRpc3BsYXllZENvbHVtbnNNYXAoKSxcbiAgICAgIGNvbXB1dGVkRGlzcGxheWVkQ29sdW1uc01hcCA9IHRoaXMuY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zTWFwKCk7XG5cbiAgICByZXR1cm4ga2V5c1xuICAgICAgLm1hcCgoaykgPT4ge1xuICAgICAgICBjb25zdCBlID0gZGlzcGxheWVkQ29sdW1uc01hcFtrXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5lLFxuICAgICAgICAgIGY6IGsgYXMgYW55LFxuICAgICAgICAgIHQ6IGU/LnQgfHwgdGhpcy51Uy5mb3JtYXRGaWVsZChrKSxcbiAgICAgICAgICBhY3RpdmU6ICEhY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zTWFwW2tdLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgICh4KSA9PiAhKHg/LmY/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnaWQnKSAmJiB4Py5mPy50b1N0cmluZygpLmxlbmd0aCA9PT0gMiksXG4gICAgICApXG4gICAgICAuc29ydDIoJ3QnLCB0cnVlKTtcbiAgfSk7XG5cbiAgcm93Q2xpY2soZTogVEl0ZW0pIHtcbiAgICB0aGlzLl9yb3dDbGljay5lbWl0KGUpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkO1xuICB9XG5cbiAgZXh0cmFjdFJvdXRlID0gKGNlbGw6IFRhYmxlQ29sLCByb3c6IFRJdGVtKTogeyByb3V0ZTogc3RyaW5nOyBxdWVyeVBhcmFtczoge30gfSA9PiB7XG4gICAgY29uc3QgW3JvdXRlLCBxcF0gPSBjZWxsLnJvdXRlRm9ybWF0dGVyKHJvdyk/LnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSAoY2VsbC5tcXVlcnlQYXJhbXMgPyBjZWxsLm1xdWVyeVBhcmFtcyhyb3cpIDoge30pIHx8IHt9O1xuICAgIGlmIChxcClcbiAgICAgIHFwLnNwbGl0KCcmJykuZm9yRWFjaCgocSkgPT4ge1xuICAgICAgICBjb25zdCBbZmllbGQsIHZhbF0gPSBxLnNwbGl0KCc9Jyk7XG4gICAgICAgIHF1ZXJ5UGFyYW1zW2ZpZWxkXSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHJvdXRlLCBxcCk7XG4gICAgcmV0dXJuIHsgcm91dGUsIHF1ZXJ5UGFyYW1zIH07XG4gIH07XG5cbiAgcmVhZG9ubHkgbmdBZnRlclZpZXdJbml0U2lnbmFsID0gc2lnbmFsPG51bWJlcj4obnVsbCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRDZWxsRm9yRXhwYW5zaW9uID0gc2lnbmFsPHsgY29sdW1uOiBUYWJsZUNvbDsgcm93OiBUSXRlbSB9Pih1bmRlZmluZWQpO1xuXG4gIGV4cGFuZENlbGwocm93OiBUSXRlbSwgY29sdW1uOiBUYWJsZUNvbCwgbW9kYWw6IE1vZGFsQ29tcG9uZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHsgcm93LCBjb2x1bW4gfSk7XG4gICAgbW9kYWwub3BlbigpO1xuICB9XG5cbiAgY2xvc2VFeHBhbmRlZENlbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZENlbGxGb3JFeHBhbnNpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICByZWZyZXNoVUkoKSB7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iXX0=
|
|
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class TableService {
|
|
4
4
|
constructor() {
|
|
5
|
+
this.customLabelMap = {};
|
|
5
6
|
this.formatToColours = (key, codes = [
|
|
6
7
|
{ key: 1, value: 'green' },
|
|
7
8
|
{ key: 0, value: 'red' },
|
|
@@ -9,6 +10,7 @@ export class TableService {
|
|
|
9
10
|
]) => {
|
|
10
11
|
return `<span class="${codes.find((x) => x.key == key)?.value || 'default'} colour ${key}" ></span>`;
|
|
11
12
|
};
|
|
13
|
+
this.globalColumnsFormatter = (columns) => columns;
|
|
12
14
|
}
|
|
13
15
|
getRawFields(arr, optionsLen = 0, useSelection = false, placeSelectionAtRight = false, // the parameter is to support setting the selection checkboxes as the last item instead of the first
|
|
14
16
|
isExpandable = false) {
|
|
@@ -29,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
29
31
|
type: Injectable,
|
|
30
32
|
args: [{ providedIn: 'root' }]
|
|
31
33
|
}], ctorParameters: () => [] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGxhaW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1wbGFpbi90YWJsZS1wbGFpbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNDLE1BQU0sT0FBTyxZQUFZO0lBRXZCO1FBREEsbUJBQWMsR0FBZ0MsRUFBRSxDQUFDO1FBR2pELG9CQUFlLEdBQUcsQ0FDaEIsR0FBUSxFQUNSLFFBQWdCO1lBQ2QsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDMUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDeEIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7U0FDNUIsRUFDRCxFQUFFO1lBQ0YsT0FBTyxnQkFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxTQUM1QyxXQUFXLEdBQUcsWUFBWSxDQUFDO1FBQzdCLENBQUMsQ0FBQztRQWlCRiwyQkFBc0IsR0FBRyxDQUFPLE9BQXlCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQTlCdkQsQ0FBQztJQWVoQixZQUFZLENBQ1YsR0FBZSxFQUNmLGFBQXFCLENBQUMsRUFDdEIsWUFBWSxHQUFHLEtBQUssRUFDcEIscUJBQXFCLEdBQUcsS0FBSyxFQUFFLHFHQUFxRztJQUNwSSxZQUFZLEdBQUcsS0FBSztRQUVwQiw4QkFBOEI7UUFDOUIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYSxDQUFDO1FBQy9DLElBQUksVUFBVTtZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsSUFBSSxZQUFZO1lBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RixJQUFJLFlBQVk7WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OEdBOUJVLFlBQVk7a0hBQVosWUFBWSxjQURDLE1BQU07OzJGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElLVlAsIFRhYmxlQ29sIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUYWJsZVNlcnZpY2Uge1xuICBjdXN0b21MYWJlbE1hcDogeyBbZmllbGQ6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBmb3JtYXRUb0NvbG91cnMgPSAoXG4gICAga2V5OiBhbnksXG4gICAgY29kZXM6IElLVlBbXSA9IFtcbiAgICAgIHsga2V5OiAxLCB2YWx1ZTogJ2dyZWVuJyB9LFxuICAgICAgeyBrZXk6IDAsIHZhbHVlOiAncmVkJyB9LFxuICAgICAgeyBrZXk6IDIsIHZhbHVlOiAneWVsbG93JyB9LFxuICAgIF0sXG4gICkgPT4ge1xuICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCIke1xuICAgICAgY29kZXMuZmluZCgoeCkgPT4geC5rZXkgPT0ga2V5KT8udmFsdWUgfHwgJ2RlZmF1bHQnXG4gICAgfSBjb2xvdXIgJHtrZXl9XCIgPjwvc3Bhbj5gO1xuICB9O1xuXG4gIGdldFJhd0ZpZWxkcyhcbiAgICBhcnI6IFRhYmxlQ29sW10sXG4gICAgb3B0aW9uc0xlbjogbnVtYmVyID0gMCxcbiAgICB1c2VTZWxlY3Rpb24gPSBmYWxzZSxcbiAgICBwbGFjZVNlbGVjdGlvbkF0UmlnaHQgPSBmYWxzZSwgLy8gdGhlIHBhcmFtZXRlciBpcyB0byBzdXBwb3J0IHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjaGVja2JveGVzIGFzIHRoZSBsYXN0IGl0ZW0gaW5zdGVhZCBvZiB0aGUgZmlyc3RcbiAgICBpc0V4cGFuZGFibGUgPSBmYWxzZSxcbiAgKTogc3RyaW5nW10ge1xuICAgIC8vIGlmICh1c2VTZWxlY3Rpb24pIGRlYnVnZ2VyO1xuICAgIGNvbnN0IGZpZWxkcyA9IGFyci5tYXAoKHIpID0+IHIuZikgYXMgc3RyaW5nW107XG4gICAgaWYgKG9wdGlvbnNMZW4pIGZpZWxkcy5wdXNoKCdvcHRpb24nKTtcbiAgICBpZiAodXNlU2VsZWN0aW9uKSBmaWVsZHMuc3BsaWNlKHBsYWNlU2VsZWN0aW9uQXRSaWdodCA/IGZpZWxkcy5sZW5ndGggOiAwLCAwLCAnbXNlbGVjdCcpO1xuICAgIGlmIChpc0V4cGFuZGFibGUpIGZpZWxkcy5wdXNoKCdfZXhwYW5kQ29sJyk7XG4gICAgcmV0dXJuIGZpZWxkcztcbiAgfVxuXG4gIGdsb2JhbENvbHVtbnNGb3JtYXR0ZXIgPSA8VFJvdz4oY29sdW1uczogVGFibGVDb2w8VFJvdz5bXSkgPT4gY29sdW1ucztcblxuICBhcnJheVRvQ1NWV29ya2VyOiAoXG4gICAgYXJyYXk6IGFueVtdLFxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgY29sdW1ucz86IHN0cmluZ1tdLFxuICAgIHNob3dIZWFkZXI/OiBib29sZWFuLFxuICApID0+IFByb21pc2U8dm9pZD47XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, booleanAttribute, input, computed, inject
|
|
1
|
+
import { Component, booleanAttribute, input, computed, inject } from '@angular/core';
|
|
2
2
|
import { of } from 'rxjs';
|
|
3
3
|
import { FunctionCaller1, ValueFormatterPipe, ValueOrXPipe } from '../../pipes/utility.pipe';
|
|
4
4
|
import { SDKTranslatePipe } from '../../pipes/translate.pipe';
|
|
@@ -75,4 +75,4 @@ export class TextCase2ForObject {
|
|
|
75
75
|
Object.assign(this, extra);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1jYXNlLTIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RleHQtY2FzZS0yL3RleHQtY2FzZS0yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90ZXh0LWNhc2UtMi90ZXh0LWNhc2UtMi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUlULGdCQUFnQixFQUVoQixLQUFLLEVBQ0wsUUFBUSxFQUVSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW9CLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBcUJ0RCxNQUFNLE9BQU8sa0JBQWtCO0lBbkIvQjtRQW9CRSw2QkFBNkI7UUFDN0IsV0FBTSxHQUFHLEtBQUssRUFBdUIsQ0FBQztRQUN0QyxTQUFJLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFDeEIsU0FBSSxHQUFHLEtBQUssRUFBSyxDQUFDO1FBQ2xCLGVBQVUs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a0I7a0dBQWxCLGtCQUFrQiwrcUZDeEMvQiwreENBeUJBLHlERElJLGdCQUFnQiw2VEFDaEIsT0FBTyxvRkFDUCxtQkFBbUIsaUpBRW5CLFNBQVMseUNBRVQsZ0JBQWdCLGdEQUVoQixZQUFZOzsyRkFHSCxrQkFBa0I7a0JBbkI5QixTQUFTOytCQUNFLGFBQWEsY0FHWCxJQUFJLFdBR1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixPQUFPO3dCQUNQLG1CQUFtQjt3QkFDbkIsSUFBSTt3QkFDSixTQUFTO3dCQUNULGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLFlBQVk7cUJBQ2I7O0FBd0RILE1BQU0sT0FBTyxrQkFBa0I7SUFvQjdCLFlBQ0UsSUFBYSxFQUNiLEtBQWEsRUFDYixLQUVDO1FBWEgsWUFBTyxHQUFZLElBQUksQ0FBQztRQUd4QixvQkFBZSxHQUFHLElBQUksQ0FBQztRQVVyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLEtBQUs7WUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBTaWduYWwsXG4gIGlucHV0LFxuICBjb21wdXRlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IEZ1bmN0aW9uQ2FsbGVyMSwgVmFsdWVGb3JtYXR0ZXJQaXBlLCBWYWx1ZU9yWFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IE1yb3V0ZXJMaW5raXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2luZGV4LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmLCBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgVGV4dENhc2VTZXJ2aWNlIH0gZnJvbSAnLi90ZXh0LWNhc2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RleHQtY2FzZS0yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtY2FzZS0yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1jYXNlLTIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgLy8gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAvL1xuICBpbXBvcnRzOiBbXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBOZ0NsYXNzLFxuICAgIE1yb3V0ZXJMaW5raXJlY3RpdmUsXG4gICAgTmdJZixcbiAgICBBc3luY1BpcGUsXG4gICAgRnVuY3Rpb25DYWxsZXIxLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gICAgVmFsdWVGb3JtYXR0ZXJQaXBlLFxuICAgIFZhbHVlT3JYUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGV4dENhc2UyQ29tcG9uZW50PFQgPSBhbnk+IHtcbiAgLy8gb2JqID0gaW5wdXQ8SVRleHRDYXNlMj4oKTtcbiAgYWN0aW9uID0gaW5wdXQ8KGl0ZW0/OiBhbnkpID0+IGFueT4oKTtcbiAgbmFtZSA9IGlucHV0PGtleW9mIFQ+KCk7XG4gIGRhdGEgPSBpbnB1dDxUPigpO1xuICBjb2xvcmVkTGJsID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbG9yZWRWYWwgPSBpbnB1dDxib29sZWFuPigpO1xuICBjZW50ZXJlZCA9IGlucHV0PGJvb2xlYW4+KG51bGwsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIGFzIHVuZGVmaW5lZCB9KTtcbiAgY3VzdG9tVmFsdWVUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIGZvcm1hdHRlciA9IGlucHV0PCgoaXRlbT86IGFueSkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxzdHJpbmc+KSB8IHVuZGVmaW5lZD4oKTtcbiAgaGludCA9IGlucHV0PHN0cmluZz4oKTtcbiAgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGxpZ2h0ID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgbWluaSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJvdXRlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByb3V0ZUZ1bmMgPSBpbnB1dDwoaXRlbT86IGFueSkgPT4gUHJvbWlzZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxzdHJpbmc+PigpO1xuICBlZGl0YWJsZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHN0YWNrZWQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgdHlwZSA9IGlucHV0PElucHV0VHlwZT4oKTtcbiAgdmFsdWUgPSBpbnB1dDxhbnk+KCk7XG4gIHdyYXBMYWJlbCA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHRydWUpO1xuICBpc0VtYWlsID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTtcbiAgaXNQaG9uZSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG5cbiAgcHVibGljIHRTID0gaW5qZWN0KFRleHRDYXNlU2VydmljZSk7XG5cbiAgY29tcHV0ZWRSb3V0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByb3V0ZSA9IHRoaXMucm91dGUoKSxcbiAgICAgIGlzRW1haWwgPSB0aGlzLmlzRW1haWwoKSxcbiAgICAgIGlzUGhvbmUgPSB0aGlzLmlzUGhvbmUoKSxcbiAgICAgIHZhbHVlID0gdGhpcy5jb21wdXRlZFZhbHVlKCksXG4gICAgICByb3V0ZUZ1bmMgPVxuICAgICAgICB0aGlzLnJvdXRlRnVuYygpIHx8XG4gICAgICAgICgoaXNFbWFpbCB8fCBpc1Bob25lKSAmJiB2YWx1ZSAhPSBudWxsID8gKHYpID0+IFByb21pc2UucmVzb2x2ZShgJHt2fWApIDogdW5kZWZpbmVkKTtcbiAgICByZXR1cm4gcm91dGUgPyBvZihyb3V0ZSkgOiByb3V0ZUZ1bmMgPyByb3V0ZUZ1bmModmFsdWUpIDogb2YobnVsbCk7XG4gIH0pO1xuXG4gIGNvbXB1dGVkVmFsdWUgPSBjb21wdXRlZDxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlKCksXG4gICAgICBkYXRhID0gdGhpcy5kYXRhKCksXG4gICAgICBuYW1lID0gdGhpcy5uYW1lKCk7XG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IGRhdGEgJiYgbmFtZSA/IGRhdGFbbmFtZV0gOiBudWxsO1xuICB9KTtcblxuICBjb21wdXRlZFZhbHVlRm9ybWF0dGVyID0gY29tcHV0ZWQ8XG4gICAgfCBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQ+XG4gICAgfCBPYnNlcnZhYmxlPHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQ+XG4gID4oKCkgPT4ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IHRoaXMuZm9ybWF0dGVyKCksXG4gICAgICB2YWx1ZSA9IHRoaXMuY29tcHV0ZWRWYWx1ZSgpO1xuICAgIGNvbnN0IHJlcyA9IHRoaXMudFMuaGFuZGxlVmFsdWVGb3JtYXR0ZXIoeyBmb3JtYXR0ZXIsIHZhbHVlIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH0pO1xufVxuZXhwb3J0IGNsYXNzIFRleHRDYXNlMkZvck9iamVjdDxUID0gYW55PiBpbXBsZW1lbnRzIElUZXh0Q2FzZTIge1xuICBuYW1lOiBrZXlvZiBUO1xuICBhY3Rpb246IGFueTtcbiAgY29sb3JlZExibDogYm9vbGVhbjtcbiAgY29sb3JlZFZhbDogYm9vbGVhbjtcbiAgZm9ybTogYW55O1xuICBmb3JtYXR0ZXI6IChpdGVtKSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4gfCBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGhpbnQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgbGlnaHQ6IGJvb2xlYW47XG4gIG1pbmk6IGJvb2xlYW47XG4gIHJvdXRlOiBzdHJpbmc7XG4gIHJvdXRlRnVuYzogKGl0ZW0pID0+IFByb21pc2U8c3RyaW5nPiB8IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZWRpdGFibGU6IGJvb2xlYW47XG4gIHN0YWNrZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICB0eXBlOiBJbnB1dFR5cGU7XG4gIHZhbHVlOiBhbnk7XG4gIHdyYXBMYUlucHV0VHlwZSA9IHRydWU7XG4gIGlzRW1haWw6IGJvb2xlYW47XG4gIGlzUGhvbmU6IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKFxuICAgIG5hbWU6IGtleW9mIFQsXG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICBleHRyYT86IHtcbiAgICAgIGZvcm1hdHRlcjogKGl0ZW0pID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPiB8IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICB9LFxuICApIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICBpZiAoZXh0cmEpIE9iamVjdC5hc3NpZ24odGhpcywgZXh0cmEpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRleHRDYXNlMjxUID0gYW55PiB7XG4gIGFjdGlvbj86IGFueTtcbiAgY29sb3JlZExibD86IGJvb2xlYW47XG4gIGNvbG9yZWRWYWw/OiBib29sZWFuO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG4gIGZvcm1hdHRlcj86IChpdGVtKSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4gfCBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGhpbnQ/OiBzdHJpbmc7XG4gIGlzRW1haWw/OiBib29sZWFuO1xuICBpc1Bob25lPzogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGZpZWxkPzogc3RyaW5nO1xuICBsaWdodD86IGJvb2xlYW47XG4gIG1pbmk/OiBib29sZWFuO1xuICBuYW1lPzoga2V5b2YgVDtcbiAgcm91dGU/OiBzdHJpbmc7XG4gIHJvdXRlRnVuYz86IChpdGVtKSA9PiBQcm9taXNlPHN0cmluZz4gfCBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHN0YWNrZWQ/OiBib29sZWFuO1xuICB0eXBlPzogSW5wdXRUeXBlO1xuICB2YWx1ZT86IGFueTtcbiAgd3JhcExhYmVsPzogYm9vbGVhbjtcbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIHt7IHN0YWNrZWQoKSA/ICdnLTAnIDogJ2d5LTAgZ3gtMicgfX1cIj5cbiAgPGxhYmVsXG4gICAgW21hdFRvb2x0aXBdPVwiaGludCgpXCJcbiAgICBjbGFzcz1cImNvbC1tZC17eyBzdGFja2VkKCkgPyAnMTInIDogJ2F1dG8nIH19IGxibCBoaWRlLXNjcm9sbC14XCJcbiAgICBbbmdDbGFzc109XCJ7ICd0ZXh0LXByaW1hcnknOiBjb2xvcmVkTGJsKCksIGxpZ2h0OiBsaWdodCgpLCAnb3ZlcmZsb3cteC1hdXRvJzogd3JhcExhYmVsKCksICd0ZXh0LWNlbnRlcic6IGNlbnRlcmVkKCkgfVwiPlxuICAgIHt7IGxhYmVsKCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICA8L2xhYmVsPlxuICA8ZGl2IGNsYXNzPVwie3sgc3RhY2tlZCgpID8gJ2NvbC0xMicgOiAnY29sLW1kJyB9fSBwb3NpdGlvbi1yZWxhdGl2ZVwiIFtuZ0NsYXNzXT1cInsgJ3RleHQtY2VudGVyJzogY2VudGVyZWQoKSB9XCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cIiFjdXN0b21WYWx1ZVRlbXBsYXRlO2Vsc2UgY3VzdG9tVmFsdWVUZW1wbGF0ZVwiPiAtLT5cbiAgICAgIDxhXG4gICAgICAgIFtpc0VtYWlsXT1cImlzRW1haWwoKVwiXG4gICAgICAgIFtpc1Bob25lXT1cImlzUGhvbmUoKVwiXG4gICAgICAgIFttcm91dGVyTGlua109XCJjb21wdXRlZFJvdXRlKCkgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwie3sgIWNvbG9yZWRWYWwoKSA/ICcnIDogJ3RleHQtcHJpbWFyeScgfX0gY29sLXt7ICFzdGFja2VkKCkgPyAnYXV0bycgOiBlZGl0YWJsZSgpID8gJzknIDogJzEyJyB9fSBsYmwtdmFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoaWRlLXNjcm9sbC14IG92ZXJmbG93LXgtYXV0b1wiIFtpbm5lckhUTUxdPVwiY29tcHV0ZWRWYWx1ZUZvcm1hdHRlcigpIHwgYXN5bmMgfCB2YWx1ZU9yWDogJy0nXCI+PC9kaXY+XG4gICAgICA8L2E+XG4gICAgICBAaWYgKGVkaXRhYmxlKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgPGkgKGNsaWNrKT1cImFjdGlvbigpID8gYWN0aW9uKCkoY29tcHV0ZWRWYWx1ZSgpKSA6IG51bGxcIiBjbGFzcz1cInBzLTEgcG9pbnRlciBmYXMgZmEtcGVuY2lsLWFsdCB7eyAhY29sb3JlZFZhbCgpID8gJycgOiAndGV4dC1wcmltYXJ5JyB9fVwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1jYXNlLTIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RleHQtY2FzZS0yL3RleHQtY2FzZS0yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90ZXh0LWNhc2UtMi90ZXh0LWNhc2UtMi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGdCQUFnQixFQUFFLEtBQUssRUFDdkIsUUFBUSxFQUFFLE1BQU0sRUFDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBcUJ0RCxNQUFNLE9BQU8sa0JBQWtCO0lBbkIvQjtRQW9CRSw2QkFBNkI7UUFDN0IsV0FBTSxHQUFHLEtBQUssRUFBdUIsQ0FBQztRQUN0QyxTQUFJLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFDeEIsU0FBSSxHQUFHLEtBQUssRUFBSyxDQUFDO1FBQ2xCLGVBQVUs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a0I7a0dBQWxCLGtCQUFrQiwrcUZDakMvQiwreENBeUJBLHlEREhJLGdCQUFnQiw2VEFDaEIsT0FBTyxvRkFDUCxtQkFBbUIsaUpBRW5CLFNBQVMseUNBRVQsZ0JBQWdCLGdEQUVoQixZQUFZOzsyRkFHSCxrQkFBa0I7a0JBbkI5QixTQUFTOytCQUNFLGFBQWEsY0FHWCxJQUFJLFdBR1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixPQUFPO3dCQUNQLG1CQUFtQjt3QkFDbkIsSUFBSTt3QkFDSixTQUFTO3dCQUNULGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLFlBQVk7cUJBQ2I7O0FBd0RILE1BQU0sT0FBTyxrQkFBa0I7SUFvQjdCLFlBQ0UsSUFBYSxFQUNiLEtBQWEsRUFDYixLQUVDO1FBWEgsWUFBTyxHQUFZLElBQUksQ0FBQztRQUd4QixvQkFBZSxHQUFHLElBQUksQ0FBQztRQVVyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLEtBQUs7WUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIFRlbXBsYXRlUmVmLFxuICBib29sZWFuQXR0cmlidXRlLCBpbnB1dCxcbiAgY29tcHV0ZWQsIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIxLCBWYWx1ZUZvcm1hdHRlclBpcGUsIFZhbHVlT3JYUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBTREtUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgTXJvdXRlckxpbmtpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvaW5kZXguZGlyZWN0aXZlJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBUZXh0Q2FzZVNlcnZpY2UgfSBmcm9tICcuL3RleHQtY2FzZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV4dC1jYXNlLTInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1jYXNlLTIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWNhc2UtMi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICAvLyAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIC8vXG4gIGltcG9ydHM6IFtcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE5nQ2xhc3MsXG4gICAgTXJvdXRlckxpbmtpcmVjdGl2ZSxcbiAgICBOZ0lmLFxuICAgIEFzeW5jUGlwZSxcbiAgICBGdW5jdGlvbkNhbGxlcjEsXG4gICAgU0RLVHJhbnNsYXRlUGlwZSxcbiAgICBWYWx1ZUZvcm1hdHRlclBpcGUsXG4gICAgVmFsdWVPclhQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUZXh0Q2FzZTJDb21wb25lbnQ8VCA9IGFueT4ge1xuICAvLyBvYmogPSBpbnB1dDxJVGV4dENhc2UyPigpO1xuICBhY3Rpb24gPSBpbnB1dDwoaXRlbT86IGFueSkgPT4gYW55PigpO1xuICBuYW1lID0gaW5wdXQ8a2V5b2YgVD4oKTtcbiAgZGF0YSA9IGlucHV0PFQ+KCk7XG4gIGNvbG9yZWRMYmwgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgY29sb3JlZFZhbCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIGNlbnRlcmVkID0gaW5wdXQ8Ym9vbGVhbj4obnVsbCwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgYXMgdW5kZWZpbmVkIH0pO1xuICBjdXN0b21WYWx1ZVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgZm9ybWF0dGVyID0gaW5wdXQ8KChpdGVtPzogYW55KSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4gfCBPYnNlcnZhYmxlPHN0cmluZz4pIHwgdW5kZWZpbmVkPigpO1xuICBoaW50ID0gaW5wdXQ8c3RyaW5nPigpO1xuICBsYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgbGlnaHQgPSBpbnB1dDxib29sZWFuPigpO1xuICBtaW5pID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcm91dGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJvdXRlRnVuYyA9IGlucHV0PChpdGVtPzogYW55KSA9PiBQcm9taXNlPHN0cmluZz4gfCBPYnNlcnZhYmxlPHN0cmluZz4+KCk7XG4gIGVkaXRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgc3RhY2tlZCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICB0eXBlID0gaW5wdXQ8SW5wdXRUeXBlPigpO1xuICB2YWx1ZSA9IGlucHV0PGFueT4oKTtcbiAgd3JhcExhYmVsID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odHJ1ZSk7XG4gIGlzRW1haWwgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuICBpc1Bob25lID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTtcblxuICBwdWJsaWMgdFMgPSBpbmplY3QoVGV4dENhc2VTZXJ2aWNlKTtcblxuICBjb21wdXRlZFJvdXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5yb3V0ZSgpLFxuICAgICAgaXNFbWFpbCA9IHRoaXMuaXNFbWFpbCgpLFxuICAgICAgaXNQaG9uZSA9IHRoaXMuaXNQaG9uZSgpLFxuICAgICAgdmFsdWUgPSB0aGlzLmNvbXB1dGVkVmFsdWUoKSxcbiAgICAgIHJvdXRlRnVuYyA9XG4gICAgICAgIHRoaXMucm91dGVGdW5jKCkgfHxcbiAgICAgICAgKChpc0VtYWlsIHx8IGlzUGhvbmUpICYmIHZhbHVlICE9IG51bGwgPyAodikgPT4gUHJvbWlzZS5yZXNvbHZlKGAke3Z9YCkgOiB1bmRlZmluZWQpO1xuICAgIHJldHVybiByb3V0ZSA/IG9mKHJvdXRlKSA6IHJvdXRlRnVuYyA/IHJvdXRlRnVuYyh2YWx1ZSkgOiBvZihudWxsKTtcbiAgfSk7XG5cbiAgY29tcHV0ZWRWYWx1ZSA9IGNvbXB1dGVkPHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUoKSxcbiAgICAgIGRhdGEgPSB0aGlzLmRhdGEoKSxcbiAgICAgIG5hbWUgPSB0aGlzLm5hbWUoKTtcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogZGF0YSAmJiBuYW1lID8gZGF0YVtuYW1lXSA6IG51bGw7XG4gIH0pO1xuXG4gIGNvbXB1dGVkVmFsdWVGb3JtYXR0ZXIgPSBjb21wdXRlZDxcbiAgICB8IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZD5cbiAgICB8IE9ic2VydmFibGU8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZD5cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZm9ybWF0dGVyID0gdGhpcy5mb3JtYXR0ZXIoKSxcbiAgICAgIHZhbHVlID0gdGhpcy5jb21wdXRlZFZhbHVlKCk7XG4gICAgY29uc3QgcmVzID0gdGhpcy50Uy5oYW5kbGVWYWx1ZUZvcm1hdHRlcih7IGZvcm1hdHRlciwgdmFsdWUgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSk7XG59XG5leHBvcnQgY2xhc3MgVGV4dENhc2UyRm9yT2JqZWN0PFQgPSBhbnk+IGltcGxlbWVudHMgSVRleHRDYXNlMiB7XG4gIG5hbWU6IGtleW9mIFQ7XG4gIGFjdGlvbjogYW55O1xuICBjb2xvcmVkTGJsOiBib29sZWFuO1xuICBjb2xvcmVkVmFsOiBib29sZWFuO1xuICBmb3JtOiBhbnk7XG4gIGZvcm1hdHRlcjogKGl0ZW0pID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPiB8IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgaGludDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBsaWdodDogYm9vbGVhbjtcbiAgbWluaTogYm9vbGVhbjtcbiAgcm91dGU6IHN0cmluZztcbiAgcm91dGVGdW5jOiAoaXRlbSkgPT4gUHJvbWlzZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBlZGl0YWJsZTogYm9vbGVhbjtcbiAgc3RhY2tlZDogYm9vbGVhbiA9IHRydWU7XG4gIHR5cGU6IElucHV0VHlwZTtcbiAgdmFsdWU6IGFueTtcbiAgd3JhcExhSW5wdXRUeXBlID0gdHJ1ZTtcbiAgaXNFbWFpbDogYm9vbGVhbjtcbiAgaXNQaG9uZTogYm9vbGVhbjtcbiAgY29uc3RydWN0b3IoXG4gICAgbmFtZToga2V5b2YgVCxcbiAgICBsYWJlbDogc3RyaW5nLFxuICAgIGV4dHJhPzoge1xuICAgICAgZm9ybWF0dGVyOiAoaXRlbSkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIH0sXG4gICkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICAgIGlmIChleHRyYSkgT2JqZWN0LmFzc2lnbih0aGlzLCBleHRyYSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGV4dENhc2UyPFQgPSBhbnk+IHtcbiAgYWN0aW9uPzogYW55O1xuICBjb2xvcmVkTGJsPzogYm9vbGVhbjtcbiAgY29sb3JlZFZhbD86IGJvb2xlYW47XG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgZm9ybWF0dGVyPzogKGl0ZW0pID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPiB8IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgaGludD86IHN0cmluZztcbiAgaXNFbWFpbD86IGJvb2xlYW47XG4gIGlzUGhvbmU/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIGxpZ2h0PzogYm9vbGVhbjtcbiAgbWluaT86IGJvb2xlYW47XG4gIG5hbWU/OiBrZXlvZiBUO1xuICByb3V0ZT86IHN0cmluZztcbiAgcm91dGVGdW5jPzogKGl0ZW0pID0+IFByb21pc2U8c3RyaW5nPiB8IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgc3RhY2tlZD86IGJvb2xlYW47XG4gIHR5cGU/OiBJbnB1dFR5cGU7XG4gIHZhbHVlPzogYW55O1xuICB3cmFwTGFiZWw/OiBib29sZWFuO1xufVxuIiwiPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIge3sgc3RhY2tlZCgpID8gJ2ctMCcgOiAnZ3ktMCBneC0yJyB9fVwiPlxuICA8bGFiZWxcbiAgICBbbWF0VG9vbHRpcF09XCJoaW50KClcIlxuICAgIGNsYXNzPVwiY29sLW1kLXt7IHN0YWNrZWQoKSA/ICcxMicgOiAnYXV0bycgfX0gbGJsIGhpZGUtc2Nyb2xsLXhcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3RleHQtcHJpbWFyeSc6IGNvbG9yZWRMYmwoKSwgbGlnaHQ6IGxpZ2h0KCksICdvdmVyZmxvdy14LWF1dG8nOiB3cmFwTGFiZWwoKSwgJ3RleHQtY2VudGVyJzogY2VudGVyZWQoKSB9XCI+XG4gICAge3sgbGFiZWwoKSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gIDwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJ7eyBzdGFja2VkKCkgPyAnY29sLTEyJyA6ICdjb2wtbWQnIH19IHBvc2l0aW9uLXJlbGF0aXZlXCIgW25nQ2xhc3NdPVwieyAndGV4dC1jZW50ZXInOiBjZW50ZXJlZCgpIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiIWN1c3RvbVZhbHVlVGVtcGxhdGU7ZWxzZSBjdXN0b21WYWx1ZVRlbXBsYXRlXCI+IC0tPlxuICAgICAgPGFcbiAgICAgICAgW2lzRW1haWxdPVwiaXNFbWFpbCgpXCJcbiAgICAgICAgW2lzUGhvbmVdPVwiaXNQaG9uZSgpXCJcbiAgICAgICAgW21yb3V0ZXJMaW5rXT1cImNvbXB1dGVkUm91dGUoKSB8IGFzeW5jXCJcbiAgICAgICAgY2xhc3M9XCJ7eyAhY29sb3JlZFZhbCgpID8gJycgOiAndGV4dC1wcmltYXJ5JyB9fSBjb2wte3sgIXN0YWNrZWQoKSA/ICdhdXRvJyA6IGVkaXRhYmxlKCkgPyAnOScgOiAnMTInIH19IGxibC12YWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhpZGUtc2Nyb2xsLXggb3ZlcmZsb3cteC1hdXRvXCIgW2lubmVySFRNTF09XCJjb21wdXRlZFZhbHVlRm9ybWF0dGVyKCkgfCBhc3luYyB8IHZhbHVlT3JYOiAnLSdcIj48L2Rpdj5cbiAgICAgIDwvYT5cbiAgICAgIEBpZiAoZWRpdGFibGUoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICA8aSAoY2xpY2spPVwiYWN0aW9uKCkgPyBhY3Rpb24oKShjb21wdXRlZFZhbHVlKCkpIDogbnVsbFwiIGNsYXNzPVwicHMtMSBwb2ludGVyIGZhcyBmYS1wZW5jaWwtYWx0IHt7ICFjb2xvcmVkVmFsKCkgPyAnJyA6ICd0ZXh0LXByaW1hcnknIH19XCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -107,12 +107,18 @@ Array.prototype.removeEmptyItems = function (expectedFields, config) {
|
|
|
107
107
|
}
|
|
108
108
|
return removedItems;
|
|
109
109
|
};
|
|
110
|
-
Array.prototype.toMap = function (
|
|
110
|
+
Array.prototype.toMap = function (arg1, valueMap) {
|
|
111
111
|
// debugger;
|
|
112
112
|
const ret = {};
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
if (typeof arg1 == 'function')
|
|
114
|
+
for (const item of this)
|
|
115
|
+
ret[arg1(item)] = item;
|
|
116
|
+
else if (valueMap)
|
|
117
|
+
for (const item of this)
|
|
118
|
+
ret[item[arg1?.toString()]] = valueMap(item);
|
|
119
|
+
else
|
|
120
|
+
for (const item of this)
|
|
121
|
+
ret[item[arg1?.toString()]] = item;
|
|
116
122
|
return ret;
|
|
117
123
|
};
|
|
118
124
|
Array.prototype.groupBy = function (keyField, keyMap) {
|
|
@@ -218,4 +224,4 @@ FormArray.prototype.getFormattedValue = function () {
|
|
|
218
224
|
FormControl.prototype.getFormattedValue = function () {
|
|
219
225
|
return this.formattedValue;
|
|
220
226
|
};
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG90eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvcHJvdG90eXBlcy9wcm90b3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQXVLM0Qsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQXdCLFNBQVMsR0FBRyxHQUFHO0lBQ2xFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUF3QixTQUFTLEdBQUcsR0FBRztJQUN0RSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3JGLENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHO0lBQzVCLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUF3QixTQUFTLEdBQUcsR0FBRyxFQUFFLFdBQVcsR0FBRyxFQUFFO0lBQ2pGLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNaLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3BDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixFQUFFLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDL0I7SUFDRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHO0lBQ2hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxVQUF3QixTQUFTLEdBQUcsR0FBRyxFQUFFLFdBQVcsR0FBRyxFQUFFO0lBQzNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDakQsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxVQUVsQyxTQUFpQixFQUNqQixjQUFzQjtJQUV0QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksY0FBYztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQy9DLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMvRCxDQUFDLENBQUM7QUFDRixZQUFZO0FBRVosbUJBQW1CO0FBQ25CLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHO0lBQ3RCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNYLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ3BCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDUjtJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBQ0YsS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsVUFBNkIsS0FBSyxHQUFHLENBQUM7SUFDbkUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQztBQUNGLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHO0lBQ3pCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUNGLEtBQUssQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsVUFFbEMsS0FBYyxFQUNkLFVBQW1CLEtBQUs7SUFFeEIsSUFBSSxPQUFPLEVBQUU7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ3ZDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBWSxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQVksQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FDMUUsQ0FBQztLQUNIO1NBQU07UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ3ZDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBWSxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQVksQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FDMUUsQ0FBQztLQUNIO0FBQ0gsQ0FBQyxDQUFDO0FBQ0YsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFFdEIsS0FBYyxFQUNkLFdBQW9CLEtBQUssRUFDekIsVUFBbUIsS0FBSztJQUV4QixJQUFJLE9BQU87UUFDVCxPQUFPLFFBQVE7WUFDYixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUMxQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUN6RDtZQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNoQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUMxRCxDQUFDOztRQUVOLE9BQU8sUUFBUTtZQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQzFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQ3pEO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2hDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzFELENBQUM7QUFDVixDQUFDLENBQUM7QUFDRixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxVQUE2QixLQUFjLEVBQUUsVUFBbUIsS0FBSztJQUMzRixJQUFJLFFBQVEsR0FBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBUSxDQUFDLENBQUMsQ0FBQztJQUNqRSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDekYsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDO0FBQ3ZCLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQztBQUVwQixTQUFTLFlBQVksQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUN4QyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDYixJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3pDO1NBQU07UUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDekI7QUFDSCxDQUFDO0FBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxVQUVqQyxjQUE0QixFQUM1QixNQUdDO0lBRUQsWUFBWTtJQUNaLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxFQUFFLG1CQUFtQixJQUFJLElBQUksQ0FBQztJQUNoRSxNQUFNLFVBQVUsR0FBRyxNQUFNLEVBQUUsVUFBVSxJQUFJLFVBQVUsQ0FBQztJQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQztJQUM5QixJQUFJLFNBQW1CLENBQUM7SUFDeEIsSUFBSSxVQUFVLElBQUksVUFBVTtRQUMxQixTQUFTLEdBQUcsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUUsY0FBMkIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RixJQUFJLFVBQVUsSUFBSSxVQUFVO1FBQy9CLFNBQVMsR0FBRyxjQUFjLEVBQUUsTUFBTTtZQUNoQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFRLENBQUMsQ0FBQztZQUN4RSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixNQUFNLFlBQVksR0FBUSxFQUFFLENBQUM7SUFDN0IsSUFBSSxTQUFTO1FBQ1gsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxtQkFBbUIsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDL0IsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQ3RFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7Z0JBQUUsU0FBUyxDQUFDLGtCQUFrQjtZQUN4RSxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVk7WUFDckQsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1NBQ1Q7SUFDSCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDLENBQUM7QUFDRixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxVQUFpQyxRQUFpQixFQUFFLEdBQXFCO0lBQy9GLFlBQVk7SUFDWixNQUFNLEdBQUcsR0FBNEIsRUFBRSxDQUFDO0lBQ3hDLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxFQUFFO1FBQzNCLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0tBQ3RFO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFDRixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUV4QixRQUFpQixFQUNqQixNQUE2QjtJQUU3QixZQUFZO0lBQ1osTUFBTSxHQUFHLEdBQXlCLEVBQUUsQ0FBQztJQUNyQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksRUFBRTtRQUMzQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBWSxDQUFDO1FBQ3pFLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQztZQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7O1lBQ3JDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQzlCO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFDRixLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRztJQUM3QixZQUFZO0lBQ1osTUFBTSxHQUFHLEdBQTZCLEVBQUUsQ0FBQztJQUN6QyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksRUFBRTtRQUMzQixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQ3RCO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRztJQUN4QixZQUFZO0lBQ1osTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO0lBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDN0U7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixZQUFZO0FBRVosa0JBQWtCO0FBQ2xCLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHO0lBQ3pCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztJQUNoQixJQUFJLElBQUksR0FBRyxTQUFTLFNBQVM7UUFDM0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDLENBQUM7SUFDRixLQUFLLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtRQUNwQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QjtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFDRixZQUFZO0FBRVosbUJBQW1CO0FBQ25CLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBRTdCLEtBQWMsRUFDZCxHQUFzQztJQUV0QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVDLElBQUksR0FBRyxFQUFFO1FBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN0QjtJQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBQ0YsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsVUFFaEMsS0FBYSxFQUNiLGFBQTJELEVBQzNELFVBQTZCLEVBQzdCLFNBQVMsR0FBRyxJQUFJO0lBRWhCLE9BQU8sSUFBSSxPQUFPLENBQXNCLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDOUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQzNDLFlBQVk7UUFDWixJQUFJLEVBQUUsSUFBSSxhQUFhLEVBQUU7WUFDdkIsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLElBQUksRUFBRSxHQUFpQixJQUFJLENBQUM7WUFDNUIsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ3BCLEVBQUUsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQzthQUN6QjtZQUNELEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDYixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDWixDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUNwQyxJQUFJLFVBQVU7Z0JBQUUsVUFBVSxFQUFFLENBQUM7O2dCQUN4QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDdEI7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7YUFDcEUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBQ0YsU0FBUyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsR0FBRztJQUN0QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDOztRQUU3QyxLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUF5QyxDQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUMxQixDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDeEI7SUFDSCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUNGLFNBQVMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUc7SUFDdEMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQzs7UUFFN0MsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQTJCLE9BQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7U0FDbkU7SUFDSCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUNGLFdBQVcsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUc7SUFDeEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0FBQzdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVWRnVuY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29uZmlncy9iYXNlLWZ1bmN0aW9ucyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFN0cmluZyB7XG4gICAgc3RyaXBDaGFyKGNoYXJhY3Rlcj86IHN0cmluZyk6IHN0cmluZztcbiAgICBsYXN0U3RyaXBDaGFyKGNoYXJhY3Rlcj86IHN0cmluZyk6IHN0cmluZztcbiAgICAvKipSZW1vdmUgbnVsbCBmcm9tIHN0cmluZyBjb250ZW50LiAqL1xuICAgIHJlbW92ZU51bGwoKTogc3RyaW5nO1xuICAgIHVuQ2hhcihjaGFyYWN0ZXI/OiBzdHJpbmcsIHJlcGxhY2VtZW50Pzogc3RyaW5nKTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIFBhc2NhbCBjYXNlIHRvIFNlbnRlbmNlIGNhc2VcbiAgICAgKiBAZXhhbXBsZSAnc21hbGxCb29rJy50b1NlbnRlbmNlQ2FzZSgpID0gJ1NtYWxsIEJvb2snXG4gICAgICovXG4gICAgdG9TZW50ZW5jZUNhc2UoKTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIGFsbCBvY2N1cnJlbmNlcyBvZiBhIHN1YnN0cmluZ1xuICAgICAqIEByZXR1cm5zIFRoZSBzdHJpbmcgYWZ0ZXIgcmVwbGFjZW1lbnRcbiAgICAgKi9cbiAgICByZXBsYWNlQWxsU3ViU3RyKGNoYXJhY3Rlcj86IHN0cmluZywgcmVwbGFjZW1lbnQ/OiBzdHJpbmcpOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2hhcmFjdGVyIENoYXJhY3RlciB0byBhZGQgYmVmb3JlIHN0cmluZ1xuICAgICAqIEBwYXJhbSBleHBlY3RlZExlbmd0aCBFeHBlY3RlZCBsZW5ndGggb2YgdGhlIHN0cmluZyBhZnRlciBhZGRpdGlvbiBvZiB0aGUgY2hhcmFjdGVyXG4gICAgICovXG4gICAgYWRkUHJlY2VkaW5nQ2hhcihjaGFyYWN0ZXI6IHN0cmluZywgZXhwZWN0ZWRMZW5ndGg6IG51bWJlcik6IHN0cmluZztcbiAgfVxuXG4gIGludGVyZmFjZSBBcnJheTxUPiB7XG4gICAgbWVyZ2UoKTogVDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRvIHNlbGVjdCBmcm9tIHRoZSBlbmQuXG4gICAgICogQGRlZmF1bHRWYWx1ZSAwXG4gICAgICogQGV4YW1wbGUgWydhJywnYicsJ2MnXS5yZXZlcnNlSW5kZXgoMSkgcmV0dXJucyAnYidcbiAgICAgKiBAZXhhbXBsZSBbJ2EnLCdiJywnYycsJ2QnLCdlJ10ucmV2ZXJzZUluZGV4KDIpIHJldHVybnMgJ2MnXG4gICAgICovXG4gICAgcmV2ZXJzZUluZGV4KGluZGV4PzogbnVtYmVyKTogVDtcbiAgICBsYXN0SXRlbSgpOiBUO1xuICAgIC8qKlxuICAgICAqIFNodWZmbGVzIHRoZSBjb250ZW50IG9mIGFuIGFycmF5XG4gICAgICovXG4gICAgc2h1ZmZsZSgpOiBUW107XG5cbiAgICAvKipcbiAgICAgKiBTb3J0IGJ5IHRoZSBsZW5ndGggb2YgdGhlIGZpZWxkIHNwZWNpZmllZCBpbiBhc2NlbmRpbmcgb3JkZXJcbiAgICAgKiBAcGFyYW0gZmllbGQgRmllbGQgbmFtZSB0byBjb21wYXJlIHdpdGhcbiAgICAgKiBAcGFyYW0gcmV2ZXJzZSBTaG91bGQgaXQgYmUgaW4gYSBkZXNjZW5kaW5nIG9yZGVyXG4gICAgICovXG4gICAgc29ydEJ5RmllbGRMZW5ndGgoZmllbGQ6IGtleW9mIFQsIHJldmVyc2U/OiBib29sZWFuKTogVFtdO1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmllbGQgRmllbGQgbmFtZSB0byBjb21wYXJlIHdpdGhcbiAgICAgKiBAcGFyYW0gaXNTdHJpbmcgSXMgdGhlIGRhdGEgdHlwZSBvZiB0aGUgZmllbGQgYSBzdHJpbmdcbiAgICAgKiBAcGFyYW0gcmV2ZXJzZSBTaG91bGQgaXQgYmUgaW4gYSBkZXNjZW5kaW5nIG9yZGVyXG4gICAgICovXG4gICAgc29ydDIoZmllbGQ6IGtleW9mIFQsIGlzU3RyaW5nPzogYm9vbGVhbiwgcmV2ZXJzZT86IGJvb2xlYW4pOiBUW107XG4gICAgLyoqXG4gICAgICogRGV0ZWN0cyB0aGUgZGF0YSB0eXBlIG9mIHRoZSBmaWVsZCB0byBzb3J0IGJ5XG4gICAgICogQHBhcmFtIGZpZWxkIEZpZWxkIG5hbWUgdG8gY29tcGFyZSB3aXRoXG4gICAgICogQHBhcmFtIHJldmVyc2UgU2hvdWxkIGl0IGJlIGluIGEgZGVzY2VuZGluZyBvcmRlclxuICAgICAqL1xuICAgIHNvcnQzKGZpZWxkOiBrZXlvZiBULCByZXZlcnNlPzogYm9vbGVhbik6IFRbXTtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgaXRlbXMgZnJvbSBhbiBhcnJheSB0aGF0IGRvbid0IGhhdmUgdmFsdWVzIGluIGFueSBvZiBpdHMgZmllbGRzXG4gICAgICogQHBhcmFtIGV4cGVjdGVkRmllbGRzIEZpZWxkcyB0byBjaGVjayBmb3IgZW1wdGluZXNzLCB0aGUgZnVuY3Rpb24gd2lsbCByZW1vdmUgdGhlIHJvd3MgdGhhdCBkb24ndCBoYXZlIGFueSB2YWx1ZSBpbiBhbGwgdGhlIGZpZWxkcyBzcGVjaWZpZWQgd2hpbGUga2VlcGluZyB0aGUgcm93cyB0aGF0IGhhdmUgYXQgbGVhc3Qgb25lIHZhbHVlXG4gICAgICogQHBhcmFtIGNvbmZpZyBDb25maWdcbiAgICAgKiBAcmV0dXJucyBUaGUgaXRlbXMgcmVtb3ZlZFxuICAgICAqL1xuICAgIHJlbW92ZUVtcHR5SXRlbXMoXG4gICAgICBleHBlY3RlZEZpZWxkcz86IChrZXlvZiBUKVtdLFxuICAgICAgY29uZmlnPzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogU3BlY2lmeSB3aGV0aGVyIHRvIGNoZWNrIHRoZSB2YWx1ZSBpbiBib29sZWFuIGZpZWxkcy5cbiAgICAgICAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAgICAgICAqL1xuICAgICAgICBpZ25vcmVCb29sZWFuRmllbGRzPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNwZWNpZnkgd2hldGhlciB0byBjaGVjayBmb3IgZW1wdGluZXNzIGluIHRoZSAnZXhwZWN0ZWRGaWVsZHMnIG9yIGNoZWNrIGZvciBlbXB0aW5lc3MgaW4gdGhlIG90aGVyIGZpZWxkcyBleGNsdWRpbmcgdGhlIGZpZWxkcyBzcGVjaWZpZWRcbiAgICAgICAgICogQGRlZmF1bHRWYWx1ZSBgaW5jbHVkZWRgXG4gICAgICAgICAqL1xuICAgICAgICBmaWVsZHNUeXBlPzogJ2luY2x1ZGVkJyB8ICdleGNsdWRlZCc7XG4gICAgICB9LFxuICAgICk6IFRbXTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGFuIGFycmF5IHRvIGEga2V5IHZhbHVlIHBhaXIuXG4gICAgICogQHBhcmFtIGFyciBBcnJheSB0byBiZSBjb252ZXJ0ZWRcbiAgICAgKiBAcGFyYW0ga2V5RmllbGQgVGhlIGZpZWxkIHRvIGJlIHVzZWQgYXMgdGhlIGtleVxuICAgICAqIEByZXR1cm5zIEFuIGluZGV4IG9iamVjdCBjb250YWluaW5nIHRoZSBrZXlGaWVsZCBhcyB0aGUgaW5kZXgga2V5IGFuZCBlYWNoIGl0ZW0gb2YgdGhlIGFycmF5IGFzIHZhbHVlIGFzc2lnbmVkIHRvIGVhY2ggaW5kZXhcbiAgICAgKi9cbiAgICB0b01hcChrZXlGaWVsZDoga2V5b2YgVCk6IHsgW3g6IHN0cmluZ106IFQgfTtcbiAgICB0b01hcDxOVD4oa2V5RmllbGQ6IGtleW9mIFQsIG1hcDogKGl0ZW06IFQpID0+IE5UKTogeyBbeDogc3RyaW5nXTogTlQgfTtcbiAgICB0b01hcDxOVD4oa2V5RmllbGQ6IGtleW9mIFQsIG1hcD86IChpdGVtOiBUKSA9PiBOVCk7XG5cbiAgICAvKipcbiAgICAgKiBHcm91cHMgYW4gYXJyYXkgYnkgdW5pcXVlIGVudHJpZXMgaW4gYSBmaWVsZC5cbiAgICAgKiBAcGFyYW0gYXJyIEFycmF5IHRvIGJlIGdyb3VwZWRcbiAgICAgKiBAcGFyYW0ga2V5RmllbGQgVGhlIGZpZWxkIHRvIGJlIHVzZWQgYXMgdGhlIGtleVxuICAgICAqL1xuICAgIGdyb3VwQnkoa2V5RmllbGQ6IGtleW9mIFQsIGtleU1hcD86ICh2YWx1ZTogVCkgPT4gc3RyaW5nKTogeyBbeDogc3RyaW5nXTogVFtdIH07XG5cbiAgICAvKipcbiAgICAgKiBUdXJucyBhbiBhcnJheSB0byBhIG1hcC5cbiAgICAgKi9cbiAgICB0b0Jvb2xlYW5NYXAoKTogeyBbeDogc3RyaW5nXTogYm9vbGVhbiB9O1xuICB9XG4gIGludGVyZmFjZSBGdW5jdGlvbiB7XG4gICAgY2xvbmU6IGFueTtcbiAgfVxufVxuZGVjbGFyZSBtb2R1bGUgJ0Bhbmd1bGFyL2Zvcm1zJyB7XG4gIGludGVyZmFjZSBGb3JtQXJyYXk8VENvbnRyb2wgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2w8YW55PiA9IGFueT5cbiAgICBleHRlbmRzIEFic3RyYWN0Q29udHJvbDxcbiAgICAgIMm1VHlwZWRPclVudHlwZWQ8VENvbnRyb2wsIMm1Rm9ybUFycmF5VmFsdWU8VENvbnRyb2w+LCBhbnk+LFxuICAgICAgybVUeXBlZE9yVW50eXBlZDxUQ29udHJvbCwgybVGb3JtQXJyYXlSYXdWYWx1ZTxUQ29udHJvbD4sIGFueT5cbiAgICA+IHtcbiAgICBjRm9ybVN0cnVjdHVyZTogVENvbnRyb2w7XG4gICAgY0FkZEl0ZW0oaW5kZXg/OiBudW1iZXIsIGRhdGE/OiBUQ29udHJvbCk6IEZvcm1BcnJheTxUQ29udHJvbD47XG4gICAgLyoqXG4gICAgICogSGFuZGxlcyB0aGUgZGVsZXRpb24gb2Ygcm93cyBmcm9tIGEgRm9ybUFycmF5XG4gICAgICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSByb3cgdG8gZGVsZXRlXG4gICAgICogQHBhcmFtIGZhIFRoZSBGb3JtQXJyYXkgdGhhdCBob2xkcyB0aGUgcm93c1xuICAgICAqIEBwYXJhbSBkZWxldGVTZXJ2aWNlIFRoZSBkZWxldGlvbiBzZXJ2aWNlIHRvIGJlIGNhbGxlZCAoSXQgc2hvdWxkIGJlIGFuIGFub255bW91cyBmdW5jdGlvbilcbiAgICAgKiBAcGFyYW0gYWRkUm93RnVuYyBUaGUgZnVuY3Rpb24gKGFub255bW91cykgdGhhdCBhZGRzIGEgbmV3IHJvdyB0byB0aGUgRm9ybUFycmF5XG4gICAgICogQHBhcmFtIGVtaXRFdmVudCBTcGVjaWZ5IHdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCB3aGVuIG1hbmlwdWxhdGluZyB0aGUgRm9ybUFycmF5XG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBjUmVtb3ZlSXRlbShcbiAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgICBkZWxldGVTZXJ2aWNlPzogKC4uLmFyZ3MpID0+IFByb21pc2U8YW55PiB8IE9ic2VydmFibGU8YW55PixcbiAgICAgIGFkZFJvd0Z1bmM/OiAoLi4uYXJncykgPT4gYW55LFxuICAgICAgZW1pdEV2ZW50PzogYm9vbGVhbixcbiAgICApOiBQcm9taXNlPEZvcm1BcnJheTxUQ29udHJvbD4+O1xuICB9XG4gIGV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RDb250cm9sIHtcbiAgICBmb3JtYXR0ZWRWYWx1ZT86IGFueTtcbiAgICBsYWJlbFZhbHVlPzogc3RyaW5nO1xuICAgIGdldEZvcm1hdHRlZFZhbHVlOiAoKSA9PiBhbnk7XG4gIH1cbiAgZXhwb3J0IGludGVyZmFjZSBGb3JtQ29udHJvbCB7XG4gICAgZm9ybWF0dGVkVmFsdWU/OiBzdHJpbmc7XG4gICAgbGFiZWxWYWx1ZT86IHN0cmluZztcbiAgICBnZXRGb3JtYXR0ZWRWYWx1ZTogKCkgPT4gc3RyaW5nO1xuICB9XG4gIGV4cG9ydCBpbnRlcmZhY2UgRm9ybUdyb3VwIHtcbiAgICBmb3JtYXR0ZWRWYWx1ZT86IHsgW3g6IHN0cmluZ106IHN0cmluZ1tdIHwgeyBbeDogc3RyaW5nXTogc3RyaW5nIH1bXSB9O1xuICAgIGdldEZvcm1hdHRlZFZhbHVlOiAoKSA9PiB7IFt4OiBzdHJpbmddOiBzdHJpbmdbXSB8IHsgW3g6IHN0cmluZ106IHN0cmluZyB9W10gfTtcbiAgfVxuICBleHBvcnQgaW50ZXJmYWNlIEZvcm1BcnJheSB7XG4gICAgZm9ybWF0dGVkVmFsdWU/OiBzdHJpbmdbXSB8IHsgW3g6IHN0cmluZ106IHN0cmluZyB9W107XG4gICAgZ2V0Rm9ybWF0dGVkVmFsdWU6ICgpID0+IHN0cmluZ1tdIHwgeyBbeDogc3RyaW5nXTogc3RyaW5nIH1bXTtcbiAgfVxufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGFuZ3VsYXIvcm91dGVyJyB7XG4gIGludGVyZmFjZSBSb3V0ZSB7XG4gICAgY3VzdG9tRGF0YT86IHtcbiAgICAgIG1pSUQ/OiBzdHJpbmc7XG4gICAgICB0aXRsZT86IHN0cmluZztcbiAgICAgIHBhZ2VDb21wb25lbnQ/OiB7XG4gICAgICAgIGNlbnRlckhlYWRlcj86IGJvb2xlYW47XG4gICAgICAgIGhpZGVIZWFkZXI/OiBib29sZWFuO1xuICAgICAgfTtcbiAgICB9O1xuICB9XG59XG5cbi8vI3JlZ2lvbiAgc3RyaW5nICovXG5TdHJpbmcucHJvdG90eXBlLnN0cmlwQ2hhciA9IGZ1bmN0aW9uICh0aGlzOiBzdHJpbmcsIGNoYXJhY3RlciA9ICcvJykge1xuICByZXR1cm4gKHRoaXMgKyAnJykucmVwbGFjZShjaGFyYWN0ZXIsICcnKTtcbn07XG5TdHJpbmcucHJvdG90eXBlLmxhc3RTdHJpcENoYXIgPSBmdW5jdGlvbiAodGhpczogc3RyaW5nLCBjaGFyYWN0ZXIgPSAnLycpIHtcbiAgcmV0dXJuIHRoaXNbdGhpcz8ubGVuZ3RoIC0gMV0gPT0gY2hhcmFjdGVyID8gdGhpcy5zbGljZSgwLCB0aGlzLmxlbmd0aCAtIDEpIDogdGhpcztcbn07XG5TdHJpbmcucHJvdG90eXBlLnJlbW92ZU51bGwgPSBmdW5jdGlvbiAodGhpczogc3RyaW5nKSB7XG4gIHJldHVybiBFVkZ1bmN0aW9ucy5zdHJpcE51bGwodGhpcyk7XG59O1xuU3RyaW5nLnByb3RvdHlwZS51bkNoYXIgPSBmdW5jdGlvbiAodGhpczogc3RyaW5nLCBjaGFyYWN0ZXIgPSAnLycsIHJlcGxhY2VtZW50ID0gJycpIHtcbiAgbGV0IHRlID0gJyc7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGUgPSB0aGlzW2ldO1xuICAgIHRlICs9IGUgIT0gY2hhcmFjdGVyID8gZSA6ICcnO1xuICB9XG4gIHJldHVybiB0ZS5zcGxpdChjaGFyYWN0ZXIpLmpvaW4ocmVwbGFjZW1lbnQpO1xufTtcblN0cmluZy5wcm90b3R5cGUudG9TZW50ZW5jZUNhc2UgPSBmdW5jdGlvbiAodGhpczogc3RyaW5nKSB7XG4gIHJldHVybiB0aGlzLnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpO1xufTtcblN0cmluZy5wcm90b3R5cGUucmVwbGFjZUFsbFN1YlN0ciA9IGZ1bmN0aW9uICh0aGlzOiBzdHJpbmcsIGNoYXJhY3RlciA9ICcvJywgcmVwbGFjZW1lbnQgPSAnJykge1xuICByZXR1cm4gdGhpcy5zcGxpdChjaGFyYWN0ZXIpLmpvaW4ocmVwbGFjZW1lbnQpO1xufTtcblN0cmluZy5wcm90b3R5cGUuYWRkUHJlY2VkaW5nQ2hhciA9IGZ1bmN0aW9uIChcbiAgdGhpczogc3RyaW5nLFxuICBjaGFyYWN0ZXI6IHN0cmluZyxcbiAgZXhwZWN0ZWRMZW5ndGg6IG51bWJlcixcbikge1xuICBpZiAodGhpcy5sZW5ndGggPj0gZXhwZWN0ZWRMZW5ndGgpIHJldHVybiB0aGlzO1xuICByZXR1cm4gY2hhcmFjdGVyLnJlcGVhdChleHBlY3RlZExlbmd0aCAtIHRoaXMubGVuZ3RoKSArIHRoaXM7XG59O1xuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAgYXJyYXkgKi9cbkFycmF5LnByb3RvdHlwZS5tZXJnZSA9IGZ1bmN0aW9uIDxUPih0aGlzOiBBcnJheTxUPikge1xuICBsZXQgciA9ICcnO1xuICBmb3IgKGNvbnN0IGkgb2YgdGhpcykge1xuICAgIHIgKz0gaTtcbiAgfVxuICByZXR1cm4gcjtcbn07XG5BcnJheS5wcm90b3R5cGUucmV2ZXJzZUluZGV4ID0gZnVuY3Rpb24gPFQ+KHRoaXM6IEFycmF5PFQ+LCBpbmRleCA9IDApIHtcbiAgcmV0dXJuIHRoaXNbdGhpcz8ubGVuZ3RoIC0gKDEgKyBpbmRleCldO1xufTtcbkFycmF5LnByb3RvdHlwZS5sYXN0SXRlbSA9IGZ1bmN0aW9uIDxUPih0aGlzOiBBcnJheTxUPikge1xuICByZXR1cm4gdGhpcy5yZXZlcnNlSW5kZXgoKTtcbn07XG5BcnJheS5wcm90b3R5cGUuc29ydEJ5RmllbGRMZW5ndGggPSBmdW5jdGlvbiA8VD4oXG4gIHRoaXM6IEFycmF5PFQ+LFxuICBmaWVsZDoga2V5b2YgVCxcbiAgcmV2ZXJzZTogYm9vbGVhbiA9IGZhbHNlLFxuKSB7XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyKCh4KSA9PiB4ICE9IG51bGwpLnNvcnQoXG4gICAgICAoYiwgYSkgPT4gKGFbZmllbGQgYXMgYW55XT8ubGVuZ3RoIHx8IDApIC0gKGJbZmllbGQgYXMgYW55XT8ubGVuZ3RoIHx8IDApLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyKCh4KSA9PiB4ICE9IG51bGwpLnNvcnQoXG4gICAgICAoYSwgYikgPT4gKGFbZmllbGQgYXMgYW55XT8ubGVuZ3RoIHx8IDApIC0gKGJbZmllbGQgYXMgYW55XT8ubGVuZ3RoIHx8IDApLFxuICAgICk7XG4gIH1cbn07XG5BcnJheS5wcm90b3R5cGUuc29ydDIgPSBmdW5jdGlvbiA8VD4oXG4gIHRoaXM6IEFycmF5PFQ+LFxuICBmaWVsZDoga2V5b2YgVCxcbiAgaXNTdHJpbmc6IGJvb2xlYW4gPSBmYWxzZSxcbiAgcmV2ZXJzZTogYm9vbGVhbiA9IGZhbHNlLFxuKSB7XG4gIGlmIChyZXZlcnNlKVxuICAgIHJldHVybiBpc1N0cmluZ1xuICAgICAgPyB0aGlzLmZpbHRlcigoeCkgPT4geCAhPSBudWxsKS5zb3J0KChiLCBhKSA9PlxuICAgICAgICAgIHNvcnRBbHBoYU51bShhW2ZpZWxkXT8udG9TdHJpbmcoKSwgYltmaWVsZF0/LnRvU3RyaW5nKCkpLFxuICAgICAgICApXG4gICAgICA6IHRoaXMuZmlsdGVyKCh4KSA9PiB4ICE9IG51bGwpLnNvcnQoXG4gICAgICAgICAgKGIsIGEpID0+IChhW2ZpZWxkIGFzIGFueV0gfHwgMCkgLSAoYltmaWVsZCBhcyBhbnldIHx8IDApLFxuICAgICAgICApO1xuICBlbHNlXG4gICAgcmV0dXJuIGlzU3RyaW5nXG4gICAgICA/IHRoaXMuZmlsdGVyKCh4KSA9PiB4ICE9IG51bGwpLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgc29ydEFscGhhTnVtKGFbZmllbGRdPy50b1N0cmluZygpLCBiW2ZpZWxkXT8udG9TdHJpbmcoKSksXG4gICAgICAgIClcbiAgICAgIDogdGhpcy5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkuc29ydChcbiAgICAgICAgICAoYSwgYikgPT4gKGFbZmllbGQgYXMgYW55XSB8fCAwKSAtIChiW2ZpZWxkIGFzIGFueV0gfHwgMCksXG4gICAgICAgICk7XG59O1xuQXJyYXkucHJvdG90eXBlLnNvcnQzID0gZnVuY3Rpb24gPFQ+KHRoaXM6IEFycmF5PFQ+LCBmaWVsZDoga2V5b2YgVCwgcmV2ZXJzZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIGxldCBpc1N0cmluZzogYm9vbGVhbiA9IHRoaXMuc29tZSgoeCkgPT4gaXNOYU4oeFtmaWVsZF0gYXMgYW55KSk7XG4gIHJldHVybiBpc1N0cmluZyA/IHRoaXMuc29ydDIoZmllbGQsIHRydWUsIHJldmVyc2UpIDogdGhpcy5zb3J0MihmaWVsZCwgZmFsc2UsIHJldmVyc2UpO1xufTtcbnZhciByZUEgPSAvW15hLXpBLVpdL2c7XG52YXIgcmVOID0gL1teMC05XS9nO1xuXG5mdW5jdGlvbiBzb3J0QWxwaGFOdW0oYTogc3RyaW5nLCBiOiBzdHJpbmcpIHtcbiAgdmFyIGFBID0gYT8udG9VcHBlckNhc2UoKT8ucmVwbGFjZShyZUEsICcnKTtcbiAgdmFyIGJBID0gYj8udG9VcHBlckNhc2UoKT8ucmVwbGFjZShyZUEsICcnKTtcbiAgaWYgKGFBID09PSBiQSkge1xuICAgIHZhciBhTiA9IHBhcnNlSW50KGE/LnJlcGxhY2UocmVOLCAnJyksIDEwKTtcbiAgICB2YXIgYk4gPSBwYXJzZUludChiPy5yZXBsYWNlKHJlTiwgJycpLCAxMCk7XG4gICAgcmV0dXJuIGFOID09PSBiTiA/IDAgOiBhTiA+IGJOID8gMSA6IC0xO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBhQSA+IGJBID8gMSA6IC0xO1xuICB9XG59XG5cbkFycmF5LnByb3RvdHlwZS5yZW1vdmVFbXB0eUl0ZW1zID0gZnVuY3Rpb24gPFQ+KFxuICB0aGlzOiBBcnJheTxUPixcbiAgZXhwZWN0ZWRGaWVsZHM/OiAoa2V5b2YgVClbXSxcbiAgY29uZmlnPzoge1xuICAgIGlnbm9yZUJvb2xlYW5GaWVsZHM/OiBib29sZWFuO1xuICAgIGZpZWxkc1R5cGU/OiAnaW5jbHVkZWQnIHwgJ2V4Y2x1ZGVkJztcbiAgfSxcbikge1xuICAvLyBkZWJ1Z2dlcjtcbiAgY29uc3QgaWdub3JlQm9vbGVhbkZpZWxkcyA9IGNvbmZpZz8uaWdub3JlQm9vbGVhbkZpZWxkcyA9PSB0cnVlO1xuICBjb25zdCBmaWVsZHNUeXBlID0gY29uZmlnPy5maWVsZHNUeXBlIHx8ICdpbmNsdWRlZCc7XG4gIGlmICghdGhpcy5sZW5ndGgpIHJldHVybiB0aGlzO1xuICBsZXQgZmllbGRMaXN0OiBzdHJpbmdbXTtcbiAgaWYgKGZpZWxkc1R5cGUgPT0gJ2luY2x1ZGVkJylcbiAgICBmaWVsZExpc3QgPSBleHBlY3RlZEZpZWxkcz8ubGVuZ3RoID8gKGV4cGVjdGVkRmllbGRzIGFzIHN0cmluZ1tdKSA6IE9iamVjdC5rZXlzKHRoaXNbMF0pO1xuICBlbHNlIGlmIChmaWVsZHNUeXBlID09ICdleGNsdWRlZCcpXG4gICAgZmllbGRMaXN0ID0gZXhwZWN0ZWRGaWVsZHM/Lmxlbmd0aFxuICAgICAgPyBPYmplY3Qua2V5cyh0aGlzWzBdKS5maWx0ZXIoKHgpID0+ICFleHBlY3RlZEZpZWxkcy5pbmNsdWRlcyh4IGFzIGFueSkpXG4gICAgICA6IE9iamVjdC5rZXlzKHRoaXNbMF0pO1xuICBjb25zdCByZW1vdmVkSXRlbXM6IFRbXSA9IFtdO1xuICBpZiAoZmllbGRMaXN0KVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGlnbm9yZUJvb2xlYW5GaWVsZHMgJiYgaSA9PSAwKVxuICAgICAgICBmaWVsZExpc3QgPSBmaWVsZExpc3QuZmlsdGVyKChmKSA9PiB0eXBlb2YgdGhpc1swXVtmXSAhPSAnYm9vbGVhbicpO1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXNbaV07XG4gICAgICBpZiAoZmllbGRMaXN0LnNvbWUoKGYpID0+IGl0ZW1bZl0gIT0gbnVsbCkpIGNvbnRpbnVlOyAvL0Rvbid0IHJlbW92ZSByb3dcbiAgICAgIHJlbW92ZWRJdGVtcy5wdXNoKC4uLnRoaXMuc3BsaWNlKGksIDEpKTsgLy9SZW1vdmUgcm93XG4gICAgICBpID0gaS0tO1xuICAgIH1cbiAgcmV0dXJuIHJlbW92ZWRJdGVtcztcbn07XG5BcnJheS5wcm90b3R5cGUudG9NYXAgPSBmdW5jdGlvbiA8VCwgTlQ+KHRoaXM6IEFycmF5PFQ+LCBrZXlGaWVsZDoga2V5b2YgVCwgbWFwPzogKGl0ZW06IFQpID0+IE5UKSB7XG4gIC8vIGRlYnVnZ2VyO1xuICBjb25zdCByZXQ6IHsgW3g6IHN0cmluZ106IFQgfCBOVCB9ID0ge307XG4gIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgdGhpcykge1xuICAgIHJldFtpdGVyYXRvcltrZXlGaWVsZD8udG9TdHJpbmcoKV1dID0gbWFwID8gbWFwKGl0ZXJhdG9yKSA6IGl0ZXJhdG9yO1xuICB9XG4gIHJldHVybiByZXQ7XG59O1xuQXJyYXkucHJvdG90eXBlLmdyb3VwQnkgPSBmdW5jdGlvbiA8VD4oXG4gIHRoaXM6IEFycmF5PFQ+LFxuICBrZXlGaWVsZDoga2V5b2YgVCxcbiAga2V5TWFwPzogKHZhbHVlOiBUKSA9PiBzdHJpbmcsXG4pOiB7IFt4OiBzdHJpbmddOiBUW10gfSB7XG4gIC8vIGRlYnVnZ2VyO1xuICBjb25zdCByZXQ6IHsgW3g6IHN0cmluZ106IFRbXSB9ID0ge307XG4gIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgdGhpcykge1xuICAgIGNvbnN0IGdyb3VwID0ga2V5TWFwID8ga2V5TWFwKGl0ZXJhdG9yKSA6IChpdGVyYXRvcltrZXlGaWVsZF0gYXMgc3RyaW5nKTtcbiAgICBpZiAocmV0W2dyb3VwXSkgcmV0W2dyb3VwXS5wdXNoKGl0ZXJhdG9yKTtcbiAgICBlbHNlIHJldFtncm91cF0gPSBbaXRlcmF0b3JdO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn07XG5BcnJheS5wcm90b3R5cGUudG9Cb29sZWFuTWFwID0gZnVuY3Rpb24gKHRoaXM6IEFycmF5PGFueT4pOiB7IFt4OiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAvLyBkZWJ1Z2dlcjtcbiAgY29uc3QgcmV0OiB7IFt4OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgZm9yIChjb25zdCBpdGVyYXRvciBvZiB0aGlzKSB7XG4gICAgcmV0W2l0ZXJhdG9yXSA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn07XG5cbkFycmF5LnByb3RvdHlwZS5zaHVmZmxlID0gZnVuY3Rpb24gPFQ+KHRoaXM6IEFycmF5PFQ+KSB7XG4gIC8vIGRlYnVnZ2VyO1xuICBjb25zdCBuZXdBcnI6IFRbXSA9IFtdO1xuICB3aGlsZSAodGhpcy5sZW5ndGgpIHtcbiAgICBuZXdBcnIucHVzaCguLi50aGlzLnNwbGljZShNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0aGlzLmxlbmd0aCAtIDEpLCAxKSk7XG4gIH1cbiAgcmV0dXJuIG5ld0Fycjtcbn07XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gRnVuY3Rpb25cbkZ1bmN0aW9uLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB2YXIgdGVtcCA9IGZ1bmN0aW9uIHRlbXBvcmFyeSgpIHtcbiAgICByZXR1cm4gdGhhdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xuICBmb3IgKHZhciBrZXkgaW4gdGhpcykge1xuICAgIGlmICh0aGlzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHRlbXBba2V5XSA9IHRoaXNba2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRlbXA7XG59O1xuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiBGT1JNQVJSQVlcbkZvcm1BcnJheS5wcm90b3R5cGUuY0FkZEl0ZW0gPSBmdW5jdGlvbiA8VENvbnRyb2wgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2w8YW55PiA9IGFueT4oXG4gIHRoaXM6IEZvcm1BcnJheTxUQ29udHJvbD4sXG4gIGluZGV4PzogbnVtYmVyLFxuICB2YWw/OiB0eXBlb2YgdGhpcy5jRm9ybVN0cnVjdHVyZS52YWx1ZSxcbikge1xuICBjb25zdCBmb3JtID0gY2xvbmVEZWVwKHRoaXMuY0Zvcm1TdHJ1Y3R1cmUpO1xuICBpZiAodmFsKSB7XG4gICAgZm9ybS5wYXRjaFZhbHVlKHZhbCk7XG4gIH1cbiAgdGhpcy5pbnNlcnQoaW5kZXgsIGZvcm0pO1xuICByZXR1cm4gdGhpcztcbn07XG5Gb3JtQXJyYXkucHJvdG90eXBlLmNSZW1vdmVJdGVtID0gZnVuY3Rpb24gPFRDb250cm9sIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPGFueT4gPSBhbnk+KFxuICB0aGlzOiBGb3JtQXJyYXk8VENvbnRyb2w+LFxuICBpbmRleDogbnVtYmVyLFxuICBkZWxldGVTZXJ2aWNlPzogKC4uLmFyZ3MpID0+IFByb21pc2U8YW55PiB8IE9ic2VydmFibGU8YW55PixcbiAgYWRkUm93RnVuYz86ICguLi5hcmdzKSA9PiBhbnksXG4gIGVtaXRFdmVudCA9IHRydWUsXG4pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPEZvcm1BcnJheTxUQ29udHJvbD4+KChzdWIpID0+IHtcbiAgICBjb25zdCBpZCA9IHRoaXMuY29udHJvbHNbaW5kZXhdPy52YWx1ZT8uaWQ7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgaWYgKGlkICYmIGRlbGV0ZVNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IHJlcSA9IGRlbGV0ZVNlcnZpY2UoaWQpO1xuICAgICAgbGV0IHBzOiBQcm9taXNlPGFueT4gPSBudWxsO1xuICAgICAgaWYgKHJlcVsndG9Qcm9taXNlJ10pIHtcbiAgICAgICAgcHMgPSByZXFbJ3RvUHJvbWlzZSddKCk7XG4gICAgICB9XG4gICAgICBwcz8udGhlbigocikgPT4ge1xuICAgICAgICBzdWIodGhpcyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250cm9scy5sZW5ndGggPT0gMSAmJiBpZCkge1xuICAgICAgdGhpcy5yZW1vdmVBdChpbmRleCwgeyBlbWl0RXZlbnQgfSk7XG4gICAgICBpZiAoYWRkUm93RnVuYykgYWRkUm93RnVuYygpO1xuICAgICAgZWxzZSB0aGlzLmNBZGRJdGVtKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2xzLmxlbmd0aCA+IDEpIHRoaXMucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50IH0pO1xuICAgIGVsc2UgaWYgKHRoaXMuY29udHJvbHMubGVuZ3RoID09IDEpIHtcbiAgICAgIHRoaXMuY29udHJvbHNbMF0ucmVzZXQoKTtcbiAgICB9XG4gIH0pO1xufTtcbkZvcm1Hcm91cC5wcm90b3R5cGUuZ2V0Rm9ybWF0dGVkVmFsdWUgPSBmdW5jdGlvbiAodGhpczogRm9ybUdyb3VwKSB7XG4gIGNvbnN0IGRhdGEgPSB7fTtcbiAgaWYgKCF0aGlzLmNvbnRyb2xzKSByZXR1cm4gdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgZWxzZVxuICAgIGZvciAoY29uc3QgY29udHJvbE5hbWUgaW4gdGhpcy5jb250cm9scykge1xuICAgICAgZGF0YVtjb250cm9sTmFtZV0gPSAoPEZvcm1Db250cm9sIHwgRm9ybUdyb3VwIHwgRm9ybUFycmF5PihcbiAgICAgICAgdGhpcy5jb250cm9sc1tjb250cm9sTmFtZV1cbiAgICAgICkpLmdldEZvcm1hdHRlZFZhbHVlKCk7XG4gICAgfVxuICByZXR1cm4gZGF0YTtcbn07XG5Gb3JtQXJyYXkucHJvdG90eXBlLmdldEZvcm1hdHRlZFZhbHVlID0gZnVuY3Rpb24gKHRoaXM6IEZvcm1BcnJheSkge1xuICBjb25zdCBkYXRhID0gW107XG4gIGlmICghdGhpcy5jb250cm9scykgcmV0dXJuIHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gIGVsc2VcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5jb250cm9scykge1xuICAgICAgZGF0YS5wdXNoKCg8Rm9ybUNvbnRyb2wgfCBGb3JtR3JvdXA+Y29udHJvbCkuZ2V0Rm9ybWF0dGVkVmFsdWUoKSk7XG4gICAgfVxuICByZXR1cm4gZGF0YTtcbn07XG5Gb3JtQ29udHJvbC5wcm90b3R5cGUuZ2V0Rm9ybWF0dGVkVmFsdWUgPSBmdW5jdGlvbiAodGhpczogRm9ybUNvbnRyb2wpIHtcbiAgcmV0dXJuIHRoaXMuZm9ybWF0dGVkVmFsdWU7XG59O1xuLy8jZW5kcmVnaW9uXG5cbmV4cG9ydCB7fTtcbiJdfQ==
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG90eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvcHJvdG90eXBlcy9wcm90b3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQWdMM0Qsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQXdCLFNBQVMsR0FBRyxHQUFHO0lBQ2xFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUF3QixTQUFTLEdBQUcsR0FBRztJQUN0RSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3JGLENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHO0lBQzVCLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUF3QixTQUFTLEdBQUcsR0FBRyxFQUFFLFdBQVcsR0FBRyxFQUFFO0lBQ2pGLElBQUksRUFB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LEVBQUU7WUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBQ0YsU0FBUyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsR0FBRztJQUN0QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDOztRQUU3QyxLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUF5QyxDQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUMxQixDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDeEI7SUFDSCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUNGLFNBQVMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUc7SUFDdEMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQzs7UUFFN0MsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQTJCLE9BQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7U0FDbkU7SUFDSCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUNGLFdBQVcsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUc7SUFDeEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0FBQzdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVWRnVuY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29uZmlncy9iYXNlLWZ1bmN0aW9ucyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFN0cmluZyB7XG4gICAgc3RyaXBDaGFyKGNoYXJhY3Rlcj86IHN0cmluZyk6IHN0cmluZztcbiAgICBsYXN0U3RyaXBDaGFyKGNoYXJhY3Rlcj86IHN0cmluZyk6IHN0cmluZztcbiAgICAvKipSZW1vdmUgbnVsbCBmcm9tIHN0cmluZyBjb250ZW50LiAqL1xuICAgIHJlbW92ZU51bGwoKTogc3RyaW5nO1xuICAgIHVuQ2hhcihjaGFyYWN0ZXI/OiBzdHJpbmcsIHJlcGxhY2VtZW50Pzogc3RyaW5nKTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIFBhc2NhbCBjYXNlIHRvIFNlbnRlbmNlIGNhc2VcbiAgICAgKiBAZXhhbXBsZSAnc21hbGxCb29rJy50b1NlbnRlbmNlQ2FzZSgpID0gJ1NtYWxsIEJvb2snXG4gICAgICovXG4gICAgdG9TZW50ZW5jZUNhc2UoKTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIGFsbCBvY2N1cnJlbmNlcyBvZiBhIHN1YnN0cmluZ1xuICAgICAqIEByZXR1cm5zIFRoZSBzdHJpbmcgYWZ0ZXIgcmVwbGFjZW1lbnRcbiAgICAgKi9cbiAgICByZXBsYWNlQWxsU3ViU3RyKGNoYXJhY3Rlcj86IHN0cmluZywgcmVwbGFjZW1lbnQ/OiBzdHJpbmcpOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2hhcmFjdGVyIENoYXJhY3RlciB0byBhZGQgYmVmb3JlIHN0cmluZ1xuICAgICAqIEBwYXJhbSBleHBlY3RlZExlbmd0aCBFeHBlY3RlZCBsZW5ndGggb2YgdGhlIHN0cmluZyBhZnRlciBhZGRpdGlvbiBvZiB0aGUgY2hhcmFjdGVyXG4gICAgICovXG4gICAgYWRkUHJlY2VkaW5nQ2hhcihjaGFyYWN0ZXI6IHN0cmluZywgZXhwZWN0ZWRMZW5ndGg6IG51bWJlcik6IHN0cmluZztcbiAgfVxuXG4gIGludGVyZmFjZSBBcnJheTxUPiB7XG4gICAgbWVyZ2UoKTogVDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRvIHNlbGVjdCBmcm9tIHRoZSBlbmQuXG4gICAgICogQGRlZmF1bHRWYWx1ZSAwXG4gICAgICogQGV4YW1wbGUgWydhJywnYicsJ2MnXS5yZXZlcnNlSW5kZXgoMSkgcmV0dXJucyAnYidcbiAgICAgKiBAZXhhbXBsZSBbJ2EnLCdiJywnYycsJ2QnLCdlJ10ucmV2ZXJzZUluZGV4KDIpIHJldHVybnMgJ2MnXG4gICAgICovXG4gICAgcmV2ZXJzZUluZGV4KGluZGV4PzogbnVtYmVyKTogVDtcbiAgICBsYXN0SXRlbSgpOiBUO1xuICAgIC8qKlxuICAgICAqIFNodWZmbGVzIHRoZSBjb250ZW50IG9mIGFuIGFycmF5XG4gICAgICovXG4gICAgc2h1ZmZsZSgpOiBUW107XG5cbiAgICAvKipcbiAgICAgKiBTb3J0IGJ5IHRoZSBsZW5ndGggb2YgdGhlIGZpZWxkIHNwZWNpZmllZCBpbiBhc2NlbmRpbmcgb3JkZXJcbiAgICAgKiBAcGFyYW0gZmllbGQgRmllbGQgbmFtZSB0byBjb21wYXJlIHdpdGhcbiAgICAgKiBAcGFyYW0gcmV2ZXJzZSBTaG91bGQgaXQgYmUgaW4gYSBkZXNjZW5kaW5nIG9yZGVyXG4gICAgICovXG4gICAgc29ydEJ5RmllbGRMZW5ndGgoZmllbGQ6IGtleW9mIFQsIHJldmVyc2U/OiBib29sZWFuKTogVFtdO1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmllbGQgRmllbGQgbmFtZSB0byBjb21wYXJlIHdpdGhcbiAgICAgKiBAcGFyYW0gaXNTdHJpbmcgSXMgdGhlIGRhdGEgdHlwZSBvZiB0aGUgZmllbGQgYSBzdHJpbmdcbiAgICAgKiBAcGFyYW0gcmV2ZXJzZSBTaG91bGQgaXQgYmUgaW4gYSBkZXNjZW5kaW5nIG9yZGVyXG4gICAgICovXG4gICAgc29ydDIoZmllbGQ6IGtleW9mIFQsIGlzU3RyaW5nPzogYm9vbGVhbiwgcmV2ZXJzZT86IGJvb2xlYW4pOiBUW107XG4gICAgLyoqXG4gICAgICogRGV0ZWN0cyB0aGUgZGF0YSB0eXBlIG9mIHRoZSBmaWVsZCB0byBzb3J0IGJ5XG4gICAgICogQHBhcmFtIGZpZWxkIEZpZWxkIG5hbWUgdG8gY29tcGFyZSB3aXRoXG4gICAgICogQHBhcmFtIHJldmVyc2UgU2hvdWxkIGl0IGJlIGluIGEgZGVzY2VuZGluZyBvcmRlclxuICAgICAqL1xuICAgIHNvcnQzKGZpZWxkOiBrZXlvZiBULCByZXZlcnNlPzogYm9vbGVhbik6IFRbXTtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgaXRlbXMgZnJvbSBhbiBhcnJheSB0aGF0IGRvbid0IGhhdmUgdmFsdWVzIGluIGFueSBvZiBpdHMgZmllbGRzXG4gICAgICogQHBhcmFtIGV4cGVjdGVkRmllbGRzIEZpZWxkcyB0byBjaGVjayBmb3IgZW1wdGluZXNzLCB0aGUgZnVuY3Rpb24gd2lsbCByZW1vdmUgdGhlIHJvd3MgdGhhdCBkb24ndCBoYXZlIGFueSB2YWx1ZSBpbiBhbGwgdGhlIGZpZWxkcyBzcGVjaWZpZWQgd2hpbGUga2VlcGluZyB0aGUgcm93cyB0aGF0IGhhdmUgYXQgbGVhc3Qgb25lIHZhbHVlXG4gICAgICogQHBhcmFtIGNvbmZpZyBDb25maWdcbiAgICAgKiBAcmV0dXJucyBUaGUgaXRlbXMgcmVtb3ZlZFxuICAgICAqL1xuICAgIHJlbW92ZUVtcHR5SXRlbXMoXG4gICAgICBleHBlY3RlZEZpZWxkcz86IChrZXlvZiBUKVtdLFxuICAgICAgY29uZmlnPzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogU3BlY2lmeSB3aGV0aGVyIHRvIGNoZWNrIHRoZSB2YWx1ZSBpbiBib29sZWFuIGZpZWxkcy5cbiAgICAgICAgICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG4gICAgICAgICAqL1xuICAgICAgICBpZ25vcmVCb29sZWFuRmllbGRzPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNwZWNpZnkgd2hldGhlciB0byBjaGVjayBmb3IgZW1wdGluZXNzIGluIHRoZSAnZXhwZWN0ZWRGaWVsZHMnIG9yIGNoZWNrIGZvciBlbXB0aW5lc3MgaW4gdGhlIG90aGVyIGZpZWxkcyBleGNsdWRpbmcgdGhlIGZpZWxkcyBzcGVjaWZpZWRcbiAgICAgICAgICogQGRlZmF1bHRWYWx1ZSBgaW5jbHVkZWRgXG4gICAgICAgICAqL1xuICAgICAgICBmaWVsZHNUeXBlPzogJ2luY2x1ZGVkJyB8ICdleGNsdWRlZCc7XG4gICAgICB9LFxuICAgICk6IFRbXTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGFuIGFycmF5IHRvIGEga2V5IHZhbHVlIHBhaXIuXG4gICAgICogQHBhcmFtIGtleUZpZWxkIFRoZSBmaWVsZCB0byBiZSB1c2VkIGFzIHRoZSBrZXlcbiAgICAgKiBAcmV0dXJucyBBbiBpbmRleCBvYmplY3QgY29udGFpbmluZyB0aGUga2V5RmllbGQgYXMgdGhlIGluZGV4IGtleSBhbmQgZWFjaCBpdGVtIG9mIHRoZSBhcnJheSBhcyB2YWx1ZSBhc3NpZ25lZCB0byBlYWNoIGluZGV4XG4gICAgICovXG4gICAgdG9NYXAoa2V5RmllbGQ6IGtleW9mIFQpOiB7IFt4OiBzdHJpbmddOiBUIH07XG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYW4gYXJyYXkgdG8gYSBrZXkgdmFsdWUgcGFpci5cbiAgICAgKiBAcGFyYW0ga2V5TWFwIEZ1bmN0aW9uIHRvIHNldCB0aGUga2V5IG9mIHRoZSBtYXBcbiAgICAgKi9cbiAgICB0b01hcChrZXlNYXA6IChyb3c6IFQpID0+IHN0cmluZyB8IG51bWJlcik6IHsgW3g6IHN0cmluZ106IFQgfTtcbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhbiBhcnJheSB0byBhIGtleSB2YWx1ZSBwYWlyLlxuICAgICAqIEBwYXJhbSBrZXlGaWVsZCBUaGUgZmllbGQgdG8gYmUgdXNlZCBhcyB0aGUga2V5XG4gICAgICogQHBhcmFtIHZhbHVlTWFwIEZ1bmN0aW9uIHRvIHNldCB0aGUgdmFsdWVzIG9mIGVhY2gga2V5IGluIHRoZSBtYXBcbiAgICAgKiBAcmV0dXJucyBBbiBpbmRleCBvYmplY3QgY29udGFpbmluZyB0aGUga2V5RmllbGQgYXMgdGhlIGluZGV4IGtleSBhbmQgZWFjaCBpdGVtIG9mIHRoZSBhcnJheSBhcyB2YWx1ZSBhc3NpZ25lZCB0byBlYWNoIGluZGV4XG4gICAgICovXG4gICAgdG9NYXA8TlQ+KGtleUZpZWxkOiBrZXlvZiBULCB2YWx1ZU1hcDogKGl0ZW06IFQpID0+IE5UKTogeyBbeDogc3RyaW5nXTogTlQgfTtcblxuICAgIC8qKlxuICAgICAqIEdyb3VwcyBhbiBhcnJheSBieSB1bmlxdWUgZW50cmllcyBpbiBhIGZpZWxkLlxuICAgICAqIEBwYXJhbSBhcnIgQXJyYXkgdG8gYmUgZ3JvdXBlZFxuICAgICAqIEBwYXJhbSBrZXlGaWVsZCBUaGUgZmllbGQgdG8gYmUgdXNlZCBhcyB0aGUga2V5XG4gICAgICovXG4gICAgZ3JvdXBCeShrZXlGaWVsZDoga2V5b2YgVCwga2V5TWFwPzogKHZhbHVlOiBUKSA9PiBzdHJpbmcpOiB7IFt4OiBzdHJpbmddOiBUW10gfTtcblxuICAgIC8qKlxuICAgICAqIFR1cm5zIGFuIGFycmF5IHRvIGEgbWFwLlxuICAgICAqL1xuICAgIHRvQm9vbGVhbk1hcCgpOiB7IFt4OiBzdHJpbmddOiBib29sZWFuIH07XG4gIH1cbiAgaW50ZXJmYWNlIEZ1bmN0aW9uIHtcbiAgICBjbG9uZTogYW55O1xuICB9XG59XG5kZWNsYXJlIG1vZHVsZSAnQGFuZ3VsYXIvZm9ybXMnIHtcbiAgaW50ZXJmYWNlIEZvcm1BcnJheTxUQ29udHJvbCBleHRlbmRzIEFic3RyYWN0Q29udHJvbDxhbnk+ID0gYW55PlxuICAgIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPFxuICAgICAgybVUeXBlZE9yVW50eXBlZDxUQ29udHJvbCwgybVGb3JtQXJyYXlWYWx1ZTxUQ29udHJvbD4sIGFueT4sXG4gICAgICDJtVR5cGVkT3JVbnR5cGVkPFRDb250cm9sLCDJtUZvcm1BcnJheVJhd1ZhbHVlPFRDb250cm9sPiwgYW55PlxuICAgID4ge1xuICAgIGNGb3JtU3RydWN0dXJlOiBUQ29udHJvbDtcbiAgICBjQWRkSXRlbShpbmRleD86IG51bWJlciwgZGF0YT86IFRDb250cm9sKTogRm9ybUFycmF5PFRDb250cm9sPjtcbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIHRoZSBkZWxldGlvbiBvZiByb3dzIGZyb20gYSBGb3JtQXJyYXlcbiAgICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHJvdyB0byBkZWxldGVcbiAgICAgKiBAcGFyYW0gZmEgVGhlIEZvcm1BcnJheSB0aGF0IGhvbGRzIHRoZSByb3dzXG4gICAgICogQHBhcmFtIGRlbGV0ZVNlcnZpY2UgVGhlIGRlbGV0aW9uIHNlcnZpY2UgdG8gYmUgY2FsbGVkIChJdCBzaG91bGQgYmUgYW4gYW5vbnltb3VzIGZ1bmN0aW9uKVxuICAgICAqIEBwYXJhbSBhZGRSb3dGdW5jIFRoZSBmdW5jdGlvbiAoYW5vbnltb3VzKSB0aGF0IGFkZHMgYSBuZXcgcm93IHRvIHRoZSBGb3JtQXJyYXlcbiAgICAgKiBAcGFyYW0gZW1pdEV2ZW50IFNwZWNpZnkgd2hldGhlciB0byBlbWl0IGFuIGV2ZW50IHdoZW4gbWFuaXB1bGF0aW5nIHRoZSBGb3JtQXJyYXlcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGNSZW1vdmVJdGVtKFxuICAgICAgaW5kZXg6IG51bWJlcixcbiAgICAgIGRlbGV0ZVNlcnZpY2U/OiAoLi4uYXJncykgPT4gUHJvbWlzZTxhbnk+IHwgT2JzZXJ2YWJsZTxhbnk+LFxuICAgICAgYWRkUm93RnVuYz86ICguLi5hcmdzKSA9PiBhbnksXG4gICAgICBlbWl0RXZlbnQ/OiBib29sZWFuLFxuICAgICk6IFByb21pc2U8Rm9ybUFycmF5PFRDb250cm9sPj47XG4gIH1cbiAgZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdENvbnRyb2wge1xuICAgIGZvcm1hdHRlZFZhbHVlPzogYW55O1xuICAgIGxhYmVsVmFsdWU/OiBzdHJpbmc7XG4gICAgZ2V0Rm9ybWF0dGVkVmFsdWU6ICgpID0+IGFueTtcbiAgfVxuICBleHBvcnQgaW50ZXJmYWNlIEZvcm1Db250cm9sIHtcbiAgICBmb3JtYXR0ZWRWYWx1ZT86IHN0cmluZztcbiAgICBsYWJlbFZhbHVlPzogc3RyaW5nO1xuICAgIGdldEZvcm1hdHRlZFZhbHVlOiAoKSA9PiBzdHJpbmc7XG4gIH1cbiAgZXhwb3J0IGludGVyZmFjZSBGb3JtR3JvdXAge1xuICAgIGZvcm1hdHRlZFZhbHVlPzogeyBbeDogc3RyaW5nXTogc3RyaW5nW10gfCB7IFt4OiBzdHJpbmddOiBzdHJpbmcgfVtdIH07XG4gICAgZ2V0Rm9ybWF0dGVkVmFsdWU6ICgpID0+IHsgW3g6IHN0cmluZ106IHN0cmluZ1tdIHwgeyBbeDogc3RyaW5nXTogc3RyaW5nIH1bXSB9O1xuICB9XG4gIGV4cG9ydCBpbnRlcmZhY2UgRm9ybUFycmF5IHtcbiAgICBmb3JtYXR0ZWRWYWx1ZT86IHN0cmluZ1tdIHwgeyBbeDogc3RyaW5nXTogc3RyaW5nIH1bXTtcbiAgICBnZXRGb3JtYXR0ZWRWYWx1ZTogKCkgPT4gc3RyaW5nW10gfCB7IFt4OiBzdHJpbmddOiBzdHJpbmcgfVtdO1xuICB9XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYW5ndWxhci9yb3V0ZXInIHtcbiAgaW50ZXJmYWNlIFJvdXRlIHtcbiAgICBjdXN0b21EYXRhPzoge1xuICAgICAgbWlJRD86IHN0cmluZztcbiAgICAgIHRpdGxlPzogc3RyaW5nO1xuICAgICAgcGFnZUNvbXBvbmVudD86IHtcbiAgICAgICAgY2VudGVySGVhZGVyPzogYm9vbGVhbjtcbiAgICAgICAgaGlkZUhlYWRlcj86IGJvb2xlYW47XG4gICAgICB9O1xuICAgIH07XG4gIH1cbn1cblxuLy8jcmVnaW9uICBzdHJpbmcgKi9cblN0cmluZy5wcm90b3R5cGUuc3RyaXBDaGFyID0gZnVuY3Rpb24gKHRoaXM6IHN0cmluZywgY2hhcmFjdGVyID0gJy8nKSB7XG4gIHJldHVybiAodGhpcyArICcnKS5yZXBsYWNlKGNoYXJhY3RlciwgJycpO1xufTtcblN0cmluZy5wcm90b3R5cGUubGFzdFN0cmlwQ2hhciA9IGZ1bmN0aW9uICh0aGlzOiBzdHJpbmcsIGNoYXJhY3RlciA9ICcvJykge1xuICByZXR1cm4gdGhpc1t0aGlzPy5sZW5ndGggLSAxXSA9PSBjaGFyYWN0ZXIgPyB0aGlzLnNsaWNlKDAsIHRoaXMubGVuZ3RoIC0gMSkgOiB0aGlzO1xufTtcblN0cmluZy5wcm90b3R5cGUucmVtb3ZlTnVsbCA9IGZ1bmN0aW9uICh0aGlzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEVWRnVuY3Rpb25zLnN0cmlwTnVsbCh0aGlzKTtcbn07XG5TdHJpbmcucHJvdG90eXBlLnVuQ2hhciA9IGZ1bmN0aW9uICh0aGlzOiBzdHJpbmcsIGNoYXJhY3RlciA9ICcvJywgcmVwbGFjZW1lbnQgPSAnJykge1xuICBsZXQgdGUgPSAnJztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZSA9IHRoaXNbaV07XG4gICAgdGUgKz0gZSAhPSBjaGFyYWN0ZXIgPyBlIDogJyc7XG4gIH1cbiAgcmV0dXJuIHRlLnNwbGl0KGNoYXJhY3Rlcikuam9pbihyZXBsYWNlbWVudCk7XG59O1xuU3RyaW5nLnByb3RvdHlwZS50b1NlbnRlbmNlQ2FzZSA9IGZ1bmN0aW9uICh0aGlzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHRoaXMucmVwbGFjZSgvKFtBLVpdKS9nLCAnICQxJyk7XG59O1xuU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlQWxsU3ViU3RyID0gZnVuY3Rpb24gKHRoaXM6IHN0cmluZywgY2hhcmFjdGVyID0gJy8nLCByZXBsYWNlbWVudCA9ICcnKSB7XG4gIHJldHVybiB0aGlzLnNwbGl0KGNoYXJhY3Rlcikuam9pbihyZXBsYWNlbWVudCk7XG59O1xuU3RyaW5nLnByb3RvdHlwZS5hZGRQcmVjZWRpbmdDaGFyID0gZnVuY3Rpb24gKFxuICB0aGlzOiBzdHJpbmcsXG4gIGNoYXJhY3Rlcjogc3RyaW5nLFxuICBleHBlY3RlZExlbmd0aDogbnVtYmVyLFxuKSB7XG4gIGlmICh0aGlzLmxlbmd0aCA+PSBleHBlY3RlZExlbmd0aCkgcmV0dXJuIHRoaXM7XG4gIHJldHVybiBjaGFyYWN0ZXIucmVwZWF0KGV4cGVjdGVkTGVuZ3RoIC0gdGhpcy5sZW5ndGgpICsgdGhpcztcbn07XG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uICBhcnJheSAqL1xuQXJyYXkucHJvdG90eXBlLm1lcmdlID0gZnVuY3Rpb24gPFQ+KHRoaXM6IEFycmF5PFQ+KSB7XG4gIGxldCByID0gJyc7XG4gIGZvciAoY29uc3QgaSBvZiB0aGlzKSB7XG4gICAgciArPSBpO1xuICB9XG4gIHJldHVybiByO1xufTtcbkFycmF5LnByb3RvdHlwZS5yZXZlcnNlSW5kZXggPSBmdW5jdGlvbiA8VD4odGhpczogQXJyYXk8VD4sIGluZGV4ID0gMCkge1xuICByZXR1cm4gdGhpc1t0aGlzPy5sZW5ndGggLSAoMSArIGluZGV4KV07XG59O1xuQXJyYXkucHJvdG90eXBlLmxhc3RJdGVtID0gZnVuY3Rpb24gPFQ+KHRoaXM6IEFycmF5PFQ+KSB7XG4gIHJldHVybiB0aGlzLnJldmVyc2VJbmRleCgpO1xufTtcbkFycmF5LnByb3RvdHlwZS5zb3J0QnlGaWVsZExlbmd0aCA9IGZ1bmN0aW9uIDxUPihcbiAgdGhpczogQXJyYXk8VD4sXG4gIGZpZWxkOiBrZXlvZiBULFxuICByZXZlcnNlOiBib29sZWFuID0gZmFsc2UsXG4pIHtcbiAgaWYgKHJldmVyc2UpIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkuc29ydChcbiAgICAgIChiLCBhKSA9PiAoYVtmaWVsZCBhcyBhbnldPy5sZW5ndGggfHwgMCkgLSAoYltmaWVsZCBhcyBhbnldPy5sZW5ndGggfHwgMCksXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkuc29ydChcbiAgICAgIChhLCBiKSA9PiAoYVtmaWVsZCBhcyBhbnldPy5sZW5ndGggfHwgMCkgLSAoYltmaWVsZCBhcyBhbnldPy5sZW5ndGggfHwgMCksXG4gICAgKTtcbiAgfVxufTtcbkFycmF5LnByb3RvdHlwZS5zb3J0MiA9IGZ1bmN0aW9uIDxUPihcbiAgdGhpczogQXJyYXk8VD4sXG4gIGZpZWxkOiBrZXlvZiBULFxuICBpc1N0cmluZzogYm9vbGVhbiA9IGZhbHNlLFxuICByZXZlcnNlOiBib29sZWFuID0gZmFsc2UsXG4pIHtcbiAgaWYgKHJldmVyc2UpXG4gICAgcmV0dXJuIGlzU3RyaW5nXG4gICAgICA/IHRoaXMuZmlsdGVyKCh4KSA9PiB4ICE9IG51bGwpLnNvcnQoKGIsIGEpID0+XG4gICAgICAgICAgc29ydEFscGhhTnVtKGFbZmllbGRdPy50b1N0cmluZygpLCBiW2ZpZWxkXT8udG9TdHJpbmcoKSksXG4gICAgICAgIClcbiAgICAgIDogdGhpcy5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkuc29ydChcbiAgICAgICAgICAoYiwgYSkgPT4gKGFbZmllbGQgYXMgYW55XSB8fCAwKSAtIChiW2ZpZWxkIGFzIGFueV0gfHwgMCksXG4gICAgICAgICk7XG4gIGVsc2VcbiAgICByZXR1cm4gaXNTdHJpbmdcbiAgICAgID8gdGhpcy5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCkuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICBzb3J0QWxwaGFOdW0oYVtmaWVsZF0/LnRvU3RyaW5nKCksIGJbZmllbGRdPy50b1N0cmluZygpKSxcbiAgICAgICAgKVxuICAgICAgOiB0aGlzLmZpbHRlcigoeCkgPT4geCAhPSBudWxsKS5zb3J0KFxuICAgICAgICAgIChhLCBiKSA9PiAoYVtmaWVsZCBhcyBhbnldIHx8IDApIC0gKGJbZmllbGQgYXMgYW55XSB8fCAwKSxcbiAgICAgICAgKTtcbn07XG5BcnJheS5wcm90b3R5cGUuc29ydDMgPSBmdW5jdGlvbiA8VD4odGhpczogQXJyYXk8VD4sIGZpZWxkOiBrZXlvZiBULCByZXZlcnNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgbGV0IGlzU3RyaW5nOiBib29sZWFuID0gdGhpcy5zb21lKCh4KSA9PiBpc05hTih4W2ZpZWxkXSBhcyBhbnkpKTtcbiAgcmV0dXJuIGlzU3RyaW5nID8gdGhpcy5zb3J0MihmaWVsZCwgdHJ1ZSwgcmV2ZXJzZSkgOiB0aGlzLnNvcnQyKGZpZWxkLCBmYWxzZSwgcmV2ZXJzZSk7XG59O1xudmFyIHJlQSA9IC9bXmEtekEtWl0vZztcbnZhciByZU4gPSAvW14wLTldL2c7XG5cbmZ1bmN0aW9uIHNvcnRBbHBoYU51bShhOiBzdHJpbmcsIGI6IHN0cmluZykge1xuICB2YXIgYUEgPSBhPy50b1VwcGVyQ2FzZSgpPy5yZXBsYWNlKHJlQSwgJycpO1xuICB2YXIgYkEgPSBiPy50b1VwcGVyQ2FzZSgpPy5yZXBsYWNlKHJlQSwgJycpO1xuICBpZiAoYUEgPT09IGJBKSB7XG4gICAgdmFyIGFOID0gcGFyc2VJbnQoYT8ucmVwbGFjZShyZU4sICcnKSwgMTApO1xuICAgIHZhciBiTiA9IHBhcnNlSW50KGI/LnJlcGxhY2UocmVOLCAnJyksIDEwKTtcbiAgICByZXR1cm4gYU4gPT09IGJOID8gMCA6IGFOID4gYk4gPyAxIDogLTE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGFBID4gYkEgPyAxIDogLTE7XG4gIH1cbn1cblxuQXJyYXkucHJvdG90eXBlLnJlbW92ZUVtcHR5SXRlbXMgPSBmdW5jdGlvbiA8VD4oXG4gIHRoaXM6IEFycmF5PFQ+LFxuICBleHBlY3RlZEZpZWxkcz86IChrZXlvZiBUKVtdLFxuICBjb25maWc/OiB7XG4gICAgaWdub3JlQm9vbGVhbkZpZWxkcz86IGJvb2xlYW47XG4gICAgZmllbGRzVHlwZT86ICdpbmNsdWRlZCcgfCAnZXhjbHVkZWQnO1xuICB9LFxuKSB7XG4gIC8vIGRlYnVnZ2VyO1xuICBjb25zdCBpZ25vcmVCb29sZWFuRmllbGRzID0gY29uZmlnPy5pZ25vcmVCb29sZWFuRmllbGRzID09IHRydWU7XG4gIGNvbnN0IGZpZWxkc1R5cGUgPSBjb25maWc/LmZpZWxkc1R5cGUgfHwgJ2luY2x1ZGVkJztcbiAgaWYgKCF0aGlzLmxlbmd0aCkgcmV0dXJuIHRoaXM7XG4gIGxldCBmaWVsZExpc3Q6IHN0cmluZ1tdO1xuICBpZiAoZmllbGRzVHlwZSA9PSAnaW5jbHVkZWQnKVxuICAgIGZpZWxkTGlzdCA9IGV4cGVjdGVkRmllbGRzPy5sZW5ndGggPyAoZXhwZWN0ZWRGaWVsZHMgYXMgc3RyaW5nW10pIDogT2JqZWN0LmtleXModGhpc1swXSk7XG4gIGVsc2UgaWYgKGZpZWxkc1R5cGUgPT0gJ2V4Y2x1ZGVkJylcbiAgICBmaWVsZExpc3QgPSBleHBlY3RlZEZpZWxkcz8ubGVuZ3RoXG4gICAgICA/IE9iamVjdC5rZXlzKHRoaXNbMF0pLmZpbHRlcigoeCkgPT4gIWV4cGVjdGVkRmllbGRzLmluY2x1ZGVzKHggYXMgYW55KSlcbiAgICAgIDogT2JqZWN0LmtleXModGhpc1swXSk7XG4gIGNvbnN0IHJlbW92ZWRJdGVtczogVFtdID0gW107XG4gIGlmIChmaWVsZExpc3QpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaWdub3JlQm9vbGVhbkZpZWxkcyAmJiBpID09IDApXG4gICAgICAgIGZpZWxkTGlzdCA9IGZpZWxkTGlzdC5maWx0ZXIoKGYpID0+IHR5cGVvZiB0aGlzWzBdW2ZdICE9ICdib29sZWFuJyk7XG4gICAgICBjb25zdCBpdGVtID0gdGhpc1tpXTtcbiAgICAgIGlmIChmaWVsZExpc3Quc29tZSgoZikgPT4gaXRlbVtmXSAhPSBudWxsKSkgY29udGludWU7IC8vRG9uJ3QgcmVtb3ZlIHJvd1xuICAgICAgcmVtb3ZlZEl0ZW1zLnB1c2goLi4udGhpcy5zcGxpY2UoaSwgMSkpOyAvL1JlbW92ZSByb3dcbiAgICAgIGkgPSBpLS07XG4gICAgfVxuICByZXR1cm4gcmVtb3ZlZEl0ZW1zO1xufTtcbkFycmF5LnByb3RvdHlwZS50b01hcCA9IGZ1bmN0aW9uIDxULCBOVD4oXG4gIHRoaXM6IEFycmF5PFQ+LFxuICBhcmcxOiBrZXlvZiBUIHwgKChyb3c6IFQpID0+IHN0cmluZyB8IG51bWJlciksXG4gIHZhbHVlTWFwPzogKGl0ZW06IFQpID0+IE5ULFxuKSB7XG4gIC8vIGRlYnVnZ2VyO1xuICBjb25zdCByZXQ6IHsgW3g6IHN0cmluZ106IFQgfCBOVCB9ID0ge307XG4gIGlmICh0eXBlb2YgYXJnMSA9PSAnZnVuY3Rpb24nKSBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcykgcmV0W2FyZzEoaXRlbSldID0gaXRlbTtcbiAgZWxzZSBpZiAodmFsdWVNYXApIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzKSByZXRbaXRlbVthcmcxPy50b1N0cmluZygpXV0gPSB2YWx1ZU1hcChpdGVtKTtcbiAgZWxzZSBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcykgcmV0W2l0ZW1bYXJnMT8udG9TdHJpbmcoKV1dID0gaXRlbTtcblxuICByZXR1cm4gcmV0O1xufTtcbkFycmF5LnByb3RvdHlwZS5ncm91cEJ5ID0gZnVuY3Rpb24gPFQ+KFxuICB0aGlzOiBBcnJheTxUPixcbiAga2V5RmllbGQ6IGtleW9mIFQsXG4gIGtleU1hcD86ICh2YWx1ZTogVCkgPT4gc3RyaW5nLFxuKTogeyBbeDogc3RyaW5nXTogVFtdIH0ge1xuICAvLyBkZWJ1Z2dlcjtcbiAgY29uc3QgcmV0OiB7IFt4OiBzdHJpbmddOiBUW10gfSA9IHt9O1xuICBmb3IgKGNvbnN0IGl0ZXJhdG9yIG9mIHRoaXMpIHtcbiAgICBjb25zdCBncm91cCA9IGtleU1hcCA/IGtleU1hcChpdGVyYXRvcikgOiAoaXRlcmF0b3Jba2V5RmllbGRdIGFzIHN0cmluZyk7XG4gICAgaWYgKHJldFtncm91cF0pIHJldFtncm91cF0ucHVzaChpdGVyYXRvcik7XG4gICAgZWxzZSByZXRbZ3JvdXBdID0gW2l0ZXJhdG9yXTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59O1xuQXJyYXkucHJvdG90eXBlLnRvQm9vbGVhbk1hcCA9IGZ1bmN0aW9uICh0aGlzOiBBcnJheTxhbnk+KTogeyBbeDogc3RyaW5nXTogYm9vbGVhbiB9IHtcbiAgLy8gZGVidWdnZXI7XG4gIGNvbnN0IHJldDogeyBbeDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgdGhpcykge1xuICAgIHJldFtpdGVyYXRvcl0gPSB0cnVlO1xuICB9XG4gIHJldHVybiByZXQ7XG59O1xuXG5BcnJheS5wcm90b3R5cGUuc2h1ZmZsZSA9IGZ1bmN0aW9uIDxUPih0aGlzOiBBcnJheTxUPikge1xuICAvLyBkZWJ1Z2dlcjtcbiAgY29uc3QgbmV3QXJyOiBUW10gPSBbXTtcbiAgd2hpbGUgKHRoaXMubGVuZ3RoKSB7XG4gICAgbmV3QXJyLnB1c2goLi4udGhpcy5zcGxpY2UoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogdGhpcy5sZW5ndGggLSAxKSwgMSkpO1xuICB9XG4gIHJldHVybiBuZXdBcnI7XG59O1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIEZ1bmN0aW9uXG5GdW5jdGlvbi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdmFyIHRlbXAgPSBmdW5jdGlvbiB0ZW1wb3JhcnkoKSB7XG4gICAgcmV0dXJuIHRoYXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgZm9yICh2YXIga2V5IGluIHRoaXMpIHtcbiAgICBpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICB0ZW1wW2tleV0gPSB0aGlzW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiB0ZW1wO1xufTtcbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gRk9STUFSUkFZXG5Gb3JtQXJyYXkucHJvdG90eXBlLmNBZGRJdGVtID0gZnVuY3Rpb24gPFRDb250cm9sIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPGFueT4gPSBhbnk+KFxuICB0aGlzOiBGb3JtQXJyYXk8VENvbnRyb2w+LFxuICBpbmRleD86IG51bWJlcixcbiAgdmFsPzogdHlwZW9mIHRoaXMuY0Zvcm1TdHJ1Y3R1cmUudmFsdWUsXG4pIHtcbiAgY29uc3QgZm9ybSA9IGNsb25lRGVlcCh0aGlzLmNGb3JtU3RydWN0dXJlKTtcbiAgaWYgKHZhbCkge1xuICAgIGZvcm0ucGF0Y2hWYWx1ZSh2YWwpO1xuICB9XG4gIHRoaXMuaW5zZXJ0KGluZGV4LCBmb3JtKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuRm9ybUFycmF5LnByb3RvdHlwZS5jUmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIDxUQ29udHJvbCBleHRlbmRzIEFic3RyYWN0Q29udHJvbDxhbnk+ID0gYW55PihcbiAgdGhpczogRm9ybUFycmF5PFRDb250cm9sPixcbiAgaW5kZXg6IG51bWJlcixcbiAgZGVsZXRlU2VydmljZT86ICguLi5hcmdzKSA9PiBQcm9taXNlPGFueT4gfCBPYnNlcnZhYmxlPGFueT4sXG4gIGFkZFJvd0Z1bmM/OiAoLi4uYXJncykgPT4gYW55LFxuICBlbWl0RXZlbnQgPSB0cnVlLFxuKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxGb3JtQXJyYXk8VENvbnRyb2w+Pigoc3ViKSA9PiB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmNvbnRyb2xzW2luZGV4XT8udmFsdWU/LmlkO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmIChpZCAmJiBkZWxldGVTZXJ2aWNlKSB7XG4gICAgICBjb25zdCByZXEgPSBkZWxldGVTZXJ2aWNlKGlkKTtcbiAgICAgIGxldCBwczogUHJvbWlzZTxhbnk+ID0gbnVsbDtcbiAgICAgIGlmIChyZXFbJ3RvUHJvbWlzZSddKSB7XG4gICAgICAgIHBzID0gcmVxWyd0b1Byb21pc2UnXSgpO1xuICAgICAgfVxuICAgICAgcHM/LnRoZW4oKHIpID0+IHtcbiAgICAgICAgc3ViKHRoaXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbHMubGVuZ3RoID09IDEgJiYgaWQpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50IH0pO1xuICAgICAgaWYgKGFkZFJvd0Z1bmMpIGFkZFJvd0Z1bmMoKTtcbiAgICAgIGVsc2UgdGhpcy5jQWRkSXRlbSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9scy5sZW5ndGggPiAxKSB0aGlzLnJlbW92ZUF0KGluZGV4LCB7IGVtaXRFdmVudCB9KTtcbiAgICBlbHNlIGlmICh0aGlzLmNvbnRyb2xzLmxlbmd0aCA9PSAxKSB7XG4gICAgICB0aGlzLmNvbnRyb2xzWzBdLnJlc2V0KCk7XG4gICAgfVxuICB9KTtcbn07XG5Gb3JtR3JvdXAucHJvdG90eXBlLmdldEZvcm1hdHRlZFZhbHVlID0gZnVuY3Rpb24gKHRoaXM6IEZvcm1Hcm91cCkge1xuICBjb25zdCBkYXRhID0ge307XG4gIGlmICghdGhpcy5jb250cm9scykgcmV0dXJuIHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gIGVsc2VcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2xOYW1lIGluIHRoaXMuY29udHJvbHMpIHtcbiAgICAgIGRhdGFbY29udHJvbE5hbWVdID0gKDxGb3JtQ29udHJvbCB8IEZvcm1Hcm91cCB8IEZvcm1BcnJheT4oXG4gICAgICAgIHRoaXMuY29udHJvbHNbY29udHJvbE5hbWVdXG4gICAgICApKS5nZXRGb3JtYXR0ZWRWYWx1ZSgpO1xuICAgIH1cbiAgcmV0dXJuIGRhdGE7XG59O1xuRm9ybUFycmF5LnByb3RvdHlwZS5nZXRGb3JtYXR0ZWRWYWx1ZSA9IGZ1bmN0aW9uICh0aGlzOiBGb3JtQXJyYXkpIHtcbiAgY29uc3QgZGF0YSA9IFtdO1xuICBpZiAoIXRoaXMuY29udHJvbHMpIHJldHVybiB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICBlbHNlXG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuY29udHJvbHMpIHtcbiAgICAgIGRhdGEucHVzaCgoPEZvcm1Db250cm9sIHwgRm9ybUdyb3VwPmNvbnRyb2wpLmdldEZvcm1hdHRlZFZhbHVlKCkpO1xuICAgIH1cbiAgcmV0dXJuIGRhdGE7XG59O1xuRm9ybUNvbnRyb2wucHJvdG90eXBlLmdldEZvcm1hdHRlZFZhbHVlID0gZnVuY3Rpb24gKHRoaXM6IEZvcm1Db250cm9sKSB7XG4gIHJldHVybiB0aGlzLmZvcm1hdHRlZFZhbHVlO1xufTtcbi8vI2VuZHJlZ2lvblxuXG5leHBvcnQge307XG4iXX0=
|