vitest 0.2.0 → 0.2.4
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/LICENSE.md +29 -0
- package/dist/{_commonjsHelpers-bdec4bbd.js → _commonjsHelpers-c9e3b764.js} +6 -2
- package/dist/cli.js +13 -12
- package/dist/client-f15310bf.js +9442 -0
- package/dist/{create-edd195eb.js → create-2c5e5720.js} +46 -44
- package/dist/{diff-f479c2ad.js → diff-6be0541d.js} +3 -3
- package/dist/entry.js +20 -21
- package/dist/{globals-54e252e6.js → globals-19399ded.js} +7 -7
- package/dist/{index-a2ff0e29.js → index-043440ae.js} +3 -29
- package/dist/{index-825cb54c.js → index-61c8686f.js} +2 -2
- package/dist/{index-0c3a317d.js → index-9f4b9905.js} +3 -3
- package/dist/{index-bf8aa0b4.js → index-bffba653.js} +2 -2
- package/dist/index.d.ts +28 -13
- package/dist/index.js +6 -6
- package/dist/node.d.ts +8 -2
- package/dist/node.js +9 -8
- package/dist/setup-d961d28c.js +4402 -0
- package/dist/{source-map-f7a4da05.js → source-map-1132e742.js} +2 -2
- package/dist/vi-ed2bce6b.js +5901 -0
- package/dist/worker.js +7 -159
- package/package.json +16 -15
- package/dist/index-1085cee5.js +0 -9288
- package/dist/setup-82880a85.js +0 -4389
- package/dist/vi-dce4c3b0.js +0 -5750
package/dist/worker.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { j as join, d as dirname, b as basename, r as resolve } from './index-1964368a.js';
|
|
2
|
+
import { i as isNodeBuiltin, t as toFilePath, V as ViteNodeRunner, c as createBirpc } from './client-f15310bf.js';
|
|
3
3
|
import { d as distDir } from './constants-de5287a6.js';
|
|
4
|
-
import { createRequire } from 'module';
|
|
5
|
-
import { pathToFileURL, fileURLToPath } from 'url';
|
|
6
|
-
import vm from 'vm';
|
|
7
4
|
import { existsSync, readdirSync } from 'fs';
|
|
8
5
|
import { a as spyOn, s as spies } from './jest-mock-113430de.js';
|
|
9
|
-
import { m as mergeSlashes } from './index-
|
|
6
|
+
import { m as mergeSlashes } from './index-043440ae.js';
|
|
10
7
|
import { r as rpc } from './rpc-8c7cc374.js';
|
|
11
8
|
import 'path';
|
|
9
|
+
import 'module';
|
|
10
|
+
import 'url';
|
|
12
11
|
import 'assert';
|
|
13
12
|
import 'util';
|
|
13
|
+
import 'vm';
|
|
14
14
|
import 'chai';
|
|
15
15
|
import 'tinyspy';
|
|
16
16
|
import 'tty';
|
|
@@ -22,158 +22,6 @@ function normalizeId(id, base) {
|
|
|
22
22
|
return id.replace(/^\/@id\/__x00__/, "\0").replace(/^\/@id\//, "").replace(/^__vite-browser-external:/, "").replace(/^node:/, "").replace(/[?&]v=\w+/, "?").replace(/\?$/, "");
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
const DEFAULT_REQUEST_STUBS = {
|
|
26
|
-
"/@vite/client": {
|
|
27
|
-
injectQuery: (id) => id,
|
|
28
|
-
createHotContext() {
|
|
29
|
-
return {
|
|
30
|
-
accept: () => {
|
|
31
|
-
},
|
|
32
|
-
prune: () => {
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
},
|
|
36
|
-
updateStyle() {
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
class ViteNodeRunner {
|
|
41
|
-
constructor(options) {
|
|
42
|
-
this.options = options;
|
|
43
|
-
this.root = options.root || process.cwd();
|
|
44
|
-
this.moduleCache = options.moduleCache || new Map();
|
|
45
|
-
}
|
|
46
|
-
async executeFile(file) {
|
|
47
|
-
return await this.cachedRequest(`/@fs/${slash(resolve(file))}`, []);
|
|
48
|
-
}
|
|
49
|
-
async executeId(id) {
|
|
50
|
-
return await this.cachedRequest(id, []);
|
|
51
|
-
}
|
|
52
|
-
async cachedRequest(rawId, callstack) {
|
|
53
|
-
var _a, _b;
|
|
54
|
-
const id = normalizeId$1(rawId, this.options.base);
|
|
55
|
-
if ((_a = this.moduleCache.get(id)) == null ? void 0 : _a.promise)
|
|
56
|
-
return (_b = this.moduleCache.get(id)) == null ? void 0 : _b.promise;
|
|
57
|
-
const fsPath = toFilePath(id, this.root);
|
|
58
|
-
const promise = this.directRequest(id, fsPath, callstack);
|
|
59
|
-
this.setCache(id, { promise });
|
|
60
|
-
return await promise;
|
|
61
|
-
}
|
|
62
|
-
async directRequest(id, fsPath, callstack) {
|
|
63
|
-
callstack = [...callstack, id];
|
|
64
|
-
const request = async (dep) => {
|
|
65
|
-
var _a;
|
|
66
|
-
if (callstack.includes(dep)) {
|
|
67
|
-
if (!((_a = this.moduleCache.get(dep)) == null ? void 0 : _a.exports))
|
|
68
|
-
throw new Error(`[vite-node] Circular dependency detected
|
|
69
|
-
Stack:
|
|
70
|
-
${[...callstack, dep].reverse().map((p) => `- ${p}`).join("\n")}`);
|
|
71
|
-
return this.moduleCache.get(dep).exports;
|
|
72
|
-
}
|
|
73
|
-
return this.cachedRequest(dep, callstack);
|
|
74
|
-
};
|
|
75
|
-
const requestStubs = this.options.requestStubs || DEFAULT_REQUEST_STUBS;
|
|
76
|
-
if (id in requestStubs)
|
|
77
|
-
return requestStubs[id];
|
|
78
|
-
const { code: transformed, externalize } = await this.options.fetchModule(id);
|
|
79
|
-
if (externalize) {
|
|
80
|
-
const mod = await this.interopedImport(externalize);
|
|
81
|
-
this.setCache(id, { exports: mod });
|
|
82
|
-
return mod;
|
|
83
|
-
}
|
|
84
|
-
if (transformed == null)
|
|
85
|
-
throw new Error(`[vite-node] Failed to load ${id}`);
|
|
86
|
-
const url = pathToFileURL(fsPath).href;
|
|
87
|
-
const exports = {};
|
|
88
|
-
this.setCache(id, { code: transformed, exports });
|
|
89
|
-
const __filename = fileURLToPath(url);
|
|
90
|
-
const moduleProxy = {
|
|
91
|
-
set exports(value) {
|
|
92
|
-
exportAll(exports, value);
|
|
93
|
-
exports.default = value;
|
|
94
|
-
},
|
|
95
|
-
get exports() {
|
|
96
|
-
return exports.default;
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
const context = this.prepareContext({
|
|
100
|
-
__vite_ssr_import__: request,
|
|
101
|
-
__vite_ssr_dynamic_import__: request,
|
|
102
|
-
__vite_ssr_exports__: exports,
|
|
103
|
-
__vite_ssr_exportAll__: (obj) => exportAll(exports, obj),
|
|
104
|
-
__vite_ssr_import_meta__: { url },
|
|
105
|
-
require: createRequire(url),
|
|
106
|
-
exports,
|
|
107
|
-
module: moduleProxy,
|
|
108
|
-
__filename,
|
|
109
|
-
__dirname: dirname(__filename)
|
|
110
|
-
});
|
|
111
|
-
const fn = vm.runInThisContext(`async (${Object.keys(context).join(",")})=>{{${transformed}
|
|
112
|
-
}}`, {
|
|
113
|
-
filename: fsPath,
|
|
114
|
-
lineOffset: 0
|
|
115
|
-
});
|
|
116
|
-
await fn(...Object.values(context));
|
|
117
|
-
return exports;
|
|
118
|
-
}
|
|
119
|
-
prepareContext(context) {
|
|
120
|
-
return context;
|
|
121
|
-
}
|
|
122
|
-
setCache(id, mod) {
|
|
123
|
-
if (!this.moduleCache.has(id))
|
|
124
|
-
this.moduleCache.set(id, mod);
|
|
125
|
-
else
|
|
126
|
-
Object.assign(this.moduleCache.get(id), mod);
|
|
127
|
-
}
|
|
128
|
-
shouldInterop(path, mod) {
|
|
129
|
-
if (this.options.interopDefault === false)
|
|
130
|
-
return false;
|
|
131
|
-
return !path.endsWith(".mjs") && "default" in mod;
|
|
132
|
-
}
|
|
133
|
-
async interopedImport(path) {
|
|
134
|
-
const mod = await import(path);
|
|
135
|
-
if (this.shouldInterop(path, mod)) {
|
|
136
|
-
const tryDefault = this.hasNestedDefault(mod);
|
|
137
|
-
return new Proxy(mod, {
|
|
138
|
-
get: proxyMethod("get", tryDefault),
|
|
139
|
-
set: proxyMethod("set", tryDefault),
|
|
140
|
-
has: proxyMethod("has", tryDefault),
|
|
141
|
-
deleteProperty: proxyMethod("deleteProperty", tryDefault)
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
return mod;
|
|
145
|
-
}
|
|
146
|
-
hasNestedDefault(target) {
|
|
147
|
-
return "__esModule" in target && target.__esModule && "default" in target.default;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
function proxyMethod(name, tryDefault) {
|
|
151
|
-
return function(target, key, ...args) {
|
|
152
|
-
const result = Reflect[name](target, key, ...args);
|
|
153
|
-
if (isPrimitive(target.default))
|
|
154
|
-
return result;
|
|
155
|
-
if (tryDefault && key === "default" || typeof result === "undefined")
|
|
156
|
-
return Reflect[name](target.default, key, ...args);
|
|
157
|
-
return result;
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
function exportAll(exports, sourceModule) {
|
|
161
|
-
for (const key in sourceModule) {
|
|
162
|
-
if (key !== "default") {
|
|
163
|
-
try {
|
|
164
|
-
Object.defineProperty(exports, key, {
|
|
165
|
-
enumerable: true,
|
|
166
|
-
configurable: true,
|
|
167
|
-
get() {
|
|
168
|
-
return sourceModule[key];
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
} catch (_err) {
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
25
|
var __defProp = Object.defineProperty;
|
|
178
26
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
179
27
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
@@ -491,4 +339,4 @@ async function run(ctx) {
|
|
|
491
339
|
}
|
|
492
340
|
|
|
493
341
|
export { collect, run };
|
|
494
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvcGF0aC50cyIsIi4uLy4uL3ZpdGUtbm9kZS9zcmMvY2xpZW50LnRzIiwiLi4vc3JjL25vZGUvbW9ja2VyLnRzIiwiLi4vc3JjL25vZGUvZXhlY3V0ZS50cyIsIi4uL3NyYy9ydW50aW1lL3dvcmtlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSWQoaWQ6IHN0cmluZywgYmFzZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChiYXNlICYmIGlkLnN0YXJ0c1dpdGgoYmFzZSkpXG4gICAgaWQgPSBgLyR7aWQuc2xpY2UoYmFzZS5sZW5ndGgpfWBcblxuICByZXR1cm4gaWRcbiAgICAucmVwbGFjZSgvXlxcL0BpZFxcL19feDAwX18vLCAnXFwwJykgLy8gdmlydHVhbCBtb2R1bGVzIHN0YXJ0IHdpdGggYFxcMGBcbiAgICAucmVwbGFjZSgvXlxcL0BpZFxcLy8sICcnKVxuICAgIC5yZXBsYWNlKC9eX192aXRlLWJyb3dzZXItZXh0ZXJuYWw6LywgJycpXG4gICAgLnJlcGxhY2UoL15ub2RlOi8sICcnKVxuICAgIC5yZXBsYWNlKC9bPyZddj1cXHcrLywgJz8nKSAvLyByZW1vdmUgP3Y9IHF1ZXJ5XG4gICAgLnJlcGxhY2UoL1xcPyQvLCAnJykgLy8gcmVtb3ZlIGVuZCBxdWVyeSBtYXJrXG59XG4iLCJpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSAnbW9kdWxlJ1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCwgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ3VybCdcbmltcG9ydCB2bSBmcm9tICd2bSdcbmltcG9ydCB7IGRpcm5hbWUsIHJlc29sdmUgfSBmcm9tICdwYXRoZSdcbmltcG9ydCB7IGlzUHJpbWl0aXZlLCBub3JtYWxpemVJZCwgc2xhc2gsIHRvRmlsZVBhdGggfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVDYWNoZSwgVml0ZU5vZGVSdW5uZXJPcHRpb25zIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVRVUVTVF9TVFVCUyA9IHtcbiAgJy9Adml0ZS9jbGllbnQnOiB7XG4gICAgaW5qZWN0UXVlcnk6IChpZDogc3RyaW5nKSA9PiBpZCxcbiAgICBjcmVhdGVIb3RDb250ZXh0KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjZXB0OiAoKSA9PiB7fSxcbiAgICAgICAgcHJ1bmU6ICgpID0+IHt9LFxuICAgICAgfVxuICAgIH0sXG4gICAgdXBkYXRlU3R5bGUoKSB7fSxcbiAgfSxcbn1cblxuZXhwb3J0IGNsYXNzIFZpdGVOb2RlUnVubmVyIHtcbiAgcm9vdDogc3RyaW5nXG5cbiAgbW9kdWxlQ2FjaGU6IE1hcDxzdHJpbmcsIE1vZHVsZUNhY2hlPlxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcHRpb25zOiBWaXRlTm9kZVJ1bm5lck9wdGlvbnMpIHtcbiAgICB0aGlzLnJvb3QgPSBvcHRpb25zLnJvb3QgfHwgcHJvY2Vzcy5jd2QoKVxuICAgIHRoaXMubW9kdWxlQ2FjaGUgPSBvcHRpb25zLm1vZHVsZUNhY2hlIHx8IG5ldyBNYXAoKVxuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZUZpbGUoZmlsZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2FjaGVkUmVxdWVzdChgL0Bmcy8ke3NsYXNoKHJlc29sdmUoZmlsZSkpfWAsIFtdKVxuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZUlkKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jYWNoZWRSZXF1ZXN0KGlkLCBbXSlcbiAgfVxuXG4gIGFzeW5jIGNhY2hlZFJlcXVlc3QocmF3SWQ6IHN0cmluZywgY2FsbHN0YWNrOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGlkID0gbm9ybWFsaXplSWQocmF3SWQsIHRoaXMub3B0aW9ucy5iYXNlKVxuXG4gICAgaWYgKHRoaXMubW9kdWxlQ2FjaGUuZ2V0KGlkKT8ucHJvbWlzZSlcbiAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNhY2hlLmdldChpZCk/LnByb21pc2VcblxuICAgIGNvbnN0IGZzUGF0aCA9IHRvRmlsZVBhdGgoaWQsIHRoaXMucm9vdClcbiAgICBjb25zdCBwcm9taXNlID0gdGhpcy5kaXJlY3RSZXF1ZXN0KGlkLCBmc1BhdGgsIGNhbGxzdGFjaylcbiAgICB0aGlzLnNldENhY2hlKGlkLCB7IHByb21pc2UgfSlcblxuICAgIHJldHVybiBhd2FpdCBwcm9taXNlXG4gIH1cblxuICBhc3luYyBkaXJlY3RSZXF1ZXN0KGlkOiBzdHJpbmcsIGZzUGF0aDogc3RyaW5nLCBjYWxsc3RhY2s6IHN0cmluZ1tdKSB7XG4gICAgY2FsbHN0YWNrID0gWy4uLmNhbGxzdGFjaywgaWRdXG4gICAgY29uc3QgcmVxdWVzdCA9IGFzeW5jKGRlcDogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoY2FsbHN0YWNrLmluY2x1ZGVzKGRlcCkpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vZHVsZUNhY2hlLmdldChkZXApPy5leHBvcnRzKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW3ZpdGUtbm9kZV0gQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZFxcblN0YWNrOlxcbiR7Wy4uLmNhbGxzdGFjaywgZGVwXS5yZXZlcnNlKCkubWFwKHAgPT4gYC0gJHtwfWApLmpvaW4oJ1xcbicpfWApXG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNhY2hlLmdldChkZXApIS5leHBvcnRzXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZWRSZXF1ZXN0KGRlcCwgY2FsbHN0YWNrKVxuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3RTdHVicyA9IHRoaXMub3B0aW9ucy5yZXF1ZXN0U3R1YnMgfHwgREVGQVVMVF9SRVFVRVNUX1NUVUJTXG4gICAgaWYgKGlkIGluIHJlcXVlc3RTdHVicylcbiAgICAgIHJldHVybiByZXF1ZXN0U3R1YnNbaWRdXG5cbiAgICBjb25zdCB7IGNvZGU6IHRyYW5zZm9ybWVkLCBleHRlcm5hbGl6ZSB9ID0gYXdhaXQgdGhpcy5vcHRpb25zLmZldGNoTW9kdWxlKGlkKVxuICAgIGlmIChleHRlcm5hbGl6ZSkge1xuICAgICAgY29uc3QgbW9kID0gYXdhaXQgdGhpcy5pbnRlcm9wZWRJbXBvcnQoZXh0ZXJuYWxpemUpXG4gICAgICB0aGlzLnNldENhY2hlKGlkLCB7IGV4cG9ydHM6IG1vZCB9KVxuICAgICAgcmV0dXJuIG1vZFxuICAgIH1cblxuICAgIGlmICh0cmFuc2Zvcm1lZCA9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBbdml0ZS1ub2RlXSBGYWlsZWQgdG8gbG9hZCAke2lkfWApXG5cbiAgICAvLyBkaXNhbWJpZ3VhdGUgdGhlIGA8VU5JVD46L2Agb24gd2luZG93czogc2VlIG5vZGVqcy9ub2RlIzMxNzEwXG4gICAgY29uc3QgdXJsID0gcGF0aFRvRmlsZVVSTChmc1BhdGgpLmhyZWZcbiAgICBjb25zdCBleHBvcnRzOiBhbnkgPSB7fVxuXG4gICAgdGhpcy5zZXRDYWNoZShpZCwgeyBjb2RlOiB0cmFuc2Zvcm1lZCwgZXhwb3J0cyB9KVxuXG4gICAgY29uc3QgX19maWxlbmFtZSA9IGZpbGVVUkxUb1BhdGgodXJsKVxuICAgIGNvbnN0IG1vZHVsZVByb3h5ID0ge1xuICAgICAgc2V0IGV4cG9ydHModmFsdWUpIHtcbiAgICAgICAgZXhwb3J0QWxsKGV4cG9ydHMsIHZhbHVlKVxuICAgICAgICBleHBvcnRzLmRlZmF1bHQgPSB2YWx1ZVxuICAgICAgfSxcbiAgICAgIGdldCBleHBvcnRzKCkge1xuICAgICAgICByZXR1cm4gZXhwb3J0cy5kZWZhdWx0XG4gICAgICB9LFxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnByZXBhcmVDb250ZXh0KHtcbiAgICAgIC8vIGVzbSB0cmFuc2Zvcm1lZCBieSBWaXRlXG4gICAgICBfX3ZpdGVfc3NyX2ltcG9ydF9fOiByZXF1ZXN0LFxuICAgICAgX192aXRlX3Nzcl9keW5hbWljX2ltcG9ydF9fOiByZXF1ZXN0LFxuICAgICAgX192aXRlX3Nzcl9leHBvcnRzX186IGV4cG9ydHMsXG4gICAgICBfX3ZpdGVfc3NyX2V4cG9ydEFsbF9fOiAob2JqOiBhbnkpID0+IGV4cG9ydEFsbChleHBvcnRzLCBvYmopLFxuICAgICAgX192aXRlX3Nzcl9pbXBvcnRfbWV0YV9fOiB7IHVybCB9LFxuXG4gICAgICAvLyBjanMgY29tcGFjdFxuICAgICAgcmVxdWlyZTogY3JlYXRlUmVxdWlyZSh1cmwpLFxuICAgICAgZXhwb3J0cyxcbiAgICAgIG1vZHVsZTogbW9kdWxlUHJveHksXG4gICAgICBfX2ZpbGVuYW1lLFxuICAgICAgX19kaXJuYW1lOiBkaXJuYW1lKF9fZmlsZW5hbWUpLFxuICAgIH0pXG5cbiAgICBjb25zdCBmbiA9IHZtLnJ1bkluVGhpc0NvbnRleHQoYGFzeW5jICgke09iamVjdC5rZXlzKGNvbnRleHQpLmpvaW4oJywnKX0pPT57eyR7dHJhbnNmb3JtZWR9XFxufX1gLCB7XG4gICAgICBmaWxlbmFtZTogZnNQYXRoLFxuICAgICAgbGluZU9mZnNldDogMCxcbiAgICB9KVxuXG4gICAgYXdhaXQgZm4oLi4uT2JqZWN0LnZhbHVlcyhjb250ZXh0KSlcblxuICAgIHJldHVybiBleHBvcnRzXG4gIH1cblxuICBwcmVwYXJlQ29udGV4dChjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgcmV0dXJuIGNvbnRleHRcbiAgfVxuXG4gIHNldENhY2hlKGlkOiBzdHJpbmcsIG1vZDogUGFydGlhbDxNb2R1bGVDYWNoZT4pIHtcbiAgICBpZiAoIXRoaXMubW9kdWxlQ2FjaGUuaGFzKGlkKSlcbiAgICAgIHRoaXMubW9kdWxlQ2FjaGUuc2V0KGlkLCBtb2QpXG4gICAgZWxzZVxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZHVsZUNhY2hlLmdldChpZCksIG1vZClcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgaWYgYSBtb2R1bGUgc2hvdWxkIGJlIGludGVyb3AtZWRcbiAgICogVGhpcyBmdW5jdGlvbiBtb3N0bHkgZm9yIHRoZSBhYmlsaXR5IHRvIG92ZXJyaWRlIGJ5IHN1YmNsYXNzXG4gICAqL1xuICBzaG91bGRJbnRlcm9wKHBhdGg6IHN0cmluZywgbW9kOiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmludGVyb3BEZWZhdWx0ID09PSBmYWxzZSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIC8vIG5ldmVyIGludGVyb3AgRVNNIG1vZHVsZXNcbiAgICAvLyBUT0RPOiBzaG91bGQgYWxzbyBza2lwIGZvciBgLmpzYCB3aXRoIGB0eXBlPVwibW9kdWxlXCJgXG4gICAgcmV0dXJuICFwYXRoLmVuZHNXaXRoKCcubWpzJykgJiYgJ2RlZmF1bHQnIGluIG1vZFxuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhIG1vZHVsZSBhbmQgaW50ZXJvcCBpdFxuICAgKi9cbiAgYXN5bmMgaW50ZXJvcGVkSW1wb3J0KHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IG1vZCA9IGF3YWl0IGltcG9ydChwYXRoKVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkSW50ZXJvcChwYXRoLCBtb2QpKSB7XG4gICAgICBjb25zdCB0cnlEZWZhdWx0ID0gdGhpcy5oYXNOZXN0ZWREZWZhdWx0KG1vZClcbiAgICAgIHJldHVybiBuZXcgUHJveHkobW9kLCB7XG4gICAgICAgIGdldDogcHJveHlNZXRob2QoJ2dldCcsIHRyeURlZmF1bHQpLFxuICAgICAgICBzZXQ6IHByb3h5TWV0aG9kKCdzZXQnLCB0cnlEZWZhdWx0KSxcbiAgICAgICAgaGFzOiBwcm94eU1ldGhvZCgnaGFzJywgdHJ5RGVmYXVsdCksXG4gICAgICAgIGRlbGV0ZVByb3BlcnR5OiBwcm94eU1ldGhvZCgnZGVsZXRlUHJvcGVydHknLCB0cnlEZWZhdWx0KSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZFxuICB9XG5cbiAgaGFzTmVzdGVkRGVmYXVsdCh0YXJnZXQ6IGFueSkge1xuICAgIHJldHVybiAnX19lc01vZHVsZScgaW4gdGFyZ2V0ICYmIHRhcmdldC5fX2VzTW9kdWxlICYmICdkZWZhdWx0JyBpbiB0YXJnZXQuZGVmYXVsdFxuICB9XG59XG5cbmZ1bmN0aW9uIHByb3h5TWV0aG9kKG5hbWU6ICdnZXQnIHwgJ3NldCcgfCAnaGFzJyB8ICdkZWxldGVQcm9wZXJ0eScsIHRyeURlZmF1bHQ6IGJvb2xlYW4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRhcmdldDogYW55LCBrZXk6IHN0cmluZyB8IHN5bWJvbCwgLi4uYXJnczogW2FueT8sIGFueT9dKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gUmVmbGVjdFtuYW1lXSh0YXJnZXQsIGtleSwgLi4uYXJncylcbiAgICBpZiAoaXNQcmltaXRpdmUodGFyZ2V0LmRlZmF1bHQpKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIGlmICgodHJ5RGVmYXVsdCAmJiBrZXkgPT09ICdkZWZhdWx0JykgfHwgdHlwZW9mIHJlc3VsdCA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICByZXR1cm4gUmVmbGVjdFtuYW1lXSh0YXJnZXQuZGVmYXVsdCwga2V5LCAuLi5hcmdzKVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG5mdW5jdGlvbiBleHBvcnRBbGwoZXhwb3J0czogYW55LCBzb3VyY2VNb2R1bGU6IGFueSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgZm9yIChjb25zdCBrZXkgaW4gc291cmNlTW9kdWxlKSB7XG4gICAgaWYgKGtleSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0KCkgeyByZXR1cm4gc291cmNlTW9kdWxlW2tleV0gfSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNhdGNoIChfZXJyKSB7IH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRkaXJTeW5jIH0gZnJvbSAnZnMnXG5pbXBvcnQgeyBpc05vZGVCdWlsdGluIH0gZnJvbSAnbWxseSdcbmltcG9ydCB7IGJhc2VuYW1lLCBkaXJuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IE1vZHVsZUNhY2hlIH0gZnJvbSAndml0ZS1ub2RlJ1xuaW1wb3J0IHsgdG9GaWxlUGF0aCB9IGZyb20gJ3ZpdGUtbm9kZS91dGlscydcbmltcG9ydCB7IHNwaWVzLCBzcHlPbiB9IGZyb20gJy4uL2ludGVncmF0aW9ucy9qZXN0LW1vY2snXG5pbXBvcnQgeyBtZXJnZVNsYXNoZXMsIG5vcm1hbGl6ZUlkIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEV4ZWN1dGVPcHRpb25zIH0gZnJvbSAnLi9leGVjdXRlJ1xuXG5leHBvcnQgdHlwZSBTdWl0ZU1vY2tzID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbCB8ICgoKSA9PiB1bmtub3duKT4+XG5cbnR5cGUgQ2FsbGJhY2sgPSAoLi4uYXJnczogYW55W10pID0+IHVua25vd25cblxuaW50ZXJmYWNlIFBlbmRpbmdTdWl0ZU1vY2sge1xuICBpZDogc3RyaW5nXG4gIGltcG9ydGVyOiBzdHJpbmdcbiAgdHlwZTogJ21vY2snIHwgJ3VubW9jaydcbiAgZmFjdG9yeT86ICgpID0+IHVua25vd25cbn1cblxuZnVuY3Rpb24gZ2V0T2JqZWN0VHlwZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHZhbHVlKS5zbGljZSg4LCAtMSlcbn1cblxuZnVuY3Rpb24gbW9ja1Byb3RvdHlwZShwcm90bzogYW55KSB7XG4gIGlmICghcHJvdG8pIHJldHVybiBudWxsXG5cbiAgY29uc3QgbmV3UHJvdG86IGFueSA9IHt9XG5cbiAgY29uc3QgcHJvdG9EZXNjciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHByb3RvKVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICBmb3IgKGNvbnN0IGQgaW4gcHJvdG9EZXNjcikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdQcm90bywgZCwgcHJvdG9EZXNjcltkXSlcblxuICAgIGlmICh0eXBlb2YgcHJvdG9EZXNjcltkXS52YWx1ZSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIHNweU9uKG5ld1Byb3RvLCBkKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge30pXG4gIH1cblxuICByZXR1cm4gbmV3UHJvdG9cbn1cblxuY29uc3QgcGVuZGluZ0lkczogUGVuZGluZ1N1aXRlTW9ja1tdID0gW11cblxuZXhwb3J0IGNsYXNzIFZpdGVzdE1vY2tlciB7XG4gIHByaXZhdGUgcmVxdWVzdCE6IChkZXA6IHN0cmluZykgPT4gdW5rbm93blxuXG4gIHByaXZhdGUgcm9vdDogc3RyaW5nXG4gIC8vIHByaXZhdGUgbW9ja01hcDogU3VpdGVNb2Nrc1xuXG4gIHByaXZhdGUgY2FsbGJhY2tzOiBSZWNvcmQ8c3RyaW5nLCAoKC4uLmFyZ3M6IGFueVtdKSA9PiB1bmtub3duKVtdPiA9IHt9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG9wdGlvbnM6IEV4ZWN1dGVPcHRpb25zLFxuICAgIHByaXZhdGUgbW9kdWxlQ2FjaGU6IE1hcDxzdHJpbmcsIE1vZHVsZUNhY2hlPixcbiAgICByZXF1ZXN0PzogKGRlcDogc3RyaW5nKSA9PiB1bmtub3duLFxuICApIHtcbiAgICB0aGlzLnJvb3QgPSB0aGlzLm9wdGlvbnMucm9vdFxuICAgIC8vIHRoaXMubW9ja01hcCA9IG9wdGlvbnMubW9ja01hcFxuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3QhXG4gIH1cblxuICBnZXQgbW9ja01hcCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1vY2tNYXBcbiAgfVxuXG4gIHB1YmxpYyBvbihldmVudDogc3RyaW5nLCBjYjogQ2FsbGJhY2spIHtcbiAgICB0aGlzLmNhbGxiYWNrc1tldmVudF0gPz89IFtdXG4gICAgdGhpcy5jYWxsYmFja3NbZXZlbnRdLnB1c2goY2IpXG4gIH1cblxuICBwcml2YXRlIGVtaXQoZXZlbnQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICAodGhpcy5jYWxsYmFja3NbZXZlbnRdID8/IFtdKS5mb3JFYWNoKGZuID0+IGZuKC4uLmFyZ3MpKVxuICB9XG5cbiAgcHVibGljIGdldFN1aXRlRmlsZXBhdGgoKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18/LmZpbGVwYXRoIHx8ICdnbG9iYWwnXG4gIH1cblxuICBwdWJsaWMgZ2V0TW9ja3MoKSB7XG4gICAgY29uc3Qgc3VpdGUgPSB0aGlzLmdldFN1aXRlRmlsZXBhdGgoKVxuICAgIGNvbnN0IHN1aXRlTW9ja3MgPSB0aGlzLm1vY2tNYXBbc3VpdGUgfHwgJyddXG4gICAgY29uc3QgZ2xvYmFsTW9ja3MgPSB0aGlzLm1vY2tNYXAuZ2xvYmFsXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VpdGVNb2NrcyxcbiAgICAgIC4uLmdsb2JhbE1vY2tzLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVBhdGgoaWQ6IHN0cmluZywgaW1wb3J0ZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHBhdGggPSBhd2FpdCB0aGlzLm9wdGlvbnMucmVzb2x2ZUlkKGlkLCBpbXBvcnRlcilcbiAgICByZXR1cm4ge1xuICAgICAgcGF0aDogbm9ybWFsaXplSWQocGF0aD8uaWQgfHwgaWQpLFxuICAgICAgZXh0ZXJuYWw6IHBhdGg/LmlkLmluY2x1ZGVzKCcvbm9kZV9tb2R1bGVzLycpID8gaWQgOiBudWxsLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZU1vY2tzKCkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHBlbmRpbmdJZHMubWFwKGFzeW5jKG1vY2spID0+IHtcbiAgICAgIGNvbnN0IHsgcGF0aCwgZXh0ZXJuYWwgfSA9IGF3YWl0IHRoaXMucmVzb2x2ZVBhdGgobW9jay5pZCwgbW9jay5pbXBvcnRlcilcbiAgICAgIGlmIChtb2NrLnR5cGUgPT09ICd1bm1vY2snKVxuICAgICAgICB0aGlzLnVubW9ja1BhdGgocGF0aCwgZXh0ZXJuYWwpXG4gICAgICBpZiAobW9jay50eXBlID09PSAnbW9jaycpXG4gICAgICAgIHRoaXMubW9ja1BhdGgocGF0aCwgZXh0ZXJuYWwsIG1vY2suZmFjdG9yeSlcbiAgICB9KSlcblxuICAgIHBlbmRpbmdJZHMubGVuZ3RoID0gMFxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjYWxsRnVuY3Rpb25Nb2NrKGRlcDogc3RyaW5nLCBtb2NrOiAoKSA9PiBhbnkpIHtcbiAgICBjb25zdCBjYWNoZU5hbWUgPSBgJHtkZXB9X19tb2NrYFxuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMubW9kdWxlQ2FjaGUuZ2V0KGNhY2hlTmFtZSk/LmV4cG9ydHNcbiAgICBpZiAoY2FjaGVkKVxuICAgICAgcmV0dXJuIGNhY2hlZFxuICAgIGNvbnN0IGV4cG9ydHMgPSBhd2FpdCBtb2NrKClcbiAgICB0aGlzLmVtaXQoJ21vY2tlZCcsIGNhY2hlTmFtZSwgeyBleHBvcnRzIH0pXG4gICAgcmV0dXJuIGV4cG9ydHNcbiAgfVxuXG4gIHB1YmxpYyBnZXREZXBlbmRlbmN5TW9jayhkZXA6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldE1vY2tzKClbdGhpcy5yZXNvbHZlRGVwZW5kZW5jeShkZXApXVxuICB9XG5cbiAgLy8gbnBtIHJlc29sdmVzIGFzIC9ub2RlX21vZHVsZXMsIGJ1dCB3ZSBzdG9yZSBhcyAvQGZzLy4uLi9ub2RlX21vZHVsZXNcbiAgcHVibGljIHJlc29sdmVEZXBlbmRlbmN5KGRlcDogc3RyaW5nKSB7XG4gICAgaWYgKGRlcC5zdGFydHNXaXRoKCcvbm9kZV9tb2R1bGVzLycpKVxuICAgICAgZGVwID0gbWVyZ2VTbGFzaGVzKGAvQGZzLyR7am9pbih0aGlzLnJvb3QsIGRlcCl9YClcblxuICAgIHJldHVybiBub3JtYWxpemVJZChkZXApXG4gIH1cblxuICBwdWJsaWMgZ2V0QWN0dWFsUGF0aChwYXRoOiBzdHJpbmcsIGV4dGVybmFsOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKGV4dGVybmFsKVxuICAgICAgcmV0dXJuIG1lcmdlU2xhc2hlcyhgL0Bmcy8ke3BhdGh9YClcblxuICAgIHJldHVybiBub3JtYWxpemVJZChwYXRoLnJlcGxhY2UodGhpcy5yb290LCAnJykpXG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZU1vY2tQYXRoKG1vY2tQYXRoOiBzdHJpbmcsIGV4dGVybmFsOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgY29uc3QgcGF0aCA9IG5vcm1hbGl6ZUlkKGV4dGVybmFsIHx8IG1vY2tQYXRoKVxuXG4gICAgLy8gaXQncyBhIG5vZGVfbW9kdWxlIGFsaWFzXG4gICAgLy8gYWxsIG1vY2tzIHNob3VsZCBiZSBpbnNpZGUgPHJvb3Q+L19fbW9ja3NfX1xuICAgIGlmIChleHRlcm5hbCB8fCBpc05vZGVCdWlsdGluKG1vY2tQYXRoKSkge1xuICAgICAgY29uc3QgbW9ja0Rpcm5hbWUgPSBkaXJuYW1lKHBhdGgpIC8vIGZvciBuZXN0ZWQgbW9ja3M6IEB2dWV1c2UvaW50ZWdyYXRpb24vdXNlSnd0XG4gICAgICBjb25zdCBiYXNlRmlsZW5hbWUgPSBiYXNlbmFtZShwYXRoKVxuICAgICAgY29uc3QgbW9ja0ZvbGRlciA9IHJlc29sdmUodGhpcy5yb290LCAnX19tb2Nrc19fJywgbW9ja0Rpcm5hbWUpXG5cbiAgICAgIGlmICghZXhpc3RzU3luYyhtb2NrRm9sZGVyKSkgcmV0dXJuIG51bGxcblxuICAgICAgY29uc3QgZmlsZXMgPSByZWFkZGlyU3luYyhtb2NrRm9sZGVyKVxuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgY29uc3QgW2Jhc2VuYW1lXSA9IGZpbGUuc3BsaXQoJy4nKVxuICAgICAgICBpZiAoYmFzZW5hbWUgPT09IGJhc2VGaWxlbmFtZSlcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShtb2NrRm9sZGVyLCBmaWxlKS5yZXBsYWNlKHRoaXMucm9vdCwgJycpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgZGlyID0gZGlybmFtZShwYXRoKVxuICAgIGNvbnN0IGJhc2VJZCA9IGJhc2VuYW1lKHBhdGgpXG4gICAgY29uc3QgZnVsbFBhdGggPSByZXNvbHZlKGRpciwgJ19fbW9ja3NfXycsIGJhc2VJZClcbiAgICByZXR1cm4gZXhpc3RzU3luYyhmdWxsUGF0aCkgPyBmdWxsUGF0aC5yZXBsYWNlKHRoaXMucm9vdCwgJycpIDogbnVsbFxuICB9XG5cbiAgcHVibGljIG1vY2tPYmplY3Qob2JqOiBhbnkpIHtcbiAgICBjb25zdCB0eXBlID0gZ2V0T2JqZWN0VHlwZShvYmopXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKVxuICAgICAgcmV0dXJuIFtdXG4gICAgZWxzZSBpZiAodHlwZSAhPT0gJ09iamVjdCcgJiYgdHlwZSAhPT0gJ01vZHVsZScpXG4gICAgICByZXR1cm4gb2JqXG5cbiAgICBjb25zdCBuZXdPYmogPSB7IC4uLm9iaiB9XG5cbiAgICBjb25zdCBwcm90byA9IG1vY2tQcm90b3R5cGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG5ld09iaiwgcHJvdG8pXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICBmb3IgKGNvbnN0IGsgaW4gb2JqKSB7XG4gICAgICBuZXdPYmpba10gPSB0aGlzLm1vY2tPYmplY3Qob2JqW2tdKVxuICAgICAgY29uc3QgdHlwZSA9IGdldE9iamVjdFR5cGUob2JqW2tdKVxuXG4gICAgICBpZiAodHlwZS5pbmNsdWRlcygnRnVuY3Rpb24nKSAmJiAhb2JqW2tdLl9faXNTcHkpIHtcbiAgICAgICAgc3B5T24obmV3T2JqLCBrKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge30pXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmpba10sICdsZW5ndGgnLCB7IHZhbHVlOiAwIH0pIC8vIHRpbnlzcHkgcmV0YWlucyBsZW5ndGgsIGJ1dCBqZXN0IGRvZXNudFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3T2JqXG4gIH1cblxuICBwdWJsaWMgdW5tb2NrUGF0aChwYXRoOiBzdHJpbmcsIGV4dGVybmFsOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgY29uc3Qgc3VpdGVmaWxlID0gdGhpcy5nZXRTdWl0ZUZpbGVwYXRoKClcblxuICAgIGNvbnN0IGZzUGF0aCA9IHRoaXMuZ2V0QWN0dWFsUGF0aChwYXRoLCBleHRlcm5hbClcblxuICAgIGlmICh0aGlzLm1vY2tNYXBbc3VpdGVmaWxlXT8uW2ZzUGF0aF0pXG4gICAgICBkZWxldGUgdGhpcy5tb2NrTWFwW3N1aXRlZmlsZV1bZnNQYXRoXVxuICB9XG5cbiAgcHVibGljIG1vY2tQYXRoKHBhdGg6IHN0cmluZywgZXh0ZXJuYWw6IHN0cmluZyB8IG51bGwsIGZhY3Rvcnk/OiAoKSA9PiBhbnkpIHtcbiAgICBjb25zdCBzdWl0ZWZpbGUgPSB0aGlzLmdldFN1aXRlRmlsZXBhdGgoKVxuXG4gICAgY29uc3QgZnNQYXRoID0gdGhpcy5nZXRBY3R1YWxQYXRoKHBhdGgsIGV4dGVybmFsKVxuXG4gICAgdGhpcy5tb2NrTWFwW3N1aXRlZmlsZV0gPz89IHt9XG4gICAgdGhpcy5tb2NrTWFwW3N1aXRlZmlsZV1bZnNQYXRoXSA9IGZhY3RvcnkgfHwgdGhpcy5yZXNvbHZlTW9ja1BhdGgocGF0aCwgZXh0ZXJuYWwpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW1wb3J0QWN0dWFsPFQ+KGlkOiBzdHJpbmcsIGltcG9ydGVyOiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCB7IHBhdGgsIGV4dGVybmFsIH0gPSBhd2FpdCB0aGlzLnJlc29sdmVQYXRoKGlkLCBpbXBvcnRlcilcbiAgICBjb25zdCBmc1BhdGggPSB0aGlzLmdldEFjdHVhbFBhdGgocGF0aCwgZXh0ZXJuYWwpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0KGZzUGF0aClcbiAgICByZXR1cm4gcmVzdWx0IGFzIFRcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbXBvcnRNb2NrKGlkOiBzdHJpbmcsIGltcG9ydGVyOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHsgcGF0aCwgZXh0ZXJuYWwgfSA9IGF3YWl0IHRoaXMucmVzb2x2ZVBhdGgoaWQsIGltcG9ydGVyKVxuXG4gICAgbGV0IG1vY2sgPSB0aGlzLmdldERlcGVuZGVuY3lNb2NrKHBhdGgpXG5cbiAgICBpZiAobW9jayA9PT0gdW5kZWZpbmVkKVxuICAgICAgbW9jayA9IHRoaXMucmVzb2x2ZU1vY2tQYXRoKHBhdGgsIGV4dGVybmFsKVxuXG4gICAgaWYgKG1vY2sgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZzUGF0aCA9IHRoaXMuZ2V0QWN0dWFsUGF0aChwYXRoLCBleHRlcm5hbClcbiAgICAgIGNvbnN0IG1vZCA9IGF3YWl0IHRoaXMucmVxdWVzdChmc1BhdGgpXG4gICAgICByZXR1cm4gdGhpcy5tb2NrT2JqZWN0KG1vZClcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtb2NrID09PSAnZnVuY3Rpb24nKVxuICAgICAgcmV0dXJuIHRoaXMuY2FsbEZ1bmN0aW9uTW9jayhwYXRoLCBtb2NrKVxuICAgIHJldHVybiB0aGlzLnJlcXVlc3RXaXRoTW9jayhtb2NrKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlcXVlc3RXaXRoTW9jayhkZXA6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMucmVzb2x2ZU1vY2tzKClcblxuICAgIGNvbnN0IG1vY2sgPSB0aGlzLmdldERlcGVuZGVuY3lNb2NrKGRlcClcblxuICAgIGlmIChtb2NrID09PSBudWxsKSB7XG4gICAgICBjb25zdCBjYWNoZU5hbWUgPSBgJHtkZXB9X19tb2NrYFxuICAgICAgY29uc3QgY2FjaGUgPSB0aGlzLm1vZHVsZUNhY2hlLmdldChjYWNoZU5hbWUpXG4gICAgICBpZiAoY2FjaGU/LmV4cG9ydHMpXG4gICAgICAgIHJldHVybiBjYWNoZS5leHBvcnRzXG4gICAgICBjb25zdCBjYWNoZUtleSA9IHRvRmlsZVBhdGgoZGVwLCB0aGlzLnJvb3QpXG4gICAgICBjb25zdCBtb2QgPSB0aGlzLm1vZHVsZUNhY2hlLmdldChjYWNoZUtleSk/LmV4cG9ydHMgfHwgYXdhaXQgdGhpcy5yZXF1ZXN0KGRlcClcbiAgICAgIGNvbnN0IGV4cG9ydHMgPSB0aGlzLm1vY2tPYmplY3QobW9kKVxuICAgICAgdGhpcy5lbWl0KCdtb2NrZWQnLCBjYWNoZU5hbWUsIHsgZXhwb3J0cyB9KVxuICAgICAgcmV0dXJuIGV4cG9ydHNcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtb2NrID09PSAnZnVuY3Rpb24nKVxuICAgICAgcmV0dXJuIHRoaXMuY2FsbEZ1bmN0aW9uTW9jayhkZXAsIG1vY2spXG4gICAgaWYgKHR5cGVvZiBtb2NrID09PSAnc3RyaW5nJylcbiAgICAgIGRlcCA9IG1vY2tcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGRlcClcbiAgfVxuXG4gIHB1YmxpYyBjbGVhck1vY2tzKHsgY2xlYXJNb2NrcywgbW9ja1Jlc2V0LCByZXN0b3JlTW9ja3MgfTogeyBjbGVhck1vY2tzPzogYm9vbGVhbjsgbW9ja1Jlc2V0PzogYm9vbGVhbjsgcmVzdG9yZU1vY2tzPzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKCFjbGVhck1vY2tzICYmICFtb2NrUmVzZXQgJiYgIXJlc3RvcmVNb2NrcylcbiAgICAgIHJldHVyblxuXG4gICAgc3BpZXMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgaWYgKHJlc3RvcmVNb2NrcylcbiAgICAgICAgcy5tb2NrUmVzdG9yZSgpXG4gICAgICBlbHNlIGlmIChtb2NrUmVzZXQpXG4gICAgICAgIHMubW9ja1Jlc2V0KClcbiAgICAgIGVsc2UgaWYgKGNsZWFyTW9ja3MpXG4gICAgICAgIHMubW9ja0NsZWFyKClcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIHF1ZXVlTW9jayhpZDogc3RyaW5nLCBpbXBvcnRlcjogc3RyaW5nLCBmYWN0b3J5PzogKCkgPT4gdW5rbm93bikge1xuICAgIHBlbmRpbmdJZHMucHVzaCh7IHR5cGU6ICdtb2NrJywgaWQsIGltcG9ydGVyLCBmYWN0b3J5IH0pXG4gIH1cblxuICBwdWJsaWMgcXVldWVVbm1vY2soaWQ6IHN0cmluZywgaW1wb3J0ZXI6IHN0cmluZykge1xuICAgIHBlbmRpbmdJZHMucHVzaCh7IHR5cGU6ICd1bm1vY2snLCBpZCwgaW1wb3J0ZXIgfSlcbiAgfVxuXG4gIHB1YmxpYyB3aXRoUmVxdWVzdChyZXF1ZXN0OiAoZGVwOiBzdHJpbmcpID0+IHVua25vd24pIHtcbiAgICByZXR1cm4gbmV3IFZpdGVzdE1vY2tlcih0aGlzLm9wdGlvbnMsIHRoaXMubW9kdWxlQ2FjaGUsIHJlcXVlc3QpXG4gIH1cbn1cbiIsImltcG9ydCB7IFZpdGVOb2RlUnVubmVyIH0gZnJvbSAndml0ZS1ub2RlL2NsaWVudCdcbmltcG9ydCB0eXBlIHsgTW9kdWxlQ2FjaGUsIFZpdGVOb2RlUnVubmVyT3B0aW9ucyB9IGZyb20gJ3ZpdGUtbm9kZSdcbmltcG9ydCB0eXBlIHsgU3VpdGVNb2NrcyB9IGZyb20gJy4vbW9ja2VyJ1xuaW1wb3J0IHsgVml0ZXN0TW9ja2VyIH0gZnJvbSAnLi9tb2NrZXInXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZU9wdGlvbnMgZXh0ZW5kcyBWaXRlTm9kZVJ1bm5lck9wdGlvbnMge1xuICBmaWxlczogc3RyaW5nW11cbiAgbW9ja01hcDogU3VpdGVNb2Nrc1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUluVml0ZU5vZGUob3B0aW9uczogRXhlY3V0ZU9wdGlvbnMpIHtcbiAgY29uc3QgcnVubmVyID0gbmV3IFZpdGVzdFJ1bm5lcihvcHRpb25zKVxuXG4gIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXVxuICBmb3IgKGNvbnN0IGZpbGUgb2Ygb3B0aW9ucy5maWxlcylcbiAgICByZXN1bHQucHVzaChhd2FpdCBydW5uZXIuZXhlY3V0ZUZpbGUoZmlsZSkpXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgY2xhc3MgVml0ZXN0UnVubmVyIGV4dGVuZHMgVml0ZU5vZGVSdW5uZXIge1xuICBtb2NrZXI6IFZpdGVzdE1vY2tlclxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcHRpb25zOiBFeGVjdXRlT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpXG4gICAgdGhpcy5tb2NrZXIgPSBuZXcgVml0ZXN0TW9ja2VyKG9wdGlvbnMsIHRoaXMubW9kdWxlQ2FjaGUpXG4gIH1cblxuICBwcmVwYXJlQ29udGV4dChjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IGNvbnRleHQuX192aXRlX3Nzcl9pbXBvcnRfX1xuXG4gICAgY29uc3QgbW9ja2VyID0gdGhpcy5tb2NrZXIud2l0aFJlcXVlc3QocmVxdWVzdClcblxuICAgIG1vY2tlci5vbignbW9ja2VkJywgKGRlcDogc3RyaW5nLCBtb2R1bGU6IFBhcnRpYWw8TW9kdWxlQ2FjaGU+KSA9PiB7XG4gICAgICB0aGlzLnNldENhY2hlKGRlcCwgbW9kdWxlKVxuICAgIH0pXG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihjb250ZXh0LCB7XG4gICAgICBfX3ZpdGVfc3NyX2ltcG9ydF9fOiAoZGVwOiBzdHJpbmcpID0+IG1vY2tlci5yZXF1ZXN0V2l0aE1vY2soZGVwKSxcbiAgICAgIF9fdml0ZV9zc3JfZHluYW1pY19pbXBvcnRfXzogKGRlcDogc3RyaW5nKSA9PiBtb2NrZXIucmVxdWVzdFdpdGhNb2NrKGRlcCksXG5cbiAgICAgIF9fdml0ZXN0X21vY2tlcl9fOiBtb2NrZXIsXG4gICAgfSlcbiAgfVxufVxuIiwiaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBCaXJwY1JldHVybiB9IGZyb20gJ2JpcnBjJ1xuaW1wb3J0IHsgY3JlYXRlQmlycGMgfSBmcm9tICdiaXJwYydcbmltcG9ydCB0eXBlIHsgTW9kdWxlQ2FjaGUsIFJlc29sdmVkQ29uZmlnLCBUZXN0LCBXb3JrZXJDb250ZXh0LCBXb3JrZXJSUEMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGRpc3REaXIgfSBmcm9tICcuLi9jb25zdGFudHMnXG5pbXBvcnQgeyBleGVjdXRlSW5WaXRlTm9kZSB9IGZyb20gJy4uL25vZGUvZXhlY3V0ZSdcbmltcG9ydCB7IHJwYyB9IGZyb20gJy4vcnBjJ1xuXG5sZXQgX3ZpdGVOb2RlOiB7XG4gIHJ1bjogKGZpbGVzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZykgPT4gUHJvbWlzZTx2b2lkPlxuICBjb2xsZWN0OiAoZmlsZXM6IHN0cmluZ1tdLCBjb25maWc6IFJlc29sdmVkQ29uZmlnKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5jb25zdCBtb2R1bGVDYWNoZTogTWFwPHN0cmluZywgTW9kdWxlQ2FjaGU+ID0gbmV3IE1hcCgpXG5jb25zdCBtb2NrTWFwID0ge31cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRWaXRlTm9kZShjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaWYgKF92aXRlTm9kZSlcbiAgICByZXR1cm4gX3ZpdGVOb2RlXG5cbiAgY29uc3QgcHJvY2Vzc0V4aXQgPSBwcm9jZXNzLmV4aXRcblxuICBwcm9jZXNzLm9uKCdiZWZvcmVFeGl0JywgKGNvZGUpID0+IHtcbiAgICBycGMoKS5vbldvcmtlckV4aXQoY29kZSlcbiAgfSlcblxuICBwcm9jZXNzLmV4aXQgPSAoY29kZSA9IHByb2Nlc3MuZXhpdENvZGUgfHwgMCk6IG5ldmVyID0+IHtcbiAgICBycGMoKS5vbldvcmtlckV4aXQoY29kZSlcbiAgICByZXR1cm4gcHJvY2Vzc0V4aXQoY29kZSlcbiAgfVxuXG4gIGNvbnN0IHsgY29uZmlnIH0gPSBjdHhcblxuICBjb25zdCB7IHJ1biwgY29sbGVjdCB9ID0gKGF3YWl0IGV4ZWN1dGVJblZpdGVOb2RlKHtcbiAgICBmaWxlczogW1xuICAgICAgcmVzb2x2ZShkaXN0RGlyLCAnZW50cnkuanMnKSxcbiAgICBdLFxuICAgIGZldGNoTW9kdWxlKGlkKSB7XG4gICAgICByZXR1cm4gcnBjKCkuZmV0Y2goaWQpXG4gICAgfSxcbiAgICByZXNvbHZlSWQoaWQsIGltcG9ydGVyKSB7XG4gICAgICByZXR1cm4gcnBjKCkucmVzb2x2ZUlkKGlkLCBpbXBvcnRlcilcbiAgICB9LFxuICAgIG1vZHVsZUNhY2hlLFxuICAgIG1vY2tNYXAsXG4gICAgaW50ZXJvcERlZmF1bHQ6IGNvbmZpZy5kZXBzLmludGVyb3BEZWZhdWx0ID8/IHRydWUsXG4gICAgcm9vdDogY29uZmlnLnJvb3QsXG4gICAgYmFzZTogY29uZmlnLmJhc2UsXG4gIH0pKVswXVxuXG4gIF92aXRlTm9kZSA9IHsgcnVuLCBjb2xsZWN0IH1cblxuICByZXR1cm4gX3ZpdGVOb2RlXG59XG5cbmZ1bmN0aW9uIGluaXQoY3R4OiBXb3JrZXJDb250ZXh0KSB7XG4gIGlmIChwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fICYmIGN0eC5jb25maWcudGhyZWFkcyAmJiBjdHguY29uZmlnLmlzb2xhdGUpXG4gICAgdGhyb3cgbmV3IEVycm9yKGB3b3JrZXIgZm9yICR7Y3R4LmZpbGVzLmpvaW4oJywnKX0gYWxyZWFkeSBpbml0aWFsaXplZCBieSAke3Byb2Nlc3MuX192aXRlc3Rfd29ya2VyX18uY3R4LmZpbGVzLmpvaW4oJywnKX0uIFRoaXMgaXMgcHJvYmFibHkgYW4gaW50ZXJuYWwgYnVnIG9mIFZpdGVzdC5gKVxuXG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXDAnKVxuXG4gIGNvbnN0IHsgY29uZmlnLCBwb3J0IH0gPSBjdHhcblxuICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fID0ge1xuICAgIGN0eCxcbiAgICBtb2R1bGVDYWNoZSxcbiAgICBjb25maWcsXG4gICAgcnBjOiBjcmVhdGVCaXJwYzxXb3JrZXJSUEM+KFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGV2ZW50TmFtZXM6IFsnb25Vc2VyQ29uc29sZUxvZycsICdvbkZpbmlzaGVkJywgJ29uQ29sbGVjdGVkJywgJ29uV29ya2VyRXhpdCddLFxuICAgICAgICBwb3N0KHYpIHsgcG9ydC5wb3N0TWVzc2FnZSh2KSB9LFxuICAgICAgICBvbihmbikgeyBwb3J0LmFkZExpc3RlbmVyKCdtZXNzYWdlJywgZm4pIH0sXG4gICAgICB9LFxuICAgICksXG4gIH1cblxuICBpZiAoY3R4LmludmFsaWRhdGVzKVxuICAgIGN0eC5pbnZhbGlkYXRlcy5mb3JFYWNoKGkgPT4gbW9kdWxlQ2FjaGUuZGVsZXRlKGkpKVxuICBjdHguZmlsZXMuZm9yRWFjaChpID0+IG1vZHVsZUNhY2hlLmRlbGV0ZShpKSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbGxlY3QoY3R4OiBXb3JrZXJDb250ZXh0KSB7XG4gIGluaXQoY3R4KVxuICBjb25zdCB7IGNvbGxlY3QgfSA9IGF3YWl0IHN0YXJ0Vml0ZU5vZGUoY3R4KVxuICByZXR1cm4gY29sbGVjdChjdHguZmlsZXMsIGN0eC5jb25maWcpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oY3R4OiBXb3JrZXJDb250ZXh0KSB7XG4gIGluaXQoY3R4KVxuICBjb25zdCB7IHJ1biB9ID0gYXdhaXQgc3RhcnRWaXRlTm9kZShjdHgpXG4gIHJldHVybiBydW4oY3R4LmZpbGVzLCBjdHguY29uZmlnKVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIG5hbWVzcGFjZSBOb2RlSlMge1xuICAgIGludGVyZmFjZSBQcm9jZXNzIHtcbiAgICAgIF9fdml0ZXN0X3dvcmtlcl9fOiB7XG4gICAgICAgIGN0eDogV29ya2VyQ29udGV4dFxuICAgICAgICBjb25maWc6IFJlc29sdmVkQ29uZmlnXG4gICAgICAgIHJwYzogQmlycGNSZXR1cm48V29ya2VyUlBDPlxuICAgICAgICBjdXJyZW50PzogVGVzdFxuICAgICAgICBmaWxlcGF0aD86IHN0cmluZ1xuICAgICAgICBtb2R1bGVDYWNoZTogTWFwPHN0cmluZywgTW9kdWxlQ2FjaGU+XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsibm9ybWFsaXplSWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLFNBQVMsV0FBVyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUU7QUFDdEMsRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztBQUNqQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDakw7O0FDQ08sTUFBTSxxQkFBcUIsR0FBRztBQUNyQyxFQUFFLGVBQWUsRUFBRTtBQUNuQixJQUFJLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFO0FBQzNCLElBQUksZ0JBQWdCLEdBQUc7QUFDdkIsTUFBTSxPQUFPO0FBQ2IsUUFBUSxNQUFNLEVBQUUsTUFBTTtBQUN0QixTQUFTO0FBQ1QsUUFBUSxLQUFLLEVBQUUsTUFBTTtBQUNyQixTQUFTO0FBQ1QsT0FBTyxDQUFDO0FBQ1Is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
|
|
342
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvcGF0aC50cyIsIi4uL3NyYy9ub2RlL21vY2tlci50cyIsIi4uL3NyYy9ub2RlL2V4ZWN1dGUudHMiLCIuLi9zcmMvcnVudGltZS93b3JrZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUlkKGlkOiBzdHJpbmcsIGJhc2U/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoYmFzZSAmJiBpZC5zdGFydHNXaXRoKGJhc2UpKVxuICAgIGlkID0gYC8ke2lkLnNsaWNlKGJhc2UubGVuZ3RoKX1gXG5cbiAgcmV0dXJuIGlkXG4gICAgLnJlcGxhY2UoL15cXC9AaWRcXC9fX3gwMF9fLywgJ1xcMCcpIC8vIHZpcnR1YWwgbW9kdWxlcyBzdGFydCB3aXRoIGBcXDBgXG4gICAgLnJlcGxhY2UoL15cXC9AaWRcXC8vLCAnJylcbiAgICAucmVwbGFjZSgvXl9fdml0ZS1icm93c2VyLWV4dGVybmFsOi8sICcnKVxuICAgIC5yZXBsYWNlKC9ebm9kZTovLCAnJylcbiAgICAucmVwbGFjZSgvWz8mXXY9XFx3Ky8sICc/JykgLy8gcmVtb3ZlID92PSBxdWVyeVxuICAgIC5yZXBsYWNlKC9cXD8kLywgJycpIC8vIHJlbW92ZSBlbmQgcXVlcnkgbWFya1xufVxuIiwiaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZGRpclN5bmMgfSBmcm9tICdmcydcbmltcG9ydCB7IGlzTm9kZUJ1aWx0aW4gfSBmcm9tICdtbGx5J1xuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdwYXRoZSdcbmltcG9ydCB0eXBlIHsgTW9kdWxlQ2FjaGUgfSBmcm9tICd2aXRlLW5vZGUnXG5pbXBvcnQgeyB0b0ZpbGVQYXRoIH0gZnJvbSAndml0ZS1ub2RlL3V0aWxzJ1xuaW1wb3J0IHsgc3BpZXMsIHNweU9uIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL2plc3QtbW9jaydcbmltcG9ydCB7IG1lcmdlU2xhc2hlcywgbm9ybWFsaXplSWQgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB0eXBlIHsgRXhlY3V0ZU9wdGlvbnMgfSBmcm9tICcuL2V4ZWN1dGUnXG5cbmV4cG9ydCB0eXBlIFN1aXRlTW9ja3MgPSBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudWxsIHwgKCgpID0+IHVua25vd24pPj5cblxudHlwZSBDYWxsYmFjayA9ICguLi5hcmdzOiBhbnlbXSkgPT4gdW5rbm93blxuXG5pbnRlcmZhY2UgUGVuZGluZ1N1aXRlTW9jayB7XG4gIGlkOiBzdHJpbmdcbiAgaW1wb3J0ZXI6IHN0cmluZ1xuICB0eXBlOiAnbW9jaycgfCAndW5tb2NrJ1xuICBmYWN0b3J5PzogKCkgPT4gdW5rbm93blxufVxuXG5mdW5jdGlvbiBnZXRPYmplY3RUeXBlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodmFsdWUpLnNsaWNlKDgsIC0xKVxufVxuXG5mdW5jdGlvbiBtb2NrUHJvdG90eXBlKHByb3RvOiBhbnkpIHtcbiAgaWYgKCFwcm90bykgcmV0dXJuIG51bGxcblxuICBjb25zdCBuZXdQcm90bzogYW55ID0ge31cblxuICBjb25zdCBwcm90b0Rlc2NyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocHJvdG8pXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gIGZvciAoY29uc3QgZCBpbiBwcm90b0Rlc2NyKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld1Byb3RvLCBkLCBwcm90b0Rlc2NyW2RdKVxuXG4gICAgaWYgKHR5cGVvZiBwcm90b0Rlc2NyW2RdLnZhbHVlID09PSAnZnVuY3Rpb24nKVxuICAgICAgc3B5T24obmV3UHJvdG8sIGQpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7fSlcbiAgfVxuXG4gIHJldHVybiBuZXdQcm90b1xufVxuXG5jb25zdCBwZW5kaW5nSWRzOiBQZW5kaW5nU3VpdGVNb2NrW10gPSBbXVxuXG5leHBvcnQgY2xhc3MgVml0ZXN0TW9ja2VyIHtcbiAgcHJpdmF0ZSByZXF1ZXN0ITogKGRlcDogc3RyaW5nKSA9PiB1bmtub3duXG5cbiAgcHJpdmF0ZSByb290OiBzdHJpbmdcbiAgLy8gcHJpdmF0ZSBtb2NrTWFwOiBTdWl0ZU1vY2tzXG5cbiAgcHJpdmF0ZSBjYWxsYmFja3M6IFJlY29yZDxzdHJpbmcsICgoLi4uYXJnczogYW55W10pID0+IHVua25vd24pW10+ID0ge31cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgb3B0aW9uczogRXhlY3V0ZU9wdGlvbnMsXG4gICAgcHJpdmF0ZSBtb2R1bGVDYWNoZTogTWFwPHN0cmluZywgTW9kdWxlQ2FjaGU+LFxuICAgIHJlcXVlc3Q/OiAoZGVwOiBzdHJpbmcpID0+IHVua25vd24sXG4gICkge1xuICAgIHRoaXMucm9vdCA9IHRoaXMub3B0aW9ucy5yb290XG4gICAgLy8gdGhpcy5tb2NrTWFwID0gb3B0aW9ucy5tb2NrTWFwXG4gICAgdGhpcy5yZXF1ZXN0ID0gcmVxdWVzdCFcbiAgfVxuXG4gIGdldCBtb2NrTWFwKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubW9ja01hcFxuICB9XG5cbiAgcHVibGljIG9uKGV2ZW50OiBzdHJpbmcsIGNiOiBDYWxsYmFjaykge1xuICAgIHRoaXMuY2FsbGJhY2tzW2V2ZW50XSA/Pz0gW11cbiAgICB0aGlzLmNhbGxiYWNrc1tldmVudF0ucHVzaChjYilcbiAgfVxuXG4gIHByaXZhdGUgZW1pdChldmVudDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgICh0aGlzLmNhbGxiYWNrc1tldmVudF0gPz8gW10pLmZvckVhY2goZm4gPT4gZm4oLi4uYXJncykpXG4gIH1cblxuICBwdWJsaWMgZ2V0U3VpdGVGaWxlcGF0aCgpIHtcbiAgICByZXR1cm4gcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXz8uZmlsZXBhdGggfHwgJ2dsb2JhbCdcbiAgfVxuXG4gIHB1YmxpYyBnZXRNb2NrcygpIHtcbiAgICBjb25zdCBzdWl0ZSA9IHRoaXMuZ2V0U3VpdGVGaWxlcGF0aCgpXG4gICAgY29uc3Qgc3VpdGVNb2NrcyA9IHRoaXMubW9ja01hcFtzdWl0ZSB8fCAnJ11cbiAgICBjb25zdCBnbG9iYWxNb2NrcyA9IHRoaXMubW9ja01hcC5nbG9iYWxcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdWl0ZU1vY2tzLFxuICAgICAgLi4uZ2xvYmFsTW9ja3MsXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNvbHZlUGF0aChpZDogc3RyaW5nLCBpbXBvcnRlcjogc3RyaW5nKSB7XG4gICAgY29uc3QgcGF0aCA9IGF3YWl0IHRoaXMub3B0aW9ucy5yZXNvbHZlSWQoaWQsIGltcG9ydGVyKVxuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiBub3JtYWxpemVJZChwYXRoPy5pZCB8fCBpZCksXG4gICAgICBleHRlcm5hbDogcGF0aD8uaWQuaW5jbHVkZXMoJy9ub2RlX21vZHVsZXMvJykgPyBpZCA6IG51bGwsXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNvbHZlTW9ja3MoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocGVuZGluZ0lkcy5tYXAoYXN5bmMobW9jaykgPT4ge1xuICAgICAgY29uc3QgeyBwYXRoLCBleHRlcm5hbCB9ID0gYXdhaXQgdGhpcy5yZXNvbHZlUGF0aChtb2NrLmlkLCBtb2NrLmltcG9ydGVyKVxuICAgICAgaWYgKG1vY2sudHlwZSA9PT0gJ3VubW9jaycpXG4gICAgICAgIHRoaXMudW5tb2NrUGF0aChwYXRoLCBleHRlcm5hbClcbiAgICAgIGlmIChtb2NrLnR5cGUgPT09ICdtb2NrJylcbiAgICAgICAgdGhpcy5tb2NrUGF0aChwYXRoLCBleHRlcm5hbCwgbW9jay5mYWN0b3J5KVxuICAgIH0pKVxuXG4gICAgcGVuZGluZ0lkcy5sZW5ndGggPSAwXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhbGxGdW5jdGlvbk1vY2soZGVwOiBzdHJpbmcsIG1vY2s6ICgpID0+IGFueSkge1xuICAgIGNvbnN0IGNhY2hlTmFtZSA9IGAke2RlcH1fX21vY2tgXG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5tb2R1bGVDYWNoZS5nZXQoY2FjaGVOYW1lKT8uZXhwb3J0c1xuICAgIGlmIChjYWNoZWQpXG4gICAgICByZXR1cm4gY2FjaGVkXG4gICAgY29uc3QgZXhwb3J0cyA9IGF3YWl0IG1vY2soKVxuICAgIHRoaXMuZW1pdCgnbW9ja2VkJywgY2FjaGVOYW1lLCB7IGV4cG9ydHMgfSlcbiAgICByZXR1cm4gZXhwb3J0c1xuICB9XG5cbiAgcHVibGljIGdldERlcGVuZGVuY3lNb2NrKGRlcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TW9ja3MoKVt0aGlzLnJlc29sdmVEZXBlbmRlbmN5KGRlcCldXG4gIH1cblxuICAvLyBucG0gcmVzb2x2ZXMgYXMgL25vZGVfbW9kdWxlcywgYnV0IHdlIHN0b3JlIGFzIC9AZnMvLi4uL25vZGVfbW9kdWxlc1xuICBwdWJsaWMgcmVzb2x2ZURlcGVuZGVuY3koZGVwOiBzdHJpbmcpIHtcbiAgICBpZiAoZGVwLnN0YXJ0c1dpdGgoJy9ub2RlX21vZHVsZXMvJykpXG4gICAgICBkZXAgPSBtZXJnZVNsYXNoZXMoYC9AZnMvJHtqb2luKHRoaXMucm9vdCwgZGVwKX1gKVxuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZUlkKGRlcClcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY3R1YWxQYXRoKHBhdGg6IHN0cmluZywgZXh0ZXJuYWw6IHN0cmluZyB8IG51bGwpIHtcbiAgICBpZiAoZXh0ZXJuYWwpXG4gICAgICByZXR1cm4gbWVyZ2VTbGFzaGVzKGAvQGZzLyR7cGF0aH1gKVxuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZUlkKHBhdGgucmVwbGFjZSh0aGlzLnJvb3QsICcnKSlcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlTW9ja1BhdGgobW9ja1BhdGg6IHN0cmluZywgZXh0ZXJuYWw6IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zdCBwYXRoID0gbm9ybWFsaXplSWQoZXh0ZXJuYWwgfHwgbW9ja1BhdGgpXG5cbiAgICAvLyBpdCdzIGEgbm9kZV9tb2R1bGUgYWxpYXNcbiAgICAvLyBhbGwgbW9ja3Mgc2hvdWxkIGJlIGluc2lkZSA8cm9vdD4vX19tb2Nrc19fXG4gICAgaWYgKGV4dGVybmFsIHx8IGlzTm9kZUJ1aWx0aW4obW9ja1BhdGgpKSB7XG4gICAgICBjb25zdCBtb2NrRGlybmFtZSA9IGRpcm5hbWUocGF0aCkgLy8gZm9yIG5lc3RlZCBtb2NrczogQHZ1ZXVzZS9pbnRlZ3JhdGlvbi91c2VKd3RcbiAgICAgIGNvbnN0IGJhc2VGaWxlbmFtZSA9IGJhc2VuYW1lKHBhdGgpXG4gICAgICBjb25zdCBtb2NrRm9sZGVyID0gcmVzb2x2ZSh0aGlzLnJvb3QsICdfX21vY2tzX18nLCBtb2NrRGlybmFtZSlcblxuICAgICAgaWYgKCFleGlzdHNTeW5jKG1vY2tGb2xkZXIpKSByZXR1cm4gbnVsbFxuXG4gICAgICBjb25zdCBmaWxlcyA9IHJlYWRkaXJTeW5jKG1vY2tGb2xkZXIpXG5cbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBjb25zdCBbYmFzZW5hbWVdID0gZmlsZS5zcGxpdCgnLicpXG4gICAgICAgIGlmIChiYXNlbmFtZSA9PT0gYmFzZUZpbGVuYW1lKVxuICAgICAgICAgIHJldHVybiByZXNvbHZlKG1vY2tGb2xkZXIsIGZpbGUpLnJlcGxhY2UodGhpcy5yb290LCAnJylcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBkaXIgPSBkaXJuYW1lKHBhdGgpXG4gICAgY29uc3QgYmFzZUlkID0gYmFzZW5hbWUocGF0aClcbiAgICBjb25zdCBmdWxsUGF0aCA9IHJlc29sdmUoZGlyLCAnX19tb2Nrc19fJywgYmFzZUlkKVxuICAgIHJldHVybiBleGlzdHNTeW5jKGZ1bGxQYXRoKSA/IGZ1bGxQYXRoLnJlcGxhY2UodGhpcy5yb290LCAnJykgOiBudWxsXG4gIH1cblxuICBwdWJsaWMgbW9ja09iamVjdChvYmo6IGFueSkge1xuICAgIGNvbnN0IHR5cGUgPSBnZXRPYmplY3RUeXBlKG9iailcblxuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpXG4gICAgICByZXR1cm4gW11cbiAgICBlbHNlIGlmICh0eXBlICE9PSAnT2JqZWN0JyAmJiB0eXBlICE9PSAnTW9kdWxlJylcbiAgICAgIHJldHVybiBvYmpcblxuICAgIGNvbnN0IG5ld09iaiA9IHsgLi4ub2JqIH1cblxuICAgIGNvbnN0IHByb3RvID0gbW9ja1Byb3RvdHlwZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSlcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YobmV3T2JqLCBwcm90bylcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgIGZvciAoY29uc3QgayBpbiBvYmopIHtcbiAgICAgIG5ld09ialtrXSA9IHRoaXMubW9ja09iamVjdChvYmpba10pXG4gICAgICBjb25zdCB0eXBlID0gZ2V0T2JqZWN0VHlwZShvYmpba10pXG5cbiAgICAgIGlmICh0eXBlLmluY2x1ZGVzKCdGdW5jdGlvbicpICYmICFvYmpba10uX19pc1NweSkge1xuICAgICAgICBzcHlPbihuZXdPYmosIGspLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7fSlcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09ialtrXSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDAgfSkgLy8gdGlueXNweSByZXRhaW5zIGxlbmd0aCwgYnV0IGplc3QgZG9lc250XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmpcbiAgfVxuXG4gIHB1YmxpYyB1bm1vY2tQYXRoKHBhdGg6IHN0cmluZywgZXh0ZXJuYWw6IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zdCBzdWl0ZWZpbGUgPSB0aGlzLmdldFN1aXRlRmlsZXBhdGgoKVxuXG4gICAgY29uc3QgZnNQYXRoID0gdGhpcy5nZXRBY3R1YWxQYXRoKHBhdGgsIGV4dGVybmFsKVxuXG4gICAgaWYgKHRoaXMubW9ja01hcFtzdWl0ZWZpbGVdPy5bZnNQYXRoXSlcbiAgICAgIGRlbGV0ZSB0aGlzLm1vY2tNYXBbc3VpdGVmaWxlXVtmc1BhdGhdXG4gIH1cblxuICBwdWJsaWMgbW9ja1BhdGgocGF0aDogc3RyaW5nLCBleHRlcm5hbDogc3RyaW5nIHwgbnVsbCwgZmFjdG9yeT86ICgpID0+IGFueSkge1xuICAgIGNvbnN0IHN1aXRlZmlsZSA9IHRoaXMuZ2V0U3VpdGVGaWxlcGF0aCgpXG5cbiAgICBjb25zdCBmc1BhdGggPSB0aGlzLmdldEFjdHVhbFBhdGgocGF0aCwgZXh0ZXJuYWwpXG5cbiAgICB0aGlzLm1vY2tNYXBbc3VpdGVmaWxlXSA/Pz0ge31cbiAgICB0aGlzLm1vY2tNYXBbc3VpdGVmaWxlXVtmc1BhdGhdID0gZmFjdG9yeSB8fCB0aGlzLnJlc29sdmVNb2NrUGF0aChwYXRoLCBleHRlcm5hbClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbXBvcnRBY3R1YWw8VD4oaWQ6IHN0cmluZywgaW1wb3J0ZXI6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHsgcGF0aCwgZXh0ZXJuYWwgfSA9IGF3YWl0IHRoaXMucmVzb2x2ZVBhdGgoaWQsIGltcG9ydGVyKVxuICAgIGNvbnN0IGZzUGF0aCA9IHRoaXMuZ2V0QWN0dWFsUGF0aChwYXRoLCBleHRlcm5hbClcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3QoZnNQYXRoKVxuICAgIHJldHVybiByZXN1bHQgYXMgVFxuICB9XG5cbiAgcHVibGljIGFzeW5jIGltcG9ydE1vY2soaWQ6IHN0cmluZywgaW1wb3J0ZXI6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgeyBwYXRoLCBleHRlcm5hbCB9ID0gYXdhaXQgdGhpcy5yZXNvbHZlUGF0aChpZCwgaW1wb3J0ZXIpXG5cbiAgICBsZXQgbW9jayA9IHRoaXMuZ2V0RGVwZW5kZW5jeU1vY2socGF0aClcblxuICAgIGlmIChtb2NrID09PSB1bmRlZmluZWQpXG4gICAgICBtb2NrID0gdGhpcy5yZXNvbHZlTW9ja1BhdGgocGF0aCwgZXh0ZXJuYWwpXG5cbiAgICBpZiAobW9jayA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZnNQYXRoID0gdGhpcy5nZXRBY3R1YWxQYXRoKHBhdGgsIGV4dGVybmFsKVxuICAgICAgY29uc3QgbW9kID0gYXdhaXQgdGhpcy5yZXF1ZXN0KGZzUGF0aClcbiAgICAgIHJldHVybiB0aGlzLm1vY2tPYmplY3QobW9kKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdmdW5jdGlvbicpXG4gICAgICByZXR1cm4gdGhpcy5jYWxsRnVuY3Rpb25Nb2NrKHBhdGgsIG1vY2spXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdFdpdGhNb2NrKG1vY2spXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdFdpdGhNb2NrKGRlcDogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5yZXNvbHZlTW9ja3MoKVxuXG4gICAgY29uc3QgbW9jayA9IHRoaXMuZ2V0RGVwZW5kZW5jeU1vY2soZGVwKVxuXG4gICAgaWYgKG1vY2sgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNhY2hlTmFtZSA9IGAke2RlcH1fX21vY2tgXG4gICAgICBjb25zdCBjYWNoZSA9IHRoaXMubW9kdWxlQ2FjaGUuZ2V0KGNhY2hlTmFtZSlcbiAgICAgIGlmIChjYWNoZT8uZXhwb3J0cylcbiAgICAgICAgcmV0dXJuIGNhY2hlLmV4cG9ydHNcbiAgICAgIGNvbnN0IGNhY2hlS2V5ID0gdG9GaWxlUGF0aChkZXAsIHRoaXMucm9vdClcbiAgICAgIGNvbnN0IG1vZCA9IHRoaXMubW9kdWxlQ2FjaGUuZ2V0KGNhY2hlS2V5KT8uZXhwb3J0cyB8fCBhd2FpdCB0aGlzLnJlcXVlc3QoZGVwKVxuICAgICAgY29uc3QgZXhwb3J0cyA9IHRoaXMubW9ja09iamVjdChtb2QpXG4gICAgICB0aGlzLmVtaXQoJ21vY2tlZCcsIGNhY2hlTmFtZSwgeyBleHBvcnRzIH0pXG4gICAgICByZXR1cm4gZXhwb3J0c1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdmdW5jdGlvbicpXG4gICAgICByZXR1cm4gdGhpcy5jYWxsRnVuY3Rpb25Nb2NrKGRlcCwgbW9jaylcbiAgICBpZiAodHlwZW9mIG1vY2sgPT09ICdzdHJpbmcnKVxuICAgICAgZGVwID0gbW9ja1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoZGVwKVxuICB9XG5cbiAgcHVibGljIGNsZWFyTW9ja3MoeyBjbGVhck1vY2tzLCBtb2NrUmVzZXQsIHJlc3RvcmVNb2NrcyB9OiB7IGNsZWFyTW9ja3M/OiBib29sZWFuOyBtb2NrUmVzZXQ/OiBib29sZWFuOyByZXN0b3JlTW9ja3M/OiBib29sZWFuIH0pIHtcbiAgICBpZiAoIWNsZWFyTW9ja3MgJiYgIW1vY2tSZXNldCAmJiAhcmVzdG9yZU1vY2tzKVxuICAgICAgcmV0dXJuXG5cbiAgICBzcGllcy5mb3JFYWNoKChzKSA9PiB7XG4gICAgICBpZiAocmVzdG9yZU1vY2tzKVxuICAgICAgICBzLm1vY2tSZXN0b3JlKClcbiAgICAgIGVsc2UgaWYgKG1vY2tSZXNldClcbiAgICAgICAgcy5tb2NrUmVzZXQoKVxuICAgICAgZWxzZSBpZiAoY2xlYXJNb2NrcylcbiAgICAgICAgcy5tb2NrQ2xlYXIoKVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgcXVldWVNb2NrKGlkOiBzdHJpbmcsIGltcG9ydGVyOiBzdHJpbmcsIGZhY3Rvcnk/OiAoKSA9PiB1bmtub3duKSB7XG4gICAgcGVuZGluZ0lkcy5wdXNoKHsgdHlwZTogJ21vY2snLCBpZCwgaW1wb3J0ZXIsIGZhY3RvcnkgfSlcbiAgfVxuXG4gIHB1YmxpYyBxdWV1ZVVubW9jayhpZDogc3RyaW5nLCBpbXBvcnRlcjogc3RyaW5nKSB7XG4gICAgcGVuZGluZ0lkcy5wdXNoKHsgdHlwZTogJ3VubW9jaycsIGlkLCBpbXBvcnRlciB9KVxuICB9XG5cbiAgcHVibGljIHdpdGhSZXF1ZXN0KHJlcXVlc3Q6IChkZXA6IHN0cmluZykgPT4gdW5rbm93bikge1xuICAgIHJldHVybiBuZXcgVml0ZXN0TW9ja2VyKHRoaXMub3B0aW9ucywgdGhpcy5tb2R1bGVDYWNoZSwgcmVxdWVzdClcbiAgfVxufVxuIiwiaW1wb3J0IHsgVml0ZU5vZGVSdW5uZXIgfSBmcm9tICd2aXRlLW5vZGUvY2xpZW50J1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVDYWNoZSwgVml0ZU5vZGVSdW5uZXJPcHRpb25zIH0gZnJvbSAndml0ZS1ub2RlJ1xuaW1wb3J0IHR5cGUgeyBTdWl0ZU1vY2tzIH0gZnJvbSAnLi9tb2NrZXInXG5pbXBvcnQgeyBWaXRlc3RNb2NrZXIgfSBmcm9tICcuL21vY2tlcidcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlT3B0aW9ucyBleHRlbmRzIFZpdGVOb2RlUnVubmVyT3B0aW9ucyB7XG4gIGZpbGVzOiBzdHJpbmdbXVxuICBtb2NrTWFwOiBTdWl0ZU1vY2tzXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlSW5WaXRlTm9kZShvcHRpb25zOiBFeGVjdXRlT3B0aW9ucykge1xuICBjb25zdCBydW5uZXIgPSBuZXcgVml0ZXN0UnVubmVyKG9wdGlvbnMpXG5cbiAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdXG4gIGZvciAoY29uc3QgZmlsZSBvZiBvcHRpb25zLmZpbGVzKVxuICAgIHJlc3VsdC5wdXNoKGF3YWl0IHJ1bm5lci5leGVjdXRlRmlsZShmaWxlKSlcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBjbGFzcyBWaXRlc3RSdW5uZXIgZXh0ZW5kcyBWaXRlTm9kZVJ1bm5lciB7XG4gIG1vY2tlcjogVml0ZXN0TW9ja2VyXG5cbiAgY29uc3RydWN0b3IocHVibGljIG9wdGlvbnM6IEV4ZWN1dGVPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucylcbiAgICB0aGlzLm1vY2tlciA9IG5ldyBWaXRlc3RNb2NrZXIob3B0aW9ucywgdGhpcy5tb2R1bGVDYWNoZSlcbiAgfVxuXG4gIHByZXBhcmVDb250ZXh0KGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gY29udGV4dC5fX3ZpdGVfc3NyX2ltcG9ydF9fXG5cbiAgICBjb25zdCBtb2NrZXIgPSB0aGlzLm1vY2tlci53aXRoUmVxdWVzdChyZXF1ZXN0KVxuXG4gICAgbW9ja2VyLm9uKCdtb2NrZWQnLCAoZGVwOiBzdHJpbmcsIG1vZHVsZTogUGFydGlhbDxNb2R1bGVDYWNoZT4pID0+IHtcbiAgICAgIHRoaXMuc2V0Q2FjaGUoZGVwLCBtb2R1bGUpXG4gICAgfSlcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGNvbnRleHQsIHtcbiAgICAgIF9fdml0ZV9zc3JfaW1wb3J0X186IChkZXA6IHN0cmluZykgPT4gbW9ja2VyLnJlcXVlc3RXaXRoTW9jayhkZXApLFxuICAgICAgX192aXRlX3Nzcl9keW5hbWljX2ltcG9ydF9fOiAoZGVwOiBzdHJpbmcpID0+IG1vY2tlci5yZXF1ZXN0V2l0aE1vY2soZGVwKSxcblxuICAgICAgX192aXRlc3RfbW9ja2VyX186IG1vY2tlcixcbiAgICB9KVxuICB9XG59XG4iLCJpbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IEJpcnBjUmV0dXJuIH0gZnJvbSAnYmlycGMnXG5pbXBvcnQgeyBjcmVhdGVCaXJwYyB9IGZyb20gJ2JpcnBjJ1xuaW1wb3J0IHR5cGUgeyBNb2R1bGVDYWNoZSwgUmVzb2x2ZWRDb25maWcsIFRlc3QsIFdvcmtlckNvbnRleHQsIFdvcmtlclJQQyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZGlzdERpciB9IGZyb20gJy4uL2NvbnN0YW50cydcbmltcG9ydCB7IGV4ZWN1dGVJblZpdGVOb2RlIH0gZnJvbSAnLi4vbm9kZS9leGVjdXRlJ1xuaW1wb3J0IHsgcnBjIH0gZnJvbSAnLi9ycGMnXG5cbmxldCBfdml0ZU5vZGU6IHtcbiAgcnVuOiAoZmlsZXM6IHN0cmluZ1tdLCBjb25maWc6IFJlc29sdmVkQ29uZmlnKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNvbGxlY3Q6IChmaWxlczogc3RyaW5nW10sIGNvbmZpZzogUmVzb2x2ZWRDb25maWcpID0+IFByb21pc2U8dm9pZD5cbn1cbmNvbnN0IG1vZHVsZUNhY2hlOiBNYXA8c3RyaW5nLCBNb2R1bGVDYWNoZT4gPSBuZXcgTWFwKClcbmNvbnN0IG1vY2tNYXAgPSB7fVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFZpdGVOb2RlKGN0eDogV29ya2VyQ29udGV4dCkge1xuICBpZiAoX3ZpdGVOb2RlKVxuICAgIHJldHVybiBfdml0ZU5vZGVcblxuICBjb25zdCBwcm9jZXNzRXhpdCA9IHByb2Nlc3MuZXhpdFxuXG4gIHByb2Nlc3Mub24oJ2JlZm9yZUV4aXQnLCAoY29kZSkgPT4ge1xuICAgIHJwYygpLm9uV29ya2VyRXhpdChjb2RlKVxuICB9KVxuXG4gIHByb2Nlc3MuZXhpdCA9IChjb2RlID0gcHJvY2Vzcy5leGl0Q29kZSB8fCAwKTogbmV2ZXIgPT4ge1xuICAgIHJwYygpLm9uV29ya2VyRXhpdChjb2RlKVxuICAgIHJldHVybiBwcm9jZXNzRXhpdChjb2RlKVxuICB9XG5cbiAgY29uc3QgeyBjb25maWcgfSA9IGN0eFxuXG4gIGNvbnN0IHsgcnVuLCBjb2xsZWN0IH0gPSAoYXdhaXQgZXhlY3V0ZUluVml0ZU5vZGUoe1xuICAgIGZpbGVzOiBbXG4gICAgICByZXNvbHZlKGRpc3REaXIsICdlbnRyeS5qcycpLFxuICAgIF0sXG4gICAgZmV0Y2hNb2R1bGUoaWQpIHtcbiAgICAgIHJldHVybiBycGMoKS5mZXRjaChpZClcbiAgICB9LFxuICAgIHJlc29sdmVJZChpZCwgaW1wb3J0ZXIpIHtcbiAgICAgIHJldHVybiBycGMoKS5yZXNvbHZlSWQoaWQsIGltcG9ydGVyKVxuICAgIH0sXG4gICAgbW9kdWxlQ2FjaGUsXG4gICAgbW9ja01hcCxcbiAgICBpbnRlcm9wRGVmYXVsdDogY29uZmlnLmRlcHMuaW50ZXJvcERlZmF1bHQgPz8gdHJ1ZSxcbiAgICByb290OiBjb25maWcucm9vdCxcbiAgICBiYXNlOiBjb25maWcuYmFzZSxcbiAgfSkpWzBdXG5cbiAgX3ZpdGVOb2RlID0geyBydW4sIGNvbGxlY3QgfVxuXG4gIHJldHVybiBfdml0ZU5vZGVcbn1cblxuZnVuY3Rpb24gaW5pdChjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaWYgKHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18gJiYgY3R4LmNvbmZpZy50aHJlYWRzICYmIGN0eC5jb25maWcuaXNvbGF0ZSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHdvcmtlciBmb3IgJHtjdHguZmlsZXMuam9pbignLCcpfSBhbHJlYWR5IGluaXRpYWxpemVkIGJ5ICR7cHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jdHguZmlsZXMuam9pbignLCcpfS4gVGhpcyBpcyBwcm9iYWJseSBhbiBpbnRlcm5hbCBidWcgb2YgVml0ZXN0LmApXG5cbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xcMCcpXG5cbiAgY29uc3QgeyBjb25maWcsIHBvcnQgfSA9IGN0eFxuXG4gIHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18gPSB7XG4gICAgY3R4LFxuICAgIG1vZHVsZUNhY2hlLFxuICAgIGNvbmZpZyxcbiAgICBycGM6IGNyZWF0ZUJpcnBjPFdvcmtlclJQQz4oXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZXZlbnROYW1lczogWydvblVzZXJDb25zb2xlTG9nJywgJ29uRmluaXNoZWQnLCAnb25Db2xsZWN0ZWQnLCAnb25Xb3JrZXJFeGl0J10sXG4gICAgICAgIHBvc3QodikgeyBwb3J0LnBvc3RNZXNzYWdlKHYpIH0sXG4gICAgICAgIG9uKGZuKSB7IHBvcnQuYWRkTGlzdGVuZXIoJ21lc3NhZ2UnLCBmbikgfSxcbiAgICAgIH0sXG4gICAgKSxcbiAgfVxuXG4gIGlmIChjdHguaW52YWxpZGF0ZXMpXG4gICAgY3R4LmludmFsaWRhdGVzLmZvckVhY2goaSA9PiBtb2R1bGVDYWNoZS5kZWxldGUoaSkpXG4gIGN0eC5maWxlcy5mb3JFYWNoKGkgPT4gbW9kdWxlQ2FjaGUuZGVsZXRlKGkpKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29sbGVjdChjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaW5pdChjdHgpXG4gIGNvbnN0IHsgY29sbGVjdCB9ID0gYXdhaXQgc3RhcnRWaXRlTm9kZShjdHgpXG4gIHJldHVybiBjb2xsZWN0KGN0eC5maWxlcywgY3R4LmNvbmZpZylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bihjdHg6IFdvcmtlckNvbnRleHQpIHtcbiAgaW5pdChjdHgpXG4gIGNvbnN0IHsgcnVuIH0gPSBhd2FpdCBzdGFydFZpdGVOb2RlKGN0eClcbiAgcmV0dXJuIHJ1bihjdHguZmlsZXMsIGN0eC5jb25maWcpXG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgbmFtZXNwYWNlIE5vZGVKUyB7XG4gICAgaW50ZXJmYWNlIFByb2Nlc3Mge1xuICAgICAgX192aXRlc3Rfd29ya2VyX186IHtcbiAgICAgICAgY3R4OiBXb3JrZXJDb250ZXh0XG4gICAgICAgIGNvbmZpZzogUmVzb2x2ZWRDb25maWdcbiAgICAgICAgcnBjOiBCaXJwY1JldHVybjxXb3JrZXJSUEM+XG4gICAgICAgIGN1cnJlbnQ/OiBUZXN0XG4gICAgICAgIGZpbGVwYXRoPzogc3RyaW5nXG4gICAgICAgIG1vZHVsZUNhY2hlOiBNYXA8c3RyaW5nLCBNb2R1bGVDYWNoZT5cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxTQUFTLFdBQVcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFO0FBQ3RDLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxJ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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vitest",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "A blazing fast unit test framework powered by Vite",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vite",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@types/chai": "^4.3.0",
|
|
54
54
|
"@types/chai-subset": "^1.3.3",
|
|
55
|
-
"chai": "^4.3.
|
|
55
|
+
"chai": "^4.3.6",
|
|
56
56
|
"local-pkg": "^0.4.1",
|
|
57
57
|
"tinypool": "^0.1.1",
|
|
58
58
|
"tinyspy": "^0.2.8",
|
|
@@ -60,15 +60,15 @@
|
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@antfu/install-pkg": "^0.1.0",
|
|
63
|
-
"@sinonjs/fake-timers": "^8.0
|
|
63
|
+
"@sinonjs/fake-timers": "^8.1.0",
|
|
64
64
|
"@types/diff": "^5.0.2",
|
|
65
65
|
"@types/jsdom": "^16.2.14",
|
|
66
66
|
"@types/micromatch": "^4.0.2",
|
|
67
67
|
"@types/natural-compare": "^1.4.1",
|
|
68
|
-
"@types/node": "^17.0.
|
|
68
|
+
"@types/node": "^17.0.12",
|
|
69
69
|
"@types/prompts": "^2.4.0",
|
|
70
70
|
"@types/sinonjs__fake-timers": "^8.1.1",
|
|
71
|
-
"@vitest/ui": "0.2.
|
|
71
|
+
"@vitest/ui": "0.2.4",
|
|
72
72
|
"birpc": "^0.1.0",
|
|
73
73
|
"c8": "^7.11.0",
|
|
74
74
|
"cac": "^6.7.12",
|
|
@@ -78,25 +78,26 @@
|
|
|
78
78
|
"execa": "^6.0.0",
|
|
79
79
|
"fast-glob": "^3.2.11",
|
|
80
80
|
"find-up": "^6.2.0",
|
|
81
|
-
"flatted": "^3.2.
|
|
82
|
-
"happy-dom": "^2.
|
|
81
|
+
"flatted": "^3.2.5",
|
|
82
|
+
"happy-dom": "^2.30.1",
|
|
83
83
|
"jsdom": "^19.0.0",
|
|
84
84
|
"log-update": "^5.0.0",
|
|
85
85
|
"magic-string": "^0.25.7",
|
|
86
86
|
"micromatch": "^4.0.4",
|
|
87
|
-
"mlly": "^0.
|
|
87
|
+
"mlly": "^0.4.1",
|
|
88
|
+
"mockdate": "^3.0.5",
|
|
88
89
|
"natural-compare": "^1.4.0",
|
|
89
90
|
"pathe": "^0.2.0",
|
|
90
91
|
"picocolors": "^1.0.0",
|
|
91
92
|
"pkg-types": "^0.3.2",
|
|
92
93
|
"pretty-format": "^27.4.6",
|
|
93
94
|
"prompts": "^2.4.2",
|
|
94
|
-
"rollup": "^2.
|
|
95
|
+
"rollup": "^2.66.1",
|
|
95
96
|
"source-map-js": "^1.0.2",
|
|
96
97
|
"strip-ansi": "^7.0.1",
|
|
97
|
-
"typescript": "^4.5.
|
|
98
|
-
"vite-node": "0.2.
|
|
99
|
-
"ws": "8.4.
|
|
98
|
+
"typescript": "^4.5.5",
|
|
99
|
+
"vite-node": "0.2.4",
|
|
100
|
+
"ws": "^8.4.2"
|
|
100
101
|
},
|
|
101
102
|
"peerDependencies": {
|
|
102
103
|
"@vitest/ui": "*",
|
|
@@ -105,6 +106,9 @@
|
|
|
105
106
|
"jsdom": "*"
|
|
106
107
|
},
|
|
107
108
|
"peerDependenciesMeta": {
|
|
109
|
+
"@vitest/ui": {
|
|
110
|
+
"optional": true
|
|
111
|
+
},
|
|
108
112
|
"c8": {
|
|
109
113
|
"optional": true
|
|
110
114
|
},
|
|
@@ -113,9 +117,6 @@
|
|
|
113
117
|
},
|
|
114
118
|
"jsdom": {
|
|
115
119
|
"optional": true
|
|
116
|
-
},
|
|
117
|
-
"@vitest/ui": {
|
|
118
|
-
"optional": true
|
|
119
120
|
}
|
|
120
121
|
},
|
|
121
122
|
"engines": {
|