@mnaoumov/obsidian-dev-toolkit 3.1.0 → 3.2.1
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/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/dependency.cjs +3 -77
- package/dist/lib/cjs/bundlers/esbuild-impl/feature-options.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +3 -76
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +1 -75
- package/dist/lib/cjs/bundlers/esbuild.cjs +1 -75
- package/dist/lib/cjs/bundlers/index.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-cli-reload.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-build.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-features.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-transforms.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugin-webpack-loader.cjs +1 -75
- package/dist/lib/cjs/bundlers/obsidian-plugins-folder-deployment.cjs +32 -85
- package/dist/lib/cjs/bundlers/parcel.cjs +112 -81
- package/dist/lib/cjs/bundlers/parcel.d.cts +13 -6
- package/dist/lib/cjs/bundlers/rollup-compatible-features.cjs +1 -75
- package/dist/lib/cjs/bundlers/rollup-compatible.cjs +1 -75
- package/dist/lib/cjs/bundlers/rollup.cjs +1 -75
- package/dist/lib/cjs/bundlers/vite.cjs +1 -75
- package/dist/lib/cjs/bundlers/webpack.cjs +3 -77
- package/dist/lib/cjs/demo-vault-app-json.cjs +1 -75
- package/dist/lib/cjs/demo-vault-buttons.cjs +1 -75
- package/dist/lib/cjs/demo-vault-cli.cjs +1 -75
- package/dist/lib/cjs/demo-vault-coverage.cjs +1 -75
- package/dist/lib/cjs/demo-vault.cjs +3 -77
- package/dist/lib/cjs/docs-site/index.cjs +1 -75
- package/dist/lib/cjs/docs-site/obsidian-external-type-links.cjs +1 -75
- package/dist/lib/cjs/formatters/dprint.cjs +1 -75
- package/dist/lib/cjs/formatters/index.cjs +1 -75
- package/dist/lib/cjs/index.cjs +1 -75
- package/dist/lib/cjs/integration-test-setup.cjs +1 -75
- package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +1 -75
- package/dist/lib/cjs/jest-setup.cjs +1 -75
- package/dist/lib/cjs/jest-setup.d.cts +2 -1
- package/dist/lib/cjs/linters/eslint-config.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +2 -77
- package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +1 -75
- package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.cjs +1 -75
- package/dist/lib/cjs/linters/eslint.cjs +1 -75
- package/dist/lib/cjs/linters/index.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +1 -75
- package/dist/lib/cjs/linters/markdownlint.cjs +1 -75
- package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +1 -75
- package/dist/lib/cjs/linters/plugin-names.cjs +1 -75
- package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +1 -75
- package/dist/lib/cjs/setup.cjs +1 -75
- package/dist/lib/cjs/templates.cjs +3 -77
- package/dist/lib/cjs/test-runners/coverage-badge-cli.cjs +1 -75
- package/dist/lib/cjs/test-runners/coverage-badge.cjs +1 -75
- package/dist/lib/cjs/test-runners/e2e-runner-support.cjs +1 -75
- package/dist/lib/cjs/test-runners/index.cjs +4 -75
- package/dist/lib/cjs/test-runners/index.d.cts +1 -0
- package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +3 -77
- package/dist/lib/cjs/test-runners/jest-config.cjs +92 -0
- package/dist/lib/cjs/test-runners/jest-config.d.cts +50 -0
- package/dist/lib/cjs/test-runners/obsidian-test-runner.cjs +1 -75
- package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +4 -75
- package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +12 -3
- package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +1 -75
- package/dist/lib/cjs/test-runners/vitest-config.cjs +4 -80
- package/dist/lib/cjs/test-runners/wdio-obsidian.cjs +1 -75
- package/dist/lib/cjs/version.cjs +1 -75
- package/dist/lib/cjs/vitest-setup.cjs +1 -75
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +3 -2
- package/dist/lib/esm/bundlers/obsidian-plugins-folder-deployment.mjs +32 -15
- package/dist/lib/esm/bundlers/parcel.d.mts +13 -6
- package/dist/lib/esm/bundlers/parcel.mjs +110 -5
- package/dist/lib/esm/jest-setup.d.mts +2 -1
- package/dist/lib/esm/jest-setup.mjs +1 -1
- package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +2 -2
- package/dist/lib/esm/test-runners/index.d.mts +1 -0
- package/dist/lib/esm/test-runners/index.mjs +3 -1
- package/dist/lib/esm/test-runners/jest-config.d.mts +50 -0
- package/dist/lib/esm/test-runners/jest-config.mjs +68 -0
- package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +12 -3
- package/dist/lib/esm/test-runners/performance-eval-cap.mjs +3 -1
- package/dist/lib/esm/test-runners/vitest-config.mjs +4 -5
- package/package.json +19 -2
- package/test-runners/jest-config/package.json +6 -0
|
@@ -2,13 +2,22 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @file
|
|
4
4
|
*
|
|
5
|
-
* The per-eval
|
|
6
|
-
* project collects.
|
|
5
|
+
* The per-eval caps the integration-test transports enforce, and the file suffix the
|
|
6
|
+
* `integration-tests:desktop-performance` project collects.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* They live here, rather than in `vitest-config.ts`, because the `no-over-cap-wait-in-eval-in-obsidian`
|
|
9
9
|
* ESLint rule reads them too, and the shared ESLint config loads that rule in every consuming repo:
|
|
10
10
|
* importing `vitest-config.ts` from the rule would load `vitest/config` at lint time for nothing.
|
|
11
11
|
*/
|
|
12
|
+
/**
|
|
13
|
+
* The per-eval cap both `obsidian-integration-testing` transports enforce by default, in milliseconds.
|
|
14
|
+
*
|
|
15
|
+
* It restates that package's own `DEFAULT_EVAL_CAP_IN_MILLISECONDS` instead of importing it, because
|
|
16
|
+
* `obsidian-integration-testing` is an OPTIONAL peer: the import made the ESLint rule, and with it the shared
|
|
17
|
+
* ESLint config every plugin lints with, fail to load in a project without the harness installed. A unit test
|
|
18
|
+
* pins the two numbers together, so they cannot drift apart.
|
|
19
|
+
*/
|
|
20
|
+
export declare const DEFAULT_EVAL_CAP_IN_MILLISECONDS = 30000;
|
|
12
21
|
/**
|
|
13
22
|
* The per-eval cap the `integration-tests:desktop-performance` project gives its CDP transport, in
|
|
14
23
|
* milliseconds.
|
|
@@ -29,80 +29,6 @@ function ensureBrowserProcess() {
|
|
|
29
29
|
|
|
30
30
|
ensureBrowserProcess();
|
|
31
31
|
})();
|
|
32
|
-
(function patchObsidianRequire() {
|
|
33
|
-
const originalRequire = require;
|
|
34
|
-
if (!originalRequire || originalRequire.__isPatched) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
require = Object.assign(
|
|
39
|
-
(id) => requirePatched(id),
|
|
40
|
-
originalRequire,
|
|
41
|
-
{
|
|
42
|
-
__isPatched: true
|
|
43
|
-
}
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
function extractDefault(module) {
|
|
47
|
-
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
51
|
-
'@codemirror/autocomplete',
|
|
52
|
-
'@codemirror/collab',
|
|
53
|
-
'@codemirror/commands',
|
|
54
|
-
'@codemirror/language',
|
|
55
|
-
'@codemirror/lint',
|
|
56
|
-
'@codemirror/search',
|
|
57
|
-
'@codemirror/state',
|
|
58
|
-
'@codemirror/text',
|
|
59
|
-
'@codemirror/view',
|
|
60
|
-
'@lezer/common',
|
|
61
|
-
'@lezer/highlight',
|
|
62
|
-
'@lezer/lr',
|
|
63
|
-
'obsidian']
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
67
|
-
'@codemirror/closebrackets',
|
|
68
|
-
'@codemirror/comment',
|
|
69
|
-
'@codemirror/fold',
|
|
70
|
-
'@codemirror/gutter',
|
|
71
|
-
'@codemirror/highlight',
|
|
72
|
-
'@codemirror/history',
|
|
73
|
-
'@codemirror/matchbrackets',
|
|
74
|
-
'@codemirror/panel',
|
|
75
|
-
'@codemirror/rangeset',
|
|
76
|
-
'@codemirror/rectangular-selection',
|
|
77
|
-
'@codemirror/stream-parser',
|
|
78
|
-
'@codemirror/tooltip']
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
function requirePatched(id) {
|
|
82
|
-
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
83
|
-
return originalRequire?.(id);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
87
|
-
if (globalThis.app.isMobile) {
|
|
88
|
-
if (id === 'process' || id === 'node:process') {
|
|
89
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
90
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
91
|
-
|
|
92
|
-
return process;
|
|
93
|
-
}
|
|
94
|
-
} else {
|
|
95
|
-
const module = originalRequire?.(id);
|
|
96
|
-
if (module) {
|
|
97
|
-
return extractDefault(module);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
102
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
103
|
-
return {};
|
|
104
|
-
}
|
|
105
|
-
})();
|
|
106
32
|
|
|
107
33
|
"use strict";
|
|
108
34
|
var __defProp = Object.defineProperty;
|
|
@@ -195,4 +121,4 @@ function getBuildInputPaths(rootFolder) {
|
|
|
195
121
|
formatStaleBuildMessage,
|
|
196
122
|
setup
|
|
197
123
|
});
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvc3RhbGUtYnVpbGQtZ2xvYmFsLXNldHVwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIHRoYXQgcmVmdXNlcyB0byBzdGFydCBhbiBpbnRlZ3JhdGlvbiBwcm9qZWN0IHdob3NlIHBsdWdpbiBidWlsZCBpcyBzdGFsZS5cbiAqXG4gKiBUaGUgaW50ZWdyYXRpb24gaGFybmVzcyBlbmFibGVzIHRoZSBwbHVnaW4gZnJvbSBpdHMgQlVJTEQsIGBkaXN0L2J1aWxkL21haW4uanNgLCBhbmQgYSBwbHVnaW4nc1xuICogYHRlc3Q6aW50ZWdyYXRpb24qYCBzY3JpcHRzIGNhbGwgdml0ZXN0IGRpcmVjdGx5LCBzbyBub3RoaW5nIG9uIHRoYXQgcGF0aCBidWlsZHMgZmlyc3QuIEEgc2Vzc2lvbiB0aGF0XG4gKiBlZGl0cyBgc3JjL2AgYW5kIHRoZW4gcnVucyBvbmUgaW50ZWdyYXRpb24gcHJvamVjdCB0ZXN0cyB0aGUgbGFzdCBidWlsZCwgaG93ZXZlciBvbGQgaXQgaXMsIGFuZCB0aGVcbiAqIHN1aXRlIHJlcG9ydHMgdGhlIG9sZCBjb2RlIGFzIGEgYmVoYXZpb3IgZGlmZmVyZW5jZSwgbm90IGFzIGEgc3RhbGUgYXJ0aWZhY3QuIE9uZSBzdWNoIHJ1biBjb3N0IGEgQ0RQXG4gKiBwcm9iZSBpbnRvIE9ic2lkaWFuJ3Mgb3duIGxpbmsgcmVzb2x1dGlvbiwgYSB3cm9uZyBjYWNoZS1yYWNlIHRoZW9yeSwgYW5kIGEgaGFybmVzcyBjaGFuZ2UgdGhhdCB3YXNcbiAqIG1hZGUgYW5kIHRoZW4gcmV2ZXJ0ZWQgYmVmb3JlIGFueW9uZSBub3RpY2VkIHRoYXQgdGhlIGJ1aWxkIHdhcyB0aHJlZSBkYXlzIG9sZC4gYG5wbSBydW4gZ2F0ZWAgYXZvaWRlZFxuICogdGhlIHByb2JsZW0gb25seSBiZWNhdXNlIGl0IGhhcHBlbnMgdG8gYnVpbGQgYmVmb3JlIGl0IHJ1bnMgYHRlc3Q6aW50ZWdyYXRpb25gLlxuICpcbiAqIFRoZSBzZXR1cCByZWZ1c2VzIHRvIHN0YXJ0IHJhdGhlciB0aGFuIGJ1aWxkaW5nLiBBIGJ1aWxkIGluc2lkZSBhIGdsb2JhbCBzZXR1cCB3b3VsZCBydW4gb25jZSBwZXJcbiAqIHByb2plY3QgaW4gYSBtdWx0aS1wcm9qZWN0IGFnZ3JlZ2F0ZSwgYW5kIGl0IHdvdWxkIHNsb3cgZG93biBhIGRlbGliZXJhdGUgcmUtcnVuIG9mIGFuIHVuY2hhbmdlZCBidWlsZC5cbiAqIEEgcmVmdXNhbCBpcyBjaGVhcCwgYW5kIGl0IHNheXMgd2hhdCB0byBydW4uXG4gKlxuICogVGVzdCBmaWxlcyBhcmUgbm90IGJ1aWxkIGlucHV0cy4gRWRpdGluZyBhbiBpbnRlZ3JhdGlvbiBjYXNlIGFuZCByZS1ydW5uaW5nIGl0IGlzIGV4YWN0bHkgdGhlIGxvb3AgdGhhdFxuICogbXVzdCBub3QgZm9yY2UgYSByZWJ1aWxkLCBzbyBgKi50ZXN0LnRzYCBmaWxlcyBhbmQgYHNyYy90ZXN0LWhlbHBlcnMvYCBhcmUgaWdub3JlZC4gQSBkZXBlbmRlbmN5IGJ1bXBcbiAqIGlzIG5vdCBkZXRlY3RlZCBlaXRoZXI6IG9ubHkgZmlsZXMgaW4gdGhlIHJlcG8gYXJlIGNvbXBhcmVkLCBub3QgYG5vZGVfbW9kdWxlc2AuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBUZXN0UHJvamVjdCB9IGZyb20gJ3ZpdGVzdC9ub2RlJztcblxuaW1wb3J0IHsgdG9Qb3NpeFBhdGggfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQge1xuICBleGlzdHNTeW5jLFxuICByZWFkZGlyU3luYyxcbiAgc3RhdFN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBqb2luLFxuICByZWxhdGl2ZSxcbiAgc2VwXG59IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kU3RhbGVCdWlsZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZFN0YWxlQnVpbGRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHJvb3QgZm9sZGVyIG9mIHRoZSBwbHVnaW4gcmVwby5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgYnVpbGQgZG9lcyBub3QgZXhpc3QgYXQgYWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc3NpbmdCdWlsZCB7XG4gIC8qKlxuICAgKiBUaGUgZGlzY3JpbWluYW50LlxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogJ21pc3NpbmcnO1xufVxuXG4vKipcbiAqIFRoZSBidWlsZCBleGlzdHMgYnV0IGlzIG9sZGVyIHRoYW4gb25lIG9mIGl0cyBpbnB1dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3V0ZGF0ZWRCdWlsZCB7XG4gIC8qKlxuICAgKiBUaGUgbW9kaWZpY2F0aW9uIHRpbWUgb2YgYGRpc3QvYnVpbGQvbWFpbi5qc2AuXG4gICAqL1xuICByZWFkb25seSBidWlsZE1vZGlmaWVkQXQ6IERhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNjcmltaW5hbnQuXG4gICAqL1xuICByZWFkb25seSBraW5kOiAnb3V0ZGF0ZWQnO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9kaWZpY2F0aW9uIHRpbWUgb2Yge0BsaW5rIE91dGRhdGVkQnVpbGQubmV3ZXN0SW5wdXRQYXRofS5cbiAgICovXG4gIHJlYWRvbmx5IG5ld2VzdElucHV0TW9kaWZpZWRBdDogRGF0ZTtcblxuICAvKipcbiAgICogVGhlIG5ld2VzdCBidWlsZCBpbnB1dCwgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV3ZXN0SW5wdXRQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2h5IHRoZSBidWlsZCBjYW5ub3QgYmUgdGVzdGVkLCBhcyByZXR1cm5lZCBieSB7QGxpbmsgZmluZFN0YWxlQnVpbGR9LlxuICovXG5leHBvcnQgdHlwZSBTdGFsZUJ1aWxkID0gTWlzc2luZ0J1aWxkIHwgT3V0ZGF0ZWRCdWlsZDtcblxuY29uc3QgQlVJTERfUEFUSCA9IGAke09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZH0vJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluSnN9YDtcbmNvbnN0IFJPT1RfQlVJTERfSU5QVVRTID0gW09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuU3R5bGVzQ3NzXTtcbmNvbnN0IFRFU1RfRklMRV9TVUZGSVggPSBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlUZXN0VHMuc2xpY2UoMSk7XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYGRpc3QvYnVpbGQvbWFpbi5qc2AgaXMgbWlzc2luZywgb3Igb2xkZXIgdGhhbiBvbmUgb2YgdGhlIGZpbGVzIGl0IGlzIGJ1aWx0IGZyb20uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgYG51bGxgIHdoZW4gdGhlIGJ1aWxkIGlzIGN1cnJlbnQ7IG90aGVyd2lzZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9ibGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFN0YWxlQnVpbGQocGFyYW1zOiBGaW5kU3RhbGVCdWlsZFBhcmFtcyk6IG51bGwgfCBTdGFsZUJ1aWxkIHtcbiAgY29uc3QgYnVpbGRQYXRoID0gam9pbihwYXJhbXMucm9vdEZvbGRlciwgQlVJTERfUEFUSCk7XG4gIGlmICghZXhpc3RzU3luYyhidWlsZFBhdGgpKSB7XG4gICAgcmV0dXJuIHsga2luZDogJ21pc3NpbmcnIH07XG4gIH1cblxuICBjb25zdCBidWlsZE1vZGlmaWVkQXQgPSBzdGF0U3luYyhidWlsZFBhdGgpLm10aW1lO1xuICBsZXQgbmV3ZXN0SW5wdXRQYXRoOiBudWxsIHwgc3RyaW5nID0gbnVsbDtcbiAgbGV0IG5ld2VzdElucHV0TW9kaWZpZWRBdCA9IGJ1aWxkTW9kaWZpZWRBdDtcblxuICBmb3IgKGNvbnN0IGlucHV0UGF0aCBvZiBnZXRCdWlsZElucHV0UGF0aHMocGFyYW1zLnJvb3RGb2xkZXIpKSB7XG4gICAgY29uc3QgbW9kaWZpZWRBdCA9IHN0YXRTeW5jKGlucHV0UGF0aCkubXRpbWU7XG4gICAgaWYgKG1vZGlmaWVkQXQgPD0gbmV3ZXN0SW5wdXRNb2RpZmllZEF0KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBuZXdlc3RJbnB1dFBhdGggPSBpbnB1dFBhdGg7XG4gICAgbmV3ZXN0SW5wdXRNb2RpZmllZEF0ID0gbW9kaWZpZWRBdDtcbiAgfVxuXG4gIGlmIChuZXdlc3RJbnB1dFBhdGggPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYnVpbGRNb2RpZmllZEF0LFxuICAgIGtpbmQ6ICdvdXRkYXRlZCcsXG4gICAgbmV3ZXN0SW5wdXRNb2RpZmllZEF0LFxuICAgIG5ld2VzdElucHV0UGF0aDogdG9Qb3NpeFBhdGgocmVsYXRpdmUocGFyYW1zLnJvb3RGb2xkZXIsIG5ld2VzdElucHV0UGF0aCkpXG4gIH07XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIHtAbGluayBTdGFsZUJ1aWxkfSBhcyB0aGUgbWVzc2FnZSB0aGUgc2V0dXAgdGhyb3dzLlxuICpcbiAqIEBwYXJhbSBzdGFsZUJ1aWxkIC0gVGhlIHN0YWxlIGJ1aWxkLlxuICogQHJldHVybnMgVGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTdGFsZUJ1aWxkTWVzc2FnZShzdGFsZUJ1aWxkOiBTdGFsZUJ1aWxkKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0YWxlQnVpbGQua2luZCA9PT0gJ21pc3NpbmcnXG4gICAgPyBgJHtCVUlMRF9QQVRIfSBkb2VzIG5vdCBleGlzdCwgc28gdGhlcmUgaXMgbm8gcGx1Z2luIGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdHMgdG8gbG9hZC4gUnVuIFxcYG5wbSBydW4gYnVpbGRcXGAgZmlyc3QuYFxuICAgIDogYCR7QlVJTERfUEFUSH0gaXMgb2xkZXIgdGhhbiAke3N0YWxlQnVpbGQubmV3ZXN0SW5wdXRQYXRofSAoYnVpbHQgJHtzdGFsZUJ1aWxkLmJ1aWxkTW9kaWZpZWRBdC50b0lTT1N0cmluZygpfSwgYFxuICAgICAgKyBgY2hhbmdlZCAke3N0YWxlQnVpbGQubmV3ZXN0SW5wdXRNb2RpZmllZEF0LnRvSVNPU3RyaW5nKCl9KSwgc28gdGhlIGludGVncmF0aW9uIHRlc3RzIHdvdWxkIHJ1biB0aGUgcHJldmlvdXMgYnVpbGQgYFxuICAgICAgKyAnaW5zdGVhZCBvZiB0aGUgY3VycmVudCBzb3VyY2UuIFJ1biBgbnBtIHJ1biBidWlsZGAgZmlyc3QuJztcbn1cblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwOiB0aHJvd3Mgd2hlbiB0aGUgcGx1Z2luIGJ1aWxkIGlzIG1pc3Npbmcgb3Igc3RhbGUuXG4gKlxuICogQHBhcmFtIHByb2plY3QgLSBUaGUgVml0ZXN0IHRlc3QgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwKHByb2plY3Q6IFRlc3RQcm9qZWN0KTogdm9pZCB7XG4gIGNvbnN0IHN0YWxlQnVpbGQgPSBmaW5kU3RhbGVCdWlsZCh7IHJvb3RGb2xkZXI6IHByb2plY3QuY29uZmlnLnJvb3QgfSk7XG4gIGlmIChzdGFsZUJ1aWxkICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdFN0YWxlQnVpbGRNZXNzYWdlKHN0YWxlQnVpbGQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRCdWlsZElucHV0UGF0aHMocm9vdEZvbGRlcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBwYXRocyA9IFJPT1RfQlVJTERfSU5QVVRTLm1hcCgocm9vdElucHV0KSA9PiBqb2luKHJvb3RGb2xkZXIsIHJvb3RJbnB1dCkpLmZpbHRlcigocGF0aCkgPT4gZXhpc3RzU3luYyhwYXRoKSk7XG5cbiAgY29uc3Qgc3JjRm9sZGVyID0gam9pbihyb290Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TcmMpO1xuICBpZiAoIWV4aXN0c1N5bmMoc3JjRm9sZGVyKSkge1xuICAgIHJldHVybiBwYXRocztcbiAgfVxuXG4gIGNvbnN0IHRlc3RIZWxwZXJzRm9sZGVyUHJlZml4ID0gam9pbihyb290Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Nb2NrcykgKyBzZXA7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgcmVhZGRpclN5bmMoc3JjRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KSkge1xuICAgIGlmICghZW50cnkuaXNGaWxlKCkgfHwgZW50cnkubmFtZS5lbmRzV2l0aChURVNUX0ZJTEVfU1VGRklYKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aCA9IGpvaW4oZW50cnkucGFyZW50UGF0aCwgZW50cnkubmFtZSk7XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgodGVzdEhlbHBlcnNGb2xkZXJQcmVmaXgpKSB7XG4gICAgICBwYXRocy5wdXNoKHBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXRocztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0JBLGtCQUE0QjtBQUM1QixxQkFJTztBQUNQLHVCQUlPO0FBRVAsd0NBQXdDO0FBb0R4QyxNQUFNLGFBQWEsR0FBRywwREFBd0IsU0FBUyxJQUFJLDBEQUF3QixNQUFNO0FBQ3pGLE1BQU0sb0JBQW9CLENBQUMsMERBQXdCLGNBQWMsMERBQXdCLFNBQVM7QUFDbEcsTUFBTSxtQkFBbUIsMERBQXdCLFVBQVUsTUFBTSxDQUFDO0FBUTNELFNBQVMsZUFBZSxRQUFpRDtBQUM5RSxRQUFNLGdCQUFZLHVCQUFLLE9BQU8sWUFBWSxVQUFVO0FBQ3BELE1BQUksS0FBQywyQkFBVyxTQUFTLEdBQUc7QUFDMUIsV0FBTyxFQUFFLE1BQU0sVUFBVTtBQUFBLEVBQzNCO0FBRUEsUUFBTSxzQkFBa0IseUJBQVMsU0FBUyxFQUFFO0FBQzVDLE1BQUksa0JBQWlDO0FBQ3JDLE1BQUksd0JBQXdCO0FBRTVCLGFBQVcsYUFBYSxtQkFBbUIsT0FBTyxVQUFVLEdBQUc7QUFDN0QsVUFBTSxpQkFBYSx5QkFBUyxTQUFTLEVBQUU7QUFDdkMsUUFBSSxjQUFjLHVCQUF1QjtBQUN2QztBQUFBLElBQ0Y7QUFFQSxzQkFBa0I7QUFDbEIsNEJBQXdCO0FBQUEsRUFDMUI7QUFFQSxNQUFJLG9CQUFvQixNQUFNO0FBQzVCLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLE1BQU07QUFBQSxJQUNOO0FBQUEsSUFDQSxxQkFBaUIsNkJBQVksMkJBQVMsT0FBTyxZQUFZLGVBQWUsQ0FBQztBQUFBLEVBQzNFO0FBQ0Y7QUFRTyxTQUFTLHdCQUF3QixZQUFnQztBQUN0RSxTQUFPLFdBQVcsU0FBUyxZQUN2QixHQUFHLFVBQVUsMkdBQ2IsR0FBRyxVQUFVLGtCQUFrQixXQUFXLGVBQWUsV0FBVyxXQUFXLGdCQUFnQixZQUFZLENBQUMsYUFDL0YsV0FBVyxzQkFBc0IsWUFBWSxDQUFDO0FBRWpFO0FBT08sU0FBUyxNQUFNLFNBQTRCO0FBQ2hELFFBQU0sYUFBYSxlQUFlLEVBQUUsWUFBWSxRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JFLE1BQUksZUFBZSxNQUFNO0FBQ3ZCLFVBQU0sSUFBSSxNQUFNLHdCQUF3QixVQUFVLENBQUM7QUFBQSxFQUNyRDtBQUNGO0FBRUEsU0FBUyxtQkFBbUIsWUFBOEI7QUFDeEQsUUFBTSxRQUFRLGtCQUFrQixJQUFJLENBQUMsa0JBQWMsdUJBQUssWUFBWSxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsYUFBUywyQkFBVyxJQUFJLENBQUM7QUFFakgsUUFBTSxnQkFBWSx1QkFBSyxZQUFZLDBEQUF3QixHQUFHO0FBQzlELE1BQUksS0FBQywyQkFBVyxTQUFTLEdBQUc7QUFDMUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLDhCQUEwQix1QkFBSyxZQUFZLDBEQUF3QixLQUFLLElBQUk7QUFDbEYsYUFBVyxhQUFTLDRCQUFZLFdBQVcsRUFBRSxXQUFXLE1BQU0sZUFBZSxLQUFLLENBQUMsR0FBRztBQUNwRixRQUFJLENBQUMsTUFBTSxPQUFPLEtBQUssTUFBTSxLQUFLLFNBQVMsZ0JBQWdCLEdBQUc7QUFDNUQ7QUFBQSxJQUNGO0FBRUEsVUFBTSxXQUFPLHVCQUFLLE1BQU0sWUFBWSxNQUFNLElBQUk7QUFDOUMsUUFBSSxDQUFDLEtBQUssV0FBVyx1QkFBdUIsR0FBRztBQUM3QyxZQUFNLEtBQUssSUFBSTtBQUFBLElBQ2pCO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDsiLCJuYW1lcyI6W119
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvc3RhbGUtYnVpbGQtZ2xvYmFsLXNldHVwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIHRoYXQgcmVmdXNlcyB0byBzdGFydCBhbiBpbnRlZ3JhdGlvbiBwcm9qZWN0IHdob3NlIHBsdWdpbiBidWlsZCBpcyBzdGFsZS5cbiAqXG4gKiBUaGUgaW50ZWdyYXRpb24gaGFybmVzcyBlbmFibGVzIHRoZSBwbHVnaW4gZnJvbSBpdHMgQlVJTEQsIGBkaXN0L2J1aWxkL21haW4uanNgLCBhbmQgYSBwbHVnaW4nc1xuICogYHRlc3Q6aW50ZWdyYXRpb24qYCBzY3JpcHRzIGNhbGwgdml0ZXN0IGRpcmVjdGx5LCBzbyBub3RoaW5nIG9uIHRoYXQgcGF0aCBidWlsZHMgZmlyc3QuIEEgc2Vzc2lvbiB0aGF0XG4gKiBlZGl0cyBgc3JjL2AgYW5kIHRoZW4gcnVucyBvbmUgaW50ZWdyYXRpb24gcHJvamVjdCB0ZXN0cyB0aGUgbGFzdCBidWlsZCwgaG93ZXZlciBvbGQgaXQgaXMsIGFuZCB0aGVcbiAqIHN1aXRlIHJlcG9ydHMgdGhlIG9sZCBjb2RlIGFzIGEgYmVoYXZpb3IgZGlmZmVyZW5jZSwgbm90IGFzIGEgc3RhbGUgYXJ0aWZhY3QuIE9uZSBzdWNoIHJ1biBjb3N0IGEgQ0RQXG4gKiBwcm9iZSBpbnRvIE9ic2lkaWFuJ3Mgb3duIGxpbmsgcmVzb2x1dGlvbiwgYSB3cm9uZyBjYWNoZS1yYWNlIHRoZW9yeSwgYW5kIGEgaGFybmVzcyBjaGFuZ2UgdGhhdCB3YXNcbiAqIG1hZGUgYW5kIHRoZW4gcmV2ZXJ0ZWQgYmVmb3JlIGFueW9uZSBub3RpY2VkIHRoYXQgdGhlIGJ1aWxkIHdhcyB0aHJlZSBkYXlzIG9sZC4gYG5wbSBydW4gZ2F0ZWAgYXZvaWRlZFxuICogdGhlIHByb2JsZW0gb25seSBiZWNhdXNlIGl0IGhhcHBlbnMgdG8gYnVpbGQgYmVmb3JlIGl0IHJ1bnMgYHRlc3Q6aW50ZWdyYXRpb25gLlxuICpcbiAqIFRoZSBzZXR1cCByZWZ1c2VzIHRvIHN0YXJ0IHJhdGhlciB0aGFuIGJ1aWxkaW5nLiBBIGJ1aWxkIGluc2lkZSBhIGdsb2JhbCBzZXR1cCB3b3VsZCBydW4gb25jZSBwZXJcbiAqIHByb2plY3QgaW4gYSBtdWx0aS1wcm9qZWN0IGFnZ3JlZ2F0ZSwgYW5kIGl0IHdvdWxkIHNsb3cgZG93biBhIGRlbGliZXJhdGUgcmUtcnVuIG9mIGFuIHVuY2hhbmdlZCBidWlsZC5cbiAqIEEgcmVmdXNhbCBpcyBjaGVhcCwgYW5kIGl0IHNheXMgd2hhdCB0byBydW4uXG4gKlxuICogVGVzdCBmaWxlcyBhcmUgbm90IGJ1aWxkIGlucHV0cy4gRWRpdGluZyBhbiBpbnRlZ3JhdGlvbiBjYXNlIGFuZCByZS1ydW5uaW5nIGl0IGlzIGV4YWN0bHkgdGhlIGxvb3AgdGhhdFxuICogbXVzdCBub3QgZm9yY2UgYSByZWJ1aWxkLCBzbyBgKi50ZXN0LnRzYCBmaWxlcyBhbmQgYHNyYy90ZXN0LWhlbHBlcnMvYCBhcmUgaWdub3JlZC4gQSBkZXBlbmRlbmN5IGJ1bXBcbiAqIGlzIG5vdCBkZXRlY3RlZCBlaXRoZXI6IG9ubHkgZmlsZXMgaW4gdGhlIHJlcG8gYXJlIGNvbXBhcmVkLCBub3QgYG5vZGVfbW9kdWxlc2AuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBUZXN0UHJvamVjdCB9IGZyb20gJ3ZpdGVzdC9ub2RlJztcblxuaW1wb3J0IHsgdG9Qb3NpeFBhdGggfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQge1xuICBleGlzdHNTeW5jLFxuICByZWFkZGlyU3luYyxcbiAgc3RhdFN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBqb2luLFxuICByZWxhdGl2ZSxcbiAgc2VwXG59IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kU3RhbGVCdWlsZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZFN0YWxlQnVpbGRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHJvb3QgZm9sZGVyIG9mIHRoZSBwbHVnaW4gcmVwby5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgYnVpbGQgZG9lcyBub3QgZXhpc3QgYXQgYWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc3NpbmdCdWlsZCB7XG4gIC8qKlxuICAgKiBUaGUgZGlzY3JpbWluYW50LlxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogJ21pc3NpbmcnO1xufVxuXG4vKipcbiAqIFRoZSBidWlsZCBleGlzdHMgYnV0IGlzIG9sZGVyIHRoYW4gb25lIG9mIGl0cyBpbnB1dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3V0ZGF0ZWRCdWlsZCB7XG4gIC8qKlxuICAgKiBUaGUgbW9kaWZpY2F0aW9uIHRpbWUgb2YgYGRpc3QvYnVpbGQvbWFpbi5qc2AuXG4gICAqL1xuICByZWFkb25seSBidWlsZE1vZGlmaWVkQXQ6IERhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNjcmltaW5hbnQuXG4gICAqL1xuICByZWFkb25seSBraW5kOiAnb3V0ZGF0ZWQnO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9kaWZpY2F0aW9uIHRpbWUgb2Yge0BsaW5rIE91dGRhdGVkQnVpbGQubmV3ZXN0SW5wdXRQYXRofS5cbiAgICovXG4gIHJlYWRvbmx5IG5ld2VzdElucHV0TW9kaWZpZWRBdDogRGF0ZTtcblxuICAvKipcbiAgICogVGhlIG5ld2VzdCBidWlsZCBpbnB1dCwgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV3ZXN0SW5wdXRQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2h5IHRoZSBidWlsZCBjYW5ub3QgYmUgdGVzdGVkLCBhcyByZXR1cm5lZCBieSB7QGxpbmsgZmluZFN0YWxlQnVpbGR9LlxuICovXG5leHBvcnQgdHlwZSBTdGFsZUJ1aWxkID0gTWlzc2luZ0J1aWxkIHwgT3V0ZGF0ZWRCdWlsZDtcblxuY29uc3QgQlVJTERfUEFUSCA9IGAke09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZH0vJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluSnN9YDtcbmNvbnN0IFJPT1RfQlVJTERfSU5QVVRTID0gW09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuU3R5bGVzQ3NzXTtcbmNvbnN0IFRFU1RfRklMRV9TVUZGSVggPSBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlUZXN0VHMuc2xpY2UoMSk7XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYGRpc3QvYnVpbGQvbWFpbi5qc2AgaXMgbWlzc2luZywgb3Igb2xkZXIgdGhhbiBvbmUgb2YgdGhlIGZpbGVzIGl0IGlzIGJ1aWx0IGZyb20uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgYG51bGxgIHdoZW4gdGhlIGJ1aWxkIGlzIGN1cnJlbnQ7IG90aGVyd2lzZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9ibGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFN0YWxlQnVpbGQocGFyYW1zOiBGaW5kU3RhbGVCdWlsZFBhcmFtcyk6IG51bGwgfCBTdGFsZUJ1aWxkIHtcbiAgY29uc3QgYnVpbGRQYXRoID0gam9pbihwYXJhbXMucm9vdEZvbGRlciwgQlVJTERfUEFUSCk7XG4gIGlmICghZXhpc3RzU3luYyhidWlsZFBhdGgpKSB7XG4gICAgcmV0dXJuIHsga2luZDogJ21pc3NpbmcnIH07XG4gIH1cblxuICBjb25zdCBidWlsZE1vZGlmaWVkQXQgPSBzdGF0U3luYyhidWlsZFBhdGgpLm10aW1lO1xuICBsZXQgbmV3ZXN0SW5wdXRQYXRoOiBudWxsIHwgc3RyaW5nID0gbnVsbDtcbiAgbGV0IG5ld2VzdElucHV0TW9kaWZpZWRBdCA9IGJ1aWxkTW9kaWZpZWRBdDtcblxuICBmb3IgKGNvbnN0IGlucHV0UGF0aCBvZiBnZXRCdWlsZElucHV0UGF0aHMocGFyYW1zLnJvb3RGb2xkZXIpKSB7XG4gICAgY29uc3QgbW9kaWZpZWRBdCA9IHN0YXRTeW5jKGlucHV0UGF0aCkubXRpbWU7XG4gICAgaWYgKG1vZGlmaWVkQXQgPD0gbmV3ZXN0SW5wdXRNb2RpZmllZEF0KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBuZXdlc3RJbnB1dFBhdGggPSBpbnB1dFBhdGg7XG4gICAgbmV3ZXN0SW5wdXRNb2RpZmllZEF0ID0gbW9kaWZpZWRBdDtcbiAgfVxuXG4gIGlmIChuZXdlc3RJbnB1dFBhdGggPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYnVpbGRNb2RpZmllZEF0LFxuICAgIGtpbmQ6ICdvdXRkYXRlZCcsXG4gICAgbmV3ZXN0SW5wdXRNb2RpZmllZEF0LFxuICAgIG5ld2VzdElucHV0UGF0aDogdG9Qb3NpeFBhdGgocmVsYXRpdmUocGFyYW1zLnJvb3RGb2xkZXIsIG5ld2VzdElucHV0UGF0aCkpXG4gIH07XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIHtAbGluayBTdGFsZUJ1aWxkfSBhcyB0aGUgbWVzc2FnZSB0aGUgc2V0dXAgdGhyb3dzLlxuICpcbiAqIEBwYXJhbSBzdGFsZUJ1aWxkIC0gVGhlIHN0YWxlIGJ1aWxkLlxuICogQHJldHVybnMgVGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTdGFsZUJ1aWxkTWVzc2FnZShzdGFsZUJ1aWxkOiBTdGFsZUJ1aWxkKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0YWxlQnVpbGQua2luZCA9PT0gJ21pc3NpbmcnXG4gICAgPyBgJHtCVUlMRF9QQVRIfSBkb2VzIG5vdCBleGlzdCwgc28gdGhlcmUgaXMgbm8gcGx1Z2luIGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdHMgdG8gbG9hZC4gUnVuIFxcYG5wbSBydW4gYnVpbGRcXGAgZmlyc3QuYFxuICAgIDogYCR7QlVJTERfUEFUSH0gaXMgb2xkZXIgdGhhbiAke3N0YWxlQnVpbGQubmV3ZXN0SW5wdXRQYXRofSAoYnVpbHQgJHtzdGFsZUJ1aWxkLmJ1aWxkTW9kaWZpZWRBdC50b0lTT1N0cmluZygpfSwgYFxuICAgICAgKyBgY2hhbmdlZCAke3N0YWxlQnVpbGQubmV3ZXN0SW5wdXRNb2RpZmllZEF0LnRvSVNPU3RyaW5nKCl9KSwgc28gdGhlIGludGVncmF0aW9uIHRlc3RzIHdvdWxkIHJ1biB0aGUgcHJldmlvdXMgYnVpbGQgYFxuICAgICAgKyAnaW5zdGVhZCBvZiB0aGUgY3VycmVudCBzb3VyY2UuIFJ1biBgbnBtIHJ1biBidWlsZGAgZmlyc3QuJztcbn1cblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwOiB0aHJvd3Mgd2hlbiB0aGUgcGx1Z2luIGJ1aWxkIGlzIG1pc3Npbmcgb3Igc3RhbGUuXG4gKlxuICogQHBhcmFtIHByb2plY3QgLSBUaGUgVml0ZXN0IHRlc3QgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwKHByb2plY3Q6IFRlc3RQcm9qZWN0KTogdm9pZCB7XG4gIGNvbnN0IHN0YWxlQnVpbGQgPSBmaW5kU3RhbGVCdWlsZCh7IHJvb3RGb2xkZXI6IHByb2plY3QuY29uZmlnLnJvb3QgfSk7XG4gIGlmIChzdGFsZUJ1aWxkICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdFN0YWxlQnVpbGRNZXNzYWdlKHN0YWxlQnVpbGQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRCdWlsZElucHV0UGF0aHMocm9vdEZvbGRlcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBwYXRocyA9IFJPT1RfQlVJTERfSU5QVVRTLm1hcCgocm9vdElucHV0KSA9PiBqb2luKHJvb3RGb2xkZXIsIHJvb3RJbnB1dCkpLmZpbHRlcigocGF0aCkgPT4gZXhpc3RzU3luYyhwYXRoKSk7XG5cbiAgY29uc3Qgc3JjRm9sZGVyID0gam9pbihyb290Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TcmMpO1xuICBpZiAoIWV4aXN0c1N5bmMoc3JjRm9sZGVyKSkge1xuICAgIHJldHVybiBwYXRocztcbiAgfVxuXG4gIGNvbnN0IHRlc3RIZWxwZXJzRm9sZGVyUHJlZml4ID0gam9pbihyb290Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Nb2NrcykgKyBzZXA7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgcmVhZGRpclN5bmMoc3JjRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KSkge1xuICAgIGlmICghZW50cnkuaXNGaWxlKCkgfHwgZW50cnkubmFtZS5lbmRzV2l0aChURVNUX0ZJTEVfU1VGRklYKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aCA9IGpvaW4oZW50cnkucGFyZW50UGF0aCwgZW50cnkubmFtZSk7XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgodGVzdEhlbHBlcnNGb2xkZXJQcmVmaXgpKSB7XG4gICAgICBwYXRocy5wdXNoKHBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXRocztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdCQSxrQkFBNEI7QUFDNUIscUJBSU87QUFDUCx1QkFJTztBQUVQLHdDQUF3QztBQW9EeEMsTUFBTSxhQUFhLEdBQUcsMERBQXdCLFNBQVMsSUFBSSwwREFBd0IsTUFBTTtBQUN6RixNQUFNLG9CQUFvQixDQUFDLDBEQUF3QixjQUFjLDBEQUF3QixTQUFTO0FBQ2xHLE1BQU0sbUJBQW1CLDBEQUF3QixVQUFVLE1BQU0sQ0FBQztBQVEzRCxTQUFTLGVBQWUsUUFBaUQ7QUFDOUUsUUFBTSxnQkFBWSx1QkFBSyxPQUFPLFlBQVksVUFBVTtBQUNwRCxNQUFJLEtBQUMsMkJBQVcsU0FBUyxHQUFHO0FBQzFCLFdBQU8sRUFBRSxNQUFNLFVBQVU7QUFBQSxFQUMzQjtBQUVBLFFBQU0sc0JBQWtCLHlCQUFTLFNBQVMsRUFBRTtBQUM1QyxNQUFJLGtCQUFpQztBQUNyQyxNQUFJLHdCQUF3QjtBQUU1QixhQUFXLGFBQWEsbUJBQW1CLE9BQU8sVUFBVSxHQUFHO0FBQzdELFVBQU0saUJBQWEseUJBQVMsU0FBUyxFQUFFO0FBQ3ZDLFFBQUksY0FBYyx1QkFBdUI7QUFDdkM7QUFBQSxJQUNGO0FBRUEsc0JBQWtCO0FBQ2xCLDRCQUF3QjtBQUFBLEVBQzFCO0FBRUEsTUFBSSxvQkFBb0IsTUFBTTtBQUM1QixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxNQUFNO0FBQUEsSUFDTjtBQUFBLElBQ0EscUJBQWlCLDZCQUFZLDJCQUFTLE9BQU8sWUFBWSxlQUFlLENBQUM7QUFBQSxFQUMzRTtBQUNGO0FBUU8sU0FBUyx3QkFBd0IsWUFBZ0M7QUFDdEUsU0FBTyxXQUFXLFNBQVMsWUFDdkIsR0FBRyxVQUFVLDJHQUNiLEdBQUcsVUFBVSxrQkFBa0IsV0FBVyxlQUFlLFdBQVcsV0FBVyxnQkFBZ0IsWUFBWSxDQUFDLGFBQy9GLFdBQVcsc0JBQXNCLFlBQVksQ0FBQztBQUVqRTtBQU9PLFNBQVMsTUFBTSxTQUE0QjtBQUNoRCxRQUFNLGFBQWEsZUFBZSxFQUFFLFlBQVksUUFBUSxPQUFPLEtBQUssQ0FBQztBQUNyRSxNQUFJLGVBQWUsTUFBTTtBQUN2QixVQUFNLElBQUksTUFBTSx3QkFBd0IsVUFBVSxDQUFDO0FBQUEsRUFDckQ7QUFDRjtBQUVBLFNBQVMsbUJBQW1CLFlBQThCO0FBQ3hELFFBQU0sUUFBUSxrQkFBa0IsSUFBSSxDQUFDLGtCQUFjLHVCQUFLLFlBQVksU0FBUyxDQUFDLEVBQUUsT0FBTyxDQUFDLGFBQVMsMkJBQVcsSUFBSSxDQUFDO0FBRWpILFFBQU0sZ0JBQVksdUJBQUssWUFBWSwwREFBd0IsR0FBRztBQUM5RCxNQUFJLEtBQUMsMkJBQVcsU0FBUyxHQUFHO0FBQzFCLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSw4QkFBMEIsdUJBQUssWUFBWSwwREFBd0IsS0FBSyxJQUFJO0FBQ2xGLGFBQVcsYUFBUyw0QkFBWSxXQUFXLEVBQUUsV0FBVyxNQUFNLGVBQWUsS0FBSyxDQUFDLEdBQUc7QUFDcEYsUUFBSSxDQUFDLE1BQU0sT0FBTyxLQUFLLE1BQU0sS0FBSyxTQUFTLGdCQUFnQixHQUFHO0FBQzVEO0FBQUEsSUFDRjtBQUVBLFVBQU0sV0FBTyx1QkFBSyxNQUFNLFlBQVksTUFBTSxJQUFJO0FBQzlDLFFBQUksQ0FBQyxLQUFLLFdBQVcsdUJBQXVCLEdBQUc7QUFDN0MsWUFBTSxLQUFLLElBQUk7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7IiwibmFtZXMiOltdfQ==
|
|
@@ -29,80 +29,6 @@ function ensureBrowserProcess() {
|
|
|
29
29
|
|
|
30
30
|
ensureBrowserProcess();
|
|
31
31
|
})();
|
|
32
|
-
(function patchObsidianRequire() {
|
|
33
|
-
const originalRequire = require;
|
|
34
|
-
if (!originalRequire || originalRequire.__isPatched) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
require = Object.assign(
|
|
39
|
-
(id) => requirePatched(id),
|
|
40
|
-
originalRequire,
|
|
41
|
-
{
|
|
42
|
-
__isPatched: true
|
|
43
|
-
}
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
function extractDefault(module) {
|
|
47
|
-
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
51
|
-
'@codemirror/autocomplete',
|
|
52
|
-
'@codemirror/collab',
|
|
53
|
-
'@codemirror/commands',
|
|
54
|
-
'@codemirror/language',
|
|
55
|
-
'@codemirror/lint',
|
|
56
|
-
'@codemirror/search',
|
|
57
|
-
'@codemirror/state',
|
|
58
|
-
'@codemirror/text',
|
|
59
|
-
'@codemirror/view',
|
|
60
|
-
'@lezer/common',
|
|
61
|
-
'@lezer/highlight',
|
|
62
|
-
'@lezer/lr',
|
|
63
|
-
'obsidian']
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
67
|
-
'@codemirror/closebrackets',
|
|
68
|
-
'@codemirror/comment',
|
|
69
|
-
'@codemirror/fold',
|
|
70
|
-
'@codemirror/gutter',
|
|
71
|
-
'@codemirror/highlight',
|
|
72
|
-
'@codemirror/history',
|
|
73
|
-
'@codemirror/matchbrackets',
|
|
74
|
-
'@codemirror/panel',
|
|
75
|
-
'@codemirror/rangeset',
|
|
76
|
-
'@codemirror/rectangular-selection',
|
|
77
|
-
'@codemirror/stream-parser',
|
|
78
|
-
'@codemirror/tooltip']
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
function requirePatched(id) {
|
|
82
|
-
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
83
|
-
return originalRequire?.(id);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
87
|
-
if (globalThis.app.isMobile) {
|
|
88
|
-
if (id === 'process' || id === 'node:process') {
|
|
89
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
90
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
91
|
-
|
|
92
|
-
return process;
|
|
93
|
-
}
|
|
94
|
-
} else {
|
|
95
|
-
const module = originalRequire?.(id);
|
|
96
|
-
if (module) {
|
|
97
|
-
return extractDefault(module);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
102
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
103
|
-
return {};
|
|
104
|
-
}
|
|
105
|
-
})();
|
|
106
32
|
|
|
107
33
|
"use strict";
|
|
108
34
|
var __create = Object.create;
|
|
@@ -142,14 +68,12 @@ __export(vitest_config_exports, {
|
|
|
142
68
|
module.exports = __toCommonJS(vitest_config_exports);
|
|
143
69
|
var import_vitest_config = require('@mnaoumov/typescript-dev-toolkit/test-runners/vitest-config');
|
|
144
70
|
var import_node_process = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('node:process')), 1);
|
|
145
|
-
var import_obsidian_integration_testing = require('obsidian-integration-testing');
|
|
146
|
-
var import_config = require('vitest/config');
|
|
147
71
|
var import_performance_eval_cap = require('./performance-eval-cap.cjs');
|
|
148
72
|
const TRANSPORT_EVAL_CAP_MARGIN_IN_MILLISECONDS = 15e3;
|
|
149
73
|
const ANDROID_TIMEOUT_IN_MILLISECONDS = 6e4;
|
|
150
74
|
const HOOK_TIMEOUT_MULTIPLIER = 4;
|
|
151
75
|
const PERFORMANCE_TIMEOUT_IN_MILLISECONDS = import_performance_eval_cap.PERFORMANCE_EVAL_CAP_IN_MILLISECONDS + TRANSPORT_EVAL_CAP_MARGIN_IN_MILLISECONDS;
|
|
152
|
-
const INTEGRATION_TEST_TIMEOUT_IN_MILLISECONDS =
|
|
76
|
+
const INTEGRATION_TEST_TIMEOUT_IN_MILLISECONDS = import_performance_eval_cap.DEFAULT_EVAL_CAP_IN_MILLISECONDS + TRANSPORT_EVAL_CAP_MARGIN_IN_MILLISECONDS;
|
|
153
77
|
const ANDROID_TEST_FILES = "src/**/*.android.integration.test.ts";
|
|
154
78
|
const CROSS_PLATFORM_TEST_FILES = "src/**/*.cross-platform.integration.test.ts";
|
|
155
79
|
const DECLARATION_FILES = "src/**/*.d.ts";
|
|
@@ -400,7 +324,7 @@ function defineObsidianPluginVitestConfig(options = {}) {
|
|
|
400
324
|
pool: "forks"
|
|
401
325
|
}
|
|
402
326
|
}];
|
|
403
|
-
return
|
|
327
|
+
return {
|
|
404
328
|
test: {
|
|
405
329
|
coverage: {
|
|
406
330
|
exclude: context.coverageExclude,
|
|
@@ -437,7 +361,7 @@ function defineObsidianPluginVitestConfig(options = {}) {
|
|
|
437
361
|
],
|
|
438
362
|
reporters: [...context.reporters]
|
|
439
363
|
}
|
|
440
|
-
}
|
|
364
|
+
};
|
|
441
365
|
}
|
|
442
366
|
function validateCustomProjects(customProjects) {
|
|
443
367
|
for (const [index, customProject] of customProjects.entries()) {
|
|
@@ -462,4 +386,4 @@ function validateCustomProjects(customProjects) {
|
|
|
462
386
|
ObsidianPluginVitestConfigContext,
|
|
463
387
|
defineObsidianPluginVitestConfig
|
|
464
388
|
});
|
|
465
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvdml0ZXN0LWNvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogU2hhcmVkIHZpdGVzdCBjb25maWd1cmF0aW9uIGZvciBPYnNpZGlhbiBwbHVnaW5zLlxuICpcbiAqIEV2ZXJ5IHBsdWdpbiBpbiB0aGUgd29ya3NwYWNlIGRlY2xhcmVzIHRoZSBzYW1lIGZpdmUgdml0ZXN0IHByb2plY3RzIOKAlCBgdW5pdC10ZXN0c2AgcGx1cyB0aGVcbiAqIGBpbnRlZ3JhdGlvbi10ZXN0czp7bm8tYXBwLGRlc2t0b3AsZGVza3RvcC1wZXJmb3JtYW5jZSxhbmRyb2lkfWAgZmFtaWx5IOKAlCB3aXRoIHRoZSBzYW1lIHRpbWVvdXRzLFxuICogYHNldHVwRmlsZXNgLCBhbmQgYGdsb2JhbFNldHVwYCB3aXJpbmcuIE1haW50YWluaW5nIHRoYXQgcGVyIHJlcG8gbWVhbnMgYSBjb252ZW50aW9uIGNoYW5nZSBjb3N0cyBvbmVcbiAqIG5lYXItaWRlbnRpY2FsIGVkaXQgcGVyIHBsdWdpbiwgYW5kIGFueSByZXBvIHRoYXQgaXMgbWlzc2VkIGRyaWZ0cyBzaWxlbnRseS4gVGhpcyBtb2R1bGUgb3ducyB0aGF0XG4gKiBjb25maWd1cmF0aW9uIG9uY2UsIHNvIGEgcGx1Z2luJ3MgYHNjcmlwdHMvdml0ZXN0LWNvbmZpZy50c2AgY29sbGFwc2VzIHRvIGEgc2luZ2xlIGNhbGwuXG4gKlxuICogVGhlIHNlYW0gbWlycm9ycyB0aGUgRVNMaW50IG9uZSAoYGRlZmluZUVzbGludENvbmZpZ3NgKTogdGhlIGZhY3RvcnkgYnVpbGRzIGEgY29udGV4dCBob2xkaW5nIHRoZSBzdGFuZGFyZCBwcm9qZWN0cywgdGhlIGNhbGxlciBlZGl0c1xuICogaXQgaW4gcGxhY2UgdGhyb3VnaCB7QGxpbmsgRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zLmVkaXRDb250ZXh0fSwgYW5kIGFwcGVuZHMgYW55XG4gKiBwcm9qZWN0IHRoZSBiYXNlIGRvZXMgbm90IGtub3cgYWJvdXQgdGhyb3VnaFxuICoge0BsaW5rIERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucy5jdXN0b21Qcm9qZWN0c30uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBWaXRlc3RSZXBvcnRlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3Rlc3QtcnVubmVycy92aXRlc3QtY29uZmlnJztcbmltcG9ydCB0eXBlIHtcbiAgVGVzdFByb2plY3RDb25maWd1cmF0aW9uLFxuICBUZXN0UHJvamVjdElubGluZUNvbmZpZ3VyYXRpb24sXG4gIFZpdGVVc2VyQ29uZmlnXG59IGZyb20gJ3ZpdGVzdC9jb25maWcnO1xuXG5pbXBvcnQge1xuICBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlMsXG4gIERFRkFVTFRfVklURVNUX1RFU1RfRVhDTFVERVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC90ZXN0LXJ1bm5lcnMvdml0ZXN0LWNvbmZpZyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHsgREVGQVVMVF9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nJztcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGVzdC9jb25maWcnO1xuXG5pbXBvcnQge1xuICBERVNLVE9QX1BFUkZPUk1BTkNFX1RFU1RfRklMRV9TVUZGSVgsXG4gIFBFUkZPUk1BTkNFX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU1xufSBmcm9tICcuL3BlcmZvcm1hbmNlLWV2YWwtY2FwLnRzJztcblxuLyoqXG4gKiBUaGUgYHRlc3RgIHNlY3Rpb24gb2YgYSBzaW5nbGUgdml0ZXN0IHByb2plY3QgZW50cnkuXG4gKi9cbmV4cG9ydCB0eXBlIE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IE5vbk51bGxhYmxlPFRlc3RQcm9qZWN0SW5saW5lQ29uZmlndXJhdGlvblsndGVzdCddPjtcblxuLyoqXG4gKiBPbmUgZW50cnkgb2YgYSB2aXRlc3QgYHJlcG9ydGVyc2AgbGlzdDogdGhlIG5hbWUgb2YgYSBidWlsdC1pbiByZXBvcnRlciBvciBhIHJlcG9ydGVyIGluc3RhbmNlLiBUaGUgc2FtZSBzaGFwZSBhc1xuICogdGhlIGxpYnJhcnkgY29uZmlndXJhdGlvbidzIHtAbGluayBWaXRlc3RSZXBvcnRlcn0uXG4gKi9cbmV4cG9ydCB0eXBlIE9ic2lkaWFuUGx1Z2luVml0ZXN0UmVwb3J0ZXIgPSBWaXRlc3RSZXBvcnRlcjtcblxuLy8gVGhlIGxpYnJhcnkgY29uZmlndXJhdGlvbidzIHBpbm5lZCByZXBvcnRlcnMsIHJlLWV4cG9ydGVkIHNvIGEgcGx1Z2luIHJlcG8gdGhhdCBhc3NlbWJsZXMgaXRzIHZpdGVzdCBwcm9qZWN0cyBieVxuLy8gaGFuZCBuZWVkcyBvbmx5IHRoaXMgcGFja2FnZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1leHBvcnQtZnJvbSAtLSBUaGUgYmluZGluZyBpcyBhbHNvIHVzZWQgYmVsb3csIHNvIGl0IGlzIGltcG9ydGVkIG9uY2UuXG5leHBvcnQgeyBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlMgfTtcblxuLypcbiAqIEhvdyBtdWNoIGEgcHJvamVjdCdzIHBlci10ZXN0IGJ1ZGdldCBjbGVhcnMgYERFRkFVTFRfRVZBTF9DQVBfSU5fTUlMTElTRUNPTkRTYCBieSDigJQgdGhlIHBlci1ldmFsIGNhcFxuICogQk9USCB0cmFuc3BvcnRzIGVuZm9yY2UsIGltcG9ydGVkIGZyb20gYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgIHJhdGhlciB0aGFuIHJlc3RhdGVkIHNvIHRoZVxuICogYnVkZ2V0cyBiZWxvdyBhbmQgdGhlIGNhcCB0aGV5IGFyZSBzaXplZCBhZ2FpbnN0IGNhbiBuZXZlciBiZSB0d28gbnVtYmVycy4gT25lIGBldmFsSW5PYnNpZGlhbmAgY2xvc3VyZVxuICogZ2V0cyB0aGF0IG11Y2ggYW5kIG5vIG1vcmUsIG1lYXN1cmVkIGZyb20gdGhlIG1vbWVudCB0aGUgdHJhbnNwb3J0IGRpc3BhdGNoZXMgaXQ7IG91dHJ1bm5pbmcgaXQgcmFpc2VzXG4gKiBgRXZhbENhcEV4Y2VlZGVkRXJyb3JgLCB3aGljaCBuYW1lcyB0aGUgY2FwLCB0aGUgdHJhbnNwb3J0IHRoYXQgZW5mb3JjZWQgaXQsIGFuZCB0aGUgYHBvbGxJbk9ic2lkaWFuYFxuICogcmVtZWR5IOKAlCB0aGUgb25lIG1lc3NhZ2UgdGhhdCB0dXJucyBcInRoaXMgdGltZWQgb3V0XCIgaW50byBcInRoaXMgY2xvc3VyZSBhc2tlZCBmb3IgbW9yZSB0aW1lIHRoYW5cbiAqIGV4aXN0c1wiLlxuICpcbiAqIEEgdGVzdCBidWRnZXQgRVFVQUwgdG8gdGhlIGNhcCBtYWtlcyB0aGUgY2FwJ3Mgb3duIGRpYWdub3NpcyB1bnJlYWNoYWJsZTogdml0ZXN0IHN0YXJ0cyBpdHMgY2xvY2sgYXRcbiAqIHRoZSB0b3Agb2YgdGhlIHRlc3QgYW5kIHRoZSB0cmFuc3BvcnQgc3RhcnRzIGl0cyBvd24gb25seSBvbmNlIHRoZSBldmFsIGlzIGRpc3BhdGNoZWQsIHNvIHZpdGVzdCBhbHdheXNcbiAqIHdpbnMgYnkgdGhlIGZldyBtaWxsaXNlY29uZHMgaW4gYmV0d2VlbiBhbmQgcmVwb3J0cyBpdHMgYW5vbnltb3VzIGBUZXN0IHRpbWVkIG91dCBpbiAzMDAwMG1zYC4gVGhhdCBpc1xuICogbm90IGEgaHlwb3RoZXRpY2FsIOKAlCBpdCBpcyBob3cgZXZlcnkgb3Zlci1jYXAgZGVza3RvcCBldmFsIGhhZCBzdXJmYWNlZCBoZXJlIHVudGlsIHRoaXMgbWFyZ2luIGV4aXN0ZWQsXG4gKiBhbmQgb25lIG9mIHRoZW0gYWJvcnRlZCBhbiBvdGhlcndpc2UgZ3JlZW4gcmVsZWFzZSBmaXZlIG1pbnV0ZXMgaW50byB0aGUgcHJlZmxpZ2h0IHdpdGggbm8gaW5kaWNhdGlvblxuICogb2Ygd2hpY2ggd2FpdCB3YXMgdG8gYmxhbWUgKG1lYXN1cmVkIDIwMjYtMDktMTU6IDMwMDQ0IG1zIGJ1cm5lZCBhZ2FpbnN0IGEgMzAwMDAgbXMgYnVkZ2V0KS5cbiAqXG4gKiBUaGUgbWFyZ2luIGhhcyB0byBjb3ZlciBldmVyeXRoaW5nIGEgdGVzdCBkb2VzIEJFRk9SRSB0aGUgZXZhbCB0aGF0IGhhbmdzIOKAlCBlYXJsaWVyIG9uZXMgaW5jbHVkZWQg4oCUXG4gKiBzbyBpdCBpcyBhIGhlYWx0aHkgZnJhY3Rpb24gb2YgdGhlIGNhcCByYXRoZXIgdGhhbiBhIGNvdXBsZSBvZiBzZWNvbmRzLlxuICovXG5jb25zdCBUUkFOU1BPUlRfRVZBTF9DQVBfTUFSR0lOX0lOX01JTExJU0VDT05EUyA9IDE1XzAwMDtcblxuLypcbiAqIEFuZHJvaWQgd2FzIG5ldmVyIGFmZmVjdGVkLCBhbmQgdGhhdCBhc3ltbWV0cnkgaXMgdGhlIGV2aWRlbmNlIHRoZSBkZXNrdG9wIGVxdWFsaXR5IHdhcyBhbiBvdmVyc2lnaHRcbiAqIHJhdGhlciB0aGFuIGEgZGVjaXNpb246IGl0cyBidWRnZXQgaGFzIGFsd2F5cyBiZWVuIGRvdWJsZSB0aGUgQXBwaXVtIGNhcCwgc28gYW4gb3Zlci1jYXAgbW9iaWxlIGNsb3N1cmVcbiAqIGhhcyBhbHdheXMgYmVlbiBhYmxlIHRvIHJlcG9ydCBpdHNlbGYuXG4gKi9cbmNvbnN0IEFORFJPSURfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSA2MF8wMDA7XG5jb25zdCBIT09LX1RJTUVPVVRfTVVMVElQTElFUiA9IDQ7XG5cbi8qXG4gKiBUaGUgcGVyZm9ybWFuY2UgcHJvamVjdCdzIGJ1ZGdldCBjbGVhcnMgaXRzIG93biBwZXItZXZhbCBjYXAgYnkgdGhlIHNhbWUgbWFyZ2luLCBmb3IgdGhlIHNhbWUgcmVhc29uXG4gKiB0aGUgcmVndWxhciBidWRnZXQgY2xlYXJzIHRoZSB0cmFuc3BvcnQgZGVmYXVsdDogYW4gZXF1YWwgYnVkZ2V0IGxldHMgdml0ZXN0J3MgYW5vbnltb3VzIHRpbWVvdXQgd2luXG4gKiB0aGUgcmFjZSBhZ2FpbnN0IHRoZSBjYXAncyBvd24gYEV2YWxDYXBFeGNlZWRlZEVycm9yYC5cbiAqL1xuY29uc3QgUEVSRk9STUFOQ0VfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSBQRVJGT1JNQU5DRV9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgKyBUUkFOU1BPUlRfRVZBTF9DQVBfTUFSR0lOX0lOX01JTExJU0VDT05EUztcblxuLyoqXG4gKiBUaGUgcGVyLXRlc3QgYnVkZ2V0IG9mIHRoZSByZWd1bGFyIGludGVncmF0aW9uIHByb2plY3RzLCBpbiBtaWxsaXNlY29uZHMuXG4gKlxuICogRXhwb3J0ZWQgYmVjYXVzZSBhIHJlcG8gdGhhdCBhc3NlbWJsZXMgaXRzIHZpdGVzdCBwcm9qZWN0cyBieSBoYW5kIGluc3RlYWQgb2YgdGhyb3VnaFxuICoge0BsaW5rIGRlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnfSBzdGlsbCBuZWVkcyB0aGUgc2FtZSByZWxhdGlvbnNoaXAgdG8gdGhlIHBlci1ldmFsIGNhcCwgYW5kXG4gKiByZXN0YXRpbmcgdGhlIG51bWJlciB0aGVyZSBpcyBob3cgdGhlIHR3byBkcmlmdCBhcGFydC5cbiAqL1xuZXhwb3J0IGNvbnN0IElOVEVHUkFUSU9OX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUyArIFRSQU5TUE9SVF9FVkFMX0NBUF9NQVJHSU5fSU5fTUlMTElTRUNPTkRTO1xuXG5jb25zdCBBTkRST0lEX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouYW5kcm9pZC5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IENST1NTX1BMQVRGT1JNX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouY3Jvc3MtcGxhdGZvcm0uaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBERUNMQVJBVElPTl9GSUxFUyA9ICdzcmMvKiovKi5kLnRzJztcbmNvbnN0IERFU0tUT1BfUEVSRk9STUFOQ0VfVEVTVF9GSUxFUyA9IGBzcmMvKiovKiR7REVTS1RPUF9QRVJGT1JNQU5DRV9URVNUX0ZJTEVfU1VGRklYfWA7XG5jb25zdCBERVNLVE9QX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouZGVza3RvcC5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IElOVEVHUkFUSU9OX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBOT19BUFBfVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5uby1hcHAuaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBVTklUX1RFU1RfRklMRVMgPSAnc3JjLyoqLyoudGVzdC50cyc7XG5jb25zdCBVTklUX1RFU1RfR0xPQkFMX1NUVUJTX1BST0pFQ1RfTkFNRSA9ICd1bml0LXRlc3RzOmdsb2JhbC1zdHVicyc7XG5cbi8qXG4gKiBSdW5zIGJlZm9yZSB0aGUgaGFybmVzcydzIG93biBzZXR1cCBpbiBldmVyeSBwcm9qZWN0IHRoYXQgbG9hZHMgdGhlIHBsdWdpbiBmcm9tIGBkaXN0L2J1aWxkL21haW4uanNgLFxuICogYW5kIHJlZnVzZXMgdG8gc3RhcnQgd2hlbiB0aGF0IGJ1aWxkIGlzIG1pc3Npbmcgb3Igb2xkZXIgdGhhbiB0aGUgc291cmNlLiBBIHBsdWdpbidzXG4gKiBgdGVzdDppbnRlZ3JhdGlvbipgIHNjcmlwdHMgY2FsbCB2aXRlc3QgZGlyZWN0bHkgYW5kIG5ldmVyIGJ1aWxkLCBzbyB3aXRob3V0IGl0IGEgc2Vzc2lvbiB0aGF0IGVkaXRzXG4gKiBgc3JjL2AgYW5kIHJ1bnMgb25lIGludGVncmF0aW9uIHByb2plY3QgdGVzdHMgdGhlIHByZXZpb3VzIGJ1aWxkIGFuZCByZWFkcyB0aGUgcmVzdWx0IGFzIGEgZGVmZWN0LlxuICovXG5jb25zdCBTVEFMRV9CVUlMRF9HTE9CQUxfU0VUVVAgPSAnQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0L3Rlc3QtcnVubmVycy9zdGFsZS1idWlsZC1nbG9iYWwtc2V0dXAnO1xuXG5jb25zdCBPQlNJRElBTl9WRVJTSU9OX0VOVl9WQVJJQUJMRV9OQU1FID0gJ09CU0lESUFOX1ZFUlNJT04nO1xuY29uc3QgU0hBUkVEX0VYQ0xVREUgPSBERUZBVUxUX1ZJVEVTVF9URVNUX0VYQ0xVREU7XG5cbi8qKlxuICogVGhlIG9wdGlvbnMgZm9yIGRlZmluaW5nIGEgcGx1Z2luJ3Mgdml0ZXN0IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBidWlsZHMgcHJvamVjdHMgdGhlIGJhc2UgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBrbm93IGFib3V0LCBzdWNoIGFzIGEgcGx1Z2luJ3Mgb3duXG4gICAqIGBpbnRlZ3JhdGlvbi10ZXN0czpkZW1vLXZhdWx0YCBwcm9qZWN0LiBUaGUgcmV0dXJuZWQgcHJvamVjdHMgYXJlIGFwcGVuZGVkIGFmdGVyIHRoZSBzdGFuZGFyZCBmaXZlLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKiBAcmV0dXJucyBUaGUgZXh0cmEgcHJvamVjdHMuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Qcm9qZWN0cz86IChjb250ZXh0OiBPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ0NvbnRleHQpID0+IFRlc3RQcm9qZWN0Q29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgZWRpdHMgdGhlIHZpdGVzdCBjb25maWd1cmF0aW9uIGNvbnRleHQgYmVmb3JlIGl0IGlzIGFzc2VtYmxlZCBpbnRvIGEgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgdml0ZXN0IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGVkaXRDb250ZXh0PzogKGNvbnRleHQ6IE9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnQ29udGV4dCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgY29udGV4dCBmb3IgZGVmaW5pbmcgYSBwbHVnaW4ncyB2aXRlc3QgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBFdmVyeSBtZW1iZXIgaXMgbGl2ZTogdGhlIGFycmF5cyBhbmQgb2JqZWN0cyBpdCBleHBvc2VzIGFyZSB0aGUgdmVyeSBvbmVzIHRoZSBhc3NlbWJsZWQgY29uZmlndXJhdGlvblxuICogaXMgYnVpbHQgZnJvbSwgc28gZWRpdGluZyB0aGVtIGluIHBsYWNlIHRocm91Z2hcbiAqIHtAbGluayBEZWZpbmVPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ09wdGlvbnMuZWRpdENvbnRleHR9IGlzIHdoYXQgY3VzdG9taXplcyB0aGUgcmVzdWx0LlxuICovXG5leHBvcnQgY2xhc3MgT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBgaW50ZWdyYXRpb24tdGVzdHM6YW5kcm9pZGAgcHJvamVjdCwgcnVubmluZyB0aGUgbW9iaWxlLW9ubHkgYW5kIGNyb3NzLXBsYXRmb3JtIHN1aXRlcyBhZ2FpbnN0IGFuXG4gICAqIEFuZHJvaWQgZW11bGF0b3IgdGhyb3VnaCBBcHBpdW0uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYW5kcm9pZDogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0ge1xuICAgIGVudmlyb25tZW50OiAnbm9kZScsXG4gICAgZW52aXJvbm1lbnRPcHRpb25zOiB7XG4gICAgICBvYnNpZGlhblRyYW5zcG9ydDoge1xuICAgICAgICBhcHBpdW1Vcmw6ICdodHRwOi8vbG9jYWxob3N0OjQ3MjMnLFxuICAgICAgICBhdmROYW1lOiAnb2JzaWRpYW5fdGVzdCcsXG4gICAgICAgIHR5cGU6ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSdcbiAgICAgIH1cbiAgICB9LFxuICAgIGZpbGVQYXJhbGxlbGlzbTogZmFsc2UsXG4gICAgZ2xvYmFsU2V0dXA6IFtTVEFMRV9CVUlMRF9HTE9CQUxfU0VUVVAsICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1nbG9iYWwtc2V0dXAtcGx1Z2luJ10sXG4gICAgaG9va1RpbWVvdXQ6IEFORFJPSURfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgKiBIT09LX1RJTUVPVVRfTVVMVElQTElFUixcbiAgICBpbmNsdWRlOiBbQU5EUk9JRF9URVNUX0ZJTEVTLCBDUk9TU19QTEFURk9STV9URVNUX0ZJTEVTXSxcbiAgICBuYW1lOiAnaW50ZWdyYXRpb24tdGVzdHM6YW5kcm9pZCcsXG4gICAgc2V0dXBGaWxlczogWydvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1zZXR1cCddLFxuICAgIHRlc3RUaW1lb3V0OiBBTkRST0lEX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBwZXItdGVzdCBidWRnZXQgb2YgdGhlIEFuZHJvaWQgaW50ZWdyYXRpb24gcHJvamVjdCwgaW4gbWlsbGlzZWNvbmRzLiBCb290aW5nIGFuIGVtdWxhdG9yIGFuZFxuICAgKiBkcml2aW5nIGl0IG92ZXIgQXBwaXVtIGlzIHNsb3dlciB0aGFuIHRoZSBkZXNrdG9wIHBhdGgsIGhlbmNlIGl0cyBvd24gY29uc3RhbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA2MDAwMGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbmRyb2lkVGltZW91dEluTWlsbGlzZWNvbmRzID0gQU5EUk9JRF9USU1FT1VUX0lOX01JTExJU0VDT05EUztcblxuICAvKipcbiAgICogVGhlIHBlci10ZXN0IGJ1ZGdldCBvZiB0aGUgcmVndWxhciBpbnRlZ3JhdGlvbiBwcm9qZWN0cywgaW4gbWlsbGlzZWNvbmRzLlxuICAgKlxuICAgKiBJdCBkZWxpYmVyYXRlbHkgQ0xFQVJTIHRoZSB0cmFuc3BvcnRzJyBwZXItZXZhbCBjYXAgcmF0aGVyIHRoYW4gbWF0Y2hpbmcgaXQsIHNvIHRoYXQgYSBjbG9zdXJlIHdoaWNoXG4gICAqIG91dHJ1bnMgdGhlIGNhcCBmYWlscyB3aXRoIHRoZSBoYXJuZXNzJ3MgYEV2YWxDYXBFeGNlZWRlZEVycm9yYCDigJQgbmFtaW5nIHRoZSBjYXAgYW5kIHRoZSByZW1lZHkg4oCUXG4gICAqIGluc3RlYWQgb2Ygd2l0aCB2aXRlc3QncyBhbm9ueW1vdXMgdGltZW91dC4gTG93ZXJpbmcgaXQgdG8gdGhlIGNhcCByZXN0b3JlcyB0aGF0IGJsaW5kIHNwb3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA0NTAwMGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBiaWdUaW1lb3V0SW5NaWxsaXNlY29uZHMgPSBJTlRFR1JBVElPTl9URVNUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xuXG4gIC8qKlxuICAgKiBUaGUgY292ZXJhZ2UgYGV4Y2x1ZGVgIGdsb2JzLiBQdXNoIG9udG8gaXQgdG8gZHJvcCBtb3JlIGZpbGVzIGZyb20gdGhlIGNvdmVyYWdlIHJlcG9ydC5cbiAgICpcbiAgICogRGVjbGFyYXRpb24gZmlsZXMgYXJlIGV4Y2x1ZGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSB0aGUgY292ZXJhZ2UgYGluY2x1ZGVgIGJlbG93IGlzIGBzcmMvKipcXC8qLnRzYCxcbiAgICogd2hpY2ggYSBgLmQudHNgIG1hdGNoZXMuIEEgZGVjbGFyYXRpb24gZmlsZSBlbWl0cyBubyBydW50aW1lIGNvZGUsIHNvIGl0IHJlcG9ydHMgMCUgYW5kIG5vIHRlc3QgY2FuXG4gICAqIGV2ZXIgcmFpc2UgaXQg4oCUIGEgcGx1Z2luIHRoYXQgZ3Jvd3Mgb25lIHVuZGVyIGBzcmMvYCBzaWxlbnRseSBsb3NlcyBpdHMgMTAwJSBnYXRlLCBhbmQgdGhlIHVzdWFsXG4gICAqIHJlbWVkeSBvZiBhbiBpbmxpbmUgYHY4IGlnbm9yZWAgY29tbWVudCBkb2VzIG5vdCBhcHBseSB0byBhIHR5cGUtb25seSBmaWxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvdmVyYWdlRXhjbHVkZTogc3RyaW5nW10gPSBbVU5JVF9URVNUX0ZJTEVTLCBERUNMQVJBVElPTl9GSUxFU107XG5cbiAgLyoqXG4gICAqIFRoZSBgaW50ZWdyYXRpb24tdGVzdHM6ZGVza3RvcGAgcHJvamVjdCwgcnVubmluZyB0aGUgZGVza3RvcC1vbmx5IGFuZCBjcm9zcy1wbGF0Zm9ybSBzdWl0ZXMgYWdhaW5zdCBhXG4gICAqIHJlYWwgZGVza3RvcCBPYnNpZGlhbiBvdmVyIENEUC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNrdG9wOiBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSB7XG4gICAgZW52aXJvbm1lbnQ6ICdub2RlJyxcbiAgICBmaWxlUGFyYWxsZWxpc206IGZhbHNlLFxuICAgIGdsb2JhbFNldHVwOiBbU1RBTEVfQlVJTERfR0xPQkFMX1NFVFVQLCAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3QtZ2xvYmFsLXNldHVwLXBsdWdpbiddLFxuICAgIGhvb2tUaW1lb3V0OiBJTlRFR1JBVElPTl9URVNUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTICogSE9PS19USU1FT1VUX01VTFRJUExJRVIsXG4gICAgaW5jbHVkZTogW0RFU0tUT1BfVEVTVF9GSUxFUywgQ1JPU1NfUExBVEZPUk1fVEVTVF9GSUxFU10sXG4gICAgbmFtZTogJ2ludGVncmF0aW9uLXRlc3RzOmRlc2t0b3AnLFxuICAgIHNldHVwRmlsZXM6IFsnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3Qtc2V0dXAnXSxcbiAgICB0ZXN0VGltZW91dDogSU5URUdSQVRJT05fVEVTVF9USU1FT1VUX0lOX01JTExJU0VDT05EU1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgYGludGVncmF0aW9uLXRlc3RzOmRlc2t0b3AtcGVyZm9ybWFuY2VgIHByb2plY3QsIHJ1bm5pbmcgdGhlIGF0LXNjYWxlIHN1aXRlcy4gSXQgaXMgZGVjbGFyZWQgZm9yXG4gICAqIGV2ZXJ5IHBsdWdpbiBldmVuIHdoZW4gdGhlcmUgaXMgbm8gc3VjaCBzdWl0ZSB5ZXQg4oCUIGBwYXNzV2l0aE5vVGVzdHNgIG1ha2VzIGFuIGVtcHR5IHByb2plY3QgZnJlZSxcbiAgICogYW5kIHRoZSBtYXRjaGluZyBgdGVzdDppbnRlZ3JhdGlvbjpkZXNrdG9wOnBlcmZvcm1hbmNlYCBzY3JpcHQgZXhpc3RzIGluIGV2ZXJ5IHBsdWdpbiBidWlsdCBvbiB0aGlzIGxpYnJhcnkuXG4gICAqXG4gICAqIEEgcGx1Z2luJ3MgYHRlc3Q6aW50ZWdyYXRpb25gIGFnZ3JlZ2F0ZSBsZWF2ZXMgdGhpcyBwcm9qZWN0IG91dCBvbiBwdXJwb3NlLCBhbmQgaXQgc3RheXMgb3V0IGV2ZW4gb24gYVxuICAgKiBtYWNoaW5lIHdpdGggYSBkZXNrdG9wIE9ic2lkaWFuIHNldCB1cC4gVGhlIHJlYXNvbiBpcyB0aGUgZml4dHVyZSByYXRoZXIgdGhhbiB0aGUgY29zdDogYSBwZXJmIHN1aXRlXG4gICAqIG5lZWRzIGl0cyBvd24gZ2VuZXJhdGVkLCBwb3B1bGF0ZWQgdmF1bHQsIHNpemVkIHRocm91Z2ggZW52IHZhcnMsIGFuZCB0aGUgYWdncmVnYXRlJ3Mgc21hbGwgdGVtcG9yYXJ5XG4gICAqIHZhdWx0IGlzIHRoZSB3cm9uZyBvbmUuIFRoZSA2MDAgcyBiZWxvdyBpcyBhIHRpbWVvdXQsIG5vdCBhIGR1cmF0aW9uIOKAlCBtZWFzdXJlZCBlbmQgdG8gZW5kLCBtb3N0IHBlcmZcbiAgICogc3VpdGVzIGZpbmlzaCBpbiBzZWNvbmRzLCBhbmQgb25seSBvbmUgdGhhdCBnZW5lcmF0ZXMgdGVucyBvZiB0aG91c2FuZHMgb2Ygbm90ZXMgdGFrZXMgbWludXRlcy5cbiAgICpcbiAgICogSXRzIENEUCB0cmFuc3BvcnQncyBwZXItZXZhbCBjYXAgaXMgcmFpc2VkIHRvIDYwMCBzIGFzIHdlbGwgKHRoZSBidWRnZXQgY2xlYXJzIGl0IGJ5IHRoZSB1c3VhbFxuICAgKiBtYXJnaW4pLCBiZWNhdXNlIGEgcGVyZiBzdWl0ZSdzIHdob2xlIG1lYXN1cmVtZW50IGlzIHR5cGljYWxseSBPTkUgbG9uZyBpbi1wYWdlIGV2YWx1YXRpb24sIHdoaWNoIHRoZVxuICAgKiB0cmFuc3BvcnQncyAzMCBzIGRlZmF1bHQga2lsbGVkIGFzIGEgYmFyZSBgQ0RQIGNvbW1hbmQgdGltZWQgb3V0IOKApiBSdW50aW1lLmV2YWx1YXRlYCBuYW1pbmcgbmVpdGhlciB0aGVcbiAgICogd2FpdCBub3IgdGhlIGFzc2VydGlvbi4gVGhyZWUgcGx1Z2lucyBoYWQgZWFjaCBoYW5kLXdyaXR0ZW4gdGhpcyByYWlzZSBpbiB0aGVpciBvd24gYGVkaXRDb250ZXh0YFxuICAgKiBiZWZvcmUgaXQgbW92ZWQgaGVyZS4gVW5saWtlIGEgcmFpc2VkIGRlc2t0b3AgY2FwLCB3aGljaCBpcyBhIGJhY2tzdG9wIHJhdGhlciB0aGFuIGEgYnVkZ2V0IGEgY2xvc3VyZVxuICAgKiBtYXkgc3BlbmQsIHRoaXMgb25lIElTIGEgYnVkZ2V0OiBgbm8tb3Zlci1jYXAtd2FpdC1pbi1ldmFsLWluLW9ic2lkaWFuYCByZWFkcyBpdCBmb3IgdGhlc2UgZmlsZXMgYW5kXG4gICAqIGZvciBubyBvdGhlci5cbiAgICpcbiAgICogTm8gcm91dGluZSBjb21tYW5kIHJ1bnMgdGhlbSwgYnV0IHNvbWV0aGluZyBkb2VzOiBhIHdlZWtseSBzd2VlcCBydW5zIGV2ZXJ5IHBsdWdpbidzXG4gICAqIGB0ZXN0OmludGVncmF0aW9uOmRlc2t0b3A6cGVyZm9ybWFuY2VgLCB3aGljaCBpcyBhbHNvIGhvdyB0byByZWFjaCB0aGVtIGJ5IGhhbmQuIEFkZGluZyB0aGVtIHRvIHRoYXRcbiAgICogYWdncmVnYXRlIGlzIGRyaWZ0LCBub3QgYSBnYXAgdG8gY2xvc2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVza3RvcFBlcmZvcm1hbmNlOiBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSB7XG4gICAgZW52aXJvbm1lbnQ6ICdub2RlJyxcbiAgICBlbnZpcm9ubWVudE9wdGlvbnM6IHtcbiAgICAgIG9ic2lkaWFuVHJhbnNwb3J0OiB7XG4gICAgICAgIGNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHM6IFBFUkZPUk1BTkNFX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUyxcbiAgICAgICAgdHlwZTogJ29ic2lkaWFuLWNkcCdcbiAgICAgIH1cbiAgICB9LFxuICAgIGZpbGVQYXJhbGxlbGlzbTogZmFsc2UsXG4gICAgZ2xvYmFsU2V0dXA6IFtTVEFMRV9CVUlMRF9HTE9CQUxfU0VUVVAsICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1nbG9iYWwtc2V0dXAtcGx1Z2luJ10sXG4gICAgaG9va1RpbWVvdXQ6IFBFUkZPUk1BTkNFX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTLFxuICAgIGluY2x1ZGU6IFtERVNLVE9QX1BFUkZPUk1BTkNFX1RFU1RfRklMRVNdLFxuICAgIG5hbWU6ICdpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wLXBlcmZvcm1hbmNlJyxcbiAgICBzZXR1cEZpbGVzOiBbJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LXNldHVwJ10sXG4gICAgdGVzdFRpbWVvdXQ6IFBFUkZPUk1BTkNFX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSB1bml0IHRlc3QgZmlsZXMgdGhhdCByZWRlZmluZSBgd2luZG93YCwgYGRvY3VtZW50YCwgYGxvY2F0aW9uYCBvciBgdG9wYCwgd2hpY2ggdGhlIGB1bml0LXRlc3RzYFxuICAgKiBwcm9qZWN0J3MgVk0gcG9vbCBjYW5ub3QgcnVuLlxuICAgKlxuICAgKiBVbmRlciBgcG9vbDogJ3ZtVGhyZWFkcydgIHRob3NlIGZvdXIgYXJlIG5vbi1jb25maWd1cmFibGUgcHJvcGVydGllcyBvZiB0aGUgVk0gZ2xvYmFsLCBzb1xuICAgKiBgdmkuc3R1Ykdsb2JhbCgnd2luZG93Jywg4oCmKWAgb3IgYE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csICdsb2NhdGlvbicsIOKApilgIHRocm93c1xuICAgKiBgQ2Fubm90IHJlZGVmaW5lIHByb3BlcnR5YC4gVGhhdCBpcyBKUyBzZW1hbnRpY3MsIG5vdCBhIGJ1ZyB0byByb3V0ZSBhcm91bmQuIEV2ZXJ5IG90aGVyIGdsb2JhbCBzdGF5c1xuICAgKiBjb25maWd1cmFibGUgYW5kIHN0dWJzIG5vcm1hbGx5LlxuICAgKlxuICAgKiBQdXNoIGEgZmlsZSBoZXJlIGFuZCBpdCBsZWF2ZXMgYHVuaXQtdGVzdHNgIGZvciBhIHNpYmxpbmcgYHVuaXQtdGVzdHM6Z2xvYmFsLXN0dWJzYCBwcm9qZWN0IHRoYXQgaXNcbiAgICogaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHBvb2wsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IG9uZS4gQSBwbHVnaW4ncyBgdGVzdGAgYW5kIGB0ZXN0OmNvdmVyYWdlYCBzY3JpcHRzXG4gICAqIG5hbWUgYHVuaXQtdGVzdHNgLCB3aGljaCBhbHNvIHNlbGVjdHMgZXZlcnkgYHVuaXQtdGVzdHM6KmAgcHJvamVjdCwgc28gdGhlIHNpYmxpbmcgcnVucyBhbmQgaXMgY292ZXJlZFxuICAgKiB3aXRob3V0IGEgc2NyaXB0IGNoYW5nZS4gSXQgaXMgZW1pdHRlZCBvbmx5IHdoZW4gdGhpcyBsaXN0IGlzIG5vbi1lbXB0eS5cbiAgICpcbiAgICogVG8ga2VlcCBhIHdob2xlIHN1aXRlIG9uIHRoZSBkZWZhdWx0IHBvb2wgaW5zdGVhZCwgc2V0IGB1bml0VGVzdHMucG9vbGAgdG8gYCdmb3JrcydgIGFuZCBzYXkgd2h5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdsb2JhbFN0dWJUZXN0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBtdWx0aXBsaWVyIGFwcGxpZWQgdG8gYSBwcm9qZWN0J3MgdGVzdCBidWRnZXQgdG8gZ2V0IGl0cyBob29rIGJ1ZGdldC4gQSBob29rIHR5cGljYWxseSBwb3B1bGF0ZXNcbiAgICogYW5kIG9wZW5zIGEgdmF1bHQsIHNvIGl0IG5lZWRzIHNldmVyYWwgdGltZXMgd2hhdCBhIHNpbmdsZSB0ZXN0IGRvZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA0YFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGhvb2tUaW1lb3V0TXVsdGlwbGllciA9IEhPT0tfVElNRU9VVF9NVUxUSVBMSUVSO1xuXG4gIC8qKlxuICAgKiBUaGUgYGludGVncmF0aW9uLXRlc3RzOm5vLWFwcGAgcHJvamVjdCwgcnVubmluZyB0aGUgc3VpdGVzIHRoYXQgbmVlZCBubyBPYnNpZGlhbiBpbnN0YW5jZSBhdCBhbGwuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbm9BcHA6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IHtcbiAgICBlbnZpcm9ubWVudDogJ25vZGUnLFxuICAgIGZpbGVQYXJhbGxlbGlzbTogZmFsc2UsXG4gICAgaG9va1RpbWVvdXQ6IElOVEVHUkFUSU9OX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgKiBIT09LX1RJTUVPVVRfTVVMVElQTElFUixcbiAgICBpbmNsdWRlOiBbTk9fQVBQX1RFU1RfRklMRVNdLFxuICAgIG5hbWU6ICdpbnRlZ3JhdGlvbi10ZXN0czpuby1hcHAnLFxuICAgIHRlc3RUaW1lb3V0OiBJTlRFR1JBVElPTl9URVNUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBwZXItZXZhbCBjYXAgdGhlIHBlcmZvcm1hbmNlIGludGVncmF0aW9uIHByb2plY3QgZ2l2ZXMgaXRzIENEUCB0cmFuc3BvcnQsIGluIG1pbGxpc2Vjb25kcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDYwMDAwMGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwZXJmb3JtYW5jZUV2YWxDYXBJbk1pbGxpc2Vjb25kcyA9IFBFUkZPUk1BTkNFX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUztcblxuICAvKipcbiAgICogVGhlIHBlci10ZXN0IGJ1ZGdldCBvZiB0aGUgcGVyZm9ybWFuY2UgaW50ZWdyYXRpb24gcHJvamVjdCwgaW4gbWlsbGlzZWNvbmRzLiBBIHBlcmZvcm1hbmNlIHZhdWx0IGlzXG4gICAqIHByZS1wb3B1bGF0ZWQgd2l0aCB0ZW5zIG9mIHRob3VzYW5kcyBvZiBub3RlcyBiZWZvcmUgT2JzaWRpYW4gb3BlbnMsIHNvIGJvdGggaXRzIHNldHVwIGFuZCBpdHMgdGVzdHNcbiAgICogbmVlZCBmYXIgbW9yZSB0aW1lIHRoYW4gdGhlIHJlZ3VsYXIgaW50ZWdyYXRpb24gcHJvamVjdHMuXG4gICAqXG4gICAqIExpa2UgdGhlIHJlZ3VsYXIgYnVkZ2V0LCBpdCBDTEVBUlMgdGhlIHByb2plY3QncyBwZXItZXZhbCBjYXBcbiAgICogKHtAbGluayBPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ0NvbnRleHQucGVyZm9ybWFuY2VFdmFsQ2FwSW5NaWxsaXNlY29uZHN9KSByYXRoZXIgdGhhbiBtYXRjaGluZyBpdCxcbiAgICogc28gYW4gZXZhbHVhdGlvbiB0aGF0IG91dHJ1bnMgdGhlIGNhcCByZXBvcnRzIGl0c2VsZiBpbnN0ZWFkIG9mIGR5aW5nIGFzIHZpdGVzdCdzIGFub255bW91cyB0aW1lb3V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNjE1MDAwYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBlcmZvcm1hbmNlVGltZW91dEluTWlsbGlzZWNvbmRzID0gUEVSRk9STUFOQ0VfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG5cbiAgLyoqXG4gICAqIFRoZSByZXBvcnRlcnMgdGhlIHJ1biBwcmludHMgdGhyb3VnaC5cbiAgICpcbiAgICogUGlubmVkIHJhdGhlciB0aGFuIGxlZnQgdG8gdml0ZXN0LCB3aGljaCByZXNvbHZlcyBhbiB1bnNldCBgcmVwb3J0ZXJzYCBkaWZmZXJlbnRseSBmb3IgYSBkZXZlbG9wZXJcbiAgICogYW5kIGZvciBhbiBBSSBjb2Rpbmcgc2Vzc2lvbiDigJQgc2VlIHtAbGluayBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlN9IGZvciB0aGUgd2hvbGUgb2Ygd2h5LCBhbmQgZm9yXG4gICAqIHdoYXQgaXQgZGVsaWJlcmF0ZWx5IGxlYXZlcyB0byB2aXRlc3QgNSBpdHNlbGYuXG4gICAqXG4gICAqIFB1c2ggb250byBpdCB0byBhZGQgYSByZXBvcnRlciBiZXNpZGUgdGhlIHBpbm5lZCBvbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlN9XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVwb3J0ZXJzOiBPYnNpZGlhblBsdWdpblZpdGVzdFJlcG9ydGVyW10gPSBbLi4uREVGQVVMVF9WSVRFU1RfUkVQT1JURVJTXTtcblxuICAvKipcbiAgICogVGhlIGB1bml0LXRlc3RzYCBwcm9qZWN0LCBydW5uaW5nIHRoZSBtb2NrZWQtT2JzaWRpYW4gc3VpdGVzIGluIGBqc2RvbWAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdW5pdFRlc3RzOiBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSB7XG4gICAgZW52aXJvbm1lbnQ6ICdqc2RvbScsXG4gICAgZXhjbHVkZTogWy4uLlNIQVJFRF9FWENMVURFLCBJTlRFR1JBVElPTl9URVNUX0ZJTEVTXSxcbiAgICAvLyBBIHRocmVhZHMvZm9ya3MgcG9vbCBvcHRpb24gdGhhdCBzdGlsbCByZWFjaGVzIHRoZSB3b3JrZXIgdW5kZXIgdGhlIFZNIHBvb2wgYmVsb3c6IG1lYXN1cmVkXG4gICAgLy8gMjAyNi0wOS0xNiwgYHByb2Nlc3MuZXhlY0FyZ3ZgIGNhcnJpZXMgaXQgYW5kIE5vZGUncyBvd24gYGxvY2FsU3RvcmFnZWAgZGVzY3JpcHRvciBpcyBnb25lLCBhcyBpdFxuICAgIC8vIGlzIHVuZGVyIGB0aHJlYWRzYC4gV2l0aG91dCB0aGUgZmxhZyB0aGUgZGVzY3JpcHRvciBpcyBiYWNrIHVuZGVyIGJvdGggcG9vbHMuXG4gICAgZXhlY0FyZ3Y6IFsnLS1uby13ZWJzdG9yYWdlJ10sXG4gICAgaW5jbHVkZTogW1VOSVRfVEVTVF9GSUxFU10sXG4gICAgbmFtZTogJ3VuaXQtdGVzdHMnLFxuICAgIC8qXG4gICAgICogVGhlIGRlZmF1bHQgcG9vbCBjb25zdHJ1Y3RzIG9uZSBqc2RvbSBwZXIgdGVzdCBmaWxlLCBhbmQgdGhhdCBjb25zdHJ1Y3Rpb24sIG5vdCB0aGUgdGVzdHMsIHdhc1xuICAgICAqIHRoZSB1bml0IHN1aXRlJ3MgY29zdDogNjclIG9mIHRyYWNrZWQgdGltZSBpbiBgb2JzaWRpYW4tZGV2LXV0aWxzYCcgb3duIHN1aXRlLiBBIFZNIHBvb2wgYnVpbGRzXG4gICAgICogdGhlIGpzZG9tIG9uY2UgcGVyIHdvcmtlciBhbmQgZ2l2ZXMgZWFjaCBmaWxlIGEgZnJlc2ggVk0gY29udGV4dCwgc28gcGVyLWZpbGUgaXNvbGF0aW9uIGhvbGRzLlxuICAgICAqIE1lYXN1cmVkIHRoZXJlIG9uIDIwMjYtMDktMTU6IHRoZSBqc2RvbSBwcm9qZWN0IDM2LjA2cyAtPiA5LjkycywgYGNvdmVyYWdlL2xjb3YuaW5mb2BcbiAgICAgKiBieXRlLWlkZW50aWNhbCB0byB0aGUgZGVmYXVsdCBwb29sJ3MsIGFuZCBubyBET00sIGBnbG9iYWxUaGlzYCBvciBwcm90b3R5cGUgc3RhdGUgY3Jvc3NpbmcgZmlsZXMuXG4gICAgICogYGlzb2xhdGU6IGZhbHNlYCwgdGhlIG90aGVyIHJlbWVkeSB2aXRlc3Qgc3VnZ2VzdHMsIHdhcyBzbG93ZXIgKDkxLjYycykgYW5kIGJyb2tlIDY4IHRlc3RzLlxuICAgICAqIFRoZSBvbmUgY29zdCBpcyByZWRlZmluaW5nIGB3aW5kb3dgLCBgZG9jdW1lbnRgLCBgbG9jYXRpb25gIG9yIGB0b3BgOiBzZWUgYGdsb2JhbFN0dWJUZXN0RmlsZXNgLlxuICAgICAqL1xuICAgIHBvb2w6ICd2bVRocmVhZHMnLFxuICAgIHNlcnZlcjoge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYGRlcHNgIGlzIGRlY2xhcmVkIGJ5IGB2aXRlc3RgOyByZW5hbWluZyBpdCBoZXJlIHdvdWxkIG5vdCBtYXRjaCB0aGUgQVBJLlxuICAgICAgZGVwczoge1xuICAgICAgICBpbmxpbmU6IFsnQG1uYW91bW92JywgJ0BvYnNpZGlhbi10eXBpbmdzJ11cbiAgICAgIH1cbiAgICB9LFxuICAgIHNldHVwRmlsZXM6IFtcbiAgICAgICdvYnNpZGlhbi10ZXN0LW1vY2tzL3ZpdGVzdC1zZXR1cCcsXG4gICAgICAnQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0L3ZpdGVzdC1zZXR1cCdcbiAgICBdXG4gIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29udGV4dCBzZWVkZWQgd2l0aCB0aGUgc3RhbmRhcmQgcHJvamVjdHMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3Qgb2JzaWRpYW5WZXJzaW9uID0gcHJvY2Vzcy5lbnZbT0JTSURJQU5fVkVSU0lPTl9FTlZfVkFSSUFCTEVfTkFNRV07XG5cbiAgICAvKlxuICAgICAqIFN1cHBvcnQgaXMgdGhlIHJhbmdlIFtsYXRlc3QgcHVibGljLCBsYXRlc3QgY2F0YWx5c3RdIGFuZCBCT1RIIGVuZHMgbXVzdCB3b3JrLCBzbyB0aGUgdmVyc2lvblxuICAgICAqIGlzIGEga25vYiByYXRoZXIgdGhhbiBhIGNvbnN0YW50LiBUaGUga2V5IGlzIGFkZGVkIE9OTFkgd2hlbiB0aGUgdmFyaWFibGUgaXMgc2V0OiBhbiBleHBsaWNpdFxuICAgICAqIGBvYnNpZGlhblZlcnNpb25gIG1ha2VzIHRoZSBoYXJuZXNzIHJlc29sdmUgYSBjb25jcmV0ZSB2ZXJzaW9uIGFuZCBzd2FwIHRoZSBhc2FyLCB3aGljaCBpcyBub3Qgd2hhdFxuICAgICAqIGFuIHVucGlubmVkIHJ1biBkb2VzLCBzbyBzZWVkaW5nIGEgZGVmYXVsdCBoZXJlIHdvdWxkIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgZXZlcnkgcGx1Z2luLlxuICAgICAqL1xuICAgIGlmIChvYnNpZGlhblZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kZXNrdG9wLmVudmlyb25tZW50T3B0aW9ucyA9IHtcbiAgICAgICAgb2JzaWRpYW5UcmFuc3BvcnQ6IHtcbiAgICAgICAgICBvYnNpZGlhblZlcnNpb24sXG4gICAgICAgICAgdHlwZTogJ29ic2lkaWFuLWNkcCdcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBmb3IgYW4gT2JzaWRpYW4gcGx1Z2luLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGRlZmluaW5nIHRoZSBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgVGhlIHZpdGVzdCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWcob3B0aW9uczogRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zID0ge30pOiBWaXRlVXNlckNvbmZpZyB7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdDb250ZXh0KCk7XG5cbiAgaWYgKG9wdGlvbnMuZWRpdENvbnRleHQpIHtcbiAgICBvcHRpb25zLmVkaXRDb250ZXh0KGNvbnRleHQpO1xuICB9XG5cbiAgY29uc3QgY3VzdG9tUHJvamVjdHMgPSBvcHRpb25zLmN1c3RvbVByb2plY3RzPy4oY29udGV4dCkgPz8gW107XG4gIHZhbGlkYXRlQ3VzdG9tUHJvamVjdHMoY3VzdG9tUHJvamVjdHMpO1xuXG4gIGNvbnN0IHVuaXRUZXN0c1Jlc29sdmUgPSB7XG4gICAgYWxpYXM6IHtcbiAgICAgIG9ic2lkaWFuOiAnb2JzaWRpYW4tdGVzdC1tb2Nrcy9vYnNpZGlhbidcbiAgICB9XG4gIH07XG4gIGNvbnN0IGdsb2JhbFN0dWJUZXN0RmlsZXMgPSBbLi4uY29udGV4dC5nbG9iYWxTdHViVGVzdEZpbGVzXTtcbiAgY29uc3QgdW5pdFRlc3RzOiBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSBnbG9iYWxTdHViVGVzdEZpbGVzLmxlbmd0aCA9PT0gMFxuICAgID8gY29udGV4dC51bml0VGVzdHNcbiAgICA6IHsgLi4uY29udGV4dC51bml0VGVzdHMsIGV4Y2x1ZGU6IFsuLi5jb250ZXh0LnVuaXRUZXN0cy5leGNsdWRlID8/IFtdLCAuLi5nbG9iYWxTdHViVGVzdEZpbGVzXSB9O1xuICBjb25zdCBnbG9iYWxTdHVic1Byb2plY3RzOiBUZXN0UHJvamVjdENvbmZpZ3VyYXRpb25bXSA9IGdsb2JhbFN0dWJUZXN0RmlsZXMubGVuZ3RoID09PSAwXG4gICAgPyBbXVxuICAgIDogW3tcbiAgICAgIHJlc29sdmU6IHVuaXRUZXN0c1Jlc29sdmUsXG4gICAgICB0ZXN0OiB7XG4gICAgICAgIC4uLmNvbnRleHQudW5pdFRlc3RzLFxuICAgICAgICBpbmNsdWRlOiBnbG9iYWxTdHViVGVzdEZpbGVzLFxuICAgICAgICBuYW1lOiBVTklUX1RFU1RfR0xPQkFMX1NUVUJTX1BST0pFQ1RfTkFNRSxcbiAgICAgICAgLy8gVGhlIGRlZmF1bHQgcG9vbCwgbmFtZWQgcmF0aGVyIHRoYW4gb21pdHRlZCBzbyB0aGUgc3ByZWFkIGFib3ZlIGNhbm5vdCBjYXJyeSB0aGUgVk0gcG9vbCBvdmVyLlxuICAgICAgICBwb29sOiAnZm9ya3MnXG4gICAgICB9XG4gICAgfV07XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyh7XG4gICAgdGVzdDoge1xuICAgICAgY292ZXJhZ2U6IHtcbiAgICAgICAgZXhjbHVkZTogY29udGV4dC5jb3ZlcmFnZUV4Y2x1ZGUsXG4gICAgICAgIGluY2x1ZGU6IFsnc3JjLyoqLyoudHMnXSxcbiAgICAgICAgcHJvdmlkZXI6ICd2OCcsXG4gICAgICAgIHJlcG9ydGVyOiBbJ3RleHQnLCAnbGNvdicsICdodG1sJ10sXG4gICAgICAgIHJlcG9ydHNEaXJlY3Rvcnk6ICcuL2NvdmVyYWdlJ1xuICAgICAgfSxcbiAgICAgIGV4Y2x1ZGU6IFsuLi5TSEFSRURfRVhDTFVERV0sXG4gICAgICBnbG9iYWxzOiBmYWxzZSxcbiAgICAgIC8qXG4gICAgICAgKiBUaGVyZSBpcyBkZWxpYmVyYXRlbHkgTk8gcm9vdC1sZXZlbCBgaW5jbHVkZWAgaGVyZSwgYW5kIHJlc3RvcmluZyBvbmUgYnJlYWtzIGV2ZXJ5IHByb2plY3QuXG4gICAgICAgKiBVbmRlciB2aXRlc3QgNCBhIHByb2plY3QncyBvd24gYGluY2x1ZGVgIHJlcGxhY2VkIHRoZSByb290IG9uZSwgc28gYSByb290XG4gICAgICAgKiBgaW5jbHVkZTogW1VOSVRfVEVTVF9GSUxFU11gIHdhcyBtZXJlbHkgcmVkdW5kYW50IOKAlCB0aGUgYHVuaXQtdGVzdHNgIHByb2plY3QgYWxyZWFkeSBkZWNsYXJlc1xuICAgICAgICogdGhhdCBzYW1lIGdsb2IgZm9yIGl0c2VsZi4gVW5kZXIgdml0ZXN0IDUgdGhlIHByb2plY3QgZ2xvYiBubyBsb25nZXIgcmVwbGFjZXMgaXQsIGFuZFxuICAgICAgICogYHNyYy8qKlxcLyoudGVzdC50c2AgaXMgYSBzdXBlcnNldCBvZiBldmVyeSBwcm9qZWN0IGdsb2IsIHNvIEVWRVJZIHByb2plY3QgY29sbGVjdGVkIEVWRVJZIHRlc3RcbiAgICAgICAqIGZpbGU6IHVuaXQgc3VpdGVzIHJhbiBpbiB0aGUgQ0RQIGludGVncmF0aW9uIGVudmlyb25tZW50IGFuZCBkaWVkIG9uIGBGYWlsZWQgdG8gcmVzb2x2ZSBlbnRyeVxuICAgICAgICogZm9yIHBhY2thZ2UgXCJvYnNpZGlhblwiYCwgdGhlIHNjcmVlbnNob3QtY2FwdHVyZSBzdWl0ZXMgcmFuIGFuZCByZXdyb3RlIGNoZWNrZWQtaW4gUE5HcywgYW5kIHRoZVxuICAgICAgICogYW5kcm9pZCAvIGRlbW8tdmF1bHQgc3VpdGVzIHJhbiB1bmRlciB0aGUgZGVza3RvcCB0cmFuc3BvcnQuIE1lYXN1cmVkIGluIGEgY29uc3VtZXI6IHRoZSBkZXNrdG9wXG4gICAgICAgKiBwcm9qZWN0IGNvbGxlY3RlZCAyMjcgZmlsZXMgaW5zdGVhZCBvZiBpdHMgb3duIDEwNSwgYW5kIGRlbGV0aW5nIHRoaXMgb25lIGxpbmUgcmVzdG9yZWQgMTA1LlxuICAgICAgICovXG4gICAgICBwYXNzV2l0aE5vVGVzdHM6IHRydWUsXG4gICAgICBwcm9qZWN0czogW1xuICAgICAgICB7XG4gICAgICAgICAgcmVzb2x2ZTogdW5pdFRlc3RzUmVzb2x2ZSxcbiAgICAgICAgICB0ZXN0OiB1bml0VGVzdHNcbiAgICAgICAgfSxcbiAgICAgICAgeyB0ZXN0OiBjb250ZXh0Lm5vQXBwIH0sXG4gICAgICAgIHsgdGVzdDogY29udGV4dC5kZXNrdG9wIH0sXG4gICAgICAgIHsgdGVzdDogY29udGV4dC5kZXNrdG9wUGVyZm9ybWFuY2UgfSxcbiAgICAgICAgeyB0ZXN0OiBjb250ZXh0LmFuZHJvaWQgfSxcbiAgICAgICAgLi4uZ2xvYmFsU3R1YnNQcm9qZWN0cyxcbiAgICAgICAgLi4uY3VzdG9tUHJvamVjdHNcbiAgICAgIF0sXG4gICAgICByZXBvcnRlcnM6IFsuLi5jb250ZXh0LnJlcG9ydGVyc11cbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZnVzZXMgYSBjdXN0b20gcHJvamVjdCB0aGF0IGRlY2xhcmVzIG5vIGBpbmNsdWRlYCBnbG9iIG9mIGl0cyBvd24uXG4gKlxuICogVGhlIHJvb3Qgc2VjdGlvbiBkZWxpYmVyYXRlbHkgZGVjbGFyZXMgbm8gYGluY2x1ZGVgIChzZWUgdGhlIGNvbW1lbnQgb24gaXQgYWJvdmUpLCBzbyBhIHByb2plY3QgdGhhdFxuICogZGVjbGFyZXMgbm9uZSBmYWxscyBiYWNrIHRvIHZpdGVzdCdzIG93biBkZWZhdWx0IGdsb2Ig4oCUIHdoaWNoIG1hdGNoZXMgRVZFUlkgdGVzdCBmaWxlIGluIHRoZSByZXBvLlxuICogVGhhdCBwcm9qZWN0IHRoZW4gcnVucyB0aGUgdW5pdCBzdWl0ZXMgaW4gYW4gT2JzaWRpYW4gZW52aXJvbm1lbnQsIHRoZSBhbmRyb2lkIHN1aXRlcyB1bmRlciB0aGVcbiAqIGRlc2t0b3AgdHJhbnNwb3J0LCBhbmQgdGhlIGAqLWNhcHR1cmUuYCBzY3JlZW5zaG90IHN1aXRlcyB0aGF0IG9wZW4gYSB3aW5kb3cgYW5kIHJld3JpdGUgY2hlY2tlZC1pblxuICogUE5Hcy4gQSB3aWRlbmVkIHByb2plY3QgaXMgc2lsZW50OiBpdCBwYXNzZXMsIHNsb3dseSwgaGF2aW5nIGRvbmUgYWxsIG9mIHRoYXQuXG4gKlxuICogT25seSBhIHBsYWluIGlubGluZSBjb25maWd1cmF0aW9uIGNhbiBiZSBjaGVja2VkIGhlcmUuIEEgcHJvamVjdCBuYW1lZCBieSBhIGdsb2Igc3RyaW5nLCBidWlsdCBieSBhXG4gKiBmdW5jdGlvbiwgb3IgYXdhaXRlZCBmcm9tIGEgcHJvbWlzZSBpcyByZXNvbHZlZCBieSB2aXRlc3QgaXRzZWxmLCBvdXQgb2YgdGhpcyBmdW5jdGlvbidzIHJlYWNoLlxuICpcbiAqIEBwYXJhbSBjdXN0b21Qcm9qZWN0cyAtIFRoZSBwcm9qZWN0cyByZXR1cm5lZCBieSB7QGxpbmsgRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zLmN1c3RvbVByb2plY3RzfS5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDdXN0b21Qcm9qZWN0cyhjdXN0b21Qcm9qZWN0czogVGVzdFByb2plY3RDb25maWd1cmF0aW9uW10pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBbaW5kZXgsIGN1c3RvbVByb2plY3RdIG9mIGN1c3RvbVByb2plY3RzLmVudHJpZXMoKSkge1xuICAgIGlmICh0eXBlb2YgY3VzdG9tUHJvamVjdCAhPT0gJ29iamVjdCcgfHwgJ3RoZW4nIGluIGN1c3RvbVByb2plY3QpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGluY2x1ZGUgPSBjdXN0b21Qcm9qZWN0LnRlc3Q/LmluY2x1ZGU7XG5cbiAgICBpZiAoaW5jbHVkZSAmJiBpbmNsdWRlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWUgPSBjdXN0b21Qcm9qZWN0LnRlc3Q/Lm5hbWU7XG4gICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgPyBuYW1lIDogbmFtZT8ubGFiZWwgPz8gYGF0IGluZGV4ICR7U3RyaW5nKGluZGV4KX1gO1xuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRoZSBjdXN0b20gdml0ZXN0IHByb2plY3QgJHtsYWJlbH0gZGVjbGFyZXMgbm8gXFxgdGVzdC5pbmNsdWRlXFxgLCBzbyB2aXRlc3QgZmFsbHMgYmFjayB0byBpdHMgZGVmYXVsdCBnbG9iIGFuZCB0aGUgcHJvamVjdCBjb2xsZWN0cyBFVkVSWSB0ZXN0IGZpbGUg4oCUIGluY2x1ZGluZyB0aGUgXFxgKi1jYXB0dXJlLlxcYCBzdWl0ZXMgdGhhdCByZXdyaXRlIGNoZWNrZWQtaW4gc2NyZWVuc2hvdHMuIERlY2xhcmUgYW4gZXhwbGljaXQgXFxgaW5jbHVkZVxcYCwgb3Igc3ByZWFkIGEgc3RhbmRhcmQgcHJvamVjdCAoXFxgLi4uY29udGV4dC5kZXNrdG9wXFxgKSBhbmQgb3ZlcnJpZGUgaXQuYFxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0JBLDJCQUdPO0FBQ1AsMEJBQW9CO0FBQ3BCLDBDQUFpRDtBQUNqRCxvQkFBNkI7QUFFN0Isa0NBR087QUFxQ1AsTUFBTSw0Q0FBNEM7QUFPbEQsTUFBTSxrQ0FBa0M7QUFDeEMsTUFBTSwwQkFBMEI7QUFPaEMsTUFBTSxzQ0FBc0MsbUVBQXVDO0FBUzVFLE1BQU0sMkNBQTJDLHVF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
|
|
389
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvdml0ZXN0LWNvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogU2hhcmVkIHZpdGVzdCBjb25maWd1cmF0aW9uIGZvciBPYnNpZGlhbiBwbHVnaW5zLlxuICpcbiAqIEV2ZXJ5IHBsdWdpbiBpbiB0aGUgd29ya3NwYWNlIGRlY2xhcmVzIHRoZSBzYW1lIGZpdmUgdml0ZXN0IHByb2plY3RzIOKAlCBgdW5pdC10ZXN0c2AgcGx1cyB0aGVcbiAqIGBpbnRlZ3JhdGlvbi10ZXN0czp7bm8tYXBwLGRlc2t0b3AsZGVza3RvcC1wZXJmb3JtYW5jZSxhbmRyb2lkfWAgZmFtaWx5IOKAlCB3aXRoIHRoZSBzYW1lIHRpbWVvdXRzLFxuICogYHNldHVwRmlsZXNgLCBhbmQgYGdsb2JhbFNldHVwYCB3aXJpbmcuIE1haW50YWluaW5nIHRoYXQgcGVyIHJlcG8gbWVhbnMgYSBjb252ZW50aW9uIGNoYW5nZSBjb3N0cyBvbmVcbiAqIG5lYXItaWRlbnRpY2FsIGVkaXQgcGVyIHBsdWdpbiwgYW5kIGFueSByZXBvIHRoYXQgaXMgbWlzc2VkIGRyaWZ0cyBzaWxlbnRseS4gVGhpcyBtb2R1bGUgb3ducyB0aGF0XG4gKiBjb25maWd1cmF0aW9uIG9uY2UsIHNvIGEgcGx1Z2luJ3MgYHNjcmlwdHMvdml0ZXN0LWNvbmZpZy50c2AgY29sbGFwc2VzIHRvIGEgc2luZ2xlIGNhbGwuXG4gKlxuICogVGhlIHNlYW0gbWlycm9ycyB0aGUgRVNMaW50IG9uZSAoYGRlZmluZUVzbGludENvbmZpZ3NgKTogdGhlIGZhY3RvcnkgYnVpbGRzIGEgY29udGV4dCBob2xkaW5nIHRoZSBzdGFuZGFyZCBwcm9qZWN0cywgdGhlIGNhbGxlciBlZGl0c1xuICogaXQgaW4gcGxhY2UgdGhyb3VnaCB7QGxpbmsgRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zLmVkaXRDb250ZXh0fSwgYW5kIGFwcGVuZHMgYW55XG4gKiBwcm9qZWN0IHRoZSBiYXNlIGRvZXMgbm90IGtub3cgYWJvdXQgdGhyb3VnaFxuICoge0BsaW5rIERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucy5jdXN0b21Qcm9qZWN0c30uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBWaXRlc3RSZXBvcnRlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3Rlc3QtcnVubmVycy92aXRlc3QtY29uZmlnJztcbmltcG9ydCB0eXBlIHtcbiAgVGVzdFByb2plY3RDb25maWd1cmF0aW9uLFxuICBUZXN0UHJvamVjdElubGluZUNvbmZpZ3VyYXRpb24sXG4gIFZpdGVVc2VyQ29uZmlnXG59IGZyb20gJ3ZpdGVzdC9jb25maWcnO1xuXG5pbXBvcnQge1xuICBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlMsXG4gIERFRkFVTFRfVklURVNUX1RFU1RfRVhDTFVERVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC90ZXN0LXJ1bm5lcnMvdml0ZXN0LWNvbmZpZyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQge1xuICBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUyxcbiAgREVTS1RPUF9QRVJGT1JNQU5DRV9URVNUX0ZJTEVfU1VGRklYLFxuICBQRVJGT1JNQU5DRV9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFNcbn0gZnJvbSAnLi9wZXJmb3JtYW5jZS1ldmFsLWNhcC50cyc7XG5cbi8qKlxuICogVGhlIGB0ZXN0YCBzZWN0aW9uIG9mIGEgc2luZ2xlIHZpdGVzdCBwcm9qZWN0IGVudHJ5LlxuICovXG5leHBvcnQgdHlwZSBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSBOb25OdWxsYWJsZTxUZXN0UHJvamVjdElubGluZUNvbmZpZ3VyYXRpb25bJ3Rlc3QnXT47XG5cbi8qKlxuICogT25lIGVudHJ5IG9mIGEgdml0ZXN0IGByZXBvcnRlcnNgIGxpc3Q6IHRoZSBuYW1lIG9mIGEgYnVpbHQtaW4gcmVwb3J0ZXIgb3IgYSByZXBvcnRlciBpbnN0YW5jZS4gVGhlIHNhbWUgc2hhcGUgYXNcbiAqIHRoZSBsaWJyYXJ5IGNvbmZpZ3VyYXRpb24ncyB7QGxpbmsgVml0ZXN0UmVwb3J0ZXJ9LlxuICovXG5leHBvcnQgdHlwZSBPYnNpZGlhblBsdWdpblZpdGVzdFJlcG9ydGVyID0gVml0ZXN0UmVwb3J0ZXI7XG5cbi8vIFRoZSBsaWJyYXJ5IGNvbmZpZ3VyYXRpb24ncyBwaW5uZWQgcmVwb3J0ZXJzLCByZS1leHBvcnRlZCBzbyBhIHBsdWdpbiByZXBvIHRoYXQgYXNzZW1ibGVzIGl0cyB2aXRlc3QgcHJvamVjdHMgYnlcbi8vIGhhbmQgbmVlZHMgb25seSB0aGlzIHBhY2thZ2UuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItZXhwb3J0LWZyb20gLS0gVGhlIGJpbmRpbmcgaXMgYWxzbyB1c2VkIGJlbG93LCBzbyBpdCBpcyBpbXBvcnRlZCBvbmNlLlxuZXhwb3J0IHsgREVGQVVMVF9WSVRFU1RfUkVQT1JURVJTIH07XG5cbi8qXG4gKiBIb3cgbXVjaCBhIHByb2plY3QncyBwZXItdGVzdCBidWRnZXQgY2xlYXJzIGBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU2AgYnkg4oCUIHRoZSBwZXItZXZhbCBjYXBcbiAqIEJPVEggdHJhbnNwb3J0cyBlbmZvcmNlLCByZXN0YXRlZCBpbiBgcGVyZm9ybWFuY2UtZXZhbC1jYXAudHNgICh0aGUgaGFybmVzcyBpcyBhbiBvcHRpb25hbCBwZWVyKSBhbmQgcGlubmVkXG4gKiB0aGVyZSB0byB0aGUgaGFybmVzcydzIG93biBjb25zdGFudCBieSBhIHVuaXQgdGVzdCwgc28gdGhlIGJ1ZGdldHMgYmVsb3cgYW5kIHRoZSBjYXAgdGhleSBhcmUgc2l6ZWQgYWdhaW5zdFxuICogY2FuIG5ldmVyIGJlIHR3byBudW1iZXJzLiBPbmUgYGV2YWxJbk9ic2lkaWFuYCBjbG9zdXJlXG4gKiBnZXRzIHRoYXQgbXVjaCBhbmQgbm8gbW9yZSwgbWVhc3VyZWQgZnJvbSB0aGUgbW9tZW50IHRoZSB0cmFuc3BvcnQgZGlzcGF0Y2hlcyBpdDsgb3V0cnVubmluZyBpdCByYWlzZXNcbiAqIGBFdmFsQ2FwRXhjZWVkZWRFcnJvcmAsIHdoaWNoIG5hbWVzIHRoZSBjYXAsIHRoZSB0cmFuc3BvcnQgdGhhdCBlbmZvcmNlZCBpdCwgYW5kIHRoZSBgcG9sbEluT2JzaWRpYW5gXG4gKiByZW1lZHkg4oCUIHRoZSBvbmUgbWVzc2FnZSB0aGF0IHR1cm5zIFwidGhpcyB0aW1lZCBvdXRcIiBpbnRvIFwidGhpcyBjbG9zdXJlIGFza2VkIGZvciBtb3JlIHRpbWUgdGhhblxuICogZXhpc3RzXCIuXG4gKlxuICogQSB0ZXN0IGJ1ZGdldCBFUVVBTCB0byB0aGUgY2FwIG1ha2VzIHRoZSBjYXAncyBvd24gZGlhZ25vc2lzIHVucmVhY2hhYmxlOiB2aXRlc3Qgc3RhcnRzIGl0cyBjbG9jayBhdFxuICogdGhlIHRvcCBvZiB0aGUgdGVzdCBhbmQgdGhlIHRyYW5zcG9ydCBzdGFydHMgaXRzIG93biBvbmx5IG9uY2UgdGhlIGV2YWwgaXMgZGlzcGF0Y2hlZCwgc28gdml0ZXN0IGFsd2F5c1xuICogd2lucyBieSB0aGUgZmV3IG1pbGxpc2Vjb25kcyBpbiBiZXR3ZWVuIGFuZCByZXBvcnRzIGl0cyBhbm9ueW1vdXMgYFRlc3QgdGltZWQgb3V0IGluIDMwMDAwbXNgLiBUaGF0IGlzXG4gKiBub3QgYSBoeXBvdGhldGljYWwg4oCUIGl0IGlzIGhvdyBldmVyeSBvdmVyLWNhcCBkZXNrdG9wIGV2YWwgaGFkIHN1cmZhY2VkIGhlcmUgdW50aWwgdGhpcyBtYXJnaW4gZXhpc3RlZCxcbiAqIGFuZCBvbmUgb2YgdGhlbSBhYm9ydGVkIGFuIG90aGVyd2lzZSBncmVlbiByZWxlYXNlIGZpdmUgbWludXRlcyBpbnRvIHRoZSBwcmVmbGlnaHQgd2l0aCBubyBpbmRpY2F0aW9uXG4gKiBvZiB3aGljaCB3YWl0IHdhcyB0byBibGFtZSAobWVhc3VyZWQgMjAyNi0wOS0xNTogMzAwNDQgbXMgYnVybmVkIGFnYWluc3QgYSAzMDAwMCBtcyBidWRnZXQpLlxuICpcbiAqIFRoZSBtYXJnaW4gaGFzIHRvIGNvdmVyIGV2ZXJ5dGhpbmcgYSB0ZXN0IGRvZXMgQkVGT1JFIHRoZSBldmFsIHRoYXQgaGFuZ3Mg4oCUIGVhcmxpZXIgb25lcyBpbmNsdWRlZCDigJRcbiAqIHNvIGl0IGlzIGEgaGVhbHRoeSBmcmFjdGlvbiBvZiB0aGUgY2FwIHJhdGhlciB0aGFuIGEgY291cGxlIG9mIHNlY29uZHMuXG4gKi9cbmNvbnN0IFRSQU5TUE9SVF9FVkFMX0NBUF9NQVJHSU5fSU5fTUlMTElTRUNPTkRTID0gMTVfMDAwO1xuXG4vKlxuICogQW5kcm9pZCB3YXMgbmV2ZXIgYWZmZWN0ZWQsIGFuZCB0aGF0IGFzeW1tZXRyeSBpcyB0aGUgZXZpZGVuY2UgdGhlIGRlc2t0b3AgZXF1YWxpdHkgd2FzIGFuIG92ZXJzaWdodFxuICogcmF0aGVyIHRoYW4gYSBkZWNpc2lvbjogaXRzIGJ1ZGdldCBoYXMgYWx3YXlzIGJlZW4gZG91YmxlIHRoZSBBcHBpdW0gY2FwLCBzbyBhbiBvdmVyLWNhcCBtb2JpbGUgY2xvc3VyZVxuICogaGFzIGFsd2F5cyBiZWVuIGFibGUgdG8gcmVwb3J0IGl0c2VsZi5cbiAqL1xuY29uc3QgQU5EUk9JRF9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDYwXzAwMDtcbmNvbnN0IEhPT0tfVElNRU9VVF9NVUxUSVBMSUVSID0gNDtcblxuLypcbiAqIFRoZSBwZXJmb3JtYW5jZSBwcm9qZWN0J3MgYnVkZ2V0IGNsZWFycyBpdHMgb3duIHBlci1ldmFsIGNhcCBieSB0aGUgc2FtZSBtYXJnaW4sIGZvciB0aGUgc2FtZSByZWFzb25cbiAqIHRoZSByZWd1bGFyIGJ1ZGdldCBjbGVhcnMgdGhlIHRyYW5zcG9ydCBkZWZhdWx0OiBhbiBlcXVhbCBidWRnZXQgbGV0cyB2aXRlc3QncyBhbm9ueW1vdXMgdGltZW91dCB3aW5cbiAqIHRoZSByYWNlIGFnYWluc3QgdGhlIGNhcCdzIG93biBgRXZhbENhcEV4Y2VlZGVkRXJyb3JgLlxuICovXG5jb25zdCBQRVJGT1JNQU5DRV9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IFBFUkZPUk1BTkNFX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUyArIFRSQU5TUE9SVF9FVkFMX0NBUF9NQVJHSU5fSU5fTUlMTElTRUNPTkRTO1xuXG4vKipcbiAqIFRoZSBwZXItdGVzdCBidWRnZXQgb2YgdGhlIHJlZ3VsYXIgaW50ZWdyYXRpb24gcHJvamVjdHMsIGluIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBFeHBvcnRlZCBiZWNhdXNlIGEgcmVwbyB0aGF0IGFzc2VtYmxlcyBpdHMgdml0ZXN0IHByb2plY3RzIGJ5IGhhbmQgaW5zdGVhZCBvZiB0aHJvdWdoXG4gKiB7QGxpbmsgZGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWd9IHN0aWxsIG5lZWRzIHRoZSBzYW1lIHJlbGF0aW9uc2hpcCB0byB0aGUgcGVyLWV2YWwgY2FwLCBhbmRcbiAqIHJlc3RhdGluZyB0aGUgbnVtYmVyIHRoZXJlIGlzIGhvdyB0aGUgdHdvIGRyaWZ0IGFwYXJ0LlxuICovXG5leHBvcnQgY29uc3QgSU5URUdSQVRJT05fVEVTVF9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IERFRkFVTFRfRVZBTF9DQVBfSU5fTUlMTElTRUNPTkRTICsgVFJBTlNQT1JUX0VWQUxfQ0FQX01BUkdJTl9JTl9NSUxMSVNFQ09ORFM7XG5cbmNvbnN0IEFORFJPSURfVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5hbmRyb2lkLmludGVncmF0aW9uLnRlc3QudHMnO1xuY29uc3QgQ1JPU1NfUExBVEZPUk1fVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5jcm9zcy1wbGF0Zm9ybS5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IERFQ0xBUkFUSU9OX0ZJTEVTID0gJ3NyYy8qKi8qLmQudHMnO1xuY29uc3QgREVTS1RPUF9QRVJGT1JNQU5DRV9URVNUX0ZJTEVTID0gYHNyYy8qKi8qJHtERVNLVE9QX1BFUkZPUk1BTkNFX1RFU1RfRklMRV9TVUZGSVh9YDtcbmNvbnN0IERFU0tUT1BfVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5kZXNrdG9wLmludGVncmF0aW9uLnRlc3QudHMnO1xuY29uc3QgSU5URUdSQVRJT05fVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IE5PX0FQUF9URVNUX0ZJTEVTID0gJ3NyYy8qKi8qLm5vLWFwcC5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IFVOSVRfVEVTVF9GSUxFUyA9ICdzcmMvKiovKi50ZXN0LnRzJztcbmNvbnN0IFVOSVRfVEVTVF9HTE9CQUxfU1RVQlNfUFJPSkVDVF9OQU1FID0gJ3VuaXQtdGVzdHM6Z2xvYmFsLXN0dWJzJztcblxuLypcbiAqIFJ1bnMgYmVmb3JlIHRoZSBoYXJuZXNzJ3Mgb3duIHNldHVwIGluIGV2ZXJ5IHByb2plY3QgdGhhdCBsb2FkcyB0aGUgcGx1Z2luIGZyb20gYGRpc3QvYnVpbGQvbWFpbi5qc2AsXG4gKiBhbmQgcmVmdXNlcyB0byBzdGFydCB3aGVuIHRoYXQgYnVpbGQgaXMgbWlzc2luZyBvciBvbGRlciB0aGFuIHRoZSBzb3VyY2UuIEEgcGx1Z2luJ3NcbiAqIGB0ZXN0OmludGVncmF0aW9uKmAgc2NyaXB0cyBjYWxsIHZpdGVzdCBkaXJlY3RseSBhbmQgbmV2ZXIgYnVpbGQsIHNvIHdpdGhvdXQgaXQgYSBzZXNzaW9uIHRoYXQgZWRpdHNcbiAqIGBzcmMvYCBhbmQgcnVucyBvbmUgaW50ZWdyYXRpb24gcHJvamVjdCB0ZXN0cyB0aGUgcHJldmlvdXMgYnVpbGQgYW5kIHJlYWRzIHRoZSByZXN1bHQgYXMgYSBkZWZlY3QuXG4gKi9cbmNvbnN0IFNUQUxFX0JVSUxEX0dMT0JBTF9TRVRVUCA9ICdAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXQvdGVzdC1ydW5uZXJzL3N0YWxlLWJ1aWxkLWdsb2JhbC1zZXR1cCc7XG5cbmNvbnN0IE9CU0lESUFOX1ZFUlNJT05fRU5WX1ZBUklBQkxFX05BTUUgPSAnT0JTSURJQU5fVkVSU0lPTic7XG5jb25zdCBTSEFSRURfRVhDTFVERSA9IERFRkFVTFRfVklURVNUX1RFU1RfRVhDTFVERTtcblxuLyoqXG4gKiBUaGUgb3B0aW9ucyBmb3IgZGVmaW5pbmcgYSBwbHVnaW4ncyB2aXRlc3QgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbmVPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ09wdGlvbnMge1xuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGJ1aWxkcyBwcm9qZWN0cyB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGRvZXMgbm90IGtub3cgYWJvdXQsIHN1Y2ggYXMgYSBwbHVnaW4ncyBvd25cbiAgICogYGludGVncmF0aW9uLXRlc3RzOmRlbW8tdmF1bHRgIHByb2plY3QuIFRoZSByZXR1cm5lZCBwcm9qZWN0cyBhcmUgYXBwZW5kZWQgYWZ0ZXIgdGhlIHN0YW5kYXJkIGZpdmUuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHZpdGVzdCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gICAqIEByZXR1cm5zIFRoZSBleHRyYSBwcm9qZWN0cy5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbVByb2plY3RzPzogKGNvbnRleHQ6IE9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnQ29udGV4dCkgPT4gVGVzdFByb2plY3RDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBlZGl0cyB0aGUgdml0ZXN0IGNvbmZpZ3VyYXRpb24gY29udGV4dCBiZWZvcmUgaXQgaXMgYXNzZW1ibGVkIGludG8gYSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdENvbnRleHQ/OiAoY29udGV4dDogT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdDb250ZXh0KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFRoZSBjb250ZXh0IGZvciBkZWZpbmluZyBhIHBsdWdpbidzIHZpdGVzdCBjb25maWd1cmF0aW9uLlxuICpcbiAqIEV2ZXJ5IG1lbWJlciBpcyBsaXZlOiB0aGUgYXJyYXlzIGFuZCBvYmplY3RzIGl0IGV4cG9zZXMgYXJlIHRoZSB2ZXJ5IG9uZXMgdGhlIGFzc2VtYmxlZCBjb25maWd1cmF0aW9uXG4gKiBpcyBidWlsdCBmcm9tLCBzbyBlZGl0aW5nIHRoZW0gaW4gcGxhY2UgdGhyb3VnaFxuICoge0BsaW5rIERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucy5lZGl0Q29udGV4dH0gaXMgd2hhdCBjdXN0b21pemVzIHRoZSByZXN1bHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ0NvbnRleHQge1xuICAvKipcbiAgICogVGhlIGBpbnRlZ3JhdGlvbi10ZXN0czphbmRyb2lkYCBwcm9qZWN0LCBydW5uaW5nIHRoZSBtb2JpbGUtb25seSBhbmQgY3Jvc3MtcGxhdGZvcm0gc3VpdGVzIGFnYWluc3QgYW5cbiAgICogQW5kcm9pZCBlbXVsYXRvciB0aHJvdWdoIEFwcGl1bS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbmRyb2lkOiBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSB7XG4gICAgZW52aXJvbm1lbnQ6ICdub2RlJyxcbiAgICBlbnZpcm9ubWVudE9wdGlvbnM6IHtcbiAgICAgIG9ic2lkaWFuVHJhbnNwb3J0OiB7XG4gICAgICAgIGFwcGl1bVVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDcyMycsXG4gICAgICAgIGF2ZE5hbWU6ICdvYnNpZGlhbl90ZXN0JyxcbiAgICAgICAgdHlwZTogJ29ic2lkaWFuLWFuZHJvaWQtYXBwaXVtJ1xuICAgICAgfVxuICAgIH0sXG4gICAgZmlsZVBhcmFsbGVsaXNtOiBmYWxzZSxcbiAgICBnbG9iYWxTZXR1cDogW1NUQUxFX0JVSUxEX0dMT0JBTF9TRVRVUCwgJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LWdsb2JhbC1zZXR1cC1wbHVnaW4nXSxcbiAgICBob29rVGltZW91dDogQU5EUk9JRF9USU1FT1VUX0lOX01JTExJU0VDT05EUyAqIEhPT0tfVElNRU9VVF9NVUxUSVBMSUVSLFxuICAgIGluY2x1ZGU6IFtBTkRST0lEX1RFU1RfRklMRVMsIENST1NTX1BMQVRGT1JNX1RFU1RfRklMRVNdLFxuICAgIG5hbWU6ICdpbnRlZ3JhdGlvbi10ZXN0czphbmRyb2lkJyxcbiAgICBzZXR1cEZpbGVzOiBbJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LXNldHVwJ10sXG4gICAgdGVzdFRpbWVvdXQ6IEFORFJPSURfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgfTtcblxuICAvKipcbiAgICogVGhlIHBlci10ZXN0IGJ1ZGdldCBvZiB0aGUgQW5kcm9pZCBpbnRlZ3JhdGlvbiBwcm9qZWN0LCBpbiBtaWxsaXNlY29uZHMuIEJvb3RpbmcgYW4gZW11bGF0b3IgYW5kXG4gICAqIGRyaXZpbmcgaXQgb3ZlciBBcHBpdW0gaXMgc2xvd2VyIHRoYW4gdGhlIGRlc2t0b3AgcGF0aCwgaGVuY2UgaXRzIG93biBjb25zdGFudC5cbiAgICpcbiAgICogQGRlZmF1bHQgYDYwMDAwYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFuZHJvaWRUaW1lb3V0SW5NaWxsaXNlY29uZHMgPSBBTkRST0lEX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyLXRlc3QgYnVkZ2V0IG9mIHRoZSByZWd1bGFyIGludGVncmF0aW9uIHByb2plY3RzLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqXG4gICAqIEl0IGRlbGliZXJhdGVseSBDTEVBUlMgdGhlIHRyYW5zcG9ydHMnIHBlci1ldmFsIGNhcCByYXRoZXIgdGhhbiBtYXRjaGluZyBpdCwgc28gdGhhdCBhIGNsb3N1cmUgd2hpY2hcbiAgICogb3V0cnVucyB0aGUgY2FwIGZhaWxzIHdpdGggdGhlIGhhcm5lc3MncyBgRXZhbENhcEV4Y2VlZGVkRXJyb3JgIOKAlCBuYW1pbmcgdGhlIGNhcCBhbmQgdGhlIHJlbWVkeSDigJRcbiAgICogaW5zdGVhZCBvZiB3aXRoIHZpdGVzdCdzIGFub255bW91cyB0aW1lb3V0LiBMb3dlcmluZyBpdCB0byB0aGUgY2FwIHJlc3RvcmVzIHRoYXQgYmxpbmQgc3BvdC5cbiAgICpcbiAgICogQGRlZmF1bHQgYDQ1MDAwYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJpZ1RpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IElOVEVHUkFUSU9OX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG5cbiAgLyoqXG4gICAqIFRoZSBjb3ZlcmFnZSBgZXhjbHVkZWAgZ2xvYnMuIFB1c2ggb250byBpdCB0byBkcm9wIG1vcmUgZmlsZXMgZnJvbSB0aGUgY292ZXJhZ2UgcmVwb3J0LlxuICAgKlxuICAgKiBEZWNsYXJhdGlvbiBmaWxlcyBhcmUgZXhjbHVkZWQgYnkgZGVmYXVsdCBiZWNhdXNlIHRoZSBjb3ZlcmFnZSBgaW5jbHVkZWAgYmVsb3cgaXMgYHNyYy8qKlxcLyoudHNgLFxuICAgKiB3aGljaCBhIGAuZC50c2AgbWF0Y2hlcy4gQSBkZWNsYXJhdGlvbiBmaWxlIGVtaXRzIG5vIHJ1bnRpbWUgY29kZSwgc28gaXQgcmVwb3J0cyAwJSBhbmQgbm8gdGVzdCBjYW5cbiAgICogZXZlciByYWlzZSBpdCDigJQgYSBwbHVnaW4gdGhhdCBncm93cyBvbmUgdW5kZXIgYHNyYy9gIHNpbGVudGx5IGxvc2VzIGl0cyAxMDAlIGdhdGUsIGFuZCB0aGUgdXN1YWxcbiAgICogcmVtZWR5IG9mIGFuIGlubGluZSBgdjggaWdub3JlYCBjb21tZW50IGRvZXMgbm90IGFwcGx5IHRvIGEgdHlwZS1vbmx5IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY292ZXJhZ2VFeGNsdWRlOiBzdHJpbmdbXSA9IFtVTklUX1RFU1RfRklMRVMsIERFQ0xBUkFUSU9OX0ZJTEVTXTtcblxuICAvKipcbiAgICogVGhlIGBpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wYCBwcm9qZWN0LCBydW5uaW5nIHRoZSBkZXNrdG9wLW9ubHkgYW5kIGNyb3NzLXBsYXRmb3JtIHN1aXRlcyBhZ2FpbnN0IGFcbiAgICogcmVhbCBkZXNrdG9wIE9ic2lkaWFuIG92ZXIgQ0RQLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc2t0b3A6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IHtcbiAgICBlbnZpcm9ubWVudDogJ25vZGUnLFxuICAgIGZpbGVQYXJhbGxlbGlzbTogZmFsc2UsXG4gICAgZ2xvYmFsU2V0dXA6IFtTVEFMRV9CVUlMRF9HTE9CQUxfU0VUVVAsICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1nbG9iYWwtc2V0dXAtcGx1Z2luJ10sXG4gICAgaG9va1RpbWVvdXQ6IElOVEVHUkFUSU9OX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgKiBIT09LX1RJTUVPVVRfTVVMVElQTElFUixcbiAgICBpbmNsdWRlOiBbREVTS1RPUF9URVNUX0ZJTEVTLCBDUk9TU19QTEFURk9STV9URVNUX0ZJTEVTXSxcbiAgICBuYW1lOiAnaW50ZWdyYXRpb24tdGVzdHM6ZGVza3RvcCcsXG4gICAgc2V0dXBGaWxlczogWydvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1zZXR1cCddLFxuICAgIHRlc3RUaW1lb3V0OiBJTlRFR1JBVElPTl9URVNUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBgaW50ZWdyYXRpb24tdGVzdHM6ZGVza3RvcC1wZXJmb3JtYW5jZWAgcHJvamVjdCwgcnVubmluZyB0aGUgYXQtc2NhbGUgc3VpdGVzLiBJdCBpcyBkZWNsYXJlZCBmb3JcbiAgICogZXZlcnkgcGx1Z2luIGV2ZW4gd2hlbiB0aGVyZSBpcyBubyBzdWNoIHN1aXRlIHlldCDigJQgYHBhc3NXaXRoTm9UZXN0c2AgbWFrZXMgYW4gZW1wdHkgcHJvamVjdCBmcmVlLFxuICAgKiBhbmQgdGhlIG1hdGNoaW5nIGB0ZXN0OmludGVncmF0aW9uOmRlc2t0b3A6cGVyZm9ybWFuY2VgIHNjcmlwdCBleGlzdHMgaW4gZXZlcnkgcGx1Z2luIGJ1aWx0IG9uIHRoaXMgbGlicmFyeS5cbiAgICpcbiAgICogQSBwbHVnaW4ncyBgdGVzdDppbnRlZ3JhdGlvbmAgYWdncmVnYXRlIGxlYXZlcyB0aGlzIHByb2plY3Qgb3V0IG9uIHB1cnBvc2UsIGFuZCBpdCBzdGF5cyBvdXQgZXZlbiBvbiBhXG4gICAqIG1hY2hpbmUgd2l0aCBhIGRlc2t0b3AgT2JzaWRpYW4gc2V0IHVwLiBUaGUgcmVhc29uIGlzIHRoZSBmaXh0dXJlIHJhdGhlciB0aGFuIHRoZSBjb3N0OiBhIHBlcmYgc3VpdGVcbiAgICogbmVlZHMgaXRzIG93biBnZW5lcmF0ZWQsIHBvcHVsYXRlZCB2YXVsdCwgc2l6ZWQgdGhyb3VnaCBlbnYgdmFycywgYW5kIHRoZSBhZ2dyZWdhdGUncyBzbWFsbCB0ZW1wb3JhcnlcbiAgICogdmF1bHQgaXMgdGhlIHdyb25nIG9uZS4gVGhlIDYwMCBzIGJlbG93IGlzIGEgdGltZW91dCwgbm90IGEgZHVyYXRpb24g4oCUIG1lYXN1cmVkIGVuZCB0byBlbmQsIG1vc3QgcGVyZlxuICAgKiBzdWl0ZXMgZmluaXNoIGluIHNlY29uZHMsIGFuZCBvbmx5IG9uZSB0aGF0IGdlbmVyYXRlcyB0ZW5zIG9mIHRob3VzYW5kcyBvZiBub3RlcyB0YWtlcyBtaW51dGVzLlxuICAgKlxuICAgKiBJdHMgQ0RQIHRyYW5zcG9ydCdzIHBlci1ldmFsIGNhcCBpcyByYWlzZWQgdG8gNjAwIHMgYXMgd2VsbCAodGhlIGJ1ZGdldCBjbGVhcnMgaXQgYnkgdGhlIHVzdWFsXG4gICAqIG1hcmdpbiksIGJlY2F1c2UgYSBwZXJmIHN1aXRlJ3Mgd2hvbGUgbWVhc3VyZW1lbnQgaXMgdHlwaWNhbGx5IE9ORSBsb25nIGluLXBhZ2UgZXZhbHVhdGlvbiwgd2hpY2ggdGhlXG4gICAqIHRyYW5zcG9ydCdzIDMwIHMgZGVmYXVsdCBraWxsZWQgYXMgYSBiYXJlIGBDRFAgY29tbWFuZCB0aW1lZCBvdXQg4oCmIFJ1bnRpbWUuZXZhbHVhdGVgIG5hbWluZyBuZWl0aGVyIHRoZVxuICAgKiB3YWl0IG5vciB0aGUgYXNzZXJ0aW9uLiBUaHJlZSBwbHVnaW5zIGhhZCBlYWNoIGhhbmQtd3JpdHRlbiB0aGlzIHJhaXNlIGluIHRoZWlyIG93biBgZWRpdENvbnRleHRgXG4gICAqIGJlZm9yZSBpdCBtb3ZlZCBoZXJlLiBVbmxpa2UgYSByYWlzZWQgZGVza3RvcCBjYXAsIHdoaWNoIGlzIGEgYmFja3N0b3AgcmF0aGVyIHRoYW4gYSBidWRnZXQgYSBjbG9zdXJlXG4gICAqIG1heSBzcGVuZCwgdGhpcyBvbmUgSVMgYSBidWRnZXQ6IGBuby1vdmVyLWNhcC13YWl0LWluLWV2YWwtaW4tb2JzaWRpYW5gIHJlYWRzIGl0IGZvciB0aGVzZSBmaWxlcyBhbmRcbiAgICogZm9yIG5vIG90aGVyLlxuICAgKlxuICAgKiBObyByb3V0aW5lIGNvbW1hbmQgcnVucyB0aGVtLCBidXQgc29tZXRoaW5nIGRvZXM6IGEgd2Vla2x5IHN3ZWVwIHJ1bnMgZXZlcnkgcGx1Z2luJ3NcbiAgICogYHRlc3Q6aW50ZWdyYXRpb246ZGVza3RvcDpwZXJmb3JtYW5jZWAsIHdoaWNoIGlzIGFsc28gaG93IHRvIHJlYWNoIHRoZW0gYnkgaGFuZC4gQWRkaW5nIHRoZW0gdG8gdGhhdFxuICAgKiBhZ2dyZWdhdGUgaXMgZHJpZnQsIG5vdCBhIGdhcCB0byBjbG9zZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNrdG9wUGVyZm9ybWFuY2U6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IHtcbiAgICBlbnZpcm9ubWVudDogJ25vZGUnLFxuICAgIGVudmlyb25tZW50T3B0aW9uczoge1xuICAgICAgb2JzaWRpYW5UcmFuc3BvcnQ6IHtcbiAgICAgICAgY29tbWFuZFRpbWVvdXRJbk1pbGxpc2Vjb25kczogUEVSRk9STUFOQ0VfRVZBTF9DQVBfSU5fTUlMTElTRUNPTkRTLFxuICAgICAgICB0eXBlOiAnb2JzaWRpYW4tY2RwJ1xuICAgICAgfVxuICAgIH0sXG4gICAgZmlsZVBhcmFsbGVsaXNtOiBmYWxzZSxcbiAgICBnbG9iYWxTZXR1cDogW1NUQUxFX0JVSUxEX0dMT0JBTF9TRVRVUCwgJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LWdsb2JhbC1zZXR1cC1wbHVnaW4nXSxcbiAgICBob29rVGltZW91dDogUEVSRk9STUFOQ0VfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgaW5jbHVkZTogW0RFU0tUT1BfUEVSRk9STUFOQ0VfVEVTVF9GSUxFU10sXG4gICAgbmFtZTogJ2ludGVncmF0aW9uLXRlc3RzOmRlc2t0b3AtcGVyZm9ybWFuY2UnLFxuICAgIHNldHVwRmlsZXM6IFsnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3Qtc2V0dXAnXSxcbiAgICB0ZXN0VGltZW91dDogUEVSRk9STUFOQ0VfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgfTtcblxuICAvKipcbiAgICogVGhlIHVuaXQgdGVzdCBmaWxlcyB0aGF0IHJlZGVmaW5lIGB3aW5kb3dgLCBgZG9jdW1lbnRgLCBgbG9jYXRpb25gIG9yIGB0b3BgLCB3aGljaCB0aGUgYHVuaXQtdGVzdHNgXG4gICAqIHByb2plY3QncyBWTSBwb29sIGNhbm5vdCBydW4uXG4gICAqXG4gICAqIFVuZGVyIGBwb29sOiAndm1UaHJlYWRzJ2AgdGhvc2UgZm91ciBhcmUgbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSBWTSBnbG9iYWwsIHNvXG4gICAqIGB2aS5zdHViR2xvYmFsKCd3aW5kb3cnLCDigKYpYCBvciBgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgJ2xvY2F0aW9uJywg4oCmKWAgdGhyb3dzXG4gICAqIGBDYW5ub3QgcmVkZWZpbmUgcHJvcGVydHlgLiBUaGF0IGlzIEpTIHNlbWFudGljcywgbm90IGEgYnVnIHRvIHJvdXRlIGFyb3VuZC4gRXZlcnkgb3RoZXIgZ2xvYmFsIHN0YXlzXG4gICAqIGNvbmZpZ3VyYWJsZSBhbmQgc3R1YnMgbm9ybWFsbHkuXG4gICAqXG4gICAqIFB1c2ggYSBmaWxlIGhlcmUgYW5kIGl0IGxlYXZlcyBgdW5pdC10ZXN0c2AgZm9yIGEgc2libGluZyBgdW5pdC10ZXN0czpnbG9iYWwtc3R1YnNgIHByb2plY3QgdGhhdCBpc1xuICAgKiBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcG9vbCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgb25lLiBBIHBsdWdpbidzIGB0ZXN0YCBhbmQgYHRlc3Q6Y292ZXJhZ2VgIHNjcmlwdHNcbiAgICogbmFtZSBgdW5pdC10ZXN0c2AsIHdoaWNoIGFsc28gc2VsZWN0cyBldmVyeSBgdW5pdC10ZXN0czoqYCBwcm9qZWN0LCBzbyB0aGUgc2libGluZyBydW5zIGFuZCBpcyBjb3ZlcmVkXG4gICAqIHdpdGhvdXQgYSBzY3JpcHQgY2hhbmdlLiBJdCBpcyBlbWl0dGVkIG9ubHkgd2hlbiB0aGlzIGxpc3QgaXMgbm9uLWVtcHR5LlxuICAgKlxuICAgKiBUbyBrZWVwIGEgd2hvbGUgc3VpdGUgb24gdGhlIGRlZmF1bHQgcG9vbCBpbnN0ZWFkLCBzZXQgYHVuaXRUZXN0cy5wb29sYCB0byBgJ2ZvcmtzJ2AgYW5kIHNheSB3aHkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2xvYmFsU3R1YlRlc3RGaWxlczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIG11bHRpcGxpZXIgYXBwbGllZCB0byBhIHByb2plY3QncyB0ZXN0IGJ1ZGdldCB0byBnZXQgaXRzIGhvb2sgYnVkZ2V0LiBBIGhvb2sgdHlwaWNhbGx5IHBvcHVsYXRlc1xuICAgKiBhbmQgb3BlbnMgYSB2YXVsdCwgc28gaXQgbmVlZHMgc2V2ZXJhbCB0aW1lcyB3aGF0IGEgc2luZ2xlIHRlc3QgZG9lcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDRgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaG9va1RpbWVvdXRNdWx0aXBsaWVyID0gSE9PS19USU1FT1VUX01VTFRJUExJRVI7XG5cbiAgLyoqXG4gICAqIFRoZSBgaW50ZWdyYXRpb24tdGVzdHM6bm8tYXBwYCBwcm9qZWN0LCBydW5uaW5nIHRoZSBzdWl0ZXMgdGhhdCBuZWVkIG5vIE9ic2lkaWFuIGluc3RhbmNlIGF0IGFsbC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBub0FwcDogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0ge1xuICAgIGVudmlyb25tZW50OiAnbm9kZScsXG4gICAgZmlsZVBhcmFsbGVsaXNtOiBmYWxzZSxcbiAgICBob29rVGltZW91dDogSU5URUdSQVRJT05fVEVTVF9USU1FT1VUX0lOX01JTExJU0VDT05EUyAqIEhPT0tfVElNRU9VVF9NVUxUSVBMSUVSLFxuICAgIGluY2x1ZGU6IFtOT19BUFBfVEVTVF9GSUxFU10sXG4gICAgbmFtZTogJ2ludGVncmF0aW9uLXRlc3RzOm5vLWFwcCcsXG4gICAgdGVzdFRpbWVvdXQ6IElOVEVHUkFUSU9OX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgfTtcblxuICAvKipcbiAgICogVGhlIHBlci1ldmFsIGNhcCB0aGUgcGVyZm9ybWFuY2UgaW50ZWdyYXRpb24gcHJvamVjdCBnaXZlcyBpdHMgQ0RQIHRyYW5zcG9ydCwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNjAwMDAwYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBlcmZvcm1hbmNlRXZhbENhcEluTWlsbGlzZWNvbmRzID0gUEVSRk9STUFOQ0VfRVZBTF9DQVBfSU5fTUlMTElTRUNPTkRTO1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyLXRlc3QgYnVkZ2V0IG9mIHRoZSBwZXJmb3JtYW5jZSBpbnRlZ3JhdGlvbiBwcm9qZWN0LCBpbiBtaWxsaXNlY29uZHMuIEEgcGVyZm9ybWFuY2UgdmF1bHQgaXNcbiAgICogcHJlLXBvcHVsYXRlZCB3aXRoIHRlbnMgb2YgdGhvdXNhbmRzIG9mIG5vdGVzIGJlZm9yZSBPYnNpZGlhbiBvcGVucywgc28gYm90aCBpdHMgc2V0dXAgYW5kIGl0cyB0ZXN0c1xuICAgKiBuZWVkIGZhciBtb3JlIHRpbWUgdGhhbiB0aGUgcmVndWxhciBpbnRlZ3JhdGlvbiBwcm9qZWN0cy5cbiAgICpcbiAgICogTGlrZSB0aGUgcmVndWxhciBidWRnZXQsIGl0IENMRUFSUyB0aGUgcHJvamVjdCdzIHBlci1ldmFsIGNhcFxuICAgKiAoe0BsaW5rIE9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnQ29udGV4dC5wZXJmb3JtYW5jZUV2YWxDYXBJbk1pbGxpc2Vjb25kc30pIHJhdGhlciB0aGFuIG1hdGNoaW5nIGl0LFxuICAgKiBzbyBhbiBldmFsdWF0aW9uIHRoYXQgb3V0cnVucyB0aGUgY2FwIHJlcG9ydHMgaXRzZWxmIGluc3RlYWQgb2YgZHlpbmcgYXMgdml0ZXN0J3MgYW5vbnltb3VzIHRpbWVvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA2MTUwMDBgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGVyZm9ybWFuY2VUaW1lb3V0SW5NaWxsaXNlY29uZHMgPSBQRVJGT1JNQU5DRV9USU1FT1VUX0lOX01JTExJU0VDT05EUztcblxuICAvKipcbiAgICogVGhlIHJlcG9ydGVycyB0aGUgcnVuIHByaW50cyB0aHJvdWdoLlxuICAgKlxuICAgKiBQaW5uZWQgcmF0aGVyIHRoYW4gbGVmdCB0byB2aXRlc3QsIHdoaWNoIHJlc29sdmVzIGFuIHVuc2V0IGByZXBvcnRlcnNgIGRpZmZlcmVudGx5IGZvciBhIGRldmVsb3BlclxuICAgKiBhbmQgZm9yIGFuIEFJIGNvZGluZyBzZXNzaW9uIOKAlCBzZWUge0BsaW5rIERFRkFVTFRfVklURVNUX1JFUE9SVEVSU30gZm9yIHRoZSB3aG9sZSBvZiB3aHksIGFuZCBmb3JcbiAgICogd2hhdCBpdCBkZWxpYmVyYXRlbHkgbGVhdmVzIHRvIHZpdGVzdCA1IGl0c2VsZi5cbiAgICpcbiAgICogUHVzaCBvbnRvIGl0IHRvIGFkZCBhIHJlcG9ydGVyIGJlc2lkZSB0aGUgcGlubmVkIG9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIERFRkFVTFRfVklURVNUX1JFUE9SVEVSU31cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXBvcnRlcnM6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UmVwb3J0ZXJbXSA9IFsuLi5ERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlNdO1xuXG4gIC8qKlxuICAgKiBUaGUgYHVuaXQtdGVzdHNgIHByb2plY3QsIHJ1bm5pbmcgdGhlIG1vY2tlZC1PYnNpZGlhbiBzdWl0ZXMgaW4gYGpzZG9tYC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1bml0VGVzdHM6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IHtcbiAgICBlbnZpcm9ubWVudDogJ2pzZG9tJyxcbiAgICBleGNsdWRlOiBbLi4uU0hBUkVEX0VYQ0xVREUsIElOVEVHUkFUSU9OX1RFU1RfRklMRVNdLFxuICAgIC8vIEEgdGhyZWFkcy9mb3JrcyBwb29sIG9wdGlvbiB0aGF0IHN0aWxsIHJlYWNoZXMgdGhlIHdvcmtlciB1bmRlciB0aGUgVk0gcG9vbCBiZWxvdzogbWVhc3VyZWRcbiAgICAvLyAyMDI2LTA5LTE2LCBgcHJvY2Vzcy5leGVjQXJndmAgY2FycmllcyBpdCBhbmQgTm9kZSdzIG93biBgbG9jYWxTdG9yYWdlYCBkZXNjcmlwdG9yIGlzIGdvbmUsIGFzIGl0XG4gICAgLy8gaXMgdW5kZXIgYHRocmVhZHNgLiBXaXRob3V0IHRoZSBmbGFnIHRoZSBkZXNjcmlwdG9yIGlzIGJhY2sgdW5kZXIgYm90aCBwb29scy5cbiAgICBleGVjQXJndjogWyctLW5vLXdlYnN0b3JhZ2UnXSxcbiAgICBpbmNsdWRlOiBbVU5JVF9URVNUX0ZJTEVTXSxcbiAgICBuYW1lOiAndW5pdC10ZXN0cycsXG4gICAgLypcbiAgICAgKiBUaGUgZGVmYXVsdCBwb29sIGNvbnN0cnVjdHMgb25lIGpzZG9tIHBlciB0ZXN0IGZpbGUsIGFuZCB0aGF0IGNvbnN0cnVjdGlvbiwgbm90IHRoZSB0ZXN0cywgd2FzXG4gICAgICogdGhlIHVuaXQgc3VpdGUncyBjb3N0OiA2NyUgb2YgdHJhY2tlZCB0aW1lIGluIGBvYnNpZGlhbi1kZXYtdXRpbHNgJyBvd24gc3VpdGUuIEEgVk0gcG9vbCBidWlsZHNcbiAgICAgKiB0aGUganNkb20gb25jZSBwZXIgd29ya2VyIGFuZCBnaXZlcyBlYWNoIGZpbGUgYSBmcmVzaCBWTSBjb250ZXh0LCBzbyBwZXItZmlsZSBpc29sYXRpb24gaG9sZHMuXG4gICAgICogTWVhc3VyZWQgdGhlcmUgb24gMjAyNi0wOS0xNTogdGhlIGpzZG9tIHByb2plY3QgMzYuMDZzIC0+IDkuOTJzLCBgY292ZXJhZ2UvbGNvdi5pbmZvYFxuICAgICAqIGJ5dGUtaWRlbnRpY2FsIHRvIHRoZSBkZWZhdWx0IHBvb2wncywgYW5kIG5vIERPTSwgYGdsb2JhbFRoaXNgIG9yIHByb3RvdHlwZSBzdGF0ZSBjcm9zc2luZyBmaWxlcy5cbiAgICAgKiBgaXNvbGF0ZTogZmFsc2VgLCB0aGUgb3RoZXIgcmVtZWR5IHZpdGVzdCBzdWdnZXN0cywgd2FzIHNsb3dlciAoOTEuNjJzKSBhbmQgYnJva2UgNjggdGVzdHMuXG4gICAgICogVGhlIG9uZSBjb3N0IGlzIHJlZGVmaW5pbmcgYHdpbmRvd2AsIGBkb2N1bWVudGAsIGBsb2NhdGlvbmAgb3IgYHRvcGA6IHNlZSBgZ2xvYmFsU3R1YlRlc3RGaWxlc2AuXG4gICAgICovXG4gICAgcG9vbDogJ3ZtVGhyZWFkcycsXG4gICAgc2VydmVyOiB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgZGVwc2AgaXMgZGVjbGFyZWQgYnkgYHZpdGVzdGA7IHJlbmFtaW5nIGl0IGhlcmUgd291bGQgbm90IG1hdGNoIHRoZSBBUEkuXG4gICAgICBkZXBzOiB7XG4gICAgICAgIGlubGluZTogWydAbW5hb3Vtb3YnLCAnQG9ic2lkaWFuLXR5cGluZ3MnXVxuICAgICAgfVxuICAgIH0sXG4gICAgc2V0dXBGaWxlczogW1xuICAgICAgJ29ic2lkaWFuLXRlc3QtbW9ja3Mvdml0ZXN0LXNldHVwJyxcbiAgICAgICdAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXQvdml0ZXN0LXNldHVwJ1xuICAgIF1cbiAgfTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBjb250ZXh0IHNlZWRlZCB3aXRoIHRoZSBzdGFuZGFyZCBwcm9qZWN0cy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBvYnNpZGlhblZlcnNpb24gPSBwcm9jZXNzLmVudltPQlNJRElBTl9WRVJTSU9OX0VOVl9WQVJJQUJMRV9OQU1FXTtcblxuICAgIC8qXG4gICAgICogU3VwcG9ydCBpcyB0aGUgcmFuZ2UgW2xhdGVzdCBwdWJsaWMsIGxhdGVzdCBjYXRhbHlzdF0gYW5kIEJPVEggZW5kcyBtdXN0IHdvcmssIHNvIHRoZSB2ZXJzaW9uXG4gICAgICogaXMgYSBrbm9iIHJhdGhlciB0aGFuIGEgY29uc3RhbnQuIFRoZSBrZXkgaXMgYWRkZWQgT05MWSB3aGVuIHRoZSB2YXJpYWJsZSBpcyBzZXQ6IGFuIGV4cGxpY2l0XG4gICAgICogYG9ic2lkaWFuVmVyc2lvbmAgbWFrZXMgdGhlIGhhcm5lc3MgcmVzb2x2ZSBhIGNvbmNyZXRlIHZlcnNpb24gYW5kIHN3YXAgdGhlIGFzYXIsIHdoaWNoIGlzIG5vdCB3aGF0XG4gICAgICogYW4gdW5waW5uZWQgcnVuIGRvZXMsIHNvIHNlZWRpbmcgYSBkZWZhdWx0IGhlcmUgd291bGQgY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBldmVyeSBwbHVnaW4uXG4gICAgICovXG4gICAgaWYgKG9ic2lkaWFuVmVyc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRlc2t0b3AuZW52aXJvbm1lbnRPcHRpb25zID0ge1xuICAgICAgICBvYnNpZGlhblRyYW5zcG9ydDoge1xuICAgICAgICAgIG9ic2lkaWFuVmVyc2lvbixcbiAgICAgICAgICB0eXBlOiAnb2JzaWRpYW4tY2RwJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIERlZmluZXMgdGhlIHZpdGVzdCBjb25maWd1cmF0aW9uIGZvciBhbiBPYnNpZGlhbiBwbHVnaW4uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgZGVmaW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyBUaGUgdml0ZXN0IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZyhvcHRpb25zOiBEZWZpbmVPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ09wdGlvbnMgPSB7fSk6IFZpdGVVc2VyQ29uZmlnIHtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ0NvbnRleHQoKTtcblxuICBpZiAob3B0aW9ucy5lZGl0Q29udGV4dCkge1xuICAgIG9wdGlvbnMuZWRpdENvbnRleHQoY29udGV4dCk7XG4gIH1cblxuICBjb25zdCBjdXN0b21Qcm9qZWN0cyA9IG9wdGlvbnMuY3VzdG9tUHJvamVjdHM/Lihjb250ZXh0KSA/PyBbXTtcbiAgdmFsaWRhdGVDdXN0b21Qcm9qZWN0cyhjdXN0b21Qcm9qZWN0cyk7XG5cbiAgY29uc3QgdW5pdFRlc3RzUmVzb2x2ZSA9IHtcbiAgICBhbGlhczoge1xuICAgICAgb2JzaWRpYW46ICdvYnNpZGlhbi10ZXN0LW1vY2tzL29ic2lkaWFuJ1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2xvYmFsU3R1YlRlc3RGaWxlcyA9IFsuLi5jb250ZXh0Lmdsb2JhbFN0dWJUZXN0RmlsZXNdO1xuICBjb25zdCB1bml0VGVzdHM6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IGdsb2JhbFN0dWJUZXN0RmlsZXMubGVuZ3RoID09PSAwXG4gICAgPyBjb250ZXh0LnVuaXRUZXN0c1xuICAgIDogeyAuLi5jb250ZXh0LnVuaXRUZXN0cywgZXhjbHVkZTogWy4uLmNvbnRleHQudW5pdFRlc3RzLmV4Y2x1ZGUgPz8gW10sIC4uLmdsb2JhbFN0dWJUZXN0RmlsZXNdIH07XG4gIGNvbnN0IGdsb2JhbFN0dWJzUHJvamVjdHM6IFRlc3RQcm9qZWN0Q29uZmlndXJhdGlvbltdID0gZ2xvYmFsU3R1YlRlc3RGaWxlcy5sZW5ndGggPT09IDBcbiAgICA/IFtdXG4gICAgOiBbe1xuICAgICAgcmVzb2x2ZTogdW5pdFRlc3RzUmVzb2x2ZSxcbiAgICAgIHRlc3Q6IHtcbiAgICAgICAgLi4uY29udGV4dC51bml0VGVzdHMsXG4gICAgICAgIGluY2x1ZGU6IGdsb2JhbFN0dWJUZXN0RmlsZXMsXG4gICAgICAgIG5hbWU6IFVOSVRfVEVTVF9HTE9CQUxfU1RVQlNfUFJPSkVDVF9OQU1FLFxuICAgICAgICAvLyBUaGUgZGVmYXVsdCBwb29sLCBuYW1lZCByYXRoZXIgdGhhbiBvbWl0dGVkIHNvIHRoZSBzcHJlYWQgYWJvdmUgY2Fubm90IGNhcnJ5IHRoZSBWTSBwb29sIG92ZXIuXG4gICAgICAgIHBvb2w6ICdmb3JrcydcbiAgICAgIH1cbiAgICB9XTtcblxuICAvKlxuICAgKiBBIHBsYWluIG9iamVjdCByYXRoZXIgdGhhbiBgZGVmaW5lQ29uZmlnKC4uLilgLCB3aGljaCBpcyBvbmx5IGFuIGlkZW50aXR5IGZ1bmN0aW9uIGZvciB0aGUgdHlwZXM6IGNhbGxpbmcgaXRcbiAgICogbWFkZSB0aGlzIG1vZHVsZSBsb2FkIGB2aXRlc3QvY29uZmlnYCwgYW5kIHNvIG1hZGUgdGhlIGB0ZXN0LXJ1bm5lcnNgIGJhcnJlbCBmYWlsIHRvIGxvYWQgaW4gYSBwcm9qZWN0XG4gICAqIHdpdGhvdXQgYHZpdGVzdGAsIGFuIG9wdGlvbmFsIHBlZXIuIGBkZWZpbmVMaWJyYXJ5Vml0ZXN0Q29uZmlnYCBpbiBgQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXRgIHJldHVybnNcbiAgICogaXRzIGNvbmZpZ3VyYXRpb24gdGhlIHNhbWUgd2F5LlxuICAgKi9cbiAgcmV0dXJuIHtcbiAgICB0ZXN0OiB7XG4gICAgICBjb3ZlcmFnZToge1xuICAgICAgICBleGNsdWRlOiBjb250ZXh0LmNvdmVyYWdlRXhjbHVkZSxcbiAgICAgICAgaW5jbHVkZTogWydzcmMvKiovKi50cyddLFxuICAgICAgICBwcm92aWRlcjogJ3Y4JyxcbiAgICAgICAgcmVwb3J0ZXI6IFsndGV4dCcsICdsY292JywgJ2h0bWwnXSxcbiAgICAgICAgcmVwb3J0c0RpcmVjdG9yeTogJy4vY292ZXJhZ2UnXG4gICAgICB9LFxuICAgICAgZXhjbHVkZTogWy4uLlNIQVJFRF9FWENMVURFXSxcbiAgICAgIGdsb2JhbHM6IGZhbHNlLFxuICAgICAgLypcbiAgICAgICAqIFRoZXJlIGlzIGRlbGliZXJhdGVseSBOTyByb290LWxldmVsIGBpbmNsdWRlYCBoZXJlLCBhbmQgcmVzdG9yaW5nIG9uZSBicmVha3MgZXZlcnkgcHJvamVjdC5cbiAgICAgICAqIFVuZGVyIHZpdGVzdCA0IGEgcHJvamVjdCdzIG93biBgaW5jbHVkZWAgcmVwbGFjZWQgdGhlIHJvb3Qgb25lLCBzbyBhIHJvb3RcbiAgICAgICAqIGBpbmNsdWRlOiBbVU5JVF9URVNUX0ZJTEVTXWAgd2FzIG1lcmVseSByZWR1bmRhbnQg4oCUIHRoZSBgdW5pdC10ZXN0c2AgcHJvamVjdCBhbHJlYWR5IGRlY2xhcmVzXG4gICAgICAgKiB0aGF0IHNhbWUgZ2xvYiBmb3IgaXRzZWxmLiBVbmRlciB2aXRlc3QgNSB0aGUgcHJvamVjdCBnbG9iIG5vIGxvbmdlciByZXBsYWNlcyBpdCwgYW5kXG4gICAgICAgKiBgc3JjLyoqXFwvKi50ZXN0LnRzYCBpcyBhIHN1cGVyc2V0IG9mIGV2ZXJ5IHByb2plY3QgZ2xvYiwgc28gRVZFUlkgcHJvamVjdCBjb2xsZWN0ZWQgRVZFUlkgdGVzdFxuICAgICAgICogZmlsZTogdW5pdCBzdWl0ZXMgcmFuIGluIHRoZSBDRFAgaW50ZWdyYXRpb24gZW52aXJvbm1lbnQgYW5kIGRpZWQgb24gYEZhaWxlZCB0byByZXNvbHZlIGVudHJ5XG4gICAgICAgKiBmb3IgcGFja2FnZSBcIm9ic2lkaWFuXCJgLCB0aGUgc2NyZWVuc2hvdC1jYXB0dXJlIHN1aXRlcyByYW4gYW5kIHJld3JvdGUgY2hlY2tlZC1pbiBQTkdzLCBhbmQgdGhlXG4gICAgICAgKiBhbmRyb2lkIC8gZGVtby12YXVsdCBzdWl0ZXMgcmFuIHVuZGVyIHRoZSBkZXNrdG9wIHRyYW5zcG9ydC4gTWVhc3VyZWQgaW4gYSBjb25zdW1lcjogdGhlIGRlc2t0b3BcbiAgICAgICAqIHByb2plY3QgY29sbGVjdGVkIDIyNyBmaWxlcyBpbnN0ZWFkIG9mIGl0cyBvd24gMTA1LCBhbmQgZGVsZXRpbmcgdGhpcyBvbmUgbGluZSByZXN0b3JlZCAxMDUuXG4gICAgICAgKi9cbiAgICAgIHBhc3NXaXRoTm9UZXN0czogdHJ1ZSxcbiAgICAgIHByb2plY3RzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICByZXNvbHZlOiB1bml0VGVzdHNSZXNvbHZlLFxuICAgICAgICAgIHRlc3Q6IHVuaXRUZXN0c1xuICAgICAgICB9LFxuICAgICAgICB7IHRlc3Q6IGNvbnRleHQubm9BcHAgfSxcbiAgICAgICAgeyB0ZXN0OiBjb250ZXh0LmRlc2t0b3AgfSxcbiAgICAgICAgeyB0ZXN0OiBjb250ZXh0LmRlc2t0b3BQZXJmb3JtYW5jZSB9LFxuICAgICAgICB7IHRlc3Q6IGNvbnRleHQuYW5kcm9pZCB9LFxuICAgICAgICAuLi5nbG9iYWxTdHVic1Byb2plY3RzLFxuICAgICAgICAuLi5jdXN0b21Qcm9qZWN0c1xuICAgICAgXSxcbiAgICAgIHJlcG9ydGVyczogWy4uLmNvbnRleHQucmVwb3J0ZXJzXVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZWZ1c2VzIGEgY3VzdG9tIHByb2plY3QgdGhhdCBkZWNsYXJlcyBubyBgaW5jbHVkZWAgZ2xvYiBvZiBpdHMgb3duLlxuICpcbiAqIFRoZSByb290IHNlY3Rpb24gZGVsaWJlcmF0ZWx5IGRlY2xhcmVzIG5vIGBpbmNsdWRlYCAoc2VlIHRoZSBjb21tZW50IG9uIGl0IGFib3ZlKSwgc28gYSBwcm9qZWN0IHRoYXRcbiAqIGRlY2xhcmVzIG5vbmUgZmFsbHMgYmFjayB0byB2aXRlc3QncyBvd24gZGVmYXVsdCBnbG9iIOKAlCB3aGljaCBtYXRjaGVzIEVWRVJZIHRlc3QgZmlsZSBpbiB0aGUgcmVwby5cbiAqIFRoYXQgcHJvamVjdCB0aGVuIHJ1bnMgdGhlIHVuaXQgc3VpdGVzIGluIGFuIE9ic2lkaWFuIGVudmlyb25tZW50LCB0aGUgYW5kcm9pZCBzdWl0ZXMgdW5kZXIgdGhlXG4gKiBkZXNrdG9wIHRyYW5zcG9ydCwgYW5kIHRoZSBgKi1jYXB0dXJlLmAgc2NyZWVuc2hvdCBzdWl0ZXMgdGhhdCBvcGVuIGEgd2luZG93IGFuZCByZXdyaXRlIGNoZWNrZWQtaW5cbiAqIFBOR3MuIEEgd2lkZW5lZCBwcm9qZWN0IGlzIHNpbGVudDogaXQgcGFzc2VzLCBzbG93bHksIGhhdmluZyBkb25lIGFsbCBvZiB0aGF0LlxuICpcbiAqIE9ubHkgYSBwbGFpbiBpbmxpbmUgY29uZmlndXJhdGlvbiBjYW4gYmUgY2hlY2tlZCBoZXJlLiBBIHByb2plY3QgbmFtZWQgYnkgYSBnbG9iIHN0cmluZywgYnVpbHQgYnkgYVxuICogZnVuY3Rpb24sIG9yIGF3YWl0ZWQgZnJvbSBhIHByb21pc2UgaXMgcmVzb2x2ZWQgYnkgdml0ZXN0IGl0c2VsZiwgb3V0IG9mIHRoaXMgZnVuY3Rpb24ncyByZWFjaC5cbiAqXG4gKiBAcGFyYW0gY3VzdG9tUHJvamVjdHMgLSBUaGUgcHJvamVjdHMgcmV0dXJuZWQgYnkge0BsaW5rIERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucy5jdXN0b21Qcm9qZWN0c30uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ3VzdG9tUHJvamVjdHMoY3VzdG9tUHJvamVjdHM6IFRlc3RQcm9qZWN0Q29uZmlndXJhdGlvbltdKTogdm9pZCB7XG4gIGZvciAoY29uc3QgW2luZGV4LCBjdXN0b21Qcm9qZWN0XSBvZiBjdXN0b21Qcm9qZWN0cy5lbnRyaWVzKCkpIHtcbiAgICBpZiAodHlwZW9mIGN1c3RvbVByb2plY3QgIT09ICdvYmplY3QnIHx8ICd0aGVuJyBpbiBjdXN0b21Qcm9qZWN0KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmNsdWRlID0gY3VzdG9tUHJvamVjdC50ZXN0Py5pbmNsdWRlO1xuXG4gICAgaWYgKGluY2x1ZGUgJiYgaW5jbHVkZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lID0gY3VzdG9tUHJvamVjdC50ZXN0Py5uYW1lO1xuICAgIGNvbnN0IGxhYmVsID0gdHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnID8gbmFtZSA6IG5hbWU/LmxhYmVsID8/IGBhdCBpbmRleCAke1N0cmluZyhpbmRleCl9YDtcblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBUaGUgY3VzdG9tIHZpdGVzdCBwcm9qZWN0ICR7bGFiZWx9IGRlY2xhcmVzIG5vIFxcYHRlc3QuaW5jbHVkZVxcYCwgc28gdml0ZXN0IGZhbGxzIGJhY2sgdG8gaXRzIGRlZmF1bHQgZ2xvYiBhbmQgdGhlIHByb2plY3QgY29sbGVjdHMgRVZFUlkgdGVzdCBmaWxlIOKAlCBpbmNsdWRpbmcgdGhlIFxcYCotY2FwdHVyZS5cXGAgc3VpdGVzIHRoYXQgcmV3cml0ZSBjaGVja2VkLWluIHNjcmVlbnNob3RzLiBEZWNsYXJlIGFuIGV4cGxpY2l0IFxcYGluY2x1ZGVcXGAsIG9yIHNwcmVhZCBhIHN0YW5kYXJkIHByb2plY3QgKFxcYC4uLmNvbnRleHQuZGVza3RvcFxcYCkgYW5kIG92ZXJyaWRlIGl0LmBcbiAgICApO1xu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
|
|
@@ -29,80 +29,6 @@ function ensureBrowserProcess() {
|
|
|
29
29
|
|
|
30
30
|
ensureBrowserProcess();
|
|
31
31
|
})();
|
|
32
|
-
(function patchObsidianRequire() {
|
|
33
|
-
const originalRequire = require;
|
|
34
|
-
if (!originalRequire || originalRequire.__isPatched) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
require = Object.assign(
|
|
39
|
-
(id) => requirePatched(id),
|
|
40
|
-
originalRequire,
|
|
41
|
-
{
|
|
42
|
-
__isPatched: true
|
|
43
|
-
}
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
function extractDefault(module) {
|
|
47
|
-
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
51
|
-
'@codemirror/autocomplete',
|
|
52
|
-
'@codemirror/collab',
|
|
53
|
-
'@codemirror/commands',
|
|
54
|
-
'@codemirror/language',
|
|
55
|
-
'@codemirror/lint',
|
|
56
|
-
'@codemirror/search',
|
|
57
|
-
'@codemirror/state',
|
|
58
|
-
'@codemirror/text',
|
|
59
|
-
'@codemirror/view',
|
|
60
|
-
'@lezer/common',
|
|
61
|
-
'@lezer/highlight',
|
|
62
|
-
'@lezer/lr',
|
|
63
|
-
'obsidian']
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
67
|
-
'@codemirror/closebrackets',
|
|
68
|
-
'@codemirror/comment',
|
|
69
|
-
'@codemirror/fold',
|
|
70
|
-
'@codemirror/gutter',
|
|
71
|
-
'@codemirror/highlight',
|
|
72
|
-
'@codemirror/history',
|
|
73
|
-
'@codemirror/matchbrackets',
|
|
74
|
-
'@codemirror/panel',
|
|
75
|
-
'@codemirror/rangeset',
|
|
76
|
-
'@codemirror/rectangular-selection',
|
|
77
|
-
'@codemirror/stream-parser',
|
|
78
|
-
'@codemirror/tooltip']
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
function requirePatched(id) {
|
|
82
|
-
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
83
|
-
return originalRequire?.(id);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
87
|
-
if (globalThis.app.isMobile) {
|
|
88
|
-
if (id === 'process' || id === 'node:process') {
|
|
89
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
90
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
91
|
-
|
|
92
|
-
return process;
|
|
93
|
-
}
|
|
94
|
-
} else {
|
|
95
|
-
const module = originalRequire?.(id);
|
|
96
|
-
if (module) {
|
|
97
|
-
return extractDefault(module);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
102
|
-
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
103
|
-
return {};
|
|
104
|
-
}
|
|
105
|
-
})();
|
|
106
32
|
|
|
107
33
|
"use strict";
|
|
108
34
|
var __defProp = Object.defineProperty;
|
|
@@ -202,4 +128,4 @@ function resolveVault(vault) {
|
|
|
202
128
|
defineWdioObsidianConfig,
|
|
203
129
|
testEndToEndWithWdioObsidian
|
|
204
130
|
});
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvd2Rpby1vYnNpZGlhbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogRW5kLXRvLWVuZCB0ZXN0cyB3aXRoIGB3ZGlvLW9ic2lkaWFuLXNlcnZpY2VgOiBXZWJkcml2ZXJJTyBkcml2ZXMgYSBzYW5kYm94ZWQgY29weSBvZiBPYnNpZGlhbiwgZG93bmxvYWRlZCBwZXJcbiAqIHZlcnNpb24gaW50byBhIGNhY2hlLCB3aXRoIHRoZSBwbHVnaW4gaW5zdGFsbGVkIGludG8gYSBjb3B5IG9mIHRoZSB0ZXN0IHZhdWx0LlxuICpcbiAqIHtAbGluayBkZWZpbmVXZGlvT2JzaWRpYW5Db25maWd9IGRlcml2ZXMgdGhlIGB3ZGlvLmNvbmYubXRzYCBmcm9tIHRoZSBwcm9qZWN0J3MgbGF5b3V0LCBhbmRcbiAqIHtAbGluayB0ZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFufSBpcyB0aGUgYHRlc3Q6ZTJlYCBzY3JpcHQ6IGEgcHJvZHVjdGlvbiBidWlsZCwgdGhlbiBgd2RpbyBydW5gLlxuICpcbiAqIFRoZSBjb25maWcgaXMgdHlwZWQgc3RydWN0dXJhbGx5IHJhdGhlciB0aGFuIHRocm91Z2ggYEB3ZGlvL3R5cGVzYCwgc28gdGhpcyBtb2R1bGUgY29zdHMgYSBwcm9qZWN0IHRoYXQgZG9lcyBub3RcbiAqIHVzZSBXZWJkcml2ZXJJTyBub3RoaW5nLCBhbmQgdGhlIHJldHVybmVkIG9iamVjdCBpcyBhc3NpZ25hYmxlIHRvIGBXZWJkcml2ZXJJTy5Db25maWdgIGluIG9uZSB0aGF0IGRvZXMuXG4gKi9cblxuaW1wb3J0IHsgbnBtUnVuIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvbnBtLXJ1bic7XG5pbXBvcnQge1xuICBleGVjRnJvbVJvb3QsXG4gIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3Jvb3QnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuXG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGFzc2VydFByb2plY3RQYWNrYWdlc0luc3RhbGxlZCxcbiAgREVGQVVMVF9FTkRfVE9fRU5EX1NQRUNTXG59IGZyb20gJy4vZTJlLXJ1bm5lci1zdXBwb3J0LnRzJztcblxuLyoqXG4gKiBUaGUgcGVyLXRlc3QgdGltZW91dCB7QGxpbmsgZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnfSBnaXZlcyBtb2NoYSBieSBkZWZhdWx0LCBpbiBtaWxsaXNlY29uZHMuIE9ic2lkaWFuIGlzXG4gKiBzdGFydGVkIG9uY2UgcGVyIHNwZWMgZmlsZSwgd2hpY2ggYSBzaW5nbGUgdGVzdCdzIGJ1ZGdldCBoYXMgdG8gYWJzb3JiLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9XRElPX09CU0lESUFOX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSA2MF8wMDA7XG5cbi8qKlxuICogVGhlIGNvbmZpZyBmaWxlcyB7QGxpbmsgdGVzdEVuZFRvRW5kV2l0aFdkaW9PYnNpZGlhbn0gbG9va3MgZm9yLCBpbiBvcmRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IFdESU9fQ09ORklHX0ZJTEVfTkFNRVM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWyd3ZGlvLmNvbmYubXRzJywgJ3dkaW8uY29uZi50cyddO1xuXG4vKipcbiAqIFRoZSBwYWNrYWdlcyBhIGB3ZGlvLW9ic2lkaWFuLXNlcnZpY2VgIHNldHVwIG5lZWRzIGluIHRoZSBwcm9qZWN0LlxuICovXG5jb25zdCBXRElPX09CU0lESUFOX1BBQ0tBR0VTOiByZWFkb25seSBzdHJpbmdbXSA9IFsnQHdkaW8vY2xpJywgJ0B3ZGlvL2xvY2FsLXJ1bm5lcicsICdAd2Rpby9tb2NoYS1mcmFtZXdvcmsnLCAnd2Rpby1vYnNpZGlhbi1yZXBvcnRlcicsICd3ZGlvLW9ic2lkaWFuLXNlcnZpY2UnXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbmVXZGlvT2JzaWRpYW5Db25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgdmVyc2lvbnMgdG8gdGVzdCwgb25lIGNhcGFiaWxpdHkgZWFjaDogYSB2ZXJzaW9uIHN1Y2ggYXMgYDEuOC4xMGAsIGBsYXRlc3RgLCBgbGF0ZXN0LWJldGFgLCBvclxuICAgKiBgZWFybGllc3RgICh0aGUgYG1pbkFwcFZlcnNpb25gIG9mIGBtYW5pZmVzdC5qc29uYCkuIERlZmF1bHRzIHRvIGBbJ2xhdGVzdCddYDsgYFsnZWFybGllc3QnLCAnbGF0ZXN0J11gIHRlc3RzXG4gICAqIGJvdGggZW5kcyBvZiB0aGUgc3VwcG9ydGVkIHJhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwVmVyc2lvbnM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGZvbGRlciBPYnNpZGlhbiB2ZXJzaW9ucyBhcmUgZG93bmxvYWRlZCBpbnRvLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LiBEZWZhdWx0cyB0byBgLm9ic2lkaWFuLWNhY2hlYCxcbiAgICogd2hpY2ggYmVsb25ncyBpbiBgLmdpdGlnbm9yZWAuXG4gICAqL1xuICByZWFkb25seSBjYWNoZUZvbGRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGluc3RhbGxlciAoRWxlY3Ryb24pIHZlcnNpb24sIGBlYXJsaWVzdGAgb3IgYGxhdGVzdGAgY29tcGF0aWJsZSB3aXRoIGVhY2ggYXBwIHZlcnNpb24sIG9yIGFuIGV4YWN0XG4gICAqIG9uZS4gRGVmYXVsdHMgdG8gdGhlIHNlcnZpY2UncyBvd24gY2hvaWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbGVyVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSG93IG1hbnkgT2JzaWRpYW4gaW5zdGFuY2VzIHJ1biBpbiBwYXJhbGxlbC4gRGVmYXVsdHMgdG8gV2ViZHJpdmVySU8ncy5cbiAgICovXG4gIHJlYWRvbmx5IG1heEluc3RhbmNlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGZvbGRlciBob2xkaW5nIHRoZSBidWlsdCBwbHVnaW4gKGBtYWluLmpzYCwgYG1hbmlmZXN0Lmpzb25gLCBgc3R5bGVzLmNzc2ApLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LlxuICAgKiBEZWZhdWx0cyB0byBgZGlzdC9idWlsZGAsIHdoZXJlIHRoZSBwcm9kdWN0aW9uIGJ1aWxkIHdyaXRlcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbkZvbGRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNwZWMgZmlsZXMsIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3QuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VORF9UT19FTkRfU1BFQ1N9LlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHBlci10ZXN0IHRpbWVvdXQsIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfV0RJT19PQlNJRElBTl9URVNUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTfS5cbiAgICovXG4gIHJlYWRvbmx5IHRlc3RUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBldmVyeSB0ZXN0IHN0YXJ0cyBmcm9tLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LiBUaGUgc2VydmljZSBvcGVucyBhIENPUFkgb2YgaXQsIHNvIHRoZSB0ZXN0c1xuICAgKiBuZXZlciBjaGFuZ2UgdGhlIGZvbGRlci4gRGVmYXVsdHMgdG8gdGhlIHBsdWdpbidzIGRlbW8gdmF1bHQgKGBkZW1vLXZhdWx0YCkgd2hlbiB0aGUgcHJvamVjdCBoYXMgb25lLCBhbmQgdG8gYW5cbiAgICogZW1wdHkgdmF1bHQgb3RoZXJ3aXNlOyBgZmFsc2VgIGZvcmNlcyB0aGUgZW1wdHkgdmF1bHQuXG4gICAqL1xuICByZWFkb25seSB2YXVsdD86IGZhbHNlIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayB0ZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgV2ViZHJpdmVySU8gY29uZmlnIGZpbGUsIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3QuIERlZmF1bHRzIHRvIHRoZSBmaXJzdCBvZlxuICAgKiB7QGxpbmsgV0RJT19DT05GSUdfRklMRV9OQU1FU30gdGhhdCBleGlzdHMuXG4gICAqL1xuICByZWFkb25seSBjb25maWdQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJ1biB0aGUgcHJvZHVjdGlvbiBidWlsZCBmaXJzdCwgc28gdGhlIHRlc3RzIGxvYWQgdGhlIGN1cnJlbnQgYGRpc3QvYnVpbGRgLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRCdWlsZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBgd2Rpby1vYnNpZGlhbi1zZXJ2aWNlYCBjYXBhYmlsaXR5OiBvbmUgT2JzaWRpYW4gdmVyc2lvbiB0byBydW4gdGhlIHNwZWNzIGFnYWluc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Rpb09ic2lkaWFuQ2FwYWJpbGl0eSB7XG4gIC8qKlxuICAgKiBBbHdheXMgYG9ic2lkaWFuYCwgd2hpY2ggaXMgd2hhdCByb3V0ZXMgdGhlIGNhcGFiaWxpdHkgdG8gdGhlIHNlcnZpY2UuXG4gICAqL1xuICAnYnJvd3Nlck5hbWUnOiAnb2JzaWRpYW4nO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIHZlcnNpb24uXG4gICAqL1xuICAnYnJvd3NlclZlcnNpb24nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlJ3Mgb3duIG9wdGlvbnMgZm9yIHRoaXMgY2FwYWJpbGl0eS5cbiAgICovXG4gICd3ZGlvOm9ic2lkaWFuT3B0aW9ucyc6IFdkaW9PYnNpZGlhbkNhcGFiaWxpdHlPcHRpb25zO1xufVxuXG4vKipcbiAqIFRoZSBgd2RpbzpvYnNpZGlhbk9wdGlvbnNgIG9mIGEge0BsaW5rIFdkaW9PYnNpZGlhbkNhcGFiaWxpdHl9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdkaW9PYnNpZGlhbkNhcGFiaWxpdHlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBpbnN0YWxsZXIgdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxlclZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZm9sZGVycyB0byBpbnN0YWxsIGludG8gdGhlIHZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCB0byBvcGVuIGEgY29weSBvZi5cbiAgICovXG4gIHJlYWRvbmx5IHZhdWx0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBXZWJkcml2ZXJJTyBjb25maWd1cmF0aW9uIHtAbGluayBkZWZpbmVXZGlvT2JzaWRpYW5Db25maWd9IHJldHVybnMuIEV2ZXJ5IGZpZWxkIGlzIHBsYWluIGRhdGEsIHNvIGEgcHJvamVjdFxuICogY2hhbmdlcyBhbnkgb2YgdGhlbSBieSBzcHJlYWRpbmcgdGhlIHJlc3VsdDogYHsgLi4uZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnKCksIGxvZ0xldmVsOiAnaW5mbycgfWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Rpb09ic2lkaWFuQ29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXJlIE9ic2lkaWFuIHZlcnNpb25zIGFyZSBkb3dubG9hZGVkLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gV2ViZHJpdmVySU8ncyBvd24gb3B0aW9uIG5hbWUuXG4gIGNhY2hlRGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9uZSBjYXBhYmlsaXR5IHBlciBPYnNpZGlhbiB2ZXJzaW9uLlxuICAgKi9cbiAgY2FwYWJpbGl0aWVzOiBXZGlvT2JzaWRpYW5DYXBhYmlsaXR5W107XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXN0IGZyYW1ld29yay5cbiAgICovXG4gIGZyYW1ld29yazogJ21vY2hhJztcblxuICAvKipcbiAgICogV2ViZHJpdmVySU8ncyBsb2cgbGV2ZWwuXG4gICAqL1xuICBsb2dMZXZlbDogJ2RlYnVnJyB8ICdlcnJvcicgfCAnaW5mbycgfCAnc2lsZW50JyB8ICd0cmFjZScgfCAnd2Fybic7XG5cbiAgLyoqXG4gICAqIEhvdyBtYW55IE9ic2lkaWFuIGluc3RhbmNlcyBydW4gaW4gcGFyYWxsZWwuXG4gICAqL1xuICBtYXhJbnN0YW5jZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1vY2hhJ3Mgb3B0aW9ucy5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIFdlYmRyaXZlcklPJ3Mgb3duIG9wdGlvbiBuYW1lLlxuICBtb2NoYU9wdHM6IFdkaW9PYnNpZGlhbk1vY2hhT3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIHJlcG9ydGVycy4gYG9ic2lkaWFuYCBpcyB0aGUgc3BlYyByZXBvcnRlciwgbmFtaW5nIHRoZSBPYnNpZGlhbiB2ZXJzaW9uIGluc3RlYWQgb2YgQ2hyb21pdW0ncy5cbiAgICovXG4gIHJlcG9ydGVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXJlIHRoZSBzcGVjcyBydW4uXG4gICAqL1xuICBydW5uZXI6ICdsb2NhbCc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlcy4gYG9ic2lkaWFuYCBpcyBgd2Rpby1vYnNpZGlhbi1zZXJ2aWNlYC5cbiAgICovXG4gIHNlcnZpY2VzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNwZWMgZmlsZXMuXG4gICAqL1xuICBzcGVjczogc3RyaW5nW107XG59XG5cbi8qKlxuICogVGhlIGBtb2NoYU9wdHNgIG9mIGEge0BsaW5rIFdkaW9PYnNpZGlhbkNvbmZpZ30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Rpb09ic2lkaWFuTW9jaGFPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwZXItdGVzdCB0aW1lb3V0LCBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcmZhY2UgdGhlIHNwZWNzIGFyZSB3cml0dGVuIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgdWk6ICdiZGQnO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgV2ViZHJpdmVySU8gY29uZmlndXJhdGlvbiBmb3IgZW5kLXRvLWVuZCB0ZXN0cyB3aXRoIGB3ZGlvLW9ic2lkaWFuLXNlcnZpY2VgLCBkZXJpdmVkIGZyb20gdGhlIHBsdWdpbidzXG4gKiBsYXlvdXQ6IHRoZSBwcm9kdWN0aW9uIGJ1aWxkIGluIGBkaXN0L2J1aWxkYCBpcyB0aGUgcGx1Z2luIHVuZGVyIHRlc3QsIHRoZSBkZW1vIHZhdWx0ICh3aGVuIHRoZXJlIGlzIG9uZSkgaXMgdGhlXG4gKiB2YXVsdCwgYW5kIHRoZSBzcGVjcyBsaXZlIGluIGBlMmUvYC5cbiAqXG4gKiBgd2Rpby5jb25mLm10c2A6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGRlZmluZVdkaW9PYnNpZGlhbkNvbmZpZyB9IGZyb20gJ0BtbmFvdW1vdi9vYnNpZGlhbi1kZXYtdG9vbGtpdC90ZXN0LXJ1bm5lcnMvd2Rpby1vYnNpZGlhbic7XG4gKlxuICogZXhwb3J0IGNvbnN0IGNvbmZpZzogV2ViZHJpdmVySU8uQ29uZmlnID0gZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnKHsgYXBwVmVyc2lvbnM6IFsnZWFybGllc3QnLCAnbGF0ZXN0J10gfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgRGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnT3B0aW9uc30uXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbiwgdG8gZXhwb3J0IGFzIGBjb25maWdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnKG9wdGlvbnM6IERlZmluZVdkaW9PYnNpZGlhbkNvbmZpZ09wdGlvbnMgPSB7fSk6IFdkaW9PYnNpZGlhbkNvbmZpZyB7XG4gIGNvbnN0IHBsdWdpbkZvbGRlciA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogb3B0aW9ucy5wbHVnaW5Gb2xkZXIgPz8gT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkIH0pO1xuICBjb25zdCB2YXVsdCA9IHJlc29sdmVWYXVsdChvcHRpb25zLnZhdWx0KTtcbiAgY29uc3QgY2FwYWJpbGl0eU9wdGlvbnM6IFdkaW9PYnNpZGlhbkNhcGFiaWxpdHlPcHRpb25zID0ge1xuICAgIHBsdWdpbnM6IFtwbHVnaW5Gb2xkZXJdLFxuICAgIC4uLihvcHRpb25zLmluc3RhbGxlclZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiB7IGluc3RhbGxlclZlcnNpb246IG9wdGlvbnMuaW5zdGFsbGVyVmVyc2lvbiB9KSxcbiAgICAuLi4odmF1bHQgIT09IHVuZGVmaW5lZCAmJiB7IHZhdWx0IH0pXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBXZWJkcml2ZXJJTydzIG93biBvcHRpb24gbmFtZS5cbiAgICBjYWNoZURpcjogcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBvcHRpb25zLmNhY2hlRm9sZGVyID8/ICcub2JzaWRpYW4tY2FjaGUnIH0pLFxuICAgIGNhcGFiaWxpdGllczogKG9wdGlvbnMuYXBwVmVyc2lvbnMgPz8gWydsYXRlc3QnXSkubWFwKChhcHBWZXJzaW9uKSA9PiAoe1xuICAgICAgJ2Jyb3dzZXJOYW1lJzogJ29ic2lkaWFuJyxcbiAgICAgICdicm93c2VyVmVyc2lvbic6IGFwcFZlcnNpb24sXG4gICAgICAnd2RpbzpvYnNpZGlhbk9wdGlvbnMnOiB7IC4uLmNhcGFiaWxpdHlPcHRpb25zLCBwbHVnaW5zOiBbLi4uY2FwYWJpbGl0eU9wdGlvbnMucGx1Z2luc10gfVxuICAgIH0pKSxcbiAgICBmcmFtZXdvcms6ICdtb2NoYScsXG4gICAgbG9nTGV2ZWw6ICd3YXJuJyxcbiAgICAuLi4ob3B0aW9ucy5tYXhJbnN0YW5jZXMgIT09IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlczogb3B0aW9ucy5tYXhJbnN0YW5jZXMgfSksXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gV2ViZHJpdmVySU8ncyBvd24gb3B0aW9uIG5hbWUuXG4gICAgbW9jaGFPcHRzOiB7XG4gICAgICB0aW1lb3V0OiBvcHRpb25zLnRlc3RUaW1lb3V0SW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9XRElPX09CU0lESUFOX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgICB1aTogJ2JkZCdcbiAgICB9LFxuICAgIHJlcG9ydGVyczogWydvYnNpZGlhbiddLFxuICAgIHJ1bm5lcjogJ2xvY2FsJyxcbiAgICBzZXJ2aWNlczogWydvYnNpZGlhbiddLFxuICAgIHNwZWNzOiBbLi4ub3B0aW9ucy5zcGVjcyA/PyBbREVGQVVMVF9FTkRfVE9fRU5EX1NQRUNTXV1cbiAgfTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBlbmQtdG8tZW5kIHRlc3RzIHdpdGggYHdkaW8tb2JzaWRpYW4tc2VydmljZWA6IHRoZSBwcm9kdWN0aW9uIGJ1aWxkLCB0aGVuIGB3ZGlvIHJ1biA8Y29uZmlnPmAuIEl0IGlzIHRoZVxuICogYm9keSBvZiBhIHBsdWdpbidzIGB0ZXN0OmUyZWAgc2NyaXB0LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBUZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuT3B0aW9uc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHRlc3RzIHBhc3MuXG4gKiBAdGhyb3dzIFdoZW4gYSBwYWNrYWdlIGlzIG1pc3NpbmcsIG5vIGNvbmZpZyBmaWxlIGlzIGZvdW5kLCB0aGUgYnVpbGQgZmFpbHMgb3IgYSB0ZXN0IGZhaWxzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdEVuZFRvRW5kV2l0aFdkaW9PYnNpZGlhbihvcHRpb25zOiBUZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGFzc2VydFByb2plY3RQYWNrYWdlc0luc3RhbGxlZCh7IHBhY2thZ2VOYW1lczogV0RJT19PQlNJRElBTl9QQUNLQUdFUywgcmVxdWVzdGVyOiAndGVzdEVuZFRvRW5kV2l0aFdkaW9PYnNpZGlhbigpJyB9KTtcbiAgY29uc3QgY29uZmlnUGF0aCA9IG9wdGlvbnMuY29uZmlnUGF0aCA/PyBmaW5kV2Rpb0NvbmZpZ0ZpbGUoKTtcbiAgaWYgKG9wdGlvbnMuc2hvdWxkQnVpbGQgPz8gdHJ1ZSkge1xuICAgIGF3YWl0IG5wbVJ1bignYnVpbGQnKTtcbiAgfVxuICBhd2FpdCBleGVjRnJvbVJvb3QoWyd3ZGlvJywgJ3J1bicsIGNvbmZpZ1BhdGhdLCB7IGlzSW50ZXJhY3RpdmU6IHRydWUgfSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRXZGlvQ29uZmlnRmlsZSgpOiBzdHJpbmcge1xuICBjb25zdCBjb25maWdGaWxlTmFtZSA9IFdESU9fQ09ORklHX0ZJTEVfTkFNRVMuZmluZCgoZmlsZU5hbWUpID0+IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBmaWxlTmFtZSB9KSkpO1xuICBpZiAoY29uZmlnRmlsZU5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGB0ZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuKCkgZm91bmQgbm8gV2ViZHJpdmVySU8gY29uZmlnICgke1dESU9fQ09ORklHX0ZJTEVfTkFNRVMuam9pbignLCAnKX0pIGluIHRoZSBwcm9qZWN0IHJvb3QuIGBcbiAgICAgICAgKyAnQ3JlYXRlIHdkaW8uY29uZi5tdHMgZXhwb3J0aW5nIGBjb25maWcgPSBkZWZpbmVXZGlvT2JzaWRpYW5Db25maWcoKWAsIG9yIHBhc3MgYGNvbmZpZ1BhdGhgLidcbiAgICApO1xuICB9XG4gIHJldHVybiBjb25maWdGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVZhdWx0KHZhdWx0OiBEZWZpbmVXZGlvT2JzaWRpYW5Db25maWdPcHRpb25zWyd2YXVsdCddKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhdWx0ID09PSBmYWxzZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiB2YXVsdCB9KTtcbiAgfVxuICBjb25zdCBkZW1vVmF1bHRQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQgfSk7XG4gIHJldHVybiBleGlzdHNTeW5jKGRlbW9WYXVsdFBhdGgpID8gZGVtb1ZhdWx0UGF0aCA6IHVuZGVmaW5lZDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvd2Rpby1vYnNpZGlhbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogRW5kLXRvLWVuZCB0ZXN0cyB3aXRoIGB3ZGlvLW9ic2lkaWFuLXNlcnZpY2VgOiBXZWJkcml2ZXJJTyBkcml2ZXMgYSBzYW5kYm94ZWQgY29weSBvZiBPYnNpZGlhbiwgZG93bmxvYWRlZCBwZXJcbiAqIHZlcnNpb24gaW50byBhIGNhY2hlLCB3aXRoIHRoZSBwbHVnaW4gaW5zdGFsbGVkIGludG8gYSBjb3B5IG9mIHRoZSB0ZXN0IHZhdWx0LlxuICpcbiAqIHtAbGluayBkZWZpbmVXZGlvT2JzaWRpYW5Db25maWd9IGRlcml2ZXMgdGhlIGB3ZGlvLmNvbmYubXRzYCBmcm9tIHRoZSBwcm9qZWN0J3MgbGF5b3V0LCBhbmRcbiAqIHtAbGluayB0ZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFufSBpcyB0aGUgYHRlc3Q6ZTJlYCBzY3JpcHQ6IGEgcHJvZHVjdGlvbiBidWlsZCwgdGhlbiBgd2RpbyBydW5gLlxuICpcbiAqIFRoZSBjb25maWcgaXMgdHlwZWQgc3RydWN0dXJhbGx5IHJhdGhlciB0aGFuIHRocm91Z2ggYEB3ZGlvL3R5cGVzYCwgc28gdGhpcyBtb2R1bGUgY29zdHMgYSBwcm9qZWN0IHRoYXQgZG9lcyBub3RcbiAqIHVzZSBXZWJkcml2ZXJJTyBub3RoaW5nLCBhbmQgdGhlIHJldHVybmVkIG9iamVjdCBpcyBhc3NpZ25hYmxlIHRvIGBXZWJkcml2ZXJJTy5Db25maWdgIGluIG9uZSB0aGF0IGRvZXMuXG4gKi9cblxuaW1wb3J0IHsgbnBtUnVuIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvbnBtLXJ1bic7XG5pbXBvcnQge1xuICBleGVjRnJvbVJvb3QsXG4gIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3Jvb3QnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuXG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGFzc2VydFByb2plY3RQYWNrYWdlc0luc3RhbGxlZCxcbiAgREVGQVVMVF9FTkRfVE9fRU5EX1NQRUNTXG59IGZyb20gJy4vZTJlLXJ1bm5lci1zdXBwb3J0LnRzJztcblxuLyoqXG4gKiBUaGUgcGVyLXRlc3QgdGltZW91dCB7QGxpbmsgZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnfSBnaXZlcyBtb2NoYSBieSBkZWZhdWx0LCBpbiBtaWxsaXNlY29uZHMuIE9ic2lkaWFuIGlzXG4gKiBzdGFydGVkIG9uY2UgcGVyIHNwZWMgZmlsZSwgd2hpY2ggYSBzaW5nbGUgdGVzdCdzIGJ1ZGdldCBoYXMgdG8gYWJzb3JiLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9XRElPX09CU0lESUFOX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSA2MF8wMDA7XG5cbi8qKlxuICogVGhlIGNvbmZpZyBmaWxlcyB7QGxpbmsgdGVzdEVuZFRvRW5kV2l0aFdkaW9PYnNpZGlhbn0gbG9va3MgZm9yLCBpbiBvcmRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IFdESU9fQ09ORklHX0ZJTEVfTkFNRVM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWyd3ZGlvLmNvbmYubXRzJywgJ3dkaW8uY29uZi50cyddO1xuXG4vKipcbiAqIFRoZSBwYWNrYWdlcyBhIGB3ZGlvLW9ic2lkaWFuLXNlcnZpY2VgIHNldHVwIG5lZWRzIGluIHRoZSBwcm9qZWN0LlxuICovXG5jb25zdCBXRElPX09CU0lESUFOX1BBQ0tBR0VTOiByZWFkb25seSBzdHJpbmdbXSA9IFsnQHdkaW8vY2xpJywgJ0B3ZGlvL2xvY2FsLXJ1bm5lcicsICdAd2Rpby9tb2NoYS1mcmFtZXdvcmsnLCAnd2Rpby1vYnNpZGlhbi1yZXBvcnRlcicsICd3ZGlvLW9ic2lkaWFuLXNlcnZpY2UnXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbmVXZGlvT2JzaWRpYW5Db25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgdmVyc2lvbnMgdG8gdGVzdCwgb25lIGNhcGFiaWxpdHkgZWFjaDogYSB2ZXJzaW9uIHN1Y2ggYXMgYDEuOC4xMGAsIGBsYXRlc3RgLCBgbGF0ZXN0LWJldGFgLCBvclxuICAgKiBgZWFybGllc3RgICh0aGUgYG1pbkFwcFZlcnNpb25gIG9mIGBtYW5pZmVzdC5qc29uYCkuIERlZmF1bHRzIHRvIGBbJ2xhdGVzdCddYDsgYFsnZWFybGllc3QnLCAnbGF0ZXN0J11gIHRlc3RzXG4gICAqIGJvdGggZW5kcyBvZiB0aGUgc3VwcG9ydGVkIHJhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwVmVyc2lvbnM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGZvbGRlciBPYnNpZGlhbiB2ZXJzaW9ucyBhcmUgZG93bmxvYWRlZCBpbnRvLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LiBEZWZhdWx0cyB0byBgLm9ic2lkaWFuLWNhY2hlYCxcbiAgICogd2hpY2ggYmVsb25ncyBpbiBgLmdpdGlnbm9yZWAuXG4gICAqL1xuICByZWFkb25seSBjYWNoZUZvbGRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGluc3RhbGxlciAoRWxlY3Ryb24pIHZlcnNpb24sIGBlYXJsaWVzdGAgb3IgYGxhdGVzdGAgY29tcGF0aWJsZSB3aXRoIGVhY2ggYXBwIHZlcnNpb24sIG9yIGFuIGV4YWN0XG4gICAqIG9uZS4gRGVmYXVsdHMgdG8gdGhlIHNlcnZpY2UncyBvd24gY2hvaWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbGVyVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSG93IG1hbnkgT2JzaWRpYW4gaW5zdGFuY2VzIHJ1biBpbiBwYXJhbGxlbC4gRGVmYXVsdHMgdG8gV2ViZHJpdmVySU8ncy5cbiAgICovXG4gIHJlYWRvbmx5IG1heEluc3RhbmNlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGZvbGRlciBob2xkaW5nIHRoZSBidWlsdCBwbHVnaW4gKGBtYWluLmpzYCwgYG1hbmlmZXN0Lmpzb25gLCBgc3R5bGVzLmNzc2ApLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LlxuICAgKiBEZWZhdWx0cyB0byBgZGlzdC9idWlsZGAsIHdoZXJlIHRoZSBwcm9kdWN0aW9uIGJ1aWxkIHdyaXRlcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbkZvbGRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNwZWMgZmlsZXMsIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3QuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VORF9UT19FTkRfU1BFQ1N9LlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHBlci10ZXN0IHRpbWVvdXQsIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfV0RJT19PQlNJRElBTl9URVNUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTfS5cbiAgICovXG4gIHJlYWRvbmx5IHRlc3RUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBldmVyeSB0ZXN0IHN0YXJ0cyBmcm9tLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LiBUaGUgc2VydmljZSBvcGVucyBhIENPUFkgb2YgaXQsIHNvIHRoZSB0ZXN0c1xuICAgKiBuZXZlciBjaGFuZ2UgdGhlIGZvbGRlci4gRGVmYXVsdHMgdG8gdGhlIHBsdWdpbidzIGRlbW8gdmF1bHQgKGBkZW1vLXZhdWx0YCkgd2hlbiB0aGUgcHJvamVjdCBoYXMgb25lLCBhbmQgdG8gYW5cbiAgICogZW1wdHkgdmF1bHQgb3RoZXJ3aXNlOyBgZmFsc2VgIGZvcmNlcyB0aGUgZW1wdHkgdmF1bHQuXG4gICAqL1xuICByZWFkb25seSB2YXVsdD86IGZhbHNlIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayB0ZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgV2ViZHJpdmVySU8gY29uZmlnIGZpbGUsIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3QuIERlZmF1bHRzIHRvIHRoZSBmaXJzdCBvZlxuICAgKiB7QGxpbmsgV0RJT19DT05GSUdfRklMRV9OQU1FU30gdGhhdCBleGlzdHMuXG4gICAqL1xuICByZWFkb25seSBjb25maWdQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJ1biB0aGUgcHJvZHVjdGlvbiBidWlsZCBmaXJzdCwgc28gdGhlIHRlc3RzIGxvYWQgdGhlIGN1cnJlbnQgYGRpc3QvYnVpbGRgLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRCdWlsZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBgd2Rpby1vYnNpZGlhbi1zZXJ2aWNlYCBjYXBhYmlsaXR5OiBvbmUgT2JzaWRpYW4gdmVyc2lvbiB0byBydW4gdGhlIHNwZWNzIGFnYWluc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Rpb09ic2lkaWFuQ2FwYWJpbGl0eSB7XG4gIC8qKlxuICAgKiBBbHdheXMgYG9ic2lkaWFuYCwgd2hpY2ggaXMgd2hhdCByb3V0ZXMgdGhlIGNhcGFiaWxpdHkgdG8gdGhlIHNlcnZpY2UuXG4gICAqL1xuICAnYnJvd3Nlck5hbWUnOiAnb2JzaWRpYW4nO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIHZlcnNpb24uXG4gICAqL1xuICAnYnJvd3NlclZlcnNpb24nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlJ3Mgb3duIG9wdGlvbnMgZm9yIHRoaXMgY2FwYWJpbGl0eS5cbiAgICovXG4gICd3ZGlvOm9ic2lkaWFuT3B0aW9ucyc6IFdkaW9PYnNpZGlhbkNhcGFiaWxpdHlPcHRpb25zO1xufVxuXG4vKipcbiAqIFRoZSBgd2RpbzpvYnNpZGlhbk9wdGlvbnNgIG9mIGEge0BsaW5rIFdkaW9PYnNpZGlhbkNhcGFiaWxpdHl9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdkaW9PYnNpZGlhbkNhcGFiaWxpdHlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBpbnN0YWxsZXIgdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxlclZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZm9sZGVycyB0byBpbnN0YWxsIGludG8gdGhlIHZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCB0byBvcGVuIGEgY29weSBvZi5cbiAgICovXG4gIHJlYWRvbmx5IHZhdWx0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBXZWJkcml2ZXJJTyBjb25maWd1cmF0aW9uIHtAbGluayBkZWZpbmVXZGlvT2JzaWRpYW5Db25maWd9IHJldHVybnMuIEV2ZXJ5IGZpZWxkIGlzIHBsYWluIGRhdGEsIHNvIGEgcHJvamVjdFxuICogY2hhbmdlcyBhbnkgb2YgdGhlbSBieSBzcHJlYWRpbmcgdGhlIHJlc3VsdDogYHsgLi4uZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnKCksIGxvZ0xldmVsOiAnaW5mbycgfWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Rpb09ic2lkaWFuQ29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXJlIE9ic2lkaWFuIHZlcnNpb25zIGFyZSBkb3dubG9hZGVkLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gV2ViZHJpdmVySU8ncyBvd24gb3B0aW9uIG5hbWUuXG4gIGNhY2hlRGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9uZSBjYXBhYmlsaXR5IHBlciBPYnNpZGlhbiB2ZXJzaW9uLlxuICAgKi9cbiAgY2FwYWJpbGl0aWVzOiBXZGlvT2JzaWRpYW5DYXBhYmlsaXR5W107XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXN0IGZyYW1ld29yay5cbiAgICovXG4gIGZyYW1ld29yazogJ21vY2hhJztcblxuICAvKipcbiAgICogV2ViZHJpdmVySU8ncyBsb2cgbGV2ZWwuXG4gICAqL1xuICBsb2dMZXZlbDogJ2RlYnVnJyB8ICdlcnJvcicgfCAnaW5mbycgfCAnc2lsZW50JyB8ICd0cmFjZScgfCAnd2Fybic7XG5cbiAgLyoqXG4gICAqIEhvdyBtYW55IE9ic2lkaWFuIGluc3RhbmNlcyBydW4gaW4gcGFyYWxsZWwuXG4gICAqL1xuICBtYXhJbnN0YW5jZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1vY2hhJ3Mgb3B0aW9ucy5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIFdlYmRyaXZlcklPJ3Mgb3duIG9wdGlvbiBuYW1lLlxuICBtb2NoYU9wdHM6IFdkaW9PYnNpZGlhbk1vY2hhT3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIHJlcG9ydGVycy4gYG9ic2lkaWFuYCBpcyB0aGUgc3BlYyByZXBvcnRlciwgbmFtaW5nIHRoZSBPYnNpZGlhbiB2ZXJzaW9uIGluc3RlYWQgb2YgQ2hyb21pdW0ncy5cbiAgICovXG4gIHJlcG9ydGVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXJlIHRoZSBzcGVjcyBydW4uXG4gICAqL1xuICBydW5uZXI6ICdsb2NhbCc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlcy4gYG9ic2lkaWFuYCBpcyBgd2Rpby1vYnNpZGlhbi1zZXJ2aWNlYC5cbiAgICovXG4gIHNlcnZpY2VzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNwZWMgZmlsZXMuXG4gICAqL1xuICBzcGVjczogc3RyaW5nW107XG59XG5cbi8qKlxuICogVGhlIGBtb2NoYU9wdHNgIG9mIGEge0BsaW5rIFdkaW9PYnNpZGlhbkNvbmZpZ30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Rpb09ic2lkaWFuTW9jaGFPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwZXItdGVzdCB0aW1lb3V0LCBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcmZhY2UgdGhlIHNwZWNzIGFyZSB3cml0dGVuIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgdWk6ICdiZGQnO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgV2ViZHJpdmVySU8gY29uZmlndXJhdGlvbiBmb3IgZW5kLXRvLWVuZCB0ZXN0cyB3aXRoIGB3ZGlvLW9ic2lkaWFuLXNlcnZpY2VgLCBkZXJpdmVkIGZyb20gdGhlIHBsdWdpbidzXG4gKiBsYXlvdXQ6IHRoZSBwcm9kdWN0aW9uIGJ1aWxkIGluIGBkaXN0L2J1aWxkYCBpcyB0aGUgcGx1Z2luIHVuZGVyIHRlc3QsIHRoZSBkZW1vIHZhdWx0ICh3aGVuIHRoZXJlIGlzIG9uZSkgaXMgdGhlXG4gKiB2YXVsdCwgYW5kIHRoZSBzcGVjcyBsaXZlIGluIGBlMmUvYC5cbiAqXG4gKiBgd2Rpby5jb25mLm10c2A6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGRlZmluZVdkaW9PYnNpZGlhbkNvbmZpZyB9IGZyb20gJ0BtbmFvdW1vdi9vYnNpZGlhbi1kZXYtdG9vbGtpdC90ZXN0LXJ1bm5lcnMvd2Rpby1vYnNpZGlhbic7XG4gKlxuICogZXhwb3J0IGNvbnN0IGNvbmZpZzogV2ViZHJpdmVySU8uQ29uZmlnID0gZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnKHsgYXBwVmVyc2lvbnM6IFsnZWFybGllc3QnLCAnbGF0ZXN0J10gfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgRGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnT3B0aW9uc30uXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbiwgdG8gZXhwb3J0IGFzIGBjb25maWdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnKG9wdGlvbnM6IERlZmluZVdkaW9PYnNpZGlhbkNvbmZpZ09wdGlvbnMgPSB7fSk6IFdkaW9PYnNpZGlhbkNvbmZpZyB7XG4gIGNvbnN0IHBsdWdpbkZvbGRlciA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogb3B0aW9ucy5wbHVnaW5Gb2xkZXIgPz8gT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkIH0pO1xuICBjb25zdCB2YXVsdCA9IHJlc29sdmVWYXVsdChvcHRpb25zLnZhdWx0KTtcbiAgY29uc3QgY2FwYWJpbGl0eU9wdGlvbnM6IFdkaW9PYnNpZGlhbkNhcGFiaWxpdHlPcHRpb25zID0ge1xuICAgIHBsdWdpbnM6IFtwbHVnaW5Gb2xkZXJdLFxuICAgIC4uLihvcHRpb25zLmluc3RhbGxlclZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiB7IGluc3RhbGxlclZlcnNpb246IG9wdGlvbnMuaW5zdGFsbGVyVmVyc2lvbiB9KSxcbiAgICAuLi4odmF1bHQgIT09IHVuZGVmaW5lZCAmJiB7IHZhdWx0IH0pXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBXZWJkcml2ZXJJTydzIG93biBvcHRpb24gbmFtZS5cbiAgICBjYWNoZURpcjogcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBvcHRpb25zLmNhY2hlRm9sZGVyID8/ICcub2JzaWRpYW4tY2FjaGUnIH0pLFxuICAgIGNhcGFiaWxpdGllczogKG9wdGlvbnMuYXBwVmVyc2lvbnMgPz8gWydsYXRlc3QnXSkubWFwKChhcHBWZXJzaW9uKSA9PiAoe1xuICAgICAgJ2Jyb3dzZXJOYW1lJzogJ29ic2lkaWFuJyxcbiAgICAgICdicm93c2VyVmVyc2lvbic6IGFwcFZlcnNpb24sXG4gICAgICAnd2RpbzpvYnNpZGlhbk9wdGlvbnMnOiB7IC4uLmNhcGFiaWxpdHlPcHRpb25zLCBwbHVnaW5zOiBbLi4uY2FwYWJpbGl0eU9wdGlvbnMucGx1Z2luc10gfVxuICAgIH0pKSxcbiAgICBmcmFtZXdvcms6ICdtb2NoYScsXG4gICAgbG9nTGV2ZWw6ICd3YXJuJyxcbiAgICAuLi4ob3B0aW9ucy5tYXhJbnN0YW5jZXMgIT09IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlczogb3B0aW9ucy5tYXhJbnN0YW5jZXMgfSksXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gV2ViZHJpdmVySU8ncyBvd24gb3B0aW9uIG5hbWUuXG4gICAgbW9jaGFPcHRzOiB7XG4gICAgICB0aW1lb3V0OiBvcHRpb25zLnRlc3RUaW1lb3V0SW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9XRElPX09CU0lESUFOX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgICB1aTogJ2JkZCdcbiAgICB9LFxuICAgIHJlcG9ydGVyczogWydvYnNpZGlhbiddLFxuICAgIHJ1bm5lcjogJ2xvY2FsJyxcbiAgICBzZXJ2aWNlczogWydvYnNpZGlhbiddLFxuICAgIHNwZWNzOiBbLi4ub3B0aW9ucy5zcGVjcyA/PyBbREVGQVVMVF9FTkRfVE9fRU5EX1NQRUNTXV1cbiAgfTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBlbmQtdG8tZW5kIHRlc3RzIHdpdGggYHdkaW8tb2JzaWRpYW4tc2VydmljZWA6IHRoZSBwcm9kdWN0aW9uIGJ1aWxkLCB0aGVuIGB3ZGlvIHJ1biA8Y29uZmlnPmAuIEl0IGlzIHRoZVxuICogYm9keSBvZiBhIHBsdWdpbidzIGB0ZXN0OmUyZWAgc2NyaXB0LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBUZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuT3B0aW9uc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHRlc3RzIHBhc3MuXG4gKiBAdGhyb3dzIFdoZW4gYSBwYWNrYWdlIGlzIG1pc3NpbmcsIG5vIGNvbmZpZyBmaWxlIGlzIGZvdW5kLCB0aGUgYnVpbGQgZmFpbHMgb3IgYSB0ZXN0IGZhaWxzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdEVuZFRvRW5kV2l0aFdkaW9PYnNpZGlhbihvcHRpb25zOiBUZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGFzc2VydFByb2plY3RQYWNrYWdlc0luc3RhbGxlZCh7IHBhY2thZ2VOYW1lczogV0RJT19PQlNJRElBTl9QQUNLQUdFUywgcmVxdWVzdGVyOiAndGVzdEVuZFRvRW5kV2l0aFdkaW9PYnNpZGlhbigpJyB9KTtcbiAgY29uc3QgY29uZmlnUGF0aCA9IG9wdGlvbnMuY29uZmlnUGF0aCA/PyBmaW5kV2Rpb0NvbmZpZ0ZpbGUoKTtcbiAgaWYgKG9wdGlvbnMuc2hvdWxkQnVpbGQgPz8gdHJ1ZSkge1xuICAgIGF3YWl0IG5wbVJ1bignYnVpbGQnKTtcbiAgfVxuICBhd2FpdCBleGVjRnJvbVJvb3QoWyd3ZGlvJywgJ3J1bicsIGNvbmZpZ1BhdGhdLCB7IGlzSW50ZXJhY3RpdmU6IHRydWUgfSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRXZGlvQ29uZmlnRmlsZSgpOiBzdHJpbmcge1xuICBjb25zdCBjb25maWdGaWxlTmFtZSA9IFdESU9fQ09ORklHX0ZJTEVfTkFNRVMuZmluZCgoZmlsZU5hbWUpID0+IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBmaWxlTmFtZSB9KSkpO1xuICBpZiAoY29uZmlnRmlsZU5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGB0ZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuKCkgZm91bmQgbm8gV2ViZHJpdmVySU8gY29uZmlnICgke1dESU9fQ09ORklHX0ZJTEVfTkFNRVMuam9pbignLCAnKX0pIGluIHRoZSBwcm9qZWN0IHJvb3QuIGBcbiAgICAgICAgKyAnQ3JlYXRlIHdkaW8uY29uZi5tdHMgZXhwb3J0aW5nIGBjb25maWcgPSBkZWZpbmVXZGlvT2JzaWRpYW5Db25maWcoKWAsIG9yIHBhc3MgYGNvbmZpZ1BhdGhgLidcbiAgICApO1xuICB9XG4gIHJldHVybiBjb25maWdGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVZhdWx0KHZhdWx0OiBEZWZpbmVXZGlvT2JzaWRpYW5Db25maWdPcHRpb25zWyd2YXVsdCddKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhdWx0ID09PSBmYWxzZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiB2YXVsdCB9KTtcbiAgfVxuICBjb25zdCBkZW1vVmF1bHRQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQgfSk7XG4gIHJldHVybiBleGlzdHNTeW5jKGRlbW9WYXVsdFBhdGgpID8gZGVtb1ZhdWx0UGF0aCA6IHVuZGVmaW5lZDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFB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
|