every-plugin 0.4.10 → 0.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build/rspack/index.cjs +5 -5
- package/dist/build/rspack/index.mjs +4 -4
- package/dist/{errors-CVnoPl9v.cjs → errors-BEsEPXKG.cjs} +2 -2
- package/dist/errors-CpYzD_-M.d.cts +38 -0
- package/dist/errors-D2-thHKG.d.mts +38 -0
- package/dist/{errors-D7keKf7a.mjs → errors-DnigICIv.mjs} +2 -2
- package/dist/errors.cjs +2 -2
- package/dist/errors.d.cts +1 -2
- package/dist/errors.d.mts +1 -2
- package/dist/errors.mjs +2 -2
- package/dist/{fetch-Cc95-7kM.cjs → fetch-CGzn1Uf7.cjs} +2 -2
- package/dist/{fetch-KLktuWuM.mjs → fetch-ycs0raYN.mjs} +2 -2
- package/dist/{index-matrPV4m.d.cts → index-BXfi8DqC.d.cts} +1 -1
- package/dist/{index-bwAhA9ca.d.mts → index-DvIxKA8K.d.mts} +2 -2
- package/dist/index.cjs +4 -4
- package/dist/index.d.cts +3 -4
- package/dist/index.d.mts +3 -4
- package/dist/index.mjs +4 -4
- package/dist/{normalize-BLTyqFww.d.mts → normalize-BCE_FLe8.d.mts} +1 -1
- package/dist/{normalize-BW7kk8Lk.d.cts → normalize-Tt7I_RdD.d.cts} +1 -1
- package/dist/{package-J60H0cK8.cjs → package-C2Mp8qeD.cjs} +4 -3
- package/dist/{package-DVINhZcr.mjs → package-uEsV9Z-2.mjs} +4 -3
- package/dist/plugins-Cmsm3gW1.cjs +791 -0
- package/dist/plugins-hpi2GlaX.mjs +790 -0
- package/dist/runtime/index.cjs +2 -2
- package/dist/runtime/index.d.cts +3 -4
- package/dist/runtime/index.d.mts +3 -4
- package/dist/runtime/index.mjs +2 -2
- package/dist/runtime/services/normalize.d.cts +1 -1
- package/dist/runtime/services/normalize.d.mts +1 -1
- package/dist/{runtime-BShulKmh.mjs → runtime-BUQ0hy1J.mjs} +3 -3
- package/dist/{runtime-Yfumucan.cjs → runtime-LlP2xpdB.cjs} +3 -3
- package/dist/{standard-eUgUkWaf.cjs → standard-0wBehDUp.cjs} +1 -18
- package/dist/{standard-DaxKTFui.mjs → standard-CYaRay89.mjs} +2 -13
- package/dist/testing/index.cjs +2 -2
- package/dist/testing/index.d.cts +4 -5
- package/dist/testing/index.d.mts +4 -5
- package/dist/testing/index.mjs +2 -2
- package/dist/zod-BDDjyyHQ.mjs +10 -0
- package/dist/{zod-DYghWCz1.cjs → zod-CJY4vNLR.cjs} +2 -2
- package/dist/zod.cjs +4 -4
- package/dist/zod.d.cts +1 -2
- package/dist/zod.d.mts +1 -2
- package/dist/zod.mjs +2 -2
- package/package.json +3 -2
- package/dist/errors-Car4tFVP.d.mts +0 -75
- package/dist/errors-DKPPPYYT.d.cts +0 -75
- package/dist/openapi.DrTcell5-C6kyDyUK.mjs +0 -669
- package/dist/openapi.DrTcell5-DDf4D5V3.cjs +0 -687
- package/dist/plugins-C-7lh5gK.cjs +0 -128
- package/dist/plugins-Ps5Xxpk2.mjs +0 -128
- package/dist/zod-A7Pti5IV.d.cts +0 -4
- package/dist/zod-BVo51kgJ.mjs +0 -10
- package/dist/zod-D4CFw8d9.d.mts +0 -4
- package/dist/zod4-BXTBR1od.cjs +0 -318
- package/dist/zod4-VpXuwRO7.mjs +0 -317
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require('../../chunk-zltIcp7o.cjs');
|
|
2
2
|
const require_normalize = require('../../normalize-D4Qh0wVk.cjs');
|
|
3
|
-
const require_package$1 = require('../../package-
|
|
3
|
+
const require_package$1 = require('../../package-C2Mp8qeD.cjs');
|
|
4
4
|
let __rspack_core = require("@rspack/core");
|
|
5
5
|
let node_path = require("node:path");
|
|
6
6
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -116,9 +116,9 @@ function setupPluginMiddleware(devServer, pluginInfo, devConfig, port) {
|
|
|
116
116
|
const { createPluginRuntime } = await Promise.resolve().then(() => require("../../index.cjs"));
|
|
117
117
|
const { RPCHandler } = await import("@orpc/server/fetch");
|
|
118
118
|
const { onError } = await import("@orpc/server");
|
|
119
|
-
const { OpenAPIHandler } = await Promise.resolve().then(() => require("../../fetch-
|
|
120
|
-
const { OpenAPIReferencePlugin } = await Promise.resolve().then(() => require("../../plugins-
|
|
121
|
-
const { ZodToJsonSchemaConverter } = await
|
|
119
|
+
const { OpenAPIHandler } = await Promise.resolve().then(() => require("../../fetch-CGzn1Uf7.cjs"));
|
|
120
|
+
const { OpenAPIReferencePlugin } = await Promise.resolve().then(() => require("../../plugins-Cmsm3gW1.cjs"));
|
|
121
|
+
const { ZodToJsonSchemaConverter } = await import("@orpc/zod/zod4");
|
|
122
122
|
const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;
|
|
123
123
|
const runtime = createPluginRuntime({ registry: { [pluginId]: { remoteUrl: `http://localhost:${port}/remoteEntry.js` } } });
|
|
124
124
|
const loaded = await runtime.usePlugin(pluginId, devConfig?.config);
|
|
@@ -360,4 +360,4 @@ var EveryPluginDevServer = class {
|
|
|
360
360
|
|
|
361
361
|
//#endregion
|
|
362
362
|
exports.EveryPluginDevServer = EveryPluginDevServer;
|
|
363
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwibmFtZXMiOlsicGF0aCIsImZzIiwiZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUiLCJtb2R1bGUiLCJoYW5kbGVyczogeyBycGM6IGFueSwgYXBpOiBhbnkgfSIsImNsZWFudXA6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwiLCJsaW5lczogc3RyaW5nW10iLCJvcHRpb25zOiBFdmVyeVBsdWdpbk9wdGlvbnMiLCJyc3BhY2siLCJwYXRoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay91dGlscy50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svbW9kdWxlLWZlZGVyYXRpb24udHMiLCIuLi8uLi8uLi9zcmMvYnVpbGQvcnNwYWNrL2Rldi1zZXJ2ZXItbWlkZGxld2FyZS50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svcGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUmVtb3RlTmFtZSB9IGZyb20gJ2V2ZXJ5LXBsdWdpbi9ub3JtYWxpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbm9ybWFsaXplZE5hbWU6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBwZWVyRGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luSW5mbyhjb250ZXh0OiBzdHJpbmcpOiBQbHVnaW5JbmZvIHtcbiAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihjb250ZXh0LCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBrZ1BhdGgsICd1dGYtOCcpKTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgIG5vcm1hbGl6ZWROYW1lOiBnZXROb3JtYWxpemVkUmVtb3RlTmFtZShwa2cubmFtZSksXG4gICAgZGVwZW5kZW5jaWVzOiBwa2cuZGVwZW5kZW5jaWVzIHx8IHt9LFxuICAgIHBlZXJEZXBlbmRlbmNpZXM6IHBrZy5wZWVyRGVwZW5kZW5jaWVzIHx8IHt9LFxuICB9O1xufVxuXG5jb25zdCBsb2FkZWRNb2R1bGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGV2Q29uZmlnKGRldkNvbmZpZ1BhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKGRldkNvbmZpZ1BhdGgpO1xuICAgIFxuICAgIGlmIChsb2FkZWRNb2R1bGVzLmhhcyhmdWxsUGF0aCkpIHtcbiAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2Z1bGxQYXRoXTtcbiAgICAgIGNvbnN0IGRpclBhdGggPSBwYXRoLmRpcm5hbWUoZnVsbFBhdGgpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVxdWlyZS5jYWNoZSkpIHtcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGRpclBhdGgpICYmIGtleSAhPT0gZnVsbFBhdGgpIHtcbiAgICAgICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG1vZHVsZSA9IHJlcXVpcmUoZnVsbFBhdGgpLmRlZmF1bHQ7XG4gICAgbG9hZGVkTW9kdWxlcy5hZGQoZnVsbFBhdGgpO1xuICAgIHJldHVybiBtb2R1bGU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS53YXJuKGBDb3VsZCBub3QgbG9hZCBkZXYgY29uZmlnIGZyb20gJHtkZXZDb25maWdQYXRofTpgLCAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwRGV2Q29uZmlnKCkge1xuICBmb3IgKGNvbnN0IG1vZHVsZVBhdGggb2YgbG9hZGVkTW9kdWxlcykge1xuICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW21vZHVsZVBhdGhdO1xuICB9XG4gIGxvYWRlZE1vZHVsZXMuY2xlYXIoKTtcbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luSW5mbyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTaGFyZWREZXBlbmRlbmNpZXMocGx1Z2luSW5mbzogUGx1Z2luSW5mbykge1xuICAvLyBHZXQgZXZlcnktcGx1Z2luIHBhY2thZ2UgaW5mbyBmb3IgdmVyc2lvbiBjb25zdHJhaW50c1xuICBjb25zdCBldmVyeVBsdWdpblBrZyA9IHJlcXVpcmUoJ2V2ZXJ5LXBsdWdpbi9wYWNrYWdlLmpzb24nKTtcblxuICByZXR1cm4ge1xuICAgICdldmVyeS1wbHVnaW4nOiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy52ZXJzaW9uLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy52ZXJzaW9ufWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICAgIGVmZmVjdDoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdCxcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdH1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgICB6b2Q6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2QsXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2R9YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL2NvbnRyYWN0Jzoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzWydAb3JwYy9jb250cmFjdCddLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXNbJ0BvcnBjL2NvbnRyYWN0J119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL3NlcnZlcic6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ10sXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgY29yc0hlYWRlcnMgPSB7XG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnKicsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJ1xufTtcblxuY29uc3QgYXBwbHlDb3JzSGVhZGVycyA9IChyZXM6IGFueSkgPT4ge1xuICBPYmplY3QuZW50cmllcyhjb3JzSGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgfSk7XG59O1xuXG5jb25zdCBub3JtYWxpemVQcmVmaXggPSAocHJlZml4Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFwcmVmaXgpIHJldHVybiAnJztcbiAgY29uc3QgY2xlYW5lZCA9IHByZWZpeC5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJyk7XG4gIHJldHVybiBjbGVhbmVkID8gYC8ke2NsZWFuZWR9YCA6ICcnO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXI6IGFueSwgcGx1Z2luSW5mbzogUGx1Z2luSW5mbywgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICBjb25zdCBycGNQcmVmaXggPSBub3JtYWxpemVQcmVmaXgoZGV2Q29uZmlnPy5wcmVmaXgpO1xuICBsZXQgaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0gPSB7IHJwYzogbnVsbCwgYXBpOiBudWxsIH07XG4gIGxldCBjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBwZXJmb3JtQ2xlYW51cCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoY2xlYW51cCkge1xuICAgICAgYXdhaXQgY2xlYW51cCgpO1xuICAgICAgY2xlYW51cCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGNyZWF0ZVBsdWdpblJ1bnRpbWUgfSA9IGF3YWl0IGltcG9ydCgnZXZlcnktcGx1Z2luJyk7XG4gICAgICBjb25zdCB7IFJQQ0hhbmRsZXIgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyL2ZldGNoJyk7XG4gICAgICBjb25zdCB7IG9uRXJyb3IgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyJyk7XG4gICAgICBjb25zdCB7IE9wZW5BUElIYW5kbGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL29wZW5hcGkvZmV0Y2gnKTtcbiAgICAgIGNvbnN0IHsgT3BlbkFQSVJlZmVyZW5jZVBsdWdpbiB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy9vcGVuYXBpL3BsdWdpbnMnKTtcbiAgICAgIGNvbnN0IHsgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL3pvZC96b2Q0Jyk7XG5cbiAgICAgIGNvbnN0IHBsdWdpbklkID0gZGV2Q29uZmlnPy5wbHVnaW5JZCB8fCBwbHVnaW5JbmZvLm5vcm1hbGl6ZWROYW1lO1xuXG4gICAgICBjb25zdCBydW50aW1lID0gY3JlYXRlUGx1Z2luUnVudGltZSh7XG4gICAgICAgIHJlZ2lzdHJ5OiB7XG4gICAgICAgICAgW3BsdWdpbklkXToge1xuICAgICAgICAgICAgcmVtb3RlVXJsOiBgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L3JlbW90ZUVudHJ5LmpzYFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGxvYWRlZCA9IGF3YWl0IHJ1bnRpbWUudXNlUGx1Z2luKHBsdWdpbklkLCBkZXZDb25maWc/LmNvbmZpZyk7XG5cbiAgICAgIGNsZWFudXAgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkZWQgJiYgdHlwZW9mIChsb2FkZWQgYXMgYW55KS5kaXNwb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKGxvYWRlZCBhcyBhbnkpLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVudGltZSAmJiB0eXBlb2YgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlcnMucnBjID0gbnVsbDtcbiAgICAgICAgaGFuZGxlcnMuYXBpID0gbnVsbDtcbiAgICAgICAgaWYgKGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmb3JtYXRFcnJvciA9IChlcnJvcjogYW55LCBjb250ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW2BcXG7wn5S0ICR7Y29udGV4dH0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcid9YF07XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/Lmlzc3VlcyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmNhdXNlLmlzc3VlcykpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OLIFZhbGlkYXRpb24gSXNzdWVzOicpO1xuICAgICAgICAgIGVycm9yLmNhdXNlLmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGAgICR7aW5kZXggKyAxfS4gJHtpc3N1ZS5wYXRoPy5qb2luKCcuJykgfHwgJ3Jvb3QnfWApO1xuICAgICAgICAgICAgbGluZXMucHVzaChgICAgICDilJzilIAgQ29kZTogJHtpc3N1ZS5jb2RlIHx8ICd1bmtub3duJ31gKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgICAg4pSc4pSAIE1lc3NhZ2U6ICR7aXNzdWUubWVzc2FnZSB8fCAnTm8gbWVzc2FnZSd9YCk7XG4gICAgICAgICAgICBpZiAoaXNzdWUuZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUnOKUgCBFeHBlY3RlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5leHBlY3RlZCl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNzdWUucmVjZWl2ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCBSZWNlaXZlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5yZWNlaXZlZCl9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCAoZW5kKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuZGF0YSAmJiB0eXBlb2YgZXJyb3IuZGF0YSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoZXJyb3IuZGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goJ1xcbvCfk4ogRXJyb3IgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/LmRhdGEpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OmIFJlcXVlc3QgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmNhdXNlLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuY2F1c2UuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY29kZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFxcbuKaoO+4jyAgRXJyb3IgQ29kZTogJHtlcnJvci5jb2RlfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICAgICAgbGluZXMucHVzaChg8J+TjSBTdGF0dXM6ICR7ZXJyb3Iuc3RhdHVzfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihsaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgICB9O1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5vIHR5cGVcbiAgICAgIGhhbmRsZXJzLnJwYyA9IG5ldyBSUENIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgaW50ZXJjZXB0b3JzOiBbXG4gICAgICAgICAgb25FcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgZm9ybWF0RXJyb3IoZXJyb3IsICdSUEMnKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igbm8gdHlwZVxuICAgICAgaGFuZGxlcnMuYXBpID0gbmV3IE9wZW5BUElIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIG5ldyBPcGVuQVBJUmVmZXJlbmNlUGx1Z2luKHtcbiAgICAgICAgICAgIHNjaGVtYUNvbnZlcnRlcnM6IFtuZXcgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyKCldLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBpbnRlcmNlcHRvcnM6IFtcbiAgICAgICAgICBvbkVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBmb3JtYXRFcnJvcihlcnJvciwgJ09wZW5BUEknKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKGDila3ilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIOKchSBQbHVnaW4gZGV2IHNlcnZlciByZWFkeTogYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5OhIFJQQzogICAgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2FwaS9ycGMke3JwY1ByZWZpeH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIPCfk5YgRG9jczogICBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0vYXBpYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5KaIEhlYWx0aDogaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2ApO1xuICAgICAgY29uc29sZS5sb2coYOKVsOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgGApO1xuXG4gICAgICBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycyA9IGhhbmRsZXJzO1xuXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlcikge1xuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLm9uY2UoJ2Nsb3NlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCfinYwgRmFpbGVkIHRvIGxvYWQgcGx1Z2luOicsIGVycm9yKTtcbiAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgfVxuICB9KSgpO1xuXG4gIHByb2Nlc3Mub25jZSgnU0lHSU5UJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gIH0pO1xuICBwcm9jZXNzLm9uY2UoJ1NJR1RFUk0nLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcbiAgfSk7XG5cbiAgZGV2U2VydmVyLmFwcC5vcHRpb25zKCcqJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuc3RhdHVzKDIwMCkuZW5kKCk7XG4gIH0pO1xuXG4gIGRldlNlcnZlci5hcHAuZ2V0KCcvJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBsdWdpbjogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIHZlcnNpb246IHBsdWdpbkluZm8udmVyc2lvbixcbiAgICAgIHN0YXR1czogZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnM/LnJwYyA/ICdyZWFkeScgOiAnbG9hZGluZycsXG4gICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgaGVhbHRoOiAnLycsXG4gICAgICAgIGRvY3M6ICcvYXBpJyxcbiAgICAgICAgcnBjOiBgL2FwaS9ycGMke3JwY1ByZWZpeH1gXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBhbmQgUkVTVCBlbmRwb2ludHMgYXQgL2FwaSBhbmQgL2FwaS8qXG4gIGNvbnN0IGhhbmRsZUFwaVJlcXVlc3QgPSBhc3luYyAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgYXBwbHlDb3JzSGVhZGVycyhyZXMpO1xuICAgIGNvbnN0IGFwaUhhbmRsZXIgPSBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycz8uYXBpO1xuICAgIGlmICghYXBpSGFuZGxlcikge1xuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAzKS5qc29uKHsgZXJyb3I6ICdQbHVnaW4gc3RpbGwgbG9hZGluZy4uLicgfSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IGBodHRwOi8vJHtyZXEuaGVhZGVycy5ob3N0fSR7cmVxLnVybH1gO1xuICAgICAgY29uc3Qgd2ViUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwge1xuICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLFxuICAgICAgICBib2R5OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyByZXEgOiB1bmRlZmluZWQsXG4gICAgICAgIGR1cGxleDogcmVxLm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxLm1ldGhvZCAhPT0gJ0hFQUQnID8gJ2hhbGYnIDogdW5kZWZpbmVkXG4gICAgICB9IGFzIFJlcXVlc3RJbml0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBpSGFuZGxlci5oYW5kbGUod2ViUmVxdWVzdCwge1xuICAgICAgICBwcmVmaXg6ICcvYXBpJyxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignT3BlbkFQSSBlcnJvcjonLCBlcnJvcik7XG4gICAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7IGVycm9yOiAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgfSk7XG4gICAgfVxuICB9O1xuXG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpJywgaGFuZGxlQXBpUmVxdWVzdCk7XG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpLyonLCBoYW5kbGVBcGlSZXF1ZXN0KTtcblxuICBkZXZTZXJ2ZXIuYXBwLmFsbChgL2FwaS9ycGMke3JwY1ByZWZpeH0vKmAsIGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnkpID0+IHtcbiAgICBhcHBseUNvcnNIZWFkZXJzKHJlcyk7XG4gICAgY29uc3QgcnBjSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5ycGM7XG4gICAgaWYgKCFycGNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZHVwbGV4OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyAnaGFsZicgOiB1bmRlZmluZWRcbiAgICAgIH0gYXMgUmVxdWVzdEluaXQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGNIYW5kbGVyLmhhbmRsZSh3ZWJSZXF1ZXN0LCB7XG4gICAgICAgIHByZWZpeDogYC9hcGkvcnBjJHtycGNQcmVmaXh9YCxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignUlBDIGVycm9yOicsIGVycm9yKTtcbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHsgZXJyb3I6IChlcnJvciBhcyBFcnJvcikubWVzc2FnZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBDb21waWxlciwgUnNwYWNrUGx1Z2luSW5zdGFuY2UgfSBmcm9tICdAcnNwYWNrL2NvcmUnO1xuaW1wb3J0IHsgcnNwYWNrIH0gZnJvbSAnQHJzcGFjay9jb3JlJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBnZXRQbHVnaW5JbmZvIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBsb2FkRGV2Q29uZmlnIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBidWlsZFNoYXJlZERlcGVuZGVuY2llcyB9IGZyb20gJy4vbW9kdWxlLWZlZGVyYXRpb24nO1xuaW1wb3J0IHsgc2V0dXBQbHVnaW5NaWRkbGV3YXJlIH0gZnJvbSAnLi9kZXYtc2VydmVyLW1pZGRsZXdhcmUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlcnlQbHVnaW5PcHRpb25zIHtcbiAgZGV2Q29uZmlnUGF0aD86IHN0cmluZzsgIC8vIGRlZmF1bHRzIHRvICcuL3BsdWdpbi5kZXYudHMnXG4gIHBvcnQ/OiBudW1iZXI7ICAgICAgICAgICAvLyBvdmVycmlkZSBwbHVnaW4uZGV2LnRzIHBvcnRcbiAgcGx1Z2luSWQ/OiBzdHJpbmc7ICAgICAgIC8vIG92ZXJyaWRlIGF1dG8tZGV0ZWN0ZWRcbn1cblxuZXhwb3J0IGNsYXNzIEV2ZXJ5UGx1Z2luRGV2U2VydmVyIGltcGxlbWVudHMgUnNwYWNrUGx1Z2luSW5zdGFuY2Uge1xuICBuYW1lID0gJ0V2ZXJ5UGx1Z2luRGV2U2VydmVyJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM6IEV2ZXJ5UGx1Z2luT3B0aW9ucyA9IHt9KSB7fVxuXG4gIGFwcGx5KGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIC8vIExvYWQgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IHBsdWdpbkluZm8gPSBnZXRQbHVnaW5JbmZvKGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpKTtcbiAgICBjb25zdCBkZXZDb25maWcgPSBsb2FkRGV2Q29uZmlnKHRoaXMub3B0aW9ucy5kZXZDb25maWdQYXRoIHx8ICcuL3BsdWdpbi5kZXYudHMnKTtcbiAgICBjb25zdCBwb3J0ID0gdGhpcy5vcHRpb25zLnBvcnQgfHwgZGV2Q29uZmlnPy5wb3J0IHx8IDM5OTk7XG5cbiAgICAvLyBDb25maWd1cmUgZGVmYXVsdHMgaW1tZWRpYXRlbHkgKG5vIGhvb2tzIG5lZWRlZClcbiAgICB0aGlzLmNvbmZpZ3VyZURlZmF1bHRzKGNvbXBpbGVyLCBwbHVnaW5JbmZvKTtcblxuICAgIC8vIEluaXRpYWxpemUgZGV2U2VydmVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlciA9IHt9O1xuICAgIH1cblxuICAgIC8vIENvbmZpZ3VyZSBkZXYgc2VydmVyXG4gICAgdGhpcy5jb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG5cbiAgICAvLyBBcHBseSBNb2R1bGUgRmVkZXJhdGlvbiBwbHVnaW5cbiAgICBuZXcgcnNwYWNrLmNvbnRhaW5lci5Nb2R1bGVGZWRlcmF0aW9uUGx1Z2luKHtcbiAgICAgIG5hbWU6IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWUsXG4gICAgICBmaWxlbmFtZTogJ3JlbW90ZUVudHJ5LmpzJyxcbiAgICAgIHJ1bnRpbWVQbHVnaW5zOiBbXG4gICAgICAgIHJlcXVpcmUucmVzb2x2ZSgnQG1vZHVsZS1mZWRlcmF0aW9uL25vZGUvcnVudGltZVBsdWdpbicpLFxuICAgICAgXSxcbiAgICAgIGxpYnJhcnk6IHsgdHlwZTogJ2NvbW1vbmpzLW1vZHVsZScgfSxcbiAgICAgIGV4cG9zZXM6IHtcbiAgICAgICAgJy4vcGx1Z2luJzogJy4vc3JjL2luZGV4LnRzJyxcbiAgICAgIH0sXG4gICAgICBzaGFyZWQ6IGJ1aWxkU2hhcmVkRGVwZW5kZW5jaWVzKHBsdWdpbkluZm8pLFxuICAgIH0pLmFwcGx5KGNvbXBpbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGVmYXVsdHMoY29tcGlsZXI6IENvbXBpbGVyLCBwbHVnaW5JbmZvOiBhbnkpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gY29tcGlsZXIub3B0aW9ucy5jb250ZXh0IHx8IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBDb25maWd1cmUgb3V0cHV0IGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm91dHB1dCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQudW5pcXVlTmFtZSA9IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQucHVibGljUGF0aCA9ICdhdXRvJztcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5wYXRoID0gcGF0aC5yZXNvbHZlKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQuY2xlYW4gPSB0cnVlO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LmxpYnJhcnkgPSB7IHR5cGU6ICdjb21tb25qcy1tb2R1bGUnIH07XG5cbiAgICAvLyBDb25maWd1cmUgZW50cnkgaWYgbm90IHNldFxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5lbnRyeSkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5lbnRyeSA9IHtcbiAgICAgICAgbWFpbjoge1xuICAgICAgICAgIGltcG9ydDogWycuL3NyYy9pbmRleCddXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIHRhcmdldCBhbmQgbW9kZSBkZWZhdWx0c1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy50YXJnZXQpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMudGFyZ2V0ID0gJ2FzeW5jLW5vZGUnO1xuICAgIH1cblxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2RlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZGUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyA/ICdkZXZlbG9wbWVudCcgOiAncHJvZHVjdGlvbic7XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIGRldnRvb2xcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2dG9vbCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5kZXZ0b29sID0gJ3NvdXJjZS1tYXAnO1xuICAgIH1cblxuICAgIC8vIFN1cHByZXNzIHZlcmJvc2UgaW5mcmFzdHJ1Y3R1cmUgbG9nZ2luZ1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5pbmZyYXN0cnVjdHVyZUxvZ2dpbmcpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMuaW5mcmFzdHJ1Y3R1cmVMb2dnaW5nID0ge1xuICAgICAgICBsZXZlbDogJ3dhcm4nLCAgLy8gT25seSBzaG93IHdhcm5pbmdzIGFuZCBlcnJvcnNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIG1vZHVsZSBydWxlcyAtIGVuc3VyZSBUeXBlU2NyaXB0IGxvYWRlciBpcyBwcmVzZW50XG4gICAgdGhpcy5lbnN1cmVUeXBlU2NyaXB0TG9hZGVyKGNvbXBpbGVyKTtcblxuICAgIC8vIENvbmZpZ3VyZSByZXNvbHZlIGV4dGVuc2lvbnNcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMucmVzb2x2ZSkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlID0ge307XG4gICAgfVxuICAgIGNvbXBpbGVyLm9wdGlvbnMucmVzb2x2ZS5leHRlbnNpb25zID0gWycuLi4nLCAnLnRzeCcsICcudHMnXTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlVHlwZVNjcmlwdExvYWRlcihjb21waWxlcjogQ29tcGlsZXIpIHtcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMubW9kdWxlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZHVsZSA9IHsgcnVsZXM6IFtdIH0gYXMgYW55O1xuICAgIH1cblxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2R1bGUucnVsZXMpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzID0gW107XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgVHlwZVNjcmlwdCBsb2FkZXIgaXMgYWxyZWFkeSBjb25maWd1cmVkXG4gICAgY29uc3QgaGFzVHNMb2FkZXIgPSBjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcy5zb21lKChydWxlOiBhbnkpID0+XG4gICAgICB0eXBlb2YgcnVsZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHJ1bGUgIT09IG51bGwgJiZcbiAgICAgICd0ZXN0JyBpbiBydWxlICYmXG4gICAgICBydWxlLnRlc3QgaW5zdGFuY2VvZiBSZWdFeHAgJiZcbiAgICAgIHJ1bGUudGVzdC50ZXN0KCcudHMnKVxuICAgICk7XG5cbiAgICAvLyBBZGQgVHlwZVNjcmlwdCBsb2FkZXIgaWYgbm90IHByZXNlbnRcbiAgICBpZiAoIWhhc1RzTG9hZGVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcy5wdXNoKHtcbiAgICAgICAgdGVzdDogL1xcLnRzeD8kLyxcbiAgICAgICAgdXNlOiAnYnVpbHRpbjpzd2MtbG9hZGVyJyxcbiAgICAgICAgZXhjbHVkZTogL25vZGVfbW9kdWxlcy8sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZURldlNlcnZlcihjb21waWxlcjogQ29tcGlsZXIsIHBsdWdpbkluZm86IGFueSwgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjsgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbiBkdWUgdG8gY2hlY2sgaW4gYXBwbHkoKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBvcmlnaW5hbFNldHVwID0gY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuc2V0dXBNaWRkbGV3YXJlcztcblxuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnBvcnQgPSBwb3J0O1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnN0YXRpYyA9IHBhdGguam9pbihjb250ZXh0LCAnZGlzdCcpO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmhvdCA9IHRydWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuZGV2TWlkZGxld2FyZSA9IHsgd3JpdGVUb0Rpc2s6IHRydWUgfTtcbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5oZWFkZXJzID0ge1xuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6ICcqJyxcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJzogJ1gtUmVxdWVzdGVkLVdpdGgsIGNvbnRlbnQtdHlwZSwgQXV0aG9yaXphdGlvbicsXG4gICAgfTtcblxuICAgIC8vIFN1cHByZXNzIHZlcmJvc2UgbG9nZ2luZ1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmNsaWVudCA9IHtcbiAgICAgIGxvZ2dpbmc6ICd3YXJuJywgIC8vIE9ubHkgc2hvdyB3YXJuaW5ncyBhbmQgZXJyb3JzXG4gICAgICBvdmVybGF5OiB7XG4gICAgICAgIHdhcm5pbmdzOiBmYWxzZSwgIC8vIERvbid0IHNob3cgd2FybmluZyBvdmVybGF5XG4gICAgICAgIGVycm9yczogdHJ1ZSwgICAgIC8vIFN0aWxsIHNob3cgZXJyb3JzXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBkZXZTZXJ2ZXIpID0+IHtcbiAgICAgIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG4gICAgICByZXR1cm4gb3JpZ2luYWxTZXR1cCA/IG9yaWdpbmFsU2V0dXAobWlkZGxld2FyZXMsIGRldlNlcnZlcikgOiBtaWRkbGV3YXJlcztcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFZQSxTQUFnQixjQUFjLFNBQTZCO0NBQ3pELE1BQU0sVUFBVUEsa0JBQUssS0FBSyxTQUFTLGVBQWU7Q0FDbEQsTUFBTSxNQUFNLEtBQUssTUFBTUMsZ0JBQUcsYUFBYSxTQUFTLFFBQVEsQ0FBQztBQUV6RCxRQUFPO0VBQ0wsTUFBTSxJQUFJO0VBQ1YsU0FBUyxJQUFJO0VBQ2IsZ0JBQWdCQywwQ0FBd0IsSUFBSSxLQUFLO0VBQ2pELGNBQWMsSUFBSSxnQkFBZ0IsRUFBRTtFQUNwQyxrQkFBa0IsSUFBSSxvQkFBb0IsRUFBRTtFQUM3Qzs7QUFHSCxNQUFNLGdDQUFnQixJQUFJLEtBQWE7QUFFdkMsU0FB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
|
|
363
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwibmFtZXMiOlsicGF0aCIsImZzIiwiZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUiLCJtb2R1bGUiLCJoYW5kbGVyczogeyBycGM6IGFueSwgYXBpOiBhbnkgfSIsImNsZWFudXA6ICgoKSA9PiBQcm9taXNlPHZvaWQ+KSB8IG51bGwiLCJsaW5lczogc3RyaW5nW10iLCJvcHRpb25zOiBFdmVyeVBsdWdpbk9wdGlvbnMiLCJyc3BhY2siLCJwYXRoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay91dGlscy50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svbW9kdWxlLWZlZGVyYXRpb24udHMiLCIuLi8uLi8uLi9zcmMvYnVpbGQvcnNwYWNrL2Rldi1zZXJ2ZXItbWlkZGxld2FyZS50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svcGx1Z2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUmVtb3RlTmFtZSB9IGZyb20gJ2V2ZXJ5LXBsdWdpbi9ub3JtYWxpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbm9ybWFsaXplZE5hbWU6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBwZWVyRGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luSW5mbyhjb250ZXh0OiBzdHJpbmcpOiBQbHVnaW5JbmZvIHtcbiAgY29uc3QgcGtnUGF0aCA9IHBhdGguam9pbihjb250ZXh0LCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBrZ1BhdGgsICd1dGYtOCcpKTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHBrZy5uYW1lLFxuICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgIG5vcm1hbGl6ZWROYW1lOiBnZXROb3JtYWxpemVkUmVtb3RlTmFtZShwa2cubmFtZSksXG4gICAgZGVwZW5kZW5jaWVzOiBwa2cuZGVwZW5kZW5jaWVzIHx8IHt9LFxuICAgIHBlZXJEZXBlbmRlbmNpZXM6IHBrZy5wZWVyRGVwZW5kZW5jaWVzIHx8IHt9LFxuICB9O1xufVxuXG5jb25zdCBsb2FkZWRNb2R1bGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGV2Q29uZmlnKGRldkNvbmZpZ1BhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKGRldkNvbmZpZ1BhdGgpO1xuICAgIFxuICAgIGlmIChsb2FkZWRNb2R1bGVzLmhhcyhmdWxsUGF0aCkpIHtcbiAgICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2Z1bGxQYXRoXTtcbiAgICAgIGNvbnN0IGRpclBhdGggPSBwYXRoLmRpcm5hbWUoZnVsbFBhdGgpO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVxdWlyZS5jYWNoZSkpIHtcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGRpclBhdGgpICYmIGtleSAhPT0gZnVsbFBhdGgpIHtcbiAgICAgICAgICBkZWxldGUgcmVxdWlyZS5jYWNoZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG1vZHVsZSA9IHJlcXVpcmUoZnVsbFBhdGgpLmRlZmF1bHQ7XG4gICAgbG9hZGVkTW9kdWxlcy5hZGQoZnVsbFBhdGgpO1xuICAgIHJldHVybiBtb2R1bGU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS53YXJuKGBDb3VsZCBub3QgbG9hZCBkZXYgY29uZmlnIGZyb20gJHtkZXZDb25maWdQYXRofTpgLCAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwRGV2Q29uZmlnKCkge1xuICBmb3IgKGNvbnN0IG1vZHVsZVBhdGggb2YgbG9hZGVkTW9kdWxlcykge1xuICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW21vZHVsZVBhdGhdO1xuICB9XG4gIGxvYWRlZE1vZHVsZXMuY2xlYXIoKTtcbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luSW5mbyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTaGFyZWREZXBlbmRlbmNpZXMocGx1Z2luSW5mbzogUGx1Z2luSW5mbykge1xuICAvLyBHZXQgZXZlcnktcGx1Z2luIHBhY2thZ2UgaW5mbyBmb3IgdmVyc2lvbiBjb25zdHJhaW50c1xuICBjb25zdCBldmVyeVBsdWdpblBrZyA9IHJlcXVpcmUoJ2V2ZXJ5LXBsdWdpbi9wYWNrYWdlLmpzb24nKTtcblxuICByZXR1cm4ge1xuICAgICdldmVyeS1wbHVnaW4nOiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy52ZXJzaW9uLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy52ZXJzaW9ufWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICAgIGVmZmVjdDoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdCxcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdH1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgICB6b2Q6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2QsXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2R9YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL2NvbnRyYWN0Jzoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzWydAb3JwYy9jb250cmFjdCddLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXNbJ0BvcnBjL2NvbnRyYWN0J119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL3NlcnZlcic6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ10sXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgY29yc0hlYWRlcnMgPSB7XG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnKicsXG4gICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJ1xufTtcblxuY29uc3QgYXBwbHlDb3JzSGVhZGVycyA9IChyZXM6IGFueSkgPT4ge1xuICBPYmplY3QuZW50cmllcyhjb3JzSGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgfSk7XG59O1xuXG5jb25zdCBub3JtYWxpemVQcmVmaXggPSAocHJlZml4Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFwcmVmaXgpIHJldHVybiAnJztcbiAgY29uc3QgY2xlYW5lZCA9IHByZWZpeC5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJyk7XG4gIHJldHVybiBjbGVhbmVkID8gYC8ke2NsZWFuZWR9YCA6ICcnO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXI6IGFueSwgcGx1Z2luSW5mbzogUGx1Z2luSW5mbywgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICBjb25zdCBycGNQcmVmaXggPSBub3JtYWxpemVQcmVmaXgoZGV2Q29uZmlnPy5wcmVmaXgpO1xuICBsZXQgaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0gPSB7IHJwYzogbnVsbCwgYXBpOiBudWxsIH07XG4gIGxldCBjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPikgfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBwZXJmb3JtQ2xlYW51cCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoY2xlYW51cCkge1xuICAgICAgYXdhaXQgY2xlYW51cCgpO1xuICAgICAgY2xlYW51cCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGNyZWF0ZVBsdWdpblJ1bnRpbWUgfSA9IGF3YWl0IGltcG9ydCgnZXZlcnktcGx1Z2luJyk7XG4gICAgICBjb25zdCB7IFJQQ0hhbmRsZXIgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyL2ZldGNoJyk7XG4gICAgICBjb25zdCB7IG9uRXJyb3IgfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvc2VydmVyJyk7XG4gICAgICBjb25zdCB7IE9wZW5BUElIYW5kbGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL29wZW5hcGkvZmV0Y2gnKTtcbiAgICAgIGNvbnN0IHsgT3BlbkFQSVJlZmVyZW5jZVBsdWdpbiB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy9vcGVuYXBpL3BsdWdpbnMnKTtcbiAgICAgIGNvbnN0IHsgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL3pvZC96b2Q0Jyk7XG5cbiAgICAgIGNvbnN0IHBsdWdpbklkID0gZGV2Q29uZmlnPy5wbHVnaW5JZCB8fCBwbHVnaW5JbmZvLm5vcm1hbGl6ZWROYW1lO1xuXG4gICAgICBjb25zdCBydW50aW1lID0gY3JlYXRlUGx1Z2luUnVudGltZSh7XG4gICAgICAgIHJlZ2lzdHJ5OiB7XG4gICAgICAgICAgW3BsdWdpbklkXToge1xuICAgICAgICAgICAgcmVtb3RlVXJsOiBgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L3JlbW90ZUVudHJ5LmpzYFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGxvYWRlZCA9IGF3YWl0IHJ1bnRpbWUudXNlUGx1Z2luKHBsdWdpbklkLCBkZXZDb25maWc/LmNvbmZpZyk7XG5cbiAgICAgIGNsZWFudXAgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkZWQgJiYgdHlwZW9mIChsb2FkZWQgYXMgYW55KS5kaXNwb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKGxvYWRlZCBhcyBhbnkpLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVudGltZSAmJiB0eXBlb2YgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgYXdhaXQgKHJ1bnRpbWUgYXMgYW55KS5jbGVhbnVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlcnMucnBjID0gbnVsbDtcbiAgICAgICAgaGFuZGxlcnMuYXBpID0gbnVsbDtcbiAgICAgICAgaWYgKGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmb3JtYXRFcnJvciA9IChlcnJvcjogYW55LCBjb250ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW2BcXG7wn5S0ICR7Y29udGV4dH0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcid9YF07XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/Lmlzc3VlcyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmNhdXNlLmlzc3VlcykpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OLIFZhbGlkYXRpb24gSXNzdWVzOicpO1xuICAgICAgICAgIGVycm9yLmNhdXNlLmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGAgICR7aW5kZXggKyAxfS4gJHtpc3N1ZS5wYXRoPy5qb2luKCcuJykgfHwgJ3Jvb3QnfWApO1xuICAgICAgICAgICAgbGluZXMucHVzaChgICAgICDilJzilIAgQ29kZTogJHtpc3N1ZS5jb2RlIHx8ICd1bmtub3duJ31gKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgICAg4pSc4pSAIE1lc3NhZ2U6ICR7aXNzdWUubWVzc2FnZSB8fCAnTm8gbWVzc2FnZSd9YCk7XG4gICAgICAgICAgICBpZiAoaXNzdWUuZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUnOKUgCBFeHBlY3RlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5leHBlY3RlZCl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNzdWUucmVjZWl2ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCBSZWNlaXZlZDogJHtKU09OLnN0cmluZ2lmeShpc3N1ZS5yZWNlaXZlZCl9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAgICAgIOKUlOKUgCAoZW5kKWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuZGF0YSAmJiB0eXBlb2YgZXJyb3IuZGF0YSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoZXJyb3IuZGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goJ1xcbvCfk4ogRXJyb3IgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY2F1c2U/LmRhdGEpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCdcXG7wn5OmIFJlcXVlc3QgRGF0YTonKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IEpTT04uc3RyaW5naWZ5KGVycm9yLmNhdXNlLmRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgICAgZGF0YVN0ci5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICAgICAgbGluZXMucHVzaChgICAke2xpbmV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYCAgJHtTdHJpbmcoZXJyb3IuY2F1c2UuZGF0YSl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3IuY29kZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFxcbuKaoO+4jyAgRXJyb3IgQ29kZTogJHtlcnJvci5jb2RlfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICAgICAgbGluZXMucHVzaChg8J+TjSBTdGF0dXM6ICR7ZXJyb3Iuc3RhdHVzfWApO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihsaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgICB9O1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5vIHR5cGVcbiAgICAgIGhhbmRsZXJzLnJwYyA9IG5ldyBSUENIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgaW50ZXJjZXB0b3JzOiBbXG4gICAgICAgICAgb25FcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgZm9ybWF0RXJyb3IoZXJyb3IsICdSUEMnKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igbm8gdHlwZVxuICAgICAgaGFuZGxlcnMuYXBpID0gbmV3IE9wZW5BUElIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIG5ldyBPcGVuQVBJUmVmZXJlbmNlUGx1Z2luKHtcbiAgICAgICAgICAgIHNjaGVtYUNvbnZlcnRlcnM6IFtuZXcgWm9kVG9Kc29uU2NoZW1hQ29udmVydGVyKCldLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBpbnRlcmNlcHRvcnM6IFtcbiAgICAgICAgICBvbkVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBmb3JtYXRFcnJvcihlcnJvciwgJ09wZW5BUEknKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKGDila3ilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIOKchSBQbHVnaW4gZGV2IHNlcnZlciByZWFkeTogYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5OhIFJQQzogICAgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2FwaS9ycGMke3JwY1ByZWZpeH1gKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilIIgIPCfk5YgRG9jczogICBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0vYXBpYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5KaIEhlYWx0aDogaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2ApO1xuICAgICAgY29uc29sZS5sb2coYOKVsOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgGApO1xuXG4gICAgICBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycyA9IGhhbmRsZXJzO1xuXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlcikge1xuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLm9uY2UoJ2Nsb3NlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCfinYwgRmFpbGVkIHRvIGxvYWQgcGx1Z2luOicsIGVycm9yKTtcbiAgICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gICAgfVxuICB9KSgpO1xuXG4gIHByb2Nlc3Mub25jZSgnU0lHSU5UJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHBlcmZvcm1DbGVhbnVwKCk7XG4gIH0pO1xuICBwcm9jZXNzLm9uY2UoJ1NJR1RFUk0nLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcGVyZm9ybUNsZWFudXAoKTtcbiAgfSk7XG5cbiAgZGV2U2VydmVyLmFwcC5vcHRpb25zKCcqJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuc3RhdHVzKDIwMCkuZW5kKCk7XG4gIH0pO1xuXG4gIGRldlNlcnZlci5hcHAuZ2V0KCcvJywgKHJlcTogYW55LCByZXM6IGFueSkgPT4ge1xuICAgIGFwcGx5Q29yc0hlYWRlcnMocmVzKTtcbiAgICByZXMuanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBsdWdpbjogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIHZlcnNpb246IHBsdWdpbkluZm8udmVyc2lvbixcbiAgICAgIHN0YXR1czogZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnM/LnJwYyA/ICdyZWFkeScgOiAnbG9hZGluZycsXG4gICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgaGVhbHRoOiAnLycsXG4gICAgICAgIGRvY3M6ICcvYXBpJyxcbiAgICAgICAgcnBjOiBgL2FwaS9ycGMke3JwY1ByZWZpeH1gXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBhbmQgUkVTVCBlbmRwb2ludHMgYXQgL2FwaSBhbmQgL2FwaS8qXG4gIGNvbnN0IGhhbmRsZUFwaVJlcXVlc3QgPSBhc3luYyAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgYXBwbHlDb3JzSGVhZGVycyhyZXMpO1xuICAgIGNvbnN0IGFwaUhhbmRsZXIgPSBkZXZTZXJ2ZXIuYXBwLmxvY2Fscy5oYW5kbGVycz8uYXBpO1xuICAgIGlmICghYXBpSGFuZGxlcikge1xuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAzKS5qc29uKHsgZXJyb3I6ICdQbHVnaW4gc3RpbGwgbG9hZGluZy4uLicgfSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IGBodHRwOi8vJHtyZXEuaGVhZGVycy5ob3N0fSR7cmVxLnVybH1gO1xuICAgICAgY29uc3Qgd2ViUmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybCwge1xuICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLFxuICAgICAgICBib2R5OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyByZXEgOiB1bmRlZmluZWQsXG4gICAgICAgIGR1cGxleDogcmVxLm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxLm1ldGhvZCAhPT0gJ0hFQUQnID8gJ2hhbGYnIDogdW5kZWZpbmVkXG4gICAgICB9IGFzIFJlcXVlc3RJbml0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBpSGFuZGxlci5oYW5kbGUod2ViUmVxdWVzdCwge1xuICAgICAgICBwcmVmaXg6ICcvYXBpJyxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignT3BlbkFQSSBlcnJvcjonLCBlcnJvcik7XG4gICAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7IGVycm9yOiAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UgfSk7XG4gICAgfVxuICB9O1xuXG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpJywgaGFuZGxlQXBpUmVxdWVzdCk7XG4gIGRldlNlcnZlci5hcHAuYWxsKCcvYXBpLyonLCBoYW5kbGVBcGlSZXF1ZXN0KTtcblxuICBkZXZTZXJ2ZXIuYXBwLmFsbChgL2FwaS9ycGMke3JwY1ByZWZpeH0vKmAsIGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnkpID0+IHtcbiAgICBhcHBseUNvcnNIZWFkZXJzKHJlcyk7XG4gICAgY29uc3QgcnBjSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5ycGM7XG4gICAgaWYgKCFycGNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZHVwbGV4OiByZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcgPyAnaGFsZicgOiB1bmRlZmluZWRcbiAgICAgIH0gYXMgUmVxdWVzdEluaXQpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGNIYW5kbGVyLmhhbmRsZSh3ZWJSZXF1ZXN0LCB7XG4gICAgICAgIHByZWZpeDogYC9hcGkvcnBjJHtycGNQcmVmaXh9YCxcbiAgICAgICAgY29udGV4dDoge31cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzLmZvckVhY2goKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXN1bHQucmVzcG9uc2UudGV4dCgpO1xuICAgICAgICByZXMuc2VuZCh0ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDA0KS5zZW5kKCdOb3QgRm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignUlBDIGVycm9yOicsIGVycm9yKTtcbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHsgZXJyb3I6IChlcnJvciBhcyBFcnJvcikubWVzc2FnZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuIiwiaW1wb3J0IHR5cGUgeyBDb21waWxlciwgUnNwYWNrUGx1Z2luSW5zdGFuY2UgfSBmcm9tICdAcnNwYWNrL2NvcmUnO1xuaW1wb3J0IHsgcnNwYWNrIH0gZnJvbSAnQHJzcGFjay9jb3JlJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBnZXRQbHVnaW5JbmZvIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBsb2FkRGV2Q29uZmlnIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBidWlsZFNoYXJlZERlcGVuZGVuY2llcyB9IGZyb20gJy4vbW9kdWxlLWZlZGVyYXRpb24nO1xuaW1wb3J0IHsgc2V0dXBQbHVnaW5NaWRkbGV3YXJlIH0gZnJvbSAnLi9kZXYtc2VydmVyLW1pZGRsZXdhcmUnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlcnlQbHVnaW5PcHRpb25zIHtcbiAgZGV2Q29uZmlnUGF0aD86IHN0cmluZzsgIC8vIGRlZmF1bHRzIHRvICcuL3BsdWdpbi5kZXYudHMnXG4gIHBvcnQ/OiBudW1iZXI7ICAgICAgICAgICAvLyBvdmVycmlkZSBwbHVnaW4uZGV2LnRzIHBvcnRcbiAgcGx1Z2luSWQ/OiBzdHJpbmc7ICAgICAgIC8vIG92ZXJyaWRlIGF1dG8tZGV0ZWN0ZWRcbn1cblxuZXhwb3J0IGNsYXNzIEV2ZXJ5UGx1Z2luRGV2U2VydmVyIGltcGxlbWVudHMgUnNwYWNrUGx1Z2luSW5zdGFuY2Uge1xuICBuYW1lID0gJ0V2ZXJ5UGx1Z2luRGV2U2VydmVyJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM6IEV2ZXJ5UGx1Z2luT3B0aW9ucyA9IHt9KSB7fVxuXG4gIGFwcGx5KGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIC8vIExvYWQgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IHBsdWdpbkluZm8gPSBnZXRQbHVnaW5JbmZvKGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpKTtcbiAgICBjb25zdCBkZXZDb25maWcgPSBsb2FkRGV2Q29uZmlnKHRoaXMub3B0aW9ucy5kZXZDb25maWdQYXRoIHx8ICcuL3BsdWdpbi5kZXYudHMnKTtcbiAgICBjb25zdCBwb3J0ID0gdGhpcy5vcHRpb25zLnBvcnQgfHwgZGV2Q29uZmlnPy5wb3J0IHx8IDM5OTk7XG5cbiAgICAvLyBDb25maWd1cmUgZGVmYXVsdHMgaW1tZWRpYXRlbHkgKG5vIGhvb2tzIG5lZWRlZClcbiAgICB0aGlzLmNvbmZpZ3VyZURlZmF1bHRzKGNvbXBpbGVyLCBwbHVnaW5JbmZvKTtcblxuICAgIC8vIEluaXRpYWxpemUgZGV2U2VydmVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlciA9IHt9O1xuICAgIH1cblxuICAgIC8vIENvbmZpZ3VyZSBkZXYgc2VydmVyXG4gICAgdGhpcy5jb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG5cbiAgICAvLyBBcHBseSBNb2R1bGUgRmVkZXJhdGlvbiBwbHVnaW5cbiAgICBuZXcgcnNwYWNrLmNvbnRhaW5lci5Nb2R1bGVGZWRlcmF0aW9uUGx1Z2luKHtcbiAgICAgIG5hbWU6IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWUsXG4gICAgICBmaWxlbmFtZTogJ3JlbW90ZUVudHJ5LmpzJyxcbiAgICAgIHJ1bnRpbWVQbHVnaW5zOiBbXG4gICAgICAgIHJlcXVpcmUucmVzb2x2ZSgnQG1vZHVsZS1mZWRlcmF0aW9uL25vZGUvcnVudGltZVBsdWdpbicpLFxuICAgICAgXSxcbiAgICAgIGxpYnJhcnk6IHsgdHlwZTogJ2NvbW1vbmpzLW1vZHVsZScgfSxcbiAgICAgIGV4cG9zZXM6IHtcbiAgICAgICAgJy4vcGx1Z2luJzogJy4vc3JjL2luZGV4LnRzJyxcbiAgICAgIH0sXG4gICAgICBzaGFyZWQ6IGJ1aWxkU2hhcmVkRGVwZW5kZW5jaWVzKHBsdWdpbkluZm8pLFxuICAgIH0pLmFwcGx5KGNvbXBpbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGVmYXVsdHMoY29tcGlsZXI6IENvbXBpbGVyLCBwbHVnaW5JbmZvOiBhbnkpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gY29tcGlsZXIub3B0aW9ucy5jb250ZXh0IHx8IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBDb25maWd1cmUgb3V0cHV0IGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm91dHB1dCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQudW5pcXVlTmFtZSA9IHBsdWdpbkluZm8ubm9ybWFsaXplZE5hbWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQucHVibGljUGF0aCA9ICdhdXRvJztcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5wYXRoID0gcGF0aC5yZXNvbHZlKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQuY2xlYW4gPSB0cnVlO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LmxpYnJhcnkgPSB7IHR5cGU6ICdjb21tb25qcy1tb2R1bGUnIH07XG5cbiAgICAvLyBDb25maWd1cmUgZW50cnkgaWYgbm90IHNldFxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5lbnRyeSkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5lbnRyeSA9IHtcbiAgICAgICAgbWFpbjoge1xuICAgICAgICAgIGltcG9ydDogWycuL3NyYy9pbmRleCddXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIHRhcmdldCBhbmQgbW9kZSBkZWZhdWx0c1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy50YXJnZXQpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMudGFyZ2V0ID0gJ2FzeW5jLW5vZGUnO1xuICAgIH1cblxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2RlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZGUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyA/ICdkZXZlbG9wbWVudCcgOiAncHJvZHVjdGlvbic7XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIGRldnRvb2xcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMuZGV2dG9vbCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5kZXZ0b29sID0gJ3NvdXJjZS1tYXAnO1xuICAgIH1cblxuICAgIC8vIFN1cHByZXNzIHZlcmJvc2UgaW5mcmFzdHJ1Y3R1cmUgbG9nZ2luZ1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5pbmZyYXN0cnVjdHVyZUxvZ2dpbmcpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMuaW5mcmFzdHJ1Y3R1cmVMb2dnaW5nID0ge1xuICAgICAgICBsZXZlbDogJ3dhcm4nLCAgLy8gT25seSBzaG93IHdhcm5pbmdzIGFuZCBlcnJvcnNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIG1vZHVsZSBydWxlcyAtIGVuc3VyZSBUeXBlU2NyaXB0IGxvYWRlciBpcyBwcmVzZW50XG4gICAgdGhpcy5lbnN1cmVUeXBlU2NyaXB0TG9hZGVyKGNvbXBpbGVyKTtcblxuICAgIC8vIENvbmZpZ3VyZSByZXNvbHZlIGV4dGVuc2lvbnNcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMucmVzb2x2ZSkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlID0ge307XG4gICAgfVxuICAgIGNvbXBpbGVyLm9wdGlvbnMucmVzb2x2ZS5leHRlbnNpb25zID0gWycuLi4nLCAnLnRzeCcsICcudHMnXTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlVHlwZVNjcmlwdExvYWRlcihjb21waWxlcjogQ29tcGlsZXIpIHtcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMubW9kdWxlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZHVsZSA9IHsgcnVsZXM6IFtdIH0gYXMgYW55O1xuICAgIH1cblxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2R1bGUucnVsZXMpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzID0gW107XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgVHlwZVNjcmlwdCBsb2FkZXIgaXMgYWxyZWFkeSBjb25maWd1cmVkXG4gICAgY29uc3QgaGFzVHNMb2FkZXIgPSBjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcy5zb21lKChydWxlOiBhbnkpID0+XG4gICAgICB0eXBlb2YgcnVsZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHJ1bGUgIT09IG51bGwgJiZcbiAgICAgICd0ZXN0JyBpbiBydWxlICYmXG4gICAgICBydWxlLnRlc3QgaW5zdGFuY2VvZiBSZWdFeHAgJiZcbiAgICAgIHJ1bGUudGVzdC50ZXN0KCcudHMnKVxuICAgICk7XG5cbiAgICAvLyBBZGQgVHlwZVNjcmlwdCBsb2FkZXIgaWYgbm90IHByZXNlbnRcbiAgICBpZiAoIWhhc1RzTG9hZGVyKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcy5wdXNoKHtcbiAgICAgICAgdGVzdDogL1xcLnRzeD8kLyxcbiAgICAgICAgdXNlOiAnYnVpbHRpbjpzd2MtbG9hZGVyJyxcbiAgICAgICAgZXhjbHVkZTogL25vZGVfbW9kdWxlcy8sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZURldlNlcnZlcihjb21waWxlcjogQ29tcGlsZXIsIHBsdWdpbkluZm86IGFueSwgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjsgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbiBkdWUgdG8gY2hlY2sgaW4gYXBwbHkoKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBvcmlnaW5hbFNldHVwID0gY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuc2V0dXBNaWRkbGV3YXJlcztcblxuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnBvcnQgPSBwb3J0O1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnN0YXRpYyA9IHBhdGguam9pbihjb250ZXh0LCAnZGlzdCcpO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmhvdCA9IHRydWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuZGV2TWlkZGxld2FyZSA9IHsgd3JpdGVUb0Rpc2s6IHRydWUgfTtcbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5oZWFkZXJzID0ge1xuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6ICcqJyxcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyxcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJzogJ1gtUmVxdWVzdGVkLVdpdGgsIGNvbnRlbnQtdHlwZSwgQXV0aG9yaXphdGlvbicsXG4gICAgfTtcblxuICAgIC8vIFN1cHByZXNzIHZlcmJvc2UgbG9nZ2luZ1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmNsaWVudCA9IHtcbiAgICAgIGxvZ2dpbmc6ICd3YXJuJywgIC8vIE9ubHkgc2hvdyB3YXJuaW5ncyBhbmQgZXJyb3JzXG4gICAgICBvdmVybGF5OiB7XG4gICAgICAgIHdhcm5pbmdzOiBmYWxzZSwgIC8vIERvbid0IHNob3cgd2FybmluZyBvdmVybGF5XG4gICAgICAgIGVycm9yczogdHJ1ZSwgICAgIC8vIFN0aWxsIHNob3cgZXJyb3JzXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBkZXZTZXJ2ZXIpID0+IHtcbiAgICAgIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXIsIHBsdWdpbkluZm8sIGRldkNvbmZpZywgcG9ydCk7XG4gICAgICByZXR1cm4gb3JpZ2luYWxTZXR1cCA/IG9yaWdpbmFsU2V0dXAobWlkZGxld2FyZXMsIGRldlNlcnZlcikgOiBtaWRkbGV3YXJlcztcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFZQSxTQUFnQixjQUFjLFNBQTZCO0NBQ3pELE1BQU0sVUFBVUEsa0JBQUssS0FBSyxTQUFTLGVBQWU7Q0FDbEQsTUFBTSxNQUFNLEtBQUssTUFBTUMsZ0JBQUcsYUFBYSxTQUFTLFFBQVEsQ0FBQztBQUV6RCxRQUFPO0VBQ0wsTUFBTSxJQUFJO0VBQ1YsU0FBUyxJQUFJO0VBQ2IsZ0JBQWdCQywwQ0FBd0IsSUFBSSxLQUFLO0VBQ2pELGNBQWMsSUFBSSxnQkFBZ0IsRUFBRTtFQUNwQyxrQkFBa0IsSUFBSSxvQkFBb0IsRUFBRTtFQUM3Qzs7QUFHSCxNQUFNLGdDQUFnQixJQUFJLEtBQWE7QUFFdkMsU0FB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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as __require } from "../../chunk-QQAxy9l9.mjs";
|
|
2
2
|
import { t as getNormalizedRemoteName } from "../../normalize-D7nae0Hn.mjs";
|
|
3
|
-
import { t as require_package } from "../../package-
|
|
3
|
+
import { t as require_package } from "../../package-uEsV9Z-2.mjs";
|
|
4
4
|
import { rspack } from "@rspack/core";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import fs from "node:fs";
|
|
@@ -114,9 +114,9 @@ function setupPluginMiddleware(devServer, pluginInfo, devConfig, port) {
|
|
|
114
114
|
const { createPluginRuntime } = await import("../../index.mjs");
|
|
115
115
|
const { RPCHandler } = await import("@orpc/server/fetch");
|
|
116
116
|
const { onError } = await import("@orpc/server");
|
|
117
|
-
const { OpenAPIHandler } = await import("../../fetch-
|
|
118
|
-
const { OpenAPIReferencePlugin } = await import("../../plugins-
|
|
119
|
-
const { ZodToJsonSchemaConverter } = await import("
|
|
117
|
+
const { OpenAPIHandler } = await import("../../fetch-ycs0raYN.mjs");
|
|
118
|
+
const { OpenAPIReferencePlugin } = await import("../../plugins-hpi2GlaX.mjs");
|
|
119
|
+
const { ZodToJsonSchemaConverter } = await import("@orpc/zod/zod4");
|
|
120
120
|
const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;
|
|
121
121
|
const runtime = createPluginRuntime({ registry: { [pluginId]: { remoteUrl: `http://localhost:${port}/remoteEntry.js` } } });
|
|
122
122
|
const loaded = await runtime.usePlugin(pluginId, devConfig?.config);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_zod = require('./zod-
|
|
1
|
+
const require_zod = require('./zod-CJY4vNLR.cjs');
|
|
2
2
|
|
|
3
3
|
//#region src/errors.ts
|
|
4
4
|
/**
|
|
@@ -65,4 +65,4 @@ Object.defineProperty(exports, 'CommonPluginErrors', {
|
|
|
65
65
|
return CommonPluginErrors;
|
|
66
66
|
}
|
|
67
67
|
});
|
|
68
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLUJFc0VQWEtHLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvZXJyb3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiLi96b2RcIjtcblxuLyoqXG4gKiBDb21tb24gZXJyb3Igc2NoZW1hcyBmb3IgcGx1Z2luIGNvbnRyYWN0cy5cbiAqIEltcG9ydCB0aGVzZSB0byBlbnN1cmUgY29uc2lzdGVudCBlcnJvciBoYW5kbGluZyBhY3Jvc3MgcGx1Z2lucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQ29tbW9uUGx1Z2luRXJyb3JzIH0gZnJvbSBcImV2ZXJ5LXBsdWdpbi9lcnJvcnNcIjtcbiAqXG4gKiBleHBvcnQgY29uc3QgY29udHJhY3QgPSBvYy5yb3V0ZXIoe1xuICogICBnZXREYXRhOiBvYy5yb3V0ZSguLi4pXG4gKiAgICAgLmVycm9ycyhDb21tb25QbHVnaW5FcnJvcnMpXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgQ29tbW9uUGx1Z2luRXJyb3JzID0ge1xuXHRVTkFVVEhPUklaRUQ6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRhcGlLZXlQcm92aWRlZDogei5ib29sZWFuKCksXG5cdFx0XHRwcm92aWRlcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXHRcdFx0YXV0aFR5cGU6IHouZW51bShbJ2FwaUtleScsICdvYXV0aCcsICd0b2tlbiddKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdFJBVEVfTElNSVRFRDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuXHRcdFx0cmVtYWluaW5nUmVxdWVzdHM6IHoubnVtYmVyKCkuaW50KCkubWluKDApLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNldFRpbWU6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5vcHRpb25hbCgpLFxuXHRcdFx0bGltaXRUeXBlOiB6LmVudW0oWydyZXF1ZXN0cycsICd0b2tlbnMnLCAnYmFuZHdpZHRoJ10pLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0U0VSVklDRV9VTkFWQUlMQUJMRToge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkub3B0aW9uYWwoKSxcblx0XHRcdG1haW50ZW5hbmNlV2luZG93OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcblx0XHRcdGVzdGltYXRlZFVwdGltZTogei5zdHJpbmcoKS5kYXRldGltZSgpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0QkFEX1JFUVVFU1Q6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRpbnZhbGlkRmllbGRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG5cdFx0XHR2YWxpZGF0aW9uRXJyb3JzOiB6LmFycmF5KHoub2JqZWN0KHtcblx0XHRcdFx0ZmllbGQ6IHouc3RyaW5nKCksXG5cdFx0XHRcdG1lc3NhZ2U6IHouc3RyaW5nKCksXG5cdFx0XHRcdGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcblx0XHRcdH0pKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdE5PVF9GT1VORDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJlc291cmNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNvdXJjZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0Rk9SQklEREVOOiB7XG5cdFx0ZGF0YTogei5vYmplY3Qoe1xuXHRcdFx0cmVxdWlyZWRQZXJtaXNzaW9uczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuXHRcdFx0YWN0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fVxufSBhcyBjb25zdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxxQkFBcUI7Q0FDakMsY0FBYyxFQUNiLDhCQUFNLEVBQUUsT0FBTztFQUNkLHdDQUFnQixFQUFFLFNBQVM7RUFDM0Isa0NBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtFQUMvQixrQ0FBVSxFQUFFLEtBQUs7R0FBQztHQUFVO0dBQVM7R0FBUSxDQUFDLENBQUMsVUFBVTtFQUN6RCxDQUFDLEVBQ0Y7Q0FDRCxjQUFjLEVBQ2IsOEJBQU0sRUFBRSxPQUFPO0VBQ2Qsb0NBQVksRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtFQUNuQywyQ0FBbUIsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVU7RUFDckQsbUNBQVcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVU7RUFDM0MsbUNBQVcsRUFBRSxLQUFLO0dBQUM7R0FBWTtHQUFVO0dBQVksQ0FBQyxDQUFDLFVBQVU7RUFDakUsQ0FBQyxFQUNGO0NBQ0QscUJBQXFCLEVBQ3BCLDhCQUFNLEVBQUUsT0FBTztFQUNkLG9DQUFZLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVO0VBQ3ZDLDJDQUFtQixFQUFFLFNBQVMsQ0FBQyxRQUFRLE1BQU07RUFDN0MseUNBQWlCLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxVQUFVO0VBQ2pELENBQUMsRUFDRjtDQUNELGFBQWEsRUFDWiw4QkFBTSxFQUFFLE9BQU87RUFDZCx1Q0FBZSxFQUFFLDhCQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsVUFBVTtFQUM3QywwQ0FBa0IsRUFBRSw4QkFBTSxFQUFFLE9BQU87R0FDbEMsK0JBQU8sRUFBRSxRQUFRO0dBQ2pCLGlDQUFTLEVBQUUsUUFBUTtHQUNuQiw4QkFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVO0dBQzNCLENBQUMsQ0FBQyxDQUFDLFVBQVU7RUFDZCxDQUFDLEVBQ0Y7Q0FDRCxXQUFXLEVBQ1YsOEJBQU0sRUFBRSxPQUFPO0VBQ2Qsa0NBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtFQUMvQixvQ0FBWSxFQUFFLFFBQVEsQ0FBQyxVQUFVO0VBQ2pDLENBQUMsRUFDRjtDQUNELFdBQVcsRUFDViw4QkFBTSxFQUFFLE9BQU87RUFDZCw2Q0FBcUIsRUFBRSw4QkFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDbkQsZ0NBQVEsRUFBRSxRQUFRLENBQUMsVUFBVTtFQUM3QixDQUFDLEVBQ0Y7Q0FDRCJ9
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region src/errors.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Common error schemas for plugin contracts.
|
|
4
|
+
* Import these to ensure consistent error handling across plugins.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { CommonPluginErrors } from "every-plugin/errors";
|
|
9
|
+
*
|
|
10
|
+
* export const contract = oc.router({
|
|
11
|
+
* getData: oc.route(...)
|
|
12
|
+
* .errors(CommonPluginErrors)
|
|
13
|
+
* });
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare const CommonPluginErrors: {
|
|
17
|
+
readonly UNAUTHORIZED: {
|
|
18
|
+
readonly data: any;
|
|
19
|
+
};
|
|
20
|
+
readonly RATE_LIMITED: {
|
|
21
|
+
readonly data: any;
|
|
22
|
+
};
|
|
23
|
+
readonly SERVICE_UNAVAILABLE: {
|
|
24
|
+
readonly data: any;
|
|
25
|
+
};
|
|
26
|
+
readonly BAD_REQUEST: {
|
|
27
|
+
readonly data: any;
|
|
28
|
+
};
|
|
29
|
+
readonly NOT_FOUND: {
|
|
30
|
+
readonly data: any;
|
|
31
|
+
};
|
|
32
|
+
readonly FORBIDDEN: {
|
|
33
|
+
readonly data: any;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
//#endregion
|
|
37
|
+
export { CommonPluginErrors as t };
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLUNwWXpEXy1NLmQuY3RzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkE7Ozs7Ozs7Ozs7Ozs7Y0FBYSJ9
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region src/errors.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Common error schemas for plugin contracts.
|
|
4
|
+
* Import these to ensure consistent error handling across plugins.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { CommonPluginErrors } from "every-plugin/errors";
|
|
9
|
+
*
|
|
10
|
+
* export const contract = oc.router({
|
|
11
|
+
* getData: oc.route(...)
|
|
12
|
+
* .errors(CommonPluginErrors)
|
|
13
|
+
* });
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare const CommonPluginErrors: {
|
|
17
|
+
readonly UNAUTHORIZED: {
|
|
18
|
+
readonly data: any;
|
|
19
|
+
};
|
|
20
|
+
readonly RATE_LIMITED: {
|
|
21
|
+
readonly data: any;
|
|
22
|
+
};
|
|
23
|
+
readonly SERVICE_UNAVAILABLE: {
|
|
24
|
+
readonly data: any;
|
|
25
|
+
};
|
|
26
|
+
readonly BAD_REQUEST: {
|
|
27
|
+
readonly data: any;
|
|
28
|
+
};
|
|
29
|
+
readonly NOT_FOUND: {
|
|
30
|
+
readonly data: any;
|
|
31
|
+
};
|
|
32
|
+
readonly FORBIDDEN: {
|
|
33
|
+
readonly data: any;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
//#endregion
|
|
37
|
+
export { CommonPluginErrors as t };
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLUQyLXRoSEtHLmQubXRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkE7Ozs7Ozs7Ozs7Ozs7Y0FBYSJ9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as zod_exports } from "./zod-
|
|
1
|
+
import { t as zod_exports } from "./zod-BDDjyyHQ.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/errors.ts
|
|
4
4
|
/**
|
|
@@ -60,4 +60,4 @@ const CommonPluginErrors = {
|
|
|
60
60
|
|
|
61
61
|
//#endregion
|
|
62
62
|
export { CommonPluginErrors as t };
|
|
63
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLURuaWdJQ0l2Lm1qcyIsIm5hbWVzIjpbInoiXSwic291cmNlcyI6WyIuLi9zcmMvZXJyb3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiLi96b2RcIjtcblxuLyoqXG4gKiBDb21tb24gZXJyb3Igc2NoZW1hcyBmb3IgcGx1Z2luIGNvbnRyYWN0cy5cbiAqIEltcG9ydCB0aGVzZSB0byBlbnN1cmUgY29uc2lzdGVudCBlcnJvciBoYW5kbGluZyBhY3Jvc3MgcGx1Z2lucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQ29tbW9uUGx1Z2luRXJyb3JzIH0gZnJvbSBcImV2ZXJ5LXBsdWdpbi9lcnJvcnNcIjtcbiAqXG4gKiBleHBvcnQgY29uc3QgY29udHJhY3QgPSBvYy5yb3V0ZXIoe1xuICogICBnZXREYXRhOiBvYy5yb3V0ZSguLi4pXG4gKiAgICAgLmVycm9ycyhDb21tb25QbHVnaW5FcnJvcnMpXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgQ29tbW9uUGx1Z2luRXJyb3JzID0ge1xuXHRVTkFVVEhPUklaRUQ6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRhcGlLZXlQcm92aWRlZDogei5ib29sZWFuKCksXG5cdFx0XHRwcm92aWRlcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXHRcdFx0YXV0aFR5cGU6IHouZW51bShbJ2FwaUtleScsICdvYXV0aCcsICd0b2tlbiddKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdFJBVEVfTElNSVRFRDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuXHRcdFx0cmVtYWluaW5nUmVxdWVzdHM6IHoubnVtYmVyKCkuaW50KCkubWluKDApLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNldFRpbWU6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5vcHRpb25hbCgpLFxuXHRcdFx0bGltaXRUeXBlOiB6LmVudW0oWydyZXF1ZXN0cycsICd0b2tlbnMnLCAnYmFuZHdpZHRoJ10pLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0U0VSVklDRV9VTkFWQUlMQUJMRToge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkub3B0aW9uYWwoKSxcblx0XHRcdG1haW50ZW5hbmNlV2luZG93OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcblx0XHRcdGVzdGltYXRlZFVwdGltZTogei5zdHJpbmcoKS5kYXRldGltZSgpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0QkFEX1JFUVVFU1Q6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRpbnZhbGlkRmllbGRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG5cdFx0XHR2YWxpZGF0aW9uRXJyb3JzOiB6LmFycmF5KHoub2JqZWN0KHtcblx0XHRcdFx0ZmllbGQ6IHouc3RyaW5nKCksXG5cdFx0XHRcdG1lc3NhZ2U6IHouc3RyaW5nKCksXG5cdFx0XHRcdGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcblx0XHRcdH0pKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdE5PVF9GT1VORDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJlc291cmNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNvdXJjZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0Rk9SQklEREVOOiB7XG5cdFx0ZGF0YTogei5vYmplY3Qoe1xuXHRcdFx0cmVxdWlyZWRQZXJtaXNzaW9uczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuXHRcdFx0YWN0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fVxufSBhcyBjb25zdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxxQkFBcUI7Q0FDakMsY0FBYyxFQUNiLE1BQU1BLGNBQUUsT0FBTztFQUNkLGdCQUFnQkEsY0FBRSxTQUFTO0VBQzNCLFVBQVVBLGNBQUUsUUFBUSxDQUFDLFVBQVU7RUFDL0IsVUFBVUEsY0FBRSxLQUFLO0dBQUM7R0FBVTtHQUFTO0dBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDekQsQ0FBQyxFQUNGO0NBQ0QsY0FBYyxFQUNiLE1BQU1BLGNBQUUsT0FBTztFQUNkLFlBQVlBLGNBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7RUFDbkMsbUJBQW1CQSxjQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVTtFQUNyRCxXQUFXQSxjQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVTtFQUMzQyxXQUFXQSxjQUFFLEtBQUs7R0FBQztHQUFZO0dBQVU7R0FBWSxDQUFDLENBQUMsVUFBVTtFQUNqRSxDQUFDLEVBQ0Y7Q0FDRCxxQkFBcUIsRUFDcEIsTUFBTUEsY0FBRSxPQUFPO0VBQ2QsWUFBWUEsY0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVU7RUFDdkMsbUJBQW1CQSxjQUFFLFNBQVMsQ0FBQyxRQUFRLE1BQU07RUFDN0MsaUJBQWlCQSxjQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVTtFQUNqRCxDQUFDLEVBQ0Y7Q0FDRCxhQUFhLEVBQ1osTUFBTUEsY0FBRSxPQUFPO0VBQ2QsZUFBZUEsY0FBRSxNQUFNQSxjQUFFLFFBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDN0Msa0JBQWtCQSxjQUFFLE1BQU1BLGNBQUUsT0FBTztHQUNsQyxPQUFPQSxjQUFFLFFBQVE7R0FDakIsU0FBU0EsY0FBRSxRQUFRO0dBQ25CLE1BQU1BLGNBQUUsUUFBUSxDQUFDLFVBQVU7R0FDM0IsQ0FBQyxDQUFDLENBQUMsVUFBVTtFQUNkLENBQUMsRUFDRjtDQUNELFdBQVcsRUFDVixNQUFNQSxjQUFFLE9BQU87RUFDZCxVQUFVQSxjQUFFLFFBQVEsQ0FBQyxVQUFVO0VBQy9CLFlBQVlBLGNBQUUsUUFBUSxDQUFDLFVBQVU7RUFDakMsQ0FBQyxFQUNGO0NBQ0QsV0FBVyxFQUNWLE1BQU1BLGNBQUUsT0FBTztFQUNkLHFCQUFxQkEsY0FBRSxNQUFNQSxjQUFFLFFBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDbkQsUUFBUUEsY0FBRSxRQUFRLENBQUMsVUFBVTtFQUM3QixDQUFDLEVBQ0Y7Q0FDRCJ9
|
package/dist/errors.cjs
CHANGED
package/dist/errors.d.cts
CHANGED
package/dist/errors.d.mts
CHANGED
package/dist/errors.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-zltIcp7o.cjs');
|
|
2
|
-
const require_standard = require('./standard-
|
|
2
|
+
const require_standard = require('./standard-0wBehDUp.cjs');
|
|
3
3
|
let __orpc_server = require("@orpc/server");
|
|
4
4
|
let __orpc_contract = require("@orpc/contract");
|
|
5
5
|
let __orpc_server_fetch = require("@orpc/server/fetch");
|
|
@@ -333,4 +333,4 @@ var OpenAPIHandler = class extends __orpc_server_fetch.FetchHandler {
|
|
|
333
333
|
|
|
334
334
|
//#endregion
|
|
335
335
|
exports.OpenAPIHandler = OpenAPIHandler;
|
|
336
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtQ2M5NS03a00uY2pzIiwibmFtZXMiOlsiaXNPYmplY3QiLCJ2YWx1ZSIsIiNpc0RldGFpbGVkT3V0cHV0Iiwic3RyaW5naWZ5SlNPTiIsImlzT1JQQ0Vycm9yU3RhdHVzIiwic3RhbmRhcmRpemVIVFRQUGF0aCIsInRyeURlY29kZVVSSUNvbXBvbmVudCIsInRvSHR0cFBhdGgiLCJTdGFuZGFyZEhhbmRsZXIiLCJTdGFuZGFyZE9wZW5BUElTZXJpYWxpemVyIiwiU3RhbmRhcmRPcGVuQVBJSnNvblNlcmlhbGl6ZXIiLCJTdGFuZGFyZEJyYWNrZXROb3RhdGlvblNlcmlhbGl6ZXIiLCJGZXRjaEhhbmRsZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmJ1bi9yb3UzQDAuNy4xMC9ub2RlX21vZHVsZXMvcm91My9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYnVuL0BvcnBjK29wZW5hcGlAMS4xMC40L25vZGVfbW9kdWxlcy9Ab3JwYy9vcGVuYXBpL2Rpc3Qvc2hhcmVkL29wZW5hcGkuREl0LVo5VzEubWpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5idW4vQG9ycGMrb3BlbmFwaUAxLjEwLjQvbm9kZV9tb2R1bGVzL0BvcnBjL29wZW5hcGkvZGlzdC9hZGFwdGVycy9mZXRjaC9pbmRleC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTnVsbFByb3RvT2JqID0gLyogQF9fUFVSRV9fICovICgoKSA9PiB7XG5cdGNvbnN0IGUgPSBmdW5jdGlvbigpIHt9O1xuXHRyZXR1cm4gZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG51bGwpLCBPYmplY3QuZnJlZXplKGUucHJvdG90eXBlKSwgZTtcbn0pKCk7XG5cbi8qKlxuKiBDcmVhdGUgYSBuZXcgcm91dGVyIGNvbnRleHQuXG4qL1xuZnVuY3Rpb24gY3JlYXRlUm91dGVyKCkge1xuXHRyZXR1cm4ge1xuXHRcdHJvb3Q6IHsga2V5OiBcIlwiIH0sXG5cdFx0c3RhdGljOiBuZXcgTnVsbFByb3RvT2JqKClcblx0fTtcbn1cblxuZnVuY3Rpb24gc3BsaXRQYXRoKHBhdGgpIHtcblx0Y29uc3QgW18sIC4uLnNdID0gcGF0aC5zcGxpdChcIi9cIik7XG5cdHJldHVybiBzW3MubGVuZ3RoIC0gMV0gPT09IFwiXCIgPyBzLnNsaWNlKDAsIC0xKSA6IHM7XG59XG5mdW5jdGlvbiBnZXRNYXRjaFBhcmFtcyhzZWdtZW50cywgcGFyYW1zTWFwKSB7XG5cdGNvbnN0IHBhcmFtcyA9IG5ldyBOdWxsUHJvdG9PYmooKTtcblx0Zm9yIChjb25zdCBbaW5kZXgsIG5hbWVdIG9mIHBhcmFtc01hcCkge1xuXHRcdGNvbnN0IHNlZ21lbnQgPSBpbmRleCA8IDAgPyBzZWdtZW50cy5zbGljZSgtMSAqIGluZGV4KS5qb2luKFwiL1wiKSA6IHNlZ21lbnRzW2luZGV4XTtcblx0XHRpZiAodHlwZW9mIG5hbWUgPT09IFwic3RyaW5nXCIpIHBhcmFtc1tuYW1lXSA9IHNlZ21lbnQ7XG5cdFx0ZWxzZSB7XG5cdFx0XHRjb25zdCBtYXRjaCA9IHNlZ21lbnQubWF0Y2gobmFtZSk7XG5cdFx0XHRpZiAobWF0Y2gpIGZvciAoY29uc3Qga2V5IGluIG1hdGNoLmdyb3VwcykgcGFyYW1zW2tleV0gPSBtYXRjaC5ncm91cHNba2V5XTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHBhcmFtcztcbn1cblxuLyoqXG4qIEFkZCBhIHJvdXRlIHRvIHRoZSByb3V0ZXIgY29udGV4dC5cbiovXG5mdW5jdGlvbiBhZGRSb3V0ZShjdHgsIG1ldGhvZCA9IFwiXCIsIHBhdGgsIGRhdGEpIHtcblx0bWV0aG9kID0gbWV0aG9kLnRvVXBwZXJDYXNlKCk7XG5cdGlmIChwYXRoLmNoYXJDb2RlQXQoMCkgIT09IDQ3KSBwYXRoID0gYC8ke3BhdGh9YDtcblx0Y29uc3Qgc2VnbWVudHMgPSBzcGxpdFBhdGgocGF0aCk7XG5cdGxldCBub2RlID0gY3R4LnJvb3Q7XG5cdGxldCBfdW5uYW1lZFBhcmFtSW5kZXggPSAwO1xuXHRjb25zdCBwYXJhbXNNYXAgPSBbXTtcblx0Y29uc3QgcGFyYW1zUmVnZXhwID0gW107XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBzZWdtZW50ID0gc2VnbWVudHNbaV07XG5cdFx0aWYgKHNlZ21lbnQuc3RhcnRzV2l0aChcIioqXCIpKSB7XG5cdFx0XHRpZiAoIW5vZGUud2lsZGNhcmQpIG5vZGUud2lsZGNhcmQgPSB7IGtleTogXCIqKlwiIH07XG5cdFx0XHRub2RlID0gbm9kZS53aWxkY2FyZDtcblx0XHRcdHBhcmFtc01hcC5wdXNoKFtcblx0XHRcdFx0LWksXG5cdFx0XHRcdHNlZ21lbnQuc3BsaXQoXCI6XCIpWzFdIHx8IFwiX1wiLFxuXHRcdFx0XHRzZWdtZW50Lmxlbmd0aCA9PT0gMlxuXHRcdFx0XSk7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKHNlZ21lbnQgPT09IFwiKlwiIHx8IHNlZ21lbnQuaW5jbHVkZXMoXCI6XCIpKSB7XG5cdFx0XHRpZiAoIW5vZGUucGFyYW0pIG5vZGUucGFyYW0gPSB7IGtleTogXCIqXCIgfTtcblx0XHRcdG5vZGUgPSBub2RlLnBhcmFtO1xuXHRcdFx0aWYgKHNlZ21lbnQgPT09IFwiKlwiKSBwYXJhbXNNYXAucHVzaChbXG5cdFx0XHRcdGksXG5cdFx0XHRcdGBfJHtfdW5uYW1lZFBhcmFtSW5kZXgrK31gLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHRdKTtcblx0XHRcdGVsc2UgaWYgKHNlZ21lbnQuaW5jbHVkZXMoXCI6XCIsIDEpKSB7XG5cdFx0XHRcdGNvbnN0IHJlZ2V4cCA9IGdldFBhcmFtUmVnZXhwKHNlZ21lbnQpO1xuXHRcdFx0XHRwYXJhbXNSZWdleHBbaV0gPSByZWdleHA7XG5cdFx0XHRcdG5vZGUuaGFzUmVnZXhQYXJhbSA9IHRydWU7XG5cdFx0XHRcdHBhcmFtc01hcC5wdXNoKFtcblx0XHRcdFx0XHRpLFxuXHRcdFx0XHRcdHJlZ2V4cCxcblx0XHRcdFx0XHRmYWxzZVxuXHRcdFx0XHRdKTtcblx0XHRcdH0gZWxzZSBwYXJhbXNNYXAucHVzaChbXG5cdFx0XHRcdGksXG5cdFx0XHRcdHNlZ21lbnQuc2xpY2UoMSksXG5cdFx0XHRcdGZhbHNlXG5cdFx0XHRdKTtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRjb25zdCBjaGlsZCA9IG5vZGUuc3RhdGljPy5bc2VnbWVudF07XG5cdFx0aWYgKGNoaWxkKSBub2RlID0gY2hpbGQ7XG5cdFx0ZWxzZSB7XG5cdFx0XHRjb25zdCBzdGF0aWNOb2RlID0geyBrZXk6IHNlZ21lbnQgfTtcblx0XHRcdGlmICghbm9kZS5zdGF0aWMpIG5vZGUuc3RhdGljID0gbmV3IE51bGxQcm90b09iaigpO1xuXHRcdFx0bm9kZS5zdGF0aWNbc2VnbWVudF0gPSBzdGF0aWNOb2RlO1xuXHRcdFx0bm9kZSA9IHN0YXRpY05vZGU7XG5cdFx0fVxuXHR9XG5cdGNvbnN0IGhhc1BhcmFtcyA9IHBhcmFtc01hcC5sZW5ndGggPiAwO1xuXHRpZiAoIW5vZGUubWV0aG9kcykgbm9kZS5tZXRob2RzID0gbmV3IE51bGxQcm90b09iaigpO1xuXHRub2RlLm1ldGhvZHNbbWV0aG9kXSA/Pz0gW107XG5cdG5vZGUubWV0aG9kc1ttZXRob2RdLnB1c2goe1xuXHRcdGRhdGE6IGRhdGEgfHwgbnVsbCxcblx0XHRwYXJhbXNSZWdleHAsXG5cdFx0cGFyYW1zTWFwOiBoYXNQYXJhbXMgPyBwYXJhbXNNYXAgOiB2b2lkIDBcblx0fSk7XG5cdGlmICghaGFzUGFyYW1zKSBjdHguc3RhdGljW3BhdGhdID0gbm9kZTtcbn1cbmZ1bmN0aW9uIGdldFBhcmFtUmVnZXhwKHNlZ21lbnQpIHtcblx0Y29uc3QgcmVnZXggPSBzZWdtZW50LnJlcGxhY2UoLzooXFx3KykvZywgKF8sIGlkKSA9PiBgKD88JHtpZH0+W14vXSspYCkucmVwbGFjZSgvXFwuL2csIFwiXFxcXC5cIik7XG5cdHJldHVybiAvKiBAX19QVVJFX18gKi8gbmV3IFJlZ0V4cChgXiR7cmVnZXh9JGApO1xufVxuXG4vKipcbiogRmluZCBhIHJvdXRlIGJ5IHBhdGguXG4qL1xuZnVuY3Rpb24gZmluZFJvdXRlKGN0eCwgbWV0aG9kID0gXCJcIiwgcGF0aCwgb3B0cykge1xuXHRpZiAocGF0aC5jaGFyQ29kZUF0KHBhdGgubGVuZ3RoIC0gMSkgPT09IDQ3KSBwYXRoID0gcGF0aC5zbGljZSgwLCAtMSk7XG5cdGNvbnN0IHN0YXRpY05vZGUgPSBjdHguc3RhdGljW3BhdGhdO1xuXHRpZiAoc3RhdGljTm9kZSAmJiBzdGF0aWNOb2RlLm1ldGhvZHMpIHtcblx0XHRjb25zdCBzdGF0aWNNYXRjaCA9IHN0YXRpY05vZGUubWV0aG9kc1ttZXRob2RdIHx8IHN0YXRpY05vZGUubWV0aG9kc1tcIlwiXTtcblx0XHRpZiAoc3RhdGljTWF0Y2ggIT09IHZvaWQgMCkgcmV0dXJuIHN0YXRpY01hdGNoWzBdO1xuXHR9XG5cdGNvbnN0IHNlZ21lbnRzID0gc3BsaXRQYXRoKHBhdGgpO1xuXHRjb25zdCBtYXRjaCA9IF9sb29rdXBUcmVlKGN0eCwgY3R4LnJvb3QsIG1ldGhvZCwgc2VnbWVudHMsIDApPy5bMF07XG5cdGlmIChtYXRjaCA9PT0gdm9pZCAwKSByZXR1cm47XG5cdGlmIChvcHRzPy5wYXJhbXMgPT09IGZhbHNlKSByZXR1cm4gbWF0Y2g7XG5cdHJldHVybiB7XG5cdFx0ZGF0YTogbWF0Y2guZGF0YSxcblx0XHRwYXJhbXM6IG1hdGNoLnBhcmFtc01hcCA/IGdldE1hdGNoUGFyYW1zKHNlZ21lbnRzLCBtYXRjaC5wYXJhbXNNYXApIDogdm9pZCAwXG5cdH07XG59XG5mdW5jdGlvbiBfbG9va3VwVHJlZShjdHgsIG5vZGUsIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4KSB7XG5cdGlmIChpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoKSB7XG5cdFx0aWYgKG5vZGUubWV0aG9kcykge1xuXHRcdFx0Y29uc3QgbWF0Y2ggPSBub2RlLm1ldGhvZHNbbWV0aG9kXSB8fCBub2RlLm1ldGhvZHNbXCJcIl07XG5cdFx0XHRpZiAobWF0Y2gpIHJldHVybiBtYXRjaDtcblx0XHR9XG5cdFx0aWYgKG5vZGUucGFyYW0gJiYgbm9kZS5wYXJhbS5tZXRob2RzKSB7XG5cdFx0XHRjb25zdCBtYXRjaCA9IG5vZGUucGFyYW0ubWV0aG9kc1ttZXRob2RdIHx8IG5vZGUucGFyYW0ubWV0aG9kc1tcIlwiXTtcblx0XHRcdGlmIChtYXRjaCkge1xuXHRcdFx0XHRjb25zdCBwTWFwID0gbWF0Y2hbMF0ucGFyYW1zTWFwO1xuXHRcdFx0XHRpZiAocE1hcD8uW3BNYXA/Lmxlbmd0aCAtIDFdPy5bMl0pIHJldHVybiBtYXRjaDtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKG5vZGUud2lsZGNhcmQgJiYgbm9kZS53aWxkY2FyZC5tZXRob2RzKSB7XG5cdFx0XHRjb25zdCBtYXRjaCA9IG5vZGUud2lsZGNhcmQubWV0aG9kc1ttZXRob2RdIHx8IG5vZGUud2lsZGNhcmQubWV0aG9kc1tcIlwiXTtcblx0XHRcdGlmIChtYXRjaCkge1xuXHRcdFx0XHRjb25zdCBwTWFwID0gbWF0Y2hbMF0ucGFyYW1zTWFwO1xuXHRcdFx0XHRpZiAocE1hcD8uW3BNYXA/Lmxlbmd0aCAtIDFdPy5bMl0pIHJldHVybiBtYXRjaDtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1tpbmRleF07XG5cdGlmIChub2RlLnN0YXRpYykge1xuXHRcdGNvbnN0IHN0YXRpY0NoaWxkID0gbm9kZS5zdGF0aWNbc2VnbWVudF07XG5cdFx0aWYgKHN0YXRpY0NoaWxkKSB7XG5cdFx0XHRjb25zdCBtYXRjaCA9IF9sb29rdXBUcmVlKGN0eCwgc3RhdGljQ2hpbGQsIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4ICsgMSk7XG5cdFx0XHRpZiAobWF0Y2gpIHJldHVybiBtYXRjaDtcblx0XHR9XG5cdH1cblx0aWYgKG5vZGUucGFyYW0pIHtcblx0XHRjb25zdCBtYXRjaCA9IF9sb29rdXBUcmVlKGN0eCwgbm9kZS5wYXJhbSwgbWV0aG9kLCBzZWdtZW50cywgaW5kZXggKyAxKTtcblx0XHRpZiAobWF0Y2gpIHtcblx0XHRcdGlmIChub2RlLnBhcmFtLmhhc1JlZ2V4UGFyYW0pIHtcblx0XHRcdFx0Y29uc3QgZXhhY3RNYXRjaCA9IG1hdGNoLmZpbmQoKG0pID0+IG0ucGFyYW1zUmVnZXhwW2luZGV4XT8udGVzdChzZWdtZW50KSkgfHwgbWF0Y2guZmluZCgobSkgPT4gIW0ucGFyYW1zUmVnZXhwW2luZGV4XSk7XG5cdFx0XHRcdHJldHVybiBleGFjdE1hdGNoID8gW2V4YWN0TWF0Y2hdIDogdm9pZCAwO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoO1xuXHRcdH1cblx0fVxuXHRpZiAobm9kZS53aWxkY2FyZCAmJiBub2RlLndpbGRjYXJkLm1ldGhvZHMpIHJldHVybiBub2RlLndpbGRjYXJkLm1ldGhvZHNbbWV0aG9kXSB8fCBub2RlLndpbGRjYXJkLm1ldGhvZHNbXCJcIl07XG59XG5cbi8qKlxuKiBSZW1vdmUgYSByb3V0ZSBmcm9tIHRoZSByb3V0ZXIgY29udGV4dC5cbiovXG5mdW5jdGlvbiByZW1vdmVSb3V0ZShjdHgsIG1ldGhvZCwgcGF0aCkge1xuXHRjb25zdCBzZWdtZW50cyA9IHNwbGl0UGF0aChwYXRoKTtcblx0cmV0dXJuIF9yZW1vdmUoY3R4LnJvb3QsIG1ldGhvZCB8fCBcIlwiLCBzZWdtZW50cywgMCk7XG59XG5mdW5jdGlvbiBfcmVtb3ZlKG5vZGUsIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4KSB7XG5cdGlmIChpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoKSB7XG5cdFx0aWYgKG5vZGUubWV0aG9kcyAmJiBtZXRob2QgaW4gbm9kZS5tZXRob2RzKSB7XG5cdFx0XHRkZWxldGUgbm9kZS5tZXRob2RzW21ldGhvZF07XG5cdFx0XHRpZiAoT2JqZWN0LmtleXMobm9kZS5tZXRob2RzKS5sZW5ndGggPT09IDApIG5vZGUubWV0aG9kcyA9IHZvaWQgMDtcblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1tpbmRleF07XG5cdGlmIChzZWdtZW50ID09PSBcIipcIikge1xuXHRcdGlmIChub2RlLnBhcmFtKSB7XG5cdFx0XHRfcmVtb3ZlKG5vZGUucGFyYW0sIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4ICsgMSk7XG5cdFx0XHRpZiAoX2lzRW1wdHlOb2RlKG5vZGUucGFyYW0pKSBub2RlLnBhcmFtID0gdm9pZCAwO1xuXHRcdH1cblx0XHRyZXR1cm47XG5cdH1cblx0aWYgKHNlZ21lbnQuc3RhcnRzV2l0aChcIioqXCIpKSB7XG5cdFx0aWYgKG5vZGUud2lsZGNhcmQpIHtcblx0XHRcdF9yZW1vdmUobm9kZS53aWxkY2FyZCwgbWV0aG9kLCBzZWdtZW50cywgaW5kZXggKyAxKTtcblx0XHRcdGlmIChfaXNFbXB0eU5vZGUobm9kZS53aWxkY2FyZCkpIG5vZGUud2lsZGNhcmQgPSB2b2lkIDA7XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBjaGlsZE5vZGUgPSBub2RlLnN0YXRpYz8uW3NlZ21lbnRdO1xuXHRpZiAoY2hpbGROb2RlKSB7XG5cdFx0X3JlbW92ZShjaGlsZE5vZGUsIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4ICsgMSk7XG5cdFx0aWYgKF9pc0VtcHR5Tm9kZShjaGlsZE5vZGUpKSB7XG5cdFx0XHRkZWxldGUgbm9kZS5zdGF0aWNbc2VnbWVudF07XG5cdFx0XHRpZiAoT2JqZWN0LmtleXMobm9kZS5zdGF0aWMpLmxlbmd0aCA9PT0gMCkgbm9kZS5zdGF0aWMgPSB2b2lkIDA7XG5cdFx0fVxuXHR9XG59XG5mdW5jdGlvbiBfaXNFbXB0eU5vZGUobm9kZSkge1xuXHRyZXR1cm4gbm9kZS5tZXRob2RzID09PSB2b2lkIDAgJiYgbm9kZS5zdGF0aWMgPT09IHZvaWQgMCAmJiBub2RlLnBhcmFtID09PSB2b2lkIDAgJiYgbm9kZS53aWxkY2FyZCA9PT0gdm9pZCAwO1xufVxuXG4vKipcbiogRmluZCBhbGwgcm91dGUgcGF0dGVybnMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGF0aC5cbiovXG5mdW5jdGlvbiBmaW5kQWxsUm91dGVzKGN0eCwgbWV0aG9kID0gXCJcIiwgcGF0aCwgb3B0cykge1xuXHRpZiAocGF0aC5jaGFyQ29kZUF0KHBhdGgubGVuZ3RoIC0gMSkgPT09IDQ3KSBwYXRoID0gcGF0aC5zbGljZSgwLCAtMSk7XG5cdGNvbnN0IHNlZ21lbnRzID0gc3BsaXRQYXRoKHBhdGgpO1xuXHRjb25zdCBtYXRjaGVzID0gX2ZpbmRBbGwoY3R4LCBjdHgucm9vdCwgbWV0aG9kLCBzZWdtZW50cywgMCk7XG5cdGlmIChvcHRzPy5wYXJhbXMgPT09IGZhbHNlKSByZXR1cm4gbWF0Y2hlcztcblx0cmV0dXJuIG1hdGNoZXMubWFwKChtKSA9PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGRhdGE6IG0uZGF0YSxcblx0XHRcdHBhcmFtczogbS5wYXJhbXNNYXAgPyBnZXRNYXRjaFBhcmFtcyhzZWdtZW50cywgbS5wYXJhbXNNYXApIDogdm9pZCAwXG5cdFx0fTtcblx0fSk7XG59XG5mdW5jdGlvbiBfZmluZEFsbChjdHgsIG5vZGUsIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4LCBtYXRjaGVzID0gW10pIHtcblx0Y29uc3Qgc2VnbWVudCA9IHNlZ21lbnRzW2luZGV4XTtcblx0aWYgKG5vZGUud2lsZGNhcmQgJiYgbm9kZS53aWxkY2FyZC5tZXRob2RzKSB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBub2RlLndpbGRjYXJkLm1ldGhvZHNbbWV0aG9kXSB8fCBub2RlLndpbGRjYXJkLm1ldGhvZHNbXCJcIl07XG5cdFx0aWYgKG1hdGNoKSBtYXRjaGVzLnB1c2goLi4ubWF0Y2gpO1xuXHR9XG5cdGlmIChub2RlLnBhcmFtKSB7XG5cdFx0X2ZpbmRBbGwoY3R4LCBub2RlLnBhcmFtLCBtZXRob2QsIHNlZ21lbnRzLCBpbmRleCArIDEsIG1hdGNoZXMpO1xuXHRcdGlmIChpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoICYmIG5vZGUucGFyYW0ubWV0aG9kcykge1xuXHRcdFx0Y29uc3QgbWF0Y2ggPSBub2RlLnBhcmFtLm1ldGhvZHNbbWV0aG9kXSB8fCBub2RlLnBhcmFtLm1ldGhvZHNbXCJcIl07XG5cdFx0XHRpZiAobWF0Y2gpIHtcblx0XHRcdFx0Y29uc3QgcE1hcCA9IG1hdGNoWzBdLnBhcmFtc01hcDtcblx0XHRcdFx0aWYgKHBNYXA/LltwTWFwPy5sZW5ndGggLSAxXT8uWzJdKSBtYXRjaGVzLnB1c2goLi4ubWF0Y2gpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRjb25zdCBzdGF0aWNDaGlsZCA9IG5vZGUuc3RhdGljPy5bc2VnbWVudF07XG5cdGlmIChzdGF0aWNDaGlsZCkgX2ZpbmRBbGwoY3R4LCBzdGF0aWNDaGlsZCwgbWV0aG9kLCBzZWdtZW50cywgaW5kZXggKyAxLCBtYXRjaGVzKTtcblx0aWYgKGluZGV4ID09PSBzZWdtZW50cy5sZW5ndGggJiYgbm9kZS5tZXRob2RzKSB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBub2RlLm1ldGhvZHNbbWV0aG9kXSB8fCBub2RlLm1ldGhvZHNbXCJcIl07XG5cdFx0aWYgKG1hdGNoKSBtYXRjaGVzLnB1c2goLi4ubWF0Y2gpO1xuXHR9XG5cdHJldHVybiBtYXRjaGVzO1xufVxuXG5mdW5jdGlvbiByb3V0ZVRvUmVnRXhwKHJvdXRlID0gXCIvXCIpIHtcblx0Y29uc3QgcmVTZWdtZW50cyA9IFtdO1xuXHRsZXQgaWRDdHIgPSAwO1xuXHRmb3IgKGNvbnN0IHNlZ21lbnQgb2Ygcm91dGUuc3BsaXQoXCIvXCIpKSB7XG5cdFx0aWYgKCFzZWdtZW50KSBjb250aW51ZTtcblx0XHRpZiAoc2VnbWVudCA9PT0gXCIqXCIpIHJlU2VnbWVudHMucHVzaChgKD88XyR7aWRDdHIrK30+W14vXSopYCk7XG5cdFx0ZWxzZSBpZiAoc2VnbWVudC5zdGFydHNXaXRoKFwiKipcIikpIHJlU2VnbWVudHMucHVzaChzZWdtZW50ID09PSBcIioqXCIgPyBcIj8oPzxfPi4qKVwiIDogYD8oPzwke3NlZ21lbnQuc2xpY2UoMyl9Pi4rKWApO1xuXHRcdGVsc2UgaWYgKHNlZ21lbnQuaW5jbHVkZXMoXCI6XCIpKSByZVNlZ21lbnRzLnB1c2goc2VnbWVudC5yZXBsYWNlKC86KFxcdyspL2csIChfLCBpZCkgPT4gYCg/PCR7aWR9PlteL10rKWApLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuXCIpKTtcblx0XHRlbHNlIHJlU2VnbWVudHMucHVzaChzZWdtZW50KTtcblx0fVxuXHRyZXR1cm4gLyogQF9fUFVSRV9fICovIG5ldyBSZWdFeHAoYF4vJHtyZVNlZ21lbnRzLmpvaW4oXCIvXCIpfS8/JGApO1xufVxuXG5leHBvcnQgeyBOdWxsUHJvdG9PYmosIGFkZFJvdXRlLCBjcmVhdGVSb3V0ZXIsIGZpbmRBbGxSb3V0ZXMsIGZpbmRSb3V0ZSwgcmVtb3ZlUm91dGUsIHJvdXRlVG9SZWdFeHAgfTsiLCJpbXBvcnQgeyBzdGFuZGFyZGl6ZUhUVFBQYXRoLCBTdGFuZGFyZE9wZW5BUElKc29uU2VyaWFsaXplciwgU3RhbmRhcmRCcmFja2V0Tm90YXRpb25TZXJpYWxpemVyLCBTdGFuZGFyZE9wZW5BUElTZXJpYWxpemVyIH0gZnJvbSAnQG9ycGMvb3BlbmFwaS1jbGllbnQvc3RhbmRhcmQnO1xuaW1wb3J0IHsgU3RhbmRhcmRIYW5kbGVyIH0gZnJvbSAnQG9ycGMvc2VydmVyL3N0YW5kYXJkJztcbmltcG9ydCB7IGlzT1JQQ0Vycm9yU3RhdHVzIH0gZnJvbSAnQG9ycGMvY2xpZW50JztcbmltcG9ydCB7IGZhbGxiYWNrQ29udHJhY3RDb25maWcgfSBmcm9tICdAb3JwYy9jb250cmFjdCc7XG5pbXBvcnQgeyBpc09iamVjdCwgc3RyaW5naWZ5SlNPTiwgdHJ5RGVjb2RlVVJJQ29tcG9uZW50LCB2YWx1ZSB9IGZyb20gJ0BvcnBjL3NoYXJlZCc7XG5pbXBvcnQgeyB0b0h0dHBQYXRoIH0gZnJvbSAnQG9ycGMvY2xpZW50L3N0YW5kYXJkJztcbmltcG9ydCB7IHRyYXZlcnNlQ29udHJhY3RQcm9jZWR1cmVzLCBpc1Byb2NlZHVyZSwgZ2V0TGF6eU1ldGEsIHVubGF6eSwgZ2V0Um91dGVyLCBjcmVhdGVDb250cmFjdGVkUHJvY2VkdXJlIH0gZnJvbSAnQG9ycGMvc2VydmVyJztcbmltcG9ydCB7IGNyZWF0ZVJvdXRlciwgYWRkUm91dGUsIGZpbmRSb3V0ZSB9IGZyb20gJ3JvdTMnO1xuXG5jbGFzcyBTdGFuZGFyZE9wZW5BUElDb2RlYyB7XG4gIGNvbnN0cnVjdG9yKHNlcmlhbGl6ZXIsIG9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuc2VyaWFsaXplciA9IHNlcmlhbGl6ZXI7XG4gICAgdGhpcy5jdXN0b21FcnJvclJlc3BvbnNlQm9keUVuY29kZXIgPSBvcHRpb25zLmN1c3RvbUVycm9yUmVzcG9uc2VCb2R5RW5jb2RlcjtcbiAgfVxuICBjdXN0b21FcnJvclJlc3BvbnNlQm9keUVuY29kZXI7XG4gIGFzeW5jIGRlY29kZShyZXF1ZXN0LCBwYXJhbXMsIHByb2NlZHVyZSkge1xuICAgIGNvbnN0IGlucHV0U3RydWN0dXJlID0gZmFsbGJhY2tDb250cmFjdENvbmZpZyhcImRlZmF1bHRJbnB1dFN0cnVjdHVyZVwiLCBwcm9jZWR1cmVbXCJ+b3JwY1wiXS5yb3V0ZS5pbnB1dFN0cnVjdHVyZSk7XG4gICAgaWYgKGlucHV0U3RydWN0dXJlID09PSBcImNvbXBhY3RcIikge1xuICAgICAgY29uc3QgZGF0YSA9IHJlcXVlc3QubWV0aG9kID09PSBcIkdFVFwiID8gdGhpcy5zZXJpYWxpemVyLmRlc2VyaWFsaXplKHJlcXVlc3QudXJsLnNlYXJjaFBhcmFtcykgOiB0aGlzLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoYXdhaXQgcmVxdWVzdC5ib2R5KCkpO1xuICAgICAgaWYgKGRhdGEgPT09IHZvaWQgMCkge1xuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgIC4uLmRhdGFcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBjb25zdCBkZXNlcmlhbGl6ZVNlYXJjaFBhcmFtcyA9ICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUocmVxdWVzdC51cmwuc2VhcmNoUGFyYW1zKTtcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwYXJhbXMsXG4gICAgICBnZXQgcXVlcnkoKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGVzZXJpYWxpemVTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwicXVlcnlcIiwgeyB2YWx1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBzZXQgcXVlcnkodmFsdWUpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwicXVlcnlcIiwgeyB2YWx1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gICAgICB9LFxuICAgICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLFxuICAgICAgYm9keTogdGhpcy5zZXJpYWxpemVyLmRlc2VyaWFsaXplKGF3YWl0IHJlcXVlc3QuYm9keSgpKVxuICAgIH07XG4gIH1cbiAgZW5jb2RlKG91dHB1dCwgcHJvY2VkdXJlKSB7XG4gICAgY29uc3Qgc3VjY2Vzc1N0YXR1cyA9IGZhbGxiYWNrQ29udHJhY3RDb25maWcoXCJkZWZhdWx0U3VjY2Vzc1N0YXR1c1wiLCBwcm9jZWR1cmVbXCJ+b3JwY1wiXS5yb3V0ZS5zdWNjZXNzU3RhdHVzKTtcbiAgICBjb25zdCBvdXRwdXRTdHJ1Y3R1cmUgPSBmYWxsYmFja0NvbnRyYWN0Q29uZmlnKFwiZGVmYXVsdE91dHB1dFN0cnVjdHVyZVwiLCBwcm9jZWR1cmVbXCJ+b3JwY1wiXS5yb3V0ZS5vdXRwdXRTdHJ1Y3R1cmUpO1xuICAgIGlmIChvdXRwdXRTdHJ1Y3R1cmUgPT09IFwiY29tcGFjdFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IHN1Y2Nlc3NTdGF0dXMsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBib2R5OiB0aGlzLnNlcmlhbGl6ZXIuc2VyaWFsaXplKG91dHB1dClcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICghdGhpcy4jaXNEZXRhaWxlZE91dHB1dChvdXRwdXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICBJbnZhbGlkIFwiZGV0YWlsZWRcIiBvdXRwdXQgc3RydWN0dXJlOlxuICAgICAgICBcXHUyMDIyIEV4cGVjdGVkIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHByb3BlcnRpZXM6XG4gICAgICAgICAgLSBzdGF0dXMgKG51bWJlciAyMDAtMzk5KVxuICAgICAgICAgIC0gaGVhZGVycyAoUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+KVxuICAgICAgICAgIC0gYm9keSAoYW55KVxuICAgICAgICBcXHUyMDIyIE5vIGV4dHJhIGtleXMgYWxsb3dlZC5cblxuICAgICAgICBBY3R1YWwgdmFsdWU6XG4gICAgICAgICAgJHtzdHJpbmdpZnlKU09OKG91dHB1dCl9XG4gICAgICBgKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogb3V0cHV0LnN0YXR1cyA/PyBzdWNjZXNzU3RhdHVzLFxuICAgICAgaGVhZGVyczogb3V0cHV0LmhlYWRlcnMgPz8ge30sXG4gICAgICBib2R5OiB0aGlzLnNlcmlhbGl6ZXIuc2VyaWFsaXplKG91dHB1dC5ib2R5KVxuICAgIH07XG4gIH1cbiAgZW5jb2RlRXJyb3IoZXJyb3IpIHtcbiAgICBjb25zdCBib2R5ID0gdGhpcy5jdXN0b21FcnJvclJlc3BvbnNlQm9keUVuY29kZXI/LihlcnJvcikgPz8gZXJyb3IudG9KU09OKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogZXJyb3Iuc3RhdHVzLFxuICAgICAgaGVhZGVyczoge30sXG4gICAgICBib2R5OiB0aGlzLnNlcmlhbGl6ZXIuc2VyaWFsaXplKGJvZHksIHsgb3V0cHV0Rm9ybWF0OiBcInBsYWluXCIgfSlcbiAgICB9O1xuICB9XG4gICNpc0RldGFpbGVkT3V0cHV0KG91dHB1dCkge1xuICAgIGlmICghaXNPYmplY3Qob3V0cHV0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAob3V0cHV0LmhlYWRlcnMgJiYgIWlzT2JqZWN0KG91dHB1dC5oZWFkZXJzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAob3V0cHV0LnN0YXR1cyAhPT0gdm9pZCAwICYmICh0eXBlb2Ygb3V0cHV0LnN0YXR1cyAhPT0gXCJudW1iZXJcIiB8fCAhTnVtYmVyLmlzSW50ZWdlcihvdXRwdXQuc3RhdHVzKSB8fCBpc09SUENFcnJvclN0YXR1cyhvdXRwdXQuc3RhdHVzKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9Sb3UzUGF0dGVybihwYXRoKSB7XG4gIHJldHVybiBzdGFuZGFyZGl6ZUhUVFBQYXRoKHBhdGgpLnJlcGxhY2UoL1xcL1xce1xcKyhbXn1dKylcXH0vZywgXCIvKio6JDFcIikucmVwbGFjZSgvXFwvXFx7KFtefV0rKVxcfS9nLCBcIi86JDFcIik7XG59XG5mdW5jdGlvbiBkZWNvZGVQYXJhbXMocGFyYW1zKSB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMocGFyYW1zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW2tleSwgdHJ5RGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKV0pKTtcbn1cblxuY2xhc3MgU3RhbmRhcmRPcGVuQVBJTWF0Y2hlciB7XG4gIGZpbHRlcjtcbiAgdHJlZSA9IGNyZWF0ZVJvdXRlcigpO1xuICBwZW5kaW5nUm91dGVycyA9IFtdO1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICB0aGlzLmZpbHRlciA9IG9wdGlvbnMuZmlsdGVyID8/IHRydWU7XG4gIH1cbiAgaW5pdChyb3V0ZXIsIHBhdGggPSBbXSkge1xuICAgIGNvbnN0IGxhemllZE9wdGlvbnMgPSB0cmF2ZXJzZUNvbnRyYWN0UHJvY2VkdXJlcyh7IHJvdXRlciwgcGF0aCB9LCAodHJhdmVyc2VPcHRpb25zKSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKHRoaXMuZmlsdGVyLCB0cmF2ZXJzZU9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgcGF0aDogcGF0aDIsIGNvbnRyYWN0IH0gPSB0cmF2ZXJzZU9wdGlvbnM7XG4gICAgICBjb25zdCBtZXRob2QgPSBmYWxsYmFja0NvbnRyYWN0Q29uZmlnKFwiZGVmYXVsdE1ldGhvZFwiLCBjb250cmFjdFtcIn5vcnBjXCJdLnJvdXRlLm1ldGhvZCk7XG4gICAgICBjb25zdCBodHRwUGF0aCA9IHRvUm91M1BhdHRlcm4oY29udHJhY3RbXCJ+b3JwY1wiXS5yb3V0ZS5wYXRoID8/IHRvSHR0cFBhdGgocGF0aDIpKTtcbiAgICAgIGlmIChpc1Byb2NlZHVyZShjb250cmFjdCkpIHtcbiAgICAgICAgYWRkUm91dGUodGhpcy50cmVlLCBtZXRob2QsIGh0dHBQYXRoLCB7XG4gICAgICAgICAgcGF0aDogcGF0aDIsXG4gICAgICAgICAgY29udHJhY3QsXG4gICAgICAgICAgcHJvY2VkdXJlOiBjb250cmFjdCxcbiAgICAgICAgICAvLyB0aGlzIG1lYW4gZGV2IG5vdCB1c2VkIGNvbnRyYWN0LWZpcnN0IHNvIHdlIGNhbiB1c2VkIGNvbnRyYWN0IGFzIHByb2NlZHVyZSBkaXJlY3RseVxuICAgICAgICAgIHJvdXRlclxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZFJvdXRlKHRoaXMudHJlZSwgbWV0aG9kLCBodHRwUGF0aCwge1xuICAgICAgICAgIHBhdGg6IHBhdGgyLFxuICAgICAgICAgIGNvbnRyYWN0LFxuICAgICAgICAgIHByb2NlZHVyZTogdm9pZCAwLFxuICAgICAgICAgIHJvdXRlclxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnBlbmRpbmdSb3V0ZXJzLnB1c2goLi4ubGF6aWVkT3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gKHtcbiAgICAgIC4uLm9wdGlvbixcbiAgICAgIGh0dHBQYXRoUHJlZml4OiB0b0h0dHBQYXRoKG9wdGlvbi5wYXRoKSxcbiAgICAgIGxhemllZFByZWZpeDogZ2V0TGF6eU1ldGEob3B0aW9uLnJvdXRlcikucHJlZml4XG4gICAgfSkpKTtcbiAgfVxuICBhc3luYyBtYXRjaChtZXRob2QsIHBhdGhuYW1lKSB7XG4gICAgaWYgKHRoaXMucGVuZGluZ1JvdXRlcnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBuZXdQZW5kaW5nUm91dGVycyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBwZW5kaW5nUm91dGVyIG9mIHRoaXMucGVuZGluZ1JvdXRlcnMpIHtcbiAgICAgICAgaWYgKCFwZW5kaW5nUm91dGVyLmxhemllZFByZWZpeCB8fCBwYXRobmFtZS5zdGFydHNXaXRoKHBlbmRpbmdSb3V0ZXIubGF6aWVkUHJlZml4KSB8fCBwYXRobmFtZS5zdGFydHNXaXRoKHBlbmRpbmdSb3V0ZXIuaHR0cFBhdGhQcmVmaXgpKSB7XG4gICAgICAgICAgY29uc3QgeyBkZWZhdWx0OiByb3V0ZXIgfSA9IGF3YWl0IHVubGF6eShwZW5kaW5nUm91dGVyLnJvdXRlcik7XG4gICAgICAgICAgdGhpcy5pbml0KHJvdXRlciwgcGVuZGluZ1JvdXRlci5wYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdQZW5kaW5nUm91dGVycy5wdXNoKHBlbmRpbmdSb3V0ZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBlbmRpbmdSb3V0ZXJzID0gbmV3UGVuZGluZ1JvdXRlcnM7XG4gICAgfVxuICAgIGNvbnN0IG1hdGNoID0gZmluZFJvdXRlKHRoaXMudHJlZSwgbWV0aG9kLCBwYXRobmFtZSk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgaWYgKCFtYXRjaC5kYXRhLnByb2NlZHVyZSkge1xuICAgICAgY29uc3QgeyBkZWZhdWx0OiBtYXliZVByb2NlZHVyZSB9ID0gYXdhaXQgdW5sYXp5KGdldFJvdXRlcihtYXRjaC5kYXRhLnJvdXRlciwgbWF0Y2guZGF0YS5wYXRoKSk7XG4gICAgICBpZiAoIWlzUHJvY2VkdXJlKG1heWJlUHJvY2VkdXJlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICAgIFtDb250cmFjdC1GaXJzdF0gTWlzc2luZyBvciBpbnZhbGlkIGltcGxlbWVudGF0aW9uIGZvciBwcm9jZWR1cmUgYXQgcGF0aDogJHt0b0h0dHBQYXRoKG1hdGNoLmRhdGEucGF0aCl9LlxuICAgICAgICAgIEVuc3VyZSB0aGF0IHRoZSBwcm9jZWR1cmUgaXMgY29ycmVjdGx5IGRlZmluZWQgYW5kIG1hdGNoZXMgdGhlIGV4cGVjdGVkIGNvbnRyYWN0LlxuICAgICAgICBgKTtcbiAgICAgIH1cbiAgICAgIG1hdGNoLmRhdGEucHJvY2VkdXJlID0gY3JlYXRlQ29udHJhY3RlZFByb2NlZHVyZShtYXliZVByb2NlZHVyZSwgbWF0Y2guZGF0YS5jb250cmFjdCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiBtYXRjaC5kYXRhLnBhdGgsXG4gICAgICBwcm9jZWR1cmU6IG1hdGNoLmRhdGEucHJvY2VkdXJlLFxuICAgICAgcGFyYW1zOiBtYXRjaC5wYXJhbXMgPyBkZWNvZGVQYXJhbXMobWF0Y2gucGFyYW1zKSA6IHZvaWQgMFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgU3RhbmRhcmRPcGVuQVBJSGFuZGxlciBleHRlbmRzIFN0YW5kYXJkSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKHJvdXRlciwgb3B0aW9ucykge1xuICAgIGNvbnN0IGpzb25TZXJpYWxpemVyID0gbmV3IFN0YW5kYXJkT3BlbkFQSUpzb25TZXJpYWxpemVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IGJyYWNrZXROb3RhdGlvblNlcmlhbGl6ZXIgPSBuZXcgU3RhbmRhcmRCcmFja2V0Tm90YXRpb25TZXJpYWxpemVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZXIgPSBuZXcgU3RhbmRhcmRPcGVuQVBJU2VyaWFsaXplcihqc29uU2VyaWFsaXplciwgYnJhY2tldE5vdGF0aW9uU2VyaWFsaXplcik7XG4gICAgY29uc3QgbWF0Y2hlciA9IG5ldyBTdGFuZGFyZE9wZW5BUElNYXRjaGVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IGNvZGVjID0gbmV3IFN0YW5kYXJkT3BlbkFQSUNvZGVjKHNlcmlhbGl6ZXIsIG9wdGlvbnMpO1xuICAgIHN1cGVyKHJvdXRlciwgbWF0Y2hlciwgY29kZWMsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCB7IFN0YW5kYXJkT3BlbkFQSUNvZGVjIGFzIFMsIFN0YW5kYXJkT3BlbkFQSUhhbmRsZXIgYXMgYSwgU3RhbmRhcmRPcGVuQVBJTWF0Y2hlciBhcyBiLCBkZWNvZGVQYXJhbXMgYXMgZCwgdG9Sb3UzUGF0dGVybiBhcyB0IH07XG4iLCJpbXBvcnQgeyBGZXRjaEhhbmRsZXIgfSBmcm9tICdAb3JwYy9zZXJ2ZXIvZmV0Y2gnO1xuaW1wb3J0ICdAb3JwYy9jbGllbnQnO1xuaW1wb3J0ICdAb3JwYy9jb250cmFjdCc7XG5pbXBvcnQgJ0BvcnBjL3NoYXJlZCc7XG5pbXBvcnQgeyBhIGFzIFN0YW5kYXJkT3BlbkFQSUhhbmRsZXIgfSBmcm9tICcuLi8uLi9zaGFyZWQvb3BlbmFwaS5ESXQtWjlXMS5tanMnO1xuaW1wb3J0ICdAb3JwYy9jbGllbnQvc3RhbmRhcmQnO1xuaW1wb3J0ICdAb3JwYy9zZXJ2ZXInO1xuaW1wb3J0ICdyb3UzJztcbmltcG9ydCAnQG9ycGMvb3BlbmFwaS1jbGllbnQvc3RhbmRhcmQnO1xuaW1wb3J0ICdAb3JwYy9zZXJ2ZXIvc3RhbmRhcmQnO1xuXG5jbGFzcyBPcGVuQVBJSGFuZGxlciBleHRlbmRzIEZldGNoSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKHJvdXRlciwgb3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIobmV3IFN0YW5kYXJkT3BlbkFQSUhhbmRsZXIocm91dGVyLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IHsgT3BlbkFQSUhhbmRsZXIgfTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMCwxLDJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxNQUFNLGVBQStCLHVCQUFPO0NBQzNDLE1BQU0sSUFBSSxXQUFXO0FBQ3JCLFFBQU8sRUFBRSxZQUFZLE9BQU8sT0FBTyxLQUFLLEVBQUUsT0FBTyxPQUFPLEVBQUUsVUFBVSxFQUFFO0lBQ25FOzs7O0FBS0osU0FBUyxlQUFlO0FBQ3ZCLFFBQU87RUFDTixNQUFNLEVBQUUsS0FBSyxJQUFJO0VBQ2pCLFFBQVEsSUFBSSxjQUFjO0VBQzFCOztBQUdGLFNBQVMsVUFBVSxNQUFNO0NBQ3hCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsS0FBSyxLQUFLLE1BQU0sSUFBSTtBQUNqQyxRQUFPLEVBQUUsRUFBRSxTQUFTLE9BQU8sS0FBSyxFQUFFLE1BQU0sR0FBRyxHQUFHLEdBQUc7O0FBRWxELFNBQVMsZUFBZSxVQUFVLFdBQVc7Q0FDNUMsTUFBTSxTQUFTLElBQUksY0FBYztBQUNqQyxNQUFLLE1BQU0sQ0FBQyxPQUFPLFNBQVMsV0FBVztFQUN0QyxNQUFNLFVBQVUsUUFBUSxJQUFJLFNBQVMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxLQUFLLElBQUksR0FBRyxTQUFTO0FBQzVFLE1BQUksT0FBTyxTQUFTLFNBQVUsUUFBTyxRQUFRO09BQ3hDO0dBQ0osTUFBTSxRQUFRLFFBQVEsTUFBTSxLQUFLO0FBQ2pDLE9BQUksTUFBTyxNQUFLLE1BQU0sT0FBTyxNQUFNLE9BQVEsUUFBTyxPQUFPLE1BQU0sT0FBTzs7O0FBR3hFLFFBQU87Ozs7O0FBTVIsU0FBUyxTQUFTLEtBQUssU0FBUyxJQUFJLE1B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
|
|
336
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtQ0d6bjFVZjcuY2pzIiwibmFtZXMiOlsiaXNPYmplY3QiLCJ2YWx1ZSIsIiNpc0RldGFpbGVkT3V0cHV0Iiwic3RyaW5naWZ5SlNPTiIsImlzT1JQQ0Vycm9yU3RhdHVzIiwic3RhbmRhcmRpemVIVFRQUGF0aCIsInRyeURlY29kZVVSSUNvbXBvbmVudCIsInRvSHR0cFBhdGgiLCJTdGFuZGFyZEhhbmRsZXIiLCJTdGFuZGFyZE9wZW5BUElTZXJpYWxpemVyIiwiU3RhbmRhcmRPcGVuQVBJSnNvblNlcmlhbGl6ZXIiLCJTdGFuZGFyZEJyYWNrZXROb3RhdGlvblNlcmlhbGl6ZXIiLCJGZXRjaEhhbmRsZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLmJ1bi9yb3UzQDAuNy4xMC9ub2RlX21vZHVsZXMvcm91My9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8uYnVuL0BvcnBjK29wZW5hcGlAMS4xMC40L25vZGVfbW9kdWxlcy9Ab3JwYy9vcGVuYXBpL2Rpc3Qvc2hhcmVkL29wZW5hcGkuREl0LVo5VzEubWpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5idW4vQG9ycGMrb3BlbmFwaUAxLjEwLjQvbm9kZV9tb2R1bGVzL0BvcnBjL29wZW5hcGkvZGlzdC9hZGFwdGVycy9mZXRjaC9pbmRleC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTnVsbFByb3RvT2JqID0gLyogQF9fUFVSRV9fICovICgoKSA9PiB7XG5cdGNvbnN0IGUgPSBmdW5jdGlvbigpIHt9O1xuXHRyZXR1cm4gZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG51bGwpLCBPYmplY3QuZnJlZXplKGUucHJvdG90eXBlKSwgZTtcbn0pKCk7XG5cbi8qKlxuKiBDcmVhdGUgYSBuZXcgcm91dGVyIGNvbnRleHQuXG4qL1xuZnVuY3Rpb24gY3JlYXRlUm91dGVyKCkge1xuXHRyZXR1cm4ge1xuXHRcdHJvb3Q6IHsga2V5OiBcIlwiIH0sXG5cdFx0c3RhdGljOiBuZXcgTnVsbFByb3RvT2JqKClcblx0fTtcbn1cblxuZnVuY3Rpb24gc3BsaXRQYXRoKHBhdGgpIHtcblx0Y29uc3QgW18sIC4uLnNdID0gcGF0aC5zcGxpdChcIi9cIik7XG5cdHJldHVybiBzW3MubGVuZ3RoIC0gMV0gPT09IFwiXCIgPyBzLnNsaWNlKDAsIC0xKSA6IHM7XG59XG5mdW5jdGlvbiBnZXRNYXRjaFBhcmFtcyhzZWdtZW50cywgcGFyYW1zTWFwKSB7XG5cdGNvbnN0IHBhcmFtcyA9IG5ldyBOdWxsUHJvdG9PYmooKTtcblx0Zm9yIChjb25zdCBbaW5kZXgsIG5hbWVdIG9mIHBhcmFtc01hcCkge1xuXHRcdGNvbnN0IHNlZ21lbnQgPSBpbmRleCA8IDAgPyBzZWdtZW50cy5zbGljZSgtMSAqIGluZGV4KS5qb2luKFwiL1wiKSA6IHNlZ21lbnRzW2luZGV4XTtcblx0XHRpZiAodHlwZW9mIG5hbWUgPT09IFwic3RyaW5nXCIpIHBhcmFtc1tuYW1lXSA9IHNlZ21lbnQ7XG5cdFx0ZWxzZSB7XG5cdFx0XHRjb25zdCBtYXRjaCA9IHNlZ21lbnQubWF0Y2gobmFtZSk7XG5cdFx0XHRpZiAobWF0Y2gpIGZvciAoY29uc3Qga2V5IGluIG1hdGNoLmdyb3VwcykgcGFyYW1zW2tleV0gPSBtYXRjaC5ncm91cHNba2V5XTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHBhcmFtcztcbn1cblxuLyoqXG4qIEFkZCBhIHJvdXRlIHRvIHRoZSByb3V0ZXIgY29udGV4dC5cbiovXG5mdW5jdGlvbiBhZGRSb3V0ZShjdHgsIG1ldGhvZCA9IFwiXCIsIHBhdGgsIGRhdGEpIHtcblx0bWV0aG9kID0gbWV0aG9kLnRvVXBwZXJDYXNlKCk7XG5cdGlmIChwYXRoLmNoYXJDb2RlQXQoMCkgIT09IDQ3KSBwYXRoID0gYC8ke3BhdGh9YDtcblx0Y29uc3Qgc2VnbWVudHMgPSBzcGxpdFBhdGgocGF0aCk7XG5cdGxldCBub2RlID0gY3R4LnJvb3Q7XG5cdGxldCBfdW5uYW1lZFBhcmFtSW5kZXggPSAwO1xuXHRjb25zdCBwYXJhbXNNYXAgPSBbXTtcblx0Y29uc3QgcGFyYW1zUmVnZXhwID0gW107XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBzZWdtZW50ID0gc2VnbWVudHNbaV07XG5cdFx0aWYgKHNlZ21lbnQuc3RhcnRzV2l0aChcIioqXCIpKSB7XG5cdFx0XHRpZiAoIW5vZGUud2lsZGNhcmQpIG5vZGUud2lsZGNhcmQgPSB7IGtleTogXCIqKlwiIH07XG5cdFx0XHRub2RlID0gbm9kZS53aWxkY2FyZDtcblx0XHRcdHBhcmFtc01hcC5wdXNoKFtcblx0XHRcdFx0LWksXG5cdFx0XHRcdHNlZ21lbnQuc3BsaXQoXCI6XCIpWzFdIHx8IFwiX1wiLFxuXHRcdFx0XHRzZWdtZW50Lmxlbmd0aCA9PT0gMlxuXHRcdFx0XSk7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKHNlZ21lbnQgPT09IFwiKlwiIHx8IHNlZ21lbnQuaW5jbHVkZXMoXCI6XCIpKSB7XG5cdFx0XHRpZiAoIW5vZGUucGFyYW0pIG5vZGUucGFyYW0gPSB7IGtleTogXCIqXCIgfTtcblx0XHRcdG5vZGUgPSBub2RlLnBhcmFtO1xuXHRcdFx0aWYgKHNlZ21lbnQgPT09IFwiKlwiKSBwYXJhbXNNYXAucHVzaChbXG5cdFx0XHRcdGksXG5cdFx0XHRcdGBfJHtfdW5uYW1lZFBhcmFtSW5kZXgrK31gLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHRdKTtcblx0XHRcdGVsc2UgaWYgKHNlZ21lbnQuaW5jbHVkZXMoXCI6XCIsIDEpKSB7XG5cdFx0XHRcdGNvbnN0IHJlZ2V4cCA9IGdldFBhcmFtUmVnZXhwKHNlZ21lbnQpO1xuXHRcdFx0XHRwYXJhbXNSZWdleHBbaV0gPSByZWdleHA7XG5cdFx0XHRcdG5vZGUuaGFzUmVnZXhQYXJhbSA9IHRydWU7XG5cdFx0XHRcdHBhcmFtc01hcC5wdXNoKFtcblx0XHRcdFx0XHRpLFxuXHRcdFx0XHRcdHJlZ2V4cCxcblx0XHRcdFx0XHRmYWxzZVxuXHRcdFx0XHRdKTtcblx0XHRcdH0gZWxzZSBwYXJhbXNNYXAucHVzaChbXG5cdFx0XHRcdGksXG5cdFx0XHRcdHNlZ21lbnQuc2xpY2UoMSksXG5cdFx0XHRcdGZhbHNlXG5cdFx0XHRdKTtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRjb25zdCBjaGlsZCA9IG5vZGUuc3RhdGljPy5bc2VnbWVudF07XG5cdFx0aWYgKGNoaWxkKSBub2RlID0gY2hpbGQ7XG5cdFx0ZWxzZSB7XG5cdFx0XHRjb25zdCBzdGF0aWNOb2RlID0geyBrZXk6IHNlZ21lbnQgfTtcblx0XHRcdGlmICghbm9kZS5zdGF0aWMpIG5vZGUuc3RhdGljID0gbmV3IE51bGxQcm90b09iaigpO1xuXHRcdFx0bm9kZS5zdGF0aWNbc2VnbWVudF0gPSBzdGF0aWNOb2RlO1xuXHRcdFx0bm9kZSA9IHN0YXRpY05vZGU7XG5cdFx0fVxuXHR9XG5cdGNvbnN0IGhhc1BhcmFtcyA9IHBhcmFtc01hcC5sZW5ndGggPiAwO1xuXHRpZiAoIW5vZGUubWV0aG9kcykgbm9kZS5tZXRob2RzID0gbmV3IE51bGxQcm90b09iaigpO1xuXHRub2RlLm1ldGhvZHNbbWV0aG9kXSA/Pz0gW107XG5cdG5vZGUubWV0aG9kc1ttZXRob2RdLnB1c2goe1xuXHRcdGRhdGE6IGRhdGEgfHwgbnVsbCxcblx0XHRwYXJhbXNSZWdleHAsXG5cdFx0cGFyYW1zTWFwOiBoYXNQYXJhbXMgPyBwYXJhbXNNYXAgOiB2b2lkIDBcblx0fSk7XG5cdGlmICghaGFzUGFyYW1zKSBjdHguc3RhdGljW3BhdGhdID0gbm9kZTtcbn1cbmZ1bmN0aW9uIGdldFBhcmFtUmVnZXhwKHNlZ21lbnQpIHtcblx0Y29uc3QgcmVnZXggPSBzZWdtZW50LnJlcGxhY2UoLzooXFx3KykvZywgKF8sIGlkKSA9PiBgKD88JHtpZH0+W14vXSspYCkucmVwbGFjZSgvXFwuL2csIFwiXFxcXC5cIik7XG5cdHJldHVybiAvKiBAX19QVVJFX18gKi8gbmV3IFJlZ0V4cChgXiR7cmVnZXh9JGApO1xufVxuXG4vKipcbiogRmluZCBhIHJvdXRlIGJ5IHBhdGguXG4qL1xuZnVuY3Rpb24gZmluZFJvdXRlKGN0eCwgbWV0aG9kID0gXCJcIiwgcGF0aCwgb3B0cykge1xuXHRpZiAocGF0aC5jaGFyQ29kZUF0KHBhdGgubGVuZ3RoIC0gMSkgPT09IDQ3KSBwYXRoID0gcGF0aC5zbGljZSgwLCAtMSk7XG5cdGNvbnN0IHN0YXRpY05vZGUgPSBjdHguc3RhdGljW3BhdGhdO1xuXHRpZiAoc3RhdGljTm9kZSAmJiBzdGF0aWNOb2RlLm1ldGhvZHMpIHtcblx0XHRjb25zdCBzdGF0aWNNYXRjaCA9IHN0YXRpY05vZGUubWV0aG9kc1ttZXRob2RdIHx8IHN0YXRpY05vZGUubWV0aG9kc1tcIlwiXTtcblx0XHRpZiAoc3RhdGljTWF0Y2ggIT09IHZvaWQgMCkgcmV0dXJuIHN0YXRpY01hdGNoWzBdO1xuXHR9XG5cdGNvbnN0IHNlZ21lbnRzID0gc3BsaXRQYXRoKHBhdGgpO1xuXHRjb25zdCBtYXRjaCA9IF9sb29rdXBUcmVlKGN0eCwgY3R4LnJvb3QsIG1ldGhvZCwgc2VnbWVudHMsIDApPy5bMF07XG5cdGlmIChtYXRjaCA9PT0gdm9pZCAwKSByZXR1cm47XG5cdGlmIChvcHRzPy5wYXJhbXMgPT09IGZhbHNlKSByZXR1cm4gbWF0Y2g7XG5cdHJldHVybiB7XG5cdFx0ZGF0YTogbWF0Y2guZGF0YSxcblx0XHRwYXJhbXM6IG1hdGNoLnBhcmFtc01hcCA/IGdldE1hdGNoUGFyYW1zKHNlZ21lbnRzLCBtYXRjaC5wYXJhbXNNYXApIDogdm9pZCAwXG5cdH07XG59XG5mdW5jdGlvbiBfbG9va3VwVHJlZShjdHgsIG5vZGUsIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4KSB7XG5cdGlmIChpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoKSB7XG5cdFx0aWYgKG5vZGUubWV0aG9kcykge1xuXHRcdFx0Y29uc3QgbWF0Y2ggPSBub2RlLm1ldGhvZHNbbWV0aG9kXSB8fCBub2RlLm1ldGhvZHNbXCJcIl07XG5cdFx0XHRpZiAobWF0Y2gpIHJldHVybiBtYXRjaDtcblx0XHR9XG5cdFx0aWYgKG5vZGUucGFyYW0gJiYgbm9kZS5wYXJhbS5tZXRob2RzKSB7XG5cdFx0XHRjb25zdCBtYXRjaCA9IG5vZGUucGFyYW0ubWV0aG9kc1ttZXRob2RdIHx8IG5vZGUucGFyYW0ubWV0aG9kc1tcIlwiXTtcblx0XHRcdGlmIChtYXRjaCkge1xuXHRcdFx0XHRjb25zdCBwTWFwID0gbWF0Y2hbMF0ucGFyYW1zTWFwO1xuXHRcdFx0XHRpZiAocE1hcD8uW3BNYXA/Lmxlbmd0aCAtIDFdPy5bMl0pIHJldHVybiBtYXRjaDtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKG5vZGUud2lsZGNhcmQgJiYgbm9kZS53aWxkY2FyZC5tZXRob2RzKSB7XG5cdFx0XHRjb25zdCBtYXRjaCA9IG5vZGUud2lsZGNhcmQubWV0aG9kc1ttZXRob2RdIHx8IG5vZGUud2lsZGNhcmQubWV0aG9kc1tcIlwiXTtcblx0XHRcdGlmIChtYXRjaCkge1xuXHRcdFx0XHRjb25zdCBwTWFwID0gbWF0Y2hbMF0ucGFyYW1zTWFwO1xuXHRcdFx0XHRpZiAocE1hcD8uW3BNYXA/Lmxlbmd0aCAtIDFdPy5bMl0pIHJldHVybiBtYXRjaDtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1tpbmRleF07XG5cdGlmIChub2RlLnN0YXRpYykge1xuXHRcdGNvbnN0IHN0YXRpY0NoaWxkID0gbm9kZS5zdGF0aWNbc2VnbWVudF07XG5cdFx0aWYgKHN0YXRpY0NoaWxkKSB7XG5cdFx0XHRjb25zdCBtYXRjaCA9IF9sb29rdXBUcmVlKGN0eCwgc3RhdGljQ2hpbGQsIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4ICsgMSk7XG5cdFx0XHRpZiAobWF0Y2gpIHJldHVybiBtYXRjaDtcblx0XHR9XG5cdH1cblx0aWYgKG5vZGUucGFyYW0pIHtcblx0XHRjb25zdCBtYXRjaCA9IF9sb29rdXBUcmVlKGN0eCwgbm9kZS5wYXJhbSwgbWV0aG9kLCBzZWdtZW50cywgaW5kZXggKyAxKTtcblx0XHRpZiAobWF0Y2gpIHtcblx0XHRcdGlmIChub2RlLnBhcmFtLmhhc1JlZ2V4UGFyYW0pIHtcblx0XHRcdFx0Y29uc3QgZXhhY3RNYXRjaCA9IG1hdGNoLmZpbmQoKG0pID0+IG0ucGFyYW1zUmVnZXhwW2luZGV4XT8udGVzdChzZWdtZW50KSkgfHwgbWF0Y2guZmluZCgobSkgPT4gIW0ucGFyYW1zUmVnZXhwW2luZGV4XSk7XG5cdFx0XHRcdHJldHVybiBleGFjdE1hdGNoID8gW2V4YWN0TWF0Y2hdIDogdm9pZCAwO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoO1xuXHRcdH1cblx0fVxuXHRpZiAobm9kZS53aWxkY2FyZCAmJiBub2RlLndpbGRjYXJkLm1ldGhvZHMpIHJldHVybiBub2RlLndpbGRjYXJkLm1ldGhvZHNbbWV0aG9kXSB8fCBub2RlLndpbGRjYXJkLm1ldGhvZHNbXCJcIl07XG59XG5cbi8qKlxuKiBSZW1vdmUgYSByb3V0ZSBmcm9tIHRoZSByb3V0ZXIgY29udGV4dC5cbiovXG5mdW5jdGlvbiByZW1vdmVSb3V0ZShjdHgsIG1ldGhvZCwgcGF0aCkge1xuXHRjb25zdCBzZWdtZW50cyA9IHNwbGl0UGF0aChwYXRoKTtcblx0cmV0dXJuIF9yZW1vdmUoY3R4LnJvb3QsIG1ldGhvZCB8fCBcIlwiLCBzZWdtZW50cywgMCk7XG59XG5mdW5jdGlvbiBfcmVtb3ZlKG5vZGUsIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4KSB7XG5cdGlmIChpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoKSB7XG5cdFx0aWYgKG5vZGUubWV0aG9kcyAmJiBtZXRob2QgaW4gbm9kZS5tZXRob2RzKSB7XG5cdFx0XHRkZWxldGUgbm9kZS5tZXRob2RzW21ldGhvZF07XG5cdFx0XHRpZiAoT2JqZWN0LmtleXMobm9kZS5tZXRob2RzKS5sZW5ndGggPT09IDApIG5vZGUubWV0aG9kcyA9IHZvaWQgMDtcblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1tpbmRleF07XG5cdGlmIChzZWdtZW50ID09PSBcIipcIikge1xuXHRcdGlmIChub2RlLnBhcmFtKSB7XG5cdFx0XHRfcmVtb3ZlKG5vZGUucGFyYW0sIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4ICsgMSk7XG5cdFx0XHRpZiAoX2lzRW1wdHlOb2RlKG5vZGUucGFyYW0pKSBub2RlLnBhcmFtID0gdm9pZCAwO1xuXHRcdH1cblx0XHRyZXR1cm47XG5cdH1cblx0aWYgKHNlZ21lbnQuc3RhcnRzV2l0aChcIioqXCIpKSB7XG5cdFx0aWYgKG5vZGUud2lsZGNhcmQpIHtcblx0XHRcdF9yZW1vdmUobm9kZS53aWxkY2FyZCwgbWV0aG9kLCBzZWdtZW50cywgaW5kZXggKyAxKTtcblx0XHRcdGlmIChfaXNFbXB0eU5vZGUobm9kZS53aWxkY2FyZCkpIG5vZGUud2lsZGNhcmQgPSB2b2lkIDA7XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBjaGlsZE5vZGUgPSBub2RlLnN0YXRpYz8uW3NlZ21lbnRdO1xuXHRpZiAoY2hpbGROb2RlKSB7XG5cdFx0X3JlbW92ZShjaGlsZE5vZGUsIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4ICsgMSk7XG5cdFx0aWYgKF9pc0VtcHR5Tm9kZShjaGlsZE5vZGUpKSB7XG5cdFx0XHRkZWxldGUgbm9kZS5zdGF0aWNbc2VnbWVudF07XG5cdFx0XHRpZiAoT2JqZWN0LmtleXMobm9kZS5zdGF0aWMpLmxlbmd0aCA9PT0gMCkgbm9kZS5zdGF0aWMgPSB2b2lkIDA7XG5cdFx0fVxuXHR9XG59XG5mdW5jdGlvbiBfaXNFbXB0eU5vZGUobm9kZSkge1xuXHRyZXR1cm4gbm9kZS5tZXRob2RzID09PSB2b2lkIDAgJiYgbm9kZS5zdGF0aWMgPT09IHZvaWQgMCAmJiBub2RlLnBhcmFtID09PSB2b2lkIDAgJiYgbm9kZS53aWxkY2FyZCA9PT0gdm9pZCAwO1xufVxuXG4vKipcbiogRmluZCBhbGwgcm91dGUgcGF0dGVybnMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGF0aC5cbiovXG5mdW5jdGlvbiBmaW5kQWxsUm91dGVzKGN0eCwgbWV0aG9kID0gXCJcIiwgcGF0aCwgb3B0cykge1xuXHRpZiAocGF0aC5jaGFyQ29kZUF0KHBhdGgubGVuZ3RoIC0gMSkgPT09IDQ3KSBwYXRoID0gcGF0aC5zbGljZSgwLCAtMSk7XG5cdGNvbnN0IHNlZ21lbnRzID0gc3BsaXRQYXRoKHBhdGgpO1xuXHRjb25zdCBtYXRjaGVzID0gX2ZpbmRBbGwoY3R4LCBjdHgucm9vdCwgbWV0aG9kLCBzZWdtZW50cywgMCk7XG5cdGlmIChvcHRzPy5wYXJhbXMgPT09IGZhbHNlKSByZXR1cm4gbWF0Y2hlcztcblx0cmV0dXJuIG1hdGNoZXMubWFwKChtKSA9PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGRhdGE6IG0uZGF0YSxcblx0XHRcdHBhcmFtczogbS5wYXJhbXNNYXAgPyBnZXRNYXRjaFBhcmFtcyhzZWdtZW50cywgbS5wYXJhbXNNYXApIDogdm9pZCAwXG5cdFx0fTtcblx0fSk7XG59XG5mdW5jdGlvbiBfZmluZEFsbChjdHgsIG5vZGUsIG1ldGhvZCwgc2VnbWVudHMsIGluZGV4LCBtYXRjaGVzID0gW10pIHtcblx0Y29uc3Qgc2VnbWVudCA9IHNlZ21lbnRzW2luZGV4XTtcblx0aWYgKG5vZGUud2lsZGNhcmQgJiYgbm9kZS53aWxkY2FyZC5tZXRob2RzKSB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBub2RlLndpbGRjYXJkLm1ldGhvZHNbbWV0aG9kXSB8fCBub2RlLndpbGRjYXJkLm1ldGhvZHNbXCJcIl07XG5cdFx0aWYgKG1hdGNoKSBtYXRjaGVzLnB1c2goLi4ubWF0Y2gpO1xuXHR9XG5cdGlmIChub2RlLnBhcmFtKSB7XG5cdFx0X2ZpbmRBbGwoY3R4LCBub2RlLnBhcmFtLCBtZXRob2QsIHNlZ21lbnRzLCBpbmRleCArIDEsIG1hdGNoZXMpO1xuXHRcdGlmIChpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoICYmIG5vZGUucGFyYW0ubWV0aG9kcykge1xuXHRcdFx0Y29uc3QgbWF0Y2ggPSBub2RlLnBhcmFtLm1ldGhvZHNbbWV0aG9kXSB8fCBub2RlLnBhcmFtLm1ldGhvZHNbXCJcIl07XG5cdFx0XHRpZiAobWF0Y2gpIHtcblx0XHRcdFx0Y29uc3QgcE1hcCA9IG1hdGNoWzBdLnBhcmFtc01hcDtcblx0XHRcdFx0aWYgKHBNYXA/LltwTWFwPy5sZW5ndGggLSAxXT8uWzJdKSBtYXRjaGVzLnB1c2goLi4ubWF0Y2gpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRjb25zdCBzdGF0aWNDaGlsZCA9IG5vZGUuc3RhdGljPy5bc2VnbWVudF07XG5cdGlmIChzdGF0aWNDaGlsZCkgX2ZpbmRBbGwoY3R4LCBzdGF0aWNDaGlsZCwgbWV0aG9kLCBzZWdtZW50cywgaW5kZXggKyAxLCBtYXRjaGVzKTtcblx0aWYgKGluZGV4ID09PSBzZWdtZW50cy5sZW5ndGggJiYgbm9kZS5tZXRob2RzKSB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBub2RlLm1ldGhvZHNbbWV0aG9kXSB8fCBub2RlLm1ldGhvZHNbXCJcIl07XG5cdFx0aWYgKG1hdGNoKSBtYXRjaGVzLnB1c2goLi4ubWF0Y2gpO1xuXHR9XG5cdHJldHVybiBtYXRjaGVzO1xufVxuXG5mdW5jdGlvbiByb3V0ZVRvUmVnRXhwKHJvdXRlID0gXCIvXCIpIHtcblx0Y29uc3QgcmVTZWdtZW50cyA9IFtdO1xuXHRsZXQgaWRDdHIgPSAwO1xuXHRmb3IgKGNvbnN0IHNlZ21lbnQgb2Ygcm91dGUuc3BsaXQoXCIvXCIpKSB7XG5cdFx0aWYgKCFzZWdtZW50KSBjb250aW51ZTtcblx0XHRpZiAoc2VnbWVudCA9PT0gXCIqXCIpIHJlU2VnbWVudHMucHVzaChgKD88XyR7aWRDdHIrK30+W14vXSopYCk7XG5cdFx0ZWxzZSBpZiAoc2VnbWVudC5zdGFydHNXaXRoKFwiKipcIikpIHJlU2VnbWVudHMucHVzaChzZWdtZW50ID09PSBcIioqXCIgPyBcIj8oPzxfPi4qKVwiIDogYD8oPzwke3NlZ21lbnQuc2xpY2UoMyl9Pi4rKWApO1xuXHRcdGVsc2UgaWYgKHNlZ21lbnQuaW5jbHVkZXMoXCI6XCIpKSByZVNlZ21lbnRzLnB1c2goc2VnbWVudC5yZXBsYWNlKC86KFxcdyspL2csIChfLCBpZCkgPT4gYCg/PCR7aWR9PlteL10rKWApLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuXCIpKTtcblx0XHRlbHNlIHJlU2VnbWVudHMucHVzaChzZWdtZW50KTtcblx0fVxuXHRyZXR1cm4gLyogQF9fUFVSRV9fICovIG5ldyBSZWdFeHAoYF4vJHtyZVNlZ21lbnRzLmpvaW4oXCIvXCIpfS8/JGApO1xufVxuXG5leHBvcnQgeyBOdWxsUHJvdG9PYmosIGFkZFJvdXRlLCBjcmVhdGVSb3V0ZXIsIGZpbmRBbGxSb3V0ZXMsIGZpbmRSb3V0ZSwgcmVtb3ZlUm91dGUsIHJvdXRlVG9SZWdFeHAgfTsiLCJpbXBvcnQgeyBzdGFuZGFyZGl6ZUhUVFBQYXRoLCBTdGFuZGFyZE9wZW5BUElKc29uU2VyaWFsaXplciwgU3RhbmRhcmRCcmFja2V0Tm90YXRpb25TZXJpYWxpemVyLCBTdGFuZGFyZE9wZW5BUElTZXJpYWxpemVyIH0gZnJvbSAnQG9ycGMvb3BlbmFwaS1jbGllbnQvc3RhbmRhcmQnO1xuaW1wb3J0IHsgU3RhbmRhcmRIYW5kbGVyIH0gZnJvbSAnQG9ycGMvc2VydmVyL3N0YW5kYXJkJztcbmltcG9ydCB7IGlzT1JQQ0Vycm9yU3RhdHVzIH0gZnJvbSAnQG9ycGMvY2xpZW50JztcbmltcG9ydCB7IGZhbGxiYWNrQ29udHJhY3RDb25maWcgfSBmcm9tICdAb3JwYy9jb250cmFjdCc7XG5pbXBvcnQgeyBpc09iamVjdCwgc3RyaW5naWZ5SlNPTiwgdHJ5RGVjb2RlVVJJQ29tcG9uZW50LCB2YWx1ZSB9IGZyb20gJ0BvcnBjL3NoYXJlZCc7XG5pbXBvcnQgeyB0b0h0dHBQYXRoIH0gZnJvbSAnQG9ycGMvY2xpZW50L3N0YW5kYXJkJztcbmltcG9ydCB7IHRyYXZlcnNlQ29udHJhY3RQcm9jZWR1cmVzLCBpc1Byb2NlZHVyZSwgZ2V0TGF6eU1ldGEsIHVubGF6eSwgZ2V0Um91dGVyLCBjcmVhdGVDb250cmFjdGVkUHJvY2VkdXJlIH0gZnJvbSAnQG9ycGMvc2VydmVyJztcbmltcG9ydCB7IGNyZWF0ZVJvdXRlciwgYWRkUm91dGUsIGZpbmRSb3V0ZSB9IGZyb20gJ3JvdTMnO1xuXG5jbGFzcyBTdGFuZGFyZE9wZW5BUElDb2RlYyB7XG4gIGNvbnN0cnVjdG9yKHNlcmlhbGl6ZXIsIG9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuc2VyaWFsaXplciA9IHNlcmlhbGl6ZXI7XG4gICAgdGhpcy5jdXN0b21FcnJvclJlc3BvbnNlQm9keUVuY29kZXIgPSBvcHRpb25zLmN1c3RvbUVycm9yUmVzcG9uc2VCb2R5RW5jb2RlcjtcbiAgfVxuICBjdXN0b21FcnJvclJlc3BvbnNlQm9keUVuY29kZXI7XG4gIGFzeW5jIGRlY29kZShyZXF1ZXN0LCBwYXJhbXMsIHByb2NlZHVyZSkge1xuICAgIGNvbnN0IGlucHV0U3RydWN0dXJlID0gZmFsbGJhY2tDb250cmFjdENvbmZpZyhcImRlZmF1bHRJbnB1dFN0cnVjdHVyZVwiLCBwcm9jZWR1cmVbXCJ+b3JwY1wiXS5yb3V0ZS5pbnB1dFN0cnVjdHVyZSk7XG4gICAgaWYgKGlucHV0U3RydWN0dXJlID09PSBcImNvbXBhY3RcIikge1xuICAgICAgY29uc3QgZGF0YSA9IHJlcXVlc3QubWV0aG9kID09PSBcIkdFVFwiID8gdGhpcy5zZXJpYWxpemVyLmRlc2VyaWFsaXplKHJlcXVlc3QudXJsLnNlYXJjaFBhcmFtcykgOiB0aGlzLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoYXdhaXQgcmVxdWVzdC5ib2R5KCkpO1xuICAgICAgaWYgKGRhdGEgPT09IHZvaWQgMCkge1xuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgIC4uLmRhdGFcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBjb25zdCBkZXNlcmlhbGl6ZVNlYXJjaFBhcmFtcyA9ICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUocmVxdWVzdC51cmwuc2VhcmNoUGFyYW1zKTtcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwYXJhbXMsXG4gICAgICBnZXQgcXVlcnkoKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGVzZXJpYWxpemVTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwicXVlcnlcIiwgeyB2YWx1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBzZXQgcXVlcnkodmFsdWUpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwicXVlcnlcIiwgeyB2YWx1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gICAgICB9LFxuICAgICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLFxuICAgICAgYm9keTogdGhpcy5zZXJpYWxpemVyLmRlc2VyaWFsaXplKGF3YWl0IHJlcXVlc3QuYm9keSgpKVxuICAgIH07XG4gIH1cbiAgZW5jb2RlKG91dHB1dCwgcHJvY2VkdXJlKSB7XG4gICAgY29uc3Qgc3VjY2Vzc1N0YXR1cyA9IGZhbGxiYWNrQ29udHJhY3RDb25maWcoXCJkZWZhdWx0U3VjY2Vzc1N0YXR1c1wiLCBwcm9jZWR1cmVbXCJ+b3JwY1wiXS5yb3V0ZS5zdWNjZXNzU3RhdHVzKTtcbiAgICBjb25zdCBvdXRwdXRTdHJ1Y3R1cmUgPSBmYWxsYmFja0NvbnRyYWN0Q29uZmlnKFwiZGVmYXVsdE91dHB1dFN0cnVjdHVyZVwiLCBwcm9jZWR1cmVbXCJ+b3JwY1wiXS5yb3V0ZS5vdXRwdXRTdHJ1Y3R1cmUpO1xuICAgIGlmIChvdXRwdXRTdHJ1Y3R1cmUgPT09IFwiY29tcGFjdFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IHN1Y2Nlc3NTdGF0dXMsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBib2R5OiB0aGlzLnNlcmlhbGl6ZXIuc2VyaWFsaXplKG91dHB1dClcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICghdGhpcy4jaXNEZXRhaWxlZE91dHB1dChvdXRwdXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICBJbnZhbGlkIFwiZGV0YWlsZWRcIiBvdXRwdXQgc3RydWN0dXJlOlxuICAgICAgICBcXHUyMDIyIEV4cGVjdGVkIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHByb3BlcnRpZXM6XG4gICAgICAgICAgLSBzdGF0dXMgKG51bWJlciAyMDAtMzk5KVxuICAgICAgICAgIC0gaGVhZGVycyAoUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+KVxuICAgICAgICAgIC0gYm9keSAoYW55KVxuICAgICAgICBcXHUyMDIyIE5vIGV4dHJhIGtleXMgYWxsb3dlZC5cblxuICAgICAgICBBY3R1YWwgdmFsdWU6XG4gICAgICAgICAgJHtzdHJpbmdpZnlKU09OKG91dHB1dCl9XG4gICAgICBgKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogb3V0cHV0LnN0YXR1cyA/PyBzdWNjZXNzU3RhdHVzLFxuICAgICAgaGVhZGVyczogb3V0cHV0LmhlYWRlcnMgPz8ge30sXG4gICAgICBib2R5OiB0aGlzLnNlcmlhbGl6ZXIuc2VyaWFsaXplKG91dHB1dC5ib2R5KVxuICAgIH07XG4gIH1cbiAgZW5jb2RlRXJyb3IoZXJyb3IpIHtcbiAgICBjb25zdCBib2R5ID0gdGhpcy5jdXN0b21FcnJvclJlc3BvbnNlQm9keUVuY29kZXI/LihlcnJvcikgPz8gZXJyb3IudG9KU09OKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogZXJyb3Iuc3RhdHVzLFxuICAgICAgaGVhZGVyczoge30sXG4gICAgICBib2R5OiB0aGlzLnNlcmlhbGl6ZXIuc2VyaWFsaXplKGJvZHksIHsgb3V0cHV0Rm9ybWF0OiBcInBsYWluXCIgfSlcbiAgICB9O1xuICB9XG4gICNpc0RldGFpbGVkT3V0cHV0KG91dHB1dCkge1xuICAgIGlmICghaXNPYmplY3Qob3V0cHV0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAob3V0cHV0LmhlYWRlcnMgJiYgIWlzT2JqZWN0KG91dHB1dC5oZWFkZXJzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAob3V0cHV0LnN0YXR1cyAhPT0gdm9pZCAwICYmICh0eXBlb2Ygb3V0cHV0LnN0YXR1cyAhPT0gXCJudW1iZXJcIiB8fCAhTnVtYmVyLmlzSW50ZWdlcihvdXRwdXQuc3RhdHVzKSB8fCBpc09SUENFcnJvclN0YXR1cyhvdXRwdXQuc3RhdHVzKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9Sb3UzUGF0dGVybihwYXRoKSB7XG4gIHJldHVybiBzdGFuZGFyZGl6ZUhUVFBQYXRoKHBhdGgpLnJlcGxhY2UoL1xcL1xce1xcKyhbXn1dKylcXH0vZywgXCIvKio6JDFcIikucmVwbGFjZSgvXFwvXFx7KFtefV0rKVxcfS9nLCBcIi86JDFcIik7XG59XG5mdW5jdGlvbiBkZWNvZGVQYXJhbXMocGFyYW1zKSB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMocGFyYW1zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW2tleSwgdHJ5RGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKV0pKTtcbn1cblxuY2xhc3MgU3RhbmRhcmRPcGVuQVBJTWF0Y2hlciB7XG4gIGZpbHRlcjtcbiAgdHJlZSA9IGNyZWF0ZVJvdXRlcigpO1xuICBwZW5kaW5nUm91dGVycyA9IFtdO1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICB0aGlzLmZpbHRlciA9IG9wdGlvbnMuZmlsdGVyID8/IHRydWU7XG4gIH1cbiAgaW5pdChyb3V0ZXIsIHBhdGggPSBbXSkge1xuICAgIGNvbnN0IGxhemllZE9wdGlvbnMgPSB0cmF2ZXJzZUNvbnRyYWN0UHJvY2VkdXJlcyh7IHJvdXRlciwgcGF0aCB9LCAodHJhdmVyc2VPcHRpb25zKSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKHRoaXMuZmlsdGVyLCB0cmF2ZXJzZU9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgcGF0aDogcGF0aDIsIGNvbnRyYWN0IH0gPSB0cmF2ZXJzZU9wdGlvbnM7XG4gICAgICBjb25zdCBtZXRob2QgPSBmYWxsYmFja0NvbnRyYWN0Q29uZmlnKFwiZGVmYXVsdE1ldGhvZFwiLCBjb250cmFjdFtcIn5vcnBjXCJdLnJvdXRlLm1ldGhvZCk7XG4gICAgICBjb25zdCBodHRwUGF0aCA9IHRvUm91M1BhdHRlcm4oY29udHJhY3RbXCJ+b3JwY1wiXS5yb3V0ZS5wYXRoID8/IHRvSHR0cFBhdGgocGF0aDIpKTtcbiAgICAgIGlmIChpc1Byb2NlZHVyZShjb250cmFjdCkpIHtcbiAgICAgICAgYWRkUm91dGUodGhpcy50cmVlLCBtZXRob2QsIGh0dHBQYXRoLCB7XG4gICAgICAgICAgcGF0aDogcGF0aDIsXG4gICAgICAgICAgY29udHJhY3QsXG4gICAgICAgICAgcHJvY2VkdXJlOiBjb250cmFjdCxcbiAgICAgICAgICAvLyB0aGlzIG1lYW4gZGV2IG5vdCB1c2VkIGNvbnRyYWN0LWZpcnN0IHNvIHdlIGNhbiB1c2VkIGNvbnRyYWN0IGFzIHByb2NlZHVyZSBkaXJlY3RseVxuICAgICAgICAgIHJvdXRlclxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFkZFJvdXRlKHRoaXMudHJlZSwgbWV0aG9kLCBodHRwUGF0aCwge1xuICAgICAgICAgIHBhdGg6IHBhdGgyLFxuICAgICAgICAgIGNvbnRyYWN0LFxuICAgICAgICAgIHByb2NlZHVyZTogdm9pZCAwLFxuICAgICAgICAgIHJvdXRlclxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnBlbmRpbmdSb3V0ZXJzLnB1c2goLi4ubGF6aWVkT3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gKHtcbiAgICAgIC4uLm9wdGlvbixcbiAgICAgIGh0dHBQYXRoUHJlZml4OiB0b0h0dHBQYXRoKG9wdGlvbi5wYXRoKSxcbiAgICAgIGxhemllZFByZWZpeDogZ2V0TGF6eU1ldGEob3B0aW9uLnJvdXRlcikucHJlZml4XG4gICAgfSkpKTtcbiAgfVxuICBhc3luYyBtYXRjaChtZXRob2QsIHBhdGhuYW1lKSB7XG4gICAgaWYgKHRoaXMucGVuZGluZ1JvdXRlcnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBuZXdQZW5kaW5nUm91dGVycyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBwZW5kaW5nUm91dGVyIG9mIHRoaXMucGVuZGluZ1JvdXRlcnMpIHtcbiAgICAgICAgaWYgKCFwZW5kaW5nUm91dGVyLmxhemllZFByZWZpeCB8fCBwYXRobmFtZS5zdGFydHNXaXRoKHBlbmRpbmdSb3V0ZXIubGF6aWVkUHJlZml4KSB8fCBwYXRobmFtZS5zdGFydHNXaXRoKHBlbmRpbmdSb3V0ZXIuaHR0cFBhdGhQcmVmaXgpKSB7XG4gICAgICAgICAgY29uc3QgeyBkZWZhdWx0OiByb3V0ZXIgfSA9IGF3YWl0IHVubGF6eShwZW5kaW5nUm91dGVyLnJvdXRlcik7XG4gICAgICAgICAgdGhpcy5pbml0KHJvdXRlciwgcGVuZGluZ1JvdXRlci5wYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdQZW5kaW5nUm91dGVycy5wdXNoKHBlbmRpbmdSb3V0ZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBlbmRpbmdSb3V0ZXJzID0gbmV3UGVuZGluZ1JvdXRlcnM7XG4gICAgfVxuICAgIGNvbnN0IG1hdGNoID0gZmluZFJvdXRlKHRoaXMudHJlZSwgbWV0aG9kLCBwYXRobmFtZSk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgaWYgKCFtYXRjaC5kYXRhLnByb2NlZHVyZSkge1xuICAgICAgY29uc3QgeyBkZWZhdWx0OiBtYXliZVByb2NlZHVyZSB9ID0gYXdhaXQgdW5sYXp5KGdldFJvdXRlcihtYXRjaC5kYXRhLnJvdXRlciwgbWF0Y2guZGF0YS5wYXRoKSk7XG4gICAgICBpZiAoIWlzUHJvY2VkdXJlKG1heWJlUHJvY2VkdXJlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICAgIFtDb250cmFjdC1GaXJzdF0gTWlzc2luZyBvciBpbnZhbGlkIGltcGxlbWVudGF0aW9uIGZvciBwcm9jZWR1cmUgYXQgcGF0aDogJHt0b0h0dHBQYXRoKG1hdGNoLmRhdGEucGF0aCl9LlxuICAgICAgICAgIEVuc3VyZSB0aGF0IHRoZSBwcm9jZWR1cmUgaXMgY29ycmVjdGx5IGRlZmluZWQgYW5kIG1hdGNoZXMgdGhlIGV4cGVjdGVkIGNvbnRyYWN0LlxuICAgICAgICBgKTtcbiAgICAgIH1cbiAgICAgIG1hdGNoLmRhdGEucHJvY2VkdXJlID0gY3JlYXRlQ29udHJhY3RlZFByb2NlZHVyZShtYXliZVByb2NlZHVyZSwgbWF0Y2guZGF0YS5jb250cmFjdCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiBtYXRjaC5kYXRhLnBhdGgsXG4gICAgICBwcm9jZWR1cmU6IG1hdGNoLmRhdGEucHJvY2VkdXJlLFxuICAgICAgcGFyYW1zOiBtYXRjaC5wYXJhbXMgPyBkZWNvZGVQYXJhbXMobWF0Y2gucGFyYW1zKSA6IHZvaWQgMFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgU3RhbmRhcmRPcGVuQVBJSGFuZGxlciBleHRlbmRzIFN0YW5kYXJkSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKHJvdXRlciwgb3B0aW9ucykge1xuICAgIGNvbnN0IGpzb25TZXJpYWxpemVyID0gbmV3IFN0YW5kYXJkT3BlbkFQSUpzb25TZXJpYWxpemVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IGJyYWNrZXROb3RhdGlvblNlcmlhbGl6ZXIgPSBuZXcgU3RhbmRhcmRCcmFja2V0Tm90YXRpb25TZXJpYWxpemVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZXIgPSBuZXcgU3RhbmRhcmRPcGVuQVBJU2VyaWFsaXplcihqc29uU2VyaWFsaXplciwgYnJhY2tldE5vdGF0aW9uU2VyaWFsaXplcik7XG4gICAgY29uc3QgbWF0Y2hlciA9IG5ldyBTdGFuZGFyZE9wZW5BUElNYXRjaGVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IGNvZGVjID0gbmV3IFN0YW5kYXJkT3BlbkFQSUNvZGVjKHNlcmlhbGl6ZXIsIG9wdGlvbnMpO1xuICAgIHN1cGVyKHJvdXRlciwgbWF0Y2hlciwgY29kZWMsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCB7IFN0YW5kYXJkT3BlbkFQSUNvZGVjIGFzIFMsIFN0YW5kYXJkT3BlbkFQSUhhbmRsZXIgYXMgYSwgU3RhbmRhcmRPcGVuQVBJTWF0Y2hlciBhcyBiLCBkZWNvZGVQYXJhbXMgYXMgZCwgdG9Sb3UzUGF0dGVybiBhcyB0IH07XG4iLCJpbXBvcnQgeyBGZXRjaEhhbmRsZXIgfSBmcm9tICdAb3JwYy9zZXJ2ZXIvZmV0Y2gnO1xuaW1wb3J0ICdAb3JwYy9jbGllbnQnO1xuaW1wb3J0ICdAb3JwYy9jb250cmFjdCc7XG5pbXBvcnQgJ0BvcnBjL3NoYXJlZCc7XG5pbXBvcnQgeyBhIGFzIFN0YW5kYXJkT3BlbkFQSUhhbmRsZXIgfSBmcm9tICcuLi8uLi9zaGFyZWQvb3BlbmFwaS5ESXQtWjlXMS5tanMnO1xuaW1wb3J0ICdAb3JwYy9jbGllbnQvc3RhbmRhcmQnO1xuaW1wb3J0ICdAb3JwYy9zZXJ2ZXInO1xuaW1wb3J0ICdyb3UzJztcbmltcG9ydCAnQG9ycGMvb3BlbmFwaS1jbGllbnQvc3RhbmRhcmQnO1xuaW1wb3J0ICdAb3JwYy9zZXJ2ZXIvc3RhbmRhcmQnO1xuXG5jbGFzcyBPcGVuQVBJSGFuZGxlciBleHRlbmRzIEZldGNoSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKHJvdXRlciwgb3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIobmV3IFN0YW5kYXJkT3BlbkFQSUhhbmRsZXIocm91dGVyLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IHsgT3BlbkFQSUhhbmRsZXIgfTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMCwxLDJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxNQUFNLGVBQStCLHVCQUFPO0NBQzNDLE1BQU0sSUFBSSxXQUFXO0FBQ3JCLFFBQU8sRUFBRSxZQUFZLE9BQU8sT0FBTyxLQUFLLEVBQUUsT0FBTyxPQUFPLEVBQUUsVUFBVSxFQUFFO0lBQ25FOzs7O0FBS0osU0FBUyxlQUFlO0FBQ3ZCLFFBQU87RUFDTixNQUFNLEVBQUUsS0FBSyxJQUFJO0VBQ2pCLFFBQVEsSUFBSSxjQUFjO0VBQzFCOztBQUdGLFNBQVMsVUFBVSxNQUFNO0NBQ3hCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsS0FBSyxLQUFLLE1BQU0sSUFBSTtBQUNqQyxRQUFPLEVBQUUsRUFBRSxTQUFTLE9BQU8sS0FBSyxFQUFFLE1BQU0sR0FBRyxHQUFHLEdBQUc7O0FBRWxELFNBQVMsZUFBZSxVQUFVLFdBQVc7Q0FDNUMsTUFBTSxTQUFTLElBQUksY0FBYztBQUNqQyxNQUFLLE1BQU0sQ0FBQyxPQUFPLFNBQVMsV0FBVztFQUN0QyxNQUFNLFVBQVUsUUFBUSxJQUFJLFNBQVMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxLQUFLLElBQUksR0FBRyxTQUFTO0FBQzVFLE1BQUksT0FBTyxTQUFTLFNBQVUsUUFBTyxRQUFRO09BQ3hDO0dBQ0osTUFBTSxRQUFRLFFBQVEsTUFBTSxLQUFLO0FBQ2pDLE9BQUksTUFBTyxNQUFLLE1BQU0sT0FBTyxNQUFNLE9BQVEsUUFBTyxPQUFPLE1BQU0sT0FBTzs7O0FBR3hFLFFBQU87Ozs7O0FBTVIsU0FBUyxTQUFTLEtBQUssU0FBUyxJQUFJLE1B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
|