@cartanova/qgrid-cli 2.9.5 → 2.9.6
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/bundle/dist/application/qgrid/qgrid-response-format.js +7 -7
- package/bundle/dist/application/qgrid/qgrid.types.js +14 -1
- package/bundle/dist/application/qgrid/tool-emulation.js +2 -1
- package/bundle/dist/utils/providers/openai/openai-backend-protocol.js +22 -3
- package/bundle/dist/utils/providers/openai/openai-dispatcher.js +7 -2
- package/bundle/dist/utils/providers/openai/openai-image-generation.js +4 -3
- package/bundle/src/application/qgrid/qgrid-response-format.test.ts +6 -1
- package/bundle/src/application/qgrid/qgrid-response-format.ts +8 -6
- package/bundle/src/application/qgrid/qgrid.types.ts +16 -6
- package/bundle/src/application/qgrid/tool-emulation.test.ts +7 -0
- package/bundle/src/application/qgrid/tool-emulation.ts +3 -1
- package/bundle/src/utils/providers/common/provider-dispatcher.ts +3 -1
- package/bundle/src/utils/providers/openai/openai-backend-protocol.test.ts +23 -0
- package/bundle/src/utils/providers/openai/openai-backend-protocol.ts +19 -2
- package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +19 -0
- package/bundle/src/utils/providers/openai/openai-dispatcher.ts +10 -1
- package/bundle/src/utils/providers/openai/openai-image-generation.test.ts +17 -0
- package/bundle/src/utils/providers/openai/openai-image-generation.ts +7 -1
- package/bundle/web-dist/client/assets/{index-BcCytvFf.js → index-BtVmANcA.js} +3 -3
- package/bundle/web-dist/client/assets/{logs-BkOilk5x.js → logs-BCuaLfPL.js} +1 -1
- package/bundle/web-dist/client/assets/{monit-8oCSLCdL.js → monit-BkGkzl6m.js} +1 -1
- package/bundle/web-dist/client/assets/{routes-DFIF4IoW.js → routes-DqY8SXcB.js} +1 -1
- package/bundle/web-dist/client/assets/{settings-nUI-DR3U.js → settings-DbkDAJfh.js} +1 -1
- package/bundle/web-dist/client/assets/{show-Bzx6Xkoc.js → show-Dx5JFzwy.js} +1 -1
- package/bundle/web-dist/client/assets/{tokens-DFWCL7Ts.js → tokens-DHahzDQJ.js} +1 -1
- package/bundle/web-dist/client/assets/{use-oauth-login-flow-B5MAjpVc.js → use-oauth-login-flow-Cjdnj_8D.js} +1 -1
- package/bundle/web-dist/client/index.html +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +1 -1
- package/package.json +1 -1
- package/skills/qgrid/SKILL.md +7 -0
- package/skills/qgrid/references/ai-sdk-provider-contract.md +3 -1
- package/skills/qgrid/references/openai-codex-runtime.md +1 -1
|
@@ -10,10 +10,7 @@ function escapeHtmlAttribute(value) {
|
|
|
10
10
|
function formatResponseForLog(result) {
|
|
11
11
|
return result.content.flatMap((item) => {
|
|
12
12
|
if (item.type === "text") return [item.text];
|
|
13
|
-
if (item.type === "image")
|
|
14
|
-
const alt = escapeHtmlAttribute(item.revisedPrompt ?? "generated image");
|
|
15
|
-
return [`<img src="data:image/png;base64,${item.data}" alt="${alt}" />`];
|
|
16
|
-
}
|
|
13
|
+
if (item.type === "image") return [formatImagePartForLog(item)];
|
|
17
14
|
return [];
|
|
18
15
|
}).filter((part) => part.length > 0).join("\n");
|
|
19
16
|
}
|
|
@@ -22,7 +19,7 @@ function getImageParts(result) {
|
|
|
22
19
|
}
|
|
23
20
|
function formatImagePartForLog(image) {
|
|
24
21
|
const alt = escapeHtmlAttribute(image.revisedPrompt ?? "generated image");
|
|
25
|
-
return `<img src="data
|
|
22
|
+
return `<img src="data:${image.mediaType ?? "image/png"};base64,${image.data}" alt="${alt}" />`;
|
|
26
23
|
}
|
|
27
24
|
function imageGenerationToolArgs(args, options = {}) {
|
|
28
25
|
const resolved = resolveImageGenerationOptions(args.imageGenerationOptions);
|
|
@@ -31,7 +28,10 @@ function imageGenerationToolArgs(args, options = {}) {
|
|
|
31
28
|
prompt: args.prompt,
|
|
32
29
|
...inputImages.length > 0 ? { inputImages } : {},
|
|
33
30
|
driverModel: args.model ?? null,
|
|
34
|
-
tool:
|
|
31
|
+
tool: {
|
|
32
|
+
...CODEX_IMAGE_GENERATION_TOOL_CONFIG,
|
|
33
|
+
...args.imageGenerationOptions?.outputFormat ? { outputFormat: args.imageGenerationOptions.outputFormat } : {}
|
|
34
|
+
},
|
|
35
35
|
...args.imageGenerationOptions ? { requestedOptions: args.imageGenerationOptions } : {},
|
|
36
36
|
...options.generation ? { observedGeneration: options.generation } : { pricingAssumption: {
|
|
37
37
|
model: CODEX_IMAGE_GENERATION_MODEL,
|
|
@@ -89,4 +89,4 @@ function base64ByteSize(value) {
|
|
|
89
89
|
//#endregion
|
|
90
90
|
export { CODEX_IMAGE_GENERATION_TOOL_CONFIG, buildImageGenerationToolSteps, formatImagePartForLog, formatResponseForLog, getImageParts, imageGenerationToolArgs };
|
|
91
91
|
|
|
92
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQtcmVzcG9uc2UtZm9ybWF0LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9xZ3JpZC9xZ3JpZC1yZXNwb25zZS1mb3JtYXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ09ERVhfSU1BR0VfR0VORVJBVElPTl9NT0RFTCxcbiAgcmVzb2x2ZUltYWdlR2VuZXJhdGlvbk9wdGlvbnMsXG59IGZyb20gXCIuL3FncmlkLWltYWdlLWdlbmVyYXRpb25cIjtcbmltcG9ydCB7XG4gIHR5cGUgSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEsXG4gIHR5cGUgUWdyaWRDb250ZW50LFxuICB0eXBlIFF1ZXJ5SW5wdXQsXG4gIHR5cGUgUXVlcnlPdXRwdXQsXG59IGZyb20gXCIuL3FncmlkLnR5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBDT0RFWF9JTUFHRV9HRU5FUkFUSU9OX1RPT0xfQ09ORklHID0ge1xuICB0eXBlOiBcImltYWdlX2dlbmVyYXRpb25cIixcbiAgb3V0cHV0Rm9ybWF0OiBcInBuZ1wiLFxufSBhcyBjb25zdDtcblxuZnVuY3Rpb24gZXNjYXBlSHRtbEF0dHJpYnV0ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKVxuICAgIC5yZXBsYWNlKC88L2csIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKC8+
|
|
92
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQtcmVzcG9uc2UtZm9ybWF0LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9xZ3JpZC9xZ3JpZC1yZXNwb25zZS1mb3JtYXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ09ERVhfSU1BR0VfR0VORVJBVElPTl9NT0RFTCxcbiAgcmVzb2x2ZUltYWdlR2VuZXJhdGlvbk9wdGlvbnMsXG59IGZyb20gXCIuL3FncmlkLWltYWdlLWdlbmVyYXRpb25cIjtcbmltcG9ydCB7XG4gIHR5cGUgSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEsXG4gIHR5cGUgUWdyaWRDb250ZW50LFxuICB0eXBlIFF1ZXJ5SW5wdXQsXG4gIHR5cGUgUXVlcnlPdXRwdXQsXG59IGZyb20gXCIuL3FncmlkLnR5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBDT0RFWF9JTUFHRV9HRU5FUkFUSU9OX1RPT0xfQ09ORklHID0ge1xuICB0eXBlOiBcImltYWdlX2dlbmVyYXRpb25cIixcbiAgb3V0cHV0Rm9ybWF0OiBcInBuZ1wiLFxufSBhcyBjb25zdDtcblxuZnVuY3Rpb24gZXNjYXBlSHRtbEF0dHJpYnV0ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKVxuICAgIC5yZXBsYWNlKC88L2csIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlc3BvbnNlRm9yTG9nKHJlc3VsdDogUXVlcnlPdXRwdXQpOiBzdHJpbmcge1xuICByZXR1cm4gcmVzdWx0LmNvbnRlbnRcbiAgICAuZmxhdE1hcCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJ0ZXh0XCIpIHJldHVybiBbaXRlbS50ZXh0XTtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IFwiaW1hZ2VcIikgcmV0dXJuIFtmb3JtYXRJbWFnZVBhcnRGb3JMb2coaXRlbSldO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pXG4gICAgLmZpbHRlcigocGFydCkgPT4gcGFydC5sZW5ndGggPiAwKVxuICAgIC5qb2luKFwiXFxuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VQYXJ0cyhyZXN1bHQ6IFF1ZXJ5T3V0cHV0KTogRXh0cmFjdDxRZ3JpZENvbnRlbnQsIHsgdHlwZTogXCJpbWFnZVwiIH0+W10ge1xuICByZXR1cm4gcmVzdWx0LmNvbnRlbnQuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnR5cGUgPT09IFwiaW1hZ2VcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRJbWFnZVBhcnRGb3JMb2coaW1hZ2U6IEV4dHJhY3Q8UWdyaWRDb250ZW50LCB7IHR5cGU6IFwiaW1hZ2VcIiB9Pik6IHN0cmluZyB7XG4gIGNvbnN0IGFsdCA9IGVzY2FwZUh0bWxBdHRyaWJ1dGUoaW1hZ2UucmV2aXNlZFByb21wdCA/PyBcImdlbmVyYXRlZCBpbWFnZVwiKTtcbiAgcmV0dXJuIGA8aW1nIHNyYz1cImRhdGE6JHtpbWFnZS5tZWRpYVR5cGUgPz8gXCJpbWFnZS9wbmdcIn07YmFzZTY0LCR7aW1hZ2UuZGF0YX1cIiBhbHQ9XCIke2FsdH1cIiAvPmA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZUdlbmVyYXRpb25Ub29sQXJncyhcbiAgYXJnczogUXVlcnlJbnB1dCxcbiAgb3B0aW9uczogeyBpbmNsdWRlSW5wdXRJbWFnZXM/OiBib29sZWFuOyBnZW5lcmF0aW9uPzogSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEgfSA9IHt9LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyhhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMpO1xuICBjb25zdCBpbnB1dEltYWdlcyA9XG4gICAgb3B0aW9ucy5pbmNsdWRlSW5wdXRJbWFnZXMgPT09IGZhbHNlID8gW10gOiBleHRyYWN0SW5wdXRJbWFnZXNGb3JUb29sQXJncyhhcmdzKTtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICBwcm9tcHQ6IGFyZ3MucHJvbXB0LFxuICAgIC4uLihpbnB1dEltYWdlcy5sZW5ndGggPiAwID8geyBpbnB1dEltYWdlcyB9IDoge30pLFxuICAgIGRyaXZlck1vZGVsOiBhcmdzLm1vZGVsID8/IG51bGwsXG4gICAgdG9vbDoge1xuICAgICAgLi4uQ09ERVhfSU1BR0VfR0VORVJBVElPTl9UT09MX0NPTkZJRyxcbiAgICAgIC4uLihhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnM/Lm91dHB1dEZvcm1hdFxuICAgICAgICA/IHsgb3V0cHV0Rm9ybWF0OiBhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMub3V0cHV0Rm9ybWF0IH1cbiAgICAgICAgOiB7fSksXG4gICAgfSxcbiAgICAuLi4oYXJncy5pbWFnZUdlbmVyYXRpb25PcHRpb25zID8geyByZXF1ZXN0ZWRPcHRpb25zOiBhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMgfSA6IHt9KSxcbiAgICAuLi4ob3B0aW9ucy5nZW5lcmF0aW9uXG4gICAgICA/IHsgb2JzZXJ2ZWRHZW5lcmF0aW9uOiBvcHRpb25zLmdlbmVyYXRpb24gfVxuICAgICAgOiB7XG4gICAgICAgICAgcHJpY2luZ0Fzc3VtcHRpb246IHtcbiAgICAgICAgICAgIG1vZGVsOiBDT0RFWF9JTUFHRV9HRU5FUkFUSU9OX01PREVMLFxuICAgICAgICAgICAgcXVhbGl0eTogcmVzb2x2ZWQucXVhbGl0eSxcbiAgICAgICAgICAgIHNpemU6IHJlc29sdmVkLnNpemUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRJbWFnZUdlbmVyYXRpb25Ub29sU3RlcHMoXG4gIGFyZ3M6IFF1ZXJ5SW5wdXQsXG4gIGltYWdlczogRXh0cmFjdDxRZ3JpZENvbnRlbnQsIHsgdHlwZTogXCJpbWFnZVwiIH0+W10sXG4gIHN0ZXBJbmRleDogbnVtYmVyLFxuKTogQXJyYXk8e1xuICBzdGVwX2luZGV4OiBudW1iZXI7XG4gIHR5cGU6IFwidG9vbF9jYWxsXCI7XG4gIHRvb2xfY2FsbF9pbmRleDogbnVtYmVyO1xuICB0b29sX2NhbGxfaWQ6IHN0cmluZztcbiAgdG9vbF9uYW1lOiBcImltYWdlX2dlbmVyYXRpb25cIjtcbiAgdG9vbF9hcmdzOiBzdHJpbmc7XG4gIHRvb2xfcmVzdWx0OiBzdHJpbmc7XG59PiB7XG4gIGlmIChpbWFnZXMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG5cbiAgcmV0dXJuIGltYWdlcy5tYXAoKGltYWdlLCBpbmRleCkgPT4gKHtcbiAgICBzdGVwX2luZGV4OiBzdGVwSW5kZXgsXG4gICAgdHlwZTogXCJ0b29sX2NhbGxcIixcbiAgICB0b29sX2NhbGxfaW5kZXg6IGluZGV4LFxuICAgIHRvb2xfY2FsbF9pZDogYGltYWdlX2dlbmVyYXRpb246JHtzdGVwSW5kZXh9OiR7aW5kZXh9YCxcbiAgICB0b29sX25hbWU6IFwiaW1hZ2VfZ2VuZXJhdGlvblwiLFxuICAgIHRvb2xfYXJnczogaW1hZ2VHZW5lcmF0aW9uVG9vbEFyZ3MoYXJncywge1xuICAgICAgaW5jbHVkZUlucHV0SW1hZ2VzOiBpbmRleCA9PT0gMCxcbiAgICAgIGdlbmVyYXRpb246IGltYWdlLmdlbmVyYXRpb24sXG4gICAgfSksXG4gICAgdG9vbF9yZXN1bHQ6IGZvcm1hdEltYWdlUGFydEZvckxvZyhpbWFnZSksXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElucHV0SW1hZ2VzRm9yVG9vbEFyZ3MoYXJnczogUXVlcnlJbnB1dCk6IEFycmF5PHtcbiAgbWVkaWFUeXBlPzogc3RyaW5nO1xuICBkYXRhPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG4gIGJ5dGVTaXplPzogbnVtYmVyO1xufT4ge1xuICBjb25zdCBpbWFnZXMgPSBhcmdzLmlucHV0Py5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udHlwZSA9PT0gXCJpbWFnZVwiKSA/PyBbXTtcbiAgcmV0dXJuIGltYWdlcy5tYXAoKGltYWdlKSA9PiB7XG4gICAgY29uc3QgZGF0YVVybCA9IHBhcnNlRGF0YVVybChpbWFnZS51cmwpO1xuICAgIGlmICghZGF0YVVybCkgcmV0dXJuIHsgdXJsOiBpbWFnZS51cmwgfTtcbiAgICBpZiAoZGF0YVVybC5pc0Jhc2U2NCAmJiBkYXRhVXJsLm1lZGlhVHlwZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJpbWFnZS9cIikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1lZGlhVHlwZTogZGF0YVVybC5tZWRpYVR5cGUsXG4gICAgICAgIGRhdGE6IGRhdGFVcmwuZGF0YSxcbiAgICAgICAgYnl0ZVNpemU6IGJhc2U2NEJ5dGVTaXplKGRhdGFVcmwuZGF0YSksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbWVkaWFUeXBlOiBkYXRhVXJsLm1lZGlhVHlwZSxcbiAgICAgIHVybDogYFtkYXRhLXVybCAke2ltYWdlLnVybC5sZW5ndGh9IGNoYXJzXWAsXG4gICAgICAuLi4oZGF0YVVybC5pc0Jhc2U2NCA/IHsgYnl0ZVNpemU6IGJhc2U2NEJ5dGVTaXplKGRhdGFVcmwuZGF0YSkgfSA6IHt9KSxcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VEYXRhVXJsKFxuICB2YWx1ZTogc3RyaW5nLFxuKTogeyBtZWRpYVR5cGU6IHN0cmluZzsgZGF0YTogc3RyaW5nOyBpc0Jhc2U2NDogYm9vbGVhbiB9IHwgbnVsbCB7XG4gIGNvbnN0IG1hdGNoID0gL15kYXRhOihbXjssXSspKCg/OjtbXixdKikqKSwoLiopJC9pcy5leGVjKHZhbHVlKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHBhcmFtcyA9IG1hdGNoWzJdIS50b0xvd2VyQ2FzZSgpLnNwbGl0KFwiO1wiKS5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiB7IG1lZGlhVHlwZTogbWF0Y2hbMV0hLCBkYXRhOiBtYXRjaFszXSEsIGlzQmFzZTY0OiBwYXJhbXMuaW5jbHVkZXMoXCJiYXNlNjRcIikgfTtcbn1cblxuZnVuY3Rpb24gYmFzZTY0Qnl0ZVNpemUodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSAvXFxzLy50ZXN0KHZhbHVlKSA/IHZhbHVlLnJlcGxhY2UoL1xccy9nLCBcIlwiKSA6IHZhbHVlO1xuICBjb25zdCBwYWRkaW5nID0gbm9ybWFsaXplZC5lbmRzV2l0aChcIj09XCIpID8gMiA6IG5vcm1hbGl6ZWQuZW5kc1dpdGgoXCI9XCIpID8gMSA6IDA7XG4gIHJldHVybiBNYXRoLm1heChNYXRoLmZsb29yKChub3JtYWxpemVkLmxlbmd0aCAqIDMpIC8gNCkgLSBwYWRkaW5nLCAwKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFXQSxNQUFhLHFDQUFxQztDQUNoRCxNQUFNO0NBQ04sY0FBYztBQUNoQjtBQUVBLFNBQVMsb0JBQW9CLE9BQXVCO0NBQ2xELE9BQU8sTUFDSixRQUFRLE1BQU0sT0FBTyxDQUFDLENBQ3RCLFFBQVEsTUFBTSxRQUFRLENBQUMsQ0FDdkIsUUFBUSxNQUFNLE1BQU0sQ0FBQyxDQUNyQixRQUFRLE1BQU0sTUFBTTtBQUN6QjtBQUVBLFNBQWdCLHFCQUFxQixRQUE2QjtDQUNoRSxPQUFPLE9BQU8sUUFDWCxTQUFTLFNBQVM7RUFDakIsSUFBSSxLQUFLLFNBQVMsUUFBUSxPQUFPLENBQUMsS0FBSyxJQUFJO0VBQzNDLElBQUksS0FBSyxTQUFTLFNBQVMsT0FBTyxDQUFDLHNCQUFzQixJQUFJLENBQUM7RUFDOUQsT0FBTyxDQUFDO0NBQ1YsQ0FBQyxDQUFDLENBQ0QsUUFBUSxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FDakMsS0FBSyxJQUFJO0FBQ2Q7QUFFQSxTQUFnQixjQUFjLFFBQWlFO0NBQzdGLE9BQU8sT0FBTyxRQUFRLFFBQVEsU0FBUyxLQUFLLFNBQVMsT0FB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
|
|
@@ -45,6 +45,11 @@ const QgridContent = z.discriminatedUnion("type", [
|
|
|
45
45
|
z.object({
|
|
46
46
|
type: z.literal("image"),
|
|
47
47
|
data: z.string(),
|
|
48
|
+
mediaType: z.enum([
|
|
49
|
+
"image/png",
|
|
50
|
+
"image/jpeg",
|
|
51
|
+
"image/webp"
|
|
52
|
+
]).optional(),
|
|
48
53
|
revisedPrompt: z.string().nullish(),
|
|
49
54
|
generation: ImageGenerationMetadata.optional()
|
|
50
55
|
})
|
|
@@ -79,7 +84,15 @@ const ImageGenerationOptions = z.object({
|
|
|
79
84
|
"auto",
|
|
80
85
|
"opaque",
|
|
81
86
|
"transparent"
|
|
87
|
+
]).optional(),
|
|
88
|
+
outputFormat: z.enum([
|
|
89
|
+
"png",
|
|
90
|
+
"jpeg",
|
|
91
|
+
"webp"
|
|
82
92
|
]).optional()
|
|
93
|
+
}).refine((options) => options.background !== "transparent" || !options.outputFormat || options.outputFormat === "png", {
|
|
94
|
+
message: "Transparent image generation only supports PNG output",
|
|
95
|
+
path: ["outputFormat"]
|
|
83
96
|
});
|
|
84
97
|
const QgridInputPart = z.discriminatedUnion("type", [z.object({
|
|
85
98
|
type: z.literal("text"),
|
|
@@ -319,4 +332,4 @@ function maskToken(token) {
|
|
|
319
332
|
//#endregion
|
|
320
333
|
export { AppendStepInput, CostSource, CreateRunInput, Effort, FinishReason, FinishRunInput, HealthResponse, ImageGenerationMetadata, ImageGenerationOptions, ImageGenerationQuality, ImageGenerationSize, MAX_QUERY_TIMEOUT_MS, ModelFallback, OAuthStartResult, ProcessError, ProviderStartupState, QgridContent, QgridInputPart, QgridRunContext, QgridThreadCoord, QgridTool, QgridToolResultInput, QueryInput, QueryOutput, QueryTimeoutMs, QuotaError, QuotaThresholdExceededError, ReasoningSummary, ServiceTier, StreamEvents, SubscriberStatus, TimeoutError, TokenStats, UsageResponse, Verbosity, maskToken };
|
|
321
334
|
|
|
322
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8vIOKUgOKUgOKUgCBRdWVyeSDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IEVmZm9ydCA9IHouZW51bShbXCJsb3dcIiwgXCJtZWRpdW1cIiwgXCJoaWdoXCJdKTtcbmV4cG9ydCB0eXBlIEVmZm9ydCA9IHouaW5mZXI8dHlwZW9mIEVmZm9ydD47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZFRvb2wgPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGlucHV0U2NoZW1hOiB6LnVua25vd24oKSxcbn0pO1xuZXhwb3J0IHR5cGUgUWdyaWRUb29sID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUb29sPjtcblxuLy8gT2JzZXJ2ZWQgc3RhbmRhbG9uZSBJbWFnZXMgcmVzcG9uc2UgdmFsdWVzLCBkaXN0aW5jdCBmcm9tIHJlcXVlc3RlZCBnZW5lcmF0aW9uIGhpbnRzLlxuZXhwb3J0IGNvbnN0IEltYWdlR2VuZXJhdGlvbk1ldGFkYXRhID0gei5vYmplY3Qoe1xuICByb3V0ZTogei5saXRlcmFsKFwiY29kZXgtaW1hZ2VzXCIpLFxuICBtb2RlbDogei5saXRlcmFsKFwiZ3B0LWltYWdlLTJcIiksXG4gIGJhY2tncm91bmQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcXVhbGl0eTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzaXplOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzYWdlOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBpbnB1dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgIG91dHB1dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgIHRvdGFsX3Rva2Vuczogei5udW1iZXIoKS5ub25uZWdhdGl2ZSgpLFxuICAgICAgaW5wdXRfdG9rZW5zX2RldGFpbHM6IHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgaW1hZ2VfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCksXG4gICAgICAgICAgdGV4dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgICAgICBjYWNoZWRfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCkub3B0aW9uYWwoKSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgICBvdXRwdXRfdG9rZW5zX2RldGFpbHM6IHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgaW1hZ2VfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCksXG4gICAgICAgICAgdGV4dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEgPSB6LmluZmVyPHR5cGVvZiBJbWFnZUdlbmVyYXRpb25NZXRhZGF0YT47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZENvbnRlbnQgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwidGV4dFwiKSxcbiAgICB0ZXh0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInRvb2wtY2FsbFwiKSxcbiAgICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICAgIHRvb2xOYW1lOiB6LnN0cmluZygpLFxuICAgIGlucHV0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcImltYWdlXCIpLFxuICAgIC8vIENvZGV4IGltYWdlX2dlbmVyYXRpb24gcmVzdWx0IGJhc2U2NC4gcWdyaWQg64qUIO2PrOunty/tmZXsnqXsnpAg7LGF7J6E7J2EIOyngOyngCDslYrripTri6QuXG4gICAgZGF0YTogei5zdHJpbmcoKSxcbiAgICByZXZpc2VkUHJvbXB0OiB6LnN0cmluZygpLm51bGxpc2goKSxcbiAgICBnZW5lcmF0aW9uOiBJbWFnZUdlbmVyYXRpb25NZXRhZGF0YS5vcHRpb25hbCgpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUWdyaWRDb250ZW50ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRDb250ZW50PjtcblxuZXhwb3J0IGNvbnN0IEZpbmlzaFJlYXNvbiA9IHouZW51bShbXCJzdG9wXCIsIFwidG9vbC1jYWxsc1wiXSk7XG5leHBvcnQgdHlwZSBGaW5pc2hSZWFzb24gPSB6LmluZmVyPHR5cGVvZiBGaW5pc2hSZWFzb24+O1xuXG5leHBvcnQgY29uc3QgVmVyYm9zaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgVmVyYm9zaXR5ID0gei5pbmZlcjx0eXBlb2YgVmVyYm9zaXR5PjtcblxuZXhwb3J0IGNvbnN0IFJlYXNvbmluZ1N1bW1hcnkgPSB6LmVudW0oW1wiYXV0b1wiLCBcImNvbmNpc2VcIiwgXCJkZXRhaWxlZFwiLCBcIm5vbmVcIl0pO1xuZXhwb3J0IHR5cGUgUmVhc29uaW5nU3VtbWFyeSA9IHouaW5mZXI8dHlwZW9mIFJlYXNvbmluZ1N1bW1hcnk+O1xuXG5leHBvcnQgY29uc3QgU2VydmljZVRpZXIgPSB6LmVudW0oW1wiZmFzdFwiLCBcImZsZXhcIl0pO1xuZXhwb3J0IHR5cGUgU2VydmljZVRpZXIgPSB6LmluZmVyPHR5cGVvZiBTZXJ2aWNlVGllcj47XG5cbmV4cG9ydCBjb25zdCBJbWFnZUdlbmVyYXRpb25RdWFsaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblF1YWxpdHk+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouZW51bShbXCIxMDI0eDEwMjRcIiwgXCIxMDI0eDE1MzZcIiwgXCIxNTM2eDEwMjRcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblNpemU+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgcXVhbGl0eTogSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eS5vcHRpb25hbCgpLFxuICBzaXplOiBJbWFnZUdlbmVyYXRpb25TaXplLm9wdGlvbmFsKCksXG4gIGJhY2tncm91bmQ6IHouZW51bShbXCJhdXRvXCIsIFwib3BhcXVlXCIsIFwidHJhbnNwYXJlbnRcIl0pLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEltYWdlR2VuZXJhdGlvbk9wdGlvbnMgPSB6LmluZmVyPHR5cGVvZiBJbWFnZUdlbmVyYXRpb25PcHRpb25zPjtcblxuZXhwb3J0IGNvbnN0IFFncmlkSW5wdXRQYXJ0ID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInRleHRcIiksXG4gICAgdGV4dDogei5zdHJpbmcoKSxcbiAgICB0ZXh0X2VsZW1lbnRzOiB6LmFycmF5KHoubmV2ZXIoKSkuZGVmYXVsdChbXSksXG4gIH0pLFxuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwiaW1hZ2VcIiksXG4gICAgdXJsOiB6LnN0cmluZygpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUWdyaWRJbnB1dFBhcnQgPSB6LmluZmVyPHR5cGVvZiBRZ3JpZElucHV0UGFydD47XG5cbmV4cG9ydCBjb25zdCBNQVhfUVVFUllfVElNRU9VVF9NUyA9IDMwICogNjBfMDAwO1xuZXhwb3J0IGNvbnN0IFF1ZXJ5VGltZW91dE1zID0gei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLm1heChNQVhfUVVFUllfVElNRU9VVF9NUyk7XG5cbi8vIOKUgOKUgOKUgCBSdW4gTGlmZWN5Y2xlIENvbnRleHQgKFNESyDihpQgU2VydmVyIGNvbnRyYWN0KSDilIDilIDilIBcblxuLy8gT3BlbkFJIGNhY2hlIGFmZmluaXR5IOyijO2RnCjqtawgY29kZXggdGhyZWFkIOyijO2RnCkuIHByb21wdF9jYWNoZV9rZXkg66W8IOqzoOygle2VtFxuLy8gT3BlbkFJIHByb21wdCBjYWNoaW5nIOydhCDsgrTrpqzquLAg7JyE7ZWcIO2VuOuTpC4g7ISc67KE6rCAIOuwnOq4ie2VmOqzoCDtgbTrnbzqsIAg64uk7J2MIOyalOyyreyXkCDqt7jrjIDroZwg7ZqM7Iah7ZWc64ukLlxuLy8g7ZW465OkIOuvuOyghOyGoSDsi5wg6riw7KG0IFwi66ekIHR1cm4g7IOIIHRocmVhZCArIGhpc3RvcnkgaW5qZWN0XCIg64+Z7J6R7Jy866GcIO2PtOuwsShRZ3JpZFJ1bkNvbnRleHQg7LC47KGwKS5cbmV4cG9ydCBjb25zdCBRZ3JpZFRocmVhZENvb3JkID0gei5vYmplY3Qoe1xuICB3b3JrZXJJZDogei5udW1iZXIoKSwgLy8g6rOg7KCVIOudvOyasO2MhSAodGhyZWFkIOuKlCB3b3JrZXIg7ZSE66Gc7IS47IqkIOuplOuqqOumrOyXkOunjCDsobTsnqwpXG4gIHRocmVhZElkOiB6LnN0cmluZygpLCAvLyBvcGFxdWUgY2FjaGUgYWZmaW5pdHkga2V5ID0gcHJvbXB0X2NhY2hlX2tleVxuICBlcG9jaDogei5udW1iZXIoKSwgLy8gd29ya2VyIHNwYXduIOy5tOyatO2EsC4gcmVzdGFydCDroZwgdGhyZWFkIOymneuwnCDqsJDsp4BcbiAgc3lzdGVtSGFzaDogei5zdHJpbmcoKSwgLy8gc3lzdGVtX3Byb21wdCDtlbTsi5wuIOuLpOuluCDrjIDtmZQg7Jik7KCR7IaNIOuwqeyngFxufSk7XG5leHBvcnQgdHlwZSBRZ3JpZFRocmVhZENvb3JkID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUaHJlYWRDb29yZD47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZFJ1bkNvbnRleHQgPSB6Lm9iamVjdCh7XG4gIC8vIHRvb2wtY2FsbCBydW7snYQg6rOE7IaN7ZWgIOuVjOunjCDrsJzquIkuIOydvOuwmCDrjIDtmZTripQgdGhyZWFkQ29vcmQg66eMIOyZleuztS5cbiAgcmVxdWVzdExvZ0lkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRocmVhZENvb3JkOiBRZ3JpZFRocmVhZENvb3JkLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFFncmlkUnVuQ29udGV4dCA9IHouaW5mZXI8dHlwZW9mIFFncmlkUnVuQ29udGV4dD47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZFRvb2xSZXN1bHRJbnB1dCA9IHoub2JqZWN0KHtcbiAgdG9vbENhbGxJZDogei5zdHJpbmcoKSxcbiAgdG9vbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgb3V0cHV0OiB6LnN0cmluZygpLFxuICBpc0Vycm9yOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBRZ3JpZFRvb2xSZXN1bHRJbnB1dCA9IHouaW5mZXI8dHlwZW9mIFFncmlkVG9vbFJlc3VsdElucHV0PjtcblxuZXhwb3J0IGNvbnN0IFF1ZXJ5SW5wdXQgPSB6Lmxvb3NlT2JqZWN0KHtcbiAgc3lzdGVtOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb21wdDogei5zdHJpbmcoKSxcbiAgaW5wdXQ6IHouYXJyYXkoUWdyaWRJbnB1dFBhcnQpLm9wdGlvbmFsKCksXG4gIG1vZGVsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRpbWVvdXQ6IFF1ZXJ5VGltZW91dE1zLm9wdGlvbmFsKCksXG4gIGpzb25TY2hlbWE6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdG9vbHM6IHouYXJyYXkoUWdyaWRUb29sKS5vcHRpb25hbCgpLFxuICBlZmZvcnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdmVyYm9zaXR5OiBWZXJib3NpdHkub3B0aW9uYWwoKSxcbiAgcmVhc29uaW5nU3VtbWFyeTogUmVhc29uaW5nU3VtbWFyeS5vcHRpb25hbCgpLFxuICBzZXJ2aWNlVGllcjogU2VydmljZVRpZXIub3B0aW9uYWwoKSxcbiAgaGlzdG9yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwcm9qZWN0TmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAvLyByYXcvZGFzaGJvYXJk7JmAIOqzteqwnCBBSSBTREsgcHJvdmlkZXJPcHRpb25zLnFncmlkLnRva2VuTmFtZeydtCDqs7XsnKDtlZjripQg7KeA7KCVIOyjvOyGjC5cbiAgdG9rZW5OYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIC8vIFNESy1kZXJpdmVkIG9wYXF1ZSBhZmZpbml0eS4gSXQgaXMgaW50ZW50aW9uYWxseSBkaXN0aW5jdCBmcm9tIHRoZSBjYWxsZXIncyBzZXNzaW9uS2V5LlxuICBjYWNoZUFmZmluaXR5S2V5OiB6XG4gICAgLnN0cmluZygpXG4gICAgLnJlZ2V4KC9eWzAtOWEtZl17NjR9JC8pXG4gICAgLm9wdGlvbmFsKCksXG4gIC8vIOyDneuete2VmOuptCDroZzquYXtlZzri6QuIGZhbHNl64qUIHJlcXVlc3QgbG9nIOyTsOq4sOunjCDrgYTqs6AgZGlzcGF0Y2gvdGhyZWFk64qUIOycoOyngO2VnOuLpC5cbiAgbG9nZ2VyOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBydW5Db250ZXh0OiBRZ3JpZFJ1bkNvbnRleHQub3B0aW9uYWwoKSxcbiAgdG9vbFJlc3VsdHM6IHouYXJyYXkoUWdyaWRUb29sUmVzdWx0SW5wdXQpLm9wdGlvbmFsKCksXG4gIC8vIE9wZW5BSSBSZXNwb25zZXMgaW1hZ2VfZ2VuZXJhdGlvbiB0b29sIOydhCDsvKDri6QoT3BlbkFJIOqyveuhnCDsoITsmqksIG9wdC1pbiwgbm9uLXN0cmVhbSkuXG4gIGltYWdlR2VuZXJhdGlvbjogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgLy8gcWdyaWQg6rCA6rKpIOy2lOyglSDrsI8gQ29kZXgg7J2066+47KeAIOyalOyyrSDtnoztirguIOydtOuvuOyngCDrqqjrjbjsnYAgZ3B0LWltYWdlLTIg66GcIOqzoOyglSDqsIDsoJXtlZzri6QuXG4gIGltYWdlR2VuZXJhdGlvbk9wdGlvbnM6IEltYWdlR2VuZXJhdGlvbk9wdGlvbnMub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUXVlcnlJbnB1dCA9IHouaW5mZXI8dHlwZW9mIFF1ZXJ5SW5wdXQ+O1xuXG5leHBvcnQgY29uc3QgTW9kZWxGYWxsYmFjayA9IHoub2JqZWN0KHtcbiAgdHJpZ2dlcjogei5saXRlcmFsKFwicmVmdXNhbFwiKSxcbiAgZnJvbU1vZGVsOiB6LnN0cmluZygpLFxuICB0b01vZGVsOiB6LnN0cmluZygpLFxuICBjYXRlZ29yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBleHBsYW5hdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBNb2RlbEZhbGxiYWNrID0gei5pbmZlcjx0eXBlb2YgTW9kZWxGYWxsYmFjaz47XG5cbmV4cG9ydCBjb25zdCBDb3N0U291cmNlID0gei5lbnVtKFtcInByb3ZpZGVyXCIsIFwicHJpY2luZ190YWJsZVwiLCBcIm1peGVkXCJdKTtcbmV4cG9ydCB0eXBlIENvc3RTb3VyY2UgPSB6LmluZmVyPHR5cGVvZiBDb3N0U291cmNlPjtcblxuZXhwb3J0IGNvbnN0IFF1ZXJ5T3V0cHV0ID0gei5vYmplY3Qoe1xuICB0ZXh0OiB6LnN0cmluZygpLFxuICBjb250ZW50OiB6LmFycmF5KFFncmlkQ29udGVudCksXG4gIGZpbmlzaFJlYXNvbjogRmluaXNoUmVhc29uLFxuICB0b2tlbk5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVxdWVzdGVkTW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbW9kZWxGYWxsYmFja3M6IHouYXJyYXkoTW9kZWxGYWxsYmFjaykub3B0aW9uYWwoKSxcbiAgdXNhZ2U6IHoub2JqZWN0KHtcbiAgICBpbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgb3V0cHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICByZWFzb25pbmdfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgIGNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICBjYWNoZV9jcmVhdGlvbl81bV9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBjYWNoZV9jcmVhdGlvbl8xaF9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBjYWNoZV9yZWFkX2lucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgfSksXG4gIGR1cmF0aW9uTXM6IHoubnVtYmVyKCksXG4gIHR0ZnRNczogei5udW1iZXIoKSxcbiAgY29zdFVzZDogei5udW1iZXIoKSxcbiAgY29zdFNvdXJjZTogQ29zdFNvdXJjZSxcbiAgcnVuQ29udGV4dDogUWdyaWRSdW5Db250ZXh0Lm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFF1ZXJ5T3V0cHV0ID0gei5pbmZlcjx0eXBlb2YgUXVlcnlPdXRwdXQ+O1xuXG4vLyDilIDilIDilIAgU3RyZWFtIEV2ZW50cyDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IFN0cmVhbUV2ZW50cyA9IHoub2JqZWN0KHtcbiAgZGVsdGE6IHoub2JqZWN0KHsgdGV4dDogei5zdHJpbmcoKSB9KSxcbiAgdG9vbENhbGw6IHoub2JqZWN0KHtcbiAgICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICAgIHRvb2xOYW1lOiB6LnN0cmluZygpLFxuICAgIGlucHV0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgZG9uZTogei5vYmplY3Qoe1xuICAgIHRleHQ6IHouc3RyaW5nKCksXG4gICAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICByZXF1ZXN0ZWRNb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG1vZGVsRmFsbGJhY2tzOiB6LmFycmF5KE1vZGVsRmFsbGJhY2spLm9wdGlvbmFsKCksXG4gICAgdG9rZW5OYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZmluaXNoUmVhc29uOiBGaW5pc2hSZWFzb24sXG4gICAgdXNhZ2U6IHoub2JqZWN0KHtcbiAgICAgIGlucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICAgIG91dHB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgICByZWFzb25pbmdfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgICAgY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgICAgY2FjaGVfY3JlYXRpb25fNW1faW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgICBjYWNoZV9jcmVhdGlvbl8xaF9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICAgIGNhY2hlX3JlYWRfaW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgIH0pLFxuICAgIGR1cmF0aW9uTXM6IHoubnVtYmVyKCksXG4gICAgdHRmdE1zOiB6Lm51bWJlcigpLFxuICAgIGNvc3RVc2Q6IHoubnVtYmVyKCksXG4gICAgY29zdFNvdXJjZTogQ29zdFNvdXJjZSxcbiAgICBjb250ZW50OiB6LmFycmF5KFFncmlkQ29udGVudCksXG4gICAgcnVuQ29udGV4dDogUWdyaWRSdW5Db250ZXh0Lm9wdGlvbmFsKCksXG4gIH0pLFxuICBlcnJvcjogei5vYmplY3QoeyBtZXNzYWdlOiB6LnN0cmluZygpIH0pLFxufSk7XG5leHBvcnQgdHlwZSBTdHJlYW1FdmVudHMgPSB6LmluZmVyPHR5cGVvZiBTdHJlYW1FdmVudHM+O1xuXG4vLyDilIDilIDilIAgUnVuIExpZmVjeWNsZSDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVJ1bklucHV0ID0gei5vYmplY3Qoe1xuICB1c2VyUHJvbXB0OiB6LnN0cmluZygpLFxuICBzeXN0ZW1Qcm9tcHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbW9kZWxOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGVmZm9ydDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwcm9qZWN0TmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBoaXN0b3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGlzU3RydWN0dXJlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAganNvblNjaGVtYTogei5zdHJpbmcoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIENyZWF0ZVJ1bklucHV0ID0gei5pbmZlcjx0eXBlb2YgQ3JlYXRlUnVuSW5wdXQ+O1xuXG5leHBvcnQgY29uc3QgQXBwZW5kU3RlcElucHV0ID0gei5vYmplY3Qoe1xuICByZXF1ZXN0TG9nSWQ6IHoubnVtYmVyKCksXG4gIHN0ZXBJbmRleDogei5udW1iZXIoKSxcbiAgdHlwZTogei5lbnVtKFtcImdlbmVyYXRlXCIsIFwidG9vbF9jYWxsXCJdKSxcbiAgbW9kZWxOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlcXVlc3RlZE1vZGVsTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBmYWxsYmFja0NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGlucHV0VG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIG91dHB1dFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjYWNoZVJlYWRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY2FjaGVDcmVhdGlvblRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjYWNoZUNyZWF0aW9uNW1Ub2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY2FjaGVDcmVhdGlvbjFoVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNvc3RVc2Q6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY29zdFNvdXJjZTogQ29zdFNvdXJjZS5vcHRpb25hbCgpLFxuICBkdXJhdGlvbk1zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHR0ZnRNczogei5udW1iZXIoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIGZpbmlzaFJlYXNvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICByZWFzb25pbmdUZXh0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlYXNvbmluZ1Rva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0b29sQ2FsbEluZGV4OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvb2xDYWxsSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdG9vbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdG9vbEFyZ3M6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdG9vbFJlc3VsdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sRHVyYXRpb25Nczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBlcnJvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBBcHBlbmRTdGVwSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBBcHBlbmRTdGVwSW5wdXQ+O1xuXG5leHBvcnQgY29uc3QgRmluaXNoUnVuSW5wdXQgPSB6Lm9iamVjdCh7XG4gIHJlcXVlc3RMb2dJZDogei5udW1iZXIoKSxcbiAgc3RhdHVzOiB6LmVudW0oW1wic3VjY2VlZGVkXCIsIFwiZXJyb3JcIiwgXCJhYm9ydGVkXCJdKSxcbiAgcmVzcG9uc2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdG9rZW5OYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1vZGVsTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICByZXF1ZXN0ZWRNb2RlbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZmFsbGJhY2tDb3VudDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0b3RhbElucHV0VG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsT3V0cHV0VG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsQ2FjaGVSZWFkVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsQ2FjaGVDcmVhdGlvblRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0b3RhbENhY2hlQ3JlYXRpb241bVRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0b3RhbENhY2hlQ3JlYXRpb24xaFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjb3N0VXNkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNvc3RTb3VyY2U6IENvc3RTb3VyY2Uub3B0aW9uYWwoKSxcbiAgdG90YWxEdXJhdGlvbk1zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGhpc3Rvcnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZXJyb3JNZXNzYWdlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlc3BvbnNlSnNvbk9rOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBGaW5pc2hSdW5JbnB1dCA9IHouaW5mZXI8dHlwZW9mIEZpbmlzaFJ1bklucHV0PjtcblxuLy8g4pSA4pSA4pSAIFRva2VuIE1hbmFnZW1lbnQg4pSA4pSA4pSAXG5cbmV4cG9ydCBjb25zdCBUb2tlblN0YXRzID0gei5vYmplY3Qoe1xuICB0b2tlbjogei5zdHJpbmcoKSxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgcHJvdmlkZXI6IHouc3RyaW5nKCksXG4gIHJlcXVlc3RzOiB6Lm51bWJlcigpLFxufSk7XG5leHBvcnQgdHlwZSBUb2tlblN0YXRzID0gei5pbmZlcjx0eXBlb2YgVG9rZW5TdGF0cz47XG5cbi8vIOKUgOKUgOKUgCBPQXV0aCDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IE9BdXRoU3RhcnRSZXN1bHQgPSB6Lm9iamVjdCh7XG4gIGF1dGhVcmw6IHouc3RyaW5nKCksXG4gIC8vIHJlZGlyZWN0OiDruIzrnbzsmrDsoIAg7J6Q64+ZIOuzteq3gCjro6jtlITrsLEg7KCR7IaNKS4gY29kZTog7L2Y7IaUIOy9nOuwsSArIOy9lOuTnCDrtpnsl6zrhKPquLAo7JuQ6rKpIOygkeyGjSkuXG4gIC8vIE9wZW5BSSDsm5Dqsqkg6rK966Gc64qUIOuTseuhneuQnCBsb29wYmFjayBjYWxsYmFjayBVUkwg7KCE7LK066W8IOu2meyXrOuEo+uKlCBjb2RlIOuqqOuTnOulvCDsk7Tri6QuXG4gIG1vZGU6IHouZW51bShbXCJyZWRpcmVjdFwiLCBcImNvZGVcIl0pLFxufSk7XG5leHBvcnQgdHlwZSBPQXV0aFN0YXJ0UmVzdWx0ID0gei5pbmZlcjx0eXBlb2YgT0F1dGhTdGFydFJlc3VsdD47XG5cbmNvbnN0IFJhdGVXaW5kb3cgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHV0aWxpemF0aW9uOiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gICAgcmVzZXRzQXQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICB3aW5kb3dEdXJhdGlvbk1pbnM6IHoubnVtYmVyKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICB9KVxuICAubnVsbGFibGUoKTtcblxuZXhwb3J0IGNvbnN0IFVzYWdlUmVzcG9uc2UgPSB6Lm9iamVjdCh7XG4gIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb3ZpZGVyOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZpdmVIb3VyOiBSYXRlV2luZG93Lm9wdGlvbmFsKCksXG4gIHNldmVuRGF5OiBSYXRlV2luZG93Lm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFVzYWdlUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBVc2FnZVJlc3BvbnNlPjtcblxuLy8g4pSA4pSA4pSAIEhlYWx0aCDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IFN1YnNjcmliZXJTdGF0dXMgPSB6Lm9iamVjdCh7XG4gIGNvbm5lY3RlZDogei5ib29sZWFuKCksXG4gIGNvbm5lY3RlZEF0OiB6LmRhdGUoKS5udWxsYWJsZSgpLFxuICBsYXN0UmVjb25jaWxlQXQ6IHouZGF0ZSgpLm51bGxhYmxlKCksXG4gIGF0dGVtcHQ6IHoubnVtYmVyKCksXG59KTtcbmV4cG9ydCB0eXBlIFN1YnNjcmliZXJTdGF0dXMgPSB6LmluZmVyPHR5cGVvZiBTdWJzY3JpYmVyU3RhdHVzPjtcblxuZXhwb3J0IGNvbnN0IFByb3ZpZGVyU3RhcnR1cFN0YXRlID0gei5lbnVtKFtcInN0YXJ0aW5nXCIsIFwicmVhZHlcIiwgXCJmYWlsZWRcIl0pO1xuZXhwb3J0IHR5cGUgUHJvdmlkZXJTdGFydHVwU3RhdGUgPSB6LmluZmVyPHR5cGVvZiBQcm92aWRlclN0YXJ0dXBTdGF0ZT47XG5cbmV4cG9ydCBjb25zdCBIZWFsdGhSZXNwb25zZSA9IHoub2JqZWN0KHtcbiAgc3RhdHVzOiB6LnN0cmluZygpLFxuICBhY3RpdmVUb2tlbnM6IHoubnVtYmVyKCksXG4gIHN1YnNjcmliZXI6IFN1YnNjcmliZXJTdGF0dXMubnVsbGFibGUoKSxcbiAgLy8gSFRUUCDrpqzsiqTri53snYAgZGlzcGF0Y2hlciDquLDrj5nrs7Tri6Qg66i87KCAIOyXtOumsOuLpC4gMjAwIOydkeuLteunjOycvOuhnOuKlCDsmpTssq3snYQg7LKY66as7ZWgIOyImFxuICAvLyDsnojripTsp4Ag7JWMIOyImCDsl4bslrQgcHJvdmlkZXIg67OEIOykgOu5hCDsg4Htg5zrpbwg7ZWo6ruYIOuFuOy2nO2VnOuLpC5cbiAgcmVhZHk6IHouYm9vbGVhbigpLFxuICBwcm92aWRlcnM6IHoub2JqZWN0KHtcbiAgICBvcGVuYWk6IFByb3ZpZGVyU3RhcnR1cFN0YXRlLFxuICAgIGFudGhyb3BpYzogUHJvdmlkZXJTdGFydHVwU3RhdGUsXG4gIH0pLFxufSk7XG5leHBvcnQgdHlwZSBIZWFsdGhSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIEhlYWx0aFJlc3BvbnNlPjtcblxuLy8g4pSA4pSA4pSAIEVycm9ycyDilIDilIDilIBcblxuZXhwb3J0IGNsYXNzIFF1b3RhRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGNvZGUgPSBcIlFVT1RBX0VYSEFVU1RFRFwiIGFzIGNvbnN0O1xufVxuZXhwb3J0IGNsYXNzIFF1b3RhVGhyZXNob2xkRXhjZWVkZWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgY29kZSA9IFwiUVVPVEFfVEhSRVNIT0xEX0VYQ0VFREVEXCIgYXMgY29uc3Q7XG59XG5leHBvcnQgY2xhc3MgVGltZW91dEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBjb2RlID0gXCJUSU1FT1VUXCIgYXMgY29uc3Q7XG59XG5leHBvcnQgY2xhc3MgUHJvY2Vzc0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBjb2RlID0gXCJQUk9DRVNTX0VSUk9SXCIgYXMgY29uc3Q7XG59XG5cbi8vIOKUgOKUgOKUgCBVdGlscyDilIDilIDilIBcblxuZXhwb3J0IGZ1bmN0aW9uIG1hc2tUb2tlbih0b2tlbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRva2VuLmxlbmd0aCA+IDQgPyBgLi4uJHt0b2tlbi5zbGljZSgtNCl9YCA6IHRva2VuO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUlBLE1BQWEsU0FBUyxFQUFFLEtBQUs7Q0FBQztDQUFPO0NBQVU7QUFBTSxDQUFDO0FBR3RELE1BQWEsWUFBWSxFQUFFLE9BQU87Q0FDaEMsTUFBTSxFQUFFLE9BQU87Q0FDZixhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUztDQUNqQyxhQUFhLEVBQUUsUUFBUTtBQUN6QixDQUFD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
|
|
335
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8vIOKUgOKUgOKUgCBRdWVyeSDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IEVmZm9ydCA9IHouZW51bShbXCJsb3dcIiwgXCJtZWRpdW1cIiwgXCJoaWdoXCJdKTtcbmV4cG9ydCB0eXBlIEVmZm9ydCA9IHouaW5mZXI8dHlwZW9mIEVmZm9ydD47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZFRvb2wgPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGlucHV0U2NoZW1hOiB6LnVua25vd24oKSxcbn0pO1xuZXhwb3J0IHR5cGUgUWdyaWRUb29sID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUb29sPjtcblxuLy8gT2JzZXJ2ZWQgc3RhbmRhbG9uZSBJbWFnZXMgcmVzcG9uc2UgdmFsdWVzLCBkaXN0aW5jdCBmcm9tIHJlcXVlc3RlZCBnZW5lcmF0aW9uIGhpbnRzLlxuZXhwb3J0IGNvbnN0IEltYWdlR2VuZXJhdGlvbk1ldGFkYXRhID0gei5vYmplY3Qoe1xuICByb3V0ZTogei5saXRlcmFsKFwiY29kZXgtaW1hZ2VzXCIpLFxuICBtb2RlbDogei5saXRlcmFsKFwiZ3B0LWltYWdlLTJcIiksXG4gIGJhY2tncm91bmQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcXVhbGl0eTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzaXplOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzYWdlOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBpbnB1dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgIG91dHB1dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgIHRvdGFsX3Rva2Vuczogei5udW1iZXIoKS5ub25uZWdhdGl2ZSgpLFxuICAgICAgaW5wdXRfdG9rZW5zX2RldGFpbHM6IHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgaW1hZ2VfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCksXG4gICAgICAgICAgdGV4dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgICAgICBjYWNoZWRfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCkub3B0aW9uYWwoKSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgICBvdXRwdXRfdG9rZW5zX2RldGFpbHM6IHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgaW1hZ2VfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCksXG4gICAgICAgICAgdGV4dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEgPSB6LmluZmVyPHR5cGVvZiBJbWFnZUdlbmVyYXRpb25NZXRhZGF0YT47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZENvbnRlbnQgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwidGV4dFwiKSxcbiAgICB0ZXh0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInRvb2wtY2FsbFwiKSxcbiAgICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICAgIHRvb2xOYW1lOiB6LnN0cmluZygpLFxuICAgIGlucHV0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcImltYWdlXCIpLFxuICAgIC8vIEJhc2U2NCBpbWFnZSBieXRlczsgb2xkZXIgcmVzcG9uc2VzIHdpdGhvdXQgbWVkaWFUeXBlIGFyZSBQTkcuXG4gICAgZGF0YTogei5zdHJpbmcoKSxcbiAgICBtZWRpYVR5cGU6IHouZW51bShbXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2Uvd2VicFwiXSkub3B0aW9uYWwoKSxcbiAgICByZXZpc2VkUHJvbXB0OiB6LnN0cmluZygpLm51bGxpc2goKSxcbiAgICBnZW5lcmF0aW9uOiBJbWFnZUdlbmVyYXRpb25NZXRhZGF0YS5vcHRpb25hbCgpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUWdyaWRDb250ZW50ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRDb250ZW50PjtcblxuZXhwb3J0IGNvbnN0IEZpbmlzaFJlYXNvbiA9IHouZW51bShbXCJzdG9wXCIsIFwidG9vbC1jYWxsc1wiXSk7XG5leHBvcnQgdHlwZSBGaW5pc2hSZWFzb24gPSB6LmluZmVyPHR5cGVvZiBGaW5pc2hSZWFzb24+O1xuXG5leHBvcnQgY29uc3QgVmVyYm9zaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgVmVyYm9zaXR5ID0gei5pbmZlcjx0eXBlb2YgVmVyYm9zaXR5PjtcblxuZXhwb3J0IGNvbnN0IFJlYXNvbmluZ1N1bW1hcnkgPSB6LmVudW0oW1wiYXV0b1wiLCBcImNvbmNpc2VcIiwgXCJkZXRhaWxlZFwiLCBcIm5vbmVcIl0pO1xuZXhwb3J0IHR5cGUgUmVhc29uaW5nU3VtbWFyeSA9IHouaW5mZXI8dHlwZW9mIFJlYXNvbmluZ1N1bW1hcnk+O1xuXG5leHBvcnQgY29uc3QgU2VydmljZVRpZXIgPSB6LmVudW0oW1wiZmFzdFwiLCBcImZsZXhcIl0pO1xuZXhwb3J0IHR5cGUgU2VydmljZVRpZXIgPSB6LmluZmVyPHR5cGVvZiBTZXJ2aWNlVGllcj47XG5cbmV4cG9ydCBjb25zdCBJbWFnZUdlbmVyYXRpb25RdWFsaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblF1YWxpdHk+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouZW51bShbXCIxMDI0eDEwMjRcIiwgXCIxMDI0eDE1MzZcIiwgXCIxNTM2eDEwMjRcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblNpemU+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyA9IHpcbiAgLm9iamVjdCh7XG4gICAgcXVhbGl0eTogSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eS5vcHRpb25hbCgpLFxuICAgIHNpemU6IEltYWdlR2VuZXJhdGlvblNpemUub3B0aW9uYWwoKSxcbiAgICBiYWNrZ3JvdW5kOiB6LmVudW0oW1wiYXV0b1wiLCBcIm9wYXF1ZVwiLCBcInRyYW5zcGFyZW50XCJdKS5vcHRpb25hbCgpLFxuICAgIG91dHB1dEZvcm1hdDogei5lbnVtKFtcInBuZ1wiLCBcImpwZWdcIiwgXCJ3ZWJwXCJdKS5vcHRpb25hbCgpLFxuICB9KVxuICAucmVmaW5lKFxuICAgIChvcHRpb25zKSA9PlxuICAgICAgb3B0aW9ucy5iYWNrZ3JvdW5kICE9PSBcInRyYW5zcGFyZW50XCIgfHxcbiAgICAgICFvcHRpb25zLm91dHB1dEZvcm1hdCB8fFxuICAgICAgb3B0aW9ucy5vdXRwdXRGb3JtYXQgPT09IFwicG5nXCIsXG4gICAgeyBtZXNzYWdlOiBcIlRyYW5zcGFyZW50IGltYWdlIGdlbmVyYXRpb24gb25seSBzdXBwb3J0cyBQTkcgb3V0cHV0XCIsIHBhdGg6IFtcIm91dHB1dEZvcm1hdFwiXSB9LFxuICApO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvbk9wdGlvbnM+O1xuXG5leHBvcnQgY29uc3QgUWdyaWRJbnB1dFBhcnQgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwidGV4dFwiKSxcbiAgICB0ZXh0OiB6LnN0cmluZygpLFxuICAgIHRleHRfZWxlbWVudHM6IHouYXJyYXkoei5uZXZlcigpKS5kZWZhdWx0KFtdKSxcbiAgfSksXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJpbWFnZVwiKSxcbiAgICB1cmw6IHouc3RyaW5nKCksXG4gIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBRZ3JpZElucHV0UGFydCA9IHouaW5mZXI8dHlwZW9mIFFncmlkSW5wdXRQYXJ0PjtcblxuZXhwb3J0IGNvbnN0IE1BWF9RVUVSWV9USU1FT1VUX01TID0gMzAgKiA2MF8wMDA7XG5leHBvcnQgY29uc3QgUXVlcnlUaW1lb3V0TXMgPSB6Lm51bWJlcigpLmludCgpLnBvc2l0aXZlKCkubWF4KE1BWF9RVUVSWV9USU1FT1VUX01TKTtcblxuLy8g4pSA4pSA4pSAIFJ1biBMaWZlY3ljbGUgQ29udGV4dCAoU0RLIOKGlCBTZXJ2ZXIgY29udHJhY3QpIOKUgOKUgOKUgFxuXG4vLyBPcGVuQUkgY2FjaGUgYWZmaW5pdHkg7KKM7ZGcKOq1rCBjb2RleCB0aHJlYWQg7KKM7ZGcKS4gcHJvbXB0X2NhY2hlX2tleSDrpbwg6rOg7KCV7ZW0XG4vLyBPcGVuQUkgcHJvbXB0IGNhY2hpbmcg7J2EIOyCtOumrOq4sCDsnITtlZwg7ZW465OkLiDshJzrsoTqsIAg67Cc6riJ7ZWY6rOgIO2BtOudvOqwgCDri6TsnYwg7JqU7LKt7JeQIOq3uOuMgOuhnCDtmozshqHtlZzri6QuXG4vLyDtlbjrk6Qg66+47KCE7IahIOyLnCDquLDsobQgXCLrp6QgdHVybiDsg4ggdGhyZWFkICsgaGlzdG9yeSBpbmplY3RcIiDrj5nsnpHsnLzroZwg7Y+067CxKFFncmlkUnVuQ29udGV4dCDssLjsobApLlxuZXhwb3J0IGNvbnN0IFFncmlkVGhyZWFkQ29vcmQgPSB6Lm9iamVjdCh7XG4gIHdvcmtlcklkOiB6Lm51bWJlcigpLCAvLyDqs6DsoJUg65287Jqw7YyFICh0aHJlYWQg64qUIHdvcmtlciDtlITroZzshLjsiqQg66mU66qo66as7JeQ66eMIOyhtOyerClcbiAgdGhyZWFkSWQ6IHouc3RyaW5nKCksIC8vIG9wYXF1ZSBjYWNoZSBhZmZpbml0eSBrZXkgPSBwcm9tcHRfY2FjaGVfa2V5XG4gIGVwb2NoOiB6Lm51bWJlcigpLCAvLyB3b3JrZXIgc3Bhd24g7Lm07Jq07YSwLiByZXN0YXJ0IOuhnCB0aHJlYWQg7Kad67CcIOqwkOyngFxuICBzeXN0ZW1IYXNoOiB6LnN0cmluZygpLCAvLyBzeXN0ZW1fcHJvbXB0IO2VtOyLnC4g64uk66W4IOuMgO2ZlCDsmKTsoJHsho0g67Cp7KeAXG59KTtcbmV4cG9ydCB0eXBlIFFncmlkVGhyZWFkQ29vcmQgPSB6LmluZmVyPHR5cGVvZiBRZ3JpZFRocmVhZENvb3JkPjtcblxuZXhwb3J0IGNvbnN0IFFncmlkUnVuQ29udGV4dCA9IHoub2JqZWN0KHtcbiAgLy8gdG9vbC1jYWxsIHJ1buydhCDqs4Tsho3tlaAg65WM66eMIOuwnOq4iS4g7J2867CYIOuMgO2ZlOuKlCB0aHJlYWRDb29yZCDrp4wg7JmV67O1LlxuICByZXF1ZXN0TG9nSWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdGhyZWFkQ29vcmQ6IFFncmlkVGhyZWFkQ29vcmQub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUWdyaWRSdW5Db250ZXh0ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRSdW5Db250ZXh0PjtcblxuZXhwb3J0IGNvbnN0IFFncmlkVG9vbFJlc3VsdElucHV0ID0gei5vYmplY3Qoe1xuICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICB0b29sTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBvdXRwdXQ6IHouc3RyaW5nKCksXG4gIGlzRXJyb3I6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFFncmlkVG9vbFJlc3VsdElucHV0ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUb29sUmVzdWx0SW5wdXQ+O1xuXG5leHBvcnQgY29uc3QgUXVlcnlJbnB1dCA9IHoubG9vc2VPYmplY3Qoe1xuICBzeXN0ZW06IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcHJvbXB0OiB6LnN0cmluZygpLFxuICBpbnB1dDogei5hcnJheShRZ3JpZElucHV0UGFydCkub3B0aW9uYWwoKSxcbiAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGltZW91dDogUXVlcnlUaW1lb3V0TXMub3B0aW9uYWwoKSxcbiAganNvblNjaGVtYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sczogei5hcnJheShRZ3JpZFRvb2wpLm9wdGlvbmFsKCksXG4gIGVmZm9ydDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB2ZXJib3NpdHk6IFZlcmJvc2l0eS5vcHRpb25hbCgpLFxuICByZWFzb25pbmdTdW1tYXJ5OiBSZWFzb25pbmdTdW1tYXJ5Lm9wdGlvbmFsKCksXG4gIHNlcnZpY2VUaWVyOiBTZXJ2aWNlVGllci5vcHRpb25hbCgpLFxuICBoaXN0b3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb2plY3ROYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIC8vIHJhdy9kYXNoYm9hcmTsmYAg6rO16rCcIEFJIFNESyBwcm92aWRlck9wdGlvbnMucWdyaWQudG9rZW5OYW1l7J20IOqzteycoO2VmOuKlCDsp4DsoJUg7KO87IaMLlxuICB0b2tlbk5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgLy8gU0RLLWRlcml2ZWQgb3BhcXVlIGFmZmluaXR5LiBJdCBpcyBpbnRlbnRpb25hbGx5IGRpc3RpbmN0IGZyb20gdGhlIGNhbGxlcidzIHNlc3Npb25LZXkuXG4gIGNhY2hlQWZmaW5pdHlLZXk6IHpcbiAgICAuc3RyaW5nKClcbiAgICAucmVnZXgoL15bMC05YS1mXXs2NH0kLylcbiAgICAub3B0aW9uYWwoKSxcbiAgLy8g7IOd65617ZWY66m0IOuhnOq5he2VnOuLpC4gZmFsc2XripQgcmVxdWVzdCBsb2cg7JOw6riw66eMIOuBhOqzoCBkaXNwYXRjaC90aHJlYWTripQg7Jyg7KeA7ZWc64ukLlxuICBsb2dnZXI6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHJ1bkNvbnRleHQ6IFFncmlkUnVuQ29udGV4dC5vcHRpb25hbCgpLFxuICB0b29sUmVzdWx0czogei5hcnJheShRZ3JpZFRvb2xSZXN1bHRJbnB1dCkub3B0aW9uYWwoKSxcbiAgLy8gT3BlbkFJIFJlc3BvbnNlcyBpbWFnZV9nZW5lcmF0aW9uIHRvb2wg7J2EIOy8oOuLpChPcGVuQUkg6rK966GcIOyghOyaqSwgb3B0LWluLCBub24tc3RyZWFtKS5cbiAgaW1hZ2VHZW5lcmF0aW9uOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAvLyBxZ3JpZCDqsIDqsqkg7LaU7KCVIOuwjyBDb2RleCDsnbTrr7jsp4Ag7JqU7LKtIO2ejO2KuC4g7J2066+47KeAIOuqqOuNuOydgCBncHQtaW1hZ2UtMiDroZwg6rOg7KCVIOqwgOygle2VnOuLpC5cbiAgaW1hZ2VHZW5lcmF0aW9uT3B0aW9uczogSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucy5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBRdWVyeUlucHV0ID0gei5pbmZlcjx0eXBlb2YgUXVlcnlJbnB1dD47XG5cbmV4cG9ydCBjb25zdCBNb2RlbEZhbGxiYWNrID0gei5vYmplY3Qoe1xuICB0cmlnZ2VyOiB6LmxpdGVyYWwoXCJyZWZ1c2FsXCIpLFxuICBmcm9tTW9kZWw6IHouc3RyaW5nKCksXG4gIHRvTW9kZWw6IHouc3RyaW5nKCksXG4gIGNhdGVnb3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGV4cGxhbmF0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIE1vZGVsRmFsbGJhY2sgPSB6LmluZmVyPHR5cGVvZiBNb2RlbEZhbGxiYWNrPjtcblxuZXhwb3J0IGNvbnN0IENvc3RTb3VyY2UgPSB6LmVudW0oW1wicHJvdmlkZXJcIiwgXCJwcmljaW5nX3RhYmxlXCIsIFwibWl4ZWRcIl0pO1xuZXhwb3J0IHR5cGUgQ29zdFNvdXJjZSA9IHouaW5mZXI8dHlwZW9mIENvc3RTb3VyY2U+O1xuXG5leHBvcnQgY29uc3QgUXVlcnlPdXRwdXQgPSB6Lm9iamVjdCh7XG4gIHRleHQ6IHouc3RyaW5nKCksXG4gIGNvbnRlbnQ6IHouYXJyYXkoUWdyaWRDb250ZW50KSxcbiAgZmluaXNoUmVhc29uOiBGaW5pc2hSZWFzb24sXG4gIHRva2VuTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICByZXF1ZXN0ZWRNb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbEZhbGxiYWNrczogei5hcnJheShNb2RlbEZhbGxiYWNrKS5vcHRpb25hbCgpLFxuICB1c2FnZTogei5vYmplY3Qoe1xuICAgIGlucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICBvdXRwdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgIHJlYXNvbmluZ190b2tlbnM6IHoubnVtYmVyKCksXG4gICAgY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgIGNhY2hlX2NyZWF0aW9uXzVtX2lucHV0X3Rva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIGNhY2hlX2NyZWF0aW9uXzFoX2lucHV0X3Rva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIGNhY2hlX3JlYWRfaW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICB9KSxcbiAgZHVyYXRpb25Nczogei5udW1iZXIoKSxcbiAgdHRmdE1zOiB6Lm51bWJlcigpLFxuICBjb3N0VXNkOiB6Lm51bWJlcigpLFxuICBjb3N0U291cmNlOiBDb3N0U291cmNlLFxuICBydW5Db250ZXh0OiBRZ3JpZFJ1bkNvbnRleHQub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUXVlcnlPdXRwdXQgPSB6LmluZmVyPHR5cGVvZiBRdWVyeU91dHB1dD47XG5cbi8vIOKUgOKUgOKUgCBTdHJlYW0gRXZlbnRzIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgU3RyZWFtRXZlbnRzID0gei5vYmplY3Qoe1xuICBkZWx0YTogei5vYmplY3QoeyB0ZXh0OiB6LnN0cmluZygpIH0pLFxuICB0b29sQ2FsbDogei5vYmplY3Qoe1xuICAgIHRvb2xDYWxsSWQ6IHouc3RyaW5nKCksXG4gICAgdG9vbE5hbWU6IHouc3RyaW5nKCksXG4gICAgaW5wdXQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBkb25lOiB6Lm9iamVjdCh7XG4gICAgdGV4dDogei5zdHJpbmcoKSxcbiAgICBtb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHJlcXVlc3RlZE1vZGVsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbW9kZWxGYWxsYmFja3M6IHouYXJyYXkoTW9kZWxGYWxsYmFjaykub3B0aW9uYWwoKSxcbiAgICB0b2tlbk5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBmaW5pc2hSZWFzb246IEZpbmlzaFJlYXNvbixcbiAgICB1c2FnZTogei5vYmplY3Qoe1xuICAgICAgaW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgICAgb3V0cHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICAgIHJlYXNvbmluZ190b2tlbnM6IHoubnVtYmVyKCksXG4gICAgICBjYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX2lucHV0X3Rva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgICAgY2FjaGVfcmVhZF9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgfSksXG4gICAgZHVyYXRpb25Nczogei5udW1iZXIoKSxcbiAgICB0dGZ0TXM6IHoubnVtYmVyKCksXG4gICAgY29zdFVzZDogei5udW1iZXIoKSxcbiAgICBjb3N0U291cmNlOiBDb3N0U291cmNlLFxuICAgIGNvbnRlbnQ6IHouYXJyYXkoUWdyaWRDb250ZW50KSxcbiAgICBydW5Db250ZXh0OiBRZ3JpZFJ1bkNvbnRleHQub3B0aW9uYWwoKSxcbiAgfSksXG4gIGVycm9yOiB6Lm9iamVjdCh7IG1lc3NhZ2U6IHouc3RyaW5nKCkgfSksXG59KTtcbmV4cG9ydCB0eXBlIFN0cmVhbUV2ZW50cyA9IHouaW5mZXI8dHlwZW9mIFN0cmVhbUV2ZW50cz47XG5cbi8vIOKUgOKUgOKUgCBSdW4gTGlmZWN5Y2xlIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgQ3JlYXRlUnVuSW5wdXQgPSB6Lm9iamVjdCh7XG4gIHVzZXJQcm9tcHQ6IHouc3RyaW5nKCksXG4gIHN5c3RlbVByb21wdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZWZmb3J0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb2plY3ROYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGhpc3Rvcnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaXNTdHJ1Y3R1cmVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBqc29uU2NoZW1hOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgQ3JlYXRlUnVuSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBDcmVhdGVSdW5JbnB1dD47XG5cbmV4cG9ydCBjb25zdCBBcHBlbmRTdGVwSW5wdXQgPSB6Lm9iamVjdCh7XG4gIHJlcXVlc3RMb2dJZDogei5udW1iZXIoKSxcbiAgc3RlcEluZGV4OiB6Lm51bWJlcigpLFxuICB0eXBlOiB6LmVudW0oW1wiZ2VuZXJhdGVcIiwgXCJ0b29sX2NhbGxcIl0pLFxuICBtb2RlbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVxdWVzdGVkTW9kZWxOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZhbGxiYWNrQ291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgaW5wdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgb3V0cHV0VG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNhY2hlUmVhZFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjYWNoZUNyZWF0aW9uVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNhY2hlQ3JlYXRpb241bVRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjYWNoZUNyZWF0aW9uMWhUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY29zdFVzZDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjb3N0U291cmNlOiBDb3N0U291cmNlLm9wdGlvbmFsKCksXG4gIGR1cmF0aW9uTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdHRmdE1zOiB6Lm51bWJlcigpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgZmluaXNoUmVhc29uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlYXNvbmluZ1RleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVhc29uaW5nVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvb2xDYWxsSW5kZXg6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG9vbENhbGxJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sQXJnczogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sUmVzdWx0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRvb2xEdXJhdGlvbk1zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEFwcGVuZFN0ZXBJbnB1dCA9IHouaW5mZXI8dHlwZW9mIEFwcGVuZFN0ZXBJbnB1dD47XG5cbmV4cG9ydCBjb25zdCBGaW5pc2hSdW5JbnB1dCA9IHoub2JqZWN0KHtcbiAgcmVxdWVzdExvZ0lkOiB6Lm51bWJlcigpLFxuICBzdGF0dXM6IHouZW51bShbXCJzdWNjZWVkZWRcIiwgXCJlcnJvclwiLCBcImFib3J0ZWRcIl0pLFxuICByZXNwb25zZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b2tlbk5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbW9kZWxOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlcXVlc3RlZE1vZGVsTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBmYWxsYmFja0NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsSW5wdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxPdXRwdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxDYWNoZVJlYWRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxDYWNoZUNyZWF0aW9uVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsQ2FjaGVDcmVhdGlvbjVtVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsQ2FjaGVDcmVhdGlvbjFoVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNvc3RVc2Q6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY29zdFNvdXJjZTogQ29zdFNvdXJjZS5vcHRpb25hbCgpLFxuICB0b3RhbER1cmF0aW9uTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgaGlzdG9yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBlcnJvck1lc3NhZ2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVzcG9uc2VKc29uT2s6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEZpbmlzaFJ1bklucHV0ID0gei5pbmZlcjx0eXBlb2YgRmluaXNoUnVuSW5wdXQ+O1xuXG4vLyDilIDilIDilIAgVG9rZW4gTWFuYWdlbWVudCDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IFRva2VuU3RhdHMgPSB6Lm9iamVjdCh7XG4gIHRva2VuOiB6LnN0cmluZygpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICBwcm92aWRlcjogei5zdHJpbmcoKSxcbiAgcmVxdWVzdHM6IHoubnVtYmVyKCksXG59KTtcbmV4cG9ydCB0eXBlIFRva2VuU3RhdHMgPSB6LmluZmVyPHR5cGVvZiBUb2tlblN0YXRzPjtcblxuLy8g4pSA4pSA4pSAIE9BdXRoIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgT0F1dGhTdGFydFJlc3VsdCA9IHoub2JqZWN0KHtcbiAgYXV0aFVybDogei5zdHJpbmcoKSxcbiAgLy8gcmVkaXJlY3Q6IOu4jOudvOyasOyggCDsnpDrj5kg67O16reAKOujqO2UhOuwsSDsoJHsho0pLiBjb2RlOiDsvZjshpQg7L2c67CxICsg7L2U65OcIOu2meyXrOuEo+q4sCjsm5Dqsqkg7KCR7IaNKS5cbiAgLy8gT3BlbkFJIOybkOqyqSDqsr3roZzripQg65Ox66Gd65CcIGxvb3BiYWNrIGNhbGxiYWNrIFVSTCDsoITssrTrpbwg67aZ7Jes64Sj64qUIGNvZGUg66qo65Oc66W8IOyTtOuLpC5cbiAgbW9kZTogei5lbnVtKFtcInJlZGlyZWN0XCIsIFwiY29kZVwiXSksXG59KTtcbmV4cG9ydCB0eXBlIE9BdXRoU3RhcnRSZXN1bHQgPSB6LmluZmVyPHR5cGVvZiBPQXV0aFN0YXJ0UmVzdWx0PjtcblxuY29uc3QgUmF0ZVdpbmRvdyA9IHpcbiAgLm9iamVjdCh7XG4gICAgdXRpbGl6YXRpb246IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgICByZXNldHNBdDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgIHdpbmRvd0R1cmF0aW9uTWluczogei5udW1iZXIoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5udWxsYWJsZSgpO1xuXG5leHBvcnQgY29uc3QgVXNhZ2VSZXNwb25zZSA9IHoub2JqZWN0KHtcbiAgZXJyb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcHJvdmlkZXI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZml2ZUhvdXI6IFJhdGVXaW5kb3cub3B0aW9uYWwoKSxcbiAgc2V2ZW5EYXk6IFJhdGVXaW5kb3cub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgVXNhZ2VSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIFVzYWdlUmVzcG9uc2U+O1xuXG4vLyDilIDilIDilIAgSGVhbHRoIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgU3Vic2NyaWJlclN0YXR1cyA9IHoub2JqZWN0KHtcbiAgY29ubmVjdGVkOiB6LmJvb2xlYW4oKSxcbiAgY29ubmVjdGVkQXQ6IHouZGF0ZSgpLm51bGxhYmxlKCksXG4gIGxhc3RSZWNvbmNpbGVBdDogei5kYXRlKCkubnVsbGFibGUoKSxcbiAgYXR0ZW1wdDogei5udW1iZXIoKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3Vic2NyaWJlclN0YXR1cyA9IHouaW5mZXI8dHlwZW9mIFN1YnNjcmliZXJTdGF0dXM+O1xuXG5leHBvcnQgY29uc3QgUHJvdmlkZXJTdGFydHVwU3RhdGUgPSB6LmVudW0oW1wic3RhcnRpbmdcIiwgXCJyZWFkeVwiLCBcImZhaWxlZFwiXSk7XG5leHBvcnQgdHlwZSBQcm92aWRlclN0YXJ0dXBTdGF0ZSA9IHouaW5mZXI8dHlwZW9mIFByb3ZpZGVyU3RhcnR1cFN0YXRlPjtcblxuZXhwb3J0IGNvbnN0IEhlYWx0aFJlc3BvbnNlID0gei5vYmplY3Qoe1xuICBzdGF0dXM6IHouc3RyaW5nKCksXG4gIGFjdGl2ZVRva2Vuczogei5udW1iZXIoKSxcbiAgc3Vic2NyaWJlcjogU3Vic2NyaWJlclN0YXR1cy5udWxsYWJsZSgpLFxuICAvLyBIVFRQIOumrOyKpOuLneydgCBkaXNwYXRjaGVyIOq4sOuPmeuztOuLpCDrqLzsoIAg7Je066aw64ukLiAyMDAg7J2R64u166eM7Jy866Gc64qUIOyalOyyreydhCDsspjrpqztlaAg7IiYXG4gIC8vIOyeiOuKlOyngCDslYwg7IiYIOyXhuyWtCBwcm92aWRlciDrs4Qg7KSA67mEIOyDge2DnOulvCDtlajqu5gg64W47Lac7ZWc64ukLlxuICByZWFkeTogei5ib29sZWFuKCksXG4gIHByb3ZpZGVyczogei5vYmplY3Qoe1xuICAgIG9wZW5haTogUHJvdmlkZXJTdGFydHVwU3RhdGUsXG4gICAgYW50aHJvcGljOiBQcm92aWRlclN0YXJ0dXBTdGF0ZSxcbiAgfSksXG59KTtcbmV4cG9ydCB0eXBlIEhlYWx0aFJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgSGVhbHRoUmVzcG9uc2U+O1xuXG4vLyDilIDilIDilIAgRXJyb3JzIOKUgOKUgOKUgFxuXG5leHBvcnQgY2xhc3MgUXVvdGFFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgY29kZSA9IFwiUVVPVEFfRVhIQVVTVEVEXCIgYXMgY29uc3Q7XG59XG5leHBvcnQgY2xhc3MgUXVvdGFUaHJlc2hvbGRFeGNlZWRlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBjb2RlID0gXCJRVU9UQV9USFJFU0hPTERfRVhDRUVERURcIiBhcyBjb25zdDtcbn1cbmV4cG9ydCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGNvZGUgPSBcIlRJTUVPVVRcIiBhcyBjb25zdDtcbn1cbmV4cG9ydCBjbGFzcyBQcm9jZXNzRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGNvZGUgPSBcIlBST0NFU1NfRVJST1JcIiBhcyBjb25zdDtcbn1cblxuLy8g4pSA4pSA4pSAIFV0aWxzIOKUgOKUgOKUgFxuXG5leHBvcnQgZnVuY3Rpb24gbWFza1Rva2VuKHRva2VuOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdG9rZW4ubGVuZ3RoID4gNCA/IGAuLi4ke3Rva2VuLnNsaWNlKC00KX1gIDogdG9rZW47XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBSUEsTUFBYSxTQUFTLEVBQUUsS0FBSztDQUFDO0NBQU87Q0FBVTtBQUFNLENBQUM7QUFHdEQsTUFBYSxZQUFZLEVBQUUsT0FBTztDQUNoQyxNQUFNLEVBQUUsT0FBTztDQUNmLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQ2pDLGFBQWEsRUFBRSxRQUFRO0FBQ3pCLENBQUM7QUFJRCxNQUFhLDBCQUEwQixFQUFFLE9BQU87Q0FDOUMsT0FBTyxFQUFFLFFBQVEsY0FBYztDQUMvQixPQUFPLEVBQUUsUUFBUSxhQUFhO0NBQzlCLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQ2hDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQzdCLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQzFCLE9BQU8sRUFDSixPQUFPO0VBQ04sY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVk7RUFDckMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVk7RUFDdEMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVk7RUFDckMsc0JBQXNCLEVBQ25CLE9BQU87R0FDTixjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWTtHQUNyQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWTtHQUNwQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUztFQUNuRCxDQUFDLENBQUMsQ0FDRCxTQUFTO0VBQ1osdUJBQXVCLEVBQ3BC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
|
|
@@ -99,6 +99,7 @@ function appendImages(content, images) {
|
|
|
99
99
|
return [...content, ...images.map((image) => ({
|
|
100
100
|
type: "image",
|
|
101
101
|
data: image.data,
|
|
102
|
+
...image.mediaType ? { mediaType: image.mediaType } : {},
|
|
102
103
|
revisedPrompt: image.revisedPrompt ?? null,
|
|
103
104
|
...image.generation ? { generation: image.generation } : {}
|
|
104
105
|
}))];
|
|
@@ -126,4 +127,4 @@ function assertStructuredEnvelopeComplexity(root) {
|
|
|
126
127
|
//#endregion
|
|
127
128
|
export { ToolCallEmulationError, applyToolCallEmulation };
|
|
128
129
|
|
|
129
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1lbXVsYXRpb24uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3Rvb2wtZW11bGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCJub2RlOmJ1ZmZlclwiO1xuXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuLy8g7J2R64u1KOuqqOuNuCDstpzroKUpIGVudmVsb3BlIOydmCDsnpDsm5Ag7ZWc64+ELiBjYWxsZXIg7Iqk7YKk66eIIOyghOyymOumrCDtlZzrj4QoQ0FMTEVSX1NDSEVNQV9MSU1JVFMp7JmAIOqwkuydtFxuLy8g6rCZ7JWEIOuztOyXrOuPhCDshJzroZwg64uk66W4IOyekOybkOydhCDsp4DtgqTripQg64+F66a9IOyDgeyImOuLpCDigJQg7Iqk7YKk66eIIOq5iuydtOuKlCDsnbjsiqTthLTsiqQg6rmK7J2066W8IGJvdW5kIO2VmOyngFxuLy8g7JWK7Jy866+A66GcKOyerOq3gCAkcmVmIO2XiOyaqSkg7LqY65+sIO2VnOuPhOulvCDsobDsoJXtlbTrj4Qg7J2R64u1IOyImOyaqSDquLDspIDsnbQg65Sw6528IOybgOyngeyXrOyEoCDslYgg65Cc64ukLlxuY29uc3QgU1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMgPSB7XG4gIG1heFV0ZjhCeXRlczogNTEyICogMTAyNCxcbiAgbWF4Tm9kZXM6IDIwXzAwMCxcbiAgbWF4RGVwdGg6IDEzMixcbn0gYXMgY29uc3Q7XG5pbXBvcnQge1xuICB0eXBlIEltYWdlR2VuZXJhdGlvbk1ldGFkYXRhLFxuICB0eXBlIFFncmlkQ29udGVudCxcbiAgdHlwZSBRZ3JpZFRocmVhZENvb3JkLFxuICB0eXBlIFFncmlkVG9vbCxcbiAgdHlwZSBRdWVyeU91dHB1dCxcbn0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwidG9vbC1lbXVsYXRpb25cIl0pO1xuXG50eXBlIEVtdWxhdGlvblJlc3VsdCA9IE9taXQ8UXVlcnlPdXRwdXQsIFwiY29udGVudFwiIHwgXCJmaW5pc2hSZWFzb25cIiB8IFwicnVuQ29udGV4dFwiPjtcbnR5cGUgVG9vbENhbGwgPSB7IHRvb2xOYW1lOiBzdHJpbmc7IGFyZ3M6IHN0cmluZyB9O1xuXG4vLyBlbnZlbG9wZSDripQge3Jlc3VsdDogPHVuaW9uPn0g7ZWcIOqyuSDqtazsobAg4oCUIOyKpO2CpOuniCDqt7zqsbDripQgdG9vbC1lbXVsYXRpb24tc2NoZW1hLnRzIOywuOyhsC5cbi8vIGFuc3dlciDtg4DsnoXrp4wg7JqU7LKtIO2Yle2DnOyXkCDrlLDrnbwg64uk66W064ukOiB0b29scy1vbmx5IOuKlCBzdHJpbmco6re464yA66GcIOuwmO2ZmCksXG4vLyB0b29scytqc29uU2NoZW1hIOuKlCDsgqzsmqnsnpAg7Iqk7YKk66eI7J2YIEpTT04g6rCSKEpTT04uc3RyaW5naWZ5IOuhnCDrsJjtmZgpLlxuZnVuY3Rpb24gYnVpbGRFbnZlbG9wZVNjaGVtYShhbnN3ZXJLaW5kOiBBbnN3ZXJLaW5kKSB7XG4gIHJldHVybiB6LnN0cmljdE9iamVjdCh7XG4gICAgcmVzdWx0OiB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcImFjdGlvblwiLCBbXG4gICAgICB6LnN0cmljdE9iamVjdCh7XG4gICAgICAgIGFjdGlvbjogei5saXRlcmFsKFwiYW5zd2VyXCIpLFxuICAgICAgICBhbnN3ZXI6XG4gICAgICAgICAgYW5zd2VyS2luZCA9PT0gXCJ0ZXh0XCJcbiAgICAgICAgICAgID8gei5zdHJpbmcoKVxuICAgICAgICAgICAgOiB6Lmpzb24oKS5yZWZpbmUoKGFuc3dlcikgPT4gYW5zd2VyICE9PSBudWxsLCB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogXCJhbnN3ZXIgbXVzdCBiZSBub24tbnVsbFwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgdG9vbENhbGxzOiB6Lm51bGwoKSxcbiAgICAgIH0pLFxuICAgICAgei5zdHJpY3RPYmplY3Qoe1xuICAgICAgICBhY3Rpb246IHoubGl0ZXJhbChcInRvb2xfY2FsbFwiKSxcbiAgICAgICAgYW5zd2VyOiB6Lm51bGwoKSxcbiAgICAgICAgdG9vbENhbGxzOiB6XG4gICAgICAgICAgLmFycmF5KFxuICAgICAgICAgICAgei5zdHJpY3RPYmplY3Qoe1xuICAgICAgICAgICAgICB0b29sTmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgICAgICAgYXJnczogei5zdHJpbmcoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgICAubWluKDEpLFxuICAgICAgfSksXG4gICAgXSksXG4gIH0pO1xufVxuXG5jb25zdCBURVhUX0VOVkVMT1BFID0gYnVpbGRFbnZlbG9wZVNjaGVtYShcInRleHRcIik7XG5jb25zdCBKU09OX0VOVkVMT1BFID0gYnVpbGRFbnZlbG9wZVNjaGVtYShcImpzb25cIik7XG50eXBlIEVudmVsb3BlUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBKU09OX0VOVkVMT1BFPltcInJlc3VsdFwiXTtcblxuZXhwb3J0IGNsYXNzIFRvb2xDYWxsRW11bGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKGB0b29sLWNhbGwgZW11bGF0aW9uOiAke21lc3NhZ2V9YCk7XG4gICAgdGhpcy5uYW1lID0gXCJUb29sQ2FsbEVtdWxhdGlvbkVycm9yXCI7XG4gIH1cbn1cblxuLy8gZGlzcGF0Y2hlciDqsIAg64SY6riw64qUIOydtOuvuOyngCDqsrDqs7wuIHFncmlkIOuKlCBiYXNlNjQgcGF5bG9hZCDrp4wg7KCE64us7ZWY6rOgIO2PrOunt+ydgCDrs7TsnqXtlZjsp4Ag7JWK64qU64ukLlxuaW50ZXJmYWNlIEVtdWxhdGlvbkltYWdlIHtcbiAgZGF0YTogc3RyaW5nO1xuICByZXZpc2VkUHJvbXB0Pzogc3RyaW5nIHwgbnVsbDtcbiAgZ2VuZXJhdGlvbj86IEltYWdlR2VuZXJhdGlvbk1ldGFkYXRhO1xufVxuXG4vLyBhbnN3ZXIg7J247L2U65SpIOyiheulmC4gZW52ZWxvcGUg65SU7L2U642U64qUIO2VnCDrsozsnbTqs6Ag7J20IOqwkuydgCBhbnN3ZXIg67iM656c7LmY7J2YIO2DgOyeheqzvFxuLy8g7LWc7KKFIOyngeugrO2ZlCh0ZXh0OiDqt7jrjIDroZwgLyBqc29uOiBKU09OLnN0cmluZ2lmeSnrp4wg6rCA66W464ukLlxuZXhwb3J0IHR5cGUgQW5zd2VyS2luZCA9IFwidGV4dFwiIHwgXCJqc29uXCI7XG5cbmludGVyZmFjZSBUb29sQ2FsbEVtdWxhdGlvbk9wdGlvbnMge1xuICB0aHJlYWRDb29yZD86IFFncmlkVGhyZWFkQ29vcmQ7XG4gIGltYWdlcz86IEVtdWxhdGlvbkltYWdlW107XG4gIC8vIO2VhOyImDog7Zi47Lac67aA6rCAIGFuc3dlciDsnbjsvZTrlKnsnYQg7ZWt7IOBIOuqheyLnO2VtOyVvCDtlZzri6QgKGlucHV0Lmpzb25TY2hlbWEg7Jyg66y066GcIO2MkOyglSkuXG4gIGFuc3dlcktpbmQ6IEFuc3dlcktpbmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVRvb2xDYWxsRW11bGF0aW9uKFxuICByZXN1bHQ6IEVtdWxhdGlvblJlc3VsdCxcbiAgdG9vbHM6IFFncmlkVG9vbFtdIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zOiBUb29sQ2FsbEVtdWxhdGlvbk9wdGlvbnMsXG4pOiBRdWVyeU91dHB1dCB7XG4gIGNvbnN0IHsgdGhyZWFkQ29vcmQsIGltYWdlcywgYW5zd2VyS2luZCB9ID0gb3B0aW9ucztcbiAgY29uc3QgcnVuQ29udGV4dCA9IHRocmVhZENvb3JkID8geyB0aHJlYWRDb29yZCB9IDogdW5kZWZpbmVkO1xuXG4gIGlmICghdG9vbHM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBhbnN3ZXJPdXRwdXQocmVzdWx0LCByZXN1bHQudGV4dCwgaW1hZ2VzLCBydW5Db250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlRW52ZWxvcGUocmVzdWx0LnRleHQsIHRvb2xzLCBhbnN3ZXJLaW5kKTtcbiAgaWYgKHBhcnNlZC5hY3Rpb24gPT09IFwidG9vbF9jYWxsXCIpIHtcbiAgICByZXR1cm4gdG9vbENhbGxPdXRwdXQocmVzdWx0LCBwYXJzZWQudG9vbENhbGxzLCBpbWFnZXMsIHJ1bkNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGFuc3dlck91dHB1dChcbiAgICByZXN1bHQsXG4gICAgYW5zd2VyS2luZCA9PT0gXCJ0ZXh0XCIgPyAocGFyc2VkLmFuc3dlciBhcyBzdHJpbmcpIDogSlNPTi5zdHJpbmdpZnkocGFyc2VkLmFuc3dlciksXG4gICAgaW1hZ2VzLFxuICAgIHJ1bkNvbnRleHQsXG4gICk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRW52ZWxvcGUodGV4dDogc3RyaW5nLCB0b29sczogUWdyaWRUb29sW10sIGFuc3dlcktpbmQ6IEFuc3dlcktpbmQpIHtcbiAgaWYgKEJ1ZmZlci5ieXRlTGVuZ3RoKHRleHQsIFwidXRmOFwiKSA+IFNUUlVDVFVSRURfRU5WRUxPUEVfTElNSVRTLm1heFV0ZjhCeXRlcykge1xuICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKFxuICAgICAgYHRvb2wgZW52ZWxvcGUgZXhjZWVkcyBVVEYtOCBieXRlIGxpbWl0IG9mICR7U1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMubWF4VXRmOEJ5dGVzfWAsXG4gICAgKTtcbiAgfVxuXG4gIGxldCB2YWx1ZTogdW5rbm93bjtcbiAgdHJ5IHtcbiAgICB2YWx1ZSA9IEpTT04ucGFyc2UodGV4dCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8g6rSA7JqpIO2PtOuwsSDsl4bsnYwuIG9wZW5haSDripQgZW52ZWxvcGUg7J20IHN0cnVjdHVyZWQgb3V0cHV0IOycvOuhnCDqsJXsoJzrkJjrr4DroZwg7Jes6riwIOuPhOuLrO2VnFxuICAgIC8vIOu5hCBKU09OIOydgCDrsoTqt7jri6QuIGFudGhyb3BpYyDsnYAg6rOE7JW97J2EIO2UhOuhrO2UhO2KuOuhnOunjCDslYjrgrTtlZjrr4DroZwoU09OLTUzMikg67mEIEpTT04g7J20XG4gICAgLy8gXCLsmIjsg4Eg6rCA64ql7ZWcIOuqqOuNuCDsi6TtjKhcIuyngOunjCwg6re4656Y64+EIOq1rOygnO2VmOyngCDslYrripTri6Qg4oCUIOqzvOqxsOydmCDthY3siqTtirgg6rWs7KCc64qUIO2HtO2ZlFxuICAgIC8vIOu0ie2IrOulvCDri7Xrs4DsnLzroZwg7Z2Y66Ck67O064K0IOyhsOyaqe2VnCDsmKTsl7zsnYQg66eM65Ok7JeI64ukKDIwMjYtMDcgbWVkcGF0aCwgMTMuNWsg6rG0KS5cbiAgICAvLyDsoJXsp4HtlZwg7Iuk7Yyo6rCAIOuztOyXrOyVvCDshozruYTsnpDqsIAg7J6s7Iuc64+E7ZWY6rGw64KYIOq3vOuzuCDsm5DsnbjsnYQg6rOg7Lmc64ukLlxuICAgIC8vIOynhOuLqOyXkOuKlCDsnITrsJgg7JuQ66y47J2YIOuouOumrOqwgCDtlYTsmpTtlZjri6QoU09OLTQ5NSDsoITroYApIOKAlCBwYXJzZSDsl5Drn6wg7JyE7LmY66eM7Jy866Gc64qUXG4gICAgLy8gXCLtlITroZzspojroZwg64u17ZaI64qU7KeAIC8g7Y6c7Iqk6rCAIOuCqOyVmOuKlOyngCAvIEpTT04g7J20IOyemOuguOuKlOyngFwi66W8IOq1rOu2hO2VoCDsiJgg7JeG64ukLlxuICAgIGNvbnN0IGhlYWQgPSBKU09OLnN0cmluZ2lmeSh0ZXh0LnNsaWNlKDAsIDIwMCkpO1xuICAgIGxvZ2dlci53YXJuKGB0b29sIGVudmVsb3BlIHBhcnNlIGZhaWxlZDogJHsoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2V9OyBoZWFkPSR7aGVhZH1gKTtcbiAgICB0aHJvdyBuZXcgVG9vbENhbGxFbXVsYXRpb25FcnJvcihcbiAgICAgIGBpbnZhbGlkIHRvb2wgZW52ZWxvcGUgKHJlc3BvbnNlIGlzIG5vdCBKU09OIOKAlCB0aGUgbW9kZWwgaWdub3JlZCB0aGUgZW52ZWxvcGUgY29udHJhY3Q7IHJldHJ5IGlzIHRoZSBjYWxsZXIncyBkZWNpc2lvbik6ICR7KGVycm9yIGFzIEVycm9yKS5tZXNzYWdlfTsgcmVzcG9uc2UgaGVhZDogJHtoZWFkfWAsXG4gICAgKTtcbiAgfVxuXG4gIGFzc2VydFN0cnVjdHVyZWRFbnZlbG9wZUNvbXBsZXhpdHkodmFsdWUpO1xuICBjb25zdCBzY2hlbWEgPSBhbnN3ZXJLaW5kID09PSBcInRleHRcIiA/IFRFWFRfRU5WRUxPUEUgOiBKU09OX0VOVkVMT1BFO1xuICBjb25zdCB2YWxpZGF0aW9uID0gc2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSk7XG4gIGlmICghdmFsaWRhdGlvbi5zdWNjZXNzKSB7XG4gICAgY29uc3QgaXNzdWUgPSB2YWxpZGF0aW9uLmVycm9yLmlzc3Vlc1swXTtcbiAgICBjb25zdCBwYXRoID0gaXNzdWUgJiYgaXNzdWUucGF0aC5sZW5ndGggPiAwID8gYCBhdCAke2lzc3VlLnBhdGguam9pbihcIi5cIil9YCA6IFwiXCI7XG4gICAgY29uc3QgZGV0YWlsID0gaXNzdWU/Lm1lc3NhZ2UgPz8gXCJ1bmtub3duIHZhbGlkYXRpb24gaXNzdWVcIjtcbiAgICAvLyB2YWxpZCBKU09OIOydtOyngOunjCDqs4Tslb0g7JyE67CY7J24IOqyveyasOyXkOuPhCDsm5DrrLgg66i466as66W8IOuCqOq4tOuLpCDigJQgem9kIOqyveuhnOunjOycvOuhnOuKlFxuICAgIC8vIFwi7YKkIOyDneueteyduOyngCAvIOuemO2NvOuhnCDqsJDsjIzripTsp4AgLyDtg4DsnoXsnbQg7YuA66C464qU7KeAXCLsnZgg7Iuk66y87J2EIOuzvCDsiJgg7JeG64ukLlxuICAgIGNvbnN0IGhlYWQgPSBKU09OLnN0cmluZ2lmeSh0ZXh0LnNsaWNlKDAsIDIwMCkpO1xuICAgIGxvZ2dlci53YXJuKGB0b29sIGVudmVsb3BlIHZhbGlkYXRpb24gZmFpbGVkJHtwYXRofTogJHtkZXRhaWx9OyBoZWFkPSR7aGVhZH1gKTtcbiAgICB0aHJvdyBuZXcgVG9vbENhbGxFbXVsYXRpb25FcnJvcihcbiAgICAgIGBpbnZhbGlkIHRvb2wgZW52ZWxvcGUke3BhdGh9OiAke2RldGFpbH07IHJlc3BvbnNlIGhlYWQ6ICR7aGVhZH1gLFxuICAgICk7XG4gIH1cblxuICAvLyBab2QgY2xvbmVzIEpTT04gb2JqZWN0cyBhbmQgZHJvcHMgb3duIFwiX19wcm90b19fXCIga2V5cy4gVGhlIHBhcnNlZCBKU09OIGlzIHNhZmUgdG8gcmV0dXJuXG4gIC8vIGFmdGVyIHZhbGlkYXRpb24gYW5kIHByZXNlcnZlcyB0aGUgY2FsbGVyJ3MgZXhhY3Qgc3RydWN0dXJlZCB2YWx1ZS5cbiAgY29uc3QgcmVzcG9uc2UgPSAodmFsdWUgYXMgeyByZXN1bHQ6IEVudmVsb3BlUmVzcG9uc2UgfSkucmVzdWx0O1xuICBpZiAocmVzcG9uc2UuYWN0aW9uID09PSBcInRvb2xfY2FsbFwiKSB7XG4gICAgY29uc3QgdW5rbm93blRvb2wgPSBmaW5kVW5rbm93blRvb2wocmVzcG9uc2UudG9vbENhbGxzLCB0b29scyk7XG4gICAgaWYgKHVua25vd25Ub29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKGB1bmtub3duIGVtdWxhdGVkIHRvb2w6ICR7dW5rbm93blRvb2x9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNwb25zZTtcbn1cblxuZnVuY3Rpb24gdG9vbENhbGxPdXRwdXQoXG4gIHJlc3VsdDogRW11bGF0aW9uUmVzdWx0LFxuICB0b29sQ2FsbHM6IFRvb2xDYWxsW10sXG4gIGltYWdlczogRW11bGF0aW9uSW1hZ2VbXSB8IHVuZGVmaW5lZCxcbiAgcnVuQ29udGV4dDogUXVlcnlPdXRwdXRbXCJydW5Db250ZXh0XCJdLFxuKTogUXVlcnlPdXRwdXQge1xuICByZXR1cm4ge1xuICAgIC4uLnJlc3VsdCxcbiAgICBjb250ZW50OiBhcHBlbmRJbWFnZXMoXG4gICAgICB0b29sQ2FsbHMubWFwKCh0b29sQ2FsbCkgPT4gKHtcbiAgICAgICAgdHlwZTogXCJ0b29sLWNhbGxcIixcbiAgICAgICAgdG9vbENhbGxJZDogYGNhbGxfJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCAxMCl9YCxcbiAgICAgICAgdG9vbE5hbWU6IHRvb2xDYWxsLnRvb2xOYW1lLFxuICAgICAgICBpbnB1dDogdG9vbENhbGwuYXJncyxcbiAgICAgIH0pKSxcbiAgICAgIGltYWdlcyxcbiAgICApLFxuICAgIGZpbmlzaFJlYXNvbjogXCJ0b29sLWNhbGxzXCIsXG4gICAgcnVuQ29udGV4dCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYW5zd2VyT3V0cHV0KFxuICByZXN1bHQ6IEVtdWxhdGlvblJlc3VsdCxcbiAgdGV4dDogc3RyaW5nLFxuICBpbWFnZXM6IEVtdWxhdGlvbkltYWdlW10gfCB1bmRlZmluZWQsXG4gIHJ1bkNvbnRleHQ6IFF1ZXJ5T3V0cHV0W1wicnVuQ29udGV4dFwiXSxcbik6IFF1ZXJ5T3V0cHV0IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5yZXN1bHQsXG4gICAgdGV4dCxcbiAgICBjb250ZW50OiBhcHBlbmRJbWFnZXMoW3sgdHlwZTogXCJ0ZXh0XCIsIHRleHQgfV0sIGltYWdlcyksXG4gICAgZmluaXNoUmVhc29uOiBcInN0b3BcIixcbiAgICBydW5Db250ZXh0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBmaW5kVW5rbm93blRvb2wodG9vbENhbGxzOiBUb29sQ2FsbFtdLCB0b29sczogUWdyaWRUb29sW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBrbm93blRvb2xOYW1lcyA9IG5ldyBTZXQodG9vbHMubWFwKCh0b29sKSA9PiB0b29sLm5hbWUpKTtcbiAgcmV0dXJuIHRvb2xDYWxscy5maW5kKCh0b29sQ2FsbCkgPT4gIWtub3duVG9vbE5hbWVzLmhhcyh0b29sQ2FsbC50b29sTmFtZSkpPy50b29sTmFtZTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kSW1hZ2VzKGNvbnRlbnQ6IFFncmlkQ29udGVudFtdLCBpbWFnZXM/OiBFbXVsYXRpb25JbWFnZVtdKTogUWdyaWRDb250ZW50W10ge1xuICBpZiAoIWltYWdlcz8ubGVuZ3RoKSByZXR1cm4gY29udGVudDtcbiAgcmV0dXJuIFtcbiAgICAuLi5jb250ZW50LFxuICAgIC4uLmltYWdlcy5tYXAoXG4gICAgICAoaW1hZ2UpOiBRZ3JpZENvbnRlbnQgPT4gKHtcbiAgICAgICAgdHlwZTogXCJpbWFnZVwiLFxuICAgICAgICBkYXRhOiBpbWFnZS5kYXRhLFxuICAgICAgICByZXZpc2VkUHJvbXB0OiBpbWFnZS5yZXZpc2VkUHJvbXB0ID8/IG51bGwsXG4gICAgICAgIC4uLihpbWFnZS5nZW5lcmF0aW9uID8geyBnZW5lcmF0aW9uOiBpbWFnZS5nZW5lcmF0aW9uIH0gOiB7fSksXG4gICAgICB9KSxcbiAgICApLFxuICBdO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRTdHJ1Y3R1cmVkRW52ZWxvcGVDb21wbGV4aXR5KHJvb3Q6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3QgbWF4RGVwdGggPSBTVFJVQ1RVUkVEX0VOVkVMT1BFX0xJTUlUUy5tYXhEZXB0aDtcbiAgY29uc3Qgc3RhY2sgPSBbeyB2YWx1ZTogcm9vdCwgZGVwdGg6IDAgfV07XG4gIGxldCBub2RlcyA9IDA7XG5cbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBjdXJyZW50ID0gc3RhY2sucG9wKCkhO1xuICAgIG5vZGVzICs9IDE7XG4gICAgaWYgKG5vZGVzID4gU1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMubWF4Tm9kZXMpIHtcbiAgICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKFxuICAgICAgICBgc3RydWN0dXJlZC1vdXRwdXQgZW52ZWxvcGUgZXhjZWVkcyBub2RlIGxpbWl0IG9mICR7U1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMubWF4Tm9kZXN9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChjdXJyZW50LmRlcHRoID4gbWF4RGVwdGgpIHtcbiAgICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKFxuICAgICAgICBgc3RydWN0dXJlZC1vdXRwdXQgZW52ZWxvcGUgZXhjZWVkcyBkZXB0aCBsaW1pdCBvZiAke21heERlcHRofWAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGN1cnJlbnQudmFsdWUgPT09IFwibnVtYmVyXCIgJiYgIU51bWJlci5pc0Zpbml0ZShjdXJyZW50LnZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xDYWxsRW11bGF0aW9uRXJyb3IoXCJhbnN3ZXIgbXVzdCBiZSB2YWxpZCBKU09OXCIpO1xuICAgIH1cbiAgICBpZiAoY3VycmVudC52YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgY3VycmVudC52YWx1ZSAhPT0gXCJvYmplY3RcIikgY29udGludWU7XG5cbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIE9iamVjdC52YWx1ZXMoY3VycmVudC52YWx1ZSkpIHtcbiAgICAgIHN0YWNrLnB1c2goeyB2YWx1ZSwgZGVwdGg6IGN1cnJlbnQuZGVwdGggKyAxIH0pO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBUUEsTUFBTSw2QkFBNkI7Q0FDakMsY0FBYyxNQUFNO0NBQ3BCLFVBQVU7Q0FDVixVQUFVO0FBQ1o7QUFTQSxNQUFNLFNBQVMsVUFBVSxDQUFDLFNBQVMsZ0JBQWdCLENBQUM7QUFRcEQsU0FBUyxvQkFBb0IsWUFBd0I7Q0FDbkQsT0FBTyxFQUFFLGFBQWEsRUFDcEIsUUFBUSxFQUFFLG1CQUFtQixVQUFVLENBQ3JDLEVBQUUsYUFBYTtFQUNiLFFBQVEsRUFBRSxRQUFRLFFBQVE7RUFDMUIsUUFDRSxlQUFlLFNBQ1gsRUFBRSxPQUFPLElBQ1QsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLFdBQVcsV0FBVyxNQUFNLEVBQzNDLFNBQVMsMEJBQ1gsQ0FBQztFQUNQLFdBQVcsRUFB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
|
|
130
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1lbXVsYXRpb24uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3Rvb2wtZW11bGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCJub2RlOmJ1ZmZlclwiO1xuXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuLy8g7J2R64u1KOuqqOuNuCDstpzroKUpIGVudmVsb3BlIOydmCDsnpDsm5Ag7ZWc64+ELiBjYWxsZXIg7Iqk7YKk66eIIOyghOyymOumrCDtlZzrj4QoQ0FMTEVSX1NDSEVNQV9MSU1JVFMp7JmAIOqwkuydtFxuLy8g6rCZ7JWEIOuztOyXrOuPhCDshJzroZwg64uk66W4IOyekOybkOydhCDsp4DtgqTripQg64+F66a9IOyDgeyImOuLpCDigJQg7Iqk7YKk66eIIOq5iuydtOuKlCDsnbjsiqTthLTsiqQg6rmK7J2066W8IGJvdW5kIO2VmOyngFxuLy8g7JWK7Jy866+A66GcKOyerOq3gCAkcmVmIO2XiOyaqSkg7LqY65+sIO2VnOuPhOulvCDsobDsoJXtlbTrj4Qg7J2R64u1IOyImOyaqSDquLDspIDsnbQg65Sw6528IOybgOyngeyXrOyEoCDslYgg65Cc64ukLlxuY29uc3QgU1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMgPSB7XG4gIG1heFV0ZjhCeXRlczogNTEyICogMTAyNCxcbiAgbWF4Tm9kZXM6IDIwXzAwMCxcbiAgbWF4RGVwdGg6IDEzMixcbn0gYXMgY29uc3Q7XG5pbXBvcnQge1xuICB0eXBlIEltYWdlR2VuZXJhdGlvbk1ldGFkYXRhLFxuICB0eXBlIFFncmlkQ29udGVudCxcbiAgdHlwZSBRZ3JpZFRocmVhZENvb3JkLFxuICB0eXBlIFFncmlkVG9vbCxcbiAgdHlwZSBRdWVyeU91dHB1dCxcbn0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwidG9vbC1lbXVsYXRpb25cIl0pO1xuXG50eXBlIEVtdWxhdGlvblJlc3VsdCA9IE9taXQ8UXVlcnlPdXRwdXQsIFwiY29udGVudFwiIHwgXCJmaW5pc2hSZWFzb25cIiB8IFwicnVuQ29udGV4dFwiPjtcbnR5cGUgVG9vbENhbGwgPSB7IHRvb2xOYW1lOiBzdHJpbmc7IGFyZ3M6IHN0cmluZyB9O1xuXG4vLyBlbnZlbG9wZSDripQge3Jlc3VsdDogPHVuaW9uPn0g7ZWcIOqyuSDqtazsobAg4oCUIOyKpO2CpOuniCDqt7zqsbDripQgdG9vbC1lbXVsYXRpb24tc2NoZW1hLnRzIOywuOyhsC5cbi8vIGFuc3dlciDtg4DsnoXrp4wg7JqU7LKtIO2Yle2DnOyXkCDrlLDrnbwg64uk66W064ukOiB0b29scy1vbmx5IOuKlCBzdHJpbmco6re464yA66GcIOuwmO2ZmCksXG4vLyB0b29scytqc29uU2NoZW1hIOuKlCDsgqzsmqnsnpAg7Iqk7YKk66eI7J2YIEpTT04g6rCSKEpTT04uc3RyaW5naWZ5IOuhnCDrsJjtmZgpLlxuZnVuY3Rpb24gYnVpbGRFbnZlbG9wZVNjaGVtYShhbnN3ZXJLaW5kOiBBbnN3ZXJLaW5kKSB7XG4gIHJldHVybiB6LnN0cmljdE9iamVjdCh7XG4gICAgcmVzdWx0OiB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcImFjdGlvblwiLCBbXG4gICAgICB6LnN0cmljdE9iamVjdCh7XG4gICAgICAgIGFjdGlvbjogei5saXRlcmFsKFwiYW5zd2VyXCIpLFxuICAgICAgICBhbnN3ZXI6XG4gICAgICAgICAgYW5zd2VyS2luZCA9PT0gXCJ0ZXh0XCJcbiAgICAgICAgICAgID8gei5zdHJpbmcoKVxuICAgICAgICAgICAgOiB6Lmpzb24oKS5yZWZpbmUoKGFuc3dlcikgPT4gYW5zd2VyICE9PSBudWxsLCB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogXCJhbnN3ZXIgbXVzdCBiZSBub24tbnVsbFwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgdG9vbENhbGxzOiB6Lm51bGwoKSxcbiAgICAgIH0pLFxuICAgICAgei5zdHJpY3RPYmplY3Qoe1xuICAgICAgICBhY3Rpb246IHoubGl0ZXJhbChcInRvb2xfY2FsbFwiKSxcbiAgICAgICAgYW5zd2VyOiB6Lm51bGwoKSxcbiAgICAgICAgdG9vbENhbGxzOiB6XG4gICAgICAgICAgLmFycmF5KFxuICAgICAgICAgICAgei5zdHJpY3RPYmplY3Qoe1xuICAgICAgICAgICAgICB0b29sTmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgICAgICAgYXJnczogei5zdHJpbmcoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgICAubWluKDEpLFxuICAgICAgfSksXG4gICAgXSksXG4gIH0pO1xufVxuXG5jb25zdCBURVhUX0VOVkVMT1BFID0gYnVpbGRFbnZlbG9wZVNjaGVtYShcInRleHRcIik7XG5jb25zdCBKU09OX0VOVkVMT1BFID0gYnVpbGRFbnZlbG9wZVNjaGVtYShcImpzb25cIik7XG50eXBlIEVudmVsb3BlUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBKU09OX0VOVkVMT1BFPltcInJlc3VsdFwiXTtcblxuZXhwb3J0IGNsYXNzIFRvb2xDYWxsRW11bGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKGB0b29sLWNhbGwgZW11bGF0aW9uOiAke21lc3NhZ2V9YCk7XG4gICAgdGhpcy5uYW1lID0gXCJUb29sQ2FsbEVtdWxhdGlvbkVycm9yXCI7XG4gIH1cbn1cblxuLy8gUHJlc2VydmUgaW1hZ2UgYnl0ZXMgYW5kIHRoZSBwcm92aWRlcidzIHJlc29sdmVkIE1JTUUgdHlwZS5cbmludGVyZmFjZSBFbXVsYXRpb25JbWFnZSB7XG4gIGRhdGE6IHN0cmluZztcbiAgbWVkaWFUeXBlPzogRXh0cmFjdDxRZ3JpZENvbnRlbnQsIHsgdHlwZTogXCJpbWFnZVwiIH0+W1wibWVkaWFUeXBlXCJdO1xuICByZXZpc2VkUHJvbXB0Pzogc3RyaW5nIHwgbnVsbDtcbiAgZ2VuZXJhdGlvbj86IEltYWdlR2VuZXJhdGlvbk1ldGFkYXRhO1xufVxuXG4vLyBhbnN3ZXIg7J247L2U65SpIOyiheulmC4gZW52ZWxvcGUg65SU7L2U642U64qUIO2VnCDrsozsnbTqs6Ag7J20IOqwkuydgCBhbnN3ZXIg67iM656c7LmY7J2YIO2DgOyeheqzvFxuLy8g7LWc7KKFIOyngeugrO2ZlCh0ZXh0OiDqt7jrjIDroZwgLyBqc29uOiBKU09OLnN0cmluZ2lmeSnrp4wg6rCA66W464ukLlxuZXhwb3J0IHR5cGUgQW5zd2VyS2luZCA9IFwidGV4dFwiIHwgXCJqc29uXCI7XG5cbmludGVyZmFjZSBUb29sQ2FsbEVtdWxhdGlvbk9wdGlvbnMge1xuICB0aHJlYWRDb29yZD86IFFncmlkVGhyZWFkQ29vcmQ7XG4gIGltYWdlcz86IEVtdWxhdGlvbkltYWdlW107XG4gIC8vIO2VhOyImDog7Zi47Lac67aA6rCAIGFuc3dlciDsnbjsvZTrlKnsnYQg7ZWt7IOBIOuqheyLnO2VtOyVvCDtlZzri6QgKGlucHV0Lmpzb25TY2hlbWEg7Jyg66y066GcIO2MkOyglSkuXG4gIGFuc3dlcktpbmQ6IEFuc3dlcktpbmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVRvb2xDYWxsRW11bGF0aW9uKFxuICByZXN1bHQ6IEVtdWxhdGlvblJlc3VsdCxcbiAgdG9vbHM6IFFncmlkVG9vbFtdIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zOiBUb29sQ2FsbEVtdWxhdGlvbk9wdGlvbnMsXG4pOiBRdWVyeU91dHB1dCB7XG4gIGNvbnN0IHsgdGhyZWFkQ29vcmQsIGltYWdlcywgYW5zd2VyS2luZCB9ID0gb3B0aW9ucztcbiAgY29uc3QgcnVuQ29udGV4dCA9IHRocmVhZENvb3JkID8geyB0aHJlYWRDb29yZCB9IDogdW5kZWZpbmVkO1xuXG4gIGlmICghdG9vbHM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBhbnN3ZXJPdXRwdXQocmVzdWx0LCByZXN1bHQudGV4dCwgaW1hZ2VzLCBydW5Db250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlRW52ZWxvcGUocmVzdWx0LnRleHQsIHRvb2xzLCBhbnN3ZXJLaW5kKTtcbiAgaWYgKHBhcnNlZC5hY3Rpb24gPT09IFwidG9vbF9jYWxsXCIpIHtcbiAgICByZXR1cm4gdG9vbENhbGxPdXRwdXQocmVzdWx0LCBwYXJzZWQudG9vbENhbGxzLCBpbWFnZXMsIHJ1bkNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGFuc3dlck91dHB1dChcbiAgICByZXN1bHQsXG4gICAgYW5zd2VyS2luZCA9PT0gXCJ0ZXh0XCIgPyAocGFyc2VkLmFuc3dlciBhcyBzdHJpbmcpIDogSlNPTi5zdHJpbmdpZnkocGFyc2VkLmFuc3dlciksXG4gICAgaW1hZ2VzLFxuICAgIHJ1bkNvbnRleHQsXG4gICk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRW52ZWxvcGUodGV4dDogc3RyaW5nLCB0b29sczogUWdyaWRUb29sW10sIGFuc3dlcktpbmQ6IEFuc3dlcktpbmQpIHtcbiAgaWYgKEJ1ZmZlci5ieXRlTGVuZ3RoKHRleHQsIFwidXRmOFwiKSA+IFNUUlVDVFVSRURfRU5WRUxPUEVfTElNSVRTLm1heFV0ZjhCeXRlcykge1xuICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKFxuICAgICAgYHRvb2wgZW52ZWxvcGUgZXhjZWVkcyBVVEYtOCBieXRlIGxpbWl0IG9mICR7U1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMubWF4VXRmOEJ5dGVzfWAsXG4gICAgKTtcbiAgfVxuXG4gIGxldCB2YWx1ZTogdW5rbm93bjtcbiAgdHJ5IHtcbiAgICB2YWx1ZSA9IEpTT04ucGFyc2UodGV4dCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8g6rSA7JqpIO2PtOuwsSDsl4bsnYwuIG9wZW5haSDripQgZW52ZWxvcGUg7J20IHN0cnVjdHVyZWQgb3V0cHV0IOycvOuhnCDqsJXsoJzrkJjrr4DroZwg7Jes6riwIOuPhOuLrO2VnFxuICAgIC8vIOu5hCBKU09OIOydgCDrsoTqt7jri6QuIGFudGhyb3BpYyDsnYAg6rOE7JW97J2EIO2UhOuhrO2UhO2KuOuhnOunjCDslYjrgrTtlZjrr4DroZwoU09OLTUzMikg67mEIEpTT04g7J20XG4gICAgLy8gXCLsmIjsg4Eg6rCA64ql7ZWcIOuqqOuNuCDsi6TtjKhcIuyngOunjCwg6re4656Y64+EIOq1rOygnO2VmOyngCDslYrripTri6Qg4oCUIOqzvOqxsOydmCDthY3siqTtirgg6rWs7KCc64qUIO2HtO2ZlFxuICAgIC8vIOu0ie2IrOulvCDri7Xrs4DsnLzroZwg7Z2Y66Ck67O064K0IOyhsOyaqe2VnCDsmKTsl7zsnYQg66eM65Ok7JeI64ukKDIwMjYtMDcgbWVkcGF0aCwgMTMuNWsg6rG0KS5cbiAgICAvLyDsoJXsp4HtlZwg7Iuk7Yyo6rCAIOuztOyXrOyVvCDshozruYTsnpDqsIAg7J6s7Iuc64+E7ZWY6rGw64KYIOq3vOuzuCDsm5DsnbjsnYQg6rOg7Lmc64ukLlxuICAgIC8vIOynhOuLqOyXkOuKlCDsnITrsJgg7JuQ66y47J2YIOuouOumrOqwgCDtlYTsmpTtlZjri6QoU09OLTQ5NSDsoITroYApIOKAlCBwYXJzZSDsl5Drn6wg7JyE7LmY66eM7Jy866Gc64qUXG4gICAgLy8gXCLtlITroZzspojroZwg64u17ZaI64qU7KeAIC8g7Y6c7Iqk6rCAIOuCqOyVmOuKlOyngCAvIEpTT04g7J20IOyemOuguOuKlOyngFwi66W8IOq1rOu2hO2VoCDsiJgg7JeG64ukLlxuICAgIGNvbnN0IGhlYWQgPSBKU09OLnN0cmluZ2lmeSh0ZXh0LnNsaWNlKDAsIDIwMCkpO1xuICAgIGxvZ2dlci53YXJuKGB0b29sIGVudmVsb3BlIHBhcnNlIGZhaWxlZDogJHsoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2V9OyBoZWFkPSR7aGVhZH1gKTtcbiAgICB0aHJvdyBuZXcgVG9vbENhbGxFbXVsYXRpb25FcnJvcihcbiAgICAgIGBpbnZhbGlkIHRvb2wgZW52ZWxvcGUgKHJlc3BvbnNlIGlzIG5vdCBKU09OIOKAlCB0aGUgbW9kZWwgaWdub3JlZCB0aGUgZW52ZWxvcGUgY29udHJhY3Q7IHJldHJ5IGlzIHRoZSBjYWxsZXIncyBkZWNpc2lvbik6ICR7KGVycm9yIGFzIEVycm9yKS5tZXNzYWdlfTsgcmVzcG9uc2UgaGVhZDogJHtoZWFkfWAsXG4gICAgKTtcbiAgfVxuXG4gIGFzc2VydFN0cnVjdHVyZWRFbnZlbG9wZUNvbXBsZXhpdHkodmFsdWUpO1xuICBjb25zdCBzY2hlbWEgPSBhbnN3ZXJLaW5kID09PSBcInRleHRcIiA/IFRFWFRfRU5WRUxPUEUgOiBKU09OX0VOVkVMT1BFO1xuICBjb25zdCB2YWxpZGF0aW9uID0gc2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSk7XG4gIGlmICghdmFsaWRhdGlvbi5zdWNjZXNzKSB7XG4gICAgY29uc3QgaXNzdWUgPSB2YWxpZGF0aW9uLmVycm9yLmlzc3Vlc1swXTtcbiAgICBjb25zdCBwYXRoID0gaXNzdWUgJiYgaXNzdWUucGF0aC5sZW5ndGggPiAwID8gYCBhdCAke2lzc3VlLnBhdGguam9pbihcIi5cIil9YCA6IFwiXCI7XG4gICAgY29uc3QgZGV0YWlsID0gaXNzdWU/Lm1lc3NhZ2UgPz8gXCJ1bmtub3duIHZhbGlkYXRpb24gaXNzdWVcIjtcbiAgICAvLyB2YWxpZCBKU09OIOydtOyngOunjCDqs4Tslb0g7JyE67CY7J24IOqyveyasOyXkOuPhCDsm5DrrLgg66i466as66W8IOuCqOq4tOuLpCDigJQgem9kIOqyveuhnOunjOycvOuhnOuKlFxuICAgIC8vIFwi7YKkIOyDneueteyduOyngCAvIOuemO2NvOuhnCDqsJDsjIzripTsp4AgLyDtg4DsnoXsnbQg7YuA66C464qU7KeAXCLsnZgg7Iuk66y87J2EIOuzvCDsiJgg7JeG64ukLlxuICAgIGNvbnN0IGhlYWQgPSBKU09OLnN0cmluZ2lmeSh0ZXh0LnNsaWNlKDAsIDIwMCkpO1xuICAgIGxvZ2dlci53YXJuKGB0b29sIGVudmVsb3BlIHZhbGlkYXRpb24gZmFpbGVkJHtwYXRofTogJHtkZXRhaWx9OyBoZWFkPSR7aGVhZH1gKTtcbiAgICB0aHJvdyBuZXcgVG9vbENhbGxFbXVsYXRpb25FcnJvcihcbiAgICAgIGBpbnZhbGlkIHRvb2wgZW52ZWxvcGUke3BhdGh9OiAke2RldGFpbH07IHJlc3BvbnNlIGhlYWQ6ICR7aGVhZH1gLFxuICAgICk7XG4gIH1cblxuICAvLyBab2QgY2xvbmVzIEpTT04gb2JqZWN0cyBhbmQgZHJvcHMgb3duIFwiX19wcm90b19fXCIga2V5cy4gVGhlIHBhcnNlZCBKU09OIGlzIHNhZmUgdG8gcmV0dXJuXG4gIC8vIGFmdGVyIHZhbGlkYXRpb24gYW5kIHByZXNlcnZlcyB0aGUgY2FsbGVyJ3MgZXhhY3Qgc3RydWN0dXJlZCB2YWx1ZS5cbiAgY29uc3QgcmVzcG9uc2UgPSAodmFsdWUgYXMgeyByZXN1bHQ6IEVudmVsb3BlUmVzcG9uc2UgfSkucmVzdWx0O1xuICBpZiAocmVzcG9uc2UuYWN0aW9uID09PSBcInRvb2xfY2FsbFwiKSB7XG4gICAgY29uc3QgdW5rbm93blRvb2wgPSBmaW5kVW5rbm93blRvb2wocmVzcG9uc2UudG9vbENhbGxzLCB0b29scyk7XG4gICAgaWYgKHVua25vd25Ub29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKGB1bmtub3duIGVtdWxhdGVkIHRvb2w6ICR7dW5rbm93blRvb2x9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNwb25zZTtcbn1cblxuZnVuY3Rpb24gdG9vbENhbGxPdXRwdXQoXG4gIHJlc3VsdDogRW11bGF0aW9uUmVzdWx0LFxuICB0b29sQ2FsbHM6IFRvb2xDYWxsW10sXG4gIGltYWdlczogRW11bGF0aW9uSW1hZ2VbXSB8IHVuZGVmaW5lZCxcbiAgcnVuQ29udGV4dDogUXVlcnlPdXRwdXRbXCJydW5Db250ZXh0XCJdLFxuKTogUXVlcnlPdXRwdXQge1xuICByZXR1cm4ge1xuICAgIC4uLnJlc3VsdCxcbiAgICBjb250ZW50OiBhcHBlbmRJbWFnZXMoXG4gICAgICB0b29sQ2FsbHMubWFwKCh0b29sQ2FsbCkgPT4gKHtcbiAgICAgICAgdHlwZTogXCJ0b29sLWNhbGxcIixcbiAgICAgICAgdG9vbENhbGxJZDogYGNhbGxfJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCAxMCl9YCxcbiAgICAgICAgdG9vbE5hbWU6IHRvb2xDYWxsLnRvb2xOYW1lLFxuICAgICAgICBpbnB1dDogdG9vbENhbGwuYXJncyxcbiAgICAgIH0pKSxcbiAgICAgIGltYWdlcyxcbiAgICApLFxuICAgIGZpbmlzaFJlYXNvbjogXCJ0b29sLWNhbGxzXCIsXG4gICAgcnVuQ29udGV4dCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYW5zd2VyT3V0cHV0KFxuICByZXN1bHQ6IEVtdWxhdGlvblJlc3VsdCxcbiAgdGV4dDogc3RyaW5nLFxuICBpbWFnZXM6IEVtdWxhdGlvbkltYWdlW10gfCB1bmRlZmluZWQsXG4gIHJ1bkNvbnRleHQ6IFF1ZXJ5T3V0cHV0W1wicnVuQ29udGV4dFwiXSxcbik6IFF1ZXJ5T3V0cHV0IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5yZXN1bHQsXG4gICAgdGV4dCxcbiAgICBjb250ZW50OiBhcHBlbmRJbWFnZXMoW3sgdHlwZTogXCJ0ZXh0XCIsIHRleHQgfV0sIGltYWdlcyksXG4gICAgZmluaXNoUmVhc29uOiBcInN0b3BcIixcbiAgICBydW5Db250ZXh0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBmaW5kVW5rbm93blRvb2wodG9vbENhbGxzOiBUb29sQ2FsbFtdLCB0b29sczogUWdyaWRUb29sW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBrbm93blRvb2xOYW1lcyA9IG5ldyBTZXQodG9vbHMubWFwKCh0b29sKSA9PiB0b29sLm5hbWUpKTtcbiAgcmV0dXJuIHRvb2xDYWxscy5maW5kKCh0b29sQ2FsbCkgPT4gIWtub3duVG9vbE5hbWVzLmhhcyh0b29sQ2FsbC50b29sTmFtZSkpPy50b29sTmFtZTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kSW1hZ2VzKGNvbnRlbnQ6IFFncmlkQ29udGVudFtdLCBpbWFnZXM/OiBFbXVsYXRpb25JbWFnZVtdKTogUWdyaWRDb250ZW50W10ge1xuICBpZiAoIWltYWdlcz8ubGVuZ3RoKSByZXR1cm4gY29udGVudDtcbiAgcmV0dXJuIFtcbiAgICAuLi5jb250ZW50LFxuICAgIC4uLmltYWdlcy5tYXAoXG4gICAgICAoaW1hZ2UpOiBRZ3JpZENvbnRlbnQgPT4gKHtcbiAgICAgICAgdHlwZTogXCJpbWFnZVwiLFxuICAgICAgICBkYXRhOiBpbWFnZS5kYXRhLFxuICAgICAgICAuLi4oaW1hZ2UubWVkaWFUeXBlID8geyBtZWRpYVR5cGU6IGltYWdlLm1lZGlhVHlwZSB9IDoge30pLFxuICAgICAgICByZXZpc2VkUHJvbXB0OiBpbWFnZS5yZXZpc2VkUHJvbXB0ID8/IG51bGwsXG4gICAgICAgIC4uLihpbWFnZS5nZW5lcmF0aW9uID8geyBnZW5lcmF0aW9uOiBpbWFnZS5nZW5lcmF0aW9uIH0gOiB7fSksXG4gICAgICB9KSxcbiAgICApLFxuICBdO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRTdHJ1Y3R1cmVkRW52ZWxvcGVDb21wbGV4aXR5KHJvb3Q6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3QgbWF4RGVwdGggPSBTVFJVQ1RVUkVEX0VOVkVMT1BFX0xJTUlUUy5tYXhEZXB0aDtcbiAgY29uc3Qgc3RhY2sgPSBbeyB2YWx1ZTogcm9vdCwgZGVwdGg6IDAgfV07XG4gIGxldCBub2RlcyA9IDA7XG5cbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBjdXJyZW50ID0gc3RhY2sucG9wKCkhO1xuICAgIG5vZGVzICs9IDE7XG4gICAgaWYgKG5vZGVzID4gU1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMubWF4Tm9kZXMpIHtcbiAgICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKFxuICAgICAgICBgc3RydWN0dXJlZC1vdXRwdXQgZW52ZWxvcGUgZXhjZWVkcyBub2RlIGxpbWl0IG9mICR7U1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMubWF4Tm9kZXN9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChjdXJyZW50LmRlcHRoID4gbWF4RGVwdGgpIHtcbiAgICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKFxuICAgICAgICBgc3RydWN0dXJlZC1vdXRwdXQgZW52ZWxvcGUgZXhjZWVkcyBkZXB0aCBsaW1pdCBvZiAke21heERlcHRofWAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGN1cnJlbnQudmFsdWUgPT09IFwibnVtYmVyXCIgJiYgIU51bWJlci5pc0Zpbml0ZShjdXJyZW50LnZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xDYWxsRW11bGF0aW9uRXJyb3IoXCJhbnN3ZXIgbXVzdCBiZSB2YWxpZCBKU09OXCIpO1xuICAgIH1cbiAgICBpZiAoY3VycmVudC52YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgY3VycmVudC52YWx1ZSAhPT0gXCJvYmplY3RcIikgY29udGludWU7XG5cbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIE9iamVjdC52YWx1ZXMoY3VycmVudC52YWx1ZSkpIHtcbiAgICAgIHN0YWNrLnB1c2goeyB2YWx1ZSwgZGVwdGg6IGN1cnJlbnQuZGVwdGggKyAxIH0pO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBUUEsTUFBTSw2QkFBNkI7Q0FDakMsY0FBYyxNQUFNO0NBQ3BCLFVBQVU7Q0FDVixVQUFVO0FBQ1o7QUFTQSxNQUFNLFNBQVMsVUFBVSxDQUFDLFNBQVMsZ0JBQWdCLENBQUM7QUFRcEQsU0FBUyxvQkFBb0IsWUFBd0I7Q0FDbkQsT0FBTyxFQUFFLGFBQWEsRUFDcEIsUUFBUSxFQUFFLG1CQUFtQixVQUFVLENBQ3JDLEVBQUUsYUFBYTtFQUNiLFFBQVEsRUFBRSxRQUFRLFFBQVE7RUFDMUIsUUFDRSxlQUFlLFNBQ1gsRUFBRSxP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
|
|
@@ -91,6 +91,25 @@ function usageFrom(value) {
|
|
|
91
91
|
totalTokens: Number(usage.total_tokens ?? 0)
|
|
92
92
|
};
|
|
93
93
|
}
|
|
94
|
+
function imageMimeType(base64, outputFormat) {
|
|
95
|
+
const header = Buffer.from(base64.slice(0, 24), "base64");
|
|
96
|
+
if (header.subarray(0, 8).equals(Buffer.from([
|
|
97
|
+
137,
|
|
98
|
+
80,
|
|
99
|
+
78,
|
|
100
|
+
71,
|
|
101
|
+
13,
|
|
102
|
+
10,
|
|
103
|
+
26,
|
|
104
|
+
10
|
|
105
|
+
]))) return "image/png";
|
|
106
|
+
if (header[0] === 255 && header[1] === 216 && header[2] === 255) return "image/jpeg";
|
|
107
|
+
if (header.toString("ascii", 0, 4) === "RIFF" && header.toString("ascii", 8, 12) === "WEBP") return "image/webp";
|
|
108
|
+
if (outputFormat === "jpeg") return "image/jpeg";
|
|
109
|
+
if (outputFormat === "webp") return "image/webp";
|
|
110
|
+
if (outputFormat === void 0 || outputFormat === "png") return "image/png";
|
|
111
|
+
throw new OpenAIProtocolError(`Unsupported image output format: ${String(outputFormat)}`);
|
|
112
|
+
}
|
|
94
113
|
function normalizeOpenAIEvent(raw) {
|
|
95
114
|
if (!raw || typeof raw !== "object") return void 0;
|
|
96
115
|
const event = raw;
|
|
@@ -112,7 +131,7 @@ function normalizeOpenAIEvent(raw) {
|
|
|
112
131
|
type: "image",
|
|
113
132
|
...typeof item.id === "string" ? { id: item.id } : {},
|
|
114
133
|
base64: item.result,
|
|
115
|
-
mimeType:
|
|
134
|
+
mimeType: imageMimeType(item.result, item.output_format),
|
|
116
135
|
...typeof item.revised_prompt === "string" ? { revisedPrompt: item.revised_prompt } : typeof item.revisedPrompt === "string" ? { revisedPrompt: item.revisedPrompt } : {}
|
|
117
136
|
};
|
|
118
137
|
return {
|
|
@@ -139,6 +158,6 @@ function normalizeOpenAIEvent(raw) {
|
|
|
139
158
|
}
|
|
140
159
|
}
|
|
141
160
|
//#endregion
|
|
142
|
-
export { CHATGPT_CODEX_RESPONSES_URL, CODEX_CLI_ORIGINATOR, CODEX_CLI_VERSION, OpenAIProtocolError, buildCodexIdentityHeaders, buildOpenAIResponsesRequest, codexCliUserAgent, normalizeOpenAIEvent };
|
|
161
|
+
export { CHATGPT_CODEX_RESPONSES_URL, CODEX_CLI_ORIGINATOR, CODEX_CLI_VERSION, OpenAIProtocolError, buildCodexIdentityHeaders, buildOpenAIResponsesRequest, codexCliUserAgent, imageMimeType, normalizeOpenAIEvent };
|
|
143
162
|
|
|
144
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFpLWJhY2tlbmQtcHJvdG9jb2wuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Byb3ZpZGVycy9vcGVuYWkvb3BlbmFpLWJhY2tlbmQtcHJvdG9jb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9zIGZyb20gXCJub2RlOm9zXCI7XG5cbmltcG9ydCB7IHR5cGUgSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEgfSBmcm9tIFwiLi4vLi4vLi4vYXBwbGljYXRpb24vcWdyaWQvcWdyaWQudHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgT3BlbkFJRWZmb3J0IH0gZnJvbSBcIi4uL2NvbW1vbi9lZmZvcnRcIjtcblxuZXhwb3J0IGNvbnN0IENIQVRHUFRfQ09ERVhfUkVTUE9OU0VTX1VSTCA9XG4gIFwiaHR0cHM6Ly9jaGF0Z3B0LmNvbS9iYWNrZW5kLWFwaS9jb2RleC9yZXNwb25zZXNcIiBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IENPREVYX0NMSV9PUklHSU5BVE9SID0gXCJjb2RleF9jbGlfcnNcIiBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBDT0RFWF9DTElfVkVSU0lPTiA9IFwiMC4xNDcuMFwiIGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvZGV4VXNlckFnZW50UGxhdGZvcm0ge1xuICBvc1R5cGU6IHN0cmluZztcbiAgb3NWZXJzaW9uOiBzdHJpbmc7XG4gIGFyY2hpdGVjdHVyZTogc3RyaW5nO1xuICB0ZXJtaW5hbDogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBjb2RleFBsYXRmb3JtKCk6IENvZGV4VXNlckFnZW50UGxhdGZvcm0ge1xuICBjb25zdCBuYW1lczogUGFydGlhbDxSZWNvcmQ8Tm9kZUpTLlBsYXRmb3JtLCBzdHJpbmc+PiA9IHtcbiAgICBkYXJ3aW46IFwiTWFjIE9TXCIsXG4gICAgbGludXg6IFwiTGludXhcIixcbiAgICB3aW4zMjogXCJXaW5kb3dzXCIsXG4gIH07XG4gIGNvbnN0IHRlcm1pbmFsID0gcHJvY2Vzcy5lbnYuVEVSTV9QUk9HUkFNO1xuICBjb25zdCB0ZXJtaW5hbFZlcnNpb24gPSBwcm9jZXNzLmVudi5URVJNX1BST0dSQU1fVkVSU0lPTjtcbiAgcmV0dXJuIHtcbiAgICBvc1R5cGU6IG5hbWVzW3Byb2Nlc3MucGxhdGZvcm1dID8/IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgb3NWZXJzaW9uOiBvcy5yZWxlYXNlKCksXG4gICAgYXJjaGl0ZWN0dXJlOiBwcm9jZXNzLmFyY2gsXG4gICAgdGVybWluYWw6IHRlcm1pbmFsID8gYCR7dGVybWluYWx9JHt0ZXJtaW5hbFZlcnNpb24gPyBgLyR7dGVybWluYWxWZXJzaW9ufWAgOiBcIlwifWAgOiBcInVua25vd25cIixcbiAgfTtcbn1cblxuLyoqIE1hdGNoZXMgdGhlIHBsYXRmb3JtL3Rlcm1pbmFsIHN1ZmZpeCBlbWl0dGVkIGJ5IHRoZSBwaW5uZWQgUnVzdCBDb2RleCBDTEkuICovXG5leHBvcnQgZnVuY3Rpb24gY29kZXhDbGlVc2VyQWdlbnQocGxhdGZvcm06IENvZGV4VXNlckFnZW50UGxhdGZvcm0gPSBjb2RleFBsYXRmb3JtKCkpOiBzdHJpbmcge1xuICByZXR1cm4gYGNvZGV4X2NsaV9ycy8ke0NPREVYX0NMSV9WRVJTSU9OfSAoJHtwbGF0Zm9ybS5vc1R5cGV9ICR7cGxhdGZvcm0ub3NWZXJzaW9ufTsgJHtwbGF0Zm9ybS5hcmNoaXRlY3R1cmV9KSAke3BsYXRmb3JtLnRlcm1pbmFsfWA7XG59XG5cbmV4cG9ydCB0eXBlIEpzb25WYWx1ZSA9XG4gIHwgbnVsbFxuICB8IGJvb2xlYW5cbiAgfCBudW1iZXJcbiAgfCBzdHJpbmdcbiAgfCBKc29uVmFsdWVbXVxuICB8IHsgW2tleTogc3RyaW5nXTogSnNvblZhbHVlIH07XG5cbi8qKiBSYXcgUmVzcG9uc2VzIEFQSSBpdGVtcy4gS2VlcGluZyB0aGVzZSBvcGFxdWUgcHJlc2VydmVzIHRoZSBjb21wbGV0ZSBjb252ZXJzYXRpb24gaGlzdG9yeS4gKi9cbmV4cG9ydCB0eXBlIE9wZW5BSVJlc3BvbnNlSXRlbSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BSU91dHB1dFNjaGVtYSB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHNjaGVtYTogSnNvblZhbHVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BSVJlc3BvbnNlc09wdGlvbnMge1xuICBtb2RlbDogc3RyaW5nO1xuICBpbnN0cnVjdGlvbnM/OiBzdHJpbmc7XG4gIGhpc3Rvcnk6IHJlYWRvbmx5IE9wZW5BSVJlc3BvbnNlSXRlbVtdO1xuICB0b29scz86IHJlYWRvbmx5IE9wZW5BSVJlc3BvbnNlSXRlbVtdO1xuICB0b29sQ2hvaWNlPzogc3RyaW5nIHwgT3BlbkFJUmVzcG9uc2VJdGVtO1xuICBwYXJhbGxlbFRvb2xDYWxscz86IGJvb2xlYW47XG4gIHJlYXNvbmluZz86IHtcbiAgICBlZmZvcnQ/OiBPcGVuQUlFZmZvcnQ7XG4gICAgc3VtbWFyeT86IFwiYXV0b1wiIHwgXCJjb25jaXNlXCIgfCBcImRldGFpbGVkXCI7XG4gIH07XG4gIHZlcmJvc2l0eT86IFwibG93XCIgfCBcIm1lZGl1bVwiIHwgXCJoaWdoXCI7XG4gIHNlcnZpY2VUaWVyPzogc3RyaW5nO1xuICBwcm9tcHRDYWNoZUtleT86IHN0cmluZztcbiAgb3V0cHV0U2NoZW1hPzogT3BlbkFJT3V0cHV0U2NoZW1hO1xuICBpbWFnZUdlbmVyYXRpb24/OiBib29sZWFuIHwgT3BlbkFJUmVzcG9uc2VJdGVtO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BSVJlc3BvbnNlc1JlcXVlc3Qge1xuICBtb2RlbDogc3RyaW5nO1xuICBpbnN0cnVjdGlvbnM/OiBzdHJpbmc7XG4gIGlucHV0OiBPcGVuQUlSZXNwb25zZUl0ZW1bXTtcbiAgdG9vbHM/OiBPcGVuQUlSZXNwb25zZUl0ZW1bXTtcbiAgdG9vbF9jaG9pY2U6IHN0cmluZyB8IE9wZW5BSVJlc3BvbnNlSXRlbTtcbiAgcGFyYWxsZWxfdG9vbF9jYWxsczogYm9vbGVhbjtcbiAgcmVhc29uaW5nOiBPcGVuQUlSZXNwb25zZXNPcHRpb25zW1wicmVhc29uaW5nXCJdIHwgbnVsbDtcbiAgc3RvcmU6IGZhbHNlO1xuICBzdHJlYW06IHRydWU7XG4gIGluY2x1ZGU6IHN0cmluZ1tdO1xuICBzZXJ2aWNlX3RpZXI/OiBzdHJpbmc7XG4gIHByb21wdF9jYWNoZV9rZXk/OiBzdHJpbmc7XG4gIHRleHQ/OiB7XG4gICAgdmVyYm9zaXR5PzogXCJsb3dcIiB8IFwibWVkaXVtXCIgfCBcImhpZ2hcIjtcbiAgICBmb3JtYXQ/OiB7XG4gICAgICB0eXBlOiBcImpzb25fc2NoZW1hXCI7XG4gICAgICBzdHJpY3Q6IHRydWU7XG4gICAgICBzY2hlbWE6IEpzb25WYWx1ZTtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRPcGVuQUlSZXNwb25zZXNSZXF1ZXN0KFxuICBvcHRpb25zOiBPcGVuQUlSZXNwb25zZXNPcHRpb25zLFxuKTogT3BlbkFJUmVzcG9uc2VzUmVxdWVzdCB7XG4gIGNvbnN0IHRvb2xzID0gb3B0aW9ucy50b29scyA/IFsuLi5vcHRpb25zLnRvb2xzXSA6IFtdO1xuICBpZiAob3B0aW9ucy5pbWFnZUdlbmVyYXRpb24pIHtcbiAgICB0b29scy5wdXNoKFxuICAgICAgb3B0aW9ucy5pbWFnZUdlbmVyYXRpb24gPT09IHRydWVcbiAgICAgICAgPyB7IHR5cGU6IFwiaW1hZ2VfZ2VuZXJhdGlvblwiIH1cbiAgICAgICAgOiB7IHR5cGU6IFwiaW1hZ2VfZ2VuZXJhdGlvblwiLCAuLi5vcHRpb25zLmltYWdlR2VuZXJhdGlvbiB9LFxuICAgICk7XG4gIH1cblxuICBjb25zdCB0ZXh0ID1cbiAgICBvcHRpb25zLnZlcmJvc2l0eSB8fCBvcHRpb25zLm91dHB1dFNjaGVtYVxuICAgICAgPyB7XG4gICAgICAgICAgLi4uKG9wdGlvbnMudmVyYm9zaXR5ID8geyB2ZXJib3NpdHk6IG9wdGlvbnMudmVyYm9zaXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdGlvbnMub3V0cHV0U2NoZW1hXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwianNvbl9zY2hlbWFcIiBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgIHN0cmljdDogdHJ1ZSBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgIHNjaGVtYTogb3B0aW9ucy5vdXRwdXRTY2hlbWEuc2NoZW1hLFxuICAgICAgICAgICAgICAgICAgbmFtZTogb3B0aW9ucy5vdXRwdXRTY2hlbWEubmFtZSA/PyBcImNvZGV4X291dHB1dF9zY2hlbWFcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICBtb2RlbDogb3B0aW9ucy5tb2RlbCxcbiAgICAuLi4ob3B0aW9ucy5pbnN0cnVjdGlvbnMgPyB7IGluc3RydWN0aW9uczogb3B0aW9ucy5pbnN0cnVjdGlvbnMgfSA6IHt9KSxcbiAgICAvLyBDb3B5IHRoZSBhcnJheSwgbm90IGl0cyBpdGVtczogcmF3IGl0ZW1zIG11c3QgYXJyaXZlIGJ5dGUtZm9yLWJ5dGUgZXF1aXZhbGVudC5cbiAgICBpbnB1dDogWy4uLm9wdGlvbnMuaGlzdG9yeV0sXG4gICAgLi4uKHRvb2xzLmxlbmd0aCA/IHsgdG9vbHMgfSA6IHt9KSxcbiAgICB0b29sX2Nob2ljZTogb3B0aW9ucy50b29sQ2hvaWNlID8/IFwiYXV0b1wiLFxuICAgIHBhcmFsbGVsX3Rvb2xfY2FsbHM6IG9wdGlvbnMucGFyYWxsZWxUb29sQ2FsbHMgPz8gdHJ1ZSxcbiAgICByZWFzb25pbmc6IG9wdGlvbnMucmVhc29uaW5nID8/IG51bGwsXG4gICAgc3RvcmU6IGZhbHNlLFxuICAgIHN0cmVhbTogdHJ1ZSxcbiAgICBpbmNsdWRlOiBbXCJyZWFzb25pbmcuZW5jcnlwdGVkX2NvbnRlbnRcIl0sXG4gICAgLi4uKG9wdGlvbnMuc2VydmljZVRpZXIgPyB7IHNlcnZpY2VfdGllcjogb3B0aW9ucy5zZXJ2aWNlVGllciB9IDoge30pLFxuICAgIC4uLihvcHRpb25zLnByb21wdENhY2hlS2V5ID8geyBwcm9tcHRfY2FjaGVfa2V5OiBvcHRpb25zLnByb21wdENhY2hlS2V5IH0gOiB7fSksXG4gICAgLi4uKHRleHQgPyB7IHRleHQgfSA6IHt9KSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ29kZXhJZGVudGl0eUhlYWRlcnMoXG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmcsXG4gIGFjY291bnRJZDogc3RyaW5nLFxuICBjb3JyZWxhdGlvbj86IHsgc2Vzc2lvbklkPzogc3RyaW5nOyB0aHJlYWRJZD86IHN0cmluZzsgY2xpZW50UmVxdWVzdElkPzogc3RyaW5nIH0sXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgcmV0dXJuIHtcbiAgICBBY2NlcHQ6IFwidGV4dC9ldmVudC1zdHJlYW1cIixcbiAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YWNjZXNzVG9rZW59YCxcbiAgICBcIkNoYXRHUFQtQWNjb3VudC1JRFwiOiBhY2NvdW50SWQsXG4gICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgb3JpZ2luYXRvcjogQ09ERVhfQ0xJX09SSUdJTkFUT1IsXG4gICAgXCJVc2VyLUFnZW50XCI6IGNvZGV4Q2xpVXNlckFnZW50KCksXG4gICAgLi4uKGNvcnJlbGF0aW9uPy5zZXNzaW9uSWQgPyB7IFwic2Vzc2lvbi1pZFwiOiBjb3JyZWxhdGlvbi5zZXNzaW9uSWQgfSA6IHt9KSxcbiAgICAuLi4oY29ycmVsYXRpb24/LnRocmVhZElkID8geyBcInRocmVhZC1pZFwiOiBjb3JyZWxhdGlvbi50aHJlYWRJZCB9IDoge30pLFxuICAgIC4uLihjb3JyZWxhdGlvbj8uY2xpZW50UmVxdWVzdElkID8geyBcIngtY2xpZW50LXJlcXVlc3QtaWRcIjogY29ycmVsYXRpb24uY2xpZW50UmVxdWVzdElkIH0gOiB7fSksXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkFJVXNhZ2Uge1xuICBpbnB1dFRva2VuczogbnVtYmVyO1xuICBjYWNoZWRJbnB1dFRva2VuczogbnVtYmVyO1xuICBvdXRwdXRUb2tlbnM6IG51bWJlcjtcbiAgcmVhc29uaW5nVG9rZW5zOiBudW1iZXI7XG4gIHRvdGFsVG9rZW5zOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIE9wZW5BSU5vcm1hbGl6ZWRFdmVudCA9XG4gIHwgeyB0eXBlOiBcImNyZWF0ZWRcIjsgcmVzcG9uc2VJZD86IHN0cmluZyB9XG4gIHwgeyB0eXBlOiBcInRleHQtZGVsdGFcIjsgdGV4dDogc3RyaW5nIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImltYWdlXCI7XG4gICAgICBpZD86IHN0cmluZztcbiAgICAgIGJhc2U2NDogc3RyaW5nO1xuICAgICAgbWltZVR5cGU6IFwiaW1hZ2UvcG5nXCI7XG4gICAgICByZXZpc2VkUHJvbXB0Pzogc3RyaW5nO1xuICAgICAgZ2VuZXJhdGlvbj86IEltYWdlR2VuZXJhdGlvbk1ldGFkYXRhO1xuICAgIH1cbiAgfCB7IHR5cGU6IFwib3V0cHV0LWl0ZW1cIjsgaXRlbTogT3BlbkFJUmVzcG9uc2VJdGVtIH1cbiAgfCB7IHR5cGU6IFwiY29tcGxldGVkXCI7IHJlc3BvbnNlSWQ6IHN0cmluZzsgdXNhZ2U/OiBPcGVuQUlVc2FnZTsgbW9kZWw/OiBzdHJpbmcgfVxuICB8IHsgdHlwZTogXCJlcnJvclwiOyBlcnJvcjogT3BlbkFJUHJvdG9jb2xFcnJvciB9O1xuXG5leHBvcnQgY2xhc3MgT3BlbkFJUHJvdG9jb2xFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBjb2RlPzogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXM/OiBudW1iZXIsXG4gICAgcHVibGljIHJlYWRvbmx5IHJldHJ5QWZ0ZXJNcz86IG51bWJlcixcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gXCJPcGVuQUlQcm90b2NvbEVycm9yXCI7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNhZ2VGcm9tKHZhbHVlOiB1bmtub3duKTogT3BlbkFJVXNhZ2UgfCB1bmRlZmluZWQge1xuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgdXNhZ2UgPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgaW5wdXREZXRhaWxzID0gKHVzYWdlLmlucHV0X3Rva2Vuc19kZXRhaWxzID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3Qgb3V0cHV0RGV0YWlscyA9ICh1c2FnZS5vdXRwdXRfdG9rZW5zX2RldGFpbHMgPz8ge30pIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZXR1cm4ge1xuICAgIGlucHV0VG9rZW5zOiBOdW1iZXIodXNhZ2UuaW5wdXRfdG9rZW5zID8/IDApLFxuICAgIGNhY2hlZElucHV0VG9rZW5zOiBOdW1iZXIoaW5wdXREZXRhaWxzLmNhY2hlZF90b2tlbnMgPz8gMCksXG4gICAgb3V0cHV0VG9rZW5zOiBOdW1iZXIodXNhZ2Uub3V0cHV0X3Rva2VucyA/PyAwKSxcbiAgICByZWFzb25pbmdUb2tlbnM6IE51bWJlcihvdXRwdXREZXRhaWxzLnJlYXNvbmluZ190b2tlbnMgPz8gMCksXG4gICAgdG90YWxUb2tlbnM6IE51bWJlcih1c2FnZS50b3RhbF90b2tlbnMgPz8gMCksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVPcGVuQUlFdmVudChyYXc6IHVua25vd24pOiBPcGVuQUlOb3JtYWxpemVkRXZlbnQgfCB1bmRlZmluZWQge1xuICBpZiAoIXJhdyB8fCB0eXBlb2YgcmF3ICE9PSBcIm9iamVjdFwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBldmVudCA9IHJhdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgdHlwZSA9IFN0cmluZyhldmVudC50eXBlID8/IFwiXCIpO1xuICBpZiAodHlwZSA9PT0gXCJyZXNwb25zZS5jcmVhdGVkXCIpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGV2ZW50LnJlc3BvbnNlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiB7IHR5cGU6IFwiY3JlYXRlZFwiLCAuLi4ocmVzcG9uc2U/LmlkID8geyByZXNwb25zZUlkOiBTdHJpbmcocmVzcG9uc2UuaWQpIH0gOiB7fSkgfTtcbiAgfVxuICBpZiAodHlwZSA9PT0gXCJyZXNwb25zZS5vdXRwdXRfdGV4dC5kZWx0YVwiICYmIHR5cGVvZiBldmVudC5kZWx0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB7IHR5cGU6IFwidGV4dC1kZWx0YVwiLCB0ZXh0OiBldmVudC5kZWx0YSB9O1xuICB9XG4gIGlmIChcbiAgICAodHlwZSA9PT0gXCJyZXNwb25zZS5vdXRwdXRfaXRlbS5hZGRlZFwiIHx8IHR5cGUgPT09IFwicmVzcG9uc2Uub3V0cHV0X2l0ZW0uZG9uZVwiKSAmJlxuICAgIGV2ZW50Lml0ZW0gJiZcbiAgICB0eXBlb2YgZXZlbnQuaXRlbSA9PT0gXCJvYmplY3RcIlxuICApIHtcbiAgICBjb25zdCBpdGVtID0gZXZlbnQuaXRlbSBhcyBPcGVuQUlSZXNwb25zZUl0ZW07XG4gICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJpbWFnZV9nZW5lcmF0aW9uX2NhbGxcIiAmJiB0eXBlb2YgaXRlbS5yZXN1bHQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiaW1hZ2VcIixcbiAgICAgICAgLi4uKHR5cGVvZiBpdGVtLmlkID09PSBcInN0cmluZ1wiID8geyBpZDogaXRlbS5pZCB9IDoge30pLFxuICAgICAgICBiYXNlNjQ6IGl0ZW0ucmVzdWx0LFxuICAgICAgICBtaW1lVHlwZTogXCJpbWFnZS9wbmdcIixcbiAgICAgICAgLi4uKHR5cGVvZiBpdGVtLnJldmlzZWRfcHJvbXB0ID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyB7IHJldmlzZWRQcm9tcHQ6IGl0ZW0ucmV2aXNlZF9wcm9tcHQgfVxuICAgICAgICAgIDogdHlwZW9mIGl0ZW0ucmV2aXNlZFByb21wdCA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgICAgPyB7IHJldmlzZWRQcm9tcHQ6IGl0ZW0ucmV2aXNlZFByb21wdCB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7IHR5cGU6IFwib3V0cHV0LWl0ZW1cIiwgaXRlbSB9O1xuICB9XG4gIGlmICh0eXBlID09PSBcInJlc3BvbnNlLmNvbXBsZXRlZFwiKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSAoZXZlbnQucmVzcG9uc2UgPz8ge30pIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImNvbXBsZXRlZFwiLFxuICAgICAgcmVzcG9uc2VJZDogU3RyaW5nKHJlc3BvbnNlLmlkID8/IFwiXCIpLFxuICAgICAgLi4uKHJlc3BvbnNlLnVzYWdlID8geyB1c2FnZTogdXNhZ2VGcm9tKHJlc3BvbnNlLnVzYWdlKSB9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiByZXNwb25zZS5tb2RlbCA9PT0gXCJzdHJpbmdcIiA/IHsgbW9kZWw6IHJlc3BvbnNlLm1vZGVsIH0gOiB7fSksXG4gICAgfTtcbiAgfVxuICBpZiAodHlwZSA9PT0gXCJlcnJvclwiIHx8IHR5cGUgPT09IFwicmVzcG9uc2UuZmFpbGVkXCIgfHwgdHlwZSA9PT0gXCJyZXNwb25zZS5pbmNvbXBsZXRlXCIpIHtcbiAgICBjb25zdCBzb3VyY2UgPSAoZXZlbnQuZXJyb3IgPz8gZXZlbnQucmVzcG9uc2UgPz8gZXZlbnQpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbnN0IG5lc3RlZCA9IChzb3VyY2UuZXJyb3IgPz8gc291cmNlKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgZXJyb3I6IG5ldyBPcGVuQUlQcm90b2NvbEVycm9yKFxuICAgICAgICBTdHJpbmcobmVzdGVkLm1lc3NhZ2UgPz8gYE9wZW5BSSBzdHJlYW0gZW5kZWQgd2l0aCAke3R5cGV9YCksXG4gICAgICAgIHR5cGVvZiBuZXN0ZWQuY29kZSA9PT0gXCJzdHJpbmdcIiA/IG5lc3RlZC5jb2RlIDogdW5kZWZpbmVkLFxuICAgICAgKSxcbiAgICB9O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBS0EsTUFBYSw4QkFDWDtBQUVGLE1BQWEsdUJBQXVCO0FBQ3BDLE1BQWEsb0JBQW9CO0FBU2pDLFNBQVMsZ0JBQXdDO0NBQy9DLE1BQU0sUUFBa0Q7RUFDdEQsUUFBUTtFQUNSLE9BQU87RUFDUCxPQUFPO0NBQ1Q7Q0FDQSxNQUFNLFdBQVcsUUFBUSxJQUFJO0NBQzdCLE1BQU0sa0JBQWtCLFFBQVEsSUFBSTtDQUNwQyxPQUFPO0VBQ0wsUUFBUSxNQUFNLFFBQVEsYUFBYSxRQUFRO0VBQzNDLFdBQVcsR0FBRyxRQUFRO0VBQ3RCLGNBQWMsUUFBUTtFQUN0QixVQUFVLFdBQVcsR0FBRyxXQUFXLGtCQUFrQixJQUFJLG9CQUFvQixPQUFPO0NBQ3RGO0FBQ0Y7O0FBR0EsU0FBZ0Isa0JBQWtCLFdBQW1DLGNBQWMsR0FBVztDQUM1RixPQUFPLGdCQUFnQixrQkFBa0IsSUFBSSxTQUFTLE9BQU8sR0FBRyxTQUFTLFVBQVUsSUFBSSxTQUFTLGFBQWEsSUFBSSxTQUFTO0FBQzVIO0FBNERBLFNBQWdCLDRCQUNkLFNBQ3dCO0NBQ3hCLE1B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
|
|
163
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFpLWJhY2tlbmQtcHJvdG9jb2wuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Byb3ZpZGVycy9vcGVuYWkvb3BlbmFpLWJhY2tlbmQtcHJvdG9jb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9zIGZyb20gXCJub2RlOm9zXCI7XG5cbmltcG9ydCB7IHR5cGUgSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEgfSBmcm9tIFwiLi4vLi4vLi4vYXBwbGljYXRpb24vcWdyaWQvcWdyaWQudHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgT3BlbkFJRWZmb3J0IH0gZnJvbSBcIi4uL2NvbW1vbi9lZmZvcnRcIjtcblxuZXhwb3J0IGNvbnN0IENIQVRHUFRfQ09ERVhfUkVTUE9OU0VTX1VSTCA9XG4gIFwiaHR0cHM6Ly9jaGF0Z3B0LmNvbS9iYWNrZW5kLWFwaS9jb2RleC9yZXNwb25zZXNcIiBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IENPREVYX0NMSV9PUklHSU5BVE9SID0gXCJjb2RleF9jbGlfcnNcIiBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBDT0RFWF9DTElfVkVSU0lPTiA9IFwiMC4xNDcuMFwiIGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvZGV4VXNlckFnZW50UGxhdGZvcm0ge1xuICBvc1R5cGU6IHN0cmluZztcbiAgb3NWZXJzaW9uOiBzdHJpbmc7XG4gIGFyY2hpdGVjdHVyZTogc3RyaW5nO1xuICB0ZXJtaW5hbDogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBjb2RleFBsYXRmb3JtKCk6IENvZGV4VXNlckFnZW50UGxhdGZvcm0ge1xuICBjb25zdCBuYW1lczogUGFydGlhbDxSZWNvcmQ8Tm9kZUpTLlBsYXRmb3JtLCBzdHJpbmc+PiA9IHtcbiAgICBkYXJ3aW46IFwiTWFjIE9TXCIsXG4gICAgbGludXg6IFwiTGludXhcIixcbiAgICB3aW4zMjogXCJXaW5kb3dzXCIsXG4gIH07XG4gIGNvbnN0IHRlcm1pbmFsID0gcHJvY2Vzcy5lbnYuVEVSTV9QUk9HUkFNO1xuICBjb25zdCB0ZXJtaW5hbFZlcnNpb24gPSBwcm9jZXNzLmVudi5URVJNX1BST0dSQU1fVkVSU0lPTjtcbiAgcmV0dXJuIHtcbiAgICBvc1R5cGU6IG5hbWVzW3Byb2Nlc3MucGxhdGZvcm1dID8/IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgb3NWZXJzaW9uOiBvcy5yZWxlYXNlKCksXG4gICAgYXJjaGl0ZWN0dXJlOiBwcm9jZXNzLmFyY2gsXG4gICAgdGVybWluYWw6IHRlcm1pbmFsID8gYCR7dGVybWluYWx9JHt0ZXJtaW5hbFZlcnNpb24gPyBgLyR7dGVybWluYWxWZXJzaW9ufWAgOiBcIlwifWAgOiBcInVua25vd25cIixcbiAgfTtcbn1cblxuLyoqIE1hdGNoZXMgdGhlIHBsYXRmb3JtL3Rlcm1pbmFsIHN1ZmZpeCBlbWl0dGVkIGJ5IHRoZSBwaW5uZWQgUnVzdCBDb2RleCBDTEkuICovXG5leHBvcnQgZnVuY3Rpb24gY29kZXhDbGlVc2VyQWdlbnQocGxhdGZvcm06IENvZGV4VXNlckFnZW50UGxhdGZvcm0gPSBjb2RleFBsYXRmb3JtKCkpOiBzdHJpbmcge1xuICByZXR1cm4gYGNvZGV4X2NsaV9ycy8ke0NPREVYX0NMSV9WRVJTSU9OfSAoJHtwbGF0Zm9ybS5vc1R5cGV9ICR7cGxhdGZvcm0ub3NWZXJzaW9ufTsgJHtwbGF0Zm9ybS5hcmNoaXRlY3R1cmV9KSAke3BsYXRmb3JtLnRlcm1pbmFsfWA7XG59XG5cbmV4cG9ydCB0eXBlIEpzb25WYWx1ZSA9XG4gIHwgbnVsbFxuICB8IGJvb2xlYW5cbiAgfCBudW1iZXJcbiAgfCBzdHJpbmdcbiAgfCBKc29uVmFsdWVbXVxuICB8IHsgW2tleTogc3RyaW5nXTogSnNvblZhbHVlIH07XG5cbi8qKiBSYXcgUmVzcG9uc2VzIEFQSSBpdGVtcy4gS2VlcGluZyB0aGVzZSBvcGFxdWUgcHJlc2VydmVzIHRoZSBjb21wbGV0ZSBjb252ZXJzYXRpb24gaGlzdG9yeS4gKi9cbmV4cG9ydCB0eXBlIE9wZW5BSVJlc3BvbnNlSXRlbSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BSU91dHB1dFNjaGVtYSB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHNjaGVtYTogSnNvblZhbHVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BSVJlc3BvbnNlc09wdGlvbnMge1xuICBtb2RlbDogc3RyaW5nO1xuICBpbnN0cnVjdGlvbnM/OiBzdHJpbmc7XG4gIGhpc3Rvcnk6IHJlYWRvbmx5IE9wZW5BSVJlc3BvbnNlSXRlbVtdO1xuICB0b29scz86IHJlYWRvbmx5IE9wZW5BSVJlc3BvbnNlSXRlbVtdO1xuICB0b29sQ2hvaWNlPzogc3RyaW5nIHwgT3BlbkFJUmVzcG9uc2VJdGVtO1xuICBwYXJhbGxlbFRvb2xDYWxscz86IGJvb2xlYW47XG4gIHJlYXNvbmluZz86IHtcbiAgICBlZmZvcnQ/OiBPcGVuQUlFZmZvcnQ7XG4gICAgc3VtbWFyeT86IFwiYXV0b1wiIHwgXCJjb25jaXNlXCIgfCBcImRldGFpbGVkXCI7XG4gIH07XG4gIHZlcmJvc2l0eT86IFwibG93XCIgfCBcIm1lZGl1bVwiIHwgXCJoaWdoXCI7XG4gIHNlcnZpY2VUaWVyPzogc3RyaW5nO1xuICBwcm9tcHRDYWNoZUtleT86IHN0cmluZztcbiAgb3V0cHV0U2NoZW1hPzogT3BlbkFJT3V0cHV0U2NoZW1hO1xuICBpbWFnZUdlbmVyYXRpb24/OiBib29sZWFuIHwgT3BlbkFJUmVzcG9uc2VJdGVtO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BSVJlc3BvbnNlc1JlcXVlc3Qge1xuICBtb2RlbDogc3RyaW5nO1xuICBpbnN0cnVjdGlvbnM/OiBzdHJpbmc7XG4gIGlucHV0OiBPcGVuQUlSZXNwb25zZUl0ZW1bXTtcbiAgdG9vbHM/OiBPcGVuQUlSZXNwb25zZUl0ZW1bXTtcbiAgdG9vbF9jaG9pY2U6IHN0cmluZyB8IE9wZW5BSVJlc3BvbnNlSXRlbTtcbiAgcGFyYWxsZWxfdG9vbF9jYWxsczogYm9vbGVhbjtcbiAgcmVhc29uaW5nOiBPcGVuQUlSZXNwb25zZXNPcHRpb25zW1wicmVhc29uaW5nXCJdIHwgbnVsbDtcbiAgc3RvcmU6IGZhbHNlO1xuICBzdHJlYW06IHRydWU7XG4gIGluY2x1ZGU6IHN0cmluZ1tdO1xuICBzZXJ2aWNlX3RpZXI/OiBzdHJpbmc7XG4gIHByb21wdF9jYWNoZV9rZXk/OiBzdHJpbmc7XG4gIHRleHQ/OiB7XG4gICAgdmVyYm9zaXR5PzogXCJsb3dcIiB8IFwibWVkaXVtXCIgfCBcImhpZ2hcIjtcbiAgICBmb3JtYXQ/OiB7XG4gICAgICB0eXBlOiBcImpzb25fc2NoZW1hXCI7XG4gICAgICBzdHJpY3Q6IHRydWU7XG4gICAgICBzY2hlbWE6IEpzb25WYWx1ZTtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRPcGVuQUlSZXNwb25zZXNSZXF1ZXN0KFxuICBvcHRpb25zOiBPcGVuQUlSZXNwb25zZXNPcHRpb25zLFxuKTogT3BlbkFJUmVzcG9uc2VzUmVxdWVzdCB7XG4gIGNvbnN0IHRvb2xzID0gb3B0aW9ucy50b29scyA/IFsuLi5vcHRpb25zLnRvb2xzXSA6IFtdO1xuICBpZiAob3B0aW9ucy5pbWFnZUdlbmVyYXRpb24pIHtcbiAgICB0b29scy5wdXNoKFxuICAgICAgb3B0aW9ucy5pbWFnZUdlbmVyYXRpb24gPT09IHRydWVcbiAgICAgICAgPyB7IHR5cGU6IFwiaW1hZ2VfZ2VuZXJhdGlvblwiIH1cbiAgICAgICAgOiB7IHR5cGU6IFwiaW1hZ2VfZ2VuZXJhdGlvblwiLCAuLi5vcHRpb25zLmltYWdlR2VuZXJhdGlvbiB9LFxuICAgICk7XG4gIH1cblxuICBjb25zdCB0ZXh0ID1cbiAgICBvcHRpb25zLnZlcmJvc2l0eSB8fCBvcHRpb25zLm91dHB1dFNjaGVtYVxuICAgICAgPyB7XG4gICAgICAgICAgLi4uKG9wdGlvbnMudmVyYm9zaXR5ID8geyB2ZXJib3NpdHk6IG9wdGlvbnMudmVyYm9zaXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdGlvbnMub3V0cHV0U2NoZW1hXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwianNvbl9zY2hlbWFcIiBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgIHN0cmljdDogdHJ1ZSBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgIHNjaGVtYTogb3B0aW9ucy5vdXRwdXRTY2hlbWEuc2NoZW1hLFxuICAgICAgICAgICAgICAgICAgbmFtZTogb3B0aW9ucy5vdXRwdXRTY2hlbWEubmFtZSA/PyBcImNvZGV4X291dHB1dF9zY2hlbWFcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICBtb2RlbDogb3B0aW9ucy5tb2RlbCxcbiAgICAuLi4ob3B0aW9ucy5pbnN0cnVjdGlvbnMgPyB7IGluc3RydWN0aW9uczogb3B0aW9ucy5pbnN0cnVjdGlvbnMgfSA6IHt9KSxcbiAgICAvLyBDb3B5IHRoZSBhcnJheSwgbm90IGl0cyBpdGVtczogcmF3IGl0ZW1zIG11c3QgYXJyaXZlIGJ5dGUtZm9yLWJ5dGUgZXF1aXZhbGVudC5cbiAgICBpbnB1dDogWy4uLm9wdGlvbnMuaGlzdG9yeV0sXG4gICAgLi4uKHRvb2xzLmxlbmd0aCA/IHsgdG9vbHMgfSA6IHt9KSxcbiAgICB0b29sX2Nob2ljZTogb3B0aW9ucy50b29sQ2hvaWNlID8/IFwiYXV0b1wiLFxuICAgIHBhcmFsbGVsX3Rvb2xfY2FsbHM6IG9wdGlvbnMucGFyYWxsZWxUb29sQ2FsbHMgPz8gdHJ1ZSxcbiAgICByZWFzb25pbmc6IG9wdGlvbnMucmVhc29uaW5nID8/IG51bGwsXG4gICAgc3RvcmU6IGZhbHNlLFxuICAgIHN0cmVhbTogdHJ1ZSxcbiAgICBpbmNsdWRlOiBbXCJyZWFzb25pbmcuZW5jcnlwdGVkX2NvbnRlbnRcIl0sXG4gICAgLi4uKG9wdGlvbnMuc2VydmljZVRpZXIgPyB7IHNlcnZpY2VfdGllcjogb3B0aW9ucy5zZXJ2aWNlVGllciB9IDoge30pLFxuICAgIC4uLihvcHRpb25zLnByb21wdENhY2hlS2V5ID8geyBwcm9tcHRfY2FjaGVfa2V5OiBvcHRpb25zLnByb21wdENhY2hlS2V5IH0gOiB7fSksXG4gICAgLi4uKHRleHQgPyB7IHRleHQgfSA6IHt9KSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ29kZXhJZGVudGl0eUhlYWRlcnMoXG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmcsXG4gIGFjY291bnRJZDogc3RyaW5nLFxuICBjb3JyZWxhdGlvbj86IHsgc2Vzc2lvbklkPzogc3RyaW5nOyB0aHJlYWRJZD86IHN0cmluZzsgY2xpZW50UmVxdWVzdElkPzogc3RyaW5nIH0sXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgcmV0dXJuIHtcbiAgICBBY2NlcHQ6IFwidGV4dC9ldmVudC1zdHJlYW1cIixcbiAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YWNjZXNzVG9rZW59YCxcbiAgICBcIkNoYXRHUFQtQWNjb3VudC1JRFwiOiBhY2NvdW50SWQsXG4gICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgb3JpZ2luYXRvcjogQ09ERVhfQ0xJX09SSUdJTkFUT1IsXG4gICAgXCJVc2VyLUFnZW50XCI6IGNvZGV4Q2xpVXNlckFnZW50KCksXG4gICAgLi4uKGNvcnJlbGF0aW9uPy5zZXNzaW9uSWQgPyB7IFwic2Vzc2lvbi1pZFwiOiBjb3JyZWxhdGlvbi5zZXNzaW9uSWQgfSA6IHt9KSxcbiAgICAuLi4oY29ycmVsYXRpb24/LnRocmVhZElkID8geyBcInRocmVhZC1pZFwiOiBjb3JyZWxhdGlvbi50aHJlYWRJZCB9IDoge30pLFxuICAgIC4uLihjb3JyZWxhdGlvbj8uY2xpZW50UmVxdWVzdElkID8geyBcIngtY2xpZW50LXJlcXVlc3QtaWRcIjogY29ycmVsYXRpb24uY2xpZW50UmVxdWVzdElkIH0gOiB7fSksXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkFJVXNhZ2Uge1xuICBpbnB1dFRva2VuczogbnVtYmVyO1xuICBjYWNoZWRJbnB1dFRva2VuczogbnVtYmVyO1xuICBvdXRwdXRUb2tlbnM6IG51bWJlcjtcbiAgcmVhc29uaW5nVG9rZW5zOiBudW1iZXI7XG4gIHRvdGFsVG9rZW5zOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIE9wZW5BSU5vcm1hbGl6ZWRFdmVudCA9XG4gIHwgeyB0eXBlOiBcImNyZWF0ZWRcIjsgcmVzcG9uc2VJZD86IHN0cmluZyB9XG4gIHwgeyB0eXBlOiBcInRleHQtZGVsdGFcIjsgdGV4dDogc3RyaW5nIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImltYWdlXCI7XG4gICAgICBpZD86IHN0cmluZztcbiAgICAgIGJhc2U2NDogc3RyaW5nO1xuICAgICAgbWltZVR5cGU6IFwiaW1hZ2UvcG5nXCIgfCBcImltYWdlL2pwZWdcIiB8IFwiaW1hZ2Uvd2VicFwiO1xuICAgICAgcmV2aXNlZFByb21wdD86IHN0cmluZztcbiAgICAgIGdlbmVyYXRpb24/OiBJbWFnZUdlbmVyYXRpb25NZXRhZGF0YTtcbiAgICB9XG4gIHwgeyB0eXBlOiBcIm91dHB1dC1pdGVtXCI7IGl0ZW06IE9wZW5BSVJlc3BvbnNlSXRlbSB9XG4gIHwgeyB0eXBlOiBcImNvbXBsZXRlZFwiOyByZXNwb25zZUlkOiBzdHJpbmc7IHVzYWdlPzogT3BlbkFJVXNhZ2U7IG1vZGVsPzogc3RyaW5nIH1cbiAgfCB7IHR5cGU6IFwiZXJyb3JcIjsgZXJyb3I6IE9wZW5BSVByb3RvY29sRXJyb3IgfTtcblxuZXhwb3J0IGNsYXNzIE9wZW5BSVByb3RvY29sRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29kZT86IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzPzogbnVtYmVyLFxuICAgIHB1YmxpYyByZWFkb25seSByZXRyeUFmdGVyTXM/OiBudW1iZXIsXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiT3BlbkFJUHJvdG9jb2xFcnJvclwiO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzYWdlRnJvbSh2YWx1ZTogdW5rbm93bik6IE9wZW5BSVVzYWdlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHVzYWdlID0gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGlucHV0RGV0YWlscyA9ICh1c2FnZS5pbnB1dF90b2tlbnNfZGV0YWlscyA/PyB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IG91dHB1dERldGFpbHMgPSAodXNhZ2Uub3V0cHV0X3Rva2Vuc19kZXRhaWxzID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcmV0dXJuIHtcbiAgICBpbnB1dFRva2VuczogTnVtYmVyKHVzYWdlLmlucHV0X3Rva2VucyA/PyAwKSxcbiAgICBjYWNoZWRJbnB1dFRva2VuczogTnVtYmVyKGlucHV0RGV0YWlscy5jYWNoZWRfdG9rZW5zID8/IDApLFxuICAgIG91dHB1dFRva2VuczogTnVtYmVyKHVzYWdlLm91dHB1dF90b2tlbnMgPz8gMCksXG4gICAgcmVhc29uaW5nVG9rZW5zOiBOdW1iZXIob3V0cHV0RGV0YWlscy5yZWFzb25pbmdfdG9rZW5zID8/IDApLFxuICAgIHRvdGFsVG9rZW5zOiBOdW1iZXIodXNhZ2UudG90YWxfdG9rZW5zID8/IDApLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VNaW1lVHlwZShcbiAgYmFzZTY0OiBzdHJpbmcsXG4gIG91dHB1dEZvcm1hdD86IHVua25vd24sXG4pOiBcImltYWdlL3BuZ1wiIHwgXCJpbWFnZS9qcGVnXCIgfCBcImltYWdlL3dlYnBcIiB7XG4gIC8vIEluc3BlY3Qgb25seSB0aGUgaGVhZGVyLCB3aXRob3V0IGRlY29kaW5nIGEgcG90ZW50aWFsbHkgbGFyZ2UgaW1hZ2UgdHdpY2UuXG4gIGNvbnN0IGhlYWRlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NC5zbGljZSgwLCAyNCksIFwiYmFzZTY0XCIpO1xuICBpZiAoaGVhZGVyLnN1YmFycmF5KDAsIDgpLmVxdWFscyhCdWZmZXIuZnJvbShbMTM3LCA4MCwgNzgsIDcxLCAxMywgMTAsIDI2LCAxMF0pKSlcbiAgICByZXR1cm4gXCJpbWFnZS9wbmdcIjtcbiAgaWYgKGhlYWRlclswXSA9PT0gMjU1ICYmIGhlYWRlclsxXSA9PT0gMjE2ICYmIGhlYWRlclsyXSA9PT0gMjU1KSByZXR1cm4gXCJpbWFnZS9qcGVnXCI7XG4gIGlmIChoZWFkZXIudG9TdHJpbmcoXCJhc2NpaVwiLCAwLCA0KSA9PT0gXCJSSUZGXCIgJiYgaGVhZGVyLnRvU3RyaW5nKFwiYXNjaWlcIiwgOCwgMTIpID09PSBcIldFQlBcIilcbiAgICByZXR1cm4gXCJpbWFnZS93ZWJwXCI7XG4gIGlmIChvdXRwdXRGb3JtYXQgPT09IFwianBlZ1wiKSByZXR1cm4gXCJpbWFnZS9qcGVnXCI7XG4gIGlmIChvdXRwdXRGb3JtYXQgPT09IFwid2VicFwiKSByZXR1cm4gXCJpbWFnZS93ZWJwXCI7XG4gIGlmIChvdXRwdXRGb3JtYXQgPT09IHVuZGVmaW5lZCB8fCBvdXRwdXRGb3JtYXQgPT09IFwicG5nXCIpIHJldHVybiBcImltYWdlL3BuZ1wiO1xuICB0aHJvdyBuZXcgT3BlbkFJUHJvdG9jb2xFcnJvcihgVW5zdXBwb3J0ZWQgaW1hZ2Ugb3V0cHV0IGZvcm1hdDogJHtTdHJpbmcob3V0cHV0Rm9ybWF0KX1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wZW5BSUV2ZW50KHJhdzogdW5rbm93bik6IE9wZW5BSU5vcm1hbGl6ZWRFdmVudCB8IHVuZGVmaW5lZCB7XG4gIGlmICghcmF3IHx8IHR5cGVvZiByYXcgIT09IFwib2JqZWN0XCIpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGV2ZW50ID0gcmF3IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCB0eXBlID0gU3RyaW5nKGV2ZW50LnR5cGUgPz8gXCJcIik7XG4gIGlmICh0eXBlID09PSBcInJlc3BvbnNlLmNyZWF0ZWRcIikge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gZXZlbnQucmVzcG9uc2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJjcmVhdGVkXCIsIC4uLihyZXNwb25zZT8uaWQgPyB7IHJlc3BvbnNlSWQ6IFN0cmluZyhyZXNwb25zZS5pZCkgfSA6IHt9KSB9O1xuICB9XG4gIGlmICh0eXBlID09PSBcInJlc3BvbnNlLm91dHB1dF90ZXh0LmRlbHRhXCIgJiYgdHlwZW9mIGV2ZW50LmRlbHRhID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJ0ZXh0LWRlbHRhXCIsIHRleHQ6IGV2ZW50LmRlbHRhIH07XG4gIH1cbiAgaWYgKFxuICAgICh0eXBlID09PSBcInJlc3BvbnNlLm91dHB1dF9pdGVtLmFkZGVkXCIgfHwgdHlwZSA9PT0gXCJyZXNwb25zZS5vdXRwdXRfaXRlbS5kb25lXCIpICYmXG4gICAgZXZlbnQuaXRlbSAmJlxuICAgIHR5cGVvZiBldmVudC5pdGVtID09PSBcIm9iamVjdFwiXG4gICkge1xuICAgIGNvbnN0IGl0ZW0gPSBldmVudC5pdGVtIGFzIE9wZW5BSVJlc3BvbnNlSXRlbTtcbiAgICBpZiAoaXRlbS50eXBlID09PSBcImltYWdlX2dlbmVyYXRpb25fY2FsbFwiICYmIHR5cGVvZiBpdGVtLnJlc3VsdCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJpbWFnZVwiLFxuICAgICAgICAuLi4odHlwZW9mIGl0ZW0uaWQgPT09IFwic3RyaW5nXCIgPyB7IGlkOiBpdGVtLmlkIH0gOiB7fSksXG4gICAgICAgIGJhc2U2NDogaXRlbS5yZXN1bHQsXG4gICAgICAgIG1pbWVUeXBlOiBpbWFnZU1pbWVUeXBlKGl0ZW0ucmVzdWx0LCBpdGVtLm91dHB1dF9mb3JtYXQpLFxuICAgICAgICAuLi4odHlwZW9mIGl0ZW0ucmV2aXNlZF9wcm9tcHQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IHsgcmV2aXNlZFByb21wdDogaXRlbS5yZXZpc2VkX3Byb21wdCB9XG4gICAgICAgICAgOiB0eXBlb2YgaXRlbS5yZXZpc2VkUHJvbXB0ID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICA/IHsgcmV2aXNlZFByb21wdDogaXRlbS5yZXZpc2VkUHJvbXB0IH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdHlwZTogXCJvdXRwdXQtaXRlbVwiLCBpdGVtIH07XG4gIH1cbiAgaWYgKHR5cGUgPT09IFwicmVzcG9uc2UuY29tcGxldGVkXCIpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IChldmVudC5yZXNwb25zZSA/PyB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiY29tcGxldGVkXCIsXG4gICAgICByZXNwb25zZUlkOiBTdHJpbmcocmVzcG9uc2UuaWQgPz8gXCJcIiksXG4gICAgICAuLi4ocmVzcG9uc2UudXNhZ2UgPyB7IHVzYWdlOiB1c2FnZUZyb20ocmVzcG9uc2UudXNhZ2UpIH0gOiB7fSksXG4gICAgICAuLi4odHlwZW9mIHJlc3BvbnNlLm1vZGVsID09PSBcInN0cmluZ1wiID8geyBtb2RlbDogcmVzcG9uc2UubW9kZWwgfSA6IHt9KSxcbiAgICB9O1xuICB9XG4gIGlmICh0eXBlID09PSBcImVycm9yXCIgfHwgdHlwZSA9PT0gXCJyZXNwb25zZS5mYWlsZWRcIiB8fCB0eXBlID09PSBcInJlc3BvbnNlLmluY29tcGxldGVcIikge1xuICAgIGNvbnN0IHNvdXJjZSA9IChldmVudC5lcnJvciA/PyBldmVudC5yZXNwb25zZSA/PyBldmVudCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3QgbmVzdGVkID0gKHNvdXJjZS5lcnJvciA/PyBzb3VyY2UpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVycm9yXCIsXG4gICAgICBlcnJvcjogbmV3IE9wZW5BSVByb3RvY29sRXJyb3IoXG4gICAgICAgIFN0cmluZyhuZXN0ZWQubWVzc2FnZSA/PyBgT3BlbkFJIHN0cmVhbSBlbmRlZCB3aXRoICR7dHlwZX1gKSxcbiAgICAgICAgdHlwZW9mIG5lc3RlZC5jb2RlID09PSBcInN0cmluZ1wiID8gbmVzdGVkLmNvZGUgOiB1bmRlZmluZWQsXG4gICAgICApLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFLQSxNQUFhLDhCQUNYO0FBRUYsTUFBYSx1QkFBdUI7QUFDcEMsTUFBYSxvQkFBb0I7QUFTakMsU0FBUyxnQkFBd0M7Q0FDL0MsTUFBTSxRQUFrRDtFQUN0RCxRQUFRO0VBQ1IsT0FBTztFQUNQLE9BQU87Q0FDVDtDQUNBLE1BQU0sV0FBVyxRQUFRLElBQUk7Q0FDN0IsTUFBTSxrQkFBa0IsUUFBUSxJQUFJO0NBQ3BDLE9BQU87RUFDTCxRQUFRLE1BQU0sUUFBUSxhQUFhLFFBQVE7RUFDM0MsV0FBVyxHQUFHLFFBQVE7RUFDdEIsY0FBYyxRQUFRO0VBQ3RCLFVBQVUsV0FBVyxHQUFHLFdBQVcsa0JBQWtCLElBQUksb0JBQW9CLE9BQU87Q0FDdEY7QUFDRjs7QUFHQSxTQUFnQixrQkFBa0IsV0FBbUMsY0FBYyxHQUFXO0NBQzVGLE9BQU8sZ0JBQWdCLGtCQUFrQixJQUFJLFNBQVMsT0FBTyxH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
|