@coralogix/rum-cli 1.1.19 → 1.1.21
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/README.md +14 -7
- package/api/rum-api.ts +2 -1
- package/cli/commands/update-source-maps-command.ts +3 -2
- package/dist/api/rum-api.js +3 -2
- package/dist/cli/commands/update-source-maps-command.js +4 -3
- package/dist/models/commands.model.d.ts +1 -0
- package/dist/models/commands.model.js +1 -1
- package/dist/proto-models/com/coralogix/rum/v2/analytics.d.ts +131 -0
- package/dist/proto-models/com/coralogix/rum/v2/analytics.js +771 -0
- package/dist/proto-models/com/coralogix/rum/v2/audit_log.d.ts +1 -1
- package/dist/proto-models/com/coralogix/rum/v2/audit_log.js +3 -5
- package/dist/proto-models/com/coralogix/rum/v2/chunk.d.ts +1 -1
- package/dist/proto-models/com/coralogix/rum/v2/chunk.js +49 -54
- package/dist/proto-models/com/coralogix/rum/v2/file.d.ts +1 -1
- package/dist/proto-models/com/coralogix/rum/v2/file.js +34 -24
- package/dist/proto-models/com/coralogix/rum/v2/rum_service.d.ts +64 -1
- package/dist/proto-models/com/coralogix/rum/v2/rum_service.js +387 -92
- package/dist/proto-models/com/coralogix/rum/v2/rum_session_recording_service.d.ts +1 -1
- package/dist/proto-models/com/coralogix/rum/v2/rum_session_recording_service.js +32 -24
- package/dist/proto-models/com/coralogix/rum/v2/rum_source_map_service.d.ts +4 -1
- package/dist/proto-models/com/coralogix/rum/v2/rum_source_map_service.js +72 -59
- package/dist/proto-models/com/coralogix/rum/v2/source_code_file_mapping.d.ts +1 -1
- package/dist/proto-models/com/coralogix/rum/v2/source_code_file_mapping.js +24 -47
- package/dist/proto-models/com/coralogix/rum/v2/source_map_release.d.ts +1 -1
- package/dist/proto-models/com/coralogix/rum/v2/source_map_release.js +38 -43
- package/dist/proto-models/com/coralogix/rum/v2/template.d.ts +1 -1
- package/dist/proto-models/com/coralogix/rum/v2/template.js +53 -66
- package/dist/proto-models/google/protobuf/descriptor.d.ts +1 -1
- package/dist/proto-models/google/protobuf/descriptor.js +427 -537
- package/dist/services/source-maps.service.d.ts +1 -1
- package/dist/services/source-maps.service.js +3 -2
- package/models/commands.model.ts +1 -0
- package/package.json +1 -1
- package/proto-models/com/coralogix/rum/v2/analytics.ts +910 -0
- package/proto-models/com/coralogix/rum/v2/audit_log.ts +4 -6
- package/proto-models/com/coralogix/rum/v2/chunk.ts +56 -55
- package/proto-models/com/coralogix/rum/v2/file.ts +39 -25
- package/proto-models/com/coralogix/rum/v2/rum_service.ts +439 -90
- package/proto-models/com/coralogix/rum/v2/rum_session_recording_service.ts +40 -25
- package/proto-models/com/coralogix/rum/v2/rum_source_map_service.ts +81 -58
- package/proto-models/com/coralogix/rum/v2/source_code_file_mapping.ts +27 -48
- package/proto-models/com/coralogix/rum/v2/source_map_release.ts +44 -44
- package/proto-models/com/coralogix/rum/v2/template.ts +60 -67
- package/proto-models/google/protobuf/descriptor.ts +464 -551
- package/protofetch.lock +2 -2
- package/protofetch.toml +1 -1
- package/protos/com/coralogix/rum/v2/analytics.proto +57 -0
- package/protos/com/coralogix/rum/v2/rum_service.proto +21 -0
- package/protos/com/coralogix/rum/v2/rum_source_map_service.proto +2 -0
- package/protoset.bin +0 -0
- package/services/source-maps.service.ts +2 -0
|
@@ -30,7 +30,7 @@ function eventTypeFromJSON(object) {
|
|
|
30
30
|
case "EVENT_TYPE_NETWORK":
|
|
31
31
|
return EventType.EVENT_TYPE_NETWORK;
|
|
32
32
|
default:
|
|
33
|
-
throw new
|
|
33
|
+
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum EventType");
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
exports.eventTypeFromJSON = eventTypeFromJSON;
|
|
@@ -45,7 +45,7 @@ function eventTypeToJSON(object) {
|
|
|
45
45
|
case EventType.EVENT_TYPE_NETWORK:
|
|
46
46
|
return "EVENT_TYPE_NETWORK";
|
|
47
47
|
default:
|
|
48
|
-
throw new
|
|
48
|
+
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum EventType");
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
exports.eventTypeToJSON = eventTypeToJSON;
|
|
@@ -91,18 +91,18 @@ exports.Filter = {
|
|
|
91
91
|
},
|
|
92
92
|
fromJSON(object) {
|
|
93
93
|
return {
|
|
94
|
-
key: isSet(object.key) ?
|
|
95
|
-
values:
|
|
94
|
+
key: isSet(object.key) ? String(object.key) : "",
|
|
95
|
+
values: Array.isArray(object === null || object === void 0 ? void 0 : object.values) ? object.values.map((e) => String(e)) : [],
|
|
96
96
|
};
|
|
97
97
|
},
|
|
98
98
|
toJSON(message) {
|
|
99
|
-
var _a;
|
|
100
99
|
const obj = {};
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
message.key !== undefined && (obj.key = message.key);
|
|
101
|
+
if (message.values) {
|
|
102
|
+
obj.values = message.values.map((e) => e);
|
|
103
103
|
}
|
|
104
|
-
|
|
105
|
-
obj.values =
|
|
104
|
+
else {
|
|
105
|
+
obj.values = [];
|
|
106
106
|
}
|
|
107
107
|
return obj;
|
|
108
108
|
},
|
|
@@ -252,56 +252,34 @@ exports.Template = {
|
|
|
252
252
|
},
|
|
253
253
|
fromJSON(object) {
|
|
254
254
|
return {
|
|
255
|
-
templateId: isSet(object.templateId) ?
|
|
255
|
+
templateId: isSet(object.templateId) ? String(object.templateId) : "",
|
|
256
256
|
eventType: isSet(object.eventType) ? eventTypeFromJSON(object.eventType) : 0,
|
|
257
|
-
pageFragments: isSet(object.pageFragments) ?
|
|
258
|
-
errorMessage: isSet(object.errorMessage) ?
|
|
259
|
-
statusCode: isSet(object.statusCode) ?
|
|
257
|
+
pageFragments: isSet(object.pageFragments) ? String(object.pageFragments) : "",
|
|
258
|
+
errorMessage: isSet(object.errorMessage) ? String(object.errorMessage) : undefined,
|
|
259
|
+
statusCode: isSet(object.statusCode) ? String(object.statusCode) : undefined,
|
|
260
260
|
networkRequestFragments: isSet(object.networkRequestFragments)
|
|
261
|
-
?
|
|
261
|
+
? String(object.networkRequestFragments)
|
|
262
262
|
: undefined,
|
|
263
|
-
errorType: isSet(object.errorType) ?
|
|
264
|
-
companyId: isSet(object.companyId) ?
|
|
265
|
-
createdAt: isSet(object.createdAt) ?
|
|
266
|
-
updatedAt: isSet(object.updatedAt) ?
|
|
267
|
-
applicationName: isSet(object.applicationName) ?
|
|
263
|
+
errorType: isSet(object.errorType) ? String(object.errorType) : undefined,
|
|
264
|
+
companyId: isSet(object.companyId) ? Number(object.companyId) : 0,
|
|
265
|
+
createdAt: isSet(object.createdAt) ? Number(object.createdAt) : 0,
|
|
266
|
+
updatedAt: isSet(object.updatedAt) ? Number(object.updatedAt) : 0,
|
|
267
|
+
applicationName: isSet(object.applicationName) ? String(object.applicationName) : "",
|
|
268
268
|
};
|
|
269
269
|
},
|
|
270
270
|
toJSON(message) {
|
|
271
271
|
const obj = {};
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}
|
|
284
|
-
if (message.statusCode !== undefined) {
|
|
285
|
-
obj.statusCode = message.statusCode;
|
|
286
|
-
}
|
|
287
|
-
if (message.networkRequestFragments !== undefined) {
|
|
288
|
-
obj.networkRequestFragments = message.networkRequestFragments;
|
|
289
|
-
}
|
|
290
|
-
if (message.errorType !== undefined) {
|
|
291
|
-
obj.errorType = message.errorType;
|
|
292
|
-
}
|
|
293
|
-
if (message.companyId !== 0) {
|
|
294
|
-
obj.companyId = Math.round(message.companyId);
|
|
295
|
-
}
|
|
296
|
-
if (message.createdAt !== 0) {
|
|
297
|
-
obj.createdAt = Math.round(message.createdAt);
|
|
298
|
-
}
|
|
299
|
-
if (message.updatedAt !== 0) {
|
|
300
|
-
obj.updatedAt = Math.round(message.updatedAt);
|
|
301
|
-
}
|
|
302
|
-
if (message.applicationName !== "") {
|
|
303
|
-
obj.applicationName = message.applicationName;
|
|
304
|
-
}
|
|
272
|
+
message.templateId !== undefined && (obj.templateId = message.templateId);
|
|
273
|
+
message.eventType !== undefined && (obj.eventType = eventTypeToJSON(message.eventType));
|
|
274
|
+
message.pageFragments !== undefined && (obj.pageFragments = message.pageFragments);
|
|
275
|
+
message.errorMessage !== undefined && (obj.errorMessage = message.errorMessage);
|
|
276
|
+
message.statusCode !== undefined && (obj.statusCode = message.statusCode);
|
|
277
|
+
message.networkRequestFragments !== undefined && (obj.networkRequestFragments = message.networkRequestFragments);
|
|
278
|
+
message.errorType !== undefined && (obj.errorType = message.errorType);
|
|
279
|
+
message.companyId !== undefined && (obj.companyId = Math.round(message.companyId));
|
|
280
|
+
message.createdAt !== undefined && (obj.createdAt = Math.round(message.createdAt));
|
|
281
|
+
message.updatedAt !== undefined && (obj.updatedAt = Math.round(message.updatedAt));
|
|
282
|
+
message.applicationName !== undefined && (obj.applicationName = message.applicationName);
|
|
305
283
|
return obj;
|
|
306
284
|
},
|
|
307
285
|
create(base) {
|
|
@@ -376,21 +354,15 @@ exports.TemplateResult = {
|
|
|
376
354
|
fromJSON(object) {
|
|
377
355
|
return {
|
|
378
356
|
template: isSet(object.template) ? exports.Template.fromJSON(object.template) : undefined,
|
|
379
|
-
numberOfErrors: isSet(object.numberOfErrors) ?
|
|
380
|
-
numberOfUsers: isSet(object.numberOfUsers) ?
|
|
357
|
+
numberOfErrors: isSet(object.numberOfErrors) ? Number(object.numberOfErrors) : 0,
|
|
358
|
+
numberOfUsers: isSet(object.numberOfUsers) ? Number(object.numberOfUsers) : 0,
|
|
381
359
|
};
|
|
382
360
|
},
|
|
383
361
|
toJSON(message) {
|
|
384
362
|
const obj = {};
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
if (message.numberOfErrors !== 0) {
|
|
389
|
-
obj.numberOfErrors = Math.round(message.numberOfErrors);
|
|
390
|
-
}
|
|
391
|
-
if (message.numberOfUsers !== 0) {
|
|
392
|
-
obj.numberOfUsers = Math.round(message.numberOfUsers);
|
|
393
|
-
}
|
|
363
|
+
message.template !== undefined && (obj.template = message.template ? exports.Template.toJSON(message.template) : undefined);
|
|
364
|
+
message.numberOfErrors !== undefined && (obj.numberOfErrors = Math.round(message.numberOfErrors));
|
|
365
|
+
message.numberOfUsers !== undefined && (obj.numberOfUsers = Math.round(message.numberOfUsers));
|
|
394
366
|
return obj;
|
|
395
367
|
},
|
|
396
368
|
create(base) {
|
|
@@ -407,9 +379,24 @@ exports.TemplateResult = {
|
|
|
407
379
|
return message;
|
|
408
380
|
},
|
|
409
381
|
};
|
|
382
|
+
var tsProtoGlobalThis = (() => {
|
|
383
|
+
if (typeof globalThis !== "undefined") {
|
|
384
|
+
return globalThis;
|
|
385
|
+
}
|
|
386
|
+
if (typeof self !== "undefined") {
|
|
387
|
+
return self;
|
|
388
|
+
}
|
|
389
|
+
if (typeof window !== "undefined") {
|
|
390
|
+
return window;
|
|
391
|
+
}
|
|
392
|
+
if (typeof global !== "undefined") {
|
|
393
|
+
return global;
|
|
394
|
+
}
|
|
395
|
+
throw "Unable to locate global object";
|
|
396
|
+
})();
|
|
410
397
|
function longToNumber(long) {
|
|
411
|
-
if (long.gt(
|
|
412
|
-
throw new
|
|
398
|
+
if (long.gt(Number.MAX_SAFE_INTEGER)) {
|
|
399
|
+
throw new tsProtoGlobalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
|
|
413
400
|
}
|
|
414
401
|
return long.toNumber();
|
|
415
402
|
}
|
|
@@ -420,4 +407,4 @@ if (minimal_1.default.util.Long !== long_1.default) {
|
|
|
420
407
|
function isSet(value) {
|
|
421
408
|
return value !== null && value !== undefined;
|
|
422
409
|
}
|
|
423
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ydW0vdjIvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4QixpRUFBcUM7QUFFeEIsUUFBQSxlQUFlLEdBQUcsc0JBQXNCLENBQUM7QUFFdEQsSUFBWSxTQUtYO0FBTEQsV0FBWSxTQUFTO0lBQ25CLDZFQUEwQixDQUFBO0lBQzFCLGlFQUFvQixDQUFBO0lBQ3BCLCtEQUFtQixDQUFBO0lBQ25CLHFFQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFMVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUtwQjtBQUVELFNBQWdCLGlCQUFpQixDQUFDLE1BQVc7SUFDM0MsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssd0JBQXdCO1lBQzNCLE9BQU8sU0FBUyxDQUFDLHNCQUFzQixDQUFDO1FBQzFDLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxrQkFBa0I7WUFDckIsT0FBTyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7UUFDcEMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLGlCQUFpQjtZQUNwQixPQUFPLFNBQVMsQ0FBQyxlQUFlLENBQUM7UUFDbkMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLG9CQUFvQjtZQUN2QixPQUFPLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztRQUN0QztZQUNFLE1BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLDBCQUEwQixHQUFHLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxDQUFDO0tBQzNGO0FBQ0gsQ0FBQztBQWpCRCw4Q0FpQkM7QUFFRCxTQUFnQixlQUFlLENBQUMsTUFBaUI7SUFDL0MsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLFNBQVMsQ0FBQyxzQkFBc0I7WUFDbkMsT0FBTyx3QkFBd0IsQ0FBQztRQUNsQyxLQUFLLFNBQVMsQ0FBQyxnQkFBZ0I7WUFDN0IsT0FBTyxrQkFBa0IsQ0FBQztRQUM1QixLQUFLLFNBQVMsQ0FBQyxlQUFlO1lBQzVCLE9BQU8saUJBQWlCLENBQUM7UUFDM0IsS0FBSyxTQUFTLENBQUMsa0JBQWtCO1lBQy9CLE9BQU8sb0JBQW9CLENBQUM7UUFDOUI7WUFDRSxNQUFNLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxNQUFNLEdBQUcscUJBQXFCLENBQUMsQ0FBQztLQUMzRjtBQUNILENBQUM7QUFiRCwwQ0FhQztBQTJCRCxTQUFTLGdCQUFnQjtJQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFHO0lBQ3BCLE1BQU0sQ0FBQyxPQUFlLEVBQUUsU0FBcUIsaUJBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQzlELElBQUksT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUU7WUFDdEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUUsQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUE4QixFQUFFLE1BQWU7UUFDcEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxZQUFZLGlCQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5RSxJQUFJLEdBQUcsR0FBRyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUNsRSxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25DLE9BQU8sTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUU7WUFDdkIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVCLFFBQVEsR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDakIsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM5QixTQUFTO2dCQUNYLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztvQkFDckMsU0FBUzthQUNaO1lBQ0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsTUFBTTthQUNQO1lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDMUI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQVc7UUFDbEIsT0FBTztZQUNMLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzRCxNQUFNLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQzVHLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQWU7O1FBQ3BCLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNwQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRSxFQUFFO1lBQ3RCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztTQUN2QjtRQUNELElBQUksTUFBQSxPQUFPLENBQUMsTUFBTSwwQ0FBRSxNQUFNLEVBQUU7WUFDMUIsR0FBRyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQTBCO1FBQy9CLE9BQU8sY0FBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGFBQUosSUFBSSxjQUFKLElBQUksR0FBSSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsV0FBVyxDQUFDLE1BQTJCOztRQUNyQyxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxHQUFHLEdBQUcsTUFBQSxNQUFNLENBQUMsR0FBRyxtQ0FBSSxFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFBLE1BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSSxFQUFFLENBQUM7UUFDcEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGLENBQUM7QUFFRixTQUFTLGtCQUFrQjtJQUN6QixPQUFPO1FBQ0wsVUFBVSxFQUFFLEVBQUU7UUFDZCxTQUFTLEVBQUUsQ0FBQztRQUNaLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLFVBQVUsRUFBRSxTQUFTO1FBQ3JCLHVCQUF1QixFQUFFLFNBQVM7UUFDbEMsU0FBUyxFQUFFLFNBQVM7UUFDcEIsU0FBUyxFQUFFLENBQUM7UUFDWixTQUFTLEVBQUUsQ0FBQztRQUNaLFNBQVMsRUFBRSxDQUFDO1FBQ1osZUFBZSxFQUFFLEVBQUU7S0FDcEIsQ0FBQztBQUNKLENBQUM7QUFFWSxRQUFBLFFBQVEsR0FBRztJQUN0QixNQUFNLENBQUMsT0FBaUIsRUFBRSxTQUFxQixpQkFBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDaEUsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLEVBQUUsRUFBRTtZQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDOUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksT0FBTyxDQUFDLGFBQWEsS0FBSyxFQUFFLEVBQUU7WUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEQ7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQ3BDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM5QztRQUNELElBQUksT0FBTyxDQUFDLHVCQUF1QixLQUFLLFNBQVMsRUFBRTtZQUNqRCxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUMzRDtRQUNELElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLENBQUMsRUFBRTtZQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDNUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxPQUFPLENBQUMsZUFBZSxLQUFLLEVBQUUsRUFBRTtZQUNsQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDbkQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQThCLEVBQUUsTUFBZTtRQUNwRCxNQUFNLE1BQU0sR0FBRyxLQUFLLFlBQVksaUJBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlFLElBQUksR0FBRyxHQUFHLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2xFLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFDckMsT0FBTyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3JDLFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBUyxDQUFDO29CQUMxQyxTQUFTO2dCQUNYLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDeEMsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3ZDLFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNyQyxTQUFTO2dCQUNYLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNsRCxTQUFTO2dCQUNYLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDcEMsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ25DLFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQVUsQ0FBQyxDQUFDO29CQUN6RCxTQUFTO2dCQUNYLEtBQUssRUFBRTtvQkFDTCxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFVLENBQUMsQ0FBQztvQkFDekQsU0FBUztnQkFDWCxLQUFLLEVBQUU7b0JBQ0wsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzFDLFNBQVM7YUFDWjtZQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU07YUFDUDtZQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFXO1FBQ2xCLE9BQU87WUFDTCxVQUFVLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEYsU0FBUyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RSxhQUFhLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekYsWUFBWSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQzdGLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN2Rix1QkFBdUIsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDO2dCQUM1RCxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUM7Z0JBQ25ELENBQUMsQ0FBQyxTQUFTO1lBQ2IsU0FBUyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3BGLFNBQVMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RSxTQUFTLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVFLGVBQWUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNoRyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFpQjtRQUN0QixNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFDcEIsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLEVBQUUsRUFBRTtZQUM3QixHQUFHLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDckM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQzNCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNwRDtRQUNELElBQUksT0FBTyxDQUFDLGFBQWEsS0FBSyxFQUFFLEVBQUU7WUFDaEMsR0FBRyxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUN0QyxHQUFHLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7U0FDekM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQ3BDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztTQUNyQztRQUNELElBQUksT0FBTyxDQUFDLHVCQUF1QixLQUFLLFNBQVMsRUFBRTtZQUNqRCxHQUFHLENBQUMsdUJBQXVCLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDO1NBQy9EO1FBQ0QsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUNuQyxHQUFHLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDbkM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQzNCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0M7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQzNCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0M7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQzNCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0M7UUFDRCxJQUFJLE9BQU8sQ0FBQyxlQUFlLEtBQUssRUFBRSxFQUFFO1lBQ2xDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQztTQUMvQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUE0QjtRQUNqQyxPQUFPLGdCQUFRLENBQUMsV0FBVyxDQUFDLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxXQUFXLENBQUMsTUFBNkI7O1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFDckMsT0FBTyxDQUFDLFVBQVUsR0FBRyxNQUFBLE1BQU0sQ0FBQyxVQUFVLG1DQUFJLEVBQUUsQ0FBQztRQUM3QyxPQUFPLENBQUMsU0FBUyxHQUFHLE1BQUEsTUFBTSxDQUFDLFNBQVMsbUNBQUksQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsTUFBQSxNQUFNLENBQUMsYUFBYSxtQ0FBSSxFQUFFLENBQUM7UUFDbkQsT0FBTyxDQUFDLFlBQVksR0FBRyxNQUFBLE1BQU0sQ0FBQyxZQUFZLG1DQUFJLFNBQVMsQ0FBQztRQUN4RCxPQUFPLENBQUMsVUFBVSxHQUFHLE1BQUEsTUFBTSxDQUFDLFVBQVUsbUNBQUksU0FBUyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyx1QkFBdUIsR0FBRyxNQUFBLE1BQU0sQ0FBQyx1QkFBdUIsbUNBQUksU0FBUyxDQUFDO1FBQzlFLE9BQU8sQ0FBQyxTQUFTLEdBQUcsTUFBQSxNQUFNLENBQUMsU0FBUyxtQ0FBSSxTQUFTLENBQUM7UUFDbEQsT0FBTyxDQUFDLFNBQVMsR0FBRyxNQUFBLE1BQU0sQ0FBQyxTQUFTLG1DQUFJLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsU0FBUyxHQUFHLE1BQUEsTUFBTSxDQUFDLFNBQVMsbUNBQUksQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsTUFBQSxNQUFNLENBQUMsU0FBUyxtQ0FBSSxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxNQUFBLE1BQU0sQ0FBQyxlQUFlLG1DQUFJLEVBQUUsQ0FBQztRQUN2RCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YsQ0FBQztBQUVGLFNBQVMsd0JBQXdCO0lBQy9CLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3RFLENBQUM7QUFFWSxRQUFBLGNBQWMsR0FBRztJQUM1QixNQUFNLENBQUMsT0FBdUIsRUFBRSxTQUFxQixpQkFBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDdEUsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUNsQyxnQkFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN0RTtRQUNELElBQUksT0FBTyxDQUFDLGNBQWMsS0FBSyxDQUFDLEVBQUU7WUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsSUFBSSxPQUFPLENBQUMsYUFBYSxLQUFLLENBQUMsRUFBRTtZQUMvQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDaEQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQThCLEVBQUUsTUFBZTtRQUNwRCxNQUFNLE1BQU0sR0FBRyxLQUFLLFlBQVksaUJBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlFLElBQUksR0FBRyxHQUFHLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2xFLE1BQU0sT0FBTyxHQUFHLHdCQUF3QixFQUFFLENBQUM7UUFDM0MsT0FBTyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLFFBQVEsR0FBRyxnQkFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQzVELFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQVUsQ0FBQyxDQUFDO29CQUM5RCxTQUFTO2dCQUNYLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFVLENBQUMsQ0FBQztvQkFDN0QsU0FBUzthQUNaO1lBQ0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsTUFBTTthQUNQO1lBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDMUI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQVc7UUFDbEIsT0FBTztZQUNMLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDakYsY0FBYyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNGLGFBQWEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6RixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUF1QjtRQUM1QixNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFDcEIsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUNsQyxHQUFHLENBQUMsUUFBUSxHQUFHLGdCQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsRDtRQUNELElBQUksT0FBTyxDQUFDLGNBQWMsS0FBSyxDQUFDLEVBQUU7WUFDaEMsR0FBRyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN6RDtRQUNELElBQUksT0FBTyxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUU7WUFDL0IsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN2RDtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFrQztRQUN2QyxPQUFPLHNCQUFjLENBQUMsV0FBVyxDQUFDLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxXQUFXLENBQUMsTUFBbUM7O1FBQzdDLE1BQU0sT0FBTyxHQUFHLHdCQUF3QixFQUFFLENBQUM7UUFDM0MsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO1lBQzVFLENBQUMsQ0FBQyxnQkFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDZCxPQUFPLENBQUMsY0FBYyxHQUFHLE1BQUEsTUFBTSxDQUFDLGNBQWMsbUNBQUksQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxhQUFhLEdBQUcsTUFBQSxNQUFNLENBQUMsYUFBYSxtQ0FBSSxDQUFDLENBQUM7UUFDbEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGLENBQUM7QUFXRixTQUFTLFlBQVksQ0FBQyxJQUFVO0lBQzlCLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDL0MsTUFBTSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztLQUM1RTtJQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxJQUFJLGlCQUFHLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxjQUFJLEVBQUU7SUFDMUIsaUJBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQVcsQ0FBQztJQUM1QixpQkFBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO0NBQ2pCO0FBRUQsU0FBUyxLQUFLLENBQUMsS0FBVTtJQUN2QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCBMb25nIGZyb20gXCJsb25nXCI7XG5pbXBvcnQgX20wIGZyb20gXCJwcm90b2J1ZmpzL21pbmltYWxcIjtcblxuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9IFwiY29tLmNvcmFsb2dpeC5ydW0udjJcIjtcblxuZXhwb3J0IGVudW0gRXZlbnRUeXBlIHtcbiAgRVZFTlRfVFlQRV9VTlNQRUNJRklFRCA9IDAsXG4gIEVWRU5UX1RZUEVfRVJST1IgPSAxLFxuICBFVkVOVF9UWVBFX0xPR1MgPSAyLFxuICBFVkVOVF9UWVBFX05FVFdPUksgPSAzLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUeXBlRnJvbUpTT04ob2JqZWN0OiBhbnkpOiBFdmVudFR5cGUge1xuICBzd2l0Y2ggKG9iamVjdCkge1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIFwiRVZFTlRfVFlQRV9VTlNQRUNJRklFRFwiOlxuICAgICAgcmV0dXJuIEV2ZW50VHlwZS5FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEO1xuICAgIGNhc2UgMTpcbiAgICBjYXNlIFwiRVZFTlRfVFlQRV9FUlJPUlwiOlxuICAgICAgcmV0dXJuIEV2ZW50VHlwZS5FVkVOVF9UWVBFX0VSUk9SO1xuICAgIGNhc2UgMjpcbiAgICBjYXNlIFwiRVZFTlRfVFlQRV9MT0dTXCI6XG4gICAgICByZXR1cm4gRXZlbnRUeXBlLkVWRU5UX1RZUEVfTE9HUztcbiAgICBjYXNlIDM6XG4gICAgY2FzZSBcIkVWRU5UX1RZUEVfTkVUV09SS1wiOlxuICAgICAgcmV0dXJuIEV2ZW50VHlwZS5FVkVOVF9UWVBFX05FVFdPUks7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiVW5yZWNvZ25pemVkIGVudW0gdmFsdWUgXCIgKyBvYmplY3QgKyBcIiBmb3IgZW51bSBFdmVudFR5cGVcIik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZW50VHlwZVRvSlNPTihvYmplY3Q6IEV2ZW50VHlwZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAob2JqZWN0KSB7XG4gICAgY2FzZSBFdmVudFR5cGUuRVZFTlRfVFlQRV9VTlNQRUNJRklFRDpcbiAgICAgIHJldHVybiBcIkVWRU5UX1RZUEVfVU5TUEVDSUZJRURcIjtcbiAgICBjYXNlIEV2ZW50VHlwZS5FVkVOVF9UWVBFX0VSUk9SOlxuICAgICAgcmV0dXJuIFwiRVZFTlRfVFlQRV9FUlJPUlwiO1xuICAgIGNhc2UgRXZlbnRUeXBlLkVWRU5UX1RZUEVfTE9HUzpcbiAgICAgIHJldHVybiBcIkVWRU5UX1RZUEVfTE9HU1wiO1xuICAgIGNhc2UgRXZlbnRUeXBlLkVWRU5UX1RZUEVfTkVUV09SSzpcbiAgICAgIHJldHVybiBcIkVWRU5UX1RZUEVfTkVUV09SS1wiO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gRXZlbnRUeXBlXCIpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyIHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGUge1xuICB0ZW1wbGF0ZUlkOiBzdHJpbmc7XG4gIGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICBwYWdlRnJhZ21lbnRzOiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3RhdHVzQ29kZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbmV0d29ya1JlcXVlc3RGcmFnbWVudHM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGVycm9yVHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29tcGFueUlkOiBudW1iZXI7XG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xuICB1cGRhdGVkQXQ6IG51bWJlcjtcbiAgYXBwbGljYXRpb25OYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVSZXN1bHQge1xuICB0ZW1wbGF0ZTogVGVtcGxhdGUgfCB1bmRlZmluZWQ7XG4gIG51bWJlck9mRXJyb3JzOiBudW1iZXI7XG4gIG51bWJlck9mVXNlcnM6IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZUZpbHRlcigpOiBGaWx0ZXIge1xuICByZXR1cm4geyBrZXk6IFwiXCIsIHZhbHVlczogW10gfTtcbn1cblxuZXhwb3J0IGNvbnN0IEZpbHRlciA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IEZpbHRlciwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLmtleSAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMCkuc3RyaW5nKG1lc3NhZ2Uua2V5KTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB2IG9mIG1lc3NhZ2UudmFsdWVzKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE4KS5zdHJpbmcodiEpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IEZpbHRlciB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBfbTAuUmVhZGVyLmNyZWF0ZShpbnB1dCk7XG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGg7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VGaWx0ZXIoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmtleSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE4KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnZhbHVlcy5wdXNoKHJlYWRlci5zdHJpbmcoKSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoKHRhZyAmIDcpID09PSA0IHx8IHRhZyA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG5cbiAgZnJvbUpTT04ob2JqZWN0OiBhbnkpOiBGaWx0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6IGlzU2V0KG9iamVjdC5rZXkpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmtleSkgOiBcIlwiLFxuICAgICAgdmFsdWVzOiBnbG9iYWxUaGlzLkFycmF5LmlzQXJyYXkob2JqZWN0Py52YWx1ZXMpID8gb2JqZWN0LnZhbHVlcy5tYXAoKGU6IGFueSkgPT4gZ2xvYmFsVGhpcy5TdHJpbmcoZSkpIDogW10sXG4gICAgfTtcbiAgfSxcblxuICB0b0pTT04obWVzc2FnZTogRmlsdGVyKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5rZXkgIT09IFwiXCIpIHtcbiAgICAgIG9iai5rZXkgPSBtZXNzYWdlLmtleTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgIG9iai52YWx1ZXMgPSBtZXNzYWdlLnZhbHVlcztcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPEZpbHRlcj4pOiBGaWx0ZXIge1xuICAgIHJldHVybiBGaWx0ZXIuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8RmlsdGVyPik6IEZpbHRlciB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VGaWx0ZXIoKTtcbiAgICBtZXNzYWdlLmtleSA9IG9iamVjdC5rZXkgPz8gXCJcIjtcbiAgICBtZXNzYWdlLnZhbHVlcyA9IG9iamVjdC52YWx1ZXM/Lm1hcCgoZSkgPT4gZSkgfHwgW107XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVCYXNlVGVtcGxhdGUoKTogVGVtcGxhdGUge1xuICByZXR1cm4ge1xuICAgIHRlbXBsYXRlSWQ6IFwiXCIsXG4gICAgZXZlbnRUeXBlOiAwLFxuICAgIHBhZ2VGcmFnbWVudHM6IFwiXCIsXG4gICAgZXJyb3JNZXNzYWdlOiB1bmRlZmluZWQsXG4gICAgc3RhdHVzQ29kZTogdW5kZWZpbmVkLFxuICAgIG5ldHdvcmtSZXF1ZXN0RnJhZ21lbnRzOiB1bmRlZmluZWQsXG4gICAgZXJyb3JUeXBlOiB1bmRlZmluZWQsXG4gICAgY29tcGFueUlkOiAwLFxuICAgIGNyZWF0ZWRBdDogMCxcbiAgICB1cGRhdGVkQXQ6IDAsXG4gICAgYXBwbGljYXRpb25OYW1lOiBcIlwiLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgVGVtcGxhdGUgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBUZW1wbGF0ZSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLnRlbXBsYXRlSWQgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTApLnN0cmluZyhtZXNzYWdlLnRlbXBsYXRlSWQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5ldmVudFR5cGUgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTYpLmludDMyKG1lc3NhZ2UuZXZlbnRUeXBlKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFnZUZyYWdtZW50cyAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNikuc3RyaW5nKG1lc3NhZ2UucGFnZUZyYWdtZW50cyk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmVycm9yTWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM0KS5zdHJpbmcobWVzc2FnZS5lcnJvck1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zdGF0dXNDb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDIpLnN0cmluZyhtZXNzYWdlLnN0YXR1c0NvZGUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDUwKS5zdHJpbmcobWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmVycm9yVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDU4KS5zdHJpbmcobWVzc2FnZS5lcnJvclR5cGUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jb21wYW55SWQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNjQpLmludDMyKG1lc3NhZ2UuY29tcGFueUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY3JlYXRlZEF0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDcyKS5pbnQ2NChtZXNzYWdlLmNyZWF0ZWRBdCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnVwZGF0ZWRBdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4MCkuaW50NjQobWVzc2FnZS51cGRhdGVkQXQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbk5hbWUgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoOTApLnN0cmluZyhtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiB3cml0ZXI7XG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogVGVtcGxhdGUge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogX20wLlJlYWRlci5jcmVhdGUoaW5wdXQpO1xuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlVGVtcGxhdGUoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnRlbXBsYXRlSWQgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAodGFnICE9PSAxNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5ldmVudFR5cGUgPSByZWFkZXIuaW50MzIoKSBhcyBhbnk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBpZiAodGFnICE9PSAyNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5wYWdlRnJhZ21lbnRzID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMzQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3JNZXNzYWdlID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNDIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2Uuc3RhdHVzQ29kZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIGlmICh0YWcgIT09IDUwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLm5ldHdvcmtSZXF1ZXN0RnJhZ21lbnRzID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNTgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3JUeXBlID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNjQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuY29tcGFueUlkID0gcmVhZGVyLmludDMyKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBpZiAodGFnICE9PSA3Mikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5jcmVhdGVkQXQgPSBsb25nVG9OdW1iZXIocmVhZGVyLmludDY0KCkgYXMgTG9uZyk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gODApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UudXBkYXRlZEF0ID0gbG9uZ1RvTnVtYmVyKHJlYWRlci5pbnQ2NCgpIGFzIExvbmcpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgIGlmICh0YWcgIT09IDkwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IFRlbXBsYXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGVtcGxhdGVJZDogaXNTZXQob2JqZWN0LnRlbXBsYXRlSWQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnRlbXBsYXRlSWQpIDogXCJcIixcbiAgICAgIGV2ZW50VHlwZTogaXNTZXQob2JqZWN0LmV2ZW50VHlwZSkgPyBldmVudFR5cGVGcm9tSlNPTihvYmplY3QuZXZlbnRUeXBlKSA6IDAsXG4gICAgICBwYWdlRnJhZ21lbnRzOiBpc1NldChvYmplY3QucGFnZUZyYWdtZW50cykgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QucGFnZUZyYWdtZW50cykgOiBcIlwiLFxuICAgICAgZXJyb3JNZXNzYWdlOiBpc1NldChvYmplY3QuZXJyb3JNZXNzYWdlKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5lcnJvck1lc3NhZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzQ29kZTogaXNTZXQob2JqZWN0LnN0YXR1c0NvZGUpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnN0YXR1c0NvZGUpIDogdW5kZWZpbmVkLFxuICAgICAgbmV0d29ya1JlcXVlc3RGcmFnbWVudHM6IGlzU2V0KG9iamVjdC5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cylcbiAgICAgICAgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QubmV0d29ya1JlcXVlc3RGcmFnbWVudHMpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZXJyb3JUeXBlOiBpc1NldChvYmplY3QuZXJyb3JUeXBlKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5lcnJvclR5cGUpIDogdW5kZWZpbmVkLFxuICAgICAgY29tcGFueUlkOiBpc1NldChvYmplY3QuY29tcGFueUlkKSA/IGdsb2JhbFRoaXMuTnVtYmVyKG9iamVjdC5jb21wYW55SWQpIDogMCxcbiAgICAgIGNyZWF0ZWRBdDogaXNTZXQob2JqZWN0LmNyZWF0ZWRBdCkgPyBnbG9iYWxUaGlzLk51bWJlcihvYmplY3QuY3JlYXRlZEF0KSA6IDAsXG4gICAgICB1cGRhdGVkQXQ6IGlzU2V0KG9iamVjdC51cGRhdGVkQXQpID8gZ2xvYmFsVGhpcy5OdW1iZXIob2JqZWN0LnVwZGF0ZWRBdCkgOiAwLFxuICAgICAgYXBwbGljYXRpb25OYW1lOiBpc1NldChvYmplY3QuYXBwbGljYXRpb25OYW1lKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5hcHBsaWNhdGlvbk5hbWUpIDogXCJcIixcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBUZW1wbGF0ZSk6IHVua25vd24ge1xuICAgIGNvbnN0IG9iajogYW55ID0ge307XG4gICAgaWYgKG1lc3NhZ2UudGVtcGxhdGVJZCAhPT0gXCJcIikge1xuICAgICAgb2JqLnRlbXBsYXRlSWQgPSBtZXNzYWdlLnRlbXBsYXRlSWQ7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmV2ZW50VHlwZSAhPT0gMCkge1xuICAgICAgb2JqLmV2ZW50VHlwZSA9IGV2ZW50VHlwZVRvSlNPTihtZXNzYWdlLmV2ZW50VHlwZSk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZ2VGcmFnbWVudHMgIT09IFwiXCIpIHtcbiAgICAgIG9iai5wYWdlRnJhZ21lbnRzID0gbWVzc2FnZS5wYWdlRnJhZ21lbnRzO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5lcnJvck1lc3NhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLmVycm9yTWVzc2FnZSA9IG1lc3NhZ2UuZXJyb3JNZXNzYWdlO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zdGF0dXNDb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9iai5zdGF0dXNDb2RlID0gbWVzc2FnZS5zdGF0dXNDb2RlO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmoubmV0d29ya1JlcXVlc3RGcmFnbWVudHMgPSBtZXNzYWdlLm5ldHdvcmtSZXF1ZXN0RnJhZ21lbnRzO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5lcnJvclR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLmVycm9yVHlwZSA9IG1lc3NhZ2UuZXJyb3JUeXBlO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jb21wYW55SWQgIT09IDApIHtcbiAgICAgIG9iai5jb21wYW55SWQgPSBNYXRoLnJvdW5kKG1lc3NhZ2UuY29tcGFueUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY3JlYXRlZEF0ICE9PSAwKSB7XG4gICAgICBvYmouY3JlYXRlZEF0ID0gTWF0aC5yb3VuZChtZXNzYWdlLmNyZWF0ZWRBdCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnVwZGF0ZWRBdCAhPT0gMCkge1xuICAgICAgb2JqLnVwZGF0ZWRBdCA9IE1hdGgucm91bmQobWVzc2FnZS51cGRhdGVkQXQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbk5hbWUgIT09IFwiXCIpIHtcbiAgICAgIG9iai5hcHBsaWNhdGlvbk5hbWUgPSBtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPFRlbXBsYXRlPik6IFRlbXBsYXRlIHtcbiAgICByZXR1cm4gVGVtcGxhdGUuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8VGVtcGxhdGU+KTogVGVtcGxhdGUge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlVGVtcGxhdGUoKTtcbiAgICBtZXNzYWdlLnRlbXBsYXRlSWQgPSBvYmplY3QudGVtcGxhdGVJZCA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuZXZlbnRUeXBlID0gb2JqZWN0LmV2ZW50VHlwZSA/PyAwO1xuICAgIG1lc3NhZ2UucGFnZUZyYWdtZW50cyA9IG9iamVjdC5wYWdlRnJhZ21lbnRzID8/IFwiXCI7XG4gICAgbWVzc2FnZS5lcnJvck1lc3NhZ2UgPSBvYmplY3QuZXJyb3JNZXNzYWdlID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLnN0YXR1c0NvZGUgPSBvYmplY3Quc3RhdHVzQ29kZSA/PyB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyA9IG9iamVjdC5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyA/PyB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5lcnJvclR5cGUgPSBvYmplY3QuZXJyb3JUeXBlID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLmNvbXBhbnlJZCA9IG9iamVjdC5jb21wYW55SWQgPz8gMDtcbiAgICBtZXNzYWdlLmNyZWF0ZWRBdCA9IG9iamVjdC5jcmVhdGVkQXQgPz8gMDtcbiAgICBtZXNzYWdlLnVwZGF0ZWRBdCA9IG9iamVjdC51cGRhdGVkQXQgPz8gMDtcbiAgICBtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSA9IG9iamVjdC5hcHBsaWNhdGlvbk5hbWUgPz8gXCJcIjtcbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VUZW1wbGF0ZVJlc3VsdCgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gIHJldHVybiB7IHRlbXBsYXRlOiB1bmRlZmluZWQsIG51bWJlck9mRXJyb3JzOiAwLCBudW1iZXJPZlVzZXJzOiAwIH07XG59XG5cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZVJlc3VsdCA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFRlbXBsYXRlUmVzdWx0LCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UudGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgVGVtcGxhdGUuZW5jb2RlKG1lc3NhZ2UudGVtcGxhdGUsIHdyaXRlci51aW50MzIoMTApLmZvcmsoKSkubGRlbGltKCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm51bWJlck9mRXJyb3JzICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2KS5pbnQ2NChtZXNzYWdlLm51bWJlck9mRXJyb3JzKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubnVtYmVyT2ZVc2VycyAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNCkuaW50NjQobWVzc2FnZS5udW1iZXJPZlVzZXJzKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlcjtcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBfbTAuUmVhZGVyLmNyZWF0ZShpbnB1dCk7XG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGg7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VUZW1wbGF0ZVJlc3VsdCgpO1xuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKCk7XG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UudGVtcGxhdGUgPSBUZW1wbGF0ZS5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTYpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UubnVtYmVyT2ZFcnJvcnMgPSBsb25nVG9OdW1iZXIocmVhZGVyLmludDY0KCkgYXMgTG9uZyk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBpZiAodGFnICE9PSAyNCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5udW1iZXJPZlVzZXJzID0gbG9uZ1RvTnVtYmVyKHJlYWRlci5pbnQ2NCgpIGFzIExvbmcpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gNCB8fCB0YWcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxuXG4gIGZyb21KU09OKG9iamVjdDogYW55KTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiB7XG4gICAgICB0ZW1wbGF0ZTogaXNTZXQob2JqZWN0LnRlbXBsYXRlKSA/IFRlbXBsYXRlLmZyb21KU09OKG9iamVjdC50ZW1wbGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICBudW1iZXJPZkVycm9yczogaXNTZXQob2JqZWN0Lm51bWJlck9mRXJyb3JzKSA/IGdsb2JhbFRoaXMuTnVtYmVyKG9iamVjdC5udW1iZXJPZkVycm9ycykgOiAwLFxuICAgICAgbnVtYmVyT2ZVc2VyczogaXNTZXQob2JqZWN0Lm51bWJlck9mVXNlcnMpID8gZ2xvYmFsVGhpcy5OdW1iZXIob2JqZWN0Lm51bWJlck9mVXNlcnMpIDogMCxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBUZW1wbGF0ZVJlc3VsdCk6IHVua25vd24ge1xuICAgIGNvbnN0IG9iajogYW55ID0ge307XG4gICAgaWYgKG1lc3NhZ2UudGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLnRlbXBsYXRlID0gVGVtcGxhdGUudG9KU09OKG1lc3NhZ2UudGVtcGxhdGUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5udW1iZXJPZkVycm9ycyAhPT0gMCkge1xuICAgICAgb2JqLm51bWJlck9mRXJyb3JzID0gTWF0aC5yb3VuZChtZXNzYWdlLm51bWJlck9mRXJyb3JzKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubnVtYmVyT2ZVc2VycyAhPT0gMCkge1xuICAgICAgb2JqLm51bWJlck9mVXNlcnMgPSBNYXRoLnJvdW5kKG1lc3NhZ2UubnVtYmVyT2ZVc2Vycyk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sXG5cbiAgY3JlYXRlKGJhc2U/OiBEZWVwUGFydGlhbDxUZW1wbGF0ZVJlc3VsdD4pOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIFRlbXBsYXRlUmVzdWx0LmZyb21QYXJ0aWFsKGJhc2UgPz8ge30pO1xuICB9LFxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPFRlbXBsYXRlUmVzdWx0Pik6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVRlbXBsYXRlUmVzdWx0KCk7XG4gICAgbWVzc2FnZS50ZW1wbGF0ZSA9IChvYmplY3QudGVtcGxhdGUgIT09IHVuZGVmaW5lZCAmJiBvYmplY3QudGVtcGxhdGUgIT09IG51bGwpXG4gICAgICA/IFRlbXBsYXRlLmZyb21QYXJ0aWFsKG9iamVjdC50ZW1wbGF0ZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2UubnVtYmVyT2ZFcnJvcnMgPSBvYmplY3QubnVtYmVyT2ZFcnJvcnMgPz8gMDtcbiAgICBtZXNzYWdlLm51bWJlck9mVXNlcnMgPSBvYmplY3QubnVtYmVyT2ZVc2VycyA/PyAwO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxudHlwZSBCdWlsdGluID0gRGF0ZSB8IEZ1bmN0aW9uIHwgVWludDhBcnJheSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIERlZXBQYXJ0aWFsPFQ+ID0gVCBleHRlbmRzIEJ1aWx0aW4gPyBUXG4gIDogVCBleHRlbmRzIGdsb2JhbFRoaXMuQXJyYXk8aW5mZXIgVT4gPyBnbG9iYWxUaGlzLkFycmF5PERlZXBQYXJ0aWFsPFU+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seUFycmF5PGluZmVyIFU+ID8gUmVhZG9ubHlBcnJheTxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgeyAkY2FzZTogc3RyaW5nIH0gPyB7IFtLIGluIGtleW9mIE9taXQ8VCwgXCIkY2FzZVwiPl0/OiBEZWVwUGFydGlhbDxUW0tdPiB9ICYgeyAkY2FzZTogVFtcIiRjYXNlXCJdIH1cbiAgOiBUIGV4dGVuZHMge30gPyB7IFtLIGluIGtleW9mIFRdPzogRGVlcFBhcnRpYWw8VFtLXT4gfVxuICA6IFBhcnRpYWw8VD47XG5cbmZ1bmN0aW9uIGxvbmdUb051bWJlcihsb25nOiBMb25nKTogbnVtYmVyIHtcbiAgaWYgKGxvbmcuZ3QoZ2xvYmFsVGhpcy5OdW1iZXIuTUFYX1NBRkVfSU5URUdFUikpIHtcbiAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlZhbHVlIGlzIGxhcmdlciB0aGFuIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXCIpO1xuICB9XG4gIHJldHVybiBsb25nLnRvTnVtYmVyKCk7XG59XG5cbmlmIChfbTAudXRpbC5Mb25nICE9PSBMb25nKSB7XG4gIF9tMC51dGlsLkxvbmcgPSBMb25nIGFzIGFueTtcbiAgX20wLmNvbmZpZ3VyZSgpO1xufVxuXG5mdW5jdGlvbiBpc1NldCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkO1xufVxuIl19
|
|
410
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ydW0vdjIvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4QixpRUFBcUM7QUFFeEIsUUFBQSxlQUFlLEdBQUcsc0JBQXNCLENBQUM7QUFFdEQsSUFBWSxTQUtYO0FBTEQsV0FBWSxTQUFTO0lBQ25CLDZFQUEwQixDQUFBO0lBQzFCLGlFQUFvQixDQUFBO0lBQ3BCLCtEQUFtQixDQUFBO0lBQ25CLHFFQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFMVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUtwQjtBQUVELFNBQWdCLGlCQUFpQixDQUFDLE1BQVc7SUFDM0MsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssd0JBQXdCO1lBQzNCLE9BQU8sU0FBUyxDQUFDLHNCQUFzQixDQUFDO1FBQzFDLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxrQkFBa0I7WUFDckIsT0FBTyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7UUFDcEMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLGlCQUFpQjtZQUNwQixPQUFPLFNBQVMsQ0FBQyxlQUFlLENBQUM7UUFDbkMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLG9CQUFvQjtZQUN2QixPQUFPLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztRQUN0QztZQUNFLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsTUFBTSxHQUFHLHFCQUFxQixDQUFDLENBQUM7S0FDbEc7QUFDSCxDQUFDO0FBakJELDhDQWlCQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxNQUFpQjtJQUMvQyxRQUFRLE1BQU0sRUFBRTtRQUNkLEtBQUssU0FBUyxDQUFDLHNCQUFzQjtZQUNu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VTtJQUN2QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCBMb25nIGZyb20gXCJsb25nXCI7XG5pbXBvcnQgX20wIGZyb20gXCJwcm90b2J1ZmpzL21pbmltYWxcIjtcblxuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9IFwiY29tLmNvcmFsb2dpeC5ydW0udjJcIjtcblxuZXhwb3J0IGVudW0gRXZlbnRUeXBlIHtcbiAgRVZFTlRfVFlQRV9VTlNQRUNJRklFRCA9IDAsXG4gIEVWRU5UX1RZUEVfRVJST1IgPSAxLFxuICBFVkVOVF9UWVBFX0xPR1MgPSAyLFxuICBFVkVOVF9UWVBFX05FVFdPUksgPSAzLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUeXBlRnJvbUpTT04ob2JqZWN0OiBhbnkpOiBFdmVudFR5cGUge1xuICBzd2l0Y2ggKG9iamVjdCkge1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIFwiRVZFTlRfVFlQRV9VTlNQRUNJRklFRFwiOlxuICAgICAgcmV0dXJuIEV2ZW50VHlwZS5FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEO1xuICAgIGNhc2UgMTpcbiAgICBjYXNlIFwiRVZFTlRfVFlQRV9FUlJPUlwiOlxuICAgICAgcmV0dXJuIEV2ZW50VHlwZS5FVkVOVF9UWVBFX0VSUk9SO1xuICAgIGNhc2UgMjpcbiAgICBjYXNlIFwiRVZFTlRfVFlQRV9MT0dTXCI6XG4gICAgICByZXR1cm4gRXZlbnRUeXBlLkVWRU5UX1RZUEVfTE9HUztcbiAgICBjYXNlIDM6XG4gICAgY2FzZSBcIkVWRU5UX1RZUEVfTkVUV09SS1wiOlxuICAgICAgcmV0dXJuIEV2ZW50VHlwZS5FVkVOVF9UWVBFX05FVFdPUks7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyB0c1Byb3RvR2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gRXZlbnRUeXBlXCIpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVudFR5cGVUb0pTT04ob2JqZWN0OiBFdmVudFR5cGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKG9iamVjdCkge1xuICAgIGNhc2UgRXZlbnRUeXBlLkVWRU5UX1RZUEVfVU5TUEVDSUZJRUQ6XG4gICAgICByZXR1cm4gXCJFVkVOVF9UWVBFX1VOU1BFQ0lGSUVEXCI7XG4gICAgY2FzZSBFdmVudFR5cGUuRVZFTlRfVFlQRV9FUlJPUjpcbiAgICAgIHJldHVybiBcIkVWRU5UX1RZUEVfRVJST1JcIjtcbiAgICBjYXNlIEV2ZW50VHlwZS5FVkVOVF9UWVBFX0xPR1M6XG4gICAgICByZXR1cm4gXCJFVkVOVF9UWVBFX0xPR1NcIjtcbiAgICBjYXNlIEV2ZW50VHlwZS5FVkVOVF9UWVBFX05FVFdPUks6XG4gICAgICByZXR1cm4gXCJFVkVOVF9UWVBFX05FVFdPUktcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IHRzUHJvdG9HbG9iYWxUaGlzLkVycm9yKFwiVW5yZWNvZ25pemVkIGVudW0gdmFsdWUgXCIgKyBvYmplY3QgKyBcIiBmb3IgZW51bSBFdmVudFR5cGVcIik7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXIge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZSB7XG4gIHRlbXBsYXRlSWQ6IHN0cmluZztcbiAgZXZlbnRUeXBlOiBFdmVudFR5cGU7XG4gIHBhZ2VGcmFnbWVudHM6IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdGF0dXNDb2RlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBuZXR3b3JrUmVxdWVzdEZyYWdtZW50cz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZXJyb3JUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjb21wYW55SWQ6IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBudW1iZXI7XG4gIHVwZGF0ZWRBdDogbnVtYmVyO1xuICBhcHBsaWNhdGlvbk5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZVJlc3VsdCB7XG4gIHRlbXBsYXRlOiBUZW1wbGF0ZSB8IHVuZGVmaW5lZDtcbiAgbnVtYmVyT2ZFcnJvcnM6IG51bWJlcjtcbiAgbnVtYmVyT2ZVc2VyczogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVCYXNlRmlsdGVyKCk6IEZpbHRlciB7XG4gIHJldHVybiB7IGtleTogXCJcIiwgdmFsdWVzOiBbXSB9O1xufVxuXG5leHBvcnQgY29uc3QgRmlsdGVyID0ge1xuICBlbmNvZGUobWVzc2FnZTogRmlsdGVyLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2Uua2V5ICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEwKS5zdHJpbmcobWVzc2FnZS5rZXkpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHYgb2YgbWVzc2FnZS52YWx1ZXMpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTgpLnN0cmluZyh2ISk7XG4gICAgfVxuICAgIHJldHVybiB3cml0ZXI7XG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogRmlsdGVyIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IF9tMC5SZWFkZXIuY3JlYXRlKGlucHV0KTtcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aDtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZUZpbHRlcigpO1xuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKCk7XG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2Uua2V5ID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UudmFsdWVzLnB1c2gocmVhZGVyLnN0cmluZygpKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IEZpbHRlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogaXNTZXQob2JqZWN0LmtleSkgPyBTdHJpbmcob2JqZWN0LmtleSkgOiBcIlwiLFxuICAgICAgdmFsdWVzOiBBcnJheS5pc0FycmF5KG9iamVjdD8udmFsdWVzKSA/IG9iamVjdC52YWx1ZXMubWFwKChlOiBhbnkpID0+IFN0cmluZyhlKSkgOiBbXSxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBGaWx0ZXIpOiB1bmtub3duIHtcbiAgICBjb25zdCBvYmo6IGFueSA9IHt9O1xuICAgIG1lc3NhZ2Uua2V5ICE9PSB1bmRlZmluZWQgJiYgKG9iai5rZXkgPSBtZXNzYWdlLmtleSk7XG4gICAgaWYgKG1lc3NhZ2UudmFsdWVzKSB7XG4gICAgICBvYmoudmFsdWVzID0gbWVzc2FnZS52YWx1ZXMubWFwKChlKSA9PiBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqLnZhbHVlcyA9IFtdO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9LFxuXG4gIGNyZWF0ZShiYXNlPzogRGVlcFBhcnRpYWw8RmlsdGVyPik6IEZpbHRlciB7XG4gICAgcmV0dXJuIEZpbHRlci5mcm9tUGFydGlhbChiYXNlID8/IHt9KTtcbiAgfSxcblxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPEZpbHRlcj4pOiBGaWx0ZXIge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlRmlsdGVyKCk7XG4gICAgbWVzc2FnZS5rZXkgPSBvYmplY3Qua2V5ID8/IFwiXCI7XG4gICAgbWVzc2FnZS52YWx1ZXMgPSBvYmplY3QudmFsdWVzPy5tYXAoKGUpID0+IGUpIHx8IFtdO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxuZnVuY3Rpb24gY3JlYXRlQmFzZVRlbXBsYXRlKCk6IFRlbXBsYXRlIHtcbiAgcmV0dXJuIHtcbiAgICB0ZW1wbGF0ZUlkOiBcIlwiLFxuICAgIGV2ZW50VHlwZTogMCxcbiAgICBwYWdlRnJhZ21lbnRzOiBcIlwiLFxuICAgIGVycm9yTWVzc2FnZTogdW5kZWZpbmVkLFxuICAgIHN0YXR1c0NvZGU6IHVuZGVmaW5lZCxcbiAgICBuZXR3b3JrUmVxdWVzdEZyYWdtZW50czogdW5kZWZpbmVkLFxuICAgIGVycm9yVHlwZTogdW5kZWZpbmVkLFxuICAgIGNvbXBhbnlJZDogMCxcbiAgICBjcmVhdGVkQXQ6IDAsXG4gICAgdXBkYXRlZEF0OiAwLFxuICAgIGFwcGxpY2F0aW9uTmFtZTogXCJcIixcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IFRlbXBsYXRlID0ge1xuICBlbmNvZGUobWVzc2FnZTogVGVtcGxhdGUsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS50ZW1wbGF0ZUlkICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEwKS5zdHJpbmcobWVzc2FnZS50ZW1wbGF0ZUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZXZlbnRUeXBlICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2KS5pbnQzMihtZXNzYWdlLmV2ZW50VHlwZSk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZ2VGcmFnbWVudHMgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjYpLnN0cmluZyhtZXNzYWdlLnBhZ2VGcmFnbWVudHMpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5lcnJvck1lc3NhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNCkuc3RyaW5nKG1lc3NhZ2UuZXJyb3JNZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uuc3RhdHVzQ29kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQyKS5zdHJpbmcobWVzc2FnZS5zdGF0dXNDb2RlKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubmV0d29ya1JlcXVlc3RGcmFnbWVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1MCkuc3RyaW5nKG1lc3NhZ2UubmV0d29ya1JlcXVlc3RGcmFnbWVudHMpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5lcnJvclR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1OCkuc3RyaW5nKG1lc3NhZ2UuZXJyb3JUeXBlKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY29tcGFueUlkICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDY0KS5pbnQzMihtZXNzYWdlLmNvbXBhbnlJZCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNyZWF0ZWRBdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig3MikuaW50NjQobWVzc2FnZS5jcmVhdGVkQXQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS51cGRhdGVkQXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoODApLmludDY0KG1lc3NhZ2UudXBkYXRlZEF0KTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuYXBwbGljYXRpb25OYW1lICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDkwKS5zdHJpbmcobWVzc2FnZS5hcHBsaWNhdGlvbk5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFRlbXBsYXRlIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IF9tMC5SZWFkZXIuY3JlYXRlKGlucHV0KTtcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aDtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVRlbXBsYXRlKCk7XG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKTtcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAodGFnICE9PSAxMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS50ZW1wbGF0ZUlkID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTYpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuZXZlbnRUeXBlID0gcmVhZGVyLmludDMyKCkgYXMgYW55O1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMjYpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UucGFnZUZyYWdtZW50cyA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIGlmICh0YWcgIT09IDM0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmVycm9yTWVzc2FnZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIGlmICh0YWcgIT09IDQyKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnN0YXR1c0NvZGUgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICBpZiAodGFnICE9PSA1MCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIGlmICh0YWcgIT09IDU4KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmVycm9yVHlwZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIGlmICh0YWcgIT09IDY0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmNvbXBhbnlJZCA9IHJlYWRlci5pbnQzMigpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNzIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuY3JlYXRlZEF0ID0gbG9uZ1RvTnVtYmVyKHJlYWRlci5pbnQ2NCgpIGFzIExvbmcpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgIGlmICh0YWcgIT09IDgwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnVwZGF0ZWRBdCA9IGxvbmdUb051bWJlcihyZWFkZXIuaW50NjQoKSBhcyBMb25nKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICBpZiAodGFnICE9PSA5MCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5hcHBsaWNhdGlvbk5hbWUgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoKHRhZyAmIDcpID09PSA0IHx8IHRhZyA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG5cbiAgZnJvbUpTT04ob2JqZWN0OiBhbnkpOiBUZW1wbGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlbXBsYXRlSWQ6IGlzU2V0KG9iamVjdC50ZW1wbGF0ZUlkKSA/IFN0cmluZyhvYmplY3QudGVtcGxhdGVJZCkgOiBcIlwiLFxuICAgICAgZXZlbnRUeXBlOiBpc1NldChvYmplY3QuZXZlbnRUeXBlKSA/IGV2ZW50VHlwZUZyb21KU09OKG9iamVjdC5ldmVudFR5cGUpIDogMCxcbiAgICAgIHBhZ2VGcmFnbWVudHM6IGlzU2V0KG9iamVjdC5wYWdlRnJhZ21lbnRzKSA/IFN0cmluZyhvYmplY3QucGFnZUZyYWdtZW50cykgOiBcIlwiLFxuICAgICAgZXJyb3JNZXNzYWdlOiBpc1NldChvYmplY3QuZXJyb3JNZXNzYWdlKSA/IFN0cmluZyhvYmplY3QuZXJyb3JNZXNzYWdlKSA6IHVuZGVmaW5lZCxcbiAgICAgIHN0YXR1c0NvZGU6IGlzU2V0KG9iamVjdC5zdGF0dXNDb2RlKSA/IFN0cmluZyhvYmplY3Quc3RhdHVzQ29kZSkgOiB1bmRlZmluZWQsXG4gICAgICBuZXR3b3JrUmVxdWVzdEZyYWdtZW50czogaXNTZXQob2JqZWN0Lm5ldHdvcmtSZXF1ZXN0RnJhZ21lbnRzKVxuICAgICAgICA/IFN0cmluZyhvYmplY3QubmV0d29ya1JlcXVlc3RGcmFnbWVudHMpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZXJyb3JUeXBlOiBpc1NldChvYmplY3QuZXJyb3JUeXBlKSA/IFN0cmluZyhvYmplY3QuZXJyb3JUeXBlKSA6IHVuZGVmaW5lZCxcbiAgICAgIGNvbXBhbnlJZDogaXNTZXQob2JqZWN0LmNvbXBhbnlJZCkgPyBOdW1iZXIob2JqZWN0LmNvbXBhbnlJZCkgOiAwLFxuICAgICAgY3JlYXRlZEF0OiBpc1NldChvYmplY3QuY3JlYXRlZEF0KSA/IE51bWJlcihvYmplY3QuY3JlYXRlZEF0KSA6IDAsXG4gICAgICB1cGRhdGVkQXQ6IGlzU2V0KG9iamVjdC51cGRhdGVkQXQpID8gTnVtYmVyKG9iamVjdC51cGRhdGVkQXQpIDogMCxcbiAgICAgIGFwcGxpY2F0aW9uTmFtZTogaXNTZXQob2JqZWN0LmFwcGxpY2F0aW9uTmFtZSkgPyBTdHJpbmcob2JqZWN0LmFwcGxpY2F0aW9uTmFtZSkgOiBcIlwiLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IFRlbXBsYXRlKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBtZXNzYWdlLnRlbXBsYXRlSWQgIT09IHVuZGVmaW5lZCAmJiAob2JqLnRlbXBsYXRlSWQgPSBtZXNzYWdlLnRlbXBsYXRlSWQpO1xuICAgIG1lc3NhZ2UuZXZlbnRUeXBlICE9PSB1bmRlZmluZWQgJiYgKG9iai5ldmVudFR5cGUgPSBldmVudFR5cGVUb0pTT04obWVzc2FnZS5ldmVudFR5cGUpKTtcbiAgICBtZXNzYWdlLnBhZ2VGcmFnbWVudHMgIT09IHVuZGVmaW5lZCAmJiAob2JqLnBhZ2VGcmFnbWVudHMgPSBtZXNzYWdlLnBhZ2VGcmFnbWVudHMpO1xuICAgIG1lc3NhZ2UuZXJyb3JNZXNzYWdlICE9PSB1bmRlZmluZWQgJiYgKG9iai5lcnJvck1lc3NhZ2UgPSBtZXNzYWdlLmVycm9yTWVzc2FnZSk7XG4gICAgbWVzc2FnZS5zdGF0dXNDb2RlICE9PSB1bmRlZmluZWQgJiYgKG9iai5zdGF0dXNDb2RlID0gbWVzc2FnZS5zdGF0dXNDb2RlKTtcbiAgICBtZXNzYWdlLm5ldHdvcmtSZXF1ZXN0RnJhZ21lbnRzICE9PSB1bmRlZmluZWQgJiYgKG9iai5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyA9IG1lc3NhZ2UubmV0d29ya1JlcXVlc3RGcmFnbWVudHMpO1xuICAgIG1lc3NhZ2UuZXJyb3JUeXBlICE9PSB1bmRlZmluZWQgJiYgKG9iai5lcnJvclR5cGUgPSBtZXNzYWdlLmVycm9yVHlwZSk7XG4gICAgbWVzc2FnZS5jb21wYW55SWQgIT09IHVuZGVmaW5lZCAmJiAob2JqLmNvbXBhbnlJZCA9IE1hdGgucm91bmQobWVzc2FnZS5jb21wYW55SWQpKTtcbiAgICBtZXNzYWdlLmNyZWF0ZWRBdCAhPT0gdW5kZWZpbmVkICYmIChvYmouY3JlYXRlZEF0ID0gTWF0aC5yb3VuZChtZXNzYWdlLmNyZWF0ZWRBdCkpO1xuICAgIG1lc3NhZ2UudXBkYXRlZEF0ICE9PSB1bmRlZmluZWQgJiYgKG9iai51cGRhdGVkQXQgPSBNYXRoLnJvdW5kKG1lc3NhZ2UudXBkYXRlZEF0KSk7XG4gICAgbWVzc2FnZS5hcHBsaWNhdGlvbk5hbWUgIT09IHVuZGVmaW5lZCAmJiAob2JqLmFwcGxpY2F0aW9uTmFtZSA9IG1lc3NhZ2UuYXBwbGljYXRpb25OYW1lKTtcbiAgICByZXR1cm4gb2JqO1xuICB9LFxuXG4gIGNyZWF0ZShiYXNlPzogRGVlcFBhcnRpYWw8VGVtcGxhdGU+KTogVGVtcGxhdGUge1xuICAgIHJldHVybiBUZW1wbGF0ZS5mcm9tUGFydGlhbChiYXNlID8/IHt9KTtcbiAgfSxcblxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPFRlbXBsYXRlPik6IFRlbXBsYXRlIHtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVRlbXBsYXRlKCk7XG4gICAgbWVzc2FnZS50ZW1wbGF0ZUlkID0gb2JqZWN0LnRlbXBsYXRlSWQgPz8gXCJcIjtcbiAgICBtZXNzYWdlLmV2ZW50VHlwZSA9IG9iamVjdC5ldmVudFR5cGUgPz8gMDtcbiAgICBtZXNzYWdlLnBhZ2VGcmFnbWVudHMgPSBvYmplY3QucGFnZUZyYWdtZW50cyA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuZXJyb3JNZXNzYWdlID0gb2JqZWN0LmVycm9yTWVzc2FnZSA/PyB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5zdGF0dXNDb2RlID0gb2JqZWN0LnN0YXR1c0NvZGUgPz8gdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2UubmV0d29ya1JlcXVlc3RGcmFnbWVudHMgPSBvYmplY3QubmV0d29ya1JlcXVlc3RGcmFnbWVudHMgPz8gdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2UuZXJyb3JUeXBlID0gb2JqZWN0LmVycm9yVHlwZSA/PyB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5jb21wYW55SWQgPSBvYmplY3QuY29tcGFueUlkID8/IDA7XG4gICAgbWVzc2FnZS5jcmVhdGVkQXQgPSBvYmplY3QuY3JlYXRlZEF0ID8/IDA7XG4gICAgbWVzc2FnZS51cGRhdGVkQXQgPSBvYmplY3QudXBkYXRlZEF0ID8/IDA7XG4gICAgbWVzc2FnZS5hcHBsaWNhdGlvbk5hbWUgPSBvYmplY3QuYXBwbGljYXRpb25OYW1lID8/IFwiXCI7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVCYXNlVGVtcGxhdGVSZXN1bHQoKTogVGVtcGxhdGVSZXN1bHQge1xuICByZXR1cm4geyB0ZW1wbGF0ZTogdW5kZWZpbmVkLCBudW1iZXJPZkVycm9yczogMCwgbnVtYmVyT2ZVc2VyczogMCB9O1xufVxuXG5leHBvcnQgY29uc3QgVGVtcGxhdGVSZXN1bHQgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBUZW1wbGF0ZVJlc3VsdCwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLnRlbXBsYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIFRlbXBsYXRlLmVuY29kZShtZXNzYWdlLnRlbXBsYXRlLCB3cml0ZXIudWludDMyKDEwKS5mb3JrKCkpLmxkZWxpbSgpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5udW1iZXJPZkVycm9ycyAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNikuaW50NjQobWVzc2FnZS5udW1iZXJPZkVycm9ycyk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm51bWJlck9mVXNlcnMgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjQpLmludDY0KG1lc3NhZ2UubnVtYmVyT2ZVc2Vycyk7XG4gICAgfVxuICAgIHJldHVybiB3cml0ZXI7XG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogX20wLlJlYWRlci5jcmVhdGUoaW5wdXQpO1xuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlVGVtcGxhdGVSZXN1bHQoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnRlbXBsYXRlID0gVGVtcGxhdGUuZGVjb2RlKHJlYWRlciwgcmVhZGVyLnVpbnQzMigpKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE2KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLm51bWJlck9mRXJyb3JzID0gbG9uZ1RvTnVtYmVyKHJlYWRlci5pbnQ2NCgpIGFzIExvbmcpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMjQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UubnVtYmVyT2ZVc2VycyA9IGxvbmdUb051bWJlcihyZWFkZXIuaW50NjQoKSBhcyBMb25nKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGVtcGxhdGU6IGlzU2V0KG9iamVjdC50ZW1wbGF0ZSkgPyBUZW1wbGF0ZS5mcm9tSlNPTihvYmplY3QudGVtcGxhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgbnVtYmVyT2ZFcnJvcnM6IGlzU2V0KG9iamVjdC5udW1iZXJPZkVycm9ycykgPyBOdW1iZXIob2JqZWN0Lm51bWJlck9mRXJyb3JzKSA6IDAsXG4gICAgICBudW1iZXJPZlVzZXJzOiBpc1NldChvYmplY3QubnVtYmVyT2ZVc2VycykgPyBOdW1iZXIob2JqZWN0Lm51bWJlck9mVXNlcnMpIDogMCxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBUZW1wbGF0ZVJlc3VsdCk6IHVua25vd24ge1xuICAgIGNvbnN0IG9iajogYW55ID0ge307XG4gICAgbWVzc2FnZS50ZW1wbGF0ZSAhPT0gdW5kZWZpbmVkICYmIChvYmoudGVtcGxhdGUgPSBtZXNzYWdlLnRlbXBsYXRlID8gVGVtcGxhdGUudG9KU09OKG1lc3NhZ2UudGVtcGxhdGUpIDogdW5kZWZpbmVkKTtcbiAgICBtZXNzYWdlLm51bWJlck9mRXJyb3JzICE9PSB1bmRlZmluZWQgJiYgKG9iai5udW1iZXJPZkVycm9ycyA9IE1hdGgucm91bmQobWVzc2FnZS5udW1iZXJPZkVycm9ycykpO1xuICAgIG1lc3NhZ2UubnVtYmVyT2ZVc2VycyAhPT0gdW5kZWZpbmVkICYmIChvYmoubnVtYmVyT2ZVc2VycyA9IE1hdGgucm91bmQobWVzc2FnZS5udW1iZXJPZlVzZXJzKSk7XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPFRlbXBsYXRlUmVzdWx0Pik6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gVGVtcGxhdGVSZXN1bHQuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG5cbiAgZnJvbVBhcnRpYWwob2JqZWN0OiBEZWVwUGFydGlhbDxUZW1wbGF0ZVJlc3VsdD4pOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VUZW1wbGF0ZVJlc3VsdCgpO1xuICAgIG1lc3NhZ2UudGVtcGxhdGUgPSAob2JqZWN0LnRlbXBsYXRlICE9PSB1bmRlZmluZWQgJiYgb2JqZWN0LnRlbXBsYXRlICE9PSBudWxsKVxuICAgICAgPyBUZW1wbGF0ZS5mcm9tUGFydGlhbChvYmplY3QudGVtcGxhdGUpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLm51bWJlck9mRXJyb3JzID0gb2JqZWN0Lm51bWJlck9mRXJyb3JzID8/IDA7XG4gICAgbWVzc2FnZS5udW1iZXJPZlVzZXJzID0gb2JqZWN0Lm51bWJlck9mVXNlcnMgPz8gMDtcbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcbn07XG5cbmRlY2xhcmUgdmFyIHNlbGY6IGFueSB8IHVuZGVmaW5lZDtcbmRlY2xhcmUgdmFyIHdpbmRvdzogYW55IHwgdW5kZWZpbmVkO1xuZGVjbGFyZSB2YXIgZ2xvYmFsOiBhbnkgfCB1bmRlZmluZWQ7XG52YXIgdHNQcm90b0dsb2JhbFRoaXM6IGFueSA9ICgoKSA9PiB7XG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiBnbG9iYWxUaGlzO1xuICB9XG4gIGlmICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiBzZWxmO1xuICB9XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuICBpZiAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiBnbG9iYWw7XG4gIH1cbiAgdGhyb3cgXCJVbmFibGUgdG8gbG9jYXRlIGdsb2JhbCBvYmplY3RcIjtcbn0pKCk7XG5cbnR5cGUgQnVpbHRpbiA9IERhdGUgfCBGdW5jdGlvbiB8IFVpbnQ4QXJyYXkgfCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgdHlwZSBEZWVwUGFydGlhbDxUPiA9IFQgZXh0ZW5kcyBCdWlsdGluID8gVFxuICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBVPiA/IEFycmF5PERlZXBQYXJ0aWFsPFU+PiA6IFQgZXh0ZW5kcyBSZWFkb25seUFycmF5PGluZmVyIFU+ID8gUmVhZG9ubHlBcnJheTxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgeyAkY2FzZTogc3RyaW5nIH0gPyB7IFtLIGluIGtleW9mIE9taXQ8VCwgXCIkY2FzZVwiPl0/OiBEZWVwUGFydGlhbDxUW0tdPiB9ICYgeyAkY2FzZTogVFtcIiRjYXNlXCJdIH1cbiAgOiBUIGV4dGVuZHMge30gPyB7IFtLIGluIGtleW9mIFRdPzogRGVlcFBhcnRpYWw8VFtLXT4gfVxuICA6IFBhcnRpYWw8VD47XG5cbmZ1bmN0aW9uIGxvbmdUb051bWJlcihsb25nOiBMb25nKTogbnVtYmVyIHtcbiAgaWYgKGxvbmcuZ3QoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpKSB7XG4gICAgdGhyb3cgbmV3IHRzUHJvdG9HbG9iYWxUaGlzLkVycm9yKFwiVmFsdWUgaXMgbGFyZ2VyIHRoYW4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcIik7XG4gIH1cbiAgcmV0dXJuIGxvbmcudG9OdW1iZXIoKTtcbn1cblxuaWYgKF9tMC51dGlsLkxvbmcgIT09IExvbmcpIHtcbiAgX20wLnV0aWwuTG9uZyA9IExvbmcgYXMgYW55O1xuICBfbTAuY29uZmlndXJlKCk7XG59XG5cbmZ1bmN0aW9uIGlzU2V0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
@@ -1128,7 +1128,7 @@ export declare const GeneratedCodeInfo_Annotation: {
|
|
|
1128
1128
|
fromPartial(object: DeepPartial<GeneratedCodeInfo_Annotation>): GeneratedCodeInfo_Annotation;
|
|
1129
1129
|
};
|
|
1130
1130
|
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
1131
|
-
export type DeepPartial<T> = T extends Builtin ? T : T extends
|
|
1131
|
+
export type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {
|
|
1132
1132
|
$case: string;
|
|
1133
1133
|
} ? {
|
|
1134
1134
|
[K in keyof Omit<T, "$case">]?: DeepPartial<T[K]>;
|