@seniorsistemas/exclusion-process-component 0.1.0 → 0.2.1-2d8fcb05-679c-44e2-bb03-d0034a226dc9
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/bundles/seniorsistemas-exclusion-process-component.umd.js +127 -36
- package/bundles/seniorsistemas-exclusion-process-component.umd.js.map +1 -1
- package/bundles/seniorsistemas-exclusion-process-component.umd.min.js +2 -2
- package/bundles/seniorsistemas-exclusion-process-component.umd.min.js.map +1 -1
- package/esm2015/exclusion-details/exclusion-details.component.js +88 -10
- package/esm2015/exclusion-details/protocols/exclusion-process-status-changed.js +1 -0
- package/esm2015/exclusion-details/protocols/web-socket-event-data.js +1 -0
- package/esm2015/exclusions-list/exclusions-list.component.js +23 -15
- package/esm2015/exclusions-list/exclusions-list.routing.js +2 -2
- package/esm2015/services/logical-delete.service.js +10 -11
- package/esm5/exclusion-details/exclusion-details.component.js +93 -10
- package/esm5/exclusion-details/protocols/exclusion-process-status-changed.js +1 -0
- package/esm5/exclusion-details/protocols/web-socket-event-data.js +1 -0
- package/esm5/exclusions-list/exclusions-list.component.js +24 -16
- package/esm5/exclusions-list/exclusions-list.routing.js +2 -2
- package/esm5/services/logical-delete.service.js +13 -12
- package/exclusion-details/exclusion-details.component.d.ts +11 -1
- package/exclusion-details/protocols/exclusion-process-status-changed.d.ts +8 -0
- package/exclusion-details/protocols/web-socket-event-data.d.ts +6 -0
- package/exclusions-list/exclusions-list.component.d.ts +6 -4
- package/fesm2015/seniorsistemas-exclusion-process-component.js +117 -32
- package/fesm2015/seniorsistemas-exclusion-process-component.js.map +1 -1
- package/fesm5/seniorsistemas-exclusion-process-component.js +126 -34
- package/fesm5/seniorsistemas-exclusion-process-component.js.map +1 -1
- package/package.json +14 -6
- package/seniorsistemas-exclusion-process-component.metadata.json +1 -1
- package/services/logical-delete.service.d.ts +1 -1
|
@@ -2,12 +2,13 @@ import { __decorate } from "tslib";
|
|
|
2
2
|
import * as moment from "moment";
|
|
3
3
|
import { Component, Output, ViewEncapsulation } from "@angular/core";
|
|
4
4
|
import { ActivatedRoute, Router } from "@angular/router";
|
|
5
|
-
import {
|
|
5
|
+
import { TranslateService } from "@ngx-translate/core";
|
|
6
6
|
import { Subject } from "rxjs";
|
|
7
7
|
import { finalize, takeUntil } from "rxjs/operators";
|
|
8
|
+
import { EnumBadgeColors, EnumColumnFieldType } from "@seniorsistemas/angular-components";
|
|
9
|
+
import { WebsocketService } from "@senior-gestao-empresarial/angular-components";
|
|
8
10
|
import { EnumExclusionProcessStatus } from "../enums/enum-exclusion-process-status";
|
|
9
11
|
import { LogicalDeleteService } from "../services/logical-delete.service";
|
|
10
|
-
import { TranslateService } from "@ngx-translate/core";
|
|
11
12
|
import { LogicalDeleteConfigService } from "../services/logical-delete-config.service";
|
|
12
13
|
let ExclusionDetailsComponent = class ExclusionDetailsComponent {
|
|
13
14
|
constructor(router, route, translate, logicalDeleteService, projectConfigs) {
|
|
@@ -46,22 +47,32 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
|
|
|
46
47
|
ngOnDestroy() {
|
|
47
48
|
this.ngUnsubscribe.next();
|
|
48
49
|
this.ngUnsubscribe.complete();
|
|
50
|
+
this.disconnectWebSocket();
|
|
49
51
|
}
|
|
50
52
|
showDetails(details) {
|
|
51
|
-
this.
|
|
53
|
+
this._exclusionDetails = details;
|
|
52
54
|
this._entityName = details.entityName;
|
|
53
55
|
this._isVisible = true;
|
|
54
56
|
this._processSummaryData = [];
|
|
57
|
+
this.processDetails = null;
|
|
55
58
|
this.entityDescription = details.entityDescription;
|
|
56
59
|
this.loadProcessDetails(details);
|
|
60
|
+
this.connectWebSocket();
|
|
61
|
+
}
|
|
62
|
+
onVisibilityChanged(event) {
|
|
63
|
+
this.closeDetails();
|
|
57
64
|
}
|
|
58
65
|
closeDetails() {
|
|
59
66
|
this._isVisible = false;
|
|
67
|
+
this._exclusionDetails = null;
|
|
68
|
+
this._processSummaryData = [];
|
|
69
|
+
this.disconnectWebSocket();
|
|
60
70
|
}
|
|
61
71
|
openExclusions() {
|
|
62
72
|
this.closeDetails();
|
|
63
|
-
this.router.navigate([
|
|
73
|
+
this.router.navigate([], {
|
|
64
74
|
queryParams: {
|
|
75
|
+
entityName: this._entityName,
|
|
65
76
|
entityDescription: this.entityDescription
|
|
66
77
|
}
|
|
67
78
|
});
|
|
@@ -78,14 +89,14 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
|
|
|
78
89
|
if (!((_a = this.processDetails) === null || _a === void 0 ? void 0 : _a.startDate)) {
|
|
79
90
|
return "";
|
|
80
91
|
}
|
|
81
|
-
return moment(this.processDetails.startDate).format("DD/MM/YYYY HH:mm");
|
|
92
|
+
return moment(this.processDetails.startDate).format("DD/MM/YYYY HH:mm:ss");
|
|
82
93
|
}
|
|
83
94
|
getFinishDate() {
|
|
84
95
|
var _a;
|
|
85
96
|
if (!((_a = this.processDetails) === null || _a === void 0 ? void 0 : _a.finishDate)) {
|
|
86
97
|
return "";
|
|
87
98
|
}
|
|
88
|
-
return moment(this.processDetails.finishDate).format("DD/MM/YYYY HH:mm");
|
|
99
|
+
return moment(this.processDetails.finishDate).format("DD/MM/YYYY HH:mm:ss");
|
|
89
100
|
}
|
|
90
101
|
isFinished() {
|
|
91
102
|
var _a;
|
|
@@ -172,14 +183,34 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
|
|
|
172
183
|
.pipe(takeUntil(this.ngUnsubscribe))
|
|
173
184
|
.pipe(finalize(() => this._isLoading = false))
|
|
174
185
|
.subscribe((process) => {
|
|
186
|
+
if (!process) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
175
189
|
this.processDetails = process;
|
|
176
190
|
this.loadProcessSummary(process);
|
|
177
191
|
});
|
|
178
192
|
}
|
|
193
|
+
sortByDate(startDate, finishDate) {
|
|
194
|
+
if (startDate.getTime() > finishDate.getTime()) {
|
|
195
|
+
return 1;
|
|
196
|
+
}
|
|
197
|
+
if (startDate.getTime() < finishDate.getTime()) {
|
|
198
|
+
return -1;
|
|
199
|
+
}
|
|
200
|
+
return 0;
|
|
201
|
+
}
|
|
202
|
+
sortGroupsByStartDate(groups) {
|
|
203
|
+
return groups.sort((a, b) => this.sortByDate(a.startDate, b.finishDate));
|
|
204
|
+
}
|
|
205
|
+
sortStepsByStartDate(steps) {
|
|
206
|
+
return steps.sort((a, b) => this.sortByDate(a.startDate, b.finishDate));
|
|
207
|
+
}
|
|
179
208
|
loadProcessSummary(process) {
|
|
180
209
|
const stepLogs = [];
|
|
181
|
-
process.groups
|
|
182
|
-
|
|
210
|
+
this.sortGroupsByStartDate(process.groups)
|
|
211
|
+
.forEach(group => {
|
|
212
|
+
const steps = this.sortStepsByStartDate(group.steps)
|
|
213
|
+
.map(step => ({
|
|
183
214
|
description: step.description,
|
|
184
215
|
status: step.status,
|
|
185
216
|
errorMessage: step.errorMessage
|
|
@@ -188,6 +219,53 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
|
|
|
188
219
|
});
|
|
189
220
|
this._processSummaryData = stepLogs;
|
|
190
221
|
}
|
|
222
|
+
disconnectWebSocket() {
|
|
223
|
+
if (this._exclusionProcessStatusChangedSubscribe) {
|
|
224
|
+
this._exclusionProcessStatusChangedSubscribe.unsubscribe();
|
|
225
|
+
this._exclusionProcessStatusChangedSubscribe = null;
|
|
226
|
+
}
|
|
227
|
+
if (this._websocketService) {
|
|
228
|
+
this._websocketService.disconnect();
|
|
229
|
+
this._websocketService = null;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
connectWebSocket() {
|
|
233
|
+
if (this._websocketService) {
|
|
234
|
+
this.disconnectWebSocket();
|
|
235
|
+
}
|
|
236
|
+
this._websocketService = new WebsocketService();
|
|
237
|
+
this._websocketService
|
|
238
|
+
.onConnect()
|
|
239
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
240
|
+
.subscribe(() => {
|
|
241
|
+
this.startListeningWebhookEvents();
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
startListeningWebhookEvents() {
|
|
245
|
+
this._websocketService
|
|
246
|
+
.onError()
|
|
247
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
248
|
+
.subscribe((data) => {
|
|
249
|
+
console.error('onError', data);
|
|
250
|
+
});
|
|
251
|
+
this._exclusionProcessStatusChangedSubscribe = this._websocketService
|
|
252
|
+
.onEvent({
|
|
253
|
+
domain: this.projectConfigs.getDomain(),
|
|
254
|
+
service: this.projectConfigs.getService(),
|
|
255
|
+
primitive: "exclusionProcessStatusChanged"
|
|
256
|
+
})
|
|
257
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
258
|
+
.subscribe((event) => {
|
|
259
|
+
const { data } = event;
|
|
260
|
+
if (this._exclusionDetails.processId && data.pid === this._exclusionDetails.processId) {
|
|
261
|
+
this.loadProcessDetails(this._exclusionDetails);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
if (this._exclusionDetails.recordId && data.recordId === this._exclusionDetails.recordId) {
|
|
265
|
+
this.loadProcessDetails(this._exclusionDetails);
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
}
|
|
191
269
|
};
|
|
192
270
|
ExclusionDetailsComponent.ctorParameters = () => [
|
|
193
271
|
{ type: Router },
|
|
@@ -217,10 +295,10 @@ __decorate([
|
|
|
217
295
|
ExclusionDetailsComponent = __decorate([
|
|
218
296
|
Component({
|
|
219
297
|
selector: "s-exclusion-details",
|
|
220
|
-
template: "<s-sidebar [visible]=\"isVisible\" (visibleChange)=\"
|
|
298
|
+
template: "<s-sidebar [visible]=\"isVisible\" (visibleChange)=\"onVisibilityChanged($event)\" [header]=\"getSidebarTitle()\">\n <s-loading-state [loading]=\"isLoading\">\n <p-panel [showHeader]=\"false\" styleClass=\"s-exclusion-details-record-details-panel\">\n <div class=\"s-exclusion-details-record-details-container\">\n <div class=\"s-exclusion-details-record-icon-background\">\n <em class=\"far fa-file-alt s-exclusion-details-record-icon\"></em>\n </div>\n\n <div class=\"s-exclusion-details-record-details-recordinfo\">\n <span class=\"s-exclusion-details-record-details-type\">\n {{entityDescription}}\n </span>\n <span>\n {{getRecordDescription()}}\n </span>\n </div>\n\n <div class=\"s-exclusion-details-record-details-dateinfo\">\n <span>\n {{getStartDateLabel()}}: {{getInicialDate()}}\n </span>\n <span *ngIf=\"isFinished()\">\n {{getFinishDateLabel()}}: {{getFinishDate()}}\n </span>\n </div>\n </div>\n </p-panel>\n\n <p-panel>\n <p-header>\n {{getSummaryLabel()}}\n </p-header>\n\n <s-empty-state\n *ngIf=\"processSummaryData && !processSummaryData.length\"\n [title]=\"getEmptyStateTitle()\"\n [description]=\"getEmptyStateDescription()\">\n [showPrimaryAction]=\"false\"\n </s-empty-state>\n\n <p-table\n [value]=\"processSummaryData\"\n [columns]=\"processSummaryColumns\"\n dataKey=\"id\"\n [lazy]=\"false\"\n [scrollable]=\"false\"\n [paginator]=\"false\"\n *ngIf=\"processSummaryData && processSummaryData.length\">\n\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col *ngFor=\"let col of columns\"\n [style.width]=\"col.width\"\n />\n </colgroup>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [ngStyle]=\"col.style\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\" ></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\n <tr>\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n </tr>\n </ng-template>\n </p-table>\n </p-panel>\n </s-loading-state>\n\n <s-footer>\n <div class=\"ui-fluid\">\n <div class=\"ui-g\">\n <s-button [label]=\"getShowExclusionsButtonLabel()\" (onClick)=\"openExclusions()\"></s-button>\n <s-button [label]=\"getCloseButtonLabel()\" priority=\"link\" (onClick)=\"closeDetails()\"></s-button>\n </div>\n </div>\n </s-footer>\n</s-sidebar>\n",
|
|
221
299
|
encapsulation: ViewEncapsulation.None,
|
|
222
300
|
styles: [".s-exclusion-details-record-details-panel{margin-bottom:10px}.s-exclusion-details-record-details-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center}.s-exclusion-details-record-details-recordinfo{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:10px;-ms-flex:1;flex:1}.s-exclusion-details-record-details-dateinfo{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:10px;-ms-flex-align:end;align-items:flex-end;font-size:12px}.s-exclusion-details-record-details-type{color:#999}.s-exclusion-details-record-icon{font-size:22pt;color:#7e8d95}.s-exclusion-details-record-icon-background{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:16px;background-color:#c1cad1;border-radius:50%;height:60px;width:60px}"]
|
|
223
301
|
})
|
|
224
302
|
], ExclusionDetailsComponent);
|
|
225
303
|
export { ExclusionDetailsComponent };
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2V4Y2x1c2lvbi1wcm9jZXNzLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImV4Y2x1c2lvbi1kZXRhaWxzL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBNEIsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFcEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFTdkYsSUFBYSx5QkFBeUIsR0FBdEMsTUFBYSx5QkFBeUI7SUFvQ2xDLFlBQ3FCLE1BQWMsRUFDZCxLQUFxQixFQUNyQixTQUEyQixFQUMzQixvQkFBMEMsRUFDMUMsY0FBMEM7UUFKMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7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QU0sUUFBUSxHQUF1QixFQUFFLENBQUM7UUFFeEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2FBQ2IsQ0FBQSxDQUFDLENBQUM7WUFFeEIsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0NBQ0osQ0FBQTs7WUE5TGdDLE1BQU07WUFDUCxjQUFjO1lBQ1YsZ0JBQWdCO1lBQ0wsb0JBQW9CO1lBQzFCLDBCQUEwQjs7QUFyQy9EO0lBREMsTUFBTSxFQUFFOzBEQUdSO0FBR0Q7SUFEQyxNQUFNLEVBQUU7MERBR1I7QUFHRDtJQURDLE1BQU0sRUFBRTttRUFHUjtBQUdEO0lBREMsTUFBTSxFQUFFO3NFQUdSO0FBR0Q7SUFEQyxNQUFNLEVBQUU7aUVBQytCO0FBR3hDO0lBREMsTUFBTSxFQUFFO29FQUN3QjtBQTNCeEIseUJBQXlCO0lBTnJDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxxQkFBcUI7UUFDL0IsMDBIQUFpRDtRQUVqRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7S0FDeEMsQ0FBQztHQUNXLHlCQUF5QixDQW1PckM7U0FuT1kseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IEVudW1CYWRnZUNvbG9ycywgRW51bUNvbHVtbkZpZWxkVHlwZSwgVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMgfSBmcm9tIFwiLi4vZW51bXMvZW51bS1leGNsdXNpb24tcHJvY2Vzcy1zdGF0dXNcIjtcbmltcG9ydCB7IEV4Y2x1c2lvbkRldGFpbHMgfSBmcm9tIFwiLi9wcm90b2NvbHMvZXhjbHVzaW9uLWRldGFpbHNcIjtcbmltcG9ydCB7IExvZ2ljYWxEZWxldGVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2xvZ2ljYWwtZGVsZXRlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEV4Y2x1c2lvblByb2Nlc3MgfSBmcm9tIFwiLi4vbW9kZWxzL2luZGV4XCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IExvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2xvZ2ljYWwtZGVsZXRlLWNvbmZpZy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTaG93RGV0YWlsc0luZm9ybWF0aW9uIH0gZnJvbSBcIi4vcHJvdG9jb2xzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtZXhjbHVzaW9uLWRldGFpbHNcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgbG9jYWxlITogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IGlzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmlzaWJsZTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2FkaW5nO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBwcm9jZXNzU3VtbWFyeURhdGEoKTogRXhjbHVzaW9uRGV0YWlsc1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NTdW1tYXJ5RGF0YTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBnZXQgcHJvY2Vzc1N1bW1hcnlDb2x1bW5zKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NTdW1tYXJ5Q29sdW1ucztcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcHJvY2Vzc0RldGFpbHM6IEV4Y2x1c2lvblByb2Nlc3M7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZW50aXR5RGVzY3JpcHRpb246IHN0cmluZztcblxuICAgIHByaXZhdGUgX2VudGl0eU5hbWUgPSBcIlwiO1xuICAgIHByaXZhdGUgX2lzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzTG9hZGluZyA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3Byb2Nlc3NTdW1tYXJ5RGF0YTogRXhjbHVzaW9uRGV0YWlsc1tdID0gW107XG4gICAgcHJpdmF0ZSBfcHJvY2Vzc1N1bW1hcnlDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2ljYWxEZWxldGVTZXJ2aWNlOiBMb2dpY2FsRGVsZXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcm9qZWN0Q29uZmlnczogTG9naWNhbERlbGV0ZUNvbmZpZ1NlcnZpY2VcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5kYXRhXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IHsgW2NvbmZpZ3M6IHN0cmluZ106IGFueSwgbG9jYWxlQ29uZmlnOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlID0gZGF0YS5sb2NhbGVDb25maWc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1N1bW1hcnlDb2x1bW5zID0gdGhpcy5nZXRTdW1tYXJ5Q29sdW1ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dEZXRhaWxzKGRldGFpbHM6IFNob3dEZXRhaWxzSW5mb3JtYXRpb24pIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRGV0YWlscyA9IG51bGw7XG4gICAgICAgIHRoaXMuX2VudGl0eU5hbWUgPSBkZXRhaWxzLmVudGl0eU5hbWU7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTdW1tYXJ5RGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmVudGl0eURlc2NyaXB0aW9uID0gZGV0YWlscy5lbnRpdHlEZXNjcmlwdGlvbjtcblxuICAgICAgICB0aGlzLmxvYWRQcm9jZXNzRGV0YWlscyhkZXRhaWxzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2VEZXRhaWxzKCkge1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkV4Y2x1c2lvbnMoKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEZXRhaWxzKCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxuICAgICAgICAgICAgW1wiZXhjbHVzaW9ucy1saXN0XCIsIHRoaXMuX2VudGl0eU5hbWVdLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIGVudGl0eURlc2NyaXB0aW9uOiB0aGlzLmVudGl0eURlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSZWNvcmREZXNjcmlwdGlvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb2Nlc3NEZXRhaWxzPy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRGV0YWlscy5kZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5pY2lhbERhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9jZXNzRGV0YWlscz8uc3RhcnREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtb21lbnQodGhpcy5wcm9jZXNzRGV0YWlscy5zdGFydERhdGUpLmZvcm1hdChcIkREL01NL1lZWVkgSEg6bW1cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbmlzaERhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9jZXNzRGV0YWlscz8uZmluaXNoRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9tZW50KHRoaXMucHJvY2Vzc0RldGFpbHMuZmluaXNoRGF0ZSkuZm9ybWF0KFwiREQvTU0vWVlZWSBISDptbVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGaW5pc2hlZCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5wcm9jZXNzRGV0YWlscz8uZmluaXNoRGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2hvd0V4Y2x1c2lvbnNCdXR0b25MYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zaG93X2RlbGV0aW9uc2ApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDbG9zZUJ1dHRvbkxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2Nsb3NlYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN1bW1hcnlMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zdW1tYXJ5YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN0YXJ0RGF0ZUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXJ0YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbmlzaERhdGVMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9maW5pc2hgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2lkZWJhclRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2RldGFpbHNfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wdHlTdGF0ZVRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VtcHR5X3N0YXRlX3RpdGxlYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVtcHR5U3RhdGVEZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbXB0eV9zdGF0ZV9kZXNjcmlwdGlvbmApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3VtbWFyeUNvbHVtbnMoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwiZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXCJkZXNjcmlwdGlvblwiXSxcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9kZXNjcmlwdGlvbmApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuU1RSSU5HLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjMwMHB4XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBcInN0YXR1c1wiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcInN0YXR1c1wiXSxcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zdGF0dXNgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBFbnVtQ29sdW1uRmllbGRUeXBlLkVOVU0sXG4gICAgICAgICAgICAgICAgZW51bVByZWZpeDogYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbnVtX2V4Y2x1c2lvbl9wcm9jZXNzX3N0YXR1c19gLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMHB4XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRvb2x0aXA6IHRoaXMuZ2V0Q29sdW1uU3RhdHVzVG9vbHRpcCxcbiAgICAgICAgICAgICAgICBiYWRnZUNvbmZpZ3M6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5FUlJPUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuUkVEXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuUEVORElORyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuWUVMTE9XXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuUFJPQ0VTU0lORyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuQkxVRVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlNVQ0NFU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLkdSRUVOXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5TdGF0dXNUb29sdGlwKHJvd1ZhbHVlOiBFeGNsdXNpb25EZXRhaWxzKSB7XG4gICAgICAgIGlmIChyb3dWYWx1ZS5lcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiByb3dWYWx1ZS5lcnJvck1lc3NhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRQcm9jZXNzRGV0YWlscyhkZXRhaWxzOiBTaG93RGV0YWlsc0luZm9ybWF0aW9uKSB7XG4gICAgICAgIHRoaXMuX2lzTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgcHJvY2Vzc09ic2VydmFibGUgPSBkZXRhaWxzLnByb2Nlc3NJZFxuICAgICAgICAgICAgPyB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlLmdldFByb2Nlc3NEZXRhaWxzKGRldGFpbHMucHJvY2Vzc0lkKVxuICAgICAgICAgICAgOiB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlLmdldExhdGVzdFByb2Nlc3NEZXRhaWxzKGRldGFpbHMucmVjb3JkSWQpO1xuXG4gICAgICAgIHByb2Nlc3NPYnNlcnZhYmxlXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuX2lzTG9hZGluZyA9IGZhbHNlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3M6IEV4Y2x1c2lvblByb2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NEZXRhaWxzID0gcHJvY2VzcztcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9jZXNzU3VtbWFyeShwcm9jZXNzKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFByb2Nlc3NTdW1tYXJ5KHByb2Nlc3M6IEV4Y2x1c2lvblByb2Nlc3MpIHtcbiAgICAgICAgY29uc3Qgc3RlcExvZ3M6IEV4Y2x1c2lvbkRldGFpbHNbXSA9IFtdO1xuXG4gICAgICAgIHByb2Nlc3MuZ3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RlcHMgPSBncm91cC5zdGVwcy5tYXAoc3RlcCA9PiAoe1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdGVwLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHN0YXR1czogc3RlcC5zdGF0dXMsXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBzdGVwLmVycm9yTWVzc2FnZVxuICAgICAgICAgICAgfSBhcyBFeGNsdXNpb25EZXRhaWxzKSk7XG5cbiAgICAgICAgICAgIHN0ZXBMb2dzLnB1c2goLi4uc3RlcHMpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9wcm9jZXNzU3VtbWFyeURhdGEgPSBzdGVwTG9ncztcbiAgICB9XG59XG4iXX0=
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2V4Y2x1c2lvbi1wcm9jZXNzLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImV4Y2x1c2lvbi1kZXRhaWxzL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBV3ZGLElBQWEseUJBQXlCLEdBQXRDLE1BQWEseUJBQXlCO0lBdUNsQyxZQUNxQixNQUFjLEVBQ2QsS0FBcUIsRUFDckIsU0FBMkIsRUFDM0Isb0JBQTBDLEVBQzFDLGNBQTBDO1FBSjFDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixjQUFTLEdB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S0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFO2dCQUN0RixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDbkQ7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FDSixDQUFBOztZQTNSZ0MsTUFBTTtZQUNQLGNBQWM7WUFDVixnQkFBZ0I7WUFDTCxvQkFBb0I7WUFDMUIsMEJBQTBCOztBQXhDL0Q7SUFEQyxNQUFNLEVBQUU7MERBR1I7QUFHRDtJQURDLE1BQU0sRUFBRTswREFHUjtBQUdEO0lBREMsTUFBTSxFQUFFO21FQUdSO0FBR0Q7SUFEQyxNQUFNLEVBQUU7c0VBR1I7QUFHRDtJQURDLE1BQU0sRUFBRTtpRUFDK0I7QUFHeEM7SUFEQyxNQUFNLEVBQUU7b0VBQ3dCO0FBM0J4Qix5QkFBeUI7SUFOckMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHFCQUFxQjtRQUMvQix1MUhBQWlEO1FBRWpELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOztLQUN4QyxDQUFDO0dBQ1cseUJBQXlCLENBbVVyQztTQW5VWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRW51bUJhZGdlQ29sb3JzLCBFbnVtQ29sdW1uRmllbGRUeXBlLCBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgV2Vic29ja2V0U2VydmljZSB9IGZyb20gXCJAc2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzIH0gZnJvbSBcIi4uL2VudW1zL2VudW0tZXhjbHVzaW9uLXByb2Nlc3Mtc3RhdHVzXCI7XG5pbXBvcnQgeyBFeGNsdXNpb25EZXRhaWxzIH0gZnJvbSBcIi4vcHJvdG9jb2xzL2V4Y2x1c2lvbi1kZXRhaWxzXCI7XG5pbXBvcnQgeyBMb2dpY2FsRGVsZXRlU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9sb2dpY2FsLWRlbGV0ZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBFeGNsdXNpb25Qcm9jZXNzLCBFeGNsdXNpb25Qcm9jZXNzU3RlcCwgRXhjbHVzaW9uUHJvY2Vzc1N0ZXBHcm91cCB9IGZyb20gXCIuLi9tb2RlbHMvaW5kZXhcIjtcbmltcG9ydCB7IExvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2xvZ2ljYWwtZGVsZXRlLWNvbmZpZy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTaG93RGV0YWlsc0luZm9ybWF0aW9uIH0gZnJvbSBcIi4vcHJvdG9jb2xzXCI7XG5pbXBvcnQgeyBFeGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZCB9IGZyb20gXCIuL3Byb3RvY29scy9leGNsdXNpb24tcHJvY2Vzcy1zdGF0dXMtY2hhbmdlZFwiO1xuaW1wb3J0IHsgV2Vic29ja2V0RXZlbnREYXRhIH0gZnJvbSBcIi4vcHJvdG9jb2xzL3dlYi1zb2NrZXQtZXZlbnQtZGF0YVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJzLWV4Y2x1c2lvbi1kZXRhaWxzXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9leGNsdXNpb24tZGV0YWlscy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9leGNsdXNpb24tZGV0YWlscy5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEV4Y2x1c2lvbkRldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIGxvY2FsZSE6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucztcblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBpc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Zpc2libGU7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IGlzTG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9hZGluZztcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBnZXQgcHJvY2Vzc1N1bW1hcnlEYXRhKCk6IEV4Y2x1c2lvbkRldGFpbHNbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzU3VtbWFyeURhdGE7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IHByb2Nlc3NTdW1tYXJ5Q29sdW1ucygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzU3VtbWFyeUNvbHVtbnM7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHByb2Nlc3NEZXRhaWxzOiBFeGNsdXNpb25Qcm9jZXNzO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGVudGl0eURlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF9lbnRpdHlOYW1lID0gXCJcIjtcbiAgICBwcml2YXRlIF9pc1Zpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9wcm9jZXNzU3VtbWFyeURhdGE6IEV4Y2x1c2lvbkRldGFpbHNbXSA9IFtdO1xuICAgIHByaXZhdGUgX3Byb2Nlc3NTdW1tYXJ5Q29sdW1uczogYW55W10gPSBbXTtcbiAgICBwcml2YXRlIF93ZWJzb2NrZXRTZXJ2aWNlOiBXZWJzb2NrZXRTZXJ2aWNlO1xuICAgIHByaXZhdGUgX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfZXhjbHVzaW9uRGV0YWlsczogU2hvd0RldGFpbHNJbmZvcm1hdGlvbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2dpY2FsRGVsZXRlU2VydmljZTogTG9naWNhbERlbGV0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdENvbmZpZ3M6IExvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm91dGUuZGF0YVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiB7IFtjb25maWdzOiBzdHJpbmddOiBhbnksIGxvY2FsZUNvbmZpZzogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZSA9IGRhdGEubG9jYWxlQ29uZmlnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTdW1tYXJ5Q29sdW1ucyA9IHRoaXMuZ2V0U3VtbWFyeUNvbHVtbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgICAgIHRoaXMuZGlzY29ubmVjdFdlYlNvY2tldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93RGV0YWlscyhkZXRhaWxzOiBTaG93RGV0YWlsc0luZm9ybWF0aW9uKSB7XG4gICAgICAgIHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMgPSBkZXRhaWxzO1xuICAgICAgICB0aGlzLl9lbnRpdHlOYW1lID0gZGV0YWlscy5lbnRpdHlOYW1lO1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9wcm9jZXNzU3VtbWFyeURhdGEgPSBbXTtcblxuICAgICAgICB0aGlzLnByb2Nlc3NEZXRhaWxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5lbnRpdHlEZXNjcmlwdGlvbiA9IGRldGFpbHMuZW50aXR5RGVzY3JpcHRpb247XG5cbiAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RldGFpbHMoZGV0YWlscyk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0V2ViU29ja2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmlzaWJpbGl0eUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmNsb3NlRGV0YWlscygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZURldGFpbHMoKSB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9leGNsdXNpb25EZXRhaWxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1N1bW1hcnlEYXRhID0gW107XG4gICAgICAgIHRoaXMuZGlzY29ubmVjdFdlYlNvY2tldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuRXhjbHVzaW9ucygpIHtcbiAgICAgICAgdGhpcy5jbG9zZURldGFpbHMoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICBlbnRpdHlOYW1lOiB0aGlzLl9lbnRpdHlOYW1lLFxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlEZXNjcmlwdGlvbjogdGhpcy5lbnRpdHlEZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmVjb3JkRGVzY3JpcHRpb24oKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9jZXNzRGV0YWlscz8uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0RldGFpbHMuZGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldEluaWNpYWxEYXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMucHJvY2Vzc0RldGFpbHM/LnN0YXJ0RGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9tZW50KHRoaXMucHJvY2Vzc0RldGFpbHMuc3RhcnREYXRlKS5mb3JtYXQoXCJERC9NTS9ZWVlZIEhIOm1tOnNzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaW5pc2hEYXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMucHJvY2Vzc0RldGFpbHM/LmZpbmlzaERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLnByb2Nlc3NEZXRhaWxzLmZpbmlzaERhdGUpLmZvcm1hdChcIkREL01NL1lZWVkgSEg6bW06c3NcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRmluaXNoZWQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMucHJvY2Vzc0RldGFpbHM/LmZpbmlzaERhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNob3dFeGNsdXNpb25zQnV0dG9uTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc2hvd19kZWxldGlvbnNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2xvc2VCdXR0b25MYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9jbG9zZWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdW1tYXJ5TGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3VtbWFyeWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdGFydERhdGVMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zdGFydGApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaW5pc2hEYXRlTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZmluaXNoYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNpZGViYXJUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9kZXRhaWxzX3RpdGxlYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVtcHR5U3RhdGVUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbXB0eV9zdGF0ZV90aXRsZWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbXB0eVN0YXRlRGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW1wdHlfc3RhdGVfZGVzY3JpcHRpb25gKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN1bW1hcnlDb2x1bW5zKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBcImRlc2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW1wiZGVzY3JpcHRpb25cIl0sXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZGVzY3JpcHRpb25gKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBFbnVtQ29sdW1uRmllbGRUeXBlLlNUUklORyxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIzMDBweFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJzdGF0dXNcIixcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXCJzdGF0dXNcIl0sXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3RhdHVzYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5FTlVNLFxuICAgICAgICAgICAgICAgIGVudW1QcmVmaXg6IGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfYCxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDBweFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b29sdGlwOiB0aGlzLmdldENvbHVtblN0YXR1c1Rvb2x0aXAsXG4gICAgICAgICAgICAgICAgYmFkZ2VDb25maWdzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuRVJST1IsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLlJFRFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlBFTkRJTkcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLllFTExPV1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlBST0NFU1NJTkcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLkJMVUVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5TVUNDRVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5HUkVFTlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uU3RhdHVzVG9vbHRpcChyb3dWYWx1ZTogRXhjbHVzaW9uRGV0YWlscykge1xuICAgICAgICBpZiAocm93VmFsdWUuZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93VmFsdWUuZXJyb3JNZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkUHJvY2Vzc0RldGFpbHMoZGV0YWlsczogU2hvd0RldGFpbHNJbmZvcm1hdGlvbikge1xuICAgICAgICB0aGlzLl9pc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IHByb2Nlc3NPYnNlcnZhYmxlID0gZGV0YWlscy5wcm9jZXNzSWRcbiAgICAgICAgICAgID8gdGhpcy5sb2dpY2FsRGVsZXRlU2VydmljZS5nZXRQcm9jZXNzRGV0YWlscyhkZXRhaWxzLnByb2Nlc3NJZClcbiAgICAgICAgICAgIDogdGhpcy5sb2dpY2FsRGVsZXRlU2VydmljZS5nZXRMYXRlc3RQcm9jZXNzRGV0YWlscyhkZXRhaWxzLnJlY29yZElkKTtcblxuICAgICAgICBwcm9jZXNzT2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLl9pc0xvYWRpbmcgPSBmYWxzZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChwcm9jZXNzOiBFeGNsdXNpb25Qcm9jZXNzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcm9jZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NEZXRhaWxzID0gcHJvY2VzcztcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9jZXNzU3VtbWFyeShwcm9jZXNzKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydEJ5RGF0ZShzdGFydERhdGU6IERhdGUsIGZpbmlzaERhdGU6IERhdGUpIHtcbiAgICAgICAgaWYgKHN0YXJ0RGF0ZS5nZXRUaW1lKCkgPiBmaW5pc2hEYXRlLmdldFRpbWUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0RGF0ZS5nZXRUaW1lKCkgPCBmaW5pc2hEYXRlLmdldFRpbWUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydEdyb3Vwc0J5U3RhcnREYXRlKGdyb3VwczogRXhjbHVzaW9uUHJvY2Vzc1N0ZXBHcm91cFtdKSB7XG4gICAgICAgIHJldHVybiBncm91cHMuc29ydCgoYSwgYikgPT4gdGhpcy5zb3J0QnlEYXRlKGEuc3RhcnREYXRlLCBiLmZpbmlzaERhdGUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRTdGVwc0J5U3RhcnREYXRlKHN0ZXBzOiBFeGNsdXNpb25Qcm9jZXNzU3RlcFtdKSB7XG4gICAgICAgIHJldHVybiBzdGVwcy5zb3J0KChhLCBiKSA9PiB0aGlzLnNvcnRCeURhdGUoYS5zdGFydERhdGUsIGIuZmluaXNoRGF0ZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFByb2Nlc3NTdW1tYXJ5KHByb2Nlc3M6IEV4Y2x1c2lvblByb2Nlc3MpIHtcbiAgICAgICAgY29uc3Qgc3RlcExvZ3M6IEV4Y2x1c2lvbkRldGFpbHNbXSA9IFtdO1xuXG4gICAgICAgIHRoaXMuc29ydEdyb3Vwc0J5U3RhcnREYXRlKHByb2Nlc3MuZ3JvdXBzKVxuICAgICAgICAgICAgLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zb3J0U3RlcHNCeVN0YXJ0RGF0ZShncm91cC5zdGVwcylcbiAgICAgICAgICAgICAgICAgICAgLm1hcChzdGVwID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RlcC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogc3RlcC5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6IHN0ZXAuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIH0gYXMgRXhjbHVzaW9uRGV0YWlscykpO1xuXG4gICAgICAgICAgICAgICAgc3RlcExvZ3MucHVzaCguLi5zdGVwcyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9wcm9jZXNzU3VtbWFyeURhdGEgPSBzdGVwTG9ncztcbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc2Nvbm5lY3RXZWJTb2NrZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZSkge1xuICAgICAgICAgICAgdGhpcy5fZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRTdWJzY3JpYmUudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2UgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25uZWN0V2ViU29ja2V0KCkge1xuICAgICAgICBpZiAodGhpcy5fd2Vic29ja2V0U2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5kaXNjb25uZWN0V2ViU29ja2V0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlID0gbmV3IFdlYnNvY2tldFNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5fd2Vic29ja2V0U2VydmljZVxuICAgICAgICAgICAgLm9uQ29ubmVjdCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRMaXN0ZW5pbmdXZWJob29rRXZlbnRzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0TGlzdGVuaW5nV2ViaG9va0V2ZW50cygpIHtcbiAgICAgICAgdGhpcy5fd2Vic29ja2V0U2VydmljZVxuICAgICAgICAgICAgLm9uRXJyb3IoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdvbkVycm9yJywgZGF0YSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZSA9IHRoaXMuX3dlYnNvY2tldFNlcnZpY2VcbiAgICAgICAgICAgIC5vbkV2ZW50PFdlYnNvY2tldEV2ZW50RGF0YTxFeGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZD4+KHtcbiAgICAgICAgICAgICAgICBkb21haW46IHRoaXMucHJvamVjdENvbmZpZ3MuZ2V0RG9tYWluKCksXG4gICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5wcm9qZWN0Q29uZmlncy5nZXRTZXJ2aWNlKCksXG4gICAgICAgICAgICAgICAgcHJpbWl0aXZlOiBcImV4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkXCJcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBXZWJzb2NrZXRFdmVudERhdGE8RXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBldmVudDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9leGNsdXNpb25EZXRhaWxzLnByb2Nlc3NJZCAmJiBkYXRhLnBpZCA9PT0gdGhpcy5fZXhjbHVzaW9uRGV0YWlscy5wcm9jZXNzSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RldGFpbHModGhpcy5fZXhjbHVzaW9uRGV0YWlscyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZXhjbHVzaW9uRGV0YWlscy5yZWNvcmRJZCAmJiBkYXRhLnJlY29yZElkID09PSB0aGlzLl9leGNsdXNpb25EZXRhaWxzLnJlY29yZElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZFByb2Nlc3NEZXRhaWxzKHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9uLXByb2Nlc3Mtc3RhdHVzLWNoYW5nZWQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvZXhjbHVzaW9uLXByb2Nlc3MtY29tcG9uZW50LyIsInNvdXJjZXMiOlsiZXhjbHVzaW9uLWRldGFpbHMvcHJvdG9jb2xzL2V4Y2x1c2lvbi1wcm9jZXNzLXN0YXR1cy1jaGFuZ2VkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cyB9IGZyb20gXCIuLi8uLi9lbnVtcy9lbnVtLWV4Y2x1c2lvbi1wcm9jZXNzLXN0YXR1c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkIHtcbiAgICBwaWQ6IHN0cmluZztcbiAgICBlbnRpdHlOYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICByZWNvcmRJZDogc3RyaW5nO1xuICAgIHN0YXR1czogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXM7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXNvY2tldC1ldmVudC1kYXRhLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2V4Y2x1c2lvbi1wcm9jZXNzLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImV4Y2x1c2lvbi1kZXRhaWxzL3Byb3RvY29scy93ZWItc29ja2V0LWV2ZW50LWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgV2Vic29ja2V0RXZlbnREYXRhPFQ+IHtcbiAgICBkb21haW46IHN0cmluZztcbiAgICBwcmltaXRpdmU6IHN0cmluZztcbiAgICBzZXJ2aWNlOiBzdHJpbmc7XG4gICAgZGF0YTogVDtcbn1cbiJdfQ==
|