@workflow/world-local 4.1.4 → 4.2.0
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/config.js +1 -1
- package/dist/fs.d.ts +7 -3
- package/dist/fs.d.ts.map +1 -1
- package/dist/fs.js +25 -10
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/init.js +1 -1
- package/dist/instrumentObject.js +1 -1
- package/dist/queue.d.ts +2 -2
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +7 -9
- package/dist/storage/events-storage.d.ts.map +1 -1
- package/dist/storage/events-storage.js +29 -11
- package/dist/storage/filters.js +1 -1
- package/dist/storage/helpers.js +1 -1
- package/dist/storage/hooks-storage.js +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/legacy.js +1 -1
- package/dist/storage/runs-storage.js +1 -1
- package/dist/storage/steps-storage.js +1 -1
- package/dist/storage.js +1 -1
- package/dist/streamer.js +1 -1
- package/dist/telemetry.js +1 -1
- package/dist/test-helpers.js +1 -1
- package/dist/util.js +1 -1
- package/package.json +6 -6
- package/dist/config.js.map +0 -1
- package/dist/fs.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init.js.map +0 -1
- package/dist/instrumentObject.js.map +0 -1
- package/dist/queue.js.map +0 -1
- package/dist/storage/events-storage.js.map +0 -1
- package/dist/storage/filters.js.map +0 -1
- package/dist/storage/helpers.js.map +0 -1
- package/dist/storage/hooks-storage.js.map +0 -1
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/legacy.js.map +0 -1
- package/dist/storage/runs-storage.js.map +0 -1
- package/dist/storage/steps-storage.js.map +0 -1
- package/dist/storage.js.map +0 -1
- package/dist/streamer.js.map +0 -1
- package/dist/telemetry.js.map +0 -1
- package/dist/test-helpers.js.map +0 -1
- package/dist/util.js.map +0 -1
package/dist/config.js
CHANGED
|
@@ -41,4 +41,4 @@ export async function resolveBaseUrl(config) {
|
|
|
41
41
|
}
|
|
42
42
|
throw new Error('Unable to resolve base URL for workflow queue.');
|
|
43
43
|
}
|
|
44
|
-
//# sourceMappingURL=
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtJQUM3QixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksZ0JBQWdCLENBQUM7QUFDakUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxDQUFDO0FBRWpELE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFO0lBQzdCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQztBQUM3QyxDQUFDLENBQUM7QUEwQkYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBUyxHQUFHLEVBQUU7SUFDdEMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQyxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBRXBDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDOUIsQ0FBQyxDQUFDLENBQUM7QUFFSDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQUMsTUFBdUI7SUFDMUQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsMkVBQTJFO0lBQzNFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDcEMsT0FBTyxvQkFBb0IsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsT0FBTyxvQkFBb0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxlQUFlLEVBQUUsQ0FBQztJQUM3QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sb0JBQW9CLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFdvcmtmbG93UG9ydCB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9nZXQtcG9ydCc7XG5pbXBvcnQgeyBvbmNlIH0gZnJvbSAnLi91dGlsLmpzJztcblxuY29uc3QgZ2V0RGF0YURpckZyb21FbnYgPSAoKSA9PiB7XG4gIHJldHVybiBwcm9jZXNzLmVudi5XT1JLRkxPV19MT0NBTF9EQVRBX0RJUiB8fCAnLndvcmtmbG93LWRhdGEnO1xufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVTT0xWRV9EQVRBX09QVElPTiA9ICdhbGwnO1xuXG5jb25zdCBnZXRCYXNlVXJsRnJvbUVudiA9ICgpID0+IHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMO1xufTtcblxuZXhwb3J0IHR5cGUgQ29uZmlnID0ge1xuICBkYXRhRGlyOiBzdHJpbmc7XG4gIHBvcnQ/OiBudW1iZXI7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHN0YXJ0KCkgc2hvdWxkIHJlLWVucXVldWUgcGVuZGluZy9ydW5uaW5nIHJ1bnMgZnJvbSBzdG9yYWdlLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLiBUZXN0IGhhcm5lc3NlcyB0aGF0IGFsd2F5cyBzdGFydCBmcm9tIGEgY2xlYW4gc2xhdGUgY2FuXG4gICAqIGRpc2FibGUgcmVjb3ZlcnkgdG8gYXZvaWQgcmVwbGF5aW5nIHN0YWxlIHJ1bnMuXG4gICAqL1xuICByZWNvdmVyQWN0aXZlUnVucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25hbCB0YWcgdG8gc2NvcGUgZmlsZXN5c3RlbSBvcGVyYXRpb25zLlxuICAgKiBXaGVuIHNldCwgZmlsZXMgYXJlIHdyaXR0ZW4gYXMgYHtpZH0ue3RhZ30uanNvbmAgYW5kIGBjbGVhcigpYCBvbmx5IGRlbGV0ZXNcbiAgICogZmlsZXMgbWF0Y2hpbmcgdGhpcyB0YWcuIFVzZWQgYnkgdml0ZXN0IHRvIGlzb2xhdGUgdGVzdCBkYXRhIGluIHRoZSBzaGFyZWRcbiAgICogYC53b3JrZmxvdy1kYXRhYCBkaXJlY3RvcnkuXG4gICAqL1xuICB0YWc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgZmx1c2ggaW50ZXJ2YWwgKGluIG1zKSBmb3IgYnVmZmVyZWQgc3RyZWFtIHdyaXRlcy5cbiAgICogRGVmYXVsdCBpcyAxMG1zLiBTZXQgdG8gMCBmb3IgaW1tZWRpYXRlIGZsdXNoaW5nLlxuICAgKi9cbiAgc3RyZWFtRmx1c2hJbnRlcnZhbE1zPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbmZpZyA9IG9uY2U8Q29uZmlnPigoKSA9PiB7XG4gIGNvbnN0IGRhdGFEaXIgPSBnZXREYXRhRGlyRnJvbUVudigpO1xuICBjb25zdCBiYXNlVXJsID0gZ2V0QmFzZVVybEZyb21FbnYoKTtcblxuICByZXR1cm4geyBkYXRhRGlyLCBiYXNlVXJsIH07XG59KTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgYmFzZSBVUkwgZm9yIHF1ZXVlIHJlcXVlc3RzIGZvbGxvd2luZyB0aGUgcHJpb3JpdHkgb3JkZXI6XG4gKiAxLiBjb25maWcuYmFzZVVybCAoaGlnaGVzdCBwcmlvcml0eSAtIGZ1bGwgb3ZlcnJpZGUgZnJvbSBhcmdzKVxuICogMi4gV09SS0ZMT1dfTE9DQUxfQkFTRV9VUkwgZW52IHZhciAoY2hlY2tlZCBkaXJlY3RseSB0byBoYW5kbGUgbGF0ZSBlbnYgdmFyIHNldHRpbmcpXG4gKiAzLiBjb25maWcucG9ydCAoZXhwbGljaXQgcG9ydCBvdmVycmlkZSBmcm9tIGFyZ3MpXG4gKiA0LiBQT1JUIGVudiB2YXIgKGV4cGxpY2l0IGNvbmZpZ3VyYXRpb24pXG4gKiA1LiBBdXRvLWRldGVjdGVkIHBvcnQgdmlhIGdldFBvcnQgKGRldGVjdCBhY3R1YWwgbGlzdGVuaW5nIHBvcnQpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlQmFzZVVybChjb25maWc6IFBhcnRpYWw8Q29uZmlnPik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmIChjb25maWcuYmFzZVVybCkge1xuICAgIHJldHVybiBjb25maWcuYmFzZVVybDtcbiAgfVxuXG4gIC8vIENoZWNrIGVudiB2YXIgZGlyZWN0bHkgaW4gY2FzZSBpdCB3YXMgc2V0IGFmdGVyIHRoZSBjb25maWcgd2FzIGNhY2hlZFxuICAvLyBUaGlzIGlzIGltcG9ydGFudCBmb3IgQ0xJIHRvb2xzIHRoYXQgc2V0IHRoZSBlbnYgdmFyIGFmdGVyIG1vZHVsZSBpbXBvcnRcbiAgaWYgKHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjb25maWcucG9ydCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtjb25maWcucG9ydH1gO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52LlBPUlQpIHtcbiAgICByZXR1cm4gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwcm9jZXNzLmVudi5QT1JUfWA7XG4gIH1cblxuICBjb25zdCBkZXRlY3RlZFBvcnQgPSBhd2FpdCBnZXRXb3JrZmxvd1BvcnQoKTtcbiAgaWYgKGRldGVjdGVkUG9ydCkge1xuICAgIHJldHVybiBgaHR0cDovL2xvY2FsaG9zdDoke2RldGVjdGVkUG9ydH1gO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcmVzb2x2ZSBiYXNlIFVSTCBmb3Igd29ya2Zsb3cgcXVldWUuJyk7XG59XG4iXX0=
|
package/dist/fs.d.ts
CHANGED
|
@@ -115,9 +115,13 @@ export declare function readBuffer(filePath: string): Promise<Buffer>;
|
|
|
115
115
|
export declare function readFirstByte(filePath: string): Promise<number | undefined>;
|
|
116
116
|
export declare function deleteJSON(filePath: string): Promise<void>;
|
|
117
117
|
/**
|
|
118
|
-
* Atomically
|
|
119
|
-
*
|
|
120
|
-
*
|
|
118
|
+
* Atomically publish a fully-written file without overwriting an existing one.
|
|
119
|
+
*
|
|
120
|
+
* Writing directly with O_CREAT | O_EXCL makes the destination visible before
|
|
121
|
+
* its contents are complete, so concurrent readers can observe a partial file.
|
|
122
|
+
* Instead, write to a unique file in the same directory, then hard-link it into
|
|
123
|
+
* place. Creating the link is atomic and fails with EEXIST if another writer
|
|
124
|
+
* published the destination first.
|
|
121
125
|
*/
|
|
122
126
|
export declare function writeExclusive(filePath: string, data: string): Promise<boolean>;
|
|
123
127
|
export declare function listJSONFiles(dirPath: string): Promise<string[]>;
|
package/dist/fs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"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"}
|
package/dist/fs.js
CHANGED
|
@@ -324,21 +324,36 @@ export async function deleteJSON(filePath) {
|
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
/**
|
|
327
|
-
* Atomically
|
|
328
|
-
*
|
|
329
|
-
*
|
|
327
|
+
* Atomically publish a fully-written file without overwriting an existing one.
|
|
328
|
+
*
|
|
329
|
+
* Writing directly with O_CREAT | O_EXCL makes the destination visible before
|
|
330
|
+
* its contents are complete, so concurrent readers can observe a partial file.
|
|
331
|
+
* Instead, write to a unique file in the same directory, then hard-link it into
|
|
332
|
+
* place. Creating the link is atomic and fails with EEXIST if another writer
|
|
333
|
+
* published the destination first.
|
|
330
334
|
*/
|
|
331
335
|
export async function writeExclusive(filePath, data) {
|
|
332
336
|
await ensureDir(path.dirname(filePath));
|
|
337
|
+
const tempPath = `${filePath}.tmp.${ulid()}`;
|
|
338
|
+
let tempFileCreated = false;
|
|
333
339
|
try {
|
|
334
|
-
await fs.writeFile(
|
|
335
|
-
|
|
340
|
+
await fs.writeFile(tempPath, data, { flag: 'wx' });
|
|
341
|
+
tempFileCreated = true;
|
|
342
|
+
try {
|
|
343
|
+
await withWindowsRetry(() => fs.link(tempPath, filePath));
|
|
344
|
+
return true;
|
|
345
|
+
}
|
|
346
|
+
catch (error) {
|
|
347
|
+
if (error.code === 'EEXIST') {
|
|
348
|
+
return false;
|
|
349
|
+
}
|
|
350
|
+
throw error;
|
|
351
|
+
}
|
|
336
352
|
}
|
|
337
|
-
|
|
338
|
-
if (
|
|
339
|
-
|
|
353
|
+
finally {
|
|
354
|
+
if (tempFileCreated) {
|
|
355
|
+
await withWindowsRetry(() => fs.unlink(tempPath), 3).catch(() => { });
|
|
340
356
|
}
|
|
341
|
-
throw error;
|
|
342
357
|
}
|
|
343
358
|
}
|
|
344
359
|
export async function listJSONFiles(dirPath) {
|
|
@@ -500,4 +515,4 @@ export async function paginatedFileSystemQuery(config) {
|
|
|
500
515
|
hasMore,
|
|
501
516
|
};
|
|
502
517
|
}
|
|
503
|
-
//# sourceMappingURL=fs.js.map
|
|
518
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRW5EOzs7OztHQUtHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFjO0lBQ3RDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ2YsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQUN6RCxZQUFZLElBQVksRUFBRSxLQUFhO1FBQ3JDLEtBQUssQ0FDSCxVQUFVLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsNkRBQTZELENBQ3hHLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7SUFF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RUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ2hFLE1BQU0sVUFBVSxHQUNkLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNkLENBQUMsQ0FBQyxZQUFZLENBQ1YsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUNqQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNqQztRQUNILENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFWCxPQUFPO1FBQ0wsSUFBSSxFQUFFLEtBQUs7UUFDWCxNQUFNLEVBQUUsVUFBVTtRQUNsQixPQUFPO0tBQ1IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IEVudGl0eUNvbmZsaWN0RXJyb3IsIFdvcmtmbG93V29ybGRFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBQYWdpbmF0ZWRSZXNwb25zZSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBtb25vdG9uaWNGYWN0b3J5IH0gZnJvbSAndWxpZCc7XG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcblxuY29uc3QgdWxpZCA9IG1vbm90b25pY0ZhY3RvcnkoKCkgPT4gTWF0aC5yYW5kb20oKSk7XG5cbi8qKlxuICogVHJ1bmNhdGUgYSBwb3NzaWJseS11bnRydXN0ZWQgdmFsdWUgZm9yIGluY2x1c2lvbiBpbiBhbiBlcnJvciBtZXNzYWdlLlxuICogS2VlcHMgZXJyb3Igb3V0cHV0IGFjdGlvbmFibGUgZm9yIGRldmVsb3BlcnMgaW4gZGV2IG1vZGUgd2hpbGUgbGltaXRpbmdcbiAqIHRoZSBhbW91bnQgb2YgYXR0YWNrZXItY29udHJvbGxlZCBkYXRhIHJlZmxlY3RlZCBiYWNrIGlmIGEgYHdvcmxkLWxvY2FsYFxuICogYmFja2VuZCBpcyBldmVyIHJ1biBpbiBhIGNvbnRleHQgdGhhdCBzdXJmYWNlcyB0aGVzZSBtZXNzYWdlcyB0byBjbGllbnRzLlxuICovXG5mdW5jdGlvbiB0cnVuY2F0ZUZvckVycm9yKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgY29uc3QgcyA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IFN0cmluZyh2YWx1ZSk7XG4gIGNvbnN0IE1BWCA9IDQ4O1xuICByZXR1cm4gcy5sZW5ndGggPiBNQVggPyBgJHtzLnNsaWNlKDAsIE1BWCl94oCmYCA6IHM7XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSBjYWxsZXItc3VwcGxpZWQgZW50aXR5IElEIGNvbnRhaW5zIGNoYXJhY3RlcnMgdGhhdCB3b3VsZFxuICogZXNjYXBlIHRoZSBzdG9yYWdlIHJvb3QgKHBhdGggdHJhdmVyc2FsKSBvciBvdGhlcndpc2UgcHJvZHVjZSBhbiB1bnNhZmVcbiAqIGZpbGVuYW1lLiBFeHRlbmRzIHtAbGluayBXb3JrZmxvd1dvcmxkRXJyb3J9IHNvIHRoZSBwbGF0Zm9ybSdzIHN0YW5kYXJkXG4gKiBlcnJvci10by1IVFRQIG1hcHBpbmcgaGFuZGxlcyBpdCBhbG9uZ3NpZGUgb3RoZXIgd29ybGQtbGF5ZXIgZXJyb3JzLlxuICovXG5leHBvcnQgY2xhc3MgVW5zYWZlRW50aXR5SWRFcnJvciBleHRlbmRzIFdvcmtmbG93V29ybGRFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGtpbmQ6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKFxuICAgICAgYFVuc2FmZSAke2tpbmR9IFwiJHt0cnVuY2F0ZUZvckVycm9yKHZhbHVlKX1cIjogbXVzdCBub3QgYmUgZW1wdHksIGNvbnRhaW4gXCIuXCIsIFwiL1wiLCBcIlxcXFxcIiwgb3IgbnVsbCBieXRlc2BcbiAgICApO1xuICAgIHRoaXMubmFtZSA9ICdVbnNhZmVFbnRpdHlJZEVycm9yJztcbiAgfVxuXG4gIHN0YXRpYyBpcyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFVuc2FmZUVudGl0eUlkRXJyb3Ige1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVycm9yICYmIHZhbHVlLm5hbWUgPT09ICdVbnNhZmVFbnRpdHlJZEVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoYXQgYSBzdHJpbmcgaXMgc2FmZSB0byBlbWJlZCBpbiBhIGZpbGVzeXN0ZW0gcGF0aCBhcyBhIHNpbmdsZVxuICogcGF0aCBjb21wb25lbnQuIFJlamVjdHMgdmFsdWVzIHRoYXQgYXJlOlxuICogICAtIGVtcHR5XG4gKiAgIC0gc3RhcnRpbmcgd2l0aCBgLmAgKGJsb2NrcyBgLmAsIGAuLmAsIGAubG9ja3NgLCBgLnRtcGAsIGFuZCBvdGhlclxuICogICAgIGhpZGRlbiBvciByZXNlcnZlZCBmaWxlbmFtZXMpXG4gKiAgIC0gY29udGFpbmluZyBgLmAgKHdvdWxkIGNvbGxpZGUgd2l0aCB0aGUgYC50YWdgIC8gYC5qc29uYCBzdWZmaXggdGhlXG4gKiAgICAgdGFnZ2luZyBsb2dpYyBzdHJpcHMgZnJvbSBmaWxlbmFtZXM7IHNlZSB7QGxpbmsgc3RyaXBUYWd9IC9cbiAqICAgICB7QGxpbmsgZ2V0T2JqZWN0Q3JlYXRlZEF0fSlcbiAqICAgLSBjb250YWluaW5nIGAvYCwgYFxcYCwgb3IgYSBOVUwgYnl0ZVxuICpcbiAqIFRoaXMgaXMgdGhlIHByaW1hcnkgZGVmZW5zZSBhZ2FpbnN0IHBhdGgtdHJhdmVyc2FsIGF0dGFja3Mgd2hlcmUgYVxuICogcmVxdWVzdCBib2R5IHN1cHBsaWVzIGEgYHJ1bklkYCAvIGBzdGVwSWRgIC8gYGNvcnJlbGF0aW9uSWRgIGNvbnRhaW5pbmdcbiAqIGAuLi9gIHNlcXVlbmNlcyB0byByZWFkIG9yIHdyaXRlIGZpbGVzIG91dHNpZGUgdGhlIHN0b3JhZ2Ugcm9vdC5cbiAqIHtAbGluayByZXNvbHZlV2l0aGluQmFzZX0gcHJvdmlkZXMgYSBiZWx0LWFuZC1zdXNwZW5kZXJzIGNvbnRhaW5tZW50XG4gKiBjaGVjayBhdCB0aGUgcG9pbnQgb2YgYHBhdGguam9pbmAgZm9yIGRlZmVuc2UgaW4gZGVwdGguXG4gKlxuICogQHBhcmFtIGtpbmQgLSBIdW1hbi1yZWFkYWJsZSBsYWJlbCB1c2VkIGluIHRoZSBlcnJvciBtZXNzYWdlIChlLmcuIFwicnVuSWRcIilcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZTsgdGhyb3dzIHtAbGluayBVbnNhZmVFbnRpdHlJZEVycm9yfVxuICogICBpZiB0aGUgdmFsdWUgaXMgbm90IHNhZmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRTYWZlRW50aXR5SWQoa2luZDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChcbiAgICB2YWx1ZS5sZW5ndGggPT09IDAgfHxcbiAgICB2YWx1ZS5zdGFydHNXaXRoKCcuJykgfHxcbiAgICB2YWx1ZS5pbmNsdWRlcygnLycpIHx8XG4gICAgdmFsdWUuaW5jbHVkZXMoJ1xcXFwnKSB8fFxuICAgIHZhbHVlLmluY2x1ZGVzKCdcXDAnKSB8fFxuICAgIHZhbHVlLmluY2x1ZGVzKCcuJylcbiAgKSB7XG4gICAgdGhyb3cgbmV3IFVuc2FmZUVudGl0eUlkRXJyb3Ioa2luZCwgdmFsdWUpO1xuICB9XG59XG5cbi8qKlxuICogSm9pbiBgYmFzZWRpcmAgd2l0aCBhbiBlbnRpdHktcmVsYXRpdmUgcGF0aCBhbmQgYXNzZXJ0IHRoZSByZXN1bHQgc3RheXNcbiAqIGluc2lkZSBgYmFzZWRpcmAuIENvbXBsZW1lbnRzIHtAbGluayBhc3NlcnRTYWZlRW50aXR5SWR9OiBwZXItZW50cnktcG9pbnRcbiAqIHZhbGlkYXRpb24gaXMgdGhlIHByaW1hcnkgZGVmZW5zZSwgYW5kIHRoaXMgZmluYWwgY2hlY2sgY2F0Y2hlcyBhbnkgcGF0aFxuICogZXNjYXBlIHRoYXQgc2xpcHBlZCBwYXN0IChlLmcuIGEgbmV3IGNhbGwgc2l0ZSB0aGF0IGZvcmdvdCB0byB2YWxpZGF0ZSxcbiAqIG9yIGFuIHVudXN1YWwgY2hhcmFjdGVyIGNvbWJpbmF0aW9uIG9uIGEgZnV0dXJlIGZpbGVzeXN0ZW0pLiBUaHJvd3NcbiAqIHtAbGluayBVbnNhZmVFbnRpdHlJZEVycm9yfSBpZiB0aGUgam9pbmVkIHBhdGggZXNjYXBlcyBgYmFzZWRpcmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlV2l0aGluQmFzZShcbiAgYmFzZWRpcjogc3RyaW5nLFxuICAuLi5zZWdtZW50czogc3RyaW5nW11cbik6IHN0cmluZyB7XG4gIGNvbnN0IHJlc29sdmVkQmFzZSA9IHBhdGgucmVzb2x2ZShiYXNlZGlyKTtcbiAgY29uc3Qgam9pbmVkID0gcGF0aC5yZXNvbHZlKGJhc2VkaXIsIC4uLnNlZ21lbnRzKTtcbiAgaWYgKGpvaW5lZCAhPT0gcmVzb2x2ZWRCYXNlICYmICFqb2luZWQuc3RhcnRzV2l0aChyZXNvbHZlZEJhc2UgKyBwYXRoLnNlcCkpIHtcbiAgICB0aHJvdyBuZXcgVW5zYWZlRW50aXR5SWRFcnJvcigncGF0aCcsIHNlZ21lbnRzLmpvaW4oJy8nKSk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cblxuY29uc3QgaXNXaW5kb3dzID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJztcblxuLyoqXG4gKiBFeGVjdXRlIGEgZmlsZXN5c3RlbSBvcGVyYXRpb24gd2l0aCByZXRyeSBsb2dpYyBvbiBXaW5kb3dzLlxuICogT24gV2luZG93cywgZmlsZSBvcGVyYXRpb25zIGNhbiBmYWlsIHdpdGggRVBFUk0vRUJVU1kvRUFDQ0VTIHdoZW4gZmlsZXNcbiAqIGFyZSBicmllZmx5IGxvY2tlZCBieSBhbm90aGVyIHByb2Nlc3Mgb3IgYW50aXZpcnVzLiBUaGlzIHdyYXBwZXIgYWRkc1xuICogZXhwb25lbnRpYWwgYmFja29mZiByZXRyeSBsb2dpYy4gT24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLCBleGVjdXRlcyBkaXJlY3RseS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gd2l0aFdpbmRvd3NSZXRyeTxUPihcbiAgZm46ICgpID0+IFByb21pc2U8VD4sXG4gIG1heFJldHJpZXMgPSA1XG4pOiBQcm9taXNlPFQ+IHtcbiAgaWYgKCFpc1dpbmRvd3MpIHJldHVybiBmbigpO1xuXG4gIGNvbnN0IHJldHJ5YWJsZUVycm9ycyA9IFsnRVBFUk0nLCAnRUJVU1knLCAnRUFDQ0VTJ107XG4gIGNvbnN0IGJhc2VEZWxheU1zID0gMTA7XG5cbiAgZm9yIChsZXQgYXR0ZW1wdCA9IDA7IGF0dGVtcHQgPD0gbWF4UmV0cmllczsgYXR0ZW1wdCsrKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnN0IGlzUmV0cnlhYmxlID1cbiAgICAgICAgYXR0ZW1wdCA8IG1heFJldHJpZXMgJiYgcmV0cnlhYmxlRXJyb3JzLmluY2x1ZGVzKGVycm9yLmNvZGUpO1xuICAgICAgaWYgKCFpc1JldHJ5YWJsZSkgdGhyb3cgZXJyb3I7XG4gICAgICAvLyBFeHBvbmVudGlhbCBiYWNrb2ZmIHdpdGggaml0dGVyXG4gICAgICBjb25zdCBkZWxheSA9IGJhc2VEZWxheU1zICogMiAqKiBhdHRlbXB0ICsgTWF0aC5yYW5kb20oKSAqIGJhc2VEZWxheU1zO1xuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZGVsYXkpKTtcbiAgICB9XG4gIH1cbiAgLy8gVHlwZVNjcmlwdDogdW5yZWFjaGFibGUsIGJ1dCBzYXRpc2ZpZXMgcmV0dXJuIHR5cGVcbiAgdGhyb3cgbmV3IEVycm9yKCdSZXRyeSBsb29wIGV4aXRlZCB1bmV4cGVjdGVkbHknKTtcbn1cblxuLy8gSW4tbWVtb3J5IGNhY2hlIG9mIGNyZWF0ZWQgZmlsZXMgdG8gYXZvaWQgZXhwZW5zaXZlIGZzLmFjY2VzcygpIGNhbGxzXG4vLyBUaGlzIGlzIHNhZmUgYmVjYXVzZSB3ZSBvbmx5IHdyaXRlIG9uY2UgcGVyIGZpbGUgcGF0aCAobm8gb3ZlcndyaXRlcyB3aXRob3V0IGV4cGxpY2l0IGZsYWcpXG5jb25zdCBjcmVhdGVkRmlsZXNDYWNoZSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4vKipcbiAqIENsZWFyIHRoZSBjcmVhdGVkIGZpbGVzIGNhY2hlLiBVc2VmdWwgZm9yIHRlc3Rpbmcgb3Igd2hlbiBmaWxlcyBhcmUgZGVsZXRlZCBleHRlcm5hbGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJDcmVhdGVkRmlsZXNDYWNoZSgpOiB2b2lkIHtcbiAgY3JlYXRlZEZpbGVzQ2FjaGUuY2xlYXIoKTtcbn1cblxuZXhwb3J0IHsgdWxpZFRvRGF0ZSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5cbi8qKlxuICogUmVnZXggbWF0Y2hpbmcgYSB0YWcgc3VmZml4IG9uIGEgZmlsZUlkIChhZnRlciBgLmpzb25gIGhhcyBiZWVuIHN0cmlwcGVkKS5cbiAqIEUuZy4sIGB3cnVuX0FCQy52aXRlc3QtMGAg4oaSIHRoZSBgLnZpdGVzdC0wYCBwYXJ0LlxuICogVGFncyBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjb250YWluIGFscGhhbnVtZXJpYyBjaGFycyBhbmQgaHlwaGVucy5cbiAqIEVudGl0eSBJRHMgKFVMSURzLCBzdGVwX04sIGV0Yy4pIG5ldmVyIGNvbnRhaW4gZG90cywgc28gdGhlIGZpcnN0IGRvdFxuICogYWx3YXlzIG1hcmtzIHRoZSB0YWcgYm91bmRhcnkuXG4gKi9cbmNvbnN0IFRBR19QQVRURVJOID0gL1xcLlthLXpBLVpdW2EtekEtWjAtOS1dKiQvO1xuXG4vKipcbiAqIFN0cmlwIGEgdGFnIHN1ZmZpeCBmcm9tIGEgZmlsZUlkLlxuICogYHdydW5fQUJDLnZpdGVzdC0wYCDihpIgYHdydW5fQUJDYFxuICogYHdydW5fQUJDYCDihpIgYHdydW5fQUJDYCAobm8tb3AgaWYgbm8gdGFnKVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBUYWcoZmlsZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZmlsZUlkLnJlcGxhY2UoVEFHX1BBVFRFUk4sICcnKTtcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgZmlsZUlkIGJlbG9uZ3MgdG8gYSBzcGVjaWZpYyB0YWcuXG4gKiBgd3J1bl9BQkMudml0ZXN0LTBgIGJlbG9uZ3MgdG8gYHZpdGVzdC0wYC5cbiAqIFVudGFnZ2VkIGZpbGVJZHMgbmV2ZXIgbWF0Y2ggYSB0YWctc2NvcGVkIGxvb2t1cC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1RhZyhmaWxlSWQ6IHN0cmluZywgdGFnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZpbGVJZC5lbmRzV2l0aChgLiR7dGFnfWApO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBmaWxlIHBhdGggZm9yIGFuIGVudGl0eSwgd2l0aCBvcHRpb25hbCB0YWcgZW1iZWRkZWQgaW4gdGhlIGZpbGVuYW1lLlxuICogYHRhZ2dlZFBhdGgoJy9kYXRhJywgJ3J1bnMnLCAnd3J1bl9BQkMnLCAndml0ZXN0LTAnKWAg4oaSIGAvZGF0YS9ydW5zL3dydW5fQUJDLnZpdGVzdC0wLmpzb25gXG4gKiBgdGFnZ2VkUGF0aCgnL2RhdGEnLCAncnVucycsICd3cnVuX0FCQycpYCDihpIgYC9kYXRhL3J1bnMvd3J1bl9BQkMuanNvbmBcbiAqXG4gKiBUaGUgYGZpbGVJZGAgYW5kIGB0YWdgIGFyZSB2YWxpZGF0ZWQgd2l0aCB7QGxpbmsgYXNzZXJ0U2FmZUVudGl0eUlkfSBhbmRcbiAqIHRoZSByZXN1bHQgaXMgY29udGFpbm1lbnQtY2hlY2tlZCB3aXRoIHtAbGluayByZXNvbHZlV2l0aGluQmFzZX0gdG9cbiAqIHByZXZlbnQgcGF0aC10cmF2ZXJzYWwgYXR0YWNrcyB3aGVuIHZhbHVlcyBhcmUgZGVyaXZlZCBmcm9tIHVudHJ1c3RlZFxuICogcmVxdWVzdCBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRhZ2dlZFBhdGgoXG4gIGJhc2VkaXI6IHN0cmluZyxcbiAgZW50aXR5RGlyOiBzdHJpbmcsXG4gIGZpbGVJZDogc3RyaW5nLFxuICB0YWc/OiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGFzc2VydFNhZmVFbnRpdHlJZCgnZmlsZUlkJywgZmlsZUlkKTtcbiAgaWYgKHRhZyAhPT0gdW5kZWZpbmVkKSBhc3NlcnRTYWZlRW50aXR5SWQoJ3RhZycsIHRhZyk7XG4gIGNvbnN0IGZpbGVuYW1lID0gdGFnID8gYCR7ZmlsZUlkfS4ke3RhZ30uanNvbmAgOiBgJHtmaWxlSWR9Lmpzb25gO1xuICByZXR1cm4gcmVzb2x2ZVdpdGhpbkJhc2UoYmFzZWRpciwgZW50aXR5RGlyLCBmaWxlbmFtZSk7XG59XG5cbi8qKlxuICogUmVhZCBhIEpTT04gZW50aXR5IHdpdGggdGFnZ2VkIGZhbGxiYWNrLlxuICogV2hlbiBhIHRhZyBpcyBzZXQsIHRyaWVzIHRoZSB0YWdnZWQgcGF0aCBmaXJzdCwgdGhlbiBmYWxscyBiYWNrIHRvIHRoZVxuICogdW50YWdnZWQgcGF0aCAoc28gYSB0YWdnZWQgd29ybGQgY2FuIHJlYWQgZW50aXRpZXMgd3JpdHRlbiB3aXRob3V0IGEgdGFnKS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRKU09OV2l0aEZhbGxiYWNrPFQ+KFxuICBiYXNlZGlyOiBzdHJpbmcsXG4gIGVudGl0eURpcjogc3RyaW5nLFxuICBmaWxlSWQ6IHN0cmluZyxcbiAgc2NoZW1hOiB6LlpvZFR5cGU8VD4sXG4gIHRhZz86IHN0cmluZ1xuKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICBhc3NlcnRTYWZlRW50aXR5SWQoJ2ZpbGVJZCcsIGZpbGVJZCk7XG4gIGlmICh0YWcgIT09IHVuZGVmaW5lZCkgYXNzZXJ0U2FmZUVudGl0eUlkKCd0YWcnLCB0YWcpO1xuICBpZiAodGFnKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZEpTT04oXG4gICAgICByZXNvbHZlV2l0aGluQmFzZShiYXNlZGlyLCBlbnRpdHlEaXIsIGAke2ZpbGVJZH0uJHt0YWd9Lmpzb25gKSxcbiAgICAgIHNjaGVtYVxuICAgICk7XG4gICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICByZXR1cm4gcmVhZEpTT04oXG4gICAgcmVzb2x2ZVdpdGhpbkJhc2UoYmFzZWRpciwgZW50aXR5RGlyLCBgJHtmaWxlSWR9Lmpzb25gKSxcbiAgICBzY2hlbWFcbiAgKTtcbn1cblxuLyoqXG4gKiBMaXN0IGFsbCBmaWxlbmFtZXMgaW4gYSBkaXJlY3RvcnkgdGhhdCBoYXZlIGEgc3BlY2lmaWMgdGFnLlxuICogUmV0dXJucyBmdWxsIGZpbGVuYW1lcyAoZS5nLiwgYHdydW5fQUJDLnZpdGVzdC0wLmpzb25gKS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RUYWdnZWRGaWxlcyhcbiAgZGlyUGF0aDogc3RyaW5nLFxuICB0YWc6IHN0cmluZ1xuKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCBzdWZmaXggPSBgLiR7dGFnfS5qc29uYDtcbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIoZGlyUGF0aCk7XG4gICAgcmV0dXJuIGZpbGVzLmZpbHRlcigoZikgPT4gZi5lbmRzV2l0aChzdWZmaXgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoKGVycm9yIGFzIGFueSkuY29kZSA9PT0gJ0VOT0VOVCcpIHJldHVybiBbXTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIExpc3QgYWxsIGZpbGVuYW1lcyBpbiBhIGRpcmVjdG9yeSB0aGF0IGhhdmUgYSBzcGVjaWZpYyB0YWcgYW5kIGV4dGVuc2lvbi5cbiAqIFJldHVybnMgZnVsbCBmaWxlbmFtZXMgKGUuZy4sIGBzdHJlYW0tY2hua19BQkMudml0ZXN0LTAuYmluYCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0VGFnZ2VkRmlsZXNCeUV4dGVuc2lvbihcbiAgZGlyUGF0aDogc3RyaW5nLFxuICB0YWc6IHN0cmluZyxcbiAgZXh0ZW5zaW9uOiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3Qgc3VmZml4ID0gYC4ke3RhZ30ke2V4dGVuc2lvbn1gO1xuICB0cnkge1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihkaXJQYXRoKTtcbiAgICByZXR1cm4gZmlsZXMuZmlsdGVyKChmKSA9PiBmLmVuZHNXaXRoKHN1ZmZpeCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICgoZXJyb3IgYXMgYW55KS5jb2RlID09PSAnRU5PRU5UJykgcmV0dXJuIFtdO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVEaXIoZGlyUGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMubWtkaXIoZGlyUGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgIC8vIElnbm9yZSBpZiBhbHJlYWR5IGV4aXN0c1xuICB9XG59XG5cbmludGVyZmFjZSBXcml0ZU9wdGlvbnMge1xuICBvdmVyd3JpdGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEN1c3RvbSBKU09OIHJlcGxhY2VyIHRoYXQgZW5jb2RlcyBVaW50OEFycmF5IGFzIGJhc2U2NCBzdHJpbmdzLlxuICogRm9ybWF0OiB7IF9fdHlwZTogJ1VpbnQ4QXJyYXknLCBkYXRhOiAnPGJhc2U2ND4nIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25SZXBsYWNlcihfa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlOiAnVWludDhBcnJheScsXG4gICAgICBkYXRhOiBCdWZmZXIuZnJvbSh2YWx1ZSkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIEN1c3RvbSBKU09OIHJldml2ZXIgdGhhdCBkZWNvZGVzIGJhc2U2NCBzdHJpbmdzIGJhY2sgdG8gVWludDhBcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25SZXZpdmVyKF9rZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICh2YWx1ZSBhcyBhbnkpLl9fdHlwZSA9PT0gJ1VpbnQ4QXJyYXknICYmXG4gICAgdHlwZW9mICh2YWx1ZSBhcyBhbnkpLmRhdGEgPT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSgodmFsdWUgYXMgYW55KS5kYXRhLCAnYmFzZTY0JykpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlSlNPTihcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgZGF0YTogYW55LFxuICBvcHRzPzogV3JpdGVPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIHdyaXRlKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShkYXRhLCBqc29uUmVwbGFjZXIsIDIpLCBvcHRzKTtcbn1cblxuLyoqXG4gKiBXcml0ZXMgZGF0YSB0byBhIGZpbGUgdXNpbmcgYXRvbWljIHdyaXRlLXJlbmFtZSBwYXR0ZXJuLlxuICpcbiAqIE5vdGU6IFdoaWxlIHRoaXMgZnVuY3Rpb24gdXNlcyB0ZW1wIGZpbGVzIHRvIGF2b2lkIHBhcnRpYWwgd3JpdGVzLFxuICogaXQgZG9lcyBub3QgcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgY29uY3VycmVudCB3cml0ZXMgZnJvbSBtdWx0aXBsZVxuICogcHJvY2Vzc2VzLiBJbiBhIG11bHRpLXdyaXRlciBzY2VuYXJpbywgdGhlIGxhc3Qgd3JpdGVyIHdpbnMuXG4gKiBGb3IgcHJvZHVjdGlvbiB1c2Ugd2l0aCBtdWx0aXBsZSB3cml0ZXJzLCBjb25zaWRlciB1c2luZyBhIHByb3BlclxuICogZGF0YWJhc2Ugb3IgbG9ja2luZyBtZWNoYW5pc20uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZShcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgZGF0YTogc3RyaW5nIHwgQnVmZmVyLFxuICBvcHRzPzogV3JpdGVPcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFvcHRzPy5vdmVyd3JpdGUpIHtcbiAgICAvLyBGYXN0IHBhdGg6IGNoZWNrIGluLW1lbW9yeSBjYWNoZSBmaXJzdCB0byBhdm9pZCBleHBlbnNpdmUgZnMuYWNjZXNzKCkgY2FsbHNcbiAgICAvLyBUaGlzIHByb3ZpZGVzIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IHdoZW4gY3JlYXRpbmcgbWFueSBmaWxlc1xuICAgIGlmIChjcmVhdGVkRmlsZXNDYWNoZS5oYXMoZmlsZVBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgRW50aXR5Q29uZmxpY3RFcnJvcihcbiAgICAgICAgYEZpbGUgJHtmaWxlUGF0aH0gYWxyZWFkeSBleGlzdHMgYW5kICdvdmVyd3JpdGUnIGlzIGZhbHNlYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTbG93IHBhdGg6IGNoZWNrIGZpbGVzeXN0ZW0gZm9yIGZpbGVzIGNyZWF0ZWQgYmVmb3JlIHRoaXMgcHJvY2VzcyBzdGFydGVkXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzLmFjY2VzcyhmaWxlUGF0aCk7XG4gICAgICAvLyBGaWxlIGV4aXN0cyBvbiBkaXNrLCBhZGQgdG8gY2FjaGUgZm9yIGZ1dHVyZSBjaGVja3NcbiAgICAgIGNyZWF0ZWRGaWxlc0NhY2hlLmFkZChmaWxlUGF0aCk7XG4gICAgICB0aHJvdyBuZXcgRW50aXR5Q29uZmxpY3RFcnJvcihcbiAgICAgICAgYEZpbGUgJHtmaWxlUGF0aH0gYWxyZWFkeSBleGlzdHMgYW5kICdvdmVyd3JpdGUnIGlzIGZhbHNlYFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAvLyBJZiBmaWxlIGRvZXNuJ3QgZXhpc3QgKEVOT0VOVCksIGNvbnRpbnVlIHdpdGggd3JpdGVcbiAgICAgIGlmIChlcnJvci5jb2RlICE9PSAnRU5PRU5UJykge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCB0ZW1wUGF0aCA9IGAke2ZpbGVQYXRofS50bXAuJHt1bGlkKCl9YDtcbiAgbGV0IHRlbXBGaWxlQ3JlYXRlZCA9IGZhbHNlO1xuICB0cnkge1xuICAgIGF3YWl0IGVuc3VyZURpcihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUodGVtcFBhdGgsIGRhdGEpO1xuICAgIHRlbXBGaWxlQ3JlYXRlZCA9IHRydWU7XG4gICAgYXdhaXQgd2l0aFdpbmRvd3NSZXRyeSgoKSA9PiBmcy5yZW5hbWUodGVtcFBhdGgsIGZpbGVQYXRoKSk7XG4gICAgLy8gVHJhY2sgdGhpcyBmaWxlIGluIGNhY2hlIHNvIGZ1dHVyZSB3cml0ZXMga25vdyBpdCBleGlzdHNcbiAgICBjcmVhdGVkRmlsZXNDYWNoZS5hZGQoZmlsZVBhdGgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIE9ubHkgdHJ5IHRvIGNsZWFuIHVwIHRlbXAgZmlsZSBpZiBpdCB3YXMgYWN0dWFsbHkgY3JlYXRlZFxuICAgIGlmICh0ZW1wRmlsZUNyZWF0ZWQpIHtcbiAgICAgIGF3YWl0IHdpdGhXaW5kb3dzUmV0cnkoKCkgPT4gZnMudW5saW5rKHRlbXBQYXRoKSwgMykuY2F0Y2goKCkgPT4ge30pO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEpTT048VD4oXG4gIGZpbGVQYXRoOiBzdHJpbmcsXG4gIGRlY29kZXI6IHouWm9kVHlwZTxUPlxuKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlUGF0aCwgJ3V0Zi04Jyk7XG4gICAgcmV0dXJuIGRlY29kZXIucGFyc2UoSlNPTi5wYXJzZShjb250ZW50LCBqc29uUmV2aXZlcikpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICgoZXJyb3IgYXMgYW55KS5jb2RlID09PSAnRU5PRU5UJykgcmV0dXJuIG51bGw7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRCdWZmZXIoZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlUGF0aCk7XG4gIHJldHVybiBjb250ZW50O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZpcnN0Qnl0ZShcbiAgZmlsZVBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgZmlsZSA9IGF3YWl0IGZzLm9wZW4oZmlsZVBhdGgsICdyJyk7XG4gIHRyeSB7XG4gICAgY29uc3QgYnl0ZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxKTtcbiAgICBjb25zdCB7IGJ5dGVzUmVhZCB9ID0gYXdhaXQgZmlsZS5yZWFkKGJ5dGUsIDAsIDEsIDApO1xuICAgIHJldHVybiBieXRlc1JlYWQgPT09IDAgPyB1bmRlZmluZWQgOiBieXRlWzBdO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZpbGUuY2xvc2UoKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlSlNPTihmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMudW5saW5rKGZpbGVQYXRoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoKGVycm9yIGFzIGFueSkuY29kZSAhPT0gJ0VOT0VOVCcpIHRocm93IGVycm9yO1xuICB9XG59XG5cbi8qKlxuICogQXRvbWljYWxseSBwdWJsaXNoIGEgZnVsbHktd3JpdHRlbiBmaWxlIHdpdGhvdXQgb3ZlcndyaXRpbmcgYW4gZXhpc3Rpbmcgb25lLlxuICpcbiAqIFdyaXRpbmcgZGlyZWN0bHkgd2l0aCBPX0NSRUFUIHwgT19FWENMIG1ha2VzIHRoZSBkZXN0aW5hdGlvbiB2aXNpYmxlIGJlZm9yZVxuICogaXRzIGNvbnRlbnRzIGFyZSBjb21wbGV0ZSwgc28gY29uY3VycmVudCByZWFkZXJzIGNhbiBvYnNlcnZlIGEgcGFydGlhbCBmaWxlLlxuICogSW5zdGVhZCwgd3JpdGUgdG8gYSB1bmlxdWUgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnksIHRoZW4gaGFyZC1saW5rIGl0IGludG9cbiAqIHBsYWNlLiBDcmVhdGluZyB0aGUgbGluayBpcyBhdG9taWMgYW5kIGZhaWxzIHdpdGggRUVYSVNUIGlmIGFub3RoZXIgd3JpdGVyXG4gKiBwdWJsaXNoZWQgdGhlIGRlc3RpbmF0aW9uIGZpcnN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVFeGNsdXNpdmUoXG4gIGZpbGVQYXRoOiBzdHJpbmcsXG4gIGRhdGE6IHN0cmluZ1xuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGF3YWl0IGVuc3VyZURpcihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKTtcbiAgY29uc3QgdGVtcFBhdGggPSBgJHtmaWxlUGF0aH0udG1wLiR7dWxpZCgpfWA7XG4gIGxldCB0ZW1wRmlsZUNyZWF0ZWQgPSBmYWxzZTtcblxuICB0cnkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZSh0ZW1wUGF0aCwgZGF0YSwgeyBmbGFnOiAnd3gnIH0pO1xuICAgIHRlbXBGaWxlQ3JlYXRlZCA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2l0aFdpbmRvd3NSZXRyeSgoKSA9PiBmcy5saW5rKHRlbXBQYXRoLCBmaWxlUGF0aCkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdFRVhJU1QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAodGVtcEZpbGVDcmVhdGVkKSB7XG4gICAgICBhd2FpdCB3aXRoV2luZG93c1JldHJ5KCgpID0+IGZzLnVubGluayh0ZW1wUGF0aCksIDMpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RKU09ORmlsZXMoZGlyUGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICByZXR1cm4gbGlzdEZpbGVzQnlFeHRlbnNpb24oZGlyUGF0aCwgJy5qc29uJyk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0RmlsZXNCeUV4dGVuc2lvbihcbiAgZGlyUGF0aDogc3RyaW5nLFxuICBleHRlbnNpb246IHN0cmluZ1xuKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihkaXJQYXRoKTtcbiAgICByZXR1cm4gZmlsZXNcbiAgICAgIC5maWx0ZXIoKGYpID0+IGYuZW5kc1dpdGgoZXh0ZW5zaW9uKSlcbiAgICAgIC5tYXAoKGYpID0+IGYuc2xpY2UoMCwgLWV4dGVuc2lvbi5sZW5ndGgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoKGVycm9yIGFzIGFueSkuY29kZSA9PT0gJ0VOT0VOVCcpIHJldHVybiBbXTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5pbnRlcmZhY2UgUGFnaW5hdGVkRmlsZVN5c3RlbVF1ZXJ5Q29uZmlnPFQ+IHtcbiAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gIHNjaGVtYTogei5ab2RUeXBlPFQ+O1xuICBmaWxlUHJlZml4Pzogc3RyaW5nO1xuICBmaWxlSWRGaWx0ZXI/OiAoZmlsZUlkOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIGZpbHRlcj86IChpdGVtOiBUKSA9PiBib29sZWFuO1xuICBzb3J0T3JkZXI/OiAnYXNjJyB8ICdkZXNjJztcbiAgbGltaXQ/OiBudW1iZXI7XG4gIGN1cnNvcj86IHN0cmluZztcbiAgZ2V0Q3JlYXRlZEF0KGZpbGVuYW1lOiBzdHJpbmcpOiBEYXRlIHwgbnVsbDtcbiAgZ2V0SWQ/KGl0ZW06IFQpOiBzdHJpbmc7XG59XG4vLyBDdXJzb3IgZm9ybWF0OiBcInRpbWVzdGFtcHxpZFwiIGZvciB0aWUtYnJlYWtpbmdcbmludGVyZmFjZSBQYXJzZWRDdXJzb3Ige1xuICB0aW1lc3RhbXA6IERhdGU7XG4gIGlkOiBzdHJpbmcgfCBudWxsO1xufVxuXG5mdW5jdGlvbiBwYXJzZUN1cnNvcihjdXJzb3I6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFBhcnNlZEN1cnNvciB8IG51bGwge1xuICBpZiAoIWN1cnNvcikgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcGFydHMgPSBjdXJzb3Iuc3BsaXQoJ3wnKTtcbiAgcmV0dXJuIHtcbiAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKHBhcnRzWzBdKSxcbiAgICBpZDogcGFydHNbMV0gfHwgbnVsbCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ3Vyc29yKHRpbWVzdGFtcDogRGF0ZSwgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIHJldHVybiBpZCA/IGAke3RpbWVzdGFtcC50b0lTT1N0cmluZygpfXwke2lkfWAgOiB0aW1lc3RhbXAudG9JU09TdHJpbmcoKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhZ2luYXRlZEZpbGVTeXN0ZW1RdWVyeTxUIGV4dGVuZHMgeyBjcmVhdGVkQXQ6IERhdGUgfT4oXG4gIGNvbmZpZzogUGFnaW5hdGVkRmlsZVN5c3RlbVF1ZXJ5Q29uZmlnPFQ+XG4pOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFQ+PiB7XG4gIGNvbnN0IHtcbiAgICBkaXJlY3RvcnksXG4gICAgc2NoZW1hLFxuICAgIGZpbGVQcmVmaXgsXG4gICAgZmlsZUlkRmlsdGVyLFxuICAgIGZpbHRlcixcbiAgICBzb3J0T3JkZXIgPSAnZGVzYycsXG4gICAgbGltaXQgPSAyMCxcbiAgICBjdXJzb3IsXG4gICAgZ2V0Q3JlYXRlZEF0LFxuICAgIGdldElkLFxuICB9ID0gY29uZmlnO1xuXG4gIC8vIFZhbGlkYXRlIGZpbGVQcmVmaXggKHR5cGljYWxseSBgJHtydW5JZH0tYCkgc28gcmVxdWVzdC1kZXJpdmVkIHByZWZpeGVzXG4gIC8vIGNvbnNpc3RlbnRseSByZWplY3QgdW5zYWZlIGNoYXJhY3RlcnMuIGZpbGVQcmVmaXggaXMgb25seSB1c2VkIGJlbG93IHRvXG4gIC8vIGZpbHRlciByZWFkZGlyKCkgcmVzdWx0cyBieSBwcmVmaXgg4oCUIGl0IGRvZXNuJ3QgcGFydGljaXBhdGUgaW4gcGF0aFxuICAvLyBjb25zdHJ1Y3Rpb24g4oCUIGJ1dCBrZWVwaW5nIHRoZSB2YWxpZGF0aW9uIHJ1bGUgdW5pZm9ybSBhY3Jvc3MgdGhlXG4gIC8vIHN0b3JhZ2UgbGF5ZXIgYXZvaWRzIHNwZWNpYWwgY2FzZXMgYW5kIGNhdGNoZXMgYmFkIHZhbHVlcyBlYXJsaWVyLlxuICBpZiAoZmlsZVByZWZpeCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYXNzZXJ0U2FmZUVudGl0eUlkKCdmaWxlUHJlZml4JywgZmlsZVByZWZpeCk7XG4gIH1cblxuICAvLyAxLiBHZXQgYWxsIEpTT04gZmlsZXMgaW4gZGlyZWN0b3J5XG4gIGNvbnN0IGZpbGVJZHMgPSBhd2FpdCBsaXN0SlNPTkZpbGVzKGRpcmVjdG9yeSk7XG5cbiAgLy8gMi4gRmlsdGVyIGJ5IHByZWZpeCBpZiBwcm92aWRlZFxuICBjb25zdCByZWxldmFudEZpbGVJZHMgPSBmaWxlUHJlZml4XG4gICAgPyBmaWxlSWRzLmZpbHRlcigoZmlsZUlkKSA9PiBmaWxlSWQuc3RhcnRzV2l0aChmaWxlUHJlZml4KSlcbiAgICA6IGZpbGVJZHM7XG4gIGNvbnN0IGZpbHRlcmVkRmlsZUlkcyA9IGZpbGVJZEZpbHRlclxuICAgID8gcmVsZXZhbnRGaWxlSWRzLmZpbHRlcihmaWxlSWRGaWx0ZXIpXG4gICAgOiByZWxldmFudEZpbGVJZHM7XG5cbiAgLy8gMy4gVUxJRCBPcHRpbWl6YXRpb246IEZpbHRlciBieSBjdXJzb3IgdXNpbmcgZmlsZW5hbWUgdGltZXN0YW1wcyBiZWZvcmUgbG9hZGluZyBKU09OXG4gIGNvbnN0IHBhcnNlZEN1cnNvciA9IHBhcnNlQ3Vyc29yKGN1cnNvcik7XG4gIGxldCBjYW5kaWRhdGVGaWxlSWRzID0gZmlsdGVyZWRGaWxlSWRzO1xuXG4gIGlmIChwYXJzZWRDdXJzb3IpIHtcbiAgICBjYW5kaWRhdGVGaWxlSWRzID0gZmlsdGVyZWRGaWxlSWRzLmZpbHRlcigoZmlsZUlkKSA9PiB7XG4gICAgICBjb25zdCBmaWxlbmFtZURhdGUgPSBnZXRDcmVhdGVkQXQoYCR7ZmlsZUlkfS5qc29uYCk7XG4gICAgICBpZiAoZmlsZW5hbWVEYXRlKSB7XG4gICAgICAgIC8vIFVzZSBmaWxlbmFtZSB0aW1lc3RhbXAgZm9yIGN1cnNvciBmaWx0ZXJpbmdcbiAgICAgICAgLy8gV2UgbmVlZCB0byBiZSBjYXJlZnVsIGhlcmU6IGlmIHBhcnNlZEN1cnNvciBoYXMgYW4gSUQgKGZvciB0aWUtYnJlYWtpbmcpLFxuICAgICAgICAvLyB3ZSBuZWVkIHRvIGluY2x1ZGUgaXRlbXMgd2l0aCB0aGUgc2FtZSB0aW1lc3RhbXAgZm9yIGxhdGVyIElELWJhc2VkIGZpbHRlcmluZy5cbiAgICAgICAgLy8gSWYgbm8gSUQsIHdlIGNhbiB1c2Ugc3RyaWN0IGluZXF1YWxpdHkgZm9yIG9wdGltaXphdGlvbi5cbiAgICAgICAgY29uc3QgY3Vyc29yVGltZSA9IHBhcnNlZEN1cnNvci50aW1lc3RhbXAuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBmaWxlVGltZSA9IGZpbGVuYW1lRGF0ZS5nZXRUaW1lKCk7XG5cbiAgICAgICAgaWYgKHBhcnNlZEN1cnNvci5pZCkge1xuICAgICAgICAgIC8vIFRpZS1icmVha2luZyBtb2RlOiBpbmNsdWRlIGl0ZW1zIGF0IG9yIG5lYXIgY3Vyc29yIHRpbWVzdGFtcFxuICAgICAgICAgIHJldHVybiBzb3J0T3JkZXIgPT09ICdkZXNjJ1xuICAgICAgICAgICAgPyBmaWxlVGltZSA8PSBjdXJzb3JUaW1lXG4gICAgICAgICAgICA6IGZpbGVUaW1lID49IGN1cnNvclRpbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTm8gdGllLWJyZWFraW5nOiBzdHJpY3QgaW5lcXVhbGl0eVxuICAgICAgICAgIHJldHVybiBzb3J0T3JkZXIgPT09ICdkZXNjJ1xuICAgICAgICAgICAgPyBmaWxlVGltZSA8IGN1cnNvclRpbWVcbiAgICAgICAgICAgIDogZmlsZVRpbWUgPiBjdXJzb3JUaW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBDYW4ndCBleHRyYWN0IHRpbWVzdGFtcCBmcm9tIGZpbGVuYW1lIChlLmcuLCBzdGVwcyB1c2Ugc2VxdWVudGlhbCBJRHMpLlxuICAgICAgLy8gSW5jbHVkZSB0aGUgZmlsZSBhbmQgZGVmZXIgdG8gSlNPTi1iYXNlZCBmaWx0ZXJpbmcgYmVsb3cuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIDQuIExvYWQgZmlsZXMgaW5kaXZpZHVhbGx5IGFuZCBjb2xsZWN0IHZhbGlkIGl0ZW1zXG4gIGNvbnN0IHZhbGlkSXRlbXM6IFRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZmlsZUlkIG9mIGNhbmRpZGF0ZUZpbGVJZHMpIHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihkaXJlY3RvcnksIGAke2ZpbGVJZH0uanNvbmApO1xuICAgIGxldCBpdGVtOiBUIHwgbnVsbCA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGl0ZW0gPSBhd2FpdCByZWFkSlNPTihmaWxlUGF0aCwgc2NoZW1hKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IHpvZCBlcnJvcnMgdG8gaGFwcGVuLCBidXQgaWYgdGhlIEpTT04gZG9lcyBnZXQgbWFsZm9ybWVkLFxuICAgICAgLy8gd2Ugc2tpcCB0aGUgaXRlbS4gUHJlZmVyYWJseSwgd2UnZCBoYXZlIGEgd2F5IHRvIG1hcmsgaXRlbXMgYXMgbWFsZm9ybWVkLFxuICAgICAgLy8gc28gdGhhdCB0aGUgVUkgY2FuIGRpc3BsYXkgdGhlbSBhcyBzdWNoLCB3aXRoIHJpY2hlciBtZXNzYWdpbmcuIEluIHRoZSBtZWFudGltZSxcbiAgICAgIC8vIHdlIGp1c3QgbG9nIGEgd2FybmluZyBhbmQgc2tpcCB0aGUgaXRlbS5cbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBTa2lwcGluZyBpdGVtICR7ZmlsZUlkfSBkdWUgdG8gbWFsZm9ybWVkIEpTT046ICR7ZXJyb3IubWVzc2FnZX1gXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIC8vIEFwcGx5IGN1c3RvbSBmaWx0ZXIgZWFybHkgaWYgcHJvdmlkZWRcbiAgICAgIGlmIChmaWx0ZXIgJiYgIWZpbHRlcihpdGVtKSkgY29udGludWU7XG5cbiAgICAgIC8vIERvdWJsZS1jaGVjayBjdXJzb3IgZmlsdGVyaW5nIHdpdGggYWN0dWFsIGNyZWF0ZWRBdCBmcm9tIEpTT05cbiAgICAgIC8vIChpbiBjYXNlIFVMSUQgdGltZXN0YW1wIGRpZmZlcnMgZnJvbSBzdG9yZWQgY3JlYXRlZEF0KVxuICAgICAgaWYgKHBhcnNlZEN1cnNvcikge1xuICAgICAgICBjb25zdCBpdGVtVGltZSA9IGl0ZW0uY3JlYXRlZEF0LmdldFRpbWUoKTtcbiAgICAgICAgY29uc3QgY3Vyc29yVGltZSA9IHBhcnNlZEN1cnNvci50aW1lc3RhbXAuZ2V0VGltZSgpO1xuXG4gICAgICAgIGlmIChzb3J0T3JkZXIgPT09ICdkZXNjJykge1xuICAgICAgICAgIC8vIEZvciBkZXNjZW5kaW5nIG9yZGVyLCBza2lwIGl0ZW1zID49IGN1cnNvclxuICAgICAgICAgIGlmIChpdGVtVGltZSA+IGN1cnNvclRpbWUpIGNvbnRpbnVlO1xuICAgICAgICAgIC8vIElmIHRpbWVzdGFtcHMgYXJlIGVxdWFsLCB1c2UgSUQgZm9yIHRpZS1icmVha2luZyAoc2tpcCBpZiBJRCA+PSBjdXJzb3JJZClcbiAgICAgICAgICBpZiAoaXRlbVRpbWUgPT09IGN1cnNvclRpbWUgJiYgcGFyc2VkQ3Vyc29yLmlkICYmIGdldElkKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtSWQgPSBnZXRJZChpdGVtKTtcbiAgICAgICAgICAgIGlmIChpdGVtSWQgPj0gcGFyc2VkQ3Vyc29yLmlkKSBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRm9yIGFzY2VuZGluZyBvcmRlciwgc2tpcCBpdGVtcyA8PSBjdXJzb3JcbiAgICAgICAgICBpZiAoaXRlbVRpbWUgPCBjdXJzb3JUaW1lKSBjb250aW51ZTtcbiAgICAgICAgICAvLyBJZiB0aW1lc3RhbXBzIGFyZSBlcXVhbCwgdXNlIElEIGZvciB0aWUtYnJlYWtpbmcgKHNraXAgaWYgSUQgPD0gY3Vyc29ySWQpXG4gICAgICAgICAgaWYgKGl0ZW1UaW1lID09PSBjdXJzb3JUaW1lICYmIHBhcnNlZEN1cnNvci5pZCAmJiBnZXRJZCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbUlkID0gZ2V0SWQoaXRlbSk7XG4gICAgICAgICAgICBpZiAoaXRlbUlkIDw9IHBhcnNlZEN1cnNvci5pZCkgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhbGlkSXRlbXMucHVzaChpdGVtKTtcbiAgICB9XG4gIH1cblxuICAvLyA1LiBTb3J0IGJ5IGNyZWF0ZWRBdCAoYW5kIGJ5IElEIGZvciB0aWUtYnJlYWtpbmcgaWYgZ2V0SWQgaXMgcHJvdmlkZWQpXG4gIHZhbGlkSXRlbXMuc29ydCgoYSwgYikgPT4ge1xuICAgIGNvbnN0IGFUaW1lID0gYS5jcmVhdGVkQXQuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGJUaW1lID0gYi5jcmVhdGVkQXQuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHRpbWVDb21wYXJpc29uID0gc29ydE9yZGVyID09PSAnYXNjJyA/IGFUaW1lIC0gYlRpbWUgOiBiVGltZSAtIGFUaW1lO1xuXG4gICAgLy8gSWYgdGltZXN0YW1wcyBhcmUgZXF1YWwgYW5kIHdlIGhhdmUgZ2V0SWQsIHVzZSBJRCBmb3Igc3RhYmxlIHNvcnRpbmdcbiAgICBpZiAodGltZUNvbXBhcmlzb24gPT09IDAgJiYgZ2V0SWQpIHtcbiAgICAgIGNvbnN0IGFJZCA9IGdldElkKGEpO1xuICAgICAgY29uc3QgYklkID0gZ2V0SWQoYik7XG4gICAgICByZXR1cm4gc29ydE9yZGVyID09PSAnYXNjJ1xuICAgICAgICA/IGFJZC5sb2NhbGVDb21wYXJlKGJJZClcbiAgICAgICAgOiBiSWQubG9jYWxlQ29tcGFyZShhSWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aW1lQ29tcGFyaXNvbjtcbiAgfSk7XG5cbiAgLy8gNi4gQXBwbHkgcGFnaW5hdGlvblxuICBjb25zdCBoYXNNb3JlID0gdmFsaWRJdGVtcy5sZW5ndGggPiBsaW1pdDtcbiAgY29uc3QgaXRlbXMgPSBoYXNNb3JlID8gdmFsaWRJdGVtcy5zbGljZSgwLCBsaW1pdCkgOiB2YWxpZEl0ZW1zO1xuICBjb25zdCBuZXh0Q3Vyc29yID1cbiAgICBpdGVtcy5sZW5ndGggPiAwXG4gICAgICA/IGNyZWF0ZUN1cnNvcihcbiAgICAgICAgICBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXS5jcmVhdGVkQXQsXG4gICAgICAgICAgZ2V0SWQ/LihpdGVtc1tpdGVtcy5sZW5ndGggLSAxXSlcbiAgICAgICAgKVxuICAgICAgOiBudWxsO1xuXG4gIHJldHVybiB7XG4gICAgZGF0YTogaXRlbXMsXG4gICAgY3Vyc29yOiBuZXh0Q3Vyc29yLFxuICAgIGhhc01vcmUsXG4gIH07XG59XG4iXX0=
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { World } from '@workflow/world';
|
|
1
|
+
import type { QueuePrefix, World } from '@workflow/world';
|
|
2
2
|
import type { Config } from './config.js';
|
|
3
3
|
import { type DirectHandler } from './queue.js';
|
|
4
4
|
export { DataDirAccessError, DataDirVersionError, ensureDataDir, initDataDir, type ParsedVersion, parseVersion, } from './init.js';
|
|
5
5
|
export type { DirectHandler } from './queue.js';
|
|
6
6
|
export type LocalWorld = World & {
|
|
7
7
|
/** Register a direct in-process handler for a queue prefix, bypassing HTTP. */
|
|
8
|
-
registerHandler(prefix:
|
|
8
|
+
registerHandler(prefix: QueuePrefix, handler: DirectHandler): void;
|
|
9
9
|
/** Clear all workflow data (runs, steps, events, hooks, streams). */
|
|
10
10
|
clear(): Promise<void>;
|
|
11
11
|
};
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAY1C,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAM7D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,KAAK,aAAa,EAClB,YAAY,GACb,MAAM,WAAW,CAAC;AAEnB,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG;IAC/B,+EAA+E;IAC/E,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IACnE,qEAAqE;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,CA6GnE"}
|
package/dist/index.js
CHANGED
|
@@ -112,4 +112,4 @@ export function createLocalWorld(args) {
|
|
|
112
112
|
},
|
|
113
113
|
};
|
|
114
114
|
}
|
|
115
|
-
//# sourceMappingURL=index.js.map
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUU3QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLE1BQU0sRUFDTixlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLFFBQVEsR0FDVCxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQXNCLE1BQU0sWUFBWSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsbURBQW1EO0FBQ25ELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixXQUFXLEVBRVgsWUFBWSxHQUNiLE1BQU0sV0FBVyxDQUFDO0FBV25COzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFzQjtJQUNyRCxNQUFNLFdBQVcsR0FBRyxJQUFJO1FBQ3RCLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUNoQixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUNoRTtRQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxNQUFNLFlBQVksR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO0lBQ3pELE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUM7SUFDN0IsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQztJQUNqRSxPQUFPO1FBQ0wsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxHQUFHLEtBQUs7UUFDUixHQUFHLE9BQU87UUFDVixHQUFHLGdCQUFnQixDQUFDLGVBQWUsRUFBRTtZQUNuQyxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQztZQUM1QyxHQUFHLENBQUMsWUFBWSxDQUFDLHFCQUFxQixLQUFLLFNBQVMsSUFBSTtnQkFDdEQscUJBQXFCLEVBQUUsWUFBWSxDQUFDLHFCQUFxQjthQUMxRCxDQUFDO1NBQ0gsQ0FBQztRQUNGLEtBQUssQ0FBQyxLQUFLO1lBQ1QsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN2QixPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sWUFBWSxHQUFHLEdBQUc7Z0JBQ3RCLENBQUMsQ0FBQztvQkFDRSxHQUFHLE9BQU8sQ0FBQyxJQUFJO29CQUNmLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ2hCLEdBQUcsTUFBTTt3QkFDVCxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO3FCQUM5QyxDQUFDLENBQTZCO2lCQUNsQztnQkFDSCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNqQixNQUFNLG1CQUFtQixDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxLQUFLLENBQUMsS0FBSztZQUNULE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxLQUFLLENBQUMsS0FBSztZQUNULElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1Isa0RBQWtEO2dCQUNsRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO2dCQUVyQyxnRUFBZ0U7Z0JBQ2hFLDZEQUE2RDtnQkFDN0QsbUVBQW1FO2dCQUNuRSw0REFBNEQ7Z0JBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QyxNQUFNLGVBQWUsR0FBRyxNQUFNLGVBQWUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzdELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7b0JBQ3JDLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFDN0IsVUFBVSxDQUNYLENBQUM7b0JBQ0YsSUFBSSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7d0JBQ2hCLE1BQU0sVUFBVSxDQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUMvRCxDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztnQkFFRixvREFBb0Q7Z0JBQ3BELE1BQU0sVUFBVSxHQUFHO29CQUNqQixNQUFNO29CQUNOLE9BQU87b0JBQ1AsUUFBUTtvQkFDUixPQUFPO29CQUNQLE9BQU87b0JBQ1AsY0FBYztpQkFDZixDQUFDO2dCQUNGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sZUFBZSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDbEQsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3BELENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztnQkFDRiw0REFBNEQ7Z0JBQzVELE1BQU0sRUFBRTtxQkFDTCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztxQkFDbEUsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixpREFBaUQ7Z0JBQ2pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDMUQsTUFBTSxjQUFjLEdBQUcsTUFBTSwwQkFBMEIsQ0FDckQsU0FBUyxFQUNULEdBQUcsRUFDSCxNQUFNLENBQ1AsQ0FBQztnQkFDRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3ZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQ25ELENBQ0YsQ0FBQztnQkFDRixpRUFBaUU7Z0JBQ2pFLHNCQUFzQixFQUFFLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBybSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHsgUXVldWVQcmVmaXgsIFdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IHJlZW5xdWV1ZUFjdGl2ZVJ1bnMsIFNQRUNfVkVSU0lPTl9DVVJSRU5UIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSAnLi9jb25maWcuanMnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9jb25maWcuanMnO1xuaW1wb3J0IHtcbiAgY2xlYXJDcmVhdGVkRmlsZXNDYWNoZSxcbiAgZGVsZXRlSlNPTixcbiAgaGFzVGFnLFxuICBsaXN0VGFnZ2VkRmlsZXMsXG4gIGxpc3RUYWdnZWRGaWxlc0J5RXh0ZW5zaW9uLFxuICByZWFkSlNPTixcbn0gZnJvbSAnLi9mcy5qcyc7XG5pbXBvcnQgeyBpbml0RGF0YURpciB9IGZyb20gJy4vaW5pdC5qcyc7XG5pbXBvcnQgeyBpbnN0cnVtZW50T2JqZWN0IH0gZnJvbSAnLi9pbnN0cnVtZW50T2JqZWN0LmpzJztcbmltcG9ydCB7IGNyZWF0ZVF1ZXVlLCB0eXBlIERpcmVjdEhhbmRsZXIgfSBmcm9tICcuL3F1ZXVlLmpzJztcbmltcG9ydCB7IGhhc2hUb2tlbiB9IGZyb20gJy4vc3RvcmFnZS9oZWxwZXJzLmpzJztcbmltcG9ydCB7IGNyZWF0ZVN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UuanMnO1xuaW1wb3J0IHsgY3JlYXRlU3RyZWFtZXIgfSBmcm9tICcuL3N0cmVhbWVyLmpzJztcblxuLy8gUmUtZXhwb3J0IGluaXQgdHlwZXMgYW5kIHV0aWxpdGllcyBmb3IgY29uc3VtZXJzXG5leHBvcnQge1xuICBEYXRhRGlyQWNjZXNzRXJyb3IsXG4gIERhdGFEaXJWZXJzaW9uRXJyb3IsXG4gIGVuc3VyZURhdGFEaXIsXG4gIGluaXREYXRhRGlyLFxuICB0eXBlIFBhcnNlZFZlcnNpb24sXG4gIHBhcnNlVmVyc2lvbixcbn0gZnJvbSAnLi9pbml0LmpzJztcblxuZXhwb3J0IHR5cGUgeyBEaXJlY3RIYW5kbGVyIH0gZnJvbSAnLi9xdWV1ZS5qcyc7XG5cbmV4cG9ydCB0eXBlIExvY2FsV29ybGQgPSBXb3JsZCAmIHtcbiAgLyoqIFJlZ2lzdGVyIGEgZGlyZWN0IGluLXByb2Nlc3MgaGFuZGxlciBmb3IgYSBxdWV1ZSBwcmVmaXgsIGJ5cGFzc2luZyBIVFRQLiAqL1xuICByZWdpc3RlckhhbmRsZXIocHJlZml4OiBRdWV1ZVByZWZpeCwgaGFuZGxlcjogRGlyZWN0SGFuZGxlcik6IHZvaWQ7XG4gIC8qKiBDbGVhciBhbGwgd29ya2Zsb3cgZGF0YSAocnVucywgc3RlcHMsIGV2ZW50cywgaG9va3MsIHN0cmVhbXMpLiAqL1xuICBjbGVhcigpOiBQcm9taXNlPHZvaWQ+O1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbG9jYWwgd29ybGQgaW5zdGFuY2UgdGhhdCBjb21iaW5lcyBxdWV1ZSwgc3RvcmFnZSwgYW5kIHN0cmVhbWVyIGZ1bmN0aW9uYWxpdGllcy5cbiAqXG4gKiBAcGFyYW0gYXJncyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gKiBAcGFyYW0gYXJncy5kYXRhRGlyIC0gRGlyZWN0b3J5IGZvciBzdG9yaW5nIHdvcmtmbG93IGRhdGEgKGRlZmF1bHQ6IGAud29ya2Zsb3ctZGF0YS9gKVxuICogQHBhcmFtIGFyZ3MucG9ydCAtIFBvcnQgb3ZlcnJpZGUgZm9yIHF1ZXVlIHRyYW5zcG9ydCAoZGVmYXVsdDogYXV0by1kZXRlY3RlZClcbiAqIEBwYXJhbSBhcmdzLmJhc2VVcmwgLSBGdWxsIGJhc2UgVVJMIG92ZXJyaWRlIGZvciBxdWV1ZSB0cmFuc3BvcnQgKGRlZmF1bHQ6IGBodHRwOi8vbG9jYWxob3N0Ontwb3J0fWApXG4gKiBAcGFyYW0gYXJncy5yZWNvdmVyQWN0aXZlUnVucyAtIFdoZXRoZXIgYHN0YXJ0KClgIHNob3VsZCByZS1lbnF1ZXVlIHBlbmRpbmcvcnVubmluZyBydW5zIGZyb20gc3RvcmFnZSAoZGVmYXVsdDogYHRydWVgKVxuICogQHBhcmFtIGFyZ3MudGFnIC0gT3B0aW9uYWwgdGFnIHRvIHNjb3BlIGZpbGVzIChlLmcuLCBgdml0ZXN0LTBgKS4gV2hlbiBzZXQsIGZpbGVzIGFyZSB3cml0dGVuXG4gKiAgIGFzIGB7aWR9Lnt0YWd9Lmpzb25gIGFuZCBgY2xlYXIoKWAgb25seSBkZWxldGVzIGZpbGVzIG1hdGNoaW5nIHRoaXMgdGFnLlxuICogQHRocm93cyB7RGF0YURpckFjY2Vzc0Vycm9yfSBJZiB0aGUgZGF0YSBkaXJlY3RvcnkgY2Fubm90IGJlIGNyZWF0ZWQgb3IgYWNjZXNzZWRcbiAqIEB0aHJvd3Mge0RhdGFEaXJWZXJzaW9uRXJyb3J9IElmIHRoZSBkYXRhIGRpcmVjdG9yeSB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9jYWxXb3JsZChhcmdzPzogUGFydGlhbDxDb25maWc+KTogTG9jYWxXb3JsZCB7XG4gIGNvbnN0IGRlZmluZWRBcmdzID0gYXJnc1xuICAgID8gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhhcmdzKS5maWx0ZXIoKFssIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAgIClcbiAgICA6IHt9O1xuICBjb25zdCBtZXJnZWRDb25maWcgPSB7IC4uLmNvbmZpZy52YWx1ZSwgLi4uZGVmaW5lZEFyZ3MgfTtcbiAgY29uc3QgdGFnID0gbWVyZ2VkQ29uZmlnLnRhZztcbiAgY29uc3QgcXVldWUgPSBjcmVhdGVRdWV1ZShtZXJnZWRDb25maWcpO1xuICBjb25zdCBzdG9yYWdlID0gY3JlYXRlU3RvcmFnZShtZXJnZWRDb25maWcuZGF0YURpciwgdGFnKTtcbiAgY29uc3QgcmVjb3ZlckFjdGl2ZVJ1bnMgPSBtZXJnZWRDb25maWcucmVjb3ZlckFjdGl2ZVJ1bnMgPz8gdHJ1ZTtcbiAgcmV0dXJuIHtcbiAgICBzcGVjVmVyc2lvbjogU1BFQ19WRVJTSU9OX0NVUlJFTlQsXG4gICAgLi4ucXVldWUsXG4gICAgLi4uc3RvcmFnZSxcbiAgICAuLi5pbnN0cnVtZW50T2JqZWN0KCd3b3JsZC5zdHJlYW1zJywge1xuICAgICAgLi4uY3JlYXRlU3RyZWFtZXIobWVyZ2VkQ29uZmlnLmRhdGFEaXIsIHRhZyksXG4gICAgICAuLi4obWVyZ2VkQ29uZmlnLnN0cmVhbUZsdXNoSW50ZXJ2YWxNcyAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgc3RyZWFtRmx1c2hJbnRlcnZhbE1zOiBtZXJnZWRDb25maWcuc3RyZWFtRmx1c2hJbnRlcnZhbE1zLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgYXN5bmMgc3RhcnQoKSB7XG4gICAgICBhd2FpdCBpbml0RGF0YURpcihtZXJnZWRDb25maWcuZGF0YURpcik7XG4gICAgICBpZiAoIXJlY292ZXJBY3RpdmVSdW5zKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlY292ZXJ5UnVucyA9IHRhZ1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLnN0b3JhZ2UucnVucyxcbiAgICAgICAgICAgIGxpc3Q6ICgocGFyYW1zKSA9PlxuICAgICAgICAgICAgICBzdG9yYWdlLnJ1bnMubGlzdCh7XG4gICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgIGZpbGVJZEZpbHRlcjogKGZpbGVJZCkgPT4gaGFzVGFnKGZpbGVJZCwgdGFnKSxcbiAgICAgICAgICAgICAgfSkpIGFzIHR5cGVvZiBzdG9yYWdlLnJ1bnMubGlzdCxcbiAgICAgICAgICB9XG4gICAgICAgIDogc3RvcmFnZS5ydW5zO1xuICAgICAgYXdhaXQgcmVlbnF1ZXVlQWN0aXZlUnVucyhyZWNvdmVyeVJ1bnMsIHF1ZXVlLnF1ZXVlLCAnd29ybGQtbG9jYWwnKTtcbiAgICB9LFxuICAgIGFzeW5jIGNsb3NlKCkge1xuICAgICAgYXdhaXQgcXVldWUuY2xvc2UoKTtcbiAgICB9LFxuICAgIGFzeW5jIGNsZWFyKCkge1xuICAgICAgaWYgKHRhZykge1xuICAgICAgICAvLyBTZWxlY3RpdmVseSBkZWxldGUgb25seSBmaWxlcyBtYXRjaGluZyB0aGlzIHRhZ1xuICAgICAgICBjb25zdCBiYXNlZGlyID0gbWVyZ2VkQ29uZmlnLmRhdGFEaXI7XG5cbiAgICAgICAgLy8gRGVsZXRlIGhvb2sgdG9rZW4gY29uc3RyYWludCBmaWxlcyBCRUZPUkUgZGVsZXRpbmcgdGhlIGhvb2tzLFxuICAgICAgICAvLyBzaW5jZSB3ZSBuZWVkIHRvIHJlYWQgZWFjaCBob29rIHRvIGV4dHJhY3QgaXRzIHRva2VuIGhhc2guXG4gICAgICAgIC8vIENvbnN0cmFpbnQgZmlsZXMgYXJlIHVudGFnZ2VkICh7c2hhMjU2fS5qc29uKSBzbyBsaXN0VGFnZ2VkRmlsZXNcbiAgICAgICAgLy8gd29uJ3QgZmluZCB0aGVtIOKAlCB3ZSBtdXN0IHJlc29sdmUgdGhlbSB2aWEgdGhlIGhvb2sgZGF0YS5cbiAgICAgICAgY29uc3QgaG9va3NEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ2hvb2tzJyk7XG4gICAgICAgIGNvbnN0IHRhZ2dlZEhvb2tGaWxlcyA9IGF3YWl0IGxpc3RUYWdnZWRGaWxlcyhob29rc0RpciwgdGFnKTtcbiAgICAgICAgY29uc3QgeyBIb29rU2NoZW1hIH0gPSBhd2FpdCBpbXBvcnQoJ0B3b3JrZmxvdy93b3JsZCcpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICB0YWdnZWRIb29rRmlsZXMubWFwKGFzeW5jIChob29rRmlsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaG9vayA9IGF3YWl0IHJlYWRKU09OKFxuICAgICAgICAgICAgICBwYXRoLmpvaW4oaG9va3NEaXIsIGhvb2tGaWxlKSxcbiAgICAgICAgICAgICAgSG9va1NjaGVtYVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChob29rPy50b2tlbikge1xuICAgICAgICAgICAgICBhd2FpdCBkZWxldGVKU09OKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihob29rc0RpciwgJ3Rva2VucycsIGAke2hhc2hUb2tlbihob29rLnRva2VuKX0uanNvbmApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBEZWxldGUgdGFnZ2VkIGVudGl0eSBmaWxlcyBhY3Jvc3MgYWxsIGRpcmVjdG9yaWVzXG4gICAgICAgIGNvbnN0IGVudGl0eURpcnMgPSBbXG4gICAgICAgICAgJ3J1bnMnLFxuICAgICAgICAgICdzdGVwcycsXG4gICAgICAgICAgJ2V2ZW50cycsXG4gICAgICAgICAgJ2hvb2tzJyxcbiAgICAgICAgICAnd2FpdHMnLFxuICAgICAgICAgICdzdHJlYW1zL3J1bnMnLFxuICAgICAgICBdO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICBlbnRpdHlEaXJzLm1hcChhc3luYyAoZGlyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmdWxsRGlyID0gcGF0aC5qb2luKGJhc2VkaXIsIGRpcik7XG4gICAgICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGxpc3RUYWdnZWRGaWxlcyhmdWxsRGlyLCB0YWcpO1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgIGZpbGVzLm1hcCgoZikgPT4gZGVsZXRlSlNPTihwYXRoLmpvaW4oZnVsbERpciwgZikpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICAvLyBDbGVhbiB1cCBsb2NrIGZpbGVzIHVzZWQgZm9yIGF0b21pYyB0ZXJtaW5hbC1zdGF0ZSBndWFyZHNcbiAgICAgICAgYXdhaXQgZnNcbiAgICAgICAgICAucm0ocGF0aC5qb2luKGJhc2VkaXIsICcubG9ja3MnKSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgICAgLy8gRGVsZXRlIHRhZ2dlZCBzdHJlYW0gY2h1bmtzICgue3RhZ30uYmluIGZpbGVzKVxuICAgICAgICBjb25zdCBjaHVua3NEaXIgPSBwYXRoLmpvaW4oYmFzZWRpciwgJ3N0cmVhbXMnLCAnY2h1bmtzJyk7XG4gICAgICAgIGNvbnN0IHRhZ2dlZEJpbkZpbGVzID0gYXdhaXQgbGlzdFRhZ2dlZEZpbGVzQnlFeHRlbnNpb24oXG4gICAgICAgICAgY2h1bmtzRGlyLFxuICAgICAgICAgIHRhZyxcbiAgICAgICAgICAnLmJpbidcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgdGFnZ2VkQmluRmlsZXMubWFwKChmKSA9PlxuICAgICAgICAgICAgZnMudW5saW5rKHBhdGguam9pbihjaHVua3NEaXIsIGYpKS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIC8vIENsZWFyIHRoZSBpbi1tZW1vcnkgd3JpdGUgY2FjaGUgc28gZGVsZXRlZCBwYXRocyBhcmUgZm9yZ290dGVuXG4gICAgICAgIGNsZWFyQ3JlYXRlZEZpbGVzQ2FjaGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHJtKG1lcmdlZENvbmZpZy5kYXRhRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICAgIGF3YWl0IGluaXREYXRhRGlyKG1lcmdlZENvbmZpZy5kYXRhRGlyKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl19
|
package/dist/init.js
CHANGED
|
@@ -265,4 +265,4 @@ export async function initDataDir(dataDir) {
|
|
|
265
265
|
throw error;
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
|
-
//# sourceMappingURL=init.js.map
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpDLHVEQUF1RDtBQUN2RCxNQUFNLFlBQVksR0FBRyx1QkFBdUIsQ0FBQztBQU83QyxJQUFJLGlCQUFpQixHQUF1QixJQUFJLENBQUM7QUFFakQ7OztHQUdHO0FBQ0gsU0FBUyxZQUFZO0lBQ25CLHFFQUFxRTtJQUNyRSxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYztJQUNsQyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDdEIsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFDakMsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxFQUN2QyxPQUFPLENBQ1IsQ0FBQztZQUNGLGlCQUFpQixHQUFHLElBQUks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Q0FDakIsQ0FBQztRQUVGLE9BQU8sQ0FBQyxLQUFLLENBQ1gsK0RBQStELGFBQWEsQ0FBQyxVQUFVLENBQUMsT0FBTyxhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFDL0gsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUMvQyxDQUFDO1FBQ0YsT0FBTyxDQUFDLEtBQUssQ0FDWCxpRUFBaUU7WUFDL0QsdUJBQXVCLFdBQVcsQ0FBQyxJQUFJLElBQUksZUFBZSxFQUFFLENBQy9ELENBQUM7UUFFRixNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWNjZXNzLFxuICBjb25zdGFudHMsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgdW5saW5rLFxuICB3cml0ZUZpbGUsXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5cbi8qKiBQYWNrYWdlIG5hbWUgLSBoYXJkY29kZWQgc2luY2UgaXQgZG9lc24ndCBjaGFuZ2UgKi9cbmNvbnN0IFBBQ0tBR0VfTkFNRSA9ICdAd29ya2Zsb3cvd29ybGQtbG9jYWwnO1xuXG5pbnRlcmZhY2UgUGFja2FnZUluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbn1cblxubGV0IGNhY2hlZFBhY2thZ2VJbmZvOiBQYWNrYWdlSW5mbyB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIEdldCB0aGUgZGlyZWN0b3J5IHBhdGggZm9yIHRoaXMgbW9kdWxlLlxuICogV29ya3MgaW4gRVNNIGFuZCBmYWxscyBiYWNrIHRvIGEgY29uc3RhbnQgaW4gQ0pTIGNvbnRleHRzICh3aGljaCBzaG91bGRuJ3QgaGFwcGVuKVxuICovXG5mdW5jdGlvbiBnZXRNb2R1bGVEaXIoKTogc3RyaW5nIHwgbnVsbCB7XG4gIC8vIEluIGJ1bmRsZWQgQ0pTIGNvbnRleHRzLCBpbXBvcnQubWV0YS51cmwgbWF5IGJlIHVuZGVmaW5lZCBvciBlbXB0eVxuICBpZiAodHlwZW9mIGltcG9ydC5tZXRhLnVybCA9PT0gJ3N0cmluZycgJiYgaW1wb3J0Lm1ldGEudXJsKSB7XG4gICAgcmV0dXJuIHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhY2thZ2UgbmFtZSBhbmQgdmVyc2lvbiBmcm9tIHBhY2thZ2UuanNvbi5cbiAqIFRoZSByZXN1bHQgaXMgY2FjaGVkIGFmdGVyIHRoZSBmaXJzdCByZWFkLlxuICpcbiAqIEluIGJ1bmRsZWQgY29udGV4dHMgd2hlcmUgcGFja2FnZS5qc29uIGNhbm5vdCBiZSByZWFkLFxuICogcmV0dXJucyAnYnVuZGxlZCcgYXMgdGhlIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQYWNrYWdlSW5mbygpOiBQcm9taXNlPFBhY2thZ2VJbmZvPiB7XG4gIGlmIChjYWNoZWRQYWNrYWdlSW5mbykge1xuICAgIHJldHVybiBjYWNoZWRQYWNrYWdlSW5mbztcbiAgfVxuXG4gIGNvbnN0IG1vZHVsZURpciA9IGdldE1vZHVsZURpcigpO1xuICBpZiAobW9kdWxlRGlyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShcbiAgICAgICAgcGF0aC5qb2luKG1vZHVsZURpciwgJy4uL3BhY2thZ2UuanNvbicpLFxuICAgICAgICAndXRmLTgnXG4gICAgICApO1xuICAgICAgY2FjaGVkUGFja2FnZUluZm8gPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIFBhY2thZ2VJbmZvO1xuICAgICAgcmV0dXJuIGNhY2hlZFBhY2thZ2VJbmZvO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGJ1bmRsZWQgZmFsbGJhY2tcbiAgICB9XG4gIH1cblxuICAvLyBCdW5kbGVkIGNvbnRleHQgLSBwYWNrYWdlLmpzb24gbm90IGFjY2Vzc2libGVcbiAgY2FjaGVkUGFja2FnZUluZm8gPSB7XG4gICAgbmFtZTogUEFDS0FHRV9OQU1FLFxuICAgIHZlcnNpb246ICdidW5kbGVkJyxcbiAgfTtcbiAgcmV0dXJuIGNhY2hlZFBhY2thZ2VJbmZvO1xufVxuXG4vKiogRmlsZW5hbWUgZm9yIHN0b3JpbmcgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiB0aGUgZGF0YSBkaXJlY3RvcnkgKi9cbmNvbnN0IFZFUlNJT05fRklMRU5BTUUgPSAndmVyc2lvbi50eHQnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXJzZWQgc2VtYW50aWMgdmVyc2lvbiB3aXRoIG9wdGlvbmFsIHByZXJlbGVhc2UgdGFnLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFZlcnNpb24ge1xuICBtYWpvcjogbnVtYmVyO1xuICBtaW5vcjogbnVtYmVyO1xuICBwYXRjaDogbnVtYmVyO1xuICBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICByYXc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiB0aGUgZGF0YSBkaXJlY3RvcnkgY2Fubm90IGJlIGFjY2Vzc2VkIG9yIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhRGlyQWNjZXNzRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGRhdGFEaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgY29kZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGRhdGFEaXI6IHN0cmluZywgY29kZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdEYXRhRGlyQWNjZXNzRXJyb3InO1xuICAgIHRoaXMuZGF0YURpciA9IGRhdGFEaXI7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGRhdGEgZGlyZWN0b3J5IHZlcnNpb24gaXMgaW5jb21wYXRpYmxlLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YURpclZlcnNpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgb2xkVmVyc2lvbjogUGFyc2VkVmVyc2lvbjtcbiAgcmVhZG9ubHkgbmV3VmVyc2lvbjogUGFyc2VkVmVyc2lvbjtcbiAgcmVhZG9ubHkgc3VnZ2VzdGVkVmVyc2lvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgb2xkVmVyc2lvbjogUGFyc2VkVmVyc2lvbixcbiAgICBuZXdWZXJzaW9uOiBQYXJzZWRWZXJzaW9uLFxuICAgIHN1Z2dlc3RlZFZlcnNpb24/OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0RhdGFEaXJWZXJzaW9uRXJyb3InO1xuICAgIHRoaXMub2xkVmVyc2lvbiA9IG9sZFZlcnNpb247XG4gICAgdGhpcy5uZXdWZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgICB0aGlzLnN1Z2dlc3RlZFZlcnNpb24gPSBzdWdnZXN0ZWRWZXJzaW9uO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2VzIGEgdmVyc2lvbiBzdHJpbmcgaW50byBpdHMgY29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblN0cmluZyAtIFZlcnNpb24gc3RyaW5nIGxpa2UgXCI0LjAuMVwiIG9yIFwiNC4wLjEtYmV0YS4yMFwiXG4gKiBAcmV0dXJucyBQYXJzZWQgdmVyc2lvbiBvYmplY3Qgd2l0aCBtYWpvciwgbWlub3IsIHBhdGNoLCBhbmQgb3B0aW9uYWwgcHJlcmVsZWFzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWZXJzaW9uKHZlcnNpb25TdHJpbmc6IHN0cmluZyk6IFBhcnNlZFZlcnNpb24ge1xuICAvLyBNYXRjaDogbWFqb3IubWlub3IucGF0Y2ggd2l0aCBvcHRpb25hbCBwcmVyZWxlYXNlXG4gIGNvbnN0IG1hdGNoID0gdmVyc2lvblN0cmluZy5tYXRjaCgvXihcXGQrKVxcLihcXGQrKVxcLihcXGQrKSg/Oi0oLispKT8kLyk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB2ZXJzaW9uIHN0cmluZzogXCIke3ZlcnNpb25TdHJpbmd9XCJgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWFqb3I6IHBhcnNlSW50KG1hdGNoWzFdLCAxMCksXG4gICAgbWlub3I6IHBhcnNlSW50KG1hdGNoWzJdLCAxMCksXG4gICAgcGF0Y2g6IHBhcnNlSW50KG1hdGNoWzNdLCAxMCksXG4gICAgcHJlcmVsZWFzZTogbWF0Y2hbNF0sXG4gICAgcmF3OiB2ZXJzaW9uU3RyaW5nLFxuICB9O1xufVxuXG4vKipcbiAqIEZvcm1hdHMgYSBwYXJzZWQgdmVyc2lvbiBiYWNrIHRvIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VmVyc2lvbih2ZXJzaW9uOiBQYXJzZWRWZXJzaW9uKTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZSA9IGAke3ZlcnNpb24ubWFqb3J9LiR7dmVyc2lvbi5taW5vcn0uJHt2ZXJzaW9uLnBhdGNofWA7XG4gIHJldHVybiB2ZXJzaW9uLnByZXJlbGVhc2UgPyBgJHtiYXNlfS0ke3ZlcnNpb24ucHJlcmVsZWFzZX1gIDogYmFzZTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIHZlcnNpb24gZmlsZSBjb250ZW50IHRvIGV4dHJhY3QgcGFja2FnZSBuYW1lIGFuZCB2ZXJzaW9uLlxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gQ29udGVudCBsaWtlIFwiQHdvcmtmbG93L3dvcmxkLWxvY2FsQDQuMC4xLWJldGEuMjBcIlxuICogQHJldHVybnMgT2JqZWN0IHdpdGggcGFja2FnZU5hbWUgYW5kIHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmVyc2lvbkZpbGUoY29udGVudDogc3RyaW5nKToge1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBQYXJzZWRWZXJzaW9uO1xufSB7XG4gIGNvbnN0IHRyaW1tZWQgPSBjb250ZW50LnRyaW0oKTtcbiAgY29uc3QgbGFzdEF0SW5kZXggPSB0cmltbWVkLmxhc3RJbmRleE9mKCdAJyk7XG5cbiAgaWYgKGxhc3RBdEluZGV4IDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmVyc2lvbiBmaWxlIGNvbnRlbnQ6IFwiJHtjb250ZW50fVwiYCk7XG4gIH1cblxuICBjb25zdCBwYWNrYWdlTmFtZSA9IHRyaW1tZWQuc3Vic3RyaW5nKDAsIGxhc3RBdEluZGV4KTtcbiAgY29uc3QgdmVyc2lvblN0cmluZyA9IHRyaW1tZWQuc3Vic3RyaW5nKGxhc3RBdEluZGV4ICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBwYWNrYWdlTmFtZSxcbiAgICB2ZXJzaW9uOiBwYXJzZVZlcnNpb24odmVyc2lvblN0cmluZyksXG4gIH07XG59XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgdmVyc2lvbiBmaWxlIGNvbnRlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRWZXJzaW9uRmlsZShcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgdmVyc2lvbjogUGFyc2VkVmVyc2lvblxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3BhY2thZ2VOYW1lfUAke2Zvcm1hdFZlcnNpb24odmVyc2lvbil9YDtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIHZlcnNpb24gdXBncmFkZXMgYmV0d2VlbiBvbGQgYW5kIG5ldyB2ZXJzaW9ucy5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIGRhdGEgZGlyZWN0b3J5IHdhcyBjcmVhdGVkIHdpdGggYSBkaWZmZXJlbnQgdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gb2xkVmVyc2lvbiAtIFRoZSB2ZXJzaW9uIHRoYXQgY3JlYXRlZCB0aGUgZGF0YSBkaXJlY3RvcnlcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uXG4gKiBAdGhyb3dzIHtEYXRhRGlyVmVyc2lvbkVycm9yfSBJZiB0aGUgdmVyc2lvbnMgYXJlIGluY29tcGF0aWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBncmFkZVZlcnNpb24oXG4gIG9sZFZlcnNpb246IFBhcnNlZFZlcnNpb24sXG4gIG5ld1ZlcnNpb246IFBhcnNlZFZlcnNpb25cbik6IHZvaWQge1xuICBjb25zb2xlLmxvZyhcbiAgICBgW3dvcmxkLWxvY2FsXSBVcGdyYWRpbmcgZnJvbSB2ZXJzaW9uICR7Zm9ybWF0VmVyc2lvbihvbGRWZXJzaW9uKX0gdG8gJHtmb3JtYXRWZXJzaW9uKG5ld1ZlcnNpb24pfWBcbiAgKTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoZSBkYXRhIGRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIHdyaXRhYmxlLlxuICogQ3JlYXRlcyB0aGUgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gKlxuICogQHBhcmFtIGRhdGFEaXIgLSBUaGUgcGF0aCB0byB0aGUgZGF0YSBkaXJlY3RvcnlcbiAqIEB0aHJvd3Mge0RhdGFEaXJBY2Nlc3NFcnJvcn0gSWYgdGhlIGRpcmVjdG9yeSBjYW5ub3QgYmUgY3JlYXRlZCBvciBhY2Nlc3NlZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlRGF0YURpcihkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYWJzb2x1dGVQYXRoID0gcGF0aC5yZXNvbHZlKGRhdGFEaXIpO1xuXG4gIC8vIFRyeSB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gIHRyeSB7XG4gICAgYXdhaXQgbWtkaXIoYWJzb2x1dGVQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBjb25zdCBub2RlRXJyb3IgPSBlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb247XG4gICAgLy8gRUVYSVNUIGlzIGZpbmUgLSBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHNcbiAgICBpZiAobm9kZUVycm9yLmNvZGUgIT09ICdFRVhJU1QnKSB7XG4gICAgICB0aHJvdyBuZXcgRGF0YURpckFjY2Vzc0Vycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGNyZWF0ZSBkYXRhIGRpcmVjdG9yeSBcIiR7YWJzb2x1dGVQYXRofVwiOiAke25vZGVFcnJvci5tZXNzYWdlfWAsXG4gICAgICAgIGFic29sdXRlUGF0aCxcbiAgICAgICAgbm9kZUVycm9yLmNvZGVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBkaXJlY3RvcnkgaXMgYWNjZXNzaWJsZSAocmVhZGFibGUpXG4gIHRyeSB7XG4gICAgYXdhaXQgYWNjZXNzKGFic29sdXRlUGF0aCwgY29uc3RhbnRzLlJfT0spO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGNvbnN0IG5vZGVFcnJvciA9IGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbjtcbiAgICB0aHJvdyBuZXcgRGF0YURpckFjY2Vzc0Vycm9yKFxuICAgICAgYERhdGEgZGlyZWN0b3J5IFwiJHthYnNvbHV0ZVBhdGh9XCIgaXMgbm90IHJlYWRhYmxlOiAke25vZGVFcnJvci5tZXNzYWdlfWAsXG4gICAgICBhYnNvbHV0ZVBhdGgsXG4gICAgICBub2RlRXJyb3IuY29kZVxuICAgICk7XG4gIH1cblxuICAvLyBWZXJpZnkgdGhlIGRpcmVjdG9yeSBpcyB3cml0YWJsZSBieSBhdHRlbXB0aW5nIHRvIHdyaXRlIGEgdGVtcCBmaWxlXG4gIGNvbnN0IHRlc3RGaWxlID0gcGF0aC5qb2luKFxuICAgIGFic29sdXRlUGF0aCxcbiAgICBgLndvcmtmbG93LXdyaXRlLXRlc3QtJHtEYXRlLm5vdygpfWBcbiAgKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB3cml0ZUZpbGUodGVzdEZpbGUsICcnKTtcbiAgICAvLyBDbGVhbiB1cCB0ZXN0IGZpbGUg4oCUIEVOT0VOVCBkdXJpbmcgY2xlYW51cCBpcyBoYXJtbGVzcyAobWF5IHJhY2VcbiAgICAvLyB3aXRoIGFub3RoZXIgcHJvY2VzcyBwZXJmb3JtaW5nIHRoZSBzYW1lIGNoZWNrIGNvbmN1cnJlbnRseSlcbiAgICBhd2FpdCB1bmxpbmsodGVzdEZpbGUpLmNhdGNoKChlOiBOb2RlSlMuRXJybm9FeGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChlLmNvZGUgIT09ICdFTk9FTlQnKSB0aHJvdyBlO1xuICAgIH0pO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGNvbnN0IG5vZGVFcnJvciA9IGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbjtcbiAgICB0aHJvdyBuZXcgRGF0YURpckFjY2Vzc0Vycm9yKFxuICAgICAgYERhdGEgZGlyZWN0b3J5IFwiJHthYnNvbHV0ZVBhdGh9XCIgaXMgbm90IHdyaXRhYmxlOiAke25vZGVFcnJvci5tZXNzYWdlfWAsXG4gICAgICBhYnNvbHV0ZVBhdGgsXG4gICAgICBub2RlRXJyb3IuY29kZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgdmVyc2lvbiBmcm9tIHRoZSBkYXRhIGRpcmVjdG9yeSdzIHZlcnNpb24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gZGF0YURpciAtIFBhdGggdG8gdGhlIGRhdGEgZGlyZWN0b3J5XG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHZlcnNpb24gaW5mbywgb3IgbnVsbCBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlYWRWZXJzaW9uRmlsZShkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHtcbiAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogUGFyc2VkVmVyc2lvbjtcbn0gfCBudWxsPiB7XG4gIGNvbnN0IHZlcnNpb25GaWxlUGF0aCA9IHBhdGguam9pbihwYXRoLnJlc29sdmUoZGF0YURpciksIFZFUlNJT05fRklMRU5BTUUpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHZlcnNpb25GaWxlUGF0aCwgJ3V0Zi04Jyk7XG4gICAgcmV0dXJuIHBhcnNlVmVyc2lvbkZpbGUoY29udGVudCk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgY29uc3Qgbm9kZUVycm9yID0gZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uO1xuICAgIGlmIChub2RlRXJyb3IuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIFdyaXRlcyB0aGUgY3VycmVudCB2ZXJzaW9uIHRvIHRoZSBkYXRhIGRpcmVjdG9yeSdzIHZlcnNpb24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gZGF0YURpciAtIFBhdGggdG8gdGhlIGRhdGEgZGlyZWN0b3J5XG4gKiBAcGFyYW0gdmVyc2lvbiAtIFRoZSB2ZXJzaW9uIHRvIHdyaXRlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlVmVyc2lvbkZpbGUoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgdmVyc2lvbjogUGFyc2VkVmVyc2lvblxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHZlcnNpb25GaWxlUGF0aCA9IHBhdGguam9pbihwYXRoLnJlc29sdmUoZGF0YURpciksIFZFUlNJT05fRklMRU5BTUUpO1xuICBjb25zdCBwYWNrYWdlSW5mbyA9IGF3YWl0IGdldFBhY2thZ2VJbmZvKCk7XG4gIGNvbnN0IGNvbnRlbnQgPSBmb3JtYXRWZXJzaW9uRmlsZShwYWNrYWdlSW5mby5uYW1lLCB2ZXJzaW9uKTtcbiAgYXdhaXQgd3JpdGVGaWxlKHZlcnNpb25GaWxlUGF0aCwgY29udGVudCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgc3VnZ2VzdGVkIGRvd25ncmFkZSB2ZXJzaW9uIGJhc2VkIG9uIHRoZSBvbGQgdmVyc2lvbi5cbiAqIElmIGEgc3BlY2lmaWMgdmVyc2lvbiBpcyBzdWdnZXN0ZWQgaW4gdGhlIGVycm9yLCB1c2UgdGhhdC5cbiAqIE90aGVyd2lzZSwgc3VnZ2VzdCB0aGUgcHJldmlvdXMgbWlub3IgdmVyc2lvbiBpZiBwYXRjaCBpcyAwLFxuICogb3IgcHJldmlvdXMgbWFqb3IgdmVyc2lvbiBpZiBtaW5vciBpcyBhbHNvIDAuXG4gKi9cbmZ1bmN0aW9uIGdldFN1Z2dlc3RlZERvd25ncmFkZVZlcnNpb24oXG4gIG9sZFZlcnNpb246IFBhcnNlZFZlcnNpb24sXG4gIHN1Z2dlc3RlZFZlcnNpb24/OiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGlmIChzdWdnZXN0ZWRWZXJzaW9uKSB7XG4gICAgcmV0dXJuIHN1Z2dlc3RlZFZlcnNpb247XG4gIH1cblxuICAvLyBTdWdnZXN0IHRoZSBvbGQgdmVyc2lvbiBhcyB0aGUgZG93bmdyYWRlIHRhcmdldFxuICByZXR1cm4gZm9ybWF0VmVyc2lvbihvbGRWZXJzaW9uKTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgZGF0YSBkaXJlY3RvcnksIGVuc3VyaW5nIGl0IGV4aXN0cywgaXMgYWNjZXNzaWJsZSxcbiAqIGFuZCBoYW5kbGVzIHZlcnNpb24gY29tcGF0aWJpbGl0eS5cbiAqXG4gKiBAcGFyYW0gZGF0YURpciAtIFRoZSBwYXRoIHRvIHRoZSBkYXRhIGRpcmVjdG9yeVxuICogQHRocm93cyB7RGF0YURpckFjY2Vzc0Vycm9yfSBJZiB0aGUgZGlyZWN0b3J5IGNhbm5vdCBiZSBjcmVhdGVkIG9yIGFjY2Vzc2VkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0RGF0YURpcihkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gRmlyc3QgZW5zdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzIGFuZCBpcyBhY2Nlc3NpYmxlXG4gIGF3YWl0IGVuc3VyZURhdGFEaXIoZGF0YURpcik7XG5cbiAgY29uc3QgcGFja2FnZUluZm8gPSBhd2FpdCBnZXRQYWNrYWdlSW5mbygpO1xuICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IHBhcnNlVmVyc2lvbihwYWNrYWdlSW5mby52ZXJzaW9uKTtcblxuICAvLyBSZWFkIGV4aXN0aW5nIHZlcnNpb24gZmlsZVxuICBjb25zdCBleGlzdGluZ1ZlcnNpb25JbmZvID0gYXdhaXQgcmVhZFZlcnNpb25GaWxlKGRhdGFEaXIpO1xuXG4gIGlmIChleGlzdGluZ1ZlcnNpb25JbmZvID09PSBudWxsKSB7XG4gICAgLy8gTmV3IGRhdGEgZGlyZWN0b3J5IC0gd3JpdGUgdGhlIGN1cnJlbnQgdmVyc2lvblxuICAgIGF3YWl0IHdyaXRlVmVyc2lvbkZpbGUoZGF0YURpciwgY3VycmVudFZlcnNpb24pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHsgdmVyc2lvbjogb2xkVmVyc2lvbiB9ID0gZXhpc3RpbmdWZXJzaW9uSW5mbztcblxuICAvLyBDaGVjayBpZiB2ZXJzaW9ucyBhcmUgdGhlIHNhbWUgKG5vIHVwZ3JhZGUgbmVlZGVkKVxuICBpZiAoZm9ybWF0VmVyc2lvbihvbGRWZXJzaW9uKSA9PT0gZm9ybWF0VmVyc2lvbihjdXJyZW50VmVyc2lvbikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBBdHRlbXB0IHVwZ3JhZGVcbiAgdHJ5IHtcbiAgICB1cGdyYWRlVmVyc2lvbihvbGRWZXJzaW9uLCBjdXJyZW50VmVyc2lvbik7XG4gICAgLy8gVXBncmFkZSBzdWNjZWVkZWQgLSB3cml0ZSB0aGUgbmV3IHZlcnNpb25cbiAgICBhd2FpdCB3cml0ZVZlcnNpb25GaWxlKGRhdGFEaXIsIGN1cnJlbnRWZXJzaW9uKTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBjb25zdCBzdWdnZXN0ZWRWZXJzaW9uID1cbiAgICAgIGVycm9yIGluc3RhbmNlb2YgRGF0YURpclZlcnNpb25FcnJvciA/IGVycm9yLnN1Z2dlc3RlZFZlcnNpb24gOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkb3duZ3JhZGVUYXJnZXQgPSBnZXRTdWdnZXN0ZWREb3duZ3JhZGVWZXJzaW9uKFxuICAgICAgb2xkVmVyc2lvbixcbiAgICAgIHN1Z2dlc3RlZFZlcnNpb25cbiAgICApO1xuXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBbd29ybGQtbG9jYWxdIEZhaWxlZCB0byB1cGdyYWRlIGRhdGEgZGlyZWN0b3J5IGZyb20gdmVyc2lvbiAke2Zvcm1hdFZlcnNpb24ob2xkVmVyc2lvbil9IHRvICR7Zm9ybWF0VmVyc2lvbihjdXJyZW50VmVyc2lvbil9OmAsXG4gICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IGVycm9yXG4gICAgKTtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYFt3b3JsZC1sb2NhbF0gRGF0YSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24uIGAgK1xuICAgICAgICBgUGxlYXNlIGRvd25ncmFkZSB0byAke3BhY2thZ2VJbmZvLm5hbWV9QCR7ZG93bmdyYWRlVGFyZ2V0fWBcbiAgICApO1xuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cbiJdfQ==
|
package/dist/instrumentObject.js
CHANGED
|
@@ -63,4 +63,4 @@ export function instrumentObject(prefix, o) {
|
|
|
63
63
|
}
|
|
64
64
|
return handlers;
|
|
65
65
|
}
|
|
66
|
-
//# sourceMappingURL=
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudE9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnN0cnVtZW50T2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFDTCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLGlEQUFpRDtBQUNqRCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLFVBQVUsRUFBRSxhQUFhO0NBQzFCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLElBQWU7SUFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQTRCLENBQUM7UUFDaEQsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFtQixNQUFjLEVBQUUsQ0FBSTtJQUNyRSxNQUFNLFFBQVEsR0FBRyxFQUFPLENBQUM7SUFDekIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBZ0IsRUFBRSxDQUFDO1FBQ2hELElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDakMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsK0NBQStDO1lBQy9DLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxJQUFlLEVBQUUsRUFBRTtnQkFDM0MsOERBQThEO2dCQUM5RCxJQUFJLFFBQVEsR0FBRyxHQUFHLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxNQUFNLEtBQUssY0FBYyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDekQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLElBQUksU0FBUyxFQUFFLENBQUM7d0JBQ2QsUUFBUSxHQUFHLEdBQUcsTUFBTSxJQUFJLFVBQVUsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDcEQsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU8sS0FBSyxDQUNWLFFBQVEsRUFDUixFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUN2QyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7b0JBQ2IsK0NBQStDO29CQUMvQyxzRUFBc0U7b0JBQ3RFLElBQUksRUFBRSxhQUFhLENBQUM7d0JBQ2xCLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQzt3QkFDL0MsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDO3dCQUMzQyxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7d0JBQzdDLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztxQkFDdkIsQ0FBQyxDQUFDO29CQUNILE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsQ0FDRixDQUFDO1lBQ0osQ0FBQyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXR5IHRvIGluc3RydW1lbnQgb2JqZWN0IG1ldGhvZHMgd2l0aCB0cmFjaW5nLlxuICogVGhpcyBtaXJyb3JzIHdvcmxkLXZlcmNlbCdzIGltcGxlbWVudGF0aW9uIGZvciBjb25zaXN0ZW50IG9ic2VydmFiaWxpdHkuXG4gKi9cbmltcG9ydCB7XG4gIHRyYWNlLFxuICBnZXRTcGFuS2luZCxcbiAgUGVlclNlcnZpY2UsXG4gIFJwY1N5c3RlbSxcbiAgUnBjU2VydmljZSxcbiAgUnBjTWV0aG9kLFxufSBmcm9tICcuL3RlbGVtZXRyeS5qcyc7XG5cbi8qKiBDb25maWd1cmF0aW9uIGZvciBwZWVyIHNlcnZpY2UgYXR0cmlidXRpb24gKi9cbmNvbnN0IFdPUkxEX0xPQ0FMX1NFUlZJQ0UgPSB7XG4gIHBlZXJTZXJ2aWNlOiAnd29ybGQtbG9jYWwnLFxuICBycGNTeXN0ZW06ICdsb2NhbCcsXG4gIHJwY1NlcnZpY2U6ICd3b3JsZC1sb2NhbCcsXG59O1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBldmVudCB0eXBlIGZyb20gYXJndW1lbnRzIGZvciBldmVudHMuY3JlYXRlIGNhbGxzLlxuICogVGhlIGV2ZW50IGRhdGEgaXMgdGhlIHNlY29uZCBhcmd1bWVudCBhbmQgY29udGFpbnMgZXZlbnRUeXBlLlxuICovXG5mdW5jdGlvbiBleHRyYWN0RXZlbnRUeXBlKGFyZ3M6IHVua25vd25bXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChhcmdzLmxlbmd0aCA+PSAyICYmIHR5cGVvZiBhcmdzWzFdID09PSAnb2JqZWN0JyAmJiBhcmdzWzFdICE9PSBudWxsKSB7XG4gICAgY29uc3QgZGF0YSA9IGFyZ3NbMV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaWYgKHR5cGVvZiBkYXRhLmV2ZW50VHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhLmV2ZW50VHlwZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBXcmFwcyBhbGwgbWV0aG9kcyBvZiBhbiBvYmplY3Qgd2l0aCB0cmFjaW5nIHNwYW5zLlxuICogQHBhcmFtIHByZWZpeCAtIFByZWZpeCBmb3Igc3BhbiBuYW1lcyAoZS5nLiwgXCJ3b3JsZC5ydW5zXCIpXG4gKiBAcGFyYW0gbyAtIE9iamVjdCB3aXRoIG1ldGhvZHMgdG8gaW5zdHJ1bWVudFxuICogQHJldHVybnMgSW5zdHJ1bWVudGVkIG9iamVjdCB3aXRoIHNhbWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0cnVtZW50T2JqZWN0PFQgZXh0ZW5kcyBvYmplY3Q+KHByZWZpeDogc3RyaW5nLCBvOiBUKTogVCB7XG4gIGNvbnN0IGhhbmRsZXJzID0ge30gYXMgVDtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobykgYXMgKGtleW9mIFQpW10pIHtcbiAgICBpZiAodHlwZW9mIG9ba2V5XSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaGFuZGxlcnNba2V5XSA9IG9ba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZiA9IG9ba2V5XTtcbiAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBTdHJpbmcoa2V5KTtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBkeW5hbWljIGZ1bmN0aW9uIHdyYXBwaW5nXG4gICAgICBoYW5kbGVyc1trZXldID0gYXN5bmMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAvLyBCdWlsZCBzcGFuIG5hbWUgLSBmb3IgZXZlbnRzLmNyZWF0ZSwgaW5jbHVkZSB0aGUgZXZlbnQgdHlwZVxuICAgICAgICBsZXQgc3Bhbk5hbWUgPSBgJHtwcmVmaXh9LiR7bWV0aG9kTmFtZX1gO1xuICAgICAgICBpZiAocHJlZml4ID09PSAnd29ybGQuZXZlbnRzJyAmJiBtZXRob2ROYW1lID09PSAnY3JlYXRlJykge1xuICAgICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV4dHJhY3RFdmVudFR5cGUoYXJncyk7XG4gICAgICAgICAgaWYgKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgc3Bhbk5hbWUgPSBgJHtwcmVmaXh9LiR7bWV0aG9kTmFtZX0gJHtldmVudFR5cGV9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJhY2UoXG4gICAgICAgICAgc3Bhbk5hbWUsXG4gICAgICAgICAgeyBraW5kOiBhd2FpdCBnZXRTcGFuS2luZCgnSU5URVJOQUwnKSB9LFxuICAgICAgICAgIGFzeW5jIChzcGFuKSA9PiB7XG4gICAgICAgICAgICAvLyBBZGQgcGVlciBzZXJ2aWNlIGF0dHJpYnV0ZXMgZm9yIHNlcnZpY2UgbWFwc1xuICAgICAgICAgICAgLy8gVXNlIHNwYW5OYW1lIGZvciBycGMubWV0aG9kIHNvIERhdGFkb2cgc2hvd3MgZXZlbnQgdHlwZSBpbiByZXNvdXJjZVxuICAgICAgICAgICAgc3Bhbj8uc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgIC4uLlBlZXJTZXJ2aWNlKFdPUkxEX0xPQ0FMX1NFUlZJQ0UucGVlclNlcnZpY2UpLFxuICAgICAgICAgICAgICAuLi5ScGNTeXN0ZW0oV09STERfTE9DQUxfU0VSVklDRS5ycGNTeXN0ZW0pLFxuICAgICAgICAgICAgICAuLi5ScGNTZXJ2aWNlKFdPUkxEX0xPQ0FMX1NFUlZJQ0UucnBjU2VydmljZSksXG4gICAgICAgICAgICAgIC4uLlJwY01ldGhvZChzcGFuTmFtZSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBmKC4uLmFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBoYW5kbGVycztcbn1cbiJdfQ==
|
package/dist/queue.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { type Queue } from '@workflow/world';
|
|
1
|
+
import { type Queue, type QueuePrefix } from '@workflow/world';
|
|
2
2
|
import type { Config } from './config.js';
|
|
3
3
|
export type DirectHandler = (req: Request) => Promise<Response>;
|
|
4
4
|
export type LocalQueue = Queue & {
|
|
5
5
|
/** Close the HTTP agent and release resources. */
|
|
6
6
|
close(): Promise<void>;
|
|
7
7
|
/** Register a direct in-process handler for a queue prefix, bypassing HTTP. */
|
|
8
|
-
registerHandler(prefix:
|
|
8
|
+
registerHandler(prefix: QueuePrefix, handler: DirectHandler): void;
|
|
9
9
|
};
|
|
10
10
|
export declare function createQueue(config: Partial<Config>): LocalQueue;
|
|
11
11
|
//# sourceMappingURL=queue.d.ts.map
|
package/dist/queue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAiD1C,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEhE,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG;IAC/B,kDAAkD;IAClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,+EAA+E;IAC/E,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CACpE,CAAC;AAsCF,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,CAiQ/D"}
|
package/dist/queue.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { setTimeout } from 'node:timers/promises';
|
|
2
|
-
import { MessageId, ValidQueueName } from '@workflow/world';
|
|
2
|
+
import { MessageId, parseQueueName, ValidQueueName, } from '@workflow/world';
|
|
3
3
|
import { Sema } from 'async-sema';
|
|
4
4
|
import { monotonicFactory } from 'ulid';
|
|
5
5
|
import { Agent } from 'undici';
|
|
@@ -62,13 +62,11 @@ function isDetachedArrayBufferQueueError(error) {
|
|
|
62
62
|
return false;
|
|
63
63
|
}
|
|
64
64
|
function getQueueRoute(queueName) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
throw new Error('Unknown queue name prefix');
|
|
65
|
+
const { kind, prefix } = parseQueueName(queueName);
|
|
66
|
+
return {
|
|
67
|
+
pathname: kind === 'workflow' ? 'flow' : 'step',
|
|
68
|
+
prefix,
|
|
69
|
+
};
|
|
72
70
|
}
|
|
73
71
|
export function createQueue(config) {
|
|
74
72
|
// Create a custom agent optimized for high-concurrency local workflows:
|
|
@@ -279,4 +277,4 @@ export function createQueue(config) {
|
|
|
279
277
|
},
|
|
280
278
|
};
|
|
281
279
|
}
|
|
282
|
-
//# sourceMappingURL=queue.js.map
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFDTCxTQUFTLEVBQ1QsY0FBYyxFQUdkLGNBQWMsR0FDZixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUzQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFM0M7Ozs7R0FJRztBQUNILE1BQU0sa0JBQWtCO0lBQ2IsV0FBVyxHQUFHLGtCQUFrQixDQUFDO0lBRTFDLFNBQVMsQ0FBQyxLQUFjO1FBQ3RCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQWtDO1FBQ2xELE1BQU0sTUFBTSxHQUFpQixFQUFFLENBQUM7UUFDaEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVDLElBQUksSUFBSTtnQkFB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Q3JDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQTZCLEtBQUssSUFBSSxFQUFFO1FBQzNELE1BQU0sV0FBVyxHQUFHLE1BQU0sY0FBYyxFQUFFLENBQUM7UUFDM0MsT0FBTyxhQUFhLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QyxDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsS0FBSztRQUNMLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsZUFBZSxDQUFDLE1BQW1CLEVBQUUsT0FBc0I7WUFDekQsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELEtBQUssQ0FBQyxLQUFLO1lBQ1QsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2V0VGltZW91dCB9IGZyb20gJ25vZGU6dGltZXJzL3Byb21pc2VzJztcbmltcG9ydCB0eXBlIHsgVHJhbnNwb3J0IH0gZnJvbSAnQHZlcmNlbC9xdWV1ZSc7XG5pbXBvcnQge1xuICBNZXNzYWdlSWQsXG4gIHBhcnNlUXVldWVOYW1lLFxuICB0eXBlIFF1ZXVlLFxuICB0eXBlIFF1ZXVlUHJlZml4LFxuICBWYWxpZFF1ZXVlTmFtZSxcbn0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IFNlbWEgfSBmcm9tICdhc3luYy1zZW1hJztcbmltcG9ydCB7IG1vbm90b25pY0ZhY3RvcnkgfSBmcm9tICd1bGlkJztcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAndW5kaWNpJztcbmltcG9ydCB7IHogfSBmcm9tICd6b2QvdjQnO1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tICcuL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyByZXNvbHZlQmFzZVVybCB9IGZyb20gJy4vY29uZmlnLmpzJztcbmltcG9ydCB7IGpzb25SZXBsYWNlciwganNvblJldml2ZXIgfSBmcm9tICcuL2ZzLmpzJztcbmltcG9ydCB7IGdldFBhY2thZ2VJbmZvIH0gZnJvbSAnLi9pbml0LmpzJztcblxuLyoqXG4gKiBKU09OIHRyYW5zcG9ydCB0aGF0IHByZXNlcnZlcyBVaW50OEFycmF5IHZhbHVlcyB1c2luZyB0aGUgc2FtZVxuICogcmVwbGFjZXIvcmV2aXZlciB0aGF0IHdvcmxkLWxvY2FsIHVzZXMgZm9yIGZpbGVzeXN0ZW0gc3RvcmFnZS5cbiAqIFVpbnQ4QXJyYXkg4oaSIHsgX190eXBlOiAnVWludDhBcnJheScsIGRhdGE6ICc8YmFzZTY0PicgfSBpbiBKU09OLlxuICovXG5jbGFzcyBUeXBlZEpzb25UcmFuc3BvcnQgaW1wbGVtZW50cyBUcmFuc3BvcnQ8dW5rbm93bj4ge1xuICByZWFkb25seSBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi9qc29uJztcblxuICBzZXJpYWxpemUodmFsdWU6IHVua25vd24pOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeSh2YWx1ZSwganNvblJlcGxhY2VyKSk7XG4gIH1cblxuICBhc3luYyBkZXNlcmlhbGl6ZShzdHJlYW06IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+KTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgY29uc3QgY2h1bmtzOiBVaW50OEFycmF5W10gPSBbXTtcbiAgICBjb25zdCByZWFkZXIgPSBzdHJlYW0uZ2V0UmVhZGVyKCk7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7XG4gICAgICBpZiAoZG9uZSkgYnJlYWs7XG4gICAgICBpZiAodmFsdWUpIGNodW5rcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgdGV4dCA9IEJ1ZmZlci5jb25jYXQoY2h1bmtzKS50b1N0cmluZygpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKHRleHQsIGpzb25SZXZpdmVyKTtcbiAgfVxufVxuXG4vLyBGb3IgbG9jYWwgcXVldWUsIHRoZXJlIGlzIG5vIHRlY2huaWNhbCBsaW1pdCBvbiB0aGUgbWVzc2FnZSB2aXNpYmlsaXR5IGxpZmVzcGFuLFxuLy8gYnV0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyB0byBzZXQgYSBtYXggdmlzaWJpbGl0eSBsaW1pdC5cbmNvbnN0IExPQ0FMX1FVRVVFX01BWF9WSVNJQklMSVRZID1cbiAgcGFyc2VJbnQocHJvY2Vzcy5lbnYuV09SS0ZMT1dfTE9DQUxfUVVFVUVfTUFYX1ZJU0lCSUxJVFkgPz8gJzAnLCAxMCkgfHxcbiAgSW5maW5pdHk7XG5cbi8vIE1heGltdW0gc2FmZSBkZWxheSBmb3Igc2V0VGltZW91dCBpbiBOb2RlLmpzICgyXjMxIC0gMSBtaWxsaXNlY29uZHMg4omIIDI0Ljg1IGRheXMpXG4vLyBMYXJnZXIgdmFsdWVzIGNhdXNlIFwiVGltZW91dE92ZXJmbG93V2FybmluZzogWCBkb2VzIG5vdCBmaXQgaW50byBhIDMyLWJpdCBzaWduZWQgaW50ZWdlclwiXG4vLyBXaGVuIHRoZSBjbGFtcGVkIHRpbWVvdXQgZmlyZXMsIHRoZSBoYW5kbGVyIHdpbGwgcmVjYWxjdWxhdGUgcmVtYWluaW5nIHRpbWUgZnJvbVxuLy8gcGVyc2lzdGVudCBzdGF0ZSBhbmQgcmV0dXJuIGFub3RoZXIgdGltZW91dFNlY29uZHMgaWYgbmVlZGVkLlxuY29uc3QgTUFYX1NBRkVfVElNRU9VVF9NUyA9IDIxNDc0ODM2NDc7XG5cbi8vIFRoZSBsb2NhbCB3b3JrZXJzIHNoYXJlIHRoZSBzYW1lIE5vZGUuanMgcHJvY2VzcyBhbmQgZXZlbnQgbG9vcCxcbi8vIHNvIHdlIG5lZWQgdG8gbGltaXQgY29uY3VycmVuY3kgdG8gYXZvaWQgb3ZlcndoZWxtaW5nIHRoZSBzeXN0ZW0uXG5jb25zdCBERUZBVUxUX0NPTkNVUlJFTkNZX0xJTUlUID0gMTAwMDtcbmNvbnN0IFdPUktGTE9XX0xPQ0FMX1FVRVVFX0NPTkNVUlJFTkNZID1cbiAgcGFyc2VJbnQocHJvY2Vzcy5lbnYuV09SS0ZMT1dfTE9DQUxfUVVFVUVfQ09OQ1VSUkVOQ1kgPz8gJzAnLCAxMCkgfHxcbiAgREVGQVVMVF9DT05DVVJSRU5DWV9MSU1JVDtcblxuZXhwb3J0IHR5cGUgRGlyZWN0SGFuZGxlciA9IChyZXE6IFJlcXVlc3QpID0+IFByb21pc2U8UmVzcG9uc2U+O1xuXG5leHBvcnQgdHlwZSBMb2NhbFF1ZXVlID0gUXVldWUgJiB7XG4gIC8qKiBDbG9zZSB0aGUgSFRUUCBhZ2VudCBhbmQgcmVsZWFzZSByZXNvdXJjZXMuICovXG4gIGNsb3NlKCk6IFByb21pc2U8dm9pZD47XG4gIC8qKiBSZWdpc3RlciBhIGRpcmVjdCBpbi1wcm9jZXNzIGhhbmRsZXIgZm9yIGEgcXVldWUgcHJlZml4LCBieXBhc3NpbmcgSFRUUC4gKi9cbiAgcmVnaXN0ZXJIYW5kbGVyKHByZWZpeDogUXVldWVQcmVmaXgsIGhhbmRsZXI6IERpcmVjdEhhbmRsZXIpOiB2b2lkO1xufTtcblxuY29uc3QgREVUQUNIRURfQVJSQVlCVUZGRVJfRVJST1IgPVxuICAnQ2Fubm90IHBlcmZvcm0gQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlIG9uIGEgZGV0YWNoZWQgQXJyYXlCdWZmZXInO1xuY29uc3QgUFJPWFlfSEFORExFUl9ET0NTX1VSTCA9XG4gICdodHRwczovL3dvcmtmbG93LXNkay5kZXYvZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvbmV4dCNjb25maWd1cmUtcHJveHktaGFuZGxlcic7XG5cbmZ1bmN0aW9uIGlzRGV0YWNoZWRBcnJheUJ1ZmZlclF1ZXVlRXJyb3IoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgbGV0IGN1cnJlbnQgPSBlcnJvcjtcbiAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQ8dW5rbm93bj4oKTtcblxuICB3aGlsZSAoY3VycmVudCAmJiB0eXBlb2YgY3VycmVudCA9PT0gJ29iamVjdCcgJiYgIXZpc2l0ZWQuaGFzKGN1cnJlbnQpKSB7XG4gICAgdmlzaXRlZC5hZGQoY3VycmVudCk7XG4gICAgaWYgKFxuICAgICAgJ21lc3NhZ2UnIGluIGN1cnJlbnQgJiZcbiAgICAgIHR5cGVvZiBjdXJyZW50Lm1lc3NhZ2UgPT09ICdzdHJpbmcnICYmXG4gICAgICBjdXJyZW50Lm1lc3NhZ2UuaW5jbHVkZXMoREVUQUNIRURfQVJSQVlCVUZGRVJfRVJST1IpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY3VycmVudCA9ICdjYXVzZScgaW4gY3VycmVudCA/IGN1cnJlbnQuY2F1c2UgOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldFF1ZXVlUm91dGUocXVldWVOYW1lOiBWYWxpZFF1ZXVlTmFtZSk6IHtcbiAgcGF0aG5hbWU6ICdmbG93JyB8ICdzdGVwJztcbiAgcHJlZml4OiBRdWV1ZVByZWZpeDtcbn0ge1xuICBjb25zdCB7IGtpbmQsIHByZWZpeCB9ID0gcGFyc2VRdWV1ZU5hbWUocXVldWVOYW1lKTtcblxuICByZXR1cm4ge1xuICAgIHBhdGhuYW1lOiBraW5kID09PSAnd29ya2Zsb3cnID8gJ2Zsb3cnIDogJ3N0ZXAnLFxuICAgIHByZWZpeCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVF1ZXVlKGNvbmZpZzogUGFydGlhbDxDb25maWc+KTogTG9jYWxRdWV1ZSB7XG4gIC8vIENyZWF0ZSBhIGN1c3RvbSBhZ2VudCBvcHRpbWl6ZWQgZm9yIGhpZ2gtY29uY3VycmVuY3kgbG9jYWwgd29ya2Zsb3dzOlxuICAvLyAtIGhlYWRlcnNUaW1lb3V0OiAwIGFsbG93cyBsb25nLXJ1bm5pbmcgc3RlcHNcbiAgLy8gLSBjb25uZWN0aW9uczogMTAwMCBhbGxvd3MgbWFueSBwYXJhbGxlbCBjb25uZWN0aW9ucyB0byB0aGUgc2FtZSBob3N0XG4gIC8vIC0gcGlwZWxpbmluZzogMSAoZGVmYXVsdCkgZm9yIEhUVFAvMS4xIGNvbXBhdGliaWxpdHlcbiAgLy8gLSBrZWVwQWxpdmVUaW1lb3V0OiAzMHMga2VlcHMgY29ubmVjdGlvbnMgd2FybSBmb3IgcmFwaWQgc3RlcCBleGVjdXRpb25cbiAgY29uc3QgaHR0cEFnZW50ID0gbmV3IEFnZW50KHtcbiAgICBoZWFkZXJzVGltZW91dDogMCxcbiAgICBjb25uZWN0aW9uczogMTAwMCxcbiAgICBrZWVwQWxpdmVUaW1lb3V0OiAzMF8wMDAsXG4gIH0pO1xuICBjb25zdCB0cmFuc3BvcnQgPSBuZXcgVHlwZWRKc29uVHJhbnNwb3J0KCk7XG4gIGNvbnN0IGdlbmVyYXRlSWQgPSBtb25vdG9uaWNGYWN0b3J5KCk7XG4gIGNvbnN0IHNlbWFwaG9yZSA9IG5ldyBTZW1hKFdPUktGTE9XX0xPQ0FMX1FVRVVFX0NPTkNVUlJFTkNZKTtcblxuICAvKipcbiAgICogaG9sZHMgaW5mbGlnaHQgbWVzc2FnZXMgYnkgaWRlbXBvdGVuY3kga2V5IHRvIGVuc3VyZVxuICAgKiB0aGF0IHdlIGRvbid0IHF1ZXVlIHRoZSBzYW1lIG1lc3NhZ2UgbXVsdGlwbGUgdGltZXNcbiAgICovXG4gIGNvbnN0IGluZmxpZ2h0TWVzc2FnZXMgPSBuZXcgTWFwPHN0cmluZywgTWVzc2FnZUlkPigpO1xuICAvKiogRGlyZWN0IGluLXByb2Nlc3MgaGFuZGxlcnMgYnkgcXVldWUgcHJlZml4LCBieXBhc3NpbmcgSFRUUCB3aGVuIHNldC4gKi9cbiAgY29uc3QgZGlyZWN0SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgRGlyZWN0SGFuZGxlcj4oKTtcblxuICBjb25zdCBxdWV1ZTogUXVldWVbJ3F1ZXVlJ10gPSBhc3luYyAocXVldWVOYW1lLCBtZXNzYWdlLCBvcHRzKSA9PiB7XG4gICAgY29uc3QgY2xlYW51cCA9IFtdIGFzICgoKSA9PiB2b2lkKVtdO1xuXG4gICAgaWYgKG9wdHM/LmlkZW1wb3RlbmN5S2V5KSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IGluZmxpZ2h0TWVzc2FnZXMuZ2V0KG9wdHMuaWRlbXBvdGVuY3lLZXkpO1xuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIHJldHVybiB7IG1lc3NhZ2VJZDogZXhpc3RpbmcgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0gdHJhbnNwb3J0LnNlcmlhbGl6ZShtZXNzYWdlKTtcbiAgICBjb25zdCB7IHBhdGhuYW1lLCBwcmVmaXggfSA9IGdldFF1ZXVlUm91dGUocXVldWVOYW1lKTtcbiAgICBjb25zdCBtZXNzYWdlSWQgPSBNZXNzYWdlSWQucGFyc2UoYG1zZ18ke2dlbmVyYXRlSWQoKX1gKTtcblxuICAgIC8vIEV4dHJhY3QgaWRlbnRpZmllcnMgZnJvbSB0aGUgbWVzc2FnZSBmb3Igc3RydWN0dXJlZCBsb2dnaW5nLlxuICAgIC8vIFdvcmtmbG93IG1lc3NhZ2VzIGhhdmUgYHJ1bklkYCwgc3RlcCBtZXNzYWdlcyBoYXZlIGB3b3JrZmxvd1J1bklkYCArIGBzdGVwSWRgLlxuICAgIGNvbnN0IG1zZyA9IG1lc3NhZ2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3QgcnVuSWQgPSAobXNnLnJ1bklkID8/IG1zZy53b3JrZmxvd1J1bklkID8/IHVuZGVmaW5lZCkgYXNcbiAgICAgIHwgc3RyaW5nXG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzdGVwSWQgPSAobXNnLnN0ZXBJZCA/PyB1bmRlZmluZWQpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChvcHRzPy5pZGVtcG90ZW5jeUtleSkge1xuICAgICAgY29uc3Qga2V5ID0gb3B0cy5pZGVtcG90ZW5jeUtleTtcbiAgICAgIGluZmxpZ2h0TWVzc2FnZXMuc2V0KGtleSwgbWVzc2FnZUlkKTtcbiAgICAgIGNsZWFudXAucHVzaCgoKSA9PiB7XG4gICAgICAgIGluZmxpZ2h0TWVzc2FnZXMuZGVsZXRlKGtleSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdG9rZW4gPSBzZW1hcGhvcmUudHJ5QWNxdWlyZSgpO1xuICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFt3b3JsZC1sb2NhbF06IGNvbmN1cnJlbmN5IGxpbWl0ICgke1dPUktGTE9XX0xPQ0FMX1FVRVVFX0NPTkNVUlJFTkNZfSkgcmVhY2hlZCwgd2FpdGluZyBmb3IgcXVldWUgdG8gZnJlZSB1cGBcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgc2VtYXBob3JlLmFjcXVpcmUoKTtcbiAgICAgIH1cbiAgICAgIC8vIFNhZmV0eSBsaW1pdCB0byBwcmV2ZW50IGluZmluaXRlIGxvb3BzIGluIHRoZSBsb2NhbCBxdWV1ZS5cbiAgICAgIC8vIFRoZSBhY3R1YWwgbWF4IGRlbGl2ZXJ5IGVuZm9yY2VtZW50IGhhcHBlbnMgaW4gdGhlIHdvcmtmbG93L3N0ZXAgaGFuZGxlcnNcbiAgICAgIC8vIChhdCBNQVhfUVVFVUVfREVMSVZFUklFUyA9IDQ4KSwgc28gdGhpcyBqdXN0IG5lZWRzIHRvIGJlIGNvbWZvcnRhYmx5IGhpZ2hlci5cbiAgICAgIGNvbnN0IE1BWF9MT0NBTF9TQUZFVFlfTElNSVQgPSAyNTY7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8IE1BWF9MT0NBTF9TQUZFVFlfTElNSVQ7IGF0dGVtcHQrKykge1xuICAgICAgICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICAgICAuLi5vcHRzPy5oZWFkZXJzLFxuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICd4LXZxcy1xdWV1ZS1uYW1lJzogcXVldWVOYW1lLFxuICAgICAgICAgICAgJ3gtdnFzLW1lc3NhZ2UtaWQnOiBtZXNzYWdlSWQsXG4gICAgICAgICAgICAneC12cXMtbWVzc2FnZS1hdHRlbXB0JzogU3RyaW5nKGF0dGVtcHQgKyAxKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGRpcmVjdEhhbmRsZXIgPSBkaXJlY3RIYW5kbGVycy5nZXQocHJlZml4KTtcbiAgICAgICAgICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgICAgICAgaWYgKGRpcmVjdEhhbmRsZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KFxuICAgICAgICAgICAgICBgaHR0cDovL2xvY2FsaG9zdC8ud2VsbC1rbm93bi93b3JrZmxvdy92MS8ke3BhdGhuYW1lfWAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGRpcmVjdEhhbmRsZXIocmVxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYmFzZVVybCA9IGF3YWl0IHJlc29sdmVCYXNlVXJsKGNvbmZpZyk7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSB1bmRpY2kgdjcgZGlzcGF0Y2hlciB0eXBlcyBkb24ndCBtYXRjaCBAdHlwZXMvbm9kZSdzIFJlcXVlc3RJbml0XG4gICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKFxuICAgICAgICAgICAgICBgJHtiYXNlVXJsfS8ud2VsbC1rbm93bi93b3JrZmxvdy92MS8ke3BhdGhuYW1lfWAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICBkdXBsZXg6ICdoYWxmJyxcbiAgICAgICAgICAgICAgICBkaXNwYXRjaGVyOiBodHRwQWdlbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAgICB9IGFzIGFueVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0U2Vjb25kcyA9IE51bWJlcihKU09OLnBhcnNlKHRleHQpLnRpbWVvdXRTZWNvbmRzKTtcbiAgICAgICAgICAgICAgaWYgKE51bWJlci5pc0Zpbml0ZSh0aW1lb3V0U2Vjb25kcykgJiYgdGltZW91dFNlY29uZHMgPj0gMCkge1xuICAgICAgICAgICAgICAgIC8vIENsYW1wIHRvIE1BWF9TQUZFX1RJTUVPVVRfTVMgdG8gYXZvaWQgTm9kZS5qcyBzZXRUaW1lb3V0IG92ZXJmbG93IHdhcm5pbmcuXG4gICAgICAgICAgICAgICAgLy8gV2hlbiB0aGlzIGZpcmVzIGVhcmx5LCB0aGUgaGFuZGxlciByZWNhbGN1bGF0ZXMgcmVtYWluaW5nIHRpbWUgZnJvbVxuICAgICAgICAgICAgICAgIC8vIHBlcnNpc3RlbnQgc3RhdGUgYW5kIHJldHVybnMgYW5vdGhlciB0aW1lb3V0U2Vjb25kcyBpZiBuZWVkZWQuXG4gICAgICAgICAgICAgICAgaWYgKHRpbWVvdXRTZWNvbmRzID4gMCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGltZW91dE1zID0gTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICAgIHRpbWVvdXRTZWNvbmRzICogMTAwMCxcbiAgICAgICAgICAgICAgICAgICAgTUFYX1NBRkVfVElNRU9VVF9NU1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHNldFRpbWVvdXQodGltZW91dE1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYFt3b3JsZC1sb2NhbF0gUXVldWUgbWVzc2FnZSBmYWlsZWQgKGF0dGVtcHQgJHthdHRlbXB0ICsgMX0sIEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9KWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHF1ZXVlTmFtZSxcbiAgICAgICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgICAgICAuLi4ocnVuSWQgJiYgeyBydW5JZCB9KSxcbiAgICAgICAgICAgICAgLi4uKHN0ZXBJZCAmJiB7IHN0ZXBJZCB9KSxcbiAgICAgICAgICAgICAgaGFuZGxlckVycm9yOiB0ZXh0LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyA1cyBsaW5lYXIgYmFja29mZiB0byBhcHByb3hpbWF0ZSBWUVMgcmV0cnkgdGltaW5nIGluIGxvY2FsIGRldi5cbiAgICAgICAgICAvLyBWUVMgdXNlcyA1cyBsaW5lYXIgZm9yIGF0dGVtcHRzIDHigJMzMiwgdGhlbiBleHBvbmVudGlhbCwgYnV0IGZvclxuICAgICAgICAgIC8vIGxvY2FsIGRldiBsaW5lYXIgNXMgaXMgc3VmZmljaWVudCDigJQgdGhlIGhhbmRsZXIgZW5mb3JjZXMgdGhlIHJlYWxcbiAgICAgICAgICAvLyBjYXAgYXQgTUFYX1FVRVVFX0RFTElWRVJJRVMgKDQ4KSB3aGljaCBrZWVwcyB0b3RhbCB0aW1lIHVuZGVyIH40bWluLlxuICAgICAgICAgIGF3YWl0IHNldFRpbWVvdXQoNTAwMCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIGBbd29ybGQtbG9jYWxdIFF1ZXVlIG1lc3NhZ2UgZXhoYXVzdGVkIHNhZmV0eSBsaW1pdCAoJHtNQVhfTE9DQUxfU0FGRVRZX0xJTUlUfSBhdHRlbXB0cylgLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHF1ZXVlTmFtZSxcbiAgICAgICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgICAgIC4uLihydW5JZCAmJiB7IHJ1bklkIH0pLFxuICAgICAgICAgICAgLi4uKHN0ZXBJZCAmJiB7IHN0ZXBJZCB9KSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZW1hcGhvcmUucmVsZWFzZSgpO1xuICAgICAgfVxuICAgIH0pKClcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIC8vIFNpbGVudGx5IGlnbm9yZSBjbGllbnQgZGlzY29ubmVjdCBlcnJvcnMgKGUuZy4sIGJyb3dzZXIgcmVmcmVzaCBkdXJpbmcgc3RyZWFtaW5nKVxuICAgICAgICAvLyBUaGVzZSBhcmUgZXhwZWN0ZWQgYW5kIHNob3VsZCBub3QgY2F1c2UgdW5oYW5kbGVkIHJlamVjdGlvbiB3YXJuaW5nc1xuICAgICAgICBjb25zdCBpc0Fib3J0RXJyb3IgPVxuICAgICAgICAgIGVycj8ubmFtZSA9PT0gJ0Fib3J0RXJyb3InIHx8IGVycj8ubmFtZSA9PT0gJ1Jlc3BvbnNlQWJvcnRlZCc7XG4gICAgICAgIGlmICghaXNBYm9ydEVycm9yKSB7XG4gICAgICAgICAgaWYgKGlzRGV0YWNoZWRBcnJheUJ1ZmZlclF1ZXVlRXJyb3IoZXJyKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgYFtsb2NhbCB3b3JsZF0gUXVldWUgb3BlcmF0aW9uIGZhaWxlZDogZGV0ZWN0ZWQgXCIke0RFVEFDSEVEX0FSUkFZQlVGRkVSX0VSUk9SfVwiLiBgICtcbiAgICAgICAgICAgICAgICBcIlRoaXMgdXN1YWxseSBtZWFucyBhIE5leHQuanMgcHJveHkvbWlkZGxld2FyZSBjb25zdW1lZCBXb3JrZmxvdydzIGludGVybmFsIFwiICtcbiAgICAgICAgICAgICAgICAncmVxdWVzdCBiZWZvcmUgdGhlIGV4ZWN1dG9yIGNvdWxkIHJlYWQgaXQuIEV4Y2x1ZGUgYC8ud2VsbC1rbm93bi93b3JrZmxvdy8qYCAnICtcbiAgICAgICAgICAgICAgICBgZnJvbSB5b3VyIG1hdGNoZXIuIFNlZSAke1BST1hZX0hBTkRMRVJfRE9DU19VUkx9YCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHF1ZXVlTmFtZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgICAgICAgICAgLi4uKHJ1bklkICYmIHsgcnVuSWQgfSksXG4gICAgICAgICAgICAgICAgLi4uKHN0ZXBJZCAmJiB7IHN0ZXBJZCB9KSxcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEVycm9yOiBlcnIsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tsb2NhbCB3b3JsZF0gUXVldWUgb3BlcmF0aW9uIGZhaWxlZDonLCBlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBmbiBvZiBjbGVhbnVwKSB7XG4gICAgICAgICAgZm4oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4geyBtZXNzYWdlSWQgfTtcbiAgfTtcblxuICBjb25zdCBIZWFkZXJQYXJzZXIgPSB6Lm9iamVjdCh7XG4gICAgJ3gtdnFzLXF1ZXVlLW5hbWUnOiBWYWxpZFF1ZXVlTmFtZSxcbiAgICAneC12cXMtbWVzc2FnZS1pZCc6IE1lc3NhZ2VJZCxcbiAgICAneC12cXMtbWVzc2FnZS1hdHRlbXB0Jzogei5jb2VyY2UubnVtYmVyKCksXG4gIH0pO1xuXG4gIGNvbnN0IGNyZWF0ZVF1ZXVlSGFuZGxlcjogUXVldWVbJ2NyZWF0ZVF1ZXVlSGFuZGxlciddID0gKHByZWZpeCwgaGFuZGxlcikgPT4ge1xuICAgIHJldHVybiBhc3luYyAocmVxKSA9PiB7XG4gICAgICBjb25zdCBoZWFkZXJzID0gSGVhZGVyUGFyc2VyLnNhZmVQYXJzZShPYmplY3QuZnJvbUVudHJpZXMocmVxLmhlYWRlcnMpKTtcblxuICAgICAgaWYgKCFoZWFkZXJzLnN1Y2Nlc3MgfHwgIXJlcS5ib2R5KSB7XG4gICAgICAgIHJldHVybiBSZXNwb25zZS5qc29uKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVycm9yOiAhcmVxLmJvZHlcbiAgICAgICAgICAgICAgPyAnTWlzc2luZyByZXF1ZXN0IGJvZHknXG4gICAgICAgICAgICAgIDogJ01pc3NpbmcgcmVxdWlyZWQgaGVhZGVycycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IHN0YXR1czogNDAwIH1cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVldWVOYW1lID0gaGVhZGVycy5kYXRhWyd4LXZxcy1xdWV1ZS1uYW1lJ107XG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSBoZWFkZXJzLmRhdGFbJ3gtdnFzLW1lc3NhZ2UtaWQnXTtcbiAgICAgIGNvbnN0IGF0dGVtcHQgPSBoZWFkZXJzLmRhdGFbJ3gtdnFzLW1lc3NhZ2UtYXR0ZW1wdCddO1xuXG4gICAgICBpZiAoIXF1ZXVlTmFtZS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmpzb24oeyBlcnJvcjogJ1VuaGFuZGxlZCBxdWV1ZScgfSwgeyBzdGF0dXM6IDQwMCB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9keSA9IGF3YWl0IG5ldyBUeXBlZEpzb25UcmFuc3BvcnQoKS5kZXNlcmlhbGl6ZShyZXEuYm9keSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBoYW5kbGVyKGJvZHksIHsgYXR0ZW1wdCwgcXVldWVOYW1lLCBtZXNzYWdlSWQgfSk7XG5cbiAgICAgICAgbGV0IHRpbWVvdXRTZWNvbmRzOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQ/LnRpbWVvdXRTZWNvbmRzID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRpbWVvdXRTZWNvbmRzID0gTWF0aC5taW4oXG4gICAgICAgICAgICByZXN1bHQudGltZW91dFNlY29uZHMsXG4gICAgICAgICAgICBMT0NBTF9RVUVVRV9NQVhfVklTSUJJTElUWVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGltZW91dFNlY29uZHMgIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBSZXNwb25zZS5qc29uKHsgdGltZW91dFNlY29uZHMgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbih7IG9rOiB0cnVlIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmpzb24oU3RyaW5nKGVycm9yKSwgeyBzdGF0dXM6IDUwMCB9KTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGdldERlcGxveW1lbnRJZDogUXVldWVbJ2dldERlcGxveW1lbnRJZCddID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBhY2thZ2VJbmZvID0gYXdhaXQgZ2V0UGFja2FnZUluZm8oKTtcbiAgICByZXR1cm4gYGRwbF9sb2NhbEAke3BhY2thZ2VJbmZvLnZlcnNpb259YDtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHF1ZXVlLFxuICAgIGNyZWF0ZVF1ZXVlSGFuZGxlcixcbiAgICBnZXREZXBsb3ltZW50SWQsXG4gICAgcmVnaXN0ZXJIYW5kbGVyKHByZWZpeDogUXVldWVQcmVmaXgsIGhhbmRsZXI6IERpcmVjdEhhbmRsZXIpIHtcbiAgICAgIGRpcmVjdEhhbmRsZXJzLnNldChwcmVmaXgsIGhhbmRsZXIpO1xuICAgIH0sXG4gICAgYXN5bmMgY2xvc2UoKSB7XG4gICAgICBhd2FpdCBodHRwQWdlbnQuY2xvc2UoKTtcbiAgICB9LFxuICB9O1xufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-storage.d.ts","sourceRoot":"","sources":["../../src/storage/events-storage.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAMV,OAAO,EAGR,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"events-storage.d.ts","sourceRoot":"","sources":["../../src/storage/events-storage.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAMV,OAAO,EAGR,MAAM,iBAAiB,CAAC;AAsEzB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC,CA2/BnB"}
|