@coolon/angular-ui-powerups 16.1.0-aplpha.77 → 16.1.0-aplpha.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/animations/slide-animations.mjs +6 -1
- package/esm2022/lib/components/components.module.mjs +4 -2
- package/esm2022/lib/components/tables/abstract-table-model.mjs +18 -1
- package/esm2022/lib/components/tables/renderer/table-body/table-body.component.mjs +26 -4
- package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs +28 -11
- package/esm2022/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +3 -3
- package/esm2022/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.mjs +129 -0
- package/esm2022/lib/interaction/exports.mjs +2 -1
- package/esm2022/lib/interaction/interaction.module.mjs +7 -2
- package/fesm2022/coolon-angular-ui-powerups.mjs +257 -69
- package/fesm2022/coolon-angular-ui-powerups.mjs.map +1 -1
- package/lib/animations/slide-animations.d.ts +1 -0
- package/lib/components/components.module.d.ts +33 -33
- package/lib/components/tables/abstract-table-model.d.ts +3 -0
- package/lib/components/tables/renderer/table-body/table-body.component.d.ts +9 -1
- package/lib/interaction/components/activity-container/activity-container.component.d.ts +7 -3
- package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +1 -1
- package/lib/interaction/components/slide-down-interaction-context/slide-down-interaction-context.component.d.ts +53 -0
- package/lib/interaction/exports.d.ts +1 -0
- package/lib/interaction/interaction.module.d.ts +33 -32
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Component, HostBinding, Inject, InjectionToken, Input, Optional } from "@angular/core";
|
|
2
|
+
import { Component, Directive, ElementRef, HostBinding, Inject, InjectionToken, Input, Optional } from "@angular/core";
|
|
3
3
|
import { Dsl, ListModel, Logger, MutableValueModel, Proxify, proxify, StoreInValueModel, TransactionObserver, ValueModel } from "@coolon/pectin";
|
|
4
4
|
import { TableVirtualScrollDataSource } from "ng-table-virtual-scroll";
|
|
5
5
|
import { ResizeAwareComponent } from "../../../resize-aware.component";
|
|
@@ -123,6 +123,28 @@ import * as i6 from "../table-header-cell/table-header-cell.component";
|
|
|
123
123
|
//
|
|
124
124
|
// }
|
|
125
125
|
export const AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER = new InjectionToken("AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER");
|
|
126
|
+
export class TableRowAttributesDirective {
|
|
127
|
+
elementRef;
|
|
128
|
+
aupTableRowAttributes;
|
|
129
|
+
constructor(elementRef) {
|
|
130
|
+
this.elementRef = elementRef;
|
|
131
|
+
}
|
|
132
|
+
ngOnInit() {
|
|
133
|
+
for (const attr in this.aupTableRowAttributes) {
|
|
134
|
+
this.elementRef.nativeElement.setAttribute(attr, this.aupTableRowAttributes[attr]);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
138
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: TableRowAttributesDirective, selector: "[aupTableRowAttributes]", inputs: { aupTableRowAttributes: "aupTableRowAttributes" }, ngImport: i0 });
|
|
139
|
+
}
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, decorators: [{
|
|
141
|
+
type: Directive,
|
|
142
|
+
args: [{
|
|
143
|
+
selector: "[aupTableRowAttributes]",
|
|
144
|
+
}]
|
|
145
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { aupTableRowAttributes: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}] } });
|
|
126
148
|
export class TableBodyComponent extends ResizeAwareComponent {
|
|
127
149
|
bufferMultiplier;
|
|
128
150
|
#data$_accessor_storage = proxify((ListModel));
|
|
@@ -231,7 +253,7 @@ export class TableBodyComponent extends ResizeAwareComponent {
|
|
|
231
253
|
}, waitMillis);
|
|
232
254
|
}
|
|
233
255
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, deps: [{ token: AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
234
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", showHeader$: "showHeader$", showHeader: "showHeader", trackBy: "trackBy", scrollMode$: "scrollMode$", scrollMode: "scrollMode" }, host: { properties: { "attr.scrollMode": "this.scrollMode", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader" } }, usesInheritance: true, ngImport: i0, template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\" [headerHeight]=\"headerHeight$.value\" [bufferMultiplier]=\"bufferMultiplier\">\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i4.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "component", type: i5.TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { kind: "component", type: i6.TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }] });
|
|
256
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", showHeader$: "showHeader$", showHeader: "showHeader", trackBy: "trackBy", scrollMode$: "scrollMode$", scrollMode: "scrollMode" }, host: { properties: { "attr.scrollMode": "this.scrollMode", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader" } }, usesInheritance: true, ngImport: i0, template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\" [headerHeight]=\"headerHeight$.value\" [bufferMultiplier]=\"bufferMultiplier\">\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i4.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "directive", type: TableRowAttributesDirective, selector: "[aupTableRowAttributes]", inputs: ["aupTableRowAttributes"] }, { kind: "component", type: i5.TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { kind: "component", type: i6.TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }] });
|
|
235
257
|
}
|
|
236
258
|
__decorate([
|
|
237
259
|
Proxify(),
|
|
@@ -259,7 +281,7 @@ __decorate([
|
|
|
259
281
|
], TableBodyComponent.prototype, "scrollMode", null);
|
|
260
282
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, decorators: [{
|
|
261
283
|
type: Component,
|
|
262
|
-
args: [{ selector: "aup-table-body", template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\" [headerHeight]=\"headerHeight$.value\" [bufferMultiplier]=\"bufferMultiplier\">\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"] }]
|
|
284
|
+
args: [{ selector: "aup-table-body", template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\" [headerHeight]=\"headerHeight$.value\" [bufferMultiplier]=\"bufferMultiplier\">\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"] }]
|
|
263
285
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
264
286
|
type: Inject,
|
|
265
287
|
args: [AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER]
|
|
@@ -289,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
289
311
|
type: HostBinding,
|
|
290
312
|
args: ["class.hide-header"]
|
|
291
313
|
}] } });
|
|
292
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9yZW5kZXJlci90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvdGFibGUtYm9keS90YWJsZS1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFNQSxPQUFPLEVBR0wsU0FBUyxFQUNULFdBQVcsRUFBRSxNQUFNLEVBQ1gsY0FBYyxFQUN0QixLQUFLLEVBQ0csUUFBUSxFQUdqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsR0FBRyxFQUVILFNBQVMsRUFDTyxNQUFNLEVBRXRCLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsVUFBVSxFQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFckUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBRzlELE1BQU07QUFDTiw2QkFBNkI7QUFDN0IsTUFBTTtBQUNOLG9GQUFvRjtBQUNwRix5REFBeUQ7QUFDekQsRUFBRTtBQUNGLDRGQUE0RjtBQUM1Rix5REFBeUQ7QUFDekQsMkRBQTJEO0FBQzNELHNDQUFzQztBQUN0QyxtRUFBbUU7QUFDbkUsbURBQW1EO0FBQ25ELE1BQU07QUFDTixJQUFJO0FBR0osa0hBQWtIO0FBQ2xI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b20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcbmltcG9ydCB7XG4gIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbiAgRml4ZWRTaXplVmlydHVhbFNjcm9sbFN0cmF0ZWd5LFxuICBWSVJUVUFMX1NDUk9MTF9TVFJBVEVHWVxufSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3Njcm9sbGluZ1wiO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsIEluamVjdCxcbiAgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCwgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIERpc3Bvc2FibGUsXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgTGlzdE1vZGVsLFxuICBMaXN0TW9kZWxDaGFpbiwgTG9nZ2VyLFxuICBNYXBNb2RlbENoYWluLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgUHJveGlmeSxcbiAgcHJveGlmeSxcbiAgU3RvcmVJblZhbHVlTW9kZWwsIFRyYWNlLFxuICBUcmFuc2FjdGlvbk9ic2VydmVyLFxuICBWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsQ2hhaW5cbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge1RhYmxlVmlydHVhbFNjcm9sbERhdGFTb3VyY2V9IGZyb20gXCJuZy10YWJsZS12aXJ0dWFsLXNjcm9sbFwiO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1Jlc2l6ZUF3YXJlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vcmVzaXplLWF3YXJlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtBYnN0cmFjdFRhYmxlTW9kZWx9IGZyb20gXCIuLi8uLi9hYnN0cmFjdC10YWJsZS1tb2RlbFwiO1xuaW1wb3J0IHtDb2x1bW5Nb2RlbH0gZnJvbSBcIi4uLy4uL2NvbHVtbi9jb2x1bW4tbW9kZWxcIjtcblxuLy8gLyoqXG4vLyAgKiBWaXJ0dWFsIFNjcm9sbCBTdHJhdGVneVxuLy8gICovXG4vLyBleHBvcnQgY2xhc3MgQ3VzdG9tVmlydHVhbFNjcm9sbFN0cmF0ZWd5IGV4dGVuZHMgRml4ZWRTaXplVmlydHVhbFNjcm9sbFN0cmF0ZWd5IHtcbi8vICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdhcmJhZ2UgPSBuZXcgR2FyYmFnZUNvbGxlY3RvcigpO1xuLy9cbi8vICAgY29uc3RydWN0b3Iocm93SGVpZ2h0JDogVmFsdWVNb2RlbDxudW1iZXI+LCBtaW5CdWZmZXJQeDogbnVtYmVyLCBtYXhCdWZmZXJQeDogbnVtYmVyKSB7XG4vLyAgICAgc3VwZXIocm93SGVpZ2h0JC52YWx1ZSwgbWluQnVmZmVyUHgsIG1heEJ1ZmZlclB4KTtcbi8vICAgICBjb25zdCB7Y2hhaW4sIHdoZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMuZ2FyYmFnZSk7XG4vLyAgICAgd2hlbihyb3dIZWlnaHQkKS5jaGFuZ2VzKGggPT4ge1xuLy8gICAgICAgdGhpcy51cGRhdGVJdGVtQW5kQnVmZmVyU2l6ZShoLCBtaW5CdWZmZXJQeCwgbWF4QnVmZmVyUHgpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSlcbi8vICAgfVxuLy8gfVxuXG5cbi8vIGV4cG9ydCBjbGFzcyBWaXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZTxSb3c+IGV4dGVuZHMgRGF0YVNvdXJjZTxSb3c+IGltcGxlbWVudHMgRGlzcG9zYWJsZSwgRGlzcG9zYWJsZS5Db2xsZWN0b3Ige1xuLy9cbi8vICAgcHJpdmF0ZSBnYXJiYWdlID0gbmV3IEdhcmJhZ2VDb2xsZWN0b3IoKTtcbi8vXG4vLyAgIHJlYWRvbmx5IHZpcnR1YWxTY3JvbGxSb3dSYW5nZSQ6IFZhbHVlTW9kZWxDaGFpbjx7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0+O1xuLy8gICByZWFkb25seSB2aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQ6IFZhbHVlTW9kZWxDaGFpbjxudW1iZXI+O1xuLy8gICByZWFkb25seSB0b3RhbENvbnRlbnRTaXplJDogVmFsdWVNb2RlbENoYWluPG51bWJlcj47XG4vLyAgIHJlYWRvbmx5IHNob3dWaXJ0dWFsU2Nyb2xsT2Zmc2V0OiAoaW5kZXg6IG51bWJlciwgcm93RGF0YTogYW55KSA9PiBib29sZWFuO1xuLy9cbi8vICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpcnR1YWxSb3dzT2JzZXJ2YWJsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHJlYWRvbmx5IFJvd1tdPihbXSk7XG4vLyAgIHByaXZhdGUgcmVhZG9ubHkgdmlydHVhbFNjcm9sbFBpeGVsT2Zmc2V0JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxudW1iZXI+KDApO1xuLy9cbi8vXG4vLyAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIGRhdGEkOkxpc3RNb2RlbDxSb3c+LCByZWFkb25seSByb3dIZWlnaHQkOlZhbHVlTW9kZWw8bnVtYmVyPiwgcGFnZVNpemUkOiBWYWx1ZU1vZGVsPG51bWJlcj4pIHtcbi8vICAgICBzdXBlcigpO1xuLy8gICAgIGNvbnN0IHtjaGFpbiwgd2hlbiwgb2JzZXJ2ZX0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4vL1xuLy8gICAgIG9ic2VydmUudmFsdWVzRnJvbSh2aWV3cG9ydC5lbGVtZW50U2Nyb2xsZWQoKSkuc3Vic2NyaWJlKChldjogRXZlbnQpID0+IHtcbi8vICAgICAgIHRoaXMudmlydHVhbFNjcm9sbFBpeGVsT2Zmc2V0JC52YWx1ZSA9IChldi5jdXJyZW50VGFyZ2V0IGFzIGFueSkuc2Nyb2xsVG9wO1xuLy8gICAgIH0pO1xuLy9cbi8vICAgICB0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQgPSBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxQaXhlbE9mZnNldCQpLm1hcChyYXdQaXhlbE9mZnNldCA9PiB7XG4vLyAgICAgICBjb25zdCBzdGFydEluZGV4ID0gTWF0aC5mbG9vcihyYXdQaXhlbE9mZnNldCAvIHRoaXMucm93SGVpZ2h0JC52YWx1ZSk7XG4vLyAgICAgICBjb25zb2xlLmxvZyhyYXdQaXhlbE9mZnNldCwgc3RhcnRJbmRleClcbi8vICAgICAgIC8vIGNvbnN0IHByZXZFeHRyYURhdGEgPSBzdGFydEluZGV4ID4gNSA/IDUgOiAwO1xuLy8gICAgICAgY29uc3QgcHJldkV4dHJhRGF0YSA9IDA7XG4vLyAgICAgICAvLyByZXR1cm4gcm93cy5zbGljZShzdGFydEluZGV4IC0gcHJldkV4dHJhRGF0YSwgc3RhcnRJbmRleCArIChwYWdlU2l6ZSQudmFsdWUgLSBwcmV2RXh0cmFEYXRhKSk7XG4vLyAgICAgICByZXR1cm4ge1xuLy8gICAgICAgICBzdGFydDogc3RhcnRJbmRleCAtIHByZXZFeHRyYURhdGEsXG4vLyAgICAgICAgIGVuZDogc3RhcnRJbmRleCArIChwYWdlU2l6ZSQudmFsdWUgLSBwcmV2RXh0cmFEYXRhKVxuLy8gICAgICAgfVxuLy8gICAgIH0sIHtcbi8vICAgICAgIGRlcGVuZHNPbjogW3RoaXMucm93SGVpZ2h0JCwgcGFnZVNpemUkXSxcbi8vICAgICAgIHBvc3Rwb25lV2hpbGU6IGNoYWluLm51bWVyaWNWYWx1ZShwYWdlU2l6ZSQpLmlzTGVzc1RoYW4oMSksXG4vLyAgICAgICBjaGFuZ2VkOiAoaXMsIHdhcykgPT4ge1xuLy8gICAgICAgICByZXR1cm4gd2FzPy5zdGFydCAhPT0gaXM/LnN0YXJ0IHx8IHdhcz8uZW5kICE9PSBpcz8uZW5kXG4vLyAgICAgICB9XG4vLyAgICAgfSlcbi8vXG4vLyAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQgPSBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQpLm1hcChyYW5nZSA9PiB7XG4vLyAgICAgICBjb25zdCBwaXhlbE9mZnNldCA9IHRoaXMucm93SGVpZ2h0JC52YWx1ZSAqIHJhbmdlLnN0YXJ0O1xuLy8gICAgICAgcmV0dXJuIHBpeGVsT2Zmc2V0O1xuLy8gICAgIH0sIHsgZGVwZW5kc09uOiB0aGlzLnJvd0hlaWdodCR9KVxuLy9cbi8vICAgICB0aGlzLnRvdGFsQ29udGVudFNpemUkID0gY2hhaW4oZGF0YSQpLmNvdW50KCkubWFwKHJvd0NvdW50ID0+IHtcbi8vICAgICAgIHJldHVybiB0aGlzLnJvd0hlaWdodCQudmFsdWUgKiByb3dDb3VudFxuLy8gICAgIH0sIHtkZXBlbmRzT246IHJvd0hlaWdodCR9KVxuLy9cbi8vICAgICBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQpLm1hcFRvTGlzdChyYW5nZSA9PiB7XG4vLyAgICAgICByZXR1cm4gZGF0YSQudmFsdWUuc2xpY2UocmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCk7XG4vLyAgICAgfSwge1xuLy8gICAgICAgZGVwZW5kc09uOiBkYXRhJFxuLy8gICAgIH0pLnN1YnNjcmliZSh2aXNpYmxlUm93cyA9PiB7XG4vLyAgICAgICBjb25zb2xlLmxvZyh2aXNpYmxlUm93cylcbi8vICAgICAgIHRoaXMudmlydHVhbFJvd3NPYnNlcnZhYmxlJC5uZXh0KHZpc2libGVSb3dzKVxuLy8gICAgIH0pO1xuLy9cbi8vICAgICB3aGVuKHRoaXMudmlydHVhbFNjcm9sbFNwYWNlclNpemUkKS5jaGFuZ2VzKHNjcm9sbFRvcCA9PiB7XG4vLyAgICAgICB2aWV3cG9ydC5zZXRSZW5kZXJlZENvbnRlbnRPZmZzZXQoc2Nyb2xsVG9wLCBcInRvLXN0YXJ0XCIpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSk7XG4vL1xuLy8gICAgIHdoZW4odGhpcy50b3RhbENvbnRlbnRTaXplJCkuY2hhbmdlcyh0b3RhbFNpemUgPT4ge1xuLy8gICAgICAgdmlld3BvcnQuc2V0VG90YWxDb250ZW50U2l6ZSh0b3RhbFNpemUpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSk7XG4vL1xuLy9cbi8vICAgICB0aGlzLnNob3dWaXJ0dWFsU2Nyb2xsT2Zmc2V0ID0gKGluZGV4OiBudW1iZXIsIHJvd0RhdGE6IGFueSk6IGJvb2xlYW4gPT4ge1xuLy8gICAgICAgY29uc3QgaGF2ZVNjcm9sbGVkID0gdGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQudmFsdWUgPiAwO1xuLy8gICAgICAgY29uc3QgZmlyc3RSb3cgPSBpbmRleCA9PT0gMDtcbi8vICAgICAgIHJldHVybiBpbmRleCA9PT0gMCAmJiBoYXZlU2Nyb2xsZWRcbi8vICAgICB9O1xuLy9cbi8vXG4vL1xuLy8gICB9XG4vL1xuLy9cbi8vXG4vLyAgIGRpc3Bvc2UoKTogdm9pZCB7XG4vLyAgICAgdGhpcy5nYXJiYWdlLmRpc3Bvc2UoKTtcbi8vICAgfVxuLy9cbi8vICAgcmVnaXN0ZXJEaXNwb3NhYmxlPFQgZXh0ZW5kcyBEaXNwb3NhYmxlPihkaXNwb3NhYmxlOiBUKTogVCB7XG4vLyAgICAgcmV0dXJuIHRoaXMuZ2FyYmFnZS5yZWdpc3RlckRpc3Bvc2FibGUoZGlzcG9zYWJsZSk7XG4vLyAgIH1cbi8vXG4vL1xuLy8gICBjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiBPYnNlcnZhYmxlPHJlYWRvbmx5IFJvd1tdPiB7XG4vLyAgICAgcmV0dXJuIHRoaXMudmlydHVhbFJvd3NPYnNlcnZhYmxlJDtcbi8vICAgfVxuLy9cbi8vICAgZGlzY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogdm9pZCB7XG4vLyAgICAgLy8gbm9vcFxuLy8gICB9XG4vL1xuLy9cbi8vIH1cblxuZXhwb3J0IGNvbnN0IEFVUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9CVUZGRVJfTVVMVElQTElFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxudW1iZXI+KFwiQVVQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0JVRkZFUl9NVUxUSVBMSUVSXCIpXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhdXAtdGFibGUtYm9keVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3RhYmxlLWJvZHkuY29tcG9uZW50LnNjc3NcIl0sXG4gIC8vIHByb3ZpZGVyczogW3tcbiAgLy8gICBwcm92aWRlOiBWSVJUVUFMX1NDUk9MTF9TVFJBVEVHWSwgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAvLyAgICAgcmV0dXJuIGluamVjdChUYWJsZUJvZHlDb21wb25lbnQpLnZpcnR1YWxTY3JvbGxTdHJhdGVneVxuICAvLyAgIH1cbiAgLy8gfV0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQm9keUNvbXBvbmVudDxSb3c+IGV4dGVuZHMgUmVzaXplQXdhcmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgZGF0YSQgPSBwcm94aWZ5KExpc3RNb2RlbDxSb3c+KTtcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHRhYmxlTW9kZWwgPSBwcm94aWZ5KEFic3RyYWN0VGFibGVNb2RlbDxSb3c+KTtcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHNob3dIZWFkZXIkID0gcHJveGlmeShWYWx1ZU1vZGVsPGJvb2xlYW4+KTtcblxuICBASW5wdXQoKSBAU3RvcmVJblZhbHVlTW9kZWwoKVxuICBhY2Nlc3NvciBzaG93SGVhZGVyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICB0cmFja0J5OiAoaW5kZXg6IG51bWJlciwgaXRlbTogUm93KSA9PiBhbnlcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHNjcm9sbE1vZGUkOiBWYWx1ZU1vZGVsPFRhYmxlQm9keUNvbXBvbmVudC5TY3JvbGxNb2RlPiA9IHByb3hpZnkoVmFsdWVNb2RlbDxUYWJsZUJvZHlDb21wb25lbnQuU2Nyb2xsTW9kZT4pO1xuXG4gIEBJbnB1dCgpIEBTdG9yZUluVmFsdWVNb2RlbCgpXG4gIEBIb3N0QmluZGluZyhcImF0dHIuc2Nyb2xsTW9kZVwiKVxuICBhY2Nlc3NvciBzY3JvbGxNb2RlOiBUYWJsZUJvZHlDb21wb25lbnQuU2Nyb2xsTW9kZSA9IFwibm9uZVwiO1xuXG4gIGNvbHVtbnMkOiBMaXN0TW9kZWxDaGFpbjxDb2x1bW5Nb2RlbDxSb3c+PjtcbiAgY29sdW1uSWRzJDogTGlzdE1vZGVsQ2hhaW48c3RyaW5nPjtcblxuICBwcml2YXRlIGNvbHVtbnNCeUlkJDogTWFwTW9kZWxDaGFpbjxzdHJpbmcsIENvbHVtbk1vZGVsPFJvdz4+O1xuXG5cbiAgLy8gVE9ETzogc3VwcG9ydCB1c2VyIGRlZmluZWQgaGVhZGVyIGFuZCByb3cgaGVpZ2h0cyB2aWEgY3NzIHZhcnMuXG4gIHByb3RlY3RlZCByZWFkb25seSBoZWFkZXJIZWlnaHQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPG51bWJlcj4oMjkpO1xuICBwcm90ZWN0ZWQgcm93SGVpZ2h0JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxudW1iZXI+KDQwKTtcblxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKVxuICBiYXNlQ3NzQ2xhc3MgPSBcImF1cC10YWJsZS1jb21wb25lbnRcIjtcblxuICBwcm90ZWN0ZWQgdmlydHVhbFNjcm9sbERhdGFTb3VyY2UgPSBuZXcgVGFibGVWaXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZTxSb3c+KCk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChBVVBfVEFCTEVfVklSVFVBTF9TQ1JPTExfQlVGRkVSX01VTFRJUExJRVIpIEBPcHRpb25hbCgpIHByb3RlY3RlZCBidWZmZXJNdWx0aXBsaWVyOm51bWJlciA9IDEpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHtjaGFpbiwgd2hlbiwgb2JzZXJ2ZX0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG5cbiAgICBjb25zdCBhY3R1YWxIZWFkZXJIZWlnaHQkID0gY2hhaW4odGhpcy5zaG93SGVhZGVyJCkubWFwKHNob3cgPT4ge1xuICAgICAgcmV0dXJuIHNob3cgPyB0aGlzLmhlYWRlckhlaWdodCQudmFsdWUgOiAwO1xuICAgIH0sIHtkZXBlbmRzT246IHRoaXMuaGVhZGVySGVpZ2h0JH0pO1xuXG4gICAgLy8gdGhpcy50YWJsZUJvZHlIZWlnaHQkID0gY2hhaW4odGhpcy5ib3VuZHMkKS5tYXAoYm91bmRzID0+IHtcbiAgICAvLyAgIHJldHVybiAoYm91bmRzLmhlaWdodCAtIGFjdHVhbEhlYWRlckhlaWdodCQudmFsdWUpXG4gICAgLy8gfSwge2RlcGVuZHNPbjogYWN0dWFsSGVhZGVySGVpZ2h0JH0pXG4gICAgLy8gICAub3RoZXJ3aXNlKDApO1xuXG5cbiAgICAvLyBjb25zdCB2aXNpYmxlUm93Q291bnQkID0gY2hhaW4odGhpcy5ib3VuZHMkKS5tYXAoYm91bmRzID0+IHtcbiAgICAvLyAgIC8vIFRPRE86IHRoaXMgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCBhbnkgY3NzIHN0eWxpbmcgYWRqdXN0bWVudHMgZXRjLiAgV2lsbCBpbnZlc3RpZ2F0ZSBpZiBpdCdzIGFuIGlzc3VlLlxuICAgIC8vICAgY29uc3QgcmF3Um93Q291bnQgPSAoYm91bmRzLmhlaWdodCAtIGFjdHVhbEhlYWRlckhlaWdodCQudmFsdWUpIC8gdGhpcy5yb3dIZWlnaHQkLnZhbHVlO1xuICAgIC8vICAgcmV0dXJuIHJhd1Jvd0NvdW50IDwgMSA/IDAgOiBNYXRoLmZsb29yKHJhd1Jvd0NvdW50KTtcbiAgICAvLyB9LCB7XG4gICAgLy8gICBkZXBlbmRzT246IFthY3R1YWxIZWFkZXJIZWlnaHQkLCB0aGlzLnJvd0hlaWdodCRdLFxuICAgIC8vICAgcG9zdHBvbmVXaGlsZTogY2hhaW4odGhpcy5ib3VuZHMkKS5wbHVja051bWVyaWMoXCJoZWlnaHRcIikuaXNMZXNzVGhhbigxKVxuICAgIC8vIH0pO1xuXG4gICAgLy8gLy8gY29uc3QgcGFnZVNpemUkID0gY2hhaW4odmlzaWJsZVJvd0NvdW50JClcbiAgICAvLyAvLyAgIC5tYXAoY291bnQgPT4gMiAqIGNvdW50KS5vdGhlcndpc2UoMClcbiAgICAvLyBjb25zdCBwYWdlU2l6ZSQgPSBWYWx1ZU1vZGVsLmNvbnN0YW50KDEyKVxuXG5cbiAgICB3aGVuKHRoaXMuZGF0YSQpLmNoYW5nZXMoaXMgPT4ge1xuICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZS5kYXRhID0gaXM7XG4gICAgICB0aGlzLnNjaGVkdWxlVGFibGVIZWlnaHRDaGVjaygpO1xuICAgIH0sIHtpbml0aWFsVmFsdWU6IFwiZXZhbHVhdGVcIn0pXG5cblxuICAgIHRoaXMub25Jbml0KCgpID0+IHtcbiAgICAgIHRoaXMuY29sdW1ucyQgPSBjaGFpbih0aGlzLnRhYmxlTW9kZWwuY29sdW1ucyk7XG4gICAgICB0aGlzLmNvbHVtbklkcyQgPSBjaGFpbih0aGlzLmNvbHVtbnMkKS5wbHVjayhcImNvbHVtbklkXCIpO1xuICAgICAgdGhpcy5jb2x1bW5zQnlJZCQgPSBjaGFpbih0aGlzLmNvbHVtbnMkKS5pbmRleEJ5KCdjb2x1bW5JZCcpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdHhvID0gbmV3IFRyYW5zYWN0aW9uT2JzZXJ2ZXIoe3ZlcmJvc2U6IGZhbHNlfSkub25FdmVudChlID0+IGNvbnNvbGUubG9nKGUubmFtZSwgZS5wYXlsb2FkKSk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ3RoaXMudmlydHVhbFNjcm9sbFJvd1JhbmdlJCcsIHRoaXMudmlydHVhbFNjcm9sbFJvd1JhbmdlJCk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ3RoaXMudmlydHVhbFNjcm9sbFNwYWNlclNpemUkJywgdGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQpO1xuICAgIC8vIHR4by5vYnNlcnZlKCd0aGlzLnZpcnR1YWxSb3dzJCcsIHRoaXMudmlydHVhbFJvd3MkKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgndGhpcy50YWJsZUJvZHlIZWlnaHQkJywgdGhpcy50YWJsZUJvZHlIZWlnaHQkKTtcblxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaGlkZS1oZWFkZXJcIilcbiAgZ2V0IGhpZGVIZWFkZXIoKSB7XG4gICAgcmV0dXJuICF0aGlzLnNob3dIZWFkZXI7XG4gIH1cblxuICBpc0VkaXRpbmcocm93OiBSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRhYmxlTW9kZWwuZ2V0RWRpdFNlc3Npb25Gb3Iocm93KTtcbiAgfVxuXG4gIG5vdGlmeUNlbGxDbGlja2VkKGNvbHVtbk1vZGVsOiBDb2x1bW5Nb2RlbDxSb3c+LCByb3c6IFJvdykge1xuICAgIHRoaXMudGFibGVNb2RlbC5fbm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uTW9kZWwsIHJvdyk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuXG4gIGlzRmlyc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLmZpcnN0VmlzaWJsZUNvbHVtbiQucXVlcnkoKS52YWx1ZT8uY29sdW1uSWQgPT09IGNvbHVtbklkO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcblxuICBpc0xhc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLmxhc3RWaXNpYmxlQ29sdW1uJC5xdWVyeSgpLnZhbHVlPy5jb2x1bW5JZCA9PT0gY29sdW1uSWQ7XG4gIH1cblxuICBnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbklkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjbGFzc2VzID0gW2BhdXAtY29sLSR7dGhpcy5jb2x1bW5zQnlJZCQuZ2V0KGNvbHVtbklkKS5kYXNoZXJpc2VkQ29sdW1uSWR9YF07XG4gICAgaWYgKHRoaXMuaXNGaXJzdFZpc2libGVDb2x1bW4oY29sdW1uSWQpKSB7XG4gICAgICBjbGFzc2VzLnB1c2goXCJmaXJzdC12aXNpYmxlLWNvbHVtblwiKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNMYXN0VmlzaWJsZUNvbHVtbihjb2x1bW5JZCkpIHtcbiAgICAgIGNsYXNzZXMucHVzaChcImxhc3QtdmlzaWJsZS1jb2x1bW5cIik7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZVRhYmxlSGVpZ2h0Q2hlY2sod2FpdE1pbGxpcyA9IDUwKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCB0Ym9keSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJ0Ym9keVwiKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGJvZHlIZWlnaHQgPSB0Ym9keS5vZmZzZXRIZWlnaHQ7XG4gICAgICBpZiAodGhpcy5kYXRhJC5sZW5ndGggPiAwICYmIGJvZHlIZWlnaHQgPCB0aGlzLnJvd0hlaWdodCQudmFsdWUpIHtcbiAgICAgICAgLy8gSGFja3MgdG8gZ2V0IG91ciB2aXJ0dWFsIHNjcm9sbCB0byByZXBhaW50XG4gICAgICAgIExvZ2dlci5nZXQodGhpcykubG9nKGByb3dDb3VudD0ke3RoaXMuZGF0YSQubGVuZ3RofSwgYm9keUhlaWdodD0ke2JvZHlIZWlnaHR9IC0+IHZyaXR1YWwgdGFibGUgbm90IHJlbmRlcmluZywgdHJpZ2dlcmluZyByZXNpemUgdG8gZm9yY2UgcmVwYWludGApXG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpO1xuICAgICAgICBpZiAod2FpdE1pbGxpcyA8IDUwMCkge1xuICAgICAgICAgIHRoaXMuc2NoZWR1bGVUYWJsZUhlaWdodENoZWNrKHdhaXRNaWxsaXMgKyA1MCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB3YWl0TWlsbGlzKVxuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVCb2R5Q29tcG9uZW50IHtcbiAgZXhwb3J0IHR5cGUgU2Nyb2xsTW9kZSA9IFwibm9uZVwiIHwgXCJjbGFzc2ljXCIgfCBcInZpcnR1YWxcIjtcblxufVxuIiwiXG48ZGl2IGNsYXNzPVwiY2xhc3NpYy1zY3JvbGwtY29udGFpbmVyXCIgKm5nSWY9XCJzY3JvbGxNb2RlJC52YWx1ZSAhPT0gJ3ZpcnR1YWwnXCI+XG4gIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YSQudmFsdWVcIiBbdHJhY2tCeV09XCJ0cmFja0J5XCIgW211bHRpVGVtcGxhdGVEYXRhUm93c10+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1ucyQudmFsdWU7IGluZGV4IGFzIGluZGV4OyBmaXJzdCBhcyBmaXJzdDsgbGFzdCBhcyBsYXN0XCJcbiAgICAgICAgICAgICAgICAgIG1hdENvbHVtbkRlZj1cInt7Y29sdW1uLmNvbHVtbklkfX1cIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2NsYXNzLmZsZXhdPVwiY29sdW1uLmlzRmxleCgpXCIgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiPlxuICAgICAgICA8YXVwLXRhYmxlLWhlYWRlci1jZWxsIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtaGVhZGVyLWNlbGw+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW4sIHJvdylcIlxuICAgICAgICAgIFtjbGFzcy5lbmFibGUtY3Vyc29yXT1cInRhYmxlTW9kZWwuaXNDdXJzb3JFbmFibGVkKGNvbHVtbilcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiXG4gICAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdXAtdGFibGUtY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVNb2RlbF09XCIkYW55KHRhYmxlTW9kZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0U2Vzc2lvbl09XCIkYW55KHRhYmxlTW9kZWwuZ2V0RWRpdFNlc3Npb25Gb3Iocm93KSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzZXMoY29sdW1uLmNvbHVtbklkKVwiXG4gICAgICAgID48L2F1cC10YWJsZS1jZWxsPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uSWRzJC52YWx1ZTsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1uSWRzJC52YWx1ZTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlTW9kZWwuZ2V0Um93Q2xhc3Nlcyhyb3cpXCJcbiAgICAgICAgW2NsYXNzLmVuYWJsZS1ob3Zlcl09XCJ0YWJsZU1vZGVsLmlzSG92ZXJFbmFibGVkKClcIlxuICAgICAgICBbYXR0ci5hdXAtcm93LWlkXT1cInRyYWNrQnkoaSwgcm93KVwiXG4gICAgPjwvdHI+XG5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICAqbmdJZj1cInNjcm9sbE1vZGUkLnZhbHVlID09PSAndmlydHVhbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R2c0l0ZW1TaXplXT1cInJvd0hlaWdodCQudmFsdWVcIiBbaGVhZGVySGVpZ2h0XT1cImhlYWRlckhlaWdodCQudmFsdWVcIiBbYnVmZmVyTXVsdGlwbGllcl09XCJidWZmZXJNdWx0aXBsaWVyXCI+XG4gIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwidmlydHVhbFNjcm9sbERhdGFTb3VyY2VcIiBbdHJhY2tCeV09XCJ0cmFja0J5XCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1ucyQudmFsdWU7IGluZGV4IGFzIGluZGV4OyBmaXJzdCBhcyBmaXJzdDsgbGFzdCBhcyBsYXN0XCJcbiAgICAgICAgICAgICAgICAgIG1hdENvbHVtbkRlZj1cInt7Y29sdW1uLmNvbHVtbklkfX1cIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2NsYXNzLmZsZXhdPVwiY29sdW1uLmlzRmxleCgpXCIgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiPlxuICAgICAgICA8YXVwLXRhYmxlLWhlYWRlci1jZWxsIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtaGVhZGVyLWNlbGw+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW4sIHJvdylcIlxuICAgICAgICAgIFtjbGFzcy5lbmFibGUtY3Vyc29yXT1cInRhYmxlTW9kZWwuaXNDdXJzb3JFbmFibGVkKGNvbHVtbilcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiXG4gICAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdXAtdGFibGUtY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVNb2RlbF09XCIkYW55KHRhYmxlTW9kZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0U2Vzc2lvbl09XCIkYW55KHRhYmxlTW9kZWwuZ2V0RWRpdFNlc3Npb25Gb3Iocm93KSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzZXMoY29sdW1uLmNvbHVtbklkKVwiXG4gICAgICAgID48L2F1cC10YWJsZS1jZWxsPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uSWRzJC52YWx1ZTsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1uSWRzJC52YWx1ZTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlTW9kZWwuZ2V0Um93Q2xhc3Nlcyhyb3cpXCJcbiAgICAgICAgW2NsYXNzLmVuYWJsZS1ob3Zlcl09XCJ0YWJsZU1vZGVsLmlzSG92ZXJFbmFibGVkKClcIlxuICAgICAgICBbYXR0ci5hdXAtcm93LWlkXT1cInRyYWNrQnkoaSwgcm93KVwiXG4gICAgPjwvdHI+XG5cbiAgPC90YWJsZT5cbjwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuXG4iXX0=
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9yZW5kZXJlci90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvdGFibGUtYm9keS90YWJsZS1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFNQSxPQUFPLEVBR0wsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQ2hDLFdBQVcsRUFBRSxNQUFNLEVBQ1gsY0FBYyxFQUN0QixLQUFLLEVBQ0csUUFBUSxFQUdqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsR0FBRyxFQUVILFNBQVMsRUFDTyxNQUFNLEVBRXRCLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsVUFBVSxFQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFckUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBRzlELE1BQU07QUFDTiw2QkFBNkI7QUFDN0IsTUFBTTtBQUNOLG9GQUFvRjtBQUNwRix5REFBeUQ7QUFDekQsRUFBRTtBQUNGLDRGQUE0RjtBQUM1Rix5REFBeUQ7QUFDekQsMkRBQTJEO0FBQzNELHNDQUFzQztBQUN0QyxtRUFBbUU7QUFDbkUsbURBQW1EO0FBQ25ELE1BQU07QUFDTixJ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O0FBSTVHO0lBRkMsaUJBQWlCLEVBQUU7O29EQUUrQjsyRkF0QmpELGtCQUFrQjtrQkFWOUIsU0FBUzsrQkFDRSxnQkFBZ0I7OzBCQWdEYixNQUFNOzJCQUFDLDBDQUEwQzs7MEJBQUcsUUFBUTs0Q0FwQ2hFLEtBQUs7c0JBRGIsS0FBSztnQkFJRyxVQUFVO3NCQURsQixLQUFLO2dCQUlHLFdBQVc7c0JBRG5CLEtBQUs7Z0JBSUcsVUFBVTtzQkFEbEIsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSUcsV0FBVztzQkFEbkIsS0FBSztnQkFLRyxVQUFVO3NCQUZsQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFjOUIsWUFBWTtzQkFEWCxXQUFXO3VCQUFDLE9BQU87Z0JBc0RoQixVQUFVO3NCQURiLFdBQVc7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb2xsZWN0aW9uVmlld2VyLCBEYXRhU291cmNlfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zXCI7XG5pbXBvcnQge1xuICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG4gIEZpeGVkU2l6ZVZpcnR1YWxTY3JvbGxTdHJhdGVneSxcbiAgVklSVFVBTF9TQ1JPTExfU1RSQVRFR1lcbn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9zY3JvbGxpbmdcIjtcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsIEluamVjdCxcbiAgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCwgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIERpc3Bvc2FibGUsXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgTGlzdE1vZGVsLFxuICBMaXN0TW9kZWxDaGFpbiwgTG9nZ2VyLFxuICBNYXBNb2RlbENoYWluLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgUHJveGlmeSxcbiAgcHJveGlmeSxcbiAgU3RvcmVJblZhbHVlTW9kZWwsIFRyYWNlLFxuICBUcmFuc2FjdGlvbk9ic2VydmVyLFxuICBWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsQ2hhaW5cbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge1RhYmxlVmlydHVhbFNjcm9sbERhdGFTb3VyY2V9IGZyb20gXCJuZy10YWJsZS12aXJ0dWFsLXNjcm9sbFwiO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1Jlc2l6ZUF3YXJlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vcmVzaXplLWF3YXJlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtBYnN0cmFjdFRhYmxlTW9kZWx9IGZyb20gXCIuLi8uLi9hYnN0cmFjdC10YWJsZS1tb2RlbFwiO1xuaW1wb3J0IHtDb2x1bW5Nb2RlbH0gZnJvbSBcIi4uLy4uL2NvbHVtbi9jb2x1bW4tbW9kZWxcIjtcblxuLy8gLyoqXG4vLyAgKiBWaXJ0dWFsIFNjcm9sbCBTdHJhdGVneVxuLy8gICovXG4vLyBleHBvcnQgY2xhc3MgQ3VzdG9tVmlydHVhbFNjcm9sbFN0cmF0ZWd5IGV4dGVuZHMgRml4ZWRTaXplVmlydHVhbFNjcm9sbFN0cmF0ZWd5IHtcbi8vICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdhcmJhZ2UgPSBuZXcgR2FyYmFnZUNvbGxlY3RvcigpO1xuLy9cbi8vICAgY29uc3RydWN0b3Iocm93SGVpZ2h0JDogVmFsdWVNb2RlbDxudW1iZXI+LCBtaW5CdWZmZXJQeDogbnVtYmVyLCBtYXhCdWZmZXJQeDogbnVtYmVyKSB7XG4vLyAgICAgc3VwZXIocm93SGVpZ2h0JC52YWx1ZSwgbWluQnVmZmVyUHgsIG1heEJ1ZmZlclB4KTtcbi8vICAgICBjb25zdCB7Y2hhaW4sIHdoZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMuZ2FyYmFnZSk7XG4vLyAgICAgd2hlbihyb3dIZWlnaHQkKS5jaGFuZ2VzKGggPT4ge1xuLy8gICAgICAgdGhpcy51cGRhdGVJdGVtQW5kQnVmZmVyU2l6ZShoLCBtaW5CdWZmZXJQeCwgbWF4QnVmZmVyUHgpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSlcbi8vICAgfVxuLy8gfVxuXG5cbi8vIGV4cG9ydCBjbGFzcyBWaXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZTxSb3c+IGV4dGVuZHMgRGF0YVNvdXJjZTxSb3c+IGltcGxlbWVudHMgRGlzcG9zYWJsZSwgRGlzcG9zYWJsZS5Db2xsZWN0b3Ige1xuLy9cbi8vICAgcHJpdmF0ZSBnYXJiYWdlID0gbmV3IEdhcmJhZ2VDb2xsZWN0b3IoKTtcbi8vXG4vLyAgIHJlYWRvbmx5IHZpcnR1YWxTY3JvbGxSb3dSYW5nZSQ6IFZhbHVlTW9kZWxDaGFpbjx7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0+O1xuLy8gICByZWFkb25seSB2aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQ6IFZhbHVlTW9kZWxDaGFpbjxudW1iZXI+O1xuLy8gICByZWFkb25seSB0b3RhbENvbnRlbnRTaXplJDogVmFsdWVNb2RlbENoYWluPG51bWJlcj47XG4vLyAgIHJlYWRvbmx5IHNob3dWaXJ0dWFsU2Nyb2xsT2Zmc2V0OiAoaW5kZXg6IG51bWJlciwgcm93RGF0YTogYW55KSA9PiBib29sZWFuO1xuLy9cbi8vICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpcnR1YWxSb3dzT2JzZXJ2YWJsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHJlYWRvbmx5IFJvd1tdPihbXSk7XG4vLyAgIHByaXZhdGUgcmVhZG9ubHkgdmlydHVhbFNjcm9sbFBpeGVsT2Zmc2V0JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxudW1iZXI+KDApO1xuLy9cbi8vXG4vLyAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIGRhdGEkOkxpc3RNb2RlbDxSb3c+LCByZWFkb25seSByb3dIZWlnaHQkOlZhbHVlTW9kZWw8bnVtYmVyPiwgcGFnZVNpemUkOiBWYWx1ZU1vZGVsPG51bWJlcj4pIHtcbi8vICAgICBzdXBlcigpO1xuLy8gICAgIGNvbnN0IHtjaGFpbiwgd2hlbiwgb2JzZXJ2ZX0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4vL1xuLy8gICAgIG9ic2VydmUudmFsdWVzRnJvbSh2aWV3cG9ydC5lbGVtZW50U2Nyb2xsZWQoKSkuc3Vic2NyaWJlKChldjogRXZlbnQpID0+IHtcbi8vICAgICAgIHRoaXMudmlydHVhbFNjcm9sbFBpeGVsT2Zmc2V0JC52YWx1ZSA9IChldi5jdXJyZW50VGFyZ2V0IGFzIGFueSkuc2Nyb2xsVG9wO1xuLy8gICAgIH0pO1xuLy9cbi8vICAgICB0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQgPSBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxQaXhlbE9mZnNldCQpLm1hcChyYXdQaXhlbE9mZnNldCA9PiB7XG4vLyAgICAgICBjb25zdCBzdGFydEluZGV4ID0gTWF0aC5mbG9vcihyYXdQaXhlbE9mZnNldCAvIHRoaXMucm93SGVpZ2h0JC52YWx1ZSk7XG4vLyAgICAgICBjb25zb2xlLmxvZyhyYXdQaXhlbE9mZnNldCwgc3RhcnRJbmRleClcbi8vICAgICAgIC8vIGNvbnN0IHByZXZFeHRyYURhdGEgPSBzdGFydEluZGV4ID4gNSA/IDUgOiAwO1xuLy8gICAgICAgY29uc3QgcHJldkV4dHJhRGF0YSA9IDA7XG4vLyAgICAgICAvLyByZXR1cm4gcm93cy5zbGljZShzdGFydEluZGV4IC0gcHJldkV4dHJhRGF0YSwgc3RhcnRJbmRleCArIChwYWdlU2l6ZSQudmFsdWUgLSBwcmV2RXh0cmFEYXRhKSk7XG4vLyAgICAgICByZXR1cm4ge1xuLy8gICAgICAgICBzdGFydDogc3RhcnRJbmRleCAtIHByZXZFeHRyYURhdGEsXG4vLyAgICAgICAgIGVuZDogc3RhcnRJbmRleCArIChwYWdlU2l6ZSQudmFsdWUgLSBwcmV2RXh0cmFEYXRhKVxuLy8gICAgICAgfVxuLy8gICAgIH0sIHtcbi8vICAgICAgIGRlcGVuZHNPbjogW3RoaXMucm93SGVpZ2h0JCwgcGFnZVNpemUkXSxcbi8vICAgICAgIHBvc3Rwb25lV2hpbGU6IGNoYWluLm51bWVyaWNWYWx1ZShwYWdlU2l6ZSQpLmlzTGVzc1RoYW4oMSksXG4vLyAgICAgICBjaGFuZ2VkOiAoaXMsIHdhcykgPT4ge1xuLy8gICAgICAgICByZXR1cm4gd2FzPy5zdGFydCAhPT0gaXM/LnN0YXJ0IHx8IHdhcz8uZW5kICE9PSBpcz8uZW5kXG4vLyAgICAgICB9XG4vLyAgICAgfSlcbi8vXG4vLyAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQgPSBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQpLm1hcChyYW5nZSA9PiB7XG4vLyAgICAgICBjb25zdCBwaXhlbE9mZnNldCA9IHRoaXMucm93SGVpZ2h0JC52YWx1ZSAqIHJhbmdlLnN0YXJ0O1xuLy8gICAgICAgcmV0dXJuIHBpeGVsT2Zmc2V0O1xuLy8gICAgIH0sIHsgZGVwZW5kc09uOiB0aGlzLnJvd0hlaWdodCR9KVxuLy9cbi8vICAgICB0aGlzLnRvdGFsQ29udGVudFNpemUkID0gY2hhaW4oZGF0YSQpLmNvdW50KCkubWFwKHJvd0NvdW50ID0+IHtcbi8vICAgICAgIHJldHVybiB0aGlzLnJvd0hlaWdodCQudmFsdWUgKiByb3dDb3VudFxuLy8gICAgIH0sIHtkZXBlbmRzT246IHJvd0hlaWdodCR9KVxuLy9cbi8vICAgICBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQpLm1hcFRvTGlzdChyYW5nZSA9PiB7XG4vLyAgICAgICByZXR1cm4gZGF0YSQudmFsdWUuc2xpY2UocmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCk7XG4vLyAgICAgfSwge1xuLy8gICAgICAgZGVwZW5kc09uOiBkYXRhJFxuLy8gICAgIH0pLnN1YnNjcmliZSh2aXNpYmxlUm93cyA9PiB7XG4vLyAgICAgICBjb25zb2xlLmxvZyh2aXNpYmxlUm93cylcbi8vICAgICAgIHRoaXMudmlydHVhbFJvd3NPYnNlcnZhYmxlJC5uZXh0KHZpc2libGVSb3dzKVxuLy8gICAgIH0pO1xuLy9cbi8vICAgICB3aGVuKHRoaXMudmlydHVhbFNjcm9sbFNwYWNlclNpemUkKS5jaGFuZ2VzKHNjcm9sbFRvcCA9PiB7XG4vLyAgICAgICB2aWV3cG9ydC5zZXRSZW5kZXJlZENvbnRlbnRPZmZzZXQoc2Nyb2xsVG9wLCBcInRvLXN0YXJ0XCIpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSk7XG4vL1xuLy8gICAgIHdoZW4odGhpcy50b3RhbENvbnRlbnRTaXplJCkuY2hhbmdlcyh0b3RhbFNpemUgPT4ge1xuLy8gICAgICAgdmlld3BvcnQuc2V0VG90YWxDb250ZW50U2l6ZSh0b3RhbFNpemUpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSk7XG4vL1xuLy9cbi8vICAgICB0aGlzLnNob3dWaXJ0dWFsU2Nyb2xsT2Zmc2V0ID0gKGluZGV4OiBudW1iZXIsIHJvd0RhdGE6IGFueSk6IGJvb2xlYW4gPT4ge1xuLy8gICAgICAgY29uc3QgaGF2ZVNjcm9sbGVkID0gdGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQudmFsdWUgPiAwO1xuLy8gICAgICAgY29uc3QgZmlyc3RSb3cgPSBpbmRleCA9PT0gMDtcbi8vICAgICAgIHJldHVybiBpbmRleCA9PT0gMCAmJiBoYXZlU2Nyb2xsZWRcbi8vICAgICB9O1xuLy9cbi8vXG4vL1xuLy8gICB9XG4vL1xuLy9cbi8vXG4vLyAgIGRpc3Bvc2UoKTogdm9pZCB7XG4vLyAgICAgdGhpcy5nYXJiYWdlLmRpc3Bvc2UoKTtcbi8vICAgfVxuLy9cbi8vICAgcmVnaXN0ZXJEaXNwb3NhYmxlPFQgZXh0ZW5kcyBEaXNwb3NhYmxlPihkaXNwb3NhYmxlOiBUKTogVCB7XG4vLyAgICAgcmV0dXJuIHRoaXMuZ2FyYmFnZS5yZWdpc3RlckRpc3Bvc2FibGUoZGlzcG9zYWJsZSk7XG4vLyAgIH1cbi8vXG4vL1xuLy8gICBjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiBPYnNlcnZhYmxlPHJlYWRvbmx5IFJvd1tdPiB7XG4vLyAgICAgcmV0dXJuIHRoaXMudmlydHVhbFJvd3NPYnNlcnZhYmxlJDtcbi8vICAgfVxuLy9cbi8vICAgZGlzY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogdm9pZCB7XG4vLyAgICAgLy8gbm9vcFxuLy8gICB9XG4vL1xuLy9cbi8vIH1cblxuZXhwb3J0IGNvbnN0IEFVUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9CVUZGRVJfTVVMVElQTElFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxudW1iZXI+KFwiQVVQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0JVRkZFUl9NVUxUSVBMSUVSXCIpXG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIlthdXBUYWJsZVJvd0F0dHJpYnV0ZXNdXCIsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlUm93QXR0cmlidXRlc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KClcbiAgYXVwVGFibGVSb3dBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGF0dHIgaW4gdGhpcy5hdXBUYWJsZVJvd0F0dHJpYnV0ZXMpIHtcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmF1cFRhYmxlUm93QXR0cmlidXRlc1thdHRyXSk7XG4gICAgfVxuICB9XG59XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF1cC10YWJsZS1ib2R5XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFibGUtYm9keS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdGFibGUtYm9keS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgLy8gcHJvdmlkZXJzOiBbe1xuICAvLyAgIHByb3ZpZGU6IFZJUlRVQUxfU0NST0xMX1NUUkFURUdZLCB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gIC8vICAgICByZXR1cm4gaW5qZWN0KFRhYmxlQm9keUNvbXBvbmVudCkudmlydHVhbFNjcm9sbFN0cmF0ZWd5XG4gIC8vICAgfVxuICAvLyB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVCb2R5Q29tcG9uZW50PFJvdz4gZXh0ZW5kcyBSZXNpemVBd2FyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBkYXRhJCA9IHByb3hpZnkoTGlzdE1vZGVsPFJvdz4pO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgdGFibGVNb2RlbCA9IHByb3hpZnkoQWJzdHJhY3RUYWJsZU1vZGVsPFJvdz4pO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3Igc2hvd0hlYWRlciQgPSBwcm94aWZ5KFZhbHVlTW9kZWw8Ym9vbGVhbj4pO1xuXG4gIEBJbnB1dCgpIEBTdG9yZUluVmFsdWVNb2RlbCgpXG4gIGFjY2Vzc29yIHNob3dIZWFkZXIgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHRyYWNrQnk6IChpbmRleDogbnVtYmVyLCBpdGVtOiBSb3cpID0+IGFueVxuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3Igc2Nyb2xsTW9kZSQ6IFZhbHVlTW9kZWw8VGFibGVCb2R5Q29tcG9uZW50LlNjcm9sbE1vZGU+ID0gcHJveGlmeShWYWx1ZU1vZGVsPFRhYmxlQm9keUNvbXBvbmVudC5TY3JvbGxNb2RlPik7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKClcbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5zY3JvbGxNb2RlXCIpXG4gIGFjY2Vzc29yIHNjcm9sbE1vZGU6IFRhYmxlQm9keUNvbXBvbmVudC5TY3JvbGxNb2RlID0gXCJub25lXCI7XG5cbiAgY29sdW1ucyQ6IExpc3RNb2RlbENoYWluPENvbHVtbk1vZGVsPFJvdz4+O1xuICBjb2x1bW5JZHMkOiBMaXN0TW9kZWxDaGFpbjxzdHJpbmc+O1xuXG4gIHByaXZhdGUgY29sdW1uc0J5SWQkOiBNYXBNb2RlbENoYWluPHN0cmluZywgQ29sdW1uTW9kZWw8Um93Pj47XG5cblxuICAvLyBUT0RPOiBzdXBwb3J0IHVzZXIgZGVmaW5lZCBoZWFkZXIgYW5kIHJvdyBoZWlnaHRzIHZpYSBjc3MgdmFycy5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhlYWRlckhlaWdodCQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8bnVtYmVyPigyOSk7XG4gIHByb3RlY3RlZCByb3dIZWlnaHQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPG51bWJlcj4oNDApO1xuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzXCIpXG4gIGJhc2VDc3NDbGFzcyA9IFwiYXVwLXRhYmxlLWNvbXBvbmVudFwiO1xuXG4gIHByb3RlY3RlZCB2aXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZSA9IG5ldyBUYWJsZVZpcnR1YWxTY3JvbGxEYXRhU291cmNlPFJvdz4oKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFVUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9CVUZGRVJfTVVMVElQTElFUikgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGJ1ZmZlck11bHRpcGxpZXI6bnVtYmVyID0gMSkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWluLCB3aGVuLCBvYnNlcnZlfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcblxuICAgIGNvbnN0IGFjdHVhbEhlYWRlckhlaWdodCQgPSBjaGFpbih0aGlzLnNob3dIZWFkZXIkKS5tYXAoc2hvdyA9PiB7XG4gICAgICByZXR1cm4gc2hvdyA/IHRoaXMuaGVhZGVySGVpZ2h0JC52YWx1ZSA6IDA7XG4gICAgfSwge2RlcGVuZHNPbjogdGhpcy5oZWFkZXJIZWlnaHQkfSk7XG5cbiAgICAvLyB0aGlzLnRhYmxlQm9keUhlaWdodCQgPSBjaGFpbih0aGlzLmJvdW5kcyQpLm1hcChib3VuZHMgPT4ge1xuICAgIC8vICAgcmV0dXJuIChib3VuZHMuaGVpZ2h0IC0gYWN0dWFsSGVhZGVySGVpZ2h0JC52YWx1ZSlcbiAgICAvLyB9LCB7ZGVwZW5kc09uOiBhY3R1YWxIZWFkZXJIZWlnaHQkfSlcbiAgICAvLyAgIC5vdGhlcndpc2UoMCk7XG5cblxuICAgIC8vIGNvbnN0IHZpc2libGVSb3dDb3VudCQgPSBjaGFpbih0aGlzLmJvdW5kcyQpLm1hcChib3VuZHMgPT4ge1xuICAgIC8vICAgLy8gVE9ETzogdGhpcyBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IGFueSBjc3Mgc3R5bGluZyBhZGp1c3RtZW50cyBldGMuICBXaWxsIGludmVzdGlnYXRlIGlmIGl0J3MgYW4gaXNzdWUuXG4gICAgLy8gICBjb25zdCByYXdSb3dDb3VudCA9IChib3VuZHMuaGVpZ2h0IC0gYWN0dWFsSGVhZGVySGVpZ2h0JC52YWx1ZSkgLyB0aGlzLnJvd0hlaWdodCQudmFsdWU7XG4gICAgLy8gICByZXR1cm4gcmF3Um93Q291bnQgPCAxID8gMCA6IE1hdGguZmxvb3IocmF3Um93Q291bnQpO1xuICAgIC8vIH0sIHtcbiAgICAvLyAgIGRlcGVuZHNPbjogW2FjdHVhbEhlYWRlckhlaWdodCQsIHRoaXMucm93SGVpZ2h0JF0sXG4gICAgLy8gICBwb3N0cG9uZVdoaWxlOiBjaGFpbih0aGlzLmJvdW5kcyQpLnBsdWNrTnVtZXJpYyhcImhlaWdodFwiKS5pc0xlc3NUaGFuKDEpXG4gICAgLy8gfSk7XG5cbiAgICAvLyAvLyBjb25zdCBwYWdlU2l6ZSQgPSBjaGFpbih2aXNpYmxlUm93Q291bnQkKVxuICAgIC8vIC8vICAgLm1hcChjb3VudCA9PiAyICogY291bnQpLm90aGVyd2lzZSgwKVxuICAgIC8vIGNvbnN0IHBhZ2VTaXplJCA9IFZhbHVlTW9kZWwuY29uc3RhbnQoMTIpXG5cblxuICAgIHdoZW4odGhpcy5kYXRhJCkuY2hhbmdlcyhpcyA9PiB7XG4gICAgICB0aGlzLnZpcnR1YWxTY3JvbGxEYXRhU291cmNlLmRhdGEgPSBpcztcbiAgICAgIHRoaXMuc2NoZWR1bGVUYWJsZUhlaWdodENoZWNrKCk7XG4gICAgfSwge2luaXRpYWxWYWx1ZTogXCJldmFsdWF0ZVwifSlcblxuXG4gICAgdGhpcy5vbkluaXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zJCA9IGNoYWluKHRoaXMudGFibGVNb2RlbC5jb2x1bW5zKTtcbiAgICAgIHRoaXMuY29sdW1uSWRzJCA9IGNoYWluKHRoaXMuY29sdW1ucyQpLnBsdWNrKFwiY29sdW1uSWRcIik7XG4gICAgICB0aGlzLmNvbHVtbnNCeUlkJCA9IGNoYWluKHRoaXMuY29sdW1ucyQpLmluZGV4QnkoJ2NvbHVtbklkJyk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0eG8gPSBuZXcgVHJhbnNhY3Rpb25PYnNlcnZlcih7dmVyYm9zZTogZmFsc2V9KS5vbkV2ZW50KGUgPT4gY29uc29sZS5sb2coZS5uYW1lLCBlLnBheWxvYWQpKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgndGhpcy52aXJ0dWFsU2Nyb2xsUm93UmFuZ2UkJywgdGhpcy52aXJ0dWFsU2Nyb2xsUm93UmFuZ2UkKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgndGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQnLCB0aGlzLnZpcnR1YWxTY3JvbGxTcGFjZXJTaXplJCk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ3RoaXMudmlydHVhbFJvd3MkJywgdGhpcy52aXJ0dWFsUm93cyQpO1xuICAgIC8vIHR4by5vYnNlcnZlKCd0aGlzLnRhYmxlQm9keUhlaWdodCQnLCB0aGlzLnRhYmxlQm9keUhlaWdodCQpO1xuXG4gIH1cblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5oaWRlLWhlYWRlclwiKVxuICBnZXQgaGlkZUhlYWRlcigpIHtcbiAgICByZXR1cm4gIXRoaXMuc2hvd0hlYWRlcjtcbiAgfVxuXG4gIGlzRWRpdGluZyhyb3c6IFJvdyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudGFibGVNb2RlbC5nZXRFZGl0U2Vzc2lvbkZvcihyb3cpO1xuICB9XG5cbiAgbm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4sIHJvdzogUm93KSB7XG4gICAgdGhpcy50YWJsZU1vZGVsLl9ub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW5Nb2RlbCwgcm93KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG5cbiAgaXNGaXJzdFZpc2libGVDb2x1bW4oY29sdW1uSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlTW9kZWwuZmlyc3RWaXNpYmxlQ29sdW1uJC5xdWVyeSgpLnZhbHVlPy5jb2x1bW5JZCA9PT0gY29sdW1uSWQ7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuXG4gIGlzTGFzdFZpc2libGVDb2x1bW4oY29sdW1uSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlTW9kZWwubGFzdFZpc2libGVDb2x1bW4kLnF1ZXJ5KCkudmFsdWU/LmNvbHVtbklkID09PSBjb2x1bW5JZDtcbiAgfVxuXG4gIGdldENvbHVtbkNsYXNzZXMoY29sdW1uSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBbYGF1cC1jb2wtJHt0aGlzLmNvbHVtbnNCeUlkJC5nZXQoY29sdW1uSWQpLmRhc2hlcmlzZWRDb2x1bW5JZH1gXTtcbiAgICBpZiAodGhpcy5pc0ZpcnN0VmlzaWJsZUNvbHVtbihjb2x1bW5JZCkpIHtcbiAgICAgIGNsYXNzZXMucHVzaChcImZpcnN0LXZpc2libGUtY29sdW1uXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0xhc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkKSkge1xuICAgICAgY2xhc3Nlcy5wdXNoKFwibGFzdC12aXNpYmxlLWNvbHVtblwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzZXM7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlVGFibGVIZWlnaHRDaGVjayh3YWl0TWlsbGlzID0gNTApIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRib2R5ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcInRib2R5XCIpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgYm9keUhlaWdodCA9IHRib2R5Lm9mZnNldEhlaWdodDtcbiAgICAgIGlmICh0aGlzLmRhdGEkLmxlbmd0aCA+IDAgJiYgYm9keUhlaWdodCA8IHRoaXMucm93SGVpZ2h0JC52YWx1ZSkge1xuICAgICAgICAvLyBIYWNrcyB0byBnZXQgb3VyIHZpcnR1YWwgc2Nyb2xsIHRvIHJlcGFpbnRcbiAgICAgICAgTG9nZ2VyLmdldCh0aGlzKS5sb2coYHJvd0NvdW50PSR7dGhpcy5kYXRhJC5sZW5ndGh9LCBib2R5SGVpZ2h0PSR7Ym9keUhlaWdodH0gLT4gdnJpdHVhbCB0YWJsZSBub3QgcmVuZGVyaW5nLCB0cmlnZ2VyaW5nIHJlc2l6ZSB0byBmb3JjZSByZXBhaW50YClcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemUnKSk7XG4gICAgICAgIGlmICh3YWl0TWlsbGlzIDwgNTAwKSB7XG4gICAgICAgICAgdGhpcy5zY2hlZHVsZVRhYmxlSGVpZ2h0Q2hlY2sod2FpdE1pbGxpcyArIDUwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHdhaXRNaWxsaXMpXG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBUYWJsZUJvZHlDb21wb25lbnQge1xuICBleHBvcnQgdHlwZSBTY3JvbGxNb2RlID0gXCJub25lXCIgfCBcImNsYXNzaWNcIiB8IFwidmlydHVhbFwiO1xuXG59XG4iLCJcbjxkaXYgY2xhc3M9XCJjbGFzc2ljLXNjcm9sbC1jb250YWluZXJcIiAqbmdJZj1cInNjcm9sbE1vZGUkLnZhbHVlICE9PSAndmlydHVhbCdcIj5cbiAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhJC52YWx1ZVwiIFt0cmFja0J5XT1cInRyYWNrQnlcIiBbbXVsdGlUZW1wbGF0ZURhdGFSb3dzXT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zJC52YWx1ZTsgaW5kZXggYXMgaW5kZXg7IGZpcnN0IGFzIGZpcnN0OyBsYXN0IGFzIGxhc3RcIlxuICAgICAgICAgICAgICAgICAgbWF0Q29sdW1uRGVmPVwie3tjb2x1bW4uY29sdW1uSWR9fVwiPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbY2xhc3MuZmxleF09XCJjb2x1bW4uaXNGbGV4KClcIiBbY2xhc3MuaGlkZV09XCIhY29sdW1uLmlzVmlzaWJsZSgpXCI+XG4gICAgICAgIDxhdXAtdGFibGUtaGVhZGVyLWNlbGwgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWlkXT1cImNvbHVtbi5jb2x1bW5JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzZXMoY29sdW1uLmNvbHVtbklkKVwiXG4gICAgICAgID48L2F1cC10YWJsZS1oZWFkZXItY2VsbD5cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgKGNsaWNrKT1cIm5vdGlmeUNlbGxDbGlja2VkKGNvbHVtbiwgcm93KVwiXG4gICAgICAgICAgW2NsYXNzLmVuYWJsZS1jdXJzb3JdPVwidGFibGVNb2RlbC5pc0N1cnNvckVuYWJsZWQoY29sdW1uKVwiXG4gICAgICAgICAgW2NsYXNzLmZsZXhdPVwiY29sdW1uLmlzRmxleCgpXCJcbiAgICAgICAgICBbY2xhc3MuaGlkZV09XCIhY29sdW1uLmlzVmlzaWJsZSgpXCJcbiAgICAgID5cbiAgICAgICAgPGF1cC10YWJsZS1jZWxsIFtjb2x1bW5dPVwiJGFueShjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJsZU1vZGVsXT1cIiRhbnkodGFibGVNb2RlbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRTZXNzaW9uXT1cIiRhbnkodGFibGVNb2RlbC5nZXRFZGl0U2Vzc2lvbkZvcihyb3cpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWlkXT1cImNvbHVtbi5jb2x1bW5JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3Nlcyhjb2x1bW4uY29sdW1uSWQpXCJcbiAgICAgICAgPjwvYXVwLXRhYmxlLWNlbGw+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJjb2x1bW5JZHMkLnZhbHVlOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBjb2x1bW5JZHMkLnZhbHVlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgW25nQ2xhc3NdPVwidGFibGVNb2RlbC5nZXRSb3dDbGFzc2VzKHJvdylcIlxuICAgICAgICBbY2xhc3MuZW5hYmxlLWhvdmVyXT1cInRhYmxlTW9kZWwuaXNIb3ZlckVuYWJsZWQoKVwiXG4gICAgICAgIFthdXBUYWJsZVJvd0F0dHJpYnV0ZXNdPVwidGFibGVNb2RlbC5nZXRSb3dBdHRyaWJ1dGVzKHJvdylcIlxuICAgICAgICBbYXR0ci5hdXAtcm93LWlkXT1cInRyYWNrQnkoaSwgcm93KVwiXG4gICAgPjwvdHI+XG5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICAqbmdJZj1cInNjcm9sbE1vZGUkLnZhbHVlID09PSAndmlydHVhbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R2c0l0ZW1TaXplXT1cInJvd0hlaWdodCQudmFsdWVcIiBbaGVhZGVySGVpZ2h0XT1cImhlYWRlckhlaWdodCQudmFsdWVcIiBbYnVmZmVyTXVsdGlwbGllcl09XCJidWZmZXJNdWx0aXBsaWVyXCI+XG4gIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwidmlydHVhbFNjcm9sbERhdGFTb3VyY2VcIiBbdHJhY2tCeV09XCJ0cmFja0J5XCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1ucyQudmFsdWU7IGluZGV4IGFzIGluZGV4OyBmaXJzdCBhcyBmaXJzdDsgbGFzdCBhcyBsYXN0XCJcbiAgICAgICAgICAgICAgICAgIG1hdENvbHVtbkRlZj1cInt7Y29sdW1uLmNvbHVtbklkfX1cIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2NsYXNzLmZsZXhdPVwiY29sdW1uLmlzRmxleCgpXCIgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiPlxuICAgICAgICA8YXVwLXRhYmxlLWhlYWRlci1jZWxsIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtaGVhZGVyLWNlbGw+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW4sIHJvdylcIlxuICAgICAgICAgIFtjbGFzcy5lbmFibGUtY3Vyc29yXT1cInRhYmxlTW9kZWwuaXNDdXJzb3JFbmFibGVkKGNvbHVtbilcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiXG4gICAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdXAtdGFibGUtY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVNb2RlbF09XCIkYW55KHRhYmxlTW9kZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0U2Vzc2lvbl09XCIkYW55KHRhYmxlTW9kZWwuZ2V0RWRpdFNlc3Npb25Gb3Iocm93KSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzZXMoY29sdW1uLmNvbHVtbklkKVwiXG4gICAgICAgID48L2F1cC10YWJsZS1jZWxsPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uSWRzJC52YWx1ZTsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1uSWRzJC52YWx1ZTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlTW9kZWwuZ2V0Um93Q2xhc3Nlcyhyb3cpXCJcbiAgICAgICAgW2NsYXNzLmVuYWJsZS1ob3Zlcl09XCJ0YWJsZU1vZGVsLmlzSG92ZXJFbmFibGVkKClcIlxuICAgICAgICBbYXVwVGFibGVSb3dBdHRyaWJ1dGVzXT1cInRhYmxlTW9kZWwuZ2V0Um93QXR0cmlidXRlcyhyb3cpXCJcbiAgICAgICAgW2F0dHIuYXVwLXJvdy1pZF09XCJ0cmFja0J5KGksIHJvdylcIlxuICAgID48L3RyPlxuXG4gIDwvdGFibGU+XG48L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuIl19
|
package/esm2022/lib/interaction/components/activity-container/activity-container.component.mjs
CHANGED
|
@@ -20,6 +20,7 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
20
20
|
tabs;
|
|
21
21
|
activityOutlets;
|
|
22
22
|
activityRefs = [];
|
|
23
|
+
animationDuration = "500ms";
|
|
23
24
|
_identifier;
|
|
24
25
|
_deferredCleanUp;
|
|
25
26
|
interactionServiceApi;
|
|
@@ -32,6 +33,7 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
32
33
|
busy = this.registerDisposable(new DelegatingValueModel().withDefault(false));
|
|
33
34
|
syncTabsJob = undefined;
|
|
34
35
|
stable$;
|
|
36
|
+
wasActive = false;
|
|
35
37
|
constructor(placeRouter) {
|
|
36
38
|
super();
|
|
37
39
|
this.placeRouter = placeRouter;
|
|
@@ -68,7 +70,12 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
68
70
|
* Returns true if an activity is currently running.
|
|
69
71
|
*/
|
|
70
72
|
isActive() {
|
|
71
|
-
|
|
73
|
+
const isActive = this.getActiveActivityCount() > 0;
|
|
74
|
+
// if (this.wasActive !== isActive) {
|
|
75
|
+
// console.log({was: this.wasActive, is: isActive});
|
|
76
|
+
// }
|
|
77
|
+
// this.wasActive = isActive
|
|
78
|
+
return isActive;
|
|
72
79
|
}
|
|
73
80
|
registerDisposable(disposable) {
|
|
74
81
|
return this.garbage.registerDisposable(disposable);
|
|
@@ -151,7 +158,7 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
151
158
|
// by activity index)
|
|
152
159
|
setTimeout(() => {
|
|
153
160
|
this.activityRefs = []; // we have to do it after the animation timeout or the activity disappears before the animatin finsihes
|
|
154
|
-
}, this.
|
|
161
|
+
}, this.getTabAnimationDurationInMillis());
|
|
155
162
|
const promise = this.interactionServiceApi.notifyFinished(this);
|
|
156
163
|
this._deferredCleanUp = promise
|
|
157
164
|
.finally(() => {
|
|
@@ -177,7 +184,6 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
177
184
|
/**
|
|
178
185
|
* Synchronises the selected tab index.
|
|
179
186
|
*/
|
|
180
|
-
// @Trace()
|
|
181
187
|
synchroniseSelectedTabIndex() {
|
|
182
188
|
assert.isTruthy(this.isActive());
|
|
183
189
|
const previousIndex = this.tabs.selectedIndex;
|
|
@@ -189,10 +195,10 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
189
195
|
activityRef.setFocused(false);
|
|
190
196
|
this.busy.setDelegate(activityRef.activityBusy);
|
|
191
197
|
this.tabs.selectedIndex = newIndex;
|
|
192
|
-
if (this.ready$.value) {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
198
|
+
// if (this.ready$.value) {
|
|
199
|
+
// // Note: We're not using the animation done event as it's firing almost immeadiately.
|
|
200
|
+
// setTimeout(() => this.finaliseActivityStates(), animate ? this.getTabAnimationDurationInMillis() : 0);
|
|
201
|
+
// }
|
|
196
202
|
}
|
|
197
203
|
}
|
|
198
204
|
finaliseActivityStates() {
|
|
@@ -206,7 +212,12 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
206
212
|
return this.activityOutlets.toArray()[this.tabs.selectedIndex];
|
|
207
213
|
}
|
|
208
214
|
getTabAnimationDuration() {
|
|
209
|
-
const
|
|
215
|
+
// const s = this._started$.value ? this.animationDuration : "0";
|
|
216
|
+
// return s
|
|
217
|
+
return this.animationDuration;
|
|
218
|
+
}
|
|
219
|
+
getTabAnimationDurationInMillis() {
|
|
220
|
+
const match = this.animationDuration.match(/(\d+)(.*)/);
|
|
210
221
|
const numericValue = parseFloat(match[1]);
|
|
211
222
|
switch (match[2].trim()) {
|
|
212
223
|
case "ms":
|
|
@@ -232,12 +243,16 @@ export class ActivityContainerComponent extends AbstractInteractionContext {
|
|
|
232
243
|
}
|
|
233
244
|
}, 75);
|
|
234
245
|
}
|
|
246
|
+
onAnimationDone() {
|
|
247
|
+
this._started$.value = true;
|
|
248
|
+
this.finaliseActivityStates();
|
|
249
|
+
}
|
|
235
250
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityContainerComponent, deps: [{ token: i1.PlaceRouter }], target: i0.ɵɵFactoryTarget.Component });
|
|
236
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: { dynamicHeight: "dynamicHeight" }, viewQueries: [{ propertyName: "tabs", first: true, predicate: ["tabs"], descendants: true, static: true }, { propertyName: "activityOutlets", predicate: ActivityOutletComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: i4.BusyOverlayComponent, selector: "aup-busy-overlay", inputs: ["busy$", "busy"] }, { kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i6.ActivityOutletComponent, selector: "aup-activity-outlet", inputs: ["nestedInteractionContext", "activityRef"] }] });
|
|
251
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityContainerComponent, selector: "aup-activity-container", inputs: { dynamicHeight: "dynamicHeight", animationDuration: "animationDuration" }, viewQueries: [{ propertyName: "tabs", first: true, predicate: ["tabs"], descendants: true, static: true }, { propertyName: "activityOutlets", predicate: ActivityOutletComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\"\n [animationDuration]=\"getTabAnimationDuration()\"\n (animationDone)=\"onAnimationDone()\"\n>\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: i4.BusyOverlayComponent, selector: "aup-busy-overlay", inputs: ["busy$", "busy"] }, { kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i6.ActivityOutletComponent, selector: "aup-activity-outlet", inputs: ["nestedInteractionContext", "activityRef"] }] });
|
|
237
252
|
}
|
|
238
253
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityContainerComponent, decorators: [{
|
|
239
254
|
type: Component,
|
|
240
|
-
args: [{ selector: "aup-activity-container", template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"] }]
|
|
255
|
+
args: [{ selector: "aup-activity-container", template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\"\n [animationDuration]=\"getTabAnimationDuration()\"\n (animationDone)=\"onAnimationDone()\"\n>\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <aup-busy-overlay [busy$]=\"busy\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </aup-busy-overlay>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-busy-overlay{flex:1}.activity-outlet-wrapper{flex:1}\n"] }]
|
|
241
256
|
}], ctorParameters: function () { return [{ type: i1.PlaceRouter }]; }, propDecorators: { dynamicHeight: [{
|
|
242
257
|
type: Input
|
|
243
258
|
}], tabs: [{
|
|
@@ -246,5 +261,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
246
261
|
}], activityOutlets: [{
|
|
247
262
|
type: ViewChildren,
|
|
248
263
|
args: [ActivityOutletComponent]
|
|
264
|
+
}], animationDuration: [{
|
|
265
|
+
type: Input
|
|
249
266
|
}] } });
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL2NvbXBvbmVudHMvYWN0aXZpdHktY29udGFpbmVyL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWNvbnRhaW5lci9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFDTCxNQUFNLEVBR04sb0JBQW9CLEVBRXBCLEdBQUcsRUFDSCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWxELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUUvQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7QUFPcEYsTUFBTSxPQUFPLDBCQUFvQyxTQUFRLDBCQUEwQjtJQWdDNUQ7SUE3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REgsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUlqQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtNYXRUYWJHcm91cH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYnNcIjtcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbixcbiAgQ29uc3RydWN0YWJsZSxcbiAgRGVsZWdhdGluZ1ZhbHVlTW9kZWwsXG4gIERpc3Bvc2FibGUsXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgTXV0YWJsZVZhbHVlTW9kZWxcbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge2xhbmd9IGZyb20gXCJAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzXCI7XG5cbmltcG9ydCB7ZmluZExhc3R9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7UGxhY2VSb3V0ZXJ9IGZyb20gXCIuLi8uLi8uLi9wbGFjZS9wbGFjZS1yb3V0ZXJcIjtcbmltcG9ydCB7QWJzdHJhY3RJbnRlcmFjdGlvbkNvbnRleHR9IGZyb20gXCIuLi8uLi9hYnN0cmFjdC1pbnRlcmFjdGlvbi1jb250ZXh0XCI7XG5pbXBvcnQge0FjdGl2aXR5fSBmcm9tIFwiLi4vLi4vYWN0aXZpdHlcIjtcbmltcG9ydCB7QWN0aXZpdHlSZWZ9IGZyb20gXCIuLi8uLi9hY3Rpdml0eS1yZWZcIjtcbmltcG9ydCB7SW50ZXJhY3Rpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvaW50ZXJhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtBY3Rpdml0eU91dGxldENvbXBvbmVudH0gZnJvbSBcIi4vYWN0aXZpdHktb3V0bGV0L2FjdGl2aXR5LW91dGxldC5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF1cC1hY3Rpdml0eS1jb250YWluZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudDxELCBSLCBFPiBleHRlbmRzIEFic3RyYWN0SW50ZXJhY3Rpb25Db250ZXh0IHtcblxuICBASW5wdXQoKVxuICBkeW5hbWljSGVpZ2h0ID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChcInRhYnNcIiwge3N0YXRpYzogdHJ1ZX0pXG4gIHRhYnM6IE1hdFRhYkdyb3VwO1xuXG4gIEBWaWV3Q2hpbGRyZW4oQWN0aXZpdHlPdXRsZXRDb21wb25lbnQpXG4gIGFjdGl2aXR5T3V0bGV0czogUXVlcnlMaXN0PEFjdGl2aXR5T3V0bGV0Q29tcG9uZW50PGFueSwgYW55LCBhbnk+PjtcblxuICBhY3Rpdml0eVJlZnM6IEFjdGl2aXR5UmVmPGFueSwgYW55LCBhbnk+W10gPSBbXTtcblxuICBwcml2YXRlIF9pZGVudGlmaWVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX2RlZmVycmVkQ2xlYW5VcDogUHJvbWlzZTxhbnk+O1xuXG4gIHByaXZhdGUgaW50ZXJhY3Rpb25TZXJ2aWNlQXBpOiBJbnRlcmFjdGlvblNlcnZpY2UuQXBpO1xuXG4gIHByaXZhdGUgZ2FyYmFnZSA9IG5ldyBHYXJiYWdlQ29sbGVjdG9yKCk7XG4gIHByaXZhdGUgc3luY1NlbGVjdGVkVGFiVGltZW91dDogYW55O1xuICBwcml2YXRlIG9uQW5pbWF0aW9uRmluaXNoZWRKb2I6ICgpID0+IHZvaWQ7XG5cbiAgcmVhZG9ubHkgX3N0YXJ0ZWQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgX3JlYWR5JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IF9hbmltYXRpbmckID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBidXN5ID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPGJvb2xlYW4+KCkud2l0aERlZmF1bHQoZmFsc2UpKTtcblxuICByZWFkb25seSBzeW5jVGFic0pvYjogKCkgPT4gdm9pZCA9IHVuZGVmaW5lZDtcblxuICByZWFkb25seSBzdGFibGUkOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlcikge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWluLCB2YWx1ZU9mLCB3aGVufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB3aGVuKHRoaXMucmVhZHkkKS5iZWNvbWVzVHJ1dGh5KCgpID0+IHRoaXMuZmluYWxpc2VBY3Rpdml0eVN0YXRlcygpKVxuICAgIHRoaXMuc3RhYmxlJCA9IHZhbHVlT2YuYWxsKFxuICAgICAgdGhpcy5yZWFkeSQsXG4gICAgICB0aGlzLl9zdGFydGVkJCxcbiAgICAgIGNoYWluKHRoaXMuYW5pbWF0aW5nJCkuaXNGYWxzZXkoKVxuICAgICkuYXJlVHJ1dGh5KCk7XG4gIH1cblxuICBnZXQgc3RhcnRlZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0ZWQkLnJlYWRvbmx5JDtcbiAgfVxuXG4gIGdldCByZWFkeSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5JC5yZWFkb25seSQ7XG4gIH1cblxuICBnZXQgYW5pbWF0aW5nJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYW5pbWF0aW5nJC5yZWFkb25seSQ7XG4gIH1cblxuICBpbml0aWFsaXNlKGlkZW50aWZpZXI6IHN0cmluZywgYXBpOiBJbnRlcmFjdGlvblNlcnZpY2UuQXBpKSB7XG4gICAgYXNzZXJ0LmlzRmFsc2V5KHRoaXMuaXNJbml0aWFsaXNlZCgpKTtcbiAgICBhc3NlcnQubm90TmlsKGlkZW50aWZpZXIpO1xuICAgIGFzc2VydC5ub3ROaWwoYXBpKTtcbiAgICB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjtcbiAgICB0aGlzLmludGVyYWN0aW9uU2VydmljZUFwaSA9IGFwaTtcbiAgfVxuXG4gIG5vdGlmeVJlYWR5KHJlYWR5OiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZHkkLnZhbHVlID0gcmVhZHk7XG4gIH1cblxuICBnZXQgaWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gdGhpcy5faWRlbnRpZmllcjtcbiAgfVxuXG4gIGlzSW5pdGlhbGlzZWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5pZGVudGlmaWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhbiBhY3Rpdml0eSBpcyBjdXJyZW50bHkgcnVubmluZy5cbiAgICovXG4gIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZUFjdGl2aXR5Q291bnQoKSA+IDA7XG4gIH1cblxuICByZWdpc3RlckRpc3Bvc2FibGU8VCBleHRlbmRzIERpc3Bvc2FibGU+KGRpc3Bvc2FibGU6IFQpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5nYXJiYWdlLnJlZ2lzdGVyRGlzcG9zYWJsZShkaXNwb3NhYmxlKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgLy8gVE9ETzogdGhpbmsgYWJvdXQgYXV0byBjYW5jZWxsaW5nIGFueSBvdXRzdGFuZGluZyBhY3Rpdml0eSBvbiBkaXNwb3NlLlxuICAgIC8vICAgICAgIFNlZSBOYXZpZ2F0aW9uU3RhdGUuTmF2aWdhdGluZyBmb3IgYSB1c2UtY2FzZS5cbiAgICBhc3NlcnQuaXNGYWxzZXkodGhpcy5pc0FjdGl2ZSgpKTtcbiAgICB0aGlzLmdhcmJhZ2UuZGlzcG9zZSgpO1xuICB9XG5cbiAgZ2V0QWN0aXZlQWN0aXZpdHlSZWYoKTogQWN0aXZpdHlSZWY8YW55LCBhbnksIGFueT4ge1xuICAgIGlmICghdGhpcy5pc0FjdGl2ZSgpKSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShcIm5vIGFjdGl2aXR5IGluIHByb2dyZXNzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gZmluZExhc3QodGhpcy5hY3Rpdml0eVJlZnMsIHRhYiA9PiAhdGFiLmlzQ29tcGxldGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyB0aGUgY3VycmVudCBhY3Rpdml0eSBhbmQgcmV0dXJucyB0cnVlIHRoZSBjb250ZXh0IGlzIG5vIGxvbmdlciBhY3RpdmUsIGZhbHNlIGlmXG4gICAqIHRoZXJlIGlzIHN0aWxsIGFub3RoZXIgYWN0aXZpdHkgcnVubmluZy5cbiAgICovXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGNhbmNlbEFjdGl2ZUFjdGl2aXR5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGFjdGl2aXR5ID0gdGhpcy5nZXRBY3RpdmVBY3Rpdml0eVJlZigpO1xuICAgIGFjdGl2aXR5LmNhbmNlbCgpO1xuICAgIGlmICh0aGlzLmlzQ2xlYW5pbmdVcCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWl0Rm9ySW50ZXJhY3Rpb25Db250ZXh0Q2xlYW51cFRvRmluaXNoKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAhdGhpcy5pc0FjdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE86IHRoaXMgaGFuZGxpbmcgb2YgbXVsdGlwbGUgbmVzdGVkIGFjdGl2aXRpZXMgaXMgb25seSB1c2VkIGJ5IHRoZSBhY3Rpdml0eSBjb21wb25lbnQgYW5kIGlzIG5vdCBhIGdlbmVyYWwgY2FzZS5cbiAgLy8gQFRyYWNlKClcbiAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZUFuZExhdW5jaEFjdGl2aXR5PEQxLCBSMSwgRTE+KGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxEMSwgUjEsIEUxPj4sIGRhdGE6IEQxLCBkaXNhYmxlQ2xvc2U6IGJvb2xlYW4pOiBQcm9taXNlPFIxPiB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMuaXNJbml0aWFsaXNlZCgpKTsgLy8gbWFrZSBzdXJlIHdlJ3ZlIGJlZW4gaW5pdGlhbGlzZWRcbiAgICBjb25zdCBhY3Rpdml0eVJlZiA9IG5ldyBBY3Rpdml0eVJlZjxEMSwgUjEsIEUxPihhY3Rpdml0eVR5cGUsIGRhdGEsICgpID0+IHtcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gdGhpcy5nZXRBY3RpdmVBY3Rpdml0eUNvdW50KCkgPiAwO1xuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlclRhYlN5bmNocm9uaXNhdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maW5pc2hBbmRTdGFydENsZWFudXAoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmxhdW5jaEFjdGl2aXR5KGFjdGl2aXR5UmVmKTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgYWN0aXZpdHlSZWYuYWN0aXZpdHlSZXN1bHQ7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiY2xvc2luZyBhY3Rpdml0eVwiLCBhY3Rpdml0eVR5cGUubmFtZSwgdGhpcy5hY3Rpdml0eVJlZnMpXG4gICAgICBpZiAoIXRoaXMuaXNBY3RpdmUoKSkge1xuICAgICAgICAvLyB3YWl0IHVudGlsIHRoZSBhY3Rpdml0eSByb3V0ZSBzeW5jaW5nIGhhcyBmaW5pc2hlZFxuICAgICAgICBhd2FpdCB0aGlzLnBsYWNlUm91dGVyLndhaXRBY3Rpdml0aWVzU3luY2hyb25pc2VkKCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYWN0aXZpdHkgc3luY2luZyBmaW5pc2hlZFwiKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlQWN0aXZpdHlDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5UmVmcy5maWx0ZXIocmVmID0+ICFyZWYuaXNDb21wbGV0ZSgpKS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoaXMgaW50ZXJhY3Rpb24gY29udGV4dCBoYXMgZmluaXNoZWQgYW4gaXMgaW4gdGhlIHByb2Nlc3Mgb2Ygd2FpdGluZ1xuICAgKiBmb3IgYWxsIHRoZSBpbmZyYXN0cnVjdHVyZSAoaW5jbHVkaW5nIHJvdXRlIHVwZGF0ZXMpIHRvIGJlIGNvbXBsZXRlZC5cbiAgICovXG4gIGlzQ2xlYW5pbmdVcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9kZWZlcnJlZENsZWFuVXA7XG4gIH1cblxuICBhc3luYyB3YWl0Rm9ySW50ZXJhY3Rpb25Db250ZXh0Q2xlYW51cFRvRmluaXNoKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZmVycmVkQ2xlYW5VcCA/XG4gICAgICB0aGlzLl9kZWZlcnJlZENsZWFuVXAgOlxuICAgICAgdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoQW5kU3RhcnRDbGVhbnVwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZGVmZXJyZWRDbGVhblVwKSB7XG4gICAgICAvLyBJbXBvcnRhbnQ6XG4gICAgICAvLyBDbGVhciBvdXIgdGFicyBzbyB0aGUgbmV4dCBhY3Rpdml0eSB0cmlnZ2VycyBhIHRhYiBjaGFuZ2UuXG4gICAgICAvLyBXaXRob3V0IHRoaXMgb3VyIGFuaW1hdGlvbiBkb25lIHdhc24ndCBjYWxsZWQgd2hlbiBhIHNpbmdsZVxuICAgICAgLy8gbmV3IGFjdGl2aXR5IGZvbGxvd2VkIGEgc2luZ2xlIHRhYiBhY3Rpdml0eSAoc2luY2Ugd2UncmUgdHJhY2tpbmdcbiAgICAgIC8vIGJ5IGFjdGl2aXR5IGluZGV4KVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlSZWZzID0gW107IC8vIHdlIGhhdmUgdG8gZG8gaXQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiB0aW1lb3V0IG9yIHRoZSBhY3Rpdml0eSBkaXNhcHBlYXJzIGJlZm9yZSB0aGUgYW5pbWF0aW4gZmluc2loZXNcbiAgICAgIH0sIHRoaXMuZ2V0VGFiQW5pbWF0aW9uRHVyYXRpb24oKSk7XG4gICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2VBcGkubm90aWZ5RmluaXNoZWQodGhpcyk7XG4gICAgICB0aGlzLl9kZWZlcnJlZENsZWFuVXAgPSBwcm9taXNlXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9kZWZlcnJlZENsZWFuVXAgPSBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuLy8gQFRyYWNlKClcbiAgbGF1bmNoQWN0aXZpdHk8RDEsIFIxLCBFMT4oYWN0aXZpdHlSZWY6IEFjdGl2aXR5UmVmPEQxLCBSMSwgRTE+KSB7XG4gICAgLy8gaWYgdGhpcyBpcyB0aGUgZmlyc3QgYWN0aXZpdHkgbGV0IHRoZSBpbnRlcmFjdGlvbiBzZXJ2aWNlIGtub3cuXG4gICAgY29uc3QgY2xlYW5lZFRhYnMgPSB0aGlzLmFjdGl2aXR5UmVmcy5maWx0ZXIodGFiID0+ICF0YWIuaXNDb21wbGV0ZSgpKTtcbiAgICB0aGlzLmFjdGl2aXR5UmVmcyA9IGNsZWFuZWRUYWJzLmNvbmNhdChhY3Rpdml0eVJlZik7XG4gICAgY29uc3QgZmlyc3RUaW1lID0gdGhpcy5hY3Rpdml0eVJlZnMubGVuZ3RoID09PSAxO1xuICAgIGlmIChmaXJzdFRpbWUpIHtcbiAgICAgIHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlQXBpLm5vdGlmeUFjdGl2ZSh0aGlzKTtcbiAgICB9XG4gICAgdGhpcy5zeW5jaHJvbmlzZVNlbGVjdGVkVGFiSW5kZXgoKTtcbiAgfVxuXG4gIGFjdGl2aXR5SW5kZXgoaW5kZXg6IG51bWJlciwgYWN0aXZpdHlSZWY6IEFjdGl2aXR5UmVmPGFueSwgYW55LCBhbnk+KSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9O1xuXG4gIC8qKlxuICAgKiBTeW5jaHJvbmlzZXMgdGhlIHNlbGVjdGVkIHRhYiBpbmRleC5cbiAgICovXG4gIC8vIEBUcmFjZSgpXG4gIHByaXZhdGUgc3luY2hyb25pc2VTZWxlY3RlZFRhYkluZGV4KCk6IHZvaWQge1xuICAgIGFzc2VydC5pc1RydXRoeSh0aGlzLmlzQWN0aXZlKCkpO1xuICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSB0aGlzLnRhYnMuc2VsZWN0ZWRJbmRleDtcbiAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuZ2V0QWN0aXZlQWN0aXZpdHlDb3VudCgpIC0gMTtcbiAgICBjb25zdCBhbmltYXRlID0gdGhpcy5hY3Rpdml0eVJlZnMubGVuZ3RoID4gMTtcbiAgICBpZiAocHJldmlvdXNJbmRleCAhPT0gbmV3SW5kZXgpIHtcbiAgICAgIHRoaXMuX2FuaW1hdGluZyQudmFsdWUgPSBhbmltYXRlO1xuICAgICAgY29uc3QgYWN0aXZpdHlSZWYgPSB0aGlzLmFjdGl2aXR5UmVmc1tuZXdJbmRleF07XG4gICAgICBhY3Rpdml0eVJlZi5zZXRGb2N1c2VkKGZhbHNlKTtcbiAgICAgIHRoaXMuYnVzeS5zZXREZWxlZ2F0ZShhY3Rpdml0eVJlZi5hY3Rpdml0eUJ1c3kpO1xuICAgICAgdGhpcy50YWJzLnNlbGVjdGVkSW5kZXggPSBuZXdJbmRleDtcbiAgICAgIGlmICh0aGlzLnJlYWR5JC52YWx1ZSkge1xuICAgICAgICAvLyBOb3RlOiBXZSdyZSBub3QgdXNpbmcgdGhlIGFuaW1hdGlvbiBkb25lIGV2ZW50IGFzIGl0J3MgZmlyaW5nIGFsbW9zdCBpbW1lYWRpYXRlbHkuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5maW5hbGlzZUFjdGl2aXR5U3RhdGVzKCksIGFuaW1hdGUgPyB0aGlzLmdldFRhYkFuaW1hdGlvbkR1cmF0aW9uKCkgOiAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmFsaXNlQWN0aXZpdHlTdGF0ZXMoKSB7XG4gICAgdGhpcy5fYW5pbWF0aW5nJC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZpdHlSZWZzID0gdGhpcy5hY3Rpdml0eVJlZnMuZmlsdGVyKHRhYiA9PiAhdGFiLmlzQ29tcGxldGUoKSk7XG4gICAgdGhpcy5hY3Rpdml0eVJlZnMuZm9yRWFjaCgocmVmLCBpbmRleCkgPT4ge1xuICAgICAgcmVmLnNldEZvY3VzZWQoaW5kZXggPT09IHRoaXMudGFicy5zZWxlY3RlZEluZGV4KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRPdXRsZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlPdXRsZXRzLnRvQXJyYXkoKVt0aGlzLnRhYnMuc2VsZWN0ZWRJbmRleF07XG4gIH1cblxuICBwcml2YXRlIGdldFRhYkFuaW1hdGlvbkR1cmF0aW9uKCk6IG51bWJlciB7XG4gICAgY29uc3QgbWF0Y2ggPSB0aGlzLnRhYnMuYW5pbWF0aW9uRHVyYXRpb24ubWF0Y2goLyhcXGQrKSguKikvKTtcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KG1hdGNoWzFdKTtcbiAgICBzd2l0Y2ggKG1hdGNoWzJdLnRyaW0oKSkge1xuICAgICAgY2FzZSBcIm1zXCI6XG4gICAgICAgIHJldHVybiBudW1lcmljVmFsdWU7XG4gICAgICBjYXNlIFwic1wiOlxuICAgICAgICByZXR1cm4gMTAwMCAqIG51bWVyaWNWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGxhbmcuaWxsZWdhbFN0YXRlKGB1bnN1cHBvcnRlZCBkdXJhdGlvbiBzdHJpbmc6ICR7dGhpcy50YWJzLmFuaW1hdGlvbkR1cmF0aW9ufWApO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgZ2V0U2VsZWN0ZWRUYWJJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLnNlbGVjdGVkSW5kZXg7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwcml2YXRlIHRyaWdnZXJUYWJTeW5jaHJvbmlzYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuc3luY1NlbGVjdGVkVGFiVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3luY1NlbGVjdGVkVGFiVGltZW91dCk7XG4gICAgfVxuICAgIHRoaXMuc3luY1NlbGVjdGVkVGFiVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zeW5jU2VsZWN0ZWRUYWJUaW1lb3V0ID0gbnVsbDtcbiAgICAgIGlmICh0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgdGhpcy5zeW5jaHJvbmlzZVNlbGVjdGVkVGFiSW5kZXgoKTtcbiAgICAgIH1cbiAgICB9LCA3NSk7XG4gIH1cbn1cbiIsIjxtYXQtdGFiLWdyb3VwICN0YWJzIG5vLXRhYi1oZWFkZXJcbiAgICAgICAgICAgICAgIFtkeW5hbWljSGVpZ2h0XT1cImR5bmFtaWNIZWlnaHRcIlxuICAgICAgICAgICAgICAgW2NsYXNzLmZ1bGwtaGVpZ2h0LXRhYnNdPVwiIWR5bmFtaWNIZWlnaHRcIj5cbiAgPG1hdC10YWIgKm5nRm9yPVwibGV0IGFjdGl2aXR5UmVmIG9mIGFjdGl2aXR5UmVmczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogYWN0aXZpdHlJbmRleFwiPlxuICAgIDxhdXAtYnVzeS1vdmVybGF5IFtidXN5JF09XCJidXN5XCIgY2RrVHJhcEZvY3VzIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlPlxuICAgICAgPCEtLVxuICAgICAgV2UgaGF2ZSBpc3N1ZXMgd2hlcmUgYW5ndWxhciBpcyB0cmlnZ2VyaW5nIGEgbGVhdmUgYW5pbWF0aW9uIHdoZW4gYW5cbiAgICAgIG5ldyBhY3Rpdml0eSBpcyBzdGFydGVkLCBidXQgaXMgbm90IHJ1bm5pbmcgdGhlIGVudGVyIGFuaW1hdGlvblxuICAgICAgd2hlbiBpdCBpcyBzY3JvbGxlZCBiYWNrIGludG8gdmlldy4gIFNvIHdlIHRyYWNrIHRoZSB0YWIgY2hhbmdlcyBhbmRcbiAgICAgIGRpc2FibGUgYWxsIGFuaW1hdGlvbnMgaW5zaWRlIHRoZSB0YWIgd2hpbGUgd2UncmUgYW5pbWF0aW5nLlxuICAgICAgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aXZpdHktb3V0bGV0LXdyYXBwZXJcIiBbQC5kaXNhYmxlZF09XCIhYWN0aXZpdHlSZWYuZm9jdXNlZFwiPlxuICAgICAgICA8YXVwLWFjdGl2aXR5LW91dGxldCBbbmVzdGVkSW50ZXJhY3Rpb25Db250ZXh0XT1cInRoaXNcIiBbYWN0aXZpdHlSZWZdPVwiYWN0aXZpdHlSZWZcIj48L2F1cC1hY3Rpdml0eS1vdXRsZXQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F1cC1idXN5LW92ZXJsYXk+XG4gIDwvbWF0LXRhYj5cbjwvbWF0LXRhYi1ncm91cD5cbiJdfQ==
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL2NvbXBvbmVudHMvYWN0aXZpdHktY29udGFpbmVyL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWNvbnRhaW5lci9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBZSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFDTCxNQUFNLEVBR04sb0JBQW9CLEVBRXBCLEdBQUcsRUFDSCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWxELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUUvQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7QUFPcEYsTUFBTSxPQUFPLDBCQUFvQyxTQUFRLDBCQUEwQjtJQW9DNUQ7SUFq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Q0FBQTtJQUMvQixDQUFDO3VHQW5SVSwwQkFBMEI7MkZBQTFCLDBCQUEwQixtUkFRdkIsdUJBQXVCLHVFQ25DdkMseWdDQW9CQTs7MkZET2EsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHdCQUF3QjtrR0FPbEMsYUFBYTtzQkFEWixLQUFLO2dCQUlOLElBQUk7c0JBREgsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUlqQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsdUJBQXVCO2dCQU1yQyxpQkFBaUI7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtNYXRUYWJHcm91cH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYnNcIjtcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbixcbiAgQ29uc3RydWN0YWJsZSxcbiAgRGVsZWdhdGluZ1ZhbHVlTW9kZWwsXG4gIERpc3Bvc2FibGUsXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgTXV0YWJsZVZhbHVlTW9kZWwsIFRyYWNlXG59IGZyb20gXCJAY29vbG9uL3BlY3RpblwiO1xuaW1wb3J0IHtsYW5nfSBmcm9tIFwiQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllc1wiO1xuXG5pbXBvcnQge2ZpbmRMYXN0fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQge1BsYWNlUm91dGVyfSBmcm9tIFwiLi4vLi4vLi4vcGxhY2UvcGxhY2Utcm91dGVyXCI7XG5pbXBvcnQge0Fic3RyYWN0SW50ZXJhY3Rpb25Db250ZXh0fSBmcm9tIFwiLi4vLi4vYWJzdHJhY3QtaW50ZXJhY3Rpb24tY29udGV4dFwiO1xuaW1wb3J0IHtBY3Rpdml0eX0gZnJvbSBcIi4uLy4uL2FjdGl2aXR5XCI7XG5pbXBvcnQge0FjdGl2aXR5UmVmfSBmcm9tIFwiLi4vLi4vYWN0aXZpdHktcmVmXCI7XG5pbXBvcnQge0ludGVyYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2ludGVyYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7QWN0aXZpdHlPdXRsZXRDb21wb25lbnR9IGZyb20gXCIuL2FjdGl2aXR5LW91dGxldC9hY3Rpdml0eS1vdXRsZXQuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhdXAtYWN0aXZpdHktY29udGFpbmVyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQ8RCwgUiwgRT4gZXh0ZW5kcyBBYnN0cmFjdEludGVyYWN0aW9uQ29udGV4dCB7XG5cbiAgQElucHV0KClcbiAgZHluYW1pY0hlaWdodCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoXCJ0YWJzXCIsIHtzdGF0aWM6IHRydWV9KVxuICB0YWJzOiBNYXRUYWJHcm91cDtcblxuICBAVmlld0NoaWxkcmVuKEFjdGl2aXR5T3V0bGV0Q29tcG9uZW50KVxuICBhY3Rpdml0eU91dGxldHM6IFF1ZXJ5TGlzdDxBY3Rpdml0eU91dGxldENvbXBvbmVudDxhbnksIGFueSwgYW55Pj47XG5cbiAgYWN0aXZpdHlSZWZzOiBBY3Rpdml0eVJlZjxhbnksIGFueSwgYW55PltdID0gW107XG5cbiAgQElucHV0KClcbiAgYW5pbWF0aW9uRHVyYXRpb24gPSBcIjUwMG1zXCJcblxuICBwcml2YXRlIF9pZGVudGlmaWVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX2RlZmVycmVkQ2xlYW5VcDogUHJvbWlzZTxhbnk+O1xuXG4gIHByaXZhdGUgaW50ZXJhY3Rpb25TZXJ2aWNlQXBpOiBJbnRlcmFjdGlvblNlcnZpY2UuQXBpO1xuXG4gIHByaXZhdGUgZ2FyYmFnZSA9IG5ldyBHYXJiYWdlQ29sbGVjdG9yKCk7XG4gIHByaXZhdGUgc3luY1NlbGVjdGVkVGFiVGltZW91dDogYW55O1xuICBwcml2YXRlIG9uQW5pbWF0aW9uRmluaXNoZWRKb2I6ICgpID0+IHZvaWQ7XG5cbiAgcmVhZG9ubHkgX3N0YXJ0ZWQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgX3JlYWR5JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IF9hbmltYXRpbmckID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBidXN5ID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPGJvb2xlYW4+KCkud2l0aERlZmF1bHQoZmFsc2UpKTtcblxuICByZWFkb25seSBzeW5jVGFic0pvYjogKCkgPT4gdm9pZCA9IHVuZGVmaW5lZDtcblxuICByZWFkb25seSBzdGFibGUkOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuICBwcml2YXRlIHdhc0FjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlcikge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWluLCB2YWx1ZU9mLCB3aGVufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB3aGVuKHRoaXMucmVhZHkkKS5iZWNvbWVzVHJ1dGh5KCgpID0+IHRoaXMuZmluYWxpc2VBY3Rpdml0eVN0YXRlcygpKVxuICAgIHRoaXMuc3RhYmxlJCA9IHZhbHVlT2YuYWxsKFxuICAgICAgdGhpcy5yZWFkeSQsXG4gICAgICB0aGlzLl9zdGFydGVkJCxcbiAgICAgIGNoYWluKHRoaXMuYW5pbWF0aW5nJCkuaXNGYWxzZXkoKVxuICAgICkuYXJlVHJ1dGh5KCk7XG4gIH1cblxuICBnZXQgc3RhcnRlZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0ZWQkLnJlYWRvbmx5JDtcbiAgfVxuXG4gIGdldCByZWFkeSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5JC5yZWFkb25seSQ7XG4gIH1cblxuICBnZXQgYW5pbWF0aW5nJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYW5pbWF0aW5nJC5yZWFkb25seSQ7XG4gIH1cblxuICBpbml0aWFsaXNlKGlkZW50aWZpZXI6IHN0cmluZywgYXBpOiBJbnRlcmFjdGlvblNlcnZpY2UuQXBpKSB7XG4gICAgYXNzZXJ0LmlzRmFsc2V5KHRoaXMuaXNJbml0aWFsaXNlZCgpKTtcbiAgICBhc3NlcnQubm90TmlsKGlkZW50aWZpZXIpO1xuICAgIGFzc2VydC5ub3ROaWwoYXBpKTtcbiAgICB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjtcbiAgICB0aGlzLmludGVyYWN0aW9uU2VydmljZUFwaSA9IGFwaTtcbiAgfVxuXG4gIG5vdGlmeVJlYWR5KHJlYWR5OiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZHkkLnZhbHVlID0gcmVhZHk7XG4gIH1cblxuICBnZXQgaWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gdGhpcy5faWRlbnRpZmllcjtcbiAgfVxuXG4gIGlzSW5pdGlhbGlzZWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5pZGVudGlmaWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhbiBhY3Rpdml0eSBpcyBjdXJyZW50bHkgcnVubmluZy5cbiAgICovXG4gIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzQWN0aXZlID0gdGhpcy5nZXRBY3RpdmVBY3Rpdml0eUNvdW50KCkgPiAwO1xuICAgIC8vIGlmICh0aGlzLndhc0FjdGl2ZSAhPT0gaXNBY3RpdmUpIHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKHt3YXM6IHRoaXMud2FzQWN0aXZlLCBpczogaXNBY3RpdmV9KTtcbiAgICAvLyB9XG4gICAgLy8gdGhpcy53YXNBY3RpdmUgPSBpc0FjdGl2ZVxuICAgIHJldHVybiBpc0FjdGl2ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyRGlzcG9zYWJsZTxUIGV4dGVuZHMgRGlzcG9zYWJsZT4oZGlzcG9zYWJsZTogVCk6IFQge1xuICAgIHJldHVybiB0aGlzLmdhcmJhZ2UucmVnaXN0ZXJEaXNwb3NhYmxlKGRpc3Bvc2FibGUpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICAvLyBUT0RPOiB0aGluayBhYm91dCBhdXRvIGNhbmNlbGxpbmcgYW55IG91dHN0YW5kaW5nIGFjdGl2aXR5IG9uIGRpc3Bvc2UuXG4gICAgLy8gICAgICAgU2VlIE5hdmlnYXRpb25TdGF0ZS5OYXZpZ2F0aW5nIGZvciBhIHVzZS1jYXNlLlxuICAgIGFzc2VydC5pc0ZhbHNleSh0aGlzLmlzQWN0aXZlKCkpO1xuICAgIHRoaXMuZ2FyYmFnZS5kaXNwb3NlKCk7XG4gIH1cblxuICBnZXRBY3RpdmVBY3Rpdml0eVJlZigpOiBBY3Rpdml0eVJlZjxhbnksIGFueSwgYW55PiB7XG4gICAgaWYgKCF0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKFwibm8gYWN0aXZpdHkgaW4gcHJvZ3Jlc3NcIik7XG4gICAgfVxuICAgIHJldHVybiBmaW5kTGFzdCh0aGlzLmFjdGl2aXR5UmVmcywgdGFiID0+ICF0YWIuaXNDb21wbGV0ZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHRoZSBjdXJyZW50IGFjdGl2aXR5IGFuZCByZXR1cm5zIHRydWUgdGhlIGNvbnRleHQgaXMgbm8gbG9uZ2VyIGFjdGl2ZSwgZmFsc2UgaWZcbiAgICogdGhlcmUgaXMgc3RpbGwgYW5vdGhlciBhY3Rpdml0eSBydW5uaW5nLlxuICAgKi9cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgY2FuY2VsQWN0aXZlQWN0aXZpdHkoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgYWN0aXZpdHkgPSB0aGlzLmdldEFjdGl2ZUFjdGl2aXR5UmVmKCk7XG4gICAgYWN0aXZpdHkuY2FuY2VsKCk7XG4gICAgaWYgKHRoaXMuaXNDbGVhbmluZ1VwKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLndhaXRGb3JJbnRlcmFjdGlvbkNvbnRleHRDbGVhbnVwVG9GaW5pc2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICF0aGlzLmlzQWN0aXZlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gVE9ETzogdGhpcyBoYW5kbGluZyBvZiBtdWx0aXBsZSBuZXN0ZWQgYWN0aXZpdGllcyBpcyBvbmx5IHVzZWQgYnkgdGhlIGFjdGl2aXR5IGNvbXBvbmVudCBhbmQgaXMgbm90IGEgZ2VuZXJhbCBjYXNlLlxuICAvLyBAVHJhY2UoKVxuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlQW5kTGF1bmNoQWN0aXZpdHk8RDEsIFIxLCBFMT4oYWN0aXZpdHlUeXBlOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQxLCBSMSwgRTE+PiwgZGF0YTogRDEsIGRpc2FibGVDbG9zZTogYm9vbGVhbik6IFByb21pc2U8UjE+IHtcbiAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5pc0luaXRpYWxpc2VkKCkpOyAvLyBtYWtlIHN1cmUgd2UndmUgYmVlbiBpbml0aWFsaXNlZFxuICAgIGNvbnN0IGFjdGl2aXR5UmVmID0gbmV3IEFjdGl2aXR5UmVmPEQxLCBSMSwgRTE+KGFjdGl2aXR5VHlwZSwgZGF0YSwgKCkgPT4ge1xuICAgICAgY29uc3QgaXNBY3RpdmUgPSB0aGlzLmdldEFjdGl2ZUFjdGl2aXR5Q291bnQoKSA+IDA7XG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyVGFiU3luY2hyb25pc2F0aW9uKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbmlzaEFuZFN0YXJ0Q2xlYW51cCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMubGF1bmNoQWN0aXZpdHkoYWN0aXZpdHlSZWYpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBhY3Rpdml0eVJlZi5hY3Rpdml0eVJlc3VsdDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gY29uc29sZS5sb2coXCJjbG9zaW5nIGFjdGl2aXR5XCIsIGFjdGl2aXR5VHlwZS5uYW1lLCB0aGlzLmFjdGl2aXR5UmVmcylcbiAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSgpKSB7XG4gICAgICAgIC8vIHdhaXQgdW50aWwgdGhlIGFjdGl2aXR5IHJvdXRlIHN5bmNpbmcgaGFzIGZpbmlzaGVkXG4gICAgICAgIGF3YWl0IHRoaXMucGxhY2VSb3V0ZXIud2FpdEFjdGl2aXRpZXNTeW5jaHJvbmlzZWQoKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJhY3Rpdml0eSBzeW5jaW5nIGZpbmlzaGVkXCIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBY3RpdmVBY3Rpdml0eUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlSZWZzLmZpbHRlcihyZWYgPT4gIXJlZi5pc0NvbXBsZXRlKCkpLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhpcyBpbnRlcmFjdGlvbiBjb250ZXh0IGhhcyBmaW5pc2hlZCBhbiBpcyBpbiB0aGUgcHJvY2VzcyBvZiB3YWl0aW5nXG4gICAqIGZvciBhbGwgdGhlIGluZnJhc3RydWN0dXJlIChpbmNsdWRpbmcgcm91dGUgdXBkYXRlcykgdG8gYmUgY29tcGxldGVkLlxuICAgKi9cbiAgaXNDbGVhbmluZ1VwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2RlZmVycmVkQ2xlYW5VcDtcbiAgfVxuXG4gIGFzeW5jIHdhaXRGb3JJbnRlcmFjdGlvbkNvbnRleHRDbGVhbnVwVG9GaW5pc2goKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fZGVmZXJyZWRDbGVhblVwID9cbiAgICAgIHRoaXMuX2RlZmVycmVkQ2xlYW5VcCA6XG4gICAgICB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5pc2hBbmRTdGFydENsZWFudXAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9kZWZlcnJlZENsZWFuVXApIHtcbiAgICAgIC8vIEltcG9ydGFudDpcbiAgICAgIC8vIENsZWFyIG91ciB0YWJzIHNvIHRoZSBuZXh0IGFjdGl2aXR5IHRyaWdnZXJzIGEgdGFiIGNoYW5nZS5cbiAgICAgIC8vIFdpdGhvdXQgdGhpcyBvdXIgYW5pbWF0aW9uIGRvbmUgd2Fzbid0IGNhbGxlZCB3aGVuIGEgc2luZ2xlXG4gICAgICAvLyBuZXcgYWN0aXZpdHkgZm9sbG93ZWQgYSBzaW5nbGUgdGFiIGFjdGl2aXR5IChzaW5jZSB3ZSdyZSB0cmFja2luZ1xuICAgICAgLy8gYnkgYWN0aXZpdHkgaW5kZXgpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5hY3Rpdml0eVJlZnMgPSBbXTsgLy8gd2UgaGF2ZSB0byBkbyBpdCBhZnRlciB0aGUgYW5pbWF0aW9uIHRpbWVvdXQgb3IgdGhlIGFjdGl2aXR5IGRpc2FwcGVhcnMgYmVmb3JlIHRoZSBhbmltYXRpbiBmaW5zaWhlc1xuICAgICAgfSwgdGhpcy5nZXRUYWJBbmltYXRpb25EdXJhdGlvbkluTWlsbGlzKCkpO1xuICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlQXBpLm5vdGlmeUZpbmlzaGVkKHRoaXMpO1xuICAgICAgdGhpcy5fZGVmZXJyZWRDbGVhblVwID0gcHJvbWlzZVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGVmZXJyZWRDbGVhblVwID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbi8vIEBUcmFjZSgpXG4gIGxhdW5jaEFjdGl2aXR5PEQxLCBSMSwgRTE+KGFjdGl2aXR5UmVmOiBBY3Rpdml0eVJlZjxEMSwgUjEsIEUxPikge1xuICAgIC8vIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFjdGl2aXR5IGxldCB0aGUgaW50ZXJhY3Rpb24gc2VydmljZSBrbm93LlxuICAgIGNvbnN0IGNsZWFuZWRUYWJzID0gdGhpcy5hY3Rpdml0eVJlZnMuZmlsdGVyKHRhYiA9PiAhdGFiLmlzQ29tcGxldGUoKSk7XG4gICAgdGhpcy5hY3Rpdml0eVJlZnMgPSBjbGVhbmVkVGFicy5jb25jYXQoYWN0aXZpdHlSZWYpO1xuICAgIGNvbnN0IGZpcnN0VGltZSA9IHRoaXMuYWN0aXZpdHlSZWZzLmxlbmd0aCA9PT0gMTtcbiAgICBpZiAoZmlyc3RUaW1lKSB7XG4gICAgICB0aGlzLmludGVyYWN0aW9uU2VydmljZUFwaS5ub3RpZnlBY3RpdmUodGhpcyk7XG4gICAgfVxuICAgIHRoaXMuc3luY2hyb25pc2VTZWxlY3RlZFRhYkluZGV4KCk7XG4gIH1cblxuICBhY3Rpdml0eUluZGV4KGluZGV4OiBudW1iZXIsIGFjdGl2aXR5UmVmOiBBY3Rpdml0eVJlZjxhbnksIGFueSwgYW55Pikge1xuICAgIHJldHVybiBpbmRleDtcbiAgfTtcblxuICAvKipcbiAgICogU3luY2hyb25pc2VzIHRoZSBzZWxlY3RlZCB0YWIgaW5kZXguXG4gICAqL1xuICBwcml2YXRlIHN5bmNocm9uaXNlU2VsZWN0ZWRUYWJJbmRleCgpOiB2b2lkIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5pc0FjdGl2ZSgpKTtcbiAgICBjb25zdCBwcmV2aW91c0luZGV4ID0gdGhpcy50YWJzLnNlbGVjdGVkSW5kZXg7XG4gICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLmdldEFjdGl2ZUFjdGl2aXR5Q291bnQoKSAtIDE7XG4gICAgY29uc3QgYW5pbWF0ZSA9IHRoaXMuYWN0aXZpdHlSZWZzLmxlbmd0aCA+IDE7XG4gICAgaWYgKHByZXZpb3VzSW5kZXggIT09IG5ld0luZGV4KSB7XG4gICAgICB0aGlzLl9hbmltYXRpbmckLnZhbHVlID0gYW5pbWF0ZTtcbiAgICAgIGNvbnN0IGFjdGl2aXR5UmVmID0gdGhpcy5hY3Rpdml0eVJlZnNbbmV3SW5kZXhdO1xuICAgICAgYWN0aXZpdHlSZWYuc2V0Rm9jdXNlZChmYWxzZSk7XG4gICAgICB0aGlzLmJ1c3kuc2V0RGVsZWdhdGUoYWN0aXZpdHlSZWYuYWN0aXZpdHlCdXN5KTtcbiAgICAgIHRoaXMudGFicy5zZWxlY3RlZEluZGV4ID0gbmV3SW5kZXg7XG4gICAgICAvLyBpZiAodGhpcy5yZWFkeSQudmFsdWUpIHtcbiAgICAgIC8vICAgLy8gTm90ZTogV2UncmUgbm90IHVzaW5nIHRoZSBhbmltYXRpb24gZG9uZSBldmVudCBhcyBpdCdzIGZpcmluZyBhbG1vc3QgaW1tZWFkaWF0ZWx5LlxuICAgICAgLy8gICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZmluYWxpc2VBY3Rpdml0eVN0YXRlcygpLCBhbmltYXRlID8gdGhpcy5nZXRUYWJBbmltYXRpb25EdXJhdGlvbkluTWlsbGlzKCkgOiAwKTtcbiAgICAgIC8vIH1cbiAgICB9XG4gIH1cblxuICBmaW5hbGlzZUFjdGl2aXR5U3RhdGVzKCkge1xuICAgIHRoaXMuX2FuaW1hdGluZyQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2aXR5UmVmcyA9IHRoaXMuYWN0aXZpdHlSZWZzLmZpbHRlcih0YWIgPT4gIXRhYi5pc0NvbXBsZXRlKCkpO1xuICAgIHRoaXMuYWN0aXZpdHlSZWZzLmZvckVhY2goKHJlZiwgaW5kZXgpID0+IHtcbiAgICAgIHJlZi5zZXRGb2N1c2VkKGluZGV4ID09PSB0aGlzLnRhYnMuc2VsZWN0ZWRJbmRleCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGVjdGVkT3V0bGV0KCkge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5T3V0bGV0cy50b0FycmF5KClbdGhpcy50YWJzLnNlbGVjdGVkSW5kZXhdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRhYkFuaW1hdGlvbkR1cmF0aW9uKCk6IHN0cmluZyB7XG4gICAgLy8gY29uc3QgcyA9IHRoaXMuX3N0YXJ0ZWQkLnZhbHVlID8gdGhpcy5hbmltYXRpb25EdXJhdGlvbiA6IFwiMFwiO1xuICAgIC8vIHJldHVybiBzXG4gICAgcmV0dXJuIHRoaXMuYW5pbWF0aW9uRHVyYXRpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VGFiQW5pbWF0aW9uRHVyYXRpb25Jbk1pbGxpcygpOiBudW1iZXIge1xuICAgIGNvbnN0IG1hdGNoID0gdGhpcy5hbmltYXRpb25EdXJhdGlvbi5tYXRjaCgvKFxcZCspKC4qKS8pO1xuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlRmxvYXQobWF0Y2hbMV0pO1xuICAgIHN3aXRjaCAobWF0Y2hbMl0udHJpbSgpKSB7XG4gICAgICBjYXNlIFwibXNcIjpcbiAgICAgICAgcmV0dXJuIG51bWVyaWNWYWx1ZTtcbiAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgIHJldHVybiAxMDAwICogbnVtZXJpY1ZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gbGFuZy5pbGxlZ2FsU3RhdGUoYHVuc3VwcG9ydGVkIGR1cmF0aW9uIHN0cmluZzogJHt0aGlzLnRhYnMuYW5pbWF0aW9uRHVyYXRpb259YCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBnZXRTZWxlY3RlZFRhYkluZGV4KCkge1xuICAgIHJldHVybiB0aGlzLnRhYnMuc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByaXZhdGUgdHJpZ2dlclRhYlN5bmNocm9uaXNhdGlvbigpIHtcbiAgICBpZiAodGhpcy5zeW5jU2VsZWN0ZWRUYWJUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zeW5jU2VsZWN0ZWRUYWJUaW1lb3V0KTtcbiAgICB9XG4gICAgdGhpcy5zeW5jU2VsZWN0ZWRUYWJUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnN5bmNTZWxlY3RlZFRhYlRpbWVvdXQgPSBudWxsO1xuICAgICAgaWYgKHRoaXMuaXNBY3RpdmUoKSkge1xuICAgICAgICB0aGlzLnN5bmNocm9uaXNlU2VsZWN0ZWRUYWJJbmRleCgpO1xuICAgICAgfVxuICAgIH0sIDc1KTtcbiAgfVxuXG4gIG9uQW5pbWF0aW9uRG9uZSgpIHtcbiAgICB0aGlzLl9zdGFydGVkJC52YWx1ZSA9IHRydWVcbiAgICB0aGlzLmZpbmFsaXNlQWN0aXZpdHlTdGF0ZXMoKVxuICB9XG59XG4iLCI8bWF0LXRhYi1ncm91cCAjdGFicyBuby10YWItaGVhZGVyXG4gICAgICAgICAgICAgICBbZHluYW1pY0hlaWdodF09XCJkeW5hbWljSGVpZ2h0XCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5mdWxsLWhlaWdodC10YWJzXT1cIiFkeW5hbWljSGVpZ2h0XCJcbiAgICAgICAgICAgICAgIFthbmltYXRpb25EdXJhdGlvbl09XCJnZXRUYWJBbmltYXRpb25EdXJhdGlvbigpXCJcbiAgICAgICAgICAgICAgIChhbmltYXRpb25Eb25lKT1cIm9uQW5pbWF0aW9uRG9uZSgpXCJcbj5cbiAgPG1hdC10YWIgKm5nRm9yPVwibGV0IGFjdGl2aXR5UmVmIG9mIGFjdGl2aXR5UmVmczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogYWN0aXZpdHlJbmRleFwiPlxuICAgIDxhdXAtYnVzeS1vdmVybGF5IFtidXN5JF09XCJidXN5XCIgY2RrVHJhcEZvY3VzIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlPlxuICAgICAgPCEtLVxuICAgICAgV2UgaGF2ZSBpc3N1ZXMgd2hlcmUgYW5ndWxhciBpcyB0cmlnZ2VyaW5nIGEgbGVhdmUgYW5pbWF0aW9uIHdoZW4gYW5cbiAgICAgIG5ldyBhY3Rpdml0eSBpcyBzdGFydGVkLCBidXQgaXMgbm90IHJ1bm5pbmcgdGhlIGVudGVyIGFuaW1hdGlvblxuICAgICAgd2hlbiBpdCBpcyBzY3JvbGxlZCBiYWNrIGludG8gdmlldy4gIFNvIHdlIHRyYWNrIHRoZSB0YWIgY2hhbmdlcyBhbmRcbiAgICAgIGRpc2FibGUgYWxsIGFuaW1hdGlvbnMgaW5zaWRlIHRoZSB0YWIgd2hpbGUgd2UncmUgYW5pbWF0aW5nLlxuICAgICAgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aXZpdHktb3V0bGV0LXdyYXBwZXJcIiBbQC5kaXNhYmxlZF09XCIhYWN0aXZpdHlSZWYuZm9jdXNlZFwiPlxuICAgICAgICA8YXVwLWFjdGl2aXR5LW91dGxldCBbbmVzdGVkSW50ZXJhY3Rpb25Db250ZXh0XT1cInRoaXNcIiBbYWN0aXZpdHlSZWZdPVwiYWN0aXZpdHlSZWZcIj48L2F1cC1hY3Rpdml0eS1vdXRsZXQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F1cC1idXN5LW92ZXJsYXk+XG4gIDwvbWF0LXRhYj5cbjwvbWF0LXRhYi1ncm91cD5cbiJdfQ==
|
|
@@ -14,7 +14,7 @@ const cssDurationRegex = /(\d+)(m?s)/;
|
|
|
14
14
|
* </aup-in-place-interaction-context>
|
|
15
15
|
*
|
|
16
16
|
* in your component
|
|
17
|
-
* @ViewChild(
|
|
17
|
+
* @ViewChild(InPlaceInteractionContextComponent)
|
|
18
18
|
* interactionContext: InteractionContext;
|
|
19
19
|
*
|
|
20
20
|
*
|
|
@@ -110,7 +110,7 @@ export class InPlaceInteractionContextComponent extends DisposableComponent {
|
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InPlaceInteractionContextComponent, deps: [{ token: MAT_TABS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: { animateFirstActivity: "animateFirstActivity", syncWithRoutes: "syncWithRoutes" }, host: { properties: { "class.active": "this.active" } }, viewQueries: [{ propertyName: "activityContainerComponent", first: true, predicate: ["activityContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs\n (selectedTabChange)=\"onTabChanged($event)\"\n [dynamicHeight]=\"false\"\n [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-activity-container{flex:1}\n"], dependencies: [{ kind: "component", type: i1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: i2.ActivityContainerComponent, selector: "aup-activity-container", inputs: ["dynamicHeight"] }] });
|
|
113
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: { animateFirstActivity: "animateFirstActivity", syncWithRoutes: "syncWithRoutes" }, host: { properties: { "class.active": "this.active" } }, viewQueries: [{ propertyName: "activityContainerComponent", first: true, predicate: ["activityContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs\n (selectedTabChange)=\"onTabChanged($event)\"\n [dynamicHeight]=\"false\"\n [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-activity-container{flex:1}\n"], dependencies: [{ kind: "component", type: i1.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "component", type: i2.ActivityContainerComponent, selector: "aup-activity-container", inputs: ["dynamicHeight", "animationDuration"] }] });
|
|
114
114
|
}
|
|
115
115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InPlaceInteractionContextComponent, decorators: [{
|
|
116
116
|
type: Component,
|
|
@@ -131,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
|
131
131
|
type: HostBinding,
|
|
132
132
|
args: ["class.active"]
|
|
133
133
|
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2lucGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC9pbi1wbGFjZS1pbnRlcmFjdGlvbi1jb250ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL2NvbXBvbmVudHMvaW5wbGFjZS1pbnRlcmFjdGlvbi1jb250ZXh0L2luLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUMsZUFBZSxFQUFtQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3pGLE9BQU8sRUFBZ0IsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFNN0UsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sb0RBQW9ELENBQUM7Ozs7QUFHOUYsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUM7QUFFdEM7Ozs7Ozs7Ozs7R0FVRztBQU1ILE1BQU0sT0FBTyxrQ0FBNEMsU0FBUSxtQkFBbUI7SUF3Q2hCO0lBckNsRSwwQkFBMEIsQ0FBNEM7SUFFdEU7OztPQUdHO0lBRUgsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBRTVCOzs7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LGtCQUFrQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBR0QsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQWEsWUFBaUQsRUFBRSxJQUFTLEVBQUUsT0FBb0M7UUFDMUgsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUF5QjtRQUNwQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1NBQ2xHO2FBQU07WUFDTCxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ25EO0lBQ0gsQ0FBQzt1R0EvR1Usa0NBQWtDLGtCQXdDekIsZUFBZTsyRkF4Q3hCLGtDQUFrQyxtWUMvQi9DLHVjQVlBOzsyRkRtQmEsa0NBQWtDO2tCQUw5QyxTQUFTOytCQUNFLGtDQUFrQzs7MEJBNEMvQixNQUFNOzJCQUFDLGVBQWU7OzBCQUFHLFFBQVE7NENBckM5QywwQkFBMEI7c0JBRHpCLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQVE5QyxvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBU04sY0FBYztzQkFEYixLQUFLO2dCQWlCRixNQUFNO3NCQURULFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIFZpZXdDaGlsZH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7TUFUX1RBQlNfQ09ORklHLCBNYXRUYWJDaGFuZ2VFdmVudCwgTWF0VGFic0NvbmZpZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYnNcIjtcbmltcG9ydCB7Q29uc3RydWN0YWJsZSwgbGFuZ30gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge0Rpc3Bvc2FibGVDb21wb25lbnR9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50XCI7XG5pbXBvcnQge0FjdGl2aXR5fSBmcm9tIFwiLi4vLi4vYWN0aXZpdHlcIjtcbmltcG9ydCB7QWxlcnR9IGZyb20gXCIuLi8uLi9hbGVydFwiO1xuaW1wb3J0IHtDb25maXJtfSBmcm9tIFwiLi4vLi4vY29uZmlybVwiO1xuaW1wb3J0IHtJblBsYWNlSW50ZXJhY3Rpb25Db250ZXh0fSBmcm9tIFwiLi4vLi4vaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dFwiO1xuaW1wb3J0IHtJbnRlcmFjdGlvbkNvbnRleHR9IGZyb20gXCIuLi8uLi9pbnRlcmFjdGlvbi1jb250ZXh0XCI7XG5pbXBvcnQge0ludGVyYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2ludGVyYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7QWN0aXZpdHlDb250YWluZXJDb21wb25lbnR9IGZyb20gXCIuLi9hY3Rpdml0eS1jb250YWluZXIvYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudFwiO1xuXG5cbmNvbnN0IGNzc0R1cmF0aW9uUmVnZXggPSAvKFxcZCspKG0/cykvO1xuXG4vKipcbiAqIEBleGFtcGxlXG4gKiAgIDxhdXAtaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dCAjaW5QbGFjZUludGVyYWN0aW9uQ29udGV4dD5cbiAqICAgPC9hdXAtaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dD5cbiAqXG4gKiAgIGluIHlvdXIgY29tcG9uZW50XG4gKiAgICAgQFZpZXdDaGlsZCgnaW5QbGFjZUludGVyYWN0aW9uQ29udGV4dCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gKiAgICAgaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQ7XG4gKlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF1cC1pbi1wbGFjZS1pbnRlcmFjdGlvbi1jb250ZXh0XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBJblBsYWNlSW50ZXJhY3Rpb25Db250ZXh0Q29tcG9uZW50PEQsIFIsIEU+IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEluUGxhY2VJbnRlcmFjdGlvbkNvbnRleHQsIEFmdGVyVmlld0luaXQge1xuXG4gIEBWaWV3Q2hpbGQoXCJhY3Rpdml0eUNvbnRhaW5lclwiLCB7c3RhdGljOiB0cnVlfSlcbiAgYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQ6IEFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50PGFueSwgYW55LCBhbnk+O1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlIHRoZW4gdGhlIGZpcnN0IHN0YXJ0QWN0aXZpdHkgY2FsbCB3aWxsIHNsaWRlIHRoZSBhY3Rpdml0eSBpbnRvIHZpZXcuIElmIGZhbHNlXG4gICAqIHRoZSBhY3Rpdml0eSB3aWxsIHJlcGxhY2UgdGhlIGV4aXN0aW5nIGNvbnRlbnQgaW1tZWRpYXRlbHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBhbmltYXRlRmlyc3RBY3Rpdml0eSA9IHRydWU7XG5cbiAgLyoqXG4gICAqIElmIHRydWUgdGhlIGFjdGl2aXR5IHdpbGwgc3luYyB3aXRoIHRoZSByb3V0ZXIgdG8gZW5hYmxlIGJhY2sgYnV0dG9uIHN1cHBvcnQuICBUaGlzIGlzIGEgd29yayBhcm91bmQgZm9yXG4gICAqIGRlZXBseSBuZXN0ZWQgYWN0aXZpdGllcyB0aGF0IGNhbid0IGJlIGxpbmtlZCB3aXRoIHRoZSByb290IHBsYWNlIGludGVyYWN0aW9uQ29udGV4dCBob29rIGZvciBjYW5jZWxsaW5nXG4gICAqIGFjdGl2ZSBpbnRlcmFjdGlvbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBzeW5jV2l0aFJvdXRlcyA9IHRydWU7XG5cbiAgZ2V0IGFuaW1hdGlvbkR1cmF0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYW5pbWF0ZUZpcnN0QWN0aXZpdHkgPyAodGhpcy50YWJDb25maWc/LmFuaW1hdGlvbkR1cmF0aW9uIHx8IFwiNTAwbXNcIikgOiBcIjBtc1wiO1xuICB9XG5cbiAgZ2V0IGFuaW1hdGlvbkR1cmF0aW9uTWlsbGlzKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGNzc0R1cmF0aW9uUmVnZXguZXhlYyh0aGlzLmFuaW1hdGlvbkR1cmF0aW9uKVxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShgdW5zdXBwb3J0ZWQgY3NzIGR1cmF0aW9uOiAke3RoaXMuYW5pbWF0aW9uRHVyYXRpb259YCk7XG4gICAgfVxuICAgIGNvbnN0IG11bHRpcGxpZXIgPSByZXN1bHRbMl0gPT09ICdzJyA/IDEwMDAgOiAxO1xuICAgIHJldHVybiBtdWx0aXBsaWVyICogcGFyc2VJbnQocmVzdWx0WzFdLCAxMCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5hY3RpdmVcIilcbiAgZ2V0IGFjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0FjdGl2ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgaW50ZXJhY3Rpb25TZXJ2aWNlID0gdGhpcy5pbmplY3QoSW50ZXJhY3Rpb25TZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9UQUJTX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSB0YWJDb25maWc6IE1hdFRhYnNDb25maWcpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIE5PVEU6IHRoaXMgaXMgYSB0ZW1wIHdvcmsgYXJvdW5kIHRvIGRldGFjaCBpbnBsYWNlIGNvbnRleHRzIGZyb20gdGhlIHJvdXRlciB1bnRpbCBBVVAtODggaXMgaW1wbGVtZW50ZWQuXG4gICAgLy8gaHR0cHM6Ly9jb29sb24uYXRsYXNzaWFuLm5ldC9icm93c2UvQVVQLTg4P2F0bE9yaWdpbj1leUpwSWpvaU9UZzVZakV6WkdVelpqUm1ORGcwTm1FeE9XVTNaR0ptTXpKaU5UUm1OR1lpTENKd0lqb2lhaUo5XG5cbiAgICBpZiAodGhpcy5zeW5jV2l0aFJvdXRlcykge1xuICAgICAgdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UucmVnaXN0ZXJJbnBsYWNlSW50ZXJhY3Rpb25Db250ZXh0KHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmluaXRpYWxpc2UoXCJkb250LWNhcmVcIiwge1xuICAgICAgICAgIGFzeW5jIG5vdGlmeUFjdGl2ZShpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFzeW5jIG5vdGlmeUZpbmlzaGVkKGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gdGhpcyBpcyBhIHJlZ3NpdHJhdGlvbiBjYWxsYmFjayBmcm9tIHRoZSBpbnRlcmFjdGlvbiBzZXJ2aWNlXG4gIC8vIEBUcmFjZSgpIC8vIHdlYnN0b3JtIHNheXMgbm8gdXNhZ2VzLi4uIGJ1dCBJJ20gbm90IHN1cmUuXG4gIG9uSW5wbGFjZUludGVyYWN0aW9uQ29udGV4dFJlZ2lzdGVyZWQoaWQ6IHN0cmluZywgYXBpOiBJbnRlcmFjdGlvblNlcnZpY2UuQXBpKSB7XG4gICAgdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5pbml0aWFsaXNlKGlkLCBhcGkpO1xuICB9XG5cbiAgZ2V0IGlkZW50aWZpZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuaWRlbnRpZmllcjtcbiAgfVxuXG4gIGFsZXJ0KGFsZXJ0OiBBbGVydCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmFsZXJ0KGFsZXJ0KTtcbiAgfVxuXG4gIGNhbmNlbEFjdGl2ZUFjdGl2aXR5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmNhbmNlbEFjdGl2ZUFjdGl2aXR5KCk7XG4gIH1cblxuICBjb25maXJtKGNvbmZpcm06IENvbmZpcm0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5jb25maXJtKGNvbmZpcm0pO1xuICB9XG5cbiAgY29uZmlybU9yUmVqZWN0KGNvbmZpcm06IENvbmZpcm0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5jb25maXJtT3JSZWplY3QoY29uZmlybSk7XG4gIH1cblxuICBjb25maXJtVGhlbjxEMSwgUjEsIEUxPihjb25maXJtOiBDb25maXJtLCBhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RDEsIFIxLCBFMT4+LCBkYXRhPzogRDEpOiBQcm9taXNlPFIxPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuY29uZmlybVRoZW4oY29uZmlybSwgYWN0aXZpdHlUeXBlKTtcbiAgfVxuXG4gIGNvbmZpcm1UaGVuRXhlY3V0ZTxSMT4oY29uZmlybTogQ29uZmlybSwgb3BlcmF0aW9uOiAoaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpID0+IChQcm9taXNlPFIxPiB8IFIxKSk6IFByb21pc2U8UjE+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5jb25maXJtVGhlbkV4ZWN1dGUoY29uZmlybSwgb3BlcmF0aW9uKTtcbiAgfVxuXG5cbiAgaXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuaXNBY3RpdmUoKTtcbiAgfVxuXG4gIHN0YXJ0QWN0aXZpdHk8RDEsIFIxLCBFMT4oYWN0aXZpdHlUeXBlOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQxLCBSMSwgRTE+PiwgZGF0YT86IEQxLCBvcHRpb25zPzogSW50ZXJhY3Rpb25Db250ZXh0Lk9wdGlvbnMpOiBQcm9taXNlPFIxPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuc3RhcnRBY3Rpdml0eShhY3Rpdml0eVR5cGUsIGRhdGEsIG9wdGlvbnMpO1xuICB9XG5cbiAgb25UYWJDaGFuZ2VkKCRldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpIHtcbiAgICBpZiAoJGV2ZW50LmluZGV4ID09PSAxKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQubm90aWZ5UmVhZHkodHJ1ZSksIHRoaXMuYW5pbWF0aW9uRHVyYXRpb25NaWxsaXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQubm90aWZ5UmVhZHkoZmFsc2UpXG4gICAgfVxuICB9XG59XG4iLCI8bWF0LXRhYi1ncm91cCBuby10YWItaGVhZGVyIFtzZWxlY3RlZEluZGV4XT1cImlzQWN0aXZlKCkgPyAxIDogMFwiIGZ1bGwtaGVpZ2h0LXRhYnNcbiAgICAgICAgICAgICAgIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICBbZHluYW1pY0hlaWdodF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICBbYW5pbWF0aW9uRHVyYXRpb25dPVwiYW5pbWF0aW9uRHVyYXRpb25cIj5cbiAgPG1hdC10YWI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L21hdC10YWI+XG4gIDxtYXQtdGFiPlxuICAgIDxhdXAtYWN0aXZpdHktY29udGFpbmVyICNhY3Rpdml0eUNvbnRhaW5lciBbZHluYW1pY0hlaWdodF09XCJmYWxzZVwiPjwvYXVwLWFjdGl2aXR5LWNvbnRhaW5lcj5cbiAgPC9tYXQtdGFiPlxuPC9tYXQtdGFiLWdyb3VwPlxuXG4iXX0=
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2lucGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC9pbi1wbGFjZS1pbnRlcmFjdGlvbi1jb250ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL2NvbXBvbmVudHMvaW5wbGFjZS1pbnRlcmFjdGlvbi1jb250ZXh0L2luLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUMsZUFBZSxFQUFtQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3pGLE9BQU8sRUFBZ0IsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFNN0UsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sb0RBQW9ELENBQUM7Ozs7QUFHOUYsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUM7QUFFdEM7Ozs7Ozs7Ozs7R0FVRztBQU1ILE1BQU0sT0FBTyxrQ0FBNEMsU0FBUSxtQkFBbUI7SUF3Q2hCO0lBckNsRSwwQkFBMEIsQ0FBNEM7SUFFdEU7OztPQUdHO0lBRUgsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBRTVCOzs7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LGtCQUFrQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBR0QsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQWEsWUFBaUQsRUFBRSxJQUFTLEVBQUUsT0FBb0M7UUFDMUgsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUF5QjtRQUNwQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1NBQ2xHO2FBQU07WUFDTCxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ25EO0lBQ0gsQ0FBQzt1R0EvR1Usa0NBQWtDLGtCQXdDekIsZUFBZTsyRkF4Q3hCLGtDQUFrQyxtWUMvQi9DLHVjQVlBOzsyRkRtQmEsa0NBQWtDO2tCQUw5QyxTQUFTOytCQUNFLGtDQUFrQzs7MEJBNEMvQixNQUFNOzJCQUFDLGVBQWU7OzBCQUFHLFFBQVE7NENBckM5QywwQkFBMEI7c0JBRHpCLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQVE5QyxvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBU04sY0FBYztzQkFEYixLQUFLO2dCQWlCRixNQUFNO3NCQURULFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIFZpZXdDaGlsZH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7TUFUX1RBQlNfQ09ORklHLCBNYXRUYWJDaGFuZ2VFdmVudCwgTWF0VGFic0NvbmZpZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYnNcIjtcbmltcG9ydCB7Q29uc3RydWN0YWJsZSwgbGFuZ30gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge0Rpc3Bvc2FibGVDb21wb25lbnR9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL2Rpc3Bvc2FibGUtY29tcG9uZW50XCI7XG5pbXBvcnQge0FjdGl2aXR5fSBmcm9tIFwiLi4vLi4vYWN0aXZpdHlcIjtcbmltcG9ydCB7QWxlcnR9IGZyb20gXCIuLi8uLi9hbGVydFwiO1xuaW1wb3J0IHtDb25maXJtfSBmcm9tIFwiLi4vLi4vY29uZmlybVwiO1xuaW1wb3J0IHtJblBsYWNlSW50ZXJhY3Rpb25Db250ZXh0fSBmcm9tIFwiLi4vLi4vaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dFwiO1xuaW1wb3J0IHtJbnRlcmFjdGlvbkNvbnRleHR9IGZyb20gXCIuLi8uLi9pbnRlcmFjdGlvbi1jb250ZXh0XCI7XG5pbXBvcnQge0ludGVyYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2ludGVyYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7QWN0aXZpdHlDb250YWluZXJDb21wb25lbnR9IGZyb20gXCIuLi9hY3Rpdml0eS1jb250YWluZXIvYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudFwiO1xuXG5cbmNvbnN0IGNzc0R1cmF0aW9uUmVnZXggPSAvKFxcZCspKG0/cykvO1xuXG4vKipcbiAqIEBleGFtcGxlXG4gKiAgIDxhdXAtaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dCAjaW5QbGFjZUludGVyYWN0aW9uQ29udGV4dD5cbiAqICAgPC9hdXAtaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dD5cbiAqXG4gKiAgIGluIHlvdXIgY29tcG9uZW50XG4gKiAgICAgQFZpZXdDaGlsZChJblBsYWNlSW50ZXJhY3Rpb25Db250ZXh0Q29tcG9uZW50KVxuICogICAgIGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0O1xuICpcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhdXAtaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2luLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2luLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHQuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgSW5QbGFjZUludGVyYWN0aW9uQ29udGV4dENvbXBvbmVudDxELCBSLCBFPiBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQgaW1wbGVtZW50cyBJblBsYWNlSW50ZXJhY3Rpb25Db250ZXh0LCBBZnRlclZpZXdJbml0IHtcblxuICBAVmlld0NoaWxkKFwiYWN0aXZpdHlDb250YWluZXJcIiwge3N0YXRpYzogdHJ1ZX0pXG4gIGFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50OiBBY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudDxhbnksIGFueSwgYW55PjtcblxuICAvKipcbiAgICogSWYgdHJ1ZSB0aGVuIHRoZSBmaXJzdCBzdGFydEFjdGl2aXR5IGNhbGwgd2lsbCBzbGlkZSB0aGUgYWN0aXZpdHkgaW50byB2aWV3LiBJZiBmYWxzZVxuICAgKiB0aGUgYWN0aXZpdHkgd2lsbCByZXBsYWNlIHRoZSBleGlzdGluZyBjb250ZW50IGltbWVkaWF0ZWx5LlxuICAgKi9cbiAgQElucHV0KClcbiAgYW5pbWF0ZUZpcnN0QWN0aXZpdHkgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlIHRoZSBhY3Rpdml0eSB3aWxsIHN5bmMgd2l0aCB0aGUgcm91dGVyIHRvIGVuYWJsZSBiYWNrIGJ1dHRvbiBzdXBwb3J0LiAgVGhpcyBpcyBhIHdvcmsgYXJvdW5kIGZvclxuICAgKiBkZWVwbHkgbmVzdGVkIGFjdGl2aXRpZXMgdGhhdCBjYW4ndCBiZSBsaW5rZWQgd2l0aCB0aGUgcm9vdCBwbGFjZSBpbnRlcmFjdGlvbkNvbnRleHQgaG9vayBmb3IgY2FuY2VsbGluZ1xuICAgKiBhY3RpdmUgaW50ZXJhY3Rpb25zLlxuICAgKi9cbiAgQElucHV0KClcbiAgc3luY1dpdGhSb3V0ZXMgPSB0cnVlO1xuXG4gIGdldCBhbmltYXRpb25EdXJhdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFuaW1hdGVGaXJzdEFjdGl2aXR5ID8gKHRoaXMudGFiQ29uZmlnPy5hbmltYXRpb25EdXJhdGlvbiB8fCBcIjUwMG1zXCIpIDogXCIwbXNcIjtcbiAgfVxuXG4gIGdldCBhbmltYXRpb25EdXJhdGlvbk1pbGxpcygpIHtcbiAgICBjb25zdCByZXN1bHQgPSBjc3NEdXJhdGlvblJlZ2V4LmV4ZWModGhpcy5hbmltYXRpb25EdXJhdGlvbilcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgbGFuZy5pbGxlZ2FsU3RhdGUoYHVuc3VwcG9ydGVkIGNzcyBkdXJhdGlvbjogJHt0aGlzLmFuaW1hdGlvbkR1cmF0aW9ufWApO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aXBsaWVyID0gcmVzdWx0WzJdID09PSAncycgPyAxMDAwIDogMTtcbiAgICByZXR1cm4gbXVsdGlwbGllciAqIHBhcnNlSW50KHJlc3VsdFsxXSwgMTApO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuYWN0aXZlXCIpXG4gIGdldCBhY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNBY3RpdmUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGludGVyYWN0aW9uU2VydmljZSA9IHRoaXMuaW5qZWN0KEludGVyYWN0aW9uU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChNQVRfVEFCU19DT05GSUcpIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgdGFiQ29uZmlnOiBNYXRUYWJzQ29uZmlnKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBOT1RFOiB0aGlzIGlzIGEgdGVtcCB3b3JrIGFyb3VuZCB0byBkZXRhY2ggaW5wbGFjZSBjb250ZXh0cyBmcm9tIHRoZSByb3V0ZXIgdW50aWwgQVVQLTg4IGlzIGltcGxlbWVudGVkLlxuICAgIC8vIGh0dHBzOi8vY29vbG9uLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0FVUC04OD9hdGxPcmlnaW49ZXlKcElqb2lPVGc1WWpFelpHVXpaalJtTkRnME5tRXhPV1UzWkdKbU16SmlOVFJtTkdZaUxDSndJam9pYWlKOVxuXG4gICAgaWYgKHRoaXMuc3luY1dpdGhSb3V0ZXMpIHtcbiAgICAgIHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLnJlZ2lzdGVySW5wbGFjZUludGVyYWN0aW9uQ29udGV4dCh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5pbml0aWFsaXNlKFwiZG9udC1jYXJlXCIsIHtcbiAgICAgICAgICBhc3luYyBub3RpZnlBY3RpdmUoaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhc3luYyBub3RpZnlGaW5pc2hlZChpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRoaXMgaXMgYSByZWdzaXRyYXRpb24gY2FsbGJhY2sgZnJvbSB0aGUgaW50ZXJhY3Rpb24gc2VydmljZVxuICAvLyBAVHJhY2UoKSAvLyB3ZWJzdG9ybSBzYXlzIG5vIHVzYWdlcy4uLiBidXQgSSdtIG5vdCBzdXJlLlxuICBvbklucGxhY2VJbnRlcmFjdGlvbkNvbnRleHRSZWdpc3RlcmVkKGlkOiBzdHJpbmcsIGFwaTogSW50ZXJhY3Rpb25TZXJ2aWNlLkFwaSkge1xuICAgIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuaW5pdGlhbGlzZShpZCwgYXBpKTtcbiAgfVxuXG4gIGdldCBpZGVudGlmaWVyKCkge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmlkZW50aWZpZXI7XG4gIH1cblxuICBhbGVydChhbGVydDogQWxlcnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5hbGVydChhbGVydCk7XG4gIH1cblxuICBjYW5jZWxBY3RpdmVBY3Rpdml0eSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5jYW5jZWxBY3RpdmVBY3Rpdml0eSgpO1xuICB9XG5cbiAgY29uZmlybShjb25maXJtOiBDb25maXJtKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuY29uZmlybShjb25maXJtKTtcbiAgfVxuXG4gIGNvbmZpcm1PclJlamVjdChjb25maXJtOiBDb25maXJtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuY29uZmlybU9yUmVqZWN0KGNvbmZpcm0pO1xuICB9XG5cbiAgY29uZmlybVRoZW48RDEsIFIxLCBFMT4oY29uZmlybTogQ29uZmlybSwgYWN0aXZpdHlUeXBlOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQxLCBSMSwgRTE+PiwgZGF0YT86IEQxKTogUHJvbWlzZTxSMT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmNvbmZpcm1UaGVuKGNvbmZpcm0sIGFjdGl2aXR5VHlwZSk7XG4gIH1cblxuICBjb25maXJtVGhlbkV4ZWN1dGU8UjE+KGNvbmZpcm06IENvbmZpcm0sIG9wZXJhdGlvbjogKGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KSA9PiAoUHJvbWlzZTxSMT4gfCBSMSkpOiBQcm9taXNlPFIxPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuY29uZmlybVRoZW5FeGVjdXRlKGNvbmZpcm0sIG9wZXJhdGlvbik7XG4gIH1cblxuXG4gIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmlzQWN0aXZlKCk7XG4gIH1cblxuICBzdGFydEFjdGl2aXR5PEQxLCBSMSwgRTE+KGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxEMSwgUjEsIEUxPj4sIGRhdGE/OiBEMSwgb3B0aW9ucz86IEludGVyYWN0aW9uQ29udGV4dC5PcHRpb25zKTogUHJvbWlzZTxSMT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LnN0YXJ0QWN0aXZpdHkoYWN0aXZpdHlUeXBlLCBkYXRhLCBvcHRpb25zKTtcbiAgfVxuXG4gIG9uVGFiQ2hhbmdlZCgkZXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XG4gICAgaWYgKCRldmVudC5pbmRleCA9PT0gMSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50Lm5vdGlmeVJlYWR5KHRydWUpLCB0aGlzLmFuaW1hdGlvbkR1cmF0aW9uTWlsbGlzKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50Lm5vdGlmeVJlYWR5KGZhbHNlKVxuICAgIH1cbiAgfVxufVxuIiwiPG1hdC10YWItZ3JvdXAgbm8tdGFiLWhlYWRlciBbc2VsZWN0ZWRJbmRleF09XCJpc0FjdGl2ZSgpID8gMSA6IDBcIiBmdWxsLWhlaWdodC10YWJzXG4gICAgICAgICAgICAgICAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25UYWJDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgW2R5bmFtaWNIZWlnaHRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgW2FuaW1hdGlvbkR1cmF0aW9uXT1cImFuaW1hdGlvbkR1cmF0aW9uXCI+XG4gIDxtYXQtdGFiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9tYXQtdGFiPlxuICA8bWF0LXRhYj5cbiAgICA8YXVwLWFjdGl2aXR5LWNvbnRhaW5lciAjYWN0aXZpdHlDb250YWluZXIgW2R5bmFtaWNIZWlnaHRdPVwiZmFsc2VcIj48L2F1cC1hY3Rpdml0eS1jb250YWluZXI+XG4gIDwvbWF0LXRhYj5cbjwvbWF0LXRhYi1ncm91cD5cblxuIl19
|