@cartanova/qgrid-cli 2.5.6 → 2.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +2 -3
- package/README.md +2 -3
- package/bundle/dist/application/qgrid/qgrid.dispatcher.js +7 -7
- package/bundle/dist/application/qgrid/qgrid.frame.js +1 -8
- package/bundle/dist/application/qgrid/qgrid.types.js +2 -15
- package/bundle/dist/application/qgrid/tool-emulation-schema.js +39 -19
- package/bundle/dist/application/qgrid/tool-emulation.js +31 -44
- package/bundle/dist/utils/providers/openai/codex-worker.js +30 -16
- package/bundle/dist/utils/providers/openai/openai-worker-pool-config.js +2 -3
- package/bundle/src/application/qgrid/qgrid.dispatcher.test.ts +22 -8
- package/bundle/src/application/qgrid/qgrid.dispatcher.ts +8 -8
- package/bundle/src/application/qgrid/qgrid.frame.test.ts +2 -17
- package/bundle/src/application/qgrid/qgrid.frame.ts +0 -10
- package/bundle/src/application/qgrid/qgrid.types.ts +23 -45
- package/bundle/src/application/qgrid/tool-emulation-schema.test.ts +35 -15
- package/bundle/src/application/qgrid/tool-emulation-schema.ts +49 -32
- package/bundle/src/application/qgrid/tool-emulation.test.ts +92 -144
- package/bundle/src/application/qgrid/tool-emulation.ts +64 -76
- package/bundle/src/utils/providers/openai/codex-worker.test.ts +180 -0
- package/bundle/src/utils/providers/openai/codex-worker.ts +50 -18
- package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +13 -4
- package/bundle/src/utils/providers/openai/openai-worker-pool-config.ts +1 -7
- package/bundle/web-dist/client/assets/index-B-cZKEyf.css +1 -0
- package/bundle/web-dist/client/assets/{index-DYwq7a0y.js → index-oLaOO8wP.js} +3 -3
- package/bundle/web-dist/client/assets/{logs-BRpHY7bH.js → logs-D8U3hI1f.js} +1 -1
- package/bundle/web-dist/client/assets/{monit-BBnFUnAg.js → monit-NKS90qFj.js} +1 -1
- package/bundle/web-dist/client/assets/{routes-DJDlOo-P.js → routes-BuxVmofi.js} +1 -1
- package/bundle/web-dist/client/assets/{show-Dn-exALi.js → show-C8Qv9_Ww.js} +1 -1
- package/bundle/web-dist/client/assets/{tokens-DaMfQeAo.js → tokens-ChWIXTeL.js} +1 -1
- package/bundle/web-dist/client/index.html +2 -2
- package/bundle/web-dist/server/entry-server.generated.js +1 -1
- package/package.json +1 -1
- package/skills/qgrid/SKILL.md +1 -1
- package/skills/qgrid/references/ai-sdk-provider-contract.md +1 -1
- package/skills/qgrid/references/cli-env-and-server-boot.md +2 -3
- package/skills/qgrid/references/decision-rationale.md +5 -4
- package/skills/qgrid/references/openai-codex-runtime.md +8 -3
- package/skills/qgrid/references/provider-runtime-differences.md +1 -1
- package/skills/qgrid/references/repo-map.md +1 -1
- package/skills/qgrid/references/request-log-run-lifecycle.md +1 -1
- package/skills/qgrid/references/tool-calling-and-multiturn.md +44 -26
- package/skills/qgrid/references/verification-and-debugging.md +2 -2
- package/bundle/web-dist/client/assets/index-yZcjDoV0.css +0 -1
|
@@ -94,19 +94,11 @@ const QueryInput = z.looseObject({
|
|
|
94
94
|
serviceTier: ServiceTier.optional(),
|
|
95
95
|
history: z.string().optional(),
|
|
96
96
|
projectName: z.string().optional(),
|
|
97
|
-
isStep: z.boolean().optional(),
|
|
98
97
|
logger: z.boolean().optional(),
|
|
99
98
|
runContext: QgridRunContext.optional(),
|
|
100
99
|
toolResults: z.array(QgridToolResultInput).optional(),
|
|
101
100
|
imageGeneration: z.boolean().optional(),
|
|
102
101
|
imageGenerationOptions: ImageGenerationOptions.optional()
|
|
103
|
-
}).superRefine((value, ctx) => {
|
|
104
|
-
if (!Object.hasOwn(value, "logMode")) return;
|
|
105
|
-
ctx.addIssue({
|
|
106
|
-
code: "custom",
|
|
107
|
-
path: ["logMode"],
|
|
108
|
-
message: "logMode is no longer supported; use logger: false to disable request logging"
|
|
109
|
-
});
|
|
110
102
|
});
|
|
111
103
|
const ModelFallback = z.object({
|
|
112
104
|
trigger: z.literal("refusal"),
|
|
@@ -233,11 +225,6 @@ const FinishRunInput = z.object({
|
|
|
233
225
|
history: z.string().optional(),
|
|
234
226
|
errorMessage: z.string().optional()
|
|
235
227
|
});
|
|
236
|
-
const AddTokenInput = z.object({
|
|
237
|
-
token: z.string(),
|
|
238
|
-
name: z.string()
|
|
239
|
-
});
|
|
240
|
-
const RemoveTokenInput = z.object({ token: z.string() });
|
|
241
228
|
const TokenStats = z.object({
|
|
242
229
|
token: z.string(),
|
|
243
230
|
name: z.string(),
|
|
@@ -283,6 +270,6 @@ function maskToken(token) {
|
|
|
283
270
|
return token.length > 4 ? `...${token.slice(-4)}` : token;
|
|
284
271
|
}
|
|
285
272
|
//#endregion
|
|
286
|
-
export {
|
|
273
|
+
export { AppendStepInput, CostSource, CreateRunInput, Effort, FinishReason, FinishRunInput, HealthResponse, ImageGenerationOptions, ImageGenerationQuality, ImageGenerationSize, MAX_QUERY_TIMEOUT_MS, ModelFallback, OAuthStartResult, ProcessError, QgridContent, QgridInputPart, QgridRunContext, QgridThreadCoord, QgridTool, QgridToolResultInput, QueryInput, QueryOutput, QueryTimeoutMs, QuotaError, QuotaThresholdExceededError, ReasoningSummary, ServiceTier, StreamEvents, SubscriberStatus, TimeoutError, TokenStats, UsageResponse, Verbosity, maskToken };
|
|
287
274
|
|
|
288
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8vIOKUgOKUgOKUgCBRdWVyeSDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IEVmZm9ydCA9IHouZW51bShbXCJsb3dcIiwgXCJtZWRpdW1cIiwgXCJoaWdoXCJdKTtcbmV4cG9ydCB0eXBlIEVmZm9ydCA9IHouaW5mZXI8dHlwZW9mIEVmZm9ydD47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZFRvb2wgPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGlucHV0U2NoZW1hOiB6LnVua25vd24oKSxcbn0pO1xuZXhwb3J0IHR5cGUgUWdyaWRUb29sID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUb29sPjtcblxuZXhwb3J0IGNvbnN0IFFncmlkQ29udGVudCA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJ0ZXh0XCIpLFxuICAgIHRleHQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwidG9vbC1jYWxsXCIpLFxuICAgIHRvb2xDYWxsSWQ6IHouc3RyaW5nKCksXG4gICAgdG9vbE5hbWU6IHouc3RyaW5nKCksXG4gICAgaW5wdXQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwiaW1hZ2VcIiksXG4gICAgLy8gQ29kZXggaW1hZ2VfZ2VuZXJhdGlvbiByZXN1bHQgYmFzZTY0LiBxZ3JpZCDripQg7Y+s66e3L+2ZleyepeyekCDssYXsnoTsnYQg7KeA7KeAIOyViuuKlOuLpC5cbiAgICBkYXRhOiB6LnN0cmluZygpLFxuICAgIHJldmlzZWRQcm9tcHQ6IHouc3RyaW5nKCkubnVsbGlzaCgpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUWdyaWRDb250ZW50ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRDb250ZW50PjtcblxuZXhwb3J0IGNvbnN0IEZpbmlzaFJlYXNvbiA9IHouZW51bShbXCJzdG9wXCIsIFwidG9vbC1jYWxsc1wiXSk7XG5leHBvcnQgdHlwZSBGaW5pc2hSZWFzb24gPSB6LmluZmVyPHR5cGVvZiBGaW5pc2hSZWFzb24+O1xuXG5leHBvcnQgY29uc3QgVmVyYm9zaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgVmVyYm9zaXR5ID0gei5pbmZlcjx0eXBlb2YgVmVyYm9zaXR5PjtcblxuZXhwb3J0IGNvbnN0IFJlYXNvbmluZ1N1bW1hcnkgPSB6LmVudW0oW1wiYXV0b1wiLCBcImNvbmNpc2VcIiwgXCJkZXRhaWxlZFwiLCBcIm5vbmVcIl0pO1xuZXhwb3J0IHR5cGUgUmVhc29uaW5nU3VtbWFyeSA9IHouaW5mZXI8dHlwZW9mIFJlYXNvbmluZ1N1bW1hcnk+O1xuXG5leHBvcnQgY29uc3QgU2VydmljZVRpZXIgPSB6LmVudW0oW1wiZmFzdFwiLCBcImZsZXhcIl0pO1xuZXhwb3J0IHR5cGUgU2VydmljZVRpZXIgPSB6LmluZmVyPHR5cGVvZiBTZXJ2aWNlVGllcj47XG5cbmV4cG9ydCBjb25zdCBJbWFnZUdlbmVyYXRpb25RdWFsaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblF1YWxpdHk+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouZW51bShbXCIxMDI0eDEwMjRcIiwgXCIxMDI0eDE1MzZcIiwgXCIxNTM2eDEwMjRcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblNpemU+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgcXVhbGl0eTogSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eS5vcHRpb25hbCgpLFxuICBzaXplOiBJbWFnZUdlbmVyYXRpb25TaXplLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEltYWdlR2VuZXJhdGlvbk9wdGlvbnMgPSB6LmluZmVyPHR5cGVvZiBJbWFnZUdlbmVyYXRpb25PcHRpb25zPjtcblxuZXhwb3J0IGNvbnN0IFFncmlkSW5wdXRQYXJ0ID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInRleHRcIiksXG4gICAgdGV4dDogei5zdHJpbmcoKSxcbiAgICB0ZXh0X2VsZW1lbnRzOiB6LmFycmF5KHoubmV2ZXIoKSkuZGVmYXVsdChbXSksXG4gIH0pLFxuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwiaW1hZ2VcIiksXG4gICAgdXJsOiB6LnN0cmluZygpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUWdyaWRJbnB1dFBhcnQgPSB6LmluZmVyPHR5cGVvZiBRZ3JpZElucHV0UGFydD47XG5cbmV4cG9ydCBjb25zdCBNQVhfUVVFUllfVElNRU9VVF9NUyA9IDMwICogNjBfMDAwO1xuZXhwb3J0IGNvbnN0IFF1ZXJ5VGltZW91dE1zID0gei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLm1heChNQVhfUVVFUllfVElNRU9VVF9NUyk7XG5cbi8vIOKUgOKUgOKUgCBSdW4gTGlmZWN5Y2xlIENvbnRleHQgKFNESyDihpQgU2VydmVyIGNvbnRyYWN0KSDilIDilIDilIBcblxuLy8gY29kZXggdGhyZWFkIOyijO2RnC4gdGhyZWFkIOyerOyCrOyaqeycvOuhnCBjb252ZXJzYXRpb25faWQoPXByb21wdF9jYWNoZV9rZXkp66W8IOqzoOygle2VtFxuLy8gT3BlbkFJIHByb21wdCBjYWNoaW5nIOydhCDsgrTrpqzquLAg7JyE7ZWcIO2VuOuTpC4g7ISc67KE6rCAIOuwnOq4ie2VmOqzoCDtgbTrnbzqsIAg64uk7J2MIOyalOyyreyXkCDqt7jrjIDroZwg7ZqM7Iah7ZWc64ukLlxuLy8g7ZW465OkIOuvuOyghOyGoSDsi5wg6riw7KG0IFwi66ekIHR1cm4g7IOIIHRocmVhZCArIGhpc3RvcnkgaW5qZWN0XCIg64+Z7J6R7Jy866GcIO2PtOuwsShRZ3JpZFJ1bkNvbnRleHQg7LC47KGwKS5cbmV4cG9ydCBjb25zdCBRZ3JpZFRocmVhZENvb3JkID0gei5vYmplY3Qoe1xuICB3b3JrZXJJZDogei5udW1iZXIoKSwgLy8g6rOg7KCVIOudvOyasO2MhSAodGhyZWFkIOuKlCB3b3JrZXIg7ZSE66Gc7IS47IqkIOuplOuqqOumrOyXkOunjCDsobTsnqwpXG4gIHRocmVhZElkOiB6LnN0cmluZygpLCAvLyBjb2RleCBjb252ZXJzYXRpb25faWQgPSBwcm9tcHRfY2FjaGVfa2V5XG4gIGVwb2NoOiB6Lm51bWJlcigpLCAvLyB3b3JrZXIgc3Bhd24g7Lm07Jq07YSwLiByZXN0YXJ0IOuhnCB0aHJlYWQg7Kad67CcIOqwkOyngFxuICBzeXN0ZW1IYXNoOiB6LnN0cmluZygpLCAvLyBzeXN0ZW1fcHJvbXB0IO2VtOyLnC4g64uk66W4IOuMgO2ZlCDsmKTsoJHsho0g67Cp7KeAXG59KTtcbmV4cG9ydCB0eXBlIFFncmlkVGhyZWFkQ29vcmQgPSB6LmluZmVyPHR5cGVvZiBRZ3JpZFRocmVhZENvb3JkPjtcblxuZXhwb3J0IGNvbnN0IFFncmlkUnVuQ29udGV4dCA9IHoub2JqZWN0KHtcbiAgLy8gdG9vbC1jYWxsIHJ1buydhCDqs4Tsho3tlaAg65WM66eMIOuwnOq4iS4g7J2867CYIOuMgO2ZlOuKlCB0aHJlYWRDb29yZCDrp4wg7JmV67O1LlxuICByZXF1ZXN0TG9nSWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdGhyZWFkQ29vcmQ6IFFncmlkVGhyZWFkQ29vcmQub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUWdyaWRSdW5Db250ZXh0ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRSdW5Db250ZXh0PjtcblxuZXhwb3J0IGNvbnN0IFFncmlkVG9vbFJlc3VsdElucHV0ID0gei5vYmplY3Qoe1xuICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICB0b29sTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBvdXRwdXQ6IHouc3RyaW5nKCksXG4gIGlzRXJyb3I6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFFncmlkVG9vbFJlc3VsdElucHV0ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUb29sUmVzdWx0SW5wdXQ+O1xuXG5leHBvcnQgY29uc3QgUXVlcnlJbnB1dCA9IHpcbiAgLmxvb3NlT2JqZWN0KHtcbiAgICBzeXN0ZW06IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBwcm9tcHQ6IHouc3RyaW5nKCksXG4gICAgaW5wdXQ6IHouYXJyYXkoUWdyaWRJbnB1dFBhcnQpLm9wdGlvbmFsKCksXG4gICAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB0aW1lb3V0OiBRdWVyeVRpbWVvdXRNcy5vcHRpb25hbCgpLFxuICAgIGpzb25TY2hlbWE6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB0b29sczogei5hcnJheShRZ3JpZFRvb2wpLm9wdGlvbmFsKCksXG4gICAgZWZmb3J0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdmVyYm9zaXR5OiBWZXJib3NpdHkub3B0aW9uYWwoKSxcbiAgICByZWFzb25pbmdTdW1tYXJ5OiBSZWFzb25pbmdTdW1tYXJ5Lm9wdGlvbmFsKCksXG4gICAgc2VydmljZVRpZXI6IFNlcnZpY2VUaWVyLm9wdGlvbmFsKCksXG4gICAgaGlzdG9yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHByb2plY3ROYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgLy8g7Zi47ZmY7JqpIO2VhOuTnC4g7ISc67KEIGxpZmVjeWNsZSDtjJDri6jsl5DripQg7IKs7Jqp7ZWY7KeAIOyViuuKlOuLpC5cbiAgICBpc1N0ZXA6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgLy8g7IOd65617ZWY66m0IOuhnOq5he2VnOuLpC4gZmFsc2XripQgcmVxdWVzdCBsb2cg7JOw6riw66eMIOuBhOqzoCBkaXNwYXRjaC90aHJlYWTripQg7Jyg7KeA7ZWc64ukLlxuICAgIGxvZ2dlcjogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBydW5Db250ZXh0OiBRZ3JpZFJ1bkNvbnRleHQub3B0aW9uYWwoKSxcbiAgICB0b29sUmVzdWx0czogei5hcnJheShRZ3JpZFRvb2xSZXN1bHRJbnB1dCkub3B0aW9uYWwoKSxcbiAgICAvLyBjb2RleCDrgrTsnqUgaW1hZ2VfZ2VuZXJhdGlvbiB0b29sIOydhCDsvKDri6QoT3BlbkFJIOqyveuhnCDsoITsmqksIG9wdC1pbiwgbm9uLXN0cmVhbSkuXG4gICAgaW1hZ2VHZW5lcmF0aW9uOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIC8vIHFncmlkIOqwgOqyqSDstpTsoJUg67CPIENvZGV4IOydtOuvuOyngCDsmpTssq0g7Z6M7Yq4LiDsnbTrr7jsp4Ag66qo64247J2AIGdwdC1pbWFnZS0yIOuhnCDqs6DsoJUg6rCA7KCV7ZWc64ukLlxuICAgIGltYWdlR2VuZXJhdGlvbk9wdGlvbnM6IEltYWdlR2VuZXJhdGlvbk9wdGlvbnMub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN1cGVyUmVmaW5lKCh2YWx1ZSwgY3R4KSA9PiB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKHZhbHVlLCBcImxvZ01vZGVcIikpIHJldHVybjtcbiAgICBjdHguYWRkSXNzdWUoe1xuICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgIHBhdGg6IFtcImxvZ01vZGVcIl0sXG4gICAgICBtZXNzYWdlOiBcImxvZ01vZGUgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZDsgdXNlIGxvZ2dlcjogZmFsc2UgdG8gZGlzYWJsZSByZXF1ZXN0IGxvZ2dpbmdcIixcbiAgICB9KTtcbiAgfSk7XG5leHBvcnQgdHlwZSBRdWVyeUlucHV0ID0gei5pbmZlcjx0eXBlb2YgUXVlcnlJbnB1dD47XG5cbmV4cG9ydCBjb25zdCBNb2RlbEZhbGxiYWNrID0gei5vYmplY3Qoe1xuICB0cmlnZ2VyOiB6LmxpdGVyYWwoXCJyZWZ1c2FsXCIpLFxuICBmcm9tTW9kZWw6IHouc3RyaW5nKCksXG4gIHRvTW9kZWw6IHouc3RyaW5nKCksXG4gIGNhdGVnb3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGV4cGxhbmF0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIE1vZGVsRmFsbGJhY2sgPSB6LmluZmVyPHR5cGVvZiBNb2RlbEZhbGxiYWNrPjtcblxuZXhwb3J0IGNvbnN0IENvc3RTb3VyY2UgPSB6LmVudW0oW1wicHJvdmlkZXJcIiwgXCJwcmljaW5nX3RhYmxlXCIsIFwibWl4ZWRcIl0pO1xuZXhwb3J0IHR5cGUgQ29zdFNvdXJjZSA9IHouaW5mZXI8dHlwZW9mIENvc3RTb3VyY2U+O1xuXG5leHBvcnQgY29uc3QgUXVlcnlPdXRwdXQgPSB6Lm9iamVjdCh7XG4gIHRleHQ6IHouc3RyaW5nKCksXG4gIGNvbnRlbnQ6IHouYXJyYXkoUWdyaWRDb250ZW50KSxcbiAgZmluaXNoUmVhc29uOiBGaW5pc2hSZWFzb24sXG4gIHRva2VuTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICByZXF1ZXN0ZWRNb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbEZhbGxiYWNrczogei5hcnJheShNb2RlbEZhbGxiYWNrKS5vcHRpb25hbCgpLFxuICB1c2FnZTogei5vYmplY3Qoe1xuICAgIGlucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICBvdXRwdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgIGNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICBjYWNoZV9jcmVhdGlvbl81bV9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBjYWNoZV9jcmVhdGlvbl8xaF9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBjYWNoZV9yZWFkX2lucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgfSksXG4gIGR1cmF0aW9uTXM6IHoubnVtYmVyKCksXG4gIHR0ZnRNczogei5udW1iZXIoKSxcbiAgY29zdFVzZDogei5udW1iZXIoKSxcbiAgY29zdFNvdXJjZTogQ29zdFNvdXJjZSxcbiAgcnVuQ29udGV4dDogUWdyaWRSdW5Db250ZXh0Lm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFF1ZXJ5T3V0cHV0ID0gei5pbmZlcjx0eXBlb2YgUXVlcnlPdXRwdXQ+O1xuXG4vLyDilIDilIDilIAgU3RyZWFtIEV2ZW50cyDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IFN0cmVhbUV2ZW50cyA9IHoub2JqZWN0KHtcbiAgZGVsdGE6IHoub2JqZWN0KHsgdGV4dDogei5zdHJpbmcoKSB9KSxcbiAgdG9vbENhbGw6IHoub2JqZWN0KHtcbiAgICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICAgIHRvb2xOYW1lOiB6LnN0cmluZygpLFxuICAgIGlucHV0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgZG9uZTogei5vYmplY3Qoe1xuICAgIHRleHQ6IHouc3RyaW5nKCksXG4gICAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICByZXF1ZXN0ZWRNb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG1vZGVsRmFsbGJhY2tzOiB6LmFycmF5KE1vZGVsRmFsbGJhY2spLm9wdGlvbmFsKCksXG4gICAgdG9rZW5OYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZmluaXNoUmVhc29uOiBGaW5pc2hSZWFzb24sXG4gICAgdXNhZ2U6IHoub2JqZWN0KHtcbiAgICAgIGlucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICAgIG91dHB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgICBjYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX2lucHV0X3Rva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgICAgY2FjaGVfcmVhZF9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgfSksXG4gICAgZHVyYXRpb25Nczogei5udW1iZXIoKSxcbiAgICB0dGZ0TXM6IHoubnVtYmVyKCksXG4gICAgY29zdFVzZDogei5udW1iZXIoKSxcbiAgICBjb3N0U291cmNlOiBDb3N0U291cmNlLFxuICAgIGNvbnRlbnQ6IHouYXJyYXkoUWdyaWRDb250ZW50KSxcbiAgICBydW5Db250ZXh0OiBRZ3JpZFJ1bkNvbnRleHQub3B0aW9uYWwoKSxcbiAgfSksXG4gIGVycm9yOiB6Lm9iamVjdCh7IG1lc3NhZ2U6IHouc3RyaW5nKCkgfSksXG59KTtcbmV4cG9ydCB0eXBlIFN0cmVhbUV2ZW50cyA9IHouaW5mZXI8dHlwZW9mIFN0cmVhbUV2ZW50cz47XG5cbi8vIOKUgOKUgOKUgCBSdW4gTGlmZWN5Y2xlIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgQ3JlYXRlUnVuSW5wdXQgPSB6Lm9iamVjdCh7XG4gIHVzZXJQcm9tcHQ6IHouc3RyaW5nKCksXG4gIHN5c3RlbVByb21wdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZWZmb3J0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb2plY3ROYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGhpc3Rvcnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgQ3JlYXRlUnVuSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBDcmVhdGVSdW5JbnB1dD47XG5cbmV4cG9ydCBjb25zdCBBcHBlbmRTdGVwSW5wdXQgPSB6Lm9iamVjdCh7XG4gIHJlcXVlc3RMb2dJZDogei5udW1iZXIoKSxcbiAgc3RlcEluZGV4OiB6Lm51bWJlcigpLFxuICB0eXBlOiB6LmVudW0oW1wiZ2VuZXJhdGVcIiwgXCJ0b29sX2NhbGxcIl0pLFxuICBtb2RlbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVxdWVzdGVkTW9kZWxOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZhbGxiYWNrQ291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgaW5wdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgb3V0cHV0VG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNhY2hlUmVhZFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjYWNoZUNyZWF0aW9uVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNhY2hlQ3JlYXRpb241bVRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjYWNoZUNyZWF0aW9uMWhUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY29zdFVzZDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjb3N0U291cmNlOiBDb3N0U291cmNlLm9wdGlvbmFsKCksXG4gIGR1cmF0aW9uTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdHRmdE1zOiB6Lm51bWJlcigpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgZmluaXNoUmVhc29uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlYXNvbmluZ1RleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVhc29uaW5nVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvb2xDYWxsSW5kZXg6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG9vbENhbGxJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sQXJnczogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sUmVzdWx0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRvb2xEdXJhdGlvbk1zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEFwcGVuZFN0ZXBJbnB1dCA9IHouaW5mZXI8dHlwZW9mIEFwcGVuZFN0ZXBJbnB1dD47XG5cbmV4cG9ydCBjb25zdCBGaW5pc2hSdW5JbnB1dCA9IHoub2JqZWN0KHtcbiAgcmVxdWVzdExvZ0lkOiB6Lm51bWJlcigpLFxuICBzdGF0dXM6IHouZW51bShbXCJzdWNjZWVkZWRcIiwgXCJlcnJvclwiLCBcImFib3J0ZWRcIl0pLFxuICByZXNwb25zZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b2tlbk5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbW9kZWxOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlcXVlc3RlZE1vZGVsTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBmYWxsYmFja0NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsSW5wdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxPdXRwdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxDYWNoZVJlYWRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxDYWNoZUNyZWF0aW9uVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsQ2FjaGVDcmVhdGlvbjVtVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsQ2FjaGVDcmVhdGlvbjFoVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNvc3RVc2Q6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY29zdFNvdXJjZTogQ29zdFNvdXJjZS5vcHRpb25hbCgpLFxuICB0b3RhbER1cmF0aW9uTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgaGlzdG9yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBlcnJvck1lc3NhZ2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgRmluaXNoUnVuSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBGaW5pc2hSdW5JbnB1dD47XG5cbi8vIOKUgOKUgOKUgCBUb2tlbiBNYW5hZ2VtZW50IOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgQWRkVG9rZW5JbnB1dCA9IHoub2JqZWN0KHtcbiAgdG9rZW46IHouc3RyaW5nKCksXG4gIG5hbWU6IHouc3RyaW5nKCksXG59KTtcbmV4cG9ydCB0eXBlIEFkZFRva2VuSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBBZGRUb2tlbklucHV0PjtcblxuZXhwb3J0IGNvbnN0IFJlbW92ZVRva2VuSW5wdXQgPSB6Lm9iamVjdCh7XG4gIHRva2VuOiB6LnN0cmluZygpLFxufSk7XG5leHBvcnQgdHlwZSBSZW1vdmVUb2tlbklucHV0ID0gei5pbmZlcjx0eXBlb2YgUmVtb3ZlVG9rZW5JbnB1dD47XG5cbmV4cG9ydCBjb25zdCBUb2tlblN0YXRzID0gei5vYmplY3Qoe1xuICB0b2tlbjogei5zdHJpbmcoKSxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgcHJvdmlkZXI6IHouc3RyaW5nKCksXG4gIHJlcXVlc3RzOiB6Lm51bWJlcigpLFxufSk7XG5leHBvcnQgdHlwZSBUb2tlblN0YXRzID0gei5pbmZlcjx0eXBlb2YgVG9rZW5TdGF0cz47XG5cbi8vIOKUgOKUgOKUgCBPQXV0aCDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IE9BdXRoU3RhcnRSZXN1bHQgPSB6Lm9iamVjdCh7XG4gIGF1dGhVcmw6IHouc3RyaW5nKCksXG59KTtcbmV4cG9ydCB0eXBlIE9BdXRoU3RhcnRSZXN1bHQgPSB6LmluZmVyPHR5cGVvZiBPQXV0aFN0YXJ0UmVzdWx0PjtcblxuY29uc3QgUmF0ZVdpbmRvdyA9IHpcbiAgLm9iamVjdCh7XG4gICAgdXRpbGl6YXRpb246IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgICByZXNldHNBdDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgIHdpbmRvd0R1cmF0aW9uTWluczogei5udW1iZXIoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5udWxsYWJsZSgpO1xuXG5leHBvcnQgY29uc3QgVXNhZ2VSZXNwb25zZSA9IHoub2JqZWN0KHtcbiAgZXJyb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcHJvdmlkZXI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZml2ZUhvdXI6IFJhdGVXaW5kb3cub3B0aW9uYWwoKSxcbiAgc2V2ZW5EYXk6IFJhdGVXaW5kb3cub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgVXNhZ2VSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIFVzYWdlUmVzcG9uc2U+O1xuXG4vLyDilIDilIDilIAgSGVhbHRoIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgU3Vic2NyaWJlclN0YXR1cyA9IHoub2JqZWN0KHtcbiAgY29ubmVjdGVkOiB6LmJvb2xlYW4oKSxcbiAgY29ubmVjdGVkQXQ6IHouZGF0ZSgpLm51bGxhYmxlKCksXG4gIGxhc3RSZWNvbmNpbGVBdDogei5kYXRlKCkubnVsbGFibGUoKSxcbiAgYXR0ZW1wdDogei5udW1iZXIoKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3Vic2NyaWJlclN0YXR1cyA9IHouaW5mZXI8dHlwZW9mIFN1YnNjcmliZXJTdGF0dXM+O1xuXG5leHBvcnQgY29uc3QgSGVhbHRoUmVzcG9uc2UgPSB6Lm9iamVjdCh7XG4gIHN0YXR1czogei5zdHJpbmcoKSxcbiAgYWN0aXZlVG9rZW5zOiB6Lm51bWJlcigpLFxuICBzdWJzY3JpYmVyOiBTdWJzY3JpYmVyU3RhdHVzLm51bGxhYmxlKCksXG59KTtcbmV4cG9ydCB0eXBlIEhlYWx0aFJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgSGVhbHRoUmVzcG9uc2U+O1xuXG4vLyDilIDilIDilIAgRXJyb3JzIOKUgOKUgOKUgFxuXG5leHBvcnQgY2xhc3MgUXVvdGFFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgY29kZSA9IFwiUVVPVEFfRVhIQVVTVEVEXCIgYXMgY29uc3Q7XG59XG5leHBvcnQgY2xhc3MgUXVvdGFUaHJlc2hvbGRFeGNlZWRlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBjb2RlID0gXCJRVU9UQV9USFJFU0hPTERfRVhDRUVERURcIiBhcyBjb25zdDtcbn1cbmV4cG9ydCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGNvZGUgPSBcIlRJTUVPVVRcIiBhcyBjb25zdDtcbn1cbmV4cG9ydCBjbGFzcyBQcm9jZXNzRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGNvZGUgPSBcIlBST0NFU1NfRVJST1JcIiBhcyBjb25zdDtcbn1cblxuLy8g4pSA4pSA4pSAIFV0aWxzIOKUgOKUgOKUgFxuXG5leHBvcnQgZnVuY3Rpb24gbWFza1Rva2VuKHRva2VuOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdG9rZW4ubGVuZ3RoID4gNCA/IGAuLi4ke3Rva2VuLnNsaWNlKC00KX1gIDogdG9rZW47XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBSUEsTUFBYSxTQUFTLEVBQUUsS0FBSztDQUFDO0NBQU87Q0FBVTtBQUFNLENBQUM7QUFHdEQsTUFBYSxZQUFZLEVBQUUsT0FBTztDQUNo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
|
|
275
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8vIOKUgOKUgOKUgCBRdWVyeSDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IEVmZm9ydCA9IHouZW51bShbXCJsb3dcIiwgXCJtZWRpdW1cIiwgXCJoaWdoXCJdKTtcbmV4cG9ydCB0eXBlIEVmZm9ydCA9IHouaW5mZXI8dHlwZW9mIEVmZm9ydD47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZFRvb2wgPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGlucHV0U2NoZW1hOiB6LnVua25vd24oKSxcbn0pO1xuZXhwb3J0IHR5cGUgUWdyaWRUb29sID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUb29sPjtcblxuZXhwb3J0IGNvbnN0IFFncmlkQ29udGVudCA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJ0ZXh0XCIpLFxuICAgIHRleHQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwidG9vbC1jYWxsXCIpLFxuICAgIHRvb2xDYWxsSWQ6IHouc3RyaW5nKCksXG4gICAgdG9vbE5hbWU6IHouc3RyaW5nKCksXG4gICAgaW5wdXQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwiaW1hZ2VcIiksXG4gICAgLy8gQ29kZXggaW1hZ2VfZ2VuZXJhdGlvbiByZXN1bHQgYmFzZTY0LiBxZ3JpZCDripQg7Y+s66e3L+2ZleyepeyekCDssYXsnoTsnYQg7KeA7KeAIOyViuuKlOuLpC5cbiAgICBkYXRhOiB6LnN0cmluZygpLFxuICAgIHJldmlzZWRQcm9tcHQ6IHouc3RyaW5nKCkubnVsbGlzaCgpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUWdyaWRDb250ZW50ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRDb250ZW50PjtcblxuZXhwb3J0IGNvbnN0IEZpbmlzaFJlYXNvbiA9IHouZW51bShbXCJzdG9wXCIsIFwidG9vbC1jYWxsc1wiXSk7XG5leHBvcnQgdHlwZSBGaW5pc2hSZWFzb24gPSB6LmluZmVyPHR5cGVvZiBGaW5pc2hSZWFzb24+O1xuXG5leHBvcnQgY29uc3QgVmVyYm9zaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgVmVyYm9zaXR5ID0gei5pbmZlcjx0eXBlb2YgVmVyYm9zaXR5PjtcblxuZXhwb3J0IGNvbnN0IFJlYXNvbmluZ1N1bW1hcnkgPSB6LmVudW0oW1wiYXV0b1wiLCBcImNvbmNpc2VcIiwgXCJkZXRhaWxlZFwiLCBcIm5vbmVcIl0pO1xuZXhwb3J0IHR5cGUgUmVhc29uaW5nU3VtbWFyeSA9IHouaW5mZXI8dHlwZW9mIFJlYXNvbmluZ1N1bW1hcnk+O1xuXG5leHBvcnQgY29uc3QgU2VydmljZVRpZXIgPSB6LmVudW0oW1wiZmFzdFwiLCBcImZsZXhcIl0pO1xuZXhwb3J0IHR5cGUgU2VydmljZVRpZXIgPSB6LmluZmVyPHR5cGVvZiBTZXJ2aWNlVGllcj47XG5cbmV4cG9ydCBjb25zdCBJbWFnZUdlbmVyYXRpb25RdWFsaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblF1YWxpdHk+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouZW51bShbXCIxMDI0eDEwMjRcIiwgXCIxMDI0eDE1MzZcIiwgXCIxNTM2eDEwMjRcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblNpemU+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgcXVhbGl0eTogSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eS5vcHRpb25hbCgpLFxuICBzaXplOiBJbWFnZUdlbmVyYXRpb25TaXplLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEltYWdlR2VuZXJhdGlvbk9wdGlvbnMgPSB6LmluZmVyPHR5cGVvZiBJbWFnZUdlbmVyYXRpb25PcHRpb25zPjtcblxuZXhwb3J0IGNvbnN0IFFncmlkSW5wdXRQYXJ0ID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInRleHRcIiksXG4gICAgdGV4dDogei5zdHJpbmcoKSxcbiAgICB0ZXh0X2VsZW1lbnRzOiB6LmFycmF5KHoubmV2ZXIoKSkuZGVmYXVsdChbXSksXG4gIH0pLFxuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwiaW1hZ2VcIiksXG4gICAgdXJsOiB6LnN0cmluZygpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUWdyaWRJbnB1dFBhcnQgPSB6LmluZmVyPHR5cGVvZiBRZ3JpZElucHV0UGFydD47XG5cbmV4cG9ydCBjb25zdCBNQVhfUVVFUllfVElNRU9VVF9NUyA9IDMwICogNjBfMDAwO1xuZXhwb3J0IGNvbnN0IFF1ZXJ5VGltZW91dE1zID0gei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpLm1heChNQVhfUVVFUllfVElNRU9VVF9NUyk7XG5cbi8vIOKUgOKUgOKUgCBSdW4gTGlmZWN5Y2xlIENvbnRleHQgKFNESyDihpQgU2VydmVyIGNvbnRyYWN0KSDilIDilIDilIBcblxuLy8gY29kZXggdGhyZWFkIOyijO2RnC4gdGhyZWFkIOyerOyCrOyaqeycvOuhnCBjb252ZXJzYXRpb25faWQoPXByb21wdF9jYWNoZV9rZXkp66W8IOqzoOygle2VtFxuLy8gT3BlbkFJIHByb21wdCBjYWNoaW5nIOydhCDsgrTrpqzquLAg7JyE7ZWcIO2VuOuTpC4g7ISc67KE6rCAIOuwnOq4ie2VmOqzoCDtgbTrnbzqsIAg64uk7J2MIOyalOyyreyXkCDqt7jrjIDroZwg7ZqM7Iah7ZWc64ukLlxuLy8g7ZW465OkIOuvuOyghOyGoSDsi5wg6riw7KG0IFwi66ekIHR1cm4g7IOIIHRocmVhZCArIGhpc3RvcnkgaW5qZWN0XCIg64+Z7J6R7Jy866GcIO2PtOuwsShRZ3JpZFJ1bkNvbnRleHQg7LC47KGwKS5cbmV4cG9ydCBjb25zdCBRZ3JpZFRocmVhZENvb3JkID0gei5vYmplY3Qoe1xuICB3b3JrZXJJZDogei5udW1iZXIoKSwgLy8g6rOg7KCVIOudvOyasO2MhSAodGhyZWFkIOuKlCB3b3JrZXIg7ZSE66Gc7IS47IqkIOuplOuqqOumrOyXkOunjCDsobTsnqwpXG4gIHRocmVhZElkOiB6LnN0cmluZygpLCAvLyBjb2RleCBjb252ZXJzYXRpb25faWQgPSBwcm9tcHRfY2FjaGVfa2V5XG4gIGVwb2NoOiB6Lm51bWJlcigpLCAvLyB3b3JrZXIgc3Bhd24g7Lm07Jq07YSwLiByZXN0YXJ0IOuhnCB0aHJlYWQg7Kad67CcIOqwkOyngFxuICBzeXN0ZW1IYXNoOiB6LnN0cmluZygpLCAvLyBzeXN0ZW1fcHJvbXB0IO2VtOyLnC4g64uk66W4IOuMgO2ZlCDsmKTsoJHsho0g67Cp7KeAXG59KTtcbmV4cG9ydCB0eXBlIFFncmlkVGhyZWFkQ29vcmQgPSB6LmluZmVyPHR5cGVvZiBRZ3JpZFRocmVhZENvb3JkPjtcblxuZXhwb3J0IGNvbnN0IFFncmlkUnVuQ29udGV4dCA9IHoub2JqZWN0KHtcbiAgLy8gdG9vbC1jYWxsIHJ1buydhCDqs4Tsho3tlaAg65WM66eMIOuwnOq4iS4g7J2867CYIOuMgO2ZlOuKlCB0aHJlYWRDb29yZCDrp4wg7JmV67O1LlxuICByZXF1ZXN0TG9nSWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdGhyZWFkQ29vcmQ6IFFncmlkVGhyZWFkQ29vcmQub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUWdyaWRSdW5Db250ZXh0ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRSdW5Db250ZXh0PjtcblxuZXhwb3J0IGNvbnN0IFFncmlkVG9vbFJlc3VsdElucHV0ID0gei5vYmplY3Qoe1xuICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICB0b29sTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBvdXRwdXQ6IHouc3RyaW5nKCksXG4gIGlzRXJyb3I6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFFncmlkVG9vbFJlc3VsdElucHV0ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUb29sUmVzdWx0SW5wdXQ+O1xuXG5leHBvcnQgY29uc3QgUXVlcnlJbnB1dCA9IHoubG9vc2VPYmplY3Qoe1xuICBzeXN0ZW06IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcHJvbXB0OiB6LnN0cmluZygpLFxuICBpbnB1dDogei5hcnJheShRZ3JpZElucHV0UGFydCkub3B0aW9uYWwoKSxcbiAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGltZW91dDogUXVlcnlUaW1lb3V0TXMub3B0aW9uYWwoKSxcbiAganNvblNjaGVtYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sczogei5hcnJheShRZ3JpZFRvb2wpLm9wdGlvbmFsKCksXG4gIGVmZm9ydDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB2ZXJib3NpdHk6IFZlcmJvc2l0eS5vcHRpb25hbCgpLFxuICByZWFzb25pbmdTdW1tYXJ5OiBSZWFzb25pbmdTdW1tYXJ5Lm9wdGlvbmFsKCksXG4gIHNlcnZpY2VUaWVyOiBTZXJ2aWNlVGllci5vcHRpb25hbCgpLFxuICBoaXN0b3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb2plY3ROYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIC8vIOyDneuete2VmOuptCDroZzquYXtlZzri6QuIGZhbHNl64qUIHJlcXVlc3QgbG9nIOyTsOq4sOunjCDrgYTqs6AgZGlzcGF0Y2gvdGhyZWFk64qUIOycoOyngO2VnOuLpC5cbiAgbG9nZ2VyOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBydW5Db250ZXh0OiBRZ3JpZFJ1bkNvbnRleHQub3B0aW9uYWwoKSxcbiAgdG9vbFJlc3VsdHM6IHouYXJyYXkoUWdyaWRUb29sUmVzdWx0SW5wdXQpLm9wdGlvbmFsKCksXG4gIC8vIGNvZGV4IOuCtOyepSBpbWFnZV9nZW5lcmF0aW9uIHRvb2wg7J2EIOy8oOuLpChPcGVuQUkg6rK966GcIOyghOyaqSwgb3B0LWluLCBub24tc3RyZWFtKS5cbiAgaW1hZ2VHZW5lcmF0aW9uOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAvLyBxZ3JpZCDqsIDqsqkg7LaU7KCVIOuwjyBDb2RleCDsnbTrr7jsp4Ag7JqU7LKtIO2ejO2KuC4g7J2066+47KeAIOuqqOuNuOydgCBncHQtaW1hZ2UtMiDroZwg6rOg7KCVIOqwgOygle2VnOuLpC5cbiAgaW1hZ2VHZW5lcmF0aW9uT3B0aW9uczogSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucy5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBRdWVyeUlucHV0ID0gei5pbmZlcjx0eXBlb2YgUXVlcnlJbnB1dD47XG5cbmV4cG9ydCBjb25zdCBNb2RlbEZhbGxiYWNrID0gei5vYmplY3Qoe1xuICB0cmlnZ2VyOiB6LmxpdGVyYWwoXCJyZWZ1c2FsXCIpLFxuICBmcm9tTW9kZWw6IHouc3RyaW5nKCksXG4gIHRvTW9kZWw6IHouc3RyaW5nKCksXG4gIGNhdGVnb3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGV4cGxhbmF0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIE1vZGVsRmFsbGJhY2sgPSB6LmluZmVyPHR5cGVvZiBNb2RlbEZhbGxiYWNrPjtcblxuZXhwb3J0IGNvbnN0IENvc3RTb3VyY2UgPSB6LmVudW0oW1wicHJvdmlkZXJcIiwgXCJwcmljaW5nX3RhYmxlXCIsIFwibWl4ZWRcIl0pO1xuZXhwb3J0IHR5cGUgQ29zdFNvdXJjZSA9IHouaW5mZXI8dHlwZW9mIENvc3RTb3VyY2U+O1xuXG5leHBvcnQgY29uc3QgUXVlcnlPdXRwdXQgPSB6Lm9iamVjdCh7XG4gIHRleHQ6IHouc3RyaW5nKCksXG4gIGNvbnRlbnQ6IHouYXJyYXkoUWdyaWRDb250ZW50KSxcbiAgZmluaXNoUmVhc29uOiBGaW5pc2hSZWFzb24sXG4gIHRva2VuTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICByZXF1ZXN0ZWRNb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbEZhbGxiYWNrczogei5hcnJheShNb2RlbEZhbGxiYWNrKS5vcHRpb25hbCgpLFxuICB1c2FnZTogei5vYmplY3Qoe1xuICAgIGlucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICBvdXRwdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgIGNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICBjYWNoZV9jcmVhdGlvbl81bV9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBjYWNoZV9jcmVhdGlvbl8xaF9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBjYWNoZV9yZWFkX2lucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgfSksXG4gIGR1cmF0aW9uTXM6IHoubnVtYmVyKCksXG4gIHR0ZnRNczogei5udW1iZXIoKSxcbiAgY29zdFVzZDogei5udW1iZXIoKSxcbiAgY29zdFNvdXJjZTogQ29zdFNvdXJjZSxcbiAgcnVuQ29udGV4dDogUWdyaWRSdW5Db250ZXh0Lm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFF1ZXJ5T3V0cHV0ID0gei5pbmZlcjx0eXBlb2YgUXVlcnlPdXRwdXQ+O1xuXG4vLyDilIDilIDilIAgU3RyZWFtIEV2ZW50cyDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IFN0cmVhbUV2ZW50cyA9IHoub2JqZWN0KHtcbiAgZGVsdGE6IHoub2JqZWN0KHsgdGV4dDogei5zdHJpbmcoKSB9KSxcbiAgdG9vbENhbGw6IHoub2JqZWN0KHtcbiAgICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICAgIHRvb2xOYW1lOiB6LnN0cmluZygpLFxuICAgIGlucHV0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgZG9uZTogei5vYmplY3Qoe1xuICAgIHRleHQ6IHouc3RyaW5nKCksXG4gICAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICByZXF1ZXN0ZWRNb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG1vZGVsRmFsbGJhY2tzOiB6LmFycmF5KE1vZGVsRmFsbGJhY2spLm9wdGlvbmFsKCksXG4gICAgdG9rZW5OYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZmluaXNoUmVhc29uOiBGaW5pc2hSZWFzb24sXG4gICAgdXNhZ2U6IHoub2JqZWN0KHtcbiAgICAgIGlucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICAgIG91dHB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgICBjYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX2lucHV0X3Rva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgICAgY2FjaGVfcmVhZF9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgfSksXG4gICAgZHVyYXRpb25Nczogei5udW1iZXIoKSxcbiAgICB0dGZ0TXM6IHoubnVtYmVyKCksXG4gICAgY29zdFVzZDogei5udW1iZXIoKSxcbiAgICBjb3N0U291cmNlOiBDb3N0U291cmNlLFxuICAgIGNvbnRlbnQ6IHouYXJyYXkoUWdyaWRDb250ZW50KSxcbiAgICBydW5Db250ZXh0OiBRZ3JpZFJ1bkNvbnRleHQub3B0aW9uYWwoKSxcbiAgfSksXG4gIGVycm9yOiB6Lm9iamVjdCh7IG1lc3NhZ2U6IHouc3RyaW5nKCkgfSksXG59KTtcbmV4cG9ydCB0eXBlIFN0cmVhbUV2ZW50cyA9IHouaW5mZXI8dHlwZW9mIFN0cmVhbUV2ZW50cz47XG5cbi8vIOKUgOKUgOKUgCBSdW4gTGlmZWN5Y2xlIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgQ3JlYXRlUnVuSW5wdXQgPSB6Lm9iamVjdCh7XG4gIHVzZXJQcm9tcHQ6IHouc3RyaW5nKCksXG4gIHN5c3RlbVByb21wdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZWZmb3J0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb2plY3ROYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGhpc3Rvcnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgQ3JlYXRlUnVuSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBDcmVhdGVSdW5JbnB1dD47XG5cbmV4cG9ydCBjb25zdCBBcHBlbmRTdGVwSW5wdXQgPSB6Lm9iamVjdCh7XG4gIHJlcXVlc3RMb2dJZDogei5udW1iZXIoKSxcbiAgc3RlcEluZGV4OiB6Lm51bWJlcigpLFxuICB0eXBlOiB6LmVudW0oW1wiZ2VuZXJhdGVcIiwgXCJ0b29sX2NhbGxcIl0pLFxuICBtb2RlbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVxdWVzdGVkTW9kZWxOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZhbGxiYWNrQ291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgaW5wdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgb3V0cHV0VG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNhY2hlUmVhZFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjYWNoZUNyZWF0aW9uVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNhY2hlQ3JlYXRpb241bVRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjYWNoZUNyZWF0aW9uMWhUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY29zdFVzZDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjb3N0U291cmNlOiBDb3N0U291cmNlLm9wdGlvbmFsKCksXG4gIGR1cmF0aW9uTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdHRmdE1zOiB6Lm51bWJlcigpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgZmluaXNoUmVhc29uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlYXNvbmluZ1RleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVhc29uaW5nVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvb2xDYWxsSW5kZXg6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG9vbENhbGxJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sQXJnczogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sUmVzdWx0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRvb2xEdXJhdGlvbk1zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEFwcGVuZFN0ZXBJbnB1dCA9IHouaW5mZXI8dHlwZW9mIEFwcGVuZFN0ZXBJbnB1dD47XG5cbmV4cG9ydCBjb25zdCBGaW5pc2hSdW5JbnB1dCA9IHoub2JqZWN0KHtcbiAgcmVxdWVzdExvZ0lkOiB6Lm51bWJlcigpLFxuICBzdGF0dXM6IHouZW51bShbXCJzdWNjZWVkZWRcIiwgXCJlcnJvclwiLCBcImFib3J0ZWRcIl0pLFxuICByZXNwb25zZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b2tlbk5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbW9kZWxOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlcXVlc3RlZE1vZGVsTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBmYWxsYmFja0NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsSW5wdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxPdXRwdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxDYWNoZVJlYWRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxDYWNoZUNyZWF0aW9uVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsQ2FjaGVDcmVhdGlvbjVtVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsQ2FjaGVDcmVhdGlvbjFoVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNvc3RVc2Q6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY29zdFNvdXJjZTogQ29zdFNvdXJjZS5vcHRpb25hbCgpLFxuICB0b3RhbER1cmF0aW9uTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgaGlzdG9yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBlcnJvck1lc3NhZ2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgRmluaXNoUnVuSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBGaW5pc2hSdW5JbnB1dD47XG5cbi8vIOKUgOKUgOKUgCBUb2tlbiBNYW5hZ2VtZW50IOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgVG9rZW5TdGF0cyA9IHoub2JqZWN0KHtcbiAgdG9rZW46IHouc3RyaW5nKCksXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIHByb3ZpZGVyOiB6LnN0cmluZygpLFxuICByZXF1ZXN0czogei5udW1iZXIoKSxcbn0pO1xuZXhwb3J0IHR5cGUgVG9rZW5TdGF0cyA9IHouaW5mZXI8dHlwZW9mIFRva2VuU3RhdHM+O1xuXG4vLyDilIDilIDilIAgT0F1dGgg4pSA4pSA4pSAXG5cbmV4cG9ydCBjb25zdCBPQXV0aFN0YXJ0UmVzdWx0ID0gei5vYmplY3Qoe1xuICBhdXRoVXJsOiB6LnN0cmluZygpLFxufSk7XG5leHBvcnQgdHlwZSBPQXV0aFN0YXJ0UmVzdWx0ID0gei5pbmZlcjx0eXBlb2YgT0F1dGhTdGFydFJlc3VsdD47XG5cbmNvbnN0IFJhdGVXaW5kb3cgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHV0aWxpemF0aW9uOiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gICAgcmVzZXRzQXQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgICB3aW5kb3dEdXJhdGlvbk1pbnM6IHoubnVtYmVyKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICB9KVxuICAubnVsbGFibGUoKTtcblxuZXhwb3J0IGNvbnN0IFVzYWdlUmVzcG9uc2UgPSB6Lm9iamVjdCh7XG4gIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb3ZpZGVyOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZpdmVIb3VyOiBSYXRlV2luZG93Lm9wdGlvbmFsKCksXG4gIHNldmVuRGF5OiBSYXRlV2luZG93Lm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFVzYWdlUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBVc2FnZVJlc3BvbnNlPjtcblxuLy8g4pSA4pSA4pSAIEhlYWx0aCDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IFN1YnNjcmliZXJTdGF0dXMgPSB6Lm9iamVjdCh7XG4gIGNvbm5lY3RlZDogei5ib29sZWFuKCksXG4gIGNvbm5lY3RlZEF0OiB6LmRhdGUoKS5udWxsYWJsZSgpLFxuICBsYXN0UmVjb25jaWxlQXQ6IHouZGF0ZSgpLm51bGxhYmxlKCksXG4gIGF0dGVtcHQ6IHoubnVtYmVyKCksXG59KTtcbmV4cG9ydCB0eXBlIFN1YnNjcmliZXJTdGF0dXMgPSB6LmluZmVyPHR5cGVvZiBTdWJzY3JpYmVyU3RhdHVzPjtcblxuZXhwb3J0IGNvbnN0IEhlYWx0aFJlc3BvbnNlID0gei5vYmplY3Qoe1xuICBzdGF0dXM6IHouc3RyaW5nKCksXG4gIGFjdGl2ZVRva2Vuczogei5udW1iZXIoKSxcbiAgc3Vic2NyaWJlcjogU3Vic2NyaWJlclN0YXR1cy5udWxsYWJsZSgpLFxufSk7XG5leHBvcnQgdHlwZSBIZWFsdGhSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIEhlYWx0aFJlc3BvbnNlPjtcblxuLy8g4pSA4pSA4pSAIEVycm9ycyDilIDilIDilIBcblxuZXhwb3J0IGNsYXNzIFF1b3RhRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGNvZGUgPSBcIlFVT1RBX0VYSEFVU1RFRFwiIGFzIGNvbnN0O1xufVxuZXhwb3J0IGNsYXNzIFF1b3RhVGhyZXNob2xkRXhjZWVkZWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgY29kZSA9IFwiUVVPVEFfVEhSRVNIT0xEX0VYQ0VFREVEXCIgYXMgY29uc3Q7XG59XG5leHBvcnQgY2xhc3MgVGltZW91dEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBjb2RlID0gXCJUSU1FT1VUXCIgYXMgY29uc3Q7XG59XG5leHBvcnQgY2xhc3MgUHJvY2Vzc0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBjb2RlID0gXCJQUk9DRVNTX0VSUk9SXCIgYXMgY29uc3Q7XG59XG5cbi8vIOKUgOKUgOKUgCBVdGlscyDilIDilIDilIBcblxuZXhwb3J0IGZ1bmN0aW9uIG1hc2tUb2tlbih0b2tlbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRva2VuLmxlbmd0aCA+IDQgPyBgLi4uJHt0b2tlbi5zbGljZSgtNCl9YCA6IHRva2VuO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUlBLE1BQWEsU0FBUyxFQUFFLEtBQUs7Q0FBQztDQUFPO0NBQVU7QUFBTSxDQUFDO0FBR3RELE1BQWEsWUFBWSxFQUFFLE9BQU87Q0FDaEMsTUFBTSxFQUFFLE9BQU87Q0FDZixhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUztDQUNqQyxhQUFhLEVBQUUsUUFBUTtBQUN6QixDQUFDO0FBR0QsTUFBYSxlQUFlLEVBQUUsbUJBQW1CLFFBQVE7Q0FDdkQsRUFBRSxPQUFPO0VBQ1AsTUFBTSxFQUFFLFFBQVEsTUFBTTtFQUN0QixNQUFNLEVBQUUsT0FBTztDQUNqQixDQUFDO0NBQ0QsRUFBRSxPQUFPO0VBQ1AsTUFBTSxFQUFFLFFBQVEsV0FBVztFQUMzQixZQUFZLEVBQUUsT0FBTztFQUNyQixVQUFVLEVBQUUsT0FBTztFQUNuQixPQUFPLEVBQUUsT0FBTztDQUNsQixDQUFDO0NBQ0QsRUFBRSxPQUFPO0VBQ1AsTUFBTSxFQUFFLFFBQVEsT0FBTztFQUV2QixNQUFNLEVBQUUsT0FBTztFQUNmLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRO0NBQ3BDLENBQUM7QUFDSCxDQUFDO0FBR0QsTUFBYSxlQUFlLEVBQUUsS0FBSyxDQUFDLFFBQVEsWUFBWSxDQUFDO0FBR3pELE1BQWEsWUFBWSxFQUFFLEtBQUs7Q0FBQztDQUFPO0NBQVU7QUFBTSxDQUFDO0FBR3pELE1BQWEsbUJBQW1CLEVBQUUsS0FBSztDQUFDO0NBQVE7Q0FBVztDQUFZO0FBQU0sQ0FBQztBQUc5RSxNQUFhLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUSxNQUFNLENBQUM7QUFHbEQsTUFBYSx5QkFBeUIsRUFBRSxLQUFLO0NBQUM7Q0FBTztDQUFVO0FBQU0sQ0FBQztBQUd0RSxNQUFhLHNCQUFzQixFQUFFLEtBQUs7Q0FBQztDQUFhO0NBQWE7QUFBVyxDQUFDO0FB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
|
|
@@ -18,18 +18,36 @@ function buildToolCallSchema(tools, answerSchema) {
|
|
|
18
18
|
const normalizedAnswerSchema = answerSchema === void 0 ? void 0 : rebaseUserOutputSchema(answerSchema);
|
|
19
19
|
return {
|
|
20
20
|
type: "object",
|
|
21
|
-
description: "Use this schema only through StructuredOutput. Do not invoke listed client tools as native Claude Code tools. To request client-side tool execution, set action to tool_call and include toolCalls. Use action answer only when no further client tool result is needed.",
|
|
22
|
-
properties: {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
description: "Use this schema only through StructuredOutput. Do not invoke listed client tools as native Claude Code tools. To request client-side tool execution, set result.action to tool_call and include result.toolCalls. Use action answer only when no further client tool result is needed.",
|
|
22
|
+
properties: { result: { anyOf: [{
|
|
23
|
+
type: "object",
|
|
24
|
+
description: "Final answer. Use only when no further client tool result is needed.",
|
|
25
|
+
properties: {
|
|
26
|
+
action: {
|
|
27
|
+
type: "string",
|
|
28
|
+
enum: ["answer"]
|
|
29
|
+
},
|
|
30
|
+
answer: normalizedAnswerSchema === void 0 ? { type: "string" } : { $ref: USER_OUTPUT_REF },
|
|
31
|
+
toolCalls: { type: "null" }
|
|
27
32
|
},
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
required: [
|
|
34
|
+
"action",
|
|
35
|
+
"answer",
|
|
36
|
+
"toolCalls"
|
|
37
|
+
],
|
|
38
|
+
additionalProperties: false
|
|
39
|
+
}, {
|
|
40
|
+
type: "object",
|
|
41
|
+
description: "Request client-side tool execution through this structured output. Do not call these tools as native Claude Code tools.",
|
|
42
|
+
properties: {
|
|
43
|
+
action: {
|
|
44
|
+
type: "string",
|
|
45
|
+
enum: ["tool_call"]
|
|
46
|
+
},
|
|
47
|
+
answer: { type: "null" },
|
|
48
|
+
toolCalls: {
|
|
32
49
|
type: "array",
|
|
50
|
+
minItems: 1,
|
|
33
51
|
items: {
|
|
34
52
|
type: "object",
|
|
35
53
|
properties: {
|
|
@@ -46,14 +64,16 @@ function buildToolCallSchema(tools, answerSchema) {
|
|
|
46
64
|
required: ["toolName", "args"],
|
|
47
65
|
additionalProperties: false
|
|
48
66
|
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
required: [
|
|
70
|
+
"action",
|
|
71
|
+
"answer",
|
|
72
|
+
"toolCalls"
|
|
73
|
+
],
|
|
74
|
+
additionalProperties: false
|
|
75
|
+
}] } },
|
|
76
|
+
required: ["result"],
|
|
57
77
|
additionalProperties: false,
|
|
58
78
|
...normalizedAnswerSchema === void 0 ? {} : { $defs: { [USER_OUTPUT_DEFINITION]: normalizedAnswerSchema } }
|
|
59
79
|
};
|
|
@@ -90,4 +110,4 @@ function isJsonObject(value) {
|
|
|
90
110
|
//#endregion
|
|
91
111
|
export { ToolSchemaCompositionError, buildToolCallSchema };
|
|
92
112
|
|
|
93
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1lbXVsYXRpb24tc2NoZW1hLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9xZ3JpZC90b29sLWVtdWxhdGlvbi1zY2hlbWEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB0b29sIGVudmVsb3BlICsg7IKs7Jqp7J6QIG91dHB1dCDsiqTtgqTrp4gg7ZWp7ISxICjsmpTssq0g67Cp7ZalKS4g7J2R64u1IO2VtOyEneydgCB0b29sLWVtdWxhdGlvbi50cy5cbiAqXG4gKiB0b29scyDqsIAg7J6I7Ja064+EIOy1nOyihSBhbnN3ZXIg6rCAIOyCrOyaqeyekCDsiqTtgqTrp4jroZwg6rCV7KCc65CY6rKMIO2VmOugpOqzoCBlbnZlbG9wZSDsnZggYW5zd2VyIOu4jOuenOy5mOyXkFxuICog7IKs7Jqp7J6QIOyKpO2CpOuniOulvCDsi6zripTri6QuIO2GteynuOuhnCDspJHssqntlaAg7IiYIOyXhuuKlCDsnbTsnKDripQgYCRyZWZgIOqwgCDrrLjshJwg7KCI64yAIOqyveuhnOydtOq4sCDrlYzrrLgg4oCUXG4gKiBgI2Ag7J2AIFwi7J20IOyhsOqwgeydmCDro6jtirhcIuqwgCDslYTri4jrnbwgXCLstZzsooUg66y47ISc7J2YIOujqO2KuFwi6528LCDqt7jrjIDroZwg64Sj7Jy866m0IO2PrOyduO2EsOqwgCBlbnZlbG9wZSDsnYRcbiAqIOqwgOumrOy8nCDsobDsmqntnogg7JeJ65qx7ZWcIOqxuCDqsoDspp3tlZjqsowg65Cc64ukLiDqt7jrnpjshJwg7JiI7JW9IOydtOumhCDslYTrnpjroZwg7Jiu6riw6rOgIOuhnOy7rCDtj6zsnbjthLDrpbwg7J6s7J6R7ISx7ZWc64ukLlxuICpcbiAqIOuwsOqyvcK37Iuk7LihwrfsmIjsi5zCt+qxsOu2gCDrqqnroZ3snYAg7Iqk7YKsIOusuOyEnOulvCDrs7wg6rKDOlxuICogICBwYWNrYWdlcy9jbGkvc2tpbGxzL3FncmlkL3JlZmVyZW5jZXMvdG9vbC1jYWxsaW5nLWFuZC1tdWx0aXR1cm4ubWRcbiAqICAg4oaSIFwiQ29tcG9zaW5nIFRvb2xzIFdpdGggQSBVc2VyIE91dHB1dCBTY2hlbWFcIlxuICovXG5cbmltcG9ydCB7IHR5cGUgSnNvblZhbHVlIH0gZnJvbSBcIi4uLy4uL2NvZGV4LXByb3RvY29sL3NlcmRlX2pzb24vSnNvblZhbHVlXCI7XG5pbXBvcnQge1xuICBTQ0hFTUFfQVJSQVlfS0VZV09SRFMsXG4gIFNDSEVNQV9ERVBFTkRFTkNJRVNfS0VZV09SRCxcbiAgU0NIRU1BX01BUF9LRVlXT1JEUyxcbiAgU0NIRU1BX1NJTkdMRV9LRVlXT1JEUyxcbiAgVU5TVVBQT1JURURfUkVGRVJFTkNFX0tFWVdPUkRTLFxufSBmcm9tIFwiLi4vLi4vdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9qc29uLXNjaGVtYS1rZXl3b3Jkc1wiO1xuaW1wb3J0IHsgdHlwZSBRZ3JpZFRvb2wgfSBmcm9tIFwiLi9xZ3JpZC50eXBlc1wiO1xuXG5jb25zdCBVU0VSX09VVFBVVF9ERUZJTklUSU9OID0gXCJfX3FncmlkX3VzZXJfb3V0cHV0XCI7XG5jb25zdCBVU0VSX09VVFBVVF9SRUYgPSBgIy8kZGVmcy8ke1VTRVJfT1VUUFVUX0RFRklOSVRJT059YDtcblxuZXhwb3J0IGNsYXNzIFRvb2xTY2hlbWFDb21wb3NpdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHBhdGg6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoYHRvb2wgc2NoZW1hIGNvbXBvc2l0aW9uOiAke21lc3NhZ2V9IChhdCAke3BhdGh9KWApO1xuICAgIHRoaXMubmFtZSA9IFwiVG9vbFNjaGVtYUNvbXBvc2l0aW9uRXJyb3JcIjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRUb29sQ2FsbFNjaGVtYSh0b29sczogUWdyaWRUb29sW10sIGFuc3dlclNjaGVtYT86IEpzb25WYWx1ZSk6IEpzb25WYWx1ZSB7XG4gIGNvbnN0IHRvb2xEZXNjcmlwdGlvbnMgPSB0b29sc1xuICAgIC5tYXAoKHRvb2wpID0+IHtcbiAgICAgIGNvbnN0IHNjaGVtYSA9IEpTT04uc3RyaW5naWZ5KHRvb2wuaW5wdXRTY2hlbWEpO1xuICAgICAgcmV0dXJuIGAtICR7dG9vbC5uYW1lfTogJHt0b29sLmRlc2NyaXB0aW9uID8/IFwiXCJ9XFxuICBpbnB1dFNjaGVtYTogJHtzY2hlbWF9YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZWRBbnN3ZXJTY2hlbWEgPVxuICAgIGFuc3dlclNjaGVtYSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcmViYXNlVXNlck91dHB1dFNjaGVtYShhbnN3ZXJTY2hlbWEpO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJvYmplY3RcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVXNlIHRoaXMgc2NoZW1hIG9ubHkgdGhyb3VnaCBTdHJ1Y3R1cmVkT3V0cHV0LiBEbyBub3QgaW52b2tlIGxpc3RlZCBjbGllbnQgdG9vbHMgYXMgbmF0aXZlIENsYXVkZSBDb2RlIHRvb2xzLiBUbyByZXF1ZXN0IGNsaWVudC1zaWRlIHRvb2wgZXhlY3V0aW9uLCBzZXQgYWN0aW9uIHRvIHRvb2xfY2FsbCBhbmQgaW5jbHVkZSB0b29sQ2FsbHMuIFVzZSBhY3Rpb24gYW5zd2VyIG9ubHkgd2hlbiBubyBmdXJ0aGVyIGNsaWVudCB0b29sIHJlc3VsdCBpcyBuZWVkZWQuXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgYWN0aW9uOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGVudW06IFtcImFuc3dlclwiLCBcInRvb2xfY2FsbFwiXSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgXCJVc2UgdG9vbF9jYWxsIHRvIHJlcXVlc3QgY2xpZW50LXNpZGUgdG9vbCBleGVjdXRpb24gdGhyb3VnaCB0aGlzIHN0cnVjdHVyZWQgb3V0cHV0LiBVc2UgYW5zd2VyIG9ubHkgZm9yIGEgZmluYWwgYW5zd2VyLlwiLFxuICAgICAgfSxcbiAgICAgIGFuc3dlcjoge1xuICAgICAgICBhbnlPZjogW1xuICAgICAgICAgIG5vcm1hbGl6ZWRBbnN3ZXJTY2hlbWEgPT09IHVuZGVmaW5lZCA/IHsgdHlwZTogXCJzdHJpbmdcIiB9IDogeyAkcmVmOiBVU0VSX09VVFBVVF9SRUYgfSxcbiAgICAgICAgICB7IHR5cGU6IFwibnVsbFwiIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgdG9vbENhbGxzOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgIFwiQ2xpZW50LXNpZGUgdG9vbCBjYWxscyByZXF1ZXN0ZWQgdGhyb3VnaCBzdHJ1Y3R1cmVkIG91dHB1dC4gRG8gbm90IGNhbGwgdGhlc2UgdG9vbHMgYXMgbmF0aXZlIENsYXVkZSBDb2RlIHRvb2xzLlwiLFxuICAgICAgICBhbnlPZjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICB0b29sTmFtZToge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgIGVudW06IHRvb2xzLm1hcCgodG9vbCkgPT4gdG9vbC5uYW1lKSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQ2xpZW50LXNpZGUgdG9vbCBuYW1lIHRvIHJlcXVlc3QgdGhyb3VnaCBzdHJ1Y3R1cmVkIG91dHB1dC4gRG8gbm90IGNhbGwgdGhpcyBhcyBhIG5hdGl2ZSBDbGF1ZGUgQ29kZSB0b29sLlxcbiR7dG9vbERlc2NyaXB0aW9uc31gLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYXJnczoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRvb2wgYXJndW1lbnRzIGFzIGEgSlNPTiBzdHJpbmcgZm9yIHRoZSBjbGllbnQtc2lkZSB0b29sLlwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiBbXCJ0b29sTmFtZVwiLCBcImFyZ3NcIl0sXG4gICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IHR5cGU6IFwibnVsbFwiIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVxdWlyZWQ6IFtcImFjdGlvblwiLCBcImFuc3dlclwiLCBcInRvb2xDYWxsc1wiXSxcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgLi4uKG5vcm1hbGl6ZWRBbnN3ZXJTY2hlbWEgPT09IHVuZGVmaW5lZFxuICAgICAgPyB7fVxuICAgICAgOiB7XG4gICAgICAgICAgJGRlZnM6IHtcbiAgICAgICAgICAgIFtVU0VSX09VVFBVVF9ERUZJTklUSU9OXTogbm9ybWFsaXplZEFuc3dlclNjaGVtYSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmViYXNlVXNlck91dHB1dFNjaGVtYShzY2hlbWE6IEpzb25WYWx1ZSk6IEpzb25WYWx1ZSB7XG4gIHJldHVybiByZXdyaXRlU2NoZW1hTm9kZShzY2hlbWEsIFwiJFwiKTtcbn1cblxuY29uc3QgTUFQX0tFWVdPUkRTID0gbmV3IFNldDxzdHJpbmc+KFNDSEVNQV9NQVBfS0VZV09SRFMpO1xuY29uc3QgQVJSQVlfS0VZV09SRFMgPSBuZXcgU2V0PHN0cmluZz4oU0NIRU1BX0FSUkFZX0tFWVdPUkRTKTtcbmNvbnN0IFNJTkdMRV9LRVlXT1JEUyA9IG5ldyBTZXQ8c3RyaW5nPihTQ0hFTUFfU0lOR0xFX0tFWVdPUkRTKTtcblxuZnVuY3Rpb24gcmV3cml0ZVNjaGVtYU5vZGUodmFsdWU6IEpzb25WYWx1ZSwgcGF0aDogc3RyaW5nKTogSnNvblZhbHVlIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuXG4gIGNvbnN0IHNvdXJjZSA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIEpzb25WYWx1ZT47XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgSnNvblZhbHVlPiA9IHsgLi4uc291cmNlIH07XG5cbiAgZm9yIChjb25zdCB1bnN1cHBvcnRlZEtleXdvcmQgb2YgVU5TVVBQT1JURURfUkVGRVJFTkNFX0tFWVdPUkRTKSB7XG4gICAgaWYgKE9iamVjdC5oYXNPd24oc291cmNlLCB1bnN1cHBvcnRlZEtleXdvcmQpKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbFNjaGVtYUNvbXBvc2l0aW9uRXJyb3IoXG4gICAgICAgIGAke3Vuc3VwcG9ydGVkS2V5d29yZH0gaXMgbm90IHN1cHBvcnRlZGAsXG4gICAgICAgIGAke3BhdGh9LiR7dW5zdXBwb3J0ZWRLZXl3b3JkfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChcIiRyZWZcIiBpbiBzb3VyY2UpIHtcbiAgICBjb25zdCByZWYgPSBzb3VyY2UuJHJlZjtcbiAgICBpZiAodHlwZW9mIHJlZiAhPT0gXCJzdHJpbmdcIiB8fCAocmVmICE9PSBcIiNcIiAmJiAhcmVmLnN0YXJ0c1dpdGgoXCIjL1wiKSkpIHtcbiAgICAgIHRocm93IG5ldyBUb29sU2NoZW1hQ29tcG9zaXRpb25FcnJvcihcbiAgICAgICAgXCJvbmx5IHJvb3QtcmVsYXRpdmUgSlNPTiBQb2ludGVyICRyZWYgdmFsdWVzIGFyZSBzdXBwb3J0ZWRcIixcbiAgICAgICAgYCR7cGF0aH0uJHJlZmAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXN1bHQuJHJlZiA9IGAke1VTRVJfT1VUUFVUX1JFRn0ke3JlZi5zbGljZSgxKX1gO1xuICB9XG5cbiAgZm9yIChjb25zdCBba2V5d29yZCwgY2hpbGRdIG9mIE9iamVjdC5lbnRyaWVzKHNvdXJjZSkpIHtcbiAgICBjb25zdCBrZXl3b3JkUGF0aCA9IGAke3BhdGh9LiR7a2V5d29yZH1gO1xuXG4gICAgaWYgKE1BUF9LRVlXT1JEUy5oYXMoa2V5d29yZCkgJiYgaXNKc29uT2JqZWN0KGNoaWxkKSkge1xuICAgICAgcmVzdWx0W2tleXdvcmRdID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhjaGlsZCkubWFwKChbbmFtZSwgc2NoZW1hXSkgPT4gW1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgcmV3cml0ZVNjaGVtYU5vZGUoc2NoZW1hLCBgJHtrZXl3b3JkUGF0aH0uJHtuYW1lfWApLFxuICAgICAgICBdKSxcbiAgICAgICkgYXMgSnNvblZhbHVlO1xuICAgIH0gZWxzZSBpZiAoa2V5d29yZCA9PT0gU0NIRU1BX0RFUEVOREVOQ0lFU19LRVlXT1JEICYmIGlzSnNvbk9iamVjdChjaGlsZCkpIHtcbiAgICAgIHJlc3VsdFtrZXl3b3JkXSA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hpbGQpLm1hcCgoW25hbWUsIGRlcGVuZGVuY3ldKSA9PiBbXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBBcnJheS5pc0FycmF5KGRlcGVuZGVuY3kpXG4gICAgICAgICAgICA/IGRlcGVuZGVuY3lcbiAgICAgICAgICAgIDogcmV3cml0ZVNjaGVtYU5vZGUoZGVwZW5kZW5jeSwgYCR7a2V5d29yZFBhdGh9LiR7bmFtZX1gKSxcbiAgICAgICAgXSksXG4gICAgICApIGFzIEpzb25WYWx1ZTtcbiAgICB9IGVsc2UgaWYgKEFSUkFZX0tFWVdPUkRTLmhhcyhrZXl3b3JkKSAmJiBBcnJheS5pc0FycmF5KGNoaWxkKSkge1xuICAgICAgcmVzdWx0W2tleXdvcmRdID0gY2hpbGQubWFwKChzY2hlbWEsIGluZGV4KSA9PlxuICAgICAgICByZXdyaXRlU2NoZW1hTm9kZShzY2hlbWEsIGAke2tleXdvcmRQYXRofVske2luZGV4fV1gKSxcbiAgICAgICkgYXMgSnNvblZhbHVlO1xuICAgIH0gZWxzZSBpZiAoU0lOR0xFX0tFWVdPUkRTLmhhcyhrZXl3b3JkKSkge1xuICAgICAgaWYgKGtleXdvcmQgPT09IFwiaXRlbXNcIiAmJiBBcnJheS5pc0FycmF5KGNoaWxkKSkge1xuICAgICAgICByZXN1bHRba2V5d29yZF0gPSBjaGlsZC5tYXAoKHNjaGVtYSwgaW5kZXgpID0+XG4gICAgICAgICAgcmV3cml0ZVNjaGVtYU5vZGUoc2NoZW1hLCBgJHtrZXl3b3JkUGF0aH1bJHtpbmRleH1dYCksXG4gICAgICAgICkgYXMgSnNvblZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W2tleXdvcmRdID0gcmV3cml0ZVNjaGVtYU5vZGUoY2hpbGQsIGtleXdvcmRQYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0IGFzIEpzb25WYWx1ZTtcbn1cblxuZnVuY3Rpb24gaXNKc29uT2JqZWN0KHZhbHVlOiBKc29uVmFsdWUpOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCBKc29uVmFsdWU+IHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBdUJBLE1BQU0seUJBQXlCO0FBQy9CLE1BQU0sa0JBQWtCLFdBQVc7QUFFbkMsSUFBYSw2QkFBYixjQUFnRCxNQUFNO0NBRzNDO0NBRlQsWUFDRSxTQUNBLE1BQ0E7RUFDQSxNQUFNLDRCQUE0QixRQUFRLE9BQU8sS0FBSyxFQUFFO0VBRmpELEtBQUEsT0FBQTtFQUdQLEtBQUssT0FBTztDQUNkO0FB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
|
|
113
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1lbXVsYXRpb24tc2NoZW1hLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9xZ3JpZC90b29sLWVtdWxhdGlvbi1zY2hlbWEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB0b29sIGVudmVsb3BlICsg7IKs7Jqp7J6QIG91dHB1dCDsiqTtgqTrp4gg7ZWp7ISxICjsmpTssq0g67Cp7ZalKS4g7J2R64u1IO2VtOyEneydgCB0b29sLWVtdWxhdGlvbi50cy5cbiAqXG4gKiB0b29scyDqsIAg7J6I7Ja064+EIOy1nOyihSBhbnN3ZXIg6rCAIOyCrOyaqeyekCDsiqTtgqTrp4jroZwg6rCV7KCc65CY6rKMIO2VmOugpOqzoCBlbnZlbG9wZSDsnZggYW5zd2VyIOu4jOuenOy5mOyXkFxuICog7IKs7Jqp7J6QIOyKpO2CpOuniOulvCDsi6zripTri6QuIO2GteynuOuhnCDspJHssqntlaAg7IiYIOyXhuuKlCDsnbTsnKDripQgYCRyZWZgIOqwgCDrrLjshJwg7KCI64yAIOqyveuhnOydtOq4sCDrlYzrrLgg4oCUXG4gKiBgI2Ag7J2AIFwi7J20IOyhsOqwgeydmCDro6jtirhcIuqwgCDslYTri4jrnbwgXCLstZzsooUg66y47ISc7J2YIOujqO2KuFwi6528LCDqt7jrjIDroZwg64Sj7Jy866m0IO2PrOyduO2EsOqwgCBlbnZlbG9wZSDsnYRcbiAqIOqwgOumrOy8nCDsobDsmqntnogg7JeJ65qx7ZWcIOqxuCDqsoDspp3tlZjqsowg65Cc64ukLiDqt7jrnpjshJwg7JiI7JW9IOydtOumhCDslYTrnpjroZwg7Jiu6riw6rOgIOuhnOy7rCDtj6zsnbjthLDrpbwg7J6s7J6R7ISx7ZWc64ukLlxuICpcbiAqIOuwsOqyvcK37Iuk7LihwrfsmIjsi5zCt+qxsOu2gCDrqqnroZ3snYAg7Iqk7YKsIOusuOyEnOulvCDrs7wg6rKDOlxuICogICBwYWNrYWdlcy9jbGkvc2tpbGxzL3FncmlkL3JlZmVyZW5jZXMvdG9vbC1jYWxsaW5nLWFuZC1tdWx0aXR1cm4ubWRcbiAqICAg4oaSIFwiQ29tcG9zaW5nIFRvb2xzIFdpdGggQSBVc2VyIE91dHB1dCBTY2hlbWFcIlxuICovXG5cbmltcG9ydCB7IHR5cGUgSnNvblZhbHVlIH0gZnJvbSBcIi4uLy4uL2NvZGV4LXByb3RvY29sL3NlcmRlX2pzb24vSnNvblZhbHVlXCI7XG5pbXBvcnQge1xuICBTQ0hFTUFfQVJSQVlfS0VZV09SRFMsXG4gIFNDSEVNQV9ERVBFTkRFTkNJRVNfS0VZV09SRCxcbiAgU0NIRU1BX01BUF9LRVlXT1JEUyxcbiAgU0NIRU1BX1NJTkdMRV9LRVlXT1JEUyxcbiAgVU5TVVBQT1JURURfUkVGRVJFTkNFX0tFWVdPUkRTLFxufSBmcm9tIFwiLi4vLi4vdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9qc29uLXNjaGVtYS1rZXl3b3Jkc1wiO1xuaW1wb3J0IHsgdHlwZSBRZ3JpZFRvb2wgfSBmcm9tIFwiLi9xZ3JpZC50eXBlc1wiO1xuXG5jb25zdCBVU0VSX09VVFBVVF9ERUZJTklUSU9OID0gXCJfX3FncmlkX3VzZXJfb3V0cHV0XCI7XG5jb25zdCBVU0VSX09VVFBVVF9SRUYgPSBgIy8kZGVmcy8ke1VTRVJfT1VUUFVUX0RFRklOSVRJT059YDtcblxuZXhwb3J0IGNsYXNzIFRvb2xTY2hlbWFDb21wb3NpdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHBhdGg6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoYHRvb2wgc2NoZW1hIGNvbXBvc2l0aW9uOiAke21lc3NhZ2V9IChhdCAke3BhdGh9KWApO1xuICAgIHRoaXMubmFtZSA9IFwiVG9vbFNjaGVtYUNvbXBvc2l0aW9uRXJyb3JcIjtcbiAgfVxufVxuXG4vLyBlbnZlbG9wZSDripQgcmVzdWx0IO2VnCDqsrkg7JWE656Y7JeQIGRpc2NyaW1pbmF0ZWQgdW5pb24g7J2EIOuRlOuLpC4g65GQIOuzgO2YleydhCDrrLjrspUg7IiY7KSA7JeQ7IScXG4vLyDsg4HtmLjrsLDtg4DroZwg66eM65Ok7Ja0KGFuc3dlciDrs4DtmJXsnYAgYW5zd2VyIOu5hG51bGwg7ZWE7IiYLCB0b29sX2NhbGwg67OA7ZiV7J2AIHRvb2xDYWxscyAx6rCcIOydtOyDgSlcbi8vIGBhY3Rpb246XCJhbnN3ZXJcIiwgYW5zd2VyOm51bGxgIOqwmeydgCDth7TtmZQg7KGw7ZWp7J2EIOybkOyynCDssKjri6jtlZzri6Qg4oCUIO2Pie2Pie2VnCDsiqTtgqTrp4gg7Iuc7KCIXG4vLyDsnbQg7KGw7ZWp7J20IGNvbnN0cmFpbmVkIGRlY29kaW5nIOydhCDthrXqs7ztlbQgMTMuNWsg6rG07J2YIOyYpOyXvCDsnZHri7XsnYQg66eM65OgIOyLpOyCrOqzoOqwgCDqt7zqsbAuXG4vLyB1bmlvbiDsnYQgcmVzdWx0IHByb3BlcnR5IOyViOyXkCDspJHssqntlZjripQg7J207JygOiBPcGVuQUkgc3RydWN0dXJlZCBvdXRwdXRzIOuKlCDro6jtirjqsIBcbi8vIG9iamVjdCDsl6zslbwg7ZWY6rOgIHRvcC1sZXZlbCBhbnlPZiDrpbwg6rGw67aA7ZWc64ukLiDspJHssqkgYW55T2Yg7JmAIG1pbkl0ZW1zIOuKlCDsp4Dsm5DrkJzri6QuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRUb29sQ2FsbFNjaGVtYSh0b29sczogUWdyaWRUb29sW10sIGFuc3dlclNjaGVtYT86IEpzb25WYWx1ZSk6IEpzb25WYWx1ZSB7XG4gIGNvbnN0IHRvb2xEZXNjcmlwdGlvbnMgPSB0b29sc1xuICAgIC5tYXAoKHRvb2wpID0+IHtcbiAgICAgIGNvbnN0IHNjaGVtYSA9IEpTT04uc3RyaW5naWZ5KHRvb2wuaW5wdXRTY2hlbWEpO1xuICAgICAgcmV0dXJuIGAtICR7dG9vbC5uYW1lfTogJHt0b29sLmRlc2NyaXB0aW9uID8/IFwiXCJ9XFxuICBpbnB1dFNjaGVtYTogJHtzY2hlbWF9YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZWRBbnN3ZXJTY2hlbWEgPVxuICAgIGFuc3dlclNjaGVtYSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcmViYXNlVXNlck91dHB1dFNjaGVtYShhbnN3ZXJTY2hlbWEpO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJvYmplY3RcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVXNlIHRoaXMgc2NoZW1hIG9ubHkgdGhyb3VnaCBTdHJ1Y3R1cmVkT3V0cHV0LiBEbyBub3QgaW52b2tlIGxpc3RlZCBjbGllbnQgdG9vbHMgYXMgbmF0aXZlIENsYXVkZSBDb2RlIHRvb2xzLiBUbyByZXF1ZXN0IGNsaWVudC1zaWRlIHRvb2wgZXhlY3V0aW9uLCBzZXQgcmVzdWx0LmFjdGlvbiB0byB0b29sX2NhbGwgYW5kIGluY2x1ZGUgcmVzdWx0LnRvb2xDYWxscy4gVXNlIGFjdGlvbiBhbnN3ZXIgb25seSB3aGVuIG5vIGZ1cnRoZXIgY2xpZW50IHRvb2wgcmVzdWx0IGlzIG5lZWRlZC5cIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICByZXN1bHQ6IHtcbiAgICAgICAgYW55T2Y6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRmluYWwgYW5zd2VyLiBVc2Ugb25seSB3aGVuIG5vIGZ1cnRoZXIgY2xpZW50IHRvb2wgcmVzdWx0IGlzIG5lZWRlZC5cIixcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgYWN0aW9uOiB7IHR5cGU6IFwic3RyaW5nXCIsIGVudW06IFtcImFuc3dlclwiXSB9LFxuICAgICAgICAgICAgICBhbnN3ZXI6XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZEFuc3dlclNjaGVtYSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICA/IHsgdHlwZTogXCJzdHJpbmdcIiB9XG4gICAgICAgICAgICAgICAgICA6IHsgJHJlZjogVVNFUl9PVVRQVVRfUkVGIH0sXG4gICAgICAgICAgICAgIHRvb2xDYWxsczogeyB0eXBlOiBcIm51bGxcIiB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBbXCJhY3Rpb25cIiwgXCJhbnN3ZXJcIiwgXCJ0b29sQ2FsbHNcIl0sXG4gICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiUmVxdWVzdCBjbGllbnQtc2lkZSB0b29sIGV4ZWN1dGlvbiB0aHJvdWdoIHRoaXMgc3RydWN0dXJlZCBvdXRwdXQuIERvIG5vdCBjYWxsIHRoZXNlIHRvb2xzIGFzIG5hdGl2ZSBDbGF1ZGUgQ29kZSB0b29scy5cIixcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgYWN0aW9uOiB7IHR5cGU6IFwic3RyaW5nXCIsIGVudW06IFtcInRvb2xfY2FsbFwiXSB9LFxuICAgICAgICAgICAgICBhbnN3ZXI6IHsgdHlwZTogXCJudWxsXCIgfSxcbiAgICAgICAgICAgICAgdG9vbENhbGxzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICB0b29sTmFtZToge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgZW51bTogdG9vbHMubWFwKCh0b29sKSA9PiB0b29sLm5hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQ2xpZW50LXNpZGUgdG9vbCBuYW1lIHRvIHJlcXVlc3QgdGhyb3VnaCBzdHJ1Y3R1cmVkIG91dHB1dC4gRG8gbm90IGNhbGwgdGhpcyBhcyBhIG5hdGl2ZSBDbGF1ZGUgQ29kZSB0b29sLlxcbiR7dG9vbERlc2NyaXB0aW9uc31gLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUb29sIGFyZ3VtZW50cyBhcyBhIEpTT04gc3RyaW5nIGZvciB0aGUgY2xpZW50LXNpZGUgdG9vbC5cIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZDogW1widG9vbE5hbWVcIiwgXCJhcmdzXCJdLFxuICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IFtcImFjdGlvblwiLCBcImFuc3dlclwiLCBcInRvb2xDYWxsc1wiXSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHJlcXVpcmVkOiBbXCJyZXN1bHRcIl0sXG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgIC4uLihub3JtYWxpemVkQW5zd2VyU2NoZW1hID09PSB1bmRlZmluZWRcbiAgICAgID8ge31cbiAgICAgIDoge1xuICAgICAgICAgICRkZWZzOiB7XG4gICAgICAgICAgICBbVVNFUl9PVVRQVVRfREVGSU5JVElPTl06IG5vcm1hbGl6ZWRBbnN3ZXJTY2hlbWEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlYmFzZVVzZXJPdXRwdXRTY2hlbWEoc2NoZW1hOiBKc29uVmFsdWUpOiBKc29uVmFsdWUge1xuICByZXR1cm4gcmV3cml0ZVNjaGVtYU5vZGUoc2NoZW1hLCBcIiRcIik7XG59XG5cbmNvbnN0IE1BUF9LRVlXT1JEUyA9IG5ldyBTZXQ8c3RyaW5nPihTQ0hFTUFfTUFQX0tFWVdPUkRTKTtcbmNvbnN0IEFSUkFZX0tFWVdPUkRTID0gbmV3IFNldDxzdHJpbmc+KFNDSEVNQV9BUlJBWV9LRVlXT1JEUyk7XG5jb25zdCBTSU5HTEVfS0VZV09SRFMgPSBuZXcgU2V0PHN0cmluZz4oU0NIRU1BX1NJTkdMRV9LRVlXT1JEUyk7XG5cbmZ1bmN0aW9uIHJld3JpdGVTY2hlbWFOb2RlKHZhbHVlOiBKc29uVmFsdWUsIHBhdGg6IHN0cmluZyk6IEpzb25WYWx1ZSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcblxuICBjb25zdCBzb3VyY2UgPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCBKc29uVmFsdWU+O1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIEpzb25WYWx1ZT4gPSB7IC4uLnNvdXJjZSB9O1xuXG4gIGZvciAoY29uc3QgdW5zdXBwb3J0ZWRLZXl3b3JkIG9mIFVOU1VQUE9SVEVEX1JFRkVSRU5DRV9LRVlXT1JEUykge1xuICAgIGlmIChPYmplY3QuaGFzT3duKHNvdXJjZSwgdW5zdXBwb3J0ZWRLZXl3b3JkKSkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xTY2hlbWFDb21wb3NpdGlvbkVycm9yKFxuICAgICAgICBgJHt1bnN1cHBvcnRlZEtleXdvcmR9IGlzIG5vdCBzdXBwb3J0ZWRgLFxuICAgICAgICBgJHtwYXRofS4ke3Vuc3VwcG9ydGVkS2V5d29yZH1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoXCIkcmVmXCIgaW4gc291cmNlKSB7XG4gICAgY29uc3QgcmVmID0gc291cmNlLiRyZWY7XG4gICAgaWYgKHR5cGVvZiByZWYgIT09IFwic3RyaW5nXCIgfHwgKHJlZiAhPT0gXCIjXCIgJiYgIXJlZi5zdGFydHNXaXRoKFwiIy9cIikpKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbFNjaGVtYUNvbXBvc2l0aW9uRXJyb3IoXG4gICAgICAgIFwib25seSByb290LXJlbGF0aXZlIEpTT04gUG9pbnRlciAkcmVmIHZhbHVlcyBhcmUgc3VwcG9ydGVkXCIsXG4gICAgICAgIGAke3BhdGh9LiRyZWZgLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmVzdWx0LiRyZWYgPSBgJHtVU0VSX09VVFBVVF9SRUZ9JHtyZWYuc2xpY2UoMSl9YDtcbiAgfVxuXG4gIGZvciAoY29uc3QgW2tleXdvcmQsIGNoaWxkXSBvZiBPYmplY3QuZW50cmllcyhzb3VyY2UpKSB7XG4gICAgY29uc3Qga2V5d29yZFBhdGggPSBgJHtwYXRofS4ke2tleXdvcmR9YDtcblxuICAgIGlmIChNQVBfS0VZV09SRFMuaGFzKGtleXdvcmQpICYmIGlzSnNvbk9iamVjdChjaGlsZCkpIHtcbiAgICAgIHJlc3VsdFtrZXl3b3JkXSA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hpbGQpLm1hcCgoW25hbWUsIHNjaGVtYV0pID0+IFtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHJld3JpdGVTY2hlbWFOb2RlKHNjaGVtYSwgYCR7a2V5d29yZFBhdGh9LiR7bmFtZX1gKSxcbiAgICAgICAgXSksXG4gICAgICApIGFzIEpzb25WYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGtleXdvcmQgPT09IFNDSEVNQV9ERVBFTkRFTkNJRVNfS0VZV09SRCAmJiBpc0pzb25PYmplY3QoY2hpbGQpKSB7XG4gICAgICByZXN1bHRba2V5d29yZF0gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNoaWxkKS5tYXAoKFtuYW1lLCBkZXBlbmRlbmN5XSkgPT4gW1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgQXJyYXkuaXNBcnJheShkZXBlbmRlbmN5KVxuICAgICAgICAgICAgPyBkZXBlbmRlbmN5XG4gICAgICAgICAgICA6IHJld3JpdGVTY2hlbWFOb2RlKGRlcGVuZGVuY3ksIGAke2tleXdvcmRQYXRofS4ke25hbWV9YCksXG4gICAgICAgIF0pLFxuICAgICAgKSBhcyBKc29uVmFsdWU7XG4gICAgfSBlbHNlIGlmIChBUlJBWV9LRVlXT1JEUy5oYXMoa2V5d29yZCkgJiYgQXJyYXkuaXNBcnJheShjaGlsZCkpIHtcbiAgICAgIHJlc3VsdFtrZXl3b3JkXSA9IGNoaWxkLm1hcCgoc2NoZW1hLCBpbmRleCkgPT5cbiAgICAgICAgcmV3cml0ZVNjaGVtYU5vZGUoc2NoZW1hLCBgJHtrZXl3b3JkUGF0aH1bJHtpbmRleH1dYCksXG4gICAgICApIGFzIEpzb25WYWx1ZTtcbiAgICB9IGVsc2UgaWYgKFNJTkdMRV9LRVlXT1JEUy5oYXMoa2V5d29yZCkpIHtcbiAgICAgIGlmIChrZXl3b3JkID09PSBcIml0ZW1zXCIgJiYgQXJyYXkuaXNBcnJheShjaGlsZCkpIHtcbiAgICAgICAgcmVzdWx0W2tleXdvcmRdID0gY2hpbGQubWFwKChzY2hlbWEsIGluZGV4KSA9PlxuICAgICAgICAgIHJld3JpdGVTY2hlbWFOb2RlKHNjaGVtYSwgYCR7a2V5d29yZFBhdGh9WyR7aW5kZXh9XWApLFxuICAgICAgICApIGFzIEpzb25WYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtrZXl3b3JkXSA9IHJld3JpdGVTY2hlbWFOb2RlKGNoaWxkLCBrZXl3b3JkUGF0aCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCBhcyBKc29uVmFsdWU7XG59XG5cbmZ1bmN0aW9uIGlzSnNvbk9iamVjdCh2YWx1ZTogSnNvblZhbHVlKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgSnNvblZhbHVlPiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQXVCQSxNQUFNLHlCQUF5QjtBQUMvQixNQUFNLGtCQUFrQixXQUFXO0FBRW5DLElBQWEsNkJBQWIsY0FBZ0QsTUFBTTtDQUczQztDQUZULFlBQ0UsU0FDQSxNQUNBO0VBQ0EsTUFBTSw0QkFBNEIsUUFBUSxPQUFPLEtBQUssRUFBRTtFQUZqRCxLQUFBLE9BQUE7RUFHUCxLQUFLLE9BQU87Q0FDZDtBQUNGO0FBUUEsU0FBZ0Isb0JBQW9CLE9BQW9CLGNBQXFDO0NBQzNGLE1BQU0sbUJBQW1CLE1BQ3RCLEtBQUssU0FBUztFQUNiLE1BQU0sU0FBUyxLQUFLLFVBQVUsS0FBSyxXQUFXO0VBQzlDLE9BQU8sS0FBSyxLQUFLLEtBQUssSUFBSSxLQUFLLGVBQWUsR0FBRyxtQkFBbUI7Q0FDdEUsQ0FBQyxDQUFDLENBQ0QsS0FBSyxJQUFJO0NBRVosTUFBTSx5QkFDSixpQkFBaUIsU0FBWSxTQUFZLHVCQUF1QixZQUFZO0NBRTlFLE9BQU87RUFDTCxNQUFNO0VBQ04sYUFDRTtFQUNGLFlBQVksRUFDVixRQUFRLEVBQ04sT0FBTyxDQUNMO0dBQ0UsTUFBTTtHQUNOLGFBQWE7R0FDYixZQUFZO0lBQ1YsUUFBUTtLQUFFLE1BQU07S0FBVSxNQUFNLENBQUMsUUFBUTtJQUFFO0lBQzNDLFFBQ0UsMkJBQTJCLFNBQ3ZCLEVBQUUsTUFBTSxTQUFTLElBQ2pCLEVBQUUsTUFBTSxnQkFBZ0I7SUFDOUIsV0FBVyxFQUFFLE1BQU0sT0FBTztHQUM1QjtHQUNBLFVBQVU7SUFBQztJQUFVO0lBQVU7R0FBVztHQUMxQyxzQkFBc0I7RUFDeEIsR0FDQTtHQUNFLE1BQU07R0FDTixhQUNFO0dBQ0YsWUFBWTtJQUNWLFFBQVE7S0FBRSxNQUFNO0tBQVUsTUFBTSxDQUFDLFdBQVc7SUFBRTtJQUM5QyxRQUFRLEVBQUUs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
|
|
@@ -8,68 +8,55 @@ const STRUCTURED_ENVELOPE_LIMITS = {
|
|
|
8
8
|
maxDepth: 132
|
|
9
9
|
};
|
|
10
10
|
const logger = getLogger(["qgrid", "tool-emulation"]);
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
})
|
|
11
|
+
function buildEnvelopeSchema(answerKind) {
|
|
12
|
+
return z.strictObject({ result: z.discriminatedUnion("action", [z.strictObject({
|
|
13
|
+
action: z.literal("answer"),
|
|
14
|
+
answer: answerKind === "text" ? z.string() : z.json().refine((answer) => answer !== null, { message: "answer must be non-null" }),
|
|
15
|
+
toolCalls: z.null()
|
|
16
|
+
}), z.strictObject({
|
|
17
|
+
action: z.literal("tool_call"),
|
|
18
|
+
answer: z.null(),
|
|
19
|
+
toolCalls: z.array(z.strictObject({
|
|
20
|
+
toolName: z.string(),
|
|
21
|
+
args: z.string()
|
|
22
|
+
})).min(1)
|
|
23
|
+
})]) });
|
|
24
|
+
}
|
|
25
|
+
const TEXT_ENVELOPE = buildEnvelopeSchema("text");
|
|
26
|
+
const JSON_ENVELOPE = buildEnvelopeSchema("json");
|
|
23
27
|
var ToolCallEmulationError = class extends Error {
|
|
24
28
|
constructor(message) {
|
|
25
29
|
super(`tool-call emulation: ${message}`);
|
|
26
30
|
this.name = "ToolCallEmulationError";
|
|
27
31
|
}
|
|
28
32
|
};
|
|
29
|
-
function applyToolCallEmulation(result, tools, options
|
|
30
|
-
const { threadCoord, images,
|
|
33
|
+
function applyToolCallEmulation(result, tools, options) {
|
|
34
|
+
const { threadCoord, images, answerKind } = options;
|
|
31
35
|
const runContext = threadCoord ? { threadCoord } : void 0;
|
|
32
36
|
if (!tools?.length) return answerOutput(result, result.text, images, runContext);
|
|
33
|
-
|
|
34
|
-
const parsed = parseStructuredResponse(result.text, tools);
|
|
37
|
+
const parsed = parseEnvelope(result.text, tools, answerKind);
|
|
35
38
|
if (parsed.action === "tool_call") return toolCallOutput(result, parsed.toolCalls, images, runContext);
|
|
36
|
-
return answerOutput(result, JSON.stringify(parsed.answer), images, runContext);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Tools-only requests keep the permissive 2.5.3 contract. Structured-output requests use the
|
|
40
|
-
* strict decoder below because their outer action envelope is an internal server contract.
|
|
41
|
-
*/
|
|
42
|
-
function applyLegacyResponse(result, tools, images, runContext) {
|
|
43
|
-
let parsed;
|
|
44
|
-
try {
|
|
45
|
-
parsed = JSON.parse(result.text);
|
|
46
|
-
} catch (error) {
|
|
47
|
-
logger.warn(`tool-call emulation parse failed, falling back to text: ${error.message}`);
|
|
48
|
-
return answerOutput(result, result.text, images, runContext);
|
|
49
|
-
}
|
|
50
|
-
if (parsed.action === "tool_call") {
|
|
51
|
-
const toolCalls = parsed.toolCalls ?? [];
|
|
52
|
-
const unknownTool = findUnknownTool(toolCalls, tools);
|
|
53
|
-
if (unknownTool !== void 0) throw new Error(`unknown emulated tool: ${unknownTool}`);
|
|
54
|
-
return toolCallOutput(result, toolCalls, images, runContext);
|
|
55
|
-
}
|
|
56
|
-
return answerOutput(result, parsed.answer ?? result.text, images, runContext);
|
|
39
|
+
return answerOutput(result, answerKind === "text" ? parsed.answer : JSON.stringify(parsed.answer), images, runContext);
|
|
57
40
|
}
|
|
58
|
-
function
|
|
59
|
-
if (Buffer.byteLength(text, "utf8") > STRUCTURED_ENVELOPE_LIMITS.maxUtf8Bytes) throw new ToolCallEmulationError(`
|
|
41
|
+
function parseEnvelope(text, tools, answerKind) {
|
|
42
|
+
if (Buffer.byteLength(text, "utf8") > STRUCTURED_ENVELOPE_LIMITS.maxUtf8Bytes) throw new ToolCallEmulationError(`tool envelope exceeds UTF-8 byte limit of ${STRUCTURED_ENVELOPE_LIMITS.maxUtf8Bytes}`);
|
|
60
43
|
let value;
|
|
61
44
|
try {
|
|
62
45
|
value = JSON.parse(text);
|
|
63
46
|
} catch (error) {
|
|
64
|
-
|
|
47
|
+
logger.warn(`tool envelope parse failed: ${error.message}`);
|
|
48
|
+
throw new ToolCallEmulationError(`invalid tool envelope: ${error.message}`);
|
|
65
49
|
}
|
|
66
50
|
assertStructuredEnvelopeComplexity(value);
|
|
67
|
-
const validation =
|
|
51
|
+
const validation = (answerKind === "text" ? TEXT_ENVELOPE : JSON_ENVELOPE).safeParse(value);
|
|
68
52
|
if (!validation.success) {
|
|
69
53
|
const issue = validation.error.issues[0];
|
|
70
|
-
|
|
54
|
+
const path = issue && issue.path.length > 0 ? ` at ${issue.path.join(".")}` : "";
|
|
55
|
+
const detail = issue?.message ?? "unknown validation issue";
|
|
56
|
+
logger.warn(`tool envelope validation failed${path}: ${detail}`);
|
|
57
|
+
throw new ToolCallEmulationError(`invalid tool envelope${path}: ${detail}`);
|
|
71
58
|
}
|
|
72
|
-
const response = value;
|
|
59
|
+
const response = value.result;
|
|
73
60
|
if (response.action === "tool_call") {
|
|
74
61
|
const unknownTool = findUnknownTool(response.toolCalls, tools);
|
|
75
62
|
if (unknownTool !== void 0) throw new ToolCallEmulationError(`unknown emulated tool: ${unknownTool}`);
|
|
@@ -136,4 +123,4 @@ function assertStructuredEnvelopeComplexity(root) {
|
|
|
136
123
|
//#endregion
|
|
137
124
|
export { ToolCallEmulationError, applyToolCallEmulation };
|
|
138
125
|
|
|
139
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1lbXVsYXRpb24uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3Rvb2wtZW11bGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCJub2RlOmJ1ZmZlclwiO1xuXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuLy8g7J2R64u1KOuqqOuNuCDstpzroKUpIGVudmVsb3BlIOydmCDsnpDsm5Ag7ZWc64+ELiBjYWxsZXIg7Iqk7YKk66eIIOyghOyymOumrCDtlZzrj4QoQ0FMTEVSX1NDSEVNQV9MSU1JVFMp7JmAIOqwkuydtFxuLy8g6rCZ7JWEIOuztOyXrOuPhCDshJzroZwg64uk66W4IOyekOybkOydhCDsp4DtgqTripQg64+F66a9IOyDgeyImOuLpCDigJQg7Iqk7YKk66eIIOq5iuydtOuKlCDsnbjsiqTthLTsiqQg6rmK7J2066W8IGJvdW5kIO2VmOyngFxuLy8g7JWK7Jy866+A66GcKOyerOq3gCAkcmVmIO2XiOyaqSkg7LqY65+sIO2VnOuPhOulvCDsobDsoJXtlbTrj4Qg7J2R64u1IOyImOyaqSDquLDspIDsnbQg65Sw6528IOybgOyngeyXrOyEoCDslYgg65Cc64ukLlxuY29uc3QgU1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMgPSB7XG4gIG1heFV0ZjhCeXRlczogNTEyICogMTAyNCxcbiAgbWF4Tm9kZXM6IDIwXzAwMCxcbiAgbWF4RGVwdGg6IDEzMixcbn0gYXMgY29uc3Q7XG5pbXBvcnQge1xuICB0eXBlIFFncmlkQ29udGVudCxcbiAgdHlwZSBRZ3JpZFRocmVhZENvb3JkLFxuICB0eXBlIFFncmlkVG9vbCxcbiAgdHlwZSBRdWVyeU91dHB1dCxcbn0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwidG9vbC1lbXVsYXRpb25cIl0pO1xuXG50eXBlIEVtdWxhdGlvblJlc3VsdCA9IE9taXQ8UXVlcnlPdXRwdXQsIFwiY29udGVudFwiIHwgXCJmaW5pc2hSZWFzb25cIiB8IFwicnVuQ29udGV4dFwiPjtcbnR5cGUgVG9vbENhbGwgPSB7IHRvb2xOYW1lOiBzdHJpbmc7IGFyZ3M6IHN0cmluZyB9O1xudHlwZSBMZWdhY3lUb29sQ2FsbFJlc3BvbnNlID0ge1xuICBhY3Rpb24/OiBcImFuc3dlclwiIHwgXCJ0b29sX2NhbGxcIjtcbiAgYW5zd2VyPzogc3RyaW5nIHwgbnVsbDtcbiAgdG9vbENhbGxzPzogVG9vbENhbGxbXSB8IG51bGw7XG59O1xuXG5jb25zdCBTdHJ1Y3R1cmVkVG9vbENhbGxSZXNwb25zZSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwiYWN0aW9uXCIsIFtcbiAgei5zdHJpY3RPYmplY3Qoe1xuICAgIGFjdGlvbjogei5saXRlcmFsKFwiYW5zd2VyXCIpLFxuICAgIGFuc3dlcjogei5qc29uKCkucmVmaW5lKChhbnN3ZXIpID0+IGFuc3dlciAhPT0gbnVsbCwge1xuICAgICAgbWVzc2FnZTogXCJhbnN3ZXIgbXVzdCBiZSBub24tbnVsbFwiLFxuICAgIH0pLFxuICAgIHRvb2xDYWxsczogei51bmlvbihbei5udWxsKCksIHoudHVwbGUoW10pXSksXG4gIH0pLFxuICB6LnN0cmljdE9iamVjdCh7XG4gICAgYWN0aW9uOiB6LmxpdGVyYWwoXCJ0b29sX2NhbGxcIiksXG4gICAgYW5zd2VyOiB6Lm51bGwoKSxcbiAgICB0b29sQ2FsbHM6IHpcbiAgICAgIC5hcnJheShcbiAgICAgICAgei5zdHJpY3RPYmplY3Qoe1xuICAgICAgICAgIHRvb2xOYW1lOiB6LnN0cmluZygpLFxuICAgICAgICAgIGFyZ3M6IHouc3RyaW5nKCksXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLm1pbigxKSxcbiAgfSksXG5dKTtcbnR5cGUgU3RydWN0dXJlZFJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgU3RydWN0dXJlZFRvb2xDYWxsUmVzcG9uc2U+O1xuXG5leHBvcnQgY2xhc3MgVG9vbENhbGxFbXVsYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYHRvb2wtY2FsbCBlbXVsYXRpb246ICR7bWVzc2FnZX1gKTtcbiAgICB0aGlzLm5hbWUgPSBcIlRvb2xDYWxsRW11bGF0aW9uRXJyb3JcIjtcbiAgfVxufVxuXG4vLyBkaXNwYXRjaGVyIOqwgCDrhJjquLDripQg7J2066+47KeAIOqysOqzvC4gcWdyaWQg64qUIGJhc2U2NCBwYXlsb2FkIOunjCDsoITri6ztlZjqs6Ag7Y+s66e37J2AIOuztOyepe2VmOyngCDslYrripTri6QuXG5pbnRlcmZhY2UgRW11bGF0aW9uSW1hZ2Uge1xuICBkYXRhOiBzdHJpbmc7XG4gIHJldmlzZWRQcm9tcHQ/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgVG9vbENhbGxFbXVsYXRpb25PcHRpb25zIHtcbiAgdGhyZWFkQ29vcmQ/OiBRZ3JpZFRocmVhZENvb3JkO1xuICBpbWFnZXM/OiBFbXVsYXRpb25JbWFnZVtdO1xuICBhbnN3ZXJNb2RlPzogXCJsZWdhY3lcIiB8IFwic3RydWN0dXJlZFwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlUb29sQ2FsbEVtdWxhdGlvbihcbiAgcmVzdWx0OiBFbXVsYXRpb25SZXN1bHQsXG4gIHRvb2xzPzogUWdyaWRUb29sW10sXG4gIG9wdGlvbnM6IFRvb2xDYWxsRW11bGF0aW9uT3B0aW9ucyA9IHt9LFxuKTogUXVlcnlPdXRwdXQge1xuICBjb25zdCB7IHRocmVhZENvb3JkLCBpbWFnZXMsIGFuc3dlck1vZGUgPSBcImxlZ2FjeVwiIH0gPSBvcHRpb25zO1xuICBjb25zdCBydW5Db250ZXh0ID0gdGhyZWFkQ29vcmQgPyB7IHRocmVhZENvb3JkIH0gOiB1bmRlZmluZWQ7XG5cbiAgaWYgKCF0b29scz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGFuc3dlck91dHB1dChyZXN1bHQsIHJlc3VsdC50ZXh0LCBpbWFnZXMsIHJ1bkNvbnRleHQpO1xuICB9XG5cbiAgaWYgKGFuc3dlck1vZGUgPT09IFwibGVnYWN5XCIpIHtcbiAgICByZXR1cm4gYXBwbHlMZWdhY3lSZXNwb25zZShyZXN1bHQsIHRvb2xzLCBpbWFnZXMsIHJ1bkNvbnRleHQpO1xuICB9XG5cbiAgY29uc3QgcGFyc2VkID0gcGFyc2VTdHJ1Y3R1cmVkUmVzcG9uc2UocmVzdWx0LnRleHQsIHRvb2xzKTtcbiAgaWYgKHBhcnNlZC5hY3Rpb24gPT09IFwidG9vbF9jYWxsXCIpIHtcbiAgICByZXR1cm4gdG9vbENhbGxPdXRwdXQocmVzdWx0LCBwYXJzZWQudG9vbENhbGxzLCBpbWFnZXMsIHJ1bkNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGFuc3dlck91dHB1dChyZXN1bHQsIEpTT04uc3RyaW5naWZ5KHBhcnNlZC5hbnN3ZXIpLCBpbWFnZXMsIHJ1bkNvbnRleHQpO1xufVxuXG4vKipcbiAqIFRvb2xzLW9ubHkgcmVxdWVzdHMga2VlcCB0aGUgcGVybWlzc2l2ZSAyLjUuMyBjb250cmFjdC4gU3RydWN0dXJlZC1vdXRwdXQgcmVxdWVzdHMgdXNlIHRoZVxuICogc3RyaWN0IGRlY29kZXIgYmVsb3cgYmVjYXVzZSB0aGVpciBvdXRlciBhY3Rpb24gZW52ZWxvcGUgaXMgYW4gaW50ZXJuYWwgc2VydmVyIGNvbnRyYWN0LlxuICovXG5mdW5jdGlvbiBhcHBseUxlZ2FjeVJlc3BvbnNlKFxuICByZXN1bHQ6IEVtdWxhdGlvblJlc3VsdCxcbiAgdG9vbHM6IFFncmlkVG9vbFtdLFxuICBpbWFnZXM6IEVtdWxhdGlvbkltYWdlW10gfCB1bmRlZmluZWQsXG4gIHJ1bkNvbnRleHQ6IFF1ZXJ5T3V0cHV0W1wicnVuQ29udGV4dFwiXSxcbik6IFF1ZXJ5T3V0cHV0IHtcbiAgbGV0IHBhcnNlZDogTGVnYWN5VG9vbENhbGxSZXNwb25zZTtcbiAgdHJ5IHtcbiAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHJlc3VsdC50ZXh0KSBhcyBMZWdhY3lUb29sQ2FsbFJlc3BvbnNlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci53YXJuKFxuICAgICAgYHRvb2wtY2FsbCBlbXVsYXRpb24gcGFyc2UgZmFpbGVkLCBmYWxsaW5nIGJhY2sgdG8gdGV4dDogJHsoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2V9YCxcbiAgICApO1xuICAgIHJldHVybiBhbnN3ZXJPdXRwdXQocmVzdWx0LCByZXN1bHQudGV4dCwgaW1hZ2VzLCBydW5Db250ZXh0KTtcbiAgfVxuXG4gIGlmIChwYXJzZWQuYWN0aW9uID09PSBcInRvb2xfY2FsbFwiKSB7XG4gICAgY29uc3QgdG9vbENhbGxzID0gcGFyc2VkLnRvb2xDYWxscyA/PyBbXTtcbiAgICBjb25zdCB1bmtub3duVG9vbCA9IGZpbmRVbmtub3duVG9vbCh0b29sQ2FsbHMsIHRvb2xzKTtcbiAgICBpZiAodW5rbm93blRvb2wgIT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIGVtdWxhdGVkIHRvb2w6ICR7dW5rbm93blRvb2x9YCk7XG4gICAgcmV0dXJuIHRvb2xDYWxsT3V0cHV0KHJlc3VsdCwgdG9vbENhbGxzLCBpbWFnZXMsIHJ1bkNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGFuc3dlck91dHB1dChyZXN1bHQsIHBhcnNlZC5hbnN3ZXIgPz8gcmVzdWx0LnRleHQsIGltYWdlcywgcnVuQ29udGV4dCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RydWN0dXJlZFJlc3BvbnNlKHRleHQ6IHN0cmluZywgdG9vbHM6IFFncmlkVG9vbFtdKSB7XG4gIGlmIChCdWZmZXIuYnl0ZUxlbmd0aCh0ZXh0LCBcInV0ZjhcIikgPiBTVFJVQ1RVUkVEX0VOVkVMT1BFX0xJTUlUUy5tYXhVdGY4Qnl0ZXMpIHtcbiAgICB0aHJvdyBuZXcgVG9vbENhbGxFbXVsYXRpb25FcnJvcihcbiAgICAgIGBzdHJ1Y3R1cmVkLW91dHB1dCBlbnZlbG9wZSBleGNlZWRzIFVURi04IGJ5dGUgbGltaXQgb2YgJHtTVFJVQ1RVUkVEX0VOVkVMT1BFX0xJTUlUUy5tYXhVdGY4Qnl0ZXN9YCxcbiAgICApO1xuICB9XG5cbiAgbGV0IHZhbHVlOiB1bmtub3duO1xuICB0cnkge1xuICAgIHZhbHVlID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgVG9vbENhbGxFbXVsYXRpb25FcnJvcihcbiAgICAgIGBpbnZhbGlkIHN0cnVjdHVyZWQtb3V0cHV0IGVudmVsb3BlOiAkeyhlcnJvciBhcyBFcnJvcikubWVzc2FnZX1gLFxuICAgICk7XG4gIH1cblxuICBhc3NlcnRTdHJ1Y3R1cmVkRW52ZWxvcGVDb21wbGV4aXR5KHZhbHVlKTtcbiAgY29uc3QgdmFsaWRhdGlvbiA9IFN0cnVjdHVyZWRUb29sQ2FsbFJlc3BvbnNlLnNhZmVQYXJzZSh2YWx1ZSk7XG4gIGlmICghdmFsaWRhdGlvbi5zdWNjZXNzKSB7XG4gICAgY29uc3QgaXNzdWUgPSB2YWxpZGF0aW9uLmVycm9yLmlzc3Vlc1swXTtcbiAgICBjb25zdCBwYXRoID0gaXNzdWUgJiYgaXNzdWUucGF0aC5sZW5ndGggPiAwID8gYCBhdCAke2lzc3VlLnBhdGguam9pbihcIi5cIil9YCA6IFwiXCI7XG4gICAgY29uc3QgZGV0YWlsID0gaXNzdWU/Lm1lc3NhZ2UgPz8gXCJ1bmtub3duIHZhbGlkYXRpb24gaXNzdWVcIjtcbiAgICB0aHJvdyBuZXcgVG9vbENhbGxFbXVsYXRpb25FcnJvcihgaW52YWxpZCBzdHJ1Y3R1cmVkLW91dHB1dCBlbnZlbG9wZSR7cGF0aH06ICR7ZGV0YWlsfWApO1xuICB9XG5cbiAgLy8gWm9kIGNsb25lcyBKU09OIG9iamVjdHMgYW5kIGRyb3BzIG93biBcIl9fcHJvdG9fX1wiIGtleXMuIFRoZSBwYXJzZWQgSlNPTiBpcyBzYWZlIHRvIHJldHVyblxuICAvLyBhZnRlciB2YWxpZGF0aW9uIGFuZCBwcmVzZXJ2ZXMgdGhlIGNhbGxlcidzIGV4YWN0IHN0cnVjdHVyZWQgdmFsdWUuXG4gIGNvbnN0IHJlc3BvbnNlID0gdmFsdWUgYXMgU3RydWN0dXJlZFJlc3BvbnNlO1xuICBpZiAocmVzcG9uc2UuYWN0aW9uID09PSBcInRvb2xfY2FsbFwiKSB7XG4gICAgY29uc3QgdW5rbm93blRvb2wgPSBmaW5kVW5rbm93blRvb2wocmVzcG9uc2UudG9vbENhbGxzLCB0b29scyk7XG4gICAgaWYgKHVua25vd25Ub29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKGB1bmtub3duIGVtdWxhdGVkIHRvb2w6ICR7dW5rbm93blRvb2x9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNwb25zZTtcbn1cblxuZnVuY3Rpb24gdG9vbENhbGxPdXRwdXQoXG4gIHJlc3VsdDogRW11bGF0aW9uUmVzdWx0LFxuICB0b29sQ2FsbHM6IFRvb2xDYWxsW10sXG4gIGltYWdlczogRW11bGF0aW9uSW1hZ2VbXSB8IHVuZGVmaW5lZCxcbiAgcnVuQ29udGV4dDogUXVlcnlPdXRwdXRbXCJydW5Db250ZXh0XCJdLFxuKTogUXVlcnlPdXRwdXQge1xuICByZXR1cm4ge1xuICAgIC4uLnJlc3VsdCxcbiAgICBjb250ZW50OiBhcHBlbmRJbWFnZXMoXG4gICAgICB0b29sQ2FsbHMubWFwKCh0b29sQ2FsbCkgPT4gKHtcbiAgICAgICAgdHlwZTogXCJ0b29sLWNhbGxcIixcbiAgICAgICAgdG9vbENhbGxJZDogYGNhbGxfJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCAxMCl9YCxcbiAgICAgICAgdG9vbE5hbWU6IHRvb2xDYWxsLnRvb2xOYW1lLFxuICAgICAgICBpbnB1dDogdG9vbENhbGwuYXJncyxcbiAgICAgIH0pKSxcbiAgICAgIGltYWdlcyxcbiAgICApLFxuICAgIGZpbmlzaFJlYXNvbjogXCJ0b29sLWNhbGxzXCIsXG4gICAgcnVuQ29udGV4dCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYW5zd2VyT3V0cHV0KFxuICByZXN1bHQ6IEVtdWxhdGlvblJlc3VsdCxcbiAgdGV4dDogc3RyaW5nLFxuICBpbWFnZXM6IEVtdWxhdGlvbkltYWdlW10gfCB1bmRlZmluZWQsXG4gIHJ1bkNvbnRleHQ6IFF1ZXJ5T3V0cHV0W1wicnVuQ29udGV4dFwiXSxcbik6IFF1ZXJ5T3V0cHV0IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5yZXN1bHQsXG4gICAgdGV4dCxcbiAgICBjb250ZW50OiBhcHBlbmRJbWFnZXMoW3sgdHlwZTogXCJ0ZXh0XCIsIHRleHQgfV0sIGltYWdlcyksXG4gICAgZmluaXNoUmVhc29uOiBcInN0b3BcIixcbiAgICBydW5Db250ZXh0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBmaW5kVW5rbm93blRvb2wodG9vbENhbGxzOiBUb29sQ2FsbFtdLCB0b29sczogUWdyaWRUb29sW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBrbm93blRvb2xOYW1lcyA9IG5ldyBTZXQodG9vbHMubWFwKCh0b29sKSA9PiB0b29sLm5hbWUpKTtcbiAgcmV0dXJuIHRvb2xDYWxscy5maW5kKCh0b29sQ2FsbCkgPT4gIWtub3duVG9vbE5hbWVzLmhhcyh0b29sQ2FsbC50b29sTmFtZSkpPy50b29sTmFtZTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kSW1hZ2VzKGNvbnRlbnQ6IFFncmlkQ29udGVudFtdLCBpbWFnZXM/OiBFbXVsYXRpb25JbWFnZVtdKTogUWdyaWRDb250ZW50W10ge1xuICBpZiAoIWltYWdlcz8ubGVuZ3RoKSByZXR1cm4gY29udGVudDtcbiAgcmV0dXJuIFtcbiAgICAuLi5jb250ZW50LFxuICAgIC4uLmltYWdlcy5tYXAoXG4gICAgICAoaW1hZ2UpOiBRZ3JpZENvbnRlbnQgPT4gKHtcbiAgICAgICAgdHlwZTogXCJpbWFnZVwiLFxuICAgICAgICBkYXRhOiBpbWFnZS5kYXRhLFxuICAgICAgICByZXZpc2VkUHJvbXB0OiBpbWFnZS5yZXZpc2VkUHJvbXB0ID8/IG51bGwsXG4gICAgICB9KSxcbiAgICApLFxuICBdO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRTdHJ1Y3R1cmVkRW52ZWxvcGVDb21wbGV4aXR5KHJvb3Q6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3QgbWF4RGVwdGggPSBTVFJVQ1RVUkVEX0VOVkVMT1BFX0xJTUlUUy5tYXhEZXB0aDtcbiAgY29uc3Qgc3RhY2sgPSBbeyB2YWx1ZTogcm9vdCwgZGVwdGg6IDAgfV07XG4gIGxldCBub2RlcyA9IDA7XG5cbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBjdXJyZW50ID0gc3RhY2sucG9wKCkhO1xuICAgIG5vZGVzICs9IDE7XG4gICAgaWYgKG5vZGVzID4gU1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMubWF4Tm9kZXMpIHtcbiAgICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKFxuICAgICAgICBgc3RydWN0dXJlZC1vdXRwdXQgZW52ZWxvcGUgZXhjZWVkcyBub2RlIGxpbWl0IG9mICR7U1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMubWF4Tm9kZXN9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChjdXJyZW50LmRlcHRoID4gbWF4RGVwdGgpIHtcbiAgICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKFxuICAgICAgICBgc3RydWN0dXJlZC1vdXRwdXQgZW52ZWxvcGUgZXhjZWVkcyBkZXB0aCBsaW1pdCBvZiAke21heERlcHRofWAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGN1cnJlbnQudmFsdWUgPT09IFwibnVtYmVyXCIgJiYgIU51bWJlci5pc0Zpbml0ZShjdXJyZW50LnZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xDYWxsRW11bGF0aW9uRXJyb3IoXCJhbnN3ZXIgbXVzdCBiZSB2YWxpZCBKU09OXCIpO1xuICAgIH1cbiAgICBpZiAoY3VycmVudC52YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgY3VycmVudC52YWx1ZSAhPT0gXCJvYmplY3RcIikgY29udGludWU7XG5cbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIE9iamVjdC52YWx1ZXMoY3VycmVudC52YWx1ZSkpIHtcbiAgICAgIHN0YWNrLnB1c2goeyB2YWx1ZSwgZGVwdGg6IGN1cnJlbnQuZGVwdGggKyAxIH0pO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBUUEsTUFBTSw2QkFBNkI7Q0FDakMsY0FBYyxNQUFNO0NBQ3BCLFVBQVU7Q0FDVixVQUFVO0FBQ1o7QUFRQSxNQUFNLFNBQVMsVUFBVSxDQUFDLFNBQVMsZ0JBQWdCLENBQUM7QUFVcEQsTUFBTSw2QkFBNkIsRUFBRSxtQkFBbUIsVUFBVSxDQUNoRSxFQUFFLGFBQWE7Q0FDYixRQUFRLEVBQUUsUUFBUSxRQUFRO0NBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLFdBQVcsV0FBVyxNQUFNLEVBQ25ELFNBQVMsMEJBQ1gsQ0FBQztDQUNELFdBQVcsRUFBRSxNQUFNLENBQUMsRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxHQUNELEVBQUUsYUFBYTtDQUNiLFFBQVEsRUFBRSxRQUFRLFdBQVc7Q0FDN0IsUUFBUSxFQUFFLEtBQUs7Q0FDZixXQUFXLEVBQ1IsTUFDQyxFQUFFLGFBQWE7RUFDYixVQUFVLEVBQUUsT0FBTztFQUNuQixNQUFNLEVBQUUsT0FBTztDQUNqQixDQUFDLENBQ0gsQ0FBQyxDQUNBLElBQUksQ0FBQztBQUNWLENBQUMsQ0FDSCxDQUFDO0FBR0QsSUFBYSx5QkFBYixjQUE0QyxNQUFNO0NBQ2hELFlBQVksU0FBaUI7RUFDM0IsTUFBTSx3QkFBd0IsU0FBUztFQUN2QyxLQUFLLE9BQU87Q0FDZDtBQUNGO0FBY0EsU0FBZ0IsdUJBQ2QsUUFDQSxPQUNBLFVBQW9DLENBQUMsR0FDeEI7Q0FDYixNQUFNLEVBQUUsYUFBYSxRQUFRLGFBQWEsYUFBYTtDQUN2RCxNQUFNLGFBQWEsY0FBYyxFQUFFLFlBQVksSUFBSTtDQUVuRCxJQUFJLENBQUMsT0FBTyxRQUNWLE9BQU8sYUFBYSxRQUFRLE9BQU8sTUFBTSxRQUFRLFVBQVU7Q0FHN0QsSUFBSSxlQUFlLFVBQ2pCLE9BQU8sb0JBQW9CLFFBQVEsT0FBTyxRQUFRLFVBQVU7Q0FHOUQsTUFBTSxTQUFTLHdCQUF3QixPQUFPLE1BQU0sS0FBSztDQUN6RCxJQUFJLE9BQU8sV0FBVyxhQUNwQixPQUFPLGVBQWUsUUFBUSxPQUFPLFdBQVcsUUFBUSxVQUFVO0NBR3BFLE9BQU8sYUFBYSxRQUFRLEtBQUssVUFBVSxPQUFPLE1BQU0sR0FBRyxRQUFRLFVBQVU7QUFDL0U7Ozs7O0FBTUEsU0FBUyxvQkFDUCxRQUNBLE9BQ0EsUUFDQSxZQUNhO0NBQ2IsSUFBSTtDQUNKLElBQUk7RUFDRixTQUFTLEtBQUssTUFBTSxPQUFPLElBQUk7Q0FDakMsU0FBUyxPQUFPO0VBQ2QsT0FBTyxLQUNMLDJEQUE0RCxNQUFnQixTQUM5RTtFQUNBLE9BQU8sYUFBYSxRQUFRLE9BQU8sTUFBTSxRQUFRLFVBQVU7Q0FDN0Q7Q0FFQSxJQUFJLE9BQU8sV0FBVyxhQUFhO0VBQ2pDLE1BQU0sWUFBWSxPQUFPLGFBQWEsQ0FBQztFQUN2QyxNQUFNLGNBQWMsZ0JBQWdCLFdBQVcsS0FBSztFQUNwRCxJQUFJLGdCQUFnQixRQUFXLE1BQU0sSUFBSSxNQUFNLDBCQUEwQixhQUFhO0VBQ3RGLE9BQU8sZUFBZSxRQUFRLFdBQVcsUUFBUSxVQUFVO0NBQzdEO0NBRUEsT0FBTyxhQUFhLFFBQVEsT0FBTyxVQUFVLE9BQU8sTUFBTSxRQUFRLFVBQVU7QUFDOUU7QUFFQSxTQUFTLHdCQUF3QixNQUFjLE9BQW9CO0NBQ2pFLElBQUksT0FBTyxXQUFXLE1BQU0sTUFBTSxJQUFJLDJCQUEyQixjQUMvRCxNQUFNLElBQUksdUJBQ1IsMERBQTBELDJCQUEyQixjQUN2RjtDQUdGLElBQUk7Q0FDSixJQUFJO0VBQ0YsUUFBUSxLQUFLLE1BQU0sSUFBSTtDQUN6QixTQUFTLE9BQU87RUFDZCxNQUFNLElBQUksdUJBQ1IsdUNBQXdDLE1BQWdCLFNBQzFEO0NBQ0Y7Q0FFQSxtQ0FBbUMsS0FBSztDQUN4QyxNQUFNLGFBQWEsMkJBQTJCLFVBQVUsS0FBSztDQUM3RCxJQUFJLENBQUMsV0FBVyxTQUFTO0VBQ3ZCLE1BQU0sUUFBUSxXQUFXLE1BQU0sT0FBTztFQUd0QyxNQUFNLElBQUksdUJBQXVCLHFDQUZwQixTQUFTLE1BQU0sS0FBSyxTQUFTLElBQUksT0FBTyxNQUFNLEtBQUssS0FBSyxHQUFHLE1BQU0sR0FFSCxJQUQ1RCxPQUFPLFdBQVcsNEJBQ3NEO0NBQ3pGO0NBSUEsTUFBTSxXQUFXO0NBQ2pCLElBQUksU0FBUyxXQUFXLGFBQWE7RUFDbkMsTUFBTSxjQUFjLGdCQUFnQixTQUFTLFdBQVcsS0FBSztFQUM3RCxJQUFJLGdCQUFnQixRQUNsQixNQUFNLElBQUksdUJBQXVCLDBCQUEwQixhQUFhO0NBRTVFO0NBQ0EsT0FBTztBQUNUO0FBRUEsU0FBUyxlQUNQLFFBQ0EsV0FDQSxRQUNBLFlBQ2E7Q0FDYixPQUFPO0VBQ0wsR0FBRztFQUNILFNBQVMsYUFDUCxVQUFVLEtBQUssY0FBYztHQUMzQixNQUFNO0dBQ04sWUFBWSxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsRUFBRTtHQUMxRCxVQUFVLFNBQVM7R0FDbkIsT0FBTyxTQUFTO0VBQ2xCLEVBQUUsR0FDRixNQUNGO0VBQ0EsY0FBYztFQUNkO0NBQ0Y7QUFDRjtBQUVBLFNBQVMsYUFDUCxRQUNBLE1BQ0EsUUFDQSxZQUNhO0NBQ2IsT0FBTztFQUNMLEdBQUc7RUFDSDtFQUNBLFNBQVMsYUFBYSxDQUFDO0dBQUUsTUFBTTtHQUFRO0VBQUssQ0FBQyxHQUFHLE1BQU07RUFDdEQsY0FBYztFQUNkO0NBQ0Y7QUFDRjtBQUVBLFNBQVMsZ0JBQWdCLFdBQXVCLE9BQXdDO0NBQ3RGLE1BQU0saUJBQWlCLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUyxLQUFLLElBQUksQ0FBQztDQUM3RCxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUMsZUFBZSxJQUFJLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUMvRTtBQUVBLFNBQVMsYUFBYSxTQUF5QixRQUEyQztDQUN4RixJQUFJLENBQUMsUUFBUSxRQUFRLE9BQU87Q0FDNUIsT0FBTyxDQUNMLEdBQUcsU0FDSCxHQUFHLE9BQU8sS0FDUCxXQUF5QjtFQUN4QixNQUFNO0VBQ04sTUFBTSxNQUFNO0VBQ1osZUFBZSxNQUFNLGlCQUFpQjtDQUN4QyxFQUNGLENBQ0Y7QUFDRjtBQUVBLFNBQVMsbUNBQW1DLE1BQXFCO0NBQy9ELE1BQU0sV0FBVywyQkFBMkI7Q0FDNUMsTUFBTSxRQUFRLENBQUM7RUFBRSxPQUFPO0VBQU0sT0FBTztDQUFFLENBQUM7Q0FDeEMsSUFBSSxRQUFRO0NBRVosT0FBTyxNQUFNLFNBQVMsR0FBRztFQUN2QixNQUFNLFVBQVUsTUFBTSxJQUFJO0VBQzFCLFNBQVM7RUFDVCxJQUFJLFFBQVEsMkJBQTJCLFVBQ3JDLE1BQU0sSUFBSSx1QkFDUixvREFBb0QsMkJBQTJCLFVBQ2pGO0VBRUYsSUFBSSxRQUFRLFFBQVEsVUFDbEIsTUFBTSxJQUFJLHVCQUNSLHFEQUFxRCxVQUN2RDtFQUVGLElBQUksT0FBTyxRQUFRLFVBQVUsWUFBWSxDQUFDLE9BQU8sU0FBUyxRQUFRLEtBQUssR0FDckUsTUFBTSxJQUFJLHVCQUF1QiwyQkFBMkI7RUFFOUQsSUFBSSxRQUFRLFVBQVUsUUFBUSxPQUFPLFFBQVEsVUFBVSxVQUFVO0VBRWpFLEtBQUssTUFBTSxTQUFTLE9BQU8sT0FBTyxRQUFRLEtBQUssR0FDN0MsTUFBTSxLQUFLO0dBQUU7R0FBTyxPQUFPLFFBQVEsUUFBUTtFQUFFLENBQUM7Q0FFbEQ7QUFDRiJ9
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1lbXVsYXRpb24uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3Rvb2wtZW11bGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCJub2RlOmJ1ZmZlclwiO1xuXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuLy8g7J2R64u1KOuqqOuNuCDstpzroKUpIGVudmVsb3BlIOydmCDsnpDsm5Ag7ZWc64+ELiBjYWxsZXIg7Iqk7YKk66eIIOyghOyymOumrCDtlZzrj4QoQ0FMTEVSX1NDSEVNQV9MSU1JVFMp7JmAIOqwkuydtFxuLy8g6rCZ7JWEIOuztOyXrOuPhCDshJzroZwg64uk66W4IOyekOybkOydhCDsp4DtgqTripQg64+F66a9IOyDgeyImOuLpCDigJQg7Iqk7YKk66eIIOq5iuydtOuKlCDsnbjsiqTthLTsiqQg6rmK7J2066W8IGJvdW5kIO2VmOyngFxuLy8g7JWK7Jy866+A66GcKOyerOq3gCAkcmVmIO2XiOyaqSkg7LqY65+sIO2VnOuPhOulvCDsobDsoJXtlbTrj4Qg7J2R64u1IOyImOyaqSDquLDspIDsnbQg65Sw6528IOybgOyngeyXrOyEoCDslYgg65Cc64ukLlxuY29uc3QgU1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMgPSB7XG4gIG1heFV0ZjhCeXRlczogNTEyICogMTAyNCxcbiAgbWF4Tm9kZXM6IDIwXzAwMCxcbiAgbWF4RGVwdGg6IDEzMixcbn0gYXMgY29uc3Q7XG5pbXBvcnQge1xuICB0eXBlIFFncmlkQ29udGVudCxcbiAgdHlwZSBRZ3JpZFRocmVhZENvb3JkLFxuICB0eXBlIFFncmlkVG9vbCxcbiAgdHlwZSBRdWVyeU91dHB1dCxcbn0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwidG9vbC1lbXVsYXRpb25cIl0pO1xuXG50eXBlIEVtdWxhdGlvblJlc3VsdCA9IE9taXQ8UXVlcnlPdXRwdXQsIFwiY29udGVudFwiIHwgXCJmaW5pc2hSZWFzb25cIiB8IFwicnVuQ29udGV4dFwiPjtcbnR5cGUgVG9vbENhbGwgPSB7IHRvb2xOYW1lOiBzdHJpbmc7IGFyZ3M6IHN0cmluZyB9O1xuXG4vLyBlbnZlbG9wZSDripQge3Jlc3VsdDogPHVuaW9uPn0g7ZWcIOqyuSDqtazsobAg4oCUIOyKpO2CpOuniCDqt7zqsbDripQgdG9vbC1lbXVsYXRpb24tc2NoZW1hLnRzIOywuOyhsC5cbi8vIGFuc3dlciDtg4DsnoXrp4wg7JqU7LKtIO2Yle2DnOyXkCDrlLDrnbwg64uk66W064ukOiB0b29scy1vbmx5IOuKlCBzdHJpbmco6re464yA66GcIOuwmO2ZmCksXG4vLyB0b29scytqc29uU2NoZW1hIOuKlCDsgqzsmqnsnpAg7Iqk7YKk66eI7J2YIEpTT04g6rCSKEpTT04uc3RyaW5naWZ5IOuhnCDrsJjtmZgpLlxuZnVuY3Rpb24gYnVpbGRFbnZlbG9wZVNjaGVtYShhbnN3ZXJLaW5kOiBBbnN3ZXJLaW5kKSB7XG4gIHJldHVybiB6LnN0cmljdE9iamVjdCh7XG4gICAgcmVzdWx0OiB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcImFjdGlvblwiLCBbXG4gICAgICB6LnN0cmljdE9iamVjdCh7XG4gICAgICAgIGFjdGlvbjogei5saXRlcmFsKFwiYW5zd2VyXCIpLFxuICAgICAgICBhbnN3ZXI6XG4gICAgICAgICAgYW5zd2VyS2luZCA9PT0gXCJ0ZXh0XCJcbiAgICAgICAgICAgID8gei5zdHJpbmcoKVxuICAgICAgICAgICAgOiB6Lmpzb24oKS5yZWZpbmUoKGFuc3dlcikgPT4gYW5zd2VyICE9PSBudWxsLCB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogXCJhbnN3ZXIgbXVzdCBiZSBub24tbnVsbFwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgdG9vbENhbGxzOiB6Lm51bGwoKSxcbiAgICAgIH0pLFxuICAgICAgei5zdHJpY3RPYmplY3Qoe1xuICAgICAgICBhY3Rpb246IHoubGl0ZXJhbChcInRvb2xfY2FsbFwiKSxcbiAgICAgICAgYW5zd2VyOiB6Lm51bGwoKSxcbiAgICAgICAgdG9vbENhbGxzOiB6XG4gICAgICAgICAgLmFycmF5KFxuICAgICAgICAgICAgei5zdHJpY3RPYmplY3Qoe1xuICAgICAgICAgICAgICB0b29sTmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgICAgICAgYXJnczogei5zdHJpbmcoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgICAubWluKDEpLFxuICAgICAgfSksXG4gICAgXSksXG4gIH0pO1xufVxuXG5jb25zdCBURVhUX0VOVkVMT1BFID0gYnVpbGRFbnZlbG9wZVNjaGVtYShcInRleHRcIik7XG5jb25zdCBKU09OX0VOVkVMT1BFID0gYnVpbGRFbnZlbG9wZVNjaGVtYShcImpzb25cIik7XG50eXBlIEVudmVsb3BlUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBKU09OX0VOVkVMT1BFPltcInJlc3VsdFwiXTtcblxuZXhwb3J0IGNsYXNzIFRvb2xDYWxsRW11bGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKGB0b29sLWNhbGwgZW11bGF0aW9uOiAke21lc3NhZ2V9YCk7XG4gICAgdGhpcy5uYW1lID0gXCJUb29sQ2FsbEVtdWxhdGlvbkVycm9yXCI7XG4gIH1cbn1cblxuLy8gZGlzcGF0Y2hlciDqsIAg64SY6riw64qUIOydtOuvuOyngCDqsrDqs7wuIHFncmlkIOuKlCBiYXNlNjQgcGF5bG9hZCDrp4wg7KCE64us7ZWY6rOgIO2PrOunt+ydgCDrs7TsnqXtlZjsp4Ag7JWK64qU64ukLlxuaW50ZXJmYWNlIEVtdWxhdGlvbkltYWdlIHtcbiAgZGF0YTogc3RyaW5nO1xuICByZXZpc2VkUHJvbXB0Pzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gYW5zd2VyIOyduOy9lOuUqSDsooXrpZguIGVudmVsb3BlIOuUlOy9lOuNlOuKlCDtlZwg67KM7J206rOgIOydtCDqsJLsnYAgYW5zd2VyIOu4jOuenOy5mOydmCDtg4DsnoXqs7xcbi8vIOy1nOyihSDsp4HroKztmZQodGV4dDog6re464yA66GcIC8ganNvbjogSlNPTi5zdHJpbmdpZnkp66eMIOqwgOuluOuLpC5cbmV4cG9ydCB0eXBlIEFuc3dlcktpbmQgPSBcInRleHRcIiB8IFwianNvblwiO1xuXG5pbnRlcmZhY2UgVG9vbENhbGxFbXVsYXRpb25PcHRpb25zIHtcbiAgdGhyZWFkQ29vcmQ/OiBRZ3JpZFRocmVhZENvb3JkO1xuICBpbWFnZXM/OiBFbXVsYXRpb25JbWFnZVtdO1xuICAvLyDtlYTsiJg6IO2YuOy2nOu2gOqwgCBhbnN3ZXIg7J247L2U65Sp7J2EIO2VreyDgSDrqoXsi5ztlbTslbwg7ZWc64ukIChpbnB1dC5qc29uU2NoZW1hIOycoOustOuhnCDtjJDsoJUpLlxuICBhbnN3ZXJLaW5kOiBBbnN3ZXJLaW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlUb29sQ2FsbEVtdWxhdGlvbihcbiAgcmVzdWx0OiBFbXVsYXRpb25SZXN1bHQsXG4gIHRvb2xzOiBRZ3JpZFRvb2xbXSB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogVG9vbENhbGxFbXVsYXRpb25PcHRpb25zLFxuKTogUXVlcnlPdXRwdXQge1xuICBjb25zdCB7IHRocmVhZENvb3JkLCBpbWFnZXMsIGFuc3dlcktpbmQgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJ1bkNvbnRleHQgPSB0aHJlYWRDb29yZCA/IHsgdGhyZWFkQ29vcmQgfSA6IHVuZGVmaW5lZDtcblxuICBpZiAoIXRvb2xzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gYW5zd2VyT3V0cHV0KHJlc3VsdCwgcmVzdWx0LnRleHQsIGltYWdlcywgcnVuQ29udGV4dCk7XG4gIH1cblxuICBjb25zdCBwYXJzZWQgPSBwYXJzZUVudmVsb3BlKHJlc3VsdC50ZXh0LCB0b29scywgYW5zd2VyS2luZCk7XG4gIGlmIChwYXJzZWQuYWN0aW9uID09PSBcInRvb2xfY2FsbFwiKSB7XG4gICAgcmV0dXJuIHRvb2xDYWxsT3V0cHV0KHJlc3VsdCwgcGFyc2VkLnRvb2xDYWxscywgaW1hZ2VzLCBydW5Db250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBhbnN3ZXJPdXRwdXQoXG4gICAgcmVzdWx0LFxuICAgIGFuc3dlcktpbmQgPT09IFwidGV4dFwiID8gKHBhcnNlZC5hbnN3ZXIgYXMgc3RyaW5nKSA6IEpTT04uc3RyaW5naWZ5KHBhcnNlZC5hbnN3ZXIpLFxuICAgIGltYWdlcyxcbiAgICBydW5Db250ZXh0LFxuICApO1xufVxuXG5mdW5jdGlvbiBwYXJzZUVudmVsb3BlKHRleHQ6IHN0cmluZywgdG9vbHM6IFFncmlkVG9vbFtdLCBhbnN3ZXJLaW5kOiBBbnN3ZXJLaW5kKSB7XG4gIGlmIChCdWZmZXIuYnl0ZUxlbmd0aCh0ZXh0LCBcInV0ZjhcIikgPiBTVFJVQ1RVUkVEX0VOVkVMT1BFX0xJTUlUUy5tYXhVdGY4Qnl0ZXMpIHtcbiAgICB0aHJvdyBuZXcgVG9vbENhbGxFbXVsYXRpb25FcnJvcihcbiAgICAgIGB0b29sIGVudmVsb3BlIGV4Y2VlZHMgVVRGLTggYnl0ZSBsaW1pdCBvZiAke1NUUlVDVFVSRURfRU5WRUxPUEVfTElNSVRTLm1heFV0ZjhCeXRlc31gLFxuICAgICk7XG4gIH1cblxuICBsZXQgdmFsdWU6IHVua25vd247XG4gIHRyeSB7XG4gICAgdmFsdWUgPSBKU09OLnBhcnNlKHRleHQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIOq0gOyaqSDtj7TrsLEg7JeG7J2MOiBlbnZlbG9wZSDripQg7JaRIHByb3ZpZGVyIOydmCBzdHJ1Y3R1cmVkIG91dHB1dCDsnLzroZwg6rCV7KCc65CY64qUIOuCtOu2gFxuICAgIC8vIOqzhOyVveydtOudvCDsl6zquLAg64+E64us7ZWcIOu5hCBKU09OIOydgCDrsoTqt7jri6QuIOqzvOqxsOydmCDthY3siqTtirgg6rWs7KCc64qUIO2HtO2ZlCDrtIntiKzrpbwg64u167OA7Jy866GcXG4gICAgLy8g7Z2Y66Ck67O064K0IOyhsOyaqe2VnCDsmKTsl7zsnYQg66eM65Ok7JeI64ukKDIwMjYtMDcgbWVkcGF0aCwgMTMuNWsg6rG0KS5cbiAgICBsb2dnZXIud2FybihgdG9vbCBlbnZlbG9wZSBwYXJzZSBmYWlsZWQ6ICR7KGVycm9yIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKGBpbnZhbGlkIHRvb2wgZW52ZWxvcGU6ICR7KGVycm9yIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICB9XG5cbiAgYXNzZXJ0U3RydWN0dXJlZEVudmVsb3BlQ29tcGxleGl0eSh2YWx1ZSk7XG4gIGNvbnN0IHNjaGVtYSA9IGFuc3dlcktpbmQgPT09IFwidGV4dFwiID8gVEVYVF9FTlZFTE9QRSA6IEpTT05fRU5WRUxPUEU7XG4gIGNvbnN0IHZhbGlkYXRpb24gPSBzY2hlbWEuc2FmZVBhcnNlKHZhbHVlKTtcbiAgaWYgKCF2YWxpZGF0aW9uLnN1Y2Nlc3MpIHtcbiAgICBjb25zdCBpc3N1ZSA9IHZhbGlkYXRpb24uZXJyb3IuaXNzdWVzWzBdO1xuICAgIGNvbnN0IHBhdGggPSBpc3N1ZSAmJiBpc3N1ZS5wYXRoLmxlbmd0aCA+IDAgPyBgIGF0ICR7aXNzdWUucGF0aC5qb2luKFwiLlwiKX1gIDogXCJcIjtcbiAgICBjb25zdCBkZXRhaWwgPSBpc3N1ZT8ubWVzc2FnZSA/PyBcInVua25vd24gdmFsaWRhdGlvbiBpc3N1ZVwiO1xuICAgIGxvZ2dlci53YXJuKGB0b29sIGVudmVsb3BlIHZhbGlkYXRpb24gZmFpbGVkJHtwYXRofTogJHtkZXRhaWx9YCk7XG4gICAgdGhyb3cgbmV3IFRvb2xDYWxsRW11bGF0aW9uRXJyb3IoYGludmFsaWQgdG9vbCBlbnZlbG9wZSR7cGF0aH06ICR7ZGV0YWlsfWApO1xuICB9XG5cbiAgLy8gWm9kIGNsb25lcyBKU09OIG9iamVjdHMgYW5kIGRyb3BzIG93biBcIl9fcHJvdG9fX1wiIGtleXMuIFRoZSBwYXJzZWQgSlNPTiBpcyBzYWZlIHRvIHJldHVyblxuICAvLyBhZnRlciB2YWxpZGF0aW9uIGFuZCBwcmVzZXJ2ZXMgdGhlIGNhbGxlcidzIGV4YWN0IHN0cnVjdHVyZWQgdmFsdWUuXG4gIGNvbnN0IHJlc3BvbnNlID0gKHZhbHVlIGFzIHsgcmVzdWx0OiBFbnZlbG9wZVJlc3BvbnNlIH0pLnJlc3VsdDtcbiAgaWYgKHJlc3BvbnNlLmFjdGlvbiA9PT0gXCJ0b29sX2NhbGxcIikge1xuICAgIGNvbnN0IHVua25vd25Ub29sID0gZmluZFVua25vd25Ub29sKHJlc3BvbnNlLnRvb2xDYWxscywgdG9vbHMpO1xuICAgIGlmICh1bmtub3duVG9vbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbENhbGxFbXVsYXRpb25FcnJvcihgdW5rbm93biBlbXVsYXRlZCB0b29sOiAke3Vua25vd25Ub29sfWApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbmZ1bmN0aW9uIHRvb2xDYWxsT3V0cHV0KFxuICByZXN1bHQ6IEVtdWxhdGlvblJlc3VsdCxcbiAgdG9vbENhbGxzOiBUb29sQ2FsbFtdLFxuICBpbWFnZXM6IEVtdWxhdGlvbkltYWdlW10gfCB1bmRlZmluZWQsXG4gIHJ1bkNvbnRleHQ6IFF1ZXJ5T3V0cHV0W1wicnVuQ29udGV4dFwiXSxcbik6IFF1ZXJ5T3V0cHV0IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5yZXN1bHQsXG4gICAgY29udGVudDogYXBwZW5kSW1hZ2VzKFxuICAgICAgdG9vbENhbGxzLm1hcCgodG9vbENhbGwpID0+ICh7XG4gICAgICAgIHR5cGU6IFwidG9vbC1jYWxsXCIsXG4gICAgICAgIHRvb2xDYWxsSWQ6IGBjYWxsXyR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgMTApfWAsXG4gICAgICAgIHRvb2xOYW1lOiB0b29sQ2FsbC50b29sTmFtZSxcbiAgICAgICAgaW5wdXQ6IHRvb2xDYWxsLmFyZ3MsXG4gICAgICB9KSksXG4gICAgICBpbWFnZXMsXG4gICAgKSxcbiAgICBmaW5pc2hSZWFzb246IFwidG9vbC1jYWxsc1wiLFxuICAgIHJ1bkNvbnRleHQsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGFuc3dlck91dHB1dChcbiAgcmVzdWx0OiBFbXVsYXRpb25SZXN1bHQsXG4gIHRleHQ6IHN0cmluZyxcbiAgaW1hZ2VzOiBFbXVsYXRpb25JbWFnZVtdIHwgdW5kZWZpbmVkLFxuICBydW5Db250ZXh0OiBRdWVyeU91dHB1dFtcInJ1bkNvbnRleHRcIl0sXG4pOiBRdWVyeU91dHB1dCB7XG4gIHJldHVybiB7XG4gICAgLi4ucmVzdWx0LFxuICAgIHRleHQsXG4gICAgY29udGVudDogYXBwZW5kSW1hZ2VzKFt7IHR5cGU6IFwidGV4dFwiLCB0ZXh0IH1dLCBpbWFnZXMpLFxuICAgIGZpbmlzaFJlYXNvbjogXCJzdG9wXCIsXG4gICAgcnVuQ29udGV4dCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZmluZFVua25vd25Ub29sKHRvb2xDYWxsczogVG9vbENhbGxbXSwgdG9vbHM6IFFncmlkVG9vbFtdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qga25vd25Ub29sTmFtZXMgPSBuZXcgU2V0KHRvb2xzLm1hcCgodG9vbCkgPT4gdG9vbC5uYW1lKSk7XG4gIHJldHVybiB0b29sQ2FsbHMuZmluZCgodG9vbENhbGwpID0+ICFrbm93blRvb2xOYW1lcy5oYXModG9vbENhbGwudG9vbE5hbWUpKT8udG9vbE5hbWU7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZEltYWdlcyhjb250ZW50OiBRZ3JpZENvbnRlbnRbXSwgaW1hZ2VzPzogRW11bGF0aW9uSW1hZ2VbXSk6IFFncmlkQ29udGVudFtdIHtcbiAgaWYgKCFpbWFnZXM/Lmxlbmd0aCkgcmV0dXJuIGNvbnRlbnQ7XG4gIHJldHVybiBbXG4gICAgLi4uY29udGVudCxcbiAgICAuLi5pbWFnZXMubWFwKFxuICAgICAgKGltYWdlKTogUWdyaWRDb250ZW50ID0+ICh7XG4gICAgICAgIHR5cGU6IFwiaW1hZ2VcIixcbiAgICAgICAgZGF0YTogaW1hZ2UuZGF0YSxcbiAgICAgICAgcmV2aXNlZFByb21wdDogaW1hZ2UucmV2aXNlZFByb21wdCA/PyBudWxsLFxuICAgICAgfSksXG4gICAgKSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0U3RydWN0dXJlZEVudmVsb3BlQ29tcGxleGl0eShyb290OiB1bmtub3duKTogdm9pZCB7XG4gIGNvbnN0IG1heERlcHRoID0gU1RSVUNUVVJFRF9FTlZFTE9QRV9MSU1JVFMubWF4RGVwdGg7XG4gIGNvbnN0IHN0YWNrID0gW3sgdmFsdWU6IHJvb3QsIGRlcHRoOiAwIH1dO1xuICBsZXQgbm9kZXMgPSAwO1xuXG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgY3VycmVudCA9IHN0YWNrLnBvcCgpITtcbiAgICBub2RlcyArPSAxO1xuICAgIGlmIChub2RlcyA+IFNUUlVDVFVSRURfRU5WRUxPUEVfTElNSVRTLm1heE5vZGVzKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbENhbGxFbXVsYXRpb25FcnJvcihcbiAgICAgICAgYHN0cnVjdHVyZWQtb3V0cHV0IGVudmVsb3BlIGV4Y2VlZHMgbm9kZSBsaW1pdCBvZiAke1NUUlVDVFVSRURfRU5WRUxPUEVfTElNSVRTLm1heE5vZGVzfWAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoY3VycmVudC5kZXB0aCA+IG1heERlcHRoKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbENhbGxFbXVsYXRpb25FcnJvcihcbiAgICAgICAgYHN0cnVjdHVyZWQtb3V0cHV0IGVudmVsb3BlIGV4Y2VlZHMgZGVwdGggbGltaXQgb2YgJHttYXhEZXB0aH1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjdXJyZW50LnZhbHVlID09PSBcIm51bWJlclwiICYmICFOdW1iZXIuaXNGaW5pdGUoY3VycmVudC52YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUb29sQ2FsbEVtdWxhdGlvbkVycm9yKFwiYW5zd2VyIG11c3QgYmUgdmFsaWQgSlNPTlwiKTtcbiAgICB9XG4gICAgaWYgKGN1cnJlbnQudmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIGN1cnJlbnQudmFsdWUgIT09IFwib2JqZWN0XCIpIGNvbnRpbnVlO1xuXG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiBPYmplY3QudmFsdWVzKGN1cnJlbnQudmFsdWUpKSB7XG4gICAgICBzdGFjay5wdXNoKHsgdmFsdWUsIGRlcHRoOiBjdXJyZW50LmRlcHRoICsgMSB9KTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQVFBLE1BQU0sNkJBQTZCO0NBQ2pDLGNBQWMsTUFBTTtDQUNwQixVQUFVO0NBQ1YsVUFBVTtBQUNaO0FBUUEsTUFBTSxTQUFTLFVBQVUsQ0FBQyxTQUFTLGdCQUFnQixDQUFDO0FBUXBELFNBQVMsb0JBQW9CLFlBQXdCO0NBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQ3BCLFFBQVEsRUFBRSxtQkFBbUIsVUFBVSxDQUNyQyxFQUFFLGFBQWE7RUFDYixRQUFRLEVBQUUsUUFBUSxRQUFRO0VBQzFCLFFBQ0UsZUFBZSxTQUNYLEVBQUUsT0FBTyxJQUNULEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxXQUFXLFdBQVcsTUFBTSxFQUMzQyxTQUFTLDBCQUNYLENBQUM7RUFDUCxXQUFXLEVBQUUsS0FBSztDQUNwQixDQUFDLEdBQ0QsRUFBRSxhQUFhO0VBQ2IsUUFBUSxFQUFFLFFBQVEsV0FBVztFQUM3QixRQUFRLEVBQUUsS0FBSztFQUNmLFdBQVcsRUFDUixNQUNDLEVBQUUsYUFBYTtHQUNiLFVBQVUsRUFBRSxPQUFPO0dBQ25CLE1BQU0sRUFBRSxPQUFPO0VBQ2pCLENBQUMsQ0FDSCxDQUFDLENBQ0EsSUFBSSxDQUFDO0NBQ1YsQ0FBQyxDQUNILENBQUMsRUFDSCxDQUFDO0FBQ0g7QUFFQSxNQUFNLGdCQUFnQixvQkFBb0IsTUFB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
|