@one-paragon/angular-utilities 0.1.15 → 0.1.16-2
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/esm2020/action-state/action-state-spinner/action-state-spinner.component.mjs +2 -2
- package/esm2020/http-request-state/http-state-module.mjs +2 -2
- package/esm2020/table-builder/classes/TableState.mjs +4 -2
- package/esm2020/table-builder/classes/table-store.mjs +15 -1
- package/esm2020/table-builder/components/generic-table/generic-table.component.mjs +22 -9
- package/esm2020/table-builder/components/generic-table/paginator.component.mjs +2 -2
- package/esm2020/table-builder/components/group-by-list/group-by-list.component.mjs +21 -0
- package/esm2020/table-builder/components/header-menu/header-menu.component.mjs +3 -3
- package/esm2020/table-builder/components/index.mjs +2 -1
- package/esm2020/table-builder/components/table-container/table-container.mjs +72 -28
- package/esm2020/table-builder/table-builder.module.mjs +8 -3
- package/esm2020/utilities/directives/mat-toggle-group-directive.mjs +3 -2
- package/esm2020/utilities/directives/trim-whitespace.directive.mjs +29 -0
- package/esm2020/utilities/index.mjs +2 -1
- package/esm2020/utilities/module.mjs +6 -1
- package/fesm2015/one-paragon-angular-utilities.mjs +149 -38
- package/fesm2015/one-paragon-angular-utilities.mjs.map +1 -1
- package/fesm2020/one-paragon-angular-utilities.mjs +159 -40
- package/fesm2020/one-paragon-angular-utilities.mjs.map +1 -1
- package/package.json +5 -5
- package/table-builder/classes/TableState.d.ts +7 -0
- package/table-builder/classes/table-store.d.ts +8 -1
- package/table-builder/components/generic-table/generic-table.component.d.ts +7 -2
- package/table-builder/components/group-by-list/group-by-list.component.d.ts +10 -0
- package/table-builder/components/index.d.ts +1 -0
- package/table-builder/components/table-container/table-container.d.ts +12 -4
- package/table-builder/table-builder.module.d.ts +11 -10
- package/utilities/directives/trim-whitespace.directive.d.ts +9 -0
- package/utilities/index.d.ts +1 -0
- package/utilities/module.d.ts +7 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input, EventEmitter, Output, ContentChildren, ChangeDetectionStrategy, Inject, Optional, } from '@angular/core';
|
|
1
|
+
import { Component, Input, EventEmitter, Output, ContentChildren, ChangeDetectionStrategy, Inject, Optional, ViewChild, } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, from, ReplaySubject } from 'rxjs';
|
|
3
3
|
import { FieldType } from '../../interfaces/report-def';
|
|
4
4
|
import { first, last, map, switchMap, tap, withLatestFrom, mergeAll, scan } from 'rxjs/operators';
|
|
@@ -16,11 +16,12 @@ import { deleteLocalProfilesState, setLocalProfile, setLocalProfilesState } from
|
|
|
16
16
|
import { InitializationState } from '../../classes/TableState';
|
|
17
17
|
import { sortData } from '../../functions/sort-data-function';
|
|
18
18
|
import { WrapperFilterStore } from '../table-container-filter/table-wrapper-filter-store';
|
|
19
|
-
import { cloneDeep,
|
|
19
|
+
import { cloneDeep, groupBy } from 'lodash';
|
|
20
20
|
import { defaultShareReplay } from '../../../rxjs';
|
|
21
21
|
import { flattenDeep } from 'lodash';
|
|
22
22
|
import { createFilterFunc, isCustomFilter, isFilterInfo } from '../../classes/filter-info';
|
|
23
23
|
import { createLinkCreator } from '../../services/link-creator.service';
|
|
24
|
+
import { GenericTableComponent } from '../generic-table/generic-table.component';
|
|
24
25
|
import * as i0 from "@angular/core";
|
|
25
26
|
import * as i1 from "../../classes/table-store";
|
|
26
27
|
import * as i2 from "../../services/export-to-csv.service";
|
|
@@ -43,6 +44,7 @@ import * as i18 from "../table-container-filter/gen-filter-displayer/gen-filter-
|
|
|
43
44
|
import * as i19 from "../../directives/multi-sort.directive";
|
|
44
45
|
import * as i20 from "../sort-menu/sort-menu.component";
|
|
45
46
|
import * as i21 from "../table-container-filter/filter-list/filter-list.component";
|
|
47
|
+
import * as i22 from "../group-by-list/group-by-list.component";
|
|
46
48
|
export class TableContainerComponent {
|
|
47
49
|
constructor(state, exportToCsvService, config, store, wrapper) {
|
|
48
50
|
this.state = state;
|
|
@@ -69,6 +71,55 @@ export class TableContainerComponent {
|
|
|
69
71
|
return meta;
|
|
70
72
|
};
|
|
71
73
|
this.collapseHeader$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseHeader));
|
|
74
|
+
this.tbGroupBy = (data, groupByKeys, parentGroupName) => {
|
|
75
|
+
let res = {};
|
|
76
|
+
res = groupBy(data, groupByKeys[0]);
|
|
77
|
+
const remainingGroupByKeys = groupByKeys.slice(1);
|
|
78
|
+
if (remainingGroupByKeys.length) {
|
|
79
|
+
Object.keys(res).forEach(key => res[key] = this.tbGroupBy(res[key], remainingGroupByKeys, key));
|
|
80
|
+
}
|
|
81
|
+
return flattenDeep(Object.keys(res).map(groupName => {
|
|
82
|
+
const uniqName = parentGroupName ? `${parentGroupName}-${groupName}` : `${groupName}`;
|
|
83
|
+
return [
|
|
84
|
+
{
|
|
85
|
+
isGroupHeader: true,
|
|
86
|
+
groupHeaderName: `${groupName} (${res[groupName]?.filter(row => !row.isGroupHeader)?.length})`,
|
|
87
|
+
data: res[groupName],
|
|
88
|
+
groupName: uniqName,
|
|
89
|
+
padding: 0
|
|
90
|
+
},
|
|
91
|
+
res[groupName]?.map(d => ({ ...d, parentGroupName: d.parentGroupName || uniqName }))
|
|
92
|
+
];
|
|
93
|
+
})).map(this.addIndentation);
|
|
94
|
+
};
|
|
95
|
+
this.addIndentation = (d) => {
|
|
96
|
+
if (d.isGroupHeader) {
|
|
97
|
+
if (d.padding) {
|
|
98
|
+
d.padding += 20;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
d.padding = 1;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return d;
|
|
105
|
+
};
|
|
106
|
+
this.setDisplay = (data, groups) => data
|
|
107
|
+
.map(d => ({
|
|
108
|
+
...d,
|
|
109
|
+
shouldDisplay: !d.parentGroupName || this.shouldDisplay(groups.find(g => g.groupName == d.parentGroupName), groups),
|
|
110
|
+
isExpanded: groups.find(g => g.groupName == d.groupName)?.isExpanded
|
|
111
|
+
}))
|
|
112
|
+
.filter(d => d.shouldDisplay);
|
|
113
|
+
this.shouldDisplay = (currentGroup, groups) => {
|
|
114
|
+
if (!currentGroup?.isExpanded) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
const parentGroup = groups?.find(g => g.groupName == currentGroup.parentGroupName);
|
|
118
|
+
if (parentGroup) {
|
|
119
|
+
return this.shouldDisplay(parentGroup, groups);
|
|
120
|
+
}
|
|
121
|
+
return true;
|
|
122
|
+
};
|
|
72
123
|
this.state.on(this.state.getSavableState().pipe(last()), finalState => {
|
|
73
124
|
if (this.tableId) {
|
|
74
125
|
this.store.dispatch(setLocalProfile({ key: this.tableId, value: finalState }));
|
|
@@ -79,6 +130,12 @@ export class TableContainerComponent {
|
|
|
79
130
|
set pageSize(value) {
|
|
80
131
|
this.state.setPageSize(value);
|
|
81
132
|
}
|
|
133
|
+
firstPage() {
|
|
134
|
+
this.genericTableComponent?.paginatorComponent?.paginator?.firstPage();
|
|
135
|
+
}
|
|
136
|
+
lastPage() {
|
|
137
|
+
this.genericTableComponent?.paginatorComponent?.paginator?.lastPage();
|
|
138
|
+
}
|
|
82
139
|
resetState() {
|
|
83
140
|
this.customFilters.forEach(cf => cf.reset());
|
|
84
141
|
this.filters.forEach(cf => cf.reset());
|
|
@@ -109,7 +166,7 @@ export class TableContainerComponent {
|
|
|
109
166
|
const filters$ = this.state.filters$.pipe(map(filters => Object.values(filters)));
|
|
110
167
|
const data = new DataFilter(allFilters)
|
|
111
168
|
.appendFilters(filters$)
|
|
112
|
-
.filterData(this.tableBuilder.getData$().pipe(switchMap(data => this.state.
|
|
169
|
+
.filterData(this.tableBuilder.getData$()).pipe(switchMap(data => this.state.groupByKeys$.pipe(map(groupBy => this.getData(data, groupBy))).pipe(switchMap(data => this.state.groups$.pipe(map(groups => this.setDisplay(data, groups)))))));
|
|
113
170
|
this.dataSubject.next(data);
|
|
114
171
|
}
|
|
115
172
|
ngOnInit() {
|
|
@@ -199,44 +256,29 @@ export class TableContainerComponent {
|
|
|
199
256
|
})));
|
|
200
257
|
this.myColumns$ = this.state.metaDataArray$.pipe(mapArray(metaData => ({ metaData, customCell: customCellMap.get(metaData.key) })));
|
|
201
258
|
}
|
|
202
|
-
getData(data,
|
|
203
|
-
|
|
204
|
-
if (!meta) {
|
|
259
|
+
getData(data, groupByKeys) {
|
|
260
|
+
if (!groupByKeys.length) {
|
|
205
261
|
this.disableSort = false;
|
|
206
262
|
return data;
|
|
207
263
|
}
|
|
208
264
|
this.disableSort = true;
|
|
209
|
-
|
|
210
|
-
const withHeadersAndFooters = Object.keys(grouped).map(k => {
|
|
211
|
-
const header = {
|
|
212
|
-
isGroupHeader: true,
|
|
213
|
-
groupHeaderName: meta.additional?.grouping?.groupTitleFn ? meta.additional?.grouping?.groupTitleFn(k) : k
|
|
214
|
-
};
|
|
215
|
-
const sumCols = metaData.filter(md => md.additional?.grouping?.sum).map(md => md.key);
|
|
216
|
-
const totals = sumCols.reduce((acc, key) => {
|
|
217
|
-
acc[key] = sumBy(grouped[k], key);
|
|
218
|
-
return acc;
|
|
219
|
-
}, {});
|
|
220
|
-
const footer = {
|
|
221
|
-
isGroupFooter: true,
|
|
222
|
-
...totals
|
|
223
|
-
};
|
|
224
|
-
return [header, grouped[k], footer];
|
|
225
|
-
});
|
|
226
|
-
return flattenDeep(withHeadersAndFooters);
|
|
265
|
+
return this.tbGroupBy(data, groupByKeys);
|
|
227
266
|
}
|
|
228
267
|
}
|
|
229
268
|
TableContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: TableContainerComponent, deps: [{ token: i1.TableStore }, { token: i2.ExportToCsvService }, { token: TableBuilderConfigToken }, { token: i3.Store }, { token: i4.TableWrapperDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
230
|
-
TableContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: TableContainerComponent, selector: "tb-table-container", inputs: { tableId: "tableId", tableBuilder: "tableBuilder", IndexColumn: "IndexColumn", SelectionColumn: "SelectionColumn", trackBy: "trackBy", isSticky: "isSticky", pageSize: "pageSize", inputFilters: "inputFilters" }, outputs: { selection$: "selection$", data: "data", OnStateReset: "OnStateReset", OnSaveState: "OnSaveState", state$: "state$" }, providers: [TableStore, ExportToCsvService, WrapperFilterStore], queries: [{ propertyName: "customFilters", predicate: TableCustomFilterDirective, descendants: true }, { propertyName: "filters", predicate: TableFilterDirective, descendants: true }, { propertyName: "customRows", predicate: MatRowDef }, { propertyName: "customCells", predicate: CustomCellDirective }], ngImport: i0, template: "<ng-content select=\"[before]\" >\n</ng-content>\n\n<ng-container multiSort [matSortDisabled]=\"disableSort\">\n <ng-container *ngrxLet=\"state.tableSettings$ as tableSettings\">\n\n\n <div class=\"header-wrapper\">\n <div class=\"title\">\n <ng-content select=\".tb-header-title\"\n *ngIf=\"(!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed\">\n\n </ng-content>\n </div>\n <div class=\"flx-row-end\">\n <lib-filter-list></lib-filter-list>\n <ng-container *ngIf=\"!tableSettings.hideHeader\">\n <ng-container *ngIf=\"!(collapseHeader$ | async); else allMenu\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-container>\n <ng-template #allMenu>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <div class=\"flex-column\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-template>\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\n (click)=\"state.toggleCollapseHeader()\">\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\n </mat-icon>\n </ng-container>\n </div>\n </div>\n\n <div style=\"clear: both;\">\n <tb-generic-table [rows]='customRows' [data$]=\"data\" [IndexColumn]='IndexColumn'\n [SelectionColumn]='SelectionColumn' (selection$)='selection$.emit($event)' [trackBy]='trackBy'\n [isSticky]='isSticky' [columnInfos]='myColumns$' [disableSort]=\"disableSort\">\n </tb-generic-table>\n </div>\n\n\n\n <ng-template #headerMenu>\n <ng-container>\n <tb-filter-displayer *ngIf=\"!tableSettings.hideFilter\">\n </tb-filter-displayer>\n <tb-col-displayer *ngIf=\"!tableSettings.hideColumnSettings\"></tb-col-displayer>\n <tb-sort-menu *ngIf=\"!tableSettings.hideSort\"></tb-sort-menu>\n </ng-container>\n </ng-template>\n <ng-template #headerMenuExtra>\n <button mat-menu-item (click)=\"resetState()\">\n <mat-icon color=\"primary\">autorenew</mat-icon>\n <span>Reset table</span>\n </button>\n <button mat-menu-item (click)=\"exportToCsv()\" *ngIf=\"!tableSettings.hideExport\">\n <mat-icon color=\"primary\">file_download</mat-icon>\n <span>Export Table</span>\n </button>\n <ng-container *ngIf=\"currentStateKey$ | async as currentKey\">\n <button mat-menu-item *ngIf=\"tableId\" (click)=\"saveState()\">\n <mat-icon color=\"primary\">save</mat-icon>\n <span>Save to {{currentKey}}</span>\n </button>\n <button *ngIf='tableId' mat-menu-item [matMenuTriggerFor]=\"savedNames\">\n <span>Choose Profile</span>\n </button>\n </ng-container>\n\n <mat-menu #savedNames='matMenu' panelClass='wide-menu'>\n <button mat-menu-item clickEmitter #add='clickEmitter'>\n <mat-icon>add</mat-icon>\n <span>New</span>\n </button>\n <ng-container *ngFor='let key of stateKeys$ | async'>\n <button mat-menu-item (click)='setProfileState(key)'>\n <div style='display: flex; align-items: center; justify-content: space-between;'>\n <span style='display:flex;'>{{key}}</span>\n <span style='display:flex;'>\n <span style=\"width: 120px;\"></span>\n <mat-icon color='warn' (click)='deleteProfileState(key)' stop-propagation>delete_forever</mat-icon>\n </span>\n </div>\n </button>\n </ng-container>\n </mat-menu>\n <div *opDialog='add'>\n <mat-form-field>\n <input style='width:90%' matInput #addedKey />\n </mat-form-field>\n <button mat-button (click)='setProfileState(addedKey.value); add.next(false);'\n [disabled]=\"!addedKey.value\">Add</button>\n </div>\n </ng-template>\n\n </ng-container>\n\n</ng-container>\n", styles: [".wide-menu{width:200px!important}.header-wrapper{display:flex;flex-direction:row;justify-content:space-between;width:100%}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.flat-menu{line-height:initial;height:initial}\n", ".collapse-icon{font-size:16px;height:16px;padding-bottom:.2rem;color:#3f51b5}.collapse-icon.header{align-self:flex-end}.collapse-icon.footer{align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i12.LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "directive", type: i13.StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "directive", type: i14.ClickEmitterDirective, selector: "[clickEmitter]", exportAs: ["clickEmitter"] }, { kind: "directive", type: i15.DialogDirective, selector: "[opDialog]", inputs: ["opDialogConfig", "opDialog", "opDialogOrigin"], outputs: ["opDialogClosed"] }, { kind: "component", type: i16.GenericTableComponent, selector: "tb-generic-table", inputs: ["data$", "IndexColumn", "SelectionColumn", "trackBy", "rows", "isSticky", "columnBuilders", "columnInfos", "disableSort"], outputs: ["selection$"] }, { kind: "component", type: i17.GenColDisplayerComponent, selector: "tb-col-displayer" }, { kind: "component", type: i18.GenFilterDisplayerComponent, selector: "tb-filter-displayer" }, { kind: "directive", type: i19.MultiSortDirective, selector: "[multiSort]", inputs: ["matSortDisabled"], exportAs: ["multiSort"] }, { kind: "component", type: i20.SortMenuComponent, selector: "tb-sort-menu" }, { kind: "component", type: i21.FilterChipsComponent, selector: "lib-filter-list" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
269
|
+
TableContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: TableContainerComponent, selector: "tb-table-container", inputs: { tableId: "tableId", tableBuilder: "tableBuilder", IndexColumn: "IndexColumn", SelectionColumn: "SelectionColumn", trackBy: "trackBy", isSticky: "isSticky", pageSize: "pageSize", inputFilters: "inputFilters", groupHeaderTemplate: "groupHeaderTemplate" }, outputs: { selection$: "selection$", data: "data", OnStateReset: "OnStateReset", OnSaveState: "OnSaveState", state$: "state$" }, providers: [TableStore, ExportToCsvService, WrapperFilterStore], queries: [{ propertyName: "customFilters", predicate: TableCustomFilterDirective, descendants: true }, { propertyName: "filters", predicate: TableFilterDirective, descendants: true }, { propertyName: "customRows", predicate: MatRowDef }, { propertyName: "customCells", predicate: CustomCellDirective }], viewQueries: [{ propertyName: "genericTableComponent", first: true, predicate: GenericTableComponent, descendants: true }], ngImport: i0, template: "<ng-content select=\"[before]\" >\n</ng-content>\n\n<ng-container multiSort [matSortDisabled]=\"disableSort\">\n <ng-container *ngrxLet=\"state.tableSettings$ as tableSettings\">\n\n\n <div class=\"header-wrapper\">\n <div class=\"title\">\n <ng-content select=\".tb-header-title\"\n *ngIf=\"(!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed\">\n\n </ng-content>\n <group-by-list></group-by-list>\n </div>\n <div class=\"flx-row-end\">\n <lib-filter-list></lib-filter-list>\n <ng-container *ngIf=\"!tableSettings.hideHeader\">\n <ng-container *ngIf=\"!(collapseHeader$ | async); else allMenu\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-container>\n <ng-template #allMenu>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <div class=\"flex-column\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-template>\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\n (click)=\"state.toggleCollapseHeader()\">\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\n </mat-icon>\n </ng-container>\n </div>\n </div>\n\n <div style=\"clear: both;\">\n <tb-generic-table [rows]='customRows' [data$]=\"data\" [IndexColumn]='IndexColumn'\n [SelectionColumn]='SelectionColumn' (selection$)='selection$.emit($event)' [trackBy]='trackBy'\n [isSticky]='isSticky' [columnInfos]='myColumns$' [disableSort]=\"disableSort\" [groupHeaderTemplate]=\"groupHeaderTemplate\">\n </tb-generic-table>\n </div>\n\n\n\n <ng-template #headerMenu>\n <ng-container>\n <tb-filter-displayer *ngIf=\"!tableSettings.hideFilter\">\n </tb-filter-displayer>\n <tb-col-displayer *ngIf=\"!tableSettings.hideColumnSettings\"></tb-col-displayer>\n <tb-sort-menu *ngIf=\"!tableSettings.hideSort\"></tb-sort-menu>\n </ng-container>\n </ng-template>\n <ng-template #headerMenuExtra>\n <button mat-menu-item (click)=\"resetState()\">\n <mat-icon color=\"primary\">autorenew</mat-icon>\n <span>Reset table</span>\n </button>\n <button mat-menu-item (click)=\"exportToCsv()\" *ngIf=\"!tableSettings.hideExport\">\n <mat-icon color=\"primary\">file_download</mat-icon>\n <span>Export Table</span>\n </button>\n <ng-container *ngIf=\"currentStateKey$ | async as currentKey\">\n <button mat-menu-item *ngIf=\"tableId\" (click)=\"saveState()\">\n <mat-icon color=\"primary\">save</mat-icon>\n <span>Save to {{currentKey}}</span>\n </button>\n <button *ngIf='tableId' mat-menu-item [matMenuTriggerFor]=\"savedNames\">\n <span>Choose Profile</span>\n </button>\n </ng-container>\n\n <mat-menu #savedNames='matMenu' panelClass='wide-menu'>\n <button mat-menu-item clickEmitter #add='clickEmitter'>\n <mat-icon>add</mat-icon>\n <span>New</span>\n </button>\n <ng-container *ngFor='let key of stateKeys$ | async'>\n <button mat-menu-item (click)='setProfileState(key)'>\n <div style='display: flex; align-items: center; justify-content: space-between;'>\n <span style='display:flex;'>{{key}}</span>\n <span style='display:flex;'>\n <span style=\"width: 120px;\"></span>\n <mat-icon color='warn' (click)='deleteProfileState(key)' stop-propagation>delete_forever</mat-icon>\n </span>\n </div>\n </button>\n </ng-container>\n </mat-menu>\n <div *opDialog='add'>\n <mat-form-field>\n <input style='width:90%' matInput #addedKey />\n </mat-form-field>\n <button mat-button (click)='setProfileState(addedKey.value); add.next(false);'\n [disabled]=\"!addedKey.value\">Add</button>\n </div>\n </ng-template>\n\n </ng-container>\n\n</ng-container>\n", styles: [".wide-menu{width:200px!important}.header-wrapper{display:flex;flex-direction:row;justify-content:space-between;width:100%}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.flat-menu{line-height:initial;height:initial}\n", ".collapse-icon{font-size:16px;height:16px;padding-bottom:.2rem;color:#3f51b5}.collapse-icon.header{align-self:flex-end}.collapse-icon.footer{align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i12.LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "directive", type: i13.StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "directive", type: i14.ClickEmitterDirective, selector: "[clickEmitter]", exportAs: ["clickEmitter"] }, { kind: "directive", type: i15.DialogDirective, selector: "[opDialog]", inputs: ["opDialogConfig", "opDialog", "opDialogOrigin"], outputs: ["opDialogClosed"] }, { kind: "component", type: i16.GenericTableComponent, selector: "tb-generic-table", inputs: ["data$", "IndexColumn", "SelectionColumn", "trackBy", "rows", "isSticky", "columnBuilders", "columnInfos", "groupHeaderTemplate", "disableSort"], outputs: ["selection$"] }, { kind: "component", type: i17.GenColDisplayerComponent, selector: "tb-col-displayer" }, { kind: "component", type: i18.GenFilterDisplayerComponent, selector: "tb-filter-displayer" }, { kind: "directive", type: i19.MultiSortDirective, selector: "[multiSort]", inputs: ["matSortDisabled"], exportAs: ["multiSort"] }, { kind: "component", type: i20.SortMenuComponent, selector: "tb-sort-menu" }, { kind: "component", type: i21.FilterChipsComponent, selector: "lib-filter-list" }, { kind: "component", type: i22.GroupByListComponent, selector: "group-by-list" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
231
270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: TableContainerComponent, decorators: [{
|
|
232
271
|
type: Component,
|
|
233
|
-
args: [{ selector: 'tb-table-container', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TableStore, ExportToCsvService, WrapperFilterStore], template: "<ng-content select=\"[before]\" >\n</ng-content>\n\n<ng-container multiSort [matSortDisabled]=\"disableSort\">\n <ng-container *ngrxLet=\"state.tableSettings$ as tableSettings\">\n\n\n <div class=\"header-wrapper\">\n <div class=\"title\">\n <ng-content select=\".tb-header-title\"\n *ngIf=\"(!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed\">\n\n </ng-content>\n </div>\n <div class=\"flx-row-end\">\n <lib-filter-list></lib-filter-list>\n <ng-container *ngIf=\"!tableSettings.hideHeader\">\n <ng-container *ngIf=\"!(collapseHeader$ | async); else allMenu\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-container>\n <ng-template #allMenu>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <div class=\"flex-column\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-template>\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\n (click)=\"state.toggleCollapseHeader()\">\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\n </mat-icon>\n </ng-container>\n </div>\n </div>\n\n <div style=\"clear: both;\">\n <tb-generic-table [rows]='customRows' [data$]=\"data\" [IndexColumn]='IndexColumn'\n [SelectionColumn]='SelectionColumn' (selection$)='selection$.emit($event)' [trackBy]='trackBy'\n [isSticky]='isSticky' [columnInfos]='myColumns$' [disableSort]=\"disableSort\">\n </tb-generic-table>\n </div>\n\n\n\n <ng-template #headerMenu>\n <ng-container>\n <tb-filter-displayer *ngIf=\"!tableSettings.hideFilter\">\n </tb-filter-displayer>\n <tb-col-displayer *ngIf=\"!tableSettings.hideColumnSettings\"></tb-col-displayer>\n <tb-sort-menu *ngIf=\"!tableSettings.hideSort\"></tb-sort-menu>\n </ng-container>\n </ng-template>\n <ng-template #headerMenuExtra>\n <button mat-menu-item (click)=\"resetState()\">\n <mat-icon color=\"primary\">autorenew</mat-icon>\n <span>Reset table</span>\n </button>\n <button mat-menu-item (click)=\"exportToCsv()\" *ngIf=\"!tableSettings.hideExport\">\n <mat-icon color=\"primary\">file_download</mat-icon>\n <span>Export Table</span>\n </button>\n <ng-container *ngIf=\"currentStateKey$ | async as currentKey\">\n <button mat-menu-item *ngIf=\"tableId\" (click)=\"saveState()\">\n <mat-icon color=\"primary\">save</mat-icon>\n <span>Save to {{currentKey}}</span>\n </button>\n <button *ngIf='tableId' mat-menu-item [matMenuTriggerFor]=\"savedNames\">\n <span>Choose Profile</span>\n </button>\n </ng-container>\n\n <mat-menu #savedNames='matMenu' panelClass='wide-menu'>\n <button mat-menu-item clickEmitter #add='clickEmitter'>\n <mat-icon>add</mat-icon>\n <span>New</span>\n </button>\n <ng-container *ngFor='let key of stateKeys$ | async'>\n <button mat-menu-item (click)='setProfileState(key)'>\n <div style='display: flex; align-items: center; justify-content: space-between;'>\n <span style='display:flex;'>{{key}}</span>\n <span style='display:flex;'>\n <span style=\"width: 120px;\"></span>\n <mat-icon color='warn' (click)='deleteProfileState(key)' stop-propagation>delete_forever</mat-icon>\n </span>\n </div>\n </button>\n </ng-container>\n </mat-menu>\n <div *opDialog='add'>\n <mat-form-field>\n <input style='width:90%' matInput #addedKey />\n </mat-form-field>\n <button mat-button (click)='setProfileState(addedKey.value); add.next(false);'\n [disabled]=\"!addedKey.value\">Add</button>\n </div>\n </ng-template>\n\n </ng-container>\n\n</ng-container>\n", styles: [".wide-menu{width:200px!important}.header-wrapper{display:flex;flex-direction:row;justify-content:space-between;width:100%}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.flat-menu{line-height:initial;height:initial}\n", ".collapse-icon{font-size:16px;height:16px;padding-bottom:.2rem;color:#3f51b5}.collapse-icon.header{align-self:flex-end}.collapse-icon.footer{align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}\n"] }]
|
|
272
|
+
args: [{ selector: 'tb-table-container', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TableStore, ExportToCsvService, WrapperFilterStore], template: "<ng-content select=\"[before]\" >\n</ng-content>\n\n<ng-container multiSort [matSortDisabled]=\"disableSort\">\n <ng-container *ngrxLet=\"state.tableSettings$ as tableSettings\">\n\n\n <div class=\"header-wrapper\">\n <div class=\"title\">\n <ng-content select=\".tb-header-title\"\n *ngIf=\"(!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed\">\n\n </ng-content>\n <group-by-list></group-by-list>\n </div>\n <div class=\"flx-row-end\">\n <lib-filter-list></lib-filter-list>\n <ng-container *ngIf=\"!tableSettings.hideHeader\">\n <ng-container *ngIf=\"!(collapseHeader$ | async); else allMenu\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-container>\n <ng-template #allMenu>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\"\n [ngClass]=\"{'flat-menu':(collapseHeader$ | async)}\">\n <mat-icon>{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <div class=\"flex-column\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n </mat-menu>\n </ng-template>\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\n (click)=\"state.toggleCollapseHeader()\">\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\n </mat-icon>\n </ng-container>\n </div>\n </div>\n\n <div style=\"clear: both;\">\n <tb-generic-table [rows]='customRows' [data$]=\"data\" [IndexColumn]='IndexColumn'\n [SelectionColumn]='SelectionColumn' (selection$)='selection$.emit($event)' [trackBy]='trackBy'\n [isSticky]='isSticky' [columnInfos]='myColumns$' [disableSort]=\"disableSort\" [groupHeaderTemplate]=\"groupHeaderTemplate\">\n </tb-generic-table>\n </div>\n\n\n\n <ng-template #headerMenu>\n <ng-container>\n <tb-filter-displayer *ngIf=\"!tableSettings.hideFilter\">\n </tb-filter-displayer>\n <tb-col-displayer *ngIf=\"!tableSettings.hideColumnSettings\"></tb-col-displayer>\n <tb-sort-menu *ngIf=\"!tableSettings.hideSort\"></tb-sort-menu>\n </ng-container>\n </ng-template>\n <ng-template #headerMenuExtra>\n <button mat-menu-item (click)=\"resetState()\">\n <mat-icon color=\"primary\">autorenew</mat-icon>\n <span>Reset table</span>\n </button>\n <button mat-menu-item (click)=\"exportToCsv()\" *ngIf=\"!tableSettings.hideExport\">\n <mat-icon color=\"primary\">file_download</mat-icon>\n <span>Export Table</span>\n </button>\n <ng-container *ngIf=\"currentStateKey$ | async as currentKey\">\n <button mat-menu-item *ngIf=\"tableId\" (click)=\"saveState()\">\n <mat-icon color=\"primary\">save</mat-icon>\n <span>Save to {{currentKey}}</span>\n </button>\n <button *ngIf='tableId' mat-menu-item [matMenuTriggerFor]=\"savedNames\">\n <span>Choose Profile</span>\n </button>\n </ng-container>\n\n <mat-menu #savedNames='matMenu' panelClass='wide-menu'>\n <button mat-menu-item clickEmitter #add='clickEmitter'>\n <mat-icon>add</mat-icon>\n <span>New</span>\n </button>\n <ng-container *ngFor='let key of stateKeys$ | async'>\n <button mat-menu-item (click)='setProfileState(key)'>\n <div style='display: flex; align-items: center; justify-content: space-between;'>\n <span style='display:flex;'>{{key}}</span>\n <span style='display:flex;'>\n <span style=\"width: 120px;\"></span>\n <mat-icon color='warn' (click)='deleteProfileState(key)' stop-propagation>delete_forever</mat-icon>\n </span>\n </div>\n </button>\n </ng-container>\n </mat-menu>\n <div *opDialog='add'>\n <mat-form-field>\n <input style='width:90%' matInput #addedKey />\n </mat-form-field>\n <button mat-button (click)='setProfileState(addedKey.value); add.next(false);'\n [disabled]=\"!addedKey.value\">Add</button>\n </div>\n </ng-template>\n\n </ng-container>\n\n</ng-container>\n", styles: [".wide-menu{width:200px!important}.header-wrapper{display:flex;flex-direction:row;justify-content:space-between;width:100%}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.flat-menu{line-height:initial;height:initial}\n", ".collapse-icon{font-size:16px;height:16px;padding-bottom:.2rem;color:#3f51b5}.collapse-icon.header{align-self:flex-end}.collapse-icon.footer{align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}\n"] }]
|
|
234
273
|
}], ctorParameters: function () { return [{ type: i1.TableStore }, { type: i2.ExportToCsvService }, { type: undefined, decorators: [{
|
|
235
274
|
type: Inject,
|
|
236
275
|
args: [TableBuilderConfigToken]
|
|
237
276
|
}] }, { type: i3.Store }, { type: i4.TableWrapperDirective, decorators: [{
|
|
238
277
|
type: Optional
|
|
239
|
-
}] }]; }, propDecorators: {
|
|
278
|
+
}] }]; }, propDecorators: { genericTableComponent: [{
|
|
279
|
+
type: ViewChild,
|
|
280
|
+
args: [GenericTableComponent]
|
|
281
|
+
}], customFilters: [{
|
|
240
282
|
type: ContentChildren,
|
|
241
283
|
args: [TableCustomFilterDirective, { descendants: true }]
|
|
242
284
|
}], filters: [{
|
|
@@ -258,6 +300,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
|
|
|
258
300
|
type: Input
|
|
259
301
|
}], inputFilters: [{
|
|
260
302
|
type: Input
|
|
303
|
+
}], groupHeaderTemplate: [{
|
|
304
|
+
type: Input
|
|
261
305
|
}], selection$: [{
|
|
262
306
|
type: Output
|
|
263
307
|
}], data: [{
|
|
@@ -275,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
|
|
|
275
319
|
}], state$: [{
|
|
276
320
|
type: Output
|
|
277
321
|
}] } });
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFDTixlQUFlLEVBRWYsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFFTixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBYyxJQUFJLEVBQUUsYUFBYSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN0RixPQUFPLEVBQW1CLFNBQVMsRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pHLE9BQU8sRUFBRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQXNCLHVCQUF1QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0YsT0FBTyxLQUFLLFNBQVMsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsbUJBQW1CLEVBQXVCLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFyRSxNQUFNLE9BQU8sdUJBQXVCO0lBb0NyQyxZQUNTLEtBQWlCLEVBQ2pCLGtCQUF5QyxFQUNQLE1BQTBCLEVBQzNELEtBQWlCLEVBQ0wsT0FBOEI7UUFKM0MsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVCO1FBQ1AsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDM0QsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNMLFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBbEMzQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBS2YsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxJQUFJLGFBQWEsQ0FBa0IsQ0FBQyxDQUFDLENBQUM7UUFDMUMsU0FBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNwQyxTQUFTLENBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDbEIsa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQztRQUtRLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUF3RDNDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBc0kzRCxpQkFBWSxHQUFHLENBQUMsSUFBa0IsRUFBRSxFQUFFO1lBQ3BDLElBQUcsSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsS0FBSyxFQUFDO2dCQUNwQyxNQUFNLFVBQVUsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBb0IsQ0FBQztnQkFDM0QsVUFBVSxDQUFDLFVBQVUsR0FBRyxVQUFVLEVBQUUsVUFBVSxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUM7Z0JBQzNFLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQztnQkFDM0YsT0FBTyxFQUFDLEdBQUcsSUFBSSxFQUFDLFVBQVUsRUFBQyxDQUFBO2FBQzVCO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUE7UUFFRCxvQkFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQXZMakcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUN0RSxJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQzthQUM1RTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FDN0MsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzlCLGtCQUFrQixFQUFFLENBQ3JCLENBQUM7SUFDSixDQUFDO0lBekNELElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQXlDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQzFFLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDckMsTUFBTSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBTSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUUsRUFDN0QsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFFLGNBQWMsQ0FBQyxFQUFFO29CQUNwQixJQUFHLENBQUMsY0FBYyxFQUFFO3dCQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO3FCQUN2RTtnQkFDSCxDQUFDLENBQUMsRUFDRixPQUFPLEVBQUUsQ0FDVixDQUFDO2dCQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsZUFBZSxDQUFDLENBQUM7YUFFM0Q7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUN2RTtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFHWixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDakQsSUFBSSxDQUFDLGNBQWM7WUFDbkIsSUFBSSxDQUFDLFlBQVk7U0FDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRXpCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFFLENBQUMsQ0FBQTtRQUVuRixNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUM7YUFDcEMsYUFBYSxDQUFDLFFBQVEsQ0FBQzthQUN2QixVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQzNDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDOUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FDOUMsQ0FBQyxDQUNILENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QixJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ2pHO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDM0IsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQ2xDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQ2hELENBQUM7UUFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQy9CLEtBQUssRUFBRSxDQUNSLENBQUMsU0FBUyxDQUFFLFVBQVUsQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFFLENBQUMsQ0FBQztRQUMvRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBVztRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELGtCQUFrQixDQUFDLFFBQWdCO1FBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEVBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFHRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBRTNFLElBQUksVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzFELElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZixVQUFVLEdBQUcsQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3RIO1lBRUQsSUFBSSxhQUFhLEdBQXlELEVBQUUsQ0FBQztZQUU3RSxVQUFVLENBQUMsTUFBTSxDQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUM1QyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDZCxJQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUU7b0JBQ1osSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3ZDLElBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO3dCQUN2QixNQUFNLGVBQWUsR0FBeUIsQ0FBeUIsQ0FBQzt3QkFDeEUsZUFBZSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO3dCQUM3QyxlQUFlLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7d0JBQy9DLGVBQWUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUNuRCxlQUFlLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7d0JBQ2pDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztxQkFDMUI7b0JBQ0QsSUFBRyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQ3pCLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7cUJBQ25DO29CQUNELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDakM7cUJBQU07b0JBQ0wsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdkI7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sUUFBUSxHQUFJLElBQUksQ0FBRSxhQUFhLENBQUMsR0FBRyxDQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBRyxDQUFDLENBQUMsSUFBSSxDQUNsRSxRQUFRLEVBQUUsRUFDVixJQUFJLENBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUU7Z0JBQ1QsSUFBRyxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdkU7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFFO2lCQUN2QjtnQkFDSixPQUFPLENBQUMsQ0FBQztZQUNWLENBQUMsRUFBRSxFQUFnQyxDQUFDLEVBQ3BDLEdBQUcsQ0FBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDNUIsQ0FBQztZQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUMsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCxpQkFBaUI7UUFDZixNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFVLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNWLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNqQyxPQUFPO2dCQUNMLEdBQUcsR0FBRztnQkFDTixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFFLENBQUMsQ0FBRTthQUNoRyxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFVLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNWLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRTtnQkFDNUIsSUFBRyxFQUFFLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUM7b0JBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtpQkFBQztnQkFDeEUsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUE7UUFDUCxDQUFDLENBQUMsQ0FDSCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDOUMsUUFBUSxDQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFFLEVBQUMsQ0FBQyxDQUFDLENBQ2xGLENBQUM7SUFDSixDQUFDO0lBYUQsT0FBTyxDQUFDLElBQVcsRUFBRSxRQUFvQjtRQUN2QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDaEUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pELE1BQU0sTUFBTSxHQUFHO2dCQUNiLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDMUcsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEYsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDekMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2xDLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRVAsTUFBTSxNQUFNLEdBQUc7Z0JBQ2IsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLEdBQUcsTUFBTTthQUNWLENBQUE7WUFDRCxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sV0FBVyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDNUMsQ0FBQzs7b0hBaFFhLHVCQUF1Qiw4RUF1QzNCLHVCQUF1Qjt3R0F2Q25CLHVCQUF1QiwwWUFEMUIsQ0FBQyxVQUFVLEVBQUMsa0JBQWtCLEVBQUMsa0JBQWtCLENBQUMsd0RBRzVDLDBCQUEwQiw2REFDMUIsb0JBQW9CLGdFQW1CcEIsU0FBUyw4Q0FFVCxtQkFBbUIsNkJDckV0Qyx3d0pBZ0hBOzJGRG5FZ0IsdUJBQXVCO2tCQU50QyxTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsVUFBVSxFQUFDLGtCQUFrQixFQUFDLGtCQUFrQixDQUFDOzswQkF3QzFELE1BQU07MkJBQUMsdUJBQXVCOzswQkFFOUIsUUFBUTs0Q0F2Q3VELGFBQWE7c0JBQTlFLGVBQWU7dUJBQUMsMEJBQTBCLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO2dCQUNKLE9BQU87c0JBQWxFLGVBQWU7dUJBQUMsb0JBQW9CLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO2dCQUVqRCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ08sUUFBUTtzQkFBcEIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsSUFBSTtzQkFBYixNQUFNO2dCQUtxQixVQUFVO3NCQUFyQyxlQUFlO3VCQUFDLFNBQVM7Z0JBRVksV0FBVztzQkFBaEQsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBQzFCLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbmplY3QsXG4gIFByZWRpY2F0ZSxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBmcm9tLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFycmF5QWRkaXRpb25hbCwgRmllbGRUeXBlLCBNZXRhRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XG5pbXBvcnQgeyBmaXJzdCwgbGFzdCwgbWFwLCBzd2l0Y2hNYXAsIHRhcCwgd2l0aExhdGVzdEZyb20sIG1lcmdlQWxsLCBzY2FuIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFibGVCdWlsZGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1idWlsZGVyJztcbmltcG9ydCB7IE1hdFJvd0RlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IEN1c3RvbUNlbGxEaXJlY3RpdmUsIFRhYmxlQ3VzdG9tRmlsdGVyRGlyZWN0aXZlLCBUYWJsZUZpbHRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgIHN0YXRlSXMsIFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcbmltcG9ydCB7IERhdGFGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2RhdGEtZmlsdGVyJztcbmltcG9ydCB7IGNvbWJpbmVBcnJheXMsIG1hcEFycmF5LCBub3ROdWxsIH0gZnJvbSAnLi4vLi4vLi4vcnhqcy9yeGpzLW9wZXJhdG9ycyc7XG5pbXBvcnQgeyBFeHBvcnRUb0NzdlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHBvcnQtdG8tY3N2LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXJyYXlEZWZhdWx0cyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvRGVmYXVsdFNldHRpbmdzJztcbmltcG9ydCB7IFRhYmxlQnVpbGRlckNvbmZpZywgVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4gfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RhYmxlQnVpbGRlckNvbmZpZyc7XG5pbXBvcnQgKiBhcyBzZWxlY3RvcnMgZnJvbSAnLi4vLi4vbmdyeC9zZWxlY3RvcnMnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGRlbGV0ZUxvY2FsUHJvZmlsZXNTdGF0ZSwgc2V0TG9jYWxQcm9maWxlLCBzZXRMb2NhbFByb2ZpbGVzU3RhdGUgfSBmcm9tICcuLi8uLi9uZ3J4L2FjdGlvbnMnO1xuaW1wb3J0IHsgSW5pdGlhbGl6YXRpb25TdGF0ZSwgUGVyc2lzdGVkVGFibGVTdGF0ZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvVGFibGVTdGF0ZSc7XG5pbXBvcnQgeyBzb3J0RGF0YSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9zb3J0LWRhdGEtZnVuY3Rpb24nO1xuaW1wb3J0IHsgV3JhcHBlckZpbHRlclN0b3JlIH0gZnJvbSAnLi4vdGFibGUtY29udGFpbmVyLWZpbHRlci90YWJsZS13cmFwcGVyLWZpbHRlci1zdG9yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIHN1bUJ5LCBncm91cEJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IENvbHVtbkluZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0NvbHVtbkluZm8nO1xuaW1wb3J0IHsgZGVmYXVsdFNoYXJlUmVwbGF5IH0gZnJvbSAnLi4vLi4vLi4vcnhqcyc7XG5pbXBvcnQgeyBmbGF0dGVuRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBjcmVhdGVGaWx0ZXJGdW5jLCBpc0N1c3RvbUZpbHRlciwgaXNGaWx0ZXJJbmZvIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXItaW5mbyc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kaWN0aW9uYXJ5JztcbmltcG9ydCB7IFRhYmxlV3JhcHBlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdGFibGUtd3JhcHBlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgY3JlYXRlTGlua0NyZWF0b3IgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9saW5rLWNyZWF0b3Iuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RiLXRhYmxlLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jb250YWluZXIuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLWNvbnRhaW5lci5jc3MnLCcuLi8uLi9zdHlsZXMvY29sbGFwc2VyLnN0eWxlcy5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtUYWJsZVN0b3JlLEV4cG9ydFRvQ3N2U2VydmljZSxXcmFwcGVyRmlsdGVyU3RvcmVdXG59KSBleHBvcnQgY2xhc3MgVGFibGVDb250YWluZXJDb21wb25lbnQ8VCA9IGFueT4ge1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmUsIHtkZXNjZW5kYW50czogdHJ1ZX0pIGN1c3RvbUZpbHRlcnMhOiBRdWVyeUxpc3Q8VGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmU+O1xuICBAQ29udGVudENoaWxkcmVuKFRhYmxlRmlsdGVyRGlyZWN0aXZlLCB7ZGVzY2VuZGFudHM6IHRydWV9KSBmaWx0ZXJzITogUXVlcnlMaXN0PFRhYmxlRmlsdGVyRGlyZWN0aXZlPjtcblxuICBASW5wdXQoKSB0YWJsZUlkITogc3RyaW5nO1xuICBASW5wdXQoKSB0YWJsZUJ1aWxkZXIhOiBUYWJsZUJ1aWxkZXI7XG4gIEBJbnB1dCgpIEluZGV4Q29sdW1uID0gZmFsc2U7XG4gIEBJbnB1dCgpIFNlbGVjdGlvbkNvbHVtbiA9IGZhbHNlO1xuICBASW5wdXQoKSB0cmFja0J5ITogc3RyaW5nO1xuICBASW5wdXQoKSBpc1N0aWNreSA9IHRydWU7XG4gIEBJbnB1dCgpIHNldCBwYWdlU2l6ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGF0ZS5zZXRQYWdlU2l6ZSh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgaW5wdXRGaWx0ZXJzPzogT2JzZXJ2YWJsZTxBcnJheTxQcmVkaWNhdGU8VD4+PjtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbiQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGRhdGFTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8T2JzZXJ2YWJsZTxUW10+PigxKTtcbiAgQE91dHB1dCgpIGRhdGEgPSB0aGlzLmRhdGFTdWJqZWN0LnBpcGUoXG4gICAgc3dpdGNoTWFwKCBkID0+IGQpLFxuICAgIGRlZmF1bHRTaGFyZVJlcGxheSgpLFxuICApO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Um93RGVmKSBjdXN0b21Sb3dzITogUXVlcnlMaXN0PE1hdFJvd0RlZjxhbnk+PjtcblxuICBAQ29udGVudENoaWxkcmVuKEN1c3RvbUNlbGxEaXJlY3RpdmUpIGN1c3RvbUNlbGxzITogUXVlcnlMaXN0PEN1c3RvbUNlbGxEaXJlY3RpdmU+O1xuICBAT3V0cHV0KCkgT25TdGF0ZVJlc2V0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgT25TYXZlU3RhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzdGF0ZSQgOiBPYnNlcnZhYmxlPFBlcnNpc3RlZFRhYmxlU3RhdGU+O1xuXG4gIG15Q29sdW1ucyQhOiBPYnNlcnZhYmxlPENvbHVtbkluZm9bXT47XG5cbiAgc3RhdGVLZXlzJD86IE9ic2VydmFibGU8c3RyaW5nW10gfCBudWxsPjtcbiAgY3VycmVudFN0YXRlS2V5JD86IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBkaXNhYmxlU29ydCE6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHN0YXRlOiBUYWJsZVN0b3JlLFxuICAgIHB1YmxpYyBleHBvcnRUb0NzdlNlcnZpY2U6IEV4cG9ydFRvQ3N2U2VydmljZTxUPixcbiAgICBASW5qZWN0KFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuKSBwcml2YXRlIGNvbmZpZzogVGFibGVCdWlsZGVyQ29uZmlnLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB3cmFwcGVyOiBUYWJsZVdyYXBwZXJEaXJlY3RpdmUsXG4gICkge1xuICAgICB0aGlzLnN0YXRlLm9uKCB0aGlzLnN0YXRlLmdldFNhdmFibGVTdGF0ZSgpLnBpcGUobGFzdCgpKSwgZmluYWxTdGF0ZSA9PiB7XG4gICAgICBpZih0aGlzLnRhYmxlSWQpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzZXRMb2NhbFByb2ZpbGUoe2tleTp0aGlzLnRhYmxlSWQsdmFsdWU6IGZpbmFsU3RhdGV9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdGF0ZSQgPSB0aGlzLnN0YXRlLmdldFNhdmFibGVTdGF0ZSgpLnBpcGUoXG4gICAgICBtYXAoc3RhdGUgPT4gY2xvbmVEZWVwKHN0YXRlKSksXG4gICAgICBkZWZhdWx0U2hhcmVSZXBsYXkoKSxcbiAgICApO1xuICB9XG5cbiAgcmVzZXRTdGF0ZSgpIHtcbiAgICB0aGlzLmN1c3RvbUZpbHRlcnMuZm9yRWFjaCggY2YgPT4gY2YucmVzZXQoKSk7XG4gICAgdGhpcy5maWx0ZXJzLmZvckVhY2goIGNmID0+IGNmLnJlc2V0KCkgKTtcbiAgICB0aGlzLnN0YXRlLnJlc2V0U3RhdGUoKTtcbiAgICB0aGlzLk9uU3RhdGVSZXNldC5uZXh0KG51bGwpXG4gIH1cblxuICBpbml0aWFsaXplU3RhdGUoKSB7XG4gICAgdGhpcy5zdGF0ZS5zZXRUYWJsZVNldHRpbmdzKHRoaXMudGFibGVCdWlsZGVyLnNldHRpbmdzKTtcbiAgICB0aGlzLnN0YXRlLnJ1bk9uY2VXaGVuKHN0YXRlSXMoSW5pdGlhbGl6YXRpb25TdGF0ZS5NZXRhRGF0YUxvYWRlZCksIHN0YXRlID0+IHtcbiAgICAgIGlmKHRoaXMudGFibGVJZCkge1xuICAgICAgICBjb25zdCBwZXJzaXN0ZWRTdGF0ZSQgPSB0aGlzLnN0b3JlLnBpcGUoXG4gICAgICAgICAgc2VsZWN0KHNlbGVjdG9ycy5zZWxlY3RMb2NhbFByb2ZpbGVTdGF0ZTxhbnk+KHRoaXMudGFibGVJZCkgKSxcbiAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgIHRhcCggcGVyc2lzdGVkU3RhdGUgPT4ge1xuICAgICAgICAgICAgaWYoIXBlcnNpc3RlZFN0YXRlKSB7XG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUuc2V0SW50aWFsaXphdGlvblN0YXRlKEluaXRpYWxpemF0aW9uU3RhdGUuTG9hZGVkRnJvbVN0b3JlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBub3ROdWxsKCksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3RhdGUudXBkYXRlU3RhdGVGcm9tUGVyc2lzdGVkU3RhdGUocGVyc2lzdGVkU3RhdGUkKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5zZXRJbnRpYWxpemF0aW9uU3RhdGUoSW5pdGlhbGl6YXRpb25TdGF0ZS5Mb2FkZWRGcm9tU3RvcmUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGN1c3RvbUZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQcmVkaWNhdGU8YW55PltdPihbXSk7XG4gIGluaXRpYWxpemVEYXRhKCkge1xuXG5cbiAgICB2YXIgYWxsRmlsdGVycyA9IHRoaXMuaW5wdXRGaWx0ZXJzID8gY29tYmluZUFycmF5cyhbXG4gICAgICB0aGlzLmN1c3RvbUZpbHRlcnMkLFxuICAgICAgdGhpcy5pbnB1dEZpbHRlcnNcbiAgICBdKSA6IHRoaXMuY3VzdG9tRmlsdGVycyQ7XG5cbiAgICBjb25zdCBmaWx0ZXJzJCA9IHRoaXMuc3RhdGUuZmlsdGVycyQucGlwZShtYXAoIGZpbHRlcnMgPT4gT2JqZWN0LnZhbHVlcyhmaWx0ZXJzKSApKVxuXG4gICAgY29uc3QgZGF0YSA9IG5ldyBEYXRhRmlsdGVyKGFsbEZpbHRlcnMpXG4gICAgICAuYXBwZW5kRmlsdGVycyhmaWx0ZXJzJClcbiAgICAgIC5maWx0ZXJEYXRhKHRoaXMudGFibGVCdWlsZGVyLmdldERhdGEkKCkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGRhdGEgPT4gdGhpcy5zdGF0ZS5tZXRhRGF0YUFycmF5JC5waXBlKFxuICAgICAgICAgIG1hcChtZXRhRGF0YSA9PiB0aGlzLmdldERhdGEoZGF0YSwgbWV0YURhdGEpKVxuICAgICAgICApKVxuICAgICAgKSk7XG4gICAgdGhpcy5kYXRhU3ViamVjdC5uZXh0KGRhdGEpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplU3RhdGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKCk7XG5cbiAgICBpZih0aGlzLnRhYmxlSWQpIHtcbiAgICAgIHRoaXMuc3RhdGVLZXlzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KHNlbGVjdG9ycy5zZWxlY3RMb2NhbFByb2ZpbGVLZXlzKHRoaXMudGFibGVJZCkpO1xuICAgICAgdGhpcy5jdXJyZW50U3RhdGVLZXkkID0gdGhpcy5zdG9yZS5zZWxlY3Qoc2VsZWN0b3JzLnNlbGVjdExvY2FsUHJvZmlsZUN1cnJlbnRLZXkodGhpcy50YWJsZUlkKSk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0VG9Dc3YoKTogdm9pZCB7XG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy5kYXRhLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0YXRlLnNvcnRlZCQpLFxuICAgICAgbWFwKChbZGF0YSwgc29ydGVkXSkgPT4gc29ydERhdGEoZGF0YSwgc29ydGVkKSlcbiAgICApO1xuICAgIHRoaXMuZXhwb3J0VG9Dc3ZTZXJ2aWNlLmV4cG9ydFRvQ3N2KHNvcnRlZCk7XG4gIH1cblxuICBzYXZlU3RhdGUoKSB7XG4gICAgdGhpcy5zdGF0ZS5nZXRTYXZhYmxlU3RhdGUoKS5waXBlKFxuICAgICAgZmlyc3QoKVxuICAgICkuc3Vic2NyaWJlKCB0YWJsZVN0YXRlID0+IHtcbiAgICAgIHRoaXMuT25TYXZlU3RhdGUubmV4dChudWxsKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goc2V0TG9jYWxQcm9maWxlKHsga2V5OiB0aGlzLnRhYmxlSWQsIHZhbHVlOnRhYmxlU3RhdGUsIHBlcnNpc3Q6IHRydWV9ICkpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0UHJvZmlsZVN0YXRlKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzZXRMb2NhbFByb2ZpbGVzU3RhdGUoe2tleTp0aGlzLnRhYmxlSWQsIGN1cnJlbnQ6IHZhbH0pKTtcbiAgfVxuXG4gIGRlbGV0ZVByb2ZpbGVTdGF0ZShzdGF0ZUtleTogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChkZWxldGVMb2NhbFByb2ZpbGVzU3RhdGUoe2tleTp0aGlzLnRhYmxlSWQsIHN0YXRlS2V5fSkpO1xuICB9XG5cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5Jbml0aWFsaXplQ29sdW1ucygpO1xuXG4gICAgdGhpcy5zdGF0ZS5ydW5PbmNlV2hlbihzdGF0ZUlzKEluaXRpYWxpemF0aW9uU3RhdGUuTG9hZGVkRnJvbVN0b3JlKSwgc3RhdGUgPT4ge1xuXG4gICAgICB2YXIgYWxsRmlsdGVycyA9IFsuLi50aGlzLmZpbHRlcnMsIC4uLnRoaXMuY3VzdG9tRmlsdGVyc107XG4gICAgICBpZih0aGlzLndyYXBwZXIpIHtcbiAgICAgICAgYWxsRmlsdGVycyA9IFsuLi5hbGxGaWx0ZXJzLCAuLi50aGlzLndyYXBwZXIuY3VzdG9tRmlsdGVycywgLi4udGhpcy53cmFwcGVyLmZpbHRlcnMsIC4uLnRoaXMud3JhcHBlci5yZWdpc3RlcmF0aW9uc107XG4gICAgICB9XG5cbiAgICAgIHZhciBjdXN0b21GaWx0ZXJzOiAoVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmV8VGFibGVGaWx0ZXJEaXJlY3RpdmUgKVtdID0gW107XG5cbiAgICAgIGFsbEZpbHRlcnMuZmlsdGVyKCBmID0+ICFmLnVzZWQpLmZvckVhY2goIGYgPT4ge1xuICAgICAgICBmLnVzZWQgPSB0cnVlO1xuICAgICAgICBpZihmLnNhdmFibGUpIHtcbiAgICAgICAgICB2YXIgZmlsdGVyID0gc3RhdGUuZmlsdGVyc1tmLmZpbHRlcklkXTtcbiAgICAgICAgICBpZihpc0ZpbHRlckluZm8oZmlsdGVyKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyRGlyZWN0aXZlOiBUYWJsZUZpbHRlckRpcmVjdGl2ZSA9IGYgYXMgVGFibGVGaWx0ZXJEaXJlY3RpdmU7XG4gICAgICAgICAgICBmaWx0ZXJEaXJlY3RpdmUuZmllbGRUeXBlID0gZmlsdGVyLmZpZWxkVHlwZTtcbiAgICAgICAgICAgIGZpbHRlckRpcmVjdGl2ZS5maWx0ZXJUeXBlID0gZmlsdGVyLmZpbHRlclR5cGU7XG4gICAgICAgICAgICBmaWx0ZXJEaXJlY3RpdmUuc2V0RmlsdGVyVmFsdWUoZmlsdGVyLmZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgIGZpbHRlckRpcmVjdGl2ZS5rZXkgPSBmaWx0ZXIua2V5O1xuICAgICAgICAgICAgZmlsdGVyRGlyZWN0aXZlLnVwZGF0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihpc0N1c3RvbUZpbHRlcihmaWx0ZXIpKSB7XG4gICAgICAgICAgICBmLmFjdGl2ZSA9IGZpbHRlci5hY3RpdmUgPz8gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc3RhdGUuYWRkRmlsdGVyKGYuZmlsdGVyJCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VzdG9tRmlsdGVycy5wdXNoKGYpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZmlsdGVycyQgPSAgZnJvbSggY3VzdG9tRmlsdGVycy5tYXAoIGNmID0+IGNmLmZpbHRlciQgICkpLnBpcGUoXG4gICAgICAgIG1lcmdlQWxsKCksXG4gICAgICAgIHNjYW4oIChhLGIpPT4ge1xuICAgICAgICAgICAgaWYoYi5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgYVtiLmZpbHRlcklkXSA9IGlzQ3VzdG9tRmlsdGVyKGIpID8gYi5wcmVkaWNhdGUgOiBjcmVhdGVGaWx0ZXJGdW5jKGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZGVsZXRlIGFbYi5maWx0ZXJJZF0gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH0sIHt9IGFzIERpY3Rpb25hcnk8UHJlZGljYXRlPGFueT4+KSxcbiAgICAgICAgbWFwKCBmID0+IE9iamVjdC52YWx1ZXMoZikpXG4gICAgICApO1xuICAgICAgdGhpcy5zdGF0ZS5vbihmaWx0ZXJzJCwgKGYpID0+IHtcbiAgICAgICAgdGhpcy5jdXN0b21GaWx0ZXJzJC5uZXh0KGYpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZVN0YXRlKHtpbml0aWFsaXphdGlvblN0YXRlOiBJbml0aWFsaXphdGlvblN0YXRlLlJlYWR5fSk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIEluaXRpYWxpemVDb2x1bW5zKCkge1xuICAgIGNvbnN0IGN1c3RvbUNlbGxNYXAgPSBuZXcgTWFwKHRoaXMuY3VzdG9tQ2VsbHMubWFwKGNjID0+IFtjYy5jdXN0b21DZWxsLGNjXSkpO1xuICAgIHRoaXMuc3RhdGUuc2V0TWV0YURhdGEodGhpcy50YWJsZUJ1aWxkZXIubWV0YURhdGEkIS5waXBlKFxuICAgICAgbWFwKChtZHMpID0+IHtcbiAgICAgICAgbWRzID0gbWRzLm1hcCh0aGlzLm1hcE1ldGFEYXRhcyk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4ubWRzLFxuICAgICAgICAgIC4uLnRoaXMuY3VzdG9tQ2VsbHMubWFwKCBjYyA9PiBjYy5nZXRNZXRhRGF0YShtZHMuZmluZCggaXRlbSA9PiBpdGVtLmtleSA9PT0gY2MuY3VzdG9tQ2VsbCApKSApXG4gICAgICAgIF1cbiAgICAgIH0pXG4gICAgKSk7XG4gICAgdGhpcy5zdGF0ZS5zZXRMaW5rTWFwcyh0aGlzLnRhYmxlQnVpbGRlci5tZXRhRGF0YSQhLnBpcGUoXG4gICAgICBtYXAoKG1kcykgPT4ge1xuICAgICAgICByZXR1cm4gbWRzLnJlZHVjZSgoYWNjLCBtZCkgPT4ge1xuICAgICAgICAgIGlmKG1kLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkxpbmspeyBhY2NbbWQua2V5XT0gY3JlYXRlTGlua0NyZWF0b3IobWQpfVxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0se30pXG4gICAgICB9KVxuICAgICkpXG5cbiAgICB0aGlzLm15Q29sdW1ucyQgPSB0aGlzLnN0YXRlLm1ldGFEYXRhQXJyYXkkLnBpcGUoXG4gICAgICBtYXBBcnJheSggbWV0YURhdGEgPT4gKHttZXRhRGF0YSwgY3VzdG9tQ2VsbDogY3VzdG9tQ2VsbE1hcC5nZXQobWV0YURhdGEua2V5KSF9KSlcbiAgICApO1xuICB9XG4gIG1hcE1ldGFEYXRhcyA9IChtZXRhIDogTWV0YURhdGE8VD4pID0+IHtcbiAgICBpZihtZXRhLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkFycmF5KXtcbiAgICAgIGNvbnN0IGFkZGl0aW9uYWwgPSB7Li4ubWV0YS5hZGRpdGlvbmFsfSBhcyBBcnJheUFkZGl0aW9uYWw7XG4gICAgICBhZGRpdGlvbmFsLmFycmF5U3R5bGUgPSBhZGRpdGlvbmFsPy5hcnJheVN0eWxlID8/IEFycmF5RGVmYXVsdHMuYXJyYXlTdHlsZTtcbiAgICAgIGFkZGl0aW9uYWwubGltaXQgPSBhZGRpdGlvbmFsLmxpbWl0ID8/IHRoaXMuY29uZmlnLmFycmF5SW5mbz8ubGltaXQgPz8gQXJyYXlEZWZhdWx0cy5saW1pdDtcbiAgICAgIHJldHVybiB7Li4ubWV0YSxhZGRpdGlvbmFsfVxuICAgIH1cbiAgICByZXR1cm4gbWV0YTtcbiAgfVxuXG4gIGNvbGxhcHNlSGVhZGVyJCA9IHRoaXMuc3RhdGUuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuY29sbGFwc2VIZWFkZXIpKTtcblxuICBnZXREYXRhKGRhdGE6IGFueVtdLCBtZXRhRGF0YTogTWV0YURhdGFbXSk6IGFueVtdIHtcbiAgICBjb25zdCBtZXRhID0gbWV0YURhdGEuZmluZChtID0+IG0uYWRkaXRpb25hbD8uZ3JvdXBpbmc/Lmdyb3VwQnkpXG4gICAgaWYgKCFtZXRhKSB7XG4gICAgICB0aGlzLmRpc2FibGVTb3J0ID0gZmFsc2U7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICB0aGlzLmRpc2FibGVTb3J0ID0gdHJ1ZTtcbiAgICBjb25zdCBncm91cGVkID0gZ3JvdXBCeShkYXRhLCBtZXRhLmtleSk7XG4gICAgY29uc3Qgd2l0aEhlYWRlcnNBbmRGb290ZXJzID0gT2JqZWN0LmtleXMoZ3JvdXBlZCkubWFwKGsgPT4ge1xuICAgICAgY29uc3QgaGVhZGVyID0ge1xuICAgICAgICBpc0dyb3VwSGVhZGVyOiB0cnVlLFxuICAgICAgICBncm91cEhlYWRlck5hbWU6IG1ldGEuYWRkaXRpb25hbD8uZ3JvdXBpbmc/Lmdyb3VwVGl0bGVGbiA/IG1ldGEuYWRkaXRpb25hbD8uZ3JvdXBpbmc/Lmdyb3VwVGl0bGVGbihrKSA6IGtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHN1bUNvbHMgPSBtZXRhRGF0YS5maWx0ZXIobWQgPT4gbWQuYWRkaXRpb25hbD8uZ3JvdXBpbmc/LnN1bSkubWFwKG1kID0+IG1kLmtleSk7XG4gICAgICBjb25zdCB0b3RhbHMgPSBzdW1Db2xzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgYWNjW2tleV0gPSBzdW1CeShncm91cGVkW2tdLCBrZXkpO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pO1xuXG4gICAgICBjb25zdCBmb290ZXIgPSB7XG4gICAgICAgIGlzR3JvdXBGb290ZXI6IHRydWUsXG4gICAgICAgIC4uLnRvdGFsc1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtoZWFkZXIsIGdyb3VwZWRba10sIGZvb3Rlcl07XG4gICAgfSk7XG4gICAgcmV0dXJuIGZsYXR0ZW5EZWVwKHdpdGhIZWFkZXJzQW5kRm9vdGVycyk7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JlZm9yZV1cIiA+XG48L25nLWNvbnRlbnQ+XG5cbjxuZy1jb250YWluZXIgbXVsdGlTb3J0IFttYXRTb3J0RGlzYWJsZWRdPVwiZGlzYWJsZVNvcnRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdyeExldD1cInN0YXRlLnRhYmxlU2V0dGluZ3MkIGFzIHRhYmxlU2V0dGluZ3NcIj5cblxuXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci13cmFwcGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnRiLWhlYWRlci10aXRsZVwiXG4gICAgICAgICAgKm5nSWY9XCIoIShjb2xsYXBzZUhlYWRlciQgfCBhc3luYykpIHx8IHRhYmxlU2V0dGluZ3Muc2hvd1RpdGxlV2hlbkhlYWRlckNvbGxhcHNlZFwiPlxuXG4gICAgICAgIDwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZseC1yb3ctZW5kXCI+XG4gICAgICAgIDxsaWItZmlsdGVyLWxpc3Q+PC9saWItZmlsdGVyLWxpc3Q+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFibGVTZXR0aW5ncy5oaWRlSGVhZGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpOyBlbHNlIGFsbE1lbnVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJNZW51XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj0ncHJpbWFyeScgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1haW5NZW51XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydmbGF0LW1lbnUnOihjb2xsYXBzZUhlYWRlciQgfCBhc3luYyl9XCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj57eyhjb2xsYXBzZUhlYWRlciQgfCBhc3luYykgPyAnbW9yZV9ob3JpeicgOiAnbW9yZV92ZXJ0J319PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPG1hdC1tZW51ICNtYWluTWVudT0nbWF0TWVudSc+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJNZW51RXh0cmFcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNhbGxNZW51PlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9J3ByaW1hcnknIFttYXRNZW51VHJpZ2dlckZvcl09XCJtYWluTWVudVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZmxhdC1tZW51JzooY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpfVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+e3soY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpID8gJ21vcmVfaG9yaXonIDogJ21vcmVfdmVydCd9fTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjbWFpbk1lbnU9J21hdE1lbnUnPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyTWVudVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlck1lbnVFeHRyYVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxtYXQtaWNvbiBbbWF0VG9vbHRpcF09XCIoY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpID8gJ2V4cGFuZCcgOiAnY29sbGFwc2UnXCIgY2xhc3M9XCJjb2xsYXBzZS1pY29uIGhlYWRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwic3RhdGUudG9nZ2xlQ29sbGFwc2VIZWFkZXIoKVwiPlxuICAgICAgICAgICAge3soY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZSd9fVxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IHN0eWxlPVwiY2xlYXI6IGJvdGg7XCI+XG4gICAgICA8dGItZ2VuZXJpYy10YWJsZSBbcm93c109J2N1c3RvbVJvd3MnIFtkYXRhJF09XCJkYXRhXCIgW0luZGV4Q29sdW1uXT0nSW5kZXhDb2x1bW4nXG4gICAgICAgIFtTZWxlY3Rpb25Db2x1bW5dPSdTZWxlY3Rpb25Db2x1bW4nIChzZWxlY3Rpb24kKT0nc2VsZWN0aW9uJC5lbWl0KCRldmVudCknIFt0cmFja0J5XT0ndHJhY2tCeSdcbiAgICAgICAgW2lzU3RpY2t5XT0naXNTdGlja3knIFtjb2x1bW5JbmZvc109J215Q29sdW1ucyQnIFtkaXNhYmxlU29ydF09XCJkaXNhYmxlU29ydFwiPlxuICAgICAgPC90Yi1nZW5lcmljLXRhYmxlPlxuICAgIDwvZGl2PlxuXG5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyTWVudT5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgIDx0Yi1maWx0ZXItZGlzcGxheWVyICpuZ0lmPVwiIXRhYmxlU2V0dGluZ3MuaGlkZUZpbHRlclwiPlxuICAgICAgICA8L3RiLWZpbHRlci1kaXNwbGF5ZXI+XG4gICAgICAgIDx0Yi1jb2wtZGlzcGxheWVyICpuZ0lmPVwiIXRhYmxlU2V0dGluZ3MuaGlkZUNvbHVtblNldHRpbmdzXCI+PC90Yi1jb2wtZGlzcGxheWVyPlxuICAgICAgICA8dGItc29ydC1tZW51ICpuZ0lmPVwiIXRhYmxlU2V0dGluZ3MuaGlkZVNvcnRcIj48L3RiLXNvcnQtbWVudT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXJNZW51RXh0cmE+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInJlc2V0U3RhdGUoKVwiPlxuICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+YXV0b3JlbmV3PC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4+UmVzZXQgdGFibGU8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZXhwb3J0VG9Dc3YoKVwiICpuZ0lmPVwiIXRhYmxlU2V0dGluZ3MuaGlkZUV4cG9ydFwiPlxuICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgIDxzcGFuPkV4cG9ydCBUYWJsZTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRTdGF0ZUtleSQgfCBhc3luYyBhcyBjdXJyZW50S2V5XCI+XG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdJZj1cInRhYmxlSWRcIiAoY2xpY2spPVwic2F2ZVN0YXRlKClcIj5cbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+c2F2ZTwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4+U2F2ZSB0byB7e2N1cnJlbnRLZXl9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9J3RhYmxlSWQnIG1hdC1tZW51LWl0ZW0gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInNhdmVkTmFtZXNcIj5cbiAgICAgICAgICA8c3Bhbj5DaG9vc2UgUHJvZmlsZTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG1hdC1tZW51ICNzYXZlZE5hbWVzPSdtYXRNZW51JyBwYW5lbENsYXNzPSd3aWRlLW1lbnUnPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gY2xpY2tFbWl0dGVyICAjYWRkPSdjbGlja0VtaXR0ZXInPlxuICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPk5ldzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPSdsZXQga2V5IG9mIHN0YXRlS2V5cyQgfCBhc3luYyc+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9J3NldFByb2ZpbGVTdGF0ZShrZXkpJz5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9J2Rpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsnPlxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0nZGlzcGxheTpmbGV4Oyc+e3trZXl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9J2Rpc3BsYXk6ZmxleDsnPlxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwid2lkdGg6IDEyMHB4O1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY29sb3I9J3dhcm4nIChjbGljayk9J2RlbGV0ZVByb2ZpbGVTdGF0ZShrZXkpJyBzdG9wLXByb3BhZ2F0aW9uPmRlbGV0ZV9mb3JldmVyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9tYXQtbWVudT5cbiAgICAgIDxkaXYgKm9wRGlhbG9nPSdhZGQnPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPGlucHV0IHN0eWxlPSd3aWR0aDo5MCUnIG1hdElucHV0ICNhZGRlZEtleSAvPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT0nc2V0UHJvZmlsZVN0YXRlKGFkZGVkS2V5LnZhbHVlKTsgYWRkLm5leHQoZmFsc2UpOydcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWFkZGVkS2V5LnZhbHVlXCI+QWRkPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwvbmctY29udGFpbmVyPlxuXG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFDTixlQUFlLEVBRWYsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFFTixRQUFRLEVBRVIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWMsSUFBSSxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxFQUFtQixTQUFTLEVBQVksTUFBTSw2QkFBNkIsQ0FBQztBQUNuRixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RyxPQUFPLEVBQUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFB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QUFRO3NCQUFoQixLQUFLO2dCQUNPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFRyxJQUFJO3NCQUFiLE1BQU07Z0JBS3FCLFVBQVU7c0JBQXJDLGVBQWU7dUJBQUMsU0FBUztnQkFFWSxXQUFXO3NCQUFoRCxlQUFlO3VCQUFDLG1CQUFtQjtnQkFDMUIsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEluamVjdCxcbiAgUHJlZGljYXRlLFxuICBPcHRpb25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGZyb20sIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXJyYXlBZGRpdGlvbmFsLCBGaWVsZFR5cGUsIE1ldGFEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcbmltcG9ydCB7IGZpcnN0LCBsYXN0LCBtYXAsIHN3aXRjaE1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSwgbWVyZ2VBbGwsIHNjYW4gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJsZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLWJ1aWxkZXInO1xuaW1wb3J0IHsgTWF0Um93RGVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgQ3VzdG9tQ2VsbERpcmVjdGl2ZSwgVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmUsIFRhYmxlRmlsdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyAgc3RhdGVJcywgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdGFibGUtc3RvcmUnO1xuaW1wb3J0IHsgRGF0YUZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZGF0YS1maWx0ZXInO1xuaW1wb3J0IHsgY29tYmluZUFycmF5cywgbWFwQXJyYXksIG5vdE51bGwgfSBmcm9tICcuLi8uLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcbmltcG9ydCB7IEV4cG9ydFRvQ3N2U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cG9ydC10by1jc3Yuc2VydmljZSc7XG5pbXBvcnQgeyBBcnJheURlZmF1bHRzIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9EZWZhdWx0U2V0dGluZ3MnO1xuaW1wb3J0IHsgVGFibGVCdWlsZGVyQ29uZmlnLCBUYWJsZUJ1aWxkZXJDb25maWdUb2tlbiB9IGZyb20gJy4uLy4uL2NsYXNzZXMvVGFibGVCdWlsZGVyQ29uZmlnJztcbmltcG9ydCAqIGFzIHNlbGVjdG9ycyBmcm9tICcuLi8uLi9uZ3J4L3NlbGVjdG9ycyc7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgZGVsZXRlTG9jYWxQcm9maWxlc1N0YXRlLCBzZXRMb2NhbFByb2ZpbGUsIHNldExvY2FsUHJvZmlsZXNTdGF0ZSB9IGZyb20gJy4uLy4uL25ncngvYWN0aW9ucyc7XG5pbXBvcnQgeyBHcm91cCwgSW5pdGlhbGl6YXRpb25TdGF0ZSwgUGVyc2lzdGVkVGFibGVTdGF0ZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvVGFibGVTdGF0ZSc7XG5pbXBvcnQgeyBzb3J0RGF0YSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9zb3J0LWRhdGEtZnVuY3Rpb24nO1xuaW1wb3J0IHsgV3JhcHBlckZpbHRlclN0b3JlIH0gZnJvbSAnLi4vdGFibGUtY29udGFpbmVyLWZpbHRlci90YWJsZS13cmFwcGVyLWZpbHRlci1zdG9yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdyb3VwQnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQ29sdW1uSW5mbyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvQ29sdW1uSW5mbyc7XG5pbXBvcnQgeyBkZWZhdWx0U2hhcmVSZXBsYXkgfSBmcm9tICcuLi8uLi8uLi9yeGpzJztcbmltcG9ydCB7IGZsYXR0ZW5EZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGNyZWF0ZUZpbHRlckZ1bmMsIGlzQ3VzdG9tRmlsdGVyLCBpc0ZpbHRlckluZm8gfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlci1pbmZvJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnknO1xuaW1wb3J0IHsgVGFibGVXcmFwcGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90YWJsZS13cmFwcGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBjcmVhdGVMaW5rQ3JlYXRvciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xpbmstY3JlYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyaWNUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0Yi10YWJsZS1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY29udGFpbmVyLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1jb250YWluZXIuY3NzJywnLi4vLi4vc3R5bGVzL2NvbGxhcHNlci5zdHlsZXMuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbVGFibGVTdG9yZSxFeHBvcnRUb0NzdlNlcnZpY2UsV3JhcHBlckZpbHRlclN0b3JlXVxufSkgZXhwb3J0IGNsYXNzIFRhYmxlQ29udGFpbmVyQ29tcG9uZW50PFQgPSBhbnk+IHtcblxuICBAVmlld0NoaWxkKEdlbmVyaWNUYWJsZUNvbXBvbmVudCkgcHJpdmF0ZSBnZW5lcmljVGFibGVDb21wb25lbnQhOiBHZW5lcmljVGFibGVDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgY3VzdG9tRmlsdGVycyE6IFF1ZXJ5TGlzdDxUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVGaWx0ZXJEaXJlY3RpdmUsIHtkZXNjZW5kYW50czogdHJ1ZX0pIGZpbHRlcnMhOiBRdWVyeUxpc3Q8VGFibGVGaWx0ZXJEaXJlY3RpdmU+O1xuXG4gIEBJbnB1dCgpIHRhYmxlSWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRhYmxlQnVpbGRlciE6IFRhYmxlQnVpbGRlcjtcbiAgQElucHV0KCkgSW5kZXhDb2x1bW4gPSBmYWxzZTtcbiAgQElucHV0KCkgU2VsZWN0aW9uQ29sdW1uID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRyYWNrQnkhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzU3RpY2t5ID0gdHJ1ZTtcbiAgQElucHV0KCkgc2V0IHBhZ2VTaXplKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnN0YXRlLnNldFBhZ2VTaXplKHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBpbnB1dEZpbHRlcnM/OiBPYnNlcnZhYmxlPEFycmF5PFByZWRpY2F0ZTxUPj4+O1xuICBASW5wdXQoKSBncm91cEhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbiQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGRhdGFTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8T2JzZXJ2YWJsZTxUW10+PigxKTtcbiAgQE91dHB1dCgpIGRhdGEgPSB0aGlzLmRhdGFTdWJqZWN0LnBpcGUoXG4gICAgc3dpdGNoTWFwKCBkID0+IGQpLFxuICAgIGRlZmF1bHRTaGFyZVJlcGxheSgpLFxuICApO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Um93RGVmKSBjdXN0b21Sb3dzITogUXVlcnlMaXN0PE1hdFJvd0RlZjxhbnk+PjtcblxuICBAQ29udGVudENoaWxkcmVuKEN1c3RvbUNlbGxEaXJlY3RpdmUpIGN1c3RvbUNlbGxzITogUXVlcnlMaXN0PEN1c3RvbUNlbGxEaXJlY3RpdmU+O1xuICBAT3V0cHV0KCkgT25TdGF0ZVJlc2V0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgT25TYXZlU3RhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzdGF0ZSQgOiBPYnNlcnZhYmxlPFBlcnNpc3RlZFRhYmxlU3RhdGU+O1xuXG4gIG15Q29sdW1ucyQhOiBPYnNlcnZhYmxlPENvbHVtbkluZm9bXT47XG5cbiAgc3RhdGVLZXlzJD86IE9ic2VydmFibGU8c3RyaW5nW10gfCBudWxsPjtcbiAgY3VycmVudFN0YXRlS2V5JD86IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBkaXNhYmxlU29ydCE6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHN0YXRlOiBUYWJsZVN0b3JlLFxuICAgIHB1YmxpYyBleHBvcnRUb0NzdlNlcnZpY2U6IEV4cG9ydFRvQ3N2U2VydmljZTxUPixcbiAgICBASW5qZWN0KFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuKSBwcml2YXRlIGNvbmZpZzogVGFibGVCdWlsZGVyQ29uZmlnLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB3cmFwcGVyOiBUYWJsZVdyYXBwZXJEaXJlY3RpdmUsXG4gICkge1xuICAgICB0aGlzLnN0YXRlLm9uKCB0aGlzLnN0YXRlLmdldFNhdmFibGVTdGF0ZSgpLnBpcGUobGFzdCgpKSwgZmluYWxTdGF0ZSA9PiB7XG4gICAgICBpZih0aGlzLnRhYmxlSWQpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzZXRMb2NhbFByb2ZpbGUoe2tleTp0aGlzLnRhYmxlSWQsdmFsdWU6IGZpbmFsU3RhdGV9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdGF0ZSQgPSB0aGlzLnN0YXRlLmdldFNhdmFibGVTdGF0ZSgpLnBpcGUoXG4gICAgICBtYXAoc3RhdGUgPT4gY2xvbmVEZWVwKHN0YXRlKSksXG4gICAgICBkZWZhdWx0U2hhcmVSZXBsYXkoKSxcbiAgICApO1xuICB9XG5cbiAgZmlyc3RQYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuZ2VuZXJpY1RhYmxlQ29tcG9uZW50Py5wYWdpbmF0b3JDb21wb25lbnQ/LnBhZ2luYXRvcj8uZmlyc3RQYWdlKCk7XG4gIH1cblxuICBsYXN0UGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLmdlbmVyaWNUYWJsZUNvbXBvbmVudD8ucGFnaW5hdG9yQ29tcG9uZW50Py5wYWdpbmF0b3I/Lmxhc3RQYWdlKCk7XG4gIH1cblxuICByZXNldFN0YXRlKCkge1xuICAgIHRoaXMuY3VzdG9tRmlsdGVycy5mb3JFYWNoKCBjZiA9PiBjZi5yZXNldCgpKTtcbiAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCggY2YgPT4gY2YucmVzZXQoKSApO1xuICAgIHRoaXMuc3RhdGUucmVzZXRTdGF0ZSgpO1xuICAgIHRoaXMuT25TdGF0ZVJlc2V0Lm5leHQobnVsbClcbiAgfVxuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICB0aGlzLnN0YXRlLnNldFRhYmxlU2V0dGluZ3ModGhpcy50YWJsZUJ1aWxkZXIuc2V0dGluZ3MpO1xuICAgIHRoaXMuc3RhdGUucnVuT25jZVdoZW4oc3RhdGVJcyhJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkKSwgc3RhdGUgPT4ge1xuICAgICAgaWYodGhpcy50YWJsZUlkKSB7XG4gICAgICAgIGNvbnN0IHBlcnNpc3RlZFN0YXRlJCA9IHRoaXMuc3RvcmUucGlwZShcbiAgICAgICAgICBzZWxlY3Qoc2VsZWN0b3JzLnNlbGVjdExvY2FsUHJvZmlsZVN0YXRlPGFueT4odGhpcy50YWJsZUlkKSApLFxuICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgdGFwKCBwZXJzaXN0ZWRTdGF0ZSA9PiB7XG4gICAgICAgICAgICBpZighcGVyc2lzdGVkU3RhdGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zZXRJbnRpYWxpemF0aW9uU3RhdGUoSW5pdGlhbGl6YXRpb25TdGF0ZS5Mb2FkZWRGcm9tU3RvcmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5vdE51bGwoKSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGVTdGF0ZUZyb21QZXJzaXN0ZWRTdGF0ZShwZXJzaXN0ZWRTdGF0ZSQpO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlLnNldEludGlhbGl6YXRpb25TdGF0ZShJbml0aWFsaXphdGlvblN0YXRlLkxvYWRlZEZyb21TdG9yZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgY3VzdG9tRmlsdGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByZWRpY2F0ZTxhbnk+W10+KFtdKTtcbiAgaW5pdGlhbGl6ZURhdGEoKSB7XG5cblxuICAgIHZhciBhbGxGaWx0ZXJzID0gdGhpcy5pbnB1dEZpbHRlcnMgPyBjb21iaW5lQXJyYXlzKFtcbiAgICAgIHRoaXMuY3VzdG9tRmlsdGVycyQsXG4gICAgICB0aGlzLmlucHV0RmlsdGVyc1xuICAgIF0pIDogdGhpcy5jdXN0b21GaWx0ZXJzJDtcblxuICAgIGNvbnN0IGZpbHRlcnMkID0gdGhpcy5zdGF0ZS5maWx0ZXJzJC5waXBlKG1hcCggZmlsdGVycyA9PiBPYmplY3QudmFsdWVzKGZpbHRlcnMpICkpXG5cbiAgICBjb25zdCBkYXRhID0gbmV3IERhdGFGaWx0ZXIoYWxsRmlsdGVycylcbiAgICAgIC5hcHBlbmRGaWx0ZXJzKGZpbHRlcnMkKVxuICAgICAgLmZpbHRlckRhdGEodGhpcy50YWJsZUJ1aWxkZXIuZ2V0RGF0YSQoKSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGRhdGEgPT4gdGhpcy5zdGF0ZS5ncm91cEJ5S2V5cyQucGlwZShcbiAgICAgICAgICBtYXAoZ3JvdXBCeSA9PiB0aGlzLmdldERhdGEoZGF0YSwgZ3JvdXBCeSkpLFxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKGRhdGEgPT4gdGhpcy5zdGF0ZS5ncm91cHMkLnBpcGUoXG4gICAgICAgICAgICBtYXAoZ3JvdXBzID0+IHRoaXMuc2V0RGlzcGxheShkYXRhLCBncm91cHMpKVxuICAgICAgICAgICkpXG4gICAgICAgICkpXG4gICAgICApO1xuXG4gICAgdGhpcy5kYXRhU3ViamVjdC5uZXh0KGRhdGEpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplU3RhdGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKCk7XG5cbiAgICBpZih0aGlzLnRhYmxlSWQpIHtcbiAgICAgIHRoaXMuc3RhdGVLZXlzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KHNlbGVjdG9ycy5zZWxlY3RMb2NhbFByb2ZpbGVLZXlzKHRoaXMudGFibGVJZCkpO1xuICAgICAgdGhpcy5jdXJyZW50U3RhdGVLZXkkID0gdGhpcy5zdG9yZS5zZWxlY3Qoc2VsZWN0b3JzLnNlbGVjdExvY2FsUHJvZmlsZUN1cnJlbnRLZXkodGhpcy50YWJsZUlkKSk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0VG9Dc3YoKTogdm9pZCB7XG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy5kYXRhLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0YXRlLnNvcnRlZCQpLFxuICAgICAgbWFwKChbZGF0YSwgc29ydGVkXSkgPT4gc29ydERhdGEoZGF0YSwgc29ydGVkKSlcbiAgICApO1xuICAgIHRoaXMuZXhwb3J0VG9Dc3ZTZXJ2aWNlLmV4cG9ydFRvQ3N2KHNvcnRlZCk7XG4gIH1cblxuICBzYXZlU3RhdGUoKSB7XG4gICAgdGhpcy5zdGF0ZS5nZXRTYXZhYmxlU3RhdGUoKS5waXBlKFxuICAgICAgZmlyc3QoKVxuICAgICkuc3Vic2NyaWJlKCB0YWJsZVN0YXRlID0+IHtcbiAgICAgIHRoaXMuT25TYXZlU3RhdGUubmV4dChudWxsKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goc2V0TG9jYWxQcm9maWxlKHsga2V5OiB0aGlzLnRhYmxlSWQsIHZhbHVlOnRhYmxlU3RhdGUsIHBlcnNpc3Q6IHRydWV9ICkpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0UHJvZmlsZVN0YXRlKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzZXRMb2NhbFByb2ZpbGVzU3RhdGUoe2tleTp0aGlzLnRhYmxlSWQsIGN1cnJlbnQ6IHZhbH0pKTtcbiAgfVxuXG4gIGRlbGV0ZVByb2ZpbGVTdGF0ZShzdGF0ZUtleTogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChkZWxldGVMb2NhbFByb2ZpbGVzU3RhdGUoe2tleTp0aGlzLnRhYmxlSWQsIHN0YXRlS2V5fSkpO1xuICB9XG5cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5Jbml0aWFsaXplQ29sdW1ucygpO1xuXG4gICAgdGhpcy5zdGF0ZS5ydW5PbmNlV2hlbihzdGF0ZUlzKEluaXRpYWxpemF0aW9uU3RhdGUuTG9hZGVkRnJvbVN0b3JlKSwgc3RhdGUgPT4ge1xuXG4gICAgICB2YXIgYWxsRmlsdGVycyA9IFsuLi50aGlzLmZpbHRlcnMsIC4uLnRoaXMuY3VzdG9tRmlsdGVyc107XG4gICAgICBpZih0aGlzLndyYXBwZXIpIHtcbiAgICAgICAgYWxsRmlsdGVycyA9IFsuLi5hbGxGaWx0ZXJzLCAuLi50aGlzLndyYXBwZXIuY3VzdG9tRmlsdGVycywgLi4udGhpcy53cmFwcGVyLmZpbHRlcnMsIC4uLnRoaXMud3JhcHBlci5yZWdpc3RlcmF0aW9uc107XG4gICAgICB9XG5cbiAgICAgIHZhciBjdXN0b21GaWx0ZXJzOiAoVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmV8VGFibGVGaWx0ZXJEaXJlY3RpdmUgKVtdID0gW107XG5cbiAgICAgIGFsbEZpbHRlcnMuZmlsdGVyKCBmID0+ICFmLnVzZWQpLmZvckVhY2goIGYgPT4ge1xuICAgICAgICBmLnVzZWQgPSB0cnVlO1xuICAgICAgICBpZihmLnNhdmFibGUpIHtcbiAgICAgICAgICB2YXIgZmlsdGVyID0gc3RhdGUuZmlsdGVyc1tmLmZpbHRlcklkXTtcbiAgICAgICAgICBpZihpc0ZpbHRlckluZm8oZmlsdGVyKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyRGlyZWN0aXZlOiBUYWJsZUZpbHRlckRpcmVjdGl2ZSA9IGYgYXMgVGFibGVGaWx0ZXJEaXJlY3RpdmU7XG4gICAgICAgICAgICBmaWx0ZXJEaXJlY3RpdmUuZmllbGRUeXBlID0gZmlsdGVyLmZpZWxkVHlwZTtcbiAgICAgICAgICAgIGZpbHRlckRpcmVjdGl2ZS5maWx0ZXJUeXBlID0gZmlsdGVyLmZpbHRlclR5cGU7XG4gICAgICAgICAgICBmaWx0ZXJEaXJlY3RpdmUuc2V0RmlsdGVyVmFsdWUoZmlsdGVyLmZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgIGZpbHRlckRpcmVjdGl2ZS5rZXkgPSBmaWx0ZXIua2V5O1xuICAgICAgICAgICAgZmlsdGVyRGlyZWN0aXZlLnVwZGF0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihpc0N1c3RvbUZpbHRlcihmaWx0ZXIpKSB7XG4gICAgICAgICAgICBmLmFjdGl2ZSA9IGZpbHRlci5hY3RpdmUgPz8gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc3RhdGUuYWRkRmlsdGVyKGYuZmlsdGVyJCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VzdG9tRmlsdGVycy5wdXNoKGYpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZmlsdGVycyQgPSAgZnJvbSggY3VzdG9tRmlsdGVycy5tYXAoIGNmID0+IGNmLmZpbHRlciQgICkpLnBpcGUoXG4gICAgICAgIG1lcmdlQWxsKCksXG4gICAgICAgIHNjYW4oIChhLGIpPT4ge1xuICAgICAgICAgICAgaWYoYi5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgYVtiLmZpbHRlcklkXSA9IGlzQ3VzdG9tRmlsdGVyKGIpID8gYi5wcmVkaWNhdGUgOiBjcmVhdGVGaWx0ZXJGdW5jKGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZGVsZXRlIGFbYi5maWx0ZXJJZF0gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH0sIHt9IGFzIERpY3Rpb25hcnk8UHJlZGljYXRlPGFueT4+KSxcbiAgICAgICAgbWFwKCBmID0+IE9iamVjdC52YWx1ZXMoZikpXG4gICAgICApO1xuICAgICAgdGhpcy5zdGF0ZS5vbihmaWx0ZXJzJCwgKGYpID0+IHtcbiAgICAgICAgdGhpcy5jdXN0b21GaWx0ZXJzJC5uZXh0KGYpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZVN0YXRlKHtpbml0aWFsaXphdGlvblN0YXRlOiBJbml0aWFsaXphdGlvblN0YXRlLlJlYWR5fSk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIEluaXRpYWxpemVDb2x1bW5zKCkge1xuICAgIGNvbnN0IGN1c3RvbUNlbGxNYXAgPSBuZXcgTWFwKHRoaXMuY3VzdG9tQ2VsbHMubWFwKGNjID0+IFtjYy5jdXN0b21DZWxsLGNjXSkpO1xuICAgIHRoaXMuc3RhdGUuc2V0TWV0YURhdGEodGhpcy50YWJsZUJ1aWxkZXIubWV0YURhdGEkIS5waXBlKFxuICAgICAgbWFwKChtZHMpID0+IHtcbiAgICAgICAgbWRzID0gbWRzLm1hcCh0aGlzLm1hcE1ldGFEYXRhcyk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4ubWRzLFxuICAgICAgICAgIC4uLnRoaXMuY3VzdG9tQ2VsbHMubWFwKCBjYyA9PiBjYy5nZXRNZXRhRGF0YShtZHMuZmluZCggaXRlbSA9PiBpdGVtLmtleSA9PT0gY2MuY3VzdG9tQ2VsbCApKSApXG4gICAgICAgIF1cbiAgICAgIH0pXG4gICAgKSk7XG4gICAgdGhpcy5zdGF0ZS5zZXRMaW5rTWFwcyh0aGlzLnRhYmxlQnVpbGRlci5tZXRhRGF0YSQhLnBpcGUoXG4gICAgICBtYXAoKG1kcykgPT4ge1xuICAgICAgICByZXR1cm4gbWRzLnJlZHVjZSgoYWNjLCBtZCkgPT4ge1xuICAgICAgICAgIGlmKG1kLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkxpbmspeyBhY2NbbWQua2V5XT0gY3JlYXRlTGlua0NyZWF0b3IobWQpfVxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0se30pXG4gICAgICB9KVxuICAgICkpXG5cbiAgICB0aGlzLm15Q29sdW1ucyQgPSB0aGlzLnN0YXRlLm1ldGFEYXRhQXJyYXkkLnBpcGUoXG4gICAgICBtYXBBcnJheSggbWV0YURhdGEgPT4gKHttZXRhRGF0YSwgY3VzdG9tQ2VsbDogY3VzdG9tQ2VsbE1hcC5nZXQobWV0YURhdGEua2V5KSF9KSlcbiAgICApO1xuICB9XG4gIG1hcE1ldGFEYXRhcyA9IChtZXRhIDogTWV0YURhdGE8VD4pID0+IHtcbiAgICBpZihtZXRhLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkFycmF5KXtcbiAgICAgIGNvbnN0IGFkZGl0aW9uYWwgPSB7Li4ubWV0YS5hZGRpdGlvbmFsfSBhcyBBcnJheUFkZGl0aW9uYWw7XG4gICAgICBhZGRpdGlvbmFsLmFycmF5U3R5bGUgPSBhZGRpdGlvbmFsPy5hcnJheVN0eWxlID8/IEFycmF5RGVmYXVsdHMuYXJyYXlTdHlsZTtcbiAgICAgIGFkZGl0aW9uYWwubGltaXQgPSBhZGRpdGlvbmFsLmxpbWl0ID8/IHRoaXMuY29uZmlnLmFycmF5SW5mbz8ubGltaXQgPz8gQXJyYXlEZWZhdWx0cy5saW1pdDtcbiAgICAgIHJldHVybiB7Li4ubWV0YSxhZGRpdGlvbmFsfVxuICAgIH1cbiAgICByZXR1cm4gbWV0YTtcbiAgfVxuXG4gIGNvbGxhcHNlSGVhZGVyJCA9IHRoaXMuc3RhdGUuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuY29sbGFwc2VIZWFkZXIpKTtcblxuICBnZXREYXRhKGRhdGE6IGFueVtdLCBncm91cEJ5S2V5czogc3RyaW5nW10pOiBhbnlbXSB7XG4gICAgaWYgKCFncm91cEJ5S2V5cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZGlzYWJsZVNvcnQgPSBmYWxzZTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICB0aGlzLmRpc2FibGVTb3J0ID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy50Ykdyb3VwQnkoZGF0YSwgZ3JvdXBCeUtleXMpO1xuICB9XG5cbiAgdGJHcm91cEJ5ID0gKGRhdGE6IGFueVtdLCBncm91cEJ5S2V5czogc3RyaW5nW10sIHBhcmVudEdyb3VwTmFtZT86IGFueSk6IGFueVtdID0+IHtcbiAgICBsZXQgcmVzID0ge307XG4gICAgcmVzID0gZ3JvdXBCeShkYXRhLCBncm91cEJ5S2V5c1swXSk7XG4gICAgY29uc3QgcmVtYWluaW5nR3JvdXBCeUtleXMgPSBncm91cEJ5S2V5cy5zbGljZSgxKTtcbiAgICBpZiAocmVtYWluaW5nR3JvdXBCeUtleXMubGVuZ3RoKSB7XG4gICAgICBPYmplY3Qua2V5cyhyZXMpLmZvckVhY2goa2V5ID0+IHJlc1trZXldID0gdGhpcy50Ykdyb3VwQnkocmVzW2tleV0sIHJlbWFpbmluZ0dyb3VwQnlLZXlzLCBrZXkpKVxuICAgIH1cbiAgICByZXR1cm4gZmxhdHRlbkRlZXAoT2JqZWN0LmtleXMocmVzKS5tYXAoZ3JvdXBOYW1lID0+IHtcbiAgICAgIGNvbnN0IHVuaXFOYW1lID0gcGFyZW50R3JvdXBOYW1lID8gYCR7cGFyZW50R3JvdXBOYW1lfS0ke2dyb3VwTmFtZX1gIDogYCR7Z3JvdXBOYW1lfWA7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgaXNHcm91cEhlYWRlcjogdHJ1ZSxcbiAgICAgICAgICBncm91cEhlYWRlck5hbWU6IGAke2dyb3VwTmFtZX0gKCR7cmVzW2dyb3VwTmFtZV0/LmZpbHRlcihyb3cgPT4gIXJvdy5pc0dyb3VwSGVhZGVyKT8ubGVuZ3RofSlgLFxuICAgICAgICAgIGRhdGE6IHJlc1tncm91cE5hbWVdLFxuICAgICAgICAgIGdyb3VwTmFtZTogdW5pcU5hbWUsXG4gICAgICAgICAgcGFkZGluZzogMFxuICAgICAgICB9LFxuICAgICAgICAocmVzW2dyb3VwTmFtZV0gYXMgYW55W10pPy5tYXAoZCA9PiAoeyAuLi5kLCBwYXJlbnRHcm91cE5hbWU6IGQucGFyZW50R3JvdXBOYW1lIHx8IHVuaXFOYW1lIH0pKVxuICAgICAgXTtcbiAgICB9KSkubWFwKHRoaXMuYWRkSW5kZW50YXRpb24pO1xuICB9XG5cbiAgYWRkSW5kZW50YXRpb24gPSAoZDogYW55KSA9PiB7XG4gICAgaWYgKGQuaXNHcm91cEhlYWRlcikge1xuICAgICAgaWYgKGQucGFkZGluZykge1xuICAgICAgICBkLnBhZGRpbmcgKz0gMjA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkLnBhZGRpbmcgPSAxO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZDtcbiAgfVxuXG4gIHNldERpc3BsYXkgPSAoZGF0YTogYW55W10sIGdyb3VwczogR3JvdXBbXSk6IGFueVtdID0+IGRhdGFcbiAgICAubWFwKGQgPT4gKHtcbiAgICAgIC4uLmQsXG4gICAgICBzaG91bGREaXNwbGF5OiAhZC5wYXJlbnRHcm91cE5hbWUgfHwgdGhpcy5zaG91bGREaXNwbGF5KGdyb3Vwcy5maW5kKGcgPT4gZy5ncm91cE5hbWUgPT0gZC5wYXJlbnRHcm91cE5hbWUpLCBncm91cHMpLFxuICAgICAgaXNFeHBhbmRlZDogZ3JvdXBzLmZpbmQoZyA9PiBnLmdyb3VwTmFtZSA9PSBkLmdyb3VwTmFtZSk/LmlzRXhwYW5kZWRcbiAgICB9KSlcbiAgICAuZmlsdGVyKGQgPT4gZC5zaG91bGREaXNwbGF5KTtcblxuXG4gIHNob3VsZERpc3BsYXkgPSAoY3VycmVudEdyb3VwPzogR3JvdXAsIGdyb3Vwcz86IEdyb3VwW10pOiBib29sZWFuID0+IHtcbiAgICBpZiAoIWN1cnJlbnRHcm91cD8uaXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudEdyb3VwID0gZ3JvdXBzPy5maW5kKGcgPT4gZy5ncm91cE5hbWUgPT0gY3VycmVudEdyb3VwLnBhcmVudEdyb3VwTmFtZSk7XG5cbiAgICBpZiAocGFyZW50R3JvdXApIHtcbiAgICAgIHJldHVybiB0aGlzLnNob3VsZERpc3BsYXkocGFyZW50R3JvdXAsIGdyb3Vwcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cIltiZWZvcmVdXCIgPlxuPC9uZy1jb250ZW50PlxuXG48bmctY29udGFpbmVyIG11bHRpU29ydCBbbWF0U29ydERpc2FibGVkXT1cImRpc2FibGVTb3J0XCI+XG4gIDxuZy1jb250YWluZXIgKm5ncnhMZXQ9XCJzdGF0ZS50YWJsZVNldHRpbmdzJCBhcyB0YWJsZVNldHRpbmdzXCI+XG5cblxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi50Yi1oZWFkZXItdGl0bGVcIlxuICAgICAgICAgICpuZ0lmPVwiKCEoY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpKSB8fCB0YWJsZVNldHRpbmdzLnNob3dUaXRsZVdoZW5IZWFkZXJDb2xsYXBzZWRcIj5cblxuICAgICAgICA8L25nLWNvbnRlbnQ+XG4gICAgICAgIDxncm91cC1ieS1saXN0PjwvZ3JvdXAtYnktbGlzdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZseC1yb3ctZW5kXCI+XG4gICAgICAgIDxsaWItZmlsdGVyLWxpc3Q+PC9saWItZmlsdGVyLWxpc3Q+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFibGVTZXR0aW5ncy5oaWRlSGVhZGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpOyBlbHNlIGFsbE1lbnVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJNZW51XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj0ncHJpbWFyeScgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1haW5NZW51XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydmbGF0LW1lbnUnOihjb2xsYXBzZUhlYWRlciQgfCBhc3luYyl9XCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj57eyhjb2xsYXBzZUhlYWRlciQgfCBhc3luYykgPyAnbW9yZV9ob3JpeicgOiAnbW9yZV92ZXJ0J319PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPG1hdC1tZW51ICNtYWluTWVudT0nbWF0TWVudSc+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJNZW51RXh0cmFcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNhbGxNZW51PlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9J3ByaW1hcnknIFttYXRNZW51VHJpZ2dlckZvcl09XCJtYWluTWVudVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZmxhdC1tZW51JzooY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpfVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+e3soY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpID8gJ21vcmVfaG9yaXonIDogJ21vcmVfdmVydCd9fTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjbWFpbk1lbnU9J21hdE1lbnUnPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyTWVudVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlck1lbnVFeHRyYVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxtYXQtaWNvbiBbbWF0VG9vbHRpcF09XCIoY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpID8gJ2V4cGFuZCcgOiAnY29sbGFwc2UnXCIgY2xhc3M9XCJjb2xsYXBzZS1pY29uIGhlYWRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwic3RhdGUudG9nZ2xlQ29sbGFwc2VIZWFkZXIoKVwiPlxuICAgICAgICAgICAge3soY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZSd9fVxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IHN0eWxlPVwiY2xlYXI6IGJvdGg7XCI+XG4gICAgICA8dGItZ2VuZXJpYy10YWJsZSBbcm93c109J2N1c3RvbVJvd3MnIFtkYXRhJF09XCJkYXRhXCIgW0luZGV4Q29sdW1uXT0nSW5kZXhDb2x1bW4nXG4gICAgICAgIFtTZWxlY3Rpb25Db2x1bW5dPSdTZWxlY3Rpb25Db2x1bW4nIChzZWxlY3Rpb24kKT0nc2VsZWN0aW9uJC5lbWl0KCRldmVudCknIFt0cmFja0J5XT0ndHJhY2tCeSdcbiAgICAgICAgW2lzU3RpY2t5XT0naXNTdGlja3knIFtjb2x1bW5JbmZvc109J215Q29sdW1ucyQnIFtkaXNhYmxlU29ydF09XCJkaXNhYmxlU29ydFwiIFtncm91cEhlYWRlclRlbXBsYXRlXT1cImdyb3VwSGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgIDwvdGItZ2VuZXJpYy10YWJsZT5cbiAgICA8L2Rpdj5cblxuXG5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlck1lbnU+XG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8dGItZmlsdGVyLWRpc3BsYXllciAqbmdJZj1cIiF0YWJsZVNldHRpbmdzLmhpZGVGaWx0ZXJcIj5cbiAgICAgICAgPC90Yi1maWx0ZXItZGlzcGxheWVyPlxuICAgICAgICA8dGItY29sLWRpc3BsYXllciAqbmdJZj1cIiF0YWJsZVNldHRpbmdzLmhpZGVDb2x1bW5TZXR0aW5nc1wiPjwvdGItY29sLWRpc3BsYXllcj5cbiAgICAgICAgPHRiLXNvcnQtbWVudSAqbmdJZj1cIiF0YWJsZVNldHRpbmdzLmhpZGVTb3J0XCI+PC90Yi1zb3J0LW1lbnU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyTWVudUV4dHJhPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJyZXNldFN0YXRlKClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmF1dG9yZW5ldzwvbWF0LWljb24+XG4gICAgICAgIDxzcGFuPlJlc2V0IHRhYmxlPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImV4cG9ydFRvQ3N2KClcIiAqbmdJZj1cIiF0YWJsZVNldHRpbmdzLmhpZGVFeHBvcnRcIj5cbiAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICA8c3Bhbj5FeHBvcnQgVGFibGU8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RhdGVLZXkkIHwgYXN5bmMgYXMgY3VycmVudEtleVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nSWY9XCJ0YWJsZUlkXCIgKGNsaWNrKT1cInNhdmVTdGF0ZSgpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPnNhdmU8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPlNhdmUgdG8ge3tjdXJyZW50S2V5fX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPSd0YWJsZUlkJyBtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJzYXZlZE5hbWVzXCI+XG4gICAgICAgICAgPHNwYW4+Q2hvb3NlIFByb2ZpbGU8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxtYXQtbWVudSAjc2F2ZWROYW1lcz0nbWF0TWVudScgcGFuZWxDbGFzcz0nd2lkZS1tZW51Jz5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsaWNrRW1pdHRlciAgI2FkZD0nY2xpY2tFbWl0dGVyJz5cbiAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3Bhbj5OZXc8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj0nbGV0IGtleSBvZiBzdGF0ZUtleXMkIHwgYXN5bmMnPlxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdzZXRQcm9maWxlU3RhdGUoa2V5KSc+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPSdkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47Jz5cbiAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9J2Rpc3BsYXk6ZmxleDsnPnt7a2V5fX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSdkaXNwbGF5OmZsZXg7Jz5cbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIndpZHRoOiAxMjBweDtcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNvbG9yPSd3YXJuJyAoY2xpY2spPSdkZWxldGVQcm9maWxlU3RhdGUoa2V5KScgc3RvcC1wcm9wYWdhdGlvbj5kZWxldGVfZm9yZXZlcjwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbWF0LW1lbnU+XG4gICAgICA8ZGl2ICpvcERpYWxvZz0nYWRkJz5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxpbnB1dCBzdHlsZT0nd2lkdGg6OTAlJyBtYXRJbnB1dCAjYWRkZWRLZXkgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9J3NldFByb2ZpbGVTdGF0ZShhZGRlZEtleS52YWx1ZSk7IGFkZC5uZXh0KGZhbHNlKTsnXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFhZGRlZEtleS52YWx1ZVwiPkFkZDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICA8L25nLWNvbnRhaW5lcj5cblxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -39,6 +39,7 @@ import { PaginatorComponent } from './components/generic-table/paginator.compone
|
|
|
39
39
|
import { UtilitiesModule } from '../utilities';
|
|
40
40
|
import { MatButtonToggleFilterDirective, MatCheckboxTbFilterDirective, MatOptionTbFilterDirective, MatRadioButtonTbFilterDirective, MatSlideToggleTbFilterDirective, TableFilterDirective, TableFilterStringContainsDirective, } from './directives';
|
|
41
41
|
import { TableWrapperDirective } from './directives/table-wrapper.directive';
|
|
42
|
+
import { GroupByListComponent } from './components/group-by-list/group-by-list.component';
|
|
42
43
|
import * as i0 from "@angular/core";
|
|
43
44
|
import * as i1 from "@ngrx/store";
|
|
44
45
|
import * as i2 from "@ngrx/effects";
|
|
@@ -85,7 +86,8 @@ TableBuilderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
|
|
|
85
86
|
MatButtonToggleFilterDirective,
|
|
86
87
|
TableFilterDirective,
|
|
87
88
|
TableFilterStringContainsDirective,
|
|
88
|
-
TableWrapperDirective
|
|
89
|
+
TableWrapperDirective,
|
|
90
|
+
GroupByListComponent], imports: [CommonModule,
|
|
89
91
|
MaterialModule, i1.StoreFeatureModule, i2.EffectsFeatureModule, FormsModule,
|
|
90
92
|
RouterModule,
|
|
91
93
|
ReactiveComponentModule,
|
|
@@ -106,7 +108,8 @@ TableBuilderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
|
|
|
106
108
|
MatButtonToggleFilterDirective,
|
|
107
109
|
TableFilterDirective,
|
|
108
110
|
TableFilterStringContainsDirective,
|
|
109
|
-
TableWrapperDirective
|
|
111
|
+
TableWrapperDirective,
|
|
112
|
+
GroupByListComponent] });
|
|
110
113
|
TableBuilderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: TableBuilderModule, providers: [
|
|
111
114
|
SpaceCasePipe,
|
|
112
115
|
DatePipe,
|
|
@@ -153,6 +156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
|
|
|
153
156
|
TableFilterDirective,
|
|
154
157
|
TableFilterStringContainsDirective,
|
|
155
158
|
TableWrapperDirective,
|
|
159
|
+
GroupByListComponent,
|
|
156
160
|
],
|
|
157
161
|
declarations: [
|
|
158
162
|
ColumnTotalPipe,
|
|
@@ -187,6 +191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
|
|
|
187
191
|
TableFilterDirective,
|
|
188
192
|
TableFilterStringContainsDirective,
|
|
189
193
|
TableWrapperDirective,
|
|
194
|
+
GroupByListComponent,
|
|
190
195
|
],
|
|
191
196
|
providers: [
|
|
192
197
|
SpaceCasePipe,
|
|
@@ -196,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
|
|
|
196
201
|
]
|
|
197
202
|
}]
|
|
198
203
|
}] });
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnVpbGRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci90YWJsZS1idWlsZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlGQUF5RixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFOUYsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixD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ZTt3QkFDZixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsK0JBQStCO3dCQUMvQiwrQkFBK0I7d0JBQy9CLDBCQUEwQjt3QkFDMUIsNEJBQTRCO3dCQUM1Qiw4QkFBOEI7d0JBQzlCLG9CQUFvQjt3QkFDcEIsa0NBQWtDO3dCQUNsQyxxQkFBcUI7cUJBQ3hCO29CQUNELFlBQVksRUFBRTt3QkFDVixlQUFlO3dCQUNmLHVCQUF1Qjt3QkFDdkIscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQiwrQkFBK0I7d0JBQy9CLCtCQUErQjt3QkFDL0IsMEJBQTBCO3dCQUMxQiw0QkFBNEI7d0JBQzVCLDhCQUE4Qjt3QkFDOUIsb0JBQW9CO3dCQUNwQixrQ0FBa0M7d0JBQ2xDLHFCQUFxQjtxQkFDeEI7b0JBQ0QsU0FBUyxFQUFHO3dCQUNWLGFBQWE7d0JBQ2IsUUFBUTt3QkFDUixZQUFZO3dCQUNaLGVBQWU7cUJBQ2hCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2VuZXJpY1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tQ2VsbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jdXN0b20tY2VsbC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgR2VuQ29sRGlzcGxheWVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlbi1jb2wtZGlzcGxheWVyL2dlbi1jb2wtZGlzcGxheWVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW5GaWx0ZXJEaXNwbGF5ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtY29udGFpbmVyLWZpbHRlci9nZW4tZmlsdGVyLWRpc3BsYXllci9nZW4tZmlsdGVyLWRpc3BsYXllci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUsIEN1cnJlbmN5UGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNwYWNlQ2FzZVBpcGUgfSBmcm9tICcuLi91dGlsaXRpZXMvcGlwZXMvc3BhY2UtY2FzZS5waXBlcyc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4vbWF0ZXJpYWwubW9kdWxlJztcbmltcG9ydCB7IERhdGVGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZS1maWx0ZXIvZGF0ZS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWNvbnRhaW5lci90YWJsZS1jb250YWluZXInO1xuaW1wb3J0IHsgQ29sdW1uVG90YWxQaXBlIH0gZnJvbSAnLi9waXBlcy9jb2x1bW4tdG90YWwucGlwZSc7XG5pbXBvcnQgeyBNdWx0aVNvcnREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvbXVsdGktc29ydC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29sdW1uQnVpbGRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb2x1bW4tYnVpbGRlci9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVCdWlsZGVyQ29uZmlnLCBUYWJsZUJ1aWxkZXJDb25maWdUb2tlbiB9IGZyb20gJy4vY2xhc3Nlcy9UYWJsZUJ1aWxkZXJDb25maWcnO1xuaW1wb3J0IHsgTnVtYmVyRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL251bWJlci1maWx0ZXIvbnVtYmVyLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RvcmVNb2R1bGUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBzdG9yYWdlU3RhdGVSZWR1Y2VyIH0gZnJvbSAnLi9uZ3J4L3JlZHVjZXInO1xuaW1wb3J0IHsgSGVhZGVyTWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9oZWFkZXItbWVudS9oZWFkZXItbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWZmZWN0c01vZHVsZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgU2F2ZVRhYmxlRWZmZWN0cyB9IGZyb20gJy4vbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEtleURpc3BsYXlQaXBlIH0gZnJvbSAnLi9waXBlcy9rZXktZGlzcGxheSc7XG5pbXBvcnQgeyBQaG9uZU51bWJlclBpcGUgfSBmcm9tICcuLi91dGlsaXRpZXMvcGlwZXMvcGhvbmUucGlwZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXJyYXlDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXJyYXktY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaW5rQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xpbmstY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbkZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pbi1maWx0ZXIvaW4tZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtYXRGaWx0ZXJWYWx1ZVBpcGUgfSBmcm9tICcuL3BpcGVzL2Zvcm1hdC1maWx0ZXItdmFsdWUucGlwZSc7XG5pbXBvcnQgeyBGb3JtYXRGaWx0ZXJUeXBlUGlwZSB9IGZyb20gJy4vcGlwZXMvZm9ybWF0LWZpbHRlci10eXBlLnBpcGUnO1xuaW1wb3J0IHsgUmVzaXplQ29sdW1uRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Jlc2l6ZS1jb2x1bW4uZGlyZWN0aXZlJztcbmltcG9ydCB7UmVhY3RpdmVDb21wb25lbnRNb2R1bGV9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudCdcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBJbml0aWFsaXphdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pbml0aWFsaXphdGlvbi1jb21wb25lbnQvaW5pdGlhbGl6YXRpb24tY29tcG9uZW50JztcbmltcG9ydCB7IEluTGlzdEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9maWx0ZXIvaW4tbGlzdC9pbi1saXN0LWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU29ydE1lbnVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc29ydC1tZW51L3NvcnQtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyQ2hpcHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtY29udGFpbmVyLWZpbHRlci9maWx0ZXItbGlzdC9maWx0ZXItbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlbmVyaWMtdGFibGUvcGFnaW5hdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlsaXRpZXNNb2R1bGUgfSBmcm9tICcuLi91dGlsaXRpZXMnO1xuaW1wb3J0IHtcbiAgTWF0QnV0dG9uVG9nZ2xlRmlsdGVyRGlyZWN0aXZlLFxuICBNYXRDaGVja2JveFRiRmlsdGVyRGlyZWN0aXZlLFxuICBNYXRPcHRpb25UYkZpbHRlckRpcmVjdGl2ZSxcbiAgTWF0UmFkaW9CdXR0b25UYkZpbHRlckRpcmVjdGl2ZSxcbiAgTWF0U2xpZGVUb2dnbGVUYkZpbHRlckRpcmVjdGl2ZSxcbiAgVGFibGVGaWx0ZXJEaXJlY3RpdmUsXG4gIFRhYmxlRmlsdGVyU3RyaW5nQ29udGFpbnNEaXJlY3RpdmUsXG59IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBUYWJsZVdyYXBwZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdGFibGUtd3JhcHBlci5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIFN0b3JlTW9kdWxlLmZvckZlYXR1cmUoJ2dsb2JhbFN0b3JhZ2VTdGF0ZScsIHN0b3JhZ2VTdGF0ZVJlZHVjZXIpLFxuICAgIEVmZmVjdHNNb2R1bGUuZm9yRmVhdHVyZShbU2F2ZVRhYmxlRWZmZWN0c10pLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBSZWFjdGl2ZUNvbXBvbmVudE1vZHVsZSxcbiAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICBVdGlsaXRpZXNNb2R1bGUsXG4gIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBHZW5lcmljVGFibGVDb21wb25lbnQsXG4gICAgICAgIFBhZ2luYXRvckNvbXBvbmVudCxcbiAgICAgICAgVGFibGVDb250YWluZXJDb21wb25lbnQsXG4gICAgICAgIEN1c3RvbUNlbGxEaXJlY3RpdmUsXG4gICAgICAgIEdlbkNvbERpc3BsYXllckNvbXBvbmVudCxcbiAgICAgICAgR2VuRmlsdGVyRGlzcGxheWVyQ29tcG9uZW50LFxuICAgICAgICBGaWx0ZXJDb21wb25lbnQsXG4gICAgICAgIE11bHRpU29ydERpcmVjdGl2ZSxcbiAgICAgICAgUmVzaXplQ29sdW1uRGlyZWN0aXZlLFxuICAgICAgICBNYXRTbGlkZVRvZ2dsZVRiRmlsdGVyRGlyZWN0aXZlLFxuICAgICAgICBNYXRSYWRpb0J1dHRvblRiRmlsdGVyRGlyZWN0aXZlLFxuICAgICAgICBNYXRPcHRpb25UYkZpbHRlckRpcmVjdGl2ZSxcbiAgICAgICAgTWF0Q2hlY2tib3hUYkZpbHRlckRpcmVjdGl2ZSxcbiAgICAgICAgTWF0QnV0dG9uVG9nZ2xlRmlsdGVyRGlyZWN0aXZlLFxuICAgICAgICBUYWJsZUZpbHRlckRpcmVjdGl2ZSxcbiAgICAgICAgVGFibGVGaWx0ZXJTdHJpbmdDb250YWluc0RpcmVjdGl2ZSxcbiAgICAgICAgVGFibGVXcmFwcGVyRGlyZWN0aXZlLFxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIENvbHVtblRvdGFsUGlwZSxcbiAgICAgICAgVGFibGVDb250YWluZXJDb21wb25lbnQsXG4gICAgICAgIEdlbmVyaWNUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgUGFnaW5hdG9yQ29tcG9uZW50LFxuICAgICAgICBDdXN0b21DZWxsRGlyZWN0aXZlLFxuICAgICAgICBHZW5Db2xEaXNwbGF5ZXJDb21wb25lbnQsXG4gICAgICAgIEdlbkZpbHRlckRpc3BsYXllckNvbXBvbmVudCxcbiAgICAgICAgRGF0ZUZpbHRlckNvbXBvbmVudCxcbiAgICAgICAgRmlsdGVyQ29tcG9uZW50LFxuICAgICAgICBNdWx0aVNvcnREaXJlY3RpdmUsXG4gICAgICAgIE51bWJlckZpbHRlckNvbXBvbmVudCxcbiAgICAgICAgQ29sdW1uQnVpbGRlckNvbXBvbmVudCxcbiAgICAgICAgQXJyYXlDb2x1bW5Db21wb25lbnQsXG4gICAgICAgIExpbmtDb2x1bW5Db21wb25lbnQsXG4gICAgICAgIEhlYWRlck1lbnVDb21wb25lbnQsXG4gICAgICAgIEtleURpc3BsYXlQaXBlLFxuICAgICAgICBGb3JtYXRGaWx0ZXJWYWx1ZVBpcGUsXG4gICAgICAgIEZvcm1hdEZpbHRlclR5cGVQaXBlLFxuICAgICAgICBSZXNpemVDb2x1bW5EaXJlY3RpdmUsXG4gICAgICAgIEluRmlsdGVyQ29tcG9uZW50LFxuICAgICAgICBJbml0aWFsaXphdGlvbkNvbXBvbmVudCxcbiAgICAgICAgSW5MaXN0RmlsdGVyQ29tcG9uZW50LFxuICAgICAgICBTb3J0TWVudUNvbXBvbmVudCxcbiAgICAgICAgRmlsdGVyQ2hpcHNDb21wb25lbnQsXG4gICAgICAgIE1hdFNsaWRlVG9nZ2xlVGJGaWx0ZXJEaXJlY3RpdmUsXG4gICAgICAgIE1hdFJhZGlvQnV0dG9uVGJGaWx0ZXJEaXJlY3RpdmUsXG4gICAgICAgIE1hdE9wdGlvblRiRmlsdGVyRGlyZWN0aXZlLFxuICAgICAgICBNYXRDaGVja2JveFRiRmlsdGVyRGlyZWN0aXZlLFxuICAgICAgICBNYXRCdXR0b25Ub2dnbGVGaWx0ZXJEaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlRmlsdGVyRGlyZWN0aXZlLFxuICAgICAgICBUYWJsZUZpbHRlclN0cmluZ0NvbnRhaW5zRGlyZWN0aXZlLFxuICAgICAgICBUYWJsZVdyYXBwZXJEaXJlY3RpdmUsXG4gICAgXSxcbiAgICBwcm92aWRlcnMgOiBbXG4gICAgICBTcGFjZUNhc2VQaXBlLFxuICAgICAgRGF0ZVBpcGUsXG4gICAgICBDdXJyZW5jeVBpcGUsXG4gICAgICBQaG9uZU51bWJlclBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQnVpbGRlck1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogVGFibGVCdWlsZGVyQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxUYWJsZUJ1aWxkZXJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFRhYmxlQnVpbGRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBNdWx0aVNvcnREaXJlY3RpdmUsXG4gICAgICAgIHsgcHJvdmlkZSA6IFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuICwgdXNlVmFsdWU6IGNvbmZpZ31cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnVpbGRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci90YWJsZS1idWlsZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlGQUF5RixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFOUYsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixD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QWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QiwyQkFBMkI7d0JBQzNCLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLCtCQUErQjt3QkFDL0IsK0JBQStCO3dCQUMvQiwwQkFBMEI7d0JBQzFCLDRCQUE0Qjt3QkFDNUIsOEJBQThCO3dCQUM5QixvQkFBb0I7d0JBQ3BCLGtDQUFrQzt3QkFDbEMscUJBQXFCO3dCQUNyQixvQkFBb0I7cUJBQ3ZCO29CQUNELFlBQVksRUFBRTt3QkFDVixlQUFlO3dCQUNmLHVCQUF1Qjt3QkFDdkIscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQiwrQkFBK0I7d0JBQy9CLCtCQUErQjt3QkFDL0IsMEJBQTBCO3dCQUMxQiw0QkFBNEI7d0JBQzVCLDhCQUE4Qjt3QkFDOUIsb0JBQW9CO3dCQUNwQixrQ0FBa0M7d0JBQ2xDLHFCQUFxQjt3QkFDckIsb0JBQW9CO3FCQUN2QjtvQkFDRCxTQUFTLEVBQUc7d0JBQ1YsYUFBYTt3QkFDYixRQUFRO3dCQUNSLFlBQVk7d0JBQ1osZUFBZTtxQkFDaEI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmljVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ2VuZXJpYy10YWJsZS9nZW5lcmljLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21DZWxsRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2N1c3RvbS1jZWxsLWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBHZW5Db2xEaXNwbGF5ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ2VuLWNvbC1kaXNwbGF5ZXIvZ2VuLWNvbC1kaXNwbGF5ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdlbkZpbHRlckRpc3BsYXllckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1jb250YWluZXItZmlsdGVyL2dlbi1maWx0ZXItZGlzcGxheWVyL2dlbi1maWx0ZXItZGlzcGxheWVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSwgQ3VycmVuY3lQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3BhY2VDYXNlUGlwZSB9IGZyb20gJy4uL3V0aWxpdGllcy9waXBlcy9zcGFjZS1jYXNlLnBpcGVzJztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgRGF0ZUZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLWZpbHRlci9kYXRlLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtY29udGFpbmVyL3RhYmxlLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBDb2x1bW5Ub3RhbFBpcGUgfSBmcm9tICcuL3BpcGVzL2NvbHVtbi10b3RhbC5waXBlJztcbmltcG9ydCB7IE11bHRpU29ydERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9tdWx0aS1zb3J0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb2x1bW5CdWlsZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbHVtbi1idWlsZGVyL2NvbHVtbi1idWlsZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZUJ1aWxkZXJDb25maWcsIFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuIH0gZnJvbSAnLi9jbGFzc2VzL1RhYmxlQnVpbGRlckNvbmZpZyc7XG5pbXBvcnQgeyBOdW1iZXJGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbnVtYmVyLWZpbHRlci9udW1iZXItZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdG9yZU1vZHVsZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IHN0b3JhZ2VTdGF0ZVJlZHVjZXIgfSBmcm9tICcuL25ncngvcmVkdWNlcic7XG5pbXBvcnQgeyBIZWFkZXJNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2hlYWRlci1tZW51L2hlYWRlci1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZmZlY3RzTW9kdWxlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBTYXZlVGFibGVFZmZlY3RzIH0gZnJvbSAnLi9uZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgS2V5RGlzcGxheVBpcGUgfSBmcm9tICcuL3BpcGVzL2tleS1kaXNwbGF5JztcbmltcG9ydCB7IFBob25lTnVtYmVyUGlwZSB9IGZyb20gJy4uL3V0aWxpdGllcy9waXBlcy9waG9uZS5waXBlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcnJheUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hcnJheS1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IExpbmtDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGluay1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEluRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2luLWZpbHRlci9pbi1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1hdEZpbHRlclZhbHVlUGlwZSB9IGZyb20gJy4vcGlwZXMvZm9ybWF0LWZpbHRlci12YWx1ZS5waXBlJztcbmltcG9ydCB7IEZvcm1hdEZpbHRlclR5cGVQaXBlIH0gZnJvbSAnLi9waXBlcy9mb3JtYXQtZmlsdGVyLXR5cGUucGlwZSc7XG5pbXBvcnQgeyBSZXNpemVDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcmVzaXplLWNvbHVtbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtSZWFjdGl2ZUNvbXBvbmVudE1vZHVsZX0gZnJvbSAnQG5ncngvY29tcG9uZW50J1xuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IEluaXRpYWxpemF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2luaXRpYWxpemF0aW9uLWNvbXBvbmVudC9pbml0aWFsaXphdGlvbi1jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5MaXN0RmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZpbHRlci9pbi1saXN0L2luLWxpc3QtZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTb3J0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zb3J0LW1lbnUvc29ydC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWx0ZXJDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJsZS1jb250YWluZXItZmlsdGVyL2ZpbHRlci1saXN0L2ZpbHRlci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ2VuZXJpYy10YWJsZS9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFV0aWxpdGllc01vZHVsZSB9IGZyb20gJy4uL3V0aWxpdGllcyc7XG5pbXBvcnQge1xuICBNYXRCdXR0b25Ub2dnbGVGaWx0ZXJEaXJlY3RpdmUsXG4gIE1hdENoZWNrYm94VGJGaWx0ZXJEaXJlY3RpdmUsXG4gIE1hdE9wdGlvblRiRmlsdGVyRGlyZWN0aXZlLFxuICBNYXRSYWRpb0J1dHRvblRiRmlsdGVyRGlyZWN0aXZlLFxuICBNYXRTbGlkZVRvZ2dsZVRiRmlsdGVyRGlyZWN0aXZlLFxuICBUYWJsZUZpbHRlckRpcmVjdGl2ZSxcbiAgVGFibGVGaWx0ZXJTdHJpbmdDb250YWluc0RpcmVjdGl2ZSxcbn0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFRhYmxlV3JhcHBlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy90YWJsZS13cmFwcGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBHcm91cEJ5TGlzdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9ncm91cC1ieS1saXN0L2dyb3VwLWJ5LWxpc3QuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBTdG9yZU1vZHVsZS5mb3JGZWF0dXJlKCdnbG9iYWxTdG9yYWdlU3RhdGUnLCBzdG9yYWdlU3RhdGVSZWR1Y2VyKSxcbiAgICBFZmZlY3RzTW9kdWxlLmZvckZlYXR1cmUoW1NhdmVUYWJsZUVmZmVjdHNdKSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgUmVhY3RpdmVDb21wb25lbnRNb2R1bGUsXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXG4gICAgVXRpbGl0aWVzTW9kdWxlLFxuICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgR2VuZXJpY1RhYmxlQ29tcG9uZW50LFxuICAgICAgICBQYWdpbmF0b3JDb21wb25lbnQsXG4gICAgICAgIFRhYmxlQ29udGFpbmVyQ29tcG9uZW50LFxuICAgICAgICBDdXN0b21DZWxsRGlyZWN0aXZlLFxuICAgICAgICBHZW5Db2xEaXNwbGF5ZXJDb21wb25lbnQsXG4gICAgICAgIEdlbkZpbHRlckRpc3BsYXllckNvbXBvbmVudCxcbiAgICAgICAgRmlsdGVyQ29tcG9uZW50LFxuICAgICAgICBNdWx0aVNvcnREaXJlY3RpdmUsXG4gICAgICAgIFJlc2l6ZUNvbHVtbkRpcmVjdGl2ZSxcbiAgICAgICAgTWF0U2xpZGVUb2dnbGVUYkZpbHRlckRpcmVjdGl2ZSxcbiAgICAgICAgTWF0UmFkaW9CdXR0b25UYkZpbHRlckRpcmVjdGl2ZSxcbiAgICAgICAgTWF0T3B0aW9uVGJGaWx0ZXJEaXJlY3RpdmUsXG4gICAgICAgIE1hdENoZWNrYm94VGJGaWx0ZXJEaXJlY3RpdmUsXG4gICAgICAgIE1hdEJ1dHRvblRvZ2dsZUZpbHRlckRpcmVjdGl2ZSxcbiAgICAgICAgVGFibGVGaWx0ZXJEaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlRmlsdGVyU3RyaW5nQ29udGFpbnNEaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlV3JhcHBlckRpcmVjdGl2ZSxcbiAgICAgICAgR3JvdXBCeUxpc3RDb21wb25lbnQsXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgQ29sdW1uVG90YWxQaXBlLFxuICAgICAgICBUYWJsZUNvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgICAgR2VuZXJpY1RhYmxlQ29tcG9uZW50LFxuICAgICAgICBQYWdpbmF0b3JDb21wb25lbnQsXG4gICAgICAgIEN1c3RvbUNlbGxEaXJlY3RpdmUsXG4gICAgICAgIEdlbkNvbERpc3BsYXllckNvbXBvbmVudCxcbiAgICAgICAgR2VuRmlsdGVyRGlzcGxheWVyQ29tcG9uZW50LFxuICAgICAgICBEYXRlRmlsdGVyQ29tcG9uZW50LFxuICAgICAgICBGaWx0ZXJDb21wb25lbnQsXG4gICAgICAgIE11bHRpU29ydERpcmVjdGl2ZSxcbiAgICAgICAgTnVtYmVyRmlsdGVyQ29tcG9uZW50LFxuICAgICAgICBDb2x1bW5CdWlsZGVyQ29tcG9uZW50LFxuICAgICAgICBBcnJheUNvbHVtbkNvbXBvbmVudCxcbiAgICAgICAgTGlua0NvbHVtbkNvbXBvbmVudCxcbiAgICAgICAgSGVhZGVyTWVudUNvbXBvbmVudCxcbiAgICAgICAgS2V5RGlzcGxheVBpcGUsXG4gICAgICAgIEZvcm1hdEZpbHRlclZhbHVlUGlwZSxcbiAgICAgICAgRm9ybWF0RmlsdGVyVHlwZVBpcGUsXG4gICAgICAgIFJlc2l6ZUNvbHVtbkRpcmVjdGl2ZSxcbiAgICAgICAgSW5GaWx0ZXJDb21wb25lbnQsXG4gICAgICAgIEluaXRpYWxpemF0aW9uQ29tcG9uZW50LFxuICAgICAgICBJbkxpc3RGaWx0ZXJDb21wb25lbnQsXG4gICAgICAgIFNvcnRNZW51Q29tcG9uZW50LFxuICAgICAgICBGaWx0ZXJDaGlwc0NvbXBvbmVudCxcbiAgICAgICAgTWF0U2xpZGVUb2dnbGVUYkZpbHRlckRpcmVjdGl2ZSxcbiAgICAgICAgTWF0UmFkaW9CdXR0b25UYkZpbHRlckRpcmVjdGl2ZSxcbiAgICAgICAgTWF0T3B0aW9uVGJGaWx0ZXJEaXJlY3RpdmUsXG4gICAgICAgIE1hdENoZWNrYm94VGJGaWx0ZXJEaXJlY3RpdmUsXG4gICAgICAgIE1hdEJ1dHRvblRvZ2dsZUZpbHRlckRpcmVjdGl2ZSxcbiAgICAgICAgVGFibGVGaWx0ZXJEaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlRmlsdGVyU3RyaW5nQ29udGFpbnNEaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlV3JhcHBlckRpcmVjdGl2ZSxcbiAgICAgICAgR3JvdXBCeUxpc3RDb21wb25lbnQsXG4gICAgXSxcbiAgICBwcm92aWRlcnMgOiBbXG4gICAgICBTcGFjZUNhc2VQaXBlLFxuICAgICAgRGF0ZVBpcGUsXG4gICAgICBDdXJyZW5jeVBpcGUsXG4gICAgICBQaG9uZU51bWJlclBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQnVpbGRlck1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogVGFibGVCdWlsZGVyQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxUYWJsZUJ1aWxkZXJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFRhYmxlQnVpbGRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBNdWx0aVNvcnREaXJlY3RpdmUsXG4gICAgICAgIHsgcHJvdmlkZSA6IFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuICwgdXNlVmFsdWU6IGNvbmZpZ31cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -46,7 +46,8 @@ MatSlideToggleGroupDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0
|
|
|
46
46
|
MatSlideToggleGroupDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.1", type: MatSlideToggleGroupDirective, selector: "[opMatSlideToggleGroup]", inputs: { allowMultiple: "allowMultiple" }, outputs: { valueEmitter: "valueEmitter" }, queries: [{ propertyName: "toggles", predicate: MatSlideToggle }], ngImport: i0 });
|
|
47
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: MatSlideToggleGroupDirective, decorators: [{
|
|
48
48
|
type: Directive,
|
|
49
|
-
args: [{ selector: '[opMatSlideToggleGroup]',
|
|
49
|
+
args: [{ selector: '[opMatSlideToggleGroup]',
|
|
50
|
+
}]
|
|
50
51
|
}], propDecorators: { allowMultiple: [{
|
|
51
52
|
type: Input
|
|
52
53
|
}], toggles: [{
|
|
@@ -55,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
|
|
|
55
56
|
}], valueEmitter: [{
|
|
56
57
|
type: Output
|
|
57
58
|
}] } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXRvZ2dsZS1ncm91cC1kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdXRpbGl0aWVzL2RpcmVjdGl2ZXMvbWF0LXRvZ2dsZS1ncm91cC1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLEtBQUssRUFBYyxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTWxGLE1BQU0sT0FBTyw0QkFBNEI7SUFIM0M7UUFJVyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQVF2QixXQUFNLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7S0EwQ2hEO0lBL0NDLElBQXFDLE9BQU8sQ0FBQyxHQUE4QjtRQUN6RSxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBSUQsSUFBYyxZQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUUsU0FBUyxDQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBR0QsWUFBWTtRQUNWLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFFLENBQUMsSUFBSSxFQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3BELElBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQzthQUM1RDtZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQTtZQUM1QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsRUFBRSxFQUEyQixDQUFDLENBQUM7UUFDaEMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBRSxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUUsQ0FBQyxDQUFDO1FBRTNFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV2QyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQ3ZCLElBQUksQ0FBRSxDQUFDLElBQUksRUFBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUssQ0FBQztZQUNwQyxNQUFNLE1BQU0sR0FBRyxFQUFDLEdBQUcsSUFBSSxFQUFDLENBQUMsVUFBVSxDQUFDLEVBQUMsR0FBRyxDQUFDLE9BQU8sRUFBQyxDQUFDO1lBQ2xELElBQUcsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO3FCQUNkLE1BQU0sQ0FBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUMvQyxPQUFPLENBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMvRCxDQUFDLENBQUMsQ0FBQzthQUNOO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxFQUFDLFVBQVUsQ0FBQyxFQUNiLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FDdEIsQ0FBQztJQUVKLENBQUM7O3lIQWpEWSw0QkFBNEI7NkdBQTVCLDRCQUE0Qiw4S0FJeEIsY0FBYzsyRkFKbEIsNEJBQTRCO2tCQUgxQyxTQUFTO21CQUNSLEVBQUUsUUFBUSxFQUFFLHlCQUF5QjtpQkFDdEM7OEJBRVUsYUFBYTtzQkFBckIsS0FBSztnQkFHK0IsT0FBTztzQkFBM0MsZUFBZTt1QkFBQyxjQUFjO2dCQU9qQixZQUFZO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGVcIjtcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBzY2FuLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCI7XG5cblxuQERpcmVjdGl2ZShcbiAgeyBzZWxlY3RvcjogJ1tvcE1hdFNsaWRlVG9nZ2xlR3JvdXBdJyAsXG59XG4pIGV4cG9ydCBjbGFzcyBNYXRTbGlkZVRvZ2dsZUdyb3VwRGlyZWN0aXZlICB7XG4gIEBJbnB1dCgpIGFsbG93TXVsdGlwbGUgPSBmYWxzZTtcblxuICBfdG9nZ2xlcyE6IFF1ZXJ5TGlzdDxNYXRTbGlkZVRvZ2dsZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0U2xpZGVUb2dnbGUpIHNldCB0b2dnbGVzKHZhbDogUXVlcnlMaXN0PE1hdFNsaWRlVG9nZ2xlPikge1xuICAgIHRoaXMuX3RvZ2dsZXMgPSB2YWw7XG4gICAgdGhpcy5fcmVhZHkubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWR5ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG5cbiAgQE91dHB1dCgpIGdldCB2YWx1ZUVtaXR0ZXIoKSA6IE9ic2VydmFibGU8e1trZXk6c3RyaW5nXTogYm9vbGVhbn0+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZHkucGlwZSggc3dpdGNoTWFwKCBfID0+IHRoaXMuZ2V0T2JzKCkpKTtcbiAgfVxuXG5cbiAgZ2V0SW5pdFZhbHVlKCkge1xuICAgIGNvbnN0IHN0YXJ0VmFsdWUgPSB0aGlzLl90b2dnbGVzLnJlZHVjZSggKHByZXYsY3VyKSA9PiB7XG4gICAgICBpZighY3VyLm5hbWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0b2dnbGUgbXVzdCBoYXZlIHRoZSBuYW1lIGF0dHJpYnV0ZSBzZXQnKTtcbiAgICAgIH1cbiAgICAgIHByZXZbY3VyLm5hbWVdID0gY3VyLmNoZWNrZWRcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9IGFzIHtbazpzdHJpbmddOiBib29sZWFufSk7XG4gICAgcmV0dXJuIHN0YXJ0VmFsdWU7XG4gIH1cblxuICBnZXRPYnMoKSB7XG4gICAgdmFyIHRvZ2dsZUNoYW5nZXMgPSBtZXJnZSguLi50aGlzLl90b2dnbGVzLm1hcCggdG9nZ2xlID0+IHRvZ2dsZS5jaGFuZ2UgKSk7XG5cbiAgICBjb25zdCBzdGFydFZhbHVlID0gdGhpcy5nZXRJbml0VmFsdWUoKTtcblxuICAgIHJldHVybiB0b2dnbGVDaGFuZ2VzLnBpcGUoXG4gICAgICBzY2FuKCAocHJldixjdXIpID0+IHtcbiAgICAgICAgY29uc3QgdG9nZ2xlTmFtZSA9IGN1ci5zb3VyY2UubmFtZSE7XG4gICAgICAgIGNvbnN0IG5ld1ZhbCA9IHsuLi5wcmV2LFt0b2dnbGVOYW1lXTpjdXIuY2hlY2tlZH07XG4gICAgICAgIGlmKGN1ci5jaGVja2VkICYmICF0aGlzLmFsbG93TXVsdGlwbGUpIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhwcmV2KVxuICAgICAgICAgICAgLmZpbHRlcigga2V5ID0+IGtleSAhPT0gdG9nZ2xlTmFtZSAmJiBwcmV2W2tleV0pXG4gICAgICAgICAgICAuZm9yRWFjaCgga2V5ID0+IHtcbiAgICAgICAgICAgICAgbmV3VmFsW2tleV0gPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlcy5maW5kKCB0b2dnbGUgPT4gdG9nZ2xlLm5hbWUgPT09IGtleSkhLnRvZ2dsZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1ZhbDtcbiAgICAgIH0sc3RhcnRWYWx1ZSksXG4gICAgICBzdGFydFdpdGgoc3RhcnRWYWx1ZSksXG4gICAgKTtcblxuICB9XG5cbn1cbiJdfQ==
|