experimental-agent 0.1.1 → 0.1.2
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/agent-workflow.d.mts +3 -2
- package/dist/agent-workflow.d.ts +3 -2
- package/dist/agent-workflow.js +29 -29
- package/dist/agent-workflow.mjs +1 -2
- package/dist/{chunk-GJETDXOU.mjs → chunk-2SPAJ777.mjs} +5 -1
- package/dist/chunk-6J462JGP.mjs +1267 -0
- package/dist/{chunk-T2UUL6VC.mjs → chunk-E7TOPGHY.mjs} +3 -3
- package/dist/chunk-ILPVXRI5.mjs +2026 -0
- package/dist/chunk-ORE6LK2L.mjs +344 -0
- package/dist/chunk-W4SSZPDX.mjs +106 -0
- package/dist/{types-DuTc4UQW.d.mts → client-CKLwB-ES.d.mts} +730 -3
- package/dist/{types-DuTc4UQW.d.ts → client-CKLwB-ES.d.ts} +730 -3
- package/dist/{client-66JIQLSA.mjs → client-YUU54ZZH.mjs} +1 -1
- package/dist/{handler-BQY5SOI2.mjs → handler-LDFBSCRA.mjs} +1 -1
- package/dist/index.d.mts +4 -18
- package/dist/index.d.ts +4 -18
- package/dist/index.js +67 -40
- package/dist/index.mjs +21 -16
- package/dist/lifecycle-workflow.d.mts +2 -3
- package/dist/lifecycle-workflow.d.ts +2 -3
- package/dist/lifecycle-workflow.js +19 -15
- package/dist/lifecycle-workflow.mjs +1 -2
- package/dist/local-fs-handlers-SY2RDXZE.mjs +314 -0
- package/dist/next/loader.js +3 -3
- package/dist/next/loader.mjs +1 -1
- package/dist/next.js +3 -5
- package/dist/next.mjs +2 -4
- package/dist/{sandbox-27X2DSE3.mjs → sandbox-GPCA35PJ.mjs} +2 -3
- package/dist/{storage-KQYV42J4.mjs → storage-LL6IA24R.mjs} +2 -2
- package/package.json +2 -2
- package/dist/chunk-2IIWVPZB.mjs +0 -334
- package/dist/chunk-A63YU65A.mjs +0 -20
- package/dist/chunk-RDKDLHXM.mjs +0 -2031
- package/dist/chunk-VGJISV6O.mjs +0 -108
- package/dist/chunk-VS7U6SXN.mjs +0 -1261
- package/dist/client-DjcE0ATp.d.mts +0 -710
- package/dist/client-DwrDzn4_.d.ts +0 -710
- package/dist/local-fs-handlers-Q5W52DKV.mjs +0 -290
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import '
|
|
1
|
+
import { C as SandboxLifecycleInput } from './client-CKLwB-ES.js';
|
|
2
|
+
import 'errore';
|
|
3
3
|
import 'ai';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import 'errore';
|
|
6
5
|
|
|
7
6
|
declare function sandboxLifecycleWorkflow({ input, }: {
|
|
8
7
|
input: SandboxLifecycleInput;
|
|
@@ -117,6 +117,16 @@ function getStorageClient(rpcFn, name) {
|
|
|
117
117
|
return new StorageError({ reason: String(e), cause: e });
|
|
118
118
|
}
|
|
119
119
|
},
|
|
120
|
+
delete: async (id) => {
|
|
121
|
+
try {
|
|
122
|
+
await rpc("session.delete", { id });
|
|
123
|
+
} catch (e) {
|
|
124
|
+
if (e instanceof StorageError) {
|
|
125
|
+
return e;
|
|
126
|
+
}
|
|
127
|
+
return new StorageError({ reason: String(e), cause: e });
|
|
128
|
+
}
|
|
129
|
+
},
|
|
120
130
|
list: async (opts) => {
|
|
121
131
|
try {
|
|
122
132
|
return await rpc("session.list", {
|
|
@@ -613,6 +623,10 @@ var init_rpc = __esm({
|
|
|
613
623
|
}),
|
|
614
624
|
result: ListResultSchema(SessionSchema)
|
|
615
625
|
},
|
|
626
|
+
"session.delete": {
|
|
627
|
+
params: import_zod.z.object({ id: import_zod.z.string() }),
|
|
628
|
+
result: import_zod.z.void()
|
|
629
|
+
},
|
|
616
630
|
"session.tag.set": {
|
|
617
631
|
params: import_zod.z.object({
|
|
618
632
|
sessionId: import_zod.z.string(),
|
|
@@ -803,18 +817,6 @@ __export(lifecycle_workflow_exports, {
|
|
|
803
817
|
module.exports = __toCommonJS(lifecycle_workflow_exports);
|
|
804
818
|
var import_workflow = require("workflow");
|
|
805
819
|
|
|
806
|
-
// src/rpc-registry.ts
|
|
807
|
-
var registry = /* @__PURE__ */ new Map();
|
|
808
|
-
function resolveRpc(name) {
|
|
809
|
-
const fn = registry.get(name);
|
|
810
|
-
if (!fn) {
|
|
811
|
-
throw new Error(
|
|
812
|
-
`No RPC registered for agent "${name}". Ensure withAgent is set up in next.config.ts.`
|
|
813
|
-
);
|
|
814
|
-
}
|
|
815
|
-
return fn;
|
|
816
|
-
}
|
|
817
|
-
|
|
818
820
|
// src/sandbox/bindings/lifecycle-workflow-steps.ts
|
|
819
821
|
var DEFAULT_POLL_INTERVAL_MS = 2 * 60 * 1e3;
|
|
820
822
|
var DEFAULT_IDLE_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
@@ -828,10 +830,12 @@ async function checkAndSnapshotStep(input) {
|
|
|
828
830
|
"use step";
|
|
829
831
|
const { Sandbox: VercelSandboxSDK } = await Promise.resolve().then(() => (init_vercel_sdk(), vercel_sdk_exports));
|
|
830
832
|
const { getStorage: getStorage2 } = await Promise.resolve().then(() => (init_storage(), storage_exports));
|
|
831
|
-
|
|
833
|
+
if (!input.rpc) {
|
|
834
|
+
throw new Error("RPC not found");
|
|
835
|
+
}
|
|
832
836
|
const storage = getStorage2({
|
|
833
837
|
config: input.storageConfig,
|
|
834
|
-
rpc
|
|
838
|
+
rpc: input.rpc
|
|
835
839
|
});
|
|
836
840
|
const record = await storage.sandbox.get(input.id);
|
|
837
841
|
if (record instanceof Error) {
|
|
@@ -915,4 +919,4 @@ async function sandboxLifecycleWorkflow({
|
|
|
915
919
|
0 && (module.exports = {
|
|
916
920
|
sandboxLifecycleWorkflow
|
|
917
921
|
});
|
|
918
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3NhbmRib3gvYmluZGluZ3MvdmVyY2VsLXNkay50cyIsICIuLi9zcmMvZXJyb3JzLnRzIiwgIi4uL3NyYy9zdG9yYWdlL2NsaWVudC50cyIsICIuLi9zcmMvc3RvcmFnZS9ycGMudHMiLCAiLi4vc3JjL3N0b3JhZ2UvaGFuZGxlci50cyIsICIuLi9zcmMvc3RvcmFnZS9pbmRleC50cyIsICIuLi9zcmMvc2FuZGJveC9iaW5kaW5ncy9saWZlY3ljbGUtd29ya2Zsb3cudHMiLCAiLi4vc3JjL3JwYy1yZWdpc3RyeS50cyIsICIuLi9zcmMvc2FuZGJveC9iaW5kaW5ncy9saWZlY3ljbGUtd29ya2Zsb3ctc3RlcHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCB7IFNhbmRib3ggfSBmcm9tIFwiQHZlcmNlbC9zYW5kYm94XCI7XG4iLCAiaW1wb3J0ICogYXMgZXJyb3JlIGZyb20gXCJlcnJvcmVcIjtcblxuZXhwb3J0IGNsYXNzIFNlc3Npb25Ob3RGb3VuZEVycm9yIGV4dGVuZHMgZXJyb3JlLmNyZWF0ZVRhZ2dlZEVycm9yKHtcbiAgbmFtZTogXCJTZXNzaW9uTm90Rm91bmRFcnJvclwiLFxuICBtZXNzYWdlOiBcIlNlc3Npb24gJGlkIG5vdCBmb3VuZFwiLFxufSkge31cblxuZXhwb3J0IGNsYXNzIFNlc3Npb25FcnJvciBleHRlbmRzIGVycm9yZS5jcmVhdGVUYWdnZWRFcnJvcih7XG4gIG5hbWU6IFwiU2Vzc2lvbkVycm9yXCIsXG4gIG1lc3NhZ2U6IFwiU2Vzc2lvbiAkaWQgZmFpbGVkOiAkcmVhc29uXCIsXG59KSB7fVxuXG5leHBvcnQgY2xhc3MgU2FuZGJveE5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBlcnJvcmUuY3JlYXRlVGFnZ2VkRXJyb3Ioe1xuICBuYW1lOiBcIlNhbmRib3hOb3RGb3VuZEVycm9yXCIsXG4gIG1lc3NhZ2U6IFwiU2FuZGJveCAkaWQgbm90IGZvdW5kXCIsXG59KSB7fVxuXG5leHBvcnQgY2xhc3MgU3RvcmFnZUVycm9yIGV4dGVuZHMgZXJyb3JlLmNyZWF0ZVRhZ2dlZEVycm9yKHtcbiAgbmFtZTogXCJTdG9yYWdlRXJyb3JcIixcbiAgbWVzc2FnZTogXCIkcmVhc29uXCIsXG59KSB7fVxuXG5leHBvcnQgY2xhc3MgU2FuZGJveEVycm9yIGV4dGVuZHMgZXJyb3JlLmNyZWF0ZVRhZ2dlZEVycm9yKHtcbiAgbmFtZTogXCJTYW5kYm94RXJyb3JcIixcbiAgbWVzc2FnZTogXCIkcmVhc29uXCIsXG59KSB7fVxuXG5leHBvcnQgY2xhc3MgTWVzc2FnZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBlcnJvcmUuY3JlYXRlVGFnZ2VkRXJyb3Ioe1xuICBuYW1lOiBcIk1lc3NhZ2VOb3RGb3VuZEVycm9yXCIsXG4gIG1lc3NhZ2U6IFwiTWVzc2FnZSAkaWQgbm90IGZvdW5kXCIsXG59KSB7fVxuIiwgImltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7XG4gIE1lc3NhZ2VOb3RGb3VuZEVycm9yLFxuICBTYW5kYm94Tm90Rm91bmRFcnJvcixcbiAgU2Vzc2lvbk5vdEZvdW5kRXJyb3IsXG4gIFN0b3JhZ2VFcnJvcixcbn0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuaW1wb3J0IHR5cGUgeyBTdG9yYWdlTWV0aG9kcyB9IGZyb20gXCIuL3JwY1wiO1xuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kLFxuICBMaXN0UmVzdWx0LFxuICBQYXJ0LFxuICBTZXR1cFNuYXBzaG90LFxuICBTdG9yYWdlLFxuICBTdG9yYWdlQ29uZmlnLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG50eXBlIFJwY1Jlc3BvbnNlPFQ+ID1cbiAgfCB7IHJlc3VsdDogVCB9XG4gIHwgeyBlcnJvcjogeyBjb2RlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9IH07XG5cbmV4cG9ydCB0eXBlIFJwY0ZuID0gKHBhcmFtczoge1xuICBuYW1lPzogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgcGFyYW1zOiB1bmtub3duO1xufSkgPT4gUHJvbWlzZTxScGNSZXNwb25zZTx1bmtub3duPj47XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yYWdlQ2xpZW50KHJwY0ZuOiBScGNGbiwgbmFtZT86IHN0cmluZyk6IFN0b3JhZ2Uge1xuICBhc3luYyBmdW5jdGlvbiBycGM8TSBleHRlbmRzIGtleW9mIFN0b3JhZ2VNZXRob2RzPihcbiAgICBtZXRob2Q6IE0sXG4gICAgcGFyYW1zOiB6LmluZmVyPFN0b3JhZ2VNZXRob2RzW01dW1wicGFyYW1zXCJdPlxuICApOiBQcm9taXNlPHouaW5mZXI8U3RvcmFnZU1ldGhvZHNbTV1bXCJyZXN1bHRcIl0+PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjRm4oeyBuYW1lLCBtZXRob2QsIHBhcmFtcyB9KTtcblxuICAgIGlmIChcImVycm9yXCIgaW4gcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiByZXN1bHQuZXJyb3IubWVzc2FnZSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnJlc3VsdCBhcyB6LmluZmVyPFN0b3JhZ2VNZXRob2RzW01dW1wicmVzdWx0XCJdPjtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2Vzc2lvbjoge1xuICAgICAgZ2V0OiBhc3luYyAoaWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJzZXNzaW9uLmdldFwiLCB7IGlkIH0pO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2Vzc2lvbk5vdEZvdW5kRXJyb3IoeyBpZCB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZXQ6IGFzeW5jIChzZXNzaW9uKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJwYyhcInNlc3Npb24uc2V0XCIsIHNlc3Npb24pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGxpc3Q6IGFzeW5jIChvcHRzKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJwYyhcInNlc3Npb24ubGlzdFwiLCB7XG4gICAgICAgICAgICB0YWdzOiBvcHRzPy50YWdzLFxuICAgICAgICAgICAgb3JkZXI6IG9wdHM/Lm9yZGVyLFxuICAgICAgICAgICAgY3Vyc29yOiBvcHRzPy5jdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogb3B0cz8ubGltaXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdGFnOiB7XG4gICAgICAgIHNldDogYXN5bmMgKHsgc2Vzc2lvbklkLCB0YWdzIH0pID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJwYyhcInNlc3Npb24udGFnLnNldFwiLCB7IHNlc3Npb25JZCwgdGFncyB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBtZXNzYWdlOiB7XG4gICAgICBsaXN0OiBhc3luYyAoc2Vzc2lvbklkLCBvcHRzKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJwYyhcIm1lc3NhZ2UubGlzdFwiLCB7XG4gICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICBjdXJzb3I6IG9wdHM/LmN1cnNvcixcbiAgICAgICAgICAgIGxpbWl0OiBvcHRzPy5saW1pdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBnZXQ6IGFzeW5jIChpZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwYyhcIm1lc3NhZ2UuZ2V0XCIsIHsgaWQgfSk7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBNZXNzYWdlTm90Rm91bmRFcnJvcih7IGlkIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHNldDogYXN5bmMgKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgcnBjKFwibWVzc2FnZS5zZXRcIiwgbWVzc2FnZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgcGFydDoge1xuICAgICAgbGlzdEJ5TWVzc2FnZTogYXN5bmMgKG1lc3NhZ2VJZCwgb3B0cykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwYyhcInBhcnQubGlzdEJ5TWVzc2FnZVwiLCB7XG4gICAgICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgICAgICBjdXJzb3I6IG9wdHM/LmN1cnNvcixcbiAgICAgICAgICAgIGxpbWl0OiBvcHRzPy5saW1pdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIExpc3RSZXN1bHQ8UGFydD47XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbGlzdEJ5U2Vzc2lvbjogYXN5bmMgKHNlc3Npb25JZCwgb3B0cykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwYyhcInBhcnQubGlzdEJ5U2Vzc2lvblwiLCB7XG4gICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICBjdXJzb3I6IG9wdHM/LmN1cnNvcixcbiAgICAgICAgICAgIGxpbWl0OiBvcHRzPy5saW1pdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIExpc3RSZXN1bHQ8UGFydD47XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2V0OiBhc3luYyAocGFydCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiAoYXdhaXQgcnBjKFwicGFydC5zZXRcIiwgcGFydCkpIGFzIFBhcnQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZGVsZXRlOiBhc3luYyAoaWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBycGMoXCJwYXJ0LmRlbGV0ZVwiLCB7IGlkIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIHNhbmRib3g6IHtcbiAgICAgIGdldDogYXN5bmMgKGtleSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwYyhcInNhbmRib3guZ2V0XCIsIHsga2V5IH0pO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2FuZGJveE5vdEZvdW5kRXJyb3IoeyBpZDoga2V5IH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGdldEJ5U2Vzc2lvbjogYXN5bmMgKHNlc3Npb25JZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwYyhcInNhbmRib3guZ2V0QnlTZXNzaW9uXCIsIHsgc2Vzc2lvbklkIH0pO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2FuZGJveE5vdEZvdW5kRXJyb3IoeyBpZDogc2Vzc2lvbklkIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHNldDogYXN5bmMgKHJlY29yZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHJwYyhcInNhbmRib3guc2V0XCIsIHJlY29yZCk7XG4gICAgICAgICAgcmV0dXJuIHJlY29yZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsaXN0OiBhc3luYyAob3B0cykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJzYW5kYm94Lmxpc3RcIiwge1xuICAgICAgICAgICAgdGFnczogb3B0cz8udGFncyxcbiAgICAgICAgICAgIG9yZGVyOiBvcHRzPy5vcmRlcixcbiAgICAgICAgICAgIGN1cnNvcjogb3B0cz8uY3Vyc29yLFxuICAgICAgICAgICAgbGltaXQ6IG9wdHM/LmxpbWl0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRhZzoge1xuICAgICAgICBzZXQ6IGFzeW5jICh7IHNhbmRib3hJZCwgdGFncyB9KSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJzYW5kYm94LnRhZy5zZXRcIiwgeyBzYW5kYm94SWQsIHRhZ3MgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYWNxdWlyZUxvY2s6IGFzeW5jIChyZWNvcmQsIGxvY2tUaW1lb3V0TXMpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGF3YWl0IHJwYyhcInNhbmRib3guYWNxdWlyZUxvY2tcIiwge1xuICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgbG9ja1RpbWVvdXRNcyxcbiAgICAgICAgICB9KSkgYXMgaW1wb3J0KFwiLi90eXBlc1wiKS5TYW5kYm94UmVjb3JkIHwgbnVsbDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICBzZXR1cDoge1xuICAgICAgZ2V0OiBhc3luYyAoa2V5KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChhd2FpdCBycGMoXCJzZXR1cC5nZXRcIiwgeyBrZXkgfSkpIGFzIFNldHVwU25hcHNob3QgfCBudWxsO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHNldDogYXN5bmMgKHNuYXBzaG90KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgcnBjKFwic2V0dXAuc2V0XCIsIHNuYXBzaG90KTtcbiAgICAgICAgICByZXR1cm4gc25hcHNob3Q7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYWNxdWlyZUxvY2s6IGFzeW5jIChrZXksIGxvY2tJZCwgbG9ja1RpbWVvdXRNcykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiAoYXdhaXQgcnBjKFwic2V0dXAuYWNxdWlyZUxvY2tcIiwge1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgbG9ja0lkLFxuICAgICAgICAgICAgbG9ja1RpbWVvdXRNcyxcbiAgICAgICAgICB9KSkgYXMgU2V0dXBTbmFwc2hvdCB8IG51bGw7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgY29tbWFuZDoge1xuICAgICAgZ2V0OiBhc3luYyAoaWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGF3YWl0IHJwYyhcImNvbW1hbmQuZ2V0XCIsIHsgaWQgfSkpIGFzIENvbW1hbmQgfCBudWxsO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHNldDogYXN5bmMgKGNvbW1hbmQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGF3YWl0IHJwYyhcImNvbW1hbmQuc2V0XCIsIGNvbW1hbmQpKSBhcyBDb21tYW5kO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGxpc3Q6IGFzeW5jIChzZXNzaW9uSWQsIG9wdHMpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJjb21tYW5kLmxpc3RcIiwge1xuICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgaW5jbHVkZUZpbmlzaGVkOiBvcHRzPy5pbmNsdWRlRmluaXNoZWQsXG4gICAgICAgICAgICBjdXJzb3I6IG9wdHM/LmN1cnNvcixcbiAgICAgICAgICAgIGxpbWl0OiBvcHRzPy5saW1pdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIExpc3RSZXN1bHQ8Q29tbWFuZD47XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05BTUVTUEFDRSA9IFwiZGVmYXVsdFwiO1xuZXhwb3J0IGNvbnN0IExPQ0FMX1NUT1JBR0VfVkVSU0lPTiA9IFwidjFcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0b3JhZ2Uob3B0czoge1xuICBjb25maWc6IFN0b3JhZ2VDb25maWc7XG4gIHJwYzogUnBjRm47XG59KTogU3RvcmFnZSB7XG4gIGNvbnN0IG5hbWUgPSBvcHRzLmNvbmZpZy5uYW1lID8/IERFRkFVTFRfTkFNRVNQQUNFO1xuICByZXR1cm4gZ2V0U3RvcmFnZUNsaWVudChvcHRzLnJwYywgbmFtZSk7XG59XG4iLCAiaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuY29uc3QgVmVyY2VsTGlmZWN5Y2xlQ29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICBwb2xsSW50ZXJ2YWxNczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzdG9wQWZ0ZXJJbmFjdGl2ZU1zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHNuYXBzaG90QmVmb3JlVGltZW91dE1zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHNuYXBzaG90SWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYXV0b1N0YXJ0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSk7XG5cbmNvbnN0IE5ldHdvcmtQb2xpY3lTY2hlbWEgPSB6XG4gIC51bmlvbihbXG4gICAgei5saXRlcmFsKFwiYWxsb3ctYWxsXCIpLFxuICAgIHoubGl0ZXJhbChcImRlbnktYWxsXCIpLFxuICAgIHoub2JqZWN0KHtcbiAgICAgIGFsbG93OiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gICAgICBzdWJuZXRzOiB6XG4gICAgICAgIC5vYmplY3Qoe1xuICAgICAgICAgIGFsbG93OiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gICAgICAgICAgZGVueTogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICB9KSxcbiAgXSlcbiAgLm9wdGlvbmFsKCk7XG5cbmV4cG9ydCB0eXBlIE5ldHdvcmtQb2xpY3kgPSB6LmluZmVyPHR5cGVvZiBOZXR3b3JrUG9saWN5U2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IFNhbmRib3hDb25maWdTY2hlbWEgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwidmVyY2VsXCIpLFxuICAgIHJlc291cmNlczogei5vYmplY3QoeyB2Y3B1czogei5udW1iZXIoKSB9KS5vcHRpb25hbCgpLFxuICAgIHBvcnRzOiB6LmFycmF5KHoubnVtYmVyKCkpLm9wdGlvbmFsKCksXG4gICAgbGlmZWN5Y2xlOiBWZXJjZWxMaWZlY3ljbGVDb25maWdTY2hlbWEub3B0aW9uYWwoKSxcbiAgICBuZXR3b3JrUG9saWN5OiBOZXR3b3JrUG9saWN5U2NoZW1hLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcImxvY2FsXCIpLFxuICAgIHBhdGg6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJjdXN0b21cIiksXG4gICAgdXJsOiB6LnN0cmluZygpLFxuICAgIGhlYWRlcnM6IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIH0pLFxuXSk7XG5cbmV4cG9ydCB0eXBlIFNhbmRib3hDb25maWcgPSB6LmluZmVyPHR5cGVvZiBTYW5kYm94Q29uZmlnU2NoZW1hPjtcblxuY29uc3QgR2VuZXJhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbWF4U3RlcHM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdGVtcGVyYXR1cmU6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG9wSzogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0b3BQOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGZyZXF1ZW5jeVBlbmFsdHk6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgcHJlc2VuY2VQZW5hbHR5OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIG1heE91dHB1dFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBoZWFkZXJzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKS5vcHRpb25hbCgpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBTZXNzaW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZDogei5zdHJpbmcoKSxcbiAgY3JlYXRlZEF0OiB6Lm51bWJlcigpLFxuICB1cGRhdGVkQXQ6IHoubnVtYmVyKCksXG4gIHJ1bklkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGxhc3RNZXNzYWdlSWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm51bGxhYmxlKCksXG4gIHN5c3RlbTogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBtb2RlbDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBzYW5kYm94SWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgc2tpbGxzRGlyOiB6LmFycmF5KHouc3RyaW5nKCkpLm51bGxhYmxlKCksXG4gIGhvb2tUb2tlbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBhY3RpdmVUb29sczogei5hcnJheSh6LnN0cmluZygpKS5udWxsYWJsZSgpLFxuICBnZW5lcmF0aW9uOiBHZW5lcmF0aW9uU2NoZW1hLm51bGxhYmxlKCkuZGVmYXVsdChudWxsKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgU3RlcFVzYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBzdGVwSW5kZXg6IHoubnVtYmVyKCksXG4gIG1vZGVsOiB6LnN0cmluZygpLFxuICBpbnB1dFRva2Vuczogei5udW1iZXIoKSxcbiAgb3V0cHV0VG9rZW5zOiB6Lm51bWJlcigpLFxuICB0b3RhbFRva2Vuczogei5udW1iZXIoKSxcbiAgY2FjaGVSZWFkVG9rZW5zOiB6Lm51bWJlcigpLFxuICBjYWNoZVdyaXRlVG9rZW5zOiB6Lm51bWJlcigpLFxuICByZWFzb25pbmdUb2tlbnM6IHoubnVtYmVyKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IFVzYWdlU3VtbWFyeVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgbW9kZWw6IHouc3RyaW5nKCksXG4gIGlucHV0VG9rZW5zOiB6Lm51bWJlcigpLFxuICBvdXRwdXRUb2tlbnM6IHoubnVtYmVyKCksXG4gIHRvdGFsVG9rZW5zOiB6Lm51bWJlcigpLFxuICBjYWNoZVJlYWRUb2tlbnM6IHoubnVtYmVyKCksXG4gIGNhY2hlV3JpdGVUb2tlbnM6IHoubnVtYmVyKCksXG4gIHJlYXNvbmluZ1Rva2Vuczogei5udW1iZXIoKSxcbiAgc3RlcENvdW50OiB6Lm51bWJlcigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlVXNhZ2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHN0ZXBzOiB6LmFycmF5KFN0ZXBVc2FnZVNjaGVtYSksXG4gIHN1bW1hcnk6IFVzYWdlU3VtbWFyeVNjaGVtYSxcbn0pO1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlVXNhZ2UgPSB6LmluZmVyPHR5cGVvZiBNZXNzYWdlVXNhZ2VTY2hlbWE+O1xuZXhwb3J0IHR5cGUgVXNhZ2VTdW1tYXJ5ID0gei5pbmZlcjx0eXBlb2YgVXNhZ2VTdW1tYXJ5U2NoZW1hPjtcbmV4cG9ydCB0eXBlIFN0ZXBVc2FnZSA9IHouaW5mZXI8dHlwZW9mIFN0ZXBVc2FnZVNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZDogei5zdHJpbmcoKSxcbiAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICByb2xlOiB6LmVudW0oW1widXNlclwiLCBcImFzc2lzdGFudFwiLCBcInN5c3RlbVwiXSksXG4gIGNyZWF0ZWRBdDogei5udW1iZXIoKSxcbiAgc3RhcnRlZEF0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gIGNvbXBsZXRlZEF0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gIGludGVycnVwdGVkQXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgdXNhZ2U6IE1lc3NhZ2VVc2FnZVNjaGVtYS5udWxsYWJsZSgpLFxufSk7XG5cbi8qKlxuICogVGhlIGBwYXJ0YCBmaWVsZCBjb3JyZXNwb25kcyB0byBgVUlNZXNzYWdlW1wicGFydHNcIl1bbnVtYmVyXWAgZnJvbSB0aGUgYGFpYCBwYWNrYWdlLlxuICogV2UgdXNlIGB6LnVua25vd24oKWAgYmVjYXVzZSB0aGUgZXhhY3Qgc2hhcGUgdmFyaWVzIGJ5IHBhcnQgdHlwZSAodGV4dCwgdG9vbC1jYWxsLFxuICogdG9vbC1yZXN1bHQsIGV0Yy4pIGFuZCBtYXkgZXZvbHZlIHdpdGggdGhlIEFJIFNESy4gVGhlIFJQQyBsYXllciBqdXN0IHBhc3NlcyBpdCB0aHJvdWdoLlxuICovXG5leHBvcnQgY29uc3QgUGFydFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouc3RyaW5nKCksXG4gIG1lc3NhZ2VJZDogei5zdHJpbmcoKSxcbiAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICBpbmRleDogei5udW1iZXIoKSxcbiAgcGFydDogei51bmtub3duKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IENvbW1hbmRSZXN1bHRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHN0ZG91dDogei5zdHJpbmcoKSxcbiAgc3RkZXJyOiB6LnN0cmluZygpLFxuICBleGl0Q29kZTogei5udW1iZXIoKSxcbiAgY29tcGxldGVkQXQ6IHoubnVtYmVyKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IFNhbmRib3hSZWNvcmRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LnN0cmluZygpLFxuICBjb25maWc6IFNhbmRib3hDb25maWdTY2hlbWEsXG4gIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5udWxsYWJsZSgpLFxuICBjcmVhdGVkQXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgbGFzdEFjdGl2aXR5QXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgYWNxdWlyaW5nTG9ja0lkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGFjcXVpcmluZ0xvY2tBdDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICBwcm92aWRlck1ldGFkYXRhOiB6XG4gICAgLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByb3ZpZGVyXCIsIFtcbiAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgcHJvdmlkZXI6IHoubGl0ZXJhbChcInZlcmNlbFwiKSxcbiAgICAgICAgc2FuZGJveElkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgICAgIHNuYXBzaG90SWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgIH0pLFxuICAgIF0pXG4gICAgLm9wdGlvbmFsKCksXG59KTtcblxuY29uc3QgQ29tbWFuZEJhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LnN0cmluZygpLFxuICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gIGNvbW1hbmQ6IHouc3RyaW5nKCksXG4gIGFyZ3M6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgc3RhcnRlZEF0OiB6Lm51bWJlcigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBDb21tYW5kU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJzdGF0dXNcIiwgW1xuICBDb21tYW5kQmFzZVNjaGVtYS5leHRlbmQoeyBzdGF0dXM6IHoubGl0ZXJhbChcInJ1bm5pbmdcIikgfSksXG4gIENvbW1hbmRCYXNlU2NoZW1hLmV4dGVuZCh7XG4gICAgc3RhdHVzOiB6LmxpdGVyYWwoXCJjb21wbGV0ZWRcIiksXG4gICAgcmVzdWx0OiBDb21tYW5kUmVzdWx0U2NoZW1hLFxuICB9KSxcbiAgQ29tbWFuZEJhc2VTY2hlbWEuZXh0ZW5kKHtcbiAgICBzdGF0dXM6IHoubGl0ZXJhbChcImtpbGxlZFwiKSxcbiAgICByZXN1bHQ6IENvbW1hbmRSZXN1bHRTY2hlbWEub3B0aW9uYWwoKSxcbiAgfSksXG4gIENvbW1hbmRCYXNlU2NoZW1hLmV4dGVuZCh7XG4gICAgc3RhdHVzOiB6LmxpdGVyYWwoXCJmYWlsZWRcIiksXG4gICAgcmVzdWx0OiBDb21tYW5kUmVzdWx0U2NoZW1hLFxuICB9KSxcbl0pO1xuXG5mdW5jdGlvbiBMaXN0UmVzdWx0U2NoZW1hPFQgZXh0ZW5kcyB6LlpvZFR5cGVBbnk+KGl0ZW1TY2hlbWE6IFQpIHtcbiAgcmV0dXJuIHoub2JqZWN0KHtcbiAgICBpdGVtczogei5hcnJheShpdGVtU2NoZW1hKSxcbiAgICBuZXh0Q3Vyc29yOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgU2V0dXBTbmFwc2hvdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAga2V5OiB6LnN0cmluZygpLFxuICBzbmFwc2hvdElkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNyZWF0ZWRBdDogei5udW1iZXIoKSxcbiAgbGFzdFVzZWRBdDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICBhY3F1aXJpbmdMb2NrSWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgYWNxdWlyaW5nTG9ja0F0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG59KTtcblxuY29uc3QgbWV0aG9kcyA9IHtcbiAgXCJzZXNzaW9uLmdldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGlkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogU2Vzc2lvblNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcInNlc3Npb24uc2V0XCI6IHtcbiAgICBwYXJhbXM6IFNlc3Npb25TY2hlbWEsXG4gICAgcmVzdWx0OiBTZXNzaW9uU2NoZW1hLFxuICB9LFxuICBcInNlc3Npb24ubGlzdFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICB0YWdzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbiAgICAgIG9yZGVyOiB6XG4gICAgICAgIC5lbnVtKFtcbiAgICAgICAgICBcImNyZWF0ZWRBdF9hc2NcIixcbiAgICAgICAgICBcImNyZWF0ZWRBdF9kZXNjXCIsXG4gICAgICAgICAgXCJ1cGRhdGVkQXRfYXNjXCIsXG4gICAgICAgICAgXCJ1cGRhdGVkQXRfZGVzY1wiLFxuICAgICAgICBdKVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIGN1cnNvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IExpc3RSZXN1bHRTY2hlbWEoU2Vzc2lvblNjaGVtYSksXG4gIH0sXG4gIFwic2Vzc2lvbi5saXN0QnlTYW5kYm94XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHNhbmRib3hJZDogei5zdHJpbmcoKSxcbiAgICAgIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICAgICAgb3JkZXI6IHpcbiAgICAgICAgLmVudW0oW1xuICAgICAgICAgIFwiY3JlYXRlZEF0X2FzY1wiLFxuICAgICAgICAgIFwiY3JlYXRlZEF0X2Rlc2NcIixcbiAgICAgICAgICBcInVwZGF0ZWRBdF9hc2NcIixcbiAgICAgICAgICBcInVwZGF0ZWRBdF9kZXNjXCIsXG4gICAgICAgIF0pXG4gICAgICAgIC5vcHRpb25hbCgpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShTZXNzaW9uU2NoZW1hKSxcbiAgfSxcbiAgXCJzZXNzaW9uLnRhZy5zZXRcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICAgICAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogU2Vzc2lvblNjaGVtYSxcbiAgfSxcbiAgXCJtZXNzYWdlLmdldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGlkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogTWVzc2FnZVNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcIm1lc3NhZ2Uuc2V0XCI6IHtcbiAgICBwYXJhbXM6IE1lc3NhZ2VTY2hlbWEsXG4gICAgcmVzdWx0OiBNZXNzYWdlU2NoZW1hLFxuICB9LFxuICBcIm1lc3NhZ2UubGlzdFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKE1lc3NhZ2VTY2hlbWEpLFxuICB9LFxuICBcInBhcnQubGlzdEJ5TWVzc2FnZVwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBtZXNzYWdlSWQ6IHouc3RyaW5nKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKFBhcnRTY2hlbWEpLFxuICB9LFxuICBcInBhcnQubGlzdEJ5U2Vzc2lvblwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKFBhcnRTY2hlbWEpLFxuICB9LFxuICBcInBhcnQuc2V0XCI6IHtcbiAgICBwYXJhbXM6IFBhcnRTY2hlbWEsXG4gICAgcmVzdWx0OiBQYXJ0U2NoZW1hLFxuICB9LFxuICBcInBhcnQuZGVsZXRlXCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsgaWQ6IHouc3RyaW5nKCkgfSksXG4gICAgcmVzdWx0OiB6LnZvaWQoKSxcbiAgfSxcbiAgXCJzYW5kYm94LmdldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGtleTogei5zdHJpbmcoKSB9KSxcbiAgICByZXN1bHQ6IFNhbmRib3hSZWNvcmRTY2hlbWEubnVsbGFibGUoKSxcbiAgfSxcbiAgXCJzYW5kYm94LmdldEJ5U2Vzc2lvblwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IHNlc3Npb25JZDogei5zdHJpbmcoKSB9KSxcbiAgICByZXN1bHQ6IFNhbmRib3hSZWNvcmRTY2hlbWEubnVsbGFibGUoKSxcbiAgfSxcbiAgXCJzYW5kYm94LnNldFwiOiB7XG4gICAgcGFyYW1zOiBTYW5kYm94UmVjb3JkU2NoZW1hLFxuICAgIHJlc3VsdDogei52b2lkKCksXG4gIH0sXG4gIFwic2FuZGJveC5saXN0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICAgICAgb3JkZXI6IHpcbiAgICAgICAgLmVudW0oW1xuICAgICAgICAgIFwiY3JlYXRlZEF0X2FzY1wiLFxuICAgICAgICAgIFwiY3JlYXRlZEF0X2Rlc2NcIixcbiAgICAgICAgICBcImxhc3RBY3Rpdml0eUF0X2FzY1wiLFxuICAgICAgICAgIFwibGFzdEFjdGl2aXR5QXRfZGVzY1wiLFxuICAgICAgICBdKVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIGN1cnNvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IExpc3RSZXN1bHRTY2hlbWEoU2FuZGJveFJlY29yZFNjaGVtYSksXG4gIH0sXG4gIFwic2FuZGJveC50YWcuc2V0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHNhbmRib3hJZDogei5zdHJpbmcoKSxcbiAgICAgIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IFNhbmRib3hSZWNvcmRTY2hlbWEsXG4gIH0sXG4gIFwiY29tbWFuZC5nZXRcIjoge1xuICAgIHBhcmFtczogei5vYmplY3QoeyBpZDogei5zdHJpbmcoKSB9KSxcbiAgICByZXN1bHQ6IENvbW1hbmRTY2hlbWEubnVsbGFibGUoKSxcbiAgfSxcbiAgXCJjb21tYW5kLnNldFwiOiB7XG4gICAgcGFyYW1zOiBDb21tYW5kU2NoZW1hLFxuICAgIHJlc3VsdDogQ29tbWFuZFNjaGVtYSxcbiAgfSxcbiAgXCJjb21tYW5kLmxpc3RcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICAgICAgaW5jbHVkZUZpbmlzaGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShDb21tYW5kU2NoZW1hKSxcbiAgfSxcbiAgXCJzZXR1cC5nZXRcIjoge1xuICAgIHBhcmFtczogei5vYmplY3QoeyBrZXk6IHouc3RyaW5nKCkgfSksXG4gICAgcmVzdWx0OiBTZXR1cFNuYXBzaG90U2NoZW1hLm51bGxhYmxlKCksXG4gIH0sXG4gIFwic2V0dXAuc2V0XCI6IHtcbiAgICBwYXJhbXM6IFNldHVwU25hcHNob3RTY2hlbWEsXG4gICAgcmVzdWx0OiB6LnZvaWQoKSxcbiAgfSxcbiAgXCJzZXR1cC5hY3F1aXJlTG9ja1wiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBrZXk6IHouc3RyaW5nKCksXG4gICAgICBsb2NrSWQ6IHouc3RyaW5nKCksXG4gICAgICBsb2NrVGltZW91dE1zOiB6Lm51bWJlcigpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogU2V0dXBTbmFwc2hvdFNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcInNhbmRib3guYWNxdWlyZUxvY2tcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgcmVjb3JkOiBTYW5kYm94UmVjb3JkU2NoZW1hLFxuICAgICAgbG9ja1RpbWVvdXRNczogei5udW1iZXIoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IFNhbmRib3hSZWNvcmRTY2hlbWEubnVsbGFibGUoKSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB7IG1ldGhvZHMgfTtcbmV4cG9ydCB0eXBlIFN0b3JhZ2VNZXRob2RzID0gdHlwZW9mIG1ldGhvZHM7XG5leHBvcnQgdHlwZSBNZXRob2ROYW1lID0ga2V5b2YgU3RvcmFnZU1ldGhvZHM7XG5leHBvcnQgY29uc3QgU1RPUkFHRV9SUENfTUVUSE9EUyA9IE9iamVjdC5rZXlzKG1ldGhvZHMpIGFzIE1ldGhvZE5hbWVbXTtcbiIsICJpbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyB0eXBlIE1ldGhvZE5hbWUsIG1ldGhvZHMsIHR5cGUgU3RvcmFnZU1ldGhvZHMgfSBmcm9tIFwiLi9ycGNcIjtcblxuZXhwb3J0IHR5cGUgSGFuZGxlcnMgPSB7XG4gIFtLIGluIE1ldGhvZE5hbWVdOiAoXG4gICAgcGFyYW1zOiB6LmluZmVyPFN0b3JhZ2VNZXRob2RzW0tdW1wicGFyYW1zXCJdPlxuICApID0+IFByb21pc2U8ei5pbmZlcjxTdG9yYWdlTWV0aG9kc1tLXVtcInJlc3VsdFwiXT4+O1xufTtcblxuZXhwb3J0IHR5cGUgUnBjUmVxdWVzdCA9IHtcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHBhcmFtczogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIFJwY1N1Y2Nlc3NSZXNwb25zZTxUID0gdW5rbm93bj4gPSB7XG4gIHJlc3VsdDogVDtcbn07XG5cbmV4cG9ydCB0eXBlIFJwY0Vycm9yUmVzcG9uc2UgPSB7XG4gIGVycm9yOiB7IGNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH07XG59O1xuXG5leHBvcnQgdHlwZSBScGNSZXNwb25zZTxUID0gdW5rbm93bj4gPSBScGNTdWNjZXNzUmVzcG9uc2U8VD4gfCBScGNFcnJvclJlc3BvbnNlO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlU3RvcmFnZVJwYyhcbiAgYm9keTogUnBjUmVxdWVzdCxcbiAgaGFuZGxlcnM6IEhhbmRsZXJzXG4pOiBQcm9taXNlPFJwY1Jlc3BvbnNlPiB7XG4gIGNvbnN0IHsgbWV0aG9kLCBwYXJhbXMgfSA9IGJvZHk7XG5cbiAgaWYgKCEobWV0aG9kIGluIG1ldGhvZHMpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7IGNvZGU6IFwiTUVUSE9EX05PVF9GT1VORFwiLCBtZXNzYWdlOiBgVW5rbm93biBtZXRob2Q6ICR7bWV0aG9kfWAgfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWV0aG9kTmFtZSA9IG1ldGhvZCBhcyBNZXRob2ROYW1lO1xuICBjb25zdCBzY2hlbWEgPSBtZXRob2RzW21ldGhvZE5hbWVdLnBhcmFtcztcbiAgY29uc3QgcGFyc2VkID0gc2NoZW1hLnNhZmVQYXJzZShwYXJhbXMpO1xuXG4gIGlmICghcGFyc2VkLnN1Y2Nlc3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IHtcbiAgICAgICAgY29kZTogXCJJTlZBTElEX1BBUkFNU1wiLFxuICAgICAgICBtZXNzYWdlOiBwYXJzZWQuZXJyb3IuaXNzdWVzXG4gICAgICAgICAgLm1hcCgoaSkgPT4gYCR7aS5wYXRoLmpvaW4oXCIuXCIpfTogJHtpLm1lc3NhZ2V9YClcbiAgICAgICAgICAuam9pbihcIiwgXCIpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBoYW5kbGVyID0gaGFuZGxlcnNbbWV0aG9kTmFtZV0gYXMgKFxuICAgICAgcGFyYW1zOiB1bmtub3duXG4gICAgKSA9PiBQcm9taXNlPHVua25vd24+O1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIocGFyc2VkLmRhdGEpO1xuICAgIHJldHVybiB7IHJlc3VsdCB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7XG4gICAgICAgIGNvZGU6IFwiSU5URVJOQUxfRVJST1JcIixcbiAgICAgICAgbWVzc2FnZTogZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iLCAiZXhwb3J0IHtcbiAgREVGQVVMVF9OQU1FU1BBQ0UsXG4gIGdldFN0b3JhZ2UsXG4gIExPQ0FMX1NUT1JBR0VfVkVSU0lPTixcbiAgdHlwZSBScGNGbixcbn0gZnJvbSBcIi4vY2xpZW50XCI7XG5leHBvcnQge1xuICB0eXBlIEhhbmRsZXJzLFxuICBoYW5kbGVTdG9yYWdlUnBjLFxuICB0eXBlIFJwY0Vycm9yUmVzcG9uc2UsXG4gIHR5cGUgUnBjUmVxdWVzdCxcbiAgdHlwZSBScGNSZXNwb25zZSxcbiAgdHlwZSBScGNTdWNjZXNzUmVzcG9uc2UsXG59IGZyb20gXCIuL2hhbmRsZXJcIjtcbmV4cG9ydCB7XG4gIHR5cGUgTWVzc2FnZVVzYWdlLFxuICB0eXBlIE1ldGhvZE5hbWUsXG4gIHR5cGUgU2FuZGJveENvbmZpZyxcbiAgU1RPUkFHRV9SUENfTUVUSE9EUyxcbiAgdHlwZSBTdGVwVXNhZ2UsXG4gIHR5cGUgU3RvcmFnZU1ldGhvZHMsXG4gIHR5cGUgVXNhZ2VTdW1tYXJ5LFxufSBmcm9tIFwiLi9ycGNcIjtcbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgTGlzdFJlc3VsdCxcbiAgTWVzc2FnZSxcbiAgUGFydCxcbiAgUmVzb2x2ZWRTdG9yYWdlLFxuICBTYW5kYm94UmVjb3JkLFxuICBTZXNzaW9uLFxuICBTZXR1cFNuYXBzaG90LFxuICBTdG9yYWdlLFxuICBTdG9yYWdlQ29uZmlnLFxuICBUeXBlZFNlc3Npb24sXG4gIFR5cGVkU3RvcmFnZSxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcbiIsICJpbXBvcnQgeyBzbGVlcCB9IGZyb20gXCJ3b3JrZmxvd1wiO1xuaW1wb3J0IHR5cGUgeyBTYW5kYm94TGlmZWN5Y2xlSW5wdXQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGNoZWNrQW5kU25hcHNob3RTdGVwIH0gZnJvbSBcIi4vbGlmZWN5Y2xlLXdvcmtmbG93LXN0ZXBzXCI7XG5cbmV4cG9ydCB0eXBlIHsgU2FuZGJveExpZmVjeWNsZUlucHV0IH07XG5cbmNvbnN0IERFRkFVTFRfUE9MTF9NUyA9IDIgKiA2MCAqIDEwMDA7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYW5kYm94TGlmZWN5Y2xlV29ya2Zsb3coe1xuICBpbnB1dCxcbn06IHtcbiAgaW5wdXQ6IFNhbmRib3hMaWZlY3ljbGVJbnB1dDtcbn0pIHtcbiAgXCJ1c2Ugd29ya2Zsb3dcIjtcblxuICBsZXQgbmV4dFBvbGxNcyA9IERFRkFVTFRfUE9MTF9NUztcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGF3YWl0IHNsZWVwKG5leHRQb2xsTXMpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2hlY2tBbmRTbmFwc2hvdFN0ZXAoaW5wdXQpO1xuXG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yIHx8IHJlc3VsdC5hY3Rpb24gPT09IFwiZXhpdFwiKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBuZXh0UG9sbE1zID0gcmVzdWx0Lm5leHRQb2xsTXM7XG4gIH1cbn1cbiIsICIvKipcbiAqIE1vZHVsZS1sZXZlbCByZWdpc3RyeSBmb3IgYWdlbnQgUlBDIGZ1bmN0aW9ucy5cbiAqXG4gKiBSUEMgZnVuY3Rpb25zIGFyZSBhc3luYyBzdGVwIGZ1bmN0aW9ucyBnZW5lcmF0ZWQgYnkgdGhlIE5leHQuanMgbG9hZGVyXG4gKiAoaW4gc3RlcHMuanMpLiBUaGV5IGNhbm5vdCBiZSBzZXJpYWxpemVkIGJ5IGRldmFsdWUsIHNvIHRoZXkgbXVzdCBub3RcbiAqIGFwcGVhciBpbiB3b3JrZmxvdyBhcmd1bWVudHMuIEluc3RlYWQsIHRoZSBsb2FkZXIgaW5pdCByZWdpc3RlcnMgZWFjaFxuICogYWdlbnQncyBSUEMgaGVyZSwgYW5kIHdvcmtmbG93IHN0ZXAgZnVuY3Rpb25zIGxvb2sgaXQgdXAgYnkgYWdlbnQgbmFtZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJwY1BheWxvYWQsIFJwY1Jlc3VsdCB9IGZyb20gXCIuL2NsaWVudFwiO1xuXG50eXBlIFJwY0ZuID0gKHBhcmFtczogUnBjUGF5bG9hZCkgPT4gUHJvbWlzZTxScGNSZXN1bHQ+O1xuXG5jb25zdCByZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCBScGNGbj4oKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUnBjKG5hbWU6IHN0cmluZywgZm46IFJwY0ZuKTogdm9pZCB7XG4gIHJlZ2lzdHJ5LnNldChuYW1lLCBmbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUnBjKG5hbWU6IHN0cmluZyk6IFJwY0ZuIHtcbiAgY29uc3QgZm4gPSByZWdpc3RyeS5nZXQobmFtZSk7XG4gIGlmICghZm4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTm8gUlBDIHJlZ2lzdGVyZWQgZm9yIGFnZW50IFwiJHtuYW1lfVwiLiBFbnN1cmUgd2l0aEFnZW50IGlzIHNldCB1cCBpbiBuZXh0LmNvbmZpZy50cy5gXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZm47XG59XG4iLCAiaW1wb3J0IHsgcmVzb2x2ZVJwYyB9IGZyb20gXCIuLi8uLi9ycGMtcmVnaXN0cnlcIjtcbmltcG9ydCB0eXBlIHsgU2FuZGJveExpZmVjeWNsZUlucHV0IH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbmNvbnN0IERFRkFVTFRfUE9MTF9JTlRFUlZBTF9NUyA9IDIgKiA2MCAqIDEwMDA7XG5jb25zdCBERUZBVUxUX0lETEVfVElNRU9VVF9NUyA9IDUgKiA2MCAqIDEwMDA7XG5jb25zdCBTTkFQU0hPVF9CRUZPUkVfVElNRU9VVF9NUyA9IDEwICogNjAgKiAxMDAwO1xuXG5jb25zdCBnZXRUZXN0Q3JlZGVudGlhbHMgPSAoKSA9PlxuICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCJcbiAgICA/IHtcbiAgICAgICAgdG9rZW46IHByb2Nlc3MuZW52LlRFU1RfVkVSQ0VMX1RPS0VOLFxuICAgICAgICB0ZWFtSWQ6IHByb2Nlc3MuZW52LlRFU1RfVkVSQ0VMX1RFQU1fSUQsXG4gICAgICAgIHByb2plY3RJZDogcHJvY2Vzcy5lbnYuVEVTVF9WRVJDRUxfUFJPSkVDVF9JRCxcbiAgICAgIH1cbiAgICA6IHt9O1xuXG5leHBvcnQgdHlwZSBMaWZlY3ljbGVTdGVwUmVzdWx0ID1cbiAgfCB7IGFjdGlvbjogXCJjb250aW51ZVwiOyBuZXh0UG9sbE1zOiBudW1iZXIgfVxuICB8IHtcbiAgICAgIGFjdGlvbjogXCJleGl0XCI7XG4gICAgICByZWFzb246IFwic2FuZGJveElkX2NoYW5nZWRcIiB8IFwiaWRsZVwiIHwgXCJ0aW1lb3V0XCIgfCBcIm5vdF9mb3VuZFwiO1xuICAgIH07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0FuZFNuYXBzaG90U3RlcChcbiAgaW5wdXQ6IFNhbmRib3hMaWZlY3ljbGVJbnB1dFxuKTogUHJvbWlzZTxFcnJvciB8IExpZmVjeWNsZVN0ZXBSZXN1bHQ+IHtcbiAgXCJ1c2Ugc3RlcFwiO1xuXG4gIGNvbnN0IHsgU2FuZGJveDogVmVyY2VsU2FuZGJveFNESyB9ID0gYXdhaXQgaW1wb3J0KFwiLi92ZXJjZWwtc2RrXCIpO1xuICBjb25zdCB7IGdldFN0b3JhZ2UgfSA9IGF3YWl0IGltcG9ydChcIi4uLy4uL3N0b3JhZ2VcIik7XG4gIGNvbnN0IHJwYyA9IHJlc29sdmVScGMoaW5wdXQuc3RvcmFnZUNvbmZpZy5uYW1lID8/IFwiZGVmYXVsdFwiKTtcbiAgY29uc3Qgc3RvcmFnZSA9IGdldFN0b3JhZ2Uoe1xuICAgIGNvbmZpZzogaW5wdXQuc3RvcmFnZUNvbmZpZyxcbiAgICBycGMsXG4gIH0pO1xuICBjb25zdCByZWNvcmQgPSBhd2FpdCBzdG9yYWdlLnNhbmRib3guZ2V0KGlucHV0LmlkKTtcbiAgaWYgKHJlY29yZCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgcmV0dXJuIHsgYWN0aW9uOiBcImV4aXRcIiwgcmVhc29uOiBcIm5vdF9mb3VuZFwiIH07XG4gIH1cblxuICBjb25zdCBjdXJyZW50U2FuZGJveElkID1cbiAgICByZWNvcmQucHJvdmlkZXJNZXRhZGF0YT8ucHJvdmlkZXIgPT09IFwidmVyY2VsXCJcbiAgICAgID8gcmVjb3JkLnByb3ZpZGVyTWV0YWRhdGEuc2FuZGJveElkXG4gICAgICA6IG51bGw7XG5cbiAgaWYgKGN1cnJlbnRTYW5kYm94SWQgIT09IGlucHV0LnZlcmNlbFNhbmRib3hJZCkge1xuICAgIHJldHVybiB7IGFjdGlvbjogXCJleGl0XCIsIHJlYXNvbjogXCJzYW5kYm94SWRfY2hhbmdlZFwiIH07XG4gIH1cblxuICBpZiAoIWN1cnJlbnRTYW5kYm94SWQpIHtcbiAgICByZXR1cm4geyBhY3Rpb246IFwiZXhpdFwiLCByZWFzb246IFwibm90X2ZvdW5kXCIgfTtcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZyA9IHJlY29yZC5jb25maWc7XG4gIGlmIChjb25maWcudHlwZSAhPT0gXCJ2ZXJjZWxcIikge1xuICAgIHJldHVybiB7IGFjdGlvbjogXCJleGl0XCIsIHJlYXNvbjogXCJub3RfZm91bmRcIiB9O1xuICB9XG5cbiAgY29uc3QgcG9sbEludGVydmFsTXMgPVxuICAgIGNvbmZpZy5saWZlY3ljbGU/LnBvbGxJbnRlcnZhbE1zID8/IERFRkFVTFRfUE9MTF9JTlRFUlZBTF9NUztcbiAgY29uc3QgaWRsZVRpbWVvdXRNcyA9XG4gICAgY29uZmlnLmxpZmVjeWNsZT8uc3RvcEFmdGVySW5hY3RpdmVNcyA/PyBERUZBVUxUX0lETEVfVElNRU9VVF9NUztcbiAgY29uc3Qgc25hcHNob3RCZWZvcmVUaW1lb3V0TXMgPVxuICAgIGNvbmZpZy5saWZlY3ljbGU/LnNuYXBzaG90QmVmb3JlVGltZW91dE1zID8/IFNOQVBTSE9UX0JFRk9SRV9USU1FT1VUX01TO1xuXG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IGxhc3RBY3Rpdml0eSA9IHJlY29yZC5sYXN0QWN0aXZpdHlBdCA/PyByZWNvcmQuY3JlYXRlZEF0ID8/IG5vdztcbiAgY29uc3QgaWRsZUR1cmF0aW9uID0gbm93IC0gbGFzdEFjdGl2aXR5O1xuICBjb25zdCBzaG91bGRTbmFwc2hvdER1ZVRvSWRsZSA9IGlkbGVEdXJhdGlvbiA+IGlkbGVUaW1lb3V0TXM7XG5cbiAgbGV0IHNob3VsZFNuYXBzaG90RHVlVG9UaW1lb3V0ID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2FuZGJveCA9IGF3YWl0IFZlcmNlbFNhbmRib3hTREsuZ2V0KHtcbiAgICAgIHNhbmRib3hJZDogY3VycmVudFNhbmRib3hJZCxcbiAgICAgIC4uLmdldFRlc3RDcmVkZW50aWFscygpLFxuICAgIH0pO1xuICAgIGlmIChzYW5kYm94LnRpbWVvdXQgPCBzbmFwc2hvdEJlZm9yZVRpbWVvdXRNcykge1xuICAgICAgc2hvdWxkU25hcHNob3REdWVUb1RpbWVvdXQgPSB0cnVlO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHsgYWN0aW9uOiBcImV4aXRcIiwgcmVhc29uOiBcIm5vdF9mb3VuZFwiIH07XG4gIH1cblxuICBpZiAoc2hvdWxkU25hcHNob3REdWVUb0lkbGUgfHwgc2hvdWxkU25hcHNob3REdWVUb1RpbWVvdXQpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2FuZGJveCA9IGF3YWl0IFZlcmNlbFNhbmRib3hTREsuZ2V0KHtcbiAgICAgICAgc2FuZGJveElkOiBjdXJyZW50U2FuZGJveElkLFxuICAgICAgICAuLi5nZXRUZXN0Q3JlZGVudGlhbHMoKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc25hcHNob3QgPSBhd2FpdCBzYW5kYm94LnNuYXBzaG90KCk7XG4gICAgICBhd2FpdCBzdG9yYWdlLnNhbmRib3guc2V0KHtcbiAgICAgICAgLi4ucmVjb3JkLFxuICAgICAgICBhY3F1aXJpbmdMb2NrSWQ6IG51bGwsXG4gICAgICAgIGFjcXVpcmluZ0xvY2tBdDogbnVsbCxcbiAgICAgICAgcHJvdmlkZXJNZXRhZGF0YToge1xuICAgICAgICAgIHByb3ZpZGVyOiBcInZlcmNlbFwiLFxuICAgICAgICAgIHNhbmRib3hJZDogbnVsbCxcbiAgICAgICAgICBzbmFwc2hvdElkOiBzbmFwc2hvdC5zbmFwc2hvdElkLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciA/IGUgOiBuZXcgRXJyb3IoU3RyaW5nKGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogXCJleGl0XCIsXG4gICAgICByZWFzb246IHNob3VsZFNuYXBzaG90RHVlVG9JZGxlID8gXCJpZGxlXCIgOiBcInRpbWVvdXRcIixcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHsgYWN0aW9uOiBcImNvbnRpbnVlXCIsIG5leHRQb2xsTXM6IHBvbGxJbnRlcnZhbE1zIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBQXdCO0FBQUE7QUFBQTs7O0FDQXhCLFlBRWEsc0JBS0EsY0FLQSxzQkFLQSxjQUtBLGNBS0E7QUEzQmI7QUFBQTtBQUFBO0FBQUEsYUFBd0I7QUFFakIsSUFBTSx1QkFBTixjQUEwQyx5QkFBa0I7QUFBQSxNQUNqRSxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsSUFDWCxDQUFDLEVBQUU7QUFBQSxJQUFDO0FBRUcsSUFBTSxlQUFOLGNBQWtDLHlCQUFrQjtBQUFBLE1BQ3pELE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxJQUNYLENBQUMsRUFBRTtBQUFBLElBQUM7QUFFRyxJQUFNLHVCQUFOLGNBQTBDLHlCQUFrQjtBQUFBLE1BQ2pFLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxJQUNYLENBQUMsRUFBRTtBQUFBLElBQUM7QUFFRyxJQUFNLGVBQU4sY0FBa0MseUJBQWtCO0FBQUEsTUFDekQsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLElBQ1gsQ0FBQyxFQUFFO0FBQUEsSUFBQztBQUVHLElBQU0sZUFB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
|
|
922
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3NhbmRib3gvYmluZGluZ3MvdmVyY2VsLXNkay50cyIsICIuLi9zcmMvZXJyb3JzLnRzIiwgIi4uL3NyYy9zdG9yYWdlL2NsaWVudC50cyIsICIuLi9zcmMvc3RvcmFnZS9ycGMudHMiLCAiLi4vc3JjL3N0b3JhZ2UvaGFuZGxlci50cyIsICIuLi9zcmMvc3RvcmFnZS9pbmRleC50cyIsICIuLi9zcmMvc2FuZGJveC9iaW5kaW5ncy9saWZlY3ljbGUtd29ya2Zsb3cudHMiLCAiLi4vc3JjL3NhbmRib3gvYmluZGluZ3MvbGlmZWN5Y2xlLXdvcmtmbG93LXN0ZXBzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgeyBTYW5kYm94IH0gZnJvbSBcIkB2ZXJjZWwvc2FuZGJveFwiO1xuIiwgImltcG9ydCAqIGFzIGVycm9yZSBmcm9tIFwiZXJyb3JlXCI7XG5cbmV4cG9ydCBjbGFzcyBTZXNzaW9uTm90Rm91bmRFcnJvciBleHRlbmRzIGVycm9yZS5jcmVhdGVUYWdnZWRFcnJvcih7XG4gIG5hbWU6IFwiU2Vzc2lvbk5vdEZvdW5kRXJyb3JcIixcbiAgbWVzc2FnZTogXCJTZXNzaW9uICRpZCBub3QgZm91bmRcIixcbn0pIHt9XG5cbmV4cG9ydCBjbGFzcyBTZXNzaW9uRXJyb3IgZXh0ZW5kcyBlcnJvcmUuY3JlYXRlVGFnZ2VkRXJyb3Ioe1xuICBuYW1lOiBcIlNlc3Npb25FcnJvclwiLFxuICBtZXNzYWdlOiBcIlNlc3Npb24gJGlkIGZhaWxlZDogJHJlYXNvblwiLFxufSkge31cblxuZXhwb3J0IGNsYXNzIFNhbmRib3hOb3RGb3VuZEVycm9yIGV4dGVuZHMgZXJyb3JlLmNyZWF0ZVRhZ2dlZEVycm9yKHtcbiAgbmFtZTogXCJTYW5kYm94Tm90Rm91bmRFcnJvclwiLFxuICBtZXNzYWdlOiBcIlNhbmRib3ggJGlkIG5vdCBmb3VuZFwiLFxufSkge31cblxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VFcnJvciBleHRlbmRzIGVycm9yZS5jcmVhdGVUYWdnZWRFcnJvcih7XG4gIG5hbWU6IFwiU3RvcmFnZUVycm9yXCIsXG4gIG1lc3NhZ2U6IFwiJHJlYXNvblwiLFxufSkge31cblxuZXhwb3J0IGNsYXNzIFNhbmRib3hFcnJvciBleHRlbmRzIGVycm9yZS5jcmVhdGVUYWdnZWRFcnJvcih7XG4gIG5hbWU6IFwiU2FuZGJveEVycm9yXCIsXG4gIG1lc3NhZ2U6IFwiJHJlYXNvblwiLFxufSkge31cblxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VOb3RGb3VuZEVycm9yIGV4dGVuZHMgZXJyb3JlLmNyZWF0ZVRhZ2dlZEVycm9yKHtcbiAgbmFtZTogXCJNZXNzYWdlTm90Rm91bmRFcnJvclwiLFxuICBtZXNzYWdlOiBcIk1lc3NhZ2UgJGlkIG5vdCBmb3VuZFwiLFxufSkge31cbiIsICJpbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQge1xuICBNZXNzYWdlTm90Rm91bmRFcnJvcixcbiAgU2FuZGJveE5vdEZvdW5kRXJyb3IsXG4gIFNlc3Npb25Ob3RGb3VuZEVycm9yLFxuICBTdG9yYWdlRXJyb3IsXG59IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCB0eXBlIHsgU3RvcmFnZU1ldGhvZHMgfSBmcm9tIFwiLi9ycGNcIjtcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgTGlzdFJlc3VsdCxcbiAgUGFydCxcbiAgU2V0dXBTbmFwc2hvdCxcbiAgU3RvcmFnZSxcbiAgU3RvcmFnZUNvbmZpZyxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxudHlwZSBScGNSZXNwb25zZTxUPiA9XG4gIHwgeyByZXN1bHQ6IFQgfVxuICB8IHsgZXJyb3I6IHsgY29kZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSB9O1xuXG5leHBvcnQgdHlwZSBScGNGbiA9IChwYXJhbXM6IHtcbiAgbmFtZT86IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHBhcmFtczogdW5rbm93bjtcbn0pID0+IFByb21pc2U8UnBjUmVzcG9uc2U8dW5rbm93bj4+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmFnZUNsaWVudChycGNGbjogUnBjRm4sIG5hbWU/OiBzdHJpbmcpOiBTdG9yYWdlIHtcbiAgYXN5bmMgZnVuY3Rpb24gcnBjPE0gZXh0ZW5kcyBrZXlvZiBTdG9yYWdlTWV0aG9kcz4oXG4gICAgbWV0aG9kOiBNLFxuICAgIHBhcmFtczogei5pbmZlcjxTdG9yYWdlTWV0aG9kc1tNXVtcInBhcmFtc1wiXT5cbiAgKTogUHJvbWlzZTx6LmluZmVyPFN0b3JhZ2VNZXRob2RzW01dW1wicmVzdWx0XCJdPj4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwY0ZuKHsgbmFtZSwgbWV0aG9kLCBwYXJhbXMgfSk7XG5cbiAgICBpZiAoXCJlcnJvclwiIGluIHJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogcmVzdWx0LmVycm9yLm1lc3NhZ2UgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQgYXMgei5pbmZlcjxTdG9yYWdlTWV0aG9kc1tNXVtcInJlc3VsdFwiXT47XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNlc3Npb246IHtcbiAgICAgIGdldDogYXN5bmMgKGlkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjKFwic2Vzc2lvbi5nZXRcIiwgeyBpZCB9KTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNlc3Npb25Ob3RGb3VuZEVycm9yKHsgaWQgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2V0OiBhc3luYyAoc2Vzc2lvbikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJzZXNzaW9uLnNldFwiLCBzZXNzaW9uKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBkZWxldGU6IGFzeW5jIChpZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHJwYyhcInNlc3Npb24uZGVsZXRlXCIsIHsgaWQgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbGlzdDogYXN5bmMgKG9wdHMpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgcnBjKFwic2Vzc2lvbi5saXN0XCIsIHtcbiAgICAgICAgICAgIHRhZ3M6IG9wdHM/LnRhZ3MsXG4gICAgICAgICAgICBvcmRlcjogb3B0cz8ub3JkZXIsXG4gICAgICAgICAgICBjdXJzb3I6IG9wdHM/LmN1cnNvcixcbiAgICAgICAgICAgIGxpbWl0OiBvcHRzPy5saW1pdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0YWc6IHtcbiAgICAgICAgc2V0OiBhc3luYyAoeyBzZXNzaW9uSWQsIHRhZ3MgfSkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcnBjKFwic2Vzc2lvbi50YWcuc2V0XCIsIHsgc2Vzc2lvbklkLCB0YWdzIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIG1lc3NhZ2U6IHtcbiAgICAgIGxpc3Q6IGFzeW5jIChzZXNzaW9uSWQsIG9wdHMpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgcnBjKFwibWVzc2FnZS5saXN0XCIsIHtcbiAgICAgICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgICAgIGN1cnNvcjogb3B0cz8uY3Vyc29yLFxuICAgICAgICAgICAgbGltaXQ6IG9wdHM/LmxpbWl0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGdldDogYXN5bmMgKGlkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjKFwibWVzc2FnZS5nZXRcIiwgeyBpZCB9KTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1lc3NhZ2VOb3RGb3VuZEVycm9yKHsgaWQgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2V0OiBhc3luYyAobWVzc2FnZSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJtZXNzYWdlLnNldFwiLCBtZXNzYWdlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICBwYXJ0OiB7XG4gICAgICBsaXN0QnlNZXNzYWdlOiBhc3luYyAobWVzc2FnZUlkLCBvcHRzKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjKFwicGFydC5saXN0QnlNZXNzYWdlXCIsIHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgICAgIGN1cnNvcjogb3B0cz8uY3Vyc29yLFxuICAgICAgICAgICAgbGltaXQ6IG9wdHM/LmxpbWl0LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgTGlzdFJlc3VsdDxQYXJ0PjtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsaXN0QnlTZXNzaW9uOiBhc3luYyAoc2Vzc2lvbklkLCBvcHRzKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjKFwicGFydC5saXN0QnlTZXNzaW9uXCIsIHtcbiAgICAgICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgICAgIGN1cnNvcjogb3B0cz8uY3Vyc29yLFxuICAgICAgICAgICAgbGltaXQ6IG9wdHM/LmxpbWl0LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgTGlzdFJlc3VsdDxQYXJ0PjtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZXQ6IGFzeW5jIChwYXJ0KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChhd2FpdCBycGMoXCJwYXJ0LnNldFwiLCBwYXJ0KSkgYXMgUGFydDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBkZWxldGU6IGFzeW5jIChpZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHJwYyhcInBhcnQuZGVsZXRlXCIsIHsgaWQgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgc2FuZGJveDoge1xuICAgICAgZ2V0OiBhc3luYyAoa2V5KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjKFwic2FuZGJveC5nZXRcIiwgeyBrZXkgfSk7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTYW5kYm94Tm90Rm91bmRFcnJvcih7IGlkOiBrZXkgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZ2V0QnlTZXNzaW9uOiBhc3luYyAoc2Vzc2lvbklkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjKFwic2FuZGJveC5nZXRCeVNlc3Npb25cIiwgeyBzZXNzaW9uSWQgfSk7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTYW5kYm94Tm90Rm91bmRFcnJvcih7IGlkOiBzZXNzaW9uSWQgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2V0OiBhc3luYyAocmVjb3JkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgcnBjKFwic2FuZGJveC5zZXRcIiwgcmVjb3JkKTtcbiAgICAgICAgICByZXR1cm4gcmVjb3JkO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGxpc3Q6IGFzeW5jIChvcHRzKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJwYyhcInNhbmRib3gubGlzdFwiLCB7XG4gICAgICAgICAgICB0YWdzOiBvcHRzPy50YWdzLFxuICAgICAgICAgICAgb3JkZXI6IG9wdHM/Lm9yZGVyLFxuICAgICAgICAgICAgY3Vyc29yOiBvcHRzPy5jdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogb3B0cz8ubGltaXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdGFnOiB7XG4gICAgICAgIHNldDogYXN5bmMgKHsgc2FuZGJveElkLCB0YWdzIH0pID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJwYyhcInNhbmRib3gudGFnLnNldFwiLCB7IHNhbmRib3hJZCwgdGFncyB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhY3F1aXJlTG9jazogYXN5bmMgKHJlY29yZCwgbG9ja1RpbWVvdXRNcykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiAoYXdhaXQgcnBjKFwic2FuZGJveC5hY3F1aXJlTG9ja1wiLCB7XG4gICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICBsb2NrVGltZW91dE1zLFxuICAgICAgICAgIH0pKSBhcyBpbXBvcnQoXCIuL3R5cGVzXCIpLlNhbmRib3hSZWNvcmQgfCBudWxsO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIHNldHVwOiB7XG4gICAgICBnZXQ6IGFzeW5jIChrZXkpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGF3YWl0IHJwYyhcInNldHVwLmdldFwiLCB7IGtleSB9KSkgYXMgU2V0dXBTbmFwc2hvdCB8IG51bGw7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2V0OiBhc3luYyAoc25hcHNob3QpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBycGMoXCJzZXR1cC5zZXRcIiwgc25hcHNob3QpO1xuICAgICAgICAgIHJldHVybiBzbmFwc2hvdDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhY3F1aXJlTG9jazogYXN5bmMgKGtleSwgbG9ja0lkLCBsb2NrVGltZW91dE1zKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChhd2FpdCBycGMoXCJzZXR1cC5hY3F1aXJlTG9ja1wiLCB7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBsb2NrSWQsXG4gICAgICAgICAgICBsb2NrVGltZW91dE1zLFxuICAgICAgICAgIH0pKSBhcyBTZXR1cFNuYXBzaG90IHwgbnVsbDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICBjb21tYW5kOiB7XG4gICAgICBnZXQ6IGFzeW5jIChpZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiAoYXdhaXQgcnBjKFwiY29tbWFuZC5nZXRcIiwgeyBpZCB9KSkgYXMgQ29tbWFuZCB8IG51bGw7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2V0OiBhc3luYyAoY29tbWFuZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiAoYXdhaXQgcnBjKFwiY29tbWFuZC5zZXRcIiwgY29tbWFuZCkpIGFzIENvbW1hbmQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbGlzdDogYXN5bmMgKHNlc3Npb25JZCwgb3B0cykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwYyhcImNvbW1hbmQubGlzdFwiLCB7XG4gICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICBpbmNsdWRlRmluaXNoZWQ6IG9wdHM/LmluY2x1ZGVGaW5pc2hlZCxcbiAgICAgICAgICAgIGN1cnNvcjogb3B0cz8uY3Vyc29yLFxuICAgICAgICAgICAgbGltaXQ6IG9wdHM/LmxpbWl0LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgTGlzdFJlc3VsdDxDb21tYW5kPjtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gXCJkZWZhdWx0XCI7XG5leHBvcnQgY29uc3QgTE9DQUxfU1RPUkFHRV9WRVJTSU9OID0gXCJ2MVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmFnZShvcHRzOiB7XG4gIGNvbmZpZzogU3RvcmFnZUNvbmZpZztcbiAgcnBjOiBScGNGbjtcbn0pOiBTdG9yYWdlIHtcbiAgY29uc3QgbmFtZSA9IG9wdHMuY29uZmlnLm5hbWUgPz8gREVGQVVMVF9OQU1FU1BBQ0U7XG4gIHJldHVybiBnZXRTdG9yYWdlQ2xpZW50KG9wdHMucnBjLCBuYW1lKTtcbn1cbiIsICJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5jb25zdCBWZXJjZWxMaWZlY3ljbGVDb25maWdTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBvbGxJbnRlcnZhbE1zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHN0b3BBZnRlckluYWN0aXZlTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgc25hcHNob3RCZWZvcmVUaW1lb3V0TXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgc25hcHNob3RJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhdXRvU3RhcnQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcblxuY29uc3QgTmV0d29ya1BvbGljeVNjaGVtYSA9IHpcbiAgLnVuaW9uKFtcbiAgICB6LmxpdGVyYWwoXCJhbGxvdy1hbGxcIiksXG4gICAgei5saXRlcmFsKFwiZGVueS1hbGxcIiksXG4gICAgei5vYmplY3Qoe1xuICAgICAgYWxsb3c6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgICAgIHN1Ym5ldHM6IHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgYWxsb3c6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgICAgICAgICBkZW55OiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb25hbCgpLFxuICAgIH0pLFxuICBdKVxuICAub3B0aW9uYWwoKTtcblxuZXhwb3J0IHR5cGUgTmV0d29ya1BvbGljeSA9IHouaW5mZXI8dHlwZW9mIE5ldHdvcmtQb2xpY3lTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgU2FuZGJveENvbmZpZ1NjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJ2ZXJjZWxcIiksXG4gICAgcmVzb3VyY2VzOiB6Lm9iamVjdCh7IHZjcHVzOiB6Lm51bWJlcigpIH0pLm9wdGlvbmFsKCksXG4gICAgcG9ydHM6IHouYXJyYXkoei5udW1iZXIoKSkub3B0aW9uYWwoKSxcbiAgICBsaWZlY3ljbGU6IFZlcmNlbExpZmVjeWNsZUNvbmZpZ1NjaGVtYS5vcHRpb25hbCgpLFxuICAgIG5ldHdvcmtQb2xpY3k6IE5ldHdvcmtQb2xpY3lTY2hlbWEsXG4gIH0pLFxuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwibG9jYWxcIiksXG4gICAgcGF0aDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcImN1c3RvbVwiKSxcbiAgICB1cmw6IHouc3RyaW5nKCksXG4gICAgaGVhZGVyczogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgfSksXG5dKTtcblxuZXhwb3J0IHR5cGUgU2FuZGJveENvbmZpZyA9IHouaW5mZXI8dHlwZW9mIFNhbmRib3hDb25maWdTY2hlbWE+O1xuXG5jb25zdCBHZW5lcmF0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICBtYXhTdGVwczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0ZW1wZXJhdHVyZTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0b3BLOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvcFA6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgZnJlcXVlbmN5UGVuYWx0eTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBwcmVzZW5jZVBlbmFsdHk6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgbWF4T3V0cHV0VG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGhlYWRlcnM6IHoucmVjb3JkKHouc3RyaW5nKCksIHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IFNlc3Npb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LnN0cmluZygpLFxuICBjcmVhdGVkQXQ6IHoubnVtYmVyKCksXG4gIHVwZGF0ZWRBdDogei5udW1iZXIoKSxcbiAgcnVuSWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgbGFzdE1lc3NhZ2VJZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICB0YWdzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkubnVsbGFibGUoKSxcbiAgc3lzdGVtOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIG1vZGVsOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHNhbmRib3hJZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBza2lsbHNEaXI6IHouYXJyYXkoei5zdHJpbmcoKSkubnVsbGFibGUoKSxcbiAgaG9va1Rva2VuOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGFjdGl2ZVRvb2xzOiB6LmFycmF5KHouc3RyaW5nKCkpLm51bGxhYmxlKCksXG4gIGdlbmVyYXRpb246IEdlbmVyYXRpb25TY2hlbWEubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdGVwVXNhZ2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHN0ZXBJbmRleDogei5udW1iZXIoKSxcbiAgbW9kZWw6IHouc3RyaW5nKCksXG4gIGlucHV0VG9rZW5zOiB6Lm51bWJlcigpLFxuICBvdXRwdXRUb2tlbnM6IHoubnVtYmVyKCksXG4gIHRvdGFsVG9rZW5zOiB6Lm51bWJlcigpLFxuICBjYWNoZVJlYWRUb2tlbnM6IHoubnVtYmVyKCksXG4gIGNhY2hlV3JpdGVUb2tlbnM6IHoubnVtYmVyKCksXG4gIHJlYXNvbmluZ1Rva2Vuczogei5udW1iZXIoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgVXNhZ2VTdW1tYXJ5U2NoZW1hID0gei5vYmplY3Qoe1xuICBtb2RlbDogei5zdHJpbmcoKSxcbiAgaW5wdXRUb2tlbnM6IHoubnVtYmVyKCksXG4gIG91dHB1dFRva2Vuczogei5udW1iZXIoKSxcbiAgdG90YWxUb2tlbnM6IHoubnVtYmVyKCksXG4gIGNhY2hlUmVhZFRva2Vuczogei5udW1iZXIoKSxcbiAgY2FjaGVXcml0ZVRva2Vuczogei5udW1iZXIoKSxcbiAgcmVhc29uaW5nVG9rZW5zOiB6Lm51bWJlcigpLFxuICBzdGVwQ291bnQ6IHoubnVtYmVyKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IE1lc3NhZ2VVc2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3RlcHM6IHouYXJyYXkoU3RlcFVzYWdlU2NoZW1hKSxcbiAgc3VtbWFyeTogVXNhZ2VTdW1tYXJ5U2NoZW1hLFxufSk7XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VVc2FnZSA9IHouaW5mZXI8dHlwZW9mIE1lc3NhZ2VVc2FnZVNjaGVtYT47XG5leHBvcnQgdHlwZSBVc2FnZVN1bW1hcnkgPSB6LmluZmVyPHR5cGVvZiBVc2FnZVN1bW1hcnlTY2hlbWE+O1xuZXhwb3J0IHR5cGUgU3RlcFVzYWdlID0gei5pbmZlcjx0eXBlb2YgU3RlcFVzYWdlU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IE1lc3NhZ2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LnN0cmluZygpLFxuICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gIHJvbGU6IHouZW51bShbXCJ1c2VyXCIsIFwiYXNzaXN0YW50XCIsIFwic3lzdGVtXCJdKSxcbiAgY3JlYXRlZEF0OiB6Lm51bWJlcigpLFxuICBzdGFydGVkQXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgY29tcGxldGVkQXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgaW50ZXJydXB0ZWRBdDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICB1c2FnZTogTWVzc2FnZVVzYWdlU2NoZW1hLm51bGxhYmxlKCksXG59KTtcblxuLyoqXG4gKiBUaGUgYHBhcnRgIGZpZWxkIGNvcnJlc3BvbmRzIHRvIGBVSU1lc3NhZ2VbXCJwYXJ0c1wiXVtudW1iZXJdYCBmcm9tIHRoZSBgYWlgIHBhY2thZ2UuXG4gKiBXZSB1c2UgYHoudW5rbm93bigpYCBiZWNhdXNlIHRoZSBleGFjdCBzaGFwZSB2YXJpZXMgYnkgcGFydCB0eXBlICh0ZXh0LCB0b29sLWNhbGwsXG4gKiB0b29sLXJlc3VsdCwgZXRjLikgYW5kIG1heSBldm9sdmUgd2l0aCB0aGUgQUkgU0RLLiBUaGUgUlBDIGxheWVyIGp1c3QgcGFzc2VzIGl0IHRocm91Z2guXG4gKi9cbmV4cG9ydCBjb25zdCBQYXJ0U2NoZW1hID0gei5vYmplY3Qoe1xuICBpZDogei5zdHJpbmcoKSxcbiAgbWVzc2FnZUlkOiB6LnN0cmluZygpLFxuICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gIGluZGV4OiB6Lm51bWJlcigpLFxuICBwYXJ0OiB6LnVua25vd24oKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQ29tbWFuZFJlc3VsdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3Rkb3V0OiB6LnN0cmluZygpLFxuICBzdGRlcnI6IHouc3RyaW5nKCksXG4gIGV4aXRDb2RlOiB6Lm51bWJlcigpLFxuICBjb21wbGV0ZWRBdDogei5udW1iZXIoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgU2FuZGJveFJlY29yZFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouc3RyaW5nKCksXG4gIGNvbmZpZzogU2FuZGJveENvbmZpZ1NjaGVtYSxcbiAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm51bGxhYmxlKCksXG4gIGNyZWF0ZWRBdDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICBsYXN0QWN0aXZpdHlBdDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICBhY3F1aXJpbmdMb2NrSWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgYWNxdWlyaW5nTG9ja0F0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gIHByb3ZpZGVyTWV0YWRhdGE6IHpcbiAgICAuZGlzY3JpbWluYXRlZFVuaW9uKFwicHJvdmlkZXJcIiwgW1xuICAgICAgei5vYmplY3Qoe1xuICAgICAgICBwcm92aWRlcjogei5saXRlcmFsKFwidmVyY2VsXCIpLFxuICAgICAgICBzYW5kYm94SWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICAgICAgc25hcHNob3RJZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgICAgfSksXG4gICAgXSlcbiAgICAub3B0aW9uYWwoKSxcbn0pO1xuXG5jb25zdCBDb21tYW5kQmFzZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouc3RyaW5nKCksXG4gIHNlc3Npb25JZDogei5zdHJpbmcoKSxcbiAgY29tbWFuZDogei5zdHJpbmcoKSxcbiAgYXJnczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICBzdGFydGVkQXQ6IHoubnVtYmVyKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IENvbW1hbmRTY2hlbWEgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInN0YXR1c1wiLCBbXG4gIENvbW1hbmRCYXNlU2NoZW1hLmV4dGVuZCh7IHN0YXR1czogei5saXRlcmFsKFwicnVubmluZ1wiKSB9KSxcbiAgQ29tbWFuZEJhc2VTY2hlbWEuZXh0ZW5kKHtcbiAgICBzdGF0dXM6IHoubGl0ZXJhbChcImNvbXBsZXRlZFwiKSxcbiAgICByZXN1bHQ6IENvbW1hbmRSZXN1bHRTY2hlbWEsXG4gIH0pLFxuICBDb21tYW5kQmFzZVNjaGVtYS5leHRlbmQoe1xuICAgIHN0YXR1czogei5saXRlcmFsKFwia2lsbGVkXCIpLFxuICAgIHJlc3VsdDogQ29tbWFuZFJlc3VsdFNjaGVtYS5vcHRpb25hbCgpLFxuICB9KSxcbiAgQ29tbWFuZEJhc2VTY2hlbWEuZXh0ZW5kKHtcbiAgICBzdGF0dXM6IHoubGl0ZXJhbChcImZhaWxlZFwiKSxcbiAgICByZXN1bHQ6IENvbW1hbmRSZXN1bHRTY2hlbWEsXG4gIH0pLFxuXSk7XG5cbmZ1bmN0aW9uIExpc3RSZXN1bHRTY2hlbWE8VCBleHRlbmRzIHouWm9kVHlwZUFueT4oaXRlbVNjaGVtYTogVCkge1xuICByZXR1cm4gei5vYmplY3Qoe1xuICAgIGl0ZW1zOiB6LmFycmF5KGl0ZW1TY2hlbWEpLFxuICAgIG5leHRDdXJzb3I6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBTZXR1cFNuYXBzaG90U2NoZW1hID0gei5vYmplY3Qoe1xuICBrZXk6IHouc3RyaW5nKCksXG4gIHNuYXBzaG90SWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgY3JlYXRlZEF0OiB6Lm51bWJlcigpLFxuICBsYXN0VXNlZEF0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gIGFjcXVpcmluZ0xvY2tJZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBhY3F1aXJpbmdMb2NrQXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbn0pO1xuXG5jb25zdCBtZXRob2RzID0ge1xuICBcInNlc3Npb24uZ2V0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsgaWQ6IHouc3RyaW5nKCkgfSksXG4gICAgcmVzdWx0OiBTZXNzaW9uU2NoZW1hLm51bGxhYmxlKCksXG4gIH0sXG4gIFwic2Vzc2lvbi5zZXRcIjoge1xuICAgIHBhcmFtczogU2Vzc2lvblNjaGVtYSxcbiAgICByZXN1bHQ6IFNlc3Npb25TY2hlbWEsXG4gIH0sXG4gIFwic2Vzc2lvbi5saXN0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICAgICAgb3JkZXI6IHpcbiAgICAgICAgLmVudW0oW1xuICAgICAgICAgIFwiY3JlYXRlZEF0X2FzY1wiLFxuICAgICAgICAgIFwiY3JlYXRlZEF0X2Rlc2NcIixcbiAgICAgICAgICBcInVwZGF0ZWRBdF9hc2NcIixcbiAgICAgICAgICBcInVwZGF0ZWRBdF9kZXNjXCIsXG4gICAgICAgIF0pXG4gICAgICAgIC5vcHRpb25hbCgpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShTZXNzaW9uU2NoZW1hKSxcbiAgfSxcbiAgXCJzZXNzaW9uLmxpc3RCeVNhbmRib3hcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgc2FuZGJveElkOiB6LnN0cmluZygpLFxuICAgICAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLm9wdGlvbmFsKCksXG4gICAgICBvcmRlcjogelxuICAgICAgICAuZW51bShbXG4gICAgICAgICAgXCJjcmVhdGVkQXRfYXNjXCIsXG4gICAgICAgICAgXCJjcmVhdGVkQXRfZGVzY1wiLFxuICAgICAgICAgIFwidXBkYXRlZEF0X2FzY1wiLFxuICAgICAgICAgIFwidXBkYXRlZEF0X2Rlc2NcIixcbiAgICAgICAgXSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKFNlc3Npb25TY2hlbWEpLFxuICB9LFxuICBcInNlc3Npb24uZGVsZXRlXCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsgaWQ6IHouc3RyaW5nKCkgfSksXG4gICAgcmVzdWx0OiB6LnZvaWQoKSxcbiAgfSxcbiAgXCJzZXNzaW9uLnRhZy5zZXRcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICAgICAgdGFnczogei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogU2Vzc2lvblNjaGVtYSxcbiAgfSxcbiAgXCJtZXNzYWdlLmdldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGlkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogTWVzc2FnZVNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcIm1lc3NhZ2Uuc2V0XCI6IHtcbiAgICBwYXJhbXM6IE1lc3NhZ2VTY2hlbWEsXG4gICAgcmVzdWx0OiBNZXNzYWdlU2NoZW1hLFxuICB9LFxuICBcIm1lc3NhZ2UubGlzdFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKE1lc3NhZ2VTY2hlbWEpLFxuICB9LFxuICBcInBhcnQubGlzdEJ5TWVzc2FnZVwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBtZXNzYWdlSWQ6IHouc3RyaW5nKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKFBhcnRTY2hlbWEpLFxuICB9LFxuICBcInBhcnQubGlzdEJ5U2Vzc2lvblwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKFBhcnRTY2hlbWEpLFxuICB9LFxuICBcInBhcnQuc2V0XCI6IHtcbiAgICBwYXJhbXM6IFBhcnRTY2hlbWEsXG4gICAgcmVzdWx0OiBQYXJ0U2NoZW1hLFxuICB9LFxuICBcInBhcnQuZGVsZXRlXCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsgaWQ6IHouc3RyaW5nKCkgfSksXG4gICAgcmVzdWx0OiB6LnZvaWQoKSxcbiAgfSxcbiAgXCJzYW5kYm94LmdldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGtleTogei5zdHJpbmcoKSB9KSxcbiAgICByZXN1bHQ6IFNhbmRib3hSZWNvcmRTY2hlbWEubnVsbGFibGUoKSxcbiAgfSxcbiAgXCJzYW5kYm94LmdldEJ5U2Vzc2lvblwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IHNlc3Npb25JZDogei5zdHJpbmcoKSB9KSxcbiAgICByZXN1bHQ6IFNhbmRib3hSZWNvcmRTY2hlbWEubnVsbGFibGUoKSxcbiAgfSxcbiAgXCJzYW5kYm94LnNldFwiOiB7XG4gICAgcGFyYW1zOiBTYW5kYm94UmVjb3JkU2NoZW1hLFxuICAgIHJlc3VsdDogei52b2lkKCksXG4gIH0sXG4gIFwic2FuZGJveC5saXN0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICAgICAgb3JkZXI6IHpcbiAgICAgICAgLmVudW0oW1xuICAgICAgICAgIFwiY3JlYXRlZEF0X2FzY1wiLFxuICAgICAgICAgIFwiY3JlYXRlZEF0X2Rlc2NcIixcbiAgICAgICAgICBcImxhc3RBY3Rpdml0eUF0X2FzY1wiLFxuICAgICAgICAgIFwibGFzdEFjdGl2aXR5QXRfZGVzY1wiLFxuICAgICAgICBdKVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIGN1cnNvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IExpc3RSZXN1bHRTY2hlbWEoU2FuZGJveFJlY29yZFNjaGVtYSksXG4gIH0sXG4gIFwic2FuZGJveC50YWcuc2V0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHNhbmRib3hJZDogei5zdHJpbmcoKSxcbiAgICAgIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IFNhbmRib3hSZWNvcmRTY2hlbWEsXG4gIH0sXG4gIFwiY29tbWFuZC5nZXRcIjoge1xuICAgIHBhcmFtczogei5vYmplY3QoeyBpZDogei5zdHJpbmcoKSB9KSxcbiAgICByZXN1bHQ6IENvbW1hbmRTY2hlbWEubnVsbGFibGUoKSxcbiAgfSxcbiAgXCJjb21tYW5kLnNldFwiOiB7XG4gICAgcGFyYW1zOiBDb21tYW5kU2NoZW1hLFxuICAgIHJlc3VsdDogQ29tbWFuZFNjaGVtYSxcbiAgfSxcbiAgXCJjb21tYW5kLmxpc3RcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICAgICAgaW5jbHVkZUZpbmlzaGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShDb21tYW5kU2NoZW1hKSxcbiAgfSxcbiAgXCJzZXR1cC5nZXRcIjoge1xuICAgIHBhcmFtczogei5vYmplY3QoeyBrZXk6IHouc3RyaW5nKCkgfSksXG4gICAgcmVzdWx0OiBTZXR1cFNuYXBzaG90U2NoZW1hLm51bGxhYmxlKCksXG4gIH0sXG4gIFwic2V0dXAuc2V0XCI6IHtcbiAgICBwYXJhbXM6IFNldHVwU25hcHNob3RTY2hlbWEsXG4gICAgcmVzdWx0OiB6LnZvaWQoKSxcbiAgfSxcbiAgXCJzZXR1cC5hY3F1aXJlTG9ja1wiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBrZXk6IHouc3RyaW5nKCksXG4gICAgICBsb2NrSWQ6IHouc3RyaW5nKCksXG4gICAgICBsb2NrVGltZW91dE1zOiB6Lm51bWJlcigpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogU2V0dXBTbmFwc2hvdFNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcInNhbmRib3guYWNxdWlyZUxvY2tcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgcmVjb3JkOiBTYW5kYm94UmVjb3JkU2NoZW1hLFxuICAgICAgbG9ja1RpbWVvdXRNczogei5udW1iZXIoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IFNhbmRib3hSZWNvcmRTY2hlbWEubnVsbGFibGUoKSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB7IG1ldGhvZHMgfTtcbmV4cG9ydCB0eXBlIFN0b3JhZ2VNZXRob2RzID0gdHlwZW9mIG1ldGhvZHM7XG5leHBvcnQgdHlwZSBNZXRob2ROYW1lID0ga2V5b2YgU3RvcmFnZU1ldGhvZHM7XG5leHBvcnQgY29uc3QgU1RPUkFHRV9SUENfTUVUSE9EUyA9IE9iamVjdC5rZXlzKG1ldGhvZHMpIGFzIE1ldGhvZE5hbWVbXTtcbiIsICJpbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyB0eXBlIE1ldGhvZE5hbWUsIG1ldGhvZHMsIHR5cGUgU3RvcmFnZU1ldGhvZHMgfSBmcm9tIFwiLi9ycGNcIjtcblxuZXhwb3J0IHR5cGUgSGFuZGxlcnMgPSB7XG4gIFtLIGluIE1ldGhvZE5hbWVdOiAoXG4gICAgcGFyYW1zOiB6LmluZmVyPFN0b3JhZ2VNZXRob2RzW0tdW1wicGFyYW1zXCJdPlxuICApID0+IFByb21pc2U8ei5pbmZlcjxTdG9yYWdlTWV0aG9kc1tLXVtcInJlc3VsdFwiXT4+O1xufTtcblxuZXhwb3J0IHR5cGUgUnBjUmVxdWVzdCA9IHtcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHBhcmFtczogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIFJwY1N1Y2Nlc3NSZXNwb25zZTxUID0gdW5rbm93bj4gPSB7XG4gIHJlc3VsdDogVDtcbn07XG5cbmV4cG9ydCB0eXBlIFJwY0Vycm9yUmVzcG9uc2UgPSB7XG4gIGVycm9yOiB7IGNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH07XG59O1xuXG5leHBvcnQgdHlwZSBScGNSZXNwb25zZTxUID0gdW5rbm93bj4gPSBScGNTdWNjZXNzUmVzcG9uc2U8VD4gfCBScGNFcnJvclJlc3BvbnNlO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlU3RvcmFnZVJwYyhcbiAgYm9keTogUnBjUmVxdWVzdCxcbiAgaGFuZGxlcnM6IEhhbmRsZXJzXG4pOiBQcm9taXNlPFJwY1Jlc3BvbnNlPiB7XG4gIGNvbnN0IHsgbWV0aG9kLCBwYXJhbXMgfSA9IGJvZHk7XG5cbiAgaWYgKCEobWV0aG9kIGluIG1ldGhvZHMpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7IGNvZGU6IFwiTUVUSE9EX05PVF9GT1VORFwiLCBtZXNzYWdlOiBgVW5rbm93biBtZXRob2Q6ICR7bWV0aG9kfWAgfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWV0aG9kTmFtZSA9IG1ldGhvZCBhcyBNZXRob2ROYW1lO1xuICBjb25zdCBzY2hlbWEgPSBtZXRob2RzW21ldGhvZE5hbWVdLnBhcmFtcztcbiAgY29uc3QgcGFyc2VkID0gc2NoZW1hLnNhZmVQYXJzZShwYXJhbXMpO1xuXG4gIGlmICghcGFyc2VkLnN1Y2Nlc3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IHtcbiAgICAgICAgY29kZTogXCJJTlZBTElEX1BBUkFNU1wiLFxuICAgICAgICBtZXNzYWdlOiBwYXJzZWQuZXJyb3IuaXNzdWVzXG4gICAgICAgICAgLm1hcCgoaSkgPT4gYCR7aS5wYXRoLmpvaW4oXCIuXCIpfTogJHtpLm1lc3NhZ2V9YClcbiAgICAgICAgICAuam9pbihcIiwgXCIpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBoYW5kbGVyID0gaGFuZGxlcnNbbWV0aG9kTmFtZV0gYXMgKFxuICAgICAgcGFyYW1zOiB1bmtub3duXG4gICAgKSA9PiBQcm9taXNlPHVua25vd24+O1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIocGFyc2VkLmRhdGEpO1xuICAgIHJldHVybiB7IHJlc3VsdCB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7XG4gICAgICAgIGNvZGU6IFwiSU5URVJOQUxfRVJST1JcIixcbiAgICAgICAgbWVzc2FnZTogZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iLCAiZXhwb3J0IHtcbiAgREVGQVVMVF9OQU1FU1BBQ0UsXG4gIGdldFN0b3JhZ2UsXG4gIExPQ0FMX1NUT1JBR0VfVkVSU0lPTixcbiAgdHlwZSBScGNGbixcbn0gZnJvbSBcIi4vY2xpZW50XCI7XG5leHBvcnQge1xuICB0eXBlIEhhbmRsZXJzLFxuICBoYW5kbGVTdG9yYWdlUnBjLFxuICB0eXBlIFJwY0Vycm9yUmVzcG9uc2UsXG4gIHR5cGUgUnBjUmVxdWVzdCxcbiAgdHlwZSBScGNSZXNwb25zZSxcbiAgdHlwZSBScGNTdWNjZXNzUmVzcG9uc2UsXG59IGZyb20gXCIuL2hhbmRsZXJcIjtcbmV4cG9ydCB7XG4gIHR5cGUgTWVzc2FnZVVzYWdlLFxuICB0eXBlIE1ldGhvZE5hbWUsXG4gIHR5cGUgU2FuZGJveENvbmZpZyxcbiAgU1RPUkFHRV9SUENfTUVUSE9EUyxcbiAgdHlwZSBTdGVwVXNhZ2UsXG4gIHR5cGUgU3RvcmFnZU1ldGhvZHMsXG4gIHR5cGUgVXNhZ2VTdW1tYXJ5LFxufSBmcm9tIFwiLi9ycGNcIjtcbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgTGlzdFJlc3VsdCxcbiAgTWVzc2FnZSxcbiAgUGFydCxcbiAgUmVzb2x2ZWRTdG9yYWdlLFxuICBTYW5kYm94UmVjb3JkLFxuICBTZXNzaW9uLFxuICBTZXR1cFNuYXBzaG90LFxuICBTdG9yYWdlLFxuICBTdG9yYWdlQ29uZmlnLFxuICBUeXBlZFNlc3Npb24sXG4gIFR5cGVkU3RvcmFnZSxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcbiIsICJpbXBvcnQgeyBzbGVlcCB9IGZyb20gXCJ3b3JrZmxvd1wiO1xuaW1wb3J0IHR5cGUgeyBTYW5kYm94TGlmZWN5Y2xlSW5wdXQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGNoZWNrQW5kU25hcHNob3RTdGVwIH0gZnJvbSBcIi4vbGlmZWN5Y2xlLXdvcmtmbG93LXN0ZXBzXCI7XG5cbmV4cG9ydCB0eXBlIHsgU2FuZGJveExpZmVjeWNsZUlucHV0IH07XG5cbmNvbnN0IERFRkFVTFRfUE9MTF9NUyA9IDIgKiA2MCAqIDEwMDA7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYW5kYm94TGlmZWN5Y2xlV29ya2Zsb3coe1xuICBpbnB1dCxcbn06IHtcbiAgaW5wdXQ6IFNhbmRib3hMaWZlY3ljbGVJbnB1dDtcbn0pIHtcbiAgXCJ1c2Ugd29ya2Zsb3dcIjtcblxuICBsZXQgbmV4dFBvbGxNcyA9IERFRkFVTFRfUE9MTF9NUztcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGF3YWl0IHNsZWVwKG5leHRQb2xsTXMpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2hlY2tBbmRTbmFwc2hvdFN0ZXAoaW5wdXQpO1xuXG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yIHx8IHJlc3VsdC5hY3Rpb24gPT09IFwiZXhpdFwiKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBuZXh0UG9sbE1zID0gcmVzdWx0Lm5leHRQb2xsTXM7XG4gIH1cbn1cbiIsICJpbXBvcnQgdHlwZSB7IFNhbmRib3hMaWZlY3ljbGVJbnB1dCB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5jb25zdCBERUZBVUxUX1BPTExfSU5URVJWQUxfTVMgPSAyICogNjAgKiAxMDAwO1xuY29uc3QgREVGQVVMVF9JRExFX1RJTUVPVVRfTVMgPSA1ICogNjAgKiAxMDAwO1xuY29uc3QgU05BUFNIT1RfQkVGT1JFX1RJTUVPVVRfTVMgPSAxMCAqIDYwICogMTAwMDtcblxuY29uc3QgZ2V0VGVzdENyZWRlbnRpYWxzID0gKCkgPT5cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiXG4gICAgPyB7XG4gICAgICAgIHRva2VuOiBwcm9jZXNzLmVudi5URVNUX1ZFUkNFTF9UT0tFTixcbiAgICAgICAgdGVhbUlkOiBwcm9jZXNzLmVudi5URVNUX1ZFUkNFTF9URUFNX0lELFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2Nlc3MuZW52LlRFU1RfVkVSQ0VMX1BST0pFQ1RfSUQsXG4gICAgICB9XG4gICAgOiB7fTtcblxuZXhwb3J0IHR5cGUgTGlmZWN5Y2xlU3RlcFJlc3VsdCA9XG4gIHwgeyBhY3Rpb246IFwiY29udGludWVcIjsgbmV4dFBvbGxNczogbnVtYmVyIH1cbiAgfCB7XG4gICAgICBhY3Rpb246IFwiZXhpdFwiO1xuICAgICAgcmVhc29uOiBcInNhbmRib3hJZF9jaGFuZ2VkXCIgfCBcImlkbGVcIiB8IFwidGltZW91dFwiIHwgXCJub3RfZm91bmRcIjtcbiAgICB9O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tBbmRTbmFwc2hvdFN0ZXAoXG4gIGlucHV0OiBTYW5kYm94TGlmZWN5Y2xlSW5wdXRcbik6IFByb21pc2U8RXJyb3IgfCBMaWZlY3ljbGVTdGVwUmVzdWx0PiB7XG4gIFwidXNlIHN0ZXBcIjtcblxuICBjb25zdCB7IFNhbmRib3g6IFZlcmNlbFNhbmRib3hTREsgfSA9IGF3YWl0IGltcG9ydChcIi4vdmVyY2VsLXNka1wiKTtcbiAgY29uc3QgeyBnZXRTdG9yYWdlIH0gPSBhd2FpdCBpbXBvcnQoXCIuLi8uLi9zdG9yYWdlXCIpO1xuICBpZiAoIWlucHV0LnJwYykge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlJQQyBub3QgZm91bmRcIik7XG4gIH1cbiAgY29uc3Qgc3RvcmFnZSA9IGdldFN0b3JhZ2Uoe1xuICAgIGNvbmZpZzogaW5wdXQuc3RvcmFnZUNvbmZpZyxcbiAgICBycGM6IGlucHV0LnJwYyxcbiAgfSk7XG4gIGNvbnN0IHJlY29yZCA9IGF3YWl0IHN0b3JhZ2Uuc2FuZGJveC5nZXQoaW5wdXQuaWQpO1xuICBpZiAocmVjb3JkIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXR1cm4geyBhY3Rpb246IFwiZXhpdFwiLCByZWFzb246IFwibm90X2ZvdW5kXCIgfTtcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRTYW5kYm94SWQgPVxuICAgIHJlY29yZC5wcm92aWRlck1ldGFkYXRhPy5wcm92aWRlciA9PT0gXCJ2ZXJjZWxcIlxuICAgICAgPyByZWNvcmQucHJvdmlkZXJNZXRhZGF0YS5zYW5kYm94SWRcbiAgICAgIDogbnVsbDtcblxuICBpZiAoY3VycmVudFNhbmRib3hJZCAhPT0gaW5wdXQudmVyY2VsU2FuZGJveElkKSB7XG4gICAgcmV0dXJuIHsgYWN0aW9uOiBcImV4aXRcIiwgcmVhc29uOiBcInNhbmRib3hJZF9jaGFuZ2VkXCIgfTtcbiAgfVxuXG4gIGlmICghY3VycmVudFNhbmRib3hJZCkge1xuICAgIHJldHVybiB7IGFjdGlvbjogXCJleGl0XCIsIHJlYXNvbjogXCJub3RfZm91bmRcIiB9O1xuICB9XG5cbiAgY29uc3QgY29uZmlnID0gcmVjb3JkLmNvbmZpZztcbiAgaWYgKGNvbmZpZy50eXBlICE9PSBcInZlcmNlbFwiKSB7XG4gICAgcmV0dXJuIHsgYWN0aW9uOiBcImV4aXRcIiwgcmVhc29uOiBcIm5vdF9mb3VuZFwiIH07XG4gIH1cblxuICBjb25zdCBwb2xsSW50ZXJ2YWxNcyA9XG4gICAgY29uZmlnLmxpZmVjeWNsZT8ucG9sbEludGVydmFsTXMgPz8gREVGQVVMVF9QT0xMX0lOVEVSVkFMX01TO1xuICBjb25zdCBpZGxlVGltZW91dE1zID1cbiAgICBjb25maWcubGlmZWN5Y2xlPy5zdG9wQWZ0ZXJJbmFjdGl2ZU1zID8/IERFRkFVTFRfSURMRV9USU1FT1VUX01TO1xuICBjb25zdCBzbmFwc2hvdEJlZm9yZVRpbWVvdXRNcyA9XG4gICAgY29uZmlnLmxpZmVjeWNsZT8uc25hcHNob3RCZWZvcmVUaW1lb3V0TXMgPz8gU05BUFNIT1RfQkVGT1JFX1RJTUVPVVRfTVM7XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgbGFzdEFjdGl2aXR5ID0gcmVjb3JkLmxhc3RBY3Rpdml0eUF0ID8/IHJlY29yZC5jcmVhdGVkQXQgPz8gbm93O1xuICBjb25zdCBpZGxlRHVyYXRpb24gPSBub3cgLSBsYXN0QWN0aXZpdHk7XG4gIGNvbnN0IHNob3VsZFNuYXBzaG90RHVlVG9JZGxlID0gaWRsZUR1cmF0aW9uID4gaWRsZVRpbWVvdXRNcztcblxuICBsZXQgc2hvdWxkU25hcHNob3REdWVUb1RpbWVvdXQgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdCBzYW5kYm94ID0gYXdhaXQgVmVyY2VsU2FuZGJveFNESy5nZXQoe1xuICAgICAgc2FuZGJveElkOiBjdXJyZW50U2FuZGJveElkLFxuICAgICAgLi4uZ2V0VGVzdENyZWRlbnRpYWxzKCksXG4gICAgfSk7XG4gICAgaWYgKHNhbmRib3gudGltZW91dCA8IHNuYXBzaG90QmVmb3JlVGltZW91dE1zKSB7XG4gICAgICBzaG91bGRTbmFwc2hvdER1ZVRvVGltZW91dCA9IHRydWU7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4geyBhY3Rpb246IFwiZXhpdFwiLCByZWFzb246IFwibm90X2ZvdW5kXCIgfTtcbiAgfVxuXG4gIGlmIChzaG91bGRTbmFwc2hvdER1ZVRvSWRsZSB8fCBzaG91bGRTbmFwc2hvdER1ZVRvVGltZW91dCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzYW5kYm94ID0gYXdhaXQgVmVyY2VsU2FuZGJveFNESy5nZXQoe1xuICAgICAgICBzYW5kYm94SWQ6IGN1cnJlbnRTYW5kYm94SWQsXG4gICAgICAgIC4uLmdldFRlc3RDcmVkZW50aWFscygpLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBzbmFwc2hvdCA9IGF3YWl0IHNhbmRib3guc25hcHNob3QoKTtcbiAgICAgIGF3YWl0IHN0b3JhZ2Uuc2FuZGJveC5zZXQoe1xuICAgICAgICAuLi5yZWNvcmQsXG4gICAgICAgIGFjcXVpcmluZ0xvY2tJZDogbnVsbCxcbiAgICAgICAgYWNxdWlyaW5nTG9ja0F0OiBudWxsLFxuICAgICAgICBwcm92aWRlck1ldGFkYXRhOiB7XG4gICAgICAgICAgcHJvdmlkZXI6IFwidmVyY2VsXCIsXG4gICAgICAgICAgc2FuZGJveElkOiBudWxsLFxuICAgICAgICAgIHNuYXBzaG90SWQ6IHNuYXBzaG90LnNuYXBzaG90SWQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yID8gZSA6IG5ldyBFcnJvcihTdHJpbmcoZSkpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiBcImV4aXRcIixcbiAgICAgIHJlYXNvbjogc2hvdWxkU25hcHNob3REdWVUb0lkbGUgPyBcImlkbGVcIiA6IFwidGltZW91dFwiLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4geyBhY3Rpb246IFwiY29udGludWVcIiwgbmV4dFBvbGxNczogcG9sbEludGVydmFsTXMgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxxQkFBd0I7QUFBQTtBQUFBOzs7QUNBeEIsWUFFYSxzQkFLQSxjQUtBLHNCQUtBLGNBS0EsY0FLQTtBQTNCYjtBQUFBO0FBQUE7QUFBQSxhQUF3QjtBQUVqQixJQUFNLHVCQUFOLGNBQTBDLHlCQUFrQjtB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
|