ets-fe-ng-sdk 17.0.98 → 17.0.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/Shared/components/table-https/table-https.component.mjs +9 -5
- package/fesm2022/ets-fe-ng-sdk.mjs +7 -2
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Shared/components/btn/btn.component.d.ts +2 -2
- package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
- package/lib/Shared/components/table-https/table-https.component.d.ts +6 -4
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, input, signal, inject } from '@angular/core';
|
|
1
|
+
import { Component, Input, Output, EventEmitter, input, signal, inject, DestroyRef } from '@angular/core';
|
|
2
2
|
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
3
|
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
4
4
|
import { MatSortModule } from '@angular/material/sort';
|
|
@@ -22,7 +22,6 @@ import { CommonModule } from '@angular/common';
|
|
|
22
22
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
23
23
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
24
24
|
import { TableBaseComponent } from '../table-plain/table-plain.component';
|
|
25
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
|
26
25
|
import * as i0 from "@angular/core";
|
|
27
26
|
import * as i1 from "@angular/common";
|
|
28
27
|
import * as i2 from "@angular/material/checkbox";
|
|
@@ -43,6 +42,7 @@ export class TableHttpsComponent extends TableBaseComponent {
|
|
|
43
42
|
this.resultsLength = signal(0);
|
|
44
43
|
this.data = signal([]);
|
|
45
44
|
this.allQueryData = signal({});
|
|
45
|
+
this.filteredAndPagedResults = signal([]);
|
|
46
46
|
this.isLoadingResults = signal(true);
|
|
47
47
|
this.form = new FormGroup({
|
|
48
48
|
pageNumber: new FormControl(null),
|
|
@@ -51,6 +51,7 @@ export class TableHttpsComponent extends TableBaseComponent {
|
|
|
51
51
|
pageSize: new FormControl(null),
|
|
52
52
|
});
|
|
53
53
|
this.route = inject(ActivatedRoute);
|
|
54
|
+
this.destroyRef = inject(DestroyRef);
|
|
54
55
|
/** Whether the number of selected elements matches the total number of rows. */
|
|
55
56
|
this.isAllSelected = () => {
|
|
56
57
|
return this.selection?.selected?.length === this.data?.length;
|
|
@@ -84,7 +85,9 @@ export class TableHttpsComponent extends TableBaseComponent {
|
|
|
84
85
|
sortBy: r.active,
|
|
85
86
|
});
|
|
86
87
|
});
|
|
87
|
-
this.
|
|
88
|
+
this.destroyRef.onDestroy(() => this.filteredAndPagedResultsSub?.unsubscribe());
|
|
89
|
+
this.filteredAndPagedResultsSub = merge(this.form.valueChanges)
|
|
90
|
+
.pipe(startWith({}), switchMap(() => {
|
|
88
91
|
// debugger
|
|
89
92
|
this.isLoadingResults.set(true);
|
|
90
93
|
const queryData = this.queryData;
|
|
@@ -105,7 +108,8 @@ export class TableHttpsComponent extends TableBaseComponent {
|
|
|
105
108
|
console.log(e);
|
|
106
109
|
this.isLoadingResults.set(false);
|
|
107
110
|
return observableOf([]);
|
|
108
|
-
}))
|
|
111
|
+
}))
|
|
112
|
+
.subscribe((r) => this.filteredAndPagedResults.set(r));
|
|
109
113
|
}
|
|
110
114
|
search(query) {
|
|
111
115
|
this.queryData = query;
|
|
@@ -178,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
|
|
|
178
182
|
}], dataFetched: [{
|
|
179
183
|
type: Output
|
|
180
184
|
}] } });
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaHR0cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWh0dHBzL3RhYmxlLWh0dHBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1odHRwcy90YWJsZS1odHRwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQWMsRUFBRSxJQUFJLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIs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d0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7eUJBQ3RGLENBQUM7cUJBQ0gsV0FDUTt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsU0FBUzt3QkFDVCxhQUFhO3FCQUNkOzhCQUlRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaW5wdXQsIGNvbXB1dGVkLCBzaWduYWwsIGluamVjdCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIyLCBUb0FueVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEdldENvbEZvcm1hdHRlZFBpcGUsIEdldFJhd0ZpZWxkc1BpcGUsIFRhYmxlUGlwZXNNb2R1bGUsIFRhYmxlVG9TdHJpbmdQaXBlIH0gZnJvbSAnLi4vdGFibGUtcGxhaW4vdGFibGUucGlwZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNcm91dGVyTGlua2lyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9pbmRleC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXROR01vZGVsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtTmdNb2RlbC9pbnB1dC1uZ21vZGVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmZvSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2luZm8taWNvbi9pbmZvLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRmllbGRzVG9EaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vZmllbGRzLXRvLWRpc3BsYXkvZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IEV4cG9ydFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwb3J0LXRhYmxlL2V4cG9ydC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgVGFibGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtcGxhaW4vdGFibGUtcGxhaW4uY29tcG9uZW50JztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YWJsZS1odHRwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1odHRwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi90YWJsZS1wbGFpbi90YWJsZS1wbGFpbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCcgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxuICAgIF0pLFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBFeHBvcnRUYWJsZUNvbXBvbmVudCxcbiAgICBGaWVsZHNUb0Rpc3BsYXlDb21wb25lbnQsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIEdldENvbEZvcm1hdHRlZFBpcGUsXG4gICAgR2V0UmF3RmllbGRzUGlwZSxcbiAgICBJbmZvSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dE5HTW9kZWxDb21wb25lbnQsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNcm91dGVyTGlua2lyZWN0aXZlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBUYWJsZVBpcGVzTW9kdWxlLFxuICAgIFRhYmxlVG9TdHJpbmdQaXBlLFxuICAgIFRvQW55UGlwZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUh0dHBzQ29tcG9uZW50PFRJdGVtID0gYW55PiBleHRlbmRzIFRhYmxlQmFzZUNvbXBvbmVudDxUSXRlbT4gaW1wbGVtZW50cyBPbkluaXQge1xuICBvYnNlcnZhYmxlRnVuYyA9IGlucHV0PChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8SVRhYmxlU2VhcmNoUmVzcDxUSXRlbT4+PigpO1xuICBASW5wdXQoKSBwYWdlTnVtYmVyID0gMDtcbiAgQElucHV0KCkgcXVlcnlEYXRhOiBhbnk7XG4gIHNob3dSZWZyZXNoQnRuID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICBAT3V0cHV0KCkgZGF0YUZldGNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRJdGVtPigpO1xuXG4gIG92ZXJyaWRlIHJlc3VsdHNMZW5ndGggPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgb3ZlcnJpZGUgZGF0YSA9IHNpZ25hbDxUSXRlbVtdPihbXSk7XG4gIGFsbFF1ZXJ5RGF0YSA9IHNpZ25hbCh7fSk7XG4gIGZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzOiBTaWduYWw8VEl0ZW1bXT47XG4gIGlzTG9hZGluZ1Jlc3VsdHMgPSBzaWduYWwodHJ1ZSk7XG5cbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHBhZ2VOdW1iZXI6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KG51bGwpLFxuICAgIHNvcnRCeTogbmV3IEZvcm1Db250cm9sPGtleW9mIFRJdGVtPihudWxsKSxcbiAgICBzb3J0RGlyZWN0aW9uOiBuZXcgRm9ybUNvbnRyb2w8J0FTQycgfCAnREVTQycgfCAnJz4obnVsbCksXG4gICAgcGFnZVNpemU6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KG51bGwpLFxuICB9KTtcbiAgcHVibGljIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIgfHwgMSxcbiAgICAgIHNvcnRCeTogdGhpcy5vcmRlckZpZWxkKCksXG4gICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLm9yZGVyRGlyZWN0aW9uKCkgPT0gJ2FzYycgPyAnQVNDJyA6IHRoaXMub3JkZXJEaXJlY3Rpb24oKSA9PSAnZGVzYycgPyAnREVTQycgOiAnJyxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplKCksXG4gICAgfSk7XG4gICAgdGhpcy5hbGxRdWVyeURhdGEuc2V0KHsgLi4udGhpcy5xdWVyeURhdGEsIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIH0pO1xuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICB0aGlzLmFsbFF1ZXJ5RGF0YS5zZXQoeyAuLi50aGlzLnF1ZXJ5RGF0YSwgLi4uciB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQocik7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5xdWVyeURhdGEgPSB0aGlzLnF1ZXJ5RGF0YTtcbiAgICAvLyB0aGlzLnF1ZXJ5RGF0YSA9IHRoaXMucXVlcnlEYXRhIHx8IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBwYWdlTnVtYmVyOiByLnBhZ2VJbmRleCArIDEsIHBhZ2VTaXplOiByLnBhZ2VTaXplIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBzb3J0RGlyZWN0aW9uOiByLmRpcmVjdGlvbiA9PSAnYXNjJyA/ICdBU0MnIDogci5kaXJlY3Rpb24gPT0gJ2Rlc2MnID8gJ0RFU0MnIDogJycsXG4gICAgICAgIHNvcnRCeTogci5hY3RpdmUgYXMgYW55LFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5maWx0ZXJlZEFuZFBhZ2VkUmVzdWx0cyA9IHRvU2lnbmFsKFxuICAgICAgbWVyZ2UodGhpcy5mb3JtLnZhbHVlQ2hhbmdlcykucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHt9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAvLyBkZWJ1Z2dlclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cy5zZXQodHJ1ZSk7XG4gICAgICAgICAgY29uc3QgcXVlcnlEYXRhID0gdGhpcy5xdWVyeURhdGE7XG4gICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgcmV0dXJuIHRoaXMub2JzZXJ2YWJsZUZ1bmMoKSh7XG4gICAgICAgICAgICAuLi5xdWVyeURhdGEsXG4gICAgICAgICAgICAuLi50aGlzLmZvcm0udmFsdWUsXG4gICAgICAgICAgfSkucGlwZShjYXRjaEVycm9yKChlKSA9PiBvZig8SVRhYmxlU2VhcmNoUmVzcD57IGNvbnRlbnQ6IFtdLCB0b3RhbDogMCB9KSkpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChyKSA9PiB0aGlzLnNlbGVjdGlvbi5jbGVhcigpKSxcbiAgICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgLy8gRmxpcCBmbGFnIHRvIHNob3cgdGhhdCBsb2FkaW5nIGhhcyBmaW5pc2hlZC5cbiAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnJlc3VsdHNMZW5ndGguc2V0KGRhdGE/LnRvdGFsIHx8IGRhdGE/LnRvdGFsRWxlbWVudHMpO1xuICAgICAgICAgIHRoaXMuZGF0YS5zZXQoZGF0YS5jb250ZW50IHx8IGRhdGE/LnBhZ2U/LmNvbnRlbnQpO1xuICAgICAgICAgIHRoaXMuZGF0YUZldGNoZWQuZW1pdCh0aGlzLmRhdGEgYXMgYW55KTtcbiAgICAgICAgICByZXR1cm4gZGF0YT8uY29udGVudDtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMuc2V0KGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKFtdKTtcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBzZWFyY2gocXVlcnk/OiBhbnkpIHtcbiAgICB0aGlzLnF1ZXJ5RGF0YSA9IHF1ZXJ5O1xuICAgIC8vIHRoaXMuZm9ybS5jb250cm9scy5wYWdlTnVtYmVyLnBhdGNoVmFsdWUoMCk7XG4gICAgaWYgKHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA+IDApIHRoaXMucmVzZXRQYWdpbmcoKTtcbiAgICBlbHNlIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGVsZW1lbnRzIG1hdGNoZXMgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzLiAqL1xuICBvdmVycmlkZSBpc0FsbFNlbGVjdGVkID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbj8uc2VsZWN0ZWQ/Lmxlbmd0aCA9PT0gdGhpcy5kYXRhPy5sZW5ndGg7XG4gIH07XG5cbiAgLyoqIFNlbGVjdHMgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvbi4gKi9cbiAgbWFzdGVyVG9nZ2xlKCkge1xuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMuZGF0YSgpKTtcbiAgfVxuXG4gIHJlc2V0UGFnaW5nKCk6IHZvaWQge1xuICAgIHRoaXMucGFnaW5hdG9yLmZpcnN0UGFnZSgpO1xuICAgIC8vIC5wYWdlSW5kZXggPSAwO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLnNlYXJjaCgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlU2VhcmNoUmVzcDxUID0gYW55PiB7XG4gIHRvdGFsRWxlbWVudHM/OiBudW1iZXI7XG4gIHBhZ2U/OiB7IGNvbnRlbnQ6IFRbXSB9O1xuICBjb250ZW50PzogVFtdO1xuICB0b3RhbD86IG51bWJlcjtcbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1odHRwc1wiPlxuICBAaWYgKGhlYWRlcigpKSB7XG4gICAgPGg2IGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+XG4gICAgICB7eyBoZWFkZXIoKSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgPC9oNj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBnLTMgbS0wIHJvdy1jb2xzLW1kLWF1dG8ganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHMtMFwiPlxuICAgICAgICBAaWYgKHN0YXJ0U2VjdGlvblRlbXBsYXRlKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGFydFNlY3Rpb25UZW1wbGF0ZSgpXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBlLTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTMgcm93LWNvbHMtbGctYXV0byBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgQGlmIChzaG93RXhwb3J0KCkpIHtcbiAgICAgICAgICAgICAgPGFwcC1leHBvcnQtdGFibGVcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWRhdGEoKT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWwoKVwiXG4gICAgICAgICAgICAgICAgW3NlYXJjaFF1ZXJ5XT1cImFsbFF1ZXJ5RGF0YSgpXCJcbiAgICAgICAgICAgICAgICBbc2VhcmNoRnVuY109XCJvYnNlcnZhYmxlRnVuYygpXCJcbiAgICAgICAgICAgICAgICBbZGlzcGxheWVkQ29sdW1uc109XCJjb21wdXRlZERpc3BsYXllZENvbHVucygpXCI+PC9hcHAtZXhwb3J0LXRhYmxlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIEBpZiAoc2hvd0FkZGl0aW9uYWxDb2x1bW5zKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICA8ZmllbGRzLXRvLWRpc3BsYXkgW2ZpZWxkc109XCJhbGxUYWJsZUNvbHVtbnMoKVwiIFtjdXJyZW50Q29sdW1uc109XCJjb21wdXRlZERpc3BsYXllZENvbHVucygpXCIgKGZpZWxkc0NoYW5nZWQpPVwiZmllbGRzQ2hhbmdlZCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHNob3dSZWZyZXNoQnRuKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgPGFwcC1idG4gaWNvbj1cInJlZnJlc2hcIiBbaWNvbkJ0bl09XCJ0cnVlXCIgKG1jbGljayk9XCJyZWZyZXNoKClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtdC0yIG92ZXJmbG93LWF1dG8ge3sgdGFibGVDb250YWluZXJDbGFzcygpIH19ICByb3VuZGVkLTEwXCIgW25nQ2xhc3NdPVwieyBib3JkZXI6IGRpc3RpbmN0KCkgfVwiPlxuICAgICAgPGxvYWRlciBbbG9hZGluZ109XCJpc0xvYWRpbmdSZXN1bHRzKClcIiBbaGVpZ2h0XT1cImNvbnRhaW5lcj8uc2Nyb2xsSGVpZ2h0ICsgNDAwXCI+XG4gICAgICAgIDxkaXYgI2NvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICAgICAgPHRhYmxlXG4gICAgICAgICAgICAgIG1hdC10YWJsZVxuICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJmaWx0ZXJlZEFuZFBhZ2VkUmVzdWx0cz8uKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIGQtdGFibGUgdGFibGVcIlxuICAgICAgICAgICAgICBbbXVsdGlUZW1wbGF0ZURhdGFSb3dzXT1cImlzRXhwYW5kYWJsZSgpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBzbWFsbGVyRm9udHM6IHNtYWxsZXJGb250cygpLCBub3dyYXA6IG5vd3JhcCgpLCBjZW50ZXJDZWxsczogY2VudGVyQ2VsbHMoKSwgY3Vydnk6IGN1cnZ5KCksICd0YWJsZS1zdHJpcGVkJzogc3RyaXBlZCgpIH1cIlxuICAgICAgICAgICAgICBtYXRTb3J0XG4gICAgICAgICAgICAgIG1hdFNvcnRBY3RpdmU9XCJ7eyBvcmRlckZpZWxkKCkgfCB0b0FueSB9fVwiXG4gICAgICAgICAgICAgIG1hdFNvcnREaXNhYmxlQ2xlYXJcbiAgICAgICAgICAgICAgW21hdFNvcnREaXJlY3Rpb25dPVwib3JkZXJEaXJlY3Rpb24oKVwiXG4gICAgICAgICAgICAgICN0YWJsZVxuICAgICAgICAgICAgICAobWF0U29ydENoYW5nZSk9XCJyZXNldFBhZ2luZygpXCI+XG4gICAgICAgICAgICAgIDwhLS0gQ2hlY2tib3ggQ29sdW1uIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm1zZWxlY3RcIiBbc3RpY2t5XT1cIiFwbGFjZVNlbGVjdGlvbkF0UmlnaHQoKVwiIFtzdGlja3lFbmRdPVwicGxhY2VTZWxlY3Rpb25BdFJpZ2h0KClcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJjaGVja2JveExhYmVsKClcIj48L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnRvZ2dsZShyb3cpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJjaGVja2JveExhYmVsKHJvdylcIj48L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPCEtLSBDT0xVTU5TIC0tPlxuICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgY29tcHV0ZWREaXNwbGF5ZWRDb2x1bnMoKTsgdHJhY2sgY29sOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgIEBzd2l0Y2ggKGNvbC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICA8IS0tIENIRUNLQk9YIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdjaGVja2JveCcpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5mby1pY29uIFt0ZXh0XT1cImNvbC5oaW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWluZm8taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmVtb3ZpbmcgdGhlIGVtcHR5IHNwYWNlIGFib3ZlIGNoZWNrYm94ZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWlucHV0LW5nbW9kZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29sLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJyb3dbY29sLmZdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwib3V0cHV0Q2hlY2tib3goY29sLmYsIHJvdywgJGV2ZW50KVwiPjwvYXBwLWlucHV0LW5nbW9kZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgICAgICA8IS0tIFN1YiBUYWJsZSAtLT5cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgndGFibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiY29sLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGFya1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZikgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBdPVwiY29sLnN1YlRhYmxlIHwgdGFibGVUb1N0cmluZzogcm93IHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0hlbHBJY29uXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1jbGFzcz1cInctYXV0b1wiPjwvYXBwLWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQ09MT1IgLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2NvbG9yJykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInt7IGNvbC5mIHwgdG9BbnkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNxdWFyZS0yXCIgW3N0eWxlXT1cIidiYWNrZ3JvdW5kLWNvbG9yOicgKyByb3dbY29sLmZdXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgICAgICA8IS0tIEJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgnYnV0dG9uJykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtzdGlja3ldPVwiY29sLnN0aWNreVwiIG1hdENvbHVtbkRlZj1cInt7IGNvbC5mIHwgdG9BbnkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsIGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5mby1pY29uIFt0ZXh0XT1cImNvbC5oaW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWluZm8taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7IGxldCBpbmRleCA9IGluZGV4XCIgY2xhc3M9XCJidG4tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiY29sLmljb24gfHwgY29sLmJ0bj8uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbC5idG4/LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWNsaWNrKT1cImNvbC5hY3Rpb24gPyBjb2wuYWN0aW9uKHJvdywgY29sLmYsIGdldEFjdGlvblN0YXR1c0NhbGxiYWNrKGNvbCksIGluZGV4KSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVscF09XCJjb2wuYnRuPy5oZWxwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dIZWxwSWNvbl09XCJjb2wuYnRuPy5zaG93SGVscEljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJjb2wuYnRuPy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5pXT1cImNvbC5idG4/Lm1pbmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJjb2wuYnRuPy5sb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwiY29sLmJ0bj8uaWNvbkJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1jbGFzcz1cInctYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2wuYnRuPy5kaXNhYmxlZCB8fCBjb2wuYnRuPy5sb2FkaW5nXCI+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICAgICAgPCEtLSBBQ1RJT04vQlROUyBDT0xVTU5TIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdidG5zJykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInt7IGNvbC5mIHwgdG9BbnkgfX1cIiBbc3RpY2t5RW5kXT1cInRydWVcIiBbc3RpY2t5XT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwiYnRuLWNlbGwgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5mby1pY29uIFt0ZXh0XT1cImNvbC5oaW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWluZm8taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImJ0bi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGNvbC1tZC1hdXRvIGNvbC1zbS1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGJ1dHRvbiBvZiBjb2wuYnV0dG9uczsgdHJhY2sgYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImJ1dHRvbi5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBdPVwiYnV0dG9uLmhlbHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0hlbHBJY29uXT1cImJ1dHRvbi5zaG93SGVscEljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJidXR0b24udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJidXR0b24uZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluaV09XCJidXR0b24ubWluaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uQnRuXT1cIiFidXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtY2xhc3M9XCJ3LWF1dG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWNsaWNrKT1cImJ1dHRvbi5hY3Rpb24ocm93LCBpLCBidG4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2J0bj48L2FwcC1idG4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLSBFRElUQUJMRSAtLT5cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgnZWRpdGFibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21xdWVyeVBhcmFtc109XCJjb2wubXF1ZXJ5UGFyYW1zIHwgZnVuY3Rpb25DYWxsZXIyOiByb3cgOiBjb2wuZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFttcm91dGVyTGlua109XCJjb2wucm91dGVGb3JtYXR0ZXIgfCBmdW5jdGlvbkNhbGxlcjI6IHJvdyA6IGNvbC5mXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCIocm93IHwgZ2V0Q29sRm9ybWF0dGVkOiBjb2wgfCBhc3luYykgfHwgJy0nXCI+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cImNvbC5hY3Rpb24gPyBjb2wuYWN0aW9uKHJvdywgY29sLmYpIDogbnVsbFwiIGNsYXNzPVwicHMtMSBwb2ludGVyIGZhcyBmYS1wZW5jaWwtYWx0XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLSBERUZBVUxUIC0tPlxuICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInt7IGNvbC5mIHwgdG9BbnkgfX1cIiBbc3RpY2t5XT1cImNvbC5zdGlja3lcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlciBkaXNhYmxlQ2xlYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbC5yb3V0ZUZvcm1hdHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGV4dHJhY3RSb3V0ZSB8IGZ1bmN0aW9uQ2FsbGVyMjogY29sIDogcm93OyBhcyBjZWxsUm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgcG9pbnRlcjogY29sLmFjdGlvbiwgbGluazogY29sLmFjdGlvbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb2wuYWN0aW9uID8gY29sLmFjdGlvbihyb3csIGNvbC5mKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cImNlbGxSb3V0ZS5xdWVyeVBhcmFtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rPVwie3sgY2VsbFJvdXRlLnJvdXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicm93IHwgZ2V0Q29sRm9ybWF0dGVkOiBjb2wgfCBhc3luY1wiPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IHBvaW50ZXI6IGNvbC5hY3Rpb24sIGxpbms6IGNvbC5hY3Rpb24gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbC5hY3Rpb24gPyBjb2wuYWN0aW9uKHJvdywgY29sLmYpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyb3cgfCBnZXRDb2xGb3JtYXR0ZWQ6IGNvbCB8IGFzeW5jXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgIDwhLS0gRVhQQU5EQUJMRSBDT0xVTU4tLT5cbiAgICAgICAgICAgICAgQGlmIChpc0V4cGFuZGFibGUoKSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiX2V4cGFuZENvbFwiIHN0aWNreUVuZD5cbiAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgYXJpYS1sYWJlbD1cInJvdyBhY3Rpb25zXCI+Jm5ic3A7PC90aD5cbiAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uQnRuXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21JY29uXT1cImV4cGFuZGVkRWxlbWVudCgpICE9PSByb3cgPyAnZmEgZmEtY2hldnJvbi1kb3duJyA6ICdmYSBmYS1jaGV2cm9uLXVwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiZXhwYW5kIHJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnaW5nVmFsdWU9XCJFeHBhbmQgUm93IEJ1dHRvbiB7eyByb3cgfCBqc29uIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwiZXhwYW5kZWRFbGVtZW50LnNldChleHBhbmRlZEVsZW1lbnQoKSA9PT0gcm93ID8gbnVsbCA6IHJvdyk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPjwvYXBwLWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgPCEtLSBPUFRJT05TIENPTFVNTiAtLT5cbiAgICAgICAgICAgICAgQGlmIChyb3dPcHRpb25zKCk/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm9wdGlvblwiIHN0aWNreUVuZD5cbiAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyIGRpc2FibGVDbGVhcj48L3RoPlxuICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIG1zLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLXYgbWUtMFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2Ygcm93T3B0aW9ucygpOyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInt7IG9wdGlvbi5pdGVtQ2xhc3MgfX1cIiAoY2xpY2spPVwib3B0aW9uLmFjdGlvbihyb3cpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAob3B0aW9uLmljb25DbGFzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3sgb3B0aW9uLmljb25DbGFzcyB9fVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24udCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwhLS0vLyAtLT5cblxuICAgICAgICAgICAgICBAaWYgKHJhd0NvbHVtbnMoKTsgYXMgZGNvbHMpIHtcbiAgICAgICAgICAgICAgICA8IS0tIEV4cGFuZGVkIENvbnRlbnQgQ29sdW1uIC0gVGhlIGRldGFpbCByb3cgaXMgbWFkZSB1cCBvZiB0aGlzIG9uZSBjb2x1bW4gdGhhdCBzcGFucyBhY3Jvc3MgYWxsIGNvbHVtbnMgLS0+XG4gICAgICAgICAgICAgICAgQGlmIChpc0V4cGFuZGFibGUoKSkge1xuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJleHBhbmRlZERldGFpbFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgW2F0dHIuY29sc3Bhbl09XCJkY29scz8ubGVuZ3RoIHx8IDFcIiBbbmdDbGFzc109XCJ7IGhpZGVCb3JkZXI6IHJvdyAhPSBleHBhbmRlZEVsZW1lbnQgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWVsZW1lbnQtZGV0YWlsXCIgW0BkZXRhaWxFeHBhbmRdPVwicm93ID09IGV4cGFuZGVkRWxlbWVudCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4cGFuZGVkUm93VGVtcGxhdGUoKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHsgcm93IH0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGNvbHNcIj48L3RyPlxuICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgbWF0LXJvd1xuICAgICAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRjb2xzXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgcG9pbnRlcjogc2hvd1Jvd1BvaW50ZXIoKSwgZGlzYWJsZWQ6IGlzRGlzYWJsZWRGdW5jKCkgPyBpc0Rpc2FibGVkRnVuYygpKHJvdykgOiBmYWxzZSB9XCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImlzRGlzYWJsZWRGdW5jKCkgJiYgaXNEaXNhYmxlZEZ1bmMoKShyb3cpID8gJ0Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJvd0NsaWNrKHJvdylcIj48L3RyPlxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cIm1hdC1yb3dcIiAqbWF0Tm9EYXRhUm93PlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibWF0LWNlbGwgbm8taXRlbVwiIFthdHRyLmNvbHNwYW5dPVwiZGNvbHM/Lmxlbmd0aCB8fCAxXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IG5vSXRlbVR4dCgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICBAaWYgKGlzRXhwYW5kYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydleHBhbmRlZERldGFpbCddXCIgY2xhc3M9XCJleHBhbmRlZC1kZXRhaWwtcm93XCIgW3N0eWxlLmhlaWdodC5weF09XCIwXCI+PC90cj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG1hdC1wYWdpbmF0b3IgW2xlbmd0aF09XCJyZXN1bHRzTGVuZ3RoKClcIiBbcGFnZVNpemVPcHRpb25zXT1cImNvbXB1dGVkUGFnZVNpemVPcHRpb25zKClcIiBbcGFnZVNpemVdPVwicGFnZVNpemUoKVwiIHNob3dGaXJzdExhc3RCdXR0b25zIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9sb2FkZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaHR0cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWh0dHBzL3RhYmxlLWh0dHBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1odHRwcy90YWJsZS1odHRwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxN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SUFBSSxjQUNKO3dCQUNWLE9BQU8sQ0FBQyxjQUFjLEVBQUU7NEJBQ3RCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzs0QkFDNUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzs0QkFDekMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3lCQUN0RixDQUFDO3FCQUNILFdBQ1E7d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsYUFBYTtxQkFDZDs4QkFJUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGlucHV0LCBjb21wdXRlZCwgc2lnbmFsLCBpbmplY3QsIFNpZ25hbCwgRGVzdHJveVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIyLCBUb0FueVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEdldENvbEZvcm1hdHRlZFBpcGUsIEdldFJhd0ZpZWxkc1BpcGUsIFRhYmxlUGlwZXNNb2R1bGUsIFRhYmxlVG9TdHJpbmdQaXBlIH0gZnJvbSAnLi4vdGFibGUtcGxhaW4vdGFibGUucGlwZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNcm91dGVyTGlua2lyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9pbmRleC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXROR01vZGVsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtTmdNb2RlbC9pbnB1dC1uZ21vZGVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmZvSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2luZm8taWNvbi9pbmZvLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRmllbGRzVG9EaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vZmllbGRzLXRvLWRpc3BsYXkvZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IEV4cG9ydFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwb3J0LXRhYmxlL2V4cG9ydC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgVGFibGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtcGxhaW4vdGFibGUtcGxhaW4uY29tcG9uZW50JztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YWJsZS1odHRwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1odHRwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi90YWJsZS1wbGFpbi90YWJsZS1wbGFpbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCcgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxuICAgIF0pLFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBFeHBvcnRUYWJsZUNvbXBvbmVudCxcbiAgICBGaWVsZHNUb0Rpc3BsYXlDb21wb25lbnQsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIEdldENvbEZvcm1hdHRlZFBpcGUsXG4gICAgR2V0UmF3RmllbGRzUGlwZSxcbiAgICBJbmZvSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dE5HTW9kZWxDb21wb25lbnQsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNcm91dGVyTGlua2lyZWN0aXZlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBUYWJsZVBpcGVzTW9kdWxlLFxuICAgIFRhYmxlVG9TdHJpbmdQaXBlLFxuICAgIFRvQW55UGlwZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUh0dHBzQ29tcG9uZW50PFRJdGVtID0gYW55PiBleHRlbmRzIFRhYmxlQmFzZUNvbXBvbmVudDxUSXRlbT4gaW1wbGVtZW50cyBPbkluaXQge1xuICBvYnNlcnZhYmxlRnVuYyA9IGlucHV0PChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8SVRhYmxlU2VhcmNoUmVzcDxUSXRlbT4+PigpO1xuICBASW5wdXQoKSBwYWdlTnVtYmVyID0gMDtcbiAgQElucHV0KCkgcXVlcnlEYXRhOiBhbnk7XG4gIHNob3dSZWZyZXNoQnRuID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICBAT3V0cHV0KCkgZGF0YUZldGNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRJdGVtPigpO1xuXG4gIG92ZXJyaWRlIHJlc3VsdHNMZW5ndGggPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgb3ZlcnJpZGUgZGF0YSA9IHNpZ25hbDxUSXRlbVtdPihbXSk7XG4gIGFsbFF1ZXJ5RGF0YSA9IHNpZ25hbCh7fSk7XG4gIGZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzID0gc2lnbmFsPFRJdGVtW10+KFtdKTtcbiAgZmlsdGVyZWRBbmRQYWdlZFJlc3VsdHNTdWI6IFN1YnNjcmlwdGlvbjtcbiAgaXNMb2FkaW5nUmVzdWx0cyA9IHNpZ25hbCh0cnVlKTtcblxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgcGFnZU51bWJlcjogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gICAgc29ydEJ5OiBuZXcgRm9ybUNvbnRyb2w8a2V5b2YgVEl0ZW0+KG51bGwpLFxuICAgIHNvcnREaXJlY3Rpb246IG5ldyBGb3JtQ29udHJvbDwnQVNDJyB8ICdERVNDJyB8ICcnPihudWxsKSxcbiAgICBwYWdlU2l6ZTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gIH0pO1xuICBwdWJsaWMgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwdWJsaWMgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIgfHwgMSxcbiAgICAgIHNvcnRCeTogdGhpcy5vcmRlckZpZWxkKCksXG4gICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLm9yZGVyRGlyZWN0aW9uKCkgPT0gJ2FzYycgPyAnQVNDJyA6IHRoaXMub3JkZXJEaXJlY3Rpb24oKSA9PSAnZGVzYycgPyAnREVTQycgOiAnJyxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplKCksXG4gICAgfSk7XG4gICAgdGhpcy5hbGxRdWVyeURhdGEuc2V0KHsgLi4udGhpcy5xdWVyeURhdGEsIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIH0pO1xuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICB0aGlzLmFsbFF1ZXJ5RGF0YS5zZXQoeyAuLi50aGlzLnF1ZXJ5RGF0YSwgLi4uciB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQocik7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5xdWVyeURhdGEgPSB0aGlzLnF1ZXJ5RGF0YTtcbiAgICAvLyB0aGlzLnF1ZXJ5RGF0YSA9IHRoaXMucXVlcnlEYXRhIHx8IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBwYWdlTnVtYmVyOiByLnBhZ2VJbmRleCArIDEsIHBhZ2VTaXplOiByLnBhZ2VTaXplIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBzb3J0RGlyZWN0aW9uOiByLmRpcmVjdGlvbiA9PSAnYXNjJyA/ICdBU0MnIDogci5kaXJlY3Rpb24gPT0gJ2Rlc2MnID8gJ0RFU0MnIDogJycsXG4gICAgICAgIHNvcnRCeTogci5hY3RpdmUgYXMgYW55LFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLmZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzU3ViPy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzU3ViID0gbWVyZ2UodGhpcy5mb3JtLnZhbHVlQ2hhbmdlcylcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgoe30pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmdSZXN1bHRzLnNldCh0cnVlKTtcbiAgICAgICAgICBjb25zdCBxdWVyeURhdGEgPSB0aGlzLnF1ZXJ5RGF0YTtcbiAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5vYnNlcnZhYmxlRnVuYygpKHtcbiAgICAgICAgICAgIC4uLnF1ZXJ5RGF0YSxcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybS52YWx1ZSxcbiAgICAgICAgICB9KS5waXBlKGNhdGNoRXJyb3IoKGUpID0+IG9mKDxJVGFibGVTZWFyY2hSZXNwPnsgY29udGVudDogW10sIHRvdGFsOiAwIH0pKSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHIpID0+IHRoaXMuc2VsZWN0aW9uLmNsZWFyKCkpLFxuICAgICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAvLyBGbGlwIGZsYWcgdG8gc2hvdyB0aGF0IGxvYWRpbmcgaGFzIGZpbmlzaGVkLlxuICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMucmVzdWx0c0xlbmd0aC5zZXQoZGF0YT8udG90YWwgfHwgZGF0YT8udG90YWxFbGVtZW50cyk7XG4gICAgICAgICAgdGhpcy5kYXRhLnNldChkYXRhLmNvbnRlbnQgfHwgZGF0YT8ucGFnZT8uY29udGVudCk7XG4gICAgICAgICAgdGhpcy5kYXRhRmV0Y2hlZC5lbWl0KHRoaXMuZGF0YSBhcyBhbnkpO1xuICAgICAgICAgIHJldHVybiBkYXRhPy5jb250ZW50O1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoW10pO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHRoaXMuZmlsdGVyZWRBbmRQYWdlZFJlc3VsdHMuc2V0KHIpKTtcbiAgfVxuXG4gIHNlYXJjaChxdWVyeT86IGFueSkge1xuICAgIHRoaXMucXVlcnlEYXRhID0gcXVlcnk7XG4gICAgLy8gdGhpcy5mb3JtLmNvbnRyb2xzLnBhZ2VOdW1iZXIucGF0Y2hWYWx1ZSgwKTtcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID4gMCkgdGhpcy5yZXNldFBhZ2luZygpO1xuICAgIGVsc2UgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MuICovXG4gIG92ZXJyaWRlIGlzQWxsU2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5zZWxlY3RlZD8ubGVuZ3RoID09PSB0aGlzLmRhdGE/Lmxlbmd0aDtcbiAgfTtcblxuICAvKiogU2VsZWN0cyBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xuICBtYXN0ZXJUb2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoLi4udGhpcy5kYXRhKCkpO1xuICB9XG5cbiAgcmVzZXRQYWdpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0b3IuZmlyc3RQYWdlKCk7XG4gICAgLy8gLnBhZ2VJbmRleCA9IDA7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVTZWFyY2hSZXNwPFQgPSBhbnk+IHtcbiAgdG90YWxFbGVtZW50cz86IG51bWJlcjtcbiAgcGFnZT86IHsgY29udGVudDogVFtdIH07XG4gIGNvbnRlbnQ/OiBUW107XG4gIHRvdGFsPzogbnVtYmVyO1xufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWh0dHBzXCI+XG4gIEBpZiAoaGVhZGVyKCkpIHtcbiAgICA8aDYgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj5cbiAgICAgIHt7IGhlYWRlcigpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICA8L2g2PlxuICB9XG4gIDxkaXYgY2xhc3M9XCJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGctMyBtLTAgcm93LWNvbHMtbWQtYXV0byBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcy0wXCI+XG4gICAgICAgIEBpZiAoc3RhcnRTZWN0aW9uVGVtcGxhdGUpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0YXJ0U2VjdGlvblRlbXBsYXRlKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicGUtMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctMyByb3ctY29scy1sZy1hdXRvIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dFeHBvcnQoKSkge1xuICAgICAgICAgICAgICA8YXBwLWV4cG9ydC10YWJsZVxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZGF0YSgpPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgICAgICAgICAgICBbc2VhcmNoUXVlcnldPVwiYWxsUXVlcnlEYXRhKClcIlxuICAgICAgICAgICAgICAgIFtzZWFyY2hGdW5jXT1cIm9ic2VydmFibGVGdW5jKClcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImNvbXB1dGVkRGlzcGxheWVkQ29sdW5zKClcIj48L2FwcC1leHBvcnQtdGFibGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmIChzaG93QWRkaXRpb25hbENvbHVtbnMoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICAgIDxmaWVsZHMtdG8tZGlzcGxheSBbZmllbGRzXT1cImFsbFRhYmxlQ29sdW1ucygpXCIgW2N1cnJlbnRDb2x1bW5zXT1cImNvbXB1dGVkRGlzcGxheWVkQ29sdW5zKClcIiAoZmllbGRzQ2hhbmdlZCk9XCJmaWVsZHNDaGFuZ2VkKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoc2hvd1JlZnJlc2hCdG4pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICA8YXBwLWJ0biBpY29uPVwicmVmcmVzaFwiIFtpY29uQnRuXT1cInRydWVcIiAobWNsaWNrKT1cInJlZnJlc2goKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm10LTIgb3ZlcmZsb3ctYXV0byB7eyB0YWJsZUNvbnRhaW5lckNsYXNzKCkgfX0gIHJvdW5kZWQtMTBcIiBbbmdDbGFzc109XCJ7IGJvcmRlcjogZGlzdGluY3QoKSB9XCI+XG4gICAgICA8bG9hZGVyIFtsb2FkaW5nXT1cImlzTG9hZGluZ1Jlc3VsdHMoKVwiIFtoZWlnaHRdPVwiY29udGFpbmVyPy5zY3JvbGxIZWlnaHQgKyA0MDBcIj5cbiAgICAgICAgPGRpdiAjY29udGFpbmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG4gICAgICAgICAgICA8dGFibGVcbiAgICAgICAgICAgICAgbWF0LXRhYmxlXG4gICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzPy4oKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgZC10YWJsZSB0YWJsZVwiXG4gICAgICAgICAgICAgIFttdWx0aVRlbXBsYXRlRGF0YVJvd3NdPVwiaXNFeHBhbmRhYmxlKClcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IHNtYWxsZXJGb250czogc21hbGxlckZvbnRzKCksIG5vd3JhcDogbm93cmFwKCksIGNlbnRlckNlbGxzOiBjZW50ZXJDZWxscygpLCBjdXJ2eTogY3VydnkoKSwgJ3RhYmxlLXN0cmlwZWQnOiBzdHJpcGVkKCkgfVwiXG4gICAgICAgICAgICAgIG1hdFNvcnRcbiAgICAgICAgICAgICAgbWF0U29ydEFjdGl2ZT1cInt7IG9yZGVyRmllbGQoKSB8IHRvQW55IH19XCJcbiAgICAgICAgICAgICAgbWF0U29ydERpc2FibGVDbGVhclxuICAgICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJvcmRlckRpcmVjdGlvbigpXCJcbiAgICAgICAgICAgICAgI3RhYmxlXG4gICAgICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cInJlc2V0UGFnaW5nKClcIj5cbiAgICAgICAgICAgICAgPCEtLSBDaGVja2JveCBDb2x1bW4gLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibXNlbGVjdFwiIFtzdGlja3ldPVwiIXBsYWNlU2VsZWN0aW9uQXRSaWdodCgpXCIgW3N0aWNreUVuZF09XCJwbGFjZVNlbGVjdGlvbkF0UmlnaHQoKVwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cImNoZWNrYm94TGFiZWwoKVwiPjwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKHJvdykgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cImNoZWNrYm94TGFiZWwocm93KVwiPjwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8IS0tIENPTFVNTlMgLS0+XG4gICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBjb21wdXRlZERpc3BsYXllZENvbHVucygpOyB0cmFjayBjb2w7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoY29sLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIDwhLS0gQ0hFQ0tCT1ggLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInt7IGNvbC5mIHwgdG9BbnkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZW1vdmluZyB0aGUgZW1wdHkgc3BhY2UgYWJvdmUgY2hlY2tib3hlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtbmdtb2RlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb2wuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInJvd1tjb2wuZl1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJvdXRwdXRDaGVja2JveChjb2wuZiwgcm93LCAkZXZlbnQpXCI+PC9hcHAtaW5wdXQtbmdtb2RlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gU3ViIFRhYmxlIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCd0YWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCBjbGFzcz1cInRleHQtY2VudGVyXCIgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJjb2wuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJjb2wuYWN0aW9uID8gY29sLmFjdGlvbihyb3csIGNvbC5mKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVscF09XCJjb2wuc3ViVGFibGUgfCB0YWJsZVRvU3RyaW5nOiByb3cgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVscEljb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWNsYXNzPVwidy1hdXRvXCI+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICAgICAgPCEtLSBDT0xPUiAtLT5cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgnY29sb3InKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWluZm8taWNvbiBbdGV4dF09XCJjb2wuaGludFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1pbmZvLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3F1YXJlLTJcIiBbc3R5bGVdPVwiJ2JhY2tncm91bmQtY29sb3I6JyArIHJvd1tjb2wuZl1cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdidXR0b24nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW3N0aWNreV09XCJjb2wuc3RpY2t5XCIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXhcIiBjbGFzcz1cImJ0bi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJjb2wuaWNvbiB8fCBjb2wuYnRuPy5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiY29sLmJ0bj8udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZiwgZ2V0QWN0aW9uU3RhdHVzQ2FsbGJhY2soY29sKSwgaW5kZXgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwXT1cImNvbC5idG4/LmhlbHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0hlbHBJY29uXT1cImNvbC5idG4/LnNob3dIZWxwSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImNvbC5idG4/LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbmldPVwiY29sLmJ0bj8ubWluaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImNvbC5idG4/LmxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJjb2wuYnRuPy5pY29uQnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWNsYXNzPVwidy1hdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5idG4/LmRpc2FibGVkIHx8IGNvbC5idG4/LmxvYWRpbmdcIj48L2FwcC1idG4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgICAgICA8IS0tIEFDVElPTi9CVE5TIENPTFVNTlMgLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2J0bnMnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiIFtzdGlja3lFbmRdPVwidHJ1ZVwiIFtzdGlja3ldPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJidG4tY2VsbCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiYnRuLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29sLW1kLWF1dG8gY29sLXNtLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoYnV0dG9uIG9mIGNvbC5idXR0b25zOyB0cmFjayBidXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiYnV0dG9uLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJidXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVscF09XCJidXR0b24uaGVscFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVscEljb25dPVwiYnV0dG9uLnNob3dIZWxwSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImJ1dHRvbi5ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5pXT1cImJ1dHRvbi5taW5pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwiIWJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1jbGFzcz1cInctYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwiYnV0dG9uLmFjdGlvbihyb3csIGksIGJ0bilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYnRuPjwvYXBwLWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tIEVESVRBQkxFIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdlZGl0YWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbXF1ZXJ5UGFyYW1zXT1cImNvbC5tcXVlcnlQYXJhbXMgfCBmdW5jdGlvbkNhbGxlcjI6IHJvdyA6IGNvbC5mXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21yb3V0ZXJMaW5rXT1cImNvbC5yb3V0ZUZvcm1hdHRlciB8IGZ1bmN0aW9uQ2FsbGVyMjogcm93IDogY29sLmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIihyb3cgfCBnZXRDb2xGb3JtYXR0ZWQ6IGNvbCB8IGFzeW5jKSB8fCAnLSdcIj48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZikgOiBudWxsXCIgY2xhc3M9XCJwcy0xIHBvaW50ZXIgZmFzIGZhLXBlbmNpbC1hbHRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tIERFRkFVTFQgLS0+XG4gICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiIFtzdGlja3ldPVwiY29sLnN0aWNreVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyIGRpc2FibGVDbGVhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnJvdXRlRm9ybWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXh0cmFjdFJvdXRlIHwgZnVuY3Rpb25DYWxsZXIyOiBjb2wgOiByb3c7IGFzIGNlbGxSb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBwb2ludGVyOiBjb2wuYWN0aW9uLCBsaW5rOiBjb2wuYWN0aW9uIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbC5hY3Rpb24gPyBjb2wuYWN0aW9uKHJvdywgY29sLmYpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiY2VsbFJvdXRlLnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCJ7eyBjZWxsUm91dGUucm91dGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyb3cgfCBnZXRDb2xGb3JtYXR0ZWQ6IGNvbCB8IGFzeW5jXCI+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgcG9pbnRlcjogY29sLmFjdGlvbiwgbGluazogY29sLmFjdGlvbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZikgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJvdyB8IGdldENvbEZvcm1hdHRlZDogY29sIHwgYXN5bmNcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgPCEtLSBFWFBBTkRBQkxFIENPTFVNTi0tPlxuICAgICAgICAgICAgICBAaWYgKGlzRXhwYW5kYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJfZXhwYW5kQ29sXCIgc3RpY2t5RW5kPlxuICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBhcmlhLWxhYmVsPVwicm93IGFjdGlvbnNcIj4mbmJzcDs8L3RoPlxuICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUljb25dPVwiZXhwYW5kZWRFbGVtZW50KCkgIT09IHJvdyA/ICdmYSBmYS1jaGV2cm9uLWRvd24nIDogJ2ZhIGZhLWNoZXZyb24tdXAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJleHBhbmQgcm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dpbmdWYWx1ZT1cIkV4cGFuZCBSb3cgQnV0dG9uIHt7IHJvdyB8IGpzb24gfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJleHBhbmRlZEVsZW1lbnQuc2V0KGV4cGFuZGVkRWxlbWVudCgpID09PSByb3cgPyBudWxsIDogcm93KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICA8IS0tIE9QVElPTlMgQ09MVU1OIC0tPlxuICAgICAgICAgICAgICBAaWYgKHJvd09wdGlvbnMoKT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwib3B0aW9uXCIgc3RpY2t5RW5kPlxuICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXIgZGlzYWJsZUNsZWFyPjwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gbXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtdiBtZS0wXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiByb3dPcHRpb25zKCk7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwie3sgb3B0aW9uLml0ZW1DbGFzcyB9fVwiIChjbGljayk9XCJvcHRpb24uYWN0aW9uKHJvdylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb24uaWNvbkNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7eyBvcHRpb24uaWNvbkNsYXNzIH19XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuXG4gICAgICAgICAgICAgIEBpZiAocmF3Q29sdW1ucygpOyBhcyBkY29scykge1xuICAgICAgICAgICAgICAgIDwhLS0gRXhwYW5kZWQgQ29udGVudCBDb2x1bW4gLSBUaGUgZGV0YWlsIHJvdyBpcyBtYWRlIHVwIG9mIHRoaXMgb25lIGNvbHVtbiB0aGF0IHNwYW5zIGFjcm9zcyBhbGwgY29sdW1ucyAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKGlzRXhwYW5kYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkRGV0YWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBbYXR0ci5jb2xzcGFuXT1cImRjb2xzPy5sZW5ndGggfHwgMVwiIFtuZ0NsYXNzXT1cInsgaGlkZUJvcmRlcjogcm93ICE9IGV4cGFuZGVkRWxlbWVudCB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZWxlbWVudC1kZXRhaWxcIiBbQGRldGFpbEV4cGFuZF09XCJyb3cgPT0gZXhwYW5kZWRFbGVtZW50ID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXhwYW5kZWRSb3dUZW1wbGF0ZSgpOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyByb3cgfSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkY29sc1wiPjwvdHI+XG4gICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICBtYXQtcm93XG4gICAgICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGNvbHNcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBwb2ludGVyOiBzaG93Um93UG9pbnRlcigpLCBkaXNhYmxlZDogaXNEaXNhYmxlZEZ1bmMoKSA/IGlzRGlzYWJsZWRGdW5jKCkocm93KSA6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiaXNEaXNhYmxlZEZ1bmMoKSAmJiBpc0Rpc2FibGVkRnVuYygpKHJvdykgPyAnRGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicm93Q2xpY2socm93KVwiPjwvdHI+XG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwibWF0LXJvd1wiICptYXROb0RhdGFSb3c+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbCBuby1pdGVtXCIgW2F0dHIuY29sc3Bhbl09XCJkY29scz8ubGVuZ3RoIHx8IDFcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbm9JdGVtVHh0KCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIEBpZiAoaXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2V4cGFuZGVkRGV0YWlsJ11cIiBjbGFzcz1cImV4cGFuZGVkLWRldGFpbC1yb3dcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjBcIj48L3RyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bWF0LXBhZ2luYXRvciBbbGVuZ3RoXT1cInJlc3VsdHNMZW5ndGgoKVwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwiY29tcHV0ZWRQYWdlU2l6ZU9wdGlvbnMoKVwiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZSgpXCIgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xvYWRlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -14243,6 +14243,7 @@ class TableHttpsComponent extends TableBaseComponent {
|
|
|
14243
14243
|
this.resultsLength = signal(0);
|
|
14244
14244
|
this.data = signal([]);
|
|
14245
14245
|
this.allQueryData = signal({});
|
|
14246
|
+
this.filteredAndPagedResults = signal([]);
|
|
14246
14247
|
this.isLoadingResults = signal(true);
|
|
14247
14248
|
this.form = new FormGroup({
|
|
14248
14249
|
pageNumber: new FormControl(null),
|
|
@@ -14251,6 +14252,7 @@ class TableHttpsComponent extends TableBaseComponent {
|
|
|
14251
14252
|
pageSize: new FormControl(null),
|
|
14252
14253
|
});
|
|
14253
14254
|
this.route = inject(ActivatedRoute);
|
|
14255
|
+
this.destroyRef = inject(DestroyRef);
|
|
14254
14256
|
/** Whether the number of selected elements matches the total number of rows. */
|
|
14255
14257
|
this.isAllSelected = () => {
|
|
14256
14258
|
return this.selection?.selected?.length === this.data?.length;
|
|
@@ -14284,7 +14286,9 @@ class TableHttpsComponent extends TableBaseComponent {
|
|
|
14284
14286
|
sortBy: r.active,
|
|
14285
14287
|
});
|
|
14286
14288
|
});
|
|
14287
|
-
this.
|
|
14289
|
+
this.destroyRef.onDestroy(() => this.filteredAndPagedResultsSub?.unsubscribe());
|
|
14290
|
+
this.filteredAndPagedResultsSub = merge(this.form.valueChanges)
|
|
14291
|
+
.pipe(startWith({}), switchMap(() => {
|
|
14288
14292
|
// debugger
|
|
14289
14293
|
this.isLoadingResults.set(true);
|
|
14290
14294
|
const queryData = this.queryData;
|
|
@@ -14305,7 +14309,8 @@ class TableHttpsComponent extends TableBaseComponent {
|
|
|
14305
14309
|
console.log(e);
|
|
14306
14310
|
this.isLoadingResults.set(false);
|
|
14307
14311
|
return of([]);
|
|
14308
|
-
}))
|
|
14312
|
+
}))
|
|
14313
|
+
.subscribe((r) => this.filteredAndPagedResults.set(r));
|
|
14309
14314
|
}
|
|
14310
14315
|
search(query) {
|
|
14311
14316
|
this.queryData = query;
|