@dereekb/dbx-web 12.2.1 → 12.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/table/lib/table.component.mjs +4 -14
- package/esm2022/table/lib/table.item.action.component.mjs +4 -4
- package/esm2022/table/lib/table.item.cell.component.mjs +4 -5
- package/esm2022/table/lib/table.item.directive.mjs +2 -4
- package/esm2022/table/lib/table.item.header.component.mjs +3 -3
- package/esm2022/table/lib/table.reader.mjs +2 -1
- package/fesm2022/dereekb-dbx-web-table.mjs +10 -19
- package/fesm2022/dereekb-dbx-web-table.mjs.map +1 -1
- package/package.json +1 -1
- package/table/lib/table.component.d.ts +1 -6
- package/table/lib/table.item.cell.component.d.ts +1 -1
- package/table/lib/table.item.directive.d.ts +1 -1
- package/table/lib/table.reader.d.ts +8 -12
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, inject, computed, input, viewChild
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject, computed, input, viewChild } from '@angular/core';
|
|
2
2
|
import { toSignal } from '@angular/core/rxjs-interop';
|
|
3
3
|
import { DbxTableStore } from './table.store';
|
|
4
4
|
import { loadingStateContext, mapLoadingStateValueWithOperator, valueFromFinishedLoadingState } from '@dereekb/rxjs';
|
|
@@ -37,10 +37,6 @@ export function isDbxTableViewItemElement(element) {
|
|
|
37
37
|
export class DbxTableViewComponent {
|
|
38
38
|
tableStore = inject((DbxTableStore));
|
|
39
39
|
table = viewChild.required(MatTable);
|
|
40
|
-
/**
|
|
41
|
-
* TEMPORARY: the cdk seems to not implement change detection properly
|
|
42
|
-
*/
|
|
43
|
-
cdRef = inject(ChangeDetectorRef);
|
|
44
40
|
DEFAULT_TRACK_BY_FUNCTION = (index) => {
|
|
45
41
|
return index;
|
|
46
42
|
};
|
|
@@ -129,12 +125,6 @@ export class DbxTableViewComponent {
|
|
|
129
125
|
dataLoadingContextSignal = toSignal(this.dataLoadingContext.state$);
|
|
130
126
|
viewDelegateSignal = toSignal(this.tableStore.viewDelegate$);
|
|
131
127
|
elementsSignal = toSignal(this.elements$, { initialValue: [] });
|
|
132
|
-
_elementEffect = effect(() => {
|
|
133
|
-
const table = this.table();
|
|
134
|
-
table.dataSource = this.elementsSignal(); // signal to render the rows
|
|
135
|
-
table.renderRows();
|
|
136
|
-
this.cdRef.detectChanges(); // detect changes
|
|
137
|
-
});
|
|
138
128
|
onScrollDown() {
|
|
139
129
|
this.tableStore.loadMore();
|
|
140
130
|
}
|
|
@@ -157,7 +147,7 @@ export class DbxTableViewComponent {
|
|
|
157
147
|
return viewDelegate?.fullSummaryRow != null;
|
|
158
148
|
});
|
|
159
149
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
160
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxTableViewComponent, isStandalone: true, selector: "dbx-table-view", inputs: { scrollDistance: { classPropertyName: "scrollDistance", publicName: "scrollDistance", isSignal: true, isRequired: false, transformFunction: null }, throttleScroll: { classPropertyName: "throttleScroll", publicName: "throttleScroll", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true, isSignal: true }], ngImport: i0, template: "<dbx-loading [context]=\"context\">\n <dbx-loading class=\"dbx-table-view-loading\" [linear]=\"true\" [context]=\"dataLoadingContext\"></dbx-loading>\n <section class=\"dbx-table-view\" dbx-column-size #columnSize=\"dbxColumnSize\" infinite-scroll [infiniteScrollDistance]=\"scrollDistance()\" [infiniteScrollThrottle]=\"throttleScroll()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\">\n <table class=\"dbx-table-view-table\" mat-table
|
|
150
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxTableViewComponent, isStandalone: true, selector: "dbx-table-view", inputs: { scrollDistance: { classPropertyName: "scrollDistance", publicName: "scrollDistance", isSignal: true, isRequired: false, transformFunction: null }, throttleScroll: { classPropertyName: "throttleScroll", publicName: "throttleScroll", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true, isSignal: true }], ngImport: i0, template: "<dbx-loading [context]=\"context\">\n <dbx-loading class=\"dbx-table-view-loading\" [linear]=\"true\" [context]=\"dataLoadingContext\"></dbx-loading>\n <section class=\"dbx-table-view\" dbx-column-size #columnSize=\"dbxColumnSize\" infinite-scroll [infiniteScrollDistance]=\"scrollDistance()\" [infiniteScrollThrottle]=\"throttleScroll()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\">\n <table class=\"dbx-table-view-table\" mat-table [dataSource]=\"elementsSignal()\" [trackBy]=\"trackElementByFunctionSignal()\" multiTemplateDataRows>\n <!-- Groups -->\n <!-- Group Header column -->\n <ng-container matColumnDef=\"groupHeaderColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"columnSize.visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-header [group]=\"element.group\"></dbx-table-group-header>\n </td>\n </ng-container>\n\n <!-- Group Footer column -->\n <ng-container matColumnDef=\"groupFooterColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"columnSize.visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-footer [group]=\"element.group\"></dbx-table-group-footer>\n </td>\n </ng-container>\n\n <!-- Items -->\n <!-- Header/Item column -->\n <ng-container [matColumnDef]=\"itemsColumnName\" [sticky]=\"true\">\n <th dbx-column-size-column=\"head\" mat-header-cell *matHeaderCellDef>\n <dbx-table-input-cell></dbx-table-input-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-header [item]=\"element.item\"></dbx-table-item-header>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-start-cell></dbx-table-summary-start-cell>\n </td>\n </ng-container>\n\n <!-- Column Definitions -->\n @for (column of innerColumnsSignal(); track column.columnName) {\n <ng-container [matColumnDef]=\"column.columnName\" [sticky]=\"false\">\n <th [dbx-column-size-column]=\"$index\" mat-header-cell *matHeaderCellDef>\n <dbx-table-column-header [column]=\"column\"></dbx-table-column-header>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-cell [item]=\"element.item\" [column]=\"column\"></dbx-table-item-cell>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-column-footer [column]=\"column\"></dbx-table-column-footer>\n </td>\n </ng-container>\n }\n\n <!-- Tail/Action column -->\n <ng-container [matColumnDef]=\"actionsColumnName\" [stickyEnd]=\"true\">\n <th dbx-column-size-column=\"tail\" mat-header-cell *matHeaderCellDef>\n <dbx-table-action-cell></dbx-table-action-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-action [item]=\"element.item\"></dbx-table-item-action>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-end-cell></dbx-table-summary-end-cell>\n </td>\n </ng-container>\n\n <!-- Table View -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n\n <tr mat-row *matRowDef=\"let row; columns: ['groupHeaderColumn']; when: showGroupHeaderRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumnsSignal(); when: showItemRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['groupFooterColumn']; when: showGroupFooterRow\"></tr>\n\n <tr [ngClass]=\"{ 'dbx-hide': !showFooterRowSignal() }\" mat-footer-row *matFooterRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n </table>\n </section>\n <!-- Full summary row -->\n @if (showFullSummaryRowSignal()) {\n <div class=\"mat-mdc-table dbx-table-view-full-summary-row-container\">\n <div class=\"mdc-data-table__cell mat-mdc-row\">\n <dbx-table-full-summary-row></dbx-table-full-summary-row>\n </div>\n </div>\n }\n</dbx-loading>\n", dependencies: [{ kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: DbxTableInputCellComponent, selector: "dbx-table-input-cell" }, { kind: "component", type: DbxTableItemHeaderComponent, selector: "dbx-table-item-header" }, { kind: "component", type: DbxTableItemCellComponent, selector: "dbx-table-item-cell", inputs: ["column"] }, { kind: "component", type: DbxTableItemActionComponent, selector: "dbx-table-item-action" }, { kind: "component", type: DbxTableActionCellComponent, selector: "dbx-table-action-cell" }, { kind: "component", type: DbxTableColumnHeaderComponent, selector: "dbx-table-column-header" }, { kind: "component", type: DbxTableColumnFooterComponent, selector: "dbx-table-column-footer" }, { kind: "component", type: DbxTableSummaryStartCellComponent, selector: "dbx-table-summary-start-cell" }, { kind: "component", type: DbxTableSummaryEndCellComponent, selector: "dbx-table-summary-end-cell" }, { kind: "component", type: DbxTableGroupHeaderComponent, selector: "dbx-table-group-header" }, { kind: "component", type: DbxTableGroupFooterComponent, selector: "dbx-table-group-footer" }, { kind: "component", type: DbxTableFullSummaryRowComponent, selector: "dbx-table-full-summary-row" }, { kind: "directive", type: DbxColumnSizeDirective, selector: "[dbx-column-size]", exportAs: ["dbxColumnSize"] }, { kind: "directive", type: DbxColumnSizeColumnDirective, selector: "[dbx-column-size-column]", inputs: ["dbx-column-size-column"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
161
151
|
}
|
|
162
152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableViewComponent, decorators: [{
|
|
163
153
|
type: Component,
|
|
@@ -180,6 +170,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
180
170
|
DbxTableFullSummaryRowComponent,
|
|
181
171
|
DbxColumnSizeDirective,
|
|
182
172
|
DbxColumnSizeColumnDirective
|
|
183
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-loading [context]=\"context\">\n <dbx-loading class=\"dbx-table-view-loading\" [linear]=\"true\" [context]=\"dataLoadingContext\"></dbx-loading>\n <section class=\"dbx-table-view\" dbx-column-size #columnSize=\"dbxColumnSize\" infinite-scroll [infiniteScrollDistance]=\"scrollDistance()\" [infiniteScrollThrottle]=\"throttleScroll()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\">\n <table class=\"dbx-table-view-table\" mat-table
|
|
173
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-loading [context]=\"context\">\n <dbx-loading class=\"dbx-table-view-loading\" [linear]=\"true\" [context]=\"dataLoadingContext\"></dbx-loading>\n <section class=\"dbx-table-view\" dbx-column-size #columnSize=\"dbxColumnSize\" infinite-scroll [infiniteScrollDistance]=\"scrollDistance()\" [infiniteScrollThrottle]=\"throttleScroll()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\">\n <table class=\"dbx-table-view-table\" mat-table [dataSource]=\"elementsSignal()\" [trackBy]=\"trackElementByFunctionSignal()\" multiTemplateDataRows>\n <!-- Groups -->\n <!-- Group Header column -->\n <ng-container matColumnDef=\"groupHeaderColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"columnSize.visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-header [group]=\"element.group\"></dbx-table-group-header>\n </td>\n </ng-container>\n\n <!-- Group Footer column -->\n <ng-container matColumnDef=\"groupFooterColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"columnSize.visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-footer [group]=\"element.group\"></dbx-table-group-footer>\n </td>\n </ng-container>\n\n <!-- Items -->\n <!-- Header/Item column -->\n <ng-container [matColumnDef]=\"itemsColumnName\" [sticky]=\"true\">\n <th dbx-column-size-column=\"head\" mat-header-cell *matHeaderCellDef>\n <dbx-table-input-cell></dbx-table-input-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-header [item]=\"element.item\"></dbx-table-item-header>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-start-cell></dbx-table-summary-start-cell>\n </td>\n </ng-container>\n\n <!-- Column Definitions -->\n @for (column of innerColumnsSignal(); track column.columnName) {\n <ng-container [matColumnDef]=\"column.columnName\" [sticky]=\"false\">\n <th [dbx-column-size-column]=\"$index\" mat-header-cell *matHeaderCellDef>\n <dbx-table-column-header [column]=\"column\"></dbx-table-column-header>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-cell [item]=\"element.item\" [column]=\"column\"></dbx-table-item-cell>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-column-footer [column]=\"column\"></dbx-table-column-footer>\n </td>\n </ng-container>\n }\n\n <!-- Tail/Action column -->\n <ng-container [matColumnDef]=\"actionsColumnName\" [stickyEnd]=\"true\">\n <th dbx-column-size-column=\"tail\" mat-header-cell *matHeaderCellDef>\n <dbx-table-action-cell></dbx-table-action-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-action [item]=\"element.item\"></dbx-table-item-action>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-end-cell></dbx-table-summary-end-cell>\n </td>\n </ng-container>\n\n <!-- Table View -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n\n <tr mat-row *matRowDef=\"let row; columns: ['groupHeaderColumn']; when: showGroupHeaderRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumnsSignal(); when: showItemRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['groupFooterColumn']; when: showGroupFooterRow\"></tr>\n\n <tr [ngClass]=\"{ 'dbx-hide': !showFooterRowSignal() }\" mat-footer-row *matFooterRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n </table>\n </section>\n <!-- Full summary row -->\n @if (showFullSummaryRowSignal()) {\n <div class=\"mat-mdc-table dbx-table-view-full-summary-row-container\">\n <div class=\"mdc-data-table__cell mat-mdc-row\">\n <dbx-table-full-summary-row></dbx-table-full-summary-row>\n </div>\n </div>\n }\n</dbx-loading>\n" }]
|
|
184
174
|
}] });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi90YWJsZS9zcmMvbGliL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC13ZWIvdGFibGUvc3JjL2xpYi90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFtQixNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNKLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBZ0IsbUJBQW1CLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hG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Y0FBYzt3QkFDZCwwQkFBMEI7d0JBQzFCLDJCQUEyQjt3QkFDM0IseUJBQXlCO3dCQUN6QiwyQkFBMkI7d0JBQzNCLDJCQUEyQjt3QkFDM0IsNkJBQTZCO3dCQUM3Qiw2QkFBNkI7d0JBQzdCLGlDQUFpQzt3QkFDakMsK0JBQStCO3dCQUMvQiw0QkFBNEI7d0JBQzVCLDRCQUE0Qjt3QkFDNUIsK0JBQStCO3dCQUMvQixzQkFBc0I7d0JBQ3RCLDRCQUE0QjtxQkFDN0IsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFRyYWNrQnlGdW5jdGlvbiwgaW5qZWN0LCBjb21wdXRlZCwgaW5wdXQsIFNpZ25hbCwgdmlld0NoaWxkLCBlZmZlY3QsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IERieFRhYmxlU3RvcmUgfSBmcm9tICcuL3RhYmxlLnN0b3JlJztcbmltcG9ydCB7IExvYWRpbmdTdGF0ZSwgbG9hZGluZ1N0YXRlQ29udGV4dCwgbWFwTG9hZGluZ1N0YXRlVmFsdWVXaXRoT3BlcmF0b3IsIHZhbHVlRnJvbUZpbmlzaGVkTG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGJ4TG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICduZ3gtaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IE1hdFRhYmxlLCBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IERieFRhYmxlSW5wdXRDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jZWxsLmlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhUYWJsZVN1bW1hcnlFbmRDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jZWxsLnN1bW1hcnllbmQuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlU3VtbWFyeVN0YXJ0Q2VsbENvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuY2VsbC5zdW1tYXJ5c3RhcnQuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlQ29sdW1uRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jb2x1bW4uZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhUYWJsZUl0ZW1DZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5pdGVtLmNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlSXRlbUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuaXRlbS5oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlSXRlbUFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuaXRlbS5hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlQWN0aW9uQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuY2VsbC5hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlQ29sdW1uSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jb2x1bW4uaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhUYWJsZUl0ZW1Hcm91cCwgRGVmYXVsdERieFRhYmxlSXRlbUdyb3VwIH0gZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQgeyBEYnhUYWJsZUdyb3VwSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5ncm91cC5oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlR3JvdXBGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmdyb3VwLmZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgcHVzaEFycmF5SXRlbXNJbnRvQXJyYXkgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGJ4VGFibGVGdWxsU3VtbWFyeVJvd0NvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuZnVsbHN1bW1hcnlyb3cuY29tcG9uZW50JztcbmltcG9ydCB7IERieENvbHVtblNpemVEaXJlY3RpdmUsIERieENvbHVtblNpemVDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuL3RhYmxlLmNvbHVtbi5zaXplLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBEQlhfVEFCTEVfSVRFTVNfQ09MVU1OX05BTUUgPSAnX2l0ZW1zJztcbmV4cG9ydCBjb25zdCBEQlhfVEFCTEVfQUNUSU9OU19DT0xVTU5fTkFNRSA9ICdfYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4VGFibGVWaWV3R3JvdXBFbGVtZW50PFQsIEc+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ2dyb3VwJztcbiAgcmVhZG9ubHkgbG9jYXRpb246ICdoZWFkZXInIHwgJ2Zvb3Rlcic7XG4gIHJlYWRvbmx5IGdyb3VwOiBEYnhUYWJsZUl0ZW1Hcm91cDxULCBHPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhUYWJsZVZpZXdJdGVtRWxlbWVudDxULCBHPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdpdGVtJztcbiAgcmVhZG9ubHkgaXRlbTogVDtcbn1cblxuZXhwb3J0IHR5cGUgRGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPiA9IERieFRhYmxlVmlld0dyb3VwRWxlbWVudDxULCBHPiB8IERieFRhYmxlVmlld0l0ZW1FbGVtZW50PFQsIEc+O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNEYnhUYWJsZVZpZXdHcm91cEVsZW1lbnQ8VCwgRz4oZWxlbWVudDogRGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPik6IGVsZW1lbnQgaXMgRGJ4VGFibGVWaWV3R3JvdXBFbGVtZW50PFQsIEc+IHtcbiAgcmV0dXJuIGVsZW1lbnQudHlwZSA9PT0gJ2dyb3VwJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGJ4VGFibGVWaWV3SXRlbUVsZW1lbnQ8VCwgRz4oZWxlbWVudDogRGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPik6IGVsZW1lbnQgaXMgRGJ4VGFibGVWaWV3SXRlbUVsZW1lbnQ8VCwgRz4ge1xuICByZXR1cm4gZWxlbWVudC50eXBlID09PSAnaXRlbSc7XG59XG5cbi8qKlxuICogQSB0YWJsZSB3aXRoIGZpeGVkIGNvbnRlbnRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXRhYmxlLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbXG4gICAgRGJ4TG9hZGluZ0NvbXBvbmVudCxcbiAgICBOZ0NsYXNzLFxuICAgIEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIERieFRhYmxlSW5wdXRDZWxsQ29tcG9uZW50LFxuICAgIERieFRhYmxlSXRlbUhlYWRlckNvbXBvbmVudCxcbiAgICBEYnhUYWJsZUl0ZW1DZWxsQ29tcG9uZW50LFxuICAgIERieFRhYmxlSXRlbUFjdGlvbkNvbXBvbmVudCxcbiAgICBEYnhUYWJsZUFjdGlvbkNlbGxDb21wb25lbnQsXG4gICAgRGJ4VGFibGVDb2x1bW5IZWFkZXJDb21wb25lbnQsXG4gICAgRGJ4VGFibGVDb2x1bW5Gb290ZXJDb21wb25lbnQsXG4gICAgRGJ4VGFibGVTdW1tYXJ5U3RhcnRDZWxsQ29tcG9uZW50LFxuICAgIERieFRhYmxlU3VtbWFyeUVuZENlbGxDb21wb25lbnQsXG4gICAgRGJ4VGFibGVHcm91cEhlYWRlckNvbXBvbmVudCxcbiAgICBEYnhUYWJsZUdyb3VwRm9vdGVyQ29tcG9uZW50LFxuICAgIERieFRhYmxlRnVsbFN1bW1hcnlSb3dDb21wb25lbnQsXG4gICAgRGJ4Q29sdW1uU2l6ZURpcmVjdGl2ZSxcbiAgICBEYnhDb2x1bW5TaXplQ29sdW1uRGlyZWN0aXZlXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieFRhYmxlVmlld0NvbXBvbmVudDxJLCBDLCBULCBHID0gdW5rbm93bj4ge1xuICByZWFkb25seSB0YWJsZVN0b3JlID0gaW5qZWN0KERieFRhYmxlU3RvcmU8SSwgQywgVCwgRz4pO1xuICByZWFkb25seSB0YWJsZSA9IHZpZXdDaGlsZC5yZXF1aXJlZDxNYXRUYWJsZTxEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+Pj4oTWF0VGFibGUpO1xuXG4gIC8qKlxuICAgKiBURU1QT1JBUlk6IHRoZSBjZGsgc2VlbXMgdG8gbm90IGltcGxlbWVudCBjaGFuZ2UgZGV0ZWN0aW9uIHByb3Blcmx5XG4gICAqL1xuICByZWFkb25seSBjZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcmVhZG9ubHkgREVGQVVMVF9UUkFDS19CWV9GVU5DVElPTjogVHJhY2tCeUZ1bmN0aW9uPGFueT4gPSAoaW5kZXgpID0+IHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH07XG5cbiAgcmVhZG9ubHkgc2Nyb2xsRGlzdGFuY2UgPSBpbnB1dDxudW1iZXI+KDAuNSk7XG4gIHJlYWRvbmx5IHRocm90dGxlU2Nyb2xsID0gaW5wdXQ8bnVtYmVyPig1MCk7XG5cbiAgcmVhZG9ubHkgaXRlbXNDb2x1bW5OYW1lID0gREJYX1RBQkxFX0lURU1TX0NPTFVNTl9OQU1FO1xuICByZWFkb25seSBhY3Rpb25zQ29sdW1uTmFtZSA9IERCWF9UQUJMRV9BQ1RJT05TX0NPTFVNTl9OQU1FO1xuXG4gIHJlYWRvbmx5IGlubmVyQ29sdW1ucyQgPSB0aGlzLnRhYmxlU3RvcmUuY29sdW1ucyQ7XG4gIHJlYWRvbmx5IGlubmVyQ29sdW1uTmFtZXMkID0gdGhpcy5pbm5lckNvbHVtbnMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1hcCgoeSkgPT4geS5jb2x1bW5OYW1lKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbm5lckNvbHVtbnNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlubmVyQ29sdW1ucyQpO1xuICByZWFkb25seSBpbm5lckNvbHVtbk5hbWVzU2lnbmFsID0gdG9TaWduYWwodGhpcy5pbm5lckNvbHVtbk5hbWVzJCk7XG5cbiAgcmVhZG9ubHkgZWxlbWVudHNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERieFRhYmxlVmlld0VsZW1lbnQ8VCwgRz5bXT4+ID0gdGhpcy50YWJsZVN0b3JlLmdyb3Vwc1N0YXRlJC5waXBlKFxuICAgIG1hcExvYWRpbmdTdGF0ZVZhbHVlV2l0aE9wZXJhdG9yKFxuICAgICAgc3dpdGNoTWFwKChncm91cHMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVTdG9yZS52aWV3RGVsZWdhdGUkLnBpcGUoXG4gICAgICAgICAgbWFwKCh2aWV3RGVsZWdhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZ3JvdXBIZWFkZXI6IGlucHV0R3JvdXBIZWFkZXIsIGdyb3VwRm9vdGVyOiBpbnB1dEdyb3VwRm9vdGVyIH0gPSB2aWV3RGVsZWdhdGU7XG4gICAgICAgICAgICBjb25zdCBoYXNHcm91cEhlYWRlciA9IGlucHV0R3JvdXBIZWFkZXIgIT0gbnVsbCA/IChncm91cDogRGJ4VGFibGVJdGVtR3JvdXA8VCwgRz4pID0+IGlucHV0R3JvdXBIZWFkZXIoZ3JvdXApICE9IG51bGwgOiAoKSA9PiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0dyb3VwRm9vdGVyID0gaW5wdXRHcm91cEZvb3RlciAhPSBudWxsID8gKGdyb3VwOiBEYnhUYWJsZUl0ZW1Hcm91cDxULCBHPikgPT4gaW5wdXRHcm91cEZvb3Rlcihncm91cCkgIT0gbnVsbCA6ICgpID0+IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzXG4gICAgICAgICAgICAgIC5tYXAoKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBpdGVtcyB9ID0gZ3JvdXA7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtRWxlbWVudHM6IERieFRhYmxlVmlld0l0ZW1FbGVtZW50PFQsIEc+W10gPSBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnaXRlbScsXG4gICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzOiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+W107XG5cbiAgICAgICAgICAgICAgICBpZiAoKGdyb3VwIGFzIERlZmF1bHREYnhUYWJsZUl0ZW1Hcm91cDxULCBHPikuZGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBpdGVtRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlciA9IGhhc0dyb3VwSGVhZGVyKGdyb3VwKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZvb3RlciA9IGhhc0dyb3VwRm9vdGVyKGdyb3VwKTtcblxuICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbXTtcblxuICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZ3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnaGVhZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICBncm91cFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcHVzaEFycmF5SXRlbXNJbnRvQXJyYXkoZWxlbWVudHMsIGl0ZW1FbGVtZW50cyk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChmb290ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2dyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2Zvb3RlcicsXG4gICAgICAgICAgICAgICAgICAgICAgZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBlbGVtZW50cyQgPSB0aGlzLmVsZW1lbnRzU3RhdGUkLnBpcGUoXG4gICAgdmFsdWVGcm9tRmluaXNoZWRMb2FkaW5nU3RhdGUoKCkgPT4gW10pLFxuICAgIHRocm90dGxlVGltZSg1MCwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IHRydWUsIHRyYWlsaW5nOiB0cnVlIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1ucyQgPSB0aGlzLmlubmVyQ29sdW1uTmFtZXMkLnBpcGUoXG4gICAgbWFwKChjb2x1bW5OYW1lcykgPT4ge1xuICAgICAgcmV0dXJuIFt0aGlzLml0ZW1zQ29sdW1uTmFtZSwgLi4uY29sdW1uTmFtZXMsIHRoaXMuYWN0aW9uc0NvbHVtbk5hbWVdO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1uc1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IHRoaXMuaW5uZXJDb2x1bW5OYW1lc1NpZ25hbCgpIHx8IFtdO1xuICAgIHJldHVybiBbdGhpcy5pdGVtc0NvbHVtbk5hbWUsIC4uLmNvbHVtbk5hbWVzLCB0aGlzLmFjdGlvbnNDb2x1bW5OYW1lXTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdmlzaWJsZUNvbHVtbnNTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1uc1NpZ25hbCgpO1xuXG4gICAgLy8gVE9ETzogRXZlcnkgdGltZSB0aGUgdGFibGUgaXMgcmVuZGVyZWQvc2l6ZSBjaGFuZ2VzL2V0YyB3ZSBzaG91bGQgcmVjb21wdXRlIHdpZHRoIG9mIHRoZSBmaXJzdCBuIGNvbHVtbnMgdGhhdCBzcGFuIHRoZSB2aWV3cG9ydFxuICAgIC8vIGluIG9yZGVyIHRvIGNhbGN1bGF0ZSBhIGNvbHNwYW4gZm9yIHRoZSBncm91cCBoZWFkZXIvZm9vdGVyIHRoYXQgaXMgbm90IGdyZWF0ZXIgdGhhbiBzcGFuIG9mIHRoZSB0YWJsZSBmb3IgYSBnaXZlbiB2aWV3IHNpemVcbiAgICAvLyBJLkUuIGlmIHRoZSBzY3JlZW4gc2hyaW5rcyB0byBvbmx5IHNob3cgdGhlIGZpcnN0IDQgY29sdW1ucywgdGhlbiB0aGUgY29sc3BhbiBzaG91bGQgYmUgNC5cblxuICAgIC8vIGFzIGEgdGVtcG9yYXJ5IG1lYXN1cmUsIHdlIGp1c3Qgc2hvdyBoYWxmIHRoZSBjb2x1bW5zXG5cbiAgICByZXR1cm4gZGlzcGxheWVkQ29sdW1ucy5sZW5ndGggLyAyO1xuICB9KTtcblxuICByZWFkb25seSB0cmFja0J5RnVuY3Rpb24kOiBPYnNlcnZhYmxlPFRyYWNrQnlGdW5jdGlvbjxUPj4gPSB0aGlzLnRhYmxlU3RvcmUudmlld0RlbGVnYXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC50cmFja0J5ID8/IHRoaXMuREVGQVVMVF9UUkFDS19CWV9GVU5DVElPTiksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dFRyYWNrQnlGdW5jdGlvblNpZ25hbCA9IHRvU2lnbmFsKHRoaXMudHJhY2tCeUZ1bmN0aW9uJCwgeyBpbml0aWFsVmFsdWU6IHRoaXMuREVGQVVMVF9UUkFDS19CWV9GVU5DVElPTiB9KTtcbiAgcmVhZG9ubHkgdHJhY2tFbGVtZW50QnlGdW5jdGlvblNpZ25hbDogU2lnbmFsPFRyYWNrQnlGdW5jdGlvbjxEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+Pj4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdHJhY2tCeUZ1bmN0aW9uID0gdGhpcy5pbnB1dFRyYWNrQnlGdW5jdGlvblNpZ25hbCgpIGFzIFRyYWNrQnlGdW5jdGlvbjxUPjtcblxuICAgIGNvbnN0IGZuOiBUcmFja0J5RnVuY3Rpb248RGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPj4gPSAoaW5kZXg6IG51bWJlciwgZWxlbWVudDogRGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPikgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2l0ZW0nKSB7XG4gICAgICAgIHJldHVybiBgaV8ke3RyYWNrQnlGdW5jdGlvbihpbmRleCwgZWxlbWVudC5pdGVtIGFzIFQpfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYGdfJHtlbGVtZW50Lmdyb3VwLmdyb3VwSWR9YDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZuO1xuICB9KTtcblxuICByZWFkb25seSBjb250ZXh0ID0gbG9hZGluZ1N0YXRlQ29udGV4dCh7IG9iczogdGhpcy50YWJsZVN0b3JlLmRhdGFTdGF0ZSQgfSk7XG4gIHJlYWRvbmx5IGRhdGFMb2FkaW5nQ29udGV4dCA9IGxvYWRpbmdTdGF0ZUNvbnRleHQoeyBvYnM6IHRoaXMuZWxlbWVudHNTdGF0ZSQgfSk7XG5cbiAgcmVhZG9ubHkgY29udGV4dFNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuY29udGV4dC5zdGF0ZSQpO1xuICByZWFkb25seSBkYXRhTG9hZGluZ0NvbnRleHRTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmRhdGFMb2FkaW5nQ29udGV4dC5zdGF0ZSQpO1xuXG4gIHJlYWRvbmx5IHZpZXdEZWxlZ2F0ZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMudGFibGVTdG9yZS52aWV3RGVsZWdhdGUkKTtcbiAgcmVhZG9ubHkgZWxlbWVudHNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmVsZW1lbnRzJCwgeyBpbml0aWFsVmFsdWU6IFtdIH0pO1xuXG4gIHJlYWRvbmx5IF9lbGVtZW50RWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMudGFibGUoKTtcbiAgICB0YWJsZS5kYXRhU291cmNlID0gdGhpcy5lbGVtZW50c1NpZ25hbCgpOyAvLyBzaWduYWwgdG8gcmVuZGVyIHRoZSByb3dzXG4gICAgdGFibGUucmVuZGVyUm93cygpO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBkZXRlY3QgY2hhbmdlc1xuICB9KTtcblxuICBvblNjcm9sbERvd24oKTogdm9pZCB7XG4gICAgdGhpcy50YWJsZVN0b3JlLmxvYWRNb3JlKCk7XG4gIH1cblxuICBzaG93SXRlbVJvdyhfOiBudW1iZXIsIHJvdzogRGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiByb3cudHlwZSA9PT0gJ2l0ZW0nO1xuICB9XG5cbiAgc2hvd0dyb3VwSGVhZGVyUm93KF86IG51bWJlciwgcm93OiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdy50eXBlID09PSAnZ3JvdXAnICYmIHJvdy5sb2NhdGlvbiA9PT0gJ2hlYWRlcic7XG4gIH1cblxuICBzaG93R3JvdXBGb290ZXJSb3coXzogbnVtYmVyLCByb3c6IERieFRhYmxlVmlld0VsZW1lbnQ8VCwgRz4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09ICdncm91cCcgJiYgcm93LmxvY2F0aW9uID09PSAnZm9vdGVyJztcbiAgfVxuXG4gIHJlYWRvbmx5IHNob3dGb290ZXJSb3dTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgdmlld0RlbGVnYXRlID0gdGhpcy52aWV3RGVsZWdhdGVTaWduYWwoKTtcbiAgICBjb25zdCBzaG93Rm9vdGVyUm93ID0gdmlld0RlbGVnYXRlICYmICh2aWV3RGVsZWdhdGUuc3VtbWFyeVJvd0hlYWRlciAhPSBudWxsIHx8IHZpZXdEZWxlZ2F0ZS5jb2x1bW5Gb290ZXIgIT0gbnVsbCB8fCB2aWV3RGVsZWdhdGUuc3VtbWFyeVJvd0VuZCAhPSBudWxsKTtcbiAgICByZXR1cm4gc2hvd0Zvb3RlclJvdztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2hvd0Z1bGxTdW1tYXJ5Um93U2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdEZWxlZ2F0ZSA9IHRoaXMudmlld0RlbGVnYXRlU2lnbmFsKCk7XG4gICAgcmV0dXJuIHZpZXdEZWxlZ2F0ZT8uZnVsbFN1bW1hcnlSb3cgIT0gbnVsbDtcbiAgfSk7XG59XG4iLCI8ZGJ4LWxvYWRpbmcgW2NvbnRleHRdPVwiY29udGV4dFwiPlxuICA8ZGJ4LWxvYWRpbmcgY2xhc3M9XCJkYngtdGFibGUtdmlldy1sb2FkaW5nXCIgW2xpbmVhcl09XCJ0cnVlXCIgW2NvbnRleHRdPVwiZGF0YUxvYWRpbmdDb250ZXh0XCI+PC9kYngtbG9hZGluZz5cbiAgPHNlY3Rpb24gY2xhc3M9XCJkYngtdGFibGUtdmlld1wiIGRieC1jb2x1bW4tc2l6ZSAjY29sdW1uU2l6ZT1cImRieENvbHVtblNpemVcIiBpbmZpbml0ZS1zY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwic2Nyb2xsRGlzdGFuY2UoKVwiIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cInRocm90dGxlU2Nyb2xsKClcIiBbc2Nyb2xsV2luZG93XT1cImZhbHNlXCIgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsRG93bigpXCI+XG4gICAgPHRhYmxlIGNsYXNzPVwiZGJ4LXRhYmxlLXZpZXctdGFibGVcIiBtYXQtdGFibGUgcmVjeWNsZVJvd3MgW3RyYWNrQnldPVwidHJhY2tFbGVtZW50QnlGdW5jdGlvblNpZ25hbCgpXCIgbXVsdGlUZW1wbGF0ZURhdGFSb3dzPlxuICAgICAgPCEtLSBHcm91cHMgLS0+XG4gICAgICA8IS0tIEdyb3VwIEhlYWRlciBjb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImdyb3VwSGVhZGVyQ29sdW1uXCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtblNpemUudmlzaWJsZUNvbHVtbnNTaWduYWwoKVwiICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWdyb3VwLWhlYWRlciBbZ3JvdXBdPVwiZWxlbWVudC5ncm91cFwiPjwvZGJ4LXRhYmxlLWdyb3VwLWhlYWRlcj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEdyb3VwIEZvb3RlciBjb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImdyb3VwRm9vdGVyQ29sdW1uXCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtblNpemUudmlzaWJsZUNvbHVtbnNTaWduYWwoKVwiICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWdyb3VwLWZvb3RlciBbZ3JvdXBdPVwiZWxlbWVudC5ncm91cFwiPjwvZGJ4LXRhYmxlLWdyb3VwLWZvb3Rlcj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEl0ZW1zIC0tPlxuICAgICAgPCEtLSBIZWFkZXIvSXRlbSBjb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiaXRlbXNDb2x1bW5OYW1lXCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgIDx0aCBkYngtY29sdW1uLXNpemUtY29sdW1uPVwiaGVhZFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWlucHV0LWNlbGw+PC9kYngtdGFibGUtaW5wdXQtY2VsbD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWl0ZW0taGVhZGVyIFtpdGVtXT1cImVsZW1lbnQuaXRlbVwiPjwvZGJ4LXRhYmxlLWl0ZW0taGVhZGVyPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxuICAgICAgICAgIDxkYngtdGFibGUtc3VtbWFyeS1zdGFydC1jZWxsPjwvZGJ4LXRhYmxlLXN1bW1hcnktc3RhcnQtY2VsbD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIENvbHVtbiBEZWZpbml0aW9ucyAtLT5cbiAgICAgIEBmb3IgKGNvbHVtbiBvZiBpbm5lckNvbHVtbnNTaWduYWwoKTsgdHJhY2sgY29sdW1uLmNvbHVtbk5hbWUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5jb2x1bW5OYW1lXCIgW3N0aWNreV09XCJmYWxzZVwiPlxuICAgICAgICAgIDx0aCBbZGJ4LWNvbHVtbi1zaXplLWNvbHVtbl09XCIkaW5kZXhcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICA8ZGJ4LXRhYmxlLWNvbHVtbi1oZWFkZXIgW2NvbHVtbl09XCJjb2x1bW5cIj48L2RieC10YWJsZS1jb2x1bW4taGVhZGVyPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxkYngtdGFibGUtaXRlbS1jZWxsIFtpdGVtXT1cImVsZW1lbnQuaXRlbVwiIFtjb2x1bW5dPVwiY29sdW1uXCI+PC9kYngtdGFibGUtaXRlbS1jZWxsPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cbiAgICAgICAgICAgIDxkYngtdGFibGUtY29sdW1uLWZvb3RlciBbY29sdW1uXT1cImNvbHVtblwiPjwvZGJ4LXRhYmxlLWNvbHVtbi1mb290ZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gVGFpbC9BY3Rpb24gY29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImFjdGlvbnNDb2x1bW5OYW1lXCIgW3N0aWNreUVuZF09XCJ0cnVlXCI+XG4gICAgICAgIDx0aCBkYngtY29sdW1uLXNpemUtY29sdW1uPVwidGFpbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWFjdGlvbi1jZWxsPjwvZGJ4LXRhYmxlLWFjdGlvbi1jZWxsPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgIDxkYngtdGFibGUtaXRlbS1hY3Rpb24gW2l0ZW1dPVwiZWxlbWVudC5pdGVtXCI+PC9kYngtdGFibGUtaXRlbS1hY3Rpb24+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XG4gICAgICAgICAgPGRieC10YWJsZS1zdW1tYXJ5LWVuZC1jZWxsPjwvZGJ4LXRhYmxlLXN1bW1hcnktZW5kLWNlbGw+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBUYWJsZSBWaWV3IC0tPlxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zU2lnbmFsKCk7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG5cbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2dyb3VwSGVhZGVyQ29sdW1uJ107IHdoZW46IHNob3dHcm91cEhlYWRlclJvd1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1NpZ25hbCgpOyB3aGVuOiBzaG93SXRlbVJvd1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydncm91cEZvb3RlckNvbHVtbiddOyB3aGVuOiBzaG93R3JvdXBGb290ZXJSb3dcIj48L3RyPlxuXG4gICAgICA8dHIgW25nQ2xhc3NdPVwieyAnZGJ4LWhpZGUnOiAhc2hvd0Zvb3RlclJvd1NpZ25hbCgpIH1cIiBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1NpZ25hbCgpOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgIDwvdGFibGU+XG4gIDwvc2VjdGlvbj5cbiAgPCEtLSBGdWxsIHN1bW1hcnkgcm93IC0tPlxuICBAaWYgKHNob3dGdWxsU3VtbWFyeVJvd1NpZ25hbCgpKSB7XG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtdGFibGUgZGJ4LXRhYmxlLXZpZXctZnVsbC1zdW1tYXJ5LXJvdy1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZGMtZGF0YS10YWJsZV9fY2VsbCBtYXQtbWRjLXJvd1wiPlxuICAgICAgICA8ZGJ4LXRhYmxlLWZ1bGwtc3VtbWFyeS1yb3c+PC9kYngtdGFibGUtZnVsbC1zdW1tYXJ5LXJvdz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG48L2RieC1sb2FkaW5nPlxuIl19
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi90YWJsZS9zcmMvbGliL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC13ZWIvdGFibGUvc3JjL2xpYi90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFtQixNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFnQixtQkFBbUIsRUFBRSxnQ0FBZ0MsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSSxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHlCQUF5QixFQUFF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TyxhQUFhLENBQUM7SUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFFTSx3QkFBd0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ2hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLE9BQU8sWUFBWSxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7d0dBcEtRLHFCQUFxQjs0RkFBckIscUJBQXFCLG1hQUV5QyxRQUFRLGdFQ2hGbkYsMC9IQWdGQSw0Q0R4QkksbUJBQW1CLG1LQUNuQixPQUFPLG9GQUNQLHVCQUF1Qix5V0FDdkIsY0FBYywwN0NBQ2QsMEJBQTBCLGlFQUMxQiwyQkFBMkIsa0VBQzNCLHlCQUF5QixvRkFDekIsMkJBQTJCLGtFQUMzQiwyQkFBMkIsa0VBQzNCLDZCQUE2QixvRUFDN0IsNkJBQTZCLG9FQUM3QixpQ0FBaUMseUVBQ2pDLCtCQUErQix1RUFDL0IsNEJBQTRCLG1FQUM1Qiw0QkFBNEIsbUVBQzVCLCtCQUErQix1RUFDL0Isc0JBQXNCLDJGQUN0Qiw0QkFBNEI7OzRGQUtuQixxQkFBcUI7a0JBMUJqQyxTQUFTOytCQUNFLGdCQUFnQixXQUVqQjt3QkFDUCxtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsdUJBQXVCO3dCQUN2QixjQUFjO3dCQUNkLDBCQUEwQjt3QkFDMUIsMkJBQTJCO3dCQUMzQix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsMkJBQTJCO3dCQUMzQiw2QkFBNkI7d0JBQzdCLDZCQUE2Qjt3QkFDN0IsaUNBQWlDO3dCQUNqQywrQkFBK0I7d0JBQy9CLDRCQUE0Qjt3QkFDNUIsNEJBQTRCO3dCQUM1QiwrQkFBK0I7d0JBQy9CLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3FCQUM3QixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVHJhY2tCeUZ1bmN0aW9uLCBpbmplY3QsIGNvbXB1dGVkLCBpbnB1dCwgU2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRGJ4VGFibGVTdG9yZSB9IGZyb20gJy4vdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgTG9hZGluZ1N0YXRlLCBsb2FkaW5nU3RhdGVDb250ZXh0LCBtYXBMb2FkaW5nU3RhdGVWYWx1ZVdpdGhPcGVyYXRvciwgdmFsdWVGcm9tRmluaXNoZWRMb2FkaW5nU3RhdGUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5LCBtYXAsIE9ic2VydmFibGUsIHN3aXRjaE1hcCwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJ25neC1pbmZpbml0ZS1zY3JvbGwnO1xuaW1wb3J0IHsgTWF0VGFibGUsIE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgRGJ4VGFibGVJbnB1dENlbGxDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNlbGwuaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlU3VtbWFyeUVuZENlbGxDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNlbGwuc3VtbWFyeWVuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVTdW1tYXJ5U3RhcnRDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jZWxsLnN1bW1hcnlzdGFydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVDb2x1bW5Gb290ZXJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNvbHVtbi5mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlSXRlbUNlbGxDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLml0ZW0uY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVJdGVtSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5pdGVtLmhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVJdGVtQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5pdGVtLmFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVBY3Rpb25DZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jZWxsLmFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVDb2x1bW5IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNvbHVtbi5oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlSXRlbUdyb3VwLCBEZWZhdWx0RGJ4VGFibGVJdGVtR3JvdXAgfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IERieFRhYmxlR3JvdXBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmdyb3VwLmhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVHcm91cEZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuZ3JvdXAuZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBwdXNoQXJyYXlJdGVtc0ludG9BcnJheSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYnhUYWJsZUZ1bGxTdW1tYXJ5Um93Q29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5mdWxsc3VtbWFyeXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4Q29sdW1uU2l6ZURpcmVjdGl2ZSwgRGJ4Q29sdW1uU2l6ZUNvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4vdGFibGUuY29sdW1uLnNpemUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IERCWF9UQUJMRV9JVEVNU19DT0xVTU5fTkFNRSA9ICdfaXRlbXMnO1xuZXhwb3J0IGNvbnN0IERCWF9UQUJMRV9BQ1RJT05TX0NPTFVNTl9OQU1FID0gJ19hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhUYWJsZVZpZXdHcm91cEVsZW1lbnQ8VCwgRz4ge1xuICByZWFkb25seSB0eXBlOiAnZ3JvdXAnO1xuICByZWFkb25seSBsb2NhdGlvbjogJ2hlYWRlcicgfCAnZm9vdGVyJztcbiAgcmVhZG9ubHkgZ3JvdXA6IERieFRhYmxlSXRlbUdyb3VwPFQsIEc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieFRhYmxlVmlld0l0ZW1FbGVtZW50PFQsIEc+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ2l0ZW0nO1xuICByZWFkb25seSBpdGVtOiBUO1xufVxuXG5leHBvcnQgdHlwZSBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+ID0gRGJ4VGFibGVWaWV3R3JvdXBFbGVtZW50PFQsIEc+IHwgRGJ4VGFibGVWaWV3SXRlbUVsZW1lbnQ8VCwgRz47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RieFRhYmxlVmlld0dyb3VwRWxlbWVudDxULCBHPihlbGVtZW50OiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+KTogZWxlbWVudCBpcyBEYnhUYWJsZVZpZXdHcm91cEVsZW1lbnQ8VCwgRz4ge1xuICByZXR1cm4gZWxlbWVudC50eXBlID09PSAnZ3JvdXAnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYnhUYWJsZVZpZXdJdGVtRWxlbWVudDxULCBHPihlbGVtZW50OiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+KTogZWxlbWVudCBpcyBEYnhUYWJsZVZpZXdJdGVtRWxlbWVudDxULCBHPiB7XG4gIHJldHVybiBlbGVtZW50LnR5cGUgPT09ICdpdGVtJztcbn1cblxuLyoqXG4gKiBBIHRhYmxlIHdpdGggZml4ZWQgY29udGVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtdGFibGUtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtcbiAgICBEYnhMb2FkaW5nQ29tcG9uZW50LFxuICAgIE5nQ2xhc3MsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgRGJ4VGFibGVJbnB1dENlbGxDb21wb25lbnQsXG4gICAgRGJ4VGFibGVJdGVtSGVhZGVyQ29tcG9uZW50LFxuICAgIERieFRhYmxlSXRlbUNlbGxDb21wb25lbnQsXG4gICAgRGJ4VGFibGVJdGVtQWN0aW9uQ29tcG9uZW50LFxuICAgIERieFRhYmxlQWN0aW9uQ2VsbENvbXBvbmVudCxcbiAgICBEYnhUYWJsZUNvbHVtbkhlYWRlckNvbXBvbmVudCxcbiAgICBEYnhUYWJsZUNvbHVtbkZvb3RlckNvbXBvbmVudCxcbiAgICBEYnhUYWJsZVN1bW1hcnlTdGFydENlbGxDb21wb25lbnQsXG4gICAgRGJ4VGFibGVTdW1tYXJ5RW5kQ2VsbENvbXBvbmVudCxcbiAgICBEYnhUYWJsZUdyb3VwSGVhZGVyQ29tcG9uZW50LFxuICAgIERieFRhYmxlR3JvdXBGb290ZXJDb21wb25lbnQsXG4gICAgRGJ4VGFibGVGdWxsU3VtbWFyeVJvd0NvbXBvbmVudCxcbiAgICBEYnhDb2x1bW5TaXplRGlyZWN0aXZlLFxuICAgIERieENvbHVtblNpemVDb2x1bW5EaXJlY3RpdmVcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGJ4VGFibGVWaWV3Q29tcG9uZW50PEksIEMsIFQsIEcgPSB1bmtub3duPiB7XG4gIHJlYWRvbmx5IHRhYmxlU3RvcmUgPSBpbmplY3QoRGJ4VGFibGVTdG9yZTxJLCBDLCBULCBHPik7XG4gIHJlYWRvbmx5IHRhYmxlID0gdmlld0NoaWxkLnJlcXVpcmVkPE1hdFRhYmxlPERieFRhYmxlVmlld0VsZW1lbnQ8VCwgRz4+PihNYXRUYWJsZSk7XG5cbiAgcmVhZG9ubHkgREVGQVVMVF9UUkFDS19CWV9GVU5DVElPTjogVHJhY2tCeUZ1bmN0aW9uPGFueT4gPSAoaW5kZXgpID0+IHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH07XG5cbiAgcmVhZG9ubHkgc2Nyb2xsRGlzdGFuY2UgPSBpbnB1dDxudW1iZXI+KDAuNSk7XG4gIHJlYWRvbmx5IHRocm90dGxlU2Nyb2xsID0gaW5wdXQ8bnVtYmVyPig1MCk7XG5cbiAgcmVhZG9ubHkgaXRlbXNDb2x1bW5OYW1lID0gREJYX1RBQkxFX0lURU1TX0NPTFVNTl9OQU1FO1xuICByZWFkb25seSBhY3Rpb25zQ29sdW1uTmFtZSA9IERCWF9UQUJMRV9BQ1RJT05TX0NPTFVNTl9OQU1FO1xuXG4gIHJlYWRvbmx5IGlubmVyQ29sdW1ucyQgPSB0aGlzLnRhYmxlU3RvcmUuY29sdW1ucyQ7XG4gIHJlYWRvbmx5IGlubmVyQ29sdW1uTmFtZXMkID0gdGhpcy5pbm5lckNvbHVtbnMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1hcCgoeSkgPT4geS5jb2x1bW5OYW1lKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbm5lckNvbHVtbnNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlubmVyQ29sdW1ucyQpO1xuICByZWFkb25seSBpbm5lckNvbHVtbk5hbWVzU2lnbmFsID0gdG9TaWduYWwodGhpcy5pbm5lckNvbHVtbk5hbWVzJCk7XG5cbiAgcmVhZG9ubHkgZWxlbWVudHNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERieFRhYmxlVmlld0VsZW1lbnQ8VCwgRz5bXT4+ID0gdGhpcy50YWJsZVN0b3JlLmdyb3Vwc1N0YXRlJC5waXBlKFxuICAgIG1hcExvYWRpbmdTdGF0ZVZhbHVlV2l0aE9wZXJhdG9yKFxuICAgICAgc3dpdGNoTWFwKChncm91cHMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVTdG9yZS52aWV3RGVsZWdhdGUkLnBpcGUoXG4gICAgICAgICAgbWFwKCh2aWV3RGVsZWdhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZ3JvdXBIZWFkZXI6IGlucHV0R3JvdXBIZWFkZXIsIGdyb3VwRm9vdGVyOiBpbnB1dEdyb3VwRm9vdGVyIH0gPSB2aWV3RGVsZWdhdGU7XG4gICAgICAgICAgICBjb25zdCBoYXNHcm91cEhlYWRlciA9IGlucHV0R3JvdXBIZWFkZXIgIT0gbnVsbCA/IChncm91cDogRGJ4VGFibGVJdGVtR3JvdXA8VCwgRz4pID0+IGlucHV0R3JvdXBIZWFkZXIoZ3JvdXApICE9IG51bGwgOiAoKSA9PiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0dyb3VwRm9vdGVyID0gaW5wdXRHcm91cEZvb3RlciAhPSBudWxsID8gKGdyb3VwOiBEYnhUYWJsZUl0ZW1Hcm91cDxULCBHPikgPT4gaW5wdXRHcm91cEZvb3Rlcihncm91cCkgIT0gbnVsbCA6ICgpID0+IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzXG4gICAgICAgICAgICAgIC5tYXAoKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBpdGVtcyB9ID0gZ3JvdXA7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtRWxlbWVudHM6IERieFRhYmxlVmlld0l0ZW1FbGVtZW50PFQsIEc+W10gPSBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnaXRlbScsXG4gICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzOiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+W107XG5cbiAgICAgICAgICAgICAgICBpZiAoKGdyb3VwIGFzIERlZmF1bHREYnhUYWJsZUl0ZW1Hcm91cDxULCBHPikuZGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBpdGVtRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlciA9IGhhc0dyb3VwSGVhZGVyKGdyb3VwKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZvb3RlciA9IGhhc0dyb3VwRm9vdGVyKGdyb3VwKTtcblxuICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbXTtcblxuICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZ3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnaGVhZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICBncm91cFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcHVzaEFycmF5SXRlbXNJbnRvQXJyYXkoZWxlbWVudHMsIGl0ZW1FbGVtZW50cyk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChmb290ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2dyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2Zvb3RlcicsXG4gICAgICAgICAgICAgICAgICAgICAgZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBlbGVtZW50cyQgPSB0aGlzLmVsZW1lbnRzU3RhdGUkLnBpcGUoXG4gICAgdmFsdWVGcm9tRmluaXNoZWRMb2FkaW5nU3RhdGUoKCkgPT4gW10pLFxuICAgIHRocm90dGxlVGltZSg1MCwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IHRydWUsIHRyYWlsaW5nOiB0cnVlIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1ucyQgPSB0aGlzLmlubmVyQ29sdW1uTmFtZXMkLnBpcGUoXG4gICAgbWFwKChjb2x1bW5OYW1lcykgPT4ge1xuICAgICAgcmV0dXJuIFt0aGlzLml0ZW1zQ29sdW1uTmFtZSwgLi4uY29sdW1uTmFtZXMsIHRoaXMuYWN0aW9uc0NvbHVtbk5hbWVdO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1uc1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IHRoaXMuaW5uZXJDb2x1bW5OYW1lc1NpZ25hbCgpIHx8IFtdO1xuICAgIHJldHVybiBbdGhpcy5pdGVtc0NvbHVtbk5hbWUsIC4uLmNvbHVtbk5hbWVzLCB0aGlzLmFjdGlvbnNDb2x1bW5OYW1lXTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdmlzaWJsZUNvbHVtbnNTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1uc1NpZ25hbCgpO1xuXG4gICAgLy8gVE9ETzogRXZlcnkgdGltZSB0aGUgdGFibGUgaXMgcmVuZGVyZWQvc2l6ZSBjaGFuZ2VzL2V0YyB3ZSBzaG91bGQgcmVjb21wdXRlIHdpZHRoIG9mIHRoZSBmaXJzdCBuIGNvbHVtbnMgdGhhdCBzcGFuIHRoZSB2aWV3cG9ydFxuICAgIC8vIGluIG9yZGVyIHRvIGNhbGN1bGF0ZSBhIGNvbHNwYW4gZm9yIHRoZSBncm91cCBoZWFkZXIvZm9vdGVyIHRoYXQgaXMgbm90IGdyZWF0ZXIgdGhhbiBzcGFuIG9mIHRoZSB0YWJsZSBmb3IgYSBnaXZlbiB2aWV3IHNpemVcbiAgICAvLyBJLkUuIGlmIHRoZSBzY3JlZW4gc2hyaW5rcyB0byBvbmx5IHNob3cgdGhlIGZpcnN0IDQgY29sdW1ucywgdGhlbiB0aGUgY29sc3BhbiBzaG91bGQgYmUgNC5cblxuICAgIC8vIGFzIGEgdGVtcG9yYXJ5IG1lYXN1cmUsIHdlIGp1c3Qgc2hvdyBoYWxmIHRoZSBjb2x1bW5zXG5cbiAgICByZXR1cm4gZGlzcGxheWVkQ29sdW1ucy5sZW5ndGggLyAyO1xuICB9KTtcblxuICByZWFkb25seSB0cmFja0J5RnVuY3Rpb24kOiBPYnNlcnZhYmxlPFRyYWNrQnlGdW5jdGlvbjxUPj4gPSB0aGlzLnRhYmxlU3RvcmUudmlld0RlbGVnYXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC50cmFja0J5ID8/IHRoaXMuREVGQVVMVF9UUkFDS19CWV9GVU5DVElPTiksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dFRyYWNrQnlGdW5jdGlvblNpZ25hbCA9IHRvU2lnbmFsKHRoaXMudHJhY2tCeUZ1bmN0aW9uJCwgeyBpbml0aWFsVmFsdWU6IHRoaXMuREVGQVVMVF9UUkFDS19CWV9GVU5DVElPTiB9KTtcbiAgcmVhZG9ubHkgdHJhY2tFbGVtZW50QnlGdW5jdGlvblNpZ25hbDogU2lnbmFsPFRyYWNrQnlGdW5jdGlvbjxEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+Pj4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdHJhY2tCeUZ1bmN0aW9uID0gdGhpcy5pbnB1dFRyYWNrQnlGdW5jdGlvblNpZ25hbCgpIGFzIFRyYWNrQnlGdW5jdGlvbjxUPjtcblxuICAgIGNvbnN0IGZuOiBUcmFja0J5RnVuY3Rpb248RGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPj4gPSAoaW5kZXg6IG51bWJlciwgZWxlbWVudDogRGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPikgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2l0ZW0nKSB7XG4gICAgICAgIHJldHVybiBgaV8ke3RyYWNrQnlGdW5jdGlvbihpbmRleCwgZWxlbWVudC5pdGVtIGFzIFQpfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYGdfJHtlbGVtZW50Lmdyb3VwLmdyb3VwSWR9YDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZuO1xuICB9KTtcblxuICByZWFkb25seSBjb250ZXh0ID0gbG9hZGluZ1N0YXRlQ29udGV4dCh7IG9iczogdGhpcy50YWJsZVN0b3JlLmRhdGFTdGF0ZSQgfSk7XG4gIHJlYWRvbmx5IGRhdGFMb2FkaW5nQ29udGV4dCA9IGxvYWRpbmdTdGF0ZUNvbnRleHQoeyBvYnM6IHRoaXMuZWxlbWVudHNTdGF0ZSQgfSk7XG5cbiAgcmVhZG9ubHkgY29udGV4dFNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuY29udGV4dC5zdGF0ZSQpO1xuICByZWFkb25seSBkYXRhTG9hZGluZ0NvbnRleHRTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmRhdGFMb2FkaW5nQ29udGV4dC5zdGF0ZSQpO1xuXG4gIHJlYWRvbmx5IHZpZXdEZWxlZ2F0ZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMudGFibGVTdG9yZS52aWV3RGVsZWdhdGUkKTtcbiAgcmVhZG9ubHkgZWxlbWVudHNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmVsZW1lbnRzJCwgeyBpbml0aWFsVmFsdWU6IFtdIH0pO1xuXG4gIG9uU2Nyb2xsRG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlU3RvcmUubG9hZE1vcmUoKTtcbiAgfVxuXG4gIHNob3dJdGVtUm93KF86IG51bWJlciwgcm93OiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdy50eXBlID09PSAnaXRlbSc7XG4gIH1cblxuICBzaG93R3JvdXBIZWFkZXJSb3coXzogbnVtYmVyLCByb3c6IERieFRhYmxlVmlld0VsZW1lbnQ8VCwgRz4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09ICdncm91cCcgJiYgcm93LmxvY2F0aW9uID09PSAnaGVhZGVyJztcbiAgfVxuXG4gIHNob3dHcm91cEZvb3RlclJvdyhfOiBudW1iZXIsIHJvdzogRGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiByb3cudHlwZSA9PT0gJ2dyb3VwJyAmJiByb3cubG9jYXRpb24gPT09ICdmb290ZXInO1xuICB9XG5cbiAgcmVhZG9ubHkgc2hvd0Zvb3RlclJvd1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2aWV3RGVsZWdhdGUgPSB0aGlzLnZpZXdEZWxlZ2F0ZVNpZ25hbCgpO1xuICAgIGNvbnN0IHNob3dGb290ZXJSb3cgPSB2aWV3RGVsZWdhdGUgJiYgKHZpZXdEZWxlZ2F0ZS5zdW1tYXJ5Um93SGVhZGVyICE9IG51bGwgfHwgdmlld0RlbGVnYXRlLmNvbHVtbkZvb3RlciAhPSBudWxsIHx8IHZpZXdEZWxlZ2F0ZS5zdW1tYXJ5Um93RW5kICE9IG51bGwpO1xuICAgIHJldHVybiBzaG93Rm9vdGVyUm93O1xuICB9KTtcblxuICByZWFkb25seSBzaG93RnVsbFN1bW1hcnlSb3dTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgdmlld0RlbGVnYXRlID0gdGhpcy52aWV3RGVsZWdhdGVTaWduYWwoKTtcbiAgICByZXR1cm4gdmlld0RlbGVnYXRlPy5mdWxsU3VtbWFyeVJvdyAhPSBudWxsO1xuICB9KTtcbn1cbiIsIjxkYngtbG9hZGluZyBbY29udGV4dF09XCJjb250ZXh0XCI+XG4gIDxkYngtbG9hZGluZyBjbGFzcz1cImRieC10YWJsZS12aWV3LWxvYWRpbmdcIiBbbGluZWFyXT1cInRydWVcIiBbY29udGV4dF09XCJkYXRhTG9hZGluZ0NvbnRleHRcIj48L2RieC1sb2FkaW5nPlxuICA8c2VjdGlvbiBjbGFzcz1cImRieC10YWJsZS12aWV3XCIgZGJ4LWNvbHVtbi1zaXplICNjb2x1bW5TaXplPVwiZGJ4Q29sdW1uU2l6ZVwiIGluZmluaXRlLXNjcm9sbCBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCJzY3JvbGxEaXN0YW5jZSgpXCIgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwidGhyb3R0bGVTY3JvbGwoKVwiIFtzY3JvbGxXaW5kb3ddPVwiZmFsc2VcIiAoc2Nyb2xsZWQpPVwib25TY3JvbGxEb3duKClcIj5cbiAgICA8dGFibGUgY2xhc3M9XCJkYngtdGFibGUtdmlldy10YWJsZVwiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJlbGVtZW50c1NpZ25hbCgpXCIgW3RyYWNrQnldPVwidHJhY2tFbGVtZW50QnlGdW5jdGlvblNpZ25hbCgpXCIgbXVsdGlUZW1wbGF0ZURhdGFSb3dzPlxuICAgICAgPCEtLSBHcm91cHMgLS0+XG4gICAgICA8IS0tIEdyb3VwIEhlYWRlciBjb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImdyb3VwSGVhZGVyQ29sdW1uXCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtblNpemUudmlzaWJsZUNvbHVtbnNTaWduYWwoKVwiICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWdyb3VwLWhlYWRlciBbZ3JvdXBdPVwiZWxlbWVudC5ncm91cFwiPjwvZGJ4LXRhYmxlLWdyb3VwLWhlYWRlcj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEdyb3VwIEZvb3RlciBjb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImdyb3VwRm9vdGVyQ29sdW1uXCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtblNpemUudmlzaWJsZUNvbHVtbnNTaWduYWwoKVwiICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWdyb3VwLWZvb3RlciBbZ3JvdXBdPVwiZWxlbWVudC5ncm91cFwiPjwvZGJ4LXRhYmxlLWdyb3VwLWZvb3Rlcj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEl0ZW1zIC0tPlxuICAgICAgPCEtLSBIZWFkZXIvSXRlbSBjb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiaXRlbXNDb2x1bW5OYW1lXCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgIDx0aCBkYngtY29sdW1uLXNpemUtY29sdW1uPVwiaGVhZFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWlucHV0LWNlbGw+PC9kYngtdGFibGUtaW5wdXQtY2VsbD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWl0ZW0taGVhZGVyIFtpdGVtXT1cImVsZW1lbnQuaXRlbVwiPjwvZGJ4LXRhYmxlLWl0ZW0taGVhZGVyPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxuICAgICAgICAgIDxkYngtdGFibGUtc3VtbWFyeS1zdGFydC1jZWxsPjwvZGJ4LXRhYmxlLXN1bW1hcnktc3RhcnQtY2VsbD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIENvbHVtbiBEZWZpbml0aW9ucyAtLT5cbiAgICAgIEBmb3IgKGNvbHVtbiBvZiBpbm5lckNvbHVtbnNTaWduYWwoKTsgdHJhY2sgY29sdW1uLmNvbHVtbk5hbWUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5jb2x1bW5OYW1lXCIgW3N0aWNreV09XCJmYWxzZVwiPlxuICAgICAgICAgIDx0aCBbZGJ4LWNvbHVtbi1zaXplLWNvbHVtbl09XCIkaW5kZXhcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICA8ZGJ4LXRhYmxlLWNvbHVtbi1oZWFkZXIgW2NvbHVtbl09XCJjb2x1bW5cIj48L2RieC10YWJsZS1jb2x1bW4taGVhZGVyPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxkYngtdGFibGUtaXRlbS1jZWxsIFtpdGVtXT1cImVsZW1lbnQuaXRlbVwiIFtjb2x1bW5dPVwiY29sdW1uXCI+PC9kYngtdGFibGUtaXRlbS1jZWxsPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cbiAgICAgICAgICAgIDxkYngtdGFibGUtY29sdW1uLWZvb3RlciBbY29sdW1uXT1cImNvbHVtblwiPjwvZGJ4LXRhYmxlLWNvbHVtbi1mb290ZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gVGFpbC9BY3Rpb24gY29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImFjdGlvbnNDb2x1bW5OYW1lXCIgW3N0aWNreUVuZF09XCJ0cnVlXCI+XG4gICAgICAgIDx0aCBkYngtY29sdW1uLXNpemUtY29sdW1uPVwidGFpbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWFjdGlvbi1jZWxsPjwvZGJ4LXRhYmxlLWFjdGlvbi1jZWxsPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgIDxkYngtdGFibGUtaXRlbS1hY3Rpb24gW2l0ZW1dPVwiZWxlbWVudC5pdGVtXCI+PC9kYngtdGFibGUtaXRlbS1hY3Rpb24+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XG4gICAgICAgICAgPGRieC10YWJsZS1zdW1tYXJ5LWVuZC1jZWxsPjwvZGJ4LXRhYmxlLXN1bW1hcnktZW5kLWNlbGw+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBUYWJsZSBWaWV3IC0tPlxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zU2lnbmFsKCk7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG5cbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2dyb3VwSGVhZGVyQ29sdW1uJ107IHdoZW46IHNob3dHcm91cEhlYWRlclJvd1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1NpZ25hbCgpOyB3aGVuOiBzaG93SXRlbVJvd1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydncm91cEZvb3RlckNvbHVtbiddOyB3aGVuOiBzaG93R3JvdXBGb290ZXJSb3dcIj48L3RyPlxuXG4gICAgICA8dHIgW25nQ2xhc3NdPVwieyAnZGJ4LWhpZGUnOiAhc2hvd0Zvb3RlclJvd1NpZ25hbCgpIH1cIiBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1NpZ25hbCgpOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgIDwvdGFibGU+XG4gIDwvc2VjdGlvbj5cbiAgPCEtLSBGdWxsIHN1bW1hcnkgcm93IC0tPlxuICBAaWYgKHNob3dGdWxsU3VtbWFyeVJvd1NpZ25hbCgpKSB7XG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtdGFibGUgZGJ4LXRhYmxlLXZpZXctZnVsbC1zdW1tYXJ5LXJvdy1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZGMtZGF0YS10YWJsZV9fY2VsbCBtYXQtbWRjLXJvd1wiPlxuICAgICAgICA8ZGJ4LXRhYmxlLWZ1bGwtc3VtbWFyeS1yb3c+PC9kYngtdGFibGUtZnVsbC1zdW1tYXJ5LXJvdz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG48L2RieC1sb2FkaW5nPlxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
2
|
import { toSignal } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { map
|
|
3
|
+
import { map } from 'rxjs';
|
|
4
4
|
import { AbstractDbxTableItemDirective } from './table.item.directive';
|
|
5
5
|
import { DbxInjectionComponent } from '@dereekb/dbx-core';
|
|
6
6
|
import { maybeValueFromObservableOrValue } from '@dereekb/rxjs';
|
|
@@ -10,10 +10,10 @@ export class DbxTableItemActionComponent extends AbstractDbxTableItemDirective {
|
|
|
10
10
|
const itemAction = viewDelegate.itemAction;
|
|
11
11
|
let obs = undefined;
|
|
12
12
|
if (itemAction) {
|
|
13
|
-
obs = this.item$.pipe(map((x) => itemAction(x)));
|
|
13
|
+
obs = this.item$.pipe(map((x) => (x != null ? itemAction(x) : undefined)));
|
|
14
14
|
}
|
|
15
15
|
return obs;
|
|
16
|
-
}), maybeValueFromObservableOrValue()
|
|
16
|
+
}), maybeValueFromObservableOrValue());
|
|
17
17
|
configSignal = toSignal(this.config$);
|
|
18
18
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableItemActionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
19
19
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxTableItemActionComponent, isStandalone: true, selector: "dbx-table-item-action", usesInheritance: true, ngImport: i0, template: `
|
|
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32
32
|
standalone: true
|
|
33
33
|
}]
|
|
34
34
|
}] });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuaXRlbS5hY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi90YWJsZS9zcmMvbGliL3RhYmxlLml0ZW0uYWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBK0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RixPQUFPLEVBQTBCLCtCQUErQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVd4RixNQUFNLE9BQU8sMkJBQStCLFNBQVEsNkJBQWdDO0lBQ3pFLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1FBQ25CLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFDM0MsSUFBSSxHQUFHLEdBQXdELFNBQVMsQ0FBQztRQUV6RSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUMsRUFDRiwrQkFBK0IsRUFBRSxDQUNsQyxDQUFDO0lBRU8sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7d0dBZnBDLDJCQUEyQjs0RkFBM0IsMkJBQTJCLHdHQVA1Qjs7R0FFVCw0REFFUyxxQkFBcUI7OzRGQUdwQiwyQkFBMkI7a0JBVHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFOztHQUVUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDaEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFic3RyYWN0RGJ4VGFibGVJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi90YWJsZS5pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnQsIERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IE1heWJlT2JzZXJ2YWJsZU9yVmFsdWUsIG1heWJlVmFsdWVGcm9tT2JzZXJ2YWJsZU9yVmFsdWUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXRhYmxlLWl0ZW0tYWN0aW9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGJ4LWluamVjdGlvbiBbY29uZmlnXT1cImNvbmZpZ1NpZ25hbCgpXCI+PC9kYngtaW5qZWN0aW9uPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0RieEluamVjdGlvbkNvbXBvbmVudF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGJ4VGFibGVJdGVtQWN0aW9uQ29tcG9uZW50PFQ+IGV4dGVuZHMgQWJzdHJhY3REYnhUYWJsZUl0ZW1EaXJlY3RpdmU8VD4ge1xuICByZWFkb25seSBjb25maWckID0gdGhpcy50YWJsZVN0b3JlLnZpZXdEZWxlZ2F0ZSQucGlwZShcbiAgICBtYXAoKHZpZXdEZWxlZ2F0ZSkgPT4ge1xuICAgICAgY29uc3QgaXRlbUFjdGlvbiA9IHZpZXdEZWxlZ2F0ZS5pdGVtQWN0aW9uO1xuICAgICAgbGV0IG9iczogTWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+ID0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoaXRlbUFjdGlvbikge1xuICAgICAgICBvYnMgPSB0aGlzLml0ZW0kLnBpcGUobWFwKCh4KSA9PiAoeCAhPSBudWxsID8gaXRlbUFjdGlvbih4KSA6IHVuZGVmaW5lZCkpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9icztcbiAgICB9KSxcbiAgICBtYXliZVZhbHVlRnJvbU9ic2VydmFibGVPclZhbHVlKClcbiAgKTtcblxuICByZWFkb25seSBjb25maWdTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmNvbmZpZyQpO1xufVxuIl19
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { filterMaybe, maybeValueFromObservableOrValue } from '@dereekb/rxjs';
|
|
2
1
|
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
|
|
3
2
|
import { toSignal, toObservable } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { map,
|
|
3
|
+
import { map, switchMap, combineLatest } from 'rxjs';
|
|
5
4
|
import { AbstractDbxTableItemDirective } from './table.item.directive';
|
|
6
5
|
import { DbxInjectionComponent } from '@dereekb/dbx-core';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
export class DbxTableItemCellComponent extends AbstractDbxTableItemDirective {
|
|
9
8
|
column = input();
|
|
10
|
-
column$ = toObservable(this.column)
|
|
11
|
-
config$ = this.tableStore.viewDelegate$.pipe(switchMap((viewDelegate) => combineLatest([this.column$, this.item$]).pipe(map(([column, item]) => viewDelegate.itemCell(column, item))))
|
|
9
|
+
column$ = toObservable(this.column);
|
|
10
|
+
config$ = this.tableStore.viewDelegate$.pipe(switchMap((viewDelegate) => combineLatest([this.column$, this.item$]).pipe(map(([column, item]) => (column && item ? viewDelegate.itemCell(column, item) : undefined)))));
|
|
12
11
|
configSignal = toSignal(this.config$);
|
|
13
12
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableItemCellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
14
13
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: DbxTableItemCellComponent, isStandalone: true, selector: "dbx-table-item-cell", inputs: { column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
@@ -27,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27
26
|
standalone: true
|
|
28
27
|
}]
|
|
29
28
|
}] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuaXRlbS5jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC13ZWIvdGFibGUvc3JjL2xpYi90YWJsZS5pdGVtLmNlbGwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQVcxRCxNQUFNLE9BQU8seUJBQWdDLFNBQVEsNkJBQW1DO0lBQzdFLE1BQU0sR0FBRyxLQUFLLEVBQTRCLENBQUM7SUFDM0MsT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXZOLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dHQU5wQyx5QkFBeUI7NEZBQXpCLHlCQUF5Qiw2T0FQMUI7O0dBRVQsNERBRVMscUJBQXFCOzs0RkFHcEIseUJBQXlCO2tCQVRyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRTs7R0FFVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCwgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHR5cGUgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEFic3RyYWN0RGJ4VGFibGVJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi90YWJsZS5pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYnhUYWJsZUNvbHVtbiB9IGZyb20gJy4vdGFibGUnO1xuaW1wb3J0IHsgRGJ4SW5qZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtdGFibGUtaXRlbS1jZWxsJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGJ4LWluamVjdGlvbiBbY29uZmlnXT1cImNvbmZpZ1NpZ25hbCgpXCI+PC9kYngtaW5qZWN0aW9uPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0RieEluamVjdGlvbkNvbXBvbmVudF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGJ4VGFibGVJdGVtQ2VsbENvbXBvbmVudDxULCBDPiBleHRlbmRzIEFic3RyYWN0RGJ4VGFibGVJdGVtRGlyZWN0aXZlPFQsIEM+IHtcbiAgcmVhZG9ubHkgY29sdW1uID0gaW5wdXQ8TWF5YmU8RGJ4VGFibGVDb2x1bW48Qz4+PigpO1xuICByZWFkb25seSBjb2x1bW4kID0gdG9PYnNlcnZhYmxlKHRoaXMuY29sdW1uKTtcblxuICByZWFkb25seSBjb25maWckID0gdGhpcy50YWJsZVN0b3JlLnZpZXdEZWxlZ2F0ZSQucGlwZShzd2l0Y2hNYXAoKHZpZXdEZWxlZ2F0ZSkgPT4gY29tYmluZUxhdGVzdChbdGhpcy5jb2x1bW4kLCB0aGlzLml0ZW0kXSkucGlwZShtYXAoKFtjb2x1bW4sIGl0ZW1dKSA9PiAoY29sdW1uICYmIGl0ZW0gPyB2aWV3RGVsZWdhdGUuaXRlbUNlbGwoY29sdW1uLCBpdGVtKSA6IHVuZGVmaW5lZCkpKSkpO1xuXG4gIHJlYWRvbmx5IGNvbmZpZ1NpZ25hbCA9IHRvU2lnbmFsKHRoaXMuY29uZmlnJCk7XG59XG4iXX0=
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
2
|
-
import { filterMaybe } from '@dereekb/rxjs';
|
|
3
2
|
import { Directive, inject, input } from '@angular/core';
|
|
4
|
-
import { distinctUntilChanged } from 'rxjs';
|
|
5
3
|
import { DbxTableStore } from './table.store';
|
|
6
4
|
import * as i0 from "@angular/core";
|
|
7
5
|
/**
|
|
@@ -10,11 +8,11 @@ import * as i0 from "@angular/core";
|
|
|
10
8
|
export class AbstractDbxTableItemDirective {
|
|
11
9
|
tableStore = inject((DbxTableStore));
|
|
12
10
|
item = input();
|
|
13
|
-
item$ = toObservable(this.item)
|
|
11
|
+
item$ = toObservable(this.item);
|
|
14
12
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxTableItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
15
13
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AbstractDbxTableItemDirective, inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
16
14
|
}
|
|
17
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxTableItemDirective, decorators: [{
|
|
18
16
|
type: Directive
|
|
19
17
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuaXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3RhYmxlL3NyYy9saWIvdGFibGUuaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUc5Qzs7R0FFRztBQUVILE1BQU0sT0FBZ0IsNkJBQTZCO0lBQ3hDLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQSxhQUE0QixDQUFBLENBQUMsQ0FBQztJQUVsRCxJQUFJLEdBQUcsS0FBSyxFQUFZLENBQUM7SUFDekIsS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0dBSnJCLDZCQUE2Qjs0RkFBN0IsNkJBQTZCOzs0RkFBN0IsNkJBQTZCO2tCQURsRCxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhUYWJsZVN0b3JlIH0gZnJvbSAnLi90YWJsZS5zdG9yZSc7XG5pbXBvcnQgeyB0eXBlIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5cbi8qKlxuICogQWJzdHJhY3QgZGlyZWN0aXZlIHRoYXQgaGFzIGFuIGVsZW1lbnQgaW5wdXQuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RGJ4VGFibGVJdGVtRGlyZWN0aXZlPFQsIEMgPSB1bmtub3duPiB7XG4gIHJlYWRvbmx5IHRhYmxlU3RvcmUgPSBpbmplY3QoRGJ4VGFibGVTdG9yZTx1bmtub3duLCBDLCBUPik7XG5cbiAgcmVhZG9ubHkgaXRlbSA9IGlucHV0PE1heWJlPFQ+PigpO1xuICByZWFkb25seSBpdGVtJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLml0ZW0pO1xufVxuIl19
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
2
|
import { toSignal } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { map,
|
|
3
|
+
import { map, switchMap } from 'rxjs';
|
|
4
4
|
import { AbstractDbxTableItemDirective } from './table.item.directive';
|
|
5
5
|
import { maybeValueFromObservableOrValue } from '@dereekb/rxjs';
|
|
6
6
|
import { DbxInjectionComponent } from '@dereekb/dbx-core';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export class DbxTableItemHeaderComponent extends AbstractDbxTableItemDirective {
|
|
9
|
-
config$ = this.tableStore.viewDelegate$.pipe(switchMap((viewDelegate) => this.item$.pipe(map((x) => viewDelegate.itemHeader(x)))), maybeValueFromObservableOrValue()
|
|
9
|
+
config$ = this.tableStore.viewDelegate$.pipe(switchMap((viewDelegate) => this.item$.pipe(map((x) => (x != null ? viewDelegate.itemHeader(x) : undefined)))), maybeValueFromObservableOrValue());
|
|
10
10
|
configSignal = toSignal(this.config$);
|
|
11
11
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableItemHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
12
12
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxTableItemHeaderComponent, isStandalone: true, selector: "dbx-table-item-header", usesInheritance: true, ngImport: i0, template: `
|
|
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25
25
|
standalone: true
|
|
26
26
|
}]
|
|
27
27
|
}] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuaXRlbS5oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi90YWJsZS9zcmMvbGliL3RhYmxlLml0ZW0uaGVhZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBVzFELE1BQU0sT0FBTywyQkFBK0IsU0FBUSw2QkFBZ0M7SUFDekUsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDbkQsU0FBUyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlHLCtCQUErQixFQUFFLENBQ2xDLENBQUM7SUFFTyxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzt3R0FOcEMsMkJBQTJCOzRGQUEzQiwyQkFBMkIsd0dBUDVCOztHQUVULDREQUVTLHFCQUFxQjs7NEZBR3BCLDJCQUEyQjtrQkFUdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUU7O0dBRVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBYnN0cmFjdERieFRhYmxlSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vdGFibGUuaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgbWF5YmVWYWx1ZUZyb21PYnNlcnZhYmxlT3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGJ4SW5qZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtdGFibGUtaXRlbS1oZWFkZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkYngtaW5qZWN0aW9uIFtjb25maWddPVwiY29uZmlnU2lnbmFsKClcIj48L2RieC1pbmplY3Rpb24+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbRGJ4SW5qZWN0aW9uQ29tcG9uZW50XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYnhUYWJsZUl0ZW1IZWFkZXJDb21wb25lbnQ8VD4gZXh0ZW5kcyBBYnN0cmFjdERieFRhYmxlSXRlbURpcmVjdGl2ZTxUPiB7XG4gIHJlYWRvbmx5IGNvbmZpZyQgPSB0aGlzLnRhYmxlU3RvcmUudmlld0RlbGVnYXRlJC5waXBlKFxuICAgIHN3aXRjaE1hcCgodmlld0RlbGVnYXRlKSA9PiB0aGlzLml0ZW0kLnBpcGUobWFwKCh4KSA9PiAoeCAhPSBudWxsID8gdmlld0RlbGVnYXRlLml0ZW1IZWFkZXIoeCkgOiB1bmRlZmluZWQpKSkpLFxuICAgIG1heWJlVmFsdWVGcm9tT2JzZXJ2YWJsZU9yVmFsdWUoKVxuICApO1xuXG4gIHJlYWRvbmx5IGNvbmZpZ1NpZ25hbCA9IHRvU2lnbmFsKHRoaXMuY29uZmlnJCk7XG59XG4iXX0=
|
|
@@ -92,6 +92,7 @@ export function dbxTableReader(config) {
|
|
|
92
92
|
return cellDataPairForColumnAndItem(column, item).pipe(map((pair) => pair?.value));
|
|
93
93
|
};
|
|
94
94
|
return {
|
|
95
|
+
tableStore,
|
|
95
96
|
delegate,
|
|
96
97
|
cellDataPairsForColumn,
|
|
97
98
|
cellDataForColumn,
|
|
@@ -99,4 +100,4 @@ export function dbxTableReader(config) {
|
|
|
99
100
|
cellDataForColumnAndItem
|
|
100
101
|
};
|
|
101
102
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUucmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi90YWJsZS9zcmMvbGliL3RhYmxlLnJlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0YsT0FBTyxFQUF1QixzQkFBc0IsRUFBMkIsTUFBTSxlQUFlLENBQUM7QUEyQnJHOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3Q0FBd0MsR0FBcUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFnRnhKLE1BQU0sVUFBVSxjQUFjLENBQVUsTUFBcUM7SUFDM0UsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDeEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUM5QixNQUFNLEVBQUUseUJBQXlCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsQ0FBQztJQUN6RixNQUFNLFdBQVcsR0FBRyxDQUFDLGdCQUFnQixJQUFJLHdDQUF3QyxDQUEyQyxDQUFDO0lBVTdILE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxNQUF5QixFQUF3RCxFQUFFO1FBQ3RILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDUixNQUFNLGNBQWMsR0FBc0QsRUFBRSxDQUFDO1lBQzdFLE1BQU0sZUFBZSxHQUFtRCxFQUFFLENBQUM7WUFFM0UsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNqQixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFD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QUFDLENBQ2YsQ0FBQztRQUVGLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUMsQ0FBQztJQUVGLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUF5QixFQUFFLElBQU8sRUFBd0IsRUFBRTtRQUM1RixPQUFPLDRCQUE0QixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsUUFBUTtRQUNSLHNCQUFzQjtRQUN0QixpQkFBaUI7UUFDakIsNEJBQTRCO1FBQzVCLHdCQUF3QjtLQUN6QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJpbWF0aXZlS2V5LCBNYXliZSwgZmlsdGVyTWF5YmVBcnJheVZhbHVlcywgUmVhZFJlcXVpcmVkS2V5RnVuY3Rpb24gfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERieFRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQgeyBEYnhUYWJsZVN0b3JlIH0gZnJvbSAnLi90YWJsZS5zdG9yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4VGFibGVSZWFkZXJDZWxsUGFpcjxDLCBUPiB7XG4gIHJlYWRvbmx5IGNvbHVtbjogRGJ4VGFibGVDb2x1bW48Qz47XG4gIHJlYWRvbmx5IGl0ZW06IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4VGFibGVSZWFkZXJDZWxsRGF0YVBhaXI8QywgVCwgTz4gZXh0ZW5kcyBEYnhUYWJsZVJlYWRlckNlbGxQYWlyPEMsIFQ+IHtcbiAgcmVhZG9ubHkgdmFsdWU6IE87XG59XG5cbi8qKlxuICogS2V5IHVzZWQgZm9yIHRyYWNraW5nIGNvbHVtbnMuXG4gKlxuICogR2VuZXJhbGx5IHRoZSB0YWJsZSBuYW1lIGlzIHVzZWQgZm9yIHRoaXMuXG4gKi9cbmV4cG9ydCB0eXBlIERieFRhYmxlUmVhZGVyQ29sdW1uS2V5ID0gc3RyaW5nO1xuXG4vKipcbiAqIEtleSB1c2VkIGZvciB0cmFja2luZyBpdGVtcy5cbiAqXG4gKiBHZW5lcmFsbHkgdGhlIGl0ZW0ncyB1bmlxdWUgaWRlbnRpZmllciBpcyB1c2VkIGZvciB0aGlzLlxuICovXG5leHBvcnQgdHlwZSBEYnhUYWJsZVJlYWRlckl0ZW1LZXkgPSBQcmltYXRpdmVLZXk7XG5cbi8qKlxuICogRGVmYXVsdCB0cmFjayBieSBmdW5jdGlvbiBmb3IgRGJ4VGFibGVDb2x1bW4uXG4gKlxuICogUmV0dXJucyB0aGUgY29sdW1uIG5hbWUuXG4gKlxuICogQHBhcmFtIGNvbHVtblxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfREJYX1RBQkxFX1JFQURFUl9DT0xVTU5fVFJBQ0tfQlk6IFJlYWRSZXF1aXJlZEtleUZ1bmN0aW9uPERieFRhYmxlQ29sdW1uPERieFRhYmxlUmVhZGVyQ29sdW1uS2V5Pj4gPSAoY29sdW1uKSA9PiBjb2x1bW4uY29sdW1uTmFtZTtcblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIGZvciB0cmFja2luZyB1bmlxdWUgY29sdW1ucyB1c2luZyB0aGUgY29sdW1uJ3MgZGF0YS5cbiAqXG4gKiBJZiB0aGUgY29sdW1uIGtleSB2YWx1ZSBpcyB0aGUgc2FtZSBiZXR3ZWVuIHRob3NlIHR3byBjb2x1bW5zLCB0aGVuIHRoZSBtZXRhZGF0YSBvZiBib3RoIGNvbHVtbnMgd2lsbCBiZSBjb25zaWRlcmVkIHRoZSBzYW1lL2VxdWFsLlxuICovXG5leHBvcnQgdHlwZSBEYnhUYWJsZVJlYWRlckNvbHVtblRyYWNrQnlGdW5jdGlvbjxDPiA9IFJlYWRSZXF1aXJlZEtleUZ1bmN0aW9uPERieFRhYmxlQ29sdW1uPEM+LCBEYnhUYWJsZVJlYWRlckNvbHVtbktleT47XG5cbi8qKlxuICogRnVuY3Rpb24gdXNlZCBmb3IgdHJhY2tpbmcgdW5pcXVlIGNvbHVtbnMgdXNpbmcgdGhlIGNvbHVtbidzIGRhdGEuXG4gKlxuICogSWYgdGhlIGNvbHVtbiBrZXkgdmFsdWUgaXMgdGhlIHNhbWUgYmV0d2VlbiB0aG9zZSB0d28gY29sdW1ucywgdGhlbiB0aGUgbWV0YWRhdGEgb2YgYm90aCBjb2x1bW5zIHdpbGwgYmUgY29uc2lkZXJlZCB0aGUgc2FtZS9lcXVhbC5cbiAqL1xuZXhwb3J0IHR5cGUgRGJ4VGFibGVSZWFkZXJJdGVtVHJhY2tCeUZ1bmN0aW9uPFQ+ID0gUmVhZFJlcXVpcmVkS2V5RnVuY3Rpb248VCwgRGJ4VGFibGVSZWFkZXJJdGVtS2V5PjtcblxuZXhwb3J0IGludGVyZmFjZSBEYnhUYWJsZVJlYWRlckRlbGVnYXRlPEMsIFQsIE8+IHtcbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgZGF0YSBmb3IgYSBzcGVjaWZpYyBjb2x1bW4gYW5kIGl0ZW0vcm93LlxuICAgKlxuICAgKiBAcGFyYW0gY29sdW1uXG4gICAqIEBwYXJhbSBpdGVtXG4gICAqL1xuICByZWFkSXRlbUNlbGxEYXRhRm9yQ29sdW1uKGNvbHVtbjogRGJ4VGFibGVDb2x1bW48Qz4sIGl0ZW06IFQpOiBPYnNlcnZhYmxlPE8+O1xuICAvKipcbiAgICogVXNlZCBmb3IgdHJhY2tpbmcgdW5pcXVlIGNvbHVtbnMuXG4gICAqXG4gICAqIFVzZSBpZiB0aGUgbWV0YWRhdGEgYmV0d2VlbiBjb2x1bW5zIHNob3VsZCBiZSB1c2VkIGZvciB1bmlxdWUgaWRlbnRpZmljYXRpb24uXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHVzaW5nIHRoZSBjb2x1bW4gbmFtZSBhcyB0aGUga2V5IGlmIG5vdCBkZWZpbmVkLlxuICAgKi9cbiAgdHJhY2tDb2x1bW4/OiBEYnhUYWJsZVJlYWRlckNvbHVtblRyYWNrQnlGdW5jdGlvbjxDPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIHRyYWNraW5nIHVuaXF1ZSBpdGVtcy9yb3dzLlxuICAgKlxuICAgKiBVc2UgaWYgdGhlIG1ldGFkYXRhIGJldHdlZW4gaXRlbXMgc2hvdWxkIGJlIHVzZWQgZm9yIHVuaXF1ZSBpZGVudGlmaWNhdGlvbi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdXNpbmcgdGhlIGl0ZW0gaXRzZWxmIGFzIHRoZSBrZXkgaWYgbm90IGRlZmluZWQuXG4gICAqL1xuICB0cmFja0l0ZW06IERieFRhYmxlUmVhZGVySXRlbVRyYWNrQnlGdW5jdGlvbjxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhUYWJsZVJlYWRlcjxDLCBULCBPPiB7XG4gIC8qKlxuICAgKiBEZWxlZ2F0ZSB1c2VkIGZvciByZXRyaWV2aW5nIHRoZSBkYXRhIGZvciBhIHNwZWNpZmljIGNvbHVtbiBhbmQgaXRlbS9yb3cuXG4gICAqL1xuICByZWFkb25seSBkZWxlZ2F0ZTogRGJ4VGFibGVSZWFkZXJEZWxlZ2F0ZTxDLCBULCBPPjtcbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhbGwgY2VsbCBkYXRhIHBhaXJzIGZvciBhIHNwZWNpZmljIGNvbHVtbi5cbiAgICovXG4gIGNlbGxEYXRhUGFpcnNGb3JDb2x1bW4oY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxDPik6IE9ic2VydmFibGU8RGJ4VGFibGVSZWFkZXJDZWxsRGF0YVBhaXI8QywgVCwgTz5bXT47XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYWxsIGNlbGwgZGF0YSBmb3IgYSBzcGVjaWZpYyBjb2x1bW4uXG4gICAqL1xuICBjZWxsRGF0YUZvckNvbHVtbihjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+KTogT2JzZXJ2YWJsZTxPW10+O1xuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjZWxsIGRhdGEgcGFpciBmb3IgYSBzcGVjaWZpYyBjb2x1bW4gYW5kIGl0ZW0uXG4gICAqXG4gICAqIFJldHVybnMgbnVsbCBpZiB0aGUgY29sdW1uIGlzIG5vdCB2aXNpYmxlIG9yIHRoZSBpdGVtIGlzIG5vdCBmb3VuZC5cbiAgICovXG4gIGNlbGxEYXRhUGFpckZvckNvbHVtbkFuZEl0ZW0oY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxDPiwgaXRlbTogVCk6IE9ic2VydmFibGU8TWF5YmU8RGJ4VGFibGVSZWFkZXJDZWxsRGF0YVBhaXI8QywgVCwgTz4+PjtcbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY2VsbCBkYXRhIGZvciBhIHNwZWNpZmljIGNvbHVtbiBhbmQgaXRlbS5cbiAgICpcbiAgICogUmV0dXJucyBudWxsIGlmIHRoZSBjb2x1bW4gaXMgbm90IHZpc2libGUgb3IgdGhlIGl0ZW0gaXMgbm90IGZvdW5kLlxuICAgKi9cbiAgY2VsbERhdGFGb3JDb2x1bW5BbmRJdGVtKGNvbHVtbjogRGJ4VGFibGVDb2x1bW48Qz4sIGl0ZW06IFQpOiBPYnNlcnZhYmxlPE1heWJlPE8+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhUYWJsZVJlYWRlckNvbmZpZzxDLCBULCBPPiB7XG4gIC8qKlxuICAgKiBEZWxlZ2F0ZSB1c2VkIGZvciByZXRyaWV2aW5nIHRoZSBkYXRhIGZvciBhIHNwZWNpZmljIGNvbHVtbiBhbmQgaXRlbS9yb3cuXG4gICAqL1xuICByZWFkb25seSBkZWxlZ2F0ZTogRGJ4VGFibGVSZWFkZXJEZWxlZ2F0ZTxDLCBULCBPPjtcbiAgLyoqXG4gICAqIFRoZSB0YWJsZSBzdG9yZSB1c2VkIGZvciByZXRyaWV2aW5nIHRoZSBpdGVtcy5cbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlU3RvcmU6IERieFRhYmxlU3RvcmU8dW5rbm93biwgQywgVD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhUYWJsZVJlYWRlcjxDLCBULCBPPihjb25maWc6IERieFRhYmxlUmVhZGVyQ29uZmlnPEMsIFQsIE8+KTogRGJ4VGFibGVSZWFkZXI8QywgVCwgTz4ge1xuICBjb25zdCB7IGRlbGVnYXRlLCB0YWJsZVN0b3JlIH0gPSBjb25maWc7XG4gIGNvbnN0IHsgaXRlbXMkIH0gPSB0YWJsZVN0b3JlO1xuICBjb25zdCB7IHJlYWRJdGVtQ2VsbERhdGFGb3JDb2x1bW4sIHRyYWNrQ29sdW1uOiBpbnB1dFRyYWNrQ29sdW1uLCB0cmFja0l0ZW0gfSA9IGRlbGVnYXRlO1xuICBjb25zdCB0cmFja0NvbHVtbiA9IChpbnB1dFRyYWNrQ29sdW1uID8/IERFRkFVTFRfREJYX1RBQkxFX1JFQURFUl9DT0xVTU5fVFJBQ0tfQlkpIGFzIERieFRhYmxlUmVhZGVyQ29sdW1uVHJhY2tCeUZ1bmN0aW9uPEM+O1xuXG4gIGludGVyZmFjZSBEYnhUYWJsZVJlYWRlckNlbGxEYXRhQWNjZXNzb3JzRm9yQ29sdW1uIHtcbiAgICByZWFkb25seSBjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+O1xuICAgIHJlYWRvbmx5IGFsbFZhbHVlcyQ6IE9ic2VydmFibGU8RGJ4VGFibGVSZWFkZXJDZWxsRGF0YVBhaXI8QywgVCwgTz5bXT47XG4gICAgcmVhZG9ubHkgYWNjZXNzb3JzUmVjb3JkOiBEYnhUYWJsZVJlYWRlckNlbGxEYXRhQWNjZXNzb3JzRm9yQ29sdW1uUmVjb3JkO1xuICB9XG5cbiAgdHlwZSBEYnhUYWJsZVJlYWRlckNlbGxEYXRhQWNjZXNzb3JzRm9yQ29sdW1uUmVjb3JkID0gUmVjb3JkPERieFRhYmxlUmVhZGVySXRlbUtleSwgT2JzZXJ2YWJsZTxEYnhUYWJsZVJlYWRlckNlbGxEYXRhUGFpcjxDLCBULCBPPj4+O1xuXG4gIGNvbnN0IF9jZWxsRGF0YUFjY2Vzc29yc0ZvckNvbHVtbiA9IChjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+KTogT2JzZXJ2YWJsZTxEYnhUYWJsZVJlYWRlckNlbGxEYXRhQWNjZXNzb3JzRm9yQ29sdW1uPiA9PiB7XG4gICAgcmV0dXJuIGl0ZW1zJC5waXBlKFxuICAgICAgbWFwKCh4KSA9PiB7XG4gICAgICAgIGNvbnN0IGFsbE9ic2VydmFibGVzOiBPYnNlcnZhYmxlPERieFRhYmxlUmVhZGVyQ2VsbERhdGFQYWlyPEMsIFQsIE8+PltdID0gW107XG4gICAgICAgIGNvbnN0IGFjY2Vzc29yc1JlY29yZDogRGJ4VGFibGVSZWFkZXJDZWxsRGF0YUFjY2Vzc29yc0ZvckNvbHVtblJlY29yZCA9IHt9O1xuXG4gICAgICAgIHguZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGl0ZW1LZXkgPSB0cmFja0l0ZW0oaXRlbSk7XG4gICAgICAgICAgY29uc3QgYWNjZXNzb3IkID0gcmVhZEl0ZW1DZWxsRGF0YUZvckNvbHVtbihjb2x1bW4sIGl0ZW0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGFjY2Vzc29yc1JlY29yZFtpdGVtS2V5XSA9IGFjY2Vzc29yJDtcbiAgICAgICAgICBhbGxPYnNlcnZhYmxlcy5wdXNoKGFjY2Vzc29yJCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGFsbFZhbHVlcyQgPSBjb21iaW5lTGF0ZXN0KGFsbE9ic2VydmFibGVzKS5waXBlKHN0YXJ0V2l0aChbXSksIHNoYXJlUmVwbGF5KDEpKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICBhbGxWYWx1ZXMkLFxuICAgICAgICAgIGFjY2Vzc29yc1JlY29yZFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH07XG5cbiAgaW50ZXJmYWNlIERieFRhYmxlUmVhZGVyQ29sdW1uRGF0YUNlbGxzQWNjZXNzb3Ige1xuICAgIHJlYWRvbmx5IGNvbHVtbktleTogRGJ4VGFibGVSZWFkZXJDb2x1bW5LZXk7XG4gICAgcmVhZG9ubHkgY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxDPjtcbiAgICByZWFkb25seSBjZWxsRGF0YUFjY2Vzc29ycyQ6IE9ic2VydmFibGU8RGJ4VGFibGVSZWFkZXJDZWxsRGF0YUFjY2Vzc29yc0ZvckNvbHVtbj47XG4gICAgcmVhZG9ubHkgY2VsbERhdGEkOiBPYnNlcnZhYmxlPERieFRhYmxlUmVhZGVyQ2VsbERhdGFQYWlyPEMsIFQsIE8+W10+O1xuICB9XG5cbiAgZnVuY3Rpb24gY29sdW1uRGF0YUNlbGxzQWNjZXNzb3IoY29sdW1uS2V5OiBEYnhUYWJsZVJlYWRlckNvbHVtbktleSwgY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxDPik6IERieFRhYmxlUmVhZGVyQ29sdW1uRGF0YUNlbGxzQWNjZXNzb3Ige1xuICAgIGNvbnN0IGNlbGxEYXRhQWNjZXNzb3JzJCA9IF9jZWxsRGF0YUFjY2Vzc29yc0ZvckNvbHVtbihjb2x1bW4pO1xuICAgIGNvbnN0IGNlbGxEYXRhJCA9IGNlbGxEYXRhQWNjZXNzb3JzJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZWNvcmQpID0+IHJlY29yZC5hbGxWYWx1ZXMkKSxcbiAgICAgIHN0YXJ0V2l0aChbXSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uS2V5LFxuICAgICAgY29sdW1uLFxuICAgICAgY2VsbERhdGFBY2Nlc3NvcnMkLFxuICAgICAgY2VsbERhdGEkXG4gICAgfTtcbiAgfVxuXG4gIGludGVyZmFjZSBEYnhUYWJsZVJlYWRlckNvbHVtbkRhdGFBY2N1bXVsYXRvciB7XG4gICAgcmVhZG9ubHkgcmVjb3JkOiBEYnhUYWJsZVJlYWRlckNvbHVtbkRhdGFSZWNvcmQ7XG4gIH1cblxuICB0eXBlIERieFRhYmxlUmVhZGVyQ29sdW1uRGF0YVJlY29yZCA9IFJlY29yZDxEYnhUYWJsZVJlYWRlckNvbHVtbktleSwgRGJ4VGFibGVSZWFkZXJDb2x1bW5EYXRhQ2VsbHNBY2Nlc3Nvcj47XG5cbiAgY29uc3QgYWxsQ29sdW1uc0RhdGEkOiBPYnNlcnZhYmxlPERieFRhYmxlUmVhZGVyQ29sdW1uRGF0YUFjY3VtdWxhdG9yPiA9IHRhYmxlU3RvcmUuY29sdW1ucyQucGlwZShcbiAgICBtYXAoKG5leHRDb2x1bW5zOiBEYnhUYWJsZUNvbHVtbjxDPltdKSA9PiB7XG4gICAgICBjb25zdCByZWNvcmQ6IERieFRhYmxlUmVhZGVyQ29sdW1uRGF0YVJlY29yZCA9IHt9O1xuXG4gICAgICBuZXh0Q29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uS2V5ID0gdHJhY2tDb2x1bW4oY29sdW1uKTtcbiAgICAgICAgcmVjb3JkW2NvbHVtbktleV0gPSBjb2x1bW5EYXRhQ2VsbHNBY2Nlc3Nvcihjb2x1bW5LZXksIGNvbHVtbik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVjb3JkXG4gICAgICB9O1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3QgX2NvbHVtbkFjY2Vzc29yRm9yQ29sdW1uID0gKGNvbHVtbjogRGJ4VGFibGVDb2x1bW48Qz4pOiBPYnNlcnZhYmxlPE1heWJlPERieFRhYmxlUmVhZGVyQ29sdW1uRGF0YUNlbGxzQWNjZXNzb3I+PiA9PiB7XG4gICAgY29uc3QgY29sdW1uS2V5ID0gdHJhY2tDb2x1bW4oY29sdW1uKTtcbiAgICByZXR1cm4gYWxsQ29sdW1uc0RhdGEkLnBpcGUoXG4gICAgICBtYXAoKGNvbHVtbnNEYXRhKSA9PiBjb2x1bW5zRGF0YS5yZWNvcmRbY29sdW1uS2V5XSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgbG9hZENlbGxEYXRhUGFpcnNGb3JDb2x1bW4gPSAoY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxDPik6IE9ic2VydmFibGU8RGJ4VGFibGVSZWFkZXJDZWxsRGF0YVBhaXI8QywgVCwgTz5bXT4gPT4ge1xuICAgIGNvbnN0IGNvbHVtbnNEYXRhJCA9IF9jb2x1bW5BY2Nlc3NvckZvckNvbHVtbihjb2x1bW4pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGFjY2Vzc29yKSA9PiB7XG4gICAgICAgIC8vIHdoZW4gdmlzaWJpbGl0eSBjaGFuZ2VzLCB0aGUgZGF0YSB3aWxsIGNoYW5nZSB0byBiZSBhbiBlbXB0eSBhcnJheVxuICAgICAgICByZXR1cm4gYWNjZXNzb3IgPyBhY2Nlc3Nvci5jZWxsRGF0YSQgOiBvZihbXSk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIHJldHVybiBjb2x1bW5zRGF0YSQ7XG4gIH07XG5cbiAgY29uc3QgY2VsbERhdGFQYWlyc0ZvckNvbHVtbiA9IChjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+KTogT2JzZXJ2YWJsZTxEYnhUYWJsZVJlYWRlckNlbGxEYXRhUGFpcjxDLCBULCBPPltdPiA9PiB7XG4gICAgcmV0dXJuIGxvYWRDZWxsRGF0YVBhaXJzRm9yQ29sdW1uKGNvbHVtbik7XG4gIH07XG5cbiAgY29uc3QgY2VsbERhdGFGb3JDb2x1bW4gPSAoY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxDPik6IE9ic2VydmFibGU8T1tdPiA9PiB7XG4gICAgcmV0dXJuIGNlbGxEYXRhUGFpcnNGb3JDb2x1bW4oY29sdW1uKS5waXBlKFxuICAgICAgbWFwKChwYWlycykgPT4gZmlsdGVyTWF5YmVBcnJheVZhbHVlcyhwYWlycy5tYXAoKHBhaXIpID0+IHBhaXIudmFsdWUpKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgY2VsbERhdGFQYWlyRm9yQ29sdW1uQW5kSXRlbSA9IChjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+LCBpdGVtOiBUKTogT2JzZXJ2YWJsZTxNYXliZTxEYnhUYWJsZVJlYWRlckNlbGxEYXRhUGFpcjxDLCBULCBPPj4+ID0+IHtcbiAgICBjb25zdCBpdGVtS2V5ID0gdHJhY2tJdGVtKGl0ZW0pO1xuICAgIGNvbnN0IGNvbHVtbnNEYXRhJCA9IF9jb2x1bW5BY2Nlc3NvckZvckNvbHVtbihjb2x1bW4pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGNvbHVtbnNEYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiBjb2x1bW5zRGF0YVxuICAgICAgICAgID8gY29sdW1uc0RhdGEuY2VsbERhdGFBY2Nlc3NvcnMkLnBpcGUoXG4gICAgICAgICAgICAgIHN3aXRjaE1hcCgoY2VsbERhdGFBY2Nlc3NvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1BY2Nlc3NvciA9IGNlbGxEYXRhQWNjZXNzb3IuYWNjZXNzb3JzUmVjb3JkW2l0ZW1LZXldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogT2JzZXJ2YWJsZTxNYXliZTxEYnhUYWJsZVJlYWRlckNlbGxEYXRhUGFpcjxDLCBULCBPPj4+ID0gaXRlbUFjY2Vzc29yID8gaXRlbUFjY2Vzc29yIDogb2YobnVsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG9mKG51bGwpO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICByZXR1cm4gY29sdW1uc0RhdGEkO1xuICB9O1xuXG4gIGNvbnN0IGNlbGxEYXRhRm9yQ29sdW1uQW5kSXRlbSA9IChjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+LCBpdGVtOiBUKTogT2JzZXJ2YWJsZTxNYXliZTxPPj4gPT4ge1xuICAgIHJldHVybiBjZWxsRGF0YVBhaXJGb3JDb2x1bW5BbmRJdGVtKGNvbHVtbiwgaXRlbSkucGlwZShtYXAoKHBhaXIpID0+IHBhaXI/LnZhbHVlKSk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBkZWxlZ2F0ZSxcbiAgICBjZWxsRGF0YVBhaXJzRm9yQ29sdW1uLFxuICAgIGNlbGxEYXRhRm9yQ29sdW1uLFxuICAgIGNlbGxEYXRhUGFpckZvckNvbHVtbkFuZEl0ZW0sXG4gICAgY2VsbERhdGFGb3JDb2x1bW5BbmRJdGVtXG4gIH07XG59XG4iXX0=
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUucmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi90YWJsZS9zcmMvbGliL3RhYmxlLnJlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0YsT0FBTyxFQUF1QixzQkFBc0IsRUFBMkIsTUFBTSxlQUFlLENBQUM7QUEyQnJHOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3Q0FBd0MsR0FBcUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7QUE0RXhKLE1BQU0sVUFBVSxjQUFjLENBQXVCLE1BQXdDO0lBQzNGLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3hDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFDOUIsTUFBTSxFQUFFLHlCQUF5QixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxRQUFRLENBQUM7SUFDekYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSx3Q0FBd0MsQ0FBMkMsQ0FBQztJQVU3SCxNQUFNLDJCQUEyQixHQUFHLENBQUMsTUFBeUIsRUFBd0QsRUFBRTtRQUN0SCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1IsTUFBTSxjQUFjLEdBQXNELEVBQUUsQ0FBQztZQUM3RSxNQUFNLGVBQWUsR0FBbUQsRUFBRSxDQUFDO1lBRTNFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDakIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQyxNQUFNLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUM1RCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDWixPQUFPO3dCQUNMLE1BQU07d0JBQ04sSUFBSTt3QkFDSixLQUFLO3FCQUNOLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztnQkFFRixlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsU0FBUyxDQUFDO2dCQUNyQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFckYsT0FBTztnQkFDTCxNQUFNO2dCQUNOLFVBQVU7Z0JBQ1YsZUFBZTthQUNoQixDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFDSixDQUFDLENBQUM7SUFTRixTQUFTLHVCQUF1QixDQUFDLFNBQWtDLEVBQUUsTUFBeUI7UUFDNUYsTUFBTSxrQkFBa0IsR0FBRywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQ3ZDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUN4QyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQ2IsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFRixPQUFPO1lBQ0wsU0FBUztZQUNULE1BQU07WUFDTixrQkFBa0I7WUFDbEIsU0FBUztTQUNWLENBQUM7SUFDSixDQUFDO0lBUUQsTUFBTSxlQUFlLEdBQW9ELFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUMvRixHQUFHLENBQUMsQ0FBQyxXQUFnQyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxNQUFNLEdBQW1DLEVBQUUsQ0FBQztRQUVsRCxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDN0IsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUVGLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUF5QixFQUE0RCxFQUFFO1FBQ3ZILE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQ3pCLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUNuRCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxNQUF5QixFQUFxRCxFQUFFO1FBQ2xILE1BQU0sWUFBWSxHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDeEQsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDckIscUVBQXFFO1lBQ3JFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFRixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDLENBQUM7SUFFRixNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBeUIsRUFBcUQsRUFBRTtRQUM5RyxPQUFPLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQztJQUVGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUF5QixFQUFtQixFQUFFO1FBQ3ZFLE9BQU8sc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUN4QyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ3ZFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLE1BQXlCLEVBQUUsSUFBTyxFQUEwRCxFQUFFO1FBQ2xJLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxNQUFNLFlBQVksR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3hELFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3hCLE9BQU8sV0FBVztnQkFDaEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQ2pDLFNBQVMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7b0JBQzdCLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDL0QsTUFBTSxNQUFNLEdBQTJELFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlHLE9BQU8sTUFBTSxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FDSDtnQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFRixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDLENBQUM7SUFFRixNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBeUIsRUFBRSxJQUFPLEVBQXdCLEVBQUU7UUFDNUYsT0FBTyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNMLFVBQVU7UUFDVixRQUFRO1FBQ1Isc0JBQXNCO1FBQ3RCLGlCQUFpQjtRQUNqQiw0QkFBNEI7UUFDNUIsd0JBQXdCO0tBQ3pCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcmltYXRpdmVLZXksIE1heWJlLCBmaWx0ZXJNYXliZUFycmF5VmFsdWVzLCBSZWFkUmVxdWlyZWRLZXlGdW5jdGlvbiB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4VGFibGVDb2x1bW4gfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IERieFRhYmxlU3RvcmUgfSBmcm9tICcuL3RhYmxlLnN0b3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhUYWJsZVJlYWRlckNlbGxQYWlyPEMsIFQ+IHtcbiAgcmVhZG9ubHkgY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxDPjtcbiAgcmVhZG9ubHkgaXRlbTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhUYWJsZVJlYWRlckNlbGxEYXRhUGFpcjxDLCBULCBPPiBleHRlbmRzIERieFRhYmxlUmVhZGVyQ2VsbFBhaXI8QywgVD4ge1xuICByZWFkb25seSB2YWx1ZTogTztcbn1cblxuLyoqXG4gKiBLZXkgdXNlZCBmb3IgdHJhY2tpbmcgY29sdW1ucy5cbiAqXG4gKiBHZW5lcmFsbHkgdGhlIHRhYmxlIG5hbWUgaXMgdXNlZCBmb3IgdGhpcy5cbiAqL1xuZXhwb3J0IHR5cGUgRGJ4VGFibGVSZWFkZXJDb2x1bW5LZXkgPSBzdHJpbmc7XG5cbi8qKlxuICogS2V5IHVzZWQgZm9yIHRyYWNraW5nIGl0ZW1zLlxuICpcbiAqIEdlbmVyYWxseSB0aGUgaXRlbSdzIHVuaXF1ZSBpZGVudGlmaWVyIGlzIHVzZWQgZm9yIHRoaXMuXG4gKi9cbmV4cG9ydCB0eXBlIERieFRhYmxlUmVhZGVySXRlbUtleSA9IFByaW1hdGl2ZUtleTtcblxuLyoqXG4gKiBEZWZhdWx0IHRyYWNrIGJ5IGZ1bmN0aW9uIGZvciBEYnhUYWJsZUNvbHVtbi5cbiAqXG4gKiBSZXR1cm5zIHRoZSBjb2x1bW4gbmFtZS5cbiAqXG4gKiBAcGFyYW0gY29sdW1uXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9EQlhfVEFCTEVfUkVBREVSX0NPTFVNTl9UUkFDS19CWTogUmVhZFJlcXVpcmVkS2V5RnVuY3Rpb248RGJ4VGFibGVDb2x1bW48RGJ4VGFibGVSZWFkZXJDb2x1bW5LZXk+PiA9IChjb2x1bW4pID0+IGNvbHVtbi5jb2x1bW5OYW1lO1xuXG4vKipcbiAqIEZ1bmN0aW9uIHVzZWQgZm9yIHRyYWNraW5nIHVuaXF1ZSBjb2x1bW5zIHVzaW5nIHRoZSBjb2x1bW4ncyBkYXRhLlxuICpcbiAqIElmIHRoZSBjb2x1bW4ga2V5IHZhbHVlIGlzIHRoZSBzYW1lIGJldHdlZW4gdGhvc2UgdHdvIGNvbHVtbnMsIHRoZW4gdGhlIG1ldGFkYXRhIG9mIGJvdGggY29sdW1ucyB3aWxsIGJlIGNvbnNpZGVyZWQgdGhlIHNhbWUvZXF1YWwuXG4gKi9cbmV4cG9ydCB0eXBlIERieFRhYmxlUmVhZGVyQ29sdW1uVHJhY2tCeUZ1bmN0aW9uPEM+ID0gUmVhZFJlcXVpcmVkS2V5RnVuY3Rpb248RGJ4VGFibGVDb2x1bW48Qz4sIERieFRhYmxlUmVhZGVyQ29sdW1uS2V5PjtcblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIGZvciB0cmFja2luZyB1bmlxdWUgY29sdW1ucyB1c2luZyB0aGUgY29sdW1uJ3MgZGF0YS5cbiAqXG4gKiBJZiB0aGUgY29sdW1uIGtleSB2YWx1ZSBpcyB0aGUgc2FtZSBiZXR3ZWVuIHRob3NlIHR3byBjb2x1bW5zLCB0aGVuIHRoZSBtZXRhZGF0YSBvZiBib3RoIGNvbHVtbnMgd2lsbCBiZSBjb25zaWRlcmVkIHRoZSBzYW1lL2VxdWFsLlxuICovXG5leHBvcnQgdHlwZSBEYnhUYWJsZVJlYWRlckl0ZW1UcmFja0J5RnVuY3Rpb248VD4gPSBSZWFkUmVxdWlyZWRLZXlGdW5jdGlvbjxULCBEYnhUYWJsZVJlYWRlckl0ZW1LZXk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERieFRhYmxlUmVhZGVyRGVsZWdhdGU8QywgVCwgTz4ge1xuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBkYXRhIGZvciBhIHNwZWNpZmljIGNvbHVtbiBhbmQgaXRlbS9yb3cuXG4gICAqXG4gICAqIEBwYXJhbSBjb2x1bW5cbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG4gIHJlYWRJdGVtQ2VsbERhdGFGb3JDb2x1bW4oY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxDPiwgaXRlbTogVCk6IE9ic2VydmFibGU8Tz47XG4gIC8qKlxuICAgKiBVc2VkIGZvciB0cmFja2luZyB1bmlxdWUgY29sdW1ucy5cbiAgICpcbiAgICogVXNlIGlmIHRoZSBtZXRhZGF0YSBiZXR3ZWVuIGNvbHVtbnMgc2hvdWxkIGJlIHVzZWQgZm9yIHVuaXF1ZSBpZGVudGlmaWNhdGlvbi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdXNpbmcgdGhlIGNvbHVtbiBuYW1lIGFzIHRoZSBrZXkgaWYgbm90IGRlZmluZWQuXG4gICAqL1xuICB0cmFja0NvbHVtbj86IERieFRhYmxlUmVhZGVyQ29sdW1uVHJhY2tCeUZ1bmN0aW9uPEM+O1xuICAvKipcbiAgICogVXNlZCBmb3IgdHJhY2tpbmcgdW5pcXVlIGl0ZW1zL3Jvd3MuXG4gICAqXG4gICAqIFVzZSBpZiB0aGUgbWV0YWRhdGEgYmV0d2VlbiBpdGVtcyBzaG91bGQgYmUgdXNlZCBmb3IgdW5pcXVlIGlkZW50aWZpY2F0aW9uLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB1c2luZyB0aGUgaXRlbSBpdHNlbGYgYXMgdGhlIGtleSBpZiBub3QgZGVmaW5lZC5cbiAgICovXG4gIHRyYWNrSXRlbTogRGJ4VGFibGVSZWFkZXJJdGVtVHJhY2tCeUZ1bmN0aW9uPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieFRhYmxlUmVhZGVyQ29uZmlnPEMsIFQsIE8sIEcgPSB1bmtub3duPiB7XG4gIC8qKlxuICAgKiBEZWxlZ2F0ZSB1c2VkIGZvciByZXRyaWV2aW5nIHRoZSBkYXRhIGZvciBhIHNwZWNpZmljIGNvbHVtbiBhbmQgaXRlbS9yb3cuXG4gICAqL1xuICByZWFkb25seSBkZWxlZ2F0ZTogRGJ4VGFibGVSZWFkZXJEZWxlZ2F0ZTxDLCBULCBPPjtcbiAgLyoqXG4gICAqIFRoZSB0YWJsZSBzdG9yZSB1c2VkIGZvciByZXRyaWV2aW5nIHRoZSBpdGVtcy5cbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlU3RvcmU6IERieFRhYmxlU3RvcmU8dW5rbm93biwgQywgVCwgRz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4VGFibGVSZWFkZXI8QywgVCwgTywgRyA9IHVua25vd24+IGV4dGVuZHMgRGJ4VGFibGVSZWFkZXJDb25maWc8QywgVCwgTywgRz4ge1xuICAvKipcbiAgICogUmV0cmlldmVzIGFsbCBjZWxsIGRhdGEgcGFpcnMgZm9yIGEgc3BlY2lmaWMgY29sdW1uLlxuICAgKi9cbiAgY2VsbERhdGFQYWlyc0ZvckNvbHVtbihjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+KTogT2JzZXJ2YWJsZTxEYnhUYWJsZVJlYWRlckNlbGxEYXRhUGFpcjxDLCBULCBPPltdPjtcbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhbGwgY2VsbCBkYXRhIGZvciBhIHNwZWNpZmljIGNvbHVtbi5cbiAgICovXG4gIGNlbGxEYXRhRm9yQ29sdW1uKGNvbHVtbjogRGJ4VGFibGVDb2x1bW48Qz4pOiBPYnNlcnZhYmxlPE9bXT47XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGNlbGwgZGF0YSBwYWlyIGZvciBhIHNwZWNpZmljIGNvbHVtbiBhbmQgaXRlbS5cbiAgICpcbiAgICogUmV0dXJucyBudWxsIGlmIHRoZSBjb2x1bW4gaXMgbm90IHZpc2libGUgb3IgdGhlIGl0ZW0gaXMgbm90IGZvdW5kLlxuICAgKi9cbiAgY2VsbERhdGFQYWlyRm9yQ29sdW1uQW5kSXRlbShjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+LCBpdGVtOiBUKTogT2JzZXJ2YWJsZTxNYXliZTxEYnhUYWJsZVJlYWRlckNlbGxEYXRhUGFpcjxDLCBULCBPPj4+O1xuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjZWxsIGRhdGEgZm9yIGEgc3BlY2lmaWMgY29sdW1uIGFuZCBpdGVtLlxuICAgKlxuICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGNvbHVtbiBpcyBub3QgdmlzaWJsZSBvciB0aGUgaXRlbSBpcyBub3QgZm91bmQuXG4gICAqL1xuICBjZWxsRGF0YUZvckNvbHVtbkFuZEl0ZW0oY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxDPiwgaXRlbTogVCk6IE9ic2VydmFibGU8TWF5YmU8Tz4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGJ4VGFibGVSZWFkZXI8QywgVCwgTywgRyA9IHVua25vd24+KGNvbmZpZzogRGJ4VGFibGVSZWFkZXJDb25maWc8QywgVCwgTywgRz4pOiBEYnhUYWJsZVJlYWRlcjxDLCBULCBPLCBHPiB7XG4gIGNvbnN0IHsgZGVsZWdhdGUsIHRhYmxlU3RvcmUgfSA9IGNvbmZpZztcbiAgY29uc3QgeyBpdGVtcyQgfSA9IHRhYmxlU3RvcmU7XG4gIGNvbnN0IHsgcmVhZEl0ZW1DZWxsRGF0YUZvckNvbHVtbiwgdHJhY2tDb2x1bW46IGlucHV0VHJhY2tDb2x1bW4sIHRyYWNrSXRlbSB9ID0gZGVsZWdhdGU7XG4gIGNvbnN0IHRyYWNrQ29sdW1uID0gKGlucHV0VHJhY2tDb2x1bW4gPz8gREVGQVVMVF9EQlhfVEFCTEVfUkVBREVSX0NPTFVNTl9UUkFDS19CWSkgYXMgRGJ4VGFibGVSZWFkZXJDb2x1bW5UcmFja0J5RnVuY3Rpb248Qz47XG5cbiAgaW50ZXJmYWNlIERieFRhYmxlUmVhZGVyQ2VsbERhdGFBY2Nlc3NvcnNGb3JDb2x1bW4ge1xuICAgIHJlYWRvbmx5IGNvbHVtbjogRGJ4VGFibGVDb2x1bW48Qz47XG4gICAgcmVhZG9ubHkgYWxsVmFsdWVzJDogT2JzZXJ2YWJsZTxEYnhUYWJsZVJlYWRlckNlbGxEYXRhUGFpcjxDLCBULCBPPltdPjtcbiAgICByZWFkb25seSBhY2Nlc3NvcnNSZWNvcmQ6IERieFRhYmxlUmVhZGVyQ2VsbERhdGFBY2Nlc3NvcnNGb3JDb2x1bW5SZWNvcmQ7XG4gIH1cblxuICB0eXBlIERieFRhYmxlUmVhZGVyQ2VsbERhdGFBY2Nlc3NvcnNGb3JDb2x1bW5SZWNvcmQgPSBSZWNvcmQ8RGJ4VGFibGVSZWFkZXJJdGVtS2V5LCBPYnNlcnZhYmxlPERieFRhYmxlUmVhZGVyQ2VsbERhdGFQYWlyPEMsIFQsIE8+Pj47XG5cbiAgY29uc3QgX2NlbGxEYXRhQWNjZXNzb3JzRm9yQ29sdW1uID0gKGNvbHVtbjogRGJ4VGFibGVDb2x1bW48Qz4pOiBPYnNlcnZhYmxlPERieFRhYmxlUmVhZGVyQ2VsbERhdGFBY2Nlc3NvcnNGb3JDb2x1bW4+ID0+IHtcbiAgICByZXR1cm4gaXRlbXMkLnBpcGUoXG4gICAgICBtYXAoKHgpID0+IHtcbiAgICAgICAgY29uc3QgYWxsT2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8RGJ4VGFibGVSZWFkZXJDZWxsRGF0YVBhaXI8QywgVCwgTz4+W10gPSBbXTtcbiAgICAgICAgY29uc3QgYWNjZXNzb3JzUmVjb3JkOiBEYnhUYWJsZVJlYWRlckNlbGxEYXRhQWNjZXNzb3JzRm9yQ29sdW1uUmVjb3JkID0ge307XG5cbiAgICAgICAgeC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbUtleSA9IHRyYWNrSXRlbShpdGVtKTtcbiAgICAgICAgICBjb25zdCBhY2Nlc3NvciQgPSByZWFkSXRlbUNlbGxEYXRhRm9yQ29sdW1uKGNvbHVtbiwgaXRlbSkucGlwZShcbiAgICAgICAgICAgIG1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgYWNjZXNzb3JzUmVjb3JkW2l0ZW1LZXldID0gYWNjZXNzb3IkO1xuICAgICAgICAgIGFsbE9ic2VydmFibGVzLnB1c2goYWNjZXNzb3IkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYWxsVmFsdWVzJCA9IGNvbWJpbmVMYXRlc3QoYWxsT2JzZXJ2YWJsZXMpLnBpcGUoc3RhcnRXaXRoKFtdKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIGFsbFZhbHVlcyQsXG4gICAgICAgICAgYWNjZXNzb3JzUmVjb3JkXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfTtcblxuICBpbnRlcmZhY2UgRGJ4VGFibGVSZWFkZXJDb2x1bW5EYXRhQ2VsbHNBY2Nlc3NvciB7XG4gICAgcmVhZG9ubHkgY29sdW1uS2V5OiBEYnhUYWJsZVJlYWRlckNvbHVtbktleTtcbiAgICByZWFkb25seSBjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+O1xuICAgIHJlYWRvbmx5IGNlbGxEYXRhQWNjZXNzb3JzJDogT2JzZXJ2YWJsZTxEYnhUYWJsZVJlYWRlckNlbGxEYXRhQWNjZXNzb3JzRm9yQ29sdW1uPjtcbiAgICByZWFkb25seSBjZWxsRGF0YSQ6IE9ic2VydmFibGU8RGJ4VGFibGVSZWFkZXJDZWxsRGF0YVBhaXI8QywgVCwgTz5bXT47XG4gIH1cblxuICBmdW5jdGlvbiBjb2x1bW5EYXRhQ2VsbHNBY2Nlc3Nvcihjb2x1bW5LZXk6IERieFRhYmxlUmVhZGVyQ29sdW1uS2V5LCBjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+KTogRGJ4VGFibGVSZWFkZXJDb2x1bW5EYXRhQ2VsbHNBY2Nlc3NvciB7XG4gICAgY29uc3QgY2VsbERhdGFBY2Nlc3NvcnMkID0gX2NlbGxEYXRhQWNjZXNzb3JzRm9yQ29sdW1uKGNvbHVtbik7XG4gICAgY29uc3QgY2VsbERhdGEkID0gY2VsbERhdGFBY2Nlc3NvcnMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHJlY29yZCkgPT4gcmVjb3JkLmFsbFZhbHVlcyQpLFxuICAgICAgc3RhcnRXaXRoKFtdKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb2x1bW5LZXksXG4gICAgICBjb2x1bW4sXG4gICAgICBjZWxsRGF0YUFjY2Vzc29ycyQsXG4gICAgICBjZWxsRGF0YSRcbiAgICB9O1xuICB9XG5cbiAgaW50ZXJmYWNlIERieFRhYmxlUmVhZGVyQ29sdW1uRGF0YUFjY3VtdWxhdG9yIHtcbiAgICByZWFkb25seSByZWNvcmQ6IERieFRhYmxlUmVhZGVyQ29sdW1uRGF0YVJlY29yZDtcbiAgfVxuXG4gIHR5cGUgRGJ4VGFibGVSZWFkZXJDb2x1bW5EYXRhUmVjb3JkID0gUmVjb3JkPERieFRhYmxlUmVhZGVyQ29sdW1uS2V5LCBEYnhUYWJsZVJlYWRlckNvbHVtbkRhdGFDZWxsc0FjY2Vzc29yPjtcblxuICBjb25zdCBhbGxDb2x1bW5zRGF0YSQ6IE9ic2VydmFibGU8RGJ4VGFibGVSZWFkZXJDb2x1bW5EYXRhQWNjdW11bGF0b3I+ID0gdGFibGVTdG9yZS5jb2x1bW5zJC5waXBlKFxuICAgIG1hcCgobmV4dENvbHVtbnM6IERieFRhYmxlQ29sdW1uPEM+W10pID0+IHtcbiAgICAgIGNvbnN0IHJlY29yZDogRGJ4VGFibGVSZWFkZXJDb2x1bW5EYXRhUmVjb3JkID0ge307XG5cbiAgICAgIG5leHRDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW5LZXkgPSB0cmFja0NvbHVtbihjb2x1bW4pO1xuICAgICAgICByZWNvcmRbY29sdW1uS2V5XSA9IGNvbHVtbkRhdGFDZWxsc0FjY2Vzc29yKGNvbHVtbktleSwgY29sdW1uKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICByZWNvcmRcbiAgICAgIH07XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBjb25zdCBfY29sdW1uQWNjZXNzb3JGb3JDb2x1bW4gPSAoY29sdW1uOiBEYnhUYWJsZUNvbHVtbjxDPik6IE9ic2VydmFibGU8TWF5YmU8RGJ4VGFibGVSZWFkZXJDb2x1bW5EYXRhQ2VsbHNBY2Nlc3Nvcj4+ID0+IHtcbiAgICBjb25zdCBjb2x1bW5LZXkgPSB0cmFja0NvbHVtbihjb2x1bW4pO1xuICAgIHJldHVybiBhbGxDb2x1bW5zRGF0YSQucGlwZShcbiAgICAgIG1hcCgoY29sdW1uc0RhdGEpID0+IGNvbHVtbnNEYXRhLnJlY29yZFtjb2x1bW5LZXldKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBsb2FkQ2VsbERhdGFQYWlyc0ZvckNvbHVtbiA9IChjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+KTogT2JzZXJ2YWJsZTxEYnhUYWJsZVJlYWRlckNlbGxEYXRhUGFpcjxDLCBULCBPPltdPiA9PiB7XG4gICAgY29uc3QgY29sdW1uc0RhdGEkID0gX2NvbHVtbkFjY2Vzc29yRm9yQ29sdW1uKGNvbHVtbikucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoYWNjZXNzb3IpID0+IHtcbiAgICAgICAgLy8gd2hlbiB2aXNpYmlsaXR5IGNoYW5nZXMsIHRoZSBkYXRhIHdpbGwgY2hhbmdlIHRvIGJlIGFuIGVtcHR5IGFycmF5XG4gICAgICAgIHJldHVybiBhY2Nlc3NvciA/IGFjY2Vzc29yLmNlbGxEYXRhJCA6IG9mKFtdKTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGNvbHVtbnNEYXRhJDtcbiAgfTtcblxuICBjb25zdCBjZWxsRGF0YVBhaXJzRm9yQ29sdW1uID0gKGNvbHVtbjogRGJ4VGFibGVDb2x1bW48Qz4pOiBPYnNlcnZhYmxlPERieFRhYmxlUmVhZGVyQ2VsbERhdGFQYWlyPEMsIFQsIE8+W10+ID0+IHtcbiAgICByZXR1cm4gbG9hZENlbGxEYXRhUGFpcnNGb3JDb2x1bW4oY29sdW1uKTtcbiAgfTtcblxuICBjb25zdCBjZWxsRGF0YUZvckNvbHVtbiA9IChjb2x1bW46IERieFRhYmxlQ29sdW1uPEM+KTogT2JzZXJ2YWJsZTxPW10+ID0+IHtcbiAgICByZXR1cm4gY2VsbERhdGFQYWlyc0ZvckNvbHVtbihjb2x1bW4pLnBpcGUoXG4gICAgICBtYXAoKHBhaXJzKSA9PiBmaWx0ZXJNYXliZUFycmF5VmFsdWVzKHBhaXJzLm1hcCgocGFpcikgPT4gcGFpci52YWx1ZSkpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBjZWxsRGF0YVBhaXJGb3JDb2x1bW5BbmRJdGVtID0gKGNvbHVtbjogRGJ4VGFibGVDb2x1bW48Qz4sIGl0ZW06IFQpOiBPYnNlcnZhYmxlPE1heWJlPERieFRhYmxlUmVhZGVyQ2VsbERhdGFQYWlyPEMsIFQsIE8+Pj4gPT4ge1xuICAgIGNvbnN0IGl0ZW1LZXkgPSB0cmFja0l0ZW0oaXRlbSk7XG4gICAgY29uc3QgY29sdW1uc0RhdGEkID0gX2NvbHVtbkFjY2Vzc29yRm9yQ29sdW1uKGNvbHVtbikucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoY29sdW1uc0RhdGEpID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbnNEYXRhXG4gICAgICAgICAgPyBjb2x1bW5zRGF0YS5jZWxsRGF0YUFjY2Vzc29ycyQucGlwZShcbiAgICAgICAgICAgICAgc3dpdGNoTWFwKChjZWxsRGF0YUFjY2Vzc29yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUFjY2Vzc29yID0gY2VsbERhdGFBY2Nlc3Nvci5hY2Nlc3NvcnNSZWNvcmRbaXRlbUtleV07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBPYnNlcnZhYmxlPE1heWJlPERieFRhYmxlUmVhZGVyQ2VsbERhdGFQYWlyPEMsIFQsIE8+Pj4gPSBpdGVtQWNjZXNzb3IgPyBpdGVtQWNjZXNzb3IgOiBvZihudWxsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogb2YobnVsbCk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIHJldHVybiBjb2x1bW5zRGF0YSQ7XG4gIH07XG5cbiAgY29uc3QgY2VsbERhdGFGb3JDb2x1bW5BbmRJdGVtID0gKGNvbHVtbjogRGJ4VGFibGVDb2x1bW48Qz4sIGl0ZW06IFQpOiBPYnNlcnZhYmxlPE1heWJlPE8+PiA9PiB7XG4gICAgcmV0dXJuIGNlbGxEYXRhUGFpckZvckNvbHVtbkFuZEl0ZW0oY29sdW1uLCBpdGVtKS5waXBlKG1hcCgocGFpcikgPT4gcGFpcj8udmFsdWUpKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHRhYmxlU3RvcmUsXG4gICAgZGVsZWdhdGUsXG4gICAgY2VsbERhdGFQYWlyc0ZvckNvbHVtbixcbiAgICBjZWxsRGF0YUZvckNvbHVtbixcbiAgICBjZWxsRGF0YVBhaXJGb3JDb2x1bW5BbmRJdGVtLFxuICAgIGNlbGxEYXRhRm9yQ29sdW1uQW5kSXRlbVxuICB9O1xufVxuIl19
|