@appconda/sdk 1.0.632 → 1.0.636
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/dist/modules/emploid/schema.d.ts +140 -2
- package/dist/modules/emploid/schema.js +112 -4
- package/dist/modules/emploid/service.d.ts +38 -2
- package/dist/modules/emploid/service.js +64 -1
- package/dist/modules/emploid/types.d.ts +78 -2
- package/dist/modules/emploid/types.js +1 -1
- package/package.json +1 -1
- package/src/modules/emploid/schema.ts +130 -4
- package/src/modules/emploid/service.ts +120 -2
- package/src/modules/emploid/types.ts +103 -2
- package/dist/modules/rbac/index.d.ts +0 -3
- package/dist/modules/rbac/index.js +0 -4
- package/dist/modules/rbac/schema.d.ts +0 -64
- package/dist/modules/rbac/schema.js +0 -55
- package/dist/modules/rbac/service.d.ts +0 -45
- package/dist/modules/rbac/service.js +0 -67
- package/dist/modules/rbac/types.d.ts +0 -55
- package/dist/modules/rbac/types.js +0 -2
|
@@ -273,9 +273,72 @@ export class EmploidService extends ServiceClient {
|
|
|
273
273
|
url: resolvedUrl || storagePath,
|
|
274
274
|
};
|
|
275
275
|
}
|
|
276
|
+
async ListDriveRoots(payload) {
|
|
277
|
+
return await this.actionCall("drive", "ListDriveRoots", payload);
|
|
278
|
+
}
|
|
279
|
+
async EnsureDriveProviderCredential(payload) {
|
|
280
|
+
return await this.actionCall("drive", "EnsureDriveProviderCredential", payload);
|
|
281
|
+
}
|
|
282
|
+
async ListDriveProviderFolders(payload) {
|
|
283
|
+
return await this.actionCall("drive", "ListDriveProviderFolders", payload);
|
|
284
|
+
}
|
|
285
|
+
async CreateDriveRoot(payload) {
|
|
286
|
+
return await this.actionCall("drive", "CreateDriveRoot", payload);
|
|
287
|
+
}
|
|
288
|
+
async DeleteDriveRoot(payload) {
|
|
289
|
+
return await this.actionCall("drive", "DeleteDriveRoot", payload);
|
|
290
|
+
}
|
|
291
|
+
async ListDriveRootItems(payload) {
|
|
292
|
+
return await this.actionCall("drive", "ListDriveRootItems", payload);
|
|
293
|
+
}
|
|
294
|
+
async ListDriveRootTree(payload) {
|
|
295
|
+
return await this.actionCall("drive", "ListDriveRootTree", payload);
|
|
296
|
+
}
|
|
297
|
+
async SearchDriveRootItems(payload) {
|
|
298
|
+
return await this.actionCall("drive", "SearchDriveRootItems", payload);
|
|
299
|
+
}
|
|
300
|
+
async CreateDriveRootFolder(payload) {
|
|
301
|
+
return await this.actionCall("drive", "CreateDriveRootFolder", payload);
|
|
302
|
+
}
|
|
303
|
+
async UploadDriveRootFiles(payload) {
|
|
304
|
+
return await this.actionCall("drive", "UploadDriveRootFiles", payload);
|
|
305
|
+
}
|
|
306
|
+
async RenameDriveRootItem(payload) {
|
|
307
|
+
return await this.actionCall("drive", "RenameDriveRootItem", payload);
|
|
308
|
+
}
|
|
309
|
+
async MoveDriveRootItem(payload) {
|
|
310
|
+
return await this.actionCall("drive", "MoveDriveRootItem", payload);
|
|
311
|
+
}
|
|
312
|
+
async GetDriveRootDeleteImpact(payload) {
|
|
313
|
+
return await this.actionCall("drive", "GetDriveRootDeleteImpact", payload);
|
|
314
|
+
}
|
|
315
|
+
async DeleteDriveRootItem(payload) {
|
|
316
|
+
return await this.actionCall("drive", "DeleteDriveRootItem", payload);
|
|
317
|
+
}
|
|
318
|
+
async ReadDriveRootFileContent(payload) {
|
|
319
|
+
return await this.actionCall("drive", "ReadDriveRootFileContent", payload);
|
|
320
|
+
}
|
|
321
|
+
async ResolveDriveRootDownload(payload) {
|
|
322
|
+
const result = await this.actionCall("drive", "ResolveDriveRootDownload", payload);
|
|
323
|
+
const rawUrl = String(result?.url || "");
|
|
324
|
+
const normalizedUrl = rawUrl.startsWith("data:") ? rawUrl : this.normalizeStoragePath(rawUrl);
|
|
325
|
+
const resolvedUrl = rawUrl.startsWith("data:")
|
|
326
|
+
? rawUrl
|
|
327
|
+
: (this.resolveStorageViewUrl(normalizedUrl) || normalizedUrl);
|
|
328
|
+
return {
|
|
329
|
+
...result,
|
|
330
|
+
fileId: String(result?.itemId || payload.itemId || ""),
|
|
331
|
+
path: normalizedUrl,
|
|
332
|
+
filePath: resolvedUrl || normalizedUrl,
|
|
333
|
+
url: resolvedUrl || normalizedUrl,
|
|
334
|
+
};
|
|
335
|
+
}
|
|
276
336
|
async CreateExtension(payload) {
|
|
277
337
|
return await this.actionCall('extension', 'CreateExtension', payload);
|
|
278
338
|
}
|
|
339
|
+
async UpdateExtension(payload) {
|
|
340
|
+
return await this.actionCall('extension', 'UpdateExtension', payload);
|
|
341
|
+
}
|
|
279
342
|
async DeleteExtension(payload) {
|
|
280
343
|
return await this.actionCall('extension', 'DeleteExtension', payload);
|
|
281
344
|
}
|
|
@@ -920,4 +983,4 @@ export class EmploidService extends ServiceClient {
|
|
|
920
983
|
return await this.get("/chat/history", payload);
|
|
921
984
|
}
|
|
922
985
|
}
|
|
923
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL2VtcGxvaWQvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNckQsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBQ25DLGNBQWM7UUFDcEIsT0FBTyw4QkFBOEIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWE7UUFDM0IsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxRQUFnQjtRQUN6QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHO1lBQ2xCLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRSxPQUFPLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakYsT0FBTyxPQUFPLEtBQUssV0FBVyxD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QUUsT0FBTyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxPQUF1RDtRQUN6RixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxPQUF1RDtRQUN6RixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFtRDtRQUNqRixPQUFPLE1BQU0sSUFB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LHFCQUFxQixDQUM5QixPQUFvRDtRQUVwRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUIsQ0FDNUIsT0FBa0Q7UUFFbEQsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUN4QixPQUE4QztRQUU5QyxPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeiBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBTZXJ2aWNlQ2xpZW50IH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UtY2xpZW50XCI7XG5cblxuaW1wb3J0IHsgQWdncmVnYXRlUmVjb3Jkc1NjaGVtYSwgQnVsa0NyZWF0ZVJlY29yZHNTY2hlbWEsIEJ1bGtEZWxldGVSZWNvcmRzU2NoZW1hLCBCdWxrVXBkYXRlUmVjb3Jkc1NjaGVtYSwgQ2hhbmdlQWdlbnRmbG93UHJvamVjdFNjaGVtYSwgQ2hlY2tSZWNvcmRQZXJtaXNzaW9uU2NoZW1hLCBDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgQ291bnRSZWNvcmRzU2NoZW1hLCBDcmVhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWEsIENyZWF0ZUFnZW50Rmxvd1NjaGVtYSwgQ3JlYXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50Q29uc3RyYWludFNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50SW5zdHJ1Y3Rpb25TY2hlbWEsIENyZWF0ZUFzc2lzdGFudFNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50U2tpbGxTY2hlbWEsIENyZWF0ZUNoYW5uZWxTY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25TY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hLCBDcmVhdGVDb21tYW5kU2NoZW1hLCBDcmVhdGVDb21wZXRlbmN5U2NoZW1hLCBDcmVhdGVDb25zdHJhaW50U2NoZW1hLCBDcmVhdGVEYXRhTW9kZWxTY2hlbWEsIENyZWF0ZURhdGFzb3VyY2VTY2hlbWEsIENyZWF0ZURvbWFpblRvcGljU2NoZW1hLCBDcmVhdGVEcml2ZUZvbGRlclNjaGVtYSwgQ3JlYXRlRW1wbG9pZFNjaGVtYSwgQ3JlYXRlRXh0ZW5zaW9uU2NoZW1hLCBDcmVhdGVJbnB1dFNjaGVtYSwgQ3JlYXRlSW5zdHJ1Y3Rpb25TY2hlbWEsIENyZWF0ZUpvYkRlZmluaXRpb25TY2hlbWEsIENyZWF0ZUtub3dsZWRnZVNjaGVtYSwgQ3JlYXRlT2NjdXBhdGlvblNjaGVtYSwgQ3JlYXRlUmVjb3JkU2NoZW1hLCBDcmVhdGVTY29wZVNjaGVtYSwgQ3JlYXRlU2tpbGxTY2hlbWEsIENyZWF0ZVN0cmVhbUlkU2NoZW1hLCBDcmVhdGVUYXNrVGVtcGxhdGVTY2hlbWEsIENyZWF0ZVRlYW1TY2hlbWEsIENyZWF0ZVRvcGljU2NoZW1hLCBDcmVhdGVXaWtpQ29tbWVudFNjaGVtYSwgQ3JlYXRlV2lraVBhZ2VTY2hlbWEsIENyZWF0ZVdpa2lSZXZpc2lvblNjaGVtYSwgQ3JlYXRlV29ya2VyU2NoZW1hLCBDcmVhdGVXb3JrZXJUb3BpY1NjaGVtYSwgRGVsZXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hLCBEZWxldGVBZ2VudEZsb3dTY2hlbWEsIERlbGV0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWEsIERlbGV0ZUFzc2lzdGFudERhdGFzb3VyY2VTY2hlbWEsIERlbGV0ZUFzc2lzdGFudFNjaGVtYSwgRGVsZXRlQXNzaXN0YW50U2tpbGxTY2hlbWEsIERlbGV0ZUNoYW5uZWxTY2hlbWEsIERlbGV0ZUNoYXRCeUlkU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYSwgRGVsZXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uVmlld1NjaGVtYSwgRGVsZXRlQ29tbWFuZFNjaGVtYSwgRGVsZXRlQ29tcGV0ZW5jeVNjaGVtYSwgRGVsZXRlQ29uc3RyYWludFNjaGVtYSwgRGVsZXRlRGF0YU1vZGVsU2NoZW1hLCBEZWxldGVEYXRhc291cmNlU2NoZW1hLCBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXBTY2hlbWEsIERlbGV0ZURvbWFpblRvcGljU2NoZW1hLCBEZWxldGVEcml2ZUl0ZW1TY2hlbWEsIERlbGV0ZUVtcGxvaWRTY2hlbWEsIERlbGV0ZUV4dGVuc2lvblNjaGVtYSwgRGVsZXRlSW5wdXRTY2hlbWEsIERlbGV0ZUluc3RydWN0aW9uU2NoZW1hLCBEZWxldGVKb2JEZWZpbml0aW9uU2NoZW1hLCBEZWxldGVLbm93bGVkZ2VTY2hlbWEsIERlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcFNjaGVtYSwgRGVsZXRlT2NjdXBhdGlvblNjaGVtYSwgRGVsZXRlUmVjb3JkU2NoZW1hLCBEZWxldGVTY29wZVNjaGVtYSwgRGVsZXRlU2tpbGxTY2hlbWEsIERlbGV0ZVRhc2tUZW1wbGF0ZVNjaGVtYSwgRGVsZXRlVGVhbVNjaGVtYSwgRGVsZXRlVG9waWNTY2hlbWEsIERlbGV0ZVdpa2lDb21tZW50U2NoZW1hLCBEZWxldGVXaWtpUGFnZVNjaGVtYSwgRGVsZXRlV29ya2VyU2NoZW1hLCBEZWxldGVXb3JrZXJUb3BpY1NjaGVtYSwgRGlzdGluY3RGaWVsZFZhbHVlc1NjaGVtYSwgRHVwbGljYXRlQWdlbnRGbG93U2NoZW1hLCBEdXBsaWNhdGVSZWNvcmRTY2hlbWEsIEVuaGFuY2VUb3BpY1NjaGVtYSwgRW5zdXJlQWlydGFibGVJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVHbWFpbEltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZUdpdGh1YkltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZUppcmFJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGRTY2hlbWEsIEV4ZWN1dGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hLCBHZXRDaGF0QnlJZFNjaGVtYSwgR2V0Q2hhdHNCeVVzZXJJZFNjaGVtYSwgR2V0Q29sbGVjdGlvbkJ5SWRTY2hlbWEsIEdldENvbGxlY3Rpb25TY2hlbWFTY2hlbWEsIEdldERhdGFNb2RlbEJ5SWRTY2hlbWEsIEdldERvY3VtZW50QnlJZFNjaGVtYSwgR2V0RG9jdW1lbnRzQnlJZFNjaGVtYSwgR2V0RHJpdmVEZWxldGVJbXBhY3RTY2hlbWEsIEdldExhdGVzdFdpa2lSZXZpc2lvblNjaGVtYSwgR2V0TWFya2V0U3RvcmVJdGVtU2NoZW1hLCBHZXRNZXNzYWdlQnlJZFNjaGVtYSwgR2V0TWVzc2FnZUNvdW50QnlVc2VySWRTY2hlbWEsIEdldE1lc3NhZ2VzQnlDaGF0SWRTY2hlbWEsIEdldFJlY29yZEJ5SWRTY2hlbWEsIEdldFJlY29yZFJlbGF0aW9uc1NjaGVtYSwgR2V0U2NvcGVCeVR5cGVTY2hlbWEsIEdldFN0cmVhbUlkc0J5Q2hhdElkU2NoZW1hLCBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZFNjaGVtYSwgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYSwgR2V0V2lraVBhZ2VCeUlkU2NoZW1hLCBHZXRXaWtpUGFnZUJ5U2x1Z1NjaGVtYSwgR2V0V2lraVJldmlzaW9uQnlJZFNjaGVtYSwgR2V0V2lraVRyZWVTY2hlbWEsIEdyYW50UmVjb3JkUGVybWlzc2lvblNjaGVtYSwgR3JvdXBSZWNvcmRzU2NoZW1hLCBIYXJkRGVsZXRlRGF0YU1vZGVsU2NoZW1hLCBMaXN0QWdlbnRGbG93Rm9sZGVyc1NjaGVtYSwgTGlzdEFnZW50Rmxvd3NTY2hlbWEsIExpc3RBaXJ0YWJsZUltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RBc3Npc3RhbnRDaGFubmVsc1NjaGVtYSwgTGlzdEFzc2lzdGFudENvbnN0cmFpbnRzU2NoZW1hLCBMaXN0QXNzaXN0YW50RGF0YXNvdXJjZXNTY2hlbWEsIExpc3RBc3Npc3RhbnRJbnN0cnVjdGlvbnNTY2hlbWEsIExpc3RBc3Npc3RhbnRTa2lsbHNTY2hlbWEsIExpc3RBc3Npc3RhbnRzU2NoZW1hLCBMaXN0Q2hhbm5lbHNTY2hlbWEsIExpc3RDaGF0SGlzdG9yeVNjaGVtYSwgTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXNTY2hlbWEsIExpc3RDb2xsZWN0aW9uQnV0dG9uc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25SZWxhdGlvbnNTY2hlbWEsIExpc3RDb2xsZWN0aW9uc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25WaWV3c1NjaGVtYSwgTGlzdENvbW1hbmRzU2NoZW1hLCBMaXN0Q29tcGV0ZW5jaWVzU2NoZW1hLCBMaXN0Q29uc3RyYWludHNTY2hlbWEsIExpc3REYXRhTW9kZWxzU2NoZW1hLCBMaXN0RGF0YXNvdXJjZXNTY2hlbWEsIExpc3REb21haW5Ub3BpY3NTY2hlbWEsIExpc3REcml2ZUl0ZW1zU2NoZW1hLCBMaXN0RHJpdmVUcmVlU2NoZW1hLCBMaXN0RW1wbG9pZHNQYWdpbmF0ZWRTY2hlbWEsIExpc3RFbXBsb2lkc1NjaGVtYSwgTGlzdEV4dGVuc2lvbnNTY2hlbWEsIExpc3RHbWFpbEltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RHaXRodWJJbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0SW5wdXRTY2hlbWEsIExpc3RJbnN0cnVjdGlvbnNTY2hlbWEsIExpc3RKaXJhSW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdEpvYkRlZmluaXRpb25TY2hlbWEsIExpc3RLbm93bGVkZ2VzU2NoZW1hLCBMaXN0TGluZWFySW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdE1hcmtldFN0b3JlSXRlbXNTY2hlbWEsIExpc3ROb3Rpb25JbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0T2NjdXBhdGlvbnNTY2hlbWEsIExpc3RSZWNvcmRQZXJtaXNzaW9uc1NjaGVtYSwgTGlzdFJlY29yZHNTY2hlbWEsIExpc3RSZWxhdGlvbkNhbmRpZGF0ZXNTY2hlbWEsIExpc3RTY29wZXNTY2hlbWEsIExpc3RTa2lsbHNTY2hlbWEsIExpc3RUYXNrVGVtcGxhdGVzU2NoZW1hLCBMaXN0VGVhbXNTY2hlbWEsIExpc3RUb3BpY3NTY2hlbWEsIExpc3RUcmVsbG9JbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0V2lraUNvbW1lbnRzU2NoZW1hLCBMaXN0V2lraVBhZ2VzU2NoZW1hLCBMaXN0V29ya2Vyc1NjaGVtYSwgTGlzdFdvcmtlclRvcGljc1NjaGVtYSwgTW92ZURyaXZlSXRlbVNjaGVtYSwgUHJlcGFyZURyaXZlVXBsb2FkU2NoZW1hLCBQcmV2aWV3QWlydGFibGVJbXBvcnRTY2hlbWEsIFByZXZpZXdDc3ZJbXBvcnRTY2hlbWEsIFByZXZpZXdHbWFpbEltcG9ydFNjaGVtYSwgUHJldmlld0dpdGh1YkltcG9ydFNjaGVtYSwgUHJldmlld0ppcmFJbXBvcnRTY2hlbWEsIFByZXZpZXdMaW5lYXJJbXBvcnRTY2hlbWEsIFByZXZpZXdOb3Rpb25JbXBvcnRTY2hlbWEsIFByZXZpZXdUcmVsbG9JbXBvcnRTY2hlbWEsIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzU2NoZW1hLCBQdWJsaXNoRG9tYWluU2NoZW1hLCBQdWJsaXNoRW1wbG9pZFNjaGVtYSwgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmVTY2hlbWEsIFF1ZXJ5UmVjb3Jkc1NjaGVtYSwgUmVuYW1lRHJpdmVJdGVtU2NoZW1hLCBSZW9yZGVyQ29sbGVjdGlvbkZpZWxkc1NjaGVtYSwgUmVzb2x2ZUNvbGxlY3Rpb25GaWxlVmlld1NjaGVtYSwgUmVzb2x2ZURyaXZlRG93bmxvYWRTY2hlbWEsIFJlc29sdmVTY29wZUZpbGVWaWV3U2NoZW1hLCBSZXNvbHZlV2lraUZpbGVWaWV3U2NoZW1hLCBSZXN0b3JlRGF0YU1vZGVsU2NoZW1hLCBSZXN0b3JlUmVjb3JkU2NoZW1hLCBSZXN0b3JlV2lraVBhZ2VTY2hlbWEsIFJldm9rZVJlY29yZFBlcm1pc3Npb25TY2hlbWEsIFJ1bkFpcnRhYmxlSW1wb3J0U2NoZW1hLCBSdW5Dc3ZJbXBvcnRTY2hlbWEsIFJ1bkdtYWlsSW1wb3J0U2NoZW1hLCBSdW5HaXRodWJJbXBvcnRTY2hlbWEsIFJ1bkppcmFJbXBvcnRTY2hlbWEsIFJ1bkxpbmVhckltcG9ydFNjaGVtYSwgUnVuTm90aW9uSW1wb3J0U2NoZW1hLCBSdW5UcmVsbG9JbXBvcnRTY2hlbWEsIFNhdmVDaGF0U2NoZW1hLCBTYXZlRG9jdW1lbnRTY2hlbWEsIFNhdmVNZXNzYWdlc1NjaGVtYSwgU2F2ZVN1Z2dlc3Rpb25zU2NoZW1hLCBTZWFyY2hEcml2ZUl0ZW1zU2NoZW1hLCBTZWFyY2hSZWNvcmRzU2NoZW1hLCBVcGRhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWEsIFVwZGF0ZUFnZW50Rmxvd1NjaGVtYSwgVXBkYXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYSwgVXBkYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYSwgVXBkYXRlQXNzaXN0YW50U2NoZW1hLCBVcGRhdGVBc3Npc3RhbnRTa2lsbFNjaGVtYSwgVXBkYXRlQ2hhbm5lbFNjaGVtYSwgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZFNjaGVtYSwgVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWRTY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hLCBVcGRhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hLCBVcGRhdGVDb21tYW5kU2NoZW1hLCBVcGRhdGVDb21wZXRlbmN5U2NoZW1hLCBVcGRhdGVDb25zdHJhaW50U2NoZW1hLCBVcGRhdGVEYXRhTW9kZWxTY2hlbWEsIFVwZGF0ZURhdGFzb3VyY2VTY2hlbWEsIFVwZGF0ZURvbWFpblRvcGljU2NoZW1hLCBVcGRhdGVFbXBsb2lkU2NoZW1hLCBVcGRhdGVJbnB1dFNjaGVtYSwgVXBkYXRlSW5zdHJ1Y3Rpb25TY2hlbWEsIFVwZGF0ZUpvYkRlZmluaXRpb25TY2hlbWEsIFVwZGF0ZUtub3dsZWRnZVNjaGVtYSwgVXBkYXRlT2NjdXBhdGlvblNjaGVtYSwgVXBkYXRlUmVjb3JkU2NoZW1hLCBVcGRhdGVTY29wZVNjaGVtYSwgVXBkYXRlU2tpbGxTY2hlbWEsIFVwZGF0ZVRhc2tUZW1wbGF0ZVNjaGVtYSwgVXBkYXRlVGVhbVNjaGVtYSwgVXBkYXRlVG9waWNTY2hlbWEsIFVwZGF0ZVdpa2lDb21tZW50U2NoZW1hLCBVcGRhdGVXaWtpUGFnZVNjaGVtYSwgVXBkYXRlV29ya2VyU2NoZW1hLCBVcGRhdGVXb3JrZXJUb3BpY1NjaGVtYSwgVXBsb2FkQ29sbGVjdGlvbkZpbGVTY2hlbWEsIFVwbG9hZEVkaXRvckZpbGVTY2hlbWEsIFVwc2VydFJlY29yZFNjaGVtYSwgVmFsaWRhdGVSZWNvcmRTY2hlbWEsIFZvdGVNZXNzYWdlU2NoZW1hIH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5pbXBvcnQgeyBUQWdlbnRGbG93LCBUQWdlbnRGbG93Rm9sZGVyLCBUQXNzaXN0YW50LCBUQXNzaXN0YW50Q2hhbm5lbCwgVEFzc2lzdGFudENvbnN0cmFpbnQsIFRBc3Npc3RhbnREYXRhc291cmNlLCBUQXNzaXN0YW50SW5zdHJ1Y3Rpb24sIFRBc3Npc3RhbnRTa2lsbCwgVENoYW5uZWwsIFRDaGF0LCBUQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlLCBUQ29sbGVjdGlvbkJ1dHRvbiwgVENvbGxlY3Rpb25SZWxhdGlvbiwgVENvbGxlY3Rpb25WaWV3LCBUQ29tbWFuZCwgVENvbXBldGVuY3ksIFRDb25zdHJhaW50LCBURGF0YXNvdXJjZSwgVERlbGV0ZUFnZW50Rmxvd1Jlc3VsdCwgVERvY3VtZW50LCBURG9tYWluVG9waWMsIFREcml2ZURlbGV0ZUltcGFjdCwgVERyaXZlSXRlbSwgVERyaXZlVHJlZU5vZGUsIFRFbXBsb2lkLCBURW5oYW5jZVRvcGljLCBURXh0ZW5zaW9uLCBUSW5wdXQsIFRJbnN0cnVjdGlvbiwgVEpvYkRlZmluaXRpb24sIFRLbm93bGVkZ2UsIFRNYXJrZXRTdG9yZUl0ZW0sIFRPY2N1cGF0aW9uLCBUUGFnaW5hdGVkRW1wbG9pZHNSZXN1bHQsIFRQcmVwYXJlZERyaXZlVXBsb2FkLCBUUHVibGlzaEVtcGxvaWQsIFRQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZSwgVFJlbGF0aW9uUmVjb3JkT3B0aW9uLCBUU2NvcGUsIFRTa2lsbCwgVFN0cmVhbUlkLCBUVGFza1RlbXBsYXRlLCBUVGVhbSwgVFRvcGljLCBUVXBsb2FkZWRGaWxlLCBUV2lraUNvbW1lbnQsIFRXaWtpQ29tbWVudFBhZ2luYXRpb24sIFRXaWtpRmlsZVZpZXdSZXNvbHV0aW9uLCBUV29ya2VyLCBUV29ya2VyVG9waWMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgRW1wbG9pZFNlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlQ2xpZW50IHtcbiAgICBwcm90ZWN0ZWQgZ2V0U2VydmljZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdjb20uYXBwY29uZGEuc2VydmljZS5lbXBsb2lkJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSHR0cFVybCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvXmh0dHBzPzpcXC9cXC8vaS50ZXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZVN0b3JhZ2VQYXRoKHBhdGhMaWtlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gU3RyaW5nKHBhdGhMaWtlIHx8IFwiXCIpLnRyaW0oKTtcbiAgICAgICAgaWYgKCFub3JtYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSHR0cFVybChub3JtYWxpemVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZC5zdGFydHNXaXRoKFwiL1wiKSA/IG5vcm1hbGl6ZWQgOiBgLyR7bm9ybWFsaXplZH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZUVudkVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGVudkNhbmRpZGF0ZXMgPSBbXG4gICAgICAgICAgICB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiA/IHByb2Nlc3M/LmVudj8uQVBQQ09OREFfRU5EUE9JTlQgOiBcIlwiLFxuICAgICAgICAgICAgdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgPyBwcm9jZXNzPy5lbnY/Lk5FWFRfUFVCTElDX0FQUENPTkRBX0VORFBPSU5UIDogXCJcIixcbiAgICAgICAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiID8gcHJvY2Vzcz8uZW52Py5fQVBQX0FQUENPTkRBX0VORFBPSU5UIDogXCJcIixcbiAgICAgICAgXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBlbnZDYW5kaWRhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gU3RyaW5nKGNhbmRpZGF0ZSB8fCBcIlwiKS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSHR0cFVybChub3JtYWxpemVkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChzdG9yYWdlUGF0aCk7XG4gICAgICAgIGlmICghbm9ybWFsaXplZFBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNIdHRwVXJsKG5vcm1hbGl6ZWRQYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5kcG9pbnQgPSBTdHJpbmcodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50IHx8IFwiXCIpLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICAgICAgICBpZiAodGhpcy5pc0h0dHBVcmwoZW5kcG9pbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7ZW5kcG9pbnR9JHtub3JtYWxpemVkUGF0aH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3RvY29sID0gd2luZG93Py5sb2NhdGlvbj8ucHJvdG9jb2wgfHwgXCJcIjtcbiAgICAgICAgICAgIGlmIChwcm90b2NvbCAmJiBwcm90b2NvbCAhPT0gXCJmaWxlOlwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luID0gU3RyaW5nKHdpbmRvdz8ubG9jYXRpb24/Lm9yaWdpbiB8fCBcIlwiKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICAgICAgICAgICAgICAgIGlmIChvcmlnaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEVuZHBvaW50ID0gZW5kcG9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKGVuZHBvaW50LnN0YXJ0c1dpdGgoXCIvXCIpID8gZW5kcG9pbnQgOiBgLyR7ZW5kcG9pbnR9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke29yaWdpbn0ke25vcm1hbGl6ZWRFbmRwb2ludH0ke25vcm1hbGl6ZWRQYXRofWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW52RW5kcG9pbnQgPSB0aGlzLnJlc29sdmVFbnZFbmRwb2ludCgpO1xuICAgICAgICBpZiAoZW52RW5kcG9pbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlbnZFbmRwb2ludH0ke25vcm1hbGl6ZWRQYXRofWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZFBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUVtcGxvaWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlRW1wbG9pZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVFbXBsb2lkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUVtcGxvaWRTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUVtcGxvaWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRW1wbG9pZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VEVtcGxvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVFbXBsb2lkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFB1Ymxpc2hFbXBsb2lkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFB1Ymxpc2hFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VFB1Ymxpc2hFbXBsb2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnUHVibGlzaEVtcGxvaWQnLCBwYXlsb2FkKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIExpc3RFbXBsb2lkcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RW1wbG9pZHNTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdEVtcGxvaWRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RFbXBsb2lkc1BhZ2luYXRlZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RW1wbG9pZHNQYWdpbmF0ZWRTY2hlbWE+KTogUHJvbWlzZTxUUGFnaW5hdGVkRW1wbG9pZHNSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0RW1wbG9pZHNQYWdpbmF0ZWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlSW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0SW5zdHJ1Y3Rpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RJbnN0cnVjdGlvbnNTY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RJbnN0cnVjdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlSW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVJbnN0cnVjdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVJbnN0cnVjdGlvblNjaGVtYT4pOiBQcm9taXNlPFRJbnN0cnVjdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZUluc3RydWN0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbnN0cmFpbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29uc3RyYWludFNjaGVtYT4pOiBQcm9taXNlPFRDb25zdHJhaW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlQ29uc3RyYWludCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29uc3RyYWludHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbnN0cmFpbnRzU2NoZW1hPik6IFByb21pc2U8VENvbnN0cmFpbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RDb25zdHJhaW50cycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb25zdHJhaW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbnN0cmFpbnRTY2hlbWE+KTogUHJvbWlzZTxUQ29uc3RyYWludD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUNvbnN0cmFpbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29uc3RyYWludChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb25zdHJhaW50U2NoZW1hPik6IFByb21pc2U8VENvbnN0cmFpbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVDb25zdHJhaW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RTY29wZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFNjb3Blc1NjaGVtYT4pOiBQcm9taXNlPFRTY29wZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdFNjb3BlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRTY29wZUJ5VHlwZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRTY29wZUJ5VHlwZVNjaGVtYT4pOiBQcm9taXNlPFRTY29wZSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdHZXRTY29wZUJ5VHlwZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVTY29wZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVTY29wZVNjaGVtYT4pOiBQcm9taXNlPFRTY29wZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZVNjb3BlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVNjb3BlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVNjb3BlU2NoZW1hPik6IFByb21pc2U8VFNjb3BlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlU2NvcGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlU2NvcGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlU2NvcGVTY2hlbWE+KTogUHJvbWlzZTxUU2NvcGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVTY29wZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWRTY29wZUZpbGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwbG9hZEVkaXRvckZpbGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUVXBsb2FkZWRGaWxlPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwic2NvcGVcIiwgXCJVcGxvYWRGaWxlXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/LmZpbGVJZCB8fCByZXN1bHQ/LmlkIHx8IHBheWxvYWQuYXR0YWNobWVudElkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlU2NvcGVGaWxlVmlldyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzb2x2ZVNjb3BlRmlsZVZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcInNjb3BlXCIsIFwiUmVzb2x2ZVNjb3BlRmlsZVZpZXdcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoID1cbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgoU3RyaW5nKHJlc3VsdD8ucGF0aCB8fCByZXN1bHQ/LmZpbGVQYXRoIHx8IHJlc3VsdD8udXJsIHx8IFwiXCIpKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSB0aGlzLnJlc29sdmVTdG9yYWdlVmlld1VybChzdG9yYWdlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGZpbGVJZDogU3RyaW5nKHJlc3VsdD8uZmlsZUlkIHx8IHBheWxvYWQuZmlsZUlkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVPY2N1cGF0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZU9jY3VwYXRpb25TY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0NyZWF0ZU9jY3VwYXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlT2NjdXBhdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVPY2N1cGF0aW9uU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdVcGRhdGVPY2N1cGF0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZU9jY3VwYXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlT2NjdXBhdGlvblNjaGVtYT4pOiBQcm9taXNlPFRPY2N1cGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnRGVsZXRlT2NjdXBhdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0T2NjdXBhdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdE9jY3VwYXRpb25zU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0xpc3RPY2N1cGF0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQdWJsaXNoRG9tYWluKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFB1Ymxpc2hEb21haW5TY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ1B1Ymxpc2hEb21haW4nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRG9tYWluVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRG9tYWluVG9waWNTY2hlbWE+KTogUHJvbWlzZTxURG9tYWluVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdDcmVhdGVEb21haW5Ub3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVEb21haW5Ub3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVEb21haW5Ub3BpY1NjaGVtYT4pOiBQcm9taXNlPFREb21haW5Ub3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ1VwZGF0ZURvbWFpblRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURvbWFpblRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURvbWFpblRvcGljU2NoZW1hPik6IFByb21pc2U8VERvbWFpblRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnRGVsZXRlRG9tYWluVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERvbWFpblRvcGljcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RG9tYWluVG9waWNzU2NoZW1hPik6IFByb21pc2U8VERvbWFpblRvcGljW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdMaXN0RG9tYWluVG9waWNzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUpvYkRlZmluaXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pOiBQcm9taXNlPFRKb2JEZWZpbml0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlSm9iRGVmaW5pdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVKb2JEZWZpbml0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUpvYkRlZmluaXRpb25TY2hlbWE+KTogUHJvbWlzZTxUSm9iRGVmaW5pdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUpvYkRlZmluaXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlSm9iRGVmaW5pdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVKb2JEZWZpbml0aW9uU2NoZW1hPik6IFByb21pc2U8VEpvYkRlZmluaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVKb2JEZWZpbml0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RKb2JEZWZpbml0aW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYT4pOiBQcm9taXNlPFRKb2JEZWZpbml0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0Sm9iRGVmaW5pdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29tcGV0ZW5jeShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb21wZXRlbmN5U2NoZW1hPik6IFByb21pc2U8VENvbXBldGVuY3k+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVDb21wZXRlbmN5JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbXBldGVuY3kocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29tcGV0ZW5jeVNjaGVtYT4pOiBQcm9taXNlPFRDb21wZXRlbmN5PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlQ29tcGV0ZW5jeScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb21wZXRlbmN5KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbXBldGVuY3lTY2hlbWE+KTogUHJvbWlzZTxUQ29tcGV0ZW5jeT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZUNvbXBldGVuY3knLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbXBldGVuY2llcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29tcGV0ZW5jaWVzU2NoZW1hPik6IFByb21pc2U8VENvbXBldGVuY3lbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RDb21wZXRlbmNpZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFRhc2tUZW1wbGF0ZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRhc2tUZW1wbGF0ZXNTY2hlbWE+KTogUHJvbWlzZTxUVGFza1RlbXBsYXRlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0VGFza1RlbXBsYXRlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0NyZWF0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VERlbGV0ZUFnZW50Rmxvd1Jlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0RlbGV0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEdXBsaWNhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRHVwbGljYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0R1cGxpY2F0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDaGFuZ2VBZ2VudGZsb3dQcm9qZWN0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENoYW5nZUFnZW50Zmxvd1Byb2plY3RTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnQ2hhbmdlQWdlbnRmbG93UHJvamVjdCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ1VwZGF0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QWdlbnRGbG93cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QWdlbnRGbG93c1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3dbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0xpc3RBZ2VudEZsb3dzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnQ3JlYXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnVXBkYXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnRGVsZXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBZ2VudEZsb3dGb2xkZXJzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBZ2VudEZsb3dGb2xkZXJzU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd0ZvbGRlcltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnTGlzdEFnZW50Rmxvd0ZvbGRlcnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlSXRlbXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REcml2ZUl0ZW1zU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBjdXJyZW50Rm9sZGVyOiBURHJpdmVJdGVtOyBpdGVtczogVERyaXZlSXRlbVtdIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiTGlzdERyaXZlSXRlbXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REcml2ZVRyZWUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REcml2ZVRyZWVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVUcmVlTm9kZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJMaXN0RHJpdmVUcmVlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZWFyY2hEcml2ZUl0ZW1zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTZWFyY2hEcml2ZUl0ZW1zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIlNlYXJjaERyaXZlSXRlbXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURyaXZlRm9sZGVyKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEcml2ZUZvbGRlclNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiQ3JlYXRlRHJpdmVGb2xkZXJcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXBhcmVEcml2ZVVwbG9hZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJlcGFyZURyaXZlVXBsb2FkU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFByZXBhcmVkRHJpdmVVcGxvYWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiUHJlcGFyZURyaXZlVXBsb2FkXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZW5hbWVEcml2ZUl0ZW0oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlbmFtZURyaXZlSXRlbVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiUmVuYW1lRHJpdmVJdGVtXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBNb3ZlRHJpdmVJdGVtKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBNb3ZlRHJpdmVJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJNb3ZlRHJpdmVJdGVtXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXREcml2ZURlbGV0ZUltcGFjdChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0RHJpdmVEZWxldGVJbXBhY3RTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVEZWxldGVJbXBhY3Q+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiR2V0RHJpdmVEZWxldGVJbXBhY3RcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURyaXZlSXRlbShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRHJpdmVJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBpZDogc3RyaW5nOyBkZWxldGVkOiBib29sZWFuOyB0b3RhbEl0ZW1zOiBudW1iZXIgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJEZWxldGVEcml2ZUl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc29sdmVEcml2ZURvd25sb2FkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlRHJpdmVEb3dubG9hZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpRmlsZVZpZXdSZXNvbHV0aW9uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwiZHJpdmVcIiwgXCJSZXNvbHZlRHJpdmVEb3dubG9hZFwiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5pdGVtSWQgfHwgcGF5bG9hZC5pdGVtSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUV4dGVuc2lvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVFeHRlbnNpb25TY2hlbWE+KTogUHJvbWlzZTxURXh0ZW5zaW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2V4dGVuc2lvbicsICdDcmVhdGVFeHRlbnNpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRXh0ZW5zaW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUV4dGVuc2lvblNjaGVtYT4pOiBQcm9taXNlPFRFeHRlbnNpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZXh0ZW5zaW9uJywgJ0RlbGV0ZUV4dGVuc2lvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RXh0ZW5zaW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RXh0ZW5zaW9uc1NjaGVtYT4pOiBQcm9taXNlPFRFeHRlbnNpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdleHRlbnNpb24nLCAnTGlzdEV4dGVuc2lvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLUFzc2lzdGFudC0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBc3Npc3RhbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQXNzaXN0YW50U2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnVXBkYXRlQXNzaXN0YW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFzc2lzdGFudChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnRTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdEZWxldGVBc3Npc3RhbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudHNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudEluc3RydWN0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnRJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50SW5zdHJ1Y3Rpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnRJbnN0cnVjdGlvbnNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50SW5zdHJ1Y3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudEluc3RydWN0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnRDb25zdHJhaW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudENvbnN0cmFpbnRTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q29uc3RyYWludD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50Q29uc3RyYWludCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50Q29uc3RyYWludHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudENvbnN0cmFpbnRzU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENvbnN0cmFpbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudENvbnN0cmFpbnRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudERhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnREYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFzc2lzdGFudERhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdVcGRhdGVBc3Npc3RhbnREYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFzc2lzdGFudERhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdEZWxldGVBc3Npc3RhbnREYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnREYXRhc291cmNlcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50RGF0YXNvdXJjZXNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50RGF0YXNvdXJjZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50RGF0YXNvdXJjZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50U2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50U2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50U2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudFNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFzc2lzdGFudFNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUFzc2lzdGFudFNraWxsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdVcGRhdGVBc3Npc3RhbnRTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBc3Npc3RhbnRTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnRTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnRGVsZXRlQXNzaXN0YW50U2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudFNraWxscyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50U2tpbGxzU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudFNraWxsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnRTa2lsbHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50Q2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudENoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQXNzaXN0YW50Q2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ1VwZGF0ZUFzc2lzdGFudENoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXNzaXN0YW50Q2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0RlbGV0ZUFzc2lzdGFudENoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudENoYW5uZWxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnRDaGFubmVsc1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRDaGFubmVsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnRDaGFubmVscycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tRGF0YXNvdXJjZXMtLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2RhdGEtc291cmNlJywgJ0NyZWF0ZURhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVEYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZGF0YS1zb3VyY2UnLCAnVXBkYXRlRGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEYXRhc291cmNlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURhdGFzb3VyY2VTY2hlbWE+KTogUHJvbWlzZTxURGF0YXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdkYXRhLW91cmNlJywgJ0RlbGV0ZURhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERhdGFzb3VyY2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REYXRhc291cmNlc1NjaGVtYT4pOiBQcm9taXNlPFREYXRhc291cmNlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZGF0YS1zb3VyY2UnLCAnTGlzdERhdGFzb3VyY2VzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVNraWxscy0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlU2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUU2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnc2tpbGwnLCAnQ3JlYXRlU2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFNraWxscyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0U2tpbGxzU2NoZW1hPik6IFByb21pc2U8VFNraWxsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnc2tpbGwnLCAnTGlzdFNraWxscycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdVcGRhdGVTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdEZWxldGVTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1DaGFubmVscy0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhbm5lbCcsICdDcmVhdGVDaGFubmVsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDaGFubmVscyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q2hhbm5lbHNTY2hlbWE+KTogUHJvbWlzZTxUQ2hhbm5lbFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYW5uZWwnLCAnTGlzdENoYW5uZWxzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNoYW5uZWwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ2hhbm5lbFNjaGVtYT4pOiBQcm9taXNlPFRDaGFubmVsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYW5uZWwnLCAnVXBkYXRlQ2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQ2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGFubmVsJywgJ0RlbGV0ZUNoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tS25vd2xlZGdlLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVLbm93bGVkZ2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlS25vd2xlZGdlU2NoZW1hPik6IFByb21pc2U8VEtub3dsZWRnZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdrbm93bGVkZ2UnLCAnQ3JlYXRlS25vd2xlZGdlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RLbm93bGVkZ2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RLbm93bGVkZ2VzU2NoZW1hPik6IFByb21pc2U8VEtub3dsZWRnZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdMaXN0S25vd2xlZGdlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVLbm93bGVkZ2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlS25vd2xlZGdlU2NoZW1hPik6IFByb21pc2U8VEtub3dsZWRnZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdrbm93bGVkZ2UnLCAnVXBkYXRlS25vd2xlZGdlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUtub3dsZWRnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVLbm93bGVkZ2VTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdEZWxldGVLbm93bGVkZ2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS1XT1JLRVItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV29ya2VyKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdvcmtlclNjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0NyZWF0ZVdvcmtlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXb3JrZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV29ya2VyU2NoZW1hPik6IFByb21pc2U8VFdvcmtlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnVXBkYXRlV29ya2VyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdvcmtlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXb3JrZXJTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdEZWxldGVXb3JrZXInLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmVTY2hlbWE+KTogUHJvbWlzZTxUUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnbWFya2V0LXN0b3JlJywgJ1B1Ymxpc2hXb3JrZXJUb01hcmtldFN0b3JlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RXb3JrZXJzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RXb3JrZXJzU2NoZW1hPik6IFByb21pc2U8VFdvcmtlcltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdMaXN0V29ya2VycycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXb3JrZXJUb3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXb3JrZXJUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXJUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnQ3JlYXRlV29ya2VyVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV29ya2VyVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV29ya2VyVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ1VwZGF0ZVdvcmtlclRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdvcmtlclRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdvcmtlclRvcGljU2NoZW1hPik6IFByb21pc2U8VFdvcmtlclRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdEZWxldGVXb3JrZXJUb3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V29ya2VyVG9waWNzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RXb3JrZXJUb3BpY3NTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyVG9waWNbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnTGlzdFdvcmtlclRvcGljcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0TWFya2V0U3RvcmVJdGVtcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0TWFya2V0U3RvcmVJdGVtc1NjaGVtYT4pOiBQcm9taXNlPFRNYXJrZXRTdG9yZUl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdtYXJrZXQtc3RvcmUnLCAnTGlzdE1hcmtldFN0b3JlSXRlbXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TWFya2V0U3RvcmVJdGVtKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1hcmtldFN0b3JlSXRlbVNjaGVtYT4pOiBQcm9taXNlPFRNYXJrZXRTdG9yZUl0ZW0gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ21hcmtldC1zdG9yZScsICdHZXRNYXJrZXRTdG9yZUl0ZW0nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tVG9waWNzLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVRvcGljU2NoZW1hPik6IFByb21pc2U8VFRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ0NyZWF0ZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVRvcGljU2NoZW1hPik6IFByb21pc2U8VFRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ1VwZGF0ZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRvcGljU2NoZW1hPik6IFByb21pc2U8VFRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ0RlbGV0ZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RUb3BpY3MocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRvcGljc1NjaGVtYT4pOiBQcm9taXNlPFRUb3BpY1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ0xpc3RUb3BpY3MnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5oYW5jZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuaGFuY2VUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRFbmhhbmNlVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnRW5oYW5jZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVJbnB1dChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVJbnB1dFNjaGVtYT4pOiBQcm9taXNlPFRJbnB1dD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdpbnB1dC1vdXRwdXQnLCAnQ3JlYXRlSW5wdXQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlSW5wdXQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlSW5wdXRTY2hlbWE+KTogUHJvbWlzZTxUSW5wdXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnaW5wdXQtb3V0cHV0JywgJ1VwZGF0ZUlucHV0JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUlucHV0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUlucHV0U2NoZW1hPik6IFByb21pc2U8VElucHV0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2lucHV0LW91dHB1dCcsICdEZWxldGVJbnB1dCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0SW5wdXRzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RJbnB1dFNjaGVtYT4pOiBQcm9taXNlPFRJbnB1dFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2lucHV0LW91dHB1dCcsICdMaXN0SW5wdXRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVRlYW0ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlVGVhbVNjaGVtYT4pOiBQcm9taXNlPFRUZWFtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RlYW0nLCAnQ3JlYXRlVGVhbScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0VGVhbXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRlYW1zU2NoZW1hPik6IFByb21pc2U8VFRlYW1bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0ZWFtJywgJ0xpc3RUZWFtcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVUZWFtKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVRlYW1TY2hlbWE+KTogUHJvbWlzZTxUVGVhbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0ZWFtJywgJ1VwZGF0ZVRlYW0nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlVGVhbShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVUZWFtU2NoZW1hPik6IFByb21pc2U8VFRlYW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndGVhbScsICdEZWxldGVUZWFtJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVDaGF0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNhdmVDaGF0U2NoZW1hPik6IFByb21pc2U8VENoYXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdTYXZlQ2hhdCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDaGF0QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDaGF0QnlJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnRGVsZXRlQ2hhdEJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q2hhdEJ5SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q2hhdEJ5SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldENoYXRCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldENoYXRzQnlVc2VySWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q2hhdHNCeVVzZXJJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRDaGF0c0J5VXNlcklkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVNZXNzYWdlcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTYXZlTWVzc2FnZXNTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnU2F2ZU1lc3NhZ2VzJywgcGF5bG9hZCk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TWVzc2FnZXNCeUNoYXRJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRNZXNzYWdlc0J5Q2hhdElkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldE1lc3NhZ2VzQnlDaGF0SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNZXNzYWdlQnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRNZXNzYWdlQnlJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRNZXNzYWdlQnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBWb3RlTWVzc2FnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBWb3RlTWVzc2FnZVNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdWb3RlTWVzc2FnZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRWb3Rlc0J5Q2hhdElkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFZvdGVzQnlDaGF0SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0Vm90ZXNCeUNoYXRJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXAocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0RlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlU3VnZ2VzdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2F2ZVN1Z2dlc3Rpb25zU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1NhdmVTdWdnZXN0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXAocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0RlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZFNjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDaGF0TGFzdENvbnRleHRCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNoYXRMYXN0Q29udGV4dEJ5SWRTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNZXNzYWdlQ291bnRCeVVzZXJJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRNZXNzYWdlQ291bnRCeVVzZXJJZFNjaGVtYT4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldE1lc3NhZ2VDb3VudEJ5VXNlcklkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVN0cmVhbUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVN0cmVhbUlkU2NoZW1hPik6IFByb21pc2U8VFN0cmVhbUlkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnQ3JlYXRlU3RyZWFtSWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0U3RyZWFtSWRzQnlDaGF0SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0U3RyZWFtSWRzQnlDaGF0SWRTY2hlbWE+KTogUHJvbWlzZTxUU3RyZWFtSWRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldFN0cmVhbUlkc0J5Q2hhdElkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVEb2N1bWVudChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTYXZlRG9jdW1lbnRTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnU2F2ZURvY3VtZW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldERvY3VtZW50QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREb2N1bWVudEJ5SWRTY2hlbWE+KTogUHJvbWlzZTxURG9jdW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXREb2N1bWVudEJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RG9jdW1lbnRzQnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREb2N1bWVudHNCeUlkU2NoZW1hPik6IFByb21pc2U8VERvY3VtZW50W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXREb2N1bWVudHNCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG5cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb21tYW5kKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbW1hbmRTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZD4ge1xuICAgICAgICAvKiAgZGVidWdnZXJcbiAgICAgICAgICBpZiAoIHR5cGVvZiBwYXlsb2FkLmlucHV0cyA9PT0gJ29iamVjdCcgKSB7XG4gICAgICAgICAgICAgIHBheWxvYWQuaW5wdXRzID0gSlNPTi5zdHJpbmdpZnkocGF5bG9hZC5pbnB1dHMpIGFzIGFueTtcbiAgICAgICAgICB9ICovXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NvbW1hbmQnLCAnQ3JlYXRlQ29tbWFuZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29tbWFuZHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbW1hbmRzU2NoZW1hPik6IFByb21pc2U8VENvbW1hbmRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjb21tYW5kJywgJ0xpc3RDb21tYW5kcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb21tYW5kKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbW1hbmRTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjb21tYW5kJywgJ1VwZGF0ZUNvbW1hbmQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29tbWFuZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb21tYW5kU2NoZW1hPik6IFByb21pc2U8VENvbW1hbmQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY29tbWFuZCcsICdEZWxldGVDb21tYW5kJywgcGF5bG9hZCk7XG4gICAgfVxuXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLUNvbGxlY3Rpb25zLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEYXRhTW9kZWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVEYXRhTW9kZWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEYXRhTW9kZWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RGF0YU1vZGVsQnlJZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0RGF0YU1vZGVsQnlJZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldERhdGFNb2RlbEJ5SWRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERhdGFNb2RlbHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REYXRhTW9kZWxzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdERhdGFNb2RlbHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzdG9yZURhdGFNb2RlbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzdG9yZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJlc3RvcmVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgSGFyZERlbGV0ZURhdGFNb2RlbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgSGFyZERlbGV0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkhhcmREZWxldGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29sbGVjdGlvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29sbGVjdGlvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q29sbGVjdGlvbkJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldENvbGxlY3Rpb25CeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR2V0Q29sbGVjdGlvbkJ5SWRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWRDb2xsZWN0aW9uRmlsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBsb2FkQ29sbGVjdGlvbkZpbGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUVXBsb2FkZWRGaWxlPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwiY29sbGVjdGlvblwiLCBcIlVwbG9hZENvbGxlY3Rpb25GaWxlXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/Lml0ZW1JZCB8fCByZXN1bHQ/LmZpbGVJZCB8fCByZXN1bHQ/LmlkIHx8IHBheWxvYWQuaXRlbUlkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJjb2xsZWN0aW9uXCIsIFwiUmVzb2x2ZUNvbGxlY3Rpb25GaWxlVmlld1wiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5maWxlSWQgfHwgcmVzdWx0Py5pdGVtSWQgfHwgcGF5bG9hZC5pdGVtSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFJlY29yZEJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFJlY29yZEJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXRSZWNvcmRCeUlkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8e1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICByZWNvcmRzOiBhbnlbXTtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBSZXN0b3JlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXN0b3JlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmVzdG9yZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcHNlcnRSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwc2VydFJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwc2VydFJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrQ3JlYXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa0NyZWF0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrQ3JlYXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVBaXJ0YWJsZUltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QWlydGFibGVJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QWlydGFibGVJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdEFpcnRhYmxlSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3QWlydGFibGVJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdBaXJ0YWJsZUltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdBaXJ0YWJsZUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5BaXJ0YWJsZUltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuQWlydGFibGVJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5BaXJ0YWJsZUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlTGluZWFySW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0TGluZWFySW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdExpbmVhckltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0TGluZWFySW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3TGluZWFySW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3TGluZWFySW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0xpbmVhckltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5MaW5lYXJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkxpbmVhckltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkxpbmVhckltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVHbWFpbEltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlR2l0aHViSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0R21haWxJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0R21haWxJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdEdtYWlsSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0R2l0aHViSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEdpdGh1YkltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0R2l0aHViSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3R21haWxJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdHbWFpbEltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdHbWFpbEltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3Q3N2SW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3Q3N2SW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0NzdkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3R2l0aHViSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3R2l0aHViSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0dpdGh1YkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5HbWFpbEltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuR21haWxJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5HbWFpbEltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5Dc3ZJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkNzdkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkNzdkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5HaXRodWJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkdpdGh1YkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkdpdGh1YkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlTm90aW9uSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Tm90aW9uSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdE5vdGlvbkltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Tm90aW9uSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3Tm90aW9uSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3Tm90aW9uSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld05vdGlvbkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5Ob3Rpb25JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bk5vdGlvbkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bk5vdGlvbkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlSmlyYUltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0SmlyYUltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RKaXJhSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RKaXJhSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3SmlyYUltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld0ppcmFJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3SmlyYUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5KaXJhSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5KaXJhSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuSmlyYUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlVHJlbGxvSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ29ubmVjdFRyZWxsb0ltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0VHJlbGxvSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRyZWxsb0ltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0VHJlbGxvSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3VHJlbGxvSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3VHJlbGxvSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld1RyZWxsb0ltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5UcmVsbG9JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1blRyZWxsb0ltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1blRyZWxsb0ltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrVXBkYXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa1VwZGF0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrVXBkYXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrRGVsZXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa0RlbGV0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrRGVsZXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgRHVwbGljYXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEdXBsaWNhdGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEdXBsaWNhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUXVlcnlSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBRdWVyeVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIHJlY29yZHM6IGFueVtdO1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJRdWVyeVJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2VhcmNoUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2VhcmNoUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgcmVjb3JkczogYW55W107XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlNlYXJjaFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ291bnRSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDb3VudFJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDb3VudFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR3JvdXBSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHcm91cFJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdyb3VwUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBBZ2dyZWdhdGVSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBBZ2dyZWdhdGVSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJBZ2dyZWdhdGVSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERpc3RpbmN0RmllbGRWYWx1ZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERpc3RpbmN0RmllbGRWYWx1ZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRpc3RpbmN0RmllbGRWYWx1ZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvblZpZXdzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29sbGVjdGlvblZpZXdzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25WaWV3W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvblZpZXdzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uVmlldz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uVmlldz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb2xsZWN0aW9uQnV0dG9ucyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbGxlY3Rpb25CdXR0b25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25CdXR0b25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RDb2xsZWN0aW9uQnV0dG9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uQnV0dG9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25CdXR0b24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uQnV0dG9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25CdXR0b24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkJ1dHRvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvbkJ1dHRvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEV4ZWN1dGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRXhlY3V0ZUNvbGxlY3Rpb25BaUZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25SZWxhdGlvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uUmVsYXRpb25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25SZWxhdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25SZWxhdGlvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblJlbGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25SZWxhdGlvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25SZWxhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25SZWxhdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uUmVsYXRpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0UmVsYXRpb25DYW5kaWRhdGVzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0UmVsYXRpb25DYW5kaWRhdGVzU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBmaWVsZElkOiBzdHJpbmc7IGl0ZW1zOiBUUmVsYXRpb25SZWNvcmRPcHRpb25bXSB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdFJlbGF0aW9uQ2FuZGlkYXRlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRSZWNvcmRSZWxhdGlvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFJlY29yZFJlbGF0aW9uc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgcmVjb3JkSWQ6IHN0cmluZztcbiAgICAgICAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBUUmVsYXRpb25SZWNvcmRPcHRpb25bXSB8IFRSZWxhdGlvblJlY29yZE9wdGlvbiB8IG51bGw+O1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXRSZWNvcmRSZWxhdGlvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVvcmRlckNvbGxlY3Rpb25GaWVsZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlb3JkZXJDb2xsZWN0aW9uRmllbGRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmVvcmRlckNvbGxlY3Rpb25GaWVsZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q29sbGVjdGlvblNjaGVtYShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q29sbGVjdGlvblNjaGVtYVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldENvbGxlY3Rpb25TY2hlbWFcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVmFsaWRhdGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFZhbGlkYXRlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVmFsaWRhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld1ZhbGlkYXRpb25FcnJvcnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld1ZhbGlkYXRpb25FcnJvcnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ2hlY2tSZWNvcmRQZXJtaXNzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDaGVja1JlY29yZFBlcm1pc3Npb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDaGVja1JlY29yZFBlcm1pc3Npb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFJlY29yZFBlcm1pc3Npb25zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0UmVjb3JkUGVybWlzc2lvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RSZWNvcmRQZXJtaXNzaW9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHcmFudFJlY29yZFBlcm1pc3Npb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdyYW50UmVjb3JkUGVybWlzc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdyYW50UmVjb3JkUGVybWlzc2lvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIFJldm9rZVJlY29yZFBlcm1pc3Npb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJldm9rZVJlY29yZFBlcm1pc3Npb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSZXZva2VSZWNvcmRQZXJtaXNzaW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLy0tLXdpa2ktLS0tLS0tLVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcIndpa2lcIixcbiAgICAgICAgICAgIFwiQ3JlYXRlV2lraVBhZ2VcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiVXBkYXRlV2lraVBhZ2VcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lQYWdlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkRlbGV0ZVdpa2lQYWdlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V2lraVBhZ2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraVBhZ2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJMaXN0V2lraVBhZ2VzXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWRXaWtpRmlsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBsb2FkRWRpdG9yRmlsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRVcGxvYWRlZEZpbGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJVcGxvYWRGaWxlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlV2lraUZpbGVWaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlV2lraUZpbGVWaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJ3aWtpXCIsIFwiUmVzb2x2ZVdpa2lGaWxlVmlld1wiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5maWxlSWQgfHwgcGF5bG9hZC5maWxlSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdpa2lDb21tZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXaWtpQ29tbWVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpQ29tbWVudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkNyZWF0ZVdpa2lDb21tZW50XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXaWtpQ29tbWVudChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV2lraUNvbW1lbnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUNvbW1lbnQ+IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFBheWxvYWQgPSB7XG4gICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgLi4uKHR5cGVvZiBwYXlsb2FkLnJlc29sdmVkID09PSBcImJvb2xlYW5cIlxuICAgICAgICAgICAgICAgID8geyByZXNvbHZlZDogcGF5bG9hZC5yZXNvbHZlZCA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSBhcyBhbnk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJVcGRhdGVXaWtpQ29tbWVudFwiLCBub3JtYWxpemVkUGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lDb21tZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXaWtpQ29tbWVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgZGVsZXRlZEF0OiBzdHJpbmcgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkRlbGV0ZVdpa2lDb21tZW50XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V2lraUNvbW1lbnRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraUNvbW1lbnRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lDb21tZW50UGFnaW5hdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkxpc3RXaWtpQ29tbWVudHNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc3RvcmVXaWtpUGFnZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzdG9yZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiUmVzdG9yZVdpa2lQYWdlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRXaWtpUGFnZUJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lQYWdlQnlJZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldFdpa2lQYWdlQnlJZFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0V2lraVBhZ2VCeVNsdWcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lQYWdlQnlTbHVnU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiR2V0V2lraVBhZ2VCeVNsdWdcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFdpa2lUcmVlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRXaWtpVHJlZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldFdpa2lUcmVlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIFdpa2kgUmV2aXNpb25cbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXaWtpUmV2aXNpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdpa2lSZXZpc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkNyZWF0ZVdpa2lSZXZpc2lvblwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TGF0ZXN0V2lraVJldmlzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRMYXRlc3RXaWtpUmV2aXNpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRMYXRlc3RXaWtpUmV2aXNpb25cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFdpa2lSZXZpc2lvbkJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lSZXZpc2lvbkJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpUmV2aXNpb25CeUlkXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q2hhdEhpc3RvcnkoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDaGF0SGlzdG9yeVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldChcIi9jaGF0L2hpc3RvcnlcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG59XG4iXX0=
|
|
986
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL2VtcGxvaWQvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNckQsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBQ25DLGNBQWM7UUFDcEIsT0FBTyw4QkFBOEIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWE7UUFDM0IsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxRQUFnQjtRQUN6QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHO1lBQ2xCLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRSxPQUFPLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakYsT0FBTyxPQUFPLEtBQUssV0FBVyxD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QVUsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlLENBQ3hCLE9BQThDO1FBRTlDLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB6IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IFNlcnZpY2VDbGllbnQgfSBmcm9tIFwiLi4vLi4vc2VydmljZS1jbGllbnRcIjtcblxuXG5pbXBvcnQgeyBBZ2dyZWdhdGVSZWNvcmRzU2NoZW1hLCBCdWxrQ3JlYXRlUmVjb3Jkc1NjaGVtYSwgQnVsa0RlbGV0ZVJlY29yZHNTY2hlbWEsIEJ1bGtVcGRhdGVSZWNvcmRzU2NoZW1hLCBDaGFuZ2VBZ2VudGZsb3dQcm9qZWN0U2NoZW1hLCBDaGVja1JlY29yZFBlcm1pc3Npb25TY2hlbWEsIENvbm5lY3RUcmVsbG9JbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBDb3VudFJlY29yZHNTY2hlbWEsIENyZWF0ZUFnZW50Rmxvd0ZvbGRlclNjaGVtYSwgQ3JlYXRlQWdlbnRGbG93U2NoZW1hLCBDcmVhdGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hLCBDcmVhdGVBc3Npc3RhbnRDb25zdHJhaW50U2NoZW1hLCBDcmVhdGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hLCBDcmVhdGVBc3Npc3RhbnRJbnN0cnVjdGlvblNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50U2NoZW1hLCBDcmVhdGVBc3Npc3RhbnRTa2lsbFNjaGVtYSwgQ3JlYXRlQ2hhbm5lbFNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uRmllbGRTY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25SZWxhdGlvblNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvblNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvblZpZXdTY2hlbWEsIENyZWF0ZUNvbW1hbmRTY2hlbWEsIENyZWF0ZUNvbXBldGVuY3lTY2hlbWEsIENyZWF0ZUNvbnN0cmFpbnRTY2hlbWEsIENyZWF0ZURhdGFNb2RlbFNjaGVtYSwgQ3JlYXRlRGF0YXNvdXJjZVNjaGVtYSwgQ3JlYXRlRG9tYWluVG9waWNTY2hlbWEsIENyZWF0ZURyaXZlRm9sZGVyU2NoZW1hLCBDcmVhdGVEcml2ZVJvb3RGb2xkZXJTY2hlbWEsIENyZWF0ZURyaXZlUm9vdFNjaGVtYSwgQ3JlYXRlRW1wbG9pZFNjaGVtYSwgQ3JlYXRlRXh0ZW5zaW9uU2NoZW1hLCBDcmVhdGVJbnB1dFNjaGVtYSwgQ3JlYXRlSW5zdHJ1Y3Rpb25TY2hlbWEsIENyZWF0ZUpvYkRlZmluaXRpb25TY2hlbWEsIENyZWF0ZUtub3dsZWRnZVNjaGVtYSwgQ3JlYXRlT2NjdXBhdGlvblNjaGVtYSwgQ3JlYXRlUmVjb3JkU2NoZW1hLCBDcmVhdGVTY29wZVNjaGVtYSwgQ3JlYXRlU2tpbGxTY2hlbWEsIENyZWF0ZVN0cmVhbUlkU2NoZW1hLCBDcmVhdGVUYXNrVGVtcGxhdGVTY2hlbWEsIENyZWF0ZVRlYW1TY2hlbWEsIENyZWF0ZVRvcGljU2NoZW1hLCBDcmVhdGVXaWtpQ29tbWVudFNjaGVtYSwgQ3JlYXRlV2lraVBhZ2VTY2hlbWEsIENyZWF0ZVdpa2lSZXZpc2lvblNjaGVtYSwgQ3JlYXRlV29ya2VyU2NoZW1hLCBDcmVhdGVXb3JrZXJUb3BpY1NjaGVtYSwgRGVsZXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hLCBEZWxldGVBZ2VudEZsb3dTY2hlbWEsIERlbGV0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWEsIERlbGV0ZUFzc2lzdGFudERhdGFzb3VyY2VTY2hlbWEsIERlbGV0ZUFzc2lzdGFudFNjaGVtYSwgRGVsZXRlQXNzaXN0YW50U2tpbGxTY2hlbWEsIERlbGV0ZUNoYW5uZWxTY2hlbWEsIERlbGV0ZUNoYXRCeUlkU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYSwgRGVsZXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uVmlld1NjaGVtYSwgRGVsZXRlQ29tbWFuZFNjaGVtYSwgRGVsZXRlQ29tcGV0ZW5jeVNjaGVtYSwgRGVsZXRlQ29uc3RyYWludFNjaGVtYSwgRGVsZXRlRGF0YU1vZGVsU2NoZW1hLCBEZWxldGVEYXRhc291cmNlU2NoZW1hLCBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXBTY2hlbWEsIERlbGV0ZURvbWFpblRvcGljU2NoZW1hLCBEZWxldGVEcml2ZUl0ZW1TY2hlbWEsIERlbGV0ZURyaXZlUm9vdEl0ZW1TY2hlbWEsIERlbGV0ZURyaXZlUm9vdFNjaGVtYSwgRGVsZXRlRW1wbG9pZFNjaGVtYSwgRGVsZXRlRXh0ZW5zaW9uU2NoZW1hLCBEZWxldGVJbnB1dFNjaGVtYSwgRGVsZXRlSW5zdHJ1Y3Rpb25TY2hlbWEsIERlbGV0ZUpvYkRlZmluaXRpb25TY2hlbWEsIERlbGV0ZUtub3dsZWRnZVNjaGVtYSwgRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wU2NoZW1hLCBEZWxldGVPY2N1cGF0aW9uU2NoZW1hLCBEZWxldGVSZWNvcmRTY2hlbWEsIERlbGV0ZVNjb3BlU2NoZW1hLCBEZWxldGVTa2lsbFNjaGVtYSwgRGVsZXRlVGFza1RlbXBsYXRlU2NoZW1hLCBEZWxldGVUZWFtU2NoZW1hLCBEZWxldGVUb3BpY1NjaGVtYSwgRGVsZXRlV2lraUNvbW1lbnRTY2hlbWEsIERlbGV0ZVdpa2lQYWdlU2NoZW1hLCBEZWxldGVXb3JrZXJTY2hlbWEsIERlbGV0ZVdvcmtlclRvcGljU2NoZW1hLCBEaXN0aW5jdEZpZWxkVmFsdWVzU2NoZW1hLCBEdXBsaWNhdGVBZ2VudEZsb3dTY2hlbWEsIER1cGxpY2F0ZVJlY29yZFNjaGVtYSwgRW5oYW5jZVRvcGljU2NoZW1hLCBFbnN1cmVBaXJ0YWJsZUltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZURyaXZlUHJvdmlkZXJDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVHbWFpbEltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZUdpdGh1YkltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZUppcmFJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGRTY2hlbWEsIEV4ZWN1dGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hLCBHZXRDaGF0QnlJZFNjaGVtYSwgR2V0Q2hhdHNCeVVzZXJJZFNjaGVtYSwgR2V0Q29sbGVjdGlvbkJ5SWRTY2hlbWEsIEdldENvbGxlY3Rpb25TY2hlbWFTY2hlbWEsIEdldERhdGFNb2RlbEJ5SWRTY2hlbWEsIEdldERvY3VtZW50QnlJZFNjaGVtYSwgR2V0RG9jdW1lbnRzQnlJZFNjaGVtYSwgR2V0RHJpdmVEZWxldGVJbXBhY3RTY2hlbWEsIEdldERyaXZlUm9vdERlbGV0ZUltcGFjdFNjaGVtYSwgR2V0TGF0ZXN0V2lraVJldmlzaW9uU2NoZW1hLCBHZXRNYXJrZXRTdG9yZUl0ZW1TY2hlbWEsIEdldE1lc3NhZ2VCeUlkU2NoZW1hLCBHZXRNZXNzYWdlQ291bnRCeVVzZXJJZFNjaGVtYSwgR2V0TWVzc2FnZXNCeUNoYXRJZFNjaGVtYSwgR2V0UmVjb3JkQnlJZFNjaGVtYSwgR2V0UmVjb3JkUmVsYXRpb25zU2NoZW1hLCBHZXRTY29wZUJ5VHlwZVNjaGVtYSwgR2V0U3RyZWFtSWRzQnlDaGF0SWRTY2hlbWEsIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkU2NoZW1hLCBHZXRWb3Rlc0J5Q2hhdElkU2NoZW1hLCBHZXRXaWtpUGFnZUJ5SWRTY2hlbWEsIEdldFdpa2lQYWdlQnlTbHVnU2NoZW1hLCBHZXRXaWtpUmV2aXNpb25CeUlkU2NoZW1hLCBHZXRXaWtpVHJlZVNjaGVtYSwgR3JhbnRSZWNvcmRQZXJtaXNzaW9uU2NoZW1hLCBHcm91cFJlY29yZHNTY2hlbWEsIEhhcmREZWxldGVEYXRhTW9kZWxTY2hlbWEsIExpc3RBZ2VudEZsb3dGb2xkZXJzU2NoZW1hLCBMaXN0QWdlbnRGbG93c1NjaGVtYSwgTGlzdEFpcnRhYmxlSW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdEFzc2lzdGFudENoYW5uZWxzU2NoZW1hLCBMaXN0QXNzaXN0YW50Q29uc3RyYWludHNTY2hlbWEsIExpc3RBc3Npc3RhbnREYXRhc291cmNlc1NjaGVtYSwgTGlzdEFzc2lzdGFudEluc3RydWN0aW9uc1NjaGVtYSwgTGlzdEFzc2lzdGFudFNraWxsc1NjaGVtYSwgTGlzdEFzc2lzdGFudHNTY2hlbWEsIExpc3RDaGFubmVsc1NjaGVtYSwgTGlzdENoYXRIaXN0b3J5U2NoZW1hLCBMaXN0Q29sbGVjdGlvbkF1dG9tYXRpb25SdWxlc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25CdXR0b25zU2NoZW1hLCBMaXN0Q29sbGVjdGlvblJlbGF0aW9uc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25zU2NoZW1hLCBMaXN0Q29sbGVjdGlvblZpZXdzU2NoZW1hLCBMaXN0Q29tbWFuZHNTY2hlbWEsIExpc3RDb21wZXRlbmNpZXNTY2hlbWEsIExpc3RDb25zdHJhaW50c1NjaGVtYSwgTGlzdERhdGFNb2RlbHNTY2hlbWEsIExpc3REYXRhc291cmNlc1NjaGVtYSwgTGlzdERvbWFpblRvcGljc1NjaGVtYSwgTGlzdERyaXZlSXRlbXNTY2hlbWEsIExpc3REcml2ZVByb3ZpZGVyRm9sZGVyc1NjaGVtYSwgTGlzdERyaXZlUm9vdEl0ZW1zU2NoZW1hLCBMaXN0RHJpdmVSb290c1NjaGVtYSwgTGlzdERyaXZlUm9vdFRyZWVTY2hlbWEsIExpc3REcml2ZVRyZWVTY2hlbWEsIExpc3RFbXBsb2lkc1BhZ2luYXRlZFNjaGVtYSwgTGlzdEVtcGxvaWRzU2NoZW1hLCBMaXN0RXh0ZW5zaW9uc1NjaGVtYSwgTGlzdEdtYWlsSW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdEdpdGh1YkltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RJbnB1dFNjaGVtYSwgTGlzdEluc3RydWN0aW9uc1NjaGVtYSwgTGlzdEppcmFJbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYSwgTGlzdEtub3dsZWRnZXNTY2hlbWEsIExpc3RMaW5lYXJJbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0TWFya2V0U3RvcmVJdGVtc1NjaGVtYSwgTGlzdE5vdGlvbkltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RPY2N1cGF0aW9uc1NjaGVtYSwgTGlzdFJlY29yZFBlcm1pc3Npb25zU2NoZW1hLCBMaXN0UmVjb3Jkc1NjaGVtYSwgTGlzdFJlbGF0aW9uQ2FuZGlkYXRlc1NjaGVtYSwgTGlzdFNjb3Blc1NjaGVtYSwgTGlzdFNraWxsc1NjaGVtYSwgTGlzdFRhc2tUZW1wbGF0ZXNTY2hlbWEsIExpc3RUZWFtc1NjaGVtYSwgTGlzdFRvcGljc1NjaGVtYSwgTGlzdFRyZWxsb0ltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RXaWtpQ29tbWVudHNTY2hlbWEsIExpc3RXaWtpUGFnZXNTY2hlbWEsIExpc3RXb3JrZXJzU2NoZW1hLCBMaXN0V29ya2VyVG9waWNzU2NoZW1hLCBNb3ZlRHJpdmVJdGVtU2NoZW1hLCBNb3ZlRHJpdmVSb290SXRlbVNjaGVtYSwgUHJlcGFyZURyaXZlVXBsb2FkU2NoZW1hLCBQcmV2aWV3QWlydGFibGVJbXBvcnRTY2hlbWEsIFByZXZpZXdDc3ZJbXBvcnRTY2hlbWEsIFByZXZpZXdHbWFpbEltcG9ydFNjaGVtYSwgUHJldmlld0dpdGh1YkltcG9ydFNjaGVtYSwgUHJldmlld0ppcmFJbXBvcnRTY2hlbWEsIFByZXZpZXdMaW5lYXJJbXBvcnRTY2hlbWEsIFByZXZpZXdOb3Rpb25JbXBvcnRTY2hlbWEsIFByZXZpZXdUcmVsbG9JbXBvcnRTY2hlbWEsIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzU2NoZW1hLCBQdWJsaXNoRG9tYWluU2NoZW1hLCBQdWJsaXNoRW1wbG9pZFNjaGVtYSwgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmVTY2hlbWEsIFF1ZXJ5UmVjb3Jkc1NjaGVtYSwgUmVhZERyaXZlUm9vdEZpbGVDb250ZW50U2NoZW1hLCBSZW5hbWVEcml2ZUl0ZW1TY2hlbWEsIFJlbmFtZURyaXZlUm9vdEl0ZW1TY2hlbWEsIFJlb3JkZXJDb2xsZWN0aW9uRmllbGRzU2NoZW1hLCBSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3U2NoZW1hLCBSZXNvbHZlRHJpdmVEb3dubG9hZFNjaGVtYSwgUmVzb2x2ZURyaXZlUm9vdERvd25sb2FkU2NoZW1hLCBSZXNvbHZlU2NvcGVGaWxlVmlld1NjaGVtYSwgUmVzb2x2ZVdpa2lGaWxlVmlld1NjaGVtYSwgUmVzdG9yZURhdGFNb2RlbFNjaGVtYSwgUmVzdG9yZVJlY29yZFNjaGVtYSwgUmVzdG9yZVdpa2lQYWdlU2NoZW1hLCBSZXZva2VSZWNvcmRQZXJtaXNzaW9uU2NoZW1hLCBSdW5BaXJ0YWJsZUltcG9ydFNjaGVtYSwgUnVuQ3N2SW1wb3J0U2NoZW1hLCBSdW5HbWFpbEltcG9ydFNjaGVtYSwgUnVuR2l0aHViSW1wb3J0U2NoZW1hLCBSdW5KaXJhSW1wb3J0U2NoZW1hLCBSdW5MaW5lYXJJbXBvcnRTY2hlbWEsIFJ1bk5vdGlvbkltcG9ydFNjaGVtYSwgUnVuVHJlbGxvSW1wb3J0U2NoZW1hLCBTYXZlQ2hhdFNjaGVtYSwgU2F2ZURvY3VtZW50U2NoZW1hLCBTYXZlTWVzc2FnZXNTY2hlbWEsIFNhdmVTdWdnZXN0aW9uc1NjaGVtYSwgU2VhcmNoRHJpdmVJdGVtc1NjaGVtYSwgU2VhcmNoRHJpdmVSb290SXRlbXNTY2hlbWEsIFNlYXJjaFJlY29yZHNTY2hlbWEsIFVwZGF0ZUFnZW50Rmxvd0ZvbGRlclNjaGVtYSwgVXBkYXRlQWdlbnRGbG93U2NoZW1hLCBVcGRhdGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hLCBVcGRhdGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hLCBVcGRhdGVBc3Npc3RhbnRTY2hlbWEsIFVwZGF0ZUFzc2lzdGFudFNraWxsU2NoZW1hLCBVcGRhdGVDaGFubmVsU2NoZW1hLCBVcGRhdGVDaGF0TGFzdENvbnRleHRCeUlkU2NoZW1hLCBVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZFNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlU2NoZW1hLCBVcGRhdGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hLCBVcGRhdGVDb2xsZWN0aW9uRmllbGRTY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25SZWxhdGlvblNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvblZpZXdTY2hlbWEsIFVwZGF0ZUNvbW1hbmRTY2hlbWEsIFVwZGF0ZUNvbXBldGVuY3lTY2hlbWEsIFVwZGF0ZUNvbnN0cmFpbnRTY2hlbWEsIFVwZGF0ZURhdGFNb2RlbFNjaGVtYSwgVXBkYXRlRGF0YXNvdXJjZVNjaGVtYSwgVXBkYXRlRG9tYWluVG9waWNTY2hlbWEsIFVwZGF0ZUVtcGxvaWRTY2hlbWEsIFVwZGF0ZUV4dGVuc2lvblNjaGVtYSwgVXBkYXRlSW5wdXRTY2hlbWEsIFVwZGF0ZUluc3RydWN0aW9uU2NoZW1hLCBVcGRhdGVKb2JEZWZpbml0aW9uU2NoZW1hLCBVcGRhdGVLbm93bGVkZ2VTY2hlbWEsIFVwZGF0ZU9jY3VwYXRpb25TY2hlbWEsIFVwZGF0ZVJlY29yZFNjaGVtYSwgVXBkYXRlU2NvcGVTY2hlbWEsIFVwZGF0ZVNraWxsU2NoZW1hLCBVcGRhdGVUYXNrVGVtcGxhdGVTY2hlbWEsIFVwZGF0ZVRlYW1TY2hlbWEsIFVwZGF0ZVRvcGljU2NoZW1hLCBVcGRhdGVXaWtpQ29tbWVudFNjaGVtYSwgVXBkYXRlV2lraVBhZ2VTY2hlbWEsIFVwZGF0ZVdvcmtlclNjaGVtYSwgVXBkYXRlV29ya2VyVG9waWNTY2hlbWEsIFVwbG9hZENvbGxlY3Rpb25GaWxlU2NoZW1hLCBVcGxvYWREcml2ZVJvb3RGaWxlc1NjaGVtYSwgVXBsb2FkRWRpdG9yRmlsZVNjaGVtYSwgVXBzZXJ0UmVjb3JkU2NoZW1hLCBWYWxpZGF0ZVJlY29yZFNjaGVtYSwgVm90ZU1lc3NhZ2VTY2hlbWEgfSBmcm9tIFwiLi9zY2hlbWFcIjtcbmltcG9ydCB7IFRBZ2VudEZsb3csIFRBZ2VudEZsb3dGb2xkZXIsIFRBc3Npc3RhbnQsIFRBc3Npc3RhbnRDaGFubmVsLCBUQXNzaXN0YW50Q29uc3RyYWludCwgVEFzc2lzdGFudERhdGFzb3VyY2UsIFRBc3Npc3RhbnRJbnN0cnVjdGlvbiwgVEFzc2lzdGFudFNraWxsLCBUQ2hhbm5lbCwgVENoYXQsIFRDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGUsIFRDb2xsZWN0aW9uQnV0dG9uLCBUQ29sbGVjdGlvblJlbGF0aW9uLCBUQ29sbGVjdGlvblZpZXcsIFRDb21tYW5kLCBUQ29tcGV0ZW5jeSwgVENvbnN0cmFpbnQsIFREYXRhc291cmNlLCBURGVsZXRlQWdlbnRGbG93UmVzdWx0LCBURG9jdW1lbnQsIFREb21haW5Ub3BpYywgVERyaXZlRGVsZXRlSW1wYWN0LCBURHJpdmVGaWxlQ29udGVudCwgVERyaXZlSXRlbSwgVERyaXZlUHJvdmlkZXJGb2xkZXIsIFREcml2ZVJvb3QsIFREcml2ZVJvb3RQcm92aWRlciwgVERyaXZlVHJlZU5vZGUsIFRFbXBsb2lkLCBURW5oYW5jZVRvcGljLCBURXh0ZW5zaW9uLCBUSW5wdXQsIFRJbnN0cnVjdGlvbiwgVEpvYkRlZmluaXRpb24sIFRLbm93bGVkZ2UsIFRNYXJrZXRTdG9yZUl0ZW0sIFRPY2N1cGF0aW9uLCBUUGFnaW5hdGVkRW1wbG9pZHNSZXN1bHQsIFRQcmVwYXJlZERyaXZlVXBsb2FkLCBUUHVibGlzaEVtcGxvaWQsIFRQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZSwgVFJlbGF0aW9uUmVjb3JkT3B0aW9uLCBUU2NvcGUsIFRTa2lsbCwgVFN0cmVhbUlkLCBUVGFza1RlbXBsYXRlLCBUVGVhbSwgVFRvcGljLCBUVXBsb2FkZWRGaWxlLCBUV2lraUNvbW1lbnQsIFRXaWtpQ29tbWVudFBhZ2luYXRpb24sIFRXaWtpRmlsZVZpZXdSZXNvbHV0aW9uLCBUV29ya2VyLCBUV29ya2VyVG9waWMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgRW1wbG9pZFNlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlQ2xpZW50IHtcbiAgICBwcm90ZWN0ZWQgZ2V0U2VydmljZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdjb20uYXBwY29uZGEuc2VydmljZS5lbXBsb2lkJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSHR0cFVybCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvXmh0dHBzPzpcXC9cXC8vaS50ZXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZVN0b3JhZ2VQYXRoKHBhdGhMaWtlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gU3RyaW5nKHBhdGhMaWtlIHx8IFwiXCIpLnRyaW0oKTtcbiAgICAgICAgaWYgKCFub3JtYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSHR0cFVybChub3JtYWxpemVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZC5zdGFydHNXaXRoKFwiL1wiKSA/IG5vcm1hbGl6ZWQgOiBgLyR7bm9ybWFsaXplZH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZUVudkVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGVudkNhbmRpZGF0ZXMgPSBbXG4gICAgICAgICAgICB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiA/IHByb2Nlc3M/LmVudj8uQVBQQ09OREFfRU5EUE9JTlQgOiBcIlwiLFxuICAgICAgICAgICAgdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgPyBwcm9jZXNzPy5lbnY/Lk5FWFRfUFVCTElDX0FQUENPTkRBX0VORFBPSU5UIDogXCJcIixcbiAgICAgICAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiID8gcHJvY2Vzcz8uZW52Py5fQVBQX0FQUENPTkRBX0VORFBPSU5UIDogXCJcIixcbiAgICAgICAgXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBlbnZDYW5kaWRhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gU3RyaW5nKGNhbmRpZGF0ZSB8fCBcIlwiKS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSHR0cFVybChub3JtYWxpemVkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChzdG9yYWdlUGF0aCk7XG4gICAgICAgIGlmICghbm9ybWFsaXplZFBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNIdHRwVXJsKG5vcm1hbGl6ZWRQYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5kcG9pbnQgPSBTdHJpbmcodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50IHx8IFwiXCIpLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICAgICAgICBpZiAodGhpcy5pc0h0dHBVcmwoZW5kcG9pbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7ZW5kcG9pbnR9JHtub3JtYWxpemVkUGF0aH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3RvY29sID0gd2luZG93Py5sb2NhdGlvbj8ucHJvdG9jb2wgfHwgXCJcIjtcbiAgICAgICAgICAgIGlmIChwcm90b2NvbCAmJiBwcm90b2NvbCAhPT0gXCJmaWxlOlwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luID0gU3RyaW5nKHdpbmRvdz8ubG9jYXRpb24/Lm9yaWdpbiB8fCBcIlwiKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICAgICAgICAgICAgICAgIGlmIChvcmlnaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEVuZHBvaW50ID0gZW5kcG9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKGVuZHBvaW50LnN0YXJ0c1dpdGgoXCIvXCIpID8gZW5kcG9pbnQgOiBgLyR7ZW5kcG9pbnR9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke29yaWdpbn0ke25vcm1hbGl6ZWRFbmRwb2ludH0ke25vcm1hbGl6ZWRQYXRofWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW52RW5kcG9pbnQgPSB0aGlzLnJlc29sdmVFbnZFbmRwb2ludCgpO1xuICAgICAgICBpZiAoZW52RW5kcG9pbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlbnZFbmRwb2ludH0ke25vcm1hbGl6ZWRQYXRofWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZFBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUVtcGxvaWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlRW1wbG9pZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVFbXBsb2lkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUVtcGxvaWRTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUVtcGxvaWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRW1wbG9pZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VEVtcGxvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVFbXBsb2lkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFB1Ymxpc2hFbXBsb2lkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFB1Ymxpc2hFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VFB1Ymxpc2hFbXBsb2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnUHVibGlzaEVtcGxvaWQnLCBwYXlsb2FkKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIExpc3RFbXBsb2lkcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RW1wbG9pZHNTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdEVtcGxvaWRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RFbXBsb2lkc1BhZ2luYXRlZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RW1wbG9pZHNQYWdpbmF0ZWRTY2hlbWE+KTogUHJvbWlzZTxUUGFnaW5hdGVkRW1wbG9pZHNSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0RW1wbG9pZHNQYWdpbmF0ZWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlSW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0SW5zdHJ1Y3Rpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RJbnN0cnVjdGlvbnNTY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RJbnN0cnVjdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlSW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVJbnN0cnVjdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVJbnN0cnVjdGlvblNjaGVtYT4pOiBQcm9taXNlPFRJbnN0cnVjdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZUluc3RydWN0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbnN0cmFpbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29uc3RyYWludFNjaGVtYT4pOiBQcm9taXNlPFRDb25zdHJhaW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlQ29uc3RyYWludCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29uc3RyYWludHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbnN0cmFpbnRzU2NoZW1hPik6IFByb21pc2U8VENvbnN0cmFpbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RDb25zdHJhaW50cycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb25zdHJhaW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbnN0cmFpbnRTY2hlbWE+KTogUHJvbWlzZTxUQ29uc3RyYWludD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUNvbnN0cmFpbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29uc3RyYWludChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb25zdHJhaW50U2NoZW1hPik6IFByb21pc2U8VENvbnN0cmFpbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVDb25zdHJhaW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RTY29wZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFNjb3Blc1NjaGVtYT4pOiBQcm9taXNlPFRTY29wZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdFNjb3BlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRTY29wZUJ5VHlwZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRTY29wZUJ5VHlwZVNjaGVtYT4pOiBQcm9taXNlPFRTY29wZSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdHZXRTY29wZUJ5VHlwZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVTY29wZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVTY29wZVNjaGVtYT4pOiBQcm9taXNlPFRTY29wZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZVNjb3BlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVNjb3BlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVNjb3BlU2NoZW1hPik6IFByb21pc2U8VFNjb3BlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlU2NvcGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlU2NvcGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlU2NvcGVTY2hlbWE+KTogUHJvbWlzZTxUU2NvcGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVTY29wZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWRTY29wZUZpbGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwbG9hZEVkaXRvckZpbGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUVXBsb2FkZWRGaWxlPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwic2NvcGVcIiwgXCJVcGxvYWRGaWxlXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/LmZpbGVJZCB8fCByZXN1bHQ/LmlkIHx8IHBheWxvYWQuYXR0YWNobWVudElkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlU2NvcGVGaWxlVmlldyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzb2x2ZVNjb3BlRmlsZVZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcInNjb3BlXCIsIFwiUmVzb2x2ZVNjb3BlRmlsZVZpZXdcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoID1cbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgoU3RyaW5nKHJlc3VsdD8ucGF0aCB8fCByZXN1bHQ/LmZpbGVQYXRoIHx8IHJlc3VsdD8udXJsIHx8IFwiXCIpKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSB0aGlzLnJlc29sdmVTdG9yYWdlVmlld1VybChzdG9yYWdlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGZpbGVJZDogU3RyaW5nKHJlc3VsdD8uZmlsZUlkIHx8IHBheWxvYWQuZmlsZUlkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVPY2N1cGF0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZU9jY3VwYXRpb25TY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0NyZWF0ZU9jY3VwYXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlT2NjdXBhdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVPY2N1cGF0aW9uU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdVcGRhdGVPY2N1cGF0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZU9jY3VwYXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlT2NjdXBhdGlvblNjaGVtYT4pOiBQcm9taXNlPFRPY2N1cGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnRGVsZXRlT2NjdXBhdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0T2NjdXBhdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdE9jY3VwYXRpb25zU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0xpc3RPY2N1cGF0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQdWJsaXNoRG9tYWluKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFB1Ymxpc2hEb21haW5TY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ1B1Ymxpc2hEb21haW4nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRG9tYWluVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRG9tYWluVG9waWNTY2hlbWE+KTogUHJvbWlzZTxURG9tYWluVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdDcmVhdGVEb21haW5Ub3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVEb21haW5Ub3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVEb21haW5Ub3BpY1NjaGVtYT4pOiBQcm9taXNlPFREb21haW5Ub3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ1VwZGF0ZURvbWFpblRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURvbWFpblRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURvbWFpblRvcGljU2NoZW1hPik6IFByb21pc2U8VERvbWFpblRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnRGVsZXRlRG9tYWluVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERvbWFpblRvcGljcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RG9tYWluVG9waWNzU2NoZW1hPik6IFByb21pc2U8VERvbWFpblRvcGljW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdMaXN0RG9tYWluVG9waWNzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUpvYkRlZmluaXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pOiBQcm9taXNlPFRKb2JEZWZpbml0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlSm9iRGVmaW5pdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVKb2JEZWZpbml0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUpvYkRlZmluaXRpb25TY2hlbWE+KTogUHJvbWlzZTxUSm9iRGVmaW5pdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUpvYkRlZmluaXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlSm9iRGVmaW5pdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVKb2JEZWZpbml0aW9uU2NoZW1hPik6IFByb21pc2U8VEpvYkRlZmluaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVKb2JEZWZpbml0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RKb2JEZWZpbml0aW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYT4pOiBQcm9taXNlPFRKb2JEZWZpbml0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0Sm9iRGVmaW5pdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29tcGV0ZW5jeShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb21wZXRlbmN5U2NoZW1hPik6IFByb21pc2U8VENvbXBldGVuY3k+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVDb21wZXRlbmN5JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbXBldGVuY3kocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29tcGV0ZW5jeVNjaGVtYT4pOiBQcm9taXNlPFRDb21wZXRlbmN5PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlQ29tcGV0ZW5jeScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb21wZXRlbmN5KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbXBldGVuY3lTY2hlbWE+KTogUHJvbWlzZTxUQ29tcGV0ZW5jeT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZUNvbXBldGVuY3knLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbXBldGVuY2llcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29tcGV0ZW5jaWVzU2NoZW1hPik6IFByb21pc2U8VENvbXBldGVuY3lbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RDb21wZXRlbmNpZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFRhc2tUZW1wbGF0ZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRhc2tUZW1wbGF0ZXNTY2hlbWE+KTogUHJvbWlzZTxUVGFza1RlbXBsYXRlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0VGFza1RlbXBsYXRlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0NyZWF0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VERlbGV0ZUFnZW50Rmxvd1Jlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0RlbGV0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEdXBsaWNhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRHVwbGljYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0R1cGxpY2F0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDaGFuZ2VBZ2VudGZsb3dQcm9qZWN0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENoYW5nZUFnZW50Zmxvd1Byb2plY3RTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnQ2hhbmdlQWdlbnRmbG93UHJvamVjdCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ1VwZGF0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QWdlbnRGbG93cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QWdlbnRGbG93c1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3dbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0xpc3RBZ2VudEZsb3dzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnQ3JlYXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnVXBkYXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnRGVsZXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBZ2VudEZsb3dGb2xkZXJzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBZ2VudEZsb3dGb2xkZXJzU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd0ZvbGRlcltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnTGlzdEFnZW50Rmxvd0ZvbGRlcnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlSXRlbXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REcml2ZUl0ZW1zU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBjdXJyZW50Rm9sZGVyOiBURHJpdmVJdGVtOyBpdGVtczogVERyaXZlSXRlbVtdIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiTGlzdERyaXZlSXRlbXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REcml2ZVRyZWUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REcml2ZVRyZWVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVUcmVlTm9kZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJMaXN0RHJpdmVUcmVlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZWFyY2hEcml2ZUl0ZW1zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTZWFyY2hEcml2ZUl0ZW1zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIlNlYXJjaERyaXZlSXRlbXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURyaXZlRm9sZGVyKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEcml2ZUZvbGRlclNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiQ3JlYXRlRHJpdmVGb2xkZXJcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXBhcmVEcml2ZVVwbG9hZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJlcGFyZURyaXZlVXBsb2FkU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFByZXBhcmVkRHJpdmVVcGxvYWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiUHJlcGFyZURyaXZlVXBsb2FkXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZW5hbWVEcml2ZUl0ZW0oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlbmFtZURyaXZlSXRlbVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiUmVuYW1lRHJpdmVJdGVtXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBNb3ZlRHJpdmVJdGVtKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBNb3ZlRHJpdmVJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJNb3ZlRHJpdmVJdGVtXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXREcml2ZURlbGV0ZUltcGFjdChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0RHJpdmVEZWxldGVJbXBhY3RTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVEZWxldGVJbXBhY3Q+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiR2V0RHJpdmVEZWxldGVJbXBhY3RcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURyaXZlSXRlbShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRHJpdmVJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBpZDogc3RyaW5nOyBkZWxldGVkOiBib29sZWFuOyB0b3RhbEl0ZW1zOiBudW1iZXIgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJEZWxldGVEcml2ZUl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc29sdmVEcml2ZURvd25sb2FkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlRHJpdmVEb3dubG9hZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpRmlsZVZpZXdSZXNvbHV0aW9uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwiZHJpdmVcIiwgXCJSZXNvbHZlRHJpdmVEb3dubG9hZFwiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5pdGVtSWQgfHwgcGF5bG9hZC5pdGVtSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REcml2ZVJvb3RzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RHJpdmVSb290c1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZVJvb3RbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJMaXN0RHJpdmVSb290c1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5zdXJlRHJpdmVQcm92aWRlckNyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZURyaXZlUHJvdmlkZXJDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBjcmVkZW50aWFsSWQ6IHN0cmluZzsgY29ubmVjdGVkOiBib29sZWFuOyBwcm92aWRlcjogVERyaXZlUm9vdFByb3ZpZGVyIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiRW5zdXJlRHJpdmVQcm92aWRlckNyZWRlbnRpYWxcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REcml2ZVByb3ZpZGVyRm9sZGVycyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERyaXZlUHJvdmlkZXJGb2xkZXJzU2NoZW1hPlxuICAgICk6IFByb21pc2U8e1xuICAgICAgICBjcmVkZW50aWFsSWQ6IHN0cmluZztcbiAgICAgICAgY29ubmVjdGVkOiBib29sZWFuO1xuICAgICAgICBjdXJyZW50Rm9sZGVyOiBURHJpdmVQcm92aWRlckZvbGRlcjtcbiAgICAgICAgZm9sZGVyczogVERyaXZlUHJvdmlkZXJGb2xkZXJbXTtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkxpc3REcml2ZVByb3ZpZGVyRm9sZGVyc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRHJpdmVSb290KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEcml2ZVJvb3RTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVSb290PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkNyZWF0ZURyaXZlUm9vdFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRHJpdmVSb290KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEcml2ZVJvb3RTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGlkOiBzdHJpbmc7IGRlbGV0ZWQ6IGJvb2xlYW4gfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJEZWxldGVEcml2ZVJvb3RcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REcml2ZVJvb3RJdGVtcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERyaXZlUm9vdEl0ZW1zU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBjdXJyZW50Rm9sZGVyOiBURHJpdmVJdGVtOyBpdGVtczogVERyaXZlSXRlbVtdIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiTGlzdERyaXZlUm9vdEl0ZW1zXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RHJpdmVSb290VHJlZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERyaXZlUm9vdFRyZWVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVUcmVlTm9kZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJMaXN0RHJpdmVSb290VHJlZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2VhcmNoRHJpdmVSb290SXRlbXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNlYXJjaERyaXZlUm9vdEl0ZW1zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIlNlYXJjaERyaXZlUm9vdEl0ZW1zXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVEcml2ZVJvb3RGb2xkZXIoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURyaXZlUm9vdEZvbGRlclNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiQ3JlYXRlRHJpdmVSb290Rm9sZGVyXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWREcml2ZVJvb3RGaWxlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBsb2FkRHJpdmVSb290RmlsZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiVXBsb2FkRHJpdmVSb290RmlsZXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlbmFtZURyaXZlUm9vdEl0ZW0oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlbmFtZURyaXZlUm9vdEl0ZW1TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIlJlbmFtZURyaXZlUm9vdEl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIE1vdmVEcml2ZVJvb3RJdGVtKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBNb3ZlRHJpdmVSb290SXRlbVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiTW92ZURyaXZlUm9vdEl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldERyaXZlUm9vdERlbGV0ZUltcGFjdChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0RHJpdmVSb290RGVsZXRlSW1wYWN0U2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlRGVsZXRlSW1wYWN0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkdldERyaXZlUm9vdERlbGV0ZUltcGFjdFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRHJpdmVSb290SXRlbShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRHJpdmVSb290SXRlbVNjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgZGVsZXRlZDogYm9vbGVhbjsgdG90YWxJdGVtczogbnVtYmVyIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiRGVsZXRlRHJpdmVSb290SXRlbVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVhZERyaXZlUm9vdEZpbGVDb250ZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZWFkRHJpdmVSb290RmlsZUNvbnRlbnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVGaWxlQ29udGVudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJSZWFkRHJpdmVSb290RmlsZUNvbnRlbnRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc29sdmVEcml2ZVJvb3REb3dubG9hZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzb2x2ZURyaXZlUm9vdERvd25sb2FkU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJkcml2ZVwiLCBcIlJlc29sdmVEcml2ZVJvb3REb3dubG9hZFwiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3QgcmF3VXJsID0gU3RyaW5nKHJlc3VsdD8udXJsIHx8IFwiXCIpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkVXJsID0gcmF3VXJsLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKSA/IHJhd1VybCA6IHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgocmF3VXJsKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSByYXdVcmwuc3RhcnRzV2l0aChcImRhdGE6XCIpXG4gICAgICAgICAgICA/IHJhd1VybFxuICAgICAgICAgICAgOiAodGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwobm9ybWFsaXplZFVybCkgfHwgbm9ybWFsaXplZFVybCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGZpbGVJZDogU3RyaW5nKHJlc3VsdD8uaXRlbUlkIHx8IHBheWxvYWQuaXRlbUlkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogbm9ybWFsaXplZFVybCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBub3JtYWxpemVkVXJsLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBub3JtYWxpemVkVXJsLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVFeHRlbnNpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRXh0ZW5zaW9uU2NoZW1hPik6IFByb21pc2U8VEV4dGVuc2lvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdleHRlbnNpb24nLCAnQ3JlYXRlRXh0ZW5zaW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUV4dGVuc2lvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVFeHRlbnNpb25TY2hlbWE+KTogUHJvbWlzZTxURXh0ZW5zaW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2V4dGVuc2lvbicsICdVcGRhdGVFeHRlbnNpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRXh0ZW5zaW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUV4dGVuc2lvblNjaGVtYT4pOiBQcm9taXNlPFRFeHRlbnNpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZXh0ZW5zaW9uJywgJ0RlbGV0ZUV4dGVuc2lvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RXh0ZW5zaW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RXh0ZW5zaW9uc1NjaGVtYT4pOiBQcm9taXNlPFRFeHRlbnNpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdleHRlbnNpb24nLCAnTGlzdEV4dGVuc2lvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLUFzc2lzdGFudC0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBc3Npc3RhbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQXNzaXN0YW50U2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnVXBkYXRlQXNzaXN0YW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFzc2lzdGFudChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnRTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdEZWxldGVBc3Npc3RhbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudHNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudEluc3RydWN0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnRJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50SW5zdHJ1Y3Rpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnRJbnN0cnVjdGlvbnNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50SW5zdHJ1Y3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudEluc3RydWN0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnRDb25zdHJhaW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudENvbnN0cmFpbnRTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q29uc3RyYWludD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50Q29uc3RyYWludCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50Q29uc3RyYWludHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudENvbnN0cmFpbnRzU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENvbnN0cmFpbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudENvbnN0cmFpbnRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudERhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnREYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFzc2lzdGFudERhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdVcGRhdGVBc3Npc3RhbnREYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFzc2lzdGFudERhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdEZWxldGVBc3Npc3RhbnREYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnREYXRhc291cmNlcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50RGF0YXNvdXJjZXNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50RGF0YXNvdXJjZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50RGF0YXNvdXJjZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50U2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50U2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50U2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudFNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFzc2lzdGFudFNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUFzc2lzdGFudFNraWxsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdVcGRhdGVBc3Npc3RhbnRTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBc3Npc3RhbnRTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnRTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnRGVsZXRlQXNzaXN0YW50U2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudFNraWxscyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50U2tpbGxzU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudFNraWxsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnRTa2lsbHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50Q2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudENoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQXNzaXN0YW50Q2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ1VwZGF0ZUFzc2lzdGFudENoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXNzaXN0YW50Q2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0RlbGV0ZUFzc2lzdGFudENoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudENoYW5uZWxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnRDaGFubmVsc1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRDaGFubmVsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnRDaGFubmVscycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tRGF0YXNvdXJjZXMtLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2RhdGEtc291cmNlJywgJ0NyZWF0ZURhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVEYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZGF0YS1zb3VyY2UnLCAnVXBkYXRlRGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEYXRhc291cmNlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURhdGFzb3VyY2VTY2hlbWE+KTogUHJvbWlzZTxURGF0YXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdkYXRhLW91cmNlJywgJ0RlbGV0ZURhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERhdGFzb3VyY2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REYXRhc291cmNlc1NjaGVtYT4pOiBQcm9taXNlPFREYXRhc291cmNlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZGF0YS1zb3VyY2UnLCAnTGlzdERhdGFzb3VyY2VzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVNraWxscy0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlU2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUU2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnc2tpbGwnLCAnQ3JlYXRlU2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFNraWxscyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0U2tpbGxzU2NoZW1hPik6IFByb21pc2U8VFNraWxsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnc2tpbGwnLCAnTGlzdFNraWxscycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdVcGRhdGVTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdEZWxldGVTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1DaGFubmVscy0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhbm5lbCcsICdDcmVhdGVDaGFubmVsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDaGFubmVscyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q2hhbm5lbHNTY2hlbWE+KTogUHJvbWlzZTxUQ2hhbm5lbFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYW5uZWwnLCAnTGlzdENoYW5uZWxzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNoYW5uZWwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ2hhbm5lbFNjaGVtYT4pOiBQcm9taXNlPFRDaGFubmVsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYW5uZWwnLCAnVXBkYXRlQ2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQ2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGFubmVsJywgJ0RlbGV0ZUNoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tS25vd2xlZGdlLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVLbm93bGVkZ2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlS25vd2xlZGdlU2NoZW1hPik6IFByb21pc2U8VEtub3dsZWRnZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdrbm93bGVkZ2UnLCAnQ3JlYXRlS25vd2xlZGdlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RLbm93bGVkZ2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RLbm93bGVkZ2VzU2NoZW1hPik6IFByb21pc2U8VEtub3dsZWRnZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdMaXN0S25vd2xlZGdlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVLbm93bGVkZ2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlS25vd2xlZGdlU2NoZW1hPik6IFByb21pc2U8VEtub3dsZWRnZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdrbm93bGVkZ2UnLCAnVXBkYXRlS25vd2xlZGdlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUtub3dsZWRnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVLbm93bGVkZ2VTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdEZWxldGVLbm93bGVkZ2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS1XT1JLRVItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV29ya2VyKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdvcmtlclNjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0NyZWF0ZVdvcmtlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXb3JrZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV29ya2VyU2NoZW1hPik6IFByb21pc2U8VFdvcmtlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnVXBkYXRlV29ya2VyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdvcmtlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXb3JrZXJTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdEZWxldGVXb3JrZXInLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmVTY2hlbWE+KTogUHJvbWlzZTxUUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnbWFya2V0LXN0b3JlJywgJ1B1Ymxpc2hXb3JrZXJUb01hcmtldFN0b3JlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RXb3JrZXJzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RXb3JrZXJzU2NoZW1hPik6IFByb21pc2U8VFdvcmtlcltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdMaXN0V29ya2VycycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXb3JrZXJUb3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXb3JrZXJUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXJUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnQ3JlYXRlV29ya2VyVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV29ya2VyVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV29ya2VyVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ1VwZGF0ZVdvcmtlclRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdvcmtlclRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdvcmtlclRvcGljU2NoZW1hPik6IFByb21pc2U8VFdvcmtlclRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdEZWxldGVXb3JrZXJUb3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V29ya2VyVG9waWNzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RXb3JrZXJUb3BpY3NTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyVG9waWNbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnTGlzdFdvcmtlclRvcGljcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0TWFya2V0U3RvcmVJdGVtcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0TWFya2V0U3RvcmVJdGVtc1NjaGVtYT4pOiBQcm9taXNlPFRNYXJrZXRTdG9yZUl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdtYXJrZXQtc3RvcmUnLCAnTGlzdE1hcmtldFN0b3JlSXRlbXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TWFya2V0U3RvcmVJdGVtKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1hcmtldFN0b3JlSXRlbVNjaGVtYT4pOiBQcm9taXNlPFRNYXJrZXRTdG9yZUl0ZW0gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ21hcmtldC1zdG9yZScsICdHZXRNYXJrZXRTdG9yZUl0ZW0nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tVG9waWNzLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVRvcGljU2NoZW1hPik6IFByb21pc2U8VFRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ0NyZWF0ZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVRvcGljU2NoZW1hPik6IFByb21pc2U8VFRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ1VwZGF0ZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRvcGljU2NoZW1hPik6IFByb21pc2U8VFRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ0RlbGV0ZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RUb3BpY3MocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRvcGljc1NjaGVtYT4pOiBQcm9taXNlPFRUb3BpY1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ0xpc3RUb3BpY3MnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5oYW5jZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuaGFuY2VUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRFbmhhbmNlVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnRW5oYW5jZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVJbnB1dChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVJbnB1dFNjaGVtYT4pOiBQcm9taXNlPFRJbnB1dD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdpbnB1dC1vdXRwdXQnLCAnQ3JlYXRlSW5wdXQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlSW5wdXQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlSW5wdXRTY2hlbWE+KTogUHJvbWlzZTxUSW5wdXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnaW5wdXQtb3V0cHV0JywgJ1VwZGF0ZUlucHV0JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUlucHV0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUlucHV0U2NoZW1hPik6IFByb21pc2U8VElucHV0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2lucHV0LW91dHB1dCcsICdEZWxldGVJbnB1dCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0SW5wdXRzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RJbnB1dFNjaGVtYT4pOiBQcm9taXNlPFRJbnB1dFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2lucHV0LW91dHB1dCcsICdMaXN0SW5wdXRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVRlYW0ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlVGVhbVNjaGVtYT4pOiBQcm9taXNlPFRUZWFtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RlYW0nLCAnQ3JlYXRlVGVhbScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0VGVhbXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRlYW1zU2NoZW1hPik6IFByb21pc2U8VFRlYW1bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0ZWFtJywgJ0xpc3RUZWFtcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVUZWFtKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVRlYW1TY2hlbWE+KTogUHJvbWlzZTxUVGVhbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0ZWFtJywgJ1VwZGF0ZVRlYW0nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlVGVhbShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVUZWFtU2NoZW1hPik6IFByb21pc2U8VFRlYW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndGVhbScsICdEZWxldGVUZWFtJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVDaGF0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNhdmVDaGF0U2NoZW1hPik6IFByb21pc2U8VENoYXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdTYXZlQ2hhdCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDaGF0QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDaGF0QnlJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnRGVsZXRlQ2hhdEJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q2hhdEJ5SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q2hhdEJ5SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldENoYXRCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldENoYXRzQnlVc2VySWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q2hhdHNCeVVzZXJJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRDaGF0c0J5VXNlcklkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVNZXNzYWdlcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTYXZlTWVzc2FnZXNTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnU2F2ZU1lc3NhZ2VzJywgcGF5bG9hZCk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TWVzc2FnZXNCeUNoYXRJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRNZXNzYWdlc0J5Q2hhdElkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldE1lc3NhZ2VzQnlDaGF0SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNZXNzYWdlQnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRNZXNzYWdlQnlJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRNZXNzYWdlQnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBWb3RlTWVzc2FnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBWb3RlTWVzc2FnZVNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdWb3RlTWVzc2FnZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRWb3Rlc0J5Q2hhdElkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFZvdGVzQnlDaGF0SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0Vm90ZXNCeUNoYXRJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXAocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0RlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlU3VnZ2VzdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2F2ZVN1Z2dlc3Rpb25zU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1NhdmVTdWdnZXN0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXAocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0RlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZFNjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDaGF0TGFzdENvbnRleHRCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNoYXRMYXN0Q29udGV4dEJ5SWRTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNZXNzYWdlQ291bnRCeVVzZXJJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRNZXNzYWdlQ291bnRCeVVzZXJJZFNjaGVtYT4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldE1lc3NhZ2VDb3VudEJ5VXNlcklkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVN0cmVhbUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVN0cmVhbUlkU2NoZW1hPik6IFByb21pc2U8VFN0cmVhbUlkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnQ3JlYXRlU3RyZWFtSWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0U3RyZWFtSWRzQnlDaGF0SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0U3RyZWFtSWRzQnlDaGF0SWRTY2hlbWE+KTogUHJvbWlzZTxUU3RyZWFtSWRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldFN0cmVhbUlkc0J5Q2hhdElkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVEb2N1bWVudChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTYXZlRG9jdW1lbnRTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnU2F2ZURvY3VtZW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldERvY3VtZW50QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREb2N1bWVudEJ5SWRTY2hlbWE+KTogUHJvbWlzZTxURG9jdW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXREb2N1bWVudEJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RG9jdW1lbnRzQnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREb2N1bWVudHNCeUlkU2NoZW1hPik6IFByb21pc2U8VERvY3VtZW50W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXREb2N1bWVudHNCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG5cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb21tYW5kKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbW1hbmRTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZD4ge1xuICAgICAgICAvKiAgZGVidWdnZXJcbiAgICAgICAgICBpZiAoIHR5cGVvZiBwYXlsb2FkLmlucHV0cyA9PT0gJ29iamVjdCcgKSB7XG4gICAgICAgICAgICAgIHBheWxvYWQuaW5wdXRzID0gSlNPTi5zdHJpbmdpZnkocGF5bG9hZC5pbnB1dHMpIGFzIGFueTtcbiAgICAgICAgICB9ICovXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NvbW1hbmQnLCAnQ3JlYXRlQ29tbWFuZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29tbWFuZHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbW1hbmRzU2NoZW1hPik6IFByb21pc2U8VENvbW1hbmRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjb21tYW5kJywgJ0xpc3RDb21tYW5kcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb21tYW5kKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbW1hbmRTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjb21tYW5kJywgJ1VwZGF0ZUNvbW1hbmQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29tbWFuZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb21tYW5kU2NoZW1hPik6IFByb21pc2U8VENvbW1hbmQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY29tbWFuZCcsICdEZWxldGVDb21tYW5kJywgcGF5bG9hZCk7XG4gICAgfVxuXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLUNvbGxlY3Rpb25zLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEYXRhTW9kZWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVEYXRhTW9kZWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEYXRhTW9kZWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RGF0YU1vZGVsQnlJZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0RGF0YU1vZGVsQnlJZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldERhdGFNb2RlbEJ5SWRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERhdGFNb2RlbHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REYXRhTW9kZWxzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdERhdGFNb2RlbHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzdG9yZURhdGFNb2RlbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzdG9yZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJlc3RvcmVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgSGFyZERlbGV0ZURhdGFNb2RlbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgSGFyZERlbGV0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkhhcmREZWxldGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29sbGVjdGlvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29sbGVjdGlvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q29sbGVjdGlvbkJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldENvbGxlY3Rpb25CeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR2V0Q29sbGVjdGlvbkJ5SWRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWRDb2xsZWN0aW9uRmlsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBsb2FkQ29sbGVjdGlvbkZpbGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUVXBsb2FkZWRGaWxlPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwiY29sbGVjdGlvblwiLCBcIlVwbG9hZENvbGxlY3Rpb25GaWxlXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/Lml0ZW1JZCB8fCByZXN1bHQ/LmZpbGVJZCB8fCByZXN1bHQ/LmlkIHx8IHBheWxvYWQuaXRlbUlkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJjb2xsZWN0aW9uXCIsIFwiUmVzb2x2ZUNvbGxlY3Rpb25GaWxlVmlld1wiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5maWxlSWQgfHwgcmVzdWx0Py5pdGVtSWQgfHwgcGF5bG9hZC5pdGVtSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFJlY29yZEJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFJlY29yZEJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXRSZWNvcmRCeUlkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8e1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICByZWNvcmRzOiBhbnlbXTtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBSZXN0b3JlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXN0b3JlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmVzdG9yZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcHNlcnRSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwc2VydFJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwc2VydFJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrQ3JlYXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa0NyZWF0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrQ3JlYXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVBaXJ0YWJsZUltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QWlydGFibGVJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QWlydGFibGVJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdEFpcnRhYmxlSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3QWlydGFibGVJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdBaXJ0YWJsZUltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdBaXJ0YWJsZUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5BaXJ0YWJsZUltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuQWlydGFibGVJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5BaXJ0YWJsZUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlTGluZWFySW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0TGluZWFySW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdExpbmVhckltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0TGluZWFySW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3TGluZWFySW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3TGluZWFySW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0xpbmVhckltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5MaW5lYXJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkxpbmVhckltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkxpbmVhckltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVHbWFpbEltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlR2l0aHViSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0R21haWxJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0R21haWxJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdEdtYWlsSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0R2l0aHViSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEdpdGh1YkltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0R2l0aHViSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3R21haWxJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdHbWFpbEltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdHbWFpbEltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3Q3N2SW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3Q3N2SW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0NzdkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3R2l0aHViSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3R2l0aHViSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0dpdGh1YkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5HbWFpbEltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuR21haWxJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5HbWFpbEltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5Dc3ZJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkNzdkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkNzdkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5HaXRodWJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkdpdGh1YkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkdpdGh1YkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlTm90aW9uSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Tm90aW9uSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdE5vdGlvbkltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Tm90aW9uSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3Tm90aW9uSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3Tm90aW9uSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld05vdGlvbkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5Ob3Rpb25JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bk5vdGlvbkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bk5vdGlvbkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlSmlyYUltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0SmlyYUltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RKaXJhSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RKaXJhSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3SmlyYUltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld0ppcmFJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3SmlyYUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5KaXJhSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5KaXJhSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuSmlyYUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlVHJlbGxvSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ29ubmVjdFRyZWxsb0ltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0VHJlbGxvSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRyZWxsb0ltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0VHJlbGxvSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3VHJlbGxvSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3VHJlbGxvSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld1RyZWxsb0ltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5UcmVsbG9JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1blRyZWxsb0ltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1blRyZWxsb0ltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrVXBkYXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa1VwZGF0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrVXBkYXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrRGVsZXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa0RlbGV0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrRGVsZXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgRHVwbGljYXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEdXBsaWNhdGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEdXBsaWNhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUXVlcnlSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBRdWVyeVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIHJlY29yZHM6IGFueVtdO1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJRdWVyeVJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2VhcmNoUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2VhcmNoUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgcmVjb3JkczogYW55W107XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlNlYXJjaFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ291bnRSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDb3VudFJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDb3VudFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR3JvdXBSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHcm91cFJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdyb3VwUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBBZ2dyZWdhdGVSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBBZ2dyZWdhdGVSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJBZ2dyZWdhdGVSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERpc3RpbmN0RmllbGRWYWx1ZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERpc3RpbmN0RmllbGRWYWx1ZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRpc3RpbmN0RmllbGRWYWx1ZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvblZpZXdzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29sbGVjdGlvblZpZXdzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25WaWV3W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvblZpZXdzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uVmlldz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uVmlldz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb2xsZWN0aW9uQnV0dG9ucyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbGxlY3Rpb25CdXR0b25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25CdXR0b25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RDb2xsZWN0aW9uQnV0dG9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uQnV0dG9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25CdXR0b24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uQnV0dG9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25CdXR0b24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkJ1dHRvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvbkJ1dHRvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEV4ZWN1dGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRXhlY3V0ZUNvbGxlY3Rpb25BaUZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25SZWxhdGlvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uUmVsYXRpb25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25SZWxhdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25SZWxhdGlvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblJlbGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25SZWxhdGlvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25SZWxhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25SZWxhdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uUmVsYXRpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0UmVsYXRpb25DYW5kaWRhdGVzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0UmVsYXRpb25DYW5kaWRhdGVzU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBmaWVsZElkOiBzdHJpbmc7IGl0ZW1zOiBUUmVsYXRpb25SZWNvcmRPcHRpb25bXSB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdFJlbGF0aW9uQ2FuZGlkYXRlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRSZWNvcmRSZWxhdGlvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFJlY29yZFJlbGF0aW9uc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgcmVjb3JkSWQ6IHN0cmluZztcbiAgICAgICAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBUUmVsYXRpb25SZWNvcmRPcHRpb25bXSB8IFRSZWxhdGlvblJlY29yZE9wdGlvbiB8IG51bGw+O1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXRSZWNvcmRSZWxhdGlvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVvcmRlckNvbGxlY3Rpb25GaWVsZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlb3JkZXJDb2xsZWN0aW9uRmllbGRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmVvcmRlckNvbGxlY3Rpb25GaWVsZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q29sbGVjdGlvblNjaGVtYShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q29sbGVjdGlvblNjaGVtYVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldENvbGxlY3Rpb25TY2hlbWFcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVmFsaWRhdGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFZhbGlkYXRlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVmFsaWRhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld1ZhbGlkYXRpb25FcnJvcnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld1ZhbGlkYXRpb25FcnJvcnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ2hlY2tSZWNvcmRQZXJtaXNzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDaGVja1JlY29yZFBlcm1pc3Npb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDaGVja1JlY29yZFBlcm1pc3Npb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFJlY29yZFBlcm1pc3Npb25zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0UmVjb3JkUGVybWlzc2lvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RSZWNvcmRQZXJtaXNzaW9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHcmFudFJlY29yZFBlcm1pc3Npb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdyYW50UmVjb3JkUGVybWlzc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdyYW50UmVjb3JkUGVybWlzc2lvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIFJldm9rZVJlY29yZFBlcm1pc3Npb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJldm9rZVJlY29yZFBlcm1pc3Npb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSZXZva2VSZWNvcmRQZXJtaXNzaW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLy0tLXdpa2ktLS0tLS0tLVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcIndpa2lcIixcbiAgICAgICAgICAgIFwiQ3JlYXRlV2lraVBhZ2VcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiVXBkYXRlV2lraVBhZ2VcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lQYWdlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkRlbGV0ZVdpa2lQYWdlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V2lraVBhZ2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraVBhZ2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJMaXN0V2lraVBhZ2VzXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWRXaWtpRmlsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBsb2FkRWRpdG9yRmlsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRVcGxvYWRlZEZpbGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJVcGxvYWRGaWxlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlV2lraUZpbGVWaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlV2lraUZpbGVWaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJ3aWtpXCIsIFwiUmVzb2x2ZVdpa2lGaWxlVmlld1wiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5maWxlSWQgfHwgcGF5bG9hZC5maWxlSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdpa2lDb21tZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXaWtpQ29tbWVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpQ29tbWVudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkNyZWF0ZVdpa2lDb21tZW50XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXaWtpQ29tbWVudChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV2lraUNvbW1lbnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUNvbW1lbnQ+IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFBheWxvYWQgPSB7XG4gICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgLi4uKHR5cGVvZiBwYXlsb2FkLnJlc29sdmVkID09PSBcImJvb2xlYW5cIlxuICAgICAgICAgICAgICAgID8geyByZXNvbHZlZDogcGF5bG9hZC5yZXNvbHZlZCA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSBhcyBhbnk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJVcGRhdGVXaWtpQ29tbWVudFwiLCBub3JtYWxpemVkUGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lDb21tZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXaWtpQ29tbWVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgZGVsZXRlZEF0OiBzdHJpbmcgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkRlbGV0ZVdpa2lDb21tZW50XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V2lraUNvbW1lbnRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraUNvbW1lbnRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lDb21tZW50UGFnaW5hdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkxpc3RXaWtpQ29tbWVudHNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc3RvcmVXaWtpUGFnZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzdG9yZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiUmVzdG9yZVdpa2lQYWdlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRXaWtpUGFnZUJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lQYWdlQnlJZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldFdpa2lQYWdlQnlJZFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0V2lraVBhZ2VCeVNsdWcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lQYWdlQnlTbHVnU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiR2V0V2lraVBhZ2VCeVNsdWdcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFdpa2lUcmVlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRXaWtpVHJlZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldFdpa2lUcmVlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIFdpa2kgUmV2aXNpb25cbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXaWtpUmV2aXNpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdpa2lSZXZpc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkNyZWF0ZVdpa2lSZXZpc2lvblwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TGF0ZXN0V2lraVJldmlzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRMYXRlc3RXaWtpUmV2aXNpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRMYXRlc3RXaWtpUmV2aXNpb25cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFdpa2lSZXZpc2lvbkJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lSZXZpc2lvbkJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpUmV2aXNpb25CeUlkXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q2hhdEhpc3RvcnkoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDaGF0SGlzdG9yeVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldChcIi9jaGF0L2hpc3RvcnlcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG59XG4iXX0=
|