vite-plugin-react-server 1.2.5 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +8 -4
- package/dist/plugin/orchestrator/createPluginOrchestrator.client.d.ts.map +1 -1
- package/dist/plugin/orchestrator/createPluginOrchestrator.client.js +3 -0
- package/dist/plugin/orchestrator/createPluginOrchestrator.server.d.ts.map +1 -1
- package/dist/plugin/orchestrator/createPluginOrchestrator.server.js +3 -0
- package/dist/plugin/vendor/register-vendor.d.ts +2 -0
- package/dist/plugin/vendor/register-vendor.d.ts.map +1 -0
- package/dist/plugin/vendor/register-vendor.js +50 -0
- package/dist/plugin/vendor/vendor-alias.d.ts +12 -0
- package/dist/plugin/vendor/vendor-alias.d.ts.map +1 -0
- package/dist/plugin/vendor/vendor-alias.js +97 -0
- package/dist/plugin/vendor/vendor.client.d.ts +1 -1
- package/dist/plugin/vendor/vendor.client.d.ts.map +1 -1
- package/dist/plugin/vendor/vendor.client.js +19 -6
- package/dist/plugin/vendor/vendor.server.d.ts.map +1 -1
- package/dist/plugin/vendor/vendor.server.js +18 -5
- package/dist/plugin/vendor/vendor.static.d.ts.map +1 -1
- package/dist/plugin/vendor/vendor.static.js +18 -5
- package/dist/plugin/worker/createWorker.d.ts.map +1 -1
- package/dist/plugin/worker/createWorker.js +5 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/oss-experimental/react-server-dom-esm/LICENSE +21 -0
- package/oss-experimental/react-server-dom-esm/README.md +5 -0
- package/oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-client.browser.development.js +2996 -0
- package/oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-client.browser.production.js +1612 -0
- package/oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-client.node.development.js +3124 -0
- package/oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-client.node.production.js +1752 -0
- package/oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +4213 -0
- package/oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.production.js +2857 -0
- package/oss-experimental/react-server-dom-esm/client.browser.js +7 -0
- package/oss-experimental/react-server-dom-esm/client.js +3 -0
- package/oss-experimental/react-server-dom-esm/client.node.js +7 -0
- package/oss-experimental/react-server-dom-esm/esm/package.json +3 -0
- package/oss-experimental/react-server-dom-esm/esm/react-server-dom-esm-client.browser.development.js +3969 -0
- package/oss-experimental/react-server-dom-esm/esm/react-server-dom-esm-client.browser.production.js +2347 -0
- package/oss-experimental/react-server-dom-esm/esm/react-server-dom-esm-node-loader.production.js +515 -0
- package/oss-experimental/react-server-dom-esm/esm/react-server-dom-esm-server.js +13 -0
- package/oss-experimental/react-server-dom-esm/esm/react-server-dom-esm-server.node.js +13 -0
- package/oss-experimental/react-server-dom-esm/index.js +12 -0
- package/oss-experimental/react-server-dom-esm/package.json +63 -0
- package/oss-experimental/react-server-dom-esm/server.js +6 -0
- package/oss-experimental/react-server-dom-esm/server.node.js +17 -0
- package/oss-experimental/react-server-dom-esm/static.js +6 -0
- package/oss-experimental/react-server-dom-esm/static.node.js +12 -0
- package/package.json +8 -4
- package/plugin/orchestrator/createPluginOrchestrator.client.ts +4 -0
- package/plugin/orchestrator/createPluginOrchestrator.server.ts +4 -0
- package/plugin/vendor/register-vendor.ts +51 -0
- package/plugin/vendor/vendor-alias.ts +112 -0
- package/plugin/vendor/vendor.client.ts +24 -9
- package/plugin/vendor/vendor.server.ts +23 -7
- package/plugin/vendor/vendor.static.ts +21 -7
- package/plugin/worker/createWorker.ts +4 -0
- package/scripts/build-oss-experimental.sh +161 -0
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vite-plugin-react-server",
|
|
3
|
-
"version": "1.2
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "Vite plugin for React Server Components (RSC)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/plugin/index.js",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"virtual.d.ts",
|
|
15
15
|
"README.md",
|
|
16
16
|
"LICENSE",
|
|
17
|
-
"tsconfig.json"
|
|
17
|
+
"tsconfig.json",
|
|
18
|
+
"oss-experimental/react-server-dom-esm"
|
|
18
19
|
],
|
|
19
20
|
"exports": {
|
|
20
21
|
".": "./dist/plugin/index.js",
|
|
@@ -218,9 +219,10 @@
|
|
|
218
219
|
"experimental:copy": "cp -r ./oss-experimental/* ./node_modules/",
|
|
219
220
|
"experimental:patch": "npx patch-package react-server-dom-esm react react-dom --exclude 'nothing'",
|
|
220
221
|
"experimental:move-patches": "mv patches/* ./scripts/",
|
|
222
|
+
"experimental:build-oss": "bash scripts/build-oss-experimental.sh",
|
|
223
|
+
"experimental:build-oss-full": "bash scripts/build-oss-experimental.sh --full",
|
|
221
224
|
"experimental:setup": "rm -rf patches/* && npm run experimental:clean-install && npm run experimental:copy && npm run experimental:patch && npm run experimental:move-patches",
|
|
222
225
|
"experimental:patch-react": "npm run experimental:clean-install && node scripts/check-react-version.mjs && node bin/patch.mjs",
|
|
223
|
-
"postinstall": "patch-package",
|
|
224
226
|
"test-parse": "node -e \"const acorn = require('acorn'); const ast = acorn.parse('export async function test() {}', { sourceType: 'module', ecmaVersion: 'latest' }); console.log(JSON.stringify(ast, null, 2));\"",
|
|
225
227
|
"precoverage": "npm run build",
|
|
226
228
|
"coverage": "npm run test:coverage"
|
|
@@ -248,7 +250,6 @@
|
|
|
248
250
|
"peerDependencies": {
|
|
249
251
|
"react": ">=0.0.0-experimental-0",
|
|
250
252
|
"react-dom": ">=0.0.0-experimental-0",
|
|
251
|
-
"react-server-dom-esm": "^0.0.1",
|
|
252
253
|
"vite": "*"
|
|
253
254
|
},
|
|
254
255
|
"peerDependenciesMeta": {
|
|
@@ -260,6 +261,9 @@
|
|
|
260
261
|
},
|
|
261
262
|
"vite": {
|
|
262
263
|
"optional": false
|
|
264
|
+
},
|
|
265
|
+
"react-server-dom-esm": {
|
|
266
|
+
"optional": true
|
|
263
267
|
}
|
|
264
268
|
},
|
|
265
269
|
"devDependencies": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPluginOrchestrator.client.d.ts","sourceRoot":"","sources":["../../../plugin/orchestrator/createPluginOrchestrator.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"createPluginOrchestrator.client.d.ts","sourceRoot":"","sources":["../../../plugin/orchestrator/createPluginOrchestrator.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAUnC,eAAO,MAAM,wBAAwB,GACnC,aAAa,GAAG,KACf,MAAM,EAsCR,CAAC"}
|
|
@@ -4,11 +4,14 @@ import { vitePluginReactDevServer } from "../dev-server/plugin.client.js";
|
|
|
4
4
|
import { reactStaticPlugin } from "../react-static/plugin.client.js";
|
|
5
5
|
import { createTransformerPlugin } from "../transformer/createTransformerPlugin.js";
|
|
6
6
|
import { virtualRscHmrPlugin } from "../dev-server/virtualRscHmrPlugin.js";
|
|
7
|
+
import { vitePluginVendorAlias } from "../vendor/vendor-alias.js";
|
|
7
8
|
// Client-first orchestrator - includes client SSG plugin for reverse paradigm
|
|
8
9
|
export const createPluginOrchestrator = (userOptions) => {
|
|
9
10
|
// Client-first logic - provide all environments for Environment API builds
|
|
10
11
|
const availableEnvironments = ["client", "ssr", "server"];
|
|
11
12
|
const plugins = [];
|
|
13
|
+
// Alias react-server-dom-esm to our vendored copy
|
|
14
|
+
plugins.push(vitePluginVendorAlias());
|
|
12
15
|
// Virtual module for RSC HMR utilities (works in both dev and build)
|
|
13
16
|
plugins.push(virtualRscHmrPlugin());
|
|
14
17
|
// Add transformer first so it runs before other plugins
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPluginOrchestrator.server.d.ts","sourceRoot":"","sources":["../../../plugin/orchestrator/createPluginOrchestrator.server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"createPluginOrchestrator.server.d.ts","sourceRoot":"","sources":["../../../plugin/orchestrator/createPluginOrchestrator.server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAUnC,eAAO,MAAM,wBAAwB,GACnC,aAAa,GAAG,KACf,MAAM,EA8CR,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { vitePluginReactDevServer } from "../dev-server/plugin.server.js";
|
|
|
4
4
|
import { reactStaticPlugin } from "../react-static/plugin.server.js";
|
|
5
5
|
import { createTransformerPlugin } from "../transformer/createTransformerPlugin.js";
|
|
6
6
|
import { virtualRscHmrPlugin } from "../dev-server/virtualRscHmrPlugin.js";
|
|
7
|
+
import { vitePluginVendorAlias } from "../vendor/vendor-alias.js";
|
|
7
8
|
// Server-first orchestrator - only imports server plugins
|
|
8
9
|
export const createPluginOrchestrator = (userOptions) => {
|
|
9
10
|
// Server-first logic - provide all environments for Environment API builds
|
|
@@ -15,6 +16,8 @@ export const createPluginOrchestrator = (userOptions) => {
|
|
|
15
16
|
ssrBuilds: true,
|
|
16
17
|
};
|
|
17
18
|
const plugins = [];
|
|
19
|
+
// Alias react-server-dom-esm to our vendored copy
|
|
20
|
+
plugins.push(vitePluginVendorAlias());
|
|
18
21
|
// Virtual module for RSC HMR utilities (works in both dev and build)
|
|
19
22
|
plugins.push(virtualRscHmrPlugin());
|
|
20
23
|
// Add transformer first so it runs before other plugins
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-vendor.d.ts","sourceRoot":"","sources":["../../../plugin/vendor/register-vendor.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js module resolution hook that redirects `react-server-dom-esm/*`
|
|
3
|
+
* to the vendored copy at runtime. Used by the RSC worker via --import.
|
|
4
|
+
*
|
|
5
|
+
* Server entries use ESM wrappers (in esm/) that re-export from CJS
|
|
6
|
+
* so Node's ESM loader can provide named exports.
|
|
7
|
+
*/
|
|
8
|
+
import { register } from "node:module";
|
|
9
|
+
import { dirname, join } from "node:path";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
|
+
import { existsSync } from "node:fs";
|
|
12
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
function findPkgRoot() {
|
|
14
|
+
let dir = __dirname;
|
|
15
|
+
for (let i = 0; i < 5; i++) {
|
|
16
|
+
if (existsSync(join(dir, "oss-experimental", "react-server-dom-esm")))
|
|
17
|
+
return dir;
|
|
18
|
+
dir = dirname(dir);
|
|
19
|
+
}
|
|
20
|
+
return dirname(dirname(__dirname));
|
|
21
|
+
}
|
|
22
|
+
const ossDir = join(findPkgRoot(), "oss-experimental", "react-server-dom-esm");
|
|
23
|
+
register("data:text/javascript," + encodeURIComponent(`
|
|
24
|
+
const ossDir = ${JSON.stringify(ossDir)};
|
|
25
|
+
const { join } = await import("node:path");
|
|
26
|
+
const { pathToFileURL } = await import("node:url");
|
|
27
|
+
|
|
28
|
+
// Map bare specifiers to vendored files. Server entries use ESM wrappers
|
|
29
|
+
// that re-export from CJS for proper named export support.
|
|
30
|
+
const subpathMap = {
|
|
31
|
+
"react-server-dom-esm": join(ossDir, "index.js"),
|
|
32
|
+
"react-server-dom-esm/client": join(ossDir, "client.js"),
|
|
33
|
+
"react-server-dom-esm/client.browser": join(ossDir, "esm", "react-server-dom-esm-client.browser.production.js"),
|
|
34
|
+
"react-server-dom-esm/client.node": join(ossDir, "client.node.js"),
|
|
35
|
+
"react-server-dom-esm/server": join(ossDir, "esm", "react-server-dom-esm-server.node.js"),
|
|
36
|
+
"react-server-dom-esm/server.node": join(ossDir, "esm", "react-server-dom-esm-server.node.js"),
|
|
37
|
+
"react-server-dom-esm/static": join(ossDir, "static.js"),
|
|
38
|
+
"react-server-dom-esm/static.node": join(ossDir, "static.node.js"),
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export async function resolve(specifier, context, nextResolve) {
|
|
42
|
+
if (specifier in subpathMap) {
|
|
43
|
+
return {
|
|
44
|
+
shortCircuit: true,
|
|
45
|
+
url: pathToFileURL(subpathMap[specifier]).href,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return nextResolve(specifier, context);
|
|
49
|
+
}
|
|
50
|
+
`), import.meta.url);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Plugin } from "vite";
|
|
2
|
+
/**
|
|
3
|
+
* Vite plugin that aliases `react-server-dom-esm/*` imports to the vendored
|
|
4
|
+
* copy shipped with this plugin. This eliminates the need for consumers to
|
|
5
|
+
* install `react-server-dom-esm` separately or use patch-package.
|
|
6
|
+
*
|
|
7
|
+
* Browser client entries use true ESM files for Rollup tree-shaking.
|
|
8
|
+
* Server/static entries are marked external during builds — they're CJS
|
|
9
|
+
* modules loaded at runtime via createRequire in vendor.*.ts files.
|
|
10
|
+
*/
|
|
11
|
+
export declare function vitePluginVendorAlias(): Plugin;
|
|
12
|
+
//# sourceMappingURL=vendor-alias.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vendor-alias.d.ts","sourceRoot":"","sources":["../../../plugin/vendor/vendor-alias.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAmBnC;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAqD9C"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { dirname, join } from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
// Find package root by walking up from current file until we find oss-experimental/
|
|
5
|
+
// Works from both plugin/vendor/ (source) and dist/plugin/vendor/ (built)
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
function findPkgRoot() {
|
|
8
|
+
let dir = __dirname;
|
|
9
|
+
for (let i = 0; i < 5; i++) {
|
|
10
|
+
if (existsSync(join(dir, "oss-experimental", "react-server-dom-esm")))
|
|
11
|
+
return dir;
|
|
12
|
+
dir = dirname(dir);
|
|
13
|
+
}
|
|
14
|
+
return dirname(dirname(__dirname)); // fallback
|
|
15
|
+
}
|
|
16
|
+
const pkgRoot = findPkgRoot();
|
|
17
|
+
const ossDir = join(pkgRoot, "oss-experimental");
|
|
18
|
+
/**
|
|
19
|
+
* Vite plugin that aliases `react-server-dom-esm/*` imports to the vendored
|
|
20
|
+
* copy shipped with this plugin. This eliminates the need for consumers to
|
|
21
|
+
* install `react-server-dom-esm` separately or use patch-package.
|
|
22
|
+
*
|
|
23
|
+
* Browser client entries use true ESM files for Rollup tree-shaking.
|
|
24
|
+
* Server/static entries are marked external during builds — they're CJS
|
|
25
|
+
* modules loaded at runtime via createRequire in vendor.*.ts files.
|
|
26
|
+
*/
|
|
27
|
+
export function vitePluginVendorAlias() {
|
|
28
|
+
let isBuild = false;
|
|
29
|
+
return {
|
|
30
|
+
name: "vite-plugin-react-server:vendor-alias",
|
|
31
|
+
enforce: "pre",
|
|
32
|
+
config(_config, env) {
|
|
33
|
+
const pkg = join(ossDir, "react-server-dom-esm");
|
|
34
|
+
const isProd = env.mode === "production";
|
|
35
|
+
// Only alias browser client to ESM for Rollup tree-shaking.
|
|
36
|
+
// Server/static are handled by resolveId with external:true.
|
|
37
|
+
return {
|
|
38
|
+
resolve: {
|
|
39
|
+
alias: [
|
|
40
|
+
{
|
|
41
|
+
find: "react-server-dom-esm/client.browser",
|
|
42
|
+
replacement: join(pkg, "esm", isProd
|
|
43
|
+
? "react-server-dom-esm-client.browser.production.js"
|
|
44
|
+
: "react-server-dom-esm-client.browser.development.js")
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
configResolved(config) {
|
|
51
|
+
isBuild = config.command === "build";
|
|
52
|
+
},
|
|
53
|
+
resolveId(source) {
|
|
54
|
+
// Only handle react-server-dom-esm specifiers (not already aliased paths)
|
|
55
|
+
if (!source.startsWith("react-server-dom-esm")) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Skip client.browser — handled by config alias above
|
|
59
|
+
if (source === "react-server-dom-esm/client.browser") {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
// For server/static entries during build: mark external with resolved path.
|
|
63
|
+
// At runtime, vendor.*.ts uses createRequire to load from this path.
|
|
64
|
+
if (isBuild && isServerEntry(source)) {
|
|
65
|
+
const resolved = resolveVendored(source);
|
|
66
|
+
return { id: resolved, external: true };
|
|
67
|
+
}
|
|
68
|
+
// For all other entries (client.node, client, index), resolve to vendored path
|
|
69
|
+
return resolveVendored(source);
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function isServerEntry(source) {
|
|
74
|
+
return (source.includes("/server") ||
|
|
75
|
+
source.includes("/static"));
|
|
76
|
+
}
|
|
77
|
+
// Explicit subpath → file mapping. Server entries always resolve to .node
|
|
78
|
+
// variants to bypass the react-server condition guard in server.js.
|
|
79
|
+
const subpathMap = {
|
|
80
|
+
"react-server-dom-esm": "index.js",
|
|
81
|
+
"react-server-dom-esm/client": "client.js",
|
|
82
|
+
"react-server-dom-esm/client.browser": "client.browser.js",
|
|
83
|
+
"react-server-dom-esm/client.node": "client.node.js",
|
|
84
|
+
"react-server-dom-esm/server": "server.node.js",
|
|
85
|
+
"react-server-dom-esm/server.node": "server.node.js",
|
|
86
|
+
"react-server-dom-esm/static": "static.node.js",
|
|
87
|
+
"react-server-dom-esm/static.node": "static.node.js",
|
|
88
|
+
};
|
|
89
|
+
function resolveVendored(source) {
|
|
90
|
+
const file = subpathMap[source];
|
|
91
|
+
if (file) {
|
|
92
|
+
return join(ossDir, "react-server-dom-esm", file);
|
|
93
|
+
}
|
|
94
|
+
// Fallback for unknown subpaths
|
|
95
|
+
const subpath = source.replace("react-server-dom-esm", "");
|
|
96
|
+
return join(ossDir, "react-server-dom-esm", subpath || "index.js");
|
|
97
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
declare const ReactDOMServer: typeof import("react-dom/server");
|
|
2
1
|
declare const ReactDOMClient: typeof import("react-server-dom-esm/client.node");
|
|
2
|
+
declare const ReactDOMServer: typeof import("react-dom/server");
|
|
3
3
|
declare const React: typeof import("react");
|
|
4
4
|
export { ReactDOMServer, React, ReactDOMClient };
|
|
5
5
|
//# sourceMappingURL=vendor.client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendor.client.d.ts","sourceRoot":"","sources":["../../../plugin/vendor/vendor.client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vendor.client.d.ts","sourceRoot":"","sources":["../../../plugin/vendor/vendor.client.ts"],"names":[],"mappings":"AAqBA,QAAA,MAAM,cAAc,EAA4E,cAAc,kCAAkC,CAAC,CAAC;AAKlJ,QAAA,MAAM,cAAc,EAAyC,cAAc,kBAAkB,CAAC,CAAC;AAC/F,QAAA,MAAM,KAAK,EAA8B,cAAc,OAAO,CAAC,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -4,15 +4,28 @@
|
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
6
|
import { createRequire } from 'node:module';
|
|
7
|
-
import { join } from 'node:path';
|
|
7
|
+
import { dirname, join } from 'node:path';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
9
|
+
import { existsSync } from 'node:fs';
|
|
8
10
|
import { assertNonReactServer } from '../config/getCondition.js';
|
|
9
11
|
|
|
10
12
|
assertNonReactServer();
|
|
13
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
function findPkgRoot() {
|
|
15
|
+
let dir = __dirname;
|
|
16
|
+
for (let i = 0; i < 5; i++) {
|
|
17
|
+
if (existsSync(join(dir, "oss-experimental", "react-server-dom-esm"))) return dir;
|
|
18
|
+
dir = dirname(dir);
|
|
19
|
+
}
|
|
20
|
+
return dirname(dirname(__dirname));
|
|
21
|
+
}
|
|
22
|
+
const ossDir = join(findPkgRoot(), "oss-experimental");
|
|
23
|
+
const vendorRequire = createRequire(join(ossDir, "react-server-dom-esm", "package.json"));
|
|
24
|
+
const ReactDOMClient = vendorRequire(join(ossDir, "react-server-dom-esm", "client.node.js"));
|
|
11
25
|
const projectRoot = process.env["npm_config_local_prefix"] || process.cwd();
|
|
12
|
-
const
|
|
13
|
-
const ReactDOMServer =
|
|
14
|
-
const
|
|
15
|
-
const React = nodeRequire("react");
|
|
26
|
+
const projectRequire = createRequire(join(projectRoot, "package.json"));
|
|
27
|
+
const ReactDOMServer = projectRequire("react-dom/server");
|
|
28
|
+
const React = projectRequire("react");
|
|
16
29
|
|
|
17
30
|
export { React, ReactDOMClient, ReactDOMServer };
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLmNsaWVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGx1Z2luL3ZlbmRvci92ZW5kb3IuY2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGFzc2VydE5vblJlYWN0U2VydmVyIH0gZnJvbSBcIi4uL2NvbmZpZy9nZXRDb25kaXRpb24uanNcIjtcblxuYXNzZXJ0Tm9uUmVhY3RTZXJ2ZXIoKTtcblxuY29uc3QgX19kaXJuYW1lID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuZnVuY3Rpb24gZmluZFBrZ1Jvb3QoKTogc3RyaW5nIHtcbiAgbGV0IGRpciA9IF9fZGlybmFtZTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICBpZiAoZXhpc3RzU3luYyhqb2luKGRpciwgXCJvc3MtZXhwZXJpbWVudGFsXCIsIFwicmVhY3Qtc2VydmVyLWRvbS1lc21cIikpKSByZXR1cm4gZGlyO1xuICAgIGRpciA9IGRpcm5hbWUoZGlyKTtcbiAgfVxuICByZXR1cm4gZGlybmFtZShkaXJuYW1lKF9fZGlybmFtZSkpO1xufVxuY29uc3Qgb3NzRGlyID0gam9pbihmaW5kUGtnUm9vdCgpLCBcIm9zcy1leHBlcmltZW50YWxcIik7XG5cbi8vIExvYWQgcmVhY3Qtc2VydmVyLWRvbS1lc20vY2xpZW50Lm5vZGUgZGlyZWN0bHkgZnJvbSB2ZW5kb3JlZCBjb3B5XG5jb25zdCB2ZW5kb3JSZXF1aXJlID0gY3JlYXRlUmVxdWlyZShqb2luKG9zc0RpciwgXCJyZWFjdC1zZXJ2ZXItZG9tLWVzbVwiLCBcInBhY2thZ2UuanNvblwiKSk7XG5jb25zdCBSZWFjdERPTUNsaWVudCA9IHZlbmRvclJlcXVpcmUoam9pbihvc3NEaXIsIFwicmVhY3Qtc2VydmVyLWRvbS1lc21cIiwgXCJjbGllbnQubm9kZS5qc1wiKSkgYXMgdHlwZW9mIGltcG9ydChcInJlYWN0LXNlcnZlci1kb20tZXNtL2NsaWVudC5ub2RlXCIpO1xuXG4vLyBSZWFjdCBhbmQgcmVhY3QtZG9tIHN0aWxsIGNvbWUgZnJvbSB0aGUgY29uc3VtZXIncyBwcm9qZWN0XG5jb25zdCBwcm9qZWN0Um9vdCA9IHByb2Nlc3MuZW52W1wibnBtX2NvbmZpZ19sb2NhbF9wcmVmaXhcIl0gfHwgcHJvY2Vzcy5jd2QoKTtcbmNvbnN0IHByb2plY3RSZXF1aXJlID0gY3JlYXRlUmVxdWlyZShqb2luKHByb2plY3RSb290LCBcInBhY2thZ2UuanNvblwiKSk7XG5jb25zdCBSZWFjdERPTVNlcnZlciA9IHByb2plY3RSZXF1aXJlKFwicmVhY3QtZG9tL3NlcnZlclwiKSBhcyB0eXBlb2YgaW1wb3J0KFwicmVhY3QtZG9tL3NlcnZlclwiKTtcbmNvbnN0IFJlYWN0ID0gcHJvamVjdFJlcXVpcmUoXCJyZWFjdFwiKSBhcyB0eXBlb2YgaW1wb3J0KFwicmVhY3RcIik7XG5cbmV4cG9ydCB7IFJlYWN0RE9NU2VydmVyLCBSZWFjdCwgUmVhY3RET01DbGllbnQgfTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQU1BLG9CQUFxQixFQUFBO0FBRXJCLE1BQU0sU0FBWSxHQUFBLE9BQUEsQ0FBUSxhQUFjLENBQUEsTUFBQSxDQUFBLElBQUEsQ0FBWSxHQUFHLENBQUMsQ0FBQTtBQUN4RCxTQUFTLFdBQXNCLEdBQUE7QUFDN0IsRUFBQSxJQUFJLEdBQU0sR0FBQSxTQUFBO0FBQ1YsRUFBQSxLQUFBLElBQVMsQ0FBSSxHQUFBLENBQUEsRUFBRyxDQUFJLEdBQUEsQ0FBQSxFQUFHLENBQUssRUFBQSxFQUFBO0FBQzFCLElBQUEsSUFBSSxXQUFXLElBQUssQ0FBQSxHQUFBLEVBQUssb0JBQW9CLHNCQUFzQixDQUFDLEdBQVUsT0FBQSxHQUFBO0FBQzlFLElBQUEsR0FBQSxHQUFNLFFBQVEsR0FBRyxDQUFBO0FBQUE7QUFFbkIsRUFBTyxPQUFBLE9BQUEsQ0FBUSxPQUFRLENBQUEsU0FBUyxDQUFDLENBQUE7QUFDbkM7QUFDQSxNQUFNLE1BQVMsR0FBQSxJQUFBLENBQUssV0FBWSxFQUFBLEVBQUcsa0JBQWtCLENBQUE7QUFHckQsTUFBTSxnQkFBZ0IsYUFBYyxDQUFBLElBQUEsQ0FBSyxNQUFRLEVBQUEsc0JBQUEsRUFBd0IsY0FBYyxDQUFDLENBQUE7QUFDeEYsTUFBTSxpQkFBaUIsYUFBYyxDQUFBLElBQUEsQ0FBSyxNQUFRLEVBQUEsc0JBQUEsRUFBd0IsZ0JBQWdCLENBQUM7QUFHM0YsTUFBTSxjQUFjLE9BQVEsQ0FBQSxHQUFBLENBQUkseUJBQXlCLENBQUEsSUFBSyxRQUFRLEdBQUksRUFBQTtBQUMxRSxNQUFNLGNBQWlCLEdBQUEsYUFBQSxDQUFjLElBQUssQ0FBQSxXQUFBLEVBQWEsY0FBYyxDQUFDLENBQUE7QUFDaEUsTUFBQSxjQUFBLEdBQWlCLGVBQWUsa0JBQWtCO0FBQ2xELE1BQUEsS0FBQSxHQUFRLGVBQWUsT0FBTzs7OzsifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendor.server.d.ts","sourceRoot":"","sources":["../../../plugin/vendor/vendor.server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vendor.server.d.ts","sourceRoot":"","sources":["../../../plugin/vendor/vendor.server.ts"],"names":[],"mappings":"AAmBA,QAAA,MAAM,cAAc,EAA4E,cAAc,kCAAkC,CAAC,CAAC;AAKlJ,QAAA,MAAM,KAAK,EAA8B,cAAc,OAAO,CAAC,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AACjC,mBAAmB,kCAAkC,CAAC;AACtD,MAAM,MAAM,KAAK,GAAG,cAAc,OAAO,CAAC,CAAC"}
|
|
@@ -4,12 +4,25 @@
|
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
6
|
import { createRequire } from 'node:module';
|
|
7
|
-
import { join } from 'node:path';
|
|
7
|
+
import { dirname, join } from 'node:path';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
9
|
+
import { existsSync } from 'node:fs';
|
|
8
10
|
|
|
11
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
function findPkgRoot() {
|
|
13
|
+
let dir = __dirname;
|
|
14
|
+
for (let i = 0; i < 5; i++) {
|
|
15
|
+
if (existsSync(join(dir, "oss-experimental", "react-server-dom-esm"))) return dir;
|
|
16
|
+
dir = dirname(dir);
|
|
17
|
+
}
|
|
18
|
+
return dirname(dirname(__dirname));
|
|
19
|
+
}
|
|
20
|
+
const ossDir = join(findPkgRoot(), "oss-experimental");
|
|
21
|
+
const vendorRequire = createRequire(join(ossDir, "react-server-dom-esm", "package.json"));
|
|
22
|
+
const ReactDOMServer = vendorRequire(join(ossDir, "react-server-dom-esm", "server.node.js"));
|
|
9
23
|
const projectRoot = process.env["npm_config_local_prefix"] || process.cwd();
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const React = nodeRequire("react");
|
|
24
|
+
const projectRequire = createRequire(join(projectRoot, "package.json"));
|
|
25
|
+
const React = projectRequire("react");
|
|
13
26
|
|
|
14
27
|
export { React, ReactDOMServer };
|
|
15
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLnNlcnZlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGx1Z2luL3ZlbmRvci92ZW5kb3Iuc2VydmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcblxuY29uc3QgX19kaXJuYW1lID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuZnVuY3Rpb24gZmluZFBrZ1Jvb3QoKTogc3RyaW5nIHtcbiAgbGV0IGRpciA9IF9fZGlybmFtZTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICBpZiAoZXhpc3RzU3luYyhqb2luKGRpciwgXCJvc3MtZXhwZXJpbWVudGFsXCIsIFwicmVhY3Qtc2VydmVyLWRvbS1lc21cIikpKSByZXR1cm4gZGlyO1xuICAgIGRpciA9IGRpcm5hbWUoZGlyKTtcbiAgfVxuICByZXR1cm4gZGlybmFtZShkaXJuYW1lKF9fZGlybmFtZSkpO1xufVxuY29uc3Qgb3NzRGlyID0gam9pbihmaW5kUGtnUm9vdCgpLCBcIm9zcy1leHBlcmltZW50YWxcIik7XG5cbi8vIExvYWQgcmVhY3Qtc2VydmVyLWRvbS1lc20vc2VydmVyLm5vZGUgZGlyZWN0bHkgZnJvbSB2ZW5kb3JlZCBjb3B5XG4vLyBVc2Ugc2VydmVyLm5vZGUuanMgKG5vdCBzZXJ2ZXIuanMgd2hpY2ggaXMgYSByZWFjdC1zZXJ2ZXIgY29uZGl0aW9uIGd1YXJkKVxuY29uc3QgdmVuZG9yUmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoam9pbihvc3NEaXIsIFwicmVhY3Qtc2VydmVyLWRvbS1lc21cIiwgXCJwYWNrYWdlLmpzb25cIikpO1xuY29uc3QgUmVhY3RET01TZXJ2ZXIgPSB2ZW5kb3JSZXF1aXJlKGpvaW4ob3NzRGlyLCBcInJlYWN0LXNlcnZlci1kb20tZXNtXCIsIFwic2VydmVyLm5vZGUuanNcIikpIGFzIHR5cGVvZiBpbXBvcnQoXCJyZWFjdC1zZXJ2ZXItZG9tLWVzbS9zZXJ2ZXIubm9kZVwiKTtcblxuLy8gUmVhY3Qgc3RpbGwgY29tZXMgZnJvbSB0aGUgY29uc3VtZXIncyBwcm9qZWN0XG5jb25zdCBwcm9qZWN0Um9vdCA9IHByb2Nlc3MuZW52W1wibnBtX2NvbmZpZ19sb2NhbF9wcmVmaXhcIl0gfHwgcHJvY2Vzcy5jd2QoKTtcbmNvbnN0IHByb2plY3RSZXF1aXJlID0gY3JlYXRlUmVxdWlyZShqb2luKHByb2plY3RSb290LCBcInBhY2thZ2UuanNvblwiKSk7XG5jb25zdCBSZWFjdCA9IHByb2plY3RSZXF1aXJlKFwicmVhY3RcIikgYXMgdHlwZW9mIGltcG9ydChcInJlYWN0XCIpO1xuXG5leHBvcnQgeyBSZWFjdERPTVNlcnZlciwgUmVhY3QgfTtcbmV4cG9ydCB0eXBlICogZnJvbSBcInJlYWN0LXNlcnZlci1kb20tZXNtL3NlcnZlci5ub2RlXCI7XG5leHBvcnQgdHlwZSBSZWFjdCA9IHR5cGVvZiBpbXBvcnQoXCJyZWFjdFwiKTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBS0EsTUFBTSxTQUFZLEdBQUEsT0FBQSxDQUFRLGFBQWMsQ0FBQSxNQUFBLENBQUEsSUFBQSxDQUFZLEdBQUcsQ0FBQyxDQUFBO0FBQ3hELFNBQVMsV0FBc0IsR0FBQTtBQUM3QixFQUFBLElBQUksR0FBTSxHQUFBLFNBQUE7QUFDVixFQUFBLEtBQUEsSUFBUyxDQUFJLEdBQUEsQ0FBQSxFQUFHLENBQUksR0FBQSxDQUFBLEVBQUcsQ0FBSyxFQUFBLEVBQUE7QUFDMUIsSUFBQSxJQUFJLFdBQVcsSUFBSyxDQUFBLEdBQUEsRUFBSyxvQkFBb0Isc0JBQXNCLENBQUMsR0FBVSxPQUFBLEdBQUE7QUFDOUUsSUFBQSxHQUFBLEdBQU0sUUFBUSxHQUFHLENBQUE7QUFBQTtBQUVuQixFQUFPLE9BQUEsT0FBQSxDQUFRLE9BQVEsQ0FBQSxTQUFTLENBQUMsQ0FBQTtBQUNuQztBQUNBLE1BQU0sTUFBUyxHQUFBLElBQUEsQ0FBSyxXQUFZLEVBQUEsRUFBRyxrQkFBa0IsQ0FBQTtBQUlyRCxNQUFNLGdCQUFnQixhQUFjLENBQUEsSUFBQSxDQUFLLE1BQVEsRUFBQSxzQkFBQSxFQUF3QixjQUFjLENBQUMsQ0FBQTtBQUN4RixNQUFNLGlCQUFpQixhQUFjLENBQUEsSUFBQSxDQUFLLE1BQVEsRUFBQSxzQkFBQSxFQUF3QixnQkFBZ0IsQ0FBQztBQUczRixNQUFNLGNBQWMsT0FBUSxDQUFBLEdBQUEsQ0FBSSx5QkFBeUIsQ0FBQSxJQUFLLFFBQVEsR0FBSSxFQUFBO0FBQzFFLE1BQU0sY0FBaUIsR0FBQSxhQUFBLENBQWMsSUFBSyxDQUFBLFdBQUEsRUFBYSxjQUFjLENBQUMsQ0FBQTtBQUNoRSxNQUFBLEtBQUEsR0FBUSxlQUFlLE9BQU87Ozs7In0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendor.static.d.ts","sourceRoot":"","sources":["../../../plugin/vendor/vendor.static.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vendor.static.d.ts","sourceRoot":"","sources":["../../../plugin/vendor/vendor.static.ts"],"names":[],"mappings":"AAkBA,QAAA,MAAM,cAAc,EAA4E,cAAc,kCAAkC,CAAC,CAAC;AAKlJ,QAAA,MAAM,KAAK,EAA8B,cAAc,OAAO,CAAC,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -4,12 +4,25 @@
|
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
6
|
import { createRequire } from 'node:module';
|
|
7
|
-
import { join } from 'node:path';
|
|
7
|
+
import { dirname, join } from 'node:path';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
9
|
+
import { existsSync } from 'node:fs';
|
|
8
10
|
|
|
11
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
function findPkgRoot() {
|
|
13
|
+
let dir = __dirname;
|
|
14
|
+
for (let i = 0; i < 5; i++) {
|
|
15
|
+
if (existsSync(join(dir, "oss-experimental", "react-server-dom-esm"))) return dir;
|
|
16
|
+
dir = dirname(dir);
|
|
17
|
+
}
|
|
18
|
+
return dirname(dirname(__dirname));
|
|
19
|
+
}
|
|
20
|
+
const ossDir = join(findPkgRoot(), "oss-experimental");
|
|
21
|
+
const vendorRequire = createRequire(join(ossDir, "react-server-dom-esm", "package.json"));
|
|
22
|
+
const ReactDOMServer = vendorRequire(join(ossDir, "react-server-dom-esm", "static.node.js"));
|
|
9
23
|
const projectRoot = process.env["npm_config_local_prefix"] || process.cwd();
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const React = nodeRequire("react");
|
|
24
|
+
const projectRequire = createRequire(join(projectRoot, "package.json"));
|
|
25
|
+
const React = projectRequire("react");
|
|
13
26
|
|
|
14
27
|
export { React, ReactDOMServer };
|
|
15
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLnN0YXRpYy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGx1Z2luL3ZlbmRvci92ZW5kb3Iuc3RhdGljLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcblxuY29uc3QgX19kaXJuYW1lID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuZnVuY3Rpb24gZmluZFBrZ1Jvb3QoKTogc3RyaW5nIHtcbiAgbGV0IGRpciA9IF9fZGlybmFtZTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICBpZiAoZXhpc3RzU3luYyhqb2luKGRpciwgXCJvc3MtZXhwZXJpbWVudGFsXCIsIFwicmVhY3Qtc2VydmVyLWRvbS1lc21cIikpKSByZXR1cm4gZGlyO1xuICAgIGRpciA9IGRpcm5hbWUoZGlyKTtcbiAgfVxuICByZXR1cm4gZGlybmFtZShkaXJuYW1lKF9fZGlybmFtZSkpO1xufVxuY29uc3Qgb3NzRGlyID0gam9pbihmaW5kUGtnUm9vdCgpLCBcIm9zcy1leHBlcmltZW50YWxcIik7XG5cbi8vIExvYWQgcmVhY3Qtc2VydmVyLWRvbS1lc20vc3RhdGljLm5vZGUgZGlyZWN0bHkgZnJvbSB2ZW5kb3JlZCBjb3B5XG5jb25zdCB2ZW5kb3JSZXF1aXJlID0gY3JlYXRlUmVxdWlyZShqb2luKG9zc0RpciwgXCJyZWFjdC1zZXJ2ZXItZG9tLWVzbVwiLCBcInBhY2thZ2UuanNvblwiKSk7XG5jb25zdCBSZWFjdERPTVNlcnZlciA9IHZlbmRvclJlcXVpcmUoam9pbihvc3NEaXIsIFwicmVhY3Qtc2VydmVyLWRvbS1lc21cIiwgXCJzdGF0aWMubm9kZS5qc1wiKSkgYXMgdHlwZW9mIGltcG9ydChcInJlYWN0LXNlcnZlci1kb20tZXNtL3N0YXRpYy5ub2RlXCIpO1xuXG4vLyBSZWFjdCBzdGlsbCBjb21lcyBmcm9tIHRoZSBjb25zdW1lcidzIHByb2plY3RcbmNvbnN0IHByb2plY3RSb290ID0gcHJvY2Vzcy5lbnZbXCJucG1fY29uZmlnX2xvY2FsX3ByZWZpeFwiXSB8fCBwcm9jZXNzLmN3ZCgpO1xuY29uc3QgcHJvamVjdFJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGpvaW4ocHJvamVjdFJvb3QsIFwicGFja2FnZS5qc29uXCIpKTtcbmNvbnN0IFJlYWN0ID0gcHJvamVjdFJlcXVpcmUoXCJyZWFjdFwiKSBhcyB0eXBlb2YgaW1wb3J0KFwicmVhY3RcIik7XG5cbmV4cG9ydCB7IFJlYWN0RE9NU2VydmVyLCBSZWFjdCB9O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFLQSxNQUFNLFNBQVksR0FBQSxPQUFBLENBQVEsYUFBYyxDQUFBLE1BQUEsQ0FBQSxJQUFBLENBQVksR0FBRyxDQUFDLENBQUE7QUFDeEQsU0FBUyxXQUFzQixHQUFBO0FBQzdCLEVBQUEsSUFBSSxHQUFNLEdBQUEsU0FBQTtBQUNWLEVBQUEsS0FBQSxJQUFTLENBQUksR0FBQSxDQUFBLEVBQUcsQ0FBSSxHQUFBLENBQUEsRUFBRyxDQUFLLEVBQUEsRUFBQTtBQUMxQixJQUFBLElBQUksV0FBVyxJQUFLLENBQUEsR0FBQSxFQUFLLG9CQUFvQixzQkFBc0IsQ0FBQyxHQUFVLE9BQUEsR0FBQTtBQUM5RSxJQUFBLEdBQUEsR0FBTSxRQUFRLEdBQUcsQ0FBQTtBQUFBO0FBRW5CLEVBQU8sT0FBQSxPQUFBLENBQVEsT0FBUSxDQUFBLFNBQVMsQ0FBQyxDQUFBO0FBQ25DO0FBQ0EsTUFBTSxNQUFTLEdBQUEsSUFBQSxDQUFLLFdBQVksRUFBQSxFQUFHLGtCQUFrQixDQUFBO0FBR3JELE1BQU0sZ0JBQWdCLGFBQWMsQ0FBQSxJQUFBLENBQUssTUFBUSxFQUFBLHNCQUFBLEVBQXdCLGNBQWMsQ0FBQyxDQUFBO0FBQ3hGLE1BQU0saUJBQWlCLGFBQWMsQ0FBQSxJQUFBLENBQUssTUFBUSxFQUFBLHNCQUFBLEVBQXdCLGdCQUFnQixDQUFDO0FBRzNGLE1BQU0sY0FBYyxPQUFRLENBQUEsR0FBQSxDQUFJLHlCQUF5QixDQUFBLElBQUssUUFBUSxHQUFJLEVBQUE7QUFDMUUsTUFBTSxjQUFpQixHQUFBLGFBQUEsQ0FBYyxJQUFLLENBQUEsV0FBQSxFQUFhLGNBQWMsQ0FBQyxDQUFBO0FBQ2hFLE1BQUEsS0FBQSxHQUFRLGVBQWUsT0FBTzs7OzsifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWorker.d.ts","sourceRoot":"","sources":["../../../plugin/worker/createWorker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"createWorker.d.ts","sourceRoot":"","sources":["../../../plugin/worker/createWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAOtC,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAGjD,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQ3C,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD9E;AAGD,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,CAAC;AAErB,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,MAAM,CAAC;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE;QACV,WAAW,CAAC,EAAE,qBAAqB,CAAC;QACpC,cAAc,CAAC,EAAE,wBAAwB,CAAC;QAC1C,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,cAAc,CAAC,EAAE,QAAQ,CAAC;QAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,2BAA2B,CAAC,EAAE,GAAG,CAAC;QAClC,2BAA2B,CAAC,EAAE,GAAG,CAAC;QAClC,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB,CAAC;IACF,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,mBAAmB,KACzB,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEjC,eAAO,MAAM,YAAY,EAAE,cAiU1B,CAAC"}
|
|
@@ -136,10 +136,13 @@ Current condition: ${currentCondition}, Reverse condition: ${reverseCondition}`
|
|
|
136
136
|
}
|
|
137
137
|
return out;
|
|
138
138
|
};
|
|
139
|
+
const vendorRegisterPath = new URL("../vendor/register-vendor.js", import.meta.url).href;
|
|
139
140
|
const computedExecArgv = [
|
|
140
141
|
...stripConditionsFromArgv(process.execArgv || []),
|
|
141
142
|
"--conditions",
|
|
142
|
-
reverseCondition
|
|
143
|
+
reverseCondition,
|
|
144
|
+
"--import",
|
|
145
|
+
vendorRegisterPath
|
|
143
146
|
];
|
|
144
147
|
if (verbose) {
|
|
145
148
|
logger.info(
|
|
@@ -315,4 +318,4 @@ ${err.stack}`,
|
|
|
315
318
|
};
|
|
316
319
|
|
|
317
320
|
export { createWorker, shutdownAllWorkers };
|
|
318
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlV29ya2VyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vd29ya2VyL2NyZWF0ZVdvcmtlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBXb3JrZXIsXG4gIHR5cGUgUmVzb3VyY2VMaW1pdHMsXG4gIHR5cGUgVHJhbnNmZXJMaXN0SXRlbSxcbiAgdHlwZSBNZXNzYWdlUG9ydCxcbn0gZnJvbSBcIm5vZGU6d29ya2VyX3RocmVhZHNcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlnRW52IH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCB7IGdldE1vZGUsIGdldE5vZGVQYXRoIH0gZnJvbSBcIi4uL2NvbmZpZy9nZXRQYXRocy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q29uZGl0aW9uIH0gZnJvbSBcIi4uL2NvbmZpZy9nZXRDb25kaXRpb24uanNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IHBsdWdpblJvb3QgfSBmcm9tIFwiLi4vcm9vdC5qc1wiO1xuaW1wb3J0IHsgREVGQVVMVF9DT05GSUcgfSBmcm9tIFwiLi4vY29uZmlnL2RlZmF1bHRzLmpzXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIHR5cGUgTG9nZ2VyIH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCB0eXBlIHsgSHRtbFdvcmtlck91dHB1dE1lc3NhZ2UgfSBmcm9tIFwiLi9odG1sL3R5cGVzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJzY1dvcmtlck91dHB1dE1lc3NhZ2UgfSBmcm9tIFwiLi9yc2MvdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgU2VyaWFsaXplZFJlc29sdmVkQ29uZmlnLFxuICBTZXJpYWxpemVkVXNlck9wdGlvbnMsXG59IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBNYW5pZmVzdCB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgdHlwZSB7IE91dHB1dEJ1bmRsZSB9IGZyb20gXCJyb2xsdXBcIjtcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL2hhbmRsZUVycm9yLmpzXCI7XG5pbXBvcnQgeyB0b0Vycm9yIH0gZnJvbSBcIi4uL2Vycm9yL3RvRXJyb3IuanNcIjtcblxuLy8gR2xvYmFsIHdvcmtlciByZWdpc3RyeSBmb3IgZ3JhY2VmdWwgc2h1dGRvd25cbmNvbnN0IGFjdGl2ZVdvcmtlcnMgPSBuZXcgU2V0PFdvcmtlcj4oKTtcblxuLy8gR3JhY2VmdWwgc2h1dGRvd24gZnVuY3Rpb24gdXNpbmcgdGhlIGV4aXN0aW5nIFNIVVRET1dOIHByb3RvY29sXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2h1dGRvd25BbGxXb3JrZXJzKHRpbWVvdXQ6IG51bWJlciA9IDEwMDApOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKGFjdGl2ZVdvcmtlcnMuc2l6ZSA9PT0gMCkgcmV0dXJuO1xuXG4gIGNvbnN0IHNodXRkb3duUHJvbWlzZXMgPSBBcnJheS5mcm9tKGFjdGl2ZVdvcmtlcnMpLm1hcCh3b3JrZXIgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgbGV0IG1lc3NhZ2VIYW5kbGVyOiAoKG1lc3NhZ2U6IGFueSkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICBcbiAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB3b3JrZXIucmVtb3ZlTGlzdGVuZXIoXCJtZXNzYWdlXCIsIG1lc3NhZ2VIYW5kbGVyISk7XG4gICAgICAgIHdvcmtlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gSWdub3JlIHRlcm1pbmF0aW9uIGVycm9yc1xuICAgICAgICB9XG4gICAgICAgIGFjdGl2ZVdvcmtlcnMuZGVsZXRlKHdvcmtlcik7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIHRpbWVvdXQpO1xuXG4gICAgICBtZXNzYWdlSGFuZGxlciA9IChtZXNzYWdlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJTSFVURE9XTl9DT01QTEVURVwiKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgd29ya2VyLnJlbW92ZUxpc3RlbmVyKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlciEpO1xuICAgICAgICAgIHdvcmtlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICBhY3RpdmVXb3JrZXJzLmRlbGV0ZSh3b3JrZXIpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgd29ya2VyLm9uKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlcik7XG4gICAgICBcbiAgICAgIC8vIFNlbmQgZ3JhY2VmdWwgc2h1dGRvd24gbWVzc2FnZVxuICAgICAgdHJ5IHtcbiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICB0eXBlOiBcIlNIVVRET1dOXCIsXG4gICAgICAgICAgaWQ6IFwiKlwiLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIElmIHdlIGNhbid0IHNlbmQgdGhlIG1lc3NhZ2UsIGZvcmNlIHRlcm1pbmF0ZVxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgd29ya2VyLnJlbW92ZUxpc3RlbmVyKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlciEpO1xuICAgICAgICB3b3JrZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICB9IGNhdGNoICh0ZXJtaW5hdGVFcnJvcikge1xuICAgICAgICAgIC8vIElnbm9yZSB0ZXJtaW5hdGlvbiBlcnJvcnNcbiAgICAgICAgfVxuICAgICAgICBhY3RpdmVXb3JrZXJzLmRlbGV0ZSh3b3JrZXIpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKHNodXRkb3duUHJvbWlzZXMpO1xuICBhY3RpdmVXb3JrZXJzLmNsZWFyKCk7XG59XG5cblxudHlwZSBDcmVhdGVXb3JrZXJTdWNjZXNzID0ge1xuICB0eXBlOiBcInN1Y2Nlc3NcIjtcbiAgd29ya2VyUGF0aDogc3RyaW5nO1xuICByZWFzb24/OiBuZXZlcjtcbiAgZXJyb3I/OiBuZXZlcjtcbiAgd29ya2VyOiBXb3JrZXI7XG59O1xuXG50eXBlIENyZWF0ZVdvcmtlckVycm9yID0ge1xuICB0eXBlOiBcImVycm9yXCI7XG4gIHdvcmtlclBhdGg6IHN0cmluZztcbiAgZXJyb3I6IEVycm9yIHwgbnVsbDtcbiAgd29ya2VyPzogbmV2ZXI7XG4gIHJlYXNvbj86IG5ldmVyO1xufTtcblxudHlwZSBDcmVhdGVXb3JrZXJTa2lwID0ge1xuICB0eXBlOiBcInNraXBcIjtcbiAgcmVhc29uOiBzdHJpbmc7XG4gIHdvcmtlclBhdGg6IHN0cmluZztcbiAgd29ya2VyPzogbmV2ZXI7XG4gIGVycm9yPzogbmV2ZXI7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVXb3JrZXJSZXR1cm4gPVxuICB8IENyZWF0ZVdvcmtlclN1Y2Nlc3NcbiAgfCBDcmVhdGVXb3JrZXJFcnJvclxuICB8IENyZWF0ZVdvcmtlclNraXA7XG5cbmV4cG9ydCB0eXBlIENyZWF0ZVdvcmtlck9wdGlvbnMgPSB7XG4gIHByb2plY3RSb290Pzogc3RyaW5nO1xuICBjdXJyZW50Q29uZGl0aW9uPzogXCJyZWFjdC1zZXJ2ZXJcIiB8IFwicmVhY3QtY2xpZW50XCI7XG4gIG5vZGVQYXRoPzogc3RyaW5nO1xuICBub2RlT3B0aW9ucz86IHN0cmluZ1tdO1xuICBlbnZQcmVmaXg/OiBzdHJpbmc7XG4gIG1vZGU/OiBcInByb2R1Y3Rpb25cIiB8IFwiZGV2ZWxvcG1lbnRcIiB8IFwidGVzdFwiO1xuICByZXZlcnNlQ29uZGl0aW9uPzogc3RyaW5nO1xuICBtYXhMaXN0ZW5lcnM/OiBudW1iZXI7XG4gIHdvcmtlclBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTGltaXRzPzogUmVzb3VyY2VMaW1pdHM7XG4gIHR5cGVzY3JpcHQ/OiBib29sZWFuO1xuICBodG1sQ2h1bmtTaXplPzogbnVtYmVyOyAvLyBTaXplIG9mIEhUTUwgY2h1bmtzIGluIGJ5dGVzXG4gIHdvcmtlckRhdGE6IHtcbiAgICB1c2VyT3B0aW9ucz86IFNlcmlhbGl6ZWRVc2VyT3B0aW9ucztcbiAgICByZXNvbHZlZENvbmZpZz86IFNlcmlhbGl6ZWRSZXNvbHZlZENvbmZpZztcbiAgICBjb25maWdFbnY/OiBDb25maWdFbnY7XG4gICAgcmVhY3RWZXJzaW9uPzogc3RyaW5nO1xuICAgIGlkPzogc3RyaW5nO1xuICAgIHNlcnZlck1hbmlmZXN0PzogTWFuaWZlc3Q7XG4gICAgYnVuZGxlPzogT3V0cHV0QnVuZGxlO1xuICAgIHN0YXRpY0J1bmRsZT86IE91dHB1dEJ1bmRsZTtcbiAgICBzZXJ2ZXJQaXBlYWJsZVN0cmVhbU9wdGlvbnM/OiBhbnk7XG4gICAgY2xpZW50UGlwZWFibGVTdHJlYW1PcHRpb25zPzogYW55O1xuICAgIGhtclBvcnQ/OiBNZXNzYWdlUG9ydDtcbiAgfTtcbiAgdHJhbnNmZXJMaXN0PzogVHJhbnNmZXJMaXN0SXRlbVtdO1xuICBsb2dnZXI/OiBMb2dnZXI7XG4gIHZlcmJvc2U/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlV29ya2VyRm4gPSAoXG4gIG9wdGlvbnM6IENyZWF0ZVdvcmtlck9wdGlvbnNcbikgPT4gUHJvbWlzZTxDcmVhdGVXb3JrZXJSZXR1cm4+O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlV29ya2VyOiBDcmVhdGVXb3JrZXJGbiA9IGFzeW5jIGZ1bmN0aW9uIF9jcmVhdGVXb3JrZXIoXG4gIG9wdGlvbnNcbikge1xuICBjb25zdCB7XG4gICAgcHJvamVjdFJvb3QgPSBwcm9jZXNzLmN3ZCgpLFxuICAgIG5vZGVQYXRoID0gZ2V0Tm9kZVBhdGgocHJvamVjdFJvb3QpLFxuICAgIGN1cnJlbnRDb25kaXRpb24gPSBnZXRDb25kaXRpb24oKSxcbiAgICBlbnZQcmVmaXggPSBERUZBVUxUX0NPTkZJRy5FTlZfUFJFRklYLFxuICAgIHJldmVyc2VDb25kaXRpb24gPSBjdXJyZW50Q29uZGl0aW9uID09PSBcInJlYWN0LXNlcnZlclwiXG4gICAgICA/IFwicmVhY3QtY2xpZW50XCJcbiAgICAgIDogXCJyZWFjdC1zZXJ2ZXJcIixcbiAgICBtYXhMaXN0ZW5lcnMgPSAxMDAsXG4gICAgbW9kZSA9IGdldE1vZGUoKSxcbiAgICB3b3JrZXJQYXRoLFxuICAgIHJlc291cmNlTGltaXRzID0ge1xuICAgICAgbWF4T2xkR2VuZXJhdGlvblNpemVNYjogMTI4LFxuICAgICAgbWF4WW91bmdHZW5lcmF0aW9uU2l6ZU1iOiA2NCxcbiAgICB9LFxuICAgIGh0bWxDaHVua1NpemUgPSA4ICogMTAyNCxcbiAgICB0cmFuc2Zlckxpc3QgPSBbXSxcbiAgICBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoKSxcbiAgICB2ZXJib3NlID0gZmFsc2UsXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpZCA9IHJldmVyc2VDb25kaXRpb24gPT09IFwicmVhY3Qtc2VydmVyXCIgPyBcIndvcmtlci9yc2NcIiA6IFwid29ya2VyL2h0bWxcIjtcbiAgbGV0IHdvcmtlclBhdGhXaXRoRGVmYXVsdCA9XG4gICAgdHlwZW9mIHdvcmtlclBhdGggPT09IFwic3RyaW5nXCIgPyB3b3JrZXJQYXRoIDogdW5kZWZpbmVkO1xuICBpZiAoIXdvcmtlclBhdGhXaXRoRGVmYXVsdCkge1xuICAgIC8vIFVzZSB0aGUgZGVmYXVsdCB3b3JrZXIgcGF0aHMgdGhhdCBpbmNsdWRlIHRoZSBmdWxsIGZpbGVuYW1lXG4gICAgY29uc3QgaXNQcm9kdWN0aW9uID0gbW9kZSA9PT0gXCJwcm9kdWN0aW9uXCI7XG4gICAgY29uc3Qgd29ya2VyRmlsZU5hbWUgPVxuICAgICAgcmV2ZXJzZUNvbmRpdGlvbiA9PT0gXCJyZWFjdC1zZXJ2ZXJcIlxuICAgICAgICA/IGByc2Mtd29ya2VyLiR7aXNQcm9kdWN0aW9uID8gXCJwcm9kdWN0aW9uXCIgOiBcImRldmVsb3BtZW50XCJ9LmpzYFxuICAgICAgICA6IGBodG1sLXdvcmtlci4ke2lzUHJvZHVjdGlvbiA/IFwicHJvZHVjdGlvblwiIDogXCJkZXZlbG9wbWVudFwifS5qc2A7XG5cbiAgICAvLyBUcnkgc291cmNlIGRpcmVjdG9yeSBmaXJzdFxuICAgIGNvbnN0IHNvdXJjZVBhdGggPSBqb2luKHBsdWdpblJvb3QsIGlkLCB3b3JrZXJGaWxlTmFtZSk7XG5cbiAgICAvLyBBbHdheXMgbG9nIHRoZSBwYXRocyBmb3IgZGVidWdnaW5nXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICBgW2NyZWF0ZToke2lkfV0gQ2hlY2tpbmcgcGF0aHMgLSBTb3VyY2U6ICR7c291cmNlUGF0aH0sIFBsdWdpblJvb3Q6ICR7cGx1Z2luUm9vdH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIElmIHNvdXJjZSBwYXRoIGRvZXNuJ3QgZXhpc3QsIHRyeSBidWlsdCBkaXJlY3RvcnlcbiAgICBpZiAoIWV4aXN0c1N5bmMoc291cmNlUGF0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFtjcmVhdGU6JHtpZH1dIFdvcmtlciBmaWxlIGRvZXNuJ3QgZXhpc3Q6ICR7c291cmNlUGF0aH1gXG4gICAgICApO1xuICAgICAgLy8gY29uc3QgYnVpbHRQYXRoID0gam9pbihwbHVnaW5Sb290LnJlcGxhY2UoXCIvcGx1Z2luL1wiLCBcIi9kaXN0L3BsdWdpbi9cIiksIGlkLCB3b3JrZXJGaWxlTmFtZSk7XG4gICAgICAvLyBsb2dnZXIuaW5mbyhgW2NyZWF0ZToke2lkfV0gU291cmNlIHBhdGggZG9lc24ndCBleGlzdCwgY2hlY2tpbmcgYnVpbHQgcGF0aDogJHtidWlsdFBhdGh9YCk7XG5cbiAgICAgIC8vIGlmIChleGlzdHNTeW5jKGJ1aWx0UGF0aCkpIHtcbiAgICAgIC8vICAgd29ya2VyUGF0aFdpdGhEZWZhdWx0ID0gYnVpbHRQYXRoO1xuICAgICAgLy8gICBsb2dnZXIuaW5mbyhgW2NyZWF0ZToke2lkfV0gVXNpbmcgYnVpbHQgd29ya2VyIHBhdGg6ICR7YnVpbHRQYXRofWApO1xuICAgICAgLy8gfSBlbHNlIHtcbiAgICAgIC8vICAgd29ya2VyUGF0aFdpdGhEZWZhdWx0ID0gc291cmNlUGF0aDsgLy8gRmFsbGJhY2sgdG8gc291cmNlIHBhdGggZm9yIGVycm9yIG1lc3NhZ2VcbiAgICAgIC8vICAgbG9nZ2VyLmluZm8oYFtjcmVhdGU6JHtpZH1dIE5laXRoZXIgc291cmNlIG5vciBidWlsdCBwYXRoIGV4aXN0cy4gU291cmNlOiAke3NvdXJjZVBhdGh9LCBCdWlsdDogJHtidWlsdFBhdGh9YCk7XG4gICAgICAvLyB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHdvcmtlclBhdGhXaXRoRGVmYXVsdCA9IHNvdXJjZVBhdGg7XG4gICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICBsb2dnZXIuaW5mbyhgW2NyZWF0ZToke2lkfV0gVXNpbmcgc291cmNlIHdvcmtlciBwYXRoOiAke3NvdXJjZVBhdGh9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICghd29ya2VyUGF0aFdpdGhEZWZhdWx0LnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgd29ya2VyUGF0aFdpdGhEZWZhdWx0ID0gam9pbihcIi4vXCIsIHdvcmtlclBhdGhXaXRoRGVmYXVsdCk7XG4gIH1cbiAgLy8gRW5zdXJlIHdvcmtlciB1c2VzIHRoZSBzYW1lIFJlYWN0IHZlcnNpb25cbiAgY29uc3Qgd29ya2VyRGF0YSA9IHtcbiAgICAuLi5vcHRpb25zLndvcmtlckRhdGEsXG4gICAgaWQ6IG9wdGlvbnMud29ya2VyRGF0YS5pZCA/PyBpZCxcbiAgfTtcblxuICB0cnkge1xuICAgIC8vIEVuc3VyZSBjb25zaXN0ZW50IE5PREVfRU5WIGJldHdlZW4gbWFpbiB0aHJlYWQgYW5kIHdvcmtlclxuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICBgW2NyZWF0ZToke2lkfV0gd29ya2VyRGF0YS51c2VyT3B0aW9ucy5idWlsZDpcbiR7SlNPTi5zdHJpbmdpZnkod29ya2VyRGF0YS51c2VyT3B0aW9ucz8uYnVpbGQpfVxuXG5DYWxsIHN0YWNrOiAke25ldyBFcnJvcigpLnN0YWNrPy5zcGxpdChcIlxcblwiKS5zbGljZSgxLCA0KS5qb2luKFwiXFxuXCIpfVxuQ3JlYXRpbmcgd29ya2VyIHdpdGggcGF0aDogJHt3b3JrZXJQYXRoV2l0aERlZmF1bHR9XG5Ob2RlIGVudmlyb25tZW50OiAke21vZGV9XG5DdXJyZW50IGNvbmRpdGlvbjogJHtjdXJyZW50Q29uZGl0aW9ufSwgUmV2ZXJzZSBjb25kaXRpb246ICR7cmV2ZXJzZUNvbmRpdGlvbn1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENvbXB1dGUgZXhlY0FyZ3YgZm9yIHRoZSB3b3JrZXIgd2l0aCBleGFjdGx5IG9uZSAtLWNvbmRpdGlvbnMgZmxhZ1xuICAgIGNvbnN0IHN0cmlwQ29uZGl0aW9uc0Zyb21Bcmd2ID0gKGFyZ3Y6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBjb25zdCBvdXQ6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3YubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYXJnID0gYXJndltpXTtcbiAgICAgICAgaWYgKGFyZyA9PT0gXCItLWNvbmRpdGlvbnNcIiB8fCBhcmcgPT09IFwiLUNcIikge1xuICAgICAgICAgIGkrKzsgLy8gc2tpcCB2YWx1ZVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmcuc3RhcnRzV2l0aChcIi0tY29uZGl0aW9ucz1cIikpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBvdXQucHVzaChhcmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9O1xuICAgIGNvbnN0IGNvbXB1dGVkRXhlY0FyZ3YgPSBbXG4gICAgICAuLi5zdHJpcENvbmRpdGlvbnNGcm9tQXJndihwcm9jZXNzLmV4ZWNBcmd2IHx8IFtdKSxcbiAgICAgIFwiLS1jb25kaXRpb25zXCIsXG4gICAgICByZXZlcnNlQ29uZGl0aW9uLFxuICAgIF07XG5cbiAgICAvLyBBbHdheXMgbG9nIHRoZSBjb25kaXRpb24gc2V0dXAgZm9yIGRlYnVnZ2luZ1xuICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgYFtjcmVhdGU6JHtpZH1dIFNldHRpbmcgdXAgd29ya2VyIHdpdGggcmV2ZXJzZSBjb25kaXRpb246ICR7cmV2ZXJzZUNvbmRpdGlvbn1gXG4gICAgICApO1xuICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgIGBbY3JlYXRlOiR7aWR9XSBDb21wdXRlZCBleGVjQXJndjogJHtKU09OLnN0cmluZ2lmeShjb21wdXRlZEV4ZWNBcmd2KX1gXG4gICAgICApO1xuICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgIGBbY3JlYXRlOiR7aWR9XSBDdXJyZW50IE5PREVfT1BUSU9OUzogJHtwcm9jZXNzLmVudltcIk5PREVfT1BUSU9OU1wiXX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGVudiA9IHtcbiAgICAgIC8vIEluaGVyaXQgYWxsIGV4aXN0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgICAgLi4ucHJvY2Vzcy5lbnYsXG5cbiAgICAgIC8vIE92ZXJyaWRlIHdpdGggb3VyIHNwZWNpZmljIHZhcmlhYmxlc1xuICAgICAgW2VudlByZWZpeCArIFwiREVWXCJdOiBtb2RlID09PSBcImRldmVsb3BtZW50XCIgPyBcIjFcIiA6IFwiMFwiLFxuICAgICAgW2VudlByZWZpeCArIFwiTU9ERVwiXTogbW9kZSxcbiAgICAgIFtlbnZQcmVmaXggKyBcIlBST0RcIl06IG1vZGUgPT09IFwicHJvZHVjdGlvblwiID8gXCIxXCIgOiBcIjBcIixcbiAgICAgIFtlbnZQcmVmaXggKyBcIlNTUlwiXTogXCJ0cnVlXCIsXG4gICAgICBbZW52UHJlZml4ICsgXCJCQVNFX1VSTFwiXTogd29ya2VyRGF0YS51c2VyT3B0aW9ucz8ubW9kdWxlQmFzZVVSTCA/PyBcIlwiLFxuICAgICAgW2VudlByZWZpeCArIFwiUFVCTElDX09SSUdJTlwiXTogd29ya2VyRGF0YS51c2VyT3B0aW9ucz8ucHVibGljT3JpZ2luID8/IFwiXCIsXG4gICAgICBOT0RFX0VOVjogcHJvY2Vzcy5lbnZbXCJOT0RFX0VOVlwiXSA/PyBcInByb2R1Y3Rpb25cIixcbiAgICAgIE5PREVfUEFUSDogbm9kZVBhdGgsXG5cbiAgICAgIC8vIEVuc3VyZSBOT0RFX09QVElPTlMgaGFzIHRoZSBjb3JyZWN0IGNvbmRpdGlvblxuICAgICAgTk9ERV9PUFRJT05TOiBwcm9jZXNzLmVudltcIk5PREVfT1BUSU9OU1wiXT8uaW5jbHVkZXMocmV2ZXJzZUNvbmRpdGlvbilcbiAgICAgICAgPyBwcm9jZXNzLmVudltcIk5PREVfT1BUSU9OU1wiXVxuICAgICAgICA6IGN1cnJlbnRDb25kaXRpb24gIT0gbnVsbCAmJlxuICAgICAgICAgIHByb2Nlc3MuZW52W1wiTk9ERV9PUFRJT05TXCJdPy5pbmNsdWRlcyhjdXJyZW50Q29uZGl0aW9uKVxuICAgICAgICA/IHByb2Nlc3MuZW52W1wiTk9ERV9PUFRJT05TXCJdPy5yZXBsYWNlQWxsKFxuICAgICAgICAgICAgY3VycmVudENvbmRpdGlvbixcbiAgICAgICAgICAgIHJldmVyc2VDb25kaXRpb25cbiAgICAgICAgICApXG4gICAgICAgIDogYCR7XG4gICAgICAgICAgICBwcm9jZXNzLmVudltcIk5PREVfT1BUSU9OU1wiXSA/PyBcIlwiXG4gICAgICAgICAgfSAtLWNvbmRpdGlvbnMgJHtyZXZlcnNlQ29uZGl0aW9ufWAsXG4gICAgICBIVE1MX0NIVU5LX1NJWkU6IGh0bWxDaHVua1NpemUudG9TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIC8vIEFsd2F5cyBsb2cgdGhlIE5PREVfT1BUSU9OUyBmb3IgZGVidWdnaW5nXG4gICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgYFtjcmVhdGU6JHtpZH1dIFdvcmtlciBOT0RFX09QVElPTlMgd2lsbCBiZTogJHtlbnYuTk9ERV9PUFRJT05TfWBcbiAgICAgICk7XG4gICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgYFtjcmVhdGU6JHtpZH1dIEVudmlyb25tZW50IHZhcmlhYmxlczogJHtPYmplY3Qua2V5cyhlbnYpLmpvaW4oXCIsIFwiKX1gXG4gICAgICApO1xuICAgICAgbG9nZ2VyLmluZm8oYFtjcmVhdGU6JHtpZH1dIGV4ZWNBcmd2OiAke2NvbXB1dGVkRXhlY0FyZ3Yuam9pbihcIiBcIil9YCk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHdvcmtlciB3aXRoIHByb3BlciBlbnZpcm9ubWVudCBhbmQgbG9hZGVyc1xuICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIod29ya2VyUGF0aFdpdGhEZWZhdWx0LCB7XG4gICAgICBlbnYsXG4gICAgICBleGVjQXJndjogY29tcHV0ZWRFeGVjQXJndixcbiAgICAgIHJlc291cmNlTGltaXRzLFxuICAgICAgd29ya2VyRGF0YSxcbiAgICAgIHRyYW5zZmVyTGlzdCxcbiAgICB9KTtcblxuICAgIC8vIFJlZ2lzdGVyIHdvcmtlciBmb3IgZ3JhY2VmdWwgc2h1dGRvd25cbiAgICBhY3RpdmVXb3JrZXJzLmFkZCh3b3JrZXIpO1xuXG4gICAgd29ya2VyLnNldE1heExpc3RlbmVycyhtYXhMaXN0ZW5lcnMpO1xuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICBgW2NyZWF0ZToke2lkfV0gV29ya2VyIGNyZWF0ZWQsIHdhaXRpbmcgZm9yIFJFQURZIG1lc3NhZ2UuLi5gXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxDcmVhdGVXb3JrZXJTdWNjZXNzIHwgQ3JlYXRlV29ya2VyU2tpcD4oXG4gICAgICAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIC8vIFVzZSBhcHByb3ByaWF0ZSB0aW1lb3V0IGJhc2VkIG9uIHdvcmtlciB0eXBlXG4gICAgICAgIGNvbnN0IHdvcmtlclR5cGUgPSByZXZlcnNlQ29uZGl0aW9uID09PSBcInJlYWN0LXNlcnZlclwiID8gXCJyc2NcIiA6IFwiaHRtbFwiO1xuICAgICAgICBjb25zdCBzdGFydHVwVGltZW91dCA9XG4gICAgICAgICAgd29ya2VyVHlwZSA9PT0gXCJyc2NcIlxuICAgICAgICAgICAgPyBvcHRpb25zLndvcmtlckRhdGEudXNlck9wdGlvbnM/LnJzY1dvcmtlclN0YXJ0dXBUaW1lb3V0XG4gICAgICAgICAgICA6IG9wdGlvbnMud29ya2VyRGF0YS51c2VyT3B0aW9ucz8uaHRtbFdvcmtlclN0YXJ0dXBUaW1lb3V0O1xuXG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICByZWplY3QoeyB0eXBlOiBcImVycm9yXCIsIGVycm9yOiBuZXcgRXJyb3IoXCJXb3JrZXIgcmVhZHkgdGltZW91dFwiKSB9KTtcbiAgICAgICAgfSwgc3RhcnR1cFRpbWVvdXQpO1xuICAgICAgICBjb25zdCBleGl0SGFuZGxlciA9IChjb2RlOiBudW1iZXIpID0+IHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgd29ya2VyLnJlbW92ZUxpc3RlbmVyKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlcik7XG4gICAgICAgICAgLy8gUmVtb3ZlIHdvcmtlciBmcm9tIHJlZ2lzdHJ5IHdoZW4gaXQgZXhpdHNcbiAgICAgICAgICBhY3RpdmVXb3JrZXJzLmRlbGV0ZSh3b3JrZXIpO1xuICAgICAgICAgIC8vIERvIG5vdCByZW1vdmUgZXhpdCBoYW5kbGVyIGhlcmUsIGxldCBpdCBmaXJlIGlmIG5lZWRlZFxuICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICByZWplY3Qoe1xuICAgICAgICAgICAgICB0eXBlOiBcImVycm9yXCIsXG4gICAgICAgICAgICAgIGVycm9yOiBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFtjcmVhdGU6JHtpZH1dIFdvcmtlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHdvcmtlclBhdGg6IHdvcmtlclBhdGhXaXRoRGVmYXVsdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbWVzc2FnZUhhbmRsZXIgPSAoXG4gICAgICAgICAgbXNnOiBSc2NXb3JrZXJPdXRwdXRNZXNzYWdlIHwgSHRtbFdvcmtlck91dHB1dE1lc3NhZ2VcbiAgICAgICAgKSA9PiB7XG4gICAgICAgICAgaWYgKHZlcmJvc2UpXG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhgW2NyZWF0ZToke2lkfV0gSW5pdGlhbCB3b3JrZXIgbWVzc2FnZSAke21zZy50eXBlfWApO1xuICAgICAgICAgIGlmIChtc2cudHlwZSA9PT0gXCJSRUFEWVwiICYmIG1zZy5pZCA9PT0gaWQpIHtcbiAgICAgICAgICAgIGlmICh2ZXJib3NlKVxuICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgW2NyZWF0ZToke2lkfV0gV29ya2VyIHJ1bm5pbmcgZm9yICR7bXNnLmVudn1gKTtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgIHdvcmtlci5yZW1vdmVMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbWVzc2FnZUhhbmRsZXIpO1xuICAgICAgICAgICAgd29ya2VyLnJlbW92ZUxpc3RlbmVyKFwiZXhpdFwiLCBleGl0SGFuZGxlcik7XG4gICAgICAgICAgICBpZiAobXNnLmVudiAhPT0gbW9kZSkge1xuICAgICAgICAgICAgICBpZiAodmVyYm9zZSlcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgW2NyZWF0ZToke2lkfV0gV29ya2VyIGVudmlyb25tZW50IG1pc21hdGNoLmApO1xuICAgICAgICAgICAgICByZWplY3Qoe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiZXJyb3JcIixcbiAgICAgICAgICAgICAgICBlcnJvcjogbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgYFdvcmtlciBlbnZpcm9ubWVudCBtaXNtYXRjaDogJHttc2cuZW52fSAhPT0gJHttb2RlfWBcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHdvcmtlclBhdGg6IHdvcmtlclBhdGhXaXRoRGVmYXVsdCxcbiAgICAgICAgICAgICAgfSBzYXRpc2ZpZXMgQ3JlYXRlV29ya2VyRXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwic3VjY2Vzc1wiLFxuICAgICAgICAgICAgICB3b3JrZXIsXG4gICAgICAgICAgICAgIHdvcmtlclBhdGg6IHdvcmtlclBhdGhXaXRoRGVmYXVsdCxcbiAgICAgICAgICAgIH0gc2F0aXNmaWVzIENyZWF0ZVdvcmtlclN1Y2Nlc3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgd29ya2VyLm9uY2UoXCJtZXNzYWdlXCIsIG1lc3NhZ2VIYW5kbGVyKTtcbiAgICAgICAgd29ya2VyLm9uY2UoXCJleGl0XCIsIGV4aXRIYW5kbGVyKTtcbiAgICAgICAgd29ya2VyLm9uKFwiZXJyb3JcIiwgKGVycikgPT4ge1xuICAgICAgICAgIC8vIFJlbW92ZSB3b3JrZXIgZnJvbSByZWdpc3RyeSBvbiBlcnJvclxuICAgICAgICAgIGFjdGl2ZVdvcmtlcnMuZGVsZXRlKHdvcmtlcik7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKHZlcmJvc2UgJiYgZXJyICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgYFtjcmVhdGU6JHtpZH1dIFdvcmtlciBlcnJvcjogJHtlcnIubWVzc2FnZX0uXFxuJHtlcnIuc3RhY2t9YCxcbiAgICAgICAgICAgICAgeyBlcnJvcjogZXJyIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHBhbmljRXJyb3IgPSBoYW5kbGVFcnJvcih7XG4gICAgICAgICAgICBlcnJvcjogZXJyLFxuICAgICAgICAgICAgbG9nZ2VyOiBsb2dnZXIsXG4gICAgICAgICAgICBwYW5pY1RocmVzaG9sZDogd29ya2VyRGF0YS51c2VyT3B0aW9ucz8ucGFuaWNUaHJlc2hvbGQsXG4gICAgICAgICAgICBjcml0aWNhbDogZmFsc2UsXG4gICAgICAgICAgICBjb250ZXh0OiBgV29ya2VyIHRocmVhZCBlcnJvciBmb3Igcm91dGUgJHtpZH1gLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChwYW5pY0Vycm9yICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICBgW2NyZWF0ZToke2lkfV0gUGFuaWMgZXJyb3IgZGV0ZWN0ZWQ6ICR7cGFuaWNFcnJvci5tZXNzYWdlfWAsXG4gICAgICAgICAgICAgICAgeyBlcnJvcjogcGFuaWNFcnJvciB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3Qoe1xuICAgICAgICAgICAgICB0eXBlOiBcImVycm9yXCIsXG4gICAgICAgICAgICAgIGVycm9yOiBlcnIsXG4gICAgICAgICAgICAgIHdvcmtlclBhdGg6IHdvcmtlclBhdGhXaXRoRGVmYXVsdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZWplY3Qoe1xuICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgICAgICAgZXJyb3I6IG5ldyBFcnJvcihcIldvcmtlciB0aHJlYWQgZXJyb3JcIiwgeyBjYXVzZTogZXJyIH0pLFxuICAgICAgICAgICAgd29ya2VyUGF0aDogd29ya2VyUGF0aFdpdGhEZWZhdWx0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgIGBbY3JlYXRlOiR7aWR9XSBDYXVnaHQgZXJyb3IgZHVyaW5nIHdvcmtlciBjcmVhdGlvbjogJHtcbiAgICAgICAgICB0b0Vycm9yKGVycm9yKS5tZXNzYWdlXG4gICAgICAgIH1gLFxuICAgICAgICB7IGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSkgfVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgcGFuaWNFcnJvciA9IGhhbmRsZUVycm9yKHtcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgIGxvZ2dlcjogbG9nZ2VyLFxuICAgICAgcGFuaWNUaHJlc2hvbGQ6IHdvcmtlckRhdGEudXNlck9wdGlvbnM/LnBhbmljVGhyZXNob2xkLFxuICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgICAgY29udGV4dDogYFdvcmtlciB0aHJlYWQgZXJyb3IgZm9yIHJvdXRlICR7aWR9YCxcbiAgICB9KTtcbiAgICBpZiAocGFuaWNFcnJvciAhPSBudWxsKSB7XG4gICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgICAgYFtjcmVhdGU6JHtpZH1dIFBhbmljIGVycm9yIGluIGNhdGNoIGJsb2NrOiAke3BhbmljRXJyb3IubWVzc2FnZX1gLFxuICAgICAgICAgIHsgZXJyb3I6IHBhbmljRXJyb3IgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgICBlcnJvcjogcGFuaWNFcnJvcixcbiAgICAgICAgd29ya2VyUGF0aDogd29ya2VyUGF0aFdpdGhEZWZhdWx0LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiZXJyb3JcIixcbiAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG4gICAgICB3b3JrZXJQYXRoOiB3b3JrZXJQYXRoV2l0aERlZmF1bHQsXG4gICAgfTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBLE1BQU0sYUFBQSx1QkFBb0IsR0FBWSxFQUFBO0FBR3RDLGVBQXNCLGtCQUFBLENBQW1CLFVBQWtCLEdBQXFCLEVBQUE7QUFDOUUsRUFBSSxJQUFBLGFBQUEsQ0FBYyxTQUFTLENBQUcsRUFBQTtBQUU5QixFQUFBLE1BQU0sbUJBQW1CLEtBQU0sQ0FBQSxJQUFBLENBQUssYUFBYSxDQUFBLENBQUUsSUFBSSxDQUFVLE1BQUEsS0FBQTtBQUMvRCxJQUFPLE9BQUEsSUFBSSxPQUFjLENBQUEsQ0FBQyxPQUFZLEtBQUE7QUFDcEMsTUFBSSxJQUFBLGNBQUE7QUFFSixNQUFNLE1BQUEsU0FBQSxHQUFZLFdBQVcsTUFBTTtBQUNqQyxRQUFPLE1BQUEsQ0FBQSxjQUFBLENBQWUsV0FBVyxjQUFlLENBQUE7QUFDaEQsUUFBQSxNQUFBLENBQU8sa0JBQW1CLEVBQUE7QUFDMUIsUUFBSSxJQUFBO0FBQ0YsVUFBQSxNQUFBLENBQU8sU0FBVSxFQUFBO0FBQUEsaUJBQ1YsS0FBTyxFQUFBO0FBQUE7QUFHaEIsUUFBQSxhQUFBLENBQWMsT0FBTyxNQUFNLENBQUE7QUFDM0IsUUFBUSxPQUFBLEVBQUE7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
|
|
321
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlV29ya2VyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW4vd29ya2VyL2NyZWF0ZVdvcmtlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBXb3JrZXIsXG4gIHR5cGUgUmVzb3VyY2VMaW1pdHMsXG4gIHR5cGUgVHJhbnNmZXJMaXN0SXRlbSxcbiAgdHlwZSBNZXNzYWdlUG9ydCxcbn0gZnJvbSBcIm5vZGU6d29ya2VyX3RocmVhZHNcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlnRW52IH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCB7IGdldE1vZGUsIGdldE5vZGVQYXRoIH0gZnJvbSBcIi4uL2NvbmZpZy9nZXRQYXRocy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q29uZGl0aW9uIH0gZnJvbSBcIi4uL2NvbmZpZy9nZXRDb25kaXRpb24uanNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IHBsdWdpblJvb3QgfSBmcm9tIFwiLi4vcm9vdC5qc1wiO1xuaW1wb3J0IHsgREVGQVVMVF9DT05GSUcgfSBmcm9tIFwiLi4vY29uZmlnL2RlZmF1bHRzLmpzXCI7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIHR5cGUgTG9nZ2VyIH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCB0eXBlIHsgSHRtbFdvcmtlck91dHB1dE1lc3NhZ2UgfSBmcm9tIFwiLi9odG1sL3R5cGVzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJzY1dvcmtlck91dHB1dE1lc3NhZ2UgfSBmcm9tIFwiLi9yc2MvdHlwZXMuanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgU2VyaWFsaXplZFJlc29sdmVkQ29uZmlnLFxuICBTZXJpYWxpemVkVXNlck9wdGlvbnMsXG59IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBNYW5pZmVzdCB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgdHlwZSB7IE91dHB1dEJ1bmRsZSB9IGZyb20gXCJyb2xsdXBcIjtcbmltcG9ydCB7IGhhbmRsZUVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL2hhbmRsZUVycm9yLmpzXCI7XG5pbXBvcnQgeyB0b0Vycm9yIH0gZnJvbSBcIi4uL2Vycm9yL3RvRXJyb3IuanNcIjtcblxuLy8gR2xvYmFsIHdvcmtlciByZWdpc3RyeSBmb3IgZ3JhY2VmdWwgc2h1dGRvd25cbmNvbnN0IGFjdGl2ZVdvcmtlcnMgPSBuZXcgU2V0PFdvcmtlcj4oKTtcblxuLy8gR3JhY2VmdWwgc2h1dGRvd24gZnVuY3Rpb24gdXNpbmcgdGhlIGV4aXN0aW5nIFNIVVRET1dOIHByb3RvY29sXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2h1dGRvd25BbGxXb3JrZXJzKHRpbWVvdXQ6IG51bWJlciA9IDEwMDApOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKGFjdGl2ZVdvcmtlcnMuc2l6ZSA9PT0gMCkgcmV0dXJuO1xuXG4gIGNvbnN0IHNodXRkb3duUHJvbWlzZXMgPSBBcnJheS5mcm9tKGFjdGl2ZVdvcmtlcnMpLm1hcCh3b3JrZXIgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgbGV0IG1lc3NhZ2VIYW5kbGVyOiAoKG1lc3NhZ2U6IGFueSkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICBcbiAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB3b3JrZXIucmVtb3ZlTGlzdGVuZXIoXCJtZXNzYWdlXCIsIG1lc3NhZ2VIYW5kbGVyISk7XG4gICAgICAgIHdvcmtlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gSWdub3JlIHRlcm1pbmF0aW9uIGVycm9yc1xuICAgICAgICB9XG4gICAgICAgIGFjdGl2ZVdvcmtlcnMuZGVsZXRlKHdvcmtlcik7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIHRpbWVvdXQpO1xuXG4gICAgICBtZXNzYWdlSGFuZGxlciA9IChtZXNzYWdlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJTSFVURE9XTl9DT01QTEVURVwiKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgd29ya2VyLnJlbW92ZUxpc3RlbmVyKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlciEpO1xuICAgICAgICAgIHdvcmtlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICBhY3RpdmVXb3JrZXJzLmRlbGV0ZSh3b3JrZXIpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgd29ya2VyLm9uKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlcik7XG4gICAgICBcbiAgICAgIC8vIFNlbmQgZ3JhY2VmdWwgc2h1dGRvd24gbWVzc2FnZVxuICAgICAgdHJ5IHtcbiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICB0eXBlOiBcIlNIVVRET1dOXCIsXG4gICAgICAgICAgaWQ6IFwiKlwiLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIElmIHdlIGNhbid0IHNlbmQgdGhlIG1lc3NhZ2UsIGZvcmNlIHRlcm1pbmF0ZVxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgd29ya2VyLnJlbW92ZUxpc3RlbmVyKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlciEpO1xuICAgICAgICB3b3JrZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICB9IGNhdGNoICh0ZXJtaW5hdGVFcnJvcikge1xuICAgICAgICAgIC8vIElnbm9yZSB0ZXJtaW5hdGlvbiBlcnJvcnNcbiAgICAgICAgfVxuICAgICAgICBhY3RpdmVXb3JrZXJzLmRlbGV0ZSh3b3JrZXIpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKHNodXRkb3duUHJvbWlzZXMpO1xuICBhY3RpdmVXb3JrZXJzLmNsZWFyKCk7XG59XG5cblxudHlwZSBDcmVhdGVXb3JrZXJTdWNjZXNzID0ge1xuICB0eXBlOiBcInN1Y2Nlc3NcIjtcbiAgd29ya2VyUGF0aDogc3RyaW5nO1xuICByZWFzb24/OiBuZXZlcjtcbiAgZXJyb3I/OiBuZXZlcjtcbiAgd29ya2VyOiBXb3JrZXI7XG59O1xuXG50eXBlIENyZWF0ZVdvcmtlckVycm9yID0ge1xuICB0eXBlOiBcImVycm9yXCI7XG4gIHdvcmtlclBhdGg6IHN0cmluZztcbiAgZXJyb3I6IEVycm9yIHwgbnVsbDtcbiAgd29ya2VyPzogbmV2ZXI7XG4gIHJlYXNvbj86IG5ldmVyO1xufTtcblxudHlwZSBDcmVhdGVXb3JrZXJTa2lwID0ge1xuICB0eXBlOiBcInNraXBcIjtcbiAgcmVhc29uOiBzdHJpbmc7XG4gIHdvcmtlclBhdGg6IHN0cmluZztcbiAgd29ya2VyPzogbmV2ZXI7XG4gIGVycm9yPzogbmV2ZXI7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVXb3JrZXJSZXR1cm4gPVxuICB8IENyZWF0ZVdvcmtlclN1Y2Nlc3NcbiAgfCBDcmVhdGVXb3JrZXJFcnJvclxuICB8IENyZWF0ZVdvcmtlclNraXA7XG5cbmV4cG9ydCB0eXBlIENyZWF0ZVdvcmtlck9wdGlvbnMgPSB7XG4gIHByb2plY3RSb290Pzogc3RyaW5nO1xuICBjdXJyZW50Q29uZGl0aW9uPzogXCJyZWFjdC1zZXJ2ZXJcIiB8IFwicmVhY3QtY2xpZW50XCI7XG4gIG5vZGVQYXRoPzogc3RyaW5nO1xuICBub2RlT3B0aW9ucz86IHN0cmluZ1tdO1xuICBlbnZQcmVmaXg/OiBzdHJpbmc7XG4gIG1vZGU/OiBcInByb2R1Y3Rpb25cIiB8IFwiZGV2ZWxvcG1lbnRcIiB8IFwidGVzdFwiO1xuICByZXZlcnNlQ29uZGl0aW9uPzogc3RyaW5nO1xuICBtYXhMaXN0ZW5lcnM/OiBudW1iZXI7XG4gIHdvcmtlclBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTGltaXRzPzogUmVzb3VyY2VMaW1pdHM7XG4gIHR5cGVzY3JpcHQ/OiBib29sZWFuO1xuICBodG1sQ2h1bmtTaXplPzogbnVtYmVyOyAvLyBTaXplIG9mIEhUTUwgY2h1bmtzIGluIGJ5dGVzXG4gIHdvcmtlckRhdGE6IHtcbiAgICB1c2VyT3B0aW9ucz86IFNlcmlhbGl6ZWRVc2VyT3B0aW9ucztcbiAgICByZXNvbHZlZENvbmZpZz86IFNlcmlhbGl6ZWRSZXNvbHZlZENvbmZpZztcbiAgICBjb25maWdFbnY/OiBDb25maWdFbnY7XG4gICAgcmVhY3RWZXJzaW9uPzogc3RyaW5nO1xuICAgIGlkPzogc3RyaW5nO1xuICAgIHNlcnZlck1hbmlmZXN0PzogTWFuaWZlc3Q7XG4gICAgYnVuZGxlPzogT3V0cHV0QnVuZGxlO1xuICAgIHN0YXRpY0J1bmRsZT86IE91dHB1dEJ1bmRsZTtcbiAgICBzZXJ2ZXJQaXBlYWJsZVN0cmVhbU9wdGlvbnM/OiBhbnk7XG4gICAgY2xpZW50UGlwZWFibGVTdHJlYW1PcHRpb25zPzogYW55O1xuICAgIGhtclBvcnQ/OiBNZXNzYWdlUG9ydDtcbiAgfTtcbiAgdHJhbnNmZXJMaXN0PzogVHJhbnNmZXJMaXN0SXRlbVtdO1xuICBsb2dnZXI/OiBMb2dnZXI7XG4gIHZlcmJvc2U/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlV29ya2VyRm4gPSAoXG4gIG9wdGlvbnM6IENyZWF0ZVdvcmtlck9wdGlvbnNcbikgPT4gUHJvbWlzZTxDcmVhdGVXb3JrZXJSZXR1cm4+O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlV29ya2VyOiBDcmVhdGVXb3JrZXJGbiA9IGFzeW5jIGZ1bmN0aW9uIF9jcmVhdGVXb3JrZXIoXG4gIG9wdGlvbnNcbikge1xuICBjb25zdCB7XG4gICAgcHJvamVjdFJvb3QgPSBwcm9jZXNzLmN3ZCgpLFxuICAgIG5vZGVQYXRoID0gZ2V0Tm9kZVBhdGgocHJvamVjdFJvb3QpLFxuICAgIGN1cnJlbnRDb25kaXRpb24gPSBnZXRDb25kaXRpb24oKSxcbiAgICBlbnZQcmVmaXggPSBERUZBVUxUX0NPTkZJRy5FTlZfUFJFRklYLFxuICAgIHJldmVyc2VDb25kaXRpb24gPSBjdXJyZW50Q29uZGl0aW9uID09PSBcInJlYWN0LXNlcnZlclwiXG4gICAgICA/IFwicmVhY3QtY2xpZW50XCJcbiAgICAgIDogXCJyZWFjdC1zZXJ2ZXJcIixcbiAgICBtYXhMaXN0ZW5lcnMgPSAxMDAsXG4gICAgbW9kZSA9IGdldE1vZGUoKSxcbiAgICB3b3JrZXJQYXRoLFxuICAgIHJlc291cmNlTGltaXRzID0ge1xuICAgICAgbWF4T2xkR2VuZXJhdGlvblNpemVNYjogMTI4LFxuICAgICAgbWF4WW91bmdHZW5lcmF0aW9uU2l6ZU1iOiA2NCxcbiAgICB9LFxuICAgIGh0bWxDaHVua1NpemUgPSA4ICogMTAyNCxcbiAgICB0cmFuc2Zlckxpc3QgPSBbXSxcbiAgICBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoKSxcbiAgICB2ZXJib3NlID0gZmFsc2UsXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBpZCA9IHJldmVyc2VDb25kaXRpb24gPT09IFwicmVhY3Qtc2VydmVyXCIgPyBcIndvcmtlci9yc2NcIiA6IFwid29ya2VyL2h0bWxcIjtcbiAgbGV0IHdvcmtlclBhdGhXaXRoRGVmYXVsdCA9XG4gICAgdHlwZW9mIHdvcmtlclBhdGggPT09IFwic3RyaW5nXCIgPyB3b3JrZXJQYXRoIDogdW5kZWZpbmVkO1xuICBpZiAoIXdvcmtlclBhdGhXaXRoRGVmYXVsdCkge1xuICAgIC8vIFVzZSB0aGUgZGVmYXVsdCB3b3JrZXIgcGF0aHMgdGhhdCBpbmNsdWRlIHRoZSBmdWxsIGZpbGVuYW1lXG4gICAgY29uc3QgaXNQcm9kdWN0aW9uID0gbW9kZSA9PT0gXCJwcm9kdWN0aW9uXCI7XG4gICAgY29uc3Qgd29ya2VyRmlsZU5hbWUgPVxuICAgICAgcmV2ZXJzZUNvbmRpdGlvbiA9PT0gXCJyZWFjdC1zZXJ2ZXJcIlxuICAgICAgICA/IGByc2Mtd29ya2VyLiR7aXNQcm9kdWN0aW9uID8gXCJwcm9kdWN0aW9uXCIgOiBcImRldmVsb3BtZW50XCJ9LmpzYFxuICAgICAgICA6IGBodG1sLXdvcmtlci4ke2lzUHJvZHVjdGlvbiA/IFwicHJvZHVjdGlvblwiIDogXCJkZXZlbG9wbWVudFwifS5qc2A7XG5cbiAgICAvLyBUcnkgc291cmNlIGRpcmVjdG9yeSBmaXJzdFxuICAgIGNvbnN0IHNvdXJjZVBhdGggPSBqb2luKHBsdWdpblJvb3QsIGlkLCB3b3JrZXJGaWxlTmFtZSk7XG5cbiAgICAvLyBBbHdheXMgbG9nIHRoZSBwYXRocyBmb3IgZGVidWdnaW5nXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICBgW2NyZWF0ZToke2lkfV0gQ2hlY2tpbmcgcGF0aHMgLSBTb3VyY2U6ICR7c291cmNlUGF0aH0sIFBsdWdpblJvb3Q6ICR7cGx1Z2luUm9vdH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIElmIHNvdXJjZSBwYXRoIGRvZXNuJ3QgZXhpc3QsIHRyeSBidWlsdCBkaXJlY3RvcnlcbiAgICBpZiAoIWV4aXN0c1N5bmMoc291cmNlUGF0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFtjcmVhdGU6JHtpZH1dIFdvcmtlciBmaWxlIGRvZXNuJ3QgZXhpc3Q6ICR7c291cmNlUGF0aH1gXG4gICAgICApO1xuICAgICAgLy8gY29uc3QgYnVpbHRQYXRoID0gam9pbihwbHVnaW5Sb290LnJlcGxhY2UoXCIvcGx1Z2luL1wiLCBcIi9kaXN0L3BsdWdpbi9cIiksIGlkLCB3b3JrZXJGaWxlTmFtZSk7XG4gICAgICAvLyBsb2dnZXIuaW5mbyhgW2NyZWF0ZToke2lkfV0gU291cmNlIHBhdGggZG9lc24ndCBleGlzdCwgY2hlY2tpbmcgYnVpbHQgcGF0aDogJHtidWlsdFBhdGh9YCk7XG5cbiAgICAgIC8vIGlmIChleGlzdHNTeW5jKGJ1aWx0UGF0aCkpIHtcbiAgICAgIC8vICAgd29ya2VyUGF0aFdpdGhEZWZhdWx0ID0gYnVpbHRQYXRoO1xuICAgICAgLy8gICBsb2dnZXIuaW5mbyhgW2NyZWF0ZToke2lkfV0gVXNpbmcgYnVpbHQgd29ya2VyIHBhdGg6ICR7YnVpbHRQYXRofWApO1xuICAgICAgLy8gfSBlbHNlIHtcbiAgICAgIC8vICAgd29ya2VyUGF0aFdpdGhEZWZhdWx0ID0gc291cmNlUGF0aDsgLy8gRmFsbGJhY2sgdG8gc291cmNlIHBhdGggZm9yIGVycm9yIG1lc3NhZ2VcbiAgICAgIC8vICAgbG9nZ2VyLmluZm8oYFtjcmVhdGU6JHtpZH1dIE5laXRoZXIgc291cmNlIG5vciBidWlsdCBwYXRoIGV4aXN0cy4gU291cmNlOiAke3NvdXJjZVBhdGh9LCBCdWlsdDogJHtidWlsdFBhdGh9YCk7XG4gICAgICAvLyB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHdvcmtlclBhdGhXaXRoRGVmYXVsdCA9IHNvdXJjZVBhdGg7XG4gICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICBsb2dnZXIuaW5mbyhgW2NyZWF0ZToke2lkfV0gVXNpbmcgc291cmNlIHdvcmtlciBwYXRoOiAke3NvdXJjZVBhdGh9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICghd29ya2VyUGF0aFdpdGhEZWZhdWx0LnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgd29ya2VyUGF0aFdpdGhEZWZhdWx0ID0gam9pbihcIi4vXCIsIHdvcmtlclBhdGhXaXRoRGVmYXVsdCk7XG4gIH1cbiAgLy8gRW5zdXJlIHdvcmtlciB1c2VzIHRoZSBzYW1lIFJlYWN0IHZlcnNpb25cbiAgY29uc3Qgd29ya2VyRGF0YSA9IHtcbiAgICAuLi5vcHRpb25zLndvcmtlckRhdGEsXG4gICAgaWQ6IG9wdGlvbnMud29ya2VyRGF0YS5pZCA/PyBpZCxcbiAgfTtcblxuICB0cnkge1xuICAgIC8vIEVuc3VyZSBjb25zaXN0ZW50IE5PREVfRU5WIGJldHdlZW4gbWFpbiB0aHJlYWQgYW5kIHdvcmtlclxuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICBgW2NyZWF0ZToke2lkfV0gd29ya2VyRGF0YS51c2VyT3B0aW9ucy5idWlsZDpcbiR7SlNPTi5zdHJpbmdpZnkod29ya2VyRGF0YS51c2VyT3B0aW9ucz8uYnVpbGQpfVxuXG5DYWxsIHN0YWNrOiAke25ldyBFcnJvcigpLnN0YWNrPy5zcGxpdChcIlxcblwiKS5zbGljZSgxLCA0KS5qb2luKFwiXFxuXCIpfVxuQ3JlYXRpbmcgd29ya2VyIHdpdGggcGF0aDogJHt3b3JrZXJQYXRoV2l0aERlZmF1bHR9XG5Ob2RlIGVudmlyb25tZW50OiAke21vZGV9XG5DdXJyZW50IGNvbmRpdGlvbjogJHtjdXJyZW50Q29uZGl0aW9ufSwgUmV2ZXJzZSBjb25kaXRpb246ICR7cmV2ZXJzZUNvbmRpdGlvbn1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENvbXB1dGUgZXhlY0FyZ3YgZm9yIHRoZSB3b3JrZXIgd2l0aCBleGFjdGx5IG9uZSAtLWNvbmRpdGlvbnMgZmxhZ1xuICAgIGNvbnN0IHN0cmlwQ29uZGl0aW9uc0Zyb21Bcmd2ID0gKGFyZ3Y6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBjb25zdCBvdXQ6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3YubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYXJnID0gYXJndltpXTtcbiAgICAgICAgaWYgKGFyZyA9PT0gXCItLWNvbmRpdGlvbnNcIiB8fCBhcmcgPT09IFwiLUNcIikge1xuICAgICAgICAgIGkrKzsgLy8gc2tpcCB2YWx1ZVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmcuc3RhcnRzV2l0aChcIi0tY29uZGl0aW9ucz1cIikpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBvdXQucHVzaChhcmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9O1xuICAgIC8vIFJlZ2lzdGVyIHZlbmRvciByZXNvbHV0aW9uIGhvb2sgc28gdGhlIHdvcmtlciBjYW4gZmluZCByZWFjdC1zZXJ2ZXItZG9tLWVzbVxuICAgIGNvbnN0IHZlbmRvclJlZ2lzdGVyUGF0aCA9IG5ldyBVUkwoXCIuLi92ZW5kb3IvcmVnaXN0ZXItdmVuZG9yLmpzXCIsIGltcG9ydC5tZXRhLnVybCkuaHJlZjtcbiAgICBjb25zdCBjb21wdXRlZEV4ZWNBcmd2ID0gW1xuICAgICAgLi4uc3RyaXBDb25kaXRpb25zRnJvbUFyZ3YocHJvY2Vzcy5leGVjQXJndiB8fCBbXSksXG4gICAgICBcIi0tY29uZGl0aW9uc1wiLFxuICAgICAgcmV2ZXJzZUNvbmRpdGlvbixcbiAgICAgIFwiLS1pbXBvcnRcIixcbiAgICAgIHZlbmRvclJlZ2lzdGVyUGF0aCxcbiAgICBdO1xuXG4gICAgLy8gQWx3YXlzIGxvZyB0aGUgY29uZGl0aW9uIHNldHVwIGZvciBkZWJ1Z2dpbmdcbiAgICBpZiAodmVyYm9zZSkge1xuICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgIGBbY3JlYXRlOiR7aWR9XSBTZXR0aW5nIHVwIHdvcmtlciB3aXRoIHJldmVyc2UgY29uZGl0aW9uOiAke3JldmVyc2VDb25kaXRpb259YFxuICAgICAgKTtcbiAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICBgW2NyZWF0ZToke2lkfV0gQ29tcHV0ZWQgZXhlY0FyZ3Y6ICR7SlNPTi5zdHJpbmdpZnkoY29tcHV0ZWRFeGVjQXJndil9YFxuICAgICAgKTtcbiAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICBgW2NyZWF0ZToke2lkfV0gQ3VycmVudCBOT0RFX09QVElPTlM6ICR7cHJvY2Vzcy5lbnZbXCJOT0RFX09QVElPTlNcIl19YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnYgPSB7XG4gICAgICAvLyBJbmhlcml0IGFsbCBleGlzdGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICAgIC4uLnByb2Nlc3MuZW52LFxuXG4gICAgICAvLyBPdmVycmlkZSB3aXRoIG91ciBzcGVjaWZpYyB2YXJpYWJsZXNcbiAgICAgIFtlbnZQcmVmaXggKyBcIkRFVlwiXTogbW9kZSA9PT0gXCJkZXZlbG9wbWVudFwiID8gXCIxXCIgOiBcIjBcIixcbiAgICAgIFtlbnZQcmVmaXggKyBcIk1PREVcIl06IG1vZGUsXG4gICAgICBbZW52UHJlZml4ICsgXCJQUk9EXCJdOiBtb2RlID09PSBcInByb2R1Y3Rpb25cIiA/IFwiMVwiIDogXCIwXCIsXG4gICAgICBbZW52UHJlZml4ICsgXCJTU1JcIl06IFwidHJ1ZVwiLFxuICAgICAgW2VudlByZWZpeCArIFwiQkFTRV9VUkxcIl06IHdvcmtlckRhdGEudXNlck9wdGlvbnM/Lm1vZHVsZUJhc2VVUkwgPz8gXCJcIixcbiAgICAgIFtlbnZQcmVmaXggKyBcIlBVQkxJQ19PUklHSU5cIl06IHdvcmtlckRhdGEudXNlck9wdGlvbnM/LnB1YmxpY09yaWdpbiA/PyBcIlwiLFxuICAgICAgTk9ERV9FTlY6IHByb2Nlc3MuZW52W1wiTk9ERV9FTlZcIl0gPz8gXCJwcm9kdWN0aW9uXCIsXG4gICAgICBOT0RFX1BBVEg6IG5vZGVQYXRoLFxuXG4gICAgICAvLyBFbnN1cmUgTk9ERV9PUFRJT05TIGhhcyB0aGUgY29ycmVjdCBjb25kaXRpb25cbiAgICAgIE5PREVfT1BUSU9OUzogcHJvY2Vzcy5lbnZbXCJOT0RFX09QVElPTlNcIl0/LmluY2x1ZGVzKHJldmVyc2VDb25kaXRpb24pXG4gICAgICAgID8gcHJvY2Vzcy5lbnZbXCJOT0RFX09QVElPTlNcIl1cbiAgICAgICAgOiBjdXJyZW50Q29uZGl0aW9uICE9IG51bGwgJiZcbiAgICAgICAgICBwcm9jZXNzLmVudltcIk5PREVfT1BUSU9OU1wiXT8uaW5jbHVkZXMoY3VycmVudENvbmRpdGlvbilcbiAgICAgICAgPyBwcm9jZXNzLmVudltcIk5PREVfT1BUSU9OU1wiXT8ucmVwbGFjZUFsbChcbiAgICAgICAgICAgIGN1cnJlbnRDb25kaXRpb24sXG4gICAgICAgICAgICByZXZlcnNlQ29uZGl0aW9uXG4gICAgICAgICAgKVxuICAgICAgICA6IGAke1xuICAgICAgICAgICAgcHJvY2Vzcy5lbnZbXCJOT0RFX09QVElPTlNcIl0gPz8gXCJcIlxuICAgICAgICAgIH0gLS1jb25kaXRpb25zICR7cmV2ZXJzZUNvbmRpdGlvbn1gLFxuICAgICAgSFRNTF9DSFVOS19TSVpFOiBodG1sQ2h1bmtTaXplLnRvU3RyaW5nKCksXG4gICAgfTtcblxuICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAvLyBBbHdheXMgbG9nIHRoZSBOT0RFX09QVElPTlMgZm9yIGRlYnVnZ2luZ1xuICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgIGBbY3JlYXRlOiR7aWR9XSBXb3JrZXIgTk9ERV9PUFRJT05TIHdpbGwgYmU6ICR7ZW52Lk5PREVfT1BUSU9OU31gXG4gICAgICApO1xuICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgIGBbY3JlYXRlOiR7aWR9XSBFbnZpcm9ubWVudCB2YXJpYWJsZXM6ICR7T2JqZWN0LmtleXMoZW52KS5qb2luKFwiLCBcIil9YFxuICAgICAgKTtcbiAgICAgIGxvZ2dlci5pbmZvKGBbY3JlYXRlOiR7aWR9XSBleGVjQXJndjogJHtjb21wdXRlZEV4ZWNBcmd2LmpvaW4oXCIgXCIpfWApO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB3b3JrZXIgd2l0aCBwcm9wZXIgZW52aXJvbm1lbnQgYW5kIGxvYWRlcnNcbiAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKHdvcmtlclBhdGhXaXRoRGVmYXVsdCwge1xuICAgICAgZW52LFxuICAgICAgZXhlY0FyZ3Y6IGNvbXB1dGVkRXhlY0FyZ3YsXG4gICAgICByZXNvdXJjZUxpbWl0cyxcbiAgICAgIHdvcmtlckRhdGEsXG4gICAgICB0cmFuc2Zlckxpc3QsXG4gICAgfSk7XG5cbiAgICAvLyBSZWdpc3RlciB3b3JrZXIgZm9yIGdyYWNlZnVsIHNodXRkb3duXG4gICAgYWN0aXZlV29ya2Vycy5hZGQod29ya2VyKTtcblxuICAgIHdvcmtlci5zZXRNYXhMaXN0ZW5lcnMobWF4TGlzdGVuZXJzKTtcblxuICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgYFtjcmVhdGU6JHtpZH1dIFdvcmtlciBjcmVhdGVkLCB3YWl0aW5nIGZvciBSRUFEWSBtZXNzYWdlLi4uYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8Q3JlYXRlV29ya2VyU3VjY2VzcyB8IENyZWF0ZVdvcmtlclNraXA+KFxuICAgICAgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAvLyBVc2UgYXBwcm9wcmlhdGUgdGltZW91dCBiYXNlZCBvbiB3b3JrZXIgdHlwZVxuICAgICAgICBjb25zdCB3b3JrZXJUeXBlID0gcmV2ZXJzZUNvbmRpdGlvbiA9PT0gXCJyZWFjdC1zZXJ2ZXJcIiA/IFwicnNjXCIgOiBcImh0bWxcIjtcbiAgICAgICAgY29uc3Qgc3RhcnR1cFRpbWVvdXQgPVxuICAgICAgICAgIHdvcmtlclR5cGUgPT09IFwicnNjXCJcbiAgICAgICAgICAgID8gb3B0aW9ucy53b3JrZXJEYXRhLnVzZXJPcHRpb25zPy5yc2NXb3JrZXJTdGFydHVwVGltZW91dFxuICAgICAgICAgICAgOiBvcHRpb25zLndvcmtlckRhdGEudXNlck9wdGlvbnM/Lmh0bWxXb3JrZXJTdGFydHVwVGltZW91dDtcblxuICAgICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KHsgdHlwZTogXCJlcnJvclwiLCBlcnJvcjogbmV3IEVycm9yKFwiV29ya2VyIHJlYWR5IHRpbWVvdXRcIikgfSk7XG4gICAgICAgIH0sIHN0YXJ0dXBUaW1lb3V0KTtcbiAgICAgICAgY29uc3QgZXhpdEhhbmRsZXIgPSAoY29kZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIHdvcmtlci5yZW1vdmVMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbWVzc2FnZUhhbmRsZXIpO1xuICAgICAgICAgIC8vIFJlbW92ZSB3b3JrZXIgZnJvbSByZWdpc3RyeSB3aGVuIGl0IGV4aXRzXG4gICAgICAgICAgYWN0aXZlV29ya2Vycy5kZWxldGUod29ya2VyKTtcbiAgICAgICAgICAvLyBEbyBub3QgcmVtb3ZlIGV4aXQgaGFuZGxlciBoZXJlLCBsZXQgaXQgZmlyZSBpZiBuZWVkZWRcbiAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgcmVqZWN0KHtcbiAgICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgICAgICAgICBlcnJvcjogbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBbY3JlYXRlOiR7aWR9XSBXb3JrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB3b3JrZXJQYXRoOiB3b3JrZXJQYXRoV2l0aERlZmF1bHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG1lc3NhZ2VIYW5kbGVyID0gKFxuICAgICAgICAgIG1zZzogUnNjV29ya2VyT3V0cHV0TWVzc2FnZSB8IEh0bWxXb3JrZXJPdXRwdXRNZXNzYWdlXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGlmICh2ZXJib3NlKVxuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFtjcmVhdGU6JHtpZH1dIEluaXRpYWwgd29ya2VyIG1lc3NhZ2UgJHttc2cudHlwZX1gKTtcbiAgICAgICAgICBpZiAobXNnLnR5cGUgPT09IFwiUkVBRFlcIiAmJiBtc2cuaWQgPT09IGlkKSB7XG4gICAgICAgICAgICBpZiAodmVyYm9zZSlcbiAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFtjcmVhdGU6JHtpZH1dIFdvcmtlciBydW5uaW5nIGZvciAke21zZy5lbnZ9YCk7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgICB3b3JrZXIucmVtb3ZlTGlzdGVuZXIoXCJtZXNzYWdlXCIsIG1lc3NhZ2VIYW5kbGVyKTtcbiAgICAgICAgICAgIHdvcmtlci5yZW1vdmVMaXN0ZW5lcihcImV4aXRcIiwgZXhpdEhhbmRsZXIpO1xuICAgICAgICAgICAgaWYgKG1zZy5lbnYgIT09IG1vZGUpIHtcbiAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFtjcmVhdGU6JHtpZH1dIFdvcmtlciBlbnZpcm9ubWVudCBtaXNtYXRjaC5gKTtcbiAgICAgICAgICAgICAgcmVqZWN0KHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImVycm9yXCIsXG4gICAgICAgICAgICAgICAgZXJyb3I6IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBXb3JrZXIgZW52aXJvbm1lbnQgbWlzbWF0Y2g6ICR7bXNnLmVudn0gIT09ICR7bW9kZX1gXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB3b3JrZXJQYXRoOiB3b3JrZXJQYXRoV2l0aERlZmF1bHQsXG4gICAgICAgICAgICAgIH0gc2F0aXNmaWVzIENyZWF0ZVdvcmtlckVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgd29ya2VyLFxuICAgICAgICAgICAgICB3b3JrZXJQYXRoOiB3b3JrZXJQYXRoV2l0aERlZmF1bHQsXG4gICAgICAgICAgICB9IHNhdGlzZmllcyBDcmVhdGVXb3JrZXJTdWNjZXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHdvcmtlci5vbmNlKFwibWVzc2FnZVwiLCBtZXNzYWdlSGFuZGxlcik7XG4gICAgICAgIHdvcmtlci5vbmNlKFwiZXhpdFwiLCBleGl0SGFuZGxlcik7XG4gICAgICAgIHdvcmtlci5vbihcImVycm9yXCIsIChlcnIpID0+IHtcbiAgICAgICAgICAvLyBSZW1vdmUgd29ya2VyIGZyb20gcmVnaXN0cnkgb24gZXJyb3JcbiAgICAgICAgICBhY3RpdmVXb3JrZXJzLmRlbGV0ZSh3b3JrZXIpO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICh2ZXJib3NlICYmIGVyciAhPSBudWxsKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgIGBbY3JlYXRlOiR7aWR9XSBXb3JrZXIgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9LlxcbiR7ZXJyLnN0YWNrfWAsXG4gICAgICAgICAgICAgIHsgZXJyb3I6IGVyciB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBwYW5pY0Vycm9yID0gaGFuZGxlRXJyb3Ioe1xuICAgICAgICAgICAgZXJyb3I6IGVycixcbiAgICAgICAgICAgIGxvZ2dlcjogbG9nZ2VyLFxuICAgICAgICAgICAgcGFuaWNUaHJlc2hvbGQ6IHdvcmtlckRhdGEudXNlck9wdGlvbnM/LnBhbmljVGhyZXNob2xkLFxuICAgICAgICAgICAgY3JpdGljYWw6IGZhbHNlLFxuICAgICAgICAgICAgY29udGV4dDogYFdvcmtlciB0aHJlYWQgZXJyb3IgZm9yIHJvdXRlICR7aWR9YCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAocGFuaWNFcnJvciAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgYFtjcmVhdGU6JHtpZH1dIFBhbmljIGVycm9yIGRldGVjdGVkOiAke3BhbmljRXJyb3IubWVzc2FnZX1gLFxuICAgICAgICAgICAgICAgIHsgZXJyb3I6IHBhbmljRXJyb3IgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVqZWN0KHtcbiAgICAgICAgICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgICAgICAgICBlcnJvcjogZXJyLFxuICAgICAgICAgICAgICB3b3JrZXJQYXRoOiB3b3JrZXJQYXRoV2l0aERlZmF1bHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVqZWN0KHtcbiAgICAgICAgICAgIHR5cGU6IFwiZXJyb3JcIixcbiAgICAgICAgICAgIGVycm9yOiBuZXcgRXJyb3IoXCJXb3JrZXIgdGhyZWFkIGVycm9yXCIsIHsgY2F1c2U6IGVyciB9KSxcbiAgICAgICAgICAgIHdvcmtlclBhdGg6IHdvcmtlclBhdGhXaXRoRGVmYXVsdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAodmVyYm9zZSkge1xuICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICBgW2NyZWF0ZToke2lkfV0gQ2F1Z2h0IGVycm9yIGR1cmluZyB3b3JrZXIgY3JlYXRpb246ICR7XG4gICAgICAgICAgdG9FcnJvcihlcnJvcikubWVzc2FnZVxuICAgICAgICB9YCxcbiAgICAgICAgeyBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpIH1cbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHBhbmljRXJyb3IgPSBoYW5kbGVFcnJvcih7XG4gICAgICBlcnJvcjogZXJyb3IsXG4gICAgICBsb2dnZXI6IGxvZ2dlcixcbiAgICAgIHBhbmljVGhyZXNob2xkOiB3b3JrZXJEYXRhLnVzZXJPcHRpb25zPy5wYW5pY1RocmVzaG9sZCxcbiAgICAgIGNyaXRpY2FsOiBmYWxzZSxcbiAgICAgIGNvbnRleHQ6IGBXb3JrZXIgdGhyZWFkIGVycm9yIGZvciByb3V0ZSAke2lkfWAsXG4gICAgfSk7XG4gICAgaWYgKHBhbmljRXJyb3IgIT0gbnVsbCkge1xuICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICAgIGBbY3JlYXRlOiR7aWR9XSBQYW5pYyBlcnJvciBpbiBjYXRjaCBibG9jazogJHtwYW5pY0Vycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICB7IGVycm9yOiBwYW5pY0Vycm9yIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwiZXJyb3JcIixcbiAgICAgICAgZXJyb3I6IHBhbmljRXJyb3IsXG4gICAgICAgIHdvcmtlclBhdGg6IHdvcmtlclBhdGhXaXRoRGVmYXVsdCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcImVycm9yXCIsXG4gICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpLFxuICAgICAgd29ya2VyUGF0aDogd29ya2VyUGF0aFdpdGhEZWZhdWx0LFxuICAgIH07XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQSxNQUFNLGFBQUEsdUJBQW9CLEdBQVksRUFBQTtBQUd0QyxlQUFzQixrQkFBQSxDQUFtQixVQUFrQixHQUFxQixFQUFBO0FBQzlFLEVBQUksSUFBQSxhQUFBLENBQWMsU0FBUyxDQUFHLEVBQUE7QUFFOUIsRUFBQSxNQUFNLG1CQUFtQixLQUFNLENBQUEsSUFBQSxDQUFLLGFBQWEsQ0FBQSxDQUFFLElBQUksQ0FBVSxNQUFBLEtBQUE7QUFDL0QsSUFBTyxPQUFBLElBQUksT0FBYyxDQUFBLENBQUMsT0FBWSxLQUFBO0FBQ3BDLE1BQUksSUFBQSxjQUFBO0FBRUosTUFBTSxNQUFB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
|