@one-paragon/angular-utilities 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +7 -7
- package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +5 -5
- package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +6 -6
- package/esm2022/action-state/ngrx.mjs +6 -1
- package/esm2022/http-request-state/HttpRequestStateFactory.mjs +6 -7
- package/esm2022/http-request-state/HttpRequestStateStore.mjs +41 -37
- package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +17 -21
- package/esm2022/http-request-state/directives/http-error-state-directive.mjs +12 -18
- package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +12 -18
- package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +12 -18
- package/esm2022/http-request-state/directives/http-success-state-directive.mjs +13 -18
- package/esm2022/http-request-state/directives/request-state-directive.mjs +20 -19
- package/esm2022/http-request-state/http-state-module.mjs +6 -6
- package/esm2022/ngrx/actionable-selector.mjs +12 -14
- package/esm2022/rxjs/subjectifier.mjs +6 -6
- package/esm2022/rxjs/subscriber.directive.mjs +11 -13
- package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +3 -1
- package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +10 -8
- package/esm2022/table-builder/classes/TableState.mjs +13 -15
- package/esm2022/table-builder/classes/table-builder-general-settings.mjs +46 -54
- package/esm2022/table-builder/classes/table-builder.mjs +4 -1
- package/esm2022/table-builder/classes/table-store.mjs +280 -282
- package/esm2022/table-builder/components/array-column.component.mjs +15 -19
- package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +44 -35
- package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +7 -7
- package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +7 -7
- package/esm2022/table-builder/components/filter/filter.component.mjs +24 -24
- package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +19 -18
- package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +15 -15
- package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +100 -86
- package/esm2022/table-builder/components/generic-table/paginator.component.mjs +20 -18
- package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +5 -7
- package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +24 -21
- package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +14 -13
- package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +11 -4
- package/esm2022/table-builder/components/link-column.component.mjs +19 -23
- package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +8 -8
- package/esm2022/table-builder/components/profiles-menu/profiles-menu.component.mjs +26 -28
- package/esm2022/table-builder/components/scroll-strategy.mjs +11 -7
- package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +31 -31
- package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +23 -22
- package/esm2022/table-builder/components/table-container/table-container.mjs +90 -80
- package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +49 -51
- package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +8 -10
- package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +17 -15
- package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +14 -14
- package/esm2022/table-builder/directives/custom-cell-directive.mjs +24 -20
- package/esm2022/table-builder/directives/multi-sort.directive.mjs +10 -10
- package/esm2022/table-builder/directives/resize-column.directive.mjs +13 -14
- package/esm2022/table-builder/directives/table-wrapper.directive.mjs +5 -7
- package/esm2022/table-builder/directives/tb-filter.directive.mjs +105 -110
- package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +124 -124
- package/esm2022/table-builder/pipes/column-total.pipe.mjs +4 -4
- package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +4 -4
- package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +10 -12
- package/esm2022/table-builder/pipes/key-display.mjs +8 -10
- package/esm2022/table-builder/services/export-to-csv.service.mjs +57 -63
- package/esm2022/table-builder/services/table-template-service.mjs +11 -8
- package/esm2022/table-builder/services/transform-creator.mjs +35 -40
- package/esm2022/table-builder/table-builder.module.mjs +7 -7
- package/esm2022/utilities/directives/auto-focus.directive.mjs +8 -10
- package/esm2022/utilities/directives/clickEmitterDirective.mjs +4 -4
- package/esm2022/utilities/directives/clickSubject.mjs +5 -4
- package/esm2022/utilities/directives/conditional-classes.directive.mjs +11 -11
- package/esm2022/utilities/directives/dialog-service.mjs +5 -7
- package/esm2022/utilities/directives/dialog.mjs +38 -39
- package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +7 -8
- package/esm2022/utilities/directives/prevent-enter.directive.mjs +4 -4
- package/esm2022/utilities/directives/stop-propagation.directive.mjs +4 -4
- package/esm2022/utilities/directives/styler.mjs +10 -11
- package/esm2022/utilities/directives/trim-whitespace.directive.mjs +7 -9
- package/esm2022/utilities/module.mjs +7 -7
- package/esm2022/utilities/pipes/function.pipe.mjs +4 -4
- package/esm2022/utilities/pipes/phone.pipe.mjs +4 -4
- package/esm2022/utilities/pipes/space-case.pipes.mjs +4 -4
- package/fesm2022/one-paragon-angular-utilities.mjs +1666 -1678
- package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
- package/http-request-state/HttpRequestStateStore.d.ts +2 -2
- package/http-request-state/directives/HttpStateDirectiveBase.d.ts +5 -7
- package/http-request-state/directives/http-error-state-directive.d.ts +1 -4
- package/http-request-state/directives/http-inProgress-state-directive.d.ts +3 -6
- package/http-request-state/directives/http-notStarted-state-directive.d.ts +1 -4
- package/http-request-state/directives/http-success-state-directive.d.ts +1 -6
- package/http-request-state/directives/request-state-directive.d.ts +0 -1
- package/package.json +8 -8
- package/rxjs/subjectifier.d.ts +0 -1
- package/table-builder/classes/TableBuilderDataSource.d.ts +0 -1
- package/table-builder/classes/table-store.d.ts +1 -2
- package/table-builder/components/column-builder/column-builder.component.d.ts +2 -6
- package/table-builder/components/filter/filter.component.d.ts +1 -2
- package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +0 -3
- package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +1 -2
- package/table-builder/components/generic-table/generic-table.component.d.ts +4 -4
- package/table-builder/components/generic-table/paginator.component.d.ts +0 -2
- package/table-builder/components/header-menu/header-menu.component.d.ts +1 -2
- package/table-builder/components/in-filter/in-filter.component.d.ts +1 -2
- package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +1 -2
- package/table-builder/components/sort-menu/sort-menu.component.d.ts +2 -3
- package/table-builder/components/table-container/table-container-imports.d.ts +1 -1
- package/table-builder/components/table-container/virtual-scroll-container.d.ts +0 -2
- package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +3 -3
- package/table-builder/directives/custom-cell-directive.d.ts +3 -3
- package/table-builder/directives/multi-sort.directive.d.ts +1 -2
- package/table-builder/directives/resize-column.directive.d.ts +1 -2
- package/table-builder/directives/tb-filter.directive.d.ts +19 -23
- package/table-builder/pipes/format-filter-value.pipe.d.ts +0 -2
- package/table-builder/pipes/key-display.d.ts +0 -1
- package/table-builder/services/export-to-csv.service.d.ts +0 -3
- package/table-builder/services/table-template-service.d.ts +1 -2
- package/table-builder/services/transform-creator.d.ts +0 -5
- package/utilities/directives/auto-focus.directive.d.ts +1 -2
- package/utilities/directives/conditional-classes.directive.d.ts +1 -2
- package/utilities/directives/dialog.d.ts +2 -5
- package/utilities/directives/styler.d.ts +0 -2
- package/utilities/directives/trim-whitespace.directive.d.ts +0 -2
|
@@ -1,53 +1,46 @@
|
|
|
1
|
-
import { Directive, Input,
|
|
1
|
+
import { Directive, Input, inject } from "@angular/core";
|
|
2
2
|
import { BehaviorSubject, ReplaySubject, takeUntil, tap } from "rxjs";
|
|
3
3
|
import { v4 as uuid } from 'uuid';
|
|
4
4
|
import { FilterType } from "../enums/filterTypes";
|
|
5
|
+
import { MatSlideToggle } from "@angular/material/slide-toggle";
|
|
6
|
+
import { MatRadioButton } from "@angular/material/radio";
|
|
7
|
+
import { MatButtonToggle } from '@angular/material/button-toggle';
|
|
8
|
+
import { MatCheckbox } from "@angular/material/checkbox";
|
|
5
9
|
import { FieldType } from "../interfaces/report-def";
|
|
10
|
+
import { NgControl } from "@angular/forms";
|
|
6
11
|
import { ComponentStore } from "@ngrx/component-store";
|
|
12
|
+
import { TableWrapperDirective } from "./table-wrapper.directive";
|
|
13
|
+
import { MatOption } from "@angular/material/core";
|
|
7
14
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "
|
|
9
|
-
import * as i2 from "./table-wrapper.directive";
|
|
10
|
-
import * as i3 from "rxjs";
|
|
11
|
-
import * as i4 from "@angular/material/checkbox";
|
|
12
|
-
import * as i5 from "@angular/material/slide-toggle";
|
|
13
|
-
import * as i6 from "@angular/material/radio";
|
|
14
|
-
import * as i7 from "@angular/material/core";
|
|
15
|
-
import * as i8 from "@angular/material/button-toggle";
|
|
15
|
+
import * as i1 from "rxjs";
|
|
16
16
|
const inputs = [
|
|
17
17
|
'predicate: tbCustomFilter',
|
|
18
18
|
'filterId: filterId',
|
|
19
19
|
];
|
|
20
20
|
export class TableCustomFilterDirective {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
static
|
|
26
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.2", type: TableCustomFilterDirective, selector: " ", ngImport: i0 }); }
|
|
21
|
+
filterId;
|
|
22
|
+
savable = false;
|
|
23
|
+
used = false;
|
|
24
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableCustomFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
25
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: TableCustomFilterDirective, selector: " ", ngImport: i0 });
|
|
27
26
|
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableCustomFilterDirective, decorators: [{
|
|
29
28
|
type: Directive,
|
|
30
29
|
args: [{
|
|
31
30
|
selector: ' '
|
|
32
31
|
}]
|
|
33
32
|
}] });
|
|
34
33
|
export class TableFilterDirective extends ComponentStore {
|
|
35
|
-
|
|
34
|
+
model = inject(NgControl, { optional: true });
|
|
35
|
+
wrapper = inject(TableWrapperDirective, { optional: true });
|
|
36
|
+
constructor() {
|
|
36
37
|
super();
|
|
37
|
-
this.
|
|
38
|
-
|
|
39
|
-
this.active = true;
|
|
40
|
-
this.filterValue = null;
|
|
41
|
-
this.used = false;
|
|
42
|
-
this.savable = false;
|
|
43
|
-
this.ready = false;
|
|
44
|
-
this._userActive = true;
|
|
45
|
-
if (wrapper) {
|
|
46
|
-
wrapper.register(this);
|
|
38
|
+
if (this.wrapper) {
|
|
39
|
+
this.wrapper.register(this);
|
|
47
40
|
}
|
|
48
|
-
if (model) {
|
|
41
|
+
if (this.model) {
|
|
49
42
|
this.effect(() => {
|
|
50
|
-
return model.valueChanges.pipe(tap(val => {
|
|
43
|
+
return this.model.valueChanges.pipe(tap(val => {
|
|
51
44
|
this.filterValue = val;
|
|
52
45
|
this.update();
|
|
53
46
|
}));
|
|
@@ -57,6 +50,13 @@ export class TableFilterDirective extends ComponentStore {
|
|
|
57
50
|
reset() {
|
|
58
51
|
this.filterValue = undefined;
|
|
59
52
|
}
|
|
53
|
+
filter$ = this.state$;
|
|
54
|
+
filterType;
|
|
55
|
+
key;
|
|
56
|
+
fieldType;
|
|
57
|
+
filterId;
|
|
58
|
+
active = true;
|
|
59
|
+
filterValue = null;
|
|
60
60
|
setFilterValue(value) {
|
|
61
61
|
if (this.model) {
|
|
62
62
|
setTimeout(() => {
|
|
@@ -67,6 +67,10 @@ export class TableFilterDirective extends ComponentStore {
|
|
|
67
67
|
this.filterValue = value;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
+
used = false;
|
|
71
|
+
savable = false;
|
|
72
|
+
ready = false;
|
|
73
|
+
_userActive = true;
|
|
70
74
|
ngOnChanges(changes) {
|
|
71
75
|
this.update();
|
|
72
76
|
}
|
|
@@ -96,20 +100,16 @@ export class TableFilterDirective extends ComponentStore {
|
|
|
96
100
|
});
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
|
-
static
|
|
100
|
-
static
|
|
103
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
104
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: TableFilterDirective, isStandalone: true, selector: "[tbFilter]", inputs: { filterType: "filterType", key: "key", fieldType: "fieldType", filterId: "filterId", active: "active", filterValue: "filterValue" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
101
105
|
}
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableFilterDirective, decorators: [{
|
|
103
107
|
type: Directive,
|
|
104
108
|
args: [{
|
|
105
109
|
selector: "[tbFilter]",
|
|
106
110
|
standalone: true,
|
|
107
111
|
}]
|
|
108
|
-
}], ctorParameters: () => [
|
|
109
|
-
type: Optional
|
|
110
|
-
}] }, { type: i2.TableWrapperDirective, decorators: [{
|
|
111
|
-
type: Optional
|
|
112
|
-
}] }], propDecorators: { filterType: [{
|
|
112
|
+
}], ctorParameters: () => [], propDecorators: { filterType: [{
|
|
113
113
|
type: Input
|
|
114
114
|
}], key: [{
|
|
115
115
|
type: Input
|
|
@@ -123,12 +123,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
123
123
|
type: Input
|
|
124
124
|
}] } });
|
|
125
125
|
export class TableFilterStringContainsDirective extends TableFilterDirective {
|
|
126
|
-
constructor(
|
|
127
|
-
super(
|
|
126
|
+
constructor() {
|
|
127
|
+
super();
|
|
128
128
|
this.filterType = FilterType.StringContains;
|
|
129
129
|
this.fieldType = FieldType.String;
|
|
130
130
|
this.effect(() => {
|
|
131
|
-
return model.valueChanges.pipe(tap(val => {
|
|
131
|
+
return this.model.valueChanges.pipe(tap(val => {
|
|
132
132
|
this.filterValue = val;
|
|
133
133
|
this.update();
|
|
134
134
|
}));
|
|
@@ -150,10 +150,10 @@ export class TableFilterStringContainsDirective extends TableFilterDirective {
|
|
|
150
150
|
}
|
|
151
151
|
super.ngOnChanges(changes);
|
|
152
152
|
}
|
|
153
|
-
static
|
|
154
|
-
static
|
|
153
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableFilterStringContainsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
154
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: TableFilterStringContainsDirective, isStandalone: true, selector: "[tbFilterStringContains]", inputs: { key: ["tbFilterStringContains", "key"], filterValue: "filterValue", filterId: "filterId", active: "active" }, providers: [{ provide: TableFilterDirective, useExisting: TableFilterStringContainsDirective }], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
155
155
|
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableFilterStringContainsDirective, decorators: [{
|
|
157
157
|
type: Directive,
|
|
158
158
|
args: [{
|
|
159
159
|
selector: '[tbFilterStringContains]',
|
|
@@ -166,21 +166,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
166
166
|
],
|
|
167
167
|
standalone: true,
|
|
168
168
|
}]
|
|
169
|
-
}], ctorParameters: () => [
|
|
170
|
-
type: Optional
|
|
171
|
-
}] }, { type: i2.TableWrapperDirective, decorators: [{
|
|
172
|
-
type: Optional
|
|
173
|
-
}] }] });
|
|
169
|
+
}], ctorParameters: () => [] });
|
|
174
170
|
export class TableCustomFilterDirectiveBase extends TableCustomFilterDirective {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
this.ready = false;
|
|
179
|
-
}
|
|
171
|
+
filter$;
|
|
172
|
+
filter;
|
|
173
|
+
_predicate;
|
|
180
174
|
set predicate(val) {
|
|
181
175
|
this._predicate = val;
|
|
182
176
|
this.update({ predicate: val });
|
|
183
177
|
}
|
|
178
|
+
_active = false;
|
|
179
|
+
ready = false;
|
|
184
180
|
update(val) {
|
|
185
181
|
if (this.ready) {
|
|
186
182
|
this.filter = { ...this.filter, ...val };
|
|
@@ -212,35 +208,36 @@ export class TableCustomFilterDirectiveBase extends TableCustomFilterDirective {
|
|
|
212
208
|
this.ready = true;
|
|
213
209
|
this.filter$ = new BehaviorSubject(this.filter);
|
|
214
210
|
}
|
|
215
|
-
static
|
|
216
|
-
static
|
|
211
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableCustomFilterDirectiveBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
212
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: TableCustomFilterDirectiveBase, selector: "[tbCustomFilter]", inputs: { predicate: ["tbCustomFilter", "predicate"], active: "active" }, usesInheritance: true, ngImport: i0 });
|
|
217
213
|
}
|
|
218
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableCustomFilterDirectiveBase, decorators: [{
|
|
219
215
|
type: Directive,
|
|
220
216
|
args: [{
|
|
221
217
|
selector: "[tbCustomFilter]",
|
|
222
218
|
}]
|
|
223
|
-
}], propDecorators: {
|
|
224
|
-
type: Input
|
|
225
|
-
}], predicate: [{
|
|
219
|
+
}], propDecorators: { predicate: [{
|
|
226
220
|
type: Input,
|
|
227
221
|
args: ['tbCustomFilter']
|
|
228
222
|
}], active: [{
|
|
229
223
|
type: Input
|
|
230
224
|
}] } });
|
|
231
225
|
export class TbSelectedFilterDirective extends TableCustomFilterDirectiveBase {
|
|
232
|
-
|
|
226
|
+
change;
|
|
227
|
+
isActive;
|
|
228
|
+
wrapper = inject(TableWrapperDirective, { optional: true });
|
|
229
|
+
constructor(change, isActive) {
|
|
233
230
|
super();
|
|
234
231
|
this.change = change;
|
|
235
232
|
this.isActive = isActive;
|
|
236
|
-
this.
|
|
237
|
-
|
|
238
|
-
wrapper.register(this);
|
|
233
|
+
if (this.wrapper) {
|
|
234
|
+
this.wrapper.register(this);
|
|
239
235
|
}
|
|
240
236
|
}
|
|
241
237
|
reset() {
|
|
242
238
|
this.active = false;
|
|
243
239
|
}
|
|
240
|
+
destroySubject$ = new ReplaySubject(1);
|
|
244
241
|
ngOnDestroy() {
|
|
245
242
|
this.destroySubject$.next();
|
|
246
243
|
}
|
|
@@ -251,28 +248,28 @@ export class TbSelectedFilterDirective extends TableCustomFilterDirectiveBase {
|
|
|
251
248
|
this.active = this.isActive();
|
|
252
249
|
});
|
|
253
250
|
}
|
|
254
|
-
static
|
|
255
|
-
static
|
|
251
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TbSelectedFilterDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
252
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: TbSelectedFilterDirective, usesInheritance: true, ngImport: i0 });
|
|
256
253
|
}
|
|
257
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
254
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TbSelectedFilterDirective, decorators: [{
|
|
258
255
|
type: Directive
|
|
259
|
-
}], ctorParameters: () => [{ type:
|
|
260
|
-
type: Optional
|
|
261
|
-
}] }] });
|
|
256
|
+
}], ctorParameters: () => [{ type: i1.Observable }, { type: undefined }] });
|
|
262
257
|
// Checkbox
|
|
263
258
|
export class MatCheckboxTbFilterDirective extends TbSelectedFilterDirective {
|
|
259
|
+
matCheckbox = inject(MatCheckbox);
|
|
264
260
|
set active(val) {
|
|
265
261
|
this.matCheckbox.checked = val;
|
|
266
262
|
super.active = val;
|
|
267
263
|
}
|
|
268
|
-
constructor(
|
|
269
|
-
|
|
264
|
+
constructor() {
|
|
265
|
+
const matCheckbox = inject(MatCheckbox);
|
|
266
|
+
super(matCheckbox.change, () => matCheckbox.checked);
|
|
270
267
|
this.matCheckbox = matCheckbox;
|
|
271
268
|
}
|
|
272
|
-
static
|
|
273
|
-
static
|
|
269
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MatCheckboxTbFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
270
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: MatCheckboxTbFilterDirective, isStandalone: true, selector: "mat-checkbox[tbCustomFilter]", inputs: { predicate: ["tbCustomFilter", "predicate"], filterId: "filterId" }, providers: [{ provide: TableCustomFilterDirective, useExisting: MatCheckboxTbFilterDirective }], usesInheritance: true, ngImport: i0 });
|
|
274
271
|
}
|
|
275
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MatCheckboxTbFilterDirective, decorators: [{
|
|
276
273
|
type: Directive,
|
|
277
274
|
args: [{
|
|
278
275
|
selector: 'mat-checkbox[tbCustomFilter]',
|
|
@@ -282,25 +279,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
282
279
|
providers: [{ provide: TableCustomFilterDirective, useExisting: MatCheckboxTbFilterDirective }],
|
|
283
280
|
standalone: true,
|
|
284
281
|
}]
|
|
285
|
-
}], ctorParameters: () => [
|
|
286
|
-
type: Optional
|
|
287
|
-
}] }] });
|
|
282
|
+
}], ctorParameters: () => [] });
|
|
288
283
|
export class MatSlideToggleTbFilterDirective extends TbSelectedFilterDirective {
|
|
284
|
+
matSlideToggle;
|
|
289
285
|
set active(val) {
|
|
290
286
|
this.matSlideToggle.checked = val;
|
|
291
287
|
super.active = val;
|
|
292
288
|
}
|
|
293
|
-
constructor(
|
|
294
|
-
|
|
289
|
+
constructor() {
|
|
290
|
+
const matSlideToggle = inject(MatSlideToggle);
|
|
291
|
+
super(matSlideToggle.change, () => matSlideToggle.checked);
|
|
295
292
|
this.matSlideToggle = matSlideToggle;
|
|
296
293
|
}
|
|
297
294
|
ngOnInit() {
|
|
298
295
|
super.ngOnInit();
|
|
299
296
|
}
|
|
300
|
-
static
|
|
301
|
-
static
|
|
297
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MatSlideToggleTbFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
298
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: MatSlideToggleTbFilterDirective, isStandalone: true, selector: "mat-slide-toggle[tbCustomFilter]", inputs: { predicate: ["tbCustomFilter", "predicate"], filterId: "filterId" }, providers: [{ provide: TableCustomFilterDirective, useExisting: MatSlideToggleTbFilterDirective }], usesInheritance: true, ngImport: i0 });
|
|
302
299
|
}
|
|
303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
300
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MatSlideToggleTbFilterDirective, decorators: [{
|
|
304
301
|
type: Directive,
|
|
305
302
|
args: [{
|
|
306
303
|
selector: 'mat-slide-toggle[tbCustomFilter]',
|
|
@@ -310,26 +307,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
310
307
|
providers: [{ provide: TableCustomFilterDirective, useExisting: MatSlideToggleTbFilterDirective }],
|
|
311
308
|
standalone: true,
|
|
312
309
|
}]
|
|
313
|
-
}], ctorParameters: () => [
|
|
314
|
-
type: Optional
|
|
315
|
-
}] }] });
|
|
310
|
+
}], ctorParameters: () => [] });
|
|
316
311
|
// Radio button
|
|
317
312
|
export class MatRadioButtonTbFilterDirective extends TbSelectedFilterDirective {
|
|
313
|
+
matRadioButton;
|
|
318
314
|
set active(val) {
|
|
319
315
|
this.matRadioButton.checked = val;
|
|
320
316
|
super.active = val;
|
|
321
317
|
}
|
|
322
|
-
constructor(
|
|
323
|
-
|
|
318
|
+
constructor() {
|
|
319
|
+
const matRadioButton = inject(MatRadioButton);
|
|
320
|
+
super(matRadioButton.change, () => matRadioButton.checked);
|
|
324
321
|
this.matRadioButton = matRadioButton;
|
|
325
322
|
}
|
|
326
323
|
ngOnInit() {
|
|
327
324
|
super.ngOnInit();
|
|
328
325
|
}
|
|
329
|
-
static
|
|
330
|
-
static
|
|
326
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MatRadioButtonTbFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
327
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: MatRadioButtonTbFilterDirective, isStandalone: true, selector: "mat-radio-button[tbCustomFilter]", inputs: { predicate: ["tbCustomFilter", "predicate"] }, providers: [{ provide: TableCustomFilterDirective, useExisting: MatRadioButtonTbFilterDirective }], usesInheritance: true, ngImport: i0 });
|
|
331
328
|
}
|
|
332
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
329
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MatRadioButtonTbFilterDirective, decorators: [{
|
|
333
330
|
type: Directive,
|
|
334
331
|
args: [{
|
|
335
332
|
selector: 'mat-radio-button[tbCustomFilter]',
|
|
@@ -337,11 +334,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
337
334
|
providers: [{ provide: TableCustomFilterDirective, useExisting: MatRadioButtonTbFilterDirective }],
|
|
338
335
|
standalone: true,
|
|
339
336
|
}]
|
|
340
|
-
}], ctorParameters: () => [
|
|
341
|
-
type: Optional
|
|
342
|
-
}] }] });
|
|
337
|
+
}], ctorParameters: () => [] });
|
|
343
338
|
// Option (select)
|
|
344
339
|
export class MatOptionTbFilterDirective extends TbSelectedFilterDirective {
|
|
340
|
+
matOption;
|
|
345
341
|
set active(val) {
|
|
346
342
|
if (val) {
|
|
347
343
|
this.matOption.select();
|
|
@@ -351,21 +347,22 @@ export class MatOptionTbFilterDirective extends TbSelectedFilterDirective {
|
|
|
351
347
|
}
|
|
352
348
|
super.active = val;
|
|
353
349
|
}
|
|
354
|
-
constructor(
|
|
350
|
+
constructor() {
|
|
351
|
+
const matOption = inject(MatOption);
|
|
355
352
|
super(matOption.onSelectionChange.pipe(tap(d => {
|
|
356
353
|
if (!matOption.value) {
|
|
357
354
|
matOption.value = uuid();
|
|
358
355
|
}
|
|
359
|
-
})), () => matOption.selected
|
|
356
|
+
})), () => matOption.selected);
|
|
360
357
|
this.matOption = matOption;
|
|
361
358
|
}
|
|
362
359
|
ngOnInit() {
|
|
363
360
|
super.ngOnInit();
|
|
364
361
|
}
|
|
365
|
-
static
|
|
366
|
-
static
|
|
362
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MatOptionTbFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
363
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: MatOptionTbFilterDirective, isStandalone: true, selector: "mat-option[tbCustomFilter]", inputs: { predicate: ["tbCustomFilter", "predicate"], filterId: "filterId" }, providers: [{ provide: TableCustomFilterDirective, useExisting: MatOptionTbFilterDirective }], usesInheritance: true, ngImport: i0 });
|
|
367
364
|
}
|
|
368
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
365
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MatOptionTbFilterDirective, decorators: [{
|
|
369
366
|
type: Directive,
|
|
370
367
|
args: [{
|
|
371
368
|
selector: 'mat-option[tbCustomFilter]',
|
|
@@ -375,26 +372,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
375
372
|
providers: [{ provide: TableCustomFilterDirective, useExisting: MatOptionTbFilterDirective }],
|
|
376
373
|
standalone: true,
|
|
377
374
|
}]
|
|
378
|
-
}], ctorParameters: () => [
|
|
379
|
-
type: Optional
|
|
380
|
-
}] }] });
|
|
375
|
+
}], ctorParameters: () => [] });
|
|
381
376
|
// Button toggle
|
|
382
377
|
export class MatButtonToggleFilterDirective extends TbSelectedFilterDirective {
|
|
378
|
+
matButtonToggle;
|
|
383
379
|
set active(val) {
|
|
384
380
|
this.matButtonToggle.checked = val;
|
|
385
381
|
super.active = val;
|
|
386
382
|
}
|
|
387
|
-
constructor(
|
|
388
|
-
|
|
383
|
+
constructor() {
|
|
384
|
+
const matButtonToggle = inject(MatButtonToggle);
|
|
385
|
+
super(matButtonToggle.change, () => matButtonToggle.checked);
|
|
389
386
|
this.matButtonToggle = matButtonToggle;
|
|
390
387
|
}
|
|
391
388
|
ngOnInit() {
|
|
392
389
|
super.ngOnInit();
|
|
393
390
|
}
|
|
394
|
-
static
|
|
395
|
-
static
|
|
391
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MatButtonToggleFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
392
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: MatButtonToggleFilterDirective, isStandalone: true, selector: "mat-button-toggle[tbCustomFilter]", inputs: { predicate: ["tbCustomFilter", "predicate"], filterId: "filterId" }, providers: [{ provide: TableCustomFilterDirective, useExisting: MatButtonToggleFilterDirective }], usesInheritance: true, ngImport: i0 });
|
|
396
393
|
}
|
|
397
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MatButtonToggleFilterDirective, decorators: [{
|
|
398
395
|
type: Directive,
|
|
399
396
|
args: [{
|
|
400
397
|
selector: 'mat-button-toggle[tbCustomFilter]',
|
|
@@ -404,7 +401,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
404
401
|
providers: [{ provide: TableCustomFilterDirective, useExisting: MatButtonToggleFilterDirective }],
|
|
405
402
|
standalone: true,
|
|
406
403
|
}]
|
|
407
|
-
}], ctorParameters: () => [
|
|
408
|
-
type: Optional
|
|
409
|
-
}] }] });
|
|
410
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGItZmlsdGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2RpcmVjdGl2ZXMvdGItZmlsdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFXLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0YsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBS2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7QUFLdkQsTUFBTSxNQUFNLEdBQUc7SUFDYiwyQkFBMkI7SUFDM0Isb0JBQW9CO0NBQ3JCLENBQUM7QUFNRixNQUFNLE9BQWdCLDBCQUEwQjtJQUhoRDtRQU1FLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsU0FBSSxHQUFHLEtBQUssQ0FBQztLQUdkOzhHQVBxQiwwQkFBMEI7a0dBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFIL0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsR0FBRztpQkFDZDs7QUFnQkUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGNBQTBCO0lBRXJFLFlBQW1DLEtBQWdCLEVBQWMsT0FBOEI7UUFDN0YsS0FBSyxFQUFFLENBQUM7UUFEeUIsVUFBSyxHQUFMLEtBQUssQ0FBVztRQW1CbkQsWUFBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFNYixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsZ0JBQVcsR0FBUSxJQUFJLENBQUM7UUFhakMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUVkLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBekNqQixJQUFHLE9BQU8sRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBRyxLQUFLLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxNQUFNLENBQUUsR0FBRyxFQUFFO2dCQUNoQixPQUFPLEtBQUssQ0FBQyxZQUFhLENBQUMsSUFBSSxDQUM3QixHQUFHLENBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQVVELGNBQWMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBUUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVTLFNBQVMsQ0FBQyxNQUFrQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsU0FBUyxDQUNaO2dCQUNFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUztnQkFDckQsb0JBQW9CLEVBQUUsSUFBSTthQUMzQixDQUNGLENBQUM7UUFFSixDQUFDO0lBQ0gsQ0FBQzs4R0EvRWEsb0JBQW9CO2tHQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBSG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBRWMsUUFBUTs7MEJBQWlDLFFBQVE7eUNBcUJyRCxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7O0FBZ0VMLE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxvQkFBb0I7SUFDN0UsWUFBeUIsS0FBZ0IsRUFBYyxPQUE4QjtRQUNuRixLQUFLLENBQUMsS0FBSyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBRSxHQUFHLEVBQUU7WUFDaEIsT0FBTyxLQUFLLENBQUMsWUFBYSxDQUFDLElBQUksQ0FDN0IsR0FBRyxDQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO2dCQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVRLEtBQUs7UUFDWixJQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRVEsU0FBUyxDQUFDLE1BQWtCO1FBQ25DLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3ZELEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUNwRCxDQUFDO1FBQ0QsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQWhDYSxrQ0FBa0M7a0dBQWxDLGtDQUFrQywrTEFSckMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQzs7MkZBUWpGLGtDQUFrQztrQkFWakQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLG9DQUFvQyxFQUFFLENBQUM7b0JBQy9GLE1BQU0sRUFBRTt3QkFDTiw0QkFBNEI7d0JBQzVCLHlCQUF5Qjt3QkFDekIsb0JBQW9CO3dCQUNwQixnQkFBZ0I7cUJBQ2pCO29CQUNELFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBQ2MsUUFBUTs7MEJBQXVCLFFBQVE7O0FBcUN0RCxNQUFNLE9BQWdCLDhCQUF3QyxTQUFRLDBCQUE2QjtJQUhuRzs7UUFlRSxZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFVBQUssR0FBRyxLQUFLLENBQUM7S0FtQ2Y7SUF6Q0MsSUFBNkIsU0FBUyxDQUFFLEdBQWlCO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQyxTQUFTLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBS0QsTUFBTSxDQUFDLEdBQTBCO1FBQy9CLElBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBQyxHQUFHLEdBQUcsRUFBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLEdBQVk7UUFDOUIsSUFBRyxJQUFJLENBQUMsT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQyxNQUFNLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osVUFBVSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzNCLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDOzhHQS9DbUIsOEJBQThCO2tHQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBSG5ELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7OEJBS1UsUUFBUTtzQkFBaEIsS0FBSztnQkFHdUIsU0FBUztzQkFBckMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBZVYsTUFBTTtzQkFBbEIsS0FBSzs7QUE2QlIsTUFBTSxPQUFnQix5QkFBb0MsU0FBUSw4QkFBaUM7SUFHakcsWUFBOEIsTUFBdUIsRUFBVSxRQUF1QixFQUFjLE9BQThCO1FBQ2hJLEtBQUssRUFBRSxDQUFDO1FBRG9CLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBZTtRQVd0RixvQkFBZSxHQUFHLElBQUksYUFBYSxDQUFPLENBQUMsQ0FBQyxDQUFDO1FBVDNDLElBQUcsT0FBTyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFHRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFFLEdBQUcsRUFBRTtZQUNoRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBekJtQix5QkFBeUI7a0dBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEOUMsU0FBUzs7MEJBSWlGLFFBQVE7O0FBeUJuRyxXQUFXO0FBU1gsTUFBTSxPQUFPLDRCQUE2QixTQUFRLHlCQUF5QjtJQUV6RSxJQUFhLE1BQU0sQ0FBQyxHQUFZO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUMvQixLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBQ0QsWUFBb0IsV0FBd0IsRUFBYyxPQUE4QjtRQUN0RixLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRDVDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBRTVDLENBQUM7OEdBUlUsNEJBQTRCO2tHQUE1Qiw0QkFBNEIseUpBSDVCLENBQUMsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFLENBQUM7OzJGQUdwRiw0QkFBNEI7a0JBUnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsTUFBTSxFQUFFO3dCQUNOLEdBQUcsTUFBTTtxQkFDVjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxXQUFXLDhCQUE4QixFQUFFLENBQUM7b0JBQy9GLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBT2dELFFBQVE7O0FBY3pELE1BQU0sT0FBTywrQkFBeUMsU0FBUSx5QkFBNEI7SUFDeEYsSUFBYSxNQUFNLENBQUMsR0FBWTtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDbEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUNELFlBQW9CLGNBQThCLEVBQWMsT0FBOEI7UUFDNUYsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBQyxPQUFPLENBQUMsQ0FBQztRQURqRCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFFbEQsQ0FBQztJQUVELFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQzs4R0FYVSwrQkFBK0I7a0dBQS9CLCtCQUErQiw2SkFIL0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxXQUFXLEVBQUUsK0JBQStCLEVBQUUsQ0FBQzs7MkZBR3ZGLCtCQUErQjtrQkFSM0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0NBQWtDO29CQUM1QyxNQUFNLEVBQUU7d0JBQ04sR0FBRyxNQUFNO3FCQUNWO29CQUNELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFdBQVcsaUNBQWlDLEVBQUUsQ0FBQztvQkFDbEcsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFNc0QsUUFBUTs7QUFTL0QsZUFBZTtBQU9mLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSx5QkFBeUI7SUFFNUUsSUFBYSxNQUFNLENBQUMsR0FBWTtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDbEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUNELFlBQW9CLGNBQThCLEVBQWMsT0FBOEI7UUFDNUYsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQURsRCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFFbEQsQ0FBQztJQUVELFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQzs4R0FaVSwrQkFBK0I7a0dBQS9CLCtCQUErQix1SUFIL0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxXQUFXLEVBQUUsK0JBQStCLEVBQUUsQ0FBQzs7MkZBR3ZGLCtCQUErQjtrQkFOM0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0NBQWtDO29CQUM1QyxNQUFNLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDckMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxpQ0FBaUMsRUFBRSxDQUFDO29CQUNsRyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQU9zRCxRQUFROztBQVMvRCxrQkFBa0I7QUFTbEIsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHlCQUF5QjtJQUV2RSxJQUFhLE1BQU0sQ0FBQyxHQUFZO1FBQzlCLElBQUcsR0FBRyxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBQ0QsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUNELFlBQW9CLFNBQW9CLEVBQWMsT0FBOEI7UUFDbEYsS0FBSyxDQUFFLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxFQUFFO1lBQy9DLElBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3BCLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUMsQ0FFQSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQVByQixjQUFTLEdBQVQsU0FBUyxDQUFXO0lBUXhDLENBQUM7SUFFRCxRQUFRO1FBQ04sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25CLENBQUM7OEdBdEJVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHVKQUgxQixDQUFDLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRSxDQUFDOzsyRkFHbEYsMEJBQTBCO2tCQVJ0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLE1BQU0sRUFBRTt3QkFDTixHQUFHLE1BQU07cUJBQ1Y7b0JBQ0QsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyw0QkFBNEIsRUFBRSxDQUFDO29CQUM3RixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQVc0QyxRQUFROztBQWVyRCxnQkFBZ0I7QUFTaEIsTUFBTSxPQUFPLDhCQUErQixTQUFRLHlCQUF5QjtJQUMzRSxJQUFhLE1BQU0sQ0FBQyxHQUFZO1FBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNuQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBQ0QsWUFBb0IsZUFBZ0MsRUFBYyxPQUE4QjtRQUM5RixLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRG5ELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUVwRCxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDOzhHQVhVLDhCQUE4QjtrR0FBOUIsOEJBQThCLDhKQUg5QixDQUFDLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFdBQVcsRUFBRSw4QkFBOEIsRUFBRSxDQUFDOzsyRkFHdEYsOEJBQThCO2tCQVIxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLE1BQU0sRUFBRTt3QkFDTixHQUFHLE1BQU07cUJBQ1Y7b0JBQ0QsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxnQ0FBZ0MsRUFBRSxDQUFDO29CQUNqRyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQU13RCxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT3B0aW9uYWwsIFByZWRpY2F0ZSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBDdXN0b21GaWx0ZXIsIEZpbHRlckluZm8gfSBmcm9tIFwiLi4vY2xhc3Nlcy9maWx0ZXItaW5mb1wiO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tIFwiLi4vZW51bXMvZmlsdGVyVHlwZXNcIjtcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlXCI7XHJcbmltcG9ydCB7IE1hdFJhZGlvQnV0dG9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3JhZGlvXCI7XHJcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmXCI7XHJcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gXCJAbmdyeC9jb21wb25lbnQtc3RvcmVcIjtcclxuaW1wb3J0IHsgVGFibGVXcmFwcGVyRGlyZWN0aXZlIH0gZnJvbSBcIi4vdGFibGUtd3JhcHBlci5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuXHJcblxyXG5jb25zdCBpbnB1dHMgPSBbXHJcbiAgJ3ByZWRpY2F0ZTogdGJDdXN0b21GaWx0ZXInLFxyXG4gICdmaWx0ZXJJZDogZmlsdGVySWQnLFxyXG5dO1xyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnICdcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhYmxlQ3VzdG9tRmlsdGVyRGlyZWN0aXZlPFQgPSBhbnk+IHtcclxuICBhYnN0cmFjdCBmaWx0ZXIkIDogT2JzZXJ2YWJsZTxDdXN0b21GaWx0ZXI+O1xyXG4gIGZpbHRlcklkITogc3RyaW5nO1xyXG4gIHNhdmFibGUgPSBmYWxzZTtcclxuICB1c2VkID0gZmFsc2U7XHJcbiAgYWJzdHJhY3QgYWN0aXZlOiBib29sZWFuO1xyXG4gIGFic3RyYWN0IHJlc2V0KCk6IHZvaWQ7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcIlt0YkZpbHRlcl1cIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KSBleHBvcnQgY2xhc3MgVGFibGVGaWx0ZXJEaXJlY3RpdmUgZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxGaWx0ZXJJbmZvPiB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByb3RlY3RlZCAgbW9kZWw6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgd3JhcHBlcjogVGFibGVXcmFwcGVyRGlyZWN0aXZlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgaWYod3JhcHBlcikge1xyXG4gICAgICB3cmFwcGVyLnJlZ2lzdGVyKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgaWYobW9kZWwpIHtcclxuICAgICAgdGhpcy5lZmZlY3QoICgpID0+IHtcclxuICAgICAgICByZXR1cm4gbW9kZWwudmFsdWVDaGFuZ2VzIS5waXBlKFxyXG4gICAgICAgICAgdGFwKCB2YWwgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlclZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5maWx0ZXJWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgZmlsdGVyJCA9IHRoaXMuc3RhdGUkO1xyXG5cclxuICBASW5wdXQoKSBmaWx0ZXJUeXBlITogRmlsdGVyVHlwZTtcclxuICBASW5wdXQoKSBrZXkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZmllbGRUeXBlITogRmllbGRUeXBlO1xyXG4gIEBJbnB1dCgpIGZpbHRlcklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFjdGl2ZSA9IHRydWU7XHJcbiAgQElucHV0KCkgZmlsdGVyVmFsdWU6IGFueSA9IG51bGw7XHJcblxyXG4gIHNldEZpbHRlclZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmKHRoaXMubW9kZWwpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5yZXNldCh2YWx1ZSk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHVzZWQgPSBmYWxzZTtcclxuICBzYXZhYmxlID0gZmFsc2U7XHJcbiAgcmVhZHkgPSBmYWxzZTtcclxuXHJcbiAgX3VzZXJBY3RpdmUgPSB0cnVlO1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMgKSB7XHJcbiAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZighdGhpcy5maWx0ZXJJZCkge1xyXG4gICAgICB0aGlzLmZpbHRlcklkID0gdXVpZCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zYXZhYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMucmVhZHkgPSB0cnVlO1xyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzZXRGaWx0ZXIoZmlsdGVyOiBGaWx0ZXJJbmZvICkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZShmaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlKCkge1xyXG4gICAgaWYgKHRoaXMucmVhZHkpIHtcclxuICAgICAgdGhpcy5zZXRGaWx0ZXIoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZmlsdGVySWQ6IHRoaXMuZmlsdGVySWQsXHJcbiAgICAgICAgICBrZXk6IHRoaXMua2V5LFxyXG4gICAgICAgICAgZmlsdGVyVHlwZTogdGhpcy5maWx0ZXJUeXBlLFxyXG4gICAgICAgICAgZmllbGRUeXBlOiB0aGlzLmZpZWxkVHlwZSxcclxuICAgICAgICAgIGZpbHRlclZhbHVlOiB0aGlzLmZpbHRlclZhbHVlLFxyXG4gICAgICAgICAgYWN0aXZlOiB0aGlzLmFjdGl2ZSAmJiB0aGlzLmZpbHRlclZhbHVlICE9PSB1bmRlZmluZWQsXHJcbiAgICAgICAgICBfaXNFeHRlcm5hbGx5TWFuYWdlZDogdHJ1ZSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbdGJGaWx0ZXJTdHJpbmdDb250YWluc10nLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVGFibGVGaWx0ZXJEaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBUYWJsZUZpbHRlclN0cmluZ0NvbnRhaW5zRGlyZWN0aXZlIH1dLFxyXG4gIGlucHV0czogW1xyXG4gICAgJ2tleTp0YkZpbHRlclN0cmluZ0NvbnRhaW5zJyxcclxuICAgICdmaWx0ZXJWYWx1ZTpmaWx0ZXJWYWx1ZScsXHJcbiAgICAnZmlsdGVySWQ6IGZpbHRlcklkJyxcclxuICAgICdhY3RpdmU6IGFjdGl2ZScsXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KSBleHBvcnQgY2xhc3MgVGFibGVGaWx0ZXJTdHJpbmdDb250YWluc0RpcmVjdGl2ZSBleHRlbmRzIFRhYmxlRmlsdGVyRGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSAgbW9kZWw6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgd3JhcHBlcjogVGFibGVXcmFwcGVyRGlyZWN0aXZlKSB7XHJcbiAgICBzdXBlcihtb2RlbCx3cmFwcGVyKTtcclxuICAgIHRoaXMuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuU3RyaW5nQ29udGFpbnM7XHJcbiAgICB0aGlzLmZpZWxkVHlwZSA9IEZpZWxkVHlwZS5TdHJpbmc7XHJcbiAgICB0aGlzLmVmZmVjdCggKCkgPT4ge1xyXG4gICAgICByZXR1cm4gbW9kZWwudmFsdWVDaGFuZ2VzIS5waXBlKFxyXG4gICAgICAgIHRhcCggdmFsID0+IHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSByZXNldCgpIHtcclxuICAgIGlmKHRoaXMubW9kZWwpIHtcclxuICAgICAgdGhpcy5tb2RlbC5yZXNldCgpO1xyXG4gICAgfVxyXG4gICAgc3VwZXIucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHNldEZpbHRlcihmaWx0ZXI6IEZpbHRlckluZm8pIHtcclxuICAgIGZpbHRlci5hY3RpdmUgPSBmaWx0ZXIuZmlsdGVyVmFsdWUgJiYgdGhpcy5fdXNlckFjdGl2ZTtcclxuICAgIHN1cGVyLnNldEZpbHRlcihmaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYoY2hhbmdlc1snYWN0aXZlJ10pIHtcclxuICAgICAgdGhpcy5fdXNlckFjdGl2ZSA9IGNoYW5nZXNbJ2FjdGl2ZSddLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6IFwiW3RiQ3VzdG9tRmlsdGVyXVwiLFxyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmVCYXNlPFQgPSBhbnk+IGV4dGVuZHMgVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmU8VD4ge1xyXG5cclxuICBmaWx0ZXIkISA6IFN1YmplY3Q8Q3VzdG9tRmlsdGVyPjtcclxuICBmaWx0ZXIhOiBDdXN0b21GaWx0ZXI7XHJcbiAgQElucHV0KCkgZmlsdGVySWQhIDogc3RyaW5nO1xyXG5cclxuICBfcHJlZGljYXRlITogUHJlZGljYXRlPFQ+O1xyXG4gIEBJbnB1dCgndGJDdXN0b21GaWx0ZXInKSBzZXQgcHJlZGljYXRlKCB2YWw6IFByZWRpY2F0ZTxUPiApIHtcclxuICAgIHRoaXMuX3ByZWRpY2F0ZSA9IHZhbDtcclxuICAgIHRoaXMudXBkYXRlKHtwcmVkaWNhdGU6dmFsfSk7XHJcbiAgfVxyXG5cclxuICBfYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVhZHkgPSBmYWxzZTtcclxuXHJcbiAgdXBkYXRlKHZhbDogUGFydGlhbDxDdXN0b21GaWx0ZXI+ICkge1xyXG4gICAgaWYodGhpcy5yZWFkeSkge1xyXG4gICAgICB0aGlzLmZpbHRlciA9IHsuLi50aGlzLmZpbHRlciwuLi52YWx9O1xyXG4gICAgICB0aGlzLmZpbHRlciQubmV4dCh0aGlzLmZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgYWN0aXZlKHZhbDogYm9vbGVhbikge1xyXG4gICAgaWYodGhpcy5fYWN0aXZlICE9PSB2YWwpIHtcclxuICAgICAgdGhpcy5fYWN0aXZlID0gdmFsO1xyXG4gICAgICB0aGlzLnVwZGF0ZSh7YWN0aXZlOnZhbH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYoIXRoaXMuZmlsdGVySWQpIHtcclxuICAgICAgdGhpcy5maWx0ZXJJZCA9IHV1aWQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2F2YWJsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWx0ZXIgPSB7XHJcbiAgICAgIGZpbHRlclR5cGU6IEZpbHRlclR5cGUuQ3VzdG9tLFxyXG4gICAgICBmaWx0ZXJJZDogdGhpcy5maWx0ZXJJZCxcclxuICAgICAgYWN0aXZlOiB0aGlzLl9hY3RpdmUsXHJcbiAgICAgIHByZWRpY2F0ZTogdGhpcy5fcHJlZGljYXRlLFxyXG4gICAgfTtcclxuICAgIHRoaXMucmVhZHkgPSB0cnVlO1xyXG4gICAgdGhpcy5maWx0ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLmZpbHRlcik7XHJcbiAgfVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRiU2VsZWN0ZWRGaWx0ZXJEaXJlY3RpdmU8VCA9IGFueT4gIGV4dGVuZHMgVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmVCYXNlPFQ+IHtcclxuXHJcblxyXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZTogT2JzZXJ2YWJsZTxhbnk+LCBwcml2YXRlIGlzQWN0aXZlOiAoKSA9PiBib29sZWFuLCBAT3B0aW9uYWwoKSB3cmFwcGVyOiBUYWJsZVdyYXBwZXJEaXJlY3RpdmUpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZih3cmFwcGVyKSB7XHJcbiAgICAgIHdyYXBwZXIucmVnaXN0ZXIodGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95U3ViamVjdCQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveVN1YmplY3QkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSgpO1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveVN1YmplY3QkKSkuc3Vic2NyaWJlKCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBDaGVja2JveFxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ21hdC1jaGVja2JveFt0YkN1c3RvbUZpbHRlcl0nLFxyXG4gIGlucHV0czogW1xyXG4gICAgLi4uaW5wdXRzXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFRhYmxlQ3VzdG9tRmlsdGVyRGlyZWN0aXZlLCB1c2VFeGlzdGluZzogTWF0Q2hlY2tib3hUYkZpbHRlckRpcmVjdGl2ZSB9XSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0Q2hlY2tib3hUYkZpbHRlckRpcmVjdGl2ZSBleHRlbmRzIFRiU2VsZWN0ZWRGaWx0ZXJEaXJlY3RpdmUge1xyXG5cclxuICBvdmVycmlkZSBzZXQgYWN0aXZlKHZhbDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5tYXRDaGVja2JveC5jaGVja2VkID0gdmFsO1xyXG4gICAgc3VwZXIuYWN0aXZlID0gdmFsO1xyXG4gIH1cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hdENoZWNrYm94OiBNYXRDaGVja2JveCwgQE9wdGlvbmFsKCkgd3JhcHBlcjogVGFibGVXcmFwcGVyRGlyZWN0aXZlKSB7XHJcbiAgICBzdXBlcihtYXRDaGVja2JveC5jaGFuZ2UsICgpID0+IG1hdENoZWNrYm94LmNoZWNrZWQsIHdyYXBwZXIpO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnbWF0LXNsaWRlLXRvZ2dsZVt0YkN1c3RvbUZpbHRlcl0nLFxyXG4gIGlucHV0czogW1xyXG4gICAgLi4uaW5wdXRzXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFRhYmxlQ3VzdG9tRmlsdGVyRGlyZWN0aXZlLCB1c2VFeGlzdGluZzogTWF0U2xpZGVUb2dnbGVUYkZpbHRlckRpcmVjdGl2ZSB9XSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0U2xpZGVUb2dnbGVUYkZpbHRlckRpcmVjdGl2ZTxUID0gYW55PiBleHRlbmRzIFRiU2VsZWN0ZWRGaWx0ZXJEaXJlY3RpdmU8VD4ge1xyXG4gIG92ZXJyaWRlIHNldCBhY3RpdmUodmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm1hdFNsaWRlVG9nZ2xlLmNoZWNrZWQgPSB2YWw7XHJcbiAgICBzdXBlci5hY3RpdmUgPSB2YWw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWF0U2xpZGVUb2dnbGU6IE1hdFNsaWRlVG9nZ2xlLCBAT3B0aW9uYWwoKSB3cmFwcGVyOiBUYWJsZVdyYXBwZXJEaXJlY3RpdmUpIHtcclxuICAgIHN1cGVyKG1hdFNsaWRlVG9nZ2xlLmNoYW5nZSwgKCkgPT4gbWF0U2xpZGVUb2dnbGUuY2hlY2tlZCx3cmFwcGVyKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vIFJhZGlvIGJ1dHRvblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ21hdC1yYWRpby1idXR0b25bdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFsncHJlZGljYXRlOiB0YkN1c3RvbUZpbHRlciddLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBNYXRSYWRpb0J1dHRvblRiRmlsdGVyRGlyZWN0aXZlIH1dLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRSYWRpb0J1dHRvblRiRmlsdGVyRGlyZWN0aXZlIGV4dGVuZHMgVGJTZWxlY3RlZEZpbHRlckRpcmVjdGl2ZSB7XHJcblxyXG4gIG92ZXJyaWRlIHNldCBhY3RpdmUodmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm1hdFJhZGlvQnV0dG9uLmNoZWNrZWQgPSB2YWw7XHJcbiAgICBzdXBlci5hY3RpdmUgPSB2YWw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWF0UmFkaW9CdXR0b246IE1hdFJhZGlvQnV0dG9uLCBAT3B0aW9uYWwoKSB3cmFwcGVyOiBUYWJsZVdyYXBwZXJEaXJlY3RpdmUpIHtcclxuICAgIHN1cGVyKG1hdFJhZGlvQnV0dG9uLmNoYW5nZSwgKCkgPT4gbWF0UmFkaW9CdXR0b24uY2hlY2tlZCwgd3JhcHBlcik7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBPcHRpb24gKHNlbGVjdClcclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdtYXQtb3B0aW9uW3RiQ3VzdG9tRmlsdGVyXScsXHJcbiAgaW5wdXRzOiBbXHJcbiAgICAuLi5pbnB1dHNcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBNYXRPcHRpb25UYkZpbHRlckRpcmVjdGl2ZSB9XSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0T3B0aW9uVGJGaWx0ZXJEaXJlY3RpdmUgZXh0ZW5kcyBUYlNlbGVjdGVkRmlsdGVyRGlyZWN0aXZlIHtcclxuXHJcbiAgb3ZlcnJpZGUgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIGlmKHZhbCkge1xyXG4gICAgICB0aGlzLm1hdE9wdGlvbi5zZWxlY3QoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWF0T3B0aW9uLmRlc2VsZWN0KCk7XHJcbiAgICB9XHJcbiAgICBzdXBlci5hY3RpdmUgPSB2YWw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWF0T3B0aW9uOiBNYXRPcHRpb24sIEBPcHRpb25hbCgpIHdyYXBwZXI6IFRhYmxlV3JhcHBlckRpcmVjdGl2ZSkge1xyXG4gICAgc3VwZXIoIG1hdE9wdGlvbi5vblNlbGVjdGlvbkNoYW5nZS5waXBlKHRhcCggZCA9PiB7XHJcbiAgICAgIGlmKCFtYXRPcHRpb24udmFsdWUpIHtcclxuICAgICAgICBtYXRPcHRpb24udmFsdWUgPSB1dWlkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICApKSwgKCkgPT4gbWF0T3B0aW9uLnNlbGVjdGVkLCB3cmFwcGVyKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vIEJ1dHRvbiB0b2dnbGVcclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdtYXQtYnV0dG9uLXRvZ2dsZVt0YkN1c3RvbUZpbHRlcl0nLFxyXG4gIGlucHV0czogW1xyXG4gICAgLi4uaW5wdXRzXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFRhYmxlQ3VzdG9tRmlsdGVyRGlyZWN0aXZlLCB1c2VFeGlzdGluZzogTWF0QnV0dG9uVG9nZ2xlRmlsdGVyRGlyZWN0aXZlIH1dLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRCdXR0b25Ub2dnbGVGaWx0ZXJEaXJlY3RpdmUgZXh0ZW5kcyBUYlNlbGVjdGVkRmlsdGVyRGlyZWN0aXZlIHtcclxuICBvdmVycmlkZSBzZXQgYWN0aXZlKHZhbDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5tYXRCdXR0b25Ub2dnbGUuY2hlY2tlZCA9IHZhbDtcclxuICAgIHN1cGVyLmFjdGl2ZSA9IHZhbDtcclxuICB9XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtYXRCdXR0b25Ub2dnbGU6IE1hdEJ1dHRvblRvZ2dsZSwgQE9wdGlvbmFsKCkgd3JhcHBlcjogVGFibGVXcmFwcGVyRGlyZWN0aXZlKSB7XHJcbiAgICBzdXBlcihtYXRCdXR0b25Ub2dnbGUuY2hhbmdlLCAoKSA9PiBtYXRCdXR0b25Ub2dnbGUuY2hlY2tlZCx3cmFwcGVyKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
404
|
+
}], ctorParameters: () => [] });
|
|
405
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGItZmlsdGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2RpcmVjdGl2ZXMvdGItZmlsdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFXLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0YsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUduRCxNQUFNLE1BQU0sR0FBRztJQUNiLDJCQUEyQjtJQUMzQixvQkFBb0I7Q0FDckIsQ0FBQztBQU1GLE1BQU0sT0FBZ0IsMEJBQTBCO0lBRTlDLFFBQVEs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RUFBRSwwQkFBMEIsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQUUsQ0FBQzs7MkZBR3RGLDhCQUE4QjtrQkFSMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUNBQW1DO29CQUM3QyxNQUFNLEVBQUU7d0JBQ04sR0FBRyxNQUFNO3FCQUNWO29CQUNELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFdBQVcsZ0NBQWdDLEVBQUUsQ0FBQztvQkFDakcsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgUHJlZGljYXRlLCBTaW1wbGVDaGFuZ2VzLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ3VzdG9tRmlsdGVyLCBGaWx0ZXJJbmZvIH0gZnJvbSBcIi4uL2NsYXNzZXMvZmlsdGVyLWluZm9cIjtcclxuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSBcIi4uL2VudW1zL2ZpbHRlclR5cGVzXCI7XHJcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZVwiO1xyXG5pbXBvcnQgeyBNYXRSYWRpb0J1dHRvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9yYWRpb1wiO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3ggfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3hcIjtcclxuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZlwiO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50U3RvcmUgfSBmcm9tIFwiQG5ncngvY29tcG9uZW50LXN0b3JlXCI7XHJcbmltcG9ydCB7IFRhYmxlV3JhcHBlckRpcmVjdGl2ZSB9IGZyb20gXCIuL3RhYmxlLXdyYXBwZXIuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcblxyXG5cclxuY29uc3QgaW5wdXRzID0gW1xyXG4gICdwcmVkaWNhdGU6IHRiQ3VzdG9tRmlsdGVyJyxcclxuICAnZmlsdGVySWQ6IGZpbHRlcklkJyxcclxuXTtcclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJyAnXHJcbn0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZTxUID0gYW55PiB7XHJcbiAgYWJzdHJhY3QgZmlsdGVyJCA6IE9ic2VydmFibGU8Q3VzdG9tRmlsdGVyPjtcclxuICBmaWx0ZXJJZCE6IHN0cmluZztcclxuICBzYXZhYmxlID0gZmFsc2U7XHJcbiAgdXNlZCA9IGZhbHNlO1xyXG4gIGFic3RyYWN0IGFjdGl2ZTogYm9vbGVhbjtcclxuICBhYnN0cmFjdCByZXNldCgpOiB2b2lkO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogXCJbdGJGaWx0ZXJdXCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSkgZXhwb3J0IGNsYXNzIFRhYmxlRmlsdGVyRGlyZWN0aXZlIGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8RmlsdGVySW5mbz4ge1xyXG4gIHByb3RlY3RlZCBtb2RlbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgcHJpdmF0ZSB3cmFwcGVyID0gaW5qZWN0KFRhYmxlV3JhcHBlckRpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZih0aGlzLndyYXBwZXIpIHtcclxuICAgICAgdGhpcy53cmFwcGVyLnJlZ2lzdGVyKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5tb2RlbCkge1xyXG4gICAgICB0aGlzLmVmZmVjdCggKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsIS52YWx1ZUNoYW5nZXMhLnBpcGUoXHJcbiAgICAgICAgICB0YXAoIHZhbCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLmZpbHRlclZhbHVlID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBmaWx0ZXIkID0gdGhpcy5zdGF0ZSQ7XHJcblxyXG4gIEBJbnB1dCgpIGZpbHRlclR5cGUhOiBGaWx0ZXJUeXBlO1xyXG4gIEBJbnB1dCgpIGtleSE6IHN0cmluZztcclxuICBASW5wdXQoKSBmaWVsZFR5cGUhOiBGaWVsZFR5cGU7XHJcbiAgQElucHV0KCkgZmlsdGVySWQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYWN0aXZlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBmaWx0ZXJWYWx1ZTogYW55ID0gbnVsbDtcclxuXHJcbiAgc2V0RmlsdGVyVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYodGhpcy5tb2RlbCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm1vZGVsIS5yZXNldCh2YWx1ZSk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXNlZCA9IGZhbHNlO1xyXG4gIHNhdmFibGUgPSBmYWxzZTtcclxuICByZWFkeSA9IGZhbHNlO1xyXG5cclxuICBfdXNlckFjdGl2ZSA9IHRydWU7XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYoIXRoaXMuZmlsdGVySWQpIHtcclxuICAgICAgdGhpcy5maWx0ZXJJZCA9IHV1aWQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2F2YWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcclxuICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2V0RmlsdGVyKGZpbHRlcjogRmlsdGVySW5mbyApIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoZmlsdGVyKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLnJlYWR5KSB7XHJcbiAgICAgIHRoaXMuc2V0RmlsdGVyKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGZpbHRlcklkOiB0aGlzLmZpbHRlcklkLFxyXG4gICAgICAgICAga2V5OiB0aGlzLmtleSxcclxuICAgICAgICAgIGZpbHRlclR5cGU6IHRoaXMuZmlsdGVyVHlwZSxcclxuICAgICAgICAgIGZpZWxkVHlwZTogdGhpcy5maWVsZFR5cGUsXHJcbiAgICAgICAgICBmaWx0ZXJWYWx1ZTogdGhpcy5maWx0ZXJWYWx1ZSxcclxuICAgICAgICAgIGFjdGl2ZTogdGhpcy5hY3RpdmUgJiYgdGhpcy5maWx0ZXJWYWx1ZSAhPT0gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgX2lzRXh0ZXJuYWxseU1hbmFnZWQ6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3RiRmlsdGVyU3RyaW5nQ29udGFpbnNdJyxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFRhYmxlRmlsdGVyRGlyZWN0aXZlLCB1c2VFeGlzdGluZzogVGFibGVGaWx0ZXJTdHJpbmdDb250YWluc0RpcmVjdGl2ZSB9XSxcclxuICBpbnB1dHM6IFtcclxuICAgICdrZXk6dGJGaWx0ZXJTdHJpbmdDb250YWlucycsXHJcbiAgICAnZmlsdGVyVmFsdWU6ZmlsdGVyVmFsdWUnLFxyXG4gICAgJ2ZpbHRlcklkOiBmaWx0ZXJJZCcsXHJcbiAgICAnYWN0aXZlOiBhY3RpdmUnLFxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSkgZXhwb3J0IGNsYXNzIFRhYmxlRmlsdGVyU3RyaW5nQ29udGFpbnNEaXJlY3RpdmUgZXh0ZW5kcyBUYWJsZUZpbHRlckRpcmVjdGl2ZSB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuU3RyaW5nQ29udGFpbnM7XHJcbiAgICB0aGlzLmZpZWxkVHlwZSA9IEZpZWxkVHlwZS5TdHJpbmc7XHJcbiAgICB0aGlzLmVmZmVjdCggKCkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5tb2RlbCEudmFsdWVDaGFuZ2VzIS5waXBlKFxyXG4gICAgICAgIHRhcCggdmFsID0+IHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB2YWw7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSByZXNldCgpIHtcclxuICAgIGlmKHRoaXMubW9kZWwpIHtcclxuICAgICAgdGhpcy5tb2RlbC5yZXNldCgpO1xyXG4gICAgfVxyXG4gICAgc3VwZXIucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHNldEZpbHRlcihmaWx0ZXI6IEZpbHRlckluZm8pIHtcclxuICAgIGZpbHRlci5hY3RpdmUgPSBmaWx0ZXIuZmlsdGVyVmFsdWUgJiYgdGhpcy5fdXNlckFjdGl2ZTtcclxuICAgIHN1cGVyLnNldEZpbHRlcihmaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYoY2hhbmdlc1snYWN0aXZlJ10pIHtcclxuICAgICAgdGhpcy5fdXNlckFjdGl2ZSA9IGNoYW5nZXNbJ2FjdGl2ZSddLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6IFwiW3RiQ3VzdG9tRmlsdGVyXVwiLFxyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmVCYXNlPFQgPSBhbnk+IGV4dGVuZHMgVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmU8VD4ge1xyXG5cclxuICBmaWx0ZXIkISA6IFN1YmplY3Q8Q3VzdG9tRmlsdGVyPjtcclxuICBmaWx0ZXIhOiBDdXN0b21GaWx0ZXI7XHJcblxyXG4gIF9wcmVkaWNhdGUhOiBQcmVkaWNhdGU8VD47XHJcbiAgQElucHV0KCd0YkN1c3RvbUZpbHRlcicpIHNldCBwcmVkaWNhdGUoIHZhbDogUHJlZGljYXRlPFQ+ICkge1xyXG4gICAgdGhpcy5fcHJlZGljYXRlID0gdmFsO1xyXG4gICAgdGhpcy51cGRhdGUoe3ByZWRpY2F0ZTp2YWx9KTtcclxuICB9XHJcblxyXG4gIF9hY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByZWFkeSA9IGZhbHNlO1xyXG5cclxuICB1cGRhdGUodmFsOiBQYXJ0aWFsPEN1c3RvbUZpbHRlcj4gKSB7XHJcbiAgICBpZih0aGlzLnJlYWR5KSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyID0gey4uLnRoaXMuZmlsdGVyLC4uLnZhbH07XHJcbiAgICAgIHRoaXMuZmlsdGVyJC5uZXh0KHRoaXMuZmlsdGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBhY3RpdmUodmFsOiBib29sZWFuKSB7XHJcbiAgICBpZih0aGlzLl9hY3RpdmUgIT09IHZhbCkge1xyXG4gICAgICB0aGlzLl9hY3RpdmUgPSB2YWw7XHJcbiAgICAgIHRoaXMudXBkYXRlKHthY3RpdmU6dmFsfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZighdGhpcy5maWx0ZXJJZCkge1xyXG4gICAgICB0aGlzLmZpbHRlcklkID0gdXVpZCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zYXZhYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbHRlciA9IHtcclxuICAgICAgZmlsdGVyVHlwZTogRmlsdGVyVHlwZS5DdXN0b20sXHJcbiAgICAgIGZpbHRlcklkOiB0aGlzLmZpbHRlcklkLFxyXG4gICAgICBhY3RpdmU6IHRoaXMuX2FjdGl2ZSxcclxuICAgICAgcHJlZGljYXRlOiB0aGlzLl9wcmVkaWNhdGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yZWFkeSA9IHRydWU7XHJcbiAgICB0aGlzLmZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuZmlsdGVyKTtcclxuICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGJTZWxlY3RlZEZpbHRlckRpcmVjdGl2ZTxUID0gYW55PiAgZXh0ZW5kcyBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZUJhc2U8VD4ge1xyXG5cclxuICBwcm90ZWN0ZWQgd3JhcHBlciA9IGluamVjdChUYWJsZVdyYXBwZXJEaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlOiBPYnNlcnZhYmxlPGFueT4sIHByaXZhdGUgaXNBY3RpdmU6ICgpID0+IGJvb2xlYW4pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZih0aGlzLndyYXBwZXIpIHtcclxuICAgICAgdGhpcy53cmFwcGVyLnJlZ2lzdGVyKHRoaXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveVN1YmplY3QkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3lTdWJqZWN0JC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FjdGl2ZSA9IHRoaXMuaXNBY3RpdmUoKTtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpLnN1YnNjcmliZSggKCkgPT4ge1xyXG4gICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuaXNBY3RpdmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuLy8gQ2hlY2tib3hcclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdtYXQtY2hlY2tib3hbdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdENoZWNrYm94VGJGaWx0ZXJEaXJlY3RpdmUgfV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdENoZWNrYm94VGJGaWx0ZXJEaXJlY3RpdmUgZXh0ZW5kcyBUYlNlbGVjdGVkRmlsdGVyRGlyZWN0aXZlIHtcclxuICBwcml2YXRlIG1hdENoZWNrYm94ID0gaW5qZWN0KE1hdENoZWNrYm94KTtcclxuXHJcblxyXG4gIG92ZXJyaWRlIHNldCBhY3RpdmUodmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm1hdENoZWNrYm94LmNoZWNrZWQgPSB2YWw7XHJcbiAgICBzdXBlci5hY3RpdmUgPSB2YWw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgbWF0Q2hlY2tib3ggPSBpbmplY3QoTWF0Q2hlY2tib3gpO1xyXG4gICAgc3VwZXIobWF0Q2hlY2tib3guY2hhbmdlLCAoKSA9PiBtYXRDaGVja2JveC5jaGVja2VkKTtcclxuICAgIHRoaXMubWF0Q2hlY2tib3ggPSBtYXRDaGVja2JveDtcclxuICB9XHJcbn1cclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ21hdC1zbGlkZS10b2dnbGVbdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdFNsaWRlVG9nZ2xlVGJGaWx0ZXJEaXJlY3RpdmUgfV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdFNsaWRlVG9nZ2xlVGJGaWx0ZXJEaXJlY3RpdmU8VCA9IGFueT4gZXh0ZW5kcyBUYlNlbGVjdGVkRmlsdGVyRGlyZWN0aXZlPFQ+IHtcclxuICBwcml2YXRlIG1hdFNsaWRlVG9nZ2xlOiBNYXRTbGlkZVRvZ2dsZTtcclxuXHJcbiAgb3ZlcnJpZGUgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubWF0U2xpZGVUb2dnbGUuY2hlY2tlZCA9IHZhbDtcclxuICAgIHN1cGVyLmFjdGl2ZSA9IHZhbDtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBtYXRTbGlkZVRvZ2dsZSA9IGluamVjdChNYXRTbGlkZVRvZ2dsZSk7XHJcblxyXG4gICAgc3VwZXIobWF0U2xpZGVUb2dnbGUuY2hhbmdlLCAoKSA9PiBtYXRTbGlkZVRvZ2dsZS5jaGVja2VkKTtcclxuICAgIHRoaXMubWF0U2xpZGVUb2dnbGUgPSBtYXRTbGlkZVRvZ2dsZTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBSYWRpbyBidXR0b25cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdtYXQtcmFkaW8tYnV0dG9uW3RiQ3VzdG9tRmlsdGVyXScsXHJcbiAgaW5wdXRzOiBbJ3ByZWRpY2F0ZTogdGJDdXN0b21GaWx0ZXInXSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFRhYmxlQ3VzdG9tRmlsdGVyRGlyZWN0aXZlLCB1c2VFeGlzdGluZzogTWF0UmFkaW9CdXR0b25UYkZpbHRlckRpcmVjdGl2ZSB9XSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0UmFkaW9CdXR0b25UYkZpbHRlckRpcmVjdGl2ZSBleHRlbmRzIFRiU2VsZWN0ZWRGaWx0ZXJEaXJlY3RpdmUge1xyXG4gIHByaXZhdGUgbWF0UmFkaW9CdXR0b246IE1hdFJhZGlvQnV0dG9uO1xyXG5cclxuXHJcbiAgb3ZlcnJpZGUgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubWF0UmFkaW9CdXR0b24uY2hlY2tlZCA9IHZhbDtcclxuICAgIHN1cGVyLmFjdGl2ZSA9IHZhbDtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBtYXRSYWRpb0J1dHRvbiA9IGluamVjdChNYXRSYWRpb0J1dHRvbik7XHJcblxyXG4gICAgc3VwZXIobWF0UmFkaW9CdXR0b24uY2hhbmdlLCAoKSA9PiBtYXRSYWRpb0J1dHRvbi5jaGVja2VkKTtcclxuICAgIHRoaXMubWF0UmFkaW9CdXR0b24gPSBtYXRSYWRpb0J1dHRvbjtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vIE9wdGlvbiAoc2VsZWN0KVxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ21hdC1vcHRpb25bdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdE9wdGlvblRiRmlsdGVyRGlyZWN0aXZlIH1dLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRPcHRpb25UYkZpbHRlckRpcmVjdGl2ZSBleHRlbmRzIFRiU2VsZWN0ZWRGaWx0ZXJEaXJlY3RpdmUge1xyXG4gIHByaXZhdGUgbWF0T3B0aW9uOiBNYXRPcHRpb247XHJcblxyXG5cclxuICBvdmVycmlkZSBzZXQgYWN0aXZlKHZhbDogYm9vbGVhbikge1xyXG4gICAgaWYodmFsKSB7XHJcbiAgICAgIHRoaXMubWF0T3B0aW9uLnNlbGVjdCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tYXRPcHRpb24uZGVzZWxlY3QoKTtcclxuICAgIH1cclxuICAgIHN1cGVyLmFjdGl2ZSA9IHZhbDtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBtYXRPcHRpb24gPSBpbmplY3QoTWF0T3B0aW9uKTtcclxuXHJcbiAgICBzdXBlciggbWF0T3B0aW9uLm9uU2VsZWN0aW9uQ2hhbmdlLnBpcGUodGFwKCBkID0+IHtcclxuICAgICAgaWYoIW1hdE9wdGlvbi52YWx1ZSkge1xyXG4gICAgICAgIG1hdE9wdGlvbi52YWx1ZSA9IHV1aWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICkpLCAoKSA9PiBtYXRPcHRpb24uc2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5tYXRPcHRpb24gPSBtYXRPcHRpb247XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBCdXR0b24gdG9nZ2xlXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnbWF0LWJ1dHRvbi10b2dnbGVbdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdEJ1dHRvblRvZ2dsZUZpbHRlckRpcmVjdGl2ZSB9XSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0QnV0dG9uVG9nZ2xlRmlsdGVyRGlyZWN0aXZlIGV4dGVuZHMgVGJTZWxlY3RlZEZpbHRlckRpcmVjdGl2ZSB7XHJcbiAgcHJpdmF0ZSBtYXRCdXR0b25Ub2dnbGU6IE1hdEJ1dHRvblRvZ2dsZTtcclxuXHJcbiAgb3ZlcnJpZGUgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubWF0QnV0dG9uVG9nZ2xlLmNoZWNrZWQgPSB2YWw7XHJcbiAgICBzdXBlci5hY3RpdmUgPSB2YWw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgbWF0QnV0dG9uVG9nZ2xlID0gaW5qZWN0KE1hdEJ1dHRvblRvZ2dsZSk7XHJcblxyXG4gICAgc3VwZXIobWF0QnV0dG9uVG9nZ2xlLmNoYW5nZSwgKCkgPT4gbWF0QnV0dG9uVG9nZ2xlLmNoZWNrZWQpO1xyXG4gICAgdGhpcy5tYXRCdXR0b25Ub2dnbGUgPSBtYXRCdXR0b25Ub2dnbGU7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|