@vendasta/wp-cloud-manager 0.2.0
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/esm2020/lib/_generated/host.service.mjs +25 -0
- package/esm2020/lib/_generated/index.mjs +2 -0
- package/esm2020/lib/_internal/index.mjs +11 -0
- package/esm2020/lib/_internal/interfaces/annotations.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/api.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/index.mjs +2 -0
- package/esm2020/lib/_internal/objects/annotations.mjs +44 -0
- package/esm2020/lib/_internal/objects/api.mjs +651 -0
- package/esm2020/lib/_internal/objects/index.mjs +9 -0
- package/esm2020/lib/_internal/wp-client-manager.api.service.mjs +55 -0
- package/esm2020/lib/_internal/wp-cloud-manager.api.service.mjs +65 -0
- package/esm2020/lib/index.mjs +3 -0
- package/esm2020/public_api.mjs +2 -0
- package/esm2020/vendasta-wp-cloud-manager.mjs +5 -0
- package/fesm2015/vendasta-wp-cloud-manager.mjs +850 -0
- package/fesm2015/vendasta-wp-cloud-manager.mjs.map +1 -0
- package/fesm2020/vendasta-wp-cloud-manager.mjs +849 -0
- package/fesm2020/vendasta-wp-cloud-manager.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/_generated/host.service.d.ts +7 -0
- package/lib/_generated/index.d.ts +1 -0
- package/lib/_internal/index.d.ts +4 -0
- package/lib/_internal/interfaces/annotations.interface.d.ts +7 -0
- package/lib/_internal/interfaces/api.interface.d.ts +119 -0
- package/lib/_internal/interfaces/index.d.ts +2 -0
- package/lib/_internal/objects/annotations.d.ts +14 -0
- package/lib/_internal/objects/api.d.ts +195 -0
- package/lib/_internal/objects/index.d.ts +2 -0
- package/lib/_internal/wp-client-manager.api.service.d.ts +16 -0
- package/lib/_internal/wp-cloud-manager.api.service.d.ts +18 -0
- package/lib/index.d.ts +2 -0
- package/package.json +35 -0
- package/public_api.d.ts +1 -0
|
@@ -0,0 +1,651 @@
|
|
|
1
|
+
export class GetAvailablePHPVersionsRequest {
|
|
2
|
+
static fromProto(proto) {
|
|
3
|
+
let m = new GetAvailablePHPVersionsRequest();
|
|
4
|
+
m = Object.assign(m, proto);
|
|
5
|
+
return m;
|
|
6
|
+
}
|
|
7
|
+
constructor(kwargs) {
|
|
8
|
+
if (!kwargs) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
Object.assign(this, kwargs);
|
|
12
|
+
}
|
|
13
|
+
toApiJson() {
|
|
14
|
+
const toReturn = {};
|
|
15
|
+
if (typeof this.client !== 'undefined') {
|
|
16
|
+
toReturn['client'] = this.client;
|
|
17
|
+
}
|
|
18
|
+
return toReturn;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export class GetAvailablePHPVersionsResponse {
|
|
22
|
+
static fromProto(proto) {
|
|
23
|
+
let m = new GetAvailablePHPVersionsResponse();
|
|
24
|
+
m = Object.assign(m, proto);
|
|
25
|
+
if (proto.phpVersions) {
|
|
26
|
+
m.phpVersions = proto.phpVersions.map(PHPVersion.fromProto);
|
|
27
|
+
}
|
|
28
|
+
return m;
|
|
29
|
+
}
|
|
30
|
+
constructor(kwargs) {
|
|
31
|
+
if (!kwargs) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
Object.assign(this, kwargs);
|
|
35
|
+
}
|
|
36
|
+
toApiJson() {
|
|
37
|
+
const toReturn = {};
|
|
38
|
+
if (typeof this.phpVersions !== 'undefined' && this.phpVersions !== null) {
|
|
39
|
+
toReturn['phpVersions'] = 'toApiJson' in this.phpVersions ? this.phpVersions.toApiJson() : this.phpVersions;
|
|
40
|
+
}
|
|
41
|
+
return toReturn;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export class GetCDNStatusRequest {
|
|
45
|
+
static fromProto(proto) {
|
|
46
|
+
let m = new GetCDNStatusRequest();
|
|
47
|
+
m = Object.assign(m, proto);
|
|
48
|
+
return m;
|
|
49
|
+
}
|
|
50
|
+
constructor(kwargs) {
|
|
51
|
+
if (!kwargs) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
Object.assign(this, kwargs);
|
|
55
|
+
}
|
|
56
|
+
toApiJson() {
|
|
57
|
+
const toReturn = {};
|
|
58
|
+
if (typeof this.site !== 'undefined') {
|
|
59
|
+
toReturn['site'] = this.site;
|
|
60
|
+
}
|
|
61
|
+
if (typeof this.domain !== 'undefined') {
|
|
62
|
+
toReturn['domain'] = this.domain;
|
|
63
|
+
}
|
|
64
|
+
return toReturn;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export class GetCDNStatusResponse {
|
|
68
|
+
static fromProto(proto) {
|
|
69
|
+
let m = new GetCDNStatusResponse();
|
|
70
|
+
m = Object.assign(m, proto);
|
|
71
|
+
return m;
|
|
72
|
+
}
|
|
73
|
+
constructor(kwargs) {
|
|
74
|
+
if (!kwargs) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
Object.assign(this, kwargs);
|
|
78
|
+
}
|
|
79
|
+
toApiJson() {
|
|
80
|
+
const toReturn = {};
|
|
81
|
+
if (typeof this.enabled !== 'undefined') {
|
|
82
|
+
toReturn['enabled'] = this.enabled;
|
|
83
|
+
}
|
|
84
|
+
if (typeof this.status !== 'undefined') {
|
|
85
|
+
toReturn['status'] = this.status;
|
|
86
|
+
}
|
|
87
|
+
return toReturn;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export class GetOneClickLoginRequest {
|
|
91
|
+
static fromProto(proto) {
|
|
92
|
+
let m = new GetOneClickLoginRequest();
|
|
93
|
+
m = Object.assign(m, proto);
|
|
94
|
+
return m;
|
|
95
|
+
}
|
|
96
|
+
constructor(kwargs) {
|
|
97
|
+
if (!kwargs) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
Object.assign(this, kwargs);
|
|
101
|
+
}
|
|
102
|
+
toApiJson() {
|
|
103
|
+
const toReturn = {};
|
|
104
|
+
if (typeof this.siteUrl !== 'undefined') {
|
|
105
|
+
toReturn['siteUrl'] = this.siteUrl;
|
|
106
|
+
}
|
|
107
|
+
if (typeof this.redirectTo !== 'undefined') {
|
|
108
|
+
toReturn['redirectTo'] = this.redirectTo;
|
|
109
|
+
}
|
|
110
|
+
return toReturn;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export class GetOneClickLoginResponse {
|
|
114
|
+
static fromProto(proto) {
|
|
115
|
+
let m = new GetOneClickLoginResponse();
|
|
116
|
+
m = Object.assign(m, proto);
|
|
117
|
+
if (proto.expiresAt) {
|
|
118
|
+
m.expiresAt = parseInt(proto.expiresAt, 10);
|
|
119
|
+
}
|
|
120
|
+
return m;
|
|
121
|
+
}
|
|
122
|
+
constructor(kwargs) {
|
|
123
|
+
if (!kwargs) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
Object.assign(this, kwargs);
|
|
127
|
+
}
|
|
128
|
+
toApiJson() {
|
|
129
|
+
const toReturn = {};
|
|
130
|
+
if (typeof this.loginUrl !== 'undefined') {
|
|
131
|
+
toReturn['loginUrl'] = this.loginUrl;
|
|
132
|
+
}
|
|
133
|
+
if (typeof this.expiresAt !== 'undefined') {
|
|
134
|
+
toReturn['expiresAt'] = this.expiresAt;
|
|
135
|
+
}
|
|
136
|
+
if (typeof this.ttl !== 'undefined') {
|
|
137
|
+
toReturn['ttl'] = this.ttl;
|
|
138
|
+
}
|
|
139
|
+
if (typeof this.userId !== 'undefined') {
|
|
140
|
+
toReturn['userId'] = this.userId;
|
|
141
|
+
}
|
|
142
|
+
return toReturn;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
export class GetSiteDetailsRequest {
|
|
146
|
+
static fromProto(proto) {
|
|
147
|
+
let m = new GetSiteDetailsRequest();
|
|
148
|
+
m = Object.assign(m, proto);
|
|
149
|
+
return m;
|
|
150
|
+
}
|
|
151
|
+
constructor(kwargs) {
|
|
152
|
+
if (!kwargs) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
Object.assign(this, kwargs);
|
|
156
|
+
}
|
|
157
|
+
toApiJson() {
|
|
158
|
+
const toReturn = {};
|
|
159
|
+
if (typeof this.siteUrl !== 'undefined') {
|
|
160
|
+
toReturn['siteUrl'] = this.siteUrl;
|
|
161
|
+
}
|
|
162
|
+
return toReturn;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
export class GetSiteDetailsResponse {
|
|
166
|
+
static fromProto(proto) {
|
|
167
|
+
let m = new GetSiteDetailsResponse();
|
|
168
|
+
m = Object.assign(m, proto);
|
|
169
|
+
if (proto.siteDetails) {
|
|
170
|
+
m.siteDetails = SiteDetails.fromProto(proto.siteDetails);
|
|
171
|
+
}
|
|
172
|
+
return m;
|
|
173
|
+
}
|
|
174
|
+
constructor(kwargs) {
|
|
175
|
+
if (!kwargs) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
Object.assign(this, kwargs);
|
|
179
|
+
}
|
|
180
|
+
toApiJson() {
|
|
181
|
+
const toReturn = {};
|
|
182
|
+
if (typeof this.siteDetails !== 'undefined' && this.siteDetails !== null) {
|
|
183
|
+
toReturn['siteDetails'] = 'toApiJson' in this.siteDetails ? this.siteDetails.toApiJson() : this.siteDetails;
|
|
184
|
+
}
|
|
185
|
+
return toReturn;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
export class GetSiteOptionsRequest {
|
|
189
|
+
static fromProto(proto) {
|
|
190
|
+
let m = new GetSiteOptionsRequest();
|
|
191
|
+
m = Object.assign(m, proto);
|
|
192
|
+
return m;
|
|
193
|
+
}
|
|
194
|
+
constructor(kwargs) {
|
|
195
|
+
if (!kwargs) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
Object.assign(this, kwargs);
|
|
199
|
+
}
|
|
200
|
+
toApiJson() {
|
|
201
|
+
const toReturn = {};
|
|
202
|
+
if (typeof this.siteUrl !== 'undefined') {
|
|
203
|
+
toReturn['siteUrl'] = this.siteUrl;
|
|
204
|
+
}
|
|
205
|
+
if (typeof this.options !== 'undefined') {
|
|
206
|
+
toReturn['options'] = this.options;
|
|
207
|
+
}
|
|
208
|
+
return toReturn;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
export class GetSiteOptionsResponse {
|
|
212
|
+
static fromProto(proto) {
|
|
213
|
+
let m = new GetSiteOptionsResponse();
|
|
214
|
+
m = Object.assign(m, proto);
|
|
215
|
+
return m;
|
|
216
|
+
}
|
|
217
|
+
constructor(kwargs) {
|
|
218
|
+
if (!kwargs) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
Object.assign(this, kwargs);
|
|
222
|
+
}
|
|
223
|
+
toApiJson() {
|
|
224
|
+
const toReturn = {};
|
|
225
|
+
if (typeof this.data !== 'undefined') {
|
|
226
|
+
toReturn['data'] = this.data;
|
|
227
|
+
}
|
|
228
|
+
return toReturn;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
export class GetSiteOverviewRequest {
|
|
232
|
+
static fromProto(proto) {
|
|
233
|
+
let m = new GetSiteOverviewRequest();
|
|
234
|
+
m = Object.assign(m, proto);
|
|
235
|
+
return m;
|
|
236
|
+
}
|
|
237
|
+
constructor(kwargs) {
|
|
238
|
+
if (!kwargs) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
Object.assign(this, kwargs);
|
|
242
|
+
}
|
|
243
|
+
toApiJson() {
|
|
244
|
+
const toReturn = {};
|
|
245
|
+
if (typeof this.site !== 'undefined') {
|
|
246
|
+
toReturn['site'] = this.site;
|
|
247
|
+
}
|
|
248
|
+
return toReturn;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
export class GetSiteOverviewResponse {
|
|
252
|
+
static fromProto(proto) {
|
|
253
|
+
let m = new GetSiteOverviewResponse();
|
|
254
|
+
m = Object.assign(m, proto);
|
|
255
|
+
if (proto.siteOverview) {
|
|
256
|
+
m.siteOverview = SiteOverview.fromProto(proto.siteOverview);
|
|
257
|
+
}
|
|
258
|
+
return m;
|
|
259
|
+
}
|
|
260
|
+
constructor(kwargs) {
|
|
261
|
+
if (!kwargs) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
Object.assign(this, kwargs);
|
|
265
|
+
}
|
|
266
|
+
toApiJson() {
|
|
267
|
+
const toReturn = {};
|
|
268
|
+
if (typeof this.siteOverview !== 'undefined' && this.siteOverview !== null) {
|
|
269
|
+
toReturn['siteOverview'] = 'toApiJson' in this.siteOverview ? this.siteOverview.toApiJson() : this.siteOverview;
|
|
270
|
+
}
|
|
271
|
+
return toReturn;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
export class PHPVersion {
|
|
275
|
+
static fromProto(proto) {
|
|
276
|
+
let m = new PHPVersion();
|
|
277
|
+
m = Object.assign(m, proto);
|
|
278
|
+
return m;
|
|
279
|
+
}
|
|
280
|
+
constructor(kwargs) {
|
|
281
|
+
if (!kwargs) {
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
Object.assign(this, kwargs);
|
|
285
|
+
}
|
|
286
|
+
toApiJson() {
|
|
287
|
+
const toReturn = {};
|
|
288
|
+
if (typeof this.version !== 'undefined') {
|
|
289
|
+
toReturn['version'] = this.version;
|
|
290
|
+
}
|
|
291
|
+
if (typeof this.isDefault !== 'undefined') {
|
|
292
|
+
toReturn['isDefault'] = this.isDefault;
|
|
293
|
+
}
|
|
294
|
+
if (typeof this.isDeprecated !== 'undefined') {
|
|
295
|
+
toReturn['isDeprecated'] = this.isDeprecated;
|
|
296
|
+
}
|
|
297
|
+
return toReturn;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
export class PingRequest {
|
|
301
|
+
static fromProto(proto) {
|
|
302
|
+
let m = new PingRequest();
|
|
303
|
+
m = Object.assign(m, proto);
|
|
304
|
+
return m;
|
|
305
|
+
}
|
|
306
|
+
constructor(kwargs) {
|
|
307
|
+
if (!kwargs) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
Object.assign(this, kwargs);
|
|
311
|
+
}
|
|
312
|
+
toApiJson() {
|
|
313
|
+
const toReturn = {};
|
|
314
|
+
return toReturn;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
export class PingResponse {
|
|
318
|
+
static fromProto(proto) {
|
|
319
|
+
let m = new PingResponse();
|
|
320
|
+
m = Object.assign(m, proto);
|
|
321
|
+
return m;
|
|
322
|
+
}
|
|
323
|
+
constructor(kwargs) {
|
|
324
|
+
if (!kwargs) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
Object.assign(this, kwargs);
|
|
328
|
+
}
|
|
329
|
+
toApiJson() {
|
|
330
|
+
const toReturn = {};
|
|
331
|
+
if (typeof this.message !== 'undefined') {
|
|
332
|
+
toReturn['message'] = this.message;
|
|
333
|
+
}
|
|
334
|
+
return toReturn;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
export class PluginInfo {
|
|
338
|
+
static fromProto(proto) {
|
|
339
|
+
let m = new PluginInfo();
|
|
340
|
+
m = Object.assign(m, proto);
|
|
341
|
+
return m;
|
|
342
|
+
}
|
|
343
|
+
constructor(kwargs) {
|
|
344
|
+
if (!kwargs) {
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
Object.assign(this, kwargs);
|
|
348
|
+
}
|
|
349
|
+
toApiJson() {
|
|
350
|
+
const toReturn = {};
|
|
351
|
+
if (typeof this.id !== 'undefined') {
|
|
352
|
+
toReturn['id'] = this.id;
|
|
353
|
+
}
|
|
354
|
+
if (typeof this.currentVersion !== 'undefined') {
|
|
355
|
+
toReturn['currentVersion'] = this.currentVersion;
|
|
356
|
+
}
|
|
357
|
+
if (typeof this.latestVersion !== 'undefined') {
|
|
358
|
+
toReturn['latestVersion'] = this.latestVersion;
|
|
359
|
+
}
|
|
360
|
+
if (typeof this.updateAvailable !== 'undefined') {
|
|
361
|
+
toReturn['updateAvailable'] = this.updateAvailable;
|
|
362
|
+
}
|
|
363
|
+
return toReturn;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
export class PurgeCacheRequest {
|
|
367
|
+
static fromProto(proto) {
|
|
368
|
+
let m = new PurgeCacheRequest();
|
|
369
|
+
m = Object.assign(m, proto);
|
|
370
|
+
return m;
|
|
371
|
+
}
|
|
372
|
+
constructor(kwargs) {
|
|
373
|
+
if (!kwargs) {
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
Object.assign(this, kwargs);
|
|
377
|
+
}
|
|
378
|
+
toApiJson() {
|
|
379
|
+
const toReturn = {};
|
|
380
|
+
if (typeof this.site !== 'undefined') {
|
|
381
|
+
toReturn['site'] = this.site;
|
|
382
|
+
}
|
|
383
|
+
if (typeof this.domain !== 'undefined') {
|
|
384
|
+
toReturn['domain'] = this.domain;
|
|
385
|
+
}
|
|
386
|
+
return toReturn;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
export class PurgeCacheResponse {
|
|
390
|
+
static fromProto(proto) {
|
|
391
|
+
let m = new PurgeCacheResponse();
|
|
392
|
+
m = Object.assign(m, proto);
|
|
393
|
+
return m;
|
|
394
|
+
}
|
|
395
|
+
constructor(kwargs) {
|
|
396
|
+
if (!kwargs) {
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
Object.assign(this, kwargs);
|
|
400
|
+
}
|
|
401
|
+
toApiJson() {
|
|
402
|
+
const toReturn = {};
|
|
403
|
+
if (typeof this.success !== 'undefined') {
|
|
404
|
+
toReturn['success'] = this.success;
|
|
405
|
+
}
|
|
406
|
+
return toReturn;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
export class SetCDNStatusRequest {
|
|
410
|
+
static fromProto(proto) {
|
|
411
|
+
let m = new SetCDNStatusRequest();
|
|
412
|
+
m = Object.assign(m, proto);
|
|
413
|
+
return m;
|
|
414
|
+
}
|
|
415
|
+
constructor(kwargs) {
|
|
416
|
+
if (!kwargs) {
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
Object.assign(this, kwargs);
|
|
420
|
+
}
|
|
421
|
+
toApiJson() {
|
|
422
|
+
const toReturn = {};
|
|
423
|
+
if (typeof this.site !== 'undefined') {
|
|
424
|
+
toReturn['site'] = this.site;
|
|
425
|
+
}
|
|
426
|
+
if (typeof this.domain !== 'undefined') {
|
|
427
|
+
toReturn['domain'] = this.domain;
|
|
428
|
+
}
|
|
429
|
+
if (typeof this.enabled !== 'undefined') {
|
|
430
|
+
toReturn['enabled'] = this.enabled;
|
|
431
|
+
}
|
|
432
|
+
return toReturn;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
export class SetCDNStatusResponse {
|
|
436
|
+
static fromProto(proto) {
|
|
437
|
+
let m = new SetCDNStatusResponse();
|
|
438
|
+
m = Object.assign(m, proto);
|
|
439
|
+
return m;
|
|
440
|
+
}
|
|
441
|
+
constructor(kwargs) {
|
|
442
|
+
if (!kwargs) {
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
Object.assign(this, kwargs);
|
|
446
|
+
}
|
|
447
|
+
toApiJson() {
|
|
448
|
+
const toReturn = {};
|
|
449
|
+
if (typeof this.success !== 'undefined') {
|
|
450
|
+
toReturn['success'] = this.success;
|
|
451
|
+
}
|
|
452
|
+
return toReturn;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
export class SiteDetails {
|
|
456
|
+
static fromProto(proto) {
|
|
457
|
+
let m = new SiteDetails();
|
|
458
|
+
m = Object.assign(m, proto);
|
|
459
|
+
if (proto.plugins) {
|
|
460
|
+
m.plugins = proto.plugins.map(PluginInfo.fromProto);
|
|
461
|
+
}
|
|
462
|
+
if (proto.theme) {
|
|
463
|
+
m.theme = ThemeInfo.fromProto(proto.theme);
|
|
464
|
+
}
|
|
465
|
+
return m;
|
|
466
|
+
}
|
|
467
|
+
constructor(kwargs) {
|
|
468
|
+
if (!kwargs) {
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
Object.assign(this, kwargs);
|
|
472
|
+
}
|
|
473
|
+
toApiJson() {
|
|
474
|
+
const toReturn = {};
|
|
475
|
+
if (typeof this.coreCurrentVersion !== 'undefined') {
|
|
476
|
+
toReturn['coreCurrentVersion'] = this.coreCurrentVersion;
|
|
477
|
+
}
|
|
478
|
+
if (typeof this.coreLatestVersion !== 'undefined') {
|
|
479
|
+
toReturn['coreLatestVersion'] = this.coreLatestVersion;
|
|
480
|
+
}
|
|
481
|
+
if (typeof this.plugins !== 'undefined' && this.plugins !== null) {
|
|
482
|
+
toReturn['plugins'] = 'toApiJson' in this.plugins ? this.plugins.toApiJson() : this.plugins;
|
|
483
|
+
}
|
|
484
|
+
if (typeof this.theme !== 'undefined' && this.theme !== null) {
|
|
485
|
+
toReturn['theme'] = 'toApiJson' in this.theme ? this.theme.toApiJson() : this.theme;
|
|
486
|
+
}
|
|
487
|
+
return toReturn;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
export class SiteHealthCheckRequest {
|
|
491
|
+
static fromProto(proto) {
|
|
492
|
+
let m = new SiteHealthCheckRequest();
|
|
493
|
+
m = Object.assign(m, proto);
|
|
494
|
+
return m;
|
|
495
|
+
}
|
|
496
|
+
constructor(kwargs) {
|
|
497
|
+
if (!kwargs) {
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
Object.assign(this, kwargs);
|
|
501
|
+
}
|
|
502
|
+
toApiJson() {
|
|
503
|
+
const toReturn = {};
|
|
504
|
+
if (typeof this.siteUrl !== 'undefined') {
|
|
505
|
+
toReturn['siteUrl'] = this.siteUrl;
|
|
506
|
+
}
|
|
507
|
+
return toReturn;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
export class SiteHealthCheckResponse {
|
|
511
|
+
static fromProto(proto) {
|
|
512
|
+
let m = new SiteHealthCheckResponse();
|
|
513
|
+
m = Object.assign(m, proto);
|
|
514
|
+
return m;
|
|
515
|
+
}
|
|
516
|
+
constructor(kwargs) {
|
|
517
|
+
if (!kwargs) {
|
|
518
|
+
return;
|
|
519
|
+
}
|
|
520
|
+
Object.assign(this, kwargs);
|
|
521
|
+
}
|
|
522
|
+
toApiJson() {
|
|
523
|
+
const toReturn = {};
|
|
524
|
+
if (typeof this.healthy !== 'undefined') {
|
|
525
|
+
toReturn['healthy'] = this.healthy;
|
|
526
|
+
}
|
|
527
|
+
if (typeof this.wpVersion !== 'undefined') {
|
|
528
|
+
toReturn['wpVersion'] = this.wpVersion;
|
|
529
|
+
}
|
|
530
|
+
if (typeof this.phpVersion !== 'undefined') {
|
|
531
|
+
toReturn['phpVersion'] = this.phpVersion;
|
|
532
|
+
}
|
|
533
|
+
if (typeof this.pluginVersion !== 'undefined') {
|
|
534
|
+
toReturn['pluginVersion'] = this.pluginVersion;
|
|
535
|
+
}
|
|
536
|
+
if (typeof this.siteId !== 'undefined') {
|
|
537
|
+
toReturn['siteId'] = this.siteId;
|
|
538
|
+
}
|
|
539
|
+
if (typeof this.environment !== 'undefined') {
|
|
540
|
+
toReturn['environment'] = this.environment;
|
|
541
|
+
}
|
|
542
|
+
if (typeof this.checks !== 'undefined') {
|
|
543
|
+
toReturn['checks'] = this.checks;
|
|
544
|
+
}
|
|
545
|
+
return toReturn;
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
export class SiteOverview {
|
|
549
|
+
static fromProto(proto) {
|
|
550
|
+
let m = new SiteOverview();
|
|
551
|
+
m = Object.assign(m, proto);
|
|
552
|
+
return m;
|
|
553
|
+
}
|
|
554
|
+
constructor(kwargs) {
|
|
555
|
+
if (!kwargs) {
|
|
556
|
+
return;
|
|
557
|
+
}
|
|
558
|
+
Object.assign(this, kwargs);
|
|
559
|
+
}
|
|
560
|
+
toApiJson() {
|
|
561
|
+
const toReturn = {};
|
|
562
|
+
if (typeof this.atomicSiteId !== 'undefined') {
|
|
563
|
+
toReturn['atomicSiteId'] = this.atomicSiteId;
|
|
564
|
+
}
|
|
565
|
+
if (typeof this.domain !== 'undefined') {
|
|
566
|
+
toReturn['domain'] = this.domain;
|
|
567
|
+
}
|
|
568
|
+
if (typeof this.phpVersion !== 'undefined') {
|
|
569
|
+
toReturn['phpVersion'] = this.phpVersion;
|
|
570
|
+
}
|
|
571
|
+
if (typeof this.wpVersion !== 'undefined') {
|
|
572
|
+
toReturn['wpVersion'] = this.wpVersion;
|
|
573
|
+
}
|
|
574
|
+
if (typeof this.wpAdminEmail !== 'undefined') {
|
|
575
|
+
toReturn['wpAdminEmail'] = this.wpAdminEmail;
|
|
576
|
+
}
|
|
577
|
+
if (typeof this.wpAdminUser !== 'undefined') {
|
|
578
|
+
toReturn['wpAdminUser'] = this.wpAdminUser;
|
|
579
|
+
}
|
|
580
|
+
if (typeof this.atomicClientId !== 'undefined') {
|
|
581
|
+
toReturn['atomicClientId'] = this.atomicClientId;
|
|
582
|
+
}
|
|
583
|
+
if (typeof this.geoAffinity !== 'undefined') {
|
|
584
|
+
toReturn['geoAffinity'] = this.geoAffinity;
|
|
585
|
+
}
|
|
586
|
+
if (typeof this.serverPoolId !== 'undefined') {
|
|
587
|
+
toReturn['serverPoolId'] = this.serverPoolId;
|
|
588
|
+
}
|
|
589
|
+
if (typeof this.chrootPath !== 'undefined') {
|
|
590
|
+
toReturn['chrootPath'] = this.chrootPath;
|
|
591
|
+
}
|
|
592
|
+
if (typeof this.chrootSshPath !== 'undefined') {
|
|
593
|
+
toReturn['chrootSshPath'] = this.chrootSshPath;
|
|
594
|
+
}
|
|
595
|
+
if (typeof this.cachePrefix !== 'undefined') {
|
|
596
|
+
toReturn['cachePrefix'] = this.cachePrefix;
|
|
597
|
+
}
|
|
598
|
+
if (typeof this.dbCharset !== 'undefined') {
|
|
599
|
+
toReturn['dbCharset'] = this.dbCharset;
|
|
600
|
+
}
|
|
601
|
+
if (typeof this.dbCollate !== 'undefined') {
|
|
602
|
+
toReturn['dbCollate'] = this.dbCollate;
|
|
603
|
+
}
|
|
604
|
+
if (typeof this.dbPass !== 'undefined') {
|
|
605
|
+
toReturn['dbPass'] = this.dbPass;
|
|
606
|
+
}
|
|
607
|
+
if (typeof this.siteApiKey !== 'undefined') {
|
|
608
|
+
toReturn['siteApiKey'] = this.siteApiKey;
|
|
609
|
+
}
|
|
610
|
+
if (typeof this.staticFile404 !== 'undefined') {
|
|
611
|
+
toReturn['staticFile404'] = this.staticFile404;
|
|
612
|
+
}
|
|
613
|
+
if (typeof this.smtpPass !== 'undefined') {
|
|
614
|
+
toReturn['smtpPass'] = this.smtpPass;
|
|
615
|
+
}
|
|
616
|
+
if (typeof this.wpcomBlogId !== 'undefined') {
|
|
617
|
+
toReturn['wpcomBlogId'] = this.wpcomBlogId;
|
|
618
|
+
}
|
|
619
|
+
return toReturn;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
export class ThemeInfo {
|
|
623
|
+
static fromProto(proto) {
|
|
624
|
+
let m = new ThemeInfo();
|
|
625
|
+
m = Object.assign(m, proto);
|
|
626
|
+
return m;
|
|
627
|
+
}
|
|
628
|
+
constructor(kwargs) {
|
|
629
|
+
if (!kwargs) {
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
632
|
+
Object.assign(this, kwargs);
|
|
633
|
+
}
|
|
634
|
+
toApiJson() {
|
|
635
|
+
const toReturn = {};
|
|
636
|
+
if (typeof this.id !== 'undefined') {
|
|
637
|
+
toReturn['id'] = this.id;
|
|
638
|
+
}
|
|
639
|
+
if (typeof this.currentVersion !== 'undefined') {
|
|
640
|
+
toReturn['currentVersion'] = this.currentVersion;
|
|
641
|
+
}
|
|
642
|
+
if (typeof this.latestVersion !== 'undefined') {
|
|
643
|
+
toReturn['latestVersion'] = this.latestVersion;
|
|
644
|
+
}
|
|
645
|
+
if (typeof this.updateAvailable !== 'undefined') {
|
|
646
|
+
toReturn['updateAvailable'] = this.updateAvailable;
|
|
647
|
+
}
|
|
648
|
+
return toReturn;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vd3BfY2xvdWRfbWFuYWdlcl9zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxPQUFPLDhCQUE4QjtJQUd2QyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1FBQzdDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQWtEO1FBQzFELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQUM7UUFDM0UsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLCtCQUErQjtJQUd4QyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSwrQkFBK0IsRUFBRSxDQUFDO1FBQzlDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFBQyxDQUFDLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMs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SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFNbEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBNkI7UUFDckMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7U0FBQztRQUMvRCxJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQUM7UUFDbkcsSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FBQztRQUNoRyxJQUFJLE9BQU8sSUFBSSxDQUFDLGVBQWUsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQUM7UUFDdEcsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMvYXBpLmludGVyZmFjZSc7XG5cblxuZXhwb3J0IGNsYXNzIEdldEF2YWlsYWJsZVBIUFZlcnNpb25zUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0QXZhaWxhYmxlUEhQVmVyc2lvbnNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBjbGllbnQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldEF2YWlsYWJsZVBIUFZlcnNpb25zUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldEF2YWlsYWJsZVBIUFZlcnNpb25zUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0QXZhaWxhYmxlUEhQVmVyc2lvbnNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2xpZW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjbGllbnQnXSA9IHRoaXMuY2xpZW50O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldEF2YWlsYWJsZVBIUFZlcnNpb25zUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldEF2YWlsYWJsZVBIUFZlcnNpb25zUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHBocFZlcnNpb25zOiBQSFBWZXJzaW9uW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRBdmFpbGFibGVQSFBWZXJzaW9uc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0QXZhaWxhYmxlUEhQVmVyc2lvbnNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5waHBWZXJzaW9ucykge20ucGhwVmVyc2lvbnMgPSBwcm90by5waHBWZXJzaW9ucy5tYXAoUEhQVmVyc2lvbi5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRBdmFpbGFibGVQSFBWZXJzaW9uc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGhwVmVyc2lvbnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGhwVmVyc2lvbnMgIT09IG51bGwpIHt0b1JldHVyblsncGhwVmVyc2lvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGhwVmVyc2lvbnMgPyAodGhpcy5waHBWZXJzaW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5waHBWZXJzaW9uczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRDRE5TdGF0dXNSZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRDRE5TdGF0dXNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBzaXRlOiBzdHJpbmc7XG4gICAgZG9tYWluOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRDRE5TdGF0dXNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0Q0ROU3RhdHVzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0Q0ROU3RhdHVzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNpdGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NpdGUnXSA9IHRoaXMuc2l0ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kb21haW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RvbWFpbiddID0gdGhpcy5kb21haW47fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0Q0ROU3RhdHVzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldENETlN0YXR1c1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIHN0YXR1czogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0Q0ROU3RhdHVzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRDRE5TdGF0dXNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0Q0ROU3RhdHVzUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmFibGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbmFibGVkJ10gPSB0aGlzLmVuYWJsZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhdHVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdGF0dXMnXSA9IHRoaXMuc3RhdHVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldE9uZUNsaWNrTG9naW5SZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRPbmVDbGlja0xvZ2luUmVxdWVzdEludGVyZmFjZSB7XG4gICAgc2l0ZVVybDogc3RyaW5nO1xuICAgIHJlZGlyZWN0VG86IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE9uZUNsaWNrTG9naW5SZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0T25lQ2xpY2tMb2dpblJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldE9uZUNsaWNrTG9naW5SZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2l0ZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2l0ZVVybCddID0gdGhpcy5zaXRlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlZGlyZWN0VG8gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlZGlyZWN0VG8nXSA9IHRoaXMucmVkaXJlY3RUbzt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRPbmVDbGlja0xvZ2luUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldE9uZUNsaWNrTG9naW5SZXNwb25zZUludGVyZmFjZSB7XG4gICAgbG9naW5Vcmw6IHN0cmluZztcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICB0dGw6IG51bWJlcjtcbiAgICB1c2VySWQ6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE9uZUNsaWNrTG9naW5SZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldE9uZUNsaWNrTG9naW5SZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5leHBpcmVzQXQpIHttLmV4cGlyZXNBdCA9IHBhcnNlSW50KHByb3RvLmV4cGlyZXNBdCwgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRPbmVDbGlja0xvZ2luUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2dpblVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9naW5VcmwnXSA9IHRoaXMubG9naW5Vcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXhwaXJlc0F0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydleHBpcmVzQXQnXSA9IHRoaXMuZXhwaXJlc0F0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnR0bCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndHRsJ10gPSB0aGlzLnR0bDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJJZCddID0gdGhpcy51c2VySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0U2l0ZURldGFpbHNSZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRTaXRlRGV0YWlsc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHNpdGVVcmw6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFNpdGVEZXRhaWxzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldFNpdGVEZXRhaWxzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0U2l0ZURldGFpbHNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2l0ZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2l0ZVVybCddID0gdGhpcy5zaXRlVXJsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldFNpdGVEZXRhaWxzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldFNpdGVEZXRhaWxzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHNpdGVEZXRhaWxzOiBTaXRlRGV0YWlscztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFNpdGVEZXRhaWxzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRTaXRlRGV0YWlsc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnNpdGVEZXRhaWxzKSB7bS5zaXRlRGV0YWlscyA9IFNpdGVEZXRhaWxzLmZyb21Qcm90byhwcm90by5zaXRlRGV0YWlscyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFNpdGVEZXRhaWxzUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zaXRlRGV0YWlscyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zaXRlRGV0YWlscyAhPT0gbnVsbCkge3RvUmV0dXJuWydzaXRlRGV0YWlscyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zaXRlRGV0YWlscyA/ICh0aGlzLnNpdGVEZXRhaWxzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNpdGVEZXRhaWxzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldFNpdGVPcHRpb25zUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0U2l0ZU9wdGlvbnNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBzaXRlVXJsOiBzdHJpbmc7XG4gICAgb3B0aW9uczogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRTaXRlT3B0aW9uc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRTaXRlT3B0aW9uc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFNpdGVPcHRpb25zUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNpdGVVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NpdGVVcmwnXSA9IHRoaXMuc2l0ZVVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcHRpb25zJ10gPSB0aGlzLm9wdGlvbnM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0U2l0ZU9wdGlvbnNSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0U2l0ZU9wdGlvbnNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgZGF0YTogYW55O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0U2l0ZU9wdGlvbnNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldFNpdGVPcHRpb25zUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFNpdGVPcHRpb25zUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kYXRhICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkYXRhJ10gPSB0aGlzLmRhdGE7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0U2l0ZU92ZXJ2aWV3UmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0U2l0ZU92ZXJ2aWV3UmVxdWVzdEludGVyZmFjZSB7XG4gICAgc2l0ZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0U2l0ZU92ZXJ2aWV3UmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldFNpdGVPdmVydmlld1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFNpdGVPdmVydmlld1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zaXRlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzaXRlJ10gPSB0aGlzLnNpdGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0U2l0ZU92ZXJ2aWV3UmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldFNpdGVPdmVydmlld1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBzaXRlT3ZlcnZpZXc6IFNpdGVPdmVydmlldztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFNpdGVPdmVydmlld1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0U2l0ZU92ZXJ2aWV3UmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc2l0ZU92ZXJ2aWV3KSB7bS5zaXRlT3ZlcnZpZXcgPSBTaXRlT3ZlcnZpZXcuZnJvbVByb3RvKHByb3RvLnNpdGVPdmVydmlldyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFNpdGVPdmVydmlld1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2l0ZU92ZXJ2aWV3ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnNpdGVPdmVydmlldyAhPT0gbnVsbCkge3RvUmV0dXJuWydzaXRlT3ZlcnZpZXcnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc2l0ZU92ZXJ2aWV3ID8gKHRoaXMuc2l0ZU92ZXJ2aWV3IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNpdGVPdmVydmlldzt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQSFBWZXJzaW9uIGltcGxlbWVudHMgaS5QSFBWZXJzaW9uSW50ZXJmYWNlIHtcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgaXNEZWZhdWx0OiBib29sZWFuO1xuICAgIGlzRGVwcmVjYXRlZDogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFBIUFZlcnNpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBQSFBWZXJzaW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5QSFBWZXJzaW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmVyc2lvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndmVyc2lvbiddID0gdGhpcy52ZXJzaW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlzRGVmYXVsdCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaXNEZWZhdWx0J10gPSB0aGlzLmlzRGVmYXVsdDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pc0RlcHJlY2F0ZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lzRGVwcmVjYXRlZCddID0gdGhpcy5pc0RlcHJlY2F0ZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGluZ1JlcXVlc3QgaW1wbGVtZW50cyBpLlBpbmdSZXF1ZXN0SW50ZXJmYWNlIHtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFBpbmdSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUGluZ1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlBpbmdSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGluZ1Jlc3BvbnNlIGltcGxlbWVudHMgaS5QaW5nUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFBpbmdSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IFBpbmdSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUGluZ1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVzc2FnZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVzc2FnZSddID0gdGhpcy5tZXNzYWdlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBsdWdpbkluZm8gaW1wbGVtZW50cyBpLlBsdWdpbkluZm9JbnRlcmZhY2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY3VycmVudFZlcnNpb246IHN0cmluZztcbiAgICBsYXRlc3RWZXJzaW9uOiBzdHJpbmc7XG4gICAgdXBkYXRlQXZhaWxhYmxlOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogUGx1Z2luSW5mbyB7XG4gICAgICAgIGxldCBtID0gbmV3IFBsdWdpbkluZm8oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlBsdWdpbkluZm9JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3VycmVudFZlcnNpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1cnJlbnRWZXJzaW9uJ10gPSB0aGlzLmN1cnJlbnRWZXJzaW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhdGVzdFZlcnNpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xhdGVzdFZlcnNpb24nXSA9IHRoaXMubGF0ZXN0VmVyc2lvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51cGRhdGVBdmFpbGFibGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VwZGF0ZUF2YWlsYWJsZSddID0gdGhpcy51cGRhdGVBdmFpbGFibGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHVyZ2VDYWNoZVJlcXVlc3QgaW1wbGVtZW50cyBpLlB1cmdlQ2FjaGVSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBzaXRlOiBzdHJpbmc7XG4gICAgZG9tYWluOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQdXJnZUNhY2hlUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFB1cmdlQ2FjaGVSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5QdXJnZUNhY2hlUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNpdGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NpdGUnXSA9IHRoaXMuc2l0ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kb21haW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RvbWFpbiddID0gdGhpcy5kb21haW47fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHVyZ2VDYWNoZVJlc3BvbnNlIGltcGxlbWVudHMgaS5QdXJnZUNhY2hlUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQdXJnZUNhY2hlUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBQdXJnZUNhY2hlUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlB1cmdlQ2FjaGVSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1Y2Nlc3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N1Y2Nlc3MnXSA9IHRoaXMuc3VjY2Vzczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXRDRE5TdGF0dXNSZXF1ZXN0IGltcGxlbWVudHMgaS5TZXRDRE5TdGF0dXNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBzaXRlOiBzdHJpbmc7XG4gICAgZG9tYWluOiBzdHJpbmc7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNldENETlN0YXR1c1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBTZXRDRE5TdGF0dXNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TZXRDRE5TdGF0dXNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2l0ZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2l0ZSddID0gdGhpcy5zaXRlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRvbWFpbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZG9tYWluJ10gPSB0aGlzLmRvbWFpbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmFibGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbmFibGVkJ10gPSB0aGlzLmVuYWJsZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0Q0ROU3RhdHVzUmVzcG9uc2UgaW1wbGVtZW50cyBpLlNldENETlN0YXR1c1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU2V0Q0ROU3RhdHVzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBTZXRDRE5TdGF0dXNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2V0Q0ROU3RhdHVzUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWNjZXNzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdWNjZXNzJ10gPSB0aGlzLnN1Y2Nlc3M7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2l0ZURldGFpbHMgaW1wbGVtZW50cyBpLlNpdGVEZXRhaWxzSW50ZXJmYWNlIHtcbiAgICBjb3JlQ3VycmVudFZlcnNpb246IHN0cmluZztcbiAgICBjb3JlTGF0ZXN0VmVyc2lvbjogc3RyaW5nO1xuICAgIHBsdWdpbnM6IFBsdWdpbkluZm9bXTtcbiAgICB0aGVtZTogVGhlbWVJbmZvO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU2l0ZURldGFpbHMge1xuICAgICAgICBsZXQgbSA9IG5ldyBTaXRlRGV0YWlscygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wbHVnaW5zKSB7bS5wbHVnaW5zID0gcHJvdG8ucGx1Z2lucy5tYXAoUGx1Z2luSW5mby5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnRoZW1lKSB7bS50aGVtZSA9IFRoZW1lSW5mby5mcm9tUHJvdG8ocHJvdG8udGhlbWUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TaXRlRGV0YWlsc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvcmVDdXJyZW50VmVyc2lvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY29yZUN1cnJlbnRWZXJzaW9uJ10gPSB0aGlzLmNvcmVDdXJyZW50VmVyc2lvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb3JlTGF0ZXN0VmVyc2lvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY29yZUxhdGVzdFZlcnNpb24nXSA9IHRoaXMuY29yZUxhdGVzdFZlcnNpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGx1Z2lucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wbHVnaW5zICE9PSBudWxsKSB7dG9SZXR1cm5bJ3BsdWdpbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGx1Z2lucyA/ICh0aGlzLnBsdWdpbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucGx1Z2luczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aGVtZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aGVtZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aGVtZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aGVtZSA/ICh0aGlzLnRoZW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRoZW1lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpdGVIZWFsdGhDaGVja1JlcXVlc3QgaW1wbGVtZW50cyBpLlNpdGVIZWFsdGhDaGVja1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHNpdGVVcmw6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNpdGVIZWFsdGhDaGVja1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBTaXRlSGVhbHRoQ2hlY2tSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TaXRlSGVhbHRoQ2hlY2tSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2l0ZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2l0ZVVybCddID0gdGhpcy5zaXRlVXJsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpdGVIZWFsdGhDaGVja1Jlc3BvbnNlIGltcGxlbWVudHMgaS5TaXRlSGVhbHRoQ2hlY2tSZXNwb25zZUludGVyZmFjZSB7XG4gICAgaGVhbHRoeTogYm9vbGVhbjtcbiAgICB3cFZlcnNpb246IHN0cmluZztcbiAgICBwaHBWZXJzaW9uOiBzdHJpbmc7XG4gICAgcGx1Z2luVmVyc2lvbjogc3RyaW5nO1xuICAgIHNpdGVJZDogc3RyaW5nO1xuICAgIGVudmlyb25tZW50OiBzdHJpbmc7XG4gICAgY2hlY2tzOiBhbnk7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTaXRlSGVhbHRoQ2hlY2tSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IFNpdGVIZWFsdGhDaGVja1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TaXRlSGVhbHRoQ2hlY2tSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhlYWx0aHkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hlYWx0aHknXSA9IHRoaXMuaGVhbHRoeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy53cFZlcnNpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3dwVmVyc2lvbiddID0gdGhpcy53cFZlcnNpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGhwVmVyc2lvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGhwVmVyc2lvbiddID0gdGhpcy5waHBWZXJzaW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBsdWdpblZlcnNpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BsdWdpblZlcnNpb24nXSA9IHRoaXMucGx1Z2luVmVyc2lvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zaXRlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NpdGVJZCddID0gdGhpcy5zaXRlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW52aXJvbm1lbnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Vudmlyb25tZW50J10gPSB0aGlzLmVudmlyb25tZW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNoZWNrcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2hlY2tzJ10gPSB0aGlzLmNoZWNrczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTaXRlT3ZlcnZpZXcgaW1wbGVtZW50cyBpLlNpdGVPdmVydmlld0ludGVyZmFjZSB7XG4gICAgYXRvbWljU2l0ZUlkOiBzdHJpbmc7XG4gICAgZG9tYWluOiBzdHJpbmc7XG4gICAgcGhwVmVyc2lvbjogc3RyaW5nO1xuICAgIHdwVmVyc2lvbjogc3RyaW5nO1xuICAgIHdwQWRtaW5FbWFpbDogc3RyaW5nO1xuICAgIHdwQWRtaW5Vc2VyOiBzdHJpbmc7XG4gICAgYXRvbWljQ2xpZW50SWQ6IHN0cmluZztcbiAgICBnZW9BZmZpbml0eTogc3RyaW5nO1xuICAgIHNlcnZlclBvb2xJZDogc3RyaW5nO1xuICAgIGNocm9vdFBhdGg6IHN0cmluZztcbiAgICBjaHJvb3RTc2hQYXRoOiBzdHJpbmc7XG4gICAgY2FjaGVQcmVmaXg6IHN0cmluZztcbiAgICBkYkNoYXJzZXQ6IHN0cmluZztcbiAgICBkYkNvbGxhdGU6IHN0cmluZztcbiAgICBkYlBhc3M6IHN0cmluZztcbiAgICBzaXRlQXBpS2V5OiBzdHJpbmc7XG4gICAgc3RhdGljRmlsZTQwNDogc3RyaW5nO1xuICAgIHNtdHBQYXNzOiBzdHJpbmc7XG4gICAgd3Bjb21CbG9nSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNpdGVPdmVydmlldyB7XG4gICAgICAgIGxldCBtID0gbmV3IFNpdGVPdmVydmlldygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2l0ZU92ZXJ2aWV3SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXRvbWljU2l0ZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhdG9taWNTaXRlSWQnXSA9IHRoaXMuYXRvbWljU2l0ZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRvbWFpbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZG9tYWluJ10gPSB0aGlzLmRvbWFpbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5waHBWZXJzaW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwaHBWZXJzaW9uJ10gPSB0aGlzLnBocFZlcnNpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMud3BWZXJzaW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd3cFZlcnNpb24nXSA9IHRoaXMud3BWZXJzaW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndwQWRtaW5FbWFpbCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnd3BBZG1pbkVtYWlsJ10gPSB0aGlzLndwQWRtaW5FbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy53cEFkbWluVXNlciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnd3BBZG1pblVzZXInXSA9IHRoaXMud3BBZG1pblVzZXI7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXRvbWljQ2xpZW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2F0b21pY0NsaWVudElkJ10gPSB0aGlzLmF0b21pY0NsaWVudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmdlb0FmZmluaXR5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydnZW9BZmZpbml0eSddID0gdGhpcy5nZW9BZmZpbml0eTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZXJ2ZXJQb29sSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlcnZlclBvb2xJZCddID0gdGhpcy5zZXJ2ZXJQb29sSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2hyb290UGF0aCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2hyb290UGF0aCddID0gdGhpcy5jaHJvb3RQYXRoO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNocm9vdFNzaFBhdGggIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Nocm9vdFNzaFBhdGgnXSA9IHRoaXMuY2hyb290U3NoUGF0aDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYWNoZVByZWZpeCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FjaGVQcmVmaXgnXSA9IHRoaXMuY2FjaGVQcmVmaXg7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGJDaGFyc2V0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkYkNoYXJzZXQnXSA9IHRoaXMuZGJDaGFyc2V0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRiQ29sbGF0ZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGJDb2xsYXRlJ10gPSB0aGlzLmRiQ29sbGF0ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kYlBhc3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RiUGFzcyddID0gdGhpcy5kYlBhc3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2l0ZUFwaUtleSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2l0ZUFwaUtleSddID0gdGhpcy5zaXRlQXBpS2V5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXRpY0ZpbGU0MDQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N0YXRpY0ZpbGU0MDQnXSA9IHRoaXMuc3RhdGljRmlsZTQwNDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zbXRwUGFzcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc210cFBhc3MnXSA9IHRoaXMuc210cFBhc3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMud3Bjb21CbG9nSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3dwY29tQmxvZ0lkJ10gPSB0aGlzLndwY29tQmxvZ0lkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRoZW1lSW5mbyBpbXBsZW1lbnRzIGkuVGhlbWVJbmZvSW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGN1cnJlbnRWZXJzaW9uOiBzdHJpbmc7XG4gICAgbGF0ZXN0VmVyc2lvbjogc3RyaW5nO1xuICAgIHVwZGF0ZUF2YWlsYWJsZTogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFRoZW1lSW5mbyB7XG4gICAgICAgIGxldCBtID0gbmV3IFRoZW1lSW5mbygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVGhlbWVJbmZvSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1cnJlbnRWZXJzaW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXJyZW50VmVyc2lvbiddID0gdGhpcy5jdXJyZW50VmVyc2lvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYXRlc3RWZXJzaW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsYXRlc3RWZXJzaW9uJ10gPSB0aGlzLmxhdGVzdFZlcnNpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlQXZhaWxhYmxlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1cGRhdGVBdmFpbGFibGUnXSA9IHRoaXMudXBkYXRlQXZhaWxhYmxlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
|