@openziti/ziti-console-lib 0.9.3 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/fonts/icomoon.eot +0 -0
- package/assets/fonts/icomoon.svg +7 -1
- package/assets/fonts/icomoon.ttf +0 -0
- package/assets/fonts/icomoon.woff +0 -0
- package/assets/fonts/icomoon.woff2 +0 -0
- package/assets/images/android-os.png +0 -0
- package/assets/images/ios-os.png +0 -0
- package/assets/images/linux-os.png +0 -0
- package/assets/images/mac-os.png +0 -0
- package/assets/images/windows-os.png +0 -0
- package/assets/images/windows-server-os.png +0 -0
- package/assets/styles/dark.css +4 -1
- package/assets/styles/global.scss +26 -9
- package/assets/styles/icons.css +3 -0
- package/assets/styles/ziti.css +14 -0
- package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +1 -1
- package/esm2022/lib/features/data-table/data-table.component.mjs +14 -3
- package/esm2022/lib/features/json-view/json-view.component.mjs +2 -2
- package/esm2022/lib/features/loading-indicator/loading-indicator.component.mjs +2 -2
- package/esm2022/lib/features/multi-action-button/multi-action-button.component.mjs +2 -2
- package/esm2022/lib/features/no-items/no-items.component.mjs +2 -2
- package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/config-type/config-type-form.component.mjs +3 -3
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +3 -3
- package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +6 -3
- package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +3 -3
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +3 -3
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +10 -4
- package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.component.mjs +441 -0
- package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.service.mjs +82 -0
- package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +4 -2
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +3 -3
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.component.mjs +228 -0
- package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.service.mjs +119 -0
- package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +2 -2
- package/esm2022/lib/models/posture-check.mjs +29 -0
- package/esm2022/lib/pages/identities/identities-page.component.mjs +4 -12
- package/esm2022/lib/pages/posture-checks/posture-checks-page.component.mjs +104 -0
- package/esm2022/lib/pages/posture-checks/posture-checks-page.service.mjs +200 -0
- package/esm2022/lib/pages/services/services-page.component.mjs +13 -4
- package/esm2022/lib/pages/services/services-page.service.mjs +7 -7
- package/esm2022/lib/pages/transit-routers/transit-routers-page.component.mjs +140 -0
- package/esm2022/lib/pages/transit-routers/transit-routers-page.service.mjs +248 -0
- package/esm2022/lib/services/auth.service.mjs +76 -0
- package/esm2022/lib/services/login-service.class.mjs +1 -1
- package/esm2022/lib/services/settings-service.class.mjs +2 -1
- package/esm2022/lib/services/settings.service.mjs +2 -1
- package/esm2022/lib/services/ziti-controller-data.service.mjs +6 -4
- package/esm2022/lib/services/ziti-data.service.mjs +5 -5
- package/esm2022/lib/shared/list-page-component.class.mjs +14 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/lib/ziti-console-lib.module.mjs +25 -5
- package/esm2022/public-api.mjs +9 -1
- package/fesm2022/openziti-ziti-console-lib.mjs +7698 -6126
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/data-table/data-table.component.d.ts +1 -0
- package/lib/features/data-table/data-table.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts +2 -1
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +1 -0
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts +135 -0
- package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/posture-check/posture-check-form.service.d.ts +23 -0
- package/lib/features/projectable-forms/posture-check/posture-check-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -1
- package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts +51 -0
- package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/transit-router/transit-router-form.service.d.ts +27 -0
- package/lib/features/projectable-forms/transit-router/transit-router-form.service.d.ts.map +1 -0
- package/lib/models/posture-check.d.ts +17 -0
- package/lib/models/posture-check.d.ts.map +1 -0
- package/lib/pages/identities/identities-page.component.d.ts.map +1 -1
- package/lib/pages/posture-checks/posture-checks-page.component.d.ts +29 -0
- package/lib/pages/posture-checks/posture-checks-page.component.d.ts.map +1 -0
- package/lib/pages/posture-checks/posture-checks-page.service.d.ts +28 -0
- package/lib/pages/posture-checks/posture-checks-page.service.d.ts.map +1 -0
- package/lib/pages/services/services-page.component.d.ts +3 -1
- package/lib/pages/services/services-page.component.d.ts.map +1 -1
- package/lib/pages/services/services-page.service.d.ts +2 -2
- package/lib/pages/services/services-page.service.d.ts.map +1 -1
- package/lib/pages/transit-routers/transit-routers-page.component.d.ts +37 -0
- package/lib/pages/transit-routers/transit-routers-page.component.d.ts.map +1 -0
- package/lib/pages/transit-routers/transit-routers-page.service.d.ts +50 -0
- package/lib/pages/transit-routers/transit-routers-page.service.d.ts.map +1 -0
- package/lib/services/auth.service.d.ts +20 -0
- package/lib/services/auth.service.d.ts.map +1 -0
- package/lib/services/login-service.class.d.ts +2 -2
- package/lib/services/login-service.class.d.ts.map +1 -1
- package/lib/services/settings-service.class.d.ts +1 -0
- package/lib/services/settings-service.class.d.ts.map +1 -1
- package/lib/services/settings.service.d.ts +1 -0
- package/lib/services/settings.service.d.ts.map +1 -1
- package/lib/services/ziti-controller-data.service.d.ts +1 -1
- package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
- package/lib/services/ziti-data.service.d.ts +1 -1
- package/lib/services/ziti-data.service.d.ts.map +1 -1
- package/lib/shared/list-page-component.class.d.ts +1 -0
- package/lib/shared/list-page-component.class.d.ts.map +1 -1
- package/lib/ziti-console-lib.module.d.ts +79 -75
- package/lib/ziti-console-lib.module.d.ts.map +1 -1
- package/package.json +2 -1
- package/public-api.d.ts +8 -0
- package/public-api.d.ts.map +1 -1
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { Injectable, Inject } from "@angular/core";
|
|
2
|
+
import { isEmpty } from 'lodash';
|
|
3
|
+
import moment from 'moment';
|
|
4
|
+
import { ListPageServiceClass } from "../../shared/list-page-service.class";
|
|
5
|
+
import { TableColumnDefaultComponent } from "../../features/data-table/column-headers/table-column-default/table-column-default.component";
|
|
6
|
+
import { SETTINGS_SERVICE } from "../../services/settings.service";
|
|
7
|
+
import { ZITI_DATA_SERVICE } from "../../services/ziti-data.service";
|
|
8
|
+
import { EdgeRouter } from "../../models/edge-router";
|
|
9
|
+
import { GrowlerModel } from "../../features/messaging/growler.model";
|
|
10
|
+
import { SHAREDZ_EXTENSION } from "../../features/extendable/extensions-noop.service";
|
|
11
|
+
import { ConfirmComponent } from "../../features/confirm/confirm.component";
|
|
12
|
+
import { TableCellNameComponent } from "../../features/data-table/cells/table-cell-name/table-cell-name.component";
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "../../features/data-table/data-table-filter.service";
|
|
15
|
+
import * as i2 from "../../services/csv-download.service";
|
|
16
|
+
import * as i3 from "../../features/messaging/growler.service";
|
|
17
|
+
import * as i4 from "@angular/material/dialog";
|
|
18
|
+
import * as i5 from "@angular/router";
|
|
19
|
+
import * as i6 from "../../services/settings-service.class";
|
|
20
|
+
import * as i7 from "../../services/ziti-data.service";
|
|
21
|
+
class TransitRoutersPageService extends ListPageServiceClass {
|
|
22
|
+
constructor(settings, filterService, zitiService, csvDownloadService, growlerService, dialogForm, extService, router) {
|
|
23
|
+
super(settings, filterService, csvDownloadService, extService, router);
|
|
24
|
+
this.zitiService = zitiService;
|
|
25
|
+
this.csvDownloadService = csvDownloadService;
|
|
26
|
+
this.growlerService = growlerService;
|
|
27
|
+
this.dialogForm = dialogForm;
|
|
28
|
+
this.extService = extService;
|
|
29
|
+
this.router = router;
|
|
30
|
+
this.paging = this.DEFAULT_PAGING;
|
|
31
|
+
this.modalType = 'edge-router';
|
|
32
|
+
this.CSV_COLUMNS = [
|
|
33
|
+
{ label: 'Name', path: 'name' },
|
|
34
|
+
{ label: 'Verified', path: 'isVerified' },
|
|
35
|
+
{ label: 'Online', path: 'isOnline' },
|
|
36
|
+
{ label: 'Created', path: 'createdAt' },
|
|
37
|
+
{ label: 'Token', path: 'enrollmentToken' },
|
|
38
|
+
{ label: 'No Traversal', path: 'noTraversal' },
|
|
39
|
+
{ label: 'Fingerprint', path: 'fingerprint' },
|
|
40
|
+
{ label: 'Disabled', path: 'disabled' },
|
|
41
|
+
{ label: 'Tunneler Enabled', path: 'isTunnelerEnabled' },
|
|
42
|
+
{ label: 'Unverified CertPem', path: 'unverifiedCertPem' },
|
|
43
|
+
{ label: 'Unverified Fingerprint', path: 'unverifiedFingerprint' },
|
|
44
|
+
{ label: 'ID', path: 'id' },
|
|
45
|
+
];
|
|
46
|
+
this.selectedEdgeRouter = new EdgeRouter();
|
|
47
|
+
this.columnFilters = {
|
|
48
|
+
name: '',
|
|
49
|
+
os: '',
|
|
50
|
+
createdAt: '',
|
|
51
|
+
};
|
|
52
|
+
this.menuItems = [
|
|
53
|
+
{ name: 'Edit', action: 'update' },
|
|
54
|
+
{ name: 'Download JWT', action: 'download-enrollment' },
|
|
55
|
+
{ name: 'Reset Enrollment', action: 'reset-enrollment' },
|
|
56
|
+
{ name: 'Re-Enroll', action: 're-enroll' },
|
|
57
|
+
{ name: 'Delete', action: 'delete' },
|
|
58
|
+
];
|
|
59
|
+
this.tableHeaderActions = [
|
|
60
|
+
{ name: 'Download All', action: 'download-all' },
|
|
61
|
+
{ name: 'Download Selected', action: 'download-selected' },
|
|
62
|
+
];
|
|
63
|
+
this.resourceType = 'transit-routers';
|
|
64
|
+
this.validate = (formData) => {
|
|
65
|
+
return Promise.resolve({ passed: true });
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
initTableColumns() {
|
|
69
|
+
this.initMenuActions();
|
|
70
|
+
const enrollmentTokenFormatter = (row) => {
|
|
71
|
+
const token = row?.data?.enrollmentToken;
|
|
72
|
+
if (token) {
|
|
73
|
+
if (moment(row?.data?.enrollmentExpiresAt).isBefore()) {
|
|
74
|
+
return 'Enrollment Expired';
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return token;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
return '';
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
const columnFilters = this.columnFilters;
|
|
85
|
+
let tableColumns = [
|
|
86
|
+
{
|
|
87
|
+
colId: 'name',
|
|
88
|
+
field: 'name',
|
|
89
|
+
headerName: 'Name',
|
|
90
|
+
headerComponent: TableColumnDefaultComponent,
|
|
91
|
+
headerComponentParams: this.headerComponentParams,
|
|
92
|
+
cellRenderer: TableCellNameComponent,
|
|
93
|
+
cellRendererParams: { pathRoot: this.basePath, showRouterIcons: true },
|
|
94
|
+
onCellClicked: (data) => {
|
|
95
|
+
if (this.hasSelectedText()) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
this.openEditForm(data?.data?.id);
|
|
99
|
+
},
|
|
100
|
+
resizable: true,
|
|
101
|
+
cellClass: 'nf-cell-vert-align tCol',
|
|
102
|
+
sortable: true,
|
|
103
|
+
filter: true,
|
|
104
|
+
sortColumn: this.sort.bind(this),
|
|
105
|
+
sortDir: 'asc'
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
colId: 'verified',
|
|
109
|
+
field: 'isVerified',
|
|
110
|
+
headerName: 'Verified',
|
|
111
|
+
width: 100,
|
|
112
|
+
sortable: true,
|
|
113
|
+
headerComponent: TableColumnDefaultComponent,
|
|
114
|
+
resizable: true,
|
|
115
|
+
cellClass: 'nf-cell-vert-align tCol',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
colId: 'online',
|
|
119
|
+
field: 'isOnline',
|
|
120
|
+
headerName: 'Online',
|
|
121
|
+
width: 100,
|
|
122
|
+
headerComponent: TableColumnDefaultComponent,
|
|
123
|
+
resizable: true,
|
|
124
|
+
cellClass: 'nf-cell-vert-align tCol',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
colId: 'createdAt',
|
|
128
|
+
field: 'createdAt',
|
|
129
|
+
headerName: 'Created At',
|
|
130
|
+
headerComponent: TableColumnDefaultComponent,
|
|
131
|
+
valueFormatter: this.createdAtFormatter,
|
|
132
|
+
resizable: true,
|
|
133
|
+
sortable: true,
|
|
134
|
+
sortColumn: this.sort.bind(this),
|
|
135
|
+
cellClass: 'nf-cell-vert-align tCol',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
colId: 'enrollmentToken',
|
|
139
|
+
field: 'enrollmentToken',
|
|
140
|
+
headerName: 'Token',
|
|
141
|
+
headerComponent: TableColumnDefaultComponent,
|
|
142
|
+
valueFormatter: enrollmentTokenFormatter,
|
|
143
|
+
resizable: true,
|
|
144
|
+
cellClass: 'nf-cell-vert-align tCol',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
colId: 'jwt',
|
|
148
|
+
field: 'enrollmentJwt',
|
|
149
|
+
headerName: 'JWT',
|
|
150
|
+
headerComponent: TableColumnDefaultComponent,
|
|
151
|
+
cellRenderer: 'cellTokenComponent',
|
|
152
|
+
resizable: true,
|
|
153
|
+
cellClass: 'nf-cell-vert-align tCol',
|
|
154
|
+
}
|
|
155
|
+
];
|
|
156
|
+
if (this.extService.processTableColumns) {
|
|
157
|
+
tableColumns = this.extService.processTableColumns(tableColumns);
|
|
158
|
+
}
|
|
159
|
+
return tableColumns;
|
|
160
|
+
}
|
|
161
|
+
getData(filters, sort, page) {
|
|
162
|
+
// we can customize filters or sorting here before moving on...
|
|
163
|
+
this.paging.page = page || this.paging.page;
|
|
164
|
+
return super.getTableData('transit-routers', this.paging, filters, sort)
|
|
165
|
+
.then((results) => {
|
|
166
|
+
return this.processData(results);
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
processData(results) {
|
|
170
|
+
if (!isEmpty(results?.data)) {
|
|
171
|
+
//pre-process data before rendering
|
|
172
|
+
results.data = this.addActionsPerRow(results);
|
|
173
|
+
}
|
|
174
|
+
return results;
|
|
175
|
+
}
|
|
176
|
+
addActionsPerRow(results) {
|
|
177
|
+
return results.data.map((row) => {
|
|
178
|
+
row.actionList = ['update', 're-enroll', 'delete'];
|
|
179
|
+
if (this.hasEnrolmentToken(row)) {
|
|
180
|
+
row.actionList.push('download-enrollment');
|
|
181
|
+
}
|
|
182
|
+
this.addListItemExtensionActions(row);
|
|
183
|
+
return row;
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
hasEnrolmentToken(item) {
|
|
187
|
+
return !isEmpty(item?.enrollmentJwt);
|
|
188
|
+
}
|
|
189
|
+
getJWT(identity) {
|
|
190
|
+
return identity.enrollmentJwt;
|
|
191
|
+
}
|
|
192
|
+
downloadJWT(jwt, name) {
|
|
193
|
+
const element = document.createElement('a');
|
|
194
|
+
element.setAttribute('href', 'data:application/ziti-jwt;charset=utf-8,' + encodeURIComponent(jwt));
|
|
195
|
+
element.setAttribute('download', name + ".jwt");
|
|
196
|
+
element.style.display = 'none';
|
|
197
|
+
document.body.appendChild(element);
|
|
198
|
+
element.click();
|
|
199
|
+
document.body.removeChild(element);
|
|
200
|
+
}
|
|
201
|
+
reenroll(router) {
|
|
202
|
+
const data = {
|
|
203
|
+
appendId: 'ReenrollRouter',
|
|
204
|
+
title: 'Re-Enroll Router',
|
|
205
|
+
message: `<p>If the router is currently connected, it will be disconnected until the enrollment process is completed with the newly generated JWT. <p> Are you sure you want to re-enroll the selected router?`,
|
|
206
|
+
confirmLabel: 'Yes',
|
|
207
|
+
cancelLabel: 'Oops, no get me out of here',
|
|
208
|
+
showCancelLink: true
|
|
209
|
+
};
|
|
210
|
+
this.dialogRef = this.dialogForm.open(ConfirmComponent, {
|
|
211
|
+
data: data,
|
|
212
|
+
autoFocus: false,
|
|
213
|
+
});
|
|
214
|
+
return this.dialogRef.afterClosed().toPromise().then((result) => {
|
|
215
|
+
if (result?.confirmed) {
|
|
216
|
+
return this.zitiService.post(`transit-routers/${router.id}/re-enroll`, {}, true).then((result) => {
|
|
217
|
+
const growlerData = new GrowlerModel('success', 'Success', `Re-enroll Confirmed`, `Router re-enroll was sent. A new enrollment token is now available`);
|
|
218
|
+
this.growlerService.show(growlerData);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
return Promise.resolve();
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
openUpdate(entity) {
|
|
227
|
+
//Deprecated: No-Op
|
|
228
|
+
}
|
|
229
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TransitRoutersPageService, deps: [{ token: SETTINGS_SERVICE }, { token: i1.DataTableFilterService }, { token: ZITI_DATA_SERVICE }, { token: i2.CsvDownloadService }, { token: i3.GrowlerService }, { token: i4.MatDialog }, { token: SHAREDZ_EXTENSION }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
230
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TransitRoutersPageService, providedIn: 'root' }); }
|
|
231
|
+
}
|
|
232
|
+
export { TransitRoutersPageService };
|
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TransitRoutersPageService, decorators: [{
|
|
234
|
+
type: Injectable,
|
|
235
|
+
args: [{
|
|
236
|
+
providedIn: 'root'
|
|
237
|
+
}]
|
|
238
|
+
}], ctorParameters: function () { return [{ type: i6.SettingsServiceClass, decorators: [{
|
|
239
|
+
type: Inject,
|
|
240
|
+
args: [SETTINGS_SERVICE]
|
|
241
|
+
}] }, { type: i1.DataTableFilterService }, { type: i7.ZitiDataService, decorators: [{
|
|
242
|
+
type: Inject,
|
|
243
|
+
args: [ZITI_DATA_SERVICE]
|
|
244
|
+
}] }, { type: i2.CsvDownloadService }, { type: i3.GrowlerService }, { type: i4.MatDialog }, { type: undefined, decorators: [{
|
|
245
|
+
type: Inject,
|
|
246
|
+
args: [SHAREDZ_EXTENSION]
|
|
247
|
+
}] }, { type: i5.Router }]; } });
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdC1yb3V0ZXJzLXBhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9wYWdlcy90cmFuc2l0LXJvdXRlcnMvdHJhbnNpdC1yb3V0ZXJzLXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQVksT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQ0gsMkJBQTJCLEVBQzlCLE1BQU0sOEZBQThGLENBQUM7QUFFdEcsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFLcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBSXBFLE9BQU8sRUFBbUIsaUJBQWlCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUUxRSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyRUFBMkUsQ0FBQzs7Ozs7Ozs7O0FBRWpILE1BR2EseUJBQTBCLFNBQVEsb0JBQW9CO0lBMEMvRCxZQUM4QixRQUE4QixFQUN4RCxhQUFxQyxFQUNGLFdBQTRCLEVBQ3RELGtCQUFzQyxFQUN2QyxjQUE4QixFQUM5QixVQUFxQixFQUNNLFVBQTRCLEVBQzVDLE1BQWM7UUFFakMsS0FBSyxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBUHBDLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUN0RCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ00sZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWhEN0IsV0FBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDOUIsY0FBUyxHQUFHLGFBQWEsQ0FBQztRQUV4QixnQkFBVyxHQUFHO1lBQ25CLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDO1lBQzdCLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFDO1lBQ3ZDLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDO1lBQ25DLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFDO1lBQ3JDLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUM7WUFDekMsRUFBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUM7WUFDNUMsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUM7WUFDM0MsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUM7WUFDckMsRUFBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFDO1lBQ3RELEVBQUMsS0FBSyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBQztZQUN4RCxFQUFDLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUM7WUFDaEUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUM7U0FDNUIsQ0FBQztRQUVGLHVCQUFrQixHQUFRLElBQUksVUFBVSxFQUFFLENBQUM7UUFDM0Msa0JBQWEsR0FBUTtZQUNqQixJQUFJLEVBQUUsRUFBRTtZQUNSLEVBQUUsRUFBRSxFQUFFO1lBQ04sU0FBUyxFQUFFLEVBQUU7U0FDaEIsQ0FBQztRQUVPLGNBQVMsR0FBRztZQUNqQixFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBQztZQUNoQyxFQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFDO1lBQ3JELEVBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBQztZQUN0RCxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBQztZQUN4QyxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBQztTQUNyQyxDQUFBO1FBRVEsdUJBQWtCLEdBQUc7WUFDMUIsRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUM7WUFDOUMsRUFBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFDO1NBQzNELENBQUE7UUFFRCxpQkFBWSxHQUFHLGlCQUFpQixDQUFDO1FBZWpDLGFBQVEsR0FBRyxDQUFDLFFBQVEsRUFBNEIsRUFBRTtZQUM5QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUE7SUFKRCxDQUFDO0lBTUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNyQyxNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQztZQUN6QyxJQUFJLEtBQUssRUFBRTtnQkFDUCxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ25ELE9BQU8sb0JBQW9CLENBQUM7aUJBQy9CO3FCQUFNO29CQUNILE9BQU8sS0FBSyxDQUFDO2lCQUNoQjthQUNKO2lCQUFNO2dCQUNILE9BQU8sRUFBRSxDQUFDO2FBQ2I7UUFDTCxDQUFDLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBR3pDLElBQUksWUFBWSxHQUFHO1lBQ2Y7Z0JBQ0ksS0FBSyxFQUFFLE1BQU07Z0JBQ2IsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLGVBQWUsRUFBRSwyQkFBMkI7Z0JBQzVDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxxQkFBcUI7Z0JBQ2pELFlBQVksRUFBRSxzQkFBc0I7Z0JBQ3BDLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRTtnQkFDdEUsYUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ3BCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFO3dCQUN4QixPQUFPO3FCQUNWO29CQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztnQkFDRCxTQUFTLEVBQUUsSUFBSTtnQkFDZixTQUFTLEVBQUUseUJBQXlCO2dCQUNwQyxRQUFRLEVBQUUsSUFBSTtnQkFDZCxNQUFNLEVBQUUsSUFBSTtnQkFDWixVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNoQyxPQUFPLEVBQUUsS0FBSzthQUNqQjtZQUNEO2dCQUNJLEtBQUssRUFBRSxVQUFVO2dCQUNqQixLQUFLLEVBQUUsWUFBWTtnQkFDbkIsVUFBVSxFQUFFLFVBQVU7Z0JBQ3RCLEtBQUssRUFBRSxHQUFHO2dCQUNWLFFBQVEsRUFBRSxJQUFJO2dCQUNkLGVBQWUsRUFBRSwyQkFBMkI7Z0JBQzVDLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFNBQVMsRUFBRSx5QkFBeUI7YUFDdkM7WUFDRDtnQkFDSSxLQUFLLEVBQUUsUUFBUTtnQkFDZixLQUFLLEVBQUUsVUFBVTtnQkFDakIsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLEtBQUssRUFBRSxHQUFHO2dCQUNWLGVBQWUsRUFBRSwyQkFBMkI7Z0JBQzVDLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFNBQVMsRUFBRSx5QkFBeUI7YUFDdkM7WUFDRDtnQkFDSSxLQUFLLEVBQUUsV0FBVztnQkFDbEIsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLFVBQVUsRUFBRSxZQUFZO2dCQUN4QixlQUFlLEVBQUUsMkJBQTJCO2dCQUM1QyxjQUFjLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtnQkFDdkMsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDaEMsU0FBUyxFQUFFLHlCQUF5QjthQUN2QztZQUNEO2dCQUNJLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLFVBQVUsRUFBRSxPQUFPO2dCQUNuQixlQUFlLEVBQUUsMkJBQTJCO2dCQUM1QyxjQUFjLEVBQUUsd0JBQXdCO2dCQUN4QyxTQUFTLEVBQUUsSUFBSTtnQkFDZixTQUFTLEVBQUUseUJBQXlCO2FBQ3ZDO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLEtBQUs7Z0JBQ1osS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixlQUFlLEVBQUUsMkJBQTJCO2dCQUM1QyxZQUFZLEVBQUUsb0JBQW9CO2dCQUNsQyxTQUFTLEVBQUUsSUFBSTtnQkFDZixTQUFTLEVBQUUseUJBQXlCO2FBQ3ZDO1NBQ0osQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRTtZQUNyQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwRTtRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBcUIsRUFBRSxJQUFVLEVBQUUsSUFBVTtRQUNqRCwrREFBK0Q7UUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUM7YUFDbkUsSUFBSSxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxPQUFZO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3pCLG1DQUFtQztZQUNuQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNqRDtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFZO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1QixHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNuRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDN0IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUM5QztZQUNELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QyxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQUk7UUFDbEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUdELE1BQU0sQ0FBQyxRQUFhO1FBQ2hCLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJO1FBQ2pCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsMENBQTBDLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuRyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxJQUFJLEdBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQy9CLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQVc7UUFDaEIsTUFBTSxJQUFJLEdBQUc7WUFDVCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLEtBQUssRUFBRSxrQkFBa0I7WUFDekIsT0FBTyxFQUFFLHNNQUFzTTtZQUMvTSxZQUFZLEVBQUUsS0FBSztZQUNuQixXQUFXLEVBQUUsNkJBQTZCO1lBQzFDLGNBQWMsRUFBRSxJQUFJO1NBQ3ZCLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3BELElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLEtBQUs7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzVELElBQUksTUFBTSxFQUFFLFNBQVMsRUFBRTtnQkFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDN0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxZQUFZLENBQ2hDLFNBQVMsRUFDVCxTQUFTLEVBQ1QscUJBQXFCLEVBQ3JCLG9FQUFvRSxDQUN2RSxDQUFDO29CQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMxQyxDQUFDLENBQUMsQ0FBQzthQUNOO2lCQUFNO2dCQUNILE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQzVCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQVk7UUFDbkIsbUJBQW1CO0lBQ3ZCLENBQUM7K0dBNU9RLHlCQUF5QixrQkEyQ3RCLGdCQUFnQixtREFFaEIsaUJBQWlCLHNHQUlqQixpQkFBaUI7bUhBakRwQix5QkFBeUIsY0FGdEIsTUFBTTs7U0FFVCx5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQTRDUSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBRXZCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFJeEIsTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdCwgQ29tcG9uZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtjbG9uZURlZXAsIGlzRW1wdHl9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge0RhdGFUYWJsZUZpbHRlclNlcnZpY2UsIEZpbHRlck9ian0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHtMaXN0UGFnZVNlcnZpY2VDbGFzc30gZnJvbSBcIi4uLy4uL3NoYXJlZC9saXN0LXBhZ2Utc2VydmljZS5jbGFzc1wiO1xuaW1wb3J0IHtcbiAgICBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnRcbn0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLWRlZmF1bHQvdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50XCI7XG5pbXBvcnQge0NhbGxiYWNrUmVzdWx0c30gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2xpc3QtcGFnZS1mZWF0dXJlcy9saXN0LXBhZ2UtZm9ybS9saXN0LXBhZ2UtZm9ybS5jb21wb25lbnRcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7Q3N2RG93bmxvYWRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY3N2LWRvd25sb2FkLnNlcnZpY2VcIjtcbmltcG9ydCB7RWRnZVJvdXRlcn0gZnJvbSBcIi4uLy4uL21vZGVscy9lZGdlLXJvdXRlclwiO1xuaW1wb3J0IHt1bnNldCwgZm9yRWFjaH0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtJVG9vbHRpcEFuZ3VsYXJDb21wfSBmcm9tIFwiYWctZ3JpZC1hbmd1bGFyXCI7XG5pbXBvcnQge0lUb29sdGlwUGFyYW1zfSBmcm9tIFwiYWctZ3JpZC1jb21tdW5pdHlcIjtcbmltcG9ydCB7T1NUb29sdGlwQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS90b29sdGlwcy9vcy10b29sdGlwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtHcm93bGVyTW9kZWx9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9tZXNzYWdpbmcvZ3Jvd2xlci5tb2RlbFwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge1NldHRpbmdzU2VydmljZUNsYXNzfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2V0dGluZ3Mtc2VydmljZS5jbGFzc1wiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlLCBTSEFSRURaX0VYVEVOU0lPTn0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcbmltcG9ydCB7Q29uZmlybUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnRcIjtcbmltcG9ydCB7Um91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge1RhYmxlQ2VsbE5hbWVDb21wb25lbnR9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9kYXRhLXRhYmxlL2NlbGxzL3RhYmxlLWNlbGwtbmFtZS90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50XCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNpdFJvdXRlcnNQYWdlU2VydmljZSBleHRlbmRzIExpc3RQYWdlU2VydmljZUNsYXNzIHtcblxuICAgIHByaXZhdGUgcGFnaW5nID0gdGhpcy5ERUZBVUxUX1BBR0lORztcbiAgICBwdWJsaWMgbW9kYWxUeXBlID0gJ2VkZ2Utcm91dGVyJztcblxuICAgIG92ZXJyaWRlIENTVl9DT0xVTU5TID0gW1xuICAgICAgICB7bGFiZWw6ICdOYW1lJywgcGF0aDogJ25hbWUnfSxcbiAgICAgICAge2xhYmVsOiAnVmVyaWZpZWQnLCBwYXRoOiAnaXNWZXJpZmllZCd9LFxuICAgICAgICB7bGFiZWw6ICdPbmxpbmUnLCBwYXRoOiAnaXNPbmxpbmUnfSxcbiAgICAgICAge2xhYmVsOiAnQ3JlYXRlZCcsIHBhdGg6ICdjcmVhdGVkQXQnfSxcbiAgICAgICAge2xhYmVsOiAnVG9rZW4nLCBwYXRoOiAnZW5yb2xsbWVudFRva2VuJ30sXG4gICAgICAgIHtsYWJlbDogJ05vIFRyYXZlcnNhbCcsIHBhdGg6ICdub1RyYXZlcnNhbCd9LFxuICAgICAgICB7bGFiZWw6ICdGaW5nZXJwcmludCcsIHBhdGg6ICdmaW5nZXJwcmludCd9LFxuICAgICAgICB7bGFiZWw6ICdEaXNhYmxlZCcsIHBhdGg6ICdkaXNhYmxlZCd9LFxuICAgICAgICB7bGFiZWw6ICdUdW5uZWxlciBFbmFibGVkJywgcGF0aDogJ2lzVHVubmVsZXJFbmFibGVkJ30sXG4gICAgICAgIHtsYWJlbDogJ1VudmVyaWZpZWQgQ2VydFBlbScsIHBhdGg6ICd1bnZlcmlmaWVkQ2VydFBlbSd9LFxuICAgICAgICB7bGFiZWw6ICdVbnZlcmlmaWVkIEZpbmdlcnByaW50JywgcGF0aDogJ3VudmVyaWZpZWRGaW5nZXJwcmludCd9LFxuICAgICAgICB7bGFiZWw6ICdJRCcsIHBhdGg6ICdpZCd9LFxuICAgIF07XG5cbiAgICBzZWxlY3RlZEVkZ2VSb3V0ZXI6IGFueSA9IG5ldyBFZGdlUm91dGVyKCk7XG4gICAgY29sdW1uRmlsdGVyczogYW55ID0ge1xuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgb3M6ICcnLFxuICAgICAgICBjcmVhdGVkQXQ6ICcnLFxuICAgIH07XG5cbiAgICBvdmVycmlkZSBtZW51SXRlbXMgPSBbXG4gICAgICAgIHtuYW1lOiAnRWRpdCcsIGFjdGlvbjogJ3VwZGF0ZSd9LFxuICAgICAgICB7bmFtZTogJ0Rvd25sb2FkIEpXVCcsIGFjdGlvbjogJ2Rvd25sb2FkLWVucm9sbG1lbnQnfSxcbiAgICAgICAge25hbWU6ICdSZXNldCBFbnJvbGxtZW50JywgYWN0aW9uOiAncmVzZXQtZW5yb2xsbWVudCd9LFxuICAgICAgICB7bmFtZTogJ1JlLUVucm9sbCcsIGFjdGlvbjogJ3JlLWVucm9sbCd9LFxuICAgICAgICB7bmFtZTogJ0RlbGV0ZScsIGFjdGlvbjogJ2RlbGV0ZSd9LFxuICAgIF1cblxuICAgIG92ZXJyaWRlIHRhYmxlSGVhZGVyQWN0aW9ucyA9IFtcbiAgICAgICAge25hbWU6ICdEb3dubG9hZCBBbGwnLCBhY3Rpb246ICdkb3dubG9hZC1hbGwnfSxcbiAgICAgICAge25hbWU6ICdEb3dubG9hZCBTZWxlY3RlZCcsIGFjdGlvbjogJ2Rvd25sb2FkLXNlbGVjdGVkJ30sXG4gICAgXVxuXG4gICAgcmVzb3VyY2VUeXBlID0gJ3RyYW5zaXQtcm91dGVycyc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlQ2xhc3MsXG4gICAgICAgIGZpbHRlclNlcnZpY2U6IERhdGFUYWJsZUZpbHRlclNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIHByaXZhdGUgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICAgICAgb3ZlcnJpZGUgY3N2RG93bmxvYWRTZXJ2aWNlOiBDc3ZEb3dubG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ0Zvcm06IE1hdERpYWxvZyxcbiAgICAgICAgQEluamVjdChTSEFSRURaX0VYVEVOU0lPTikgcHJpdmF0ZSBleHRTZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcm91dGVyOiBSb3V0ZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoc2V0dGluZ3MsIGZpbHRlclNlcnZpY2UsIGNzdkRvd25sb2FkU2VydmljZSwgZXh0U2VydmljZSwgcm91dGVyKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSA9IChmb3JtRGF0YSk6IFByb21pc2U8Q2FsbGJhY2tSZXN1bHRzPiA9PiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyBwYXNzZWQ6IHRydWV9KTtcbiAgICB9XG5cbiAgICBpbml0VGFibGVDb2x1bW5zKCk6IGFueSB7XG4gICAgICAgIHRoaXMuaW5pdE1lbnVBY3Rpb25zKCk7XG5cbiAgICAgICAgY29uc3QgZW5yb2xsbWVudFRva2VuRm9ybWF0dGVyID0gKHJvdykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdG9rZW4gPSByb3c/LmRhdGE/LmVucm9sbG1lbnRUb2tlbjtcbiAgICAgICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgICAgIGlmIChtb21lbnQocm93Py5kYXRhPy5lbnJvbGxtZW50RXhwaXJlc0F0KS5pc0JlZm9yZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnRW5yb2xsbWVudCBFeHBpcmVkJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29sdW1uRmlsdGVycyA9IHRoaXMuY29sdW1uRmlsdGVycztcblxuXG4gICAgICAgIGxldCB0YWJsZUNvbHVtbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdOYW1lJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnRQYXJhbXM6IHRoaXMuaGVhZGVyQ29tcG9uZW50UGFyYW1zLFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogVGFibGVDZWxsTmFtZUNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHsgcGF0aFJvb3Q6IHRoaXMuYmFzZVBhdGgsIHNob3dSb3V0ZXJJY29uczogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgIG9uQ2VsbENsaWNrZWQ6IChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc1NlbGVjdGVkVGV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuRWRpdEZvcm0oZGF0YT8uZGF0YT8uaWQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zb3J0LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgc29ydERpcjogJ2FzYydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICd2ZXJpZmllZCcsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpc1ZlcmlmaWVkJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnVmVyaWZpZWQnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdvbmxpbmUnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaXNPbmxpbmUnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdPbmxpbmUnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdjcmVhdGVkQXQnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnY3JlYXRlZEF0JyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnQ3JlYXRlZCBBdCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IHRoaXMuY3JlYXRlZEF0Rm9ybWF0dGVyLFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAnZW5yb2xsbWVudFRva2VuJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2Vucm9sbG1lbnRUb2tlbicsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ1Rva2VuJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICB2YWx1ZUZvcm1hdHRlcjogZW5yb2xsbWVudFRva2VuRm9ybWF0dGVyLFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAnand0JyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2Vucm9sbG1lbnRKd3QnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdKV1QnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogJ2NlbGxUb2tlbkNvbXBvbmVudCcsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5leHRTZXJ2aWNlLnByb2Nlc3NUYWJsZUNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRhYmxlQ29sdW1ucyA9IHRoaXMuZXh0U2VydmljZS5wcm9jZXNzVGFibGVDb2x1bW5zKHRhYmxlQ29sdW1ucyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFibGVDb2x1bW5zO1xuICAgIH1cblxuICAgIGdldERhdGEoZmlsdGVycz86IEZpbHRlck9ialtdLCBzb3J0PzogYW55LCBwYWdlPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgLy8gd2UgY2FuIGN1c3RvbWl6ZSBmaWx0ZXJzIG9yIHNvcnRpbmcgaGVyZSBiZWZvcmUgbW92aW5nIG9uLi4uXG4gICAgICAgIHRoaXMucGFnaW5nLnBhZ2UgPSBwYWdlIHx8IHRoaXMucGFnaW5nLnBhZ2U7XG4gICAgICAgIHJldHVybiBzdXBlci5nZXRUYWJsZURhdGEoJ3RyYW5zaXQtcm91dGVycycsIHRoaXMucGFnaW5nLCBmaWx0ZXJzLCBzb3J0KVxuICAgICAgICAgICAgLnRoZW4oKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NEYXRhKHJlc3VsdHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzRGF0YShyZXN1bHRzOiBhbnkpIHtcbiAgICAgICAgaWYgKCFpc0VtcHR5KHJlc3VsdHM/LmRhdGEpKSB7XG4gICAgICAgICAgICAvL3ByZS1wcm9jZXNzIGRhdGEgYmVmb3JlIHJlbmRlcmluZ1xuICAgICAgICAgICAgcmVzdWx0cy5kYXRhID0gdGhpcy5hZGRBY3Rpb25zUGVyUm93KHJlc3VsdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQWN0aW9uc1BlclJvdyhyZXN1bHRzOiBhbnkpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiByZXN1bHRzLmRhdGEubWFwKChyb3cpID0+IHtcbiAgICAgICAgICAgIHJvdy5hY3Rpb25MaXN0ID0gWyd1cGRhdGUnLCAncmUtZW5yb2xsJywgJ2RlbGV0ZSddO1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzRW5yb2xtZW50VG9rZW4ocm93KSkge1xuICAgICAgICAgICAgICAgIHJvdy5hY3Rpb25MaXN0LnB1c2goJ2Rvd25sb2FkLWVucm9sbG1lbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWRkTGlzdEl0ZW1FeHRlbnNpb25BY3Rpb25zKHJvdyk7XG4gICAgICAgICAgICByZXR1cm4gcm93O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYXNFbnJvbG1lbnRUb2tlbihpdGVtKSB7XG4gICAgICAgIHJldHVybiAhaXNFbXB0eShpdGVtPy5lbnJvbGxtZW50Snd0KTtcbiAgICB9XG5cblxuICAgIGdldEpXVChpZGVudGl0eTogYW55KSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eS5lbnJvbGxtZW50Snd0O1xuICAgIH1cblxuICAgIGRvd25sb2FkSldUKGp3dCwgbmFtZSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsICdkYXRhOmFwcGxpY2F0aW9uL3ppdGktand0O2NoYXJzZXQ9dXRmLTgsJyArIGVuY29kZVVSSUNvbXBvbmVudChqd3QpKTtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgbmFtZStcIi5qd3RcIik7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5jbGljaygpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHJlZW5yb2xsKHJvdXRlcjogYW55KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBhcHBlbmRJZDogJ1JlZW5yb2xsUm91dGVyJyxcbiAgICAgICAgICAgIHRpdGxlOiAnUmUtRW5yb2xsIFJvdXRlcicsXG4gICAgICAgICAgICBtZXNzYWdlOiBgPHA+SWYgdGhlIHJvdXRlciBpcyBjdXJyZW50bHkgY29ubmVjdGVkLCBpdCB3aWxsIGJlIGRpc2Nvbm5lY3RlZCB1bnRpbCB0aGUgZW5yb2xsbWVudCBwcm9jZXNzIGlzIGNvbXBsZXRlZCB3aXRoIHRoZSBuZXdseSBnZW5lcmF0ZWQgSldULiA8cD4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlLWVucm9sbCB0aGUgc2VsZWN0ZWQgcm91dGVyP2AsXG4gICAgICAgICAgICBjb25maXJtTGFiZWw6ICdZZXMnLFxuICAgICAgICAgICAgY2FuY2VsTGFiZWw6ICdPb3BzLCBubyBnZXQgbWUgb3V0IG9mIGhlcmUnLFxuICAgICAgICAgICAgc2hvd0NhbmNlbExpbms6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ0Zvcm0ub3BlbihDb25maXJtQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnRvUHJvbWlzZSgpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdD8uY29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UucG9zdChgdHJhbnNpdC1yb3V0ZXJzLyR7cm91dGVyLmlkfS9yZS1lbnJvbGxgLCB7fSwgdHJ1ZSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBSZS1lbnJvbGwgQ29uZmlybWVkYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBSb3V0ZXIgcmUtZW5yb2xsIHdhcyBzZW50LiBBIG5ldyBlbnJvbGxtZW50IHRva2VuIGlzIG5vdyBhdmFpbGFibGVgLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9wZW5VcGRhdGUoZW50aXR5PzogYW55KSB7XG4gICAgICAgIC8vRGVwcmVjYXRlZDogTm8tT3BcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { GrowlerModel } from "../features/messaging/growler.model";
|
|
3
|
+
import { NavigationEnd } from "@angular/router";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "angular-oauth2-oidc";
|
|
6
|
+
import * as i2 from "@angular/common/http";
|
|
7
|
+
import * as i3 from "../features/messaging/growler.service";
|
|
8
|
+
import * as i4 from "@angular/router";
|
|
9
|
+
class AuthService {
|
|
10
|
+
constructor(oauthService, http, growlerService, router) {
|
|
11
|
+
this.oauthService = oauthService;
|
|
12
|
+
this.http = http;
|
|
13
|
+
this.growlerService = growlerService;
|
|
14
|
+
this.router = router;
|
|
15
|
+
this.basePath = '/';
|
|
16
|
+
router.events.subscribe((event) => {
|
|
17
|
+
if (event => event instanceof NavigationEnd) {
|
|
18
|
+
if (!event?.snapshot?.routeConfig?.path) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const pathSegments = event.snapshot.routeConfig.path.split('/');
|
|
22
|
+
this.basePath = pathSegments[0];
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
configureOAuth(issuer, clientId, audience, scopes) {
|
|
27
|
+
let basePath = document.querySelector('base')?.getAttribute('href') || '/';
|
|
28
|
+
basePath = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
|
|
29
|
+
const oauthConfig = {
|
|
30
|
+
issuer: issuer,
|
|
31
|
+
redirectUri: window.location.origin + `${basePath}/callback`,
|
|
32
|
+
clientId: clientId,
|
|
33
|
+
responseType: 'code',
|
|
34
|
+
scope: scopes,
|
|
35
|
+
showDebugInformation: true,
|
|
36
|
+
customQueryParams: {
|
|
37
|
+
audience: audience
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
localStorage.setItem('oauth_callback_config', JSON.stringify(oauthConfig));
|
|
41
|
+
this.oauthService.configure(oauthConfig);
|
|
42
|
+
return this.oauthService.loadDiscoveryDocumentAndTryLogin().then((initSuccess) => {
|
|
43
|
+
if (initSuccess) {
|
|
44
|
+
this.login();
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const growlerData = new GrowlerModel('error', 'Error', `Login Error`, 'Unable to initialize OAuth login');
|
|
48
|
+
this.growlerService.show(growlerData);
|
|
49
|
+
}
|
|
50
|
+
return initSuccess;
|
|
51
|
+
}).catch((error) => {
|
|
52
|
+
const growlerData = new GrowlerModel('error', 'Error', `Login Error`, 'Unable to initialize OAuth login: ' + (error?.message ? error.message : error));
|
|
53
|
+
this.growlerService.show(growlerData);
|
|
54
|
+
return false;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
login() {
|
|
58
|
+
this.oauthService.initLoginFlow();
|
|
59
|
+
}
|
|
60
|
+
logout() {
|
|
61
|
+
this.oauthService.logOut();
|
|
62
|
+
}
|
|
63
|
+
get accessToken() {
|
|
64
|
+
return this.oauthService.getAccessToken();
|
|
65
|
+
}
|
|
66
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, deps: [{ token: i1.OAuthService }, { token: i2.HttpClient }, { token: i3.GrowlerService }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
67
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, providedIn: 'root' }); }
|
|
68
|
+
}
|
|
69
|
+
export { AuthService };
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, decorators: [{
|
|
71
|
+
type: Injectable,
|
|
72
|
+
args: [{
|
|
73
|
+
providedIn: 'root'
|
|
74
|
+
}]
|
|
75
|
+
}], ctorParameters: function () { return [{ type: i1.OAuthService }, { type: i2.HttpClient }, { type: i3.GrowlerService }, { type: i4.Router }]; } });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUdqRSxPQUFPLEVBQUMsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUV0RCxNQUdhLFdBQVc7SUFFcEIsWUFDWSxZQUEwQixFQUFVLElBQWdCLEVBQ3BELGNBQThCLEVBQzlCLE1BQWM7UUFGZCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLFNBQUksR0FBSixJQUFJLENBQVk7UUFDcEQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFKMUIsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQU1YLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7b0JBQ3JDLE9BQU87aUJBQ1Y7Z0JBQ0QsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTztRQUNyRCxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDM0UsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNyRSxNQUFNLFdBQVcsR0FBRztZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLFdBQVcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsV0FBVztZQUM1RCxRQUFRLEVBQUUsUUFBUTtZQUNsQixZQUFZLEVBQUUsTUFBTTtZQUNwQixLQUFLLEVBQUUsTUFBTTtZQUNiLG9CQUFvQixFQUFFLElBQUk7WUFDMUIsaUJBQWlCLEVBQUU7Z0JBQ2YsUUFBUSxFQUFFLFFBQVE7YUFDckI7U0FDSixDQUFDO1FBQ0YsWUFBWSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGdDQUFnQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDN0UsSUFBSSxXQUFXLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2hCO2lCQUFNO2dCQUNILE1BQU0sV0FBVyxHQUFHLElBQUksWUFBWSxDQUNoQyxPQUFPLEVBQ1AsT0FBTyxFQUNQLGFBQWEsRUFDYixrQ0FBa0MsQ0FDckMsQ0FBQztnQkFDRixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN6QztZQUNELE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2YsTUFBTSxXQUFXLEdBQUcsSUFBSSxZQUFZLENBQ2hDLE9BQU8sRUFDUCxPQUFPLEVBQ1AsYUFBYSxFQUNiLG9DQUFvQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ2xGLENBQUM7WUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN0QyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM5QyxDQUFDOytHQXJFUSxXQUFXO21IQUFYLFdBQVcsY0FGUixNQUFNOztTQUVULFdBQVc7NEZBQVgsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uL2ZlYXR1cmVzL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vZmVhdHVyZXMvbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtBUFBfQkFTRV9IUkVGfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge05hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcbiAgICBiYXNlUGF0aCA9ICcvJztcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBvYXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBwcml2YXRlIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICAgICkge1xuICAgICAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgIGlmICghZXZlbnQ/LnNuYXBzaG90Py5yb3V0ZUNvbmZpZz8ucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IGV2ZW50LnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGguc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VQYXRoID0gcGF0aFNlZ21lbnRzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uZmlndXJlT0F1dGgoaXNzdWVyLCBjbGllbnRJZCwgYXVkaWVuY2UsIHNjb3Blcz8pOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBsZXQgYmFzZVBhdGggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiYXNlJyk/LmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcvJztcbiAgICAgICAgYmFzZVBhdGggPSBiYXNlUGF0aC5lbmRzV2l0aCgnLycpID8gYmFzZVBhdGguc2xpY2UoMCwgLTEpIDogYmFzZVBhdGg7XG4gICAgICAgIGNvbnN0IG9hdXRoQ29uZmlnID0ge1xuICAgICAgICAgICAgaXNzdWVyOiBpc3N1ZXIsXG4gICAgICAgICAgICByZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIGAke2Jhc2VQYXRofS9jYWxsYmFja2AsXG4gICAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWQsXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdjb2RlJyxcbiAgICAgICAgICAgIHNjb3BlOiBzY29wZXMsXG4gICAgICAgICAgICBzaG93RGVidWdJbmZvcm1hdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGN1c3RvbVF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgYXVkaWVuY2U6IGF1ZGllbmNlXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdvYXV0aF9jYWxsYmFja19jb25maWcnLCBKU09OLnN0cmluZ2lmeShvYXV0aENvbmZpZykpO1xuICAgICAgICB0aGlzLm9hdXRoU2VydmljZS5jb25maWd1cmUob2F1dGhDb25maWcpO1xuICAgICAgICByZXR1cm4gdGhpcy5vYXV0aFNlcnZpY2UubG9hZERpc2NvdmVyeURvY3VtZW50QW5kVHJ5TG9naW4oKS50aGVuKChpbml0U3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgaWYgKGluaXRTdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpbigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgIGBMb2dpbiBFcnJvcmAsXG4gICAgICAgICAgICAgICAgICAgICdVbmFibGUgdG8gaW5pdGlhbGl6ZSBPQXV0aCBsb2dpbicsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluaXRTdWNjZXNzO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgICAgICAgYExvZ2luIEVycm9yYCxcbiAgICAgICAgICAgICAgICAnVW5hYmxlIHRvIGluaXRpYWxpemUgT0F1dGggbG9naW46ICcgKyAoZXJyb3I/Lm1lc3NhZ2UgPyBlcnJvci5tZXNzYWdlIDogZXJyb3IpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvZ2luKCkge1xuICAgICAgICB0aGlzLm9hdXRoU2VydmljZS5pbml0TG9naW5GbG93KCk7XG4gICAgfVxuXG4gICAgbG9nb3V0KCkge1xuICAgICAgICB0aGlzLm9hdXRoU2VydmljZS5sb2dPdXQoKTtcbiAgICB9XG5cbiAgICBnZXQgYWNjZXNzVG9rZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpO1xuICAgIH1cblxufVxuIl19
|
|
@@ -31,4 +31,4 @@ LoginServiceClass = __decorate([
|
|
|
31
31
|
__param(1, Inject(SETTINGS_SERVICE))
|
|
32
32
|
], LoginServiceClass);
|
|
33
33
|
export { LoginServiceClass };
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9sb2dpbi1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJdEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQU0sbUJBQW1CLENBQUMsQ0FBQztBQUc5RSxJQUFzQixpQkFBaUIsR0FBdkMsTUFBc0IsaUJBQWlCO0lBaUJuQyxZQUNjLFVBQXNCLEVBQ04sZUFBK0MsRUFDL0QsTUFBYyxFQUNkLGNBQThCO1FBSDlCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDSSxvQkFBZSxHQUFmLGVBQWUsQ0FBc0I7UUFDL0QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQW5CckMsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBRWpDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBYzNCLENBQUM7SUFFRSxjQUFjO1FBQ2pCLE1BQU0sT0FBTyxHQUFRO1lBQ2pCLE9BQU8sRUFBRTtnQkFDTCxNQUFNLEVBQUUsR0FBRzthQUNkO1lBQ0QsTUFBTSxFQUFFLEVBQUU7WUFDVixZQUFZLEVBQUUsTUFBZTtTQUNoQyxDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztDQUNKLENBQUE7QUFsQ3FCLGlCQUFpQjtJQW1COUIsV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtHQW5CWCxpQkFBaUIsQ0FrQ3RDO1NBbENxQixpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTRVRUSU5HU19TRVJWSUNFIH0gZnJvbSBcIi4vc2V0dGluZ3Muc2VydmljZVwiO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlQ2xhc3MgfSBmcm9tIFwiLi9zZXR0aW5ncy1zZXJ2aWNlLmNsYXNzXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vZmVhdHVyZXMvbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuXG5leHBvcnQgY29uc3QgWkFDX0xPR0lOX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignWkFDX0xPR0lOX1NFUlZJQ0UnKTtcblxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTG9naW5TZXJ2aWNlQ2xhc3Mge1xuXG4gICAgcHVibGljIGNoZWNraW5nQ29udHJvbGxlck9yaWdpbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBvcmlnaW5Jc0NvbnRyb2xsZXI7XG4gICAgcHVibGljIGxvZ2luRGlhbG9nT3BlbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0NlcnRCYXNlZEF1dGggPSBmYWxzZTtcbiAgICBwdWJsaWMgY2VydEJhc2VkQXR0ZW1wdGVkID0gZmFsc2U7XG4gICAgcHVibGljIHNlcnZpY2VVcmwgPSAnJztcbiAgICBwdWJsaWMgbG9naW5JblByb2dyZXNzID0gZmFsc2U7XG5cbiAgICBhYnN0cmFjdCBpbml0KCk7XG4gICAgYWJzdHJhY3QgbG9naW4ocHJlZml4OiBzdHJpbmcsIHVybDogc3RyaW5nLCB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBkb05hdj8sIHR5cGU/LCB0b2tlbj8pO1xuICAgIGFic3RyYWN0IG9ic2VydmVMb2dpbihzZXJ2aWNlVXJsOiBzdHJpbmcsIHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGRvTmF2PywgdHlwZT8sIHRva2VuPyk7XG4gICAgYWJzdHJhY3QgY2xlYXJTZXNzaW9uKCk7XG4gICAgYWJzdHJhY3QgY2hlY2tPcmlnaW5Gb3JDb250cm9sbGVyKCk6IFByb21pc2U8YW55PjtcbiAgICBhYnN0cmFjdCBsb2dvdXQoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwcm90ZWN0ZWQgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2VDbGFzcyxcbiAgICAgICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcm90ZWN0ZWQgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlXG4gICAgKSB7IH1cblxuICAgIHB1YmxpYyBnZXRIdHRwT3B0aW9ucygpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIGFjY2VwdDogJyonLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcmFtczoge30sXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyBhcyBjb25zdCxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxufVxuIl19
|
|
@@ -59,6 +59,7 @@ class SettingsServiceClass {
|
|
|
59
59
|
this.protocol = DEFAULTS.protocol;
|
|
60
60
|
this.host = DEFAULTS.host;
|
|
61
61
|
this.zitiSemver = '';
|
|
62
|
+
this.allowControllerAdd = false;
|
|
62
63
|
this.supportedFeatures = {
|
|
63
64
|
organization: false,
|
|
64
65
|
tags: true,
|
|
@@ -129,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
129
130
|
providedIn: 'root'
|
|
130
131
|
}]
|
|
131
132
|
}], ctorParameters: function () { return [{ type: i1.HttpBackend }, { type: i2.GrowlerService }]; } });
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Mtc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZXR0aW5ncy1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQWMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGVBQWUsRUFBMkIsTUFBTSxNQUFNLENBQUM7Ozs7QUFJL0QsYUFBYTtBQUNiLE1BQU0sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFDLEdBQUcsTUFBTSxDQUFDO0FBQzNELE1BQU0sUUFBUSxHQUFHO0lBQ2IsU0FBUyxFQUFFLEVBQUU7SUFDYixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsVUFBVSxFQUFFLFNBQVM7SUFDckIsVUFBVSxFQUFFLE1BQU07SUFDbEIsTUFBTSxFQUFFLFdBQVc7SUFDbkIsTUFBTSxFQUFFLElBQUk7SUFDWixTQUFTLEVBQUUsSUFBSTtJQUNmLG9CQUFvQixFQUFFLEtBQUs7SUFDM0IsTUFBTSxFQUFFO1FBQ0osTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsRUFBRTtRQUNWLFFBQVEsRUFBRSxLQUFLO1FBQ2YsTUFBTSxFQUFFO1lBQ0osTUFBTSxFQUFFLEVBQUU7WUFDVixNQUFNLEVBQUUsRUFBRTtTQUNiO0tBQ0o7SUFDRCxNQUFNLEVBQUUsRUFBRTtJQUNWLElBQUksRUFBRSxFQUFFO0NBQ1gsQ0FBQTtBQUVELE1BR3NCLG9CQUFvQjtJQXVCdEMsWUFBc0IsV0FBd0IsRUFBWSxjQUE4QjtRQUFs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QyxDQUFNO1FBQ2pCLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQ3BGLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFTSxjQUFjO1FBQ2pCLE1BQU0sT0FBTyxHQUFRO1lBQ2pCLE9BQU8sRUFBRTtnQkFDTCxNQUFNLEVBQUUsR0FBRzthQUNkO1lBQ0QsTUFBTSxFQUFFLEVBQUU7WUFDVixZQUFZLEVBQUUsTUFBZTtTQUNoQyxDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUN6QyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ25ELE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN6QztJQUNMLENBQUM7K0dBdkZpQixvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUYxQixNQUFNOztTQUVBLG9CQUFvQjs0RkFBcEIsb0JBQW9CO2tCQUh6QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2lzRW1wdHksIGRlZmVyfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge0h0dHBCYWNrZW5kLCBIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSwgbWFwLCB0YXB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2NhdGNoRXJyb3J9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uL2ZlYXR1cmVzL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcblxuLy8gQHRzLWlnbm9yZVxuY29uc3Qge3NlcnZpY2UsIGdyb3dsZXIsIGNvbnRleHQsIHBhZ2UsIHNldHRpbmdzfSA9IHdpbmRvdztcbmNvbnN0IERFRkFVTFRTID0ge1xuICAgIFwic2Vzc2lvblwiOiB7fSxcbiAgICBcImVkZ2VDb250cm9sbGVyc1wiOiBbXSxcbiAgICBcImVkaXRhYmxlXCI6IHRydWUsXG4gICAgXCJ1cGRhdGVcIjogZmFsc2UsXG4gICAgXCJsb2NhdGlvblwiOiBcIi4uL3ppdGlcIixcbiAgICBcInByb3RvY29sXCI6IFwiaHR0cFwiLFxuICAgIFwiaG9zdFwiOiBcImxvY2FsaG9zdFwiLFxuICAgIFwicG9ydFwiOiAxNDA4LFxuICAgIFwicG9ydFRMU1wiOiA4NDQzLFxuICAgIFwicmVqZWN0VW5hdXRob3JpemVkXCI6IGZhbHNlLFxuICAgIFwibWFpbFwiOiB7XG4gICAgICAgIFwiaG9zdFwiOiBcIlwiLFxuICAgICAgICBcInBvcnRcIjogMjUsXG4gICAgICAgIFwic2VjdXJlXCI6IGZhbHNlLFxuICAgICAgICBcImF1dGhcIjoge1xuICAgICAgICAgICAgXCJ1c2VyXCI6IFwiXCIsXG4gICAgICAgICAgICBcInBhc3NcIjogXCJcIlxuICAgICAgICB9XG4gICAgfSxcbiAgICBcImZyb21cIjogXCJcIixcbiAgICBcInRvXCI6IFwiXCIsXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2V0dGluZ3NTZXJ2aWNlQ2xhc3Mge1xuXG4gICAgbmFtZSA9IFwic2V0dGluZ3NcIjtcbiAgICBzZXR0aW5nczogYW55ID0ge307XG4gICAgdmVyc2lvbkRhdGE6IGFueSA9IHt9O1xuICAgIHNldHRpbmdzQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KVxuICAgIHJlamVjdFVuYXV0aG9yaXplZCA9IGZhbHNlO1xuICAgIHBvcnQgPSBERUZBVUxUUy5wb3J0O1xuICAgIHBvcnRUTFMgPSBERUZBVUxUUy5wb3J0VExTO1xuICAgIGFwaVZlcnNpb25zOiBhbnlbXSA9IFtdO1xuICAgIHByb3RvY29sID0gREVGQVVMVFMucHJvdG9jb2w7XG4gICAgaG9zdCA9IERFRkFVTFRTLmhvc3Q7XG4gICAgaHR0cENsaWVudDogSHR0cENsaWVudDtcbiAgICB6aXRpU2VtdmVyID0gJyc7XG5cbiAgICBwdWJsaWMgc3VwcG9ydGVkRmVhdHVyZXM6IGFueSA9IHtcbiAgICAgICAgb3JnYW5pemF0aW9uOiBmYWxzZSxcbiAgICAgICAgdGFnczogdHJ1ZSxcbiAgICAgICAgY3VzdG9tRmllbGRzOiBmYWxzZSxcbiAgICAgICAgbWFpbGVyOiBmYWxzZSxcbiAgICAgICAgcmVjaXBlczogZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cEJhY2tlbmQ6IEh0dHBCYWNrZW5kLCBwcm90ZWN0ZWQgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuaHR0cENsaWVudCA9IG5ldyBIdHRwQ2xpZW50KGh0dHBCYWNrZW5kKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgaW5pdCgpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBjb250cm9sbGVyU2F2ZShuYW1lOiBzdHJpbmcsIHVybDogc3RyaW5nKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgaW5pdEFwaVZlcnNpb25zKHVybCk7XG4gICAgcHVibGljIGFic3RyYWN0IGxvYWRTZXR0aW5ncygpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBoYXNTZXNzaW9uKCk7XG5cbiAgICBwdWJsaWMgZ2V0KCkge1xuICAgICAgICBjb25zdCB0bXAgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgneml0aS5zZXR0aW5ncycpO1xuICAgICAgICBpZiAodG1wKSB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzID0gSlNPTi5wYXJzZSh0bXApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncyA9IHsuLi5ERUZBVUxUU307XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgneml0aS5zZXR0aW5ncycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2V0dGluZ3MpKTtcbiAgICAgICAgfVxuICAgICAgICBzZXR0aW5ncy5kYXRhID0gdGhpcy5zZXR0aW5ncztcbiAgICAgICAgY29udGV4dC5zZXQodGhpcy5uYW1lLCB0aGlzLnNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0NoYW5nZS5uZXh0KHRoaXMuc2V0dGluZ3MpXG4gICAgfVxuXG4gICAgcHVibGljIHNldChkYXRhOiBhbnkpIHtcbiAgICAgICAgdGhpcy5zZXR0aW5ncyA9IGRhdGE7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd6aXRpLnNldHRpbmdzJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICBjb250ZXh0LnNldCh0aGlzLm5hbWUsIHRoaXMuc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLnNldHRpbmdzQ2hhbmdlLm5leHQodGhpcy5zZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcHVibGljIHZlcnNpb24oKSB7XG4gICAgICAgIHRoaXMudmVyc2lvbkRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgneml0aS52ZXJzaW9uJyk7XG4gICAgICAgIGNvbnRleHQuc2V0KFwidmVyc2lvblwiLCB0aGlzLnZlcnNpb25EYXRhKTtcbiAgICAgICAgdGhpcy5zZXR0aW5ncyA9IHsuLi50aGlzLnNldHRpbmdzLCB2ZXJzaW9uOiB0aGlzLnZlcnNpb25EYXRhfTtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0NoYW5nZS5uZXh0KHRoaXMuc2V0dGluZ3MpXG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZSh1cmw6IHN0cmluZykge1xuICAgICAgICBzZXJ2aWNlLmNhbGwoXCJzZXJ2ZXJcIiwge3VybDogdXJsfSwgdGhpcy5kZWxldGVkLCBcIkRFTEVURVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlZChlOiBhbnkpIHtcbiAgICAgICAgaWYgKHBhZ2UgIT0gbnVsbCAmJiBwYWdlLmRlbGV0aW5nICE9IG51bGwgJiYgcGFnZS5kZWxldGluZyA9PSB0aGlzLnZlcnNpb25EYXRhLmJhc2VVcmwpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvbG9naW5cIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIdHRwT3B0aW9ucygpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIGFjY2VwdDogJyonLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcmFtczoge30sXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyBhcyBjb25zdCxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbnRvbGxlcihuYW1lOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XG4gICAgICAgIGlmIChuYW1lLnRyaW0oKS5sZW5ndGggPT0gMCB8fCB1cmwudHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBncm93bGVyLmVycm9yKFwiTmFtZSBhbmQgVVJMIHJlcXVpcmVkXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlclNhdmUobmFtZSwgdXJsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Mtc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZXR0aW5ncy1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQWMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGVBQWUsRUFBMkIsTUFBTSxNQUFNLENBQUM7Ozs7QUFJL0QsYUFBYTtBQUNiLE1BQU0sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFDLEdBQUcsTUFBTSxDQUFDO0FBQzNELE1BQU0sUUFBUSxHQUFHO0lBQ2IsU0FBUyxFQUFFLEVBQUU7SUFDYixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsVUFBVSxFQUFFLFNBQVM7SUFDckIsVUFBVSxFQUFFLE1BQU07SUFDbEIsTUFBTSxFQUFFLFdBQVc7SUFDbkIsTUFBTSxFQUFFLElBQUk7SUFDWixTQUFTLEVBQUUsSUFBSTtJQUNmLG9CQUFvQixFQUFFLEtBQUs7SUFDM0IsTUFBTSxFQUFFO1FBQ0osTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsRUFBRTtRQUNWLFFBQVEsRUFBRSxLQUFLO1FBQ2YsTUFBTSxFQUFFO1lBQ0osTUFBTSxFQUFFLEVBQUU7WUFDVixNQUFNLEVBQUUsRUFBRTtTQUNiO0tBQ0o7SUFDRCxNQUFNLEVBQUUsRUFBRTtJQUNWLElBQUksRUFBRSxFQUFFO0NBQ1gsQ0FBQTtBQUVELE1BR3NCLG9CQUFvQjtJQXdCdEMsWUFBc0IsV0FBd0IsRUFBWSxjQUE4QjtRQUFsRSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFZLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXRCeEYsU0FBSSxHQUFHLFVBQVUsQ0FBQztRQUNsQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUE7UUFDN0MsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLFNBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3JCLFlBQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQzNCLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQzdCLFNBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBRXJCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRXBCLHNCQUFpQixHQUFRO1lBQzVCLFlBQVksRUFBRSxLQUFLO1lBQ25CLElBQUksRUFBRSxJQUFJO1lBQ1YsWUFBWSxFQUFFLEtBQUs7WUFDbkIsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSztTQUNqQixDQUFBO1FBR0csSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBUU0sR0FBRztRQUNOLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbEQsSUFBSSxHQUFHLEVBQUU7WUFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBQyxHQUFHLFFBQVEsRUFBQyxDQUFDO1lBQzlCLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDeEU7UUFDRCxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUVNLEdBQUcsQ0FBQyxJQUFTO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sT0FBTztRQUNWLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RCxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQVc7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sT0FBTyxDQUFDLENBQU07UUFDakIsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDcEYsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVNLGNBQWM7UUFDakIsTUFBTSxPQUFPLEdBQVE7WUFDakIsT0FBTyxFQUFFO2dCQUNMLE1BQU0sRUFBRSxHQUFHO2FBQ2Q7WUFDRCxNQUFNLEVBQUUsRUFBRTtZQUNWLFlBQVksRUFBRSxNQUFlO1NBQ2hDLENBQUM7UUFDRixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRU0sWUFBWSxDQUFDLElBQVksRUFBRSxHQUFXO1FBQ3pDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDbkQsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0wsQ0FBQzsrR0F4RmlCLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRjFCLE1BQU07O1NBRUEsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBSHpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNFbXB0eSwgZGVmZXJ9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7SHR0cEJhY2tlbmQsIEh0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tLCBtYXAsIHRhcH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7Y2F0Y2hFcnJvcn0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vZmVhdHVyZXMvbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCB7c2VydmljZSwgZ3Jvd2xlciwgY29udGV4dCwgcGFnZSwgc2V0dGluZ3N9ID0gd2luZG93O1xuY29uc3QgREVGQVVMVFMgPSB7XG4gICAgXCJzZXNzaW9uXCI6IHt9LFxuICAgIFwiZWRnZUNvbnRyb2xsZXJzXCI6IFtdLFxuICAgIFwiZWRpdGFibGVcIjogdHJ1ZSxcbiAgICBcInVwZGF0ZVwiOiBmYWxzZSxcbiAgICBcImxvY2F0aW9uXCI6IFwiLi4veml0aVwiLFxuICAgIFwicHJvdG9jb2xcIjogXCJodHRwXCIsXG4gICAgXCJob3N0XCI6IFwibG9jYWxob3N0XCIsXG4gICAgXCJwb3J0XCI6IDE0MDgsXG4gICAgXCJwb3J0VExTXCI6IDg0NDMsXG4gICAgXCJyZWplY3RVbmF1dGhvcml6ZWRcIjogZmFsc2UsXG4gICAgXCJtYWlsXCI6IHtcbiAgICAgICAgXCJob3N0XCI6IFwiXCIsXG4gICAgICAgIFwicG9ydFwiOiAyNSxcbiAgICAgICAgXCJzZWN1cmVcIjogZmFsc2UsXG4gICAgICAgIFwiYXV0aFwiOiB7XG4gICAgICAgICAgICBcInVzZXJcIjogXCJcIixcbiAgICAgICAgICAgIFwicGFzc1wiOiBcIlwiXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFwiZnJvbVwiOiBcIlwiLFxuICAgIFwidG9cIjogXCJcIixcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTZXR0aW5nc1NlcnZpY2VDbGFzcyB7XG5cbiAgICBuYW1lID0gXCJzZXR0aW5nc1wiO1xuICAgIHNldHRpbmdzOiBhbnkgPSB7fTtcbiAgICB2ZXJzaW9uRGF0YTogYW55ID0ge307XG4gICAgc2V0dGluZ3NDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pXG4gICAgcmVqZWN0VW5hdXRob3JpemVkID0gZmFsc2U7XG4gICAgcG9ydCA9IERFRkFVTFRTLnBvcnQ7XG4gICAgcG9ydFRMUyA9IERFRkFVTFRTLnBvcnRUTFM7XG4gICAgYXBpVmVyc2lvbnM6IGFueVtdID0gW107XG4gICAgcHJvdG9jb2wgPSBERUZBVUxUUy5wcm90b2NvbDtcbiAgICBob3N0ID0gREVGQVVMVFMuaG9zdDtcbiAgICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xuICAgIHppdGlTZW12ZXIgPSAnJztcbiAgICBhbGxvd0NvbnRyb2xsZXJBZGQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBzdXBwb3J0ZWRGZWF0dXJlczogYW55ID0ge1xuICAgICAgICBvcmdhbml6YXRpb246IGZhbHNlLFxuICAgICAgICB0YWdzOiB0cnVlLFxuICAgICAgICBjdXN0b21GaWVsZHM6IGZhbHNlLFxuICAgICAgICBtYWlsZXI6IGZhbHNlLFxuICAgICAgICByZWNpcGVzOiBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQmFja2VuZDogSHR0cEJhY2tlbmQsIHByb3RlY3RlZCBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50ID0gbmV3IEh0dHBDbGllbnQoaHR0cEJhY2tlbmQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBpbml0KCk7XG4gICAgcHVibGljIGFic3RyYWN0IGNvbnRyb2xsZXJTYXZlKG5hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBpbml0QXBpVmVyc2lvbnModXJsKTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgbG9hZFNldHRpbmdzKCk7XG4gICAgcHVibGljIGFic3RyYWN0IGhhc1Nlc3Npb24oKTtcblxuICAgIHB1YmxpYyBnZXQoKSB7XG4gICAgICAgIGNvbnN0IHRtcCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd6aXRpLnNldHRpbmdzJyk7XG4gICAgICAgIGlmICh0bXApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MgPSBKU09OLnBhcnNlKHRtcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzID0gey4uLkRFRkFVTFRTfTtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd6aXRpLnNldHRpbmdzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zZXR0aW5ncykpO1xuICAgICAgICB9XG4gICAgICAgIHNldHRpbmdzLmRhdGEgPSB0aGlzLnNldHRpbmdzO1xuICAgICAgICBjb250ZXh0LnNldCh0aGlzLm5hbWUsIHRoaXMuc2V0dGluZ3MpO1xuICAgICAgICB0aGlzLnNldHRpbmdzQ2hhbmdlLm5leHQodGhpcy5zZXR0aW5ncylcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0KGRhdGE6IGFueSkge1xuICAgICAgICB0aGlzLnNldHRpbmdzID0gZGF0YTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3ppdGkuc2V0dGluZ3MnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIGNvbnRleHQuc2V0KHRoaXMubmFtZSwgdGhpcy5zZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuc2V0dGluZ3NDaGFuZ2UubmV4dCh0aGlzLnNldHRpbmdzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmVyc2lvbigpIHtcbiAgICAgICAgdGhpcy52ZXJzaW9uRGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd6aXRpLnZlcnNpb24nKTtcbiAgICAgICAgY29udGV4dC5zZXQoXCJ2ZXJzaW9uXCIsIHRoaXMudmVyc2lvbkRhdGEpO1xuICAgICAgICB0aGlzLnNldHRpbmdzID0gey4uLnRoaXMuc2V0dGluZ3MsIHZlcnNpb246IHRoaXMudmVyc2lvbkRhdGF9O1xuICAgICAgICB0aGlzLnNldHRpbmdzQ2hhbmdlLm5leHQodGhpcy5zZXR0aW5ncylcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlKHVybDogc3RyaW5nKSB7XG4gICAgICAgIHNlcnZpY2UuY2FsbChcInNlcnZlclwiLCB7dXJsOiB1cmx9LCB0aGlzLmRlbGV0ZWQsIFwiREVMRVRFXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVkKGU6IGFueSkge1xuICAgICAgICBpZiAocGFnZSAhPSBudWxsICYmIHBhZ2UuZGVsZXRpbmcgIT0gbnVsbCAmJiBwYWdlLmRlbGV0aW5nID09IHRoaXMudmVyc2lvbkRhdGEuYmFzZVVybCkge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9sb2dpblwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEh0dHBPcHRpb25zKCkge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgYWNjZXB0OiAnKicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyYW1zOiB7fSxcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnIGFzIGNvbnN0LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29udG9sbGVyKG5hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKG5hbWUudHJpbSgpLmxlbmd0aCA9PSAwIHx8IHVybC50cmltKCkubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGdyb3dsZXIuZXJyb3IoXCJOYW1lIGFuZCBVUkwgcmVxdWlyZWRcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyU2F2ZShuYW1lLCB1cmwpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -79,6 +79,7 @@ class SettingsService extends SettingsServiceClass {
|
|
|
79
79
|
super(httpBackend, growlerService);
|
|
80
80
|
this.httpBackend = httpBackend;
|
|
81
81
|
this.growlerService = growlerService;
|
|
82
|
+
this.allowControllerAdd = true;
|
|
82
83
|
}
|
|
83
84
|
init() {
|
|
84
85
|
this.get();
|
|
@@ -196,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
196
197
|
providedIn: 'root'
|
|
197
198
|
}]
|
|
198
199
|
}], ctorParameters: function () { return [{ type: i1.HttpBackend }, { type: i2.GrowlerService }]; } });
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFVBQVUsRUFBVSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsT0FBTyxFQUFRLE1BQU0sUUFBUSxDQUFDO0FBRXRDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQUdqRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsa0JBQWtCLENBQUMsQ0FBQztBQUU3RixhQUFhO0FBQ2IsTUFBTSxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUMsR0FBRyxNQUFNLENBQUM7QUFDM0QsTUFBTSxRQUFRLEdBQUc7SUFDYixTQUFTLEVBQUUsRUFBRTtJQUNiLGlCQUFpQixFQUFFLEVBQUU7SUFDckIsVUFBVSxFQUFFLElBQUk7SUFDaEIsUUFBUSxFQUFFLEtBQUs7SUFDZixVQUFVLEVBQUUsU0FBUztJQUNyQixVQUFVLEVBQUUsTUFBTTtJQUNsQixNQUFNLEVBQUUsV0FBVztJQUNuQixNQUFNLEVBQUUsSUFBSTtJQUNaLFNBQVMsRUFBRSxJQUFJO0lBQ2Ysb0JBQW9CLEVBQUUsS0FBSztJQUMzQixNQUFNLEVBQUU7UUFDSixNQUFNLEVBQUUs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QyxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDckQ7UUFDTCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDO1lBQ3hDLE1BQU0sV0FBVyxHQUFHLElBQUksWUFBWSxDQUNoQyxPQUFPLEVBQ1AsT0FBTyxFQUNQLGlCQUFpQixFQUNqQix5Q0FBeUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUMxRCxDQUFDO1lBQ0YsTUFBTSxHQUFHLEdBQVEsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQzFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUNkLE9BQU8sSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUE7UUFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7K0dBN0dRLGVBQWU7bUhBQWYsZUFBZSxjQUZaLE1BQU07O1NBRVQsZUFBZTs0RkFBZixlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tLCBtYXAsIHRhcH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7Y2F0Y2hFcnJvcn0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge2lzRW1wdHksIGRlZmVyfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge0h0dHBCYWNrZW5kLCBIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7U2V0dGluZ3NTZXJ2aWNlQ2xhc3N9IGZyb20gXCIuL3NldHRpbmdzLXNlcnZpY2UuY2xhc3NcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi9mZWF0dXJlcy9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uL2ZlYXR1cmVzL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQvbW9tZW50XCI7XG5cbmV4cG9ydCBjb25zdCBTRVRUSU5HU19TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPFNldHRpbmdzU2VydmljZUNsYXNzPignU0VUVElOR1NfU0VSVklDRScpO1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCB7c2VydmljZSwgZ3Jvd2xlciwgY29udGV4dCwgcGFnZSwgc2V0dGluZ3N9ID0gd2luZG93O1xuY29uc3QgREVGQVVMVFMgPSB7XG4gICAgXCJzZXNzaW9uXCI6IHt9LFxuICAgIFwiZWRnZUNvbnRyb2xsZXJzXCI6IFtdLFxuICAgIFwiZWRpdGFibGVcIjogdHJ1ZSxcbiAgICBcInVwZGF0ZVwiOiBmYWxzZSxcbiAgICBcImxvY2F0aW9uXCI6IFwiLi4veml0aVwiLFxuICAgIFwicHJvdG9jb2xcIjogXCJodHRwXCIsXG4gICAgXCJob3N0XCI6IFwibG9jYWxob3N0XCIsXG4gICAgXCJwb3J0XCI6IDE0MDgsXG4gICAgXCJwb3J0VExTXCI6IDg0NDMsXG4gICAgXCJyZWplY3RVbmF1dGhvcml6ZWRcIjogZmFsc2UsXG4gICAgXCJtYWlsXCI6IHtcbiAgICAgICAgXCJob3N0XCI6IFwiXCIsXG4gICAgICAgIFwicG9ydFwiOiAyNSxcbiAgICAgICAgXCJzZWN1cmVcIjogZmFsc2UsXG4gICAgICAgIFwiYXV0aFwiOiB7XG4gICAgICAgICAgICBcInVzZXJcIjogXCJcIixcbiAgICAgICAgICAgIFwicGFzc1wiOiBcIlwiXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFwiZnJvbVwiOiBcIlwiLFxuICAgIFwidG9cIjogXCJcIixcbn1cblxuY29uc3QgREVGQVVMVF9BUElfVkVSU0lPTlM6IGFueSA9IHtcbiAgICBcImVkZ2VcIjoge1xuICAgICAgXCJ2MVwiOiB7XG4gICAgICAgIFwiYXBpQmFzZVVybHNcIjogW1xuICAgICAgICAgIGAke3dpbmRvdy5vcmlnaW59L2VkZ2UvY2xpZW50L3YxYFxuICAgICAgICBdLFxuICAgICAgICBcInBhdGhcIjogXCIvZWRnZS9jbGllbnQvdjFcIlxuICAgICAgfVxuICAgIH0sXG4gICAgXCJlZGdlLWNsaWVudFwiOiB7XG4gICAgICBcInYxXCI6IHtcbiAgICAgICAgXCJhcGlCYXNlVXJsc1wiOiBbXG4gICAgICAgICAgYCR7d2luZG93Lm9yaWdpbn0vZWRnZS9jbGllbnQvdjFgXG4gICAgICAgIF0sXG4gICAgICAgIFwicGF0aFwiOiBcIi9lZGdlL2NsaWVudC92MVwiXG4gICAgICB9XG4gICAgfSxcbiAgICBcImVkZ2UtbWFuYWdlbWVudFwiOiB7XG4gICAgICBcInYxXCI6IHtcbiAgICAgICAgXCJhcGlCYXNlVXJsc1wiOiBbXG4gICAgICAgICAgYCR7d2luZG93Lm9yaWdpbn0vZWRnZS9tYW5hZ2VtZW50L3YxYFxuICAgICAgICBdLFxuICAgICAgICBcInBhdGhcIjogXCIvZWRnZS9tYW5hZ2VtZW50L3YxXCJcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NTZXJ2aWNlIGV4dGVuZHMgU2V0dGluZ3NTZXJ2aWNlQ2xhc3Mge1xuXG4gICAgY29uc3RydWN0b3Iob3ZlcnJpZGUgaHR0cEJhY2tlbmQ6IEh0dHBCYWNrZW5kLCBvdmVycmlkZSBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoaHR0cEJhY2tlbmQsIGdyb3dsZXJTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBpbml0KCkge1xuICAgICAgICB0aGlzLmdldCgpO1xuICAgICAgICB0aGlzLnZlcnNpb24oKTtcblxuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5wb3J0ICYmICFpc05hTih0aGlzLnNldHRpbmdzLnBvcnQpKSB0aGlzLnBvcnQgPSB0aGlzLnNldHRpbmdzLnBvcnQ7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnBvcnRUTFMgJiYgIWlzTmFOKHRoaXMuc2V0dGluZ3MucG9ydFRMUykpIHRoaXMucG9ydFRMUyA9IHRoaXMuc2V0dGluZ3MucG9ydFRMUztcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MucmVqZWN0VW5hdXRob3JpemVkICYmICFpc05hTih0aGlzLnNldHRpbmdzLnJlamVjdFVuYXV0aG9yaXplZCkpIHRoaXMucmVqZWN0VW5hdXRob3JpemVkID0gdGhpcy5zZXR0aW5ncy5yZWplY3RVbmF1dGhvcml6ZWQ7XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIpIHJldHVybiB0aGlzLmluaXRBcGlWZXJzaW9ucyh0aGlzLnNldHRpbmdzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIpO1xuICAgICAgICBlbHNlIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBsb2FkU2V0dGluZ3MoKSB7XG4gICAgICAgIC8vdGhpcyBpcyBhIG5vLW9wIGZvciB0aGUgZGVmYXVsdCBzZXR0aW5ncyBzZXJ2aWNlXG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaGFzU2Vzc2lvbigpIHtcbiAgICAgICAgY29uc3QgaGFzU2Vzc2lvbklkID0gIWlzRW1wdHkodGhpcy5zZXR0aW5ncz8uc2Vzc2lvbj8uaWQpO1xuICAgICAgICByZXR1cm4gaGFzU2Vzc2lvbklkO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGNvbnRyb2xsZXJTYXZlKG5hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcpIHtcbiAgICAgICAgdXJsID0gdXJsLnNwbGl0KCcjJykuam9pbignJykuc3BsaXQoJz8nKS5qb2luKCcnKTtcbiAgICAgICAgaWYgKHVybC5lbmRzV2l0aCgnLycpKSB1cmwgPSB1cmwuc3Vic3RyKDAsIHVybC5sZW5ndGggLSAxKTtcbiAgICAgICAgaWYgKCF1cmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSAmJiAhdXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSkgdXJsID0gJ2h0dHBzOi8vJyArIHVybDtcbiAgICAgICAgY29uc3QgY2FsbFVybCA9IHVybCArIFwiL2VkZ2UvbWFuYWdlbWVudC92MS92ZXJzaW9uP3JlamVjdFVuYXV0aG9yaXplZD1cIiArIHRoaXMucmVqZWN0VW5hdXRob3JpemVkO1xuICAgICAgICBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQuZ2V0KGNhbGxVcmwpLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRocm93IFwiRWRnZSBDb250cm9sbGVyIG5vdCBPbmxpbmU6IFwiICsgZXJyPy5tZXNzYWdlO1xuICAgICAgICB9KSkpLnRoZW4oKGJvZHk6IGFueSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoYm9keS5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBncm93bGVyLmVycm9yKFwiSW52YWxpZCBFZGdlIENvbnRyb2xsZXI6IFwiICsgYm9keS5lcnJvcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHk/LmRhdGE/LmFwaVZlcnNpb25zPy5lZGdlPy52MSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwaVZlcnNpb25zID0gYm9keS5kYXRhLmFwaVZlcnNpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5lZGdlQ29udHJvbGxlcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmVkZ2VDb250cm9sbGVyc1tpXS51cmwgPT0gdXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzLmVkZ2VDb250cm9sbGVyc1tpXS5uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzW2ldLnVybCA9IHVybDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc0RlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzKSB0aGlzLnNldHRpbmdzLmVkZ2VDb250cm9sbGVycyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmVkZ2VDb250cm9sbGVycz8ubGVuZ3RoID09PSAwKSBpc0RlZmF1bHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogaXNEZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzLnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgPSB1cmw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCh0aGlzLnNldHRpbmdzKTtcblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3Jvd2xlci5lcnJvcihcIkludmFsaWQgRWRnZSBDb250cm9sbGVyOiBcIiArIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBncm93bGVyLmVycm9yKFwiSW52YWxpZCBFZGdlIENvbnRyb2xsZXI6IFwiICsgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBncm93bGVyLmVycm9yKGVycik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0QXBpVmVyc2lvbnModXJsOiBzdHJpbmcpIHtcbiAgICAgICAgdXJsID0gdXJsLnNwbGl0KCcjJykuam9pbignJykuc3BsaXQoJz8nKS5qb2luKCcnKTtcbiAgICAgICAgaWYgKHVybC5lbmRzV2l0aCgnLycpKSB1cmwgPSB1cmwuc3Vic3RyKDAsIHVybC5sZW5ndGggLSAxKTtcbiAgICAgICAgaWYgKCF1cmwuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSAmJiAhdXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSkgdXJsID0gJ2h0dHBzOi8vJyArIHVybDtcbiAgICAgICAgY29uc3QgY2FsbFVybCA9IHVybCArIFwiL2VkZ2UvbWFuYWdlbWVudC92MS92ZXJzaW9uP3JlamVjdFVuYXV0aG9yaXplZD1mYWxzZVwiO1xuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwQ2xpZW50LmdldChjYWxsVXJsKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChib2R5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Jvd2xlci5lcnJvcihcIkludmFsaWQgRWRnZSBDb250cm9sbGVyOiBcIiArIGJvZHkuZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwaVZlcnNpb25zID0gYm9keS5kYXRhLmFwaVZlcnNpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueml0aVNlbXZlciA9IGJvZHkuZGF0YT8udmVyc2lvbj8ucmVwbGFjZShcInZcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3dsZXIuZXJyb3IoXCJJbnZhbGlkIEVkZ2UgQ29udHJvbGxlcjogXCIgKyBib2R5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBpVmVyc2lvbnMgPSBERUZBVUxUX0FQSV9WRVJTSU9OUztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBgRWRnZSBDb250cm9sbGVyYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBGYWlsZWQgdG8gY29ubmVjdCB0byBFZGdlIENvbnRyb2xsZXI6ICR7ZXJyPy5tZXNzYWdlfWAsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlczogYW55ID0ge2RhdGE6IHRoaXMuYXBpVmVyc2lvbnN9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWFwKChib2R5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJvZHk/LmRhdGE/LmFwaVZlcnNpb25zXG4gICAgICAgICAgICAgICAgfSkpKTtcbiAgICB9XG59XG4iXX0=
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFVBQVUsRUFBVSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsT0FBTyxFQUFRLE1BQU0sUUFBUSxDQUFDO0FBRXRDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQUdqRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsa0JBQWtCLENBQUMsQ0FBQztBQUU3RixhQUFhO0FBQ2IsTUFBTSxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUMsR0FBRyxNQUFNLENBQUM7QUFDM0QsTUFBTSxRQUFRLEdBQUc7SUFDYixTQUFTLEVBQUUsRUFBRTtJQUNiLGlCQUFpQixFQUFFLEVBQUU7SUFDckIsVUFBVSxFQUFFLElBQUk7SUFDaEIsUUFBUSxFQUFFLEtBQUs7SUFDZixVQUFVLEVBQUUsU0FBUztJQUNyQixVQUFVLEVBQUUsTUFBTTtJQUNsQixNQUFNLEVBQUUsV0FBVztJQUNuQixNQUFNLEVBQUUsSUFBSTtJQUNaLFNBQVMsRUFBRSxJQUFJO0lBQ2Ysb0JBQW9CLEVBQUUsS0FBSztJQUMzQixNQUFNLEVBQUU7UUFDSixNQUFNLEVBQUUs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QUM7aUJBQzFEO2FBQ0o7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxDQUFDO2FBQ3JEO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQztZQUN4QyxNQUFNLFdBQVcsR0FBRyxJQUFJLFlBQVksQ0FDaEMsT0FBTyxFQUNQLE9BQU8sRUFDUCxpQkFBaUIsRUFDakIseUNBQXlDLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FDMUQsQ0FBQztZQUNGLE1BQU0sR0FBRyxHQUFRLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUMsQ0FBQztZQUMxQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDZCxPQUFPLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFBO1FBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixDQUFDOytHQS9HUSxlQUFlO21IQUFmLGVBQWUsY0FGWixNQUFNOztTQUVULGVBQWU7NEZBQWYsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0luamVjdGFibGUsIEluamVjdCwgSW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtmaXJzdFZhbHVlRnJvbSwgbWFwLCB0YXB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2NhdGNoRXJyb3J9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtpc0VtcHR5LCBkZWZlcn0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtIdHRwQmFja2VuZCwgSHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQge1NldHRpbmdzU2VydmljZUNsYXNzfSBmcm9tIFwiLi9zZXR0aW5ncy1zZXJ2aWNlLmNsYXNzXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vZmVhdHVyZXMvbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyTW9kZWx9IGZyb20gXCIuLi9mZWF0dXJlcy9tZXNzYWdpbmcvZ3Jvd2xlci5tb2RlbFwiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50L21vbWVudFwiO1xuXG5leHBvcnQgY29uc3QgU0VUVElOR1NfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTZXR0aW5nc1NlcnZpY2VDbGFzcz4oJ1NFVFRJTkdTX1NFUlZJQ0UnKTtcblxuLy8gQHRzLWlnbm9yZVxuY29uc3Qge3NlcnZpY2UsIGdyb3dsZXIsIGNvbnRleHQsIHBhZ2UsIHNldHRpbmdzfSA9IHdpbmRvdztcbmNvbnN0IERFRkFVTFRTID0ge1xuICAgIFwic2Vzc2lvblwiOiB7fSxcbiAgICBcImVkZ2VDb250cm9sbGVyc1wiOiBbXSxcbiAgICBcImVkaXRhYmxlXCI6IHRydWUsXG4gICAgXCJ1cGRhdGVcIjogZmFsc2UsXG4gICAgXCJsb2NhdGlvblwiOiBcIi4uL3ppdGlcIixcbiAgICBcInByb3RvY29sXCI6IFwiaHR0cFwiLFxuICAgIFwiaG9zdFwiOiBcImxvY2FsaG9zdFwiLFxuICAgIFwicG9ydFwiOiAxNDA4LFxuICAgIFwicG9ydFRMU1wiOiA4NDQzLFxuICAgIFwicmVqZWN0VW5hdXRob3JpemVkXCI6IGZhbHNlLFxuICAgIFwibWFpbFwiOiB7XG4gICAgICAgIFwiaG9zdFwiOiBcIlwiLFxuICAgICAgICBcInBvcnRcIjogMjUsXG4gICAgICAgIFwic2VjdXJlXCI6IGZhbHNlLFxuICAgICAgICBcImF1dGhcIjoge1xuICAgICAgICAgICAgXCJ1c2VyXCI6IFwiXCIsXG4gICAgICAgICAgICBcInBhc3NcIjogXCJcIlxuICAgICAgICB9XG4gICAgfSxcbiAgICBcImZyb21cIjogXCJcIixcbiAgICBcInRvXCI6IFwiXCIsXG59XG5cbmNvbnN0IERFRkFVTFRfQVBJX1ZFUlNJT05TOiBhbnkgPSB7XG4gICAgXCJlZGdlXCI6IHtcbiAgICAgIFwidjFcIjoge1xuICAgICAgICBcImFwaUJhc2VVcmxzXCI6IFtcbiAgICAgICAgICBgJHt3aW5kb3cub3JpZ2lufS9lZGdlL2NsaWVudC92MWBcbiAgICAgICAgXSxcbiAgICAgICAgXCJwYXRoXCI6IFwiL2VkZ2UvY2xpZW50L3YxXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIFwiZWRnZS1jbGllbnRcIjoge1xuICAgICAgXCJ2MVwiOiB7XG4gICAgICAgIFwiYXBpQmFzZVVybHNcIjogW1xuICAgICAgICAgIGAke3dpbmRvdy5vcmlnaW59L2VkZ2UvY2xpZW50L3YxYFxuICAgICAgICBdLFxuICAgICAgICBcInBhdGhcIjogXCIvZWRnZS9jbGllbnQvdjFcIlxuICAgICAgfVxuICAgIH0sXG4gICAgXCJlZGdlLW1hbmFnZW1lbnRcIjoge1xuICAgICAgXCJ2MVwiOiB7XG4gICAgICAgIFwiYXBpQmFzZVVybHNcIjogW1xuICAgICAgICAgIGAke3dpbmRvdy5vcmlnaW59L2VkZ2UvbWFuYWdlbWVudC92MWBcbiAgICAgICAgXSxcbiAgICAgICAgXCJwYXRoXCI6IFwiL2VkZ2UvbWFuYWdlbWVudC92MVwiXG4gICAgICB9XG4gICAgfVxuICB9O1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzU2VydmljZSBleHRlbmRzIFNldHRpbmdzU2VydmljZUNsYXNzIHtcblxuICAgIG92ZXJyaWRlIGFsbG93Q29udHJvbGxlckFkZCA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihvdmVycmlkZSBodHRwQmFja2VuZDogSHR0cEJhY2tlbmQsIG92ZXJyaWRlIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSkge1xuICAgICAgICBzdXBlcihodHRwQmFja2VuZCwgZ3Jvd2xlclNlcnZpY2UpO1xuICAgIH1cblxuICAgIGluaXQoKSB7XG4gICAgICAgIHRoaXMuZ2V0KCk7XG4gICAgICAgIHRoaXMudmVyc2lvbigpO1xuXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnBvcnQgJiYgIWlzTmFOKHRoaXMuc2V0dGluZ3MucG9ydCkpIHRoaXMucG9ydCA9IHRoaXMuc2V0dGluZ3MucG9ydDtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MucG9ydFRMUyAmJiAhaXNOYU4odGhpcy5zZXR0aW5ncy5wb3J0VExTKSkgdGhpcy5wb3J0VExTID0gdGhpcy5zZXR0aW5ncy5wb3J0VExTO1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5yZWplY3RVbmF1dGhvcml6ZWQgJiYgIWlzTmFOKHRoaXMuc2V0dGluZ3MucmVqZWN0VW5hdXRob3JpemVkKSkgdGhpcy5yZWplY3RVbmF1dGhvcml6ZWQgPSB0aGlzLnNldHRpbmdzLnJlamVjdFVuYXV0aG9yaXplZDtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3Muc2VsZWN0ZWRFZGdlQ29udHJvbGxlcikgcmV0dXJuIHRoaXMuaW5pdEFwaVZlcnNpb25zKHRoaXMuc2V0dGluZ3Muc2VsZWN0ZWRFZGdlQ29udHJvbGxlcik7XG4gICAgICAgIGVsc2UgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGxvYWRTZXR0aW5ncygpIHtcbiAgICAgICAgLy90aGlzIGlzIGEgbm8tb3AgZm9yIHRoZSBkZWZhdWx0IHNldHRpbmdzIHNlcnZpY2VcbiAgICB9XG5cbiAgICBvdmVycmlkZSBoYXNTZXNzaW9uKCkge1xuICAgICAgICBjb25zdCBoYXNTZXNzaW9uSWQgPSAhaXNFbXB0eSh0aGlzLnNldHRpbmdzPy5zZXNzaW9uPy5pZCk7XG4gICAgICAgIHJldHVybiBoYXNTZXNzaW9uSWQ7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY29udHJvbGxlclNhdmUobmFtZTogc3RyaW5nLCB1cmw6IHN0cmluZykge1xuICAgICAgICB1cmwgPSB1cmwuc3BsaXQoJyMnKS5qb2luKCcnKS5zcGxpdCgnPycpLmpvaW4oJycpO1xuICAgICAgICBpZiAodXJsLmVuZHNXaXRoKCcvJykpIHVybCA9IHVybC5zdWJzdHIoMCwgdXJsLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAoIXVybC5zdGFydHNXaXRoKCdodHRwczovLycpICYmICF1cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpKSB1cmwgPSAnaHR0cHM6Ly8nICsgdXJsO1xuICAgICAgICBjb25zdCBjYWxsVXJsID0gdXJsICsgXCIvZWRnZS9tYW5hZ2VtZW50L3YxL3ZlcnNpb24/cmVqZWN0VW5hdXRob3JpemVkPVwiICsgdGhpcy5yZWplY3RVbmF1dGhvcml6ZWQ7XG4gICAgICAgIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cENsaWVudC5nZXQoY2FsbFVybCkucGlwZShjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhyb3cgXCJFZGdlIENvbnRyb2xsZXIgbm90IE9ubGluZTogXCIgKyBlcnI/Lm1lc3NhZ2U7XG4gICAgICAgIH0pKSkudGhlbigoYm9keTogYW55KSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChib2R5LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3dsZXIuZXJyb3IoXCJJbnZhbGlkIEVkZ2UgQ29udHJvbGxlcjogXCIgKyBib2R5LmVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYm9keT8uZGF0YT8uYXBpVmVyc2lvbnM/LmVkZ2U/LnYxICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBpVmVyc2lvbnMgPSBib2R5LmRhdGEuYXBpVmVyc2lvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmVkZ2VDb250cm9sbGVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZXR0aW5ncy5lZGdlQ29udHJvbGxlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzW2ldLnVybCA9PSB1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzW2ldLm5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5lZGdlQ29udHJvbGxlcnNbaV0udXJsID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlzRGVmYXVsdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZXR0aW5ncy5lZGdlQ29udHJvbGxlcnMpIHRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZWRnZUNvbnRyb2xsZXJzPy5sZW5ndGggPT09IDApIGlzRGVmYXVsdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5lZGdlQ29udHJvbGxlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBpc0RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Muc2VsZWN0ZWRFZGdlQ29udHJvbGxlciA9IHVybDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHRoaXMuc2V0dGluZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm93bGVyLmVycm9yKFwiSW52YWxpZCBFZGdlIENvbnRyb2xsZXI6IFwiICsgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGdyb3dsZXIuZXJyb3IoXCJJbnZhbGlkIEVkZ2UgQ29udHJvbGxlcjogXCIgKyBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGdyb3dsZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXRBcGlWZXJzaW9ucyh1cmw6IHN0cmluZykge1xuICAgICAgICB1cmwgPSB1cmwuc3BsaXQoJyMnKS5qb2luKCcnKS5zcGxpdCgnPycpLmpvaW4oJycpO1xuICAgICAgICBpZiAodXJsLmVuZHNXaXRoKCcvJykpIHVybCA9IHVybC5zdWJzdHIoMCwgdXJsLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAoIXVybC5zdGFydHNXaXRoKCdodHRwczovLycpICYmICF1cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpKSB1cmwgPSAnaHR0cHM6Ly8nICsgdXJsO1xuICAgICAgICBjb25zdCBjYWxsVXJsID0gdXJsICsgXCIvZWRnZS9tYW5hZ2VtZW50L3YxL3ZlcnNpb24/cmVqZWN0VW5hdXRob3JpemVkPWZhbHNlXCI7XG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQuZ2V0KGNhbGxVcmwpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKGJvZHk6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm93bGVyLmVycm9yKFwiSW52YWxpZCBFZGdlIENvbnRyb2xsZXI6IFwiICsgYm9keS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBpVmVyc2lvbnMgPSBib2R5LmRhdGEuYXBpVmVyc2lvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56aXRpU2VtdmVyID0gYm9keS5kYXRhPy52ZXJzaW9uPy5yZXBsYWNlKFwidlwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3Jvd2xlci5lcnJvcihcIkludmFsaWQgRWRnZSBDb250cm9sbGVyOiBcIiArIGJvZHkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcGlWZXJzaW9ucyA9IERFRkFVTFRfQVBJX1ZFUlNJT05TO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBFZGdlIENvbnRyb2xsZXJgLFxuICAgICAgICAgICAgICAgICAgICAgICAgYEZhaWxlZCB0byBjb25uZWN0IHRvIEVkZ2UgQ29udHJvbGxlcjogJHtlcnI/Lm1lc3NhZ2V9YCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzOiBhbnkgPSB7ZGF0YTogdGhpcy5hcGlWZXJzaW9uc307XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoKGJvZHk6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYm9keT8uZGF0YT8uYXBpVmVyc2lvbnNcbiAgICAgICAgICAgICAgICB9KSkpO1xuICAgIH1cbn1cbiJdfQ==
|