@dereekb/dbx-web 12.3.0 → 12.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/table/lib/index.mjs +3 -1
- package/esm2022/table/lib/table.column.size.directive.mjs +16 -15
- package/esm2022/table/lib/table.column.size.mjs +3 -0
- package/esm2022/table/lib/table.component.mjs +17 -14
- package/fesm2022/dereekb-dbx-web-table.mjs +115 -110
- package/fesm2022/dereekb-dbx-web-table.mjs.map +1 -1
- package/package.json +1 -1
- package/table/lib/index.d.ts +2 -0
- package/table/lib/table.column.size.d.ts +2 -0
- package/table/lib/table.column.size.directive.d.ts +4 -4
- package/table/lib/table.component.d.ts +0 -1
|
@@ -6,6 +6,8 @@ export * from './table.cell.summarystart.component';
|
|
|
6
6
|
export * from './table.column.directive';
|
|
7
7
|
export * from './table.column.header.component';
|
|
8
8
|
export * from './table.column.footer.component';
|
|
9
|
+
export * from './table.column.size.directive';
|
|
10
|
+
export * from './table.column.size';
|
|
9
11
|
export * from './table.component';
|
|
10
12
|
export * from './table.directive';
|
|
11
13
|
export * from './table.group.directive';
|
|
@@ -19,4 +21,4 @@ export * from './table.module';
|
|
|
19
21
|
export * from './table.reader';
|
|
20
22
|
export * from './table.store';
|
|
21
23
|
export * from './table';
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3RhYmxlL3NyYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUuY2VsbC5hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUuY2VsbC5pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS5jZWxsLnN1bW1hcnllbmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUuY2VsbC5zdW1tYXJ5c3RhcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUuY29sdW1uLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLmNvbHVtbi5oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUuY29sdW1uLmZvb3Rlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS5jb2x1bW4uc2l6ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS5jb2x1bW4uc2l6ZSc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLmdyb3VwLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLmdyb3VwLmhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS5ncm91cC5mb290ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUuaXRlbS5hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUuaXRlbS5jZWxsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLml0ZW0uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUuaXRlbS5oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUucmVhZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUuc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZSc7XG4iXX0=
|
|
@@ -3,7 +3,7 @@ import { toSignal } from '@angular/core/rxjs-interop';
|
|
|
3
3
|
import { resizeSignal } from '@dereekb/dbx-web';
|
|
4
4
|
import { BehaviorSubject } from 'rxjs';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
export class
|
|
6
|
+
export class DbxTableColumnSizeDirective {
|
|
7
7
|
elementRef = inject(ElementRef);
|
|
8
8
|
resized = resizeSignal(this.elementRef);
|
|
9
9
|
_columnsMap = new BehaviorSubject(new Map());
|
|
@@ -13,9 +13,10 @@ export class DbxColumnSizeDirective {
|
|
|
13
13
|
const resized = this.resized();
|
|
14
14
|
const columnsMap = this.columnsSignal();
|
|
15
15
|
const { width } = resized.newRect;
|
|
16
|
+
let visibleColumns = 0;
|
|
17
|
+
const itemColumns = [];
|
|
16
18
|
let headerColumn;
|
|
17
19
|
let tailColumn;
|
|
18
|
-
const itemColumns = [];
|
|
19
20
|
columnsMap.forEach((column) => {
|
|
20
21
|
const index = column.index();
|
|
21
22
|
switch (index) {
|
|
@@ -32,20 +33,20 @@ export class DbxColumnSizeDirective {
|
|
|
32
33
|
});
|
|
33
34
|
const headerColumnWidth = headerColumn?.width || 0;
|
|
34
35
|
const tailColumnWidth = tailColumn?.width || 0;
|
|
35
|
-
let
|
|
36
|
-
|
|
36
|
+
let remainingTableWidth = width - headerColumnWidth;
|
|
37
|
+
visibleColumns = 1;
|
|
37
38
|
let i = 0;
|
|
38
|
-
while (
|
|
39
|
+
while (remainingTableWidth > 0 && i < itemColumns.length) {
|
|
39
40
|
const nextColumn = itemColumns[i];
|
|
40
41
|
i += 1;
|
|
41
42
|
const columnWidth = nextColumn.width;
|
|
42
|
-
|
|
43
|
-
if (
|
|
43
|
+
remainingTableWidth -= columnWidth;
|
|
44
|
+
if (remainingTableWidth >= 0) {
|
|
44
45
|
visibleColumns += 1;
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
// show the tail column
|
|
48
|
-
if (tailColumn != null && visibleColumns === itemColumns.length + 1 &&
|
|
49
|
+
if (tailColumn != null && visibleColumns === itemColumns.length + 1 && Math.abs(remainingTableWidth - tailColumnWidth) < 3) {
|
|
49
50
|
visibleColumns += 1;
|
|
50
51
|
}
|
|
51
52
|
return visibleColumns;
|
|
@@ -62,14 +63,14 @@ export class DbxColumnSizeDirective {
|
|
|
62
63
|
ngOnDestroy() {
|
|
63
64
|
this._columnsMap.complete();
|
|
64
65
|
}
|
|
65
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
66
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type:
|
|
66
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableColumnSizeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
67
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxTableColumnSizeDirective, isStandalone: true, selector: "[dbx-table-column-size]", exportAs: ["dbxTableColumnSize"], ngImport: i0 });
|
|
67
68
|
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableColumnSizeDirective, decorators: [{
|
|
69
70
|
type: Directive,
|
|
70
71
|
args: [{
|
|
71
|
-
exportAs: '
|
|
72
|
-
selector: '[dbx-column-size]',
|
|
72
|
+
exportAs: 'dbxTableColumnSize',
|
|
73
|
+
selector: '[dbx-table-column-size]',
|
|
73
74
|
standalone: true
|
|
74
75
|
}]
|
|
75
76
|
}] });
|
|
@@ -77,7 +78,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
77
78
|
* References a specific element and the index of the column.
|
|
78
79
|
*/
|
|
79
80
|
export class DbxColumnSizeColumnDirective {
|
|
80
|
-
dbxColumnSizeDirective = inject(
|
|
81
|
+
dbxColumnSizeDirective = inject(DbxTableColumnSizeDirective);
|
|
81
82
|
elementRef = inject(ElementRef);
|
|
82
83
|
index = input.required({ alias: 'dbx-column-size-column' });
|
|
83
84
|
ngOnInit() {
|
|
@@ -99,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
99
100
|
standalone: true
|
|
100
101
|
}]
|
|
101
102
|
}] });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29sdW1uLnNpemUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi90YWJsZS9zcmMvbGliL3RhYmxlLmNvbHVtbi5zaXplLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVN2QyxNQUFNLE9BQU8sMkJBQTJCO0lBQzdCLFVBQVUsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRWhDLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEdBQUcsRUFBMEQsQ0FBQyxDQUFDO0lBQzdHLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTNDLGFBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQWlFLENBQUM7UUFFdkcsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDbEMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBRXZCLE1BQU0sV0FBVyxH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QUM7SUFDekQsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQTJCLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLENBQUMsQ0FBQztJQUUvRixRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQ25ELENBQUM7d0dBZlUsNEJBQTRCOzRGQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgcmVzaXplU2lnbmFsIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIERieENvbHVtblNpemVDb2x1bW5WYWx1ZSA9ICdoZWFkJyB8ICd0YWlsJyB8IG51bWJlcjtcblxuQERpcmVjdGl2ZSh7XG4gIGV4cG9ydEFzOiAnZGJ4VGFibGVDb2x1bW5TaXplJyxcbiAgc2VsZWN0b3I6ICdbZGJ4LXRhYmxlLWNvbHVtbi1zaXplXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGJ4VGFibGVDb2x1bW5TaXplRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5IHJlc2l6ZWQgPSByZXNpemVTaWduYWwodGhpcy5lbGVtZW50UmVmKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zTWFwID0gbmV3IEJlaGF2aW9yU3ViamVjdChuZXcgTWFwPERieENvbHVtblNpemVDb2x1bW5WYWx1ZSwgRGJ4Q29sdW1uU2l6ZUNvbHVtbkRpcmVjdGl2ZT4oKSk7XG4gIHJlYWRvbmx5IGNvbHVtbnMkID0gdGhpcy5fY29sdW1uc01hcC5hc09ic2VydmFibGUoKTtcblxuICByZWFkb25seSBjb2x1bW5zU2lnbmFsID0gdG9TaWduYWwodGhpcy5jb2x1bW5zJCk7XG4gIHJlYWRvbmx5IHZpc2libGVDb2x1bW5zU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlc2l6ZWQgPSB0aGlzLnJlc2l6ZWQoKTtcbiAgICBjb25zdCBjb2x1bW5zTWFwID0gdGhpcy5jb2x1bW5zU2lnbmFsKCkgYXMgTWFwPERieENvbHVtblNpemVDb2x1bW5WYWx1ZSwgRGJ4Q29sdW1uU2l6ZUNvbHVtbkRpcmVjdGl2ZT47XG5cbiAgICBjb25zdCB7IHdpZHRoIH0gPSByZXNpemVkLm5ld1JlY3Q7XG4gICAgbGV0IHZpc2libGVDb2x1bW5zID0gMDtcblxuICAgIGNvbnN0IGl0ZW1Db2x1bW5zOiBEYnhDb2x1bW5TaXplQ29sdW1uRGlyZWN0aXZlW10gPSBbXTtcblxuICAgIGxldCBoZWFkZXJDb2x1bW46IE1heWJlPERieENvbHVtblNpemVDb2x1bW5EaXJlY3RpdmU+O1xuICAgIGxldCB0YWlsQ29sdW1uOiBNYXliZTxEYnhDb2x1bW5TaXplQ29sdW1uRGlyZWN0aXZlPjtcblxuICAgIGNvbHVtbnNNYXAuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGNvbHVtbi5pbmRleCgpO1xuXG4gICAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgICAgIGhlYWRlckNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndGFpbCc6XG4gICAgICAgICAgdGFpbENvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpdGVtQ29sdW1uc1tpbmRleF0gPSBjb2x1bW47XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBoZWFkZXJDb2x1bW5XaWR0aCA9IGhlYWRlckNvbHVtbj8ud2lkdGggfHwgMDtcbiAgICBjb25zdCB0YWlsQ29sdW1uV2lkdGggPSB0YWlsQ29sdW1uPy53aWR0aCB8fCAwO1xuXG4gICAgbGV0IHJlbWFpbmluZ1RhYmxlV2lkdGggPSB3aWR0aCAtIGhlYWRlckNvbHVtbldpZHRoO1xuICAgIHZpc2libGVDb2x1bW5zID0gMTtcbiAgICBsZXQgaSA9IDA7XG5cbiAgICB3aGlsZSAocmVtYWluaW5nVGFibGVXaWR0aCA+IDAgJiYgaSA8IGl0ZW1Db2x1bW5zLmxlbmd0aCkge1xuICAgICAgY29uc3QgbmV4dENvbHVtbiA9IGl0ZW1Db2x1bW5zW2ldO1xuICAgICAgaSArPSAxO1xuXG4gICAgICBjb25zdCBjb2x1bW5XaWR0aCA9IG5leHRDb2x1bW4ud2lkdGg7XG5cbiAgICAgIHJlbWFpbmluZ1RhYmxlV2lkdGggLT0gY29sdW1uV2lkdGg7XG5cbiAgICAgIGlmIChyZW1haW5pbmdUYWJsZVdpZHRoID49IDApIHtcbiAgICAgICAgdmlzaWJsZUNvbHVtbnMgKz0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzaG93IHRoZSB0YWlsIGNvbHVtblxuICAgIGlmICh0YWlsQ29sdW1uICE9IG51bGwgJiYgdmlzaWJsZUNvbHVtbnMgPT09IGl0ZW1Db2x1bW5zLmxlbmd0aCArIDEgJiYgTWF0aC5hYnMocmVtYWluaW5nVGFibGVXaWR0aCAtIHRhaWxDb2x1bW5XaWR0aCkgPCAzKSB7XG4gICAgICB2aXNpYmxlQ29sdW1ucyArPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB2aXNpYmxlQ29sdW1ucztcbiAgfSk7XG5cbiAgYWRkQ29sdW1uKGNvbHVtbjogRGJ4Q29sdW1uU2l6ZUNvbHVtbkRpcmVjdGl2ZSkge1xuICAgIHRoaXMuX2NvbHVtbnNNYXAudmFsdWUuc2V0KGNvbHVtbi5pbmRleCgpLCBjb2x1bW4pO1xuICAgIHRoaXMuX2NvbHVtbnNNYXAubmV4dCh0aGlzLl9jb2x1bW5zTWFwLnZhbHVlKTtcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbihjb2x1bW46IERieENvbHVtblNpemVDb2x1bW5EaXJlY3RpdmUpIHtcbiAgICBpZiAodGhpcy5fY29sdW1uc01hcC52YWx1ZS5kZWxldGUoY29sdW1uLmluZGV4KCkpKSB7XG4gICAgICB0aGlzLl9jb2x1bW5zTWFwLm5leHQodGhpcy5fY29sdW1uc01hcC52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fY29sdW1uc01hcC5jb21wbGV0ZSgpO1xuICB9XG59XG5cbi8qKlxuICogUmVmZXJlbmNlcyBhIHNwZWNpZmljIGVsZW1lbnQgYW5kIHRoZSBpbmRleCBvZiB0aGUgY29sdW1uLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4LWNvbHVtbi1zaXplLWNvbHVtbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieENvbHVtblNpemVDb2x1bW5EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGRieENvbHVtblNpemVEaXJlY3RpdmUgPSBpbmplY3QoRGJ4VGFibGVDb2x1bW5TaXplRGlyZWN0aXZlKTtcbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5IGluZGV4ID0gaW5wdXQucmVxdWlyZWQ8RGJ4Q29sdW1uU2l6ZUNvbHVtblZhbHVlPih7IGFsaWFzOiAnZGJ4LWNvbHVtbi1zaXplLWNvbHVtbicgfSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYnhDb2x1bW5TaXplRGlyZWN0aXZlLmFkZENvbHVtbih0aGlzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGJ4Q29sdW1uU2l6ZURpcmVjdGl2ZS5yZW1vdmVDb2x1bW4odGhpcyk7XG4gIH1cblxuICBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const DBX_TABLE_COLUMN_SIZE_PARENT_ELEMENT_REF_TOKEN = new InjectionToken('DBX_TABLE_COLUMN_SIZE_PARENT_ELEMENT_REF_TOKEN');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29sdW1uLnNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3RhYmxlL3NyYy9saWIvdGFibGUuY29sdW1uLnNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxNQUFNLENBQUMsTUFBTSw4Q0FBOEMsR0FBRyxJQUFJLGNBQWMsQ0FBMEIsZ0RBQWdELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBEQlhfVEFCTEVfQ09MVU1OX1NJWkVfUEFSRU5UX0VMRU1FTlRfUkVGX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignREJYX1RBQkxFX0NPTFVNTl9TSVpFX1BBUkVOVF9FTEVNRU5UX1JFRl9UT0tFTicpO1xuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, inject, computed, input, viewChild } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject, computed, input, viewChild, ElementRef } from '@angular/core';
|
|
2
2
|
import { toSignal } from '@angular/core/rxjs-interop';
|
|
3
3
|
import { DbxTableStore } from './table.store';
|
|
4
4
|
import { loadingStateContext, mapLoadingStateValueWithOperator, valueFromFinishedLoadingState } from '@dereekb/rxjs';
|
|
@@ -20,7 +20,8 @@ import { DbxTableGroupFooterComponent } from './table.group.footer.component';
|
|
|
20
20
|
import { pushArrayItemsIntoArray } from '@dereekb/util';
|
|
21
21
|
import { NgClass } from '@angular/common';
|
|
22
22
|
import { DbxTableFullSummaryRowComponent } from './table.fullsummaryrow.component';
|
|
23
|
-
import {
|
|
23
|
+
import { DbxTableColumnSizeDirective, DbxColumnSizeColumnDirective } from './table.column.size.directive';
|
|
24
|
+
import { DBX_TABLE_COLUMN_SIZE_PARENT_ELEMENT_REF_TOKEN } from './table.column.size';
|
|
24
25
|
import * as i0 from "@angular/core";
|
|
25
26
|
import * as i1 from "@angular/material/table";
|
|
26
27
|
export const DBX_TABLE_ITEMS_COLUMN_NAME = '_items';
|
|
@@ -97,14 +98,6 @@ export class DbxTableViewComponent {
|
|
|
97
98
|
const columnNames = this.innerColumnNamesSignal() || [];
|
|
98
99
|
return [this.itemsColumnName, ...columnNames, this.actionsColumnName];
|
|
99
100
|
});
|
|
100
|
-
visibleColumnsSignal = computed(() => {
|
|
101
|
-
const displayedColumns = this.displayedColumnsSignal();
|
|
102
|
-
// TODO: Every time the table is rendered/size changes/etc we should recompute width of the first n columns that span the viewport
|
|
103
|
-
// in order to calculate a colspan for the group header/footer that is not greater than span of the table for a given view size
|
|
104
|
-
// I.E. if the screen shrinks to only show the first 4 columns, then the colspan should be 4.
|
|
105
|
-
// as a temporary measure, we just show half the columns
|
|
106
|
-
return displayedColumns.length / 2;
|
|
107
|
-
});
|
|
108
101
|
trackByFunction$ = this.tableStore.viewDelegate$.pipe(map((x) => x.trackBy ?? this.DEFAULT_TRACK_BY_FUNCTION), shareReplay(1));
|
|
109
102
|
inputTrackByFunctionSignal = toSignal(this.trackByFunction$, { initialValue: this.DEFAULT_TRACK_BY_FUNCTION });
|
|
110
103
|
trackElementByFunctionSignal = computed(() => {
|
|
@@ -147,7 +140,12 @@ export class DbxTableViewComponent {
|
|
|
147
140
|
return viewDelegate?.fullSummaryRow != null;
|
|
148
141
|
});
|
|
149
142
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
150
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxTableViewComponent, isStandalone: true, selector: "dbx-table-view", inputs: { scrollDistance: { classPropertyName: "scrollDistance", publicName: "scrollDistance", isSignal: true, isRequired: false, transformFunction: null }, throttleScroll: { classPropertyName: "throttleScroll", publicName: "throttleScroll", isSignal: true, isRequired: false, transformFunction: null } },
|
|
143
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxTableViewComponent, isStandalone: true, selector: "dbx-table-view", inputs: { scrollDistance: { classPropertyName: "scrollDistance", publicName: "scrollDistance", isSignal: true, isRequired: false, transformFunction: null }, throttleScroll: { classPropertyName: "throttleScroll", publicName: "throttleScroll", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
144
|
+
{
|
|
145
|
+
provide: DBX_TABLE_COLUMN_SIZE_PARENT_ELEMENT_REF_TOKEN,
|
|
146
|
+
useExisting: ElementRef
|
|
147
|
+
}
|
|
148
|
+
], viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true, isSignal: true }], ngImport: i0, template: "<dbx-loading [context]=\"context\">\n <dbx-loading class=\"dbx-table-view-loading\" [linear]=\"true\" [context]=\"dataLoadingContext\"></dbx-loading>\n <section class=\"dbx-table-view\" dbx-table-column-size #columnSize=\"dbxTableColumnSize\" infinite-scroll [infiniteScrollDistance]=\"scrollDistance()\" [infiniteScrollThrottle]=\"throttleScroll()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\">\n <table class=\"dbx-table-view-table\" mat-table [dataSource]=\"elementsSignal()\" [trackBy]=\"trackElementByFunctionSignal()\" multiTemplateDataRows>\n <!-- Groups -->\n <!-- Group Header column -->\n <ng-container matColumnDef=\"groupHeaderColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"columnSize.visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-header [group]=\"element.group\"></dbx-table-group-header>\n </td>\n </ng-container>\n\n <!-- Group Footer column -->\n <ng-container matColumnDef=\"groupFooterColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"columnSize.visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-footer [group]=\"element.group\"></dbx-table-group-footer>\n </td>\n </ng-container>\n\n <!-- Items -->\n <!-- Header/Item column -->\n <ng-container [matColumnDef]=\"itemsColumnName\" [sticky]=\"true\">\n <th dbx-column-size-column=\"head\" mat-header-cell *matHeaderCellDef>\n <dbx-table-input-cell></dbx-table-input-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-header [item]=\"element.item\"></dbx-table-item-header>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-start-cell></dbx-table-summary-start-cell>\n </td>\n </ng-container>\n\n <!-- Column Definitions -->\n @for (column of innerColumnsSignal(); track column.columnName) {\n <ng-container [matColumnDef]=\"column.columnName\" [sticky]=\"false\">\n <th [dbx-column-size-column]=\"$index\" mat-header-cell *matHeaderCellDef>\n <dbx-table-column-header [column]=\"column\"></dbx-table-column-header>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-cell [item]=\"element.item\" [column]=\"column\"></dbx-table-item-cell>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-column-footer [column]=\"column\"></dbx-table-column-footer>\n </td>\n </ng-container>\n }\n\n <!-- Tail/Action column -->\n <ng-container [matColumnDef]=\"actionsColumnName\" [stickyEnd]=\"true\">\n <th dbx-column-size-column=\"tail\" mat-header-cell *matHeaderCellDef>\n <dbx-table-action-cell></dbx-table-action-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-action [item]=\"element.item\"></dbx-table-item-action>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-end-cell></dbx-table-summary-end-cell>\n </td>\n </ng-container>\n\n <!-- Table View -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n\n <tr mat-row *matRowDef=\"let row; columns: ['groupHeaderColumn']; when: showGroupHeaderRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumnsSignal(); when: showItemRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['groupFooterColumn']; when: showGroupFooterRow\"></tr>\n\n <tr [ngClass]=\"{ 'dbx-hide': !showFooterRowSignal() }\" mat-footer-row *matFooterRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n </table>\n </section>\n <!-- Full summary row -->\n @if (showFullSummaryRowSignal()) {\n <div class=\"mat-mdc-table dbx-table-view-full-summary-row-container\">\n <div class=\"mdc-data-table__cell mat-mdc-row\">\n <dbx-table-full-summary-row></dbx-table-full-summary-row>\n </div>\n </div>\n }\n</dbx-loading>\n", dependencies: [{ kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: DbxTableInputCellComponent, selector: "dbx-table-input-cell" }, { kind: "component", type: DbxTableItemHeaderComponent, selector: "dbx-table-item-header" }, { kind: "component", type: DbxTableItemCellComponent, selector: "dbx-table-item-cell", inputs: ["column"] }, { kind: "component", type: DbxTableItemActionComponent, selector: "dbx-table-item-action" }, { kind: "component", type: DbxTableActionCellComponent, selector: "dbx-table-action-cell" }, { kind: "component", type: DbxTableColumnHeaderComponent, selector: "dbx-table-column-header" }, { kind: "component", type: DbxTableColumnFooterComponent, selector: "dbx-table-column-footer" }, { kind: "component", type: DbxTableSummaryStartCellComponent, selector: "dbx-table-summary-start-cell" }, { kind: "component", type: DbxTableSummaryEndCellComponent, selector: "dbx-table-summary-end-cell" }, { kind: "component", type: DbxTableGroupHeaderComponent, selector: "dbx-table-group-header" }, { kind: "component", type: DbxTableGroupFooterComponent, selector: "dbx-table-group-footer" }, { kind: "component", type: DbxTableFullSummaryRowComponent, selector: "dbx-table-full-summary-row" }, { kind: "directive", type: DbxTableColumnSizeDirective, selector: "[dbx-table-column-size]", exportAs: ["dbxTableColumnSize"] }, { kind: "directive", type: DbxColumnSizeColumnDirective, selector: "[dbx-column-size-column]", inputs: ["dbx-column-size-column"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
151
149
|
}
|
|
152
150
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableViewComponent, decorators: [{
|
|
153
151
|
type: Component,
|
|
@@ -168,8 +166,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
168
166
|
DbxTableGroupHeaderComponent,
|
|
169
167
|
DbxTableGroupFooterComponent,
|
|
170
168
|
DbxTableFullSummaryRowComponent,
|
|
171
|
-
|
|
169
|
+
DbxTableColumnSizeDirective,
|
|
172
170
|
DbxColumnSizeColumnDirective
|
|
173
|
-
],
|
|
171
|
+
], providers: [
|
|
172
|
+
{
|
|
173
|
+
provide: DBX_TABLE_COLUMN_SIZE_PARENT_ELEMENT_REF_TOKEN,
|
|
174
|
+
useExisting: ElementRef
|
|
175
|
+
}
|
|
176
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-loading [context]=\"context\">\n <dbx-loading class=\"dbx-table-view-loading\" [linear]=\"true\" [context]=\"dataLoadingContext\"></dbx-loading>\n <section class=\"dbx-table-view\" dbx-table-column-size #columnSize=\"dbxTableColumnSize\" infinite-scroll [infiniteScrollDistance]=\"scrollDistance()\" [infiniteScrollThrottle]=\"throttleScroll()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\">\n <table class=\"dbx-table-view-table\" mat-table [dataSource]=\"elementsSignal()\" [trackBy]=\"trackElementByFunctionSignal()\" multiTemplateDataRows>\n <!-- Groups -->\n <!-- Group Header column -->\n <ng-container matColumnDef=\"groupHeaderColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"columnSize.visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-header [group]=\"element.group\"></dbx-table-group-header>\n </td>\n </ng-container>\n\n <!-- Group Footer column -->\n <ng-container matColumnDef=\"groupFooterColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"columnSize.visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-footer [group]=\"element.group\"></dbx-table-group-footer>\n </td>\n </ng-container>\n\n <!-- Items -->\n <!-- Header/Item column -->\n <ng-container [matColumnDef]=\"itemsColumnName\" [sticky]=\"true\">\n <th dbx-column-size-column=\"head\" mat-header-cell *matHeaderCellDef>\n <dbx-table-input-cell></dbx-table-input-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-header [item]=\"element.item\"></dbx-table-item-header>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-start-cell></dbx-table-summary-start-cell>\n </td>\n </ng-container>\n\n <!-- Column Definitions -->\n @for (column of innerColumnsSignal(); track column.columnName) {\n <ng-container [matColumnDef]=\"column.columnName\" [sticky]=\"false\">\n <th [dbx-column-size-column]=\"$index\" mat-header-cell *matHeaderCellDef>\n <dbx-table-column-header [column]=\"column\"></dbx-table-column-header>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-cell [item]=\"element.item\" [column]=\"column\"></dbx-table-item-cell>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-column-footer [column]=\"column\"></dbx-table-column-footer>\n </td>\n </ng-container>\n }\n\n <!-- Tail/Action column -->\n <ng-container [matColumnDef]=\"actionsColumnName\" [stickyEnd]=\"true\">\n <th dbx-column-size-column=\"tail\" mat-header-cell *matHeaderCellDef>\n <dbx-table-action-cell></dbx-table-action-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-action [item]=\"element.item\"></dbx-table-item-action>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-end-cell></dbx-table-summary-end-cell>\n </td>\n </ng-container>\n\n <!-- Table View -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n\n <tr mat-row *matRowDef=\"let row; columns: ['groupHeaderColumn']; when: showGroupHeaderRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumnsSignal(); when: showItemRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['groupFooterColumn']; when: showGroupFooterRow\"></tr>\n\n <tr [ngClass]=\"{ 'dbx-hide': !showFooterRowSignal() }\" mat-footer-row *matFooterRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n </table>\n </section>\n <!-- Full summary row -->\n @if (showFullSummaryRowSignal()) {\n <div class=\"mat-mdc-table dbx-table-view-full-summary-row-container\">\n <div class=\"mdc-data-table__cell mat-mdc-row\">\n <dbx-table-full-summary-row></dbx-table-full-summary-row>\n </div>\n </div>\n }\n</dbx-loading>\n" }]
|
|
174
177
|
}] });
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi90YWJsZS9zcmMvbGliL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC13ZWIvdGFibGUvc3JjL2xpYi90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFtQixNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFnQixtQkFBbUIsRUFBRSxnQ0FBZ0MsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSSxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFaEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRXJHLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLFFBQVEsQ0FBQztBQUNwRCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxVQUFVLENBQUM7QUFleEQsTUFBTSxVQUFVLDBCQUEwQixDQUFPLE9BQWtDO0lBQ2pGLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBTyxPQUFrQztJQUNoRixPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO0FBQ2pDLENBQUM7QUFFRDs7R0FFRztBQTJCSCxNQUFNLE9BQU8scUJBQXFCO0lBQ3ZCLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQSxhQUF5QixDQUFBLENBQUMsQ0FBQztJQUMvQyxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBc0MsUUFBUSxDQUFDLENBQUM7SUFFMUUseUJBQXlCLEdBQXlCLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDbkUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFFTyxjQUFjLEdBQUcsS0FBSyxDQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLGNBQWMsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7SUFFbkMsZUFBZSxHQUFHLDJCQUEyQixDQUFDO0lBQzlDLGlCQUFpQixHQUFHLDZCQUE2QixDQUFDO0lBRWxELGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztJQUN6QyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDbEQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFDdEMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUUxRCxjQUFjLEdBQTBELElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDaEgsZ0NBQWdDLENBQzlCLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUN2QyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNuQixNQUFNLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLFlBQVksQ0FBQztZQUN0RixNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBOEIsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDcEksTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQThCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBRXBJLE9BQU8sTUFBTTtpQkFDVixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDYixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDO2dCQUV4QixNQUFNLFlBQVksR0FBb0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDekUsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSTtpQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFFSixJQUFJLFFBQXFDLENBQUM7Z0JBRTFDLElBQUssS0FBd0MsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDdEQsUUFBUSxHQUFHLFlBQVksQ0FBQztnQkFDMUIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUVyQyxRQUFRLEdBQUcsRUFBRSxDQUFDO29CQUVkLElBQUksTUFBTSxFQUFFLENBQUM7d0JBQ1gsUUFBUSxDQUFDLElBQUksQ0FBQzs0QkFDWixJQUFJLEVBQUUsT0FBTzs0QkFDYixRQUFRLEVBQUUsUUFBUTs0QkFDbEIsS0FBSzt5QkFDTixDQUFDLENBQUM7b0JBQ0wsQ0FBQztvQkFFRCx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7b0JBRWhELElBQUksTUFBTSxFQUFFLENBQUM7d0JBQ1gsUUFBUSxDQUFDLElBQUksQ0FBQzs0QkFDWixJQUFJLEVBQUUsT0FBTzs0QkFDYixRQUFRLEVBQUUsUUFBUTs0QkFDbEIsS0FBSzt5QkFDTixDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUMsQ0FBQztpQkFDRCxJQUFJLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxFQUNELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBRU8sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUMzQyw2QkFBNkIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFDdkMsWUFBWSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUM5RCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUVPLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ3RELEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBRU8sc0JBQXNCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUM5QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDeEQsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFFTSxvQkFBb0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFdkQsa0lBQWtJO1FBQ2xJLCtIQUErSDtRQUMvSCw2RkFBNkY7UUFFN0Ysd0RBQXdEO1FBRXhELE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FBQztJQUVNLGdCQUFnQixHQUFtQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQzVGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsRUFDdkQsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFTywwQkFBMEIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7SUFDL0csNEJBQTRCLEdBQXVELFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDeEcsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUF3QixDQUFDO1FBRWhGLE1BQU0sRUFBRSxHQUErQyxDQUFDLEtBQWEsRUFBRSxPQUFrQyxFQUFFLEVBQUU7WUFDM0csSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUM1QixPQUFPLEtBQUssZUFBZSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBUyxDQUFDLEVBQUUsQ0FBQztZQUMxRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQyxDQUFDLENBQUM7SUFFTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBRXZFLGFBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5Qyx3QkFBd0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXBFLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdELGNBQWMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXpFLFlBQVk7UUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBUyxFQUFFLEdBQThCO1FBQ25ELE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUVELGtCQUFrQixDQUFDLENBQVMsRUFBRSxHQUE4QjtRQUMxRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDO0lBQzNELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxDQUFTLEVBQUUsR0FBOEI7UUFDMUQsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxHQUFHLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQztJQUMzRCxDQUFDO0lBRVEsbUJBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUMzQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLGFBQWEsR0FBRyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLElBQUksSUFBSSxJQUFJLFlBQVksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLFlBQVksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLENBQUM7UUFDekosT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFFTSx3QkFBd0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ2hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLE9BQU8sWUFBWSxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7d0dBcEtRLHFCQUFxQjs0RkFBckIscUJBQXFCLG1hQUV5QyxRQUFRLGdFQ2hGbkYsMC9IQWdGQSw0Q0R4QkksbUJBQW1CLG1LQUNuQixPQUFPLG9GQUNQLHVCQUF1Qix5V0FDdkIsY0FBYywwN0NBQ2QsMEJBQTBCLGlFQUMxQiwyQkFBMkIsa0VBQzNCLHlCQUF5QixvRkFDekIsMkJBQTJCLGtFQUMzQiwyQkFBMkIsa0VBQzNCLDZCQUE2QixvRUFDN0IsNkJBQTZCLG9FQUM3QixpQ0FBaUMseUVBQ2pDLCtCQUErQix1RUFDL0IsNEJBQTRCLG1FQUM1Qiw0QkFBNEIsbUVBQzVCLCtCQUErQix1RUFDL0Isc0JBQXNCLDJGQUN0Qiw0QkFBNEI7OzRGQUtuQixxQkFBcUI7a0JBMUJqQyxTQUFTOytCQUNFLGdCQUFnQixXQUVqQjt3QkFDUCxtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsdUJBQXVCO3dCQUN2QixjQUFjO3dCQUNkLDBCQUEwQjt3QkFDMUIsMkJBQTJCO3dCQUMzQix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsMkJBQTJCO3dCQUMzQiw2QkFBNkI7d0JBQzdCLDZCQUE2Qjt3QkFDN0IsaUNBQWlDO3dCQUNqQywrQkFBK0I7d0JBQy9CLDRCQUE0Qjt3QkFDNUIsNEJBQTRCO3dCQUM1QiwrQkFBK0I7d0JBQy9CLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3FCQUM3QixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVHJhY2tCeUZ1bmN0aW9uLCBpbmplY3QsIGNvbXB1dGVkLCBpbnB1dCwgU2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRGJ4VGFibGVTdG9yZSB9IGZyb20gJy4vdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgTG9hZGluZ1N0YXRlLCBsb2FkaW5nU3RhdGVDb250ZXh0LCBtYXBMb2FkaW5nU3RhdGVWYWx1ZVdpdGhPcGVyYXRvciwgdmFsdWVGcm9tRmluaXNoZWRMb2FkaW5nU3RhdGUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5LCBtYXAsIE9ic2VydmFibGUsIHN3aXRjaE1hcCwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbERpcmVjdGl2ZSB9IGZyb20gJ25neC1pbmZpbml0ZS1zY3JvbGwnO1xuaW1wb3J0IHsgTWF0VGFibGUsIE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgRGJ4VGFibGVJbnB1dENlbGxDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNlbGwuaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlU3VtbWFyeUVuZENlbGxDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNlbGwuc3VtbWFyeWVuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVTdW1tYXJ5U3RhcnRDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jZWxsLnN1bW1hcnlzdGFydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVDb2x1bW5Gb290ZXJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNvbHVtbi5mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlSXRlbUNlbGxDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLml0ZW0uY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVJdGVtSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5pdGVtLmhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVJdGVtQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5pdGVtLmFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVBY3Rpb25DZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jZWxsLmFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVDb2x1bW5IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNvbHVtbi5oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlSXRlbUdyb3VwLCBEZWZhdWx0RGJ4VGFibGVJdGVtR3JvdXAgfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IERieFRhYmxlR3JvdXBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmdyb3VwLmhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4VGFibGVHcm91cEZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuZ3JvdXAuZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBwdXNoQXJyYXlJdGVtc0ludG9BcnJheSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYnhUYWJsZUZ1bGxTdW1tYXJ5Um93Q29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5mdWxsc3VtbWFyeXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4Q29sdW1uU2l6ZURpcmVjdGl2ZSwgRGJ4Q29sdW1uU2l6ZUNvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4vdGFibGUuY29sdW1uLnNpemUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IERCWF9UQUJMRV9JVEVNU19DT0xVTU5fTkFNRSA9ICdfaXRlbXMnO1xuZXhwb3J0IGNvbnN0IERCWF9UQUJMRV9BQ1RJT05TX0NPTFVNTl9OQU1FID0gJ19hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhUYWJsZVZpZXdHcm91cEVsZW1lbnQ8VCwgRz4ge1xuICByZWFkb25seSB0eXBlOiAnZ3JvdXAnO1xuICByZWFkb25seSBsb2NhdGlvbjogJ2hlYWRlcicgfCAnZm9vdGVyJztcbiAgcmVhZG9ubHkgZ3JvdXA6IERieFRhYmxlSXRlbUdyb3VwPFQsIEc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieFRhYmxlVmlld0l0ZW1FbGVtZW50PFQsIEc+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ2l0ZW0nO1xuICByZWFkb25seSBpdGVtOiBUO1xufVxuXG5leHBvcnQgdHlwZSBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+ID0gRGJ4VGFibGVWaWV3R3JvdXBFbGVtZW50PFQsIEc+IHwgRGJ4VGFibGVWaWV3SXRlbUVsZW1lbnQ8VCwgRz47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RieFRhYmxlVmlld0dyb3VwRWxlbWVudDxULCBHPihlbGVtZW50OiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+KTogZWxlbWVudCBpcyBEYnhUYWJsZVZpZXdHcm91cEVsZW1lbnQ8VCwgRz4ge1xuICByZXR1cm4gZWxlbWVudC50eXBlID09PSAnZ3JvdXAnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYnhUYWJsZVZpZXdJdGVtRWxlbWVudDxULCBHPihlbGVtZW50OiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+KTogZWxlbWVudCBpcyBEYnhUYWJsZVZpZXdJdGVtRWxlbWVudDxULCBHPiB7XG4gIHJldHVybiBlbGVtZW50LnR5cGUgPT09ICdpdGVtJztcbn1cblxuLyoqXG4gKiBBIHRhYmxlIHdpdGggZml4ZWQgY29udGVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtdGFibGUtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtcbiAgICBEYnhMb2FkaW5nQ29tcG9uZW50LFxuICAgIE5nQ2xhc3MsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgRGJ4VGFibGVJbnB1dENlbGxDb21wb25lbnQsXG4gICAgRGJ4VGFibGVJdGVtSGVhZGVyQ29tcG9uZW50LFxuICAgIERieFRhYmxlSXRlbUNlbGxDb21wb25lbnQsXG4gICAgRGJ4VGFibGVJdGVtQWN0aW9uQ29tcG9uZW50LFxuICAgIERieFRhYmxlQWN0aW9uQ2VsbENvbXBvbmVudCxcbiAgICBEYnhUYWJsZUNvbHVtbkhlYWRlckNvbXBvbmVudCxcbiAgICBEYnhUYWJsZUNvbHVtbkZvb3RlckNvbXBvbmVudCxcbiAgICBEYnhUYWJsZVN1bW1hcnlTdGFydENlbGxDb21wb25lbnQsXG4gICAgRGJ4VGFibGVTdW1tYXJ5RW5kQ2VsbENvbXBvbmVudCxcbiAgICBEYnhUYWJsZUdyb3VwSGVhZGVyQ29tcG9uZW50LFxuICAgIERieFRhYmxlR3JvdXBGb290ZXJDb21wb25lbnQsXG4gICAgRGJ4VGFibGVGdWxsU3VtbWFyeVJvd0NvbXBvbmVudCxcbiAgICBEYnhDb2x1bW5TaXplRGlyZWN0aXZlLFxuICAgIERieENvbHVtblNpemVDb2x1bW5EaXJlY3RpdmVcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGJ4VGFibGVWaWV3Q29tcG9uZW50PEksIEMsIFQsIEcgPSB1bmtub3duPiB7XG4gIHJlYWRvbmx5IHRhYmxlU3RvcmUgPSBpbmplY3QoRGJ4VGFibGVTdG9yZTxJLCBDLCBULCBHPik7XG4gIHJlYWRvbmx5IHRhYmxlID0gdmlld0NoaWxkLnJlcXVpcmVkPE1hdFRhYmxlPERieFRhYmxlVmlld0VsZW1lbnQ8VCwgRz4+PihNYXRUYWJsZSk7XG5cbiAgcmVhZG9ubHkgREVGQVVMVF9UUkFDS19CWV9GVU5DVElPTjogVHJhY2tCeUZ1bmN0aW9uPGFueT4gPSAoaW5kZXgpID0+IHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH07XG5cbiAgcmVhZG9ubHkgc2Nyb2xsRGlzdGFuY2UgPSBpbnB1dDxudW1iZXI+KDAuNSk7XG4gIHJlYWRvbmx5IHRocm90dGxlU2Nyb2xsID0gaW5wdXQ8bnVtYmVyPig1MCk7XG5cbiAgcmVhZG9ubHkgaXRlbXNDb2x1bW5OYW1lID0gREJYX1RBQkxFX0lURU1TX0NPTFVNTl9OQU1FO1xuICByZWFkb25seSBhY3Rpb25zQ29sdW1uTmFtZSA9IERCWF9UQUJMRV9BQ1RJT05TX0NPTFVNTl9OQU1FO1xuXG4gIHJlYWRvbmx5IGlubmVyQ29sdW1ucyQgPSB0aGlzLnRhYmxlU3RvcmUuY29sdW1ucyQ7XG4gIHJlYWRvbmx5IGlubmVyQ29sdW1uTmFtZXMkID0gdGhpcy5pbm5lckNvbHVtbnMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1hcCgoeSkgPT4geS5jb2x1bW5OYW1lKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbm5lckNvbHVtbnNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlubmVyQ29sdW1ucyQpO1xuICByZWFkb25seSBpbm5lckNvbHVtbk5hbWVzU2lnbmFsID0gdG9TaWduYWwodGhpcy5pbm5lckNvbHVtbk5hbWVzJCk7XG5cbiAgcmVhZG9ubHkgZWxlbWVudHNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERieFRhYmxlVmlld0VsZW1lbnQ8VCwgRz5bXT4+ID0gdGhpcy50YWJsZVN0b3JlLmdyb3Vwc1N0YXRlJC5waXBlKFxuICAgIG1hcExvYWRpbmdTdGF0ZVZhbHVlV2l0aE9wZXJhdG9yKFxuICAgICAgc3dpdGNoTWFwKChncm91cHMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVTdG9yZS52aWV3RGVsZWdhdGUkLnBpcGUoXG4gICAgICAgICAgbWFwKCh2aWV3RGVsZWdhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZ3JvdXBIZWFkZXI6IGlucHV0R3JvdXBIZWFkZXIsIGdyb3VwRm9vdGVyOiBpbnB1dEdyb3VwRm9vdGVyIH0gPSB2aWV3RGVsZWdhdGU7XG4gICAgICAgICAgICBjb25zdCBoYXNHcm91cEhlYWRlciA9IGlucHV0R3JvdXBIZWFkZXIgIT0gbnVsbCA/IChncm91cDogRGJ4VGFibGVJdGVtR3JvdXA8VCwgRz4pID0+IGlucHV0R3JvdXBIZWFkZXIoZ3JvdXApICE9IG51bGwgOiAoKSA9PiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0dyb3VwRm9vdGVyID0gaW5wdXRHcm91cEZvb3RlciAhPSBudWxsID8gKGdyb3VwOiBEYnhUYWJsZUl0ZW1Hcm91cDxULCBHPikgPT4gaW5wdXRHcm91cEZvb3Rlcihncm91cCkgIT0gbnVsbCA6ICgpID0+IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzXG4gICAgICAgICAgICAgIC5tYXAoKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBpdGVtcyB9ID0gZ3JvdXA7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtRWxlbWVudHM6IERieFRhYmxlVmlld0l0ZW1FbGVtZW50PFQsIEc+W10gPSBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnaXRlbScsXG4gICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzOiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+W107XG5cbiAgICAgICAgICAgICAgICBpZiAoKGdyb3VwIGFzIERlZmF1bHREYnhUYWJsZUl0ZW1Hcm91cDxULCBHPikuZGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBpdGVtRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlciA9IGhhc0dyb3VwSGVhZGVyKGdyb3VwKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZvb3RlciA9IGhhc0dyb3VwRm9vdGVyKGdyb3VwKTtcblxuICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbXTtcblxuICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZ3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAnaGVhZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICBncm91cFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcHVzaEFycmF5SXRlbXNJbnRvQXJyYXkoZWxlbWVudHMsIGl0ZW1FbGVtZW50cyk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChmb290ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2dyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2Zvb3RlcicsXG4gICAgICAgICAgICAgICAgICAgICAgZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBlbGVtZW50cyQgPSB0aGlzLmVsZW1lbnRzU3RhdGUkLnBpcGUoXG4gICAgdmFsdWVGcm9tRmluaXNoZWRMb2FkaW5nU3RhdGUoKCkgPT4gW10pLFxuICAgIHRocm90dGxlVGltZSg1MCwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IHRydWUsIHRyYWlsaW5nOiB0cnVlIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1ucyQgPSB0aGlzLmlubmVyQ29sdW1uTmFtZXMkLnBpcGUoXG4gICAgbWFwKChjb2x1bW5OYW1lcykgPT4ge1xuICAgICAgcmV0dXJuIFt0aGlzLml0ZW1zQ29sdW1uTmFtZSwgLi4uY29sdW1uTmFtZXMsIHRoaXMuYWN0aW9uc0NvbHVtbk5hbWVdO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1uc1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IHRoaXMuaW5uZXJDb2x1bW5OYW1lc1NpZ25hbCgpIHx8IFtdO1xuICAgIHJldHVybiBbdGhpcy5pdGVtc0NvbHVtbk5hbWUsIC4uLmNvbHVtbk5hbWVzLCB0aGlzLmFjdGlvbnNDb2x1bW5OYW1lXTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdmlzaWJsZUNvbHVtbnNTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1uc1NpZ25hbCgpO1xuXG4gICAgLy8gVE9ETzogRXZlcnkgdGltZSB0aGUgdGFibGUgaXMgcmVuZGVyZWQvc2l6ZSBjaGFuZ2VzL2V0YyB3ZSBzaG91bGQgcmVjb21wdXRlIHdpZHRoIG9mIHRoZSBmaXJzdCBuIGNvbHVtbnMgdGhhdCBzcGFuIHRoZSB2aWV3cG9ydFxuICAgIC8vIGluIG9yZGVyIHRvIGNhbGN1bGF0ZSBhIGNvbHNwYW4gZm9yIHRoZSBncm91cCBoZWFkZXIvZm9vdGVyIHRoYXQgaXMgbm90IGdyZWF0ZXIgdGhhbiBzcGFuIG9mIHRoZSB0YWJsZSBmb3IgYSBnaXZlbiB2aWV3IHNpemVcbiAgICAvLyBJLkUuIGlmIHRoZSBzY3JlZW4gc2hyaW5rcyB0byBvbmx5IHNob3cgdGhlIGZpcnN0IDQgY29sdW1ucywgdGhlbiB0aGUgY29sc3BhbiBzaG91bGQgYmUgNC5cblxuICAgIC8vIGFzIGEgdGVtcG9yYXJ5IG1lYXN1cmUsIHdlIGp1c3Qgc2hvdyBoYWxmIHRoZSBjb2x1bW5zXG5cbiAgICByZXR1cm4gZGlzcGxheWVkQ29sdW1ucy5sZW5ndGggLyAyO1xuICB9KTtcblxuICByZWFkb25seSB0cmFja0J5RnVuY3Rpb24kOiBPYnNlcnZhYmxlPFRyYWNrQnlGdW5jdGlvbjxUPj4gPSB0aGlzLnRhYmxlU3RvcmUudmlld0RlbGVnYXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC50cmFja0J5ID8/IHRoaXMuREVGQVVMVF9UUkFDS19CWV9GVU5DVElPTiksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dFRyYWNrQnlGdW5jdGlvblNpZ25hbCA9IHRvU2lnbmFsKHRoaXMudHJhY2tCeUZ1bmN0aW9uJCwgeyBpbml0aWFsVmFsdWU6IHRoaXMuREVGQVVMVF9UUkFDS19CWV9GVU5DVElPTiB9KTtcbiAgcmVhZG9ubHkgdHJhY2tFbGVtZW50QnlGdW5jdGlvblNpZ25hbDogU2lnbmFsPFRyYWNrQnlGdW5jdGlvbjxEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+Pj4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdHJhY2tCeUZ1bmN0aW9uID0gdGhpcy5pbnB1dFRyYWNrQnlGdW5jdGlvblNpZ25hbCgpIGFzIFRyYWNrQnlGdW5jdGlvbjxUPjtcblxuICAgIGNvbnN0IGZuOiBUcmFja0J5RnVuY3Rpb248RGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPj4gPSAoaW5kZXg6IG51bWJlciwgZWxlbWVudDogRGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPikgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2l0ZW0nKSB7XG4gICAgICAgIHJldHVybiBgaV8ke3RyYWNrQnlGdW5jdGlvbihpbmRleCwgZWxlbWVudC5pdGVtIGFzIFQpfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYGdfJHtlbGVtZW50Lmdyb3VwLmdyb3VwSWR9YDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZuO1xuICB9KTtcblxuICByZWFkb25seSBjb250ZXh0ID0gbG9hZGluZ1N0YXRlQ29udGV4dCh7IG9iczogdGhpcy50YWJsZVN0b3JlLmRhdGFTdGF0ZSQgfSk7XG4gIHJlYWRvbmx5IGRhdGFMb2FkaW5nQ29udGV4dCA9IGxvYWRpbmdTdGF0ZUNvbnRleHQoeyBvYnM6IHRoaXMuZWxlbWVudHNTdGF0ZSQgfSk7XG5cbiAgcmVhZG9ubHkgY29udGV4dFNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuY29udGV4dC5zdGF0ZSQpO1xuICByZWFkb25seSBkYXRhTG9hZGluZ0NvbnRleHRTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmRhdGFMb2FkaW5nQ29udGV4dC5zdGF0ZSQpO1xuXG4gIHJlYWRvbmx5IHZpZXdEZWxlZ2F0ZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMudGFibGVTdG9yZS52aWV3RGVsZWdhdGUkKTtcbiAgcmVhZG9ubHkgZWxlbWVudHNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmVsZW1lbnRzJCwgeyBpbml0aWFsVmFsdWU6IFtdIH0pO1xuXG4gIG9uU2Nyb2xsRG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlU3RvcmUubG9hZE1vcmUoKTtcbiAgfVxuXG4gIHNob3dJdGVtUm93KF86IG51bWJlciwgcm93OiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdy50eXBlID09PSAnaXRlbSc7XG4gIH1cblxuICBzaG93R3JvdXBIZWFkZXJSb3coXzogbnVtYmVyLCByb3c6IERieFRhYmxlVmlld0VsZW1lbnQ8VCwgRz4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09ICdncm91cCcgJiYgcm93LmxvY2F0aW9uID09PSAnaGVhZGVyJztcbiAgfVxuXG4gIHNob3dHcm91cEZvb3RlclJvdyhfOiBudW1iZXIsIHJvdzogRGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiByb3cudHlwZSA9PT0gJ2dyb3VwJyAmJiByb3cubG9jYXRpb24gPT09ICdmb290ZXInO1xuICB9XG5cbiAgcmVhZG9ubHkgc2hvd0Zvb3RlclJvd1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2aWV3RGVsZWdhdGUgPSB0aGlzLnZpZXdEZWxlZ2F0ZVNpZ25hbCgpO1xuICAgIGNvbnN0IHNob3dGb290ZXJSb3cgPSB2aWV3RGVsZWdhdGUgJiYgKHZpZXdEZWxlZ2F0ZS5zdW1tYXJ5Um93SGVhZGVyICE9IG51bGwgfHwgdmlld0RlbGVnYXRlLmNvbHVtbkZvb3RlciAhPSBudWxsIHx8IHZpZXdEZWxlZ2F0ZS5zdW1tYXJ5Um93RW5kICE9IG51bGwpO1xuICAgIHJldHVybiBzaG93Rm9vdGVyUm93O1xuICB9KTtcblxuICByZWFkb25seSBzaG93RnVsbFN1bW1hcnlSb3dTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgdmlld0RlbGVnYXRlID0gdGhpcy52aWV3RGVsZWdhdGVTaWduYWwoKTtcbiAgICByZXR1cm4gdmlld0RlbGVnYXRlPy5mdWxsU3VtbWFyeVJvdyAhPSBudWxsO1xuICB9KTtcbn1cbiIsIjxkYngtbG9hZGluZyBbY29udGV4dF09XCJjb250ZXh0XCI+XG4gIDxkYngtbG9hZGluZyBjbGFzcz1cImRieC10YWJsZS12aWV3LWxvYWRpbmdcIiBbbGluZWFyXT1cInRydWVcIiBbY29udGV4dF09XCJkYXRhTG9hZGluZ0NvbnRleHRcIj48L2RieC1sb2FkaW5nPlxuICA8c2VjdGlvbiBjbGFzcz1cImRieC10YWJsZS12aWV3XCIgZGJ4LWNvbHVtbi1zaXplICNjb2x1bW5TaXplPVwiZGJ4Q29sdW1uU2l6ZVwiIGluZmluaXRlLXNjcm9sbCBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCJzY3JvbGxEaXN0YW5jZSgpXCIgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwidGhyb3R0bGVTY3JvbGwoKVwiIFtzY3JvbGxXaW5kb3ddPVwiZmFsc2VcIiAoc2Nyb2xsZWQpPVwib25TY3JvbGxEb3duKClcIj5cbiAgICA8dGFibGUgY2xhc3M9XCJkYngtdGFibGUtdmlldy10YWJsZVwiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJlbGVtZW50c1NpZ25hbCgpXCIgW3RyYWNrQnldPVwidHJhY2tFbGVtZW50QnlGdW5jdGlvblNpZ25hbCgpXCIgbXVsdGlUZW1wbGF0ZURhdGFSb3dzPlxuICAgICAgPCEtLSBHcm91cHMgLS0+XG4gICAgICA8IS0tIEdyb3VwIEhlYWRlciBjb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImdyb3VwSGVhZGVyQ29sdW1uXCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtblNpemUudmlzaWJsZUNvbHVtbnNTaWduYWwoKVwiICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWdyb3VwLWhlYWRlciBbZ3JvdXBdPVwiZWxlbWVudC5ncm91cFwiPjwvZGJ4LXRhYmxlLWdyb3VwLWhlYWRlcj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEdyb3VwIEZvb3RlciBjb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImdyb3VwRm9vdGVyQ29sdW1uXCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtblNpemUudmlzaWJsZUNvbHVtbnNTaWduYWwoKVwiICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWdyb3VwLWZvb3RlciBbZ3JvdXBdPVwiZWxlbWVudC5ncm91cFwiPjwvZGJ4LXRhYmxlLWdyb3VwLWZvb3Rlcj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEl0ZW1zIC0tPlxuICAgICAgPCEtLSBIZWFkZXIvSXRlbSBjb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiaXRlbXNDb2x1bW5OYW1lXCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgIDx0aCBkYngtY29sdW1uLXNpemUtY29sdW1uPVwiaGVhZFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWlucHV0LWNlbGw+PC9kYngtdGFibGUtaW5wdXQtY2VsbD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWl0ZW0taGVhZGVyIFtpdGVtXT1cImVsZW1lbnQuaXRlbVwiPjwvZGJ4LXRhYmxlLWl0ZW0taGVhZGVyPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxuICAgICAgICAgIDxkYngtdGFibGUtc3VtbWFyeS1zdGFydC1jZWxsPjwvZGJ4LXRhYmxlLXN1bW1hcnktc3RhcnQtY2VsbD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIENvbHVtbiBEZWZpbml0aW9ucyAtLT5cbiAgICAgIEBmb3IgKGNvbHVtbiBvZiBpbm5lckNvbHVtbnNTaWduYWwoKTsgdHJhY2sgY29sdW1uLmNvbHVtbk5hbWUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5jb2x1bW5OYW1lXCIgW3N0aWNreV09XCJmYWxzZVwiPlxuICAgICAgICAgIDx0aCBbZGJ4LWNvbHVtbi1zaXplLWNvbHVtbl09XCIkaW5kZXhcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICA8ZGJ4LXRhYmxlLWNvbHVtbi1oZWFkZXIgW2NvbHVtbl09XCJjb2x1bW5cIj48L2RieC10YWJsZS1jb2x1bW4taGVhZGVyPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxkYngtdGFibGUtaXRlbS1jZWxsIFtpdGVtXT1cImVsZW1lbnQuaXRlbVwiIFtjb2x1bW5dPVwiY29sdW1uXCI+PC9kYngtdGFibGUtaXRlbS1jZWxsPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cbiAgICAgICAgICAgIDxkYngtdGFibGUtY29sdW1uLWZvb3RlciBbY29sdW1uXT1cImNvbHVtblwiPjwvZGJ4LXRhYmxlLWNvbHVtbi1mb290ZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gVGFpbC9BY3Rpb24gY29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImFjdGlvbnNDb2x1bW5OYW1lXCIgW3N0aWNreUVuZF09XCJ0cnVlXCI+XG4gICAgICAgIDx0aCBkYngtY29sdW1uLXNpemUtY29sdW1uPVwidGFpbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWFjdGlvbi1jZWxsPjwvZGJ4LXRhYmxlLWFjdGlvbi1jZWxsPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgIDxkYngtdGFibGUtaXRlbS1hY3Rpb24gW2l0ZW1dPVwiZWxlbWVudC5pdGVtXCI+PC9kYngtdGFibGUtaXRlbS1hY3Rpb24+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XG4gICAgICAgICAgPGRieC10YWJsZS1zdW1tYXJ5LWVuZC1jZWxsPjwvZGJ4LXRhYmxlLXN1bW1hcnktZW5kLWNlbGw+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBUYWJsZSBWaWV3IC0tPlxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zU2lnbmFsKCk7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG5cbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2dyb3VwSGVhZGVyQ29sdW1uJ107IHdoZW46IHNob3dHcm91cEhlYWRlclJvd1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1NpZ25hbCgpOyB3aGVuOiBzaG93SXRlbVJvd1wiPjwvdHI+XG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydncm91cEZvb3RlckNvbHVtbiddOyB3aGVuOiBzaG93R3JvdXBGb290ZXJSb3dcIj48L3RyPlxuXG4gICAgICA8dHIgW25nQ2xhc3NdPVwieyAnZGJ4LWhpZGUnOiAhc2hvd0Zvb3RlclJvd1NpZ25hbCgpIH1cIiBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1NpZ25hbCgpOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgIDwvdGFibGU+XG4gIDwvc2VjdGlvbj5cbiAgPCEtLSBGdWxsIHN1bW1hcnkgcm93IC0tPlxuICBAaWYgKHNob3dGdWxsU3VtbWFyeVJvd1NpZ25hbCgpKSB7XG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtdGFibGUgZGJ4LXRhYmxlLXZpZXctZnVsbC1zdW1tYXJ5LXJvdy1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZGMtZGF0YS10YWJsZV9fY2VsbCBtYXQtbWRjLXJvd1wiPlxuICAgICAgICA8ZGJ4LXRhYmxlLWZ1bGwtc3VtbWFyeS1yb3c+PC9kYngtdGFibGUtZnVsbC1zdW1tYXJ5LXJvdz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG48L2RieC1sb2FkaW5nPlxuIl19
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi90YWJsZS9zcmMvbGliL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC13ZWIvdGFibGUvc3JjL2xpYi90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFtQixNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBZ0IsbUJBQW1CLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx5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LElBQUksQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQzt3R0F4SlEscUJBQXFCOzRGQUFyQixxQkFBcUIsK1dBVHJCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLDhDQUE4QztnQkFDdkQsV0FBVyxFQUFFLFVBQVU7YUFDeEI7U0FDRixpRUFNd0UsUUFBUSxnRUN2Rm5GLHFnSUFnRkEsNENEdkJJLG1CQUFtQixtS0FDbkIsT0FBTyxvRkFDUCx1QkFBdUIseVdBQ3ZCLGNBQWMsMDdDQUNkLDBCQUEwQixpRUFDMUIsMkJBQTJCLGtFQUMzQix5QkFBeUIsb0ZBQ3pCLDJCQUEyQixrRUFDM0IsMkJBQTJCLGtFQUMzQiw2QkFBNkIsb0VBQzdCLDZCQUE2QixvRUFDN0IsaUNBQWlDLHlFQUNqQywrQkFBK0IsdUVBQy9CLDRCQUE0QixtRUFDNUIsNEJBQTRCLG1FQUM1QiwrQkFBK0IsdUVBQy9CLDJCQUEyQixzR0FDM0IsNEJBQTRCOzs0RkFXbkIscUJBQXFCO2tCQWhDakMsU0FBUzsrQkFDRSxnQkFBZ0IsV0FFakI7d0JBQ1AsbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLHVCQUF1Qjt3QkFDdkIsY0FBYzt3QkFDZCwwQkFBMEI7d0JBQzFCLDJCQUEyQjt3QkFDM0IseUJBQXlCO3dCQUN6QiwyQkFBMkI7d0JBQzNCLDJCQUEyQjt3QkFDM0IsNkJBQTZCO3dCQUM3Qiw2QkFBNkI7d0JBQzdCLGlDQUFpQzt3QkFDakMsK0JBQStCO3dCQUMvQiw0QkFBNEI7d0JBQzVCLDRCQUE0Qjt3QkFDNUIsK0JBQStCO3dCQUMvQiwyQkFBMkI7d0JBQzNCLDRCQUE0QjtxQkFDN0IsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsOENBQThDOzRCQUN2RCxXQUFXLEVBQUUsVUFBVTt5QkFDeEI7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFRyYWNrQnlGdW5jdGlvbiwgaW5qZWN0LCBjb21wdXRlZCwgaW5wdXQsIFNpZ25hbCwgdmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IERieFRhYmxlU3RvcmUgfSBmcm9tICcuL3RhYmxlLnN0b3JlJztcbmltcG9ydCB7IExvYWRpbmdTdGF0ZSwgbG9hZGluZ1N0YXRlQ29udGV4dCwgbWFwTG9hZGluZ1N0YXRlVmFsdWVXaXRoT3BlcmF0b3IsIHZhbHVlRnJvbUZpbmlzaGVkTG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGJ4TG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICduZ3gtaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IE1hdFRhYmxlLCBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IERieFRhYmxlSW5wdXRDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jZWxsLmlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhUYWJsZVN1bW1hcnlFbmRDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jZWxsLnN1bW1hcnllbmQuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlU3VtbWFyeVN0YXJ0Q2VsbENvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuY2VsbC5zdW1tYXJ5c3RhcnQuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlQ29sdW1uRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jb2x1bW4uZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhUYWJsZUl0ZW1DZWxsQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5pdGVtLmNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlSXRlbUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuaXRlbS5oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlSXRlbUFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuaXRlbS5hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlQWN0aW9uQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuY2VsbC5hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlQ29sdW1uSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jb2x1bW4uaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhUYWJsZUl0ZW1Hcm91cCwgRGVmYXVsdERieFRhYmxlSXRlbUdyb3VwIH0gZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQgeyBEYnhUYWJsZUdyb3VwSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5ncm91cC5oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlR3JvdXBGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmdyb3VwLmZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgcHVzaEFycmF5SXRlbXNJbnRvQXJyYXkgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGJ4VGFibGVGdWxsU3VtbWFyeVJvd0NvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuZnVsbHN1bW1hcnlyb3cuY29tcG9uZW50JztcbmltcG9ydCB7IERieFRhYmxlQ29sdW1uU2l6ZURpcmVjdGl2ZSwgRGJ4Q29sdW1uU2l6ZUNvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4vdGFibGUuY29sdW1uLnNpemUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERCWF9UQUJMRV9DT0xVTU5fU0laRV9QQVJFTlRfRUxFTUVOVF9SRUZfVE9LRU4gfSBmcm9tICcuL3RhYmxlLmNvbHVtbi5zaXplJztcblxuZXhwb3J0IGNvbnN0IERCWF9UQUJMRV9JVEVNU19DT0xVTU5fTkFNRSA9ICdfaXRlbXMnO1xuZXhwb3J0IGNvbnN0IERCWF9UQUJMRV9BQ1RJT05TX0NPTFVNTl9OQU1FID0gJ19hY3Rpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhUYWJsZVZpZXdHcm91cEVsZW1lbnQ8VCwgRz4ge1xuICByZWFkb25seSB0eXBlOiAnZ3JvdXAnO1xuICByZWFkb25seSBsb2NhdGlvbjogJ2hlYWRlcicgfCAnZm9vdGVyJztcbiAgcmVhZG9ubHkgZ3JvdXA6IERieFRhYmxlSXRlbUdyb3VwPFQsIEc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERieFRhYmxlVmlld0l0ZW1FbGVtZW50PFQsIEc+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ2l0ZW0nO1xuICByZWFkb25seSBpdGVtOiBUO1xufVxuXG5leHBvcnQgdHlwZSBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+ID0gRGJ4VGFibGVWaWV3R3JvdXBFbGVtZW50PFQsIEc+IHwgRGJ4VGFibGVWaWV3SXRlbUVsZW1lbnQ8VCwgRz47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RieFRhYmxlVmlld0dyb3VwRWxlbWVudDxULCBHPihlbGVtZW50OiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+KTogZWxlbWVudCBpcyBEYnhUYWJsZVZpZXdHcm91cEVsZW1lbnQ8VCwgRz4ge1xuICByZXR1cm4gZWxlbWVudC50eXBlID09PSAnZ3JvdXAnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYnhUYWJsZVZpZXdJdGVtRWxlbWVudDxULCBHPihlbGVtZW50OiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+KTogZWxlbWVudCBpcyBEYnhUYWJsZVZpZXdJdGVtRWxlbWVudDxULCBHPiB7XG4gIHJldHVybiBlbGVtZW50LnR5cGUgPT09ICdpdGVtJztcbn1cblxuLyoqXG4gKiBBIHRhYmxlIHdpdGggZml4ZWQgY29udGVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtdGFibGUtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtcbiAgICBEYnhMb2FkaW5nQ29tcG9uZW50LFxuICAgIE5nQ2xhc3MsXG4gICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgRGJ4VGFibGVJbnB1dENlbGxDb21wb25lbnQsXG4gICAgRGJ4VGFibGVJdGVtSGVhZGVyQ29tcG9uZW50LFxuICAgIERieFRhYmxlSXRlbUNlbGxDb21wb25lbnQsXG4gICAgRGJ4VGFibGVJdGVtQWN0aW9uQ29tcG9uZW50LFxuICAgIERieFRhYmxlQWN0aW9uQ2VsbENvbXBvbmVudCxcbiAgICBEYnhUYWJsZUNvbHVtbkhlYWRlckNvbXBvbmVudCxcbiAgICBEYnhUYWJsZUNvbHVtbkZvb3RlckNvbXBvbmVudCxcbiAgICBEYnhUYWJsZVN1bW1hcnlTdGFydENlbGxDb21wb25lbnQsXG4gICAgRGJ4VGFibGVTdW1tYXJ5RW5kQ2VsbENvbXBvbmVudCxcbiAgICBEYnhUYWJsZUdyb3VwSGVhZGVyQ29tcG9uZW50LFxuICAgIERieFRhYmxlR3JvdXBGb290ZXJDb21wb25lbnQsXG4gICAgRGJ4VGFibGVGdWxsU3VtbWFyeVJvd0NvbXBvbmVudCxcbiAgICBEYnhUYWJsZUNvbHVtblNpemVEaXJlY3RpdmUsXG4gICAgRGJ4Q29sdW1uU2l6ZUNvbHVtbkRpcmVjdGl2ZVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBEQlhfVEFCTEVfQ09MVU1OX1NJWkVfUEFSRU5UX0VMRU1FTlRfUkVGX1RPS0VOLFxuICAgICAgdXNlRXhpc3Rpbmc6IEVsZW1lbnRSZWZcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieFRhYmxlVmlld0NvbXBvbmVudDxJLCBDLCBULCBHID0gdW5rbm93bj4ge1xuICByZWFkb25seSB0YWJsZVN0b3JlID0gaW5qZWN0KERieFRhYmxlU3RvcmU8SSwgQywgVCwgRz4pO1xuICByZWFkb25seSB0YWJsZSA9IHZpZXdDaGlsZC5yZXF1aXJlZDxNYXRUYWJsZTxEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+Pj4oTWF0VGFibGUpO1xuXG4gIHJlYWRvbmx5IERFRkFVTFRfVFJBQ0tfQllfRlVOQ1RJT046IFRyYWNrQnlGdW5jdGlvbjxhbnk+ID0gKGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9O1xuXG4gIHJlYWRvbmx5IHNjcm9sbERpc3RhbmNlID0gaW5wdXQ8bnVtYmVyPigwLjUpO1xuICByZWFkb25seSB0aHJvdHRsZVNjcm9sbCA9IGlucHV0PG51bWJlcj4oNTApO1xuXG4gIHJlYWRvbmx5IGl0ZW1zQ29sdW1uTmFtZSA9IERCWF9UQUJMRV9JVEVNU19DT0xVTU5fTkFNRTtcbiAgcmVhZG9ubHkgYWN0aW9uc0NvbHVtbk5hbWUgPSBEQlhfVEFCTEVfQUNUSU9OU19DT0xVTU5fTkFNRTtcblxuICByZWFkb25seSBpbm5lckNvbHVtbnMkID0gdGhpcy50YWJsZVN0b3JlLmNvbHVtbnMkO1xuICByZWFkb25seSBpbm5lckNvbHVtbk5hbWVzJCA9IHRoaXMuaW5uZXJDb2x1bW5zJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5tYXAoKHkpID0+IHkuY29sdW1uTmFtZSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5uZXJDb2x1bW5zU2lnbmFsID0gdG9TaWduYWwodGhpcy5pbm5lckNvbHVtbnMkKTtcbiAgcmVhZG9ubHkgaW5uZXJDb2x1bW5OYW1lc1NpZ25hbCA9IHRvU2lnbmFsKHRoaXMuaW5uZXJDb2x1bW5OYW1lcyQpO1xuXG4gIHJlYWRvbmx5IGVsZW1lbnRzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+W10+PiA9IHRoaXMudGFibGVTdG9yZS5ncm91cHNTdGF0ZSQucGlwZShcbiAgICBtYXBMb2FkaW5nU3RhdGVWYWx1ZVdpdGhPcGVyYXRvcihcbiAgICAgIHN3aXRjaE1hcCgoZ3JvdXBzKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlU3RvcmUudmlld0RlbGVnYXRlJC5waXBlKFxuICAgICAgICAgIG1hcCgodmlld0RlbGVnYXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGdyb3VwSGVhZGVyOiBpbnB1dEdyb3VwSGVhZGVyLCBncm91cEZvb3RlcjogaW5wdXRHcm91cEZvb3RlciB9ID0gdmlld0RlbGVnYXRlO1xuICAgICAgICAgICAgY29uc3QgaGFzR3JvdXBIZWFkZXIgPSBpbnB1dEdyb3VwSGVhZGVyICE9IG51bGwgPyAoZ3JvdXA6IERieFRhYmxlSXRlbUdyb3VwPFQsIEc+KSA9PiBpbnB1dEdyb3VwSGVhZGVyKGdyb3VwKSAhPSBudWxsIDogKCkgPT4gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBoYXNHcm91cEZvb3RlciA9IGlucHV0R3JvdXBGb290ZXIgIT0gbnVsbCA/IChncm91cDogRGJ4VGFibGVJdGVtR3JvdXA8VCwgRz4pID0+IGlucHV0R3JvdXBGb290ZXIoZ3JvdXApICE9IG51bGwgOiAoKSA9PiBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuIGdyb3Vwc1xuICAgICAgICAgICAgICAubWFwKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgaXRlbXMgfSA9IGdyb3VwO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUVsZW1lbnRzOiBEYnhUYWJsZVZpZXdJdGVtRWxlbWVudDxULCBHPltdID0gaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ2l0ZW0nLFxuICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50czogRGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPltdO1xuXG4gICAgICAgICAgICAgICAgaWYgKChncm91cCBhcyBEZWZhdWx0RGJ4VGFibGVJdGVtR3JvdXA8VCwgRz4pLmRlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gaXRlbUVsZW1lbnRzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXIgPSBoYXNHcm91cEhlYWRlcihncm91cCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmb290ZXIgPSBoYXNHcm91cEZvb3Rlcihncm91cCk7XG5cbiAgICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gW107XG5cbiAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2dyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2hlYWRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHB1c2hBcnJheUl0ZW1zSW50b0FycmF5KGVsZW1lbnRzLCBpdGVtRWxlbWVudHMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoZm9vdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246ICdmb290ZXInLFxuICAgICAgICAgICAgICAgICAgICAgIGdyb3VwXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50cztcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZsYXQoKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZWxlbWVudHMkID0gdGhpcy5lbGVtZW50c1N0YXRlJC5waXBlKFxuICAgIHZhbHVlRnJvbUZpbmlzaGVkTG9hZGluZ1N0YXRlKCgpID0+IFtdKSxcbiAgICB0aHJvdHRsZVRpbWUoNTAsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiB0cnVlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMkID0gdGhpcy5pbm5lckNvbHVtbk5hbWVzJC5waXBlKFxuICAgIG1hcCgoY29sdW1uTmFtZXMpID0+IHtcbiAgICAgIHJldHVybiBbdGhpcy5pdGVtc0NvbHVtbk5hbWUsIC4uLmNvbHVtbk5hbWVzLCB0aGlzLmFjdGlvbnNDb2x1bW5OYW1lXTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnNTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29sdW1uTmFtZXMgPSB0aGlzLmlubmVyQ29sdW1uTmFtZXNTaWduYWwoKSB8fCBbXTtcbiAgICByZXR1cm4gW3RoaXMuaXRlbXNDb2x1bW5OYW1lLCAuLi5jb2x1bW5OYW1lcywgdGhpcy5hY3Rpb25zQ29sdW1uTmFtZV07XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHRyYWNrQnlGdW5jdGlvbiQ6IE9ic2VydmFibGU8VHJhY2tCeUZ1bmN0aW9uPFQ+PiA9IHRoaXMudGFibGVTdG9yZS52aWV3RGVsZWdhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LnRyYWNrQnkgPz8gdGhpcy5ERUZBVUxUX1RSQUNLX0JZX0ZVTkNUSU9OKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0VHJhY2tCeUZ1bmN0aW9uU2lnbmFsID0gdG9TaWduYWwodGhpcy50cmFja0J5RnVuY3Rpb24kLCB7IGluaXRpYWxWYWx1ZTogdGhpcy5ERUZBVUxUX1RSQUNLX0JZX0ZVTkNUSU9OIH0pO1xuICByZWFkb25seSB0cmFja0VsZW1lbnRCeUZ1bmN0aW9uU2lnbmFsOiBTaWduYWw8VHJhY2tCeUZ1bmN0aW9uPERieFRhYmxlVmlld0VsZW1lbnQ8VCwgRz4+PiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0cmFja0J5RnVuY3Rpb24gPSB0aGlzLmlucHV0VHJhY2tCeUZ1bmN0aW9uU2lnbmFsKCkgYXMgVHJhY2tCeUZ1bmN0aW9uPFQ+O1xuXG4gICAgY29uc3QgZm46IFRyYWNrQnlGdW5jdGlvbjxEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+PiA9IChpbmRleDogbnVtYmVyLCBlbGVtZW50OiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnaXRlbScpIHtcbiAgICAgICAgcmV0dXJuIGBpXyR7dHJhY2tCeUZ1bmN0aW9uKGluZGV4LCBlbGVtZW50Lml0ZW0gYXMgVCl9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBgZ18ke2VsZW1lbnQuZ3JvdXAuZ3JvdXBJZH1gO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gZm47XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGNvbnRleHQgPSBsb2FkaW5nU3RhdGVDb250ZXh0KHsgb2JzOiB0aGlzLnRhYmxlU3RvcmUuZGF0YVN0YXRlJCB9KTtcbiAgcmVhZG9ubHkgZGF0YUxvYWRpbmdDb250ZXh0ID0gbG9hZGluZ1N0YXRlQ29udGV4dCh7IG9iczogdGhpcy5lbGVtZW50c1N0YXRlJCB9KTtcblxuICByZWFkb25seSBjb250ZXh0U2lnbmFsID0gdG9TaWduYWwodGhpcy5jb250ZXh0LnN0YXRlJCk7XG4gIHJlYWRvbmx5IGRhdGFMb2FkaW5nQ29udGV4dFNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuZGF0YUxvYWRpbmdDb250ZXh0LnN0YXRlJCk7XG5cbiAgcmVhZG9ubHkgdmlld0RlbGVnYXRlU2lnbmFsID0gdG9TaWduYWwodGhpcy50YWJsZVN0b3JlLnZpZXdEZWxlZ2F0ZSQpO1xuICByZWFkb25seSBlbGVtZW50c1NpZ25hbCA9IHRvU2lnbmFsKHRoaXMuZWxlbWVudHMkLCB7IGluaXRpYWxWYWx1ZTogW10gfSk7XG5cbiAgb25TY3JvbGxEb3duKCk6IHZvaWQge1xuICAgIHRoaXMudGFibGVTdG9yZS5sb2FkTW9yZSgpO1xuICB9XG5cbiAgc2hvd0l0ZW1Sb3coXzogbnVtYmVyLCByb3c6IERieFRhYmxlVmlld0VsZW1lbnQ8VCwgRz4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09ICdpdGVtJztcbiAgfVxuXG4gIHNob3dHcm91cEhlYWRlclJvdyhfOiBudW1iZXIsIHJvdzogRGJ4VGFibGVWaWV3RWxlbWVudDxULCBHPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiByb3cudHlwZSA9PT0gJ2dyb3VwJyAmJiByb3cubG9jYXRpb24gPT09ICdoZWFkZXInO1xuICB9XG5cbiAgc2hvd0dyb3VwRm9vdGVyUm93KF86IG51bWJlciwgcm93OiBEYnhUYWJsZVZpZXdFbGVtZW50PFQsIEc+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdy50eXBlID09PSAnZ3JvdXAnICYmIHJvdy5sb2NhdGlvbiA9PT0gJ2Zvb3Rlcic7XG4gIH1cblxuICByZWFkb25seSBzaG93Rm9vdGVyUm93U2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdEZWxlZ2F0ZSA9IHRoaXMudmlld0RlbGVnYXRlU2lnbmFsKCk7XG4gICAgY29uc3Qgc2hvd0Zvb3RlclJvdyA9IHZpZXdEZWxlZ2F0ZSAmJiAodmlld0RlbGVnYXRlLnN1bW1hcnlSb3dIZWFkZXIgIT0gbnVsbCB8fCB2aWV3RGVsZWdhdGUuY29sdW1uRm9vdGVyICE9IG51bGwgfHwgdmlld0RlbGVnYXRlLnN1bW1hcnlSb3dFbmQgIT0gbnVsbCk7XG4gICAgcmV0dXJuIHNob3dGb290ZXJSb3c7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNob3dGdWxsU3VtbWFyeVJvd1NpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2aWV3RGVsZWdhdGUgPSB0aGlzLnZpZXdEZWxlZ2F0ZVNpZ25hbCgpO1xuICAgIHJldHVybiB2aWV3RGVsZWdhdGU/LmZ1bGxTdW1tYXJ5Um93ICE9IG51bGw7XG4gIH0pO1xufVxuIiwiPGRieC1sb2FkaW5nIFtjb250ZXh0XT1cImNvbnRleHRcIj5cbiAgPGRieC1sb2FkaW5nIGNsYXNzPVwiZGJ4LXRhYmxlLXZpZXctbG9hZGluZ1wiIFtsaW5lYXJdPVwidHJ1ZVwiIFtjb250ZXh0XT1cImRhdGFMb2FkaW5nQ29udGV4dFwiPjwvZGJ4LWxvYWRpbmc+XG4gIDxzZWN0aW9uIGNsYXNzPVwiZGJ4LXRhYmxlLXZpZXdcIiBkYngtdGFibGUtY29sdW1uLXNpemUgI2NvbHVtblNpemU9XCJkYnhUYWJsZUNvbHVtblNpemVcIiBpbmZpbml0ZS1zY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwic2Nyb2xsRGlzdGFuY2UoKVwiIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cInRocm90dGxlU2Nyb2xsKClcIiBbc2Nyb2xsV2luZG93XT1cImZhbHNlXCIgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsRG93bigpXCI+XG4gICAgPHRhYmxlIGNsYXNzPVwiZGJ4LXRhYmxlLXZpZXctdGFibGVcIiBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZWxlbWVudHNTaWduYWwoKVwiIFt0cmFja0J5XT1cInRyYWNrRWxlbWVudEJ5RnVuY3Rpb25TaWduYWwoKVwiIG11bHRpVGVtcGxhdGVEYXRhUm93cz5cbiAgICAgIDwhLS0gR3JvdXBzIC0tPlxuICAgICAgPCEtLSBHcm91cCBIZWFkZXIgY29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJncm91cEhlYWRlckNvbHVtblwiIFtzdGlja3ldPVwidHJ1ZVwiPlxuICAgICAgICA8dGQgbWF0LWNlbGwgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5TaXplLnZpc2libGVDb2x1bW5zU2lnbmFsKClcIiAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGRieC10YWJsZS1ncm91cC1oZWFkZXIgW2dyb3VwXT1cImVsZW1lbnQuZ3JvdXBcIj48L2RieC10YWJsZS1ncm91cC1oZWFkZXI+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBHcm91cCBGb290ZXIgY29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJncm91cEZvb3RlckNvbHVtblwiIFtzdGlja3ldPVwidHJ1ZVwiPlxuICAgICAgICA8dGQgbWF0LWNlbGwgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5TaXplLnZpc2libGVDb2x1bW5zU2lnbmFsKClcIiAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGRieC10YWJsZS1ncm91cC1mb290ZXIgW2dyb3VwXT1cImVsZW1lbnQuZ3JvdXBcIj48L2RieC10YWJsZS1ncm91cC1mb290ZXI+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBJdGVtcyAtLT5cbiAgICAgIDwhLS0gSGVhZGVyL0l0ZW0gY29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cIml0ZW1zQ29sdW1uTmFtZVwiIFtzdGlja3ldPVwidHJ1ZVwiPlxuICAgICAgICA8dGggZGJ4LWNvbHVtbi1zaXplLWNvbHVtbj1cImhlYWRcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgPGRieC10YWJsZS1pbnB1dC1jZWxsPjwvZGJ4LXRhYmxlLWlucHV0LWNlbGw+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgPGRieC10YWJsZS1pdGVtLWhlYWRlciBbaXRlbV09XCJlbGVtZW50Lml0ZW1cIj48L2RieC10YWJsZS1pdGVtLWhlYWRlcj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLXN1bW1hcnktc3RhcnQtY2VsbD48L2RieC10YWJsZS1zdW1tYXJ5LXN0YXJ0LWNlbGw+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBDb2x1bW4gRGVmaW5pdGlvbnMgLS0+XG4gICAgICBAZm9yIChjb2x1bW4gb2YgaW5uZXJDb2x1bW5zU2lnbmFsKCk7IHRyYWNrIGNvbHVtbi5jb2x1bW5OYW1lKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uY29sdW1uTmFtZVwiIFtzdGlja3ldPVwiZmFsc2VcIj5cbiAgICAgICAgICA8dGggW2RieC1jb2x1bW4tc2l6ZS1jb2x1bW5dPVwiJGluZGV4XCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgPGRieC10YWJsZS1jb2x1bW4taGVhZGVyIFtjb2x1bW5dPVwiY29sdW1uXCI+PC9kYngtdGFibGUtY29sdW1uLWhlYWRlcj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgICA8ZGJ4LXRhYmxlLWl0ZW0tY2VsbCBbaXRlbV09XCJlbGVtZW50Lml0ZW1cIiBbY29sdW1uXT1cImNvbHVtblwiPjwvZGJ4LXRhYmxlLWl0ZW0tY2VsbD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XG4gICAgICAgICAgICA8ZGJ4LXRhYmxlLWNvbHVtbi1mb290ZXIgW2NvbHVtbl09XCJjb2x1bW5cIj48L2RieC10YWJsZS1jb2x1bW4tZm9vdGVyPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgfVxuXG4gICAgICA8IS0tIFRhaWwvQWN0aW9uIGNvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJhY3Rpb25zQ29sdW1uTmFtZVwiIFtzdGlja3lFbmRdPVwidHJ1ZVwiPlxuICAgICAgICA8dGggZGJ4LWNvbHVtbi1zaXplLWNvbHVtbj1cInRhaWxcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgPGRieC10YWJsZS1hY3Rpb24tY2VsbD48L2RieC10YWJsZS1hY3Rpb24tY2VsbD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICA8ZGJ4LXRhYmxlLWl0ZW0tYWN0aW9uIFtpdGVtXT1cImVsZW1lbnQuaXRlbVwiPjwvZGJ4LXRhYmxlLWl0ZW0tYWN0aW9uPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxuICAgICAgICAgIDxkYngtdGFibGUtc3VtbWFyeS1lbmQtY2VsbD48L2RieC10YWJsZS1zdW1tYXJ5LWVuZC1jZWxsPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gVGFibGUgVmlldyAtLT5cbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1NpZ25hbCgpOyBzdGlja3k6IHRydWVcIj48L3RyPlxuXG4gICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydncm91cEhlYWRlckNvbHVtbiddOyB3aGVuOiBzaG93R3JvdXBIZWFkZXJSb3dcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNTaWduYWwoKTsgd2hlbjogc2hvd0l0ZW1Sb3dcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZ3JvdXBGb290ZXJDb2x1bW4nXTsgd2hlbjogc2hvd0dyb3VwRm9vdGVyUm93XCI+PC90cj5cblxuICAgICAgPHRyIFtuZ0NsYXNzXT1cInsgJ2RieC1oaWRlJzogIXNob3dGb290ZXJSb3dTaWduYWwoKSB9XCIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNTaWduYWwoKTsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICA8L3RhYmxlPlxuICA8L3NlY3Rpb24+XG4gIDwhLS0gRnVsbCBzdW1tYXJ5IHJvdyAtLT5cbiAgQGlmIChzaG93RnVsbFN1bW1hcnlSb3dTaWduYWwoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJtYXQtbWRjLXRhYmxlIGRieC10YWJsZS12aWV3LWZ1bGwtc3VtbWFyeS1yb3ctY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWRjLWRhdGEtdGFibGVfX2NlbGwgbWF0LW1kYy1yb3dcIj5cbiAgICAgICAgPGRieC10YWJsZS1mdWxsLXN1bW1hcnktcm93PjwvZGJ4LXRhYmxlLWZ1bGwtc3VtbWFyeS1yb3c+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kYngtbG9hZGluZz5cbiJdfQ==
|