testcafe 1.20.2-alpha.1 → 2.0.0-rc.3
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/lib/api/request-hooks/assert-type.js +2 -2
- package/lib/api/request-hooks/hook.js +2 -2
- package/lib/api/request-hooks/request-logger.js +2 -2
- package/lib/api/skip-js-errors/index.js +62 -0
- package/lib/api/structure/base-unit.js +2 -2
- package/lib/api/structure/fixture.js +13 -13
- package/lib/api/structure/test.js +18 -17
- package/lib/api/structure/testing-unit.js +26 -16
- package/lib/api/test-controller/assertion.js +5 -5
- package/lib/api/test-controller/execution-context.js +2 -2
- package/lib/api/test-controller/index.js +33 -30
- package/lib/api/test-controller/proxy.js +2 -2
- package/lib/api/test-page-url.js +4 -4
- package/lib/api/test-run-tracker.js +2 -2
- package/lib/api/wrap-test-function.js +3 -3
- package/lib/assertions/executor.js +4 -4
- package/lib/assertions/get-fn.js +3 -3
- package/lib/browser/connection/gateway.js +18 -18
- package/lib/browser/connection/get-hints.js +8 -8
- package/lib/browser/connection/index.js +11 -11
- package/lib/browser/connection/remotes-queue.js +4 -4
- package/lib/browser/provider/built-in/dedicated/base.js +6 -6
- package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +10 -10
- package/lib/browser/provider/built-in/dedicated/chrome/config.js +17 -17
- package/lib/browser/provider/built-in/dedicated/chrome/create-temp-profile.js +4 -4
- package/lib/browser/provider/built-in/dedicated/chrome/index.js +6 -6
- package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +6 -6
- package/lib/browser/provider/built-in/dedicated/chrome/runtime-info.js +4 -4
- package/lib/browser/provider/built-in/dedicated/edge/runtime-info.js +2 -2
- package/lib/browser/provider/built-in/dedicated/firefox/config.js +8 -8
- package/lib/browser/provider/built-in/dedicated/firefox/create-temp-profile.js +3 -3
- package/lib/browser/provider/built-in/dedicated/firefox/index.js +5 -5
- package/lib/browser/provider/built-in/dedicated/firefox/local-firefox.js +2 -2
- package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +7 -7
- package/lib/browser/provider/built-in/dedicated/firefox/runtime-info.js +3 -3
- package/lib/browser/provider/built-in/path.js +2 -2
- package/lib/browser/provider/built-in/remote.js +3 -3
- package/lib/browser/provider/index.js +5 -5
- package/lib/browser/provider/plugin-host.js +5 -6
- package/lib/browser/provider/pool.js +4 -4
- package/lib/browser/provider/utils/argument-parsing.js +3 -3
- package/lib/browser/provider/utils/browser-starter.js +2 -2
- package/lib/cli/argument-parser/index.js +52 -41
- package/lib/cli/argument-parser/parse-utils.js +2 -2
- package/lib/cli/authentication-helper.js +3 -3
- package/lib/cli/cli.js +8 -8
- package/lib/cli/correct-browsers-and-sources.js +2 -2
- package/lib/cli/index.js +2 -2
- package/lib/cli/log.js +3 -3
- package/lib/cli/remotes-wizard.js +3 -3
- package/lib/client/automation/index.js +120 -34
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/browser/idle-page/index.js +321 -317
- package/lib/client/browser/service-worker.js +244 -290
- package/lib/client/core/deps/hammerhead.js +12 -4
- package/lib/client/core/index.js +145 -55
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/core/utils/dom.js +33 -28
- package/lib/client/core/utils/position.js +18 -14
- package/lib/client/core/utils/style.js +8 -4
- package/lib/client/driver/command-executors/client-functions/selector-executor/filter.js +5 -5
- package/lib/client/driver/command-executors/client-functions/selector-executor/utils.js +3 -3
- package/lib/client/driver/deps/hammerhead.js +12 -4
- package/lib/client/driver/deps/testcafe-core.js +12 -4
- package/lib/client/driver/deps/testcafe-ui.js +12 -4
- package/lib/client/driver/index.js +654 -630
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/driver/status.js +2 -2
- package/lib/client/ui/index.js +10 -8
- package/lib/client/ui/index.min.js +1 -1
- package/lib/client-functions/builder-symbol.js +1 -2
- package/lib/client-functions/client-function-builder.js +12 -12
- package/lib/client-functions/replicator.js +2 -2
- package/lib/client-functions/selector-api-execution-mode.js +2 -2
- package/lib/client-functions/selectors/add-api.js +48 -48
- package/lib/client-functions/selectors/selector-builder.js +17 -17
- package/lib/compiler/compile-client-function.js +6 -6
- package/lib/compiler/index.js +9 -9
- package/lib/compiler/test-file/api-based.js +8 -8
- package/lib/compiler/test-file/base.js +6 -6
- package/lib/compiler/test-file/exportble-lib-path.js +2 -2
- package/lib/compiler/test-file/formats/coffeescript/compiler.js +2 -2
- package/lib/compiler/test-file/formats/coffeescript/get-test-list.js +2 -2
- package/lib/compiler/test-file/formats/es-next/compiler.js +4 -4
- package/lib/compiler/test-file/formats/es-next/get-test-list.js +4 -4
- package/lib/compiler/test-file/formats/raw.js +2 -2
- package/lib/compiler/test-file/formats/typescript/compiler.js +11 -11
- package/lib/compiler/test-file/formats/typescript/get-test-list.js +3 -3
- package/lib/compiler/test-file/test-file-parser-base.js +3 -3
- package/lib/configuration/configuration-base.js +15 -15
- package/lib/configuration/interfaces.js +1 -1
- package/lib/configuration/skip-js-errors-option-names.js +11 -0
- package/lib/configuration/testcafe-configuration.js +21 -16
- package/lib/configuration/types.js +1 -1
- package/lib/configuration/typescript-configuration.js +4 -4
- package/lib/custom-client-scripts/assert-type.js +2 -2
- package/lib/custom-client-scripts/client-script.js +6 -6
- package/lib/custom-client-scripts/get-code.js +2 -2
- package/lib/custom-client-scripts/routing.js +3 -3
- package/lib/custom-client-scripts/utils.js +3 -3
- package/lib/dashboard/connector.js +4 -4
- package/lib/dashboard/get-default-project-link.js +2 -2
- package/lib/dashboard/index.js +26 -26
- package/lib/errors/create-stack-filter.js +2 -2
- package/lib/errors/error-list.js +2 -2
- package/lib/errors/get-callsite.js +2 -2
- package/lib/errors/is-internal-stack-frame.js +5 -5
- package/lib/errors/process-test-fn-error.js +2 -2
- package/lib/errors/runtime/index.js +10 -10
- package/lib/errors/runtime/templates.js +5 -2
- package/lib/errors/runtime/type-assertions.js +6 -6
- package/lib/errors/stack-cleaning-hook.js +2 -2
- package/lib/errors/test-run/formattable-adapter.js +7 -7
- package/lib/errors/test-run/index.js +25 -5
- package/lib/errors/test-run/render-error-template/index.js +6 -6
- package/lib/errors/test-run/render-error-template/utils.js +2 -2
- package/lib/errors/test-run/templates.js +40 -31
- package/lib/errors/test-run/utils.js +7 -7
- package/lib/errors/types.js +5 -1
- package/lib/index.js +1 -1
- package/lib/live/file-watcher/index.js +2 -2
- package/lib/live/keyboard-observer.js +3 -3
- package/lib/live/test-run-controller.js +3 -3
- package/lib/live/test-run.js +3 -2
- package/lib/live/test-runner.js +2 -2
- package/lib/load-assets.js +2 -2
- package/lib/notifications/add-rendered-warning.js +4 -4
- package/lib/notifications/debug-logger.js +6 -6
- package/lib/notifications/deprecated.js +2 -2
- package/lib/notifications/information-message.js +4 -3
- package/lib/proxyless/resource-injector.js +4 -4
- package/lib/reporter/command/command-formatter.js +4 -4
- package/lib/reporter/index.js +10 -10
- package/lib/reporter/plugin-host.js +7 -7
- package/lib/role/index.js +8 -8
- package/lib/role/role.js +2 -2
- package/lib/runner/bootstrapper.js +20 -20
- package/lib/runner/browser-job.js +3 -3
- package/lib/runner/browser-set.js +12 -12
- package/lib/runner/fixture-hook-controller.js +5 -5
- package/lib/runner/index.js +43 -33
- package/lib/runner/task/index.js +10 -6
- package/lib/runner/test-run-hook-controller.js +5 -5
- package/lib/runner/tested-app.js +7 -7
- package/lib/screenshots/capturer.js +17 -17
- package/lib/screenshots/crop.js +8 -8
- package/lib/screenshots/index.js +6 -10
- package/lib/screenshots/utils.js +4 -4
- package/lib/services/compiler/host.js +8 -8
- package/lib/services/compiler/service.js +13 -13
- package/lib/services/compiler/test-run-proxy.js +8 -8
- package/lib/services/serialization/replicator/transforms/callsite-record-transform.js +2 -2
- package/lib/services/serialization/replicator/transforms/command-base-trasform/command-constructors.js +2 -1
- package/lib/services/serialization/replicator/transforms/command-base-trasform/index.js +3 -3
- package/lib/services/serialization/replicator/transforms/raw-command-callsite-record-transform.js +2 -2
- package/lib/services/serialization/test-structure.js +4 -4
- package/lib/services/utils/ipc/interfaces.js +1 -3
- package/lib/services/utils/ipc/io.js +3 -3
- package/lib/services/utils/ipc/message.js +2 -2
- package/lib/services/utils/ipc/proxy.js +4 -4
- package/lib/services/utils/ipc/transport.js +2 -2
- package/lib/shared/errors/index.js +9 -2
- package/lib/shared/errors/selector-error-ctor-callback.js +7 -3
- package/lib/test-run/bookmark.js +1 -1
- package/lib/test-run/browser-manipulation-queue.js +3 -3
- package/lib/test-run/commands/actions.js +66 -46
- package/lib/test-run/commands/assertion.js +3 -3
- package/lib/test-run/commands/base.js +2 -2
- package/lib/test-run/commands/browser-manipulation.js +8 -8
- package/lib/test-run/commands/observation.js +4 -4
- package/lib/test-run/commands/options.js +27 -12
- package/lib/test-run/commands/type.js +2 -1
- package/lib/test-run/commands/utils.js +3 -2
- package/lib/test-run/commands/validations/argument.js +19 -10
- package/lib/test-run/commands/validations/factories.js +10 -2
- package/lib/test-run/commands/validations/initializers.js +4 -4
- package/lib/test-run/debug-log.js +4 -4
- package/lib/test-run/execute-js-expression/index.js +4 -4
- package/lib/test-run/index.js +48 -41
- package/lib/test-run/request/create-request-options.js +9 -9
- package/lib/test-run/request/process-response-data.js +2 -2
- package/lib/test-run/request/send.js +5 -5
- package/lib/testcafe.js +8 -4
- package/lib/utils/check-file-path.js +2 -2
- package/lib/utils/check-url.js +2 -2
- package/lib/utils/correct-file-path.js +4 -4
- package/lib/utils/delegated-api.js +1 -1
- package/lib/utils/detect-ffmpeg.js +3 -3
- package/lib/utils/diff/colors.js +2 -2
- package/lib/utils/diff/index.js +11 -7
- package/lib/utils/diff/util.js +5 -5
- package/lib/utils/diff.js +4 -4
- package/lib/utils/escape-user-agent.js +2 -2
- package/lib/utils/execute-fn-with-timeout.js +2 -2
- package/lib/utils/get-browser.js +2 -2
- package/lib/utils/get-filter-fn.js +4 -4
- package/lib/utils/get-options/base.js +2 -2
- package/lib/utils/get-options/compiler.js +2 -2
- package/lib/utils/get-options/dashboard.js +2 -2
- package/lib/utils/get-options/get-assertion-timeout.js +1 -1
- package/lib/utils/get-options/index.js +4 -2
- package/lib/utils/get-options/meta.js +2 -2
- package/lib/utils/get-options/quarantine.js +8 -6
- package/lib/utils/get-options/screenshot.js +2 -2
- package/lib/utils/get-options/skip-js-errors.js +35 -0
- package/lib/utils/get-options/ssl.js +6 -6
- package/lib/utils/get-options/video.js +2 -2
- package/lib/utils/is-password-input.js +1 -1
- package/lib/utils/log-entry.js +2 -2
- package/lib/utils/make-reg-exp.js +19 -6
- package/lib/utils/moment-loader.js +2 -2
- package/lib/utils/parse-file-list.js +7 -7
- package/lib/utils/path-pattern.js +4 -4
- package/lib/utils/prepare-reporters.js +2 -2
- package/lib/utils/prerender-callsite.js +6 -6
- package/lib/utils/process.js +7 -7
- package/lib/utils/promisified-functions.js +14 -14
- package/lib/utils/raw-command-callsite-record.js +2 -2
- package/lib/utils/resolve-path-relatively-cwd.js +2 -2
- package/lib/utils/string.js +3 -3
- package/lib/utils/temp-directory/cleanup-process/index.js +6 -6
- package/lib/utils/temp-directory/cleanup-process/worker.js +4 -4
- package/lib/utils/temp-directory/index.js +6 -6
- package/lib/utils/temp-directory/lockfile.js +2 -2
- package/lib/video-recorder/process.js +6 -6
- package/lib/video-recorder/recorder.js +9 -9
- package/lib/video-recorder/test-run-video-recorder.js +2 -2
- package/package.json +8 -7
- package/ts-defs/index.d.ts +46 -7
- package/ts-defs/selectors.d.ts +39 -0
- package/ts-defs/testcafe-scripts.d.ts +39 -0
|
@@ -23,7 +23,7 @@ const setup_sourcemap_support_1 = __importDefault(require("../../utils/setup-sou
|
|
|
23
23
|
const handle_errors_1 = require("../../utils/handle-errors");
|
|
24
24
|
const errors_1 = require("../../shared/errors");
|
|
25
25
|
const lodash_1 = require("lodash");
|
|
26
|
-
setup_sourcemap_support_1.default();
|
|
26
|
+
(0, setup_sourcemap_support_1.default)();
|
|
27
27
|
// This is hack for supporting the 'import { t } from "testcafe"' expression in tests.
|
|
28
28
|
// It caused by using the 'esm' module.
|
|
29
29
|
require('../../api/test-controller/proxy');
|
|
@@ -49,7 +49,7 @@ class CompilerService {
|
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
async _handleUnexpectedError(ErrorCtor, error) {
|
|
52
|
-
const message = handle_errors_1.formatError(ErrorCtor, error);
|
|
52
|
+
const message = (0, handle_errors_1.formatError)(ErrorCtor, error);
|
|
53
53
|
const type = ErrorCtor.name;
|
|
54
54
|
await this.addUnexpectedError({ type, message });
|
|
55
55
|
}
|
|
@@ -58,7 +58,7 @@ class CompilerService {
|
|
|
58
58
|
process.on('uncaughtException', async (e) => this._handleUnexpectedError(test_run_1.UncaughtExceptionError, e));
|
|
59
59
|
}
|
|
60
60
|
_getFixtureCtx(unit) {
|
|
61
|
-
const fixtureId = test_structure_1.isTest(unit) ? unit.fixture.id : unit.id;
|
|
61
|
+
const fixtureId = (0, test_structure_1.isTest)(unit) ? unit.fixture.id : unit.id;
|
|
62
62
|
return this.state.fixtureCtxs[fixtureId];
|
|
63
63
|
}
|
|
64
64
|
_getTestCtx({ testRunId }, unit) {
|
|
@@ -107,9 +107,9 @@ class CompilerService {
|
|
|
107
107
|
], this);
|
|
108
108
|
}
|
|
109
109
|
_getFunction(unit, functionName) {
|
|
110
|
-
if (test_structure_1.isTest(unit) && protocol_1.isTestFunctionProperty(functionName))
|
|
110
|
+
if ((0, test_structure_1.isTest)(unit) && (0, protocol_1.isTestFunctionProperty)(functionName))
|
|
111
111
|
return unit[functionName];
|
|
112
|
-
if (test_structure_1.isFixture(unit) && protocol_1.isFixtureFunctionProperty(functionName))
|
|
112
|
+
if ((0, test_structure_1.isFixture)(unit) && (0, protocol_1.isFixtureFunctionProperty)(functionName))
|
|
113
113
|
return unit[functionName];
|
|
114
114
|
throw new Error(`Cannot find '${functionName}' function for ${typeof unit}`);
|
|
115
115
|
}
|
|
@@ -176,7 +176,7 @@ class CompilerService {
|
|
|
176
176
|
const testIds = tests.map(test => test.id);
|
|
177
177
|
const fixtureIds = tests.map(test => { var _a; return (_a = test.fixture) === null || _a === void 0 ? void 0 : _a.id; });
|
|
178
178
|
const testFileIds = tests.map(test => test.testFile.id);
|
|
179
|
-
return lodash_1.uniq([...testIds, ...fixtureIds, ...testFileIds]);
|
|
179
|
+
return (0, lodash_1.uniq)([...testIds, ...fixtureIds, ...testFileIds]);
|
|
180
180
|
}
|
|
181
181
|
async setOptions({ value }) {
|
|
182
182
|
this.state.options = value;
|
|
@@ -190,11 +190,11 @@ class CompilerService {
|
|
|
190
190
|
async getTests({ sourceList, compilerOptions, runnableConfigurationId }, baseUrl) {
|
|
191
191
|
const compiler = new compiler_1.default(sourceList, compilerOptions, { isCompilerServiceMode: true, baseUrl });
|
|
192
192
|
const tests = await compiler.getTests();
|
|
193
|
-
const units = test_structure_1.flatten(tests);
|
|
193
|
+
const units = (0, test_structure_1.flatten)(tests);
|
|
194
194
|
const unitIds = this._getUnitIds(tests);
|
|
195
195
|
this._runnableConfigurationUnitsRelations[runnableConfigurationId] = unitIds;
|
|
196
196
|
Object.assign(this.state.units, units);
|
|
197
|
-
return test_structure_1.serialize(units);
|
|
197
|
+
return (0, test_structure_1.serialize)(units);
|
|
198
198
|
}
|
|
199
199
|
async runTestFn(args) {
|
|
200
200
|
const { id, functionName } = args;
|
|
@@ -309,19 +309,19 @@ class CompilerService {
|
|
|
309
309
|
}
|
|
310
310
|
async executeJsExpression({ expression, testRunId, options }) {
|
|
311
311
|
const testRunProxy = this._getTargetTestRun(testRunId);
|
|
312
|
-
return execute_js_expression_1.executeJsExpression(expression, testRunProxy, options);
|
|
312
|
+
return (0, execute_js_expression_1.executeJsExpression)(expression, testRunProxy, options);
|
|
313
313
|
}
|
|
314
314
|
async executeAsyncJsExpression({ expression, testRunId, callsite }) {
|
|
315
315
|
const testRunProxy = this._getTargetTestRun(testRunId);
|
|
316
|
-
return execute_js_expression_1.executeAsyncJsExpression(expression, testRunProxy, callsite, async (err) => {
|
|
316
|
+
return (0, execute_js_expression_1.executeAsyncJsExpression)(expression, testRunProxy, callsite, async (err) => {
|
|
317
317
|
if (err instanceof test_run_1.UncaughtTestCafeErrorInCustomScript === false)
|
|
318
318
|
return;
|
|
319
319
|
const targetError = err;
|
|
320
|
-
if (!utils_1.shouldRenderHtmlWithoutStack(targetError))
|
|
320
|
+
if (!(0, utils_1.shouldRenderHtmlWithoutStack)(targetError))
|
|
321
321
|
return;
|
|
322
322
|
testRunProxy.restoreOriginCallsiteForError(targetError);
|
|
323
323
|
// @ts-ignore
|
|
324
|
-
err.errCallsite = utils_1.renderHtmlWithoutStack(targetError);
|
|
324
|
+
err.errCallsite = (0, utils_1.renderHtmlWithoutStack)(targetError);
|
|
325
325
|
});
|
|
326
326
|
}
|
|
327
327
|
async executeAssertionFn({ testRunId, commandId }) {
|
|
@@ -358,4 +358,4 @@ class CompilerService {
|
|
|
358
358
|
}
|
|
359
359
|
exports.default = new CompilerService();
|
|
360
360
|
module.exports = exports.default;
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb21waWxlci9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLDhEQUFzQztBQUN0QyxzRUFBNEM7QUFDNUMsZ0ZBQXVEO0FBRXZELG9FQU95QztBQUV6Qyw2QkFJYztBQUVkLDhDQUE4QztBQUM5QyxzREFBMEQ7QUFFMUQseUNBTW9CO0FBZ0NwQixxRUFBNEM7QUFFNUMsa0dBQStFO0FBRS9FLDZEQU82QjtBQUs3Qiw4RUFBcUQ7QUFDckQsZ0ZBQXFHO0FBRXJHLG9EQUsrQjtBQUUvQiw2RUFBeUg7QUFDekgsa0dBQXdFO0FBQ3hFLDZEQUF3RDtBQUN4RCxnREFBbUU7QUFHbkUsbUNBQThCO0FBRTlCLGlDQUFxQixFQUFFLENBQUM7QUFFeEIsc0ZBQXNGO0FBQ3RGLHVDQUF1QztBQUN2QyxPQUFPLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQXNCM0MsTUFBTSxlQUFlO0lBS2pCO1FBQ0ksT0FBTyxDQUFDLEtBQUssR0FBRyx1QkFBWSxDQUFDLE9BQU8sQ0FBQztRQUVyQyxNQUFNLEtBQUssR0FBSSxZQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLHFCQUFnQixFQUFFLENBQUMsQ0FBQztRQUNqRSxNQUFNLE1BQU0sR0FBRyxZQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLHNCQUFpQixFQUFFLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZ0JBQVEsQ0FBQyxJQUFJLDRCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsb0JBQWUsQ0FBQyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLG9DQUFvQyxHQUFH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UyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUF1QjtRQUMvRSxJQUFJO1lBQ0EsT0FBTyxJQUFJO2lCQUNOLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztpQkFDNUIsV0FBVyxDQUFDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsT0FBTyxHQUFHLEVBQUU7WUFDUixNQUFNLElBQUkscUNBQTRCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0IsQ0FBRSxFQUFFLFNBQVMsRUFBa0I7UUFDOUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sS0FBSyxDQUFDLDBCQUEwQixDQUFFLEVBQUUsVUFBVSxFQUE4QjtRQUMvRSxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVU7WUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQixDQUFFLEVBQUUsdUJBQXVCLEVBQWlDO1FBQ3pGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRW5GLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTztZQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBDLE9BQU8sSUFBSSxDQUFDLG9DQUFvQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNKO0FBRUQsa0JBQWUsSUFBSSxlQUFlLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgQ29tcGlsZXIgZnJvbSAnLi4vLi4vY29tcGlsZXInO1xuaW1wb3J0IFRlc3RSdW5Qcm94eSBmcm9tICcuL3Rlc3QtcnVuLXByb3h5JztcbmltcG9ydCBUZXN0Q29udHJvbGxlciBmcm9tICcuLi8uLi9hcGkvdGVzdC1jb250cm9sbGVyJztcblxuaW1wb3J0IHtcbiAgICBmbGF0dGVuIGFzIGZsYXR0ZW5UZXN0U3RydWN0dXJlLFxuICAgIGlzRml4dHVyZSxcbiAgICBpc1Rlc3QsXG4gICAgc2VyaWFsaXplIGFzIHNlcmlhbGl6ZVRlc3RTdHJ1Y3R1cmUsXG4gICAgVW5pdCxcbiAgICBVbml0cyxcbn0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi90ZXN0LXN0cnVjdHVyZSc7XG5cbmltcG9ydCB7XG4gICAgU0VSVklDRV9JTlBVVF9GRCxcbiAgICBTRVJWSUNFX09VVFBVVF9GRCxcbiAgICBTRVJWSUNFX1NZTkNfRkQsXG59IGZyb20gJy4vaW8nO1xuXG5pbXBvcnQgeyBJUENQcm94eSB9IGZyb20gJy4uL3V0aWxzL2lwYy9wcm94eSc7XG5pbXBvcnQgeyBTZXJ2aWNlVHJhbnNwb3J0IH0gZnJvbSAnLi4vdXRpbHMvaXBjL3RyYW5zcG9ydCc7XG5cbmltcG9ydCB7XG4gICAgQ29tcGlsZXJQcm90b2NvbCxcbiAgICBGdW5jdGlvblByb3BlcnRpZXMsXG4gICAgaXNGaXh0dXJlRnVuY3Rpb25Qcm9wZXJ0eSxcbiAgICBpc1Rlc3RGdW5jdGlvblByb3BlcnR5LFxuICAgIFJ1blRlc3RBcmd1bWVudHMsXG59IGZyb20gJy4vcHJvdG9jb2wnO1xuXG5pbXBvcnQge1xuICAgIEV4ZWN1dGVDb21tYW5kQXJndW1lbnRzLFxuICAgIEV4ZWN1dGVNb2NrUHJlZGljYXRlLFxuICAgIEV4ZWN1dGVSZXF1ZXN0RmlsdGVyUnVsZVByZWRpY2F0ZUFyZ3VtZW50cyxcbiAgICBSZW1vdmVIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnRBcmd1bWVudHMsXG4gICAgUmVxdWVzdEhvb2tFdmVudEFyZ3VtZW50cyxcbiAgICBSZXF1ZXN0SG9va0xvY2F0b3IsXG4gICAgU2V0Q29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnNBcmd1bWVudHMsXG4gICAgU2V0SGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzLFxuICAgIFNldE1vY2tBcmd1bWVudHMsXG4gICAgU2V0T3B0aW9uc0FyZ3VtZW50cyxcbiAgICBBZGRSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMsXG4gICAgUmVtb3ZlUmVxdWVzdEV2ZW50TGlzdGVuZXJzQXJndW1lbnRzLFxuICAgIEluaXRpYWxpemVUZXN0UnVuRGF0YUFyZ3VtZW50cyxcbiAgICBUZXN0UnVuTG9jYXRvcixcbiAgICBTZXRDdHhBcmd1bWVudHMsXG4gICAgRXhlY3V0ZVJvbGVJbml0Rm5Bcmd1bWVudHMsXG4gICAgVXBkYXRlUm9sZVByb3BlcnR5QXJndW1lbnRzLFxuICAgIEV4ZWN1dGVKc0V4cHJlc3Npb25Bcmd1bWVudHMsXG4gICAgRXhlY3V0ZUFzeW5jSnNFeHByZXNzaW9uQXJndW1lbnRzLFxuICAgIENvbW1hbmRMb2NhdG9yLFxuICAgIEFkZFVuZXhwZWN0ZWRFcnJvckFyZ3VtZW50cyxcbiAgICBDaGVja1dpbmRvd0FyZ3VtZW50LFxuICAgIFJlbW92ZUZpeHR1cmVDdHhzQXJndW1lbnRzLFxuICAgIFJlbW92ZVVuaXRzRnJvbVN0YXRlQXJndW1lbnRzLFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBDb21waWxlckFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL2NvbXBpbGVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IEZpeHR1cmUgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS9maXh0dXJlJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFByb2Nlc3NUaXRsZSBmcm9tICcuLi9wcm9jZXNzLXRpdGxlJztcbmltcG9ydCBUZXN0IGZyb20gJy4uLy4uL2FwaS9zdHJ1Y3R1cmUvdGVzdCc7XG5pbXBvcnQgUmVxdWVzdEhvb2tNZXRob2ROYW1lcyBmcm9tICcuLi8uLi9hcGkvcmVxdWVzdC1ob29rcy9ob29rLW1ldGhvZC1uYW1lcyc7XG5cbmltcG9ydCB7XG4gICAgQ29uZmlndXJlUmVzcG9uc2VFdmVudCxcbiAgICBJbmNvbWluZ01lc3NhZ2VMaWtlSW5pdE9wdGlvbnMsXG4gICAgUmVxdWVzdEV2ZW50LFxuICAgIFJlcXVlc3RGaWx0ZXJSdWxlLFxuICAgIFJlc3BvbnNlTW9jayxcbiAgICByZXNwb25zZU1vY2tTZXRCb2R5TWV0aG9kLFxufSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcblxuaW1wb3J0IFJlcXVlc3RIb29rIGZyb20gJy4uLy4uL2FwaS9yZXF1ZXN0LWhvb2tzL2hvb2snO1xuaW1wb3J0IFJlcXVlc3RNb2NrIGZyb20gJy4uLy4uL2FwaS9yZXF1ZXN0LWhvb2tzL3JlcXVlc3QtbW9jayc7XG5pbXBvcnQgUm9sZSBmcm9tICcuLi8uLi9yb2xlL3JvbGUnO1xuaW1wb3J0IHVzZXJWYXJpYWJsZXMgZnJvbSAnLi4vLi4vYXBpL3VzZXItdmFyaWFibGVzJztcbmltcG9ydCB7IGV4ZWN1dGVKc0V4cHJlc3Npb24sIGV4ZWN1dGVBc3luY0pzRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL3Rlc3QtcnVuL2V4ZWN1dGUtanMtZXhwcmVzc2lvbic7XG5cbmltcG9ydCB7XG4gICAgVW5jYXVnaHRFcnJvckluQ3VzdG9tU2NyaXB0LFxuICAgIFVuY2F1Z2h0RXhjZXB0aW9uRXJyb3IsXG4gICAgVW5jYXVnaHRUZXN0Q2FmZUVycm9ySW5DdXN0b21TY3JpcHQsXG4gICAgVW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkVycm9yLFxufSBmcm9tICcuLi8uLi9lcnJvcnMvdGVzdC1ydW4nO1xuXG5pbXBvcnQgeyByZW5kZXJIdG1sV2l0aG91dFN0YWNrLCBzaG91bGRSZW5kZXJIdG1sV2l0aG91dFN0YWNrIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3Rlc3QtcnVuL3JlbmRlci1lcnJvci10ZW1wbGF0ZS91dGlscyc7XG5pbXBvcnQgc2V0dXBTb3VyY2VNYXBTdXBwb3J0IGZyb20gJy4uLy4uL3V0aWxzL3NldHVwLXNvdXJjZW1hcC1zdXBwb3J0JztcbmltcG9ydCB7IGZvcm1hdEVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGFuZGxlLWVycm9ycyc7XG5pbXBvcnQgeyBTd2l0Y2hUb1dpbmRvd1ByZWRpY2F0ZUVycm9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Vycm9ycyc7XG5pbXBvcnQgTWVzc2FnZUJ1cyBmcm9tICcuLi8uLi91dGlscy9tZXNzYWdlLWJ1cyc7XG5pbXBvcnQgeyBXYXJuaW5nTG9nTWVzc2FnZSB9IGZyb20gJy4uLy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1sb2cnO1xuaW1wb3J0IHsgdW5pcSB9IGZyb20gJ2xvZGFzaCc7XG5cbnNldHVwU291cmNlTWFwU3VwcG9ydCgpO1xuXG4vLyBUaGlzIGlzIGhhY2sgZm9yIHN1cHBvcnRpbmcgdGhlICdpbXBvcnQgeyB0IH0gZnJvbSBcInRlc3RjYWZlXCInIGV4cHJlc3Npb24gaW4gdGVzdHMuXG4vLyBJdCBjYXVzZWQgYnkgdXNpbmcgdGhlICdlc20nIG1vZHVsZS5cbnJlcXVpcmUoJy4uLy4uL2FwaS90ZXN0LWNvbnRyb2xsZXIvcHJveHknKTtcblxuaW50ZXJmYWNlIFNlcnZpY2VTdGF0ZSB7XG4gICAgdGVzdFJ1bnM6IHsgW2lkOiBzdHJpbmddOiBUZXN0UnVuUHJveHkgfTtcbiAgICBmaXh0dXJlQ3R4czogeyBbaWQ6IHN0cmluZ106IG9iamVjdCB9O1xuICAgIHVuaXRzOiBVbml0cztcbiAgICBvcHRpb25zOiBEaWN0aW9uYXJ5PE9wdGlvblZhbHVlPjtcbiAgICByb2xlczogTWFwPHN0cmluZywgUm9sZT47XG59XG5cbmludGVyZmFjZSBXcmFwU2V0TW9ja0FyZ3VtZW50cyBleHRlbmRzIFJlcXVlc3RIb29rTG9jYXRvciB7XG4gICAgZXZlbnQ6IFJlcXVlc3RFdmVudDtcbn1cblxuaW50ZXJmYWNlIEluaXRUZXN0UnVuUHJveHlEYXRhIHtcbiAgICB0ZXN0UnVuSWQ6IHN0cmluZztcbiAgICB0ZXN0OiBUZXN0O1xuICAgIGJyb3dzZXI6IEJyb3dzZXI7XG4gICAgYWN0aXZlV2luZG93SWQ6IHN0cmluZyB8IG51bGw7XG4gICAgbWVzc2FnZUJ1cz86IE1lc3NhZ2VCdXM7XG59XG5cbmNsYXNzIENvbXBpbGVyU2VydmljZSBpbXBsZW1lbnRzIENvbXBpbGVyUHJvdG9jb2wge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJveHk6IElQQ1Byb3h5O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdGU6IFNlcnZpY2VTdGF0ZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydW5uYWJsZUNvbmZpZ3VyYXRpb25Vbml0c1JlbGF0aW9uczogeyBbaWQ6IHN0cmluZ106IHN0cmluZ1tdIH07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKCkge1xuICAgICAgICBwcm9jZXNzLnRpdGxlID0gUHJvY2Vzc1RpdGxlLnNlcnZpY2U7XG5cbiAgICAgICAgY29uc3QgaW5wdXQgID0gZnMuY3JlYXRlUmVhZFN0cmVhbSgnJywgeyBmZDogU0VSVklDRV9JTlBVVF9GRCB9KTtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0oJycsIHsgZmQ6IFNFUlZJQ0VfT1VUUFVUX0ZEIH0pO1xuXG4gICAgICAgIHRoaXMucHJveHkgPSBuZXcgSVBDUHJveHkobmV3IFNlcnZpY2VUcmFuc3BvcnQoaW5wdXQsIG91dHB1dCwgU0VSVklDRV9TWU5DX0ZEKSk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLl9pbml0U3RhdGUoKTtcblxuICAgICAgICB0aGlzLl9ydW5uYWJsZUNvbmZpZ3VyYXRpb25Vbml0c1JlbGF0aW9ucyA9IHt9O1xuXG4gICAgICAgIHRoaXMuX3JlZ2lzdGVyRXJyb3JIYW5kbGVycygpO1xuICAgICAgICB0aGlzLl9zZXR1cFJvdXRlcygpO1xuICAgICAgICB0aGlzLnJlYWR5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5pdFN0YXRlICgpOiBTZXJ2aWNlU3RhdGUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGVzdFJ1bnM6ICAgIHt9LFxuICAgICAgICAgICAgZml4dHVyZUN0eHM6IHt9LFxuICAgICAgICAgICAgdW5pdHM6ICAgICAgIHt9LFxuICAgICAgICAgICAgb3B0aW9uczogICAgIHt9LFxuICAgICAgICAgICAgcm9sZXM6ICAgICAgIG5ldyBNYXA8c3RyaW5nLCBSb2xlPigpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2hhbmRsZVVuZXhwZWN0ZWRFcnJvciAoRXJyb3JDdG9yOiBGdW5jdGlvbiwgZXJyb3I6IEVycm9yKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBmb3JtYXRFcnJvcihFcnJvckN0b3IsIGVycm9yKTtcbiAgICAgICAgY29uc3QgdHlwZSAgICA9IEVycm9yQ3Rvci5uYW1lO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuYWRkVW5leHBlY3RlZEVycm9yKHsgdHlwZSwgbWVzc2FnZSB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZWdpc3RlckVycm9ySGFuZGxlcnMgKCk6IHZvaWQge1xuICAgICAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBhc3luYyBlID0+IHRoaXMuX2hhbmRsZVVuZXhwZWN0ZWRFcnJvcihVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uRXJyb3IsIGUgYXMgRXJyb3IpKTtcbiAgICAgICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBhc3luYyBlID0+IHRoaXMuX2hhbmRsZVVuZXhwZWN0ZWRFcnJvcihVbmNhdWdodEV4Y2VwdGlvbkVycm9yLCBlIGFzIEVycm9yKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Rml4dHVyZUN0eCAodW5pdDogVW5pdCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IGZpeHR1cmVJZCA9IGlzVGVzdCh1bml0KSA/ICh1bml0LmZpeHR1cmUgYXMgRml4dHVyZSkuaWQgOiAodW5pdCBhcyBGaXh0dXJlKS5pZDtcblxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5maXh0dXJlQ3R4c1tmaXh0dXJlSWRdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFRlc3RDdHggKHsgdGVzdFJ1bklkIH06IFJ1blRlc3RBcmd1bWVudHMsIHVuaXQ6IFVuaXQpOiBUZXN0UnVuUHJveHkge1xuICAgICAgICBjb25zdCB0ZXN0UnVuUHJveHkgPSB0aGlzLl9nZXRUYXJnZXRUZXN0UnVuKHRlc3RSdW5JZCk7XG5cbiAgICAgICAgdGVzdFJ1blByb3h5LmZpeHR1cmVDdHggPSB0aGlzLl9nZXRGaXh0dXJlQ3R4KHVuaXQpO1xuXG4gICAgICAgIHJldHVybiB0ZXN0UnVuUHJveHk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Q29udGV4dCAoYXJnczogUnVuVGVzdEFyZ3VtZW50cywgdW5pdDogVW5pdCk6IFRlc3RSdW5Qcm94eSB8IHVua25vd24ge1xuICAgICAgICBjb25zdCB7IHRlc3RSdW5JZCB9ID0gYXJncztcblxuICAgICAgICBpZiAodGVzdFJ1bklkKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRlc3RDdHgoYXJncywgdW5pdCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEZpeHR1cmVDdHgodW5pdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0dXBSb3V0ZXMgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3h5LnJlZ2lzdGVyKFtcbiAgICAgICAgICAgIHRoaXMuZ2V0VGVzdHMsXG4gICAgICAgICAgICB0aGlzLnJ1blRlc3RGbixcbiAgICAgICAgICAgIHRoaXMuY2xlYW5VcCxcbiAgICAgICAgICAgIHRoaXMuc2V0VXNlclZhcmlhYmxlcyxcbiAgICAgICAgICAgIHRoaXMuc2V0T3B0aW9ucyxcbiAgICAgICAgICAgIHRoaXMub25SZXF1ZXN0SG9va0V2ZW50LFxuICAgICAgICAgICAgdGhpcy5zZXRNb2NrLFxuICAgICAgICAgICAgdGhpcy5zZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucyxcbiAgICAgICAgICAgIHRoaXMuc2V0SGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50LFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnQsXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVSZXF1ZXN0RmlsdGVyUnVsZVByZWRpY2F0ZSxcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZU1vY2tQcmVkaWNhdGUsXG4gICAgICAgICAgICB0aGlzLmdldFdhcm5pbmdNZXNzYWdlcyxcbiAgICAgICAgICAgIHRoaXMuYWRkUmVxdWVzdEV2ZW50TGlzdGVuZXJzLFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnMsXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVUZXN0UnVuRGF0YSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXNzZXJ0aW9uQWN0dWFsVmFsdWUsXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVSb2xlSW5pdEZuLFxuICAgICAgICAgICAgdGhpcy5nZXRDdHgsXG4gICAgICAgICAgICB0aGlzLmdldEZpeHR1cmVDdHgsXG4gICAgICAgICAgICB0aGlzLnNldEN0eCxcbiAgICAgICAgICAgIHRoaXMuc2V0Rml4dHVyZUN0eCxcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUm9sZVByb3BlcnR5LFxuICAgICAgICAgICAgdGhpcy5leGVjdXRlSnNFeHByZXNzaW9uLFxuICAgICAgICAgICAgdGhpcy5leGVjdXRlQXN5bmNKc0V4cHJlc3Npb24sXG4gICAgICAgICAgICB0aGlzLmFkZFVuZXhwZWN0ZWRFcnJvcixcbiAgICAgICAgICAgIHRoaXMuY2hlY2tXaW5kb3csXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVRlc3RSdW5Gcm9tU3RhdGUsXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZpeHR1cmVDdHhzRnJvbVN0YXRlLFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVVbml0c0Zyb21TdGF0ZSxcbiAgICAgICAgXSwgdGhpcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0RnVuY3Rpb24gKHVuaXQ6IFVuaXQsIGZ1bmN0aW9uTmFtZTogRnVuY3Rpb25Qcm9wZXJ0aWVzKTogRnVuY3Rpb258bnVsbCB7XG4gICAgICAgIGlmIChpc1Rlc3QodW5pdCkgJiYgaXNUZXN0RnVuY3Rpb25Qcm9wZXJ0eShmdW5jdGlvbk5hbWUpKVxuICAgICAgICAgICAgcmV0dXJuIHVuaXRbZnVuY3Rpb25OYW1lXTtcblxuICAgICAgICBpZiAoaXNGaXh0dXJlKHVuaXQpICYmIGlzRml4dHVyZUZ1bmN0aW9uUHJvcGVydHkoZnVuY3Rpb25OYW1lKSlcbiAgICAgICAgICAgIHJldHVybiB1bml0W2Z1bmN0aW9uTmFtZV07XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCAnJHtmdW5jdGlvbk5hbWV9JyBmdW5jdGlvbiBmb3IgJHt0eXBlb2YgdW5pdH1gKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF93cmFwRXZlbnRNZXRob2RzICh7IG5hbWUsIHRlc3RJZCwgaG9va0lkLCBldmVudERhdGEgfTogUmVxdWVzdEhvb2tFdmVudEFyZ3VtZW50cyk6IHZvaWQge1xuICAgICAgICBpZiAobmFtZSA9PT0gUmVxdWVzdEhvb2tNZXRob2ROYW1lcy5vblJlcXVlc3QpXG4gICAgICAgICAgICB0aGlzLl93cmFwU2V0TW9ja0ZuKHsgdGVzdElkLCBob29rSWQsIGV2ZW50OiBldmVudERhdGEgYXMgUmVxdWVzdEV2ZW50IH0pO1xuICAgICAgICBlbHNlIGlmIChuYW1lID09PSBSZXF1ZXN0SG9va01ldGhvZE5hbWVzLl9vbkNvbmZpZ3VyZVJlc3BvbnNlKVxuICAgICAgICAgICAgdGhpcy5fd3JhcENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRNZXRob2RzKGV2ZW50RGF0YSBhcyBDb25maWd1cmVSZXNwb25zZUV2ZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF93cmFwU2V0TW9ja0ZuICh7IHRlc3RJZCwgaG9va0lkLCBldmVudCB9OiBXcmFwU2V0TW9ja0FyZ3VtZW50cyk6IHZvaWQge1xuICAgICAgICBldmVudC5zZXRNb2NrID0gYXN5bmMgKG1vY2s6IFJlc3BvbnNlTW9jaykgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRNb2NrKHtcbiAgICAgICAgICAgICAgICByZXNwb25zZUV2ZW50SWQ6IGV2ZW50LmlkLFxuICAgICAgICAgICAgICAgIHJ1bGVJZDogICAgICAgICAgZXZlbnQucmVxdWVzdEZpbHRlclJ1bGUuaWQsXG4gICAgICAgICAgICAgICAgdGVzdElkLFxuICAgICAgICAgICAgICAgIGhvb2tJZCxcbiAgICAgICAgICAgICAgICBtb2NrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfd3JhcENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRNZXRob2RzIChldmVudDogQ29uZmlndXJlUmVzcG9uc2VFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zZXRIZWFkZXIgPSBhc3luYyAobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldEhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCh7XG4gICAgICAgICAgICAgICAgZXZlbnRJZDogICAgIGV2ZW50LmlkLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICBuYW1lLFxuICAgICAgICAgICAgICAgIGhlYWRlclZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGV2ZW50LnJlbW92ZUhlYWRlciA9IGFzeW5jIChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50KHtcbiAgICAgICAgICAgICAgICBldmVudElkOiAgICBldmVudC5pZCxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBuYW1lLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVRlc3RSdW5Qcm94eSAoeyB0ZXN0UnVuSWQsIHRlc3QsIGJyb3dzZXIsIGFjdGl2ZVdpbmRvd0lkLCBtZXNzYWdlQnVzIH06IEluaXRUZXN0UnVuUHJveHlEYXRhKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRlc3RSdW5Qcm94eSA9IG5ldyBUZXN0UnVuUHJveHkoe1xuICAgICAgICAgICAgZGlzcGF0Y2hlcjogdGhpcyxcbiAgICAgICAgICAgIGlkOiAgICAgICAgIHRlc3RSdW5JZCxcbiAgICAgICAgICAgIG9wdGlvbnM6ICAgIHRoaXMuc3RhdGUub3B0aW9ucyxcbiAgICAgICAgICAgIHRlc3QsXG4gICAgICAgICAgICBicm93c2VyLFxuICAgICAgICAgICAgYWN0aXZlV2luZG93SWQsXG4gICAgICAgICAgICBtZXNzYWdlQnVzLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN0YXRlLnRlc3RSdW5zW3Rlc3RSdW5JZF0gPSB0ZXN0UnVuUHJveHk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUZpeHR1cmVDdHggKHRlc3Q6IFRlc3QpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZml4dHVyZUlkID0gKHRlc3QuZml4dHVyZSBhcyBGaXh0dXJlKS5pZDtcblxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5maXh0dXJlQ3R4c1tmaXh0dXJlSWRdKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc3RhdGUuZml4dHVyZUN0eHNbZml4dHVyZUlkXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0VGFyZ2V0VGVzdFJ1biAodGVzdFJ1bklkOiBzdHJpbmcpOiBUZXN0UnVuUHJveHkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS50ZXN0UnVuc1t0ZXN0UnVuSWRdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFRhcmdldFJvbGUgKHJvbGVJZDogc3RyaW5nKTogUm9sZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnJvbGVzLmdldChyb2xlSWQpIGFzIFJvbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFVzZXJWYXJpYWJsZXMgKHZhbHVlOiBVc2VyVmFyaWFibGVzIHwgbnVsbCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB1c2VyVmFyaWFibGVzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0VW5pdElkcyAodGVzdHM6IFRlc3RbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgdGVzdElkcyAgICAgPSB0ZXN0cy5tYXAodGVzdCA9PiB0ZXN0LmlkKTtcbiAgICAgICAgY29uc3QgZml4dHVyZUlkcyAgPSB0ZXN0cy5tYXAodGVzdCA9PiB0ZXN0LmZpeHR1cmU/LmlkKSBhcyBzdHJpbmdbXTtcbiAgICAgICAgY29uc3QgdGVzdEZpbGVJZHMgPSB0ZXN0cy5tYXAodGVzdCA9PiB0ZXN0LnRlc3RGaWxlLmlkKTtcblxuICAgICAgICByZXR1cm4gdW5pcShbLi4udGVzdElkcywgLi4uZml4dHVyZUlkcywgLi4udGVzdEZpbGVJZHNdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0T3B0aW9ucyAoeyB2YWx1ZSB9OiBTZXRPcHRpb25zQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc3RhdGUub3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWFkeSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMucHJveHkuY2FsbCh0aGlzLnJlYWR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xlYW5VcCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IENvbXBpbGVyLmNsZWFuVXAoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0VGVzdHMgKHsgc291cmNlTGlzdCwgY29tcGlsZXJPcHRpb25zLCBydW5uYWJsZUNvbmZpZ3VyYXRpb25JZCB9OiBDb21waWxlckFyZ3VtZW50cywgYmFzZVVybD86IHN0cmluZyk6IFByb21pc2U8VW5pdHM+IHtcbiAgICAgICAgY29uc3QgY29tcGlsZXIgPSBuZXcgQ29tcGlsZXIoc291cmNlTGlzdCwgY29tcGlsZXJPcHRpb25zLCB7IGlzQ29tcGlsZXJTZXJ2aWNlTW9kZTogdHJ1ZSwgYmFzZVVybCB9KTtcblxuICAgICAgICBjb25zdCB0ZXN0cyAgID0gYXdhaXQgY29tcGlsZXIuZ2V0VGVzdHMoKTtcbiAgICAgICAgY29uc3QgdW5pdHMgICA9IGZsYXR0ZW5UZXN0U3RydWN0dXJlKHRlc3RzKTtcbiAgICAgICAgY29uc3QgdW5pdElkcyA9IHRoaXMuX2dldFVuaXRJZHModGVzdHMpO1xuXG4gICAgICAgIHRoaXMuX3J1bm5hYmxlQ29uZmlndXJhdGlvblVuaXRzUmVsYXRpb25zW3J1bm5hYmxlQ29uZmlndXJhdGlvbklkXSA9IHVuaXRJZHM7XG5cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLnN0YXRlLnVuaXRzLCB1bml0cyk7XG5cbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVRlc3RTdHJ1Y3R1cmUodW5pdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBydW5UZXN0Rm4gKGFyZ3M6IFJ1blRlc3RBcmd1bWVudHMpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgY29uc3QgeyBpZCwgZnVuY3Rpb25OYW1lIH0gPSBhcmdzO1xuXG4gICAgICAgIGNvbnN0IHVuaXQgICAgICAgICAgID0gdGhpcy5zdGF0ZS51bml0c1tpZF07XG4gICAgICAgIGNvbnN0IGNvbnRleHQgICAgICAgID0gdGhpcy5fZ2V0Q29udGV4dChhcmdzLCB1bml0KTtcbiAgICAgICAgY29uc3QgZnVuY3Rpb25PYmplY3QgPSB0aGlzLl9nZXRGdW5jdGlvbih1bml0LCBmdW5jdGlvbk5hbWUpO1xuXG4gICAgICAgIGlmICghZnVuY3Rpb25PYmplY3QpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHRoZSBcIiR7ZnVuY3Rpb25OYW1lfVwiIG9mICR7dHlwZW9mIHVuaXR9YCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGZ1bmN0aW9uT2JqZWN0KGNvbnRleHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGVjdXRlQ29tbWFuZFN5bmMgKHsgaWQsIGNvbW1hbmQsIGNhbGxzaXRlIH06IEV4ZWN1dGVDb21tYW5kQXJndW1lbnRzKTogdW5rbm93biB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmNhbGxTeW5jKHRoaXMuZXhlY3V0ZUNvbW1hbmQsIHsgaWQsIGNvbW1hbmQsIGNhbGxzaXRlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQ29tbWFuZCAoeyBjb21tYW5kLCBpZCwgY2FsbHNpdGUgfTogRXhlY3V0ZUNvbW1hbmRBcmd1bWVudHMpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuY2FsbCh0aGlzLmV4ZWN1dGVDb21tYW5kLCB7IGlkLCBjb21tYW5kLCBjYWxsc2l0ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgb25SZXF1ZXN0SG9va0V2ZW50ICh7IG5hbWUsIHRlc3RJZCwgaG9va0lkLCBldmVudERhdGEgfTogUmVxdWVzdEhvb2tFdmVudEFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl93cmFwRXZlbnRNZXRob2RzKHsgbmFtZSwgdGVzdElkLCBob29rSWQsIGV2ZW50RGF0YSB9KTtcblxuICAgICAgICBjb25zdCB0ZXN0ICAgICAgID0gdGhpcy5zdGF0ZS51bml0c1t0ZXN0SWRdIGFzIFRlc3Q7XG4gICAgICAgIGNvbnN0IHRhcmdldEhvb2sgPSB0ZXN0LnJlcXVlc3RIb29rcy5maW5kKGhvb2sgPT4gaG9vay5pZCA9PT0gaG9va0lkKSBhcyBSZXF1ZXN0SG9vaztcblxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGF3YWl0IHRhcmdldEhvb2tbbmFtZV0uY2FsbCh0YXJnZXRIb29rLCBldmVudERhdGEpO1xuXG4gICAgICAgIGlmIChuYW1lID09PSBSZXF1ZXN0SG9va01ldGhvZE5hbWVzLl9vbkNvbmZpZ3VyZVJlc3BvbnNlICYmIHRhcmdldEhvb2suX3Jlc3BvbnNlRXZlbnRDb25maWd1cmVPcHRzKSB7XG4gICAgICAgICAgICBjb25zdCB7IG9wdHMsIGlkOiBldmVudElkIH0gPSBldmVudERhdGEgYXMgQ29uZmlndXJlUmVzcG9uc2VFdmVudDtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucyh7IGV2ZW50SWQsIG9wdHMgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0TW9jayAoeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXNwb25zZUV2ZW50SWQsIG1vY2sgfTogU2V0TW9ja0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnByb3h5LmNhbGwodGhpcy5zZXRNb2NrLCB7IHRlc3RJZCwgaG9va0lkLCBydWxlSWQsIHJlc3BvbnNlRXZlbnRJZCwgbW9jayB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0Q29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnMgKHsgZXZlbnRJZCwgb3B0cyB9OiBTZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9uc0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnByb3h5LmNhbGwodGhpcy5zZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucywgeyBldmVudElkLCBvcHRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnQgKHsgZXZlbnRJZCwgaGVhZGVyTmFtZSwgaGVhZGVyVmFsdWUgfTogU2V0SGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJveHkuY2FsbCh0aGlzLnNldEhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCwgeyBldmVudElkLCBoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50ICh7IGV2ZW50SWQsIGhlYWRlck5hbWUgfTogUmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJveHkuY2FsbCh0aGlzLnJlbW92ZUhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCwgeyBldmVudElkLCBoZWFkZXJOYW1lIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUgKHsgdGVzdElkLCBob29rSWQsIHJ1bGVJZCwgcmVxdWVzdEluZm8gfTogRXhlY3V0ZVJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlQXJndW1lbnRzKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHRlc3QgICAgICAgPSB0aGlzLnN0YXRlLnVuaXRzW3Rlc3RJZF0gYXMgVGVzdDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SG9vayA9IHRlc3QucmVxdWVzdEhvb2tzLmZpbmQoaG9vayA9PiBob29rLmlkID09PSBob29rSWQpIGFzIFJlcXVlc3RIb29rO1xuICAgICAgICBjb25zdCB0YXJnZXRSdWxlID0gdGFyZ2V0SG9vay5fcmVxdWVzdEZpbHRlclJ1bGVzLmZpbmQocnVsZSA9PiBydWxlLmlkID09PSBydWxlSWQpIGFzIFJlcXVlc3RGaWx0ZXJSdWxlO1xuICAgICAgICBjb25zdCByZXN1bHQgICAgID0gYXdhaXQgdGFyZ2V0UnVsZS5vcHRpb25zLmNhbGwodGFyZ2V0UnVsZSwgcmVxdWVzdEluZm8pO1xuXG4gICAgICAgIHJldHVybiAhIXJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZU1vY2tQcmVkaWNhdGUgKHsgdGVzdElkLCBob29rSWQsIHJ1bGVJZCwgcmVxdWVzdEluZm8sIHJlcyB9OiBFeGVjdXRlTW9ja1ByZWRpY2F0ZSk6IFByb21pc2U8SW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zPiB7XG4gICAgICAgIGNvbnN0IHRlc3QgICAgICAgICA9IHRoaXMuc3RhdGUudW5pdHNbdGVzdElkXSBhcyBUZXN0O1xuICAgICAgICBjb25zdCByZXF1ZXN0TW9jayAgPSB0ZXN0LnJlcXVlc3RIb29rcy5maW5kKGhvb2sgPT4gaG9vay5pZCA9PT0gaG9va0lkKSBhcyBSZXF1ZXN0TW9jaztcbiAgICAgICAgY29uc3QgcmVzcG9uc2VNb2NrID0gcmVxdWVzdE1vY2subW9ja3MuZ2V0KHJ1bGVJZCkgYXMgUmVzcG9uc2VNb2NrO1xuXG4gICAgICAgIHJlc3BvbnNlTW9ja1NldEJvZHlNZXRob2QuYWRkKHJlcyk7XG5cbiAgICAgICAgcmVzID0gT2JqZWN0LmFzc2lnbihyZXMsIGF3YWl0IChyZXNwb25zZU1vY2suYm9keSBhcyBGdW5jdGlvbikocmVxdWVzdEluZm8sIHJlcykpO1xuXG4gICAgICAgIHJlc3BvbnNlTW9ja1NldEJvZHlNZXRob2QucmVtb3ZlKHJlcyk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0V2FybmluZ01lc3NhZ2VzICh7IHRlc3RSdW5JZCB9OiBUZXN0UnVuTG9jYXRvcik6IFByb21pc2U8V2FybmluZ0xvZ01lc3NhZ2VbXT4ge1xuICAgICAgICAvLyBOT1RFOiBJbiBjYXNlIG9mIHJhaXNpbmcgYW4gZXJyb3IgaW50byBSZXBvcnRlclBsdWdpbkhvc3QgbWV0aG9kcyxcbiAgICAgICAgLy8gVGVzdFJ1biBoYXMgdGltZSB0byBzdGFydC5cbiAgICAgICAgY29uc3QgdGFyZ2V0VGVzdFJ1biA9IHRoaXMuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKTtcblxuICAgICAgICByZXR1cm4gdGFyZ2V0VGVzdFJ1biA/IHRhcmdldFRlc3RSdW4ud2FybmluZ0xvZy5tZXNzYWdlSW5mb3MgOiBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWRkUmVxdWVzdEV2ZW50TGlzdGVuZXJzICggeyBob29rSWQsIGhvb2tDbGFzc05hbWUsIHJ1bGVzIH06IEFkZFJlcXVlc3RFdmVudExpc3RlbmVyc0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eS5jYWxsKHRoaXMuYWRkUmVxdWVzdEV2ZW50TGlzdGVuZXJzLCB7IGhvb2tJZCwgaG9va0NsYXNzTmFtZSwgcnVsZXMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVycyAoeyBydWxlcyB9OiBSZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHkuY2FsbCh0aGlzLnJlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVycywgeyBydWxlcyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZVRlc3RSdW5EYXRhICh7IHRlc3RSdW5JZCwgdGVzdElkLCBicm93c2VyLCBhY3RpdmVXaW5kb3dJZCwgbWVzc2FnZUJ1cyB9OiBJbml0aWFsaXplVGVzdFJ1bkRhdGFBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gTk9URTogSW4gY2FzZSBvZiByYWlzaW5nIGFuIGVycm9yIGludG8gUmVwb3J0ZXJQbHVnaW5Ib3N0IG1ldGhvZHMsXG4gICAgICAgIC8vIFRlc3RSdW4gaGFzIHRpbWUgdG8gc3RhcnQuXG4gICAgICAgIGNvbnN0IHRlc3QgPSB0aGlzLnN0YXRlLnVuaXRzW3Rlc3RJZF0gYXMgVGVzdDtcblxuICAgICAgICBpZiAoIXRlc3QpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVRlc3RSdW5Qcm94eSh7IHRlc3RSdW5JZCwgdGVzdCwgYnJvd3NlciwgYWN0aXZlV2luZG93SWQsIG1lc3NhZ2VCdXMgfSk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVGaXh0dXJlQ3R4KHRlc3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbmFibGVEZWJ1Z0Zvck5vbkRlYnVnQ29tbWFuZHMgKCk6IHZvaWQge1xuICAgICAgICBUZXN0Q29udHJvbGxlci5lbmFibGVEZWJ1Z0Zvck5vbkRlYnVnQ29tbWFuZHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzYWJsZURlYnVnRm9yTm9uRGVidWdDb21tYW5kcyAoKTogdm9pZCB7XG4gICAgICAgIFRlc3RDb250cm9sbGVyLmRpc2FibGVEZWJ1Z0Zvck5vbkRlYnVnQ29tbWFuZHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXNzZXJ0aW9uQWN0dWFsVmFsdWUgKHsgdGVzdFJ1bklkLCBjb21tYW5kSWQgfTogQ29tbWFuZExvY2F0b3IpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKS5nZXRBc3NlcnRpb25BY3R1YWxWYWx1ZShjb21tYW5kSWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlUm9sZUluaXRGbiAoeyB0ZXN0UnVuSWQsIHJvbGVJZCB9OiBFeGVjdXRlUm9sZUluaXRGbkFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCByb2xlICAgICAgICAgPSB0aGlzLl9nZXRUYXJnZXRSb2xlKHJvbGVJZCk7XG4gICAgICAgIGNvbnN0IHRlc3RSdW5Qcm94eSA9IHRoaXMuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKTtcblxuICAgICAgICByZXR1cm4gKHJvbGUuX2luaXRGbiBhcyBGdW5jdGlvbikodGVzdFJ1blByb3h5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q3R4ICh7IHRlc3RSdW5JZCB9OiBUZXN0UnVuTG9jYXRvcik6IFByb21pc2U8b2JqZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRUYXJnZXRUZXN0UnVuKHRlc3RSdW5JZCkuY3R4O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGaXh0dXJlQ3R4ICh7IHRlc3RSdW5JZCB9OiBUZXN0UnVuTG9jYXRvcik6IFByb21pc2U8b2JqZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRUYXJnZXRUZXN0UnVuKHRlc3RSdW5JZCkuZml4dHVyZUN0eDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0Q3R4ICh7IHRlc3RSdW5JZCwgdmFsdWUgfTogU2V0Q3R4QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKS5jdHggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0Rml4dHVyZUN0eCAoeyB0ZXN0UnVuSWQsIHZhbHVlIH06IFNldEN0eEFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9nZXRUYXJnZXRUZXN0UnVuKHRlc3RSdW5JZCkuZml4dHVyZUN0eCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJvbGVBcHBlYXJlZCAocm9sZTogUm9sZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5yb2xlcy5oYXMocm9sZS5pZCkpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5zdGF0ZS5yb2xlcy5zZXQocm9sZS5pZCwgcm9sZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHVwZGF0ZVJvbGVQcm9wZXJ0eSAoeyByb2xlSWQsIG5hbWUsIHZhbHVlIH06IFVwZGF0ZVJvbGVQcm9wZXJ0eUFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCByb2xlID0gdGhpcy5fZ2V0VGFyZ2V0Um9sZShyb2xlSWQpO1xuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcm9sZVtuYW1lXSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlSnNFeHByZXNzaW9uICh7IGV4cHJlc3Npb24sIHRlc3RSdW5JZCwgb3B0aW9ucyB9OiBFeGVjdXRlSnNFeHByZXNzaW9uQXJndW1lbnRzKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IHRlc3RSdW5Qcm94eSA9IHRoaXMuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKTtcblxuICAgICAgICByZXR1cm4gZXhlY3V0ZUpzRXhwcmVzc2lvbihleHByZXNzaW9uLCB0ZXN0UnVuUHJveHksIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQXN5bmNKc0V4cHJlc3Npb24gKHsgZXhwcmVzc2lvbiwgdGVzdFJ1bklkLCBjYWxsc2l0ZSB9OiBFeGVjdXRlQXN5bmNKc0V4cHJlc3Npb25Bcmd1bWVudHMpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgY29uc3QgdGVzdFJ1blByb3h5ID0gdGhpcy5fZ2V0VGFyZ2V0VGVzdFJ1bih0ZXN0UnVuSWQpO1xuXG4gICAgICAgIHJldHVybiBleGVjdXRlQXN5bmNKc0V4cHJlc3Npb24oZXhwcmVzc2lvbiwgdGVzdFJ1blByb3h5LCBjYWxsc2l0ZSwgYXN5bmMgKGVycjogVW5jYXVnaHRUZXN0Q2FmZUVycm9ySW5DdXN0b21TY3JpcHQgfCBVbmNhdWdodEVycm9ySW5DdXN0b21TY3JpcHQpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBVbmNhdWdodFRlc3RDYWZlRXJyb3JJbkN1c3RvbVNjcmlwdCA9PT0gZmFsc2UpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRFcnJvciA9IGVyciBhcyBVbmNhdWdodFRlc3RDYWZlRXJyb3JJbkN1c3RvbVNjcmlwdDtcblxuICAgICAgICAgICAgaWYgKCFzaG91bGRSZW5kZXJIdG1sV2l0aG91dFN0YWNrKHRhcmdldEVycm9yKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIHRlc3RSdW5Qcm94eS5yZXN0b3JlT3JpZ2luQ2FsbHNpdGVGb3JFcnJvcih0YXJnZXRFcnJvcik7XG5cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGVyci5lcnJDYWxsc2l0ZSA9IHJlbmRlckh0bWxXaXRob3V0U3RhY2sodGFyZ2V0RXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUFzc2VydGlvbkZuICh7IHRlc3RSdW5JZCwgY29tbWFuZElkIH06IENvbW1hbmRMb2NhdG9yKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICAgICAgICAuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKVxuICAgICAgICAgICAgLmV4ZWN1dGVBc3NlcnRpb25Gbihjb21tYW5kSWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBhZGRVbmV4cGVjdGVkRXJyb3IgKHsgdHlwZSwgbWVzc2FnZSB9OiBBZGRVbmV4cGVjdGVkRXJyb3JBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuY2FsbCh0aGlzLmFkZFVuZXhwZWN0ZWRFcnJvciwgeyB0eXBlLCBtZXNzYWdlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjaGVja1dpbmRvdyAoeyB0ZXN0UnVuSWQsIGNvbW1hbmRJZCwgdXJsLCB0aXRsZSB9OiBDaGVja1dpbmRvd0FyZ3VtZW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgICAgICAgICAgIC5fZ2V0VGFyZ2V0VGVzdFJ1bih0ZXN0UnVuSWQpXG4gICAgICAgICAgICAgICAgLmNoZWNrV2luZG93KGNvbW1hbmRJZCwgeyB0aXRsZSwgdXJsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBTd2l0Y2hUb1dpbmRvd1ByZWRpY2F0ZUVycm9yKGVyci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVUZXN0UnVuRnJvbVN0YXRlICh7IHRlc3RSdW5JZCB9OiBUZXN0UnVuTG9jYXRvcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBkZWxldGUgdGhpcy5zdGF0ZS50ZXN0UnVuc1t0ZXN0UnVuSWRdO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVGaXh0dXJlQ3R4c0Zyb21TdGF0ZSAoeyBmaXh0dXJlSWRzIH06IFJlbW92ZUZpeHR1cmVDdHhzQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZml4dHVyZUlkIG9mIGZpeHR1cmVJZHMpXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5zdGF0ZS5maXh0dXJlQ3R4c1tmaXh0dXJlSWRdO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVVbml0c0Zyb21TdGF0ZSAoeyBydW5uYWJsZUNvbmZpZ3VyYXRpb25JZCB9OiBSZW1vdmVVbml0c0Zyb21TdGF0ZUFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB1bml0SWRzID0gdGhpcy5fcnVubmFibGVDb25maWd1cmF0aW9uVW5pdHNSZWxhdGlvbnNbcnVubmFibGVDb25maWd1cmF0aW9uSWRdO1xuXG4gICAgICAgIGZvciAoY29uc3QgdW5pdElkIG9mIHVuaXRJZHMpXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5zdGF0ZS51bml0c1t1bml0SWRdO1xuXG4gICAgICAgIGRlbGV0ZSB0aGlzLl9ydW5uYWJsZUNvbmZpZ3VyYXRpb25Vbml0c1JlbGF0aW9uc1tydW5uYWJsZUNvbmZpZ3VyYXRpb25JZF07XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgQ29tcGlsZXJTZXJ2aWNlKCk7XG4iXX0=
|
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb21waWxlci9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLDhEQUFzQztBQUN0QyxzRUFBNEM7QUFDNUMsZ0ZBQXVEO0FBRXZELG9FQU95QztBQUV6Qyw2QkFJYztBQUVkLDhDQUE4QztBQUM5QyxzREFBMEQ7QUFFMUQseUNBTW9CO0FBZ0NwQixxRUFBNEM7QUFFNUMsa0dBQStFO0FBRS9FLDZEQU82QjtBQUs3Qiw4RUFBcUQ7QUFDckQsZ0ZBQXFHO0FBRXJHLG9EQUsrQjtBQUUvQiw2RUFBeUg7QUFDekgsa0dBQXdFO0FBQ3hFLDZEQUF3RDtBQUN4RCxnREFBbUU7QUFHbkUsbUNBQThCO0FBRTlCLElBQUEsaUNBQXFCLEdBQUUsQ0FBQztBQUV4QixzRkFBc0Y7QUFDdEYsdUNBQXVDO0FBQ3ZDLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBc0IzQyxNQUFNLGVBQWU7SUFLakI7UUFDSSxPQUFPLENBQUMsS0FBSyxHQUFHLHVCQUFZLENBQUMsT0FBTyxDQUFDO1FBRXJDLE1BQU0sS0FBSyxHQUFJLFlBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUscUJBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLFlBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsc0JBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxnQkFBUSxDQUFDLElBQUksNEJBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxvQkFBZSxDQUFDLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUUvQixJQUFJLENBQUMsb0NBQW9D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cyBmcm9tICdmcyc7XG5pbXBvcnQgQ29tcGlsZXIgZnJvbSAnLi4vLi4vY29tcGlsZXInO1xuaW1wb3J0IFRlc3RSdW5Qcm94eSBmcm9tICcuL3Rlc3QtcnVuLXByb3h5JztcbmltcG9ydCBUZXN0Q29udHJvbGxlciBmcm9tICcuLi8uLi9hcGkvdGVzdC1jb250cm9sbGVyJztcblxuaW1wb3J0IHtcbiAgICBmbGF0dGVuIGFzIGZsYXR0ZW5UZXN0U3RydWN0dXJlLFxuICAgIGlzRml4dHVyZSxcbiAgICBpc1Rlc3QsXG4gICAgc2VyaWFsaXplIGFzIHNlcmlhbGl6ZVRlc3RTdHJ1Y3R1cmUsXG4gICAgVW5pdCxcbiAgICBVbml0cyxcbn0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi90ZXN0LXN0cnVjdHVyZSc7XG5cbmltcG9ydCB7XG4gICAgU0VSVklDRV9JTlBVVF9GRCxcbiAgICBTRVJWSUNFX09VVFBVVF9GRCxcbiAgICBTRVJWSUNFX1NZTkNfRkQsXG59IGZyb20gJy4vaW8nO1xuXG5pbXBvcnQgeyBJUENQcm94eSB9IGZyb20gJy4uL3V0aWxzL2lwYy9wcm94eSc7XG5pbXBvcnQgeyBTZXJ2aWNlVHJhbnNwb3J0IH0gZnJvbSAnLi4vdXRpbHMvaXBjL3RyYW5zcG9ydCc7XG5cbmltcG9ydCB7XG4gICAgQ29tcGlsZXJQcm90b2NvbCxcbiAgICBGdW5jdGlvblByb3BlcnRpZXMsXG4gICAgaXNGaXh0dXJlRnVuY3Rpb25Qcm9wZXJ0eSxcbiAgICBpc1Rlc3RGdW5jdGlvblByb3BlcnR5LFxuICAgIFJ1blRlc3RBcmd1bWVudHMsXG59IGZyb20gJy4vcHJvdG9jb2wnO1xuXG5pbXBvcnQge1xuICAgIEV4ZWN1dGVDb21tYW5kQXJndW1lbnRzLFxuICAgIEV4ZWN1dGVNb2NrUHJlZGljYXRlLFxuICAgIEV4ZWN1dGVSZXF1ZXN0RmlsdGVyUnVsZVByZWRpY2F0ZUFyZ3VtZW50cyxcbiAgICBSZW1vdmVIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnRBcmd1bWVudHMsXG4gICAgUmVxdWVzdEhvb2tFdmVudEFyZ3VtZW50cyxcbiAgICBSZXF1ZXN0SG9va0xvY2F0b3IsXG4gICAgU2V0Q29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnNBcmd1bWVudHMsXG4gICAgU2V0SGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzLFxuICAgIFNldE1vY2tBcmd1bWVudHMsXG4gICAgU2V0T3B0aW9uc0FyZ3VtZW50cyxcbiAgICBBZGRSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMsXG4gICAgUmVtb3ZlUmVxdWVzdEV2ZW50TGlzdGVuZXJzQXJndW1lbnRzLFxuICAgIEluaXRpYWxpemVUZXN0UnVuRGF0YUFyZ3VtZW50cyxcbiAgICBUZXN0UnVuTG9jYXRvcixcbiAgICBTZXRDdHhBcmd1bWVudHMsXG4gICAgRXhlY3V0ZVJvbGVJbml0Rm5Bcmd1bWVudHMsXG4gICAgVXBkYXRlUm9sZVByb3BlcnR5QXJndW1lbnRzLFxuICAgIEV4ZWN1dGVKc0V4cHJlc3Npb25Bcmd1bWVudHMsXG4gICAgRXhlY3V0ZUFzeW5jSnNFeHByZXNzaW9uQXJndW1lbnRzLFxuICAgIENvbW1hbmRMb2NhdG9yLFxuICAgIEFkZFVuZXhwZWN0ZWRFcnJvckFyZ3VtZW50cyxcbiAgICBDaGVja1dpbmRvd0FyZ3VtZW50LFxuICAgIFJlbW92ZUZpeHR1cmVDdHhzQXJndW1lbnRzLFxuICAgIFJlbW92ZVVuaXRzRnJvbVN0YXRlQXJndW1lbnRzLFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBDb21waWxlckFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL2NvbXBpbGVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IEZpeHR1cmUgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS9maXh0dXJlJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFByb2Nlc3NUaXRsZSBmcm9tICcuLi9wcm9jZXNzLXRpdGxlJztcbmltcG9ydCBUZXN0IGZyb20gJy4uLy4uL2FwaS9zdHJ1Y3R1cmUvdGVzdCc7XG5pbXBvcnQgUmVxdWVzdEhvb2tNZXRob2ROYW1lcyBmcm9tICcuLi8uLi9hcGkvcmVxdWVzdC1ob29rcy9ob29rLW1ldGhvZC1uYW1lcyc7XG5cbmltcG9ydCB7XG4gICAgQ29uZmlndXJlUmVzcG9uc2VFdmVudCxcbiAgICBJbmNvbWluZ01lc3NhZ2VMaWtlSW5pdE9wdGlvbnMsXG4gICAgUmVxdWVzdEV2ZW50LFxuICAgIFJlcXVlc3RGaWx0ZXJSdWxlLFxuICAgIFJlc3BvbnNlTW9jayxcbiAgICByZXNwb25zZU1vY2tTZXRCb2R5TWV0aG9kLFxufSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcblxuaW1wb3J0IFJlcXVlc3RIb29rIGZyb20gJy4uLy4uL2FwaS9yZXF1ZXN0LWhvb2tzL2hvb2snO1xuaW1wb3J0IFJlcXVlc3RNb2NrIGZyb20gJy4uLy4uL2FwaS9yZXF1ZXN0LWhvb2tzL3JlcXVlc3QtbW9jayc7XG5pbXBvcnQgUm9sZSBmcm9tICcuLi8uLi9yb2xlL3JvbGUnO1xuaW1wb3J0IHVzZXJWYXJpYWJsZXMgZnJvbSAnLi4vLi4vYXBpL3VzZXItdmFyaWFibGVzJztcbmltcG9ydCB7IGV4ZWN1dGVKc0V4cHJlc3Npb24sIGV4ZWN1dGVBc3luY0pzRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL3Rlc3QtcnVuL2V4ZWN1dGUtanMtZXhwcmVzc2lvbic7XG5cbmltcG9ydCB7XG4gICAgVW5jYXVnaHRFcnJvckluQ3VzdG9tU2NyaXB0LFxuICAgIFVuY2F1Z2h0RXhjZXB0aW9uRXJyb3IsXG4gICAgVW5jYXVnaHRUZXN0Q2FmZUVycm9ySW5DdXN0b21TY3JpcHQsXG4gICAgVW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkVycm9yLFxufSBmcm9tICcuLi8uLi9lcnJvcnMvdGVzdC1ydW4nO1xuXG5pbXBvcnQgeyByZW5kZXJIdG1sV2l0aG91dFN0YWNrLCBzaG91bGRSZW5kZXJIdG1sV2l0aG91dFN0YWNrIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3Rlc3QtcnVuL3JlbmRlci1lcnJvci10ZW1wbGF0ZS91dGlscyc7XG5pbXBvcnQgc2V0dXBTb3VyY2VNYXBTdXBwb3J0IGZyb20gJy4uLy4uL3V0aWxzL3NldHVwLXNvdXJjZW1hcC1zdXBwb3J0JztcbmltcG9ydCB7IGZvcm1hdEVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGFuZGxlLWVycm9ycyc7XG5pbXBvcnQgeyBTd2l0Y2hUb1dpbmRvd1ByZWRpY2F0ZUVycm9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Vycm9ycyc7XG5pbXBvcnQgTWVzc2FnZUJ1cyBmcm9tICcuLi8uLi91dGlscy9tZXNzYWdlLWJ1cyc7XG5pbXBvcnQgeyBXYXJuaW5nTG9nTWVzc2FnZSB9IGZyb20gJy4uLy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1sb2cnO1xuaW1wb3J0IHsgdW5pcSB9IGZyb20gJ2xvZGFzaCc7XG5cbnNldHVwU291cmNlTWFwU3VwcG9ydCgpO1xuXG4vLyBUaGlzIGlzIGhhY2sgZm9yIHN1cHBvcnRpbmcgdGhlICdpbXBvcnQgeyB0IH0gZnJvbSBcInRlc3RjYWZlXCInIGV4cHJlc3Npb24gaW4gdGVzdHMuXG4vLyBJdCBjYXVzZWQgYnkgdXNpbmcgdGhlICdlc20nIG1vZHVsZS5cbnJlcXVpcmUoJy4uLy4uL2FwaS90ZXN0LWNvbnRyb2xsZXIvcHJveHknKTtcblxuaW50ZXJmYWNlIFNlcnZpY2VTdGF0ZSB7XG4gICAgdGVzdFJ1bnM6IHsgW2lkOiBzdHJpbmddOiBUZXN0UnVuUHJveHkgfTtcbiAgICBmaXh0dXJlQ3R4czogeyBbaWQ6IHN0cmluZ106IG9iamVjdCB9O1xuICAgIHVuaXRzOiBVbml0cztcbiAgICBvcHRpb25zOiBEaWN0aW9uYXJ5PE9wdGlvblZhbHVlPjtcbiAgICByb2xlczogTWFwPHN0cmluZywgUm9sZT47XG59XG5cbmludGVyZmFjZSBXcmFwU2V0TW9ja0FyZ3VtZW50cyBleHRlbmRzIFJlcXVlc3RIb29rTG9jYXRvciB7XG4gICAgZXZlbnQ6IFJlcXVlc3RFdmVudDtcbn1cblxuaW50ZXJmYWNlIEluaXRUZXN0UnVuUHJveHlEYXRhIHtcbiAgICB0ZXN0UnVuSWQ6IHN0cmluZztcbiAgICB0ZXN0OiBUZXN0O1xuICAgIGJyb3dzZXI6IEJyb3dzZXI7XG4gICAgYWN0aXZlV2luZG93SWQ6IHN0cmluZyB8IG51bGw7XG4gICAgbWVzc2FnZUJ1cz86IE1lc3NhZ2VCdXM7XG59XG5cbmNsYXNzIENvbXBpbGVyU2VydmljZSBpbXBsZW1lbnRzIENvbXBpbGVyUHJvdG9jb2wge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJveHk6IElQQ1Byb3h5O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdGU6IFNlcnZpY2VTdGF0ZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydW5uYWJsZUNvbmZpZ3VyYXRpb25Vbml0c1JlbGF0aW9uczogeyBbaWQ6IHN0cmluZ106IHN0cmluZ1tdIH07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKCkge1xuICAgICAgICBwcm9jZXNzLnRpdGxlID0gUHJvY2Vzc1RpdGxlLnNlcnZpY2U7XG5cbiAgICAgICAgY29uc3QgaW5wdXQgID0gZnMuY3JlYXRlUmVhZFN0cmVhbSgnJywgeyBmZDogU0VSVklDRV9JTlBVVF9GRCB9KTtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0oJycsIHsgZmQ6IFNFUlZJQ0VfT1VUUFVUX0ZEIH0pO1xuXG4gICAgICAgIHRoaXMucHJveHkgPSBuZXcgSVBDUHJveHkobmV3IFNlcnZpY2VUcmFuc3BvcnQoaW5wdXQsIG91dHB1dCwgU0VSVklDRV9TWU5DX0ZEKSk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLl9pbml0U3RhdGUoKTtcblxuICAgICAgICB0aGlzLl9ydW5uYWJsZUNvbmZpZ3VyYXRpb25Vbml0c1JlbGF0aW9ucyA9IHt9O1xuXG4gICAgICAgIHRoaXMuX3JlZ2lzdGVyRXJyb3JIYW5kbGVycygpO1xuICAgICAgICB0aGlzLl9zZXR1cFJvdXRlcygpO1xuICAgICAgICB0aGlzLnJlYWR5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5pdFN0YXRlICgpOiBTZXJ2aWNlU3RhdGUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGVzdFJ1bnM6ICAgIHt9LFxuICAgICAgICAgICAgZml4dHVyZUN0eHM6IHt9LFxuICAgICAgICAgICAgdW5pdHM6ICAgICAgIHt9LFxuICAgICAgICAgICAgb3B0aW9uczogICAgIHt9LFxuICAgICAgICAgICAgcm9sZXM6ICAgICAgIG5ldyBNYXA8c3RyaW5nLCBSb2xlPigpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2hhbmRsZVVuZXhwZWN0ZWRFcnJvciAoRXJyb3JDdG9yOiBGdW5jdGlvbiwgZXJyb3I6IEVycm9yKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBmb3JtYXRFcnJvcihFcnJvckN0b3IsIGVycm9yKTtcbiAgICAgICAgY29uc3QgdHlwZSAgICA9IEVycm9yQ3Rvci5uYW1lO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuYWRkVW5leHBlY3RlZEVycm9yKHsgdHlwZSwgbWVzc2FnZSB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZWdpc3RlckVycm9ySGFuZGxlcnMgKCk6IHZvaWQge1xuICAgICAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBhc3luYyBlID0+IHRoaXMuX2hhbmRsZVVuZXhwZWN0ZWRFcnJvcihVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uRXJyb3IsIGUgYXMgRXJyb3IpKTtcbiAgICAgICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBhc3luYyBlID0+IHRoaXMuX2hhbmRsZVVuZXhwZWN0ZWRFcnJvcihVbmNhdWdodEV4Y2VwdGlvbkVycm9yLCBlIGFzIEVycm9yKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Rml4dHVyZUN0eCAodW5pdDogVW5pdCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IGZpeHR1cmVJZCA9IGlzVGVzdCh1bml0KSA/ICh1bml0LmZpeHR1cmUgYXMgRml4dHVyZSkuaWQgOiAodW5pdCBhcyBGaXh0dXJlKS5pZDtcblxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5maXh0dXJlQ3R4c1tmaXh0dXJlSWRdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFRlc3RDdHggKHsgdGVzdFJ1bklkIH06IFJ1blRlc3RBcmd1bWVudHMsIHVuaXQ6IFVuaXQpOiBUZXN0UnVuUHJveHkge1xuICAgICAgICBjb25zdCB0ZXN0UnVuUHJveHkgPSB0aGlzLl9nZXRUYXJnZXRUZXN0UnVuKHRlc3RSdW5JZCk7XG5cbiAgICAgICAgdGVzdFJ1blByb3h5LmZpeHR1cmVDdHggPSB0aGlzLl9nZXRGaXh0dXJlQ3R4KHVuaXQpO1xuXG4gICAgICAgIHJldHVybiB0ZXN0UnVuUHJveHk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Q29udGV4dCAoYXJnczogUnVuVGVzdEFyZ3VtZW50cywgdW5pdDogVW5pdCk6IFRlc3RSdW5Qcm94eSB8IHVua25vd24ge1xuICAgICAgICBjb25zdCB7IHRlc3RSdW5JZCB9ID0gYXJncztcblxuICAgICAgICBpZiAodGVzdFJ1bklkKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRlc3RDdHgoYXJncywgdW5pdCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEZpeHR1cmVDdHgodW5pdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0dXBSb3V0ZXMgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3h5LnJlZ2lzdGVyKFtcbiAgICAgICAgICAgIHRoaXMuZ2V0VGVzdHMsXG4gICAgICAgICAgICB0aGlzLnJ1blRlc3RGbixcbiAgICAgICAgICAgIHRoaXMuY2xlYW5VcCxcbiAgICAgICAgICAgIHRoaXMuc2V0VXNlclZhcmlhYmxlcyxcbiAgICAgICAgICAgIHRoaXMuc2V0T3B0aW9ucyxcbiAgICAgICAgICAgIHRoaXMub25SZXF1ZXN0SG9va0V2ZW50LFxuICAgICAgICAgICAgdGhpcy5zZXRNb2NrLFxuICAgICAgICAgICAgdGhpcy5zZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucyxcbiAgICAgICAgICAgIHRoaXMuc2V0SGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50LFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnQsXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVSZXF1ZXN0RmlsdGVyUnVsZVByZWRpY2F0ZSxcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZU1vY2tQcmVkaWNhdGUsXG4gICAgICAgICAgICB0aGlzLmdldFdhcm5pbmdNZXNzYWdlcyxcbiAgICAgICAgICAgIHRoaXMuYWRkUmVxdWVzdEV2ZW50TGlzdGVuZXJzLFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnMsXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVUZXN0UnVuRGF0YSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXNzZXJ0aW9uQWN0dWFsVmFsdWUsXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVSb2xlSW5pdEZuLFxuICAgICAgICAgICAgdGhpcy5nZXRDdHgsXG4gICAgICAgICAgICB0aGlzLmdldEZpeHR1cmVDdHgsXG4gICAgICAgICAgICB0aGlzLnNldEN0eCxcbiAgICAgICAgICAgIHRoaXMuc2V0Rml4dHVyZUN0eCxcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUm9sZVByb3BlcnR5LFxuICAgICAgICAgICAgdGhpcy5leGVjdXRlSnNFeHByZXNzaW9uLFxuICAgICAgICAgICAgdGhpcy5leGVjdXRlQXN5bmNKc0V4cHJlc3Npb24sXG4gICAgICAgICAgICB0aGlzLmFkZFVuZXhwZWN0ZWRFcnJvcixcbiAgICAgICAgICAgIHRoaXMuY2hlY2tXaW5kb3csXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVRlc3RSdW5Gcm9tU3RhdGUsXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZpeHR1cmVDdHhzRnJvbVN0YXRlLFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVVbml0c0Zyb21TdGF0ZSxcbiAgICAgICAgXSwgdGhpcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0RnVuY3Rpb24gKHVuaXQ6IFVuaXQsIGZ1bmN0aW9uTmFtZTogRnVuY3Rpb25Qcm9wZXJ0aWVzKTogRnVuY3Rpb258bnVsbCB7XG4gICAgICAgIGlmIChpc1Rlc3QodW5pdCkgJiYgaXNUZXN0RnVuY3Rpb25Qcm9wZXJ0eShmdW5jdGlvbk5hbWUpKVxuICAgICAgICAgICAgcmV0dXJuIHVuaXRbZnVuY3Rpb25OYW1lXTtcblxuICAgICAgICBpZiAoaXNGaXh0dXJlKHVuaXQpICYmIGlzRml4dHVyZUZ1bmN0aW9uUHJvcGVydHkoZnVuY3Rpb25OYW1lKSlcbiAgICAgICAgICAgIHJldHVybiB1bml0W2Z1bmN0aW9uTmFtZV07XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCAnJHtmdW5jdGlvbk5hbWV9JyBmdW5jdGlvbiBmb3IgJHt0eXBlb2YgdW5pdH1gKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF93cmFwRXZlbnRNZXRob2RzICh7IG5hbWUsIHRlc3RJZCwgaG9va0lkLCBldmVudERhdGEgfTogUmVxdWVzdEhvb2tFdmVudEFyZ3VtZW50cyk6IHZvaWQge1xuICAgICAgICBpZiAobmFtZSA9PT0gUmVxdWVzdEhvb2tNZXRob2ROYW1lcy5vblJlcXVlc3QpXG4gICAgICAgICAgICB0aGlzLl93cmFwU2V0TW9ja0ZuKHsgdGVzdElkLCBob29rSWQsIGV2ZW50OiBldmVudERhdGEgYXMgUmVxdWVzdEV2ZW50IH0pO1xuICAgICAgICBlbHNlIGlmIChuYW1lID09PSBSZXF1ZXN0SG9va01ldGhvZE5hbWVzLl9vbkNvbmZpZ3VyZVJlc3BvbnNlKVxuICAgICAgICAgICAgdGhpcy5fd3JhcENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRNZXRob2RzKGV2ZW50RGF0YSBhcyBDb25maWd1cmVSZXNwb25zZUV2ZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF93cmFwU2V0TW9ja0ZuICh7IHRlc3RJZCwgaG9va0lkLCBldmVudCB9OiBXcmFwU2V0TW9ja0FyZ3VtZW50cyk6IHZvaWQge1xuICAgICAgICBldmVudC5zZXRNb2NrID0gYXN5bmMgKG1vY2s6IFJlc3BvbnNlTW9jaykgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRNb2NrKHtcbiAgICAgICAgICAgICAgICByZXNwb25zZUV2ZW50SWQ6IGV2ZW50LmlkLFxuICAgICAgICAgICAgICAgIHJ1bGVJZDogICAgICAgICAgZXZlbnQucmVxdWVzdEZpbHRlclJ1bGUuaWQsXG4gICAgICAgICAgICAgICAgdGVzdElkLFxuICAgICAgICAgICAgICAgIGhvb2tJZCxcbiAgICAgICAgICAgICAgICBtb2NrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfd3JhcENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRNZXRob2RzIChldmVudDogQ29uZmlndXJlUmVzcG9uc2VFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zZXRIZWFkZXIgPSBhc3luYyAobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldEhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCh7XG4gICAgICAgICAgICAgICAgZXZlbnRJZDogICAgIGV2ZW50LmlkLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICBuYW1lLFxuICAgICAgICAgICAgICAgIGhlYWRlclZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGV2ZW50LnJlbW92ZUhlYWRlciA9IGFzeW5jIChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50KHtcbiAgICAgICAgICAgICAgICBldmVudElkOiAgICBldmVudC5pZCxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBuYW1lLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVRlc3RSdW5Qcm94eSAoeyB0ZXN0UnVuSWQsIHRlc3QsIGJyb3dzZXIsIGFjdGl2ZVdpbmRvd0lkLCBtZXNzYWdlQnVzIH06IEluaXRUZXN0UnVuUHJveHlEYXRhKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRlc3RSdW5Qcm94eSA9IG5ldyBUZXN0UnVuUHJveHkoe1xuICAgICAgICAgICAgZGlzcGF0Y2hlcjogdGhpcyxcbiAgICAgICAgICAgIGlkOiAgICAgICAgIHRlc3RSdW5JZCxcbiAgICAgICAgICAgIG9wdGlvbnM6ICAgIHRoaXMuc3RhdGUub3B0aW9ucyxcbiAgICAgICAgICAgIHRlc3QsXG4gICAgICAgICAgICBicm93c2VyLFxuICAgICAgICAgICAgYWN0aXZlV2luZG93SWQsXG4gICAgICAgICAgICBtZXNzYWdlQnVzLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN0YXRlLnRlc3RSdW5zW3Rlc3RSdW5JZF0gPSB0ZXN0UnVuUHJveHk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUZpeHR1cmVDdHggKHRlc3Q6IFRlc3QpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZml4dHVyZUlkID0gKHRlc3QuZml4dHVyZSBhcyBGaXh0dXJlKS5pZDtcblxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5maXh0dXJlQ3R4c1tmaXh0dXJlSWRdKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc3RhdGUuZml4dHVyZUN0eHNbZml4dHVyZUlkXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0VGFyZ2V0VGVzdFJ1biAodGVzdFJ1bklkOiBzdHJpbmcpOiBUZXN0UnVuUHJveHkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS50ZXN0UnVuc1t0ZXN0UnVuSWRdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFRhcmdldFJvbGUgKHJvbGVJZDogc3RyaW5nKTogUm9sZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnJvbGVzLmdldChyb2xlSWQpIGFzIFJvbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFVzZXJWYXJpYWJsZXMgKHZhbHVlOiBVc2VyVmFyaWFibGVzIHwgbnVsbCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB1c2VyVmFyaWFibGVzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0VW5pdElkcyAodGVzdHM6IFRlc3RbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgdGVzdElkcyAgICAgPSB0ZXN0cy5tYXAodGVzdCA9PiB0ZXN0LmlkKTtcbiAgICAgICAgY29uc3QgZml4dHVyZUlkcyAgPSB0ZXN0cy5tYXAodGVzdCA9PiB0ZXN0LmZpeHR1cmU/LmlkKSBhcyBzdHJpbmdbXTtcbiAgICAgICAgY29uc3QgdGVzdEZpbGVJZHMgPSB0ZXN0cy5tYXAodGVzdCA9PiB0ZXN0LnRlc3RGaWxlLmlkKTtcblxuICAgICAgICByZXR1cm4gdW5pcShbLi4udGVzdElkcywgLi4uZml4dHVyZUlkcywgLi4udGVzdEZpbGVJZHNdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0T3B0aW9ucyAoeyB2YWx1ZSB9OiBTZXRPcHRpb25zQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc3RhdGUub3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWFkeSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMucHJveHkuY2FsbCh0aGlzLnJlYWR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xlYW5VcCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IENvbXBpbGVyLmNsZWFuVXAoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0VGVzdHMgKHsgc291cmNlTGlzdCwgY29tcGlsZXJPcHRpb25zLCBydW5uYWJsZUNvbmZpZ3VyYXRpb25JZCB9OiBDb21waWxlckFyZ3VtZW50cywgYmFzZVVybD86IHN0cmluZyk6IFByb21pc2U8VW5pdHM+IHtcbiAgICAgICAgY29uc3QgY29tcGlsZXIgPSBuZXcgQ29tcGlsZXIoc291cmNlTGlzdCwgY29tcGlsZXJPcHRpb25zLCB7IGlzQ29tcGlsZXJTZXJ2aWNlTW9kZTogdHJ1ZSwgYmFzZVVybCB9KTtcblxuICAgICAgICBjb25zdCB0ZXN0cyAgID0gYXdhaXQgY29tcGlsZXIuZ2V0VGVzdHMoKTtcbiAgICAgICAgY29uc3QgdW5pdHMgICA9IGZsYXR0ZW5UZXN0U3RydWN0dXJlKHRlc3RzKTtcbiAgICAgICAgY29uc3QgdW5pdElkcyA9IHRoaXMuX2dldFVuaXRJZHModGVzdHMpO1xuXG4gICAgICAgIHRoaXMuX3J1bm5hYmxlQ29uZmlndXJhdGlvblVuaXRzUmVsYXRpb25zW3J1bm5hYmxlQ29uZmlndXJhdGlvbklkXSA9IHVuaXRJZHM7XG5cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLnN0YXRlLnVuaXRzLCB1bml0cyk7XG5cbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVRlc3RTdHJ1Y3R1cmUodW5pdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBydW5UZXN0Rm4gKGFyZ3M6IFJ1blRlc3RBcmd1bWVudHMpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgY29uc3QgeyBpZCwgZnVuY3Rpb25OYW1lIH0gPSBhcmdzO1xuXG4gICAgICAgIGNvbnN0IHVuaXQgICAgICAgICAgID0gdGhpcy5zdGF0ZS51bml0c1tpZF07XG4gICAgICAgIGNvbnN0IGNvbnRleHQgICAgICAgID0gdGhpcy5fZ2V0Q29udGV4dChhcmdzLCB1bml0KTtcbiAgICAgICAgY29uc3QgZnVuY3Rpb25PYmplY3QgPSB0aGlzLl9nZXRGdW5jdGlvbih1bml0LCBmdW5jdGlvbk5hbWUpO1xuXG4gICAgICAgIGlmICghZnVuY3Rpb25PYmplY3QpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHRoZSBcIiR7ZnVuY3Rpb25OYW1lfVwiIG9mICR7dHlwZW9mIHVuaXR9YCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGZ1bmN0aW9uT2JqZWN0KGNvbnRleHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGVjdXRlQ29tbWFuZFN5bmMgKHsgaWQsIGNvbW1hbmQsIGNhbGxzaXRlIH06IEV4ZWN1dGVDb21tYW5kQXJndW1lbnRzKTogdW5rbm93biB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5LmNhbGxTeW5jKHRoaXMuZXhlY3V0ZUNvbW1hbmQsIHsgaWQsIGNvbW1hbmQsIGNhbGxzaXRlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQ29tbWFuZCAoeyBjb21tYW5kLCBpZCwgY2FsbHNpdGUgfTogRXhlY3V0ZUNvbW1hbmRBcmd1bWVudHMpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuY2FsbCh0aGlzLmV4ZWN1dGVDb21tYW5kLCB7IGlkLCBjb21tYW5kLCBjYWxsc2l0ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgb25SZXF1ZXN0SG9va0V2ZW50ICh7IG5hbWUsIHRlc3RJZCwgaG9va0lkLCBldmVudERhdGEgfTogUmVxdWVzdEhvb2tFdmVudEFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl93cmFwRXZlbnRNZXRob2RzKHsgbmFtZSwgdGVzdElkLCBob29rSWQsIGV2ZW50RGF0YSB9KTtcblxuICAgICAgICBjb25zdCB0ZXN0ICAgICAgID0gdGhpcy5zdGF0ZS51bml0c1t0ZXN0SWRdIGFzIFRlc3Q7XG4gICAgICAgIGNvbnN0IHRhcmdldEhvb2sgPSB0ZXN0LnJlcXVlc3RIb29rcy5maW5kKGhvb2sgPT4gaG9vay5pZCA9PT0gaG9va0lkKSBhcyBSZXF1ZXN0SG9vaztcblxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGF3YWl0IHRhcmdldEhvb2tbbmFtZV0uY2FsbCh0YXJnZXRIb29rLCBldmVudERhdGEpO1xuXG4gICAgICAgIGlmIChuYW1lID09PSBSZXF1ZXN0SG9va01ldGhvZE5hbWVzLl9vbkNvbmZpZ3VyZVJlc3BvbnNlICYmIHRhcmdldEhvb2suX3Jlc3BvbnNlRXZlbnRDb25maWd1cmVPcHRzKSB7XG4gICAgICAgICAgICBjb25zdCB7IG9wdHMsIGlkOiBldmVudElkIH0gPSBldmVudERhdGEgYXMgQ29uZmlndXJlUmVzcG9uc2VFdmVudDtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucyh7IGV2ZW50SWQsIG9wdHMgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0TW9jayAoeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXNwb25zZUV2ZW50SWQsIG1vY2sgfTogU2V0TW9ja0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnByb3h5LmNhbGwodGhpcy5zZXRNb2NrLCB7IHRlc3RJZCwgaG9va0lkLCBydWxlSWQsIHJlc3BvbnNlRXZlbnRJZCwgbW9jayB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0Q29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnMgKHsgZXZlbnRJZCwgb3B0cyB9OiBTZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9uc0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnByb3h5LmNhbGwodGhpcy5zZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucywgeyBldmVudElkLCBvcHRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnQgKHsgZXZlbnRJZCwgaGVhZGVyTmFtZSwgaGVhZGVyVmFsdWUgfTogU2V0SGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJveHkuY2FsbCh0aGlzLnNldEhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCwgeyBldmVudElkLCBoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50ICh7IGV2ZW50SWQsIGhlYWRlck5hbWUgfTogUmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJveHkuY2FsbCh0aGlzLnJlbW92ZUhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCwgeyBldmVudElkLCBoZWFkZXJOYW1lIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUgKHsgdGVzdElkLCBob29rSWQsIHJ1bGVJZCwgcmVxdWVzdEluZm8gfTogRXhlY3V0ZVJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlQXJndW1lbnRzKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHRlc3QgICAgICAgPSB0aGlzLnN0YXRlLnVuaXRzW3Rlc3RJZF0gYXMgVGVzdDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SG9vayA9IHRlc3QucmVxdWVzdEhvb2tzLmZpbmQoaG9vayA9PiBob29rLmlkID09PSBob29rSWQpIGFzIFJlcXVlc3RIb29rO1xuICAgICAgICBjb25zdCB0YXJnZXRSdWxlID0gdGFyZ2V0SG9vay5fcmVxdWVzdEZpbHRlclJ1bGVzLmZpbmQocnVsZSA9PiBydWxlLmlkID09PSBydWxlSWQpIGFzIFJlcXVlc3RGaWx0ZXJSdWxlO1xuICAgICAgICBjb25zdCByZXN1bHQgICAgID0gYXdhaXQgdGFyZ2V0UnVsZS5vcHRpb25zLmNhbGwodGFyZ2V0UnVsZSwgcmVxdWVzdEluZm8pO1xuXG4gICAgICAgIHJldHVybiAhIXJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZU1vY2tQcmVkaWNhdGUgKHsgdGVzdElkLCBob29rSWQsIHJ1bGVJZCwgcmVxdWVzdEluZm8sIHJlcyB9OiBFeGVjdXRlTW9ja1ByZWRpY2F0ZSk6IFByb21pc2U8SW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zPiB7XG4gICAgICAgIGNvbnN0IHRlc3QgICAgICAgICA9IHRoaXMuc3RhdGUudW5pdHNbdGVzdElkXSBhcyBUZXN0O1xuICAgICAgICBjb25zdCByZXF1ZXN0TW9jayAgPSB0ZXN0LnJlcXVlc3RIb29rcy5maW5kKGhvb2sgPT4gaG9vay5pZCA9PT0gaG9va0lkKSBhcyBSZXF1ZXN0TW9jaztcbiAgICAgICAgY29uc3QgcmVzcG9uc2VNb2NrID0gcmVxdWVzdE1vY2subW9ja3MuZ2V0KHJ1bGVJZCkgYXMgUmVzcG9uc2VNb2NrO1xuXG4gICAgICAgIHJlc3BvbnNlTW9ja1NldEJvZHlNZXRob2QuYWRkKHJlcyk7XG5cbiAgICAgICAgcmVzID0gT2JqZWN0LmFzc2lnbihyZXMsIGF3YWl0IChyZXNwb25zZU1vY2suYm9keSBhcyBGdW5jdGlvbikocmVxdWVzdEluZm8sIHJlcykpO1xuXG4gICAgICAgIHJlc3BvbnNlTW9ja1NldEJvZHlNZXRob2QucmVtb3ZlKHJlcyk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0V2FybmluZ01lc3NhZ2VzICh7IHRlc3RSdW5JZCB9OiBUZXN0UnVuTG9jYXRvcik6IFByb21pc2U8V2FybmluZ0xvZ01lc3NhZ2VbXT4ge1xuICAgICAgICAvLyBOT1RFOiBJbiBjYXNlIG9mIHJhaXNpbmcgYW4gZXJyb3IgaW50byBSZXBvcnRlclBsdWdpbkhvc3QgbWV0aG9kcyxcbiAgICAgICAgLy8gVGVzdFJ1biBoYXMgdGltZSB0byBzdGFydC5cbiAgICAgICAgY29uc3QgdGFyZ2V0VGVzdFJ1biA9IHRoaXMuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKTtcblxuICAgICAgICByZXR1cm4gdGFyZ2V0VGVzdFJ1biA/IHRhcmdldFRlc3RSdW4ud2FybmluZ0xvZy5tZXNzYWdlSW5mb3MgOiBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWRkUmVxdWVzdEV2ZW50TGlzdGVuZXJzICggeyBob29rSWQsIGhvb2tDbGFzc05hbWUsIHJ1bGVzIH06IEFkZFJlcXVlc3RFdmVudExpc3RlbmVyc0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eS5jYWxsKHRoaXMuYWRkUmVxdWVzdEV2ZW50TGlzdGVuZXJzLCB7IGhvb2tJZCwgaG9va0NsYXNzTmFtZSwgcnVsZXMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVycyAoeyBydWxlcyB9OiBSZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHkuY2FsbCh0aGlzLnJlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVycywgeyBydWxlcyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZVRlc3RSdW5EYXRhICh7IHRlc3RSdW5JZCwgdGVzdElkLCBicm93c2VyLCBhY3RpdmVXaW5kb3dJZCwgbWVzc2FnZUJ1cyB9OiBJbml0aWFsaXplVGVzdFJ1bkRhdGFBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gTk9URTogSW4gY2FzZSBvZiByYWlzaW5nIGFuIGVycm9yIGludG8gUmVwb3J0ZXJQbHVnaW5Ib3N0IG1ldGhvZHMsXG4gICAgICAgIC8vIFRlc3RSdW4gaGFzIHRpbWUgdG8gc3RhcnQuXG4gICAgICAgIGNvbnN0IHRlc3QgPSB0aGlzLnN0YXRlLnVuaXRzW3Rlc3RJZF0gYXMgVGVzdDtcblxuICAgICAgICBpZiAoIXRlc3QpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVRlc3RSdW5Qcm94eSh7IHRlc3RSdW5JZCwgdGVzdCwgYnJvd3NlciwgYWN0aXZlV2luZG93SWQsIG1lc3NhZ2VCdXMgfSk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVGaXh0dXJlQ3R4KHRlc3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbmFibGVEZWJ1Z0Zvck5vbkRlYnVnQ29tbWFuZHMgKCk6IHZvaWQge1xuICAgICAgICBUZXN0Q29udHJvbGxlci5lbmFibGVEZWJ1Z0Zvck5vbkRlYnVnQ29tbWFuZHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzYWJsZURlYnVnRm9yTm9uRGVidWdDb21tYW5kcyAoKTogdm9pZCB7XG4gICAgICAgIFRlc3RDb250cm9sbGVyLmRpc2FibGVEZWJ1Z0Zvck5vbkRlYnVnQ29tbWFuZHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXNzZXJ0aW9uQWN0dWFsVmFsdWUgKHsgdGVzdFJ1bklkLCBjb21tYW5kSWQgfTogQ29tbWFuZExvY2F0b3IpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKS5nZXRBc3NlcnRpb25BY3R1YWxWYWx1ZShjb21tYW5kSWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlUm9sZUluaXRGbiAoeyB0ZXN0UnVuSWQsIHJvbGVJZCB9OiBFeGVjdXRlUm9sZUluaXRGbkFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCByb2xlICAgICAgICAgPSB0aGlzLl9nZXRUYXJnZXRSb2xlKHJvbGVJZCk7XG4gICAgICAgIGNvbnN0IHRlc3RSdW5Qcm94eSA9IHRoaXMuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKTtcblxuICAgICAgICByZXR1cm4gKHJvbGUuX2luaXRGbiBhcyBGdW5jdGlvbikodGVzdFJ1blByb3h5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q3R4ICh7IHRlc3RSdW5JZCB9OiBUZXN0UnVuTG9jYXRvcik6IFByb21pc2U8b2JqZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRUYXJnZXRUZXN0UnVuKHRlc3RSdW5JZCkuY3R4O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGaXh0dXJlQ3R4ICh7IHRlc3RSdW5JZCB9OiBUZXN0UnVuTG9jYXRvcik6IFByb21pc2U8b2JqZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRUYXJnZXRUZXN0UnVuKHRlc3RSdW5JZCkuZml4dHVyZUN0eDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0Q3R4ICh7IHRlc3RSdW5JZCwgdmFsdWUgfTogU2V0Q3R4QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKS5jdHggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0Rml4dHVyZUN0eCAoeyB0ZXN0UnVuSWQsIHZhbHVlIH06IFNldEN0eEFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9nZXRUYXJnZXRUZXN0UnVuKHRlc3RSdW5JZCkuZml4dHVyZUN0eCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJvbGVBcHBlYXJlZCAocm9sZTogUm9sZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5yb2xlcy5oYXMocm9sZS5pZCkpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5zdGF0ZS5yb2xlcy5zZXQocm9sZS5pZCwgcm9sZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHVwZGF0ZVJvbGVQcm9wZXJ0eSAoeyByb2xlSWQsIG5hbWUsIHZhbHVlIH06IFVwZGF0ZVJvbGVQcm9wZXJ0eUFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCByb2xlID0gdGhpcy5fZ2V0VGFyZ2V0Um9sZShyb2xlSWQpO1xuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcm9sZVtuYW1lXSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlSnNFeHByZXNzaW9uICh7IGV4cHJlc3Npb24sIHRlc3RSdW5JZCwgb3B0aW9ucyB9OiBFeGVjdXRlSnNFeHByZXNzaW9uQXJndW1lbnRzKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IHRlc3RSdW5Qcm94eSA9IHRoaXMuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKTtcblxuICAgICAgICByZXR1cm4gZXhlY3V0ZUpzRXhwcmVzc2lvbihleHByZXNzaW9uLCB0ZXN0UnVuUHJveHksIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQXN5bmNKc0V4cHJlc3Npb24gKHsgZXhwcmVzc2lvbiwgdGVzdFJ1bklkLCBjYWxsc2l0ZSB9OiBFeGVjdXRlQXN5bmNKc0V4cHJlc3Npb25Bcmd1bWVudHMpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgY29uc3QgdGVzdFJ1blByb3h5ID0gdGhpcy5fZ2V0VGFyZ2V0VGVzdFJ1bih0ZXN0UnVuSWQpO1xuXG4gICAgICAgIHJldHVybiBleGVjdXRlQXN5bmNKc0V4cHJlc3Npb24oZXhwcmVzc2lvbiwgdGVzdFJ1blByb3h5LCBjYWxsc2l0ZSwgYXN5bmMgKGVycjogVW5jYXVnaHRUZXN0Q2FmZUVycm9ySW5DdXN0b21TY3JpcHQgfCBVbmNhdWdodEVycm9ySW5DdXN0b21TY3JpcHQpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBVbmNhdWdodFRlc3RDYWZlRXJyb3JJbkN1c3RvbVNjcmlwdCA9PT0gZmFsc2UpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRFcnJvciA9IGVyciBhcyBVbmNhdWdodFRlc3RDYWZlRXJyb3JJbkN1c3RvbVNjcmlwdDtcblxuICAgICAgICAgICAgaWYgKCFzaG91bGRSZW5kZXJIdG1sV2l0aG91dFN0YWNrKHRhcmdldEVycm9yKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIHRlc3RSdW5Qcm94eS5yZXN0b3JlT3JpZ2luQ2FsbHNpdGVGb3JFcnJvcih0YXJnZXRFcnJvcik7XG5cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGVyci5lcnJDYWxsc2l0ZSA9IHJlbmRlckh0bWxXaXRob3V0U3RhY2sodGFyZ2V0RXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUFzc2VydGlvbkZuICh7IHRlc3RSdW5JZCwgY29tbWFuZElkIH06IENvbW1hbmRMb2NhdG9yKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICAgICAgICAuX2dldFRhcmdldFRlc3RSdW4odGVzdFJ1bklkKVxuICAgICAgICAgICAgLmV4ZWN1dGVBc3NlcnRpb25Gbihjb21tYW5kSWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBhZGRVbmV4cGVjdGVkRXJyb3IgKHsgdHlwZSwgbWVzc2FnZSB9OiBBZGRVbmV4cGVjdGVkRXJyb3JBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHkuY2FsbCh0aGlzLmFkZFVuZXhwZWN0ZWRFcnJvciwgeyB0eXBlLCBtZXNzYWdlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjaGVja1dpbmRvdyAoeyB0ZXN0UnVuSWQsIGNvbW1hbmRJZCwgdXJsLCB0aXRsZSB9OiBDaGVja1dpbmRvd0FyZ3VtZW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgICAgICAgICAgIC5fZ2V0VGFyZ2V0VGVzdFJ1bih0ZXN0UnVuSWQpXG4gICAgICAgICAgICAgICAgLmNoZWNrV2luZG93KGNvbW1hbmRJZCwgeyB0aXRsZSwgdXJsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFN3aXRjaFRvV2luZG93UHJlZGljYXRlRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZVRlc3RSdW5Gcm9tU3RhdGUgKHsgdGVzdFJ1bklkIH06IFRlc3RSdW5Mb2NhdG9yKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnN0YXRlLnRlc3RSdW5zW3Rlc3RSdW5JZF07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZUZpeHR1cmVDdHhzRnJvbVN0YXRlICh7IGZpeHR1cmVJZHMgfTogUmVtb3ZlRml4dHVyZUN0eHNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBmaXh0dXJlSWQgb2YgZml4dHVyZUlkcylcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnN0YXRlLmZpeHR1cmVDdHhzW2ZpeHR1cmVJZF07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZVVuaXRzRnJvbVN0YXRlICh7IHJ1bm5hYmxlQ29uZmlndXJhdGlvbklkIH06IFJlbW92ZVVuaXRzRnJvbVN0YXRlQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHVuaXRJZHMgPSB0aGlzLl9ydW5uYWJsZUNvbmZpZ3VyYXRpb25Vbml0c1JlbGF0aW9uc1tydW5uYWJsZUNvbmZpZ3VyYXRpb25JZF07XG5cbiAgICAgICAgZm9yIChjb25zdCB1bml0SWQgb2YgdW5pdElkcylcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnN0YXRlLnVuaXRzW3VuaXRJZF07XG5cbiAgICAgICAgZGVsZXRlIHRoaXMuX3J1bm5hYmxlQ29uZmlndXJhdGlvblVuaXRzUmVsYXRpb25zW3J1bm5hYmxlQ29uZmlndXJhdGlvbklkXTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBDb21waWxlclNlcnZpY2UoKTtcbiJdfQ==
|
|
@@ -53,22 +53,22 @@ class TestRunProxy extends async_event_emitter_1.default {
|
|
|
53
53
|
hook._warningLog = null;
|
|
54
54
|
}
|
|
55
55
|
_storeAssertionCommand(command) {
|
|
56
|
-
command.id = testcafe_hammerhead_1.generateUniqueId();
|
|
56
|
+
command.id = (0, testcafe_hammerhead_1.generateUniqueId)();
|
|
57
57
|
this.assertionCommands.set(command.id, command);
|
|
58
58
|
}
|
|
59
59
|
_storeSwitchToWindowByPredicateCommand(command) {
|
|
60
|
-
command.id = testcafe_hammerhead_1.generateUniqueId();
|
|
60
|
+
command.id = (0, testcafe_hammerhead_1.generateUniqueId)();
|
|
61
61
|
this.switchToWindowByPredicateCommands.set(command.id, command);
|
|
62
62
|
}
|
|
63
63
|
_handleAssertionCommand(command) {
|
|
64
|
-
if (lodash_1.isFunction(command.actual)) {
|
|
64
|
+
if ((0, lodash_1.isFunction)(command.actual)) {
|
|
65
65
|
command.originActual = command.actual;
|
|
66
66
|
command.actual = new marker_1.FunctionMarker();
|
|
67
67
|
this._storeAssertionCommand(command);
|
|
68
68
|
}
|
|
69
69
|
else if (command.actual instanceof re_executable_promise_1.default)
|
|
70
70
|
this._storeAssertionCommand(command);
|
|
71
|
-
else if (thennable_1.isThennable(command.actual)) {
|
|
71
|
+
else if ((0, thennable_1.isThennable)(command.actual)) {
|
|
72
72
|
command.originActual = command.actual;
|
|
73
73
|
command.actual = new marker_2.PromiseMarker();
|
|
74
74
|
this._storeAssertionCommand(command);
|
|
@@ -81,7 +81,7 @@ class TestRunProxy extends async_event_emitter_1.default {
|
|
|
81
81
|
// @ts-ignore
|
|
82
82
|
if ((callsite === null || callsite === void 0 ? void 0 : callsite.filename) !== constants_1.ERROR_FILENAME)
|
|
83
83
|
return;
|
|
84
|
-
const id = testcafe_hammerhead_1.generateUniqueId();
|
|
84
|
+
const id = (0, testcafe_hammerhead_1.generateUniqueId)();
|
|
85
85
|
// @ts-ignore
|
|
86
86
|
callsite.id = id;
|
|
87
87
|
this.asyncJsExpressionCallsites.set(id, callsite);
|
|
@@ -128,7 +128,7 @@ class TestRunProxy extends async_event_emitter_1.default {
|
|
|
128
128
|
async removeRequestHook(hook) {
|
|
129
129
|
if (!this.test.requestHooks.includes(hook))
|
|
130
130
|
return;
|
|
131
|
-
lodash_1.pull(this.test.requestHooks, hook);
|
|
131
|
+
(0, lodash_1.pull)(this.test.requestHooks, hook);
|
|
132
132
|
this._detachWarningLog(hook);
|
|
133
133
|
await this.dispatcher.removeRequestEventListeners({ rules: hook._requestFilterRules });
|
|
134
134
|
}
|
|
@@ -139,7 +139,7 @@ class TestRunProxy extends async_event_emitter_1.default {
|
|
|
139
139
|
async executeAssertionFn(commandId) {
|
|
140
140
|
const command = this.assertionCommands.get(commandId);
|
|
141
141
|
command.actual = command.originActual;
|
|
142
|
-
const fn = get_fn_1.default(command);
|
|
142
|
+
const fn = (0, get_fn_1.default)(command);
|
|
143
143
|
return await fn();
|
|
144
144
|
}
|
|
145
145
|
restoreOriginCallsiteForError(err) {
|
|
@@ -153,4 +153,4 @@ class TestRunProxy extends async_event_emitter_1.default {
|
|
|
153
153
|
}
|
|
154
154
|
exports.default = TestRunProxy;
|
|
155
155
|
module.exports = exports.default;
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1ydW4tcHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY29tcGlsZXIvdGVzdC1ydW4tcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBMEM7QUFDMUMsa0ZBQXdEO0FBRXhELGdGQUF1RDtBQUN2RCwyR0FBaUY7QUFDakYsa0ZBQXlEO0FBR3pELHdFQUF3RDtBQUN4RCx1REFBOEU7QUFJOUUsNkRBQXVEO0FBU3ZELDhGQUFvRTtBQUNwRSwwRkFBZ0U7QUFDaEUsaUZBQXlEO0FBQ3pELDhFQUFnRjtBQUVoRixvR0FBeUc7QUFDekcscUVBQTRDO0FBQzVDLHFEQUFvRDtBQUNwRCxtR0FBdUc7QUFDdkcscUVBQXVGO0FBRXZGLE1BQU0sWUFBYSxTQUFRLDZCQUFpQjtJQW1CeEMsWUFBb0IsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQW9CO1FBQ3hHLEtBQUssRUFBRSxDQUFDO1FBWkwsY0FBUyxHQUFHLEtBQUssQ0FBQztRQWNyQixJQUFJLENBQUMsdUJBQWEsQ0FBQyxHQUFzQixJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBMEIsVUFBVSxDQUFDO1FBQ3BELElBQUksQ0FBQyxFQUFFLEdBQWtDLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFnQyxJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsR0FBaUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsVUFBVSxHQUEwQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxRQUFRLEdBQTRCLE9BQU8sQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUE2QixPQUFPLENBQUM7UUFDakQsSUFBSSxDQUFDLGlC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QUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQXFCLENBQUM7UUFFMUUsT0FBUSxPQUFPLENBQUMsTUFBOEIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGtCQUFrQixDQUFFLFNBQWlCO1FBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFxQixDQUFDO1FBRTFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUV0QyxNQUFNLEVBQUUsR0FBRyxnQkFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFCLE9BQU8sTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sNkJBQTZCLENBQUUsR0FBd0M7UUFDMUUsR0FBRyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFMUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTSxXQUFXLENBQUUsU0FBaUIsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQTRCO1FBQzNFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFxQyxDQUFDO1FBRTFHLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDSjtBQUVELGtCQUFlLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHB1bGwsIGlzRnVuY3Rpb24gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHRlc3RSdW5UcmFja2VyIGZyb20gJy4uLy4uL2FwaS90ZXN0LXJ1bi10cmFja2VyJztcbmltcG9ydCB7IFRlc3RSdW5EaXNwYXRjaGVyUHJvdG9jb2wgfSBmcm9tICcuL3Byb3RvY29sJztcbmltcG9ydCBUZXN0Q29udHJvbGxlciBmcm9tICcuLi8uLi9hcGkvdGVzdC1jb250cm9sbGVyJztcbmltcG9ydCBPYnNlcnZlZENhbGxzaXRlc1N0b3JhZ2UgZnJvbSAnLi4vLi4vdGVzdC1ydW4vb2JzZXJ2ZWQtY2FsbHNpdGVzLXN0b3JhZ2UnO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5pbXBvcnQgeyBBc3NlcnRpb25Db21tYW5kIH0gZnJvbSAnLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvYXNzZXJ0aW9uJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IENPTU1BTkRfVFlQRSBmcm9tICcuLi8uLi90ZXN0LXJ1bi9jb21tYW5kcy90eXBlJztcbmltcG9ydCB7IEFjdGlvbkNvbW1hbmRCYXNlLCBDb21tYW5kQmFzZSB9IGZyb20gJy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL2Jhc2UnO1xuaW1wb3J0IHsgVGVzdFJ1blByb3h5SW5pdCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFRlc3QgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS90ZXN0JztcbmltcG9ydCBSZXF1ZXN0SG9vayBmcm9tICcuLi8uLi9hcGkvcmVxdWVzdC1ob29rcy9ob29rJztcbmltcG9ydCB7IGdlbmVyYXRlVW5pcXVlSWQgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCB7IENhbGxzaXRlUmVjb3JkIH0gZnJvbSAnY2FsbHNpdGUtcmVjb3JkJztcblxuaW1wb3J0IHtcbiAgICBDaGVja1dpbmRvd1ByZWRpY2F0ZURhdGEsXG4gICAgU3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZUNvbW1hbmQsXG4gICAgVXNlUm9sZUNvbW1hbmQsXG59IGZyb20gJy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL2FjdGlvbnMnO1xuXG5pbXBvcnQgUmVFeGVjdXRhYmxlUHJvbWlzZSBmcm9tICcuLi8uLi91dGlscy9yZS1leGVjdXRhYmxlLXByb21pc2UnO1xuaW1wb3J0IEFzeW5jRXZlbnRFbWl0dGVyIGZyb20gJy4uLy4uL3V0aWxzL2FzeW5jLWV2ZW50LWVtaXR0ZXInO1xuaW1wb3J0IHRlc3RSdW5NYXJrZXIgZnJvbSAnLi4vLi4vdGVzdC1ydW4vbWFya2VyLXN5bWJvbCc7XG5pbXBvcnQgeyBFUlJPUl9GSUxFTkFNRSB9IGZyb20gJy4uLy4uL3Rlc3QtcnVuL2V4ZWN1dGUtanMtZXhwcmVzc2lvbi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVW5jYXVnaHRUZXN0Q2FmZUVycm9ySW5DdXN0b21TY3JpcHQgfSBmcm9tICcuLi8uLi9lcnJvcnMvdGVzdC1ydW4nO1xuaW1wb3J0IHsgRnVuY3Rpb25NYXJrZXIgfSBmcm9tICcuLi9zZXJpYWxpemF0aW9uL3JlcGxpY2F0b3IvdHJhbnNmb3Jtcy9mdW5jdGlvbi1tYXJrZXItdHJhbnNmb3JtL21hcmtlcic7XG5pbXBvcnQgZ2V0Rm4gZnJvbSAnLi4vLi4vYXNzZXJ0aW9ucy9nZXQtZm4nO1xuaW1wb3J0IHsgaXNUaGVubmFibGUgfSBmcm9tICcuLi8uLi91dGlscy90aGVubmFibGUnO1xuaW1wb3J0IHsgUHJvbWlzZU1hcmtlciB9IGZyb20gJy4uL3NlcmlhbGl6YXRpb24vcmVwbGljYXRvci90cmFuc2Zvcm1zL3Byb21pc2UtbWFya2VyLXRyYW5zZm9ybS9tYXJrZXInO1xuaW1wb3J0IHsgRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZEJhc2UgfSBmcm9tICcuLi8uLi90ZXN0LXJ1bi9jb21tYW5kcy9vYnNlcnZhdGlvbic7XG5cbmNsYXNzIFRlc3RSdW5Qcm94eSBleHRlbmRzIEFzeW5jRXZlbnRFbWl0dGVyIHtcbiAgICBwcml2YXRlIFt0ZXN0UnVuTWFya2VyXTogYm9vbGVhbjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGVzdDogVGVzdDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbGxlcjogVGVzdENvbnRyb2xsZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IG9ic2VydmVkQ2FsbHNpdGVzOiBPYnNlcnZlZENhbGxzaXRlc1N0b3JhZ2U7XG4gICAgcHVibGljIHJlYWRvbmx5IHdhcm5pbmdMb2c6IFdhcm5pbmdMb2c7XG4gICAgcHVibGljIGZpeHR1cmVDdHg6IG9iamVjdDtcbiAgICBwdWJsaWMgZGVidWdnaW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNwYXRjaGVyOiBUZXN0UnVuRGlzcGF0Y2hlclByb3RvY29sO1xuICAgIHB1YmxpYyBjdHg6IG9iamVjdDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBEaWN0aW9uYXJ5PE9wdGlvblZhbHVlPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzc2VydGlvbkNvbW1hbmRzOiBNYXA8c3RyaW5nLCBBc3NlcnRpb25Db21tYW5kPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN3aXRjaFRvV2luZG93QnlQcmVkaWNhdGVDb21tYW5kczogTWFwPHN0cmluZywgU3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZUNvbW1hbmQ+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXN5bmNKc0V4cHJlc3Npb25DYWxsc2l0ZXM6IE1hcDxzdHJpbmcsIENhbGxzaXRlUmVjb3JkPjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYnJvd3NlcjogQnJvd3NlcjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZU11bHRpcGxlV2luZG93czogYm9vbGVhbjtcbiAgICBwdWJsaWMgYWN0aXZlV2luZG93SWQ6IG51bGwgfCBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHsgZGlzcGF0Y2hlciwgaWQsIHRlc3QsIG9wdGlvbnMsIGJyb3dzZXIsIGFjdGl2ZVdpbmRvd0lkLCBtZXNzYWdlQnVzIH06IFRlc3RSdW5Qcm94eUluaXQpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzW3Rlc3RSdW5NYXJrZXJdICAgICAgICAgICAgICAgICAgICA9IHRydWU7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlciAgICAgICAgICAgICAgICAgICAgICAgID0gZGlzcGF0Y2hlcjtcbiAgICAgICAgdGhpcy5pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBpZDtcbiAgICAgICAgdGhpcy50ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSB0ZXN0O1xuICAgICAgICB0aGlzLmN0eCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMuZml4dHVyZUN0eCAgICAgICAgICAgICAgICAgICAgICAgID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLmJyb3dzZXIgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGJyb3dzZXI7XG4gICAgICAgIHRoaXMuYXNzZXJ0aW9uQ29tbWFuZHMgICAgICAgICAgICAgICAgID0gbmV3IE1hcDxzdHJpbmcsIEFzc2VydGlvbkNvbW1hbmQ+KCk7XG4gICAgICAgIHRoaXMuc3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZUNvbW1hbmRzID0gbmV3IE1hcDxzdHJpbmcsIFN3aXRjaFRvV2luZG93QnlQcmVkaWNhdGVDb21tYW5kPigpO1xuICAgICAgICB0aGlzLmFzeW5jSnNFeHByZXNzaW9uQ2FsbHNpdGVzICAgICAgICA9IG5ldyBNYXA8c3RyaW5nLCBDYWxsc2l0ZVJlY29yZD4oKTtcbiAgICAgICAgdGhpcy5jb250cm9sbGVyICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVGVzdENvbnRyb2xsZXIodGhpcyk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZWRDYWxsc2l0ZXMgICAgICAgICAgICAgICAgID0gbmV3IE9ic2VydmVkQ2FsbHNpdGVzU3RvcmFnZSgpO1xuICAgICAgICB0aGlzLndhcm5pbmdMb2cgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBXYXJuaW5nTG9nKG51bGwsIFdhcm5pbmdMb2cuY3JlYXRlQWRkV2FybmluZ0NhbGxiYWNrKG1lc3NhZ2VCdXMpKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlTXVsdGlwbGVXaW5kb3dzICAgICAgICAgICAgPSBvcHRpb25zLmRpc2FibGVNdWx0aXBsZVdpbmRvd3MgYXMgYm9vbGVhbjtcbiAgICAgICAgdGhpcy5hY3RpdmVXaW5kb3dJZCAgICAgICAgICAgICAgICAgICAgPSBhY3RpdmVXaW5kb3dJZDtcblxuICAgICAgICB0ZXN0UnVuVHJhY2tlci5hZGRBY3RpdmVUZXN0UnVuKHRoaXMpO1xuXG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVSZXF1ZXN0SG9va3MoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbml0aWFsaXplUmVxdWVzdEhvb2tzICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50ZXN0LnJlcXVlc3RIb29rcy5mb3JFYWNoKHRoaXMuX2F0dGFjaFdhcm5pbmdMb2csIHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2F0dGFjaFdhcm5pbmdMb2cgKGhvb2s6IFJlcXVlc3RIb29rKTogdm9pZCB7XG4gICAgICAgIGhvb2suX3dhcm5pbmdMb2cgPSB0aGlzLndhcm5pbmdMb2c7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGV0YWNoV2FybmluZ0xvZyAoaG9vazogUmVxdWVzdEhvb2spOiB2b2lkIHtcbiAgICAgICAgaG9vay5fd2FybmluZ0xvZyA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3RvcmVBc3NlcnRpb25Db21tYW5kIChjb21tYW5kOiBBc3NlcnRpb25Db21tYW5kKTogdm9pZCB7XG4gICAgICAgIGNvbW1hbmQuaWQgPSBnZW5lcmF0ZVVuaXF1ZUlkKCk7XG5cbiAgICAgICAgdGhpcy5hc3NlcnRpb25Db21tYW5kcy5zZXQoY29tbWFuZC5pZCwgY29tbWFuZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3RvcmVTd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlQ29tbWFuZCAoY29tbWFuZDogU3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZUNvbW1hbmQpOiB2b2lkIHtcbiAgICAgICAgY29tbWFuZC5pZCA9IGdlbmVyYXRlVW5pcXVlSWQoKTtcblxuICAgICAgICB0aGlzLnN3aXRjaFRvV2luZG93QnlQcmVkaWNhdGVDb21tYW5kcy5zZXQoY29tbWFuZC5pZCwgY29tbWFuZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGFuZGxlQXNzZXJ0aW9uQ29tbWFuZCAoY29tbWFuZDogQXNzZXJ0aW9uQ29tbWFuZCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihjb21tYW5kLmFjdHVhbCkpIHtcbiAgICAgICAgICAgIGNvbW1hbmQub3JpZ2luQWN0dWFsID0gY29tbWFuZC5hY3R1YWw7XG4gICAgICAgICAgICBjb21tYW5kLmFjdHVhbCAgICAgICA9IG5ldyBGdW5jdGlvbk1hcmtlcigpO1xuXG4gICAgICAgICAgICB0aGlzLl9zdG9yZUFzc2VydGlvbkNvbW1hbmQoY29tbWFuZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29tbWFuZC5hY3R1YWwgaW5zdGFuY2VvZiBSZUV4ZWN1dGFibGVQcm9taXNlKVxuICAgICAgICAgICAgdGhpcy5fc3RvcmVBc3NlcnRpb25Db21tYW5kKGNvbW1hbmQpO1xuXG4gICAgICAgIGVsc2UgaWYgKGlzVGhlbm5hYmxlKGNvbW1hbmQuYWN0dWFsKSkge1xuICAgICAgICAgICAgY29tbWFuZC5vcmlnaW5BY3R1YWwgPSBjb21tYW5kLmFjdHVhbDtcbiAgICAgICAgICAgIGNvbW1hbmQuYWN0dWFsICAgICAgID0gbmV3IFByb21pc2VNYXJrZXIoKTtcblxuICAgICAgICAgICAgdGhpcy5fc3RvcmVBc3NlcnRpb25Db21tYW5kKGNvbW1hbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGFuZGxlRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZEJhc2UgKGNvbW1hbmQ6IEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmRCYXNlKTogdm9pZCB7XG4gICAgICAgIGNvbW1hbmQuZXNtUnVudGltZSA9IHRoaXMudGVzdC5lc21SdW50aW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3N0b3JlQWN0aW9uQ2FsbHNpdGVzRm9yRXhlY3V0ZWRBc3luY0pzRXhwcmVzc2lvbiAoY2FsbHNpdGU6IENhbGxzaXRlUmVjb3JkKTogdm9pZCB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKGNhbGxzaXRlPy5maWxlbmFtZSAhPT0gRVJST1JfRklMRU5BTUUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgaWQgPSBnZW5lcmF0ZVVuaXF1ZUlkKCk7XG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjYWxsc2l0ZS5pZCA9IGlkO1xuXG4gICAgICAgIHRoaXMuYXN5bmNKc0V4cHJlc3Npb25DYWxsc2l0ZXMuc2V0KGlkLCBjYWxsc2l0ZSBhcyBDYWxsc2l0ZVJlY29yZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVDb21tYW5kIChjb21tYW5kOiBDb21tYW5kQmFzZSB8IEFjdGlvbkNvbW1hbmRCYXNlLCBjYWxsc2l0ZT86IENhbGxzaXRlUmVjb3JkIHwgc3RyaW5nKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGlmIChjb21tYW5kIGluc3RhbmNlb2YgQWN0aW9uQ29tbWFuZEJhc2UgJiYgY2FsbHNpdGUpXG4gICAgICAgICAgICB0aGlzLl9zdG9yZUFjdGlvbkNhbGxzaXRlc0ZvckV4ZWN1dGVkQXN5bmNKc0V4cHJlc3Npb24oY2FsbHNpdGUgYXMgQ2FsbHNpdGVSZWNvcmQpO1xuXG4gICAgICAgIGlmIChjb21tYW5kLnR5cGUgPT09IENPTU1BTkRfVFlQRS5hc3NlcnRpb24pXG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVBc3NlcnRpb25Db21tYW5kKGNvbW1hbmQgYXMgQXNzZXJ0aW9uQ29tbWFuZCk7XG4gICAgICAgIGVsc2UgaWYgKGNvbW1hbmQudHlwZSA9PT0gQ09NTUFORF9UWVBFLnVzZVJvbGUpXG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoZXIub25Sb2xlQXBwZWFyZWQoKGNvbW1hbmQgYXMgVXNlUm9sZUNvbW1hbmQpLnJvbGUpO1xuICAgICAgICBlbHNlIGlmIChjb21tYW5kLnR5cGUgPT09IENPTU1BTkRfVFlQRS5zd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlKVxuICAgICAgICAgICAgdGhpcy5fc3RvcmVTd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlQ29tbWFuZChjb21tYW5kIGFzIFN3aXRjaFRvV2luZG93QnlQcmVkaWNhdGVDb21tYW5kKTtcbiAgICAgICAgZWxzZSBpZiAoY29tbWFuZCBpbnN0YW5jZW9mIEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmRCYXNlKVxuICAgICAgICAgICAgdGhpcy5faGFuZGxlRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZEJhc2UoY29tbWFuZCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlQ29tbWFuZCh7XG4gICAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgICAgY2FsbHNpdGUsXG4gICAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4ZWN1dGVDb21tYW5kU3luYyAoY29tbWFuZDogQ29tbWFuZEJhc2UsIGNhbGxzaXRlOiBDYWxsc2l0ZVJlY29yZCk6IHVua25vd24ge1xuICAgICAgICBpZiAoY29tbWFuZC50eXBlID09PSBDT01NQU5EX1RZUEUuYXNzZXJ0aW9uKVxuICAgICAgICAgICAgdGhpcy5faGFuZGxlQXNzZXJ0aW9uQ29tbWFuZChjb21tYW5kIGFzIEFzc2VydGlvbkNvbW1hbmQpO1xuICAgICAgICBlbHNlIGlmIChjb21tYW5kLnR5cGUgPT09IENPTU1BTkRfVFlQRS51c2VSb2xlKVxuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaGVyLm9uUm9sZUFwcGVhcmVkKChjb21tYW5kIGFzIFVzZVJvbGVDb21tYW5kKS5yb2xlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGVDb21tYW5kU3luYyh7XG4gICAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgICAgY2FsbHNpdGUsXG4gICAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFkZFJlcXVlc3RIb29rIChob29rOiBSZXF1ZXN0SG9vayk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy50ZXN0LnJlcXVlc3RIb29rcy5pbmNsdWRlcyhob29rKSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLnRlc3QucmVxdWVzdEhvb2tzLnB1c2goaG9vayk7XG4gICAgICAgIHRoaXMuX2F0dGFjaFdhcm5pbmdMb2coaG9vayk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5kaXNwYXRjaGVyLmFkZFJlcXVlc3RFdmVudExpc3RlbmVycyh7XG4gICAgICAgICAgICBob29rSWQ6ICAgICAgICBob29rLmlkLFxuICAgICAgICAgICAgaG9va0NsYXNzTmFtZTogaG9vay5fY2xhc3NOYW1lLFxuICAgICAgICAgICAgcnVsZXM6ICAgICAgICAgaG9vay5fcmVxdWVzdEZpbHRlclJ1bGVzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVtb3ZlUmVxdWVzdEhvb2sgKGhvb2s6IFJlcXVlc3RIb29rKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy50ZXN0LnJlcXVlc3RIb29rcy5pbmNsdWRlcyhob29rKSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBwdWxsKHRoaXMudGVzdC5yZXF1ZXN0SG9va3MsIGhvb2spO1xuICAgICAgICB0aGlzLl9kZXRhY2hXYXJuaW5nTG9nKGhvb2spO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2hlci5yZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnMoeyBydWxlczogaG9vay5fcmVxdWVzdEZpbHRlclJ1bGVzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBc3NlcnRpb25BY3R1YWxWYWx1ZSAoY29tbWFuZElkOiBzdHJpbmcpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMuYXNzZXJ0aW9uQ29tbWFuZHMuZ2V0KGNvbW1hbmRJZCkgYXMgQXNzZXJ0aW9uQ29tbWFuZDtcblxuICAgICAgICByZXR1cm4gKGNvbW1hbmQuYWN0dWFsIGFzIFJlRXhlY3V0YWJsZVByb21pc2UpLl9yZUV4ZWN1dGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUFzc2VydGlvbkZuIChjb21tYW5kSWQ6IHN0cmluZyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCBjb21tYW5kID0gdGhpcy5hc3NlcnRpb25Db21tYW5kcy5nZXQoY29tbWFuZElkKSBhcyBBc3NlcnRpb25Db21tYW5kO1xuXG4gICAgICAgIGNvbW1hbmQuYWN0dWFsID0gY29tbWFuZC5vcmlnaW5BY3R1YWw7XG5cbiAgICAgICAgY29uc3QgZm4gPSBnZXRGbihjb21tYW5kKTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgZm4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzdG9yZU9yaWdpbkNhbGxzaXRlRm9yRXJyb3IgKGVycjogVW5jYXVnaHRUZXN0Q2FmZUVycm9ySW5DdXN0b21TY3JpcHQpOiB2b2lkIHtcbiAgICAgICAgZXJyLmVyckNhbGxzaXRlID0gdGhpcy5hc3luY0pzRXhwcmVzc2lvbkNhbGxzaXRlcy5nZXQoZXJyLmVyckNhbGxzaXRlLmlkKTtcblxuICAgICAgICB0aGlzLmFzeW5jSnNFeHByZXNzaW9uQ2FsbHNpdGVzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrV2luZG93IChjb21tYW5kSWQ6IHN0cmluZywgeyB0aXRsZSwgdXJsIH06IENoZWNrV2luZG93UHJlZGljYXRlRGF0YSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb21tYW5kID0gdGhpcy5zd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlQ29tbWFuZHMuZ2V0KGNvbW1hbmRJZCkgYXMgU3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZUNvbW1hbmQ7XG5cbiAgICAgICAgcmV0dXJuIGNvbW1hbmQuY2hlY2tXaW5kb3coeyB0aXRsZSwgdXJsIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGVzdFJ1blByb3h5O1xuXG5cbiJdfQ==
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1ydW4tcHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY29tcGlsZXIvdGVzdC1ydW4tcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBMEM7QUFDMUMsa0ZBQXdEO0FBRXhELGdGQUF1RDtBQUN2RCwyR0FBaUY7QUFDakYsa0ZBQXlEO0FBR3pELHdFQUF3RDtBQUN4RCx1REFBOEU7QUFJOUUsNkRBQXVEO0FBU3ZELDhGQUFvRTtBQUNwRSwwRkFBZ0U7QUFDaEUsaUZBQXlEO0FBQ3pELDhFQUFnRjtBQUVoRixvR0FBeUc7QUFDekcscUVBQTRDO0FBQzVDLHFEQUFvRDtBQUNwRCxtR0FBdUc7QUFDdkcscUVBQXVGO0FBRXZGLE1BQU0sWUFBYSxTQUFRLDZCQUFpQjtJQW1CeEMsWUFBb0IsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQW9CO1FBQ3hHLEtBQUssRUFBRSxDQUFDO1FBWkwsY0FBUyxHQUFHLEtBQUssQ0FBQztRQWNyQixJQUFJLENBQUMsdUJBQWEsQ0FBQyxHQUFzQixJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBMEIsVUFBVSxDQUFDO1FBQ3BELElBQUksQ0FBQyxFQUFFLEdBQWtDLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFnQyxJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsR0FBaUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsVUFBVSxHQUEwQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxRQUFRLEdBQTRCLE9BQU8sQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUE2QixPQUFPLENBQUM7UUFDakQsSUFBSSxDQUFDLGlC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LENBQUUsU0FBaUI7UUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQXFCLENBQUM7UUFFMUUsT0FBUSxPQUFPLENBQUMsTUFBOEIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGtCQUFrQixDQUFFLFNBQWlCO1FBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFxQixDQUFDO1FBRTFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUV0QyxNQUFNLEVBQUUsR0FBRyxJQUFBLGdCQUFLLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUIsT0FBTyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSw2QkFBNkIsQ0FBRSxHQUF3QztRQUMxRSxHQUFHLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUxRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVNLFdBQVcsQ0FBRSxTQUFpQixFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBNEI7UUFDM0UsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQXFDLENBQUM7UUFFMUcsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNKO0FBRUQsa0JBQWUsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHVsbCwgaXNGdW5jdGlvbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgdGVzdFJ1blRyYWNrZXIgZnJvbSAnLi4vLi4vYXBpL3Rlc3QtcnVuLXRyYWNrZXInO1xuaW1wb3J0IHsgVGVzdFJ1bkRpc3BhdGNoZXJQcm90b2NvbCB9IGZyb20gJy4vcHJvdG9jb2wnO1xuaW1wb3J0IFRlc3RDb250cm9sbGVyIGZyb20gJy4uLy4uL2FwaS90ZXN0LWNvbnRyb2xsZXInO1xuaW1wb3J0IE9ic2VydmVkQ2FsbHNpdGVzU3RvcmFnZSBmcm9tICcuLi8uLi90ZXN0LXJ1bi9vYnNlcnZlZC1jYWxsc2l0ZXMtc3RvcmFnZSc7XG5pbXBvcnQgV2FybmluZ0xvZyBmcm9tICcuLi8uLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbG9nJztcbmltcG9ydCB7IEFzc2VydGlvbkNvbW1hbmQgfSBmcm9tICcuLi8uLi90ZXN0LXJ1bi9jb21tYW5kcy9hc3NlcnRpb24nO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgQ09NTUFORF9UWVBFIGZyb20gJy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL3R5cGUnO1xuaW1wb3J0IHsgQWN0aW9uQ29tbWFuZEJhc2UsIENvbW1hbmRCYXNlIH0gZnJvbSAnLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvYmFzZSc7XG5pbXBvcnQgeyBUZXN0UnVuUHJveHlJbml0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgVGVzdCBmcm9tICcuLi8uLi9hcGkvc3RydWN0dXJlL3Rlc3QnO1xuaW1wb3J0IFJlcXVlc3RIb29rIGZyb20gJy4uLy4uL2FwaS9yZXF1ZXN0LWhvb2tzL2hvb2snO1xuaW1wb3J0IHsgZ2VuZXJhdGVVbmlxdWVJZCB9IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuaW1wb3J0IHsgQ2FsbHNpdGVSZWNvcmQgfSBmcm9tICdjYWxsc2l0ZS1yZWNvcmQnO1xuXG5pbXBvcnQge1xuICAgIENoZWNrV2luZG93UHJlZGljYXRlRGF0YSxcbiAgICBTd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlQ29tbWFuZCxcbiAgICBVc2VSb2xlQ29tbWFuZCxcbn0gZnJvbSAnLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvYWN0aW9ucyc7XG5cbmltcG9ydCBSZUV4ZWN1dGFibGVQcm9taXNlIGZyb20gJy4uLy4uL3V0aWxzL3JlLWV4ZWN1dGFibGUtcHJvbWlzZSc7XG5pbXBvcnQgQXN5bmNFdmVudEVtaXR0ZXIgZnJvbSAnLi4vLi4vdXRpbHMvYXN5bmMtZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgdGVzdFJ1bk1hcmtlciBmcm9tICcuLi8uLi90ZXN0LXJ1bi9tYXJrZXItc3ltYm9sJztcbmltcG9ydCB7IEVSUk9SX0ZJTEVOQU1FIH0gZnJvbSAnLi4vLi4vdGVzdC1ydW4vZXhlY3V0ZS1qcy1leHByZXNzaW9uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBVbmNhdWdodFRlc3RDYWZlRXJyb3JJbkN1c3RvbVNjcmlwdCB9IGZyb20gJy4uLy4uL2Vycm9ycy90ZXN0LXJ1bic7XG5pbXBvcnQgeyBGdW5jdGlvbk1hcmtlciB9IGZyb20gJy4uL3NlcmlhbGl6YXRpb24vcmVwbGljYXRvci90cmFuc2Zvcm1zL2Z1bmN0aW9uLW1hcmtlci10cmFuc2Zvcm0vbWFya2VyJztcbmltcG9ydCBnZXRGbiBmcm9tICcuLi8uLi9hc3NlcnRpb25zL2dldC1mbic7XG5pbXBvcnQgeyBpc1RoZW5uYWJsZSB9IGZyb20gJy4uLy4uL3V0aWxzL3RoZW5uYWJsZSc7XG5pbXBvcnQgeyBQcm9taXNlTWFya2VyIH0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi9yZXBsaWNhdG9yL3RyYW5zZm9ybXMvcHJvbWlzZS1tYXJrZXItdHJhbnNmb3JtL21hcmtlcic7XG5pbXBvcnQgeyBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kQmFzZSB9IGZyb20gJy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL29ic2VydmF0aW9uJztcblxuY2xhc3MgVGVzdFJ1blByb3h5IGV4dGVuZHMgQXN5bmNFdmVudEVtaXR0ZXIge1xuICAgIHByaXZhdGUgW3Rlc3RSdW5NYXJrZXJdOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSB0ZXN0OiBUZXN0O1xuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sbGVyOiBUZXN0Q29udHJvbGxlcjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgb2JzZXJ2ZWRDYWxsc2l0ZXM6IE9ic2VydmVkQ2FsbHNpdGVzU3RvcmFnZTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgd2FybmluZ0xvZzogV2FybmluZ0xvZztcbiAgICBwdWJsaWMgZml4dHVyZUN0eDogb2JqZWN0O1xuICAgIHB1YmxpYyBkZWJ1Z2dpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpc3BhdGNoZXI6IFRlc3RSdW5EaXNwYXRjaGVyUHJvdG9jb2w7XG4gICAgcHVibGljIGN0eDogb2JqZWN0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IERpY3Rpb25hcnk8T3B0aW9uVmFsdWU+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXNzZXJ0aW9uQ29tbWFuZHM6IE1hcDxzdHJpbmcsIEFzc2VydGlvbkNvbW1hbmQ+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZUNvbW1hbmRzOiBNYXA8c3RyaW5nLCBTd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlQ29tbWFuZD47XG4gICAgcHJpdmF0ZSByZWFkb25seSBhc3luY0pzRXhwcmVzc2lvbkNhbGxzaXRlczogTWFwPHN0cmluZywgQ2FsbHNpdGVSZWNvcmQ+O1xuICAgIHB1YmxpYyByZWFkb25seSBicm93c2VyOiBCcm93c2VyO1xuICAgIHB1YmxpYyByZWFkb25seSBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzOiBib29sZWFuO1xuICAgIHB1YmxpYyBhY3RpdmVXaW5kb3dJZDogbnVsbCB8IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoeyBkaXNwYXRjaGVyLCBpZCwgdGVzdCwgb3B0aW9ucywgYnJvd3NlciwgYWN0aXZlV2luZG93SWQsIG1lc3NhZ2VCdXMgfTogVGVzdFJ1blByb3h5SW5pdCkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXNbdGVzdFJ1bk1hcmtlcl0gICAgICAgICAgICAgICAgICAgID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyICAgICAgICAgICAgICAgICAgICAgICAgPSBkaXNwYXRjaGVyO1xuICAgICAgICB0aGlzLmlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGlkO1xuICAgICAgICB0aGlzLnRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHRlc3Q7XG4gICAgICAgIHRoaXMuY3R4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5maXh0dXJlQ3R4ICAgICAgICAgICAgICAgICAgICAgICAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLl9vcHRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuYnJvd3NlciAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYnJvd3NlcjtcbiAgICAgICAgdGhpcy5hc3NlcnRpb25Db21tYW5kcyAgICAgICAgICAgICAgICAgPSBuZXcgTWFwPHN0cmluZywgQXNzZXJ0aW9uQ29tbWFuZD4oKTtcbiAgICAgICAgdGhpcy5zd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlQ29tbWFuZHMgPSBuZXcgTWFwPHN0cmluZywgU3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZUNvbW1hbmQ+KCk7XG4gICAgICAgIHRoaXMuYXN5bmNKc0V4cHJlc3Npb25DYWxsc2l0ZXMgICAgICAgID0gbmV3IE1hcDxzdHJpbmcsIENhbGxzaXRlUmVjb3JkPigpO1xuICAgICAgICB0aGlzLmNvbnRyb2xsZXIgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBUZXN0Q29udHJvbGxlcih0aGlzKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlZENhbGxzaXRlcyAgICAgICAgICAgICAgICAgPSBuZXcgT2JzZXJ2ZWRDYWxsc2l0ZXNTdG9yYWdlKCk7XG4gICAgICAgIHRoaXMud2FybmluZ0xvZyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFdhcm5pbmdMb2cobnVsbCwgV2FybmluZ0xvZy5jcmVhdGVBZGRXYXJuaW5nQ2FsbGJhY2sobWVzc2FnZUJ1cykpO1xuICAgICAgICB0aGlzLmRpc2FibGVNdWx0aXBsZVdpbmRvd3MgICAgICAgICAgICA9IG9wdGlvbnMuZGlzYWJsZU11bHRpcGxlV2luZG93cyBhcyBib29sZWFuO1xuICAgICAgICB0aGlzLmFjdGl2ZVdpbmRvd0lkICAgICAgICAgICAgICAgICAgICA9IGFjdGl2ZVdpbmRvd0lkO1xuXG4gICAgICAgIHRlc3RSdW5UcmFja2VyLmFkZEFjdGl2ZVRlc3RSdW4odGhpcyk7XG5cbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVJlcXVlc3RIb29rcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2luaXRpYWxpemVSZXF1ZXN0SG9va3MgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRlc3QucmVxdWVzdEhvb2tzLmZvckVhY2godGhpcy5fYXR0YWNoV2FybmluZ0xvZywgdGhpcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXR0YWNoV2FybmluZ0xvZyAoaG9vazogUmVxdWVzdEhvb2spOiB2b2lkIHtcbiAgICAgICAgaG9vay5fd2FybmluZ0xvZyA9IHRoaXMud2FybmluZ0xvZztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kZXRhY2hXYXJuaW5nTG9nIChob29rOiBSZXF1ZXN0SG9vayk6IHZvaWQge1xuICAgICAgICBob29rLl93YXJuaW5nTG9nID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdG9yZUFzc2VydGlvbkNvbW1hbmQgKGNvbW1hbmQ6IEFzc2VydGlvbkNvbW1hbmQpOiB2b2lkIHtcbiAgICAgICAgY29tbWFuZC5pZCA9IGdlbmVyYXRlVW5pcXVlSWQoKTtcblxuICAgICAgICB0aGlzLmFzc2VydGlvbkNvbW1hbmRzLnNldChjb21tYW5kLmlkLCBjb21tYW5kKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdG9yZVN3aXRjaFRvV2luZG93QnlQcmVkaWNhdGVDb21tYW5kIChjb21tYW5kOiBTd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlQ29tbWFuZCk6IHZvaWQge1xuICAgICAgICBjb21tYW5kLmlkID0gZ2VuZXJhdGVVbmlxdWVJZCgpO1xuXG4gICAgICAgIHRoaXMuc3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZUNvbW1hbmRzLnNldChjb21tYW5kLmlkLCBjb21tYW5kKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oYW5kbGVBc3NlcnRpb25Db21tYW5kIChjb21tYW5kOiBBc3NlcnRpb25Db21tYW5kKTogdm9pZCB7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGNvbW1hbmQuYWN0dWFsKSkge1xuICAgICAgICAgICAgY29tbWFuZC5vcmlnaW5BY3R1YWwgPSBjb21tYW5kLmFjdHVhbDtcbiAgICAgICAgICAgIGNvbW1hbmQuYWN0dWFsICAgICAgID0gbmV3IEZ1bmN0aW9uTWFya2VyKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX3N0b3JlQXNzZXJ0aW9uQ29tbWFuZChjb21tYW5kKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb21tYW5kLmFjdHVhbCBpbnN0YW5jZW9mIFJlRXhlY3V0YWJsZVByb21pc2UpXG4gICAgICAgICAgICB0aGlzLl9zdG9yZUFzc2VydGlvbkNvbW1hbmQoY29tbWFuZCk7XG5cbiAgICAgICAgZWxzZSBpZiAoaXNUaGVubmFibGUoY29tbWFuZC5hY3R1YWwpKSB7XG4gICAgICAgICAgICBjb21tYW5kLm9yaWdpbkFjdHVhbCA9IGNvbW1hbmQuYWN0dWFsO1xuICAgICAgICAgICAgY29tbWFuZC5hY3R1YWwgICAgICAgPSBuZXcgUHJvbWlzZU1hcmtlcigpO1xuXG4gICAgICAgICAgICB0aGlzLl9zdG9yZUFzc2VydGlvbkNvbW1hbmQoY29tbWFuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9oYW5kbGVFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kQmFzZSAoY29tbWFuZDogRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZEJhc2UpOiB2b2lkIHtcbiAgICAgICAgY29tbWFuZC5lc21SdW50aW1lID0gdGhpcy50ZXN0LmVzbVJ1bnRpbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3RvcmVBY3Rpb25DYWxsc2l0ZXNGb3JFeGVjdXRlZEFzeW5jSnNFeHByZXNzaW9uIChjYWxsc2l0ZTogQ2FsbHNpdGVSZWNvcmQpOiB2b2lkIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoY2FsbHNpdGU/LmZpbGVuYW1lICE9PSBFUlJPUl9GSUxFTkFNRSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBpZCA9IGdlbmVyYXRlVW5pcXVlSWQoKTtcblxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNhbGxzaXRlLmlkID0gaWQ7XG5cbiAgICAgICAgdGhpcy5hc3luY0pzRXhwcmVzc2lvbkNhbGxzaXRlcy5zZXQoaWQsIGNhbGxzaXRlIGFzIENhbGxzaXRlUmVjb3JkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUNvbW1hbmQgKGNvbW1hbmQ6IENvbW1hbmRCYXNlIHwgQWN0aW9uQ29tbWFuZEJhc2UsIGNhbGxzaXRlPzogQ2FsbHNpdGVSZWNvcmQgfCBzdHJpbmcpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgaWYgKGNvbW1hbmQgaW5zdGFuY2VvZiBBY3Rpb25Db21tYW5kQmFzZSAmJiBjYWxsc2l0ZSlcbiAgICAgICAgICAgIHRoaXMuX3N0b3JlQWN0aW9uQ2FsbHNpdGVzRm9yRXhlY3V0ZWRBc3luY0pzRXhwcmVzc2lvbihjYWxsc2l0ZSBhcyBDYWxsc2l0ZVJlY29yZCk7XG5cbiAgICAgICAgaWYgKGNvbW1hbmQudHlwZSA9PT0gQ09NTUFORF9UWVBFLmFzc2VydGlvbilcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZUFzc2VydGlvbkNvbW1hbmQoY29tbWFuZCBhcyBBc3NlcnRpb25Db21tYW5kKTtcbiAgICAgICAgZWxzZSBpZiAoY29tbWFuZC50eXBlID09PSBDT01NQU5EX1RZUEUudXNlUm9sZSlcbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hlci5vblJvbGVBcHBlYXJlZCgoY29tbWFuZCBhcyBVc2VSb2xlQ29tbWFuZCkucm9sZSk7XG4gICAgICAgIGVsc2UgaWYgKGNvbW1hbmQudHlwZSA9PT0gQ09NTUFORF9UWVBFLnN3aXRjaFRvV2luZG93QnlQcmVkaWNhdGUpXG4gICAgICAgICAgICB0aGlzLl9zdG9yZVN3aXRjaFRvV2luZG93QnlQcmVkaWNhdGVDb21tYW5kKGNvbW1hbmQgYXMgU3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZUNvbW1hbmQpO1xuICAgICAgICBlbHNlIGlmIChjb21tYW5kIGluc3RhbmNlb2YgRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZEJhc2UpXG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kQmFzZShjb21tYW5kKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGVDb21tYW5kKHtcbiAgICAgICAgICAgIGNvbW1hbmQsXG4gICAgICAgICAgICBjYWxsc2l0ZSxcbiAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhlY3V0ZUNvbW1hbmRTeW5jIChjb21tYW5kOiBDb21tYW5kQmFzZSwgY2FsbHNpdGU6IENhbGxzaXRlUmVjb3JkKTogdW5rbm93biB7XG4gICAgICAgIGlmIChjb21tYW5kLnR5cGUgPT09IENPTU1BTkRfVFlQRS5hc3NlcnRpb24pXG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVBc3NlcnRpb25Db21tYW5kKGNvbW1hbmQgYXMgQXNzZXJ0aW9uQ29tbWFuZCk7XG4gICAgICAgIGVsc2UgaWYgKGNvbW1hbmQudHlwZSA9PT0gQ09NTUFORF9UWVBFLnVzZVJvbGUpXG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoZXIub25Sb2xlQXBwZWFyZWQoKGNvbW1hbmQgYXMgVXNlUm9sZUNvbW1hbmQpLnJvbGUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZUNvbW1hbmRTeW5jKHtcbiAgICAgICAgICAgIGNvbW1hbmQsXG4gICAgICAgICAgICBjYWxsc2l0ZSxcbiAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWRkUmVxdWVzdEhvb2sgKGhvb2s6IFJlcXVlc3RIb29rKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLnRlc3QucmVxdWVzdEhvb2tzLmluY2x1ZGVzKGhvb2spKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMudGVzdC5yZXF1ZXN0SG9va3MucHVzaChob29rKTtcbiAgICAgICAgdGhpcy5fYXR0YWNoV2FybmluZ0xvZyhob29rKTtcblxuICAgICAgICBhd2FpdCB0aGlzLmRpc3BhdGNoZXIuYWRkUmVxdWVzdEV2ZW50TGlzdGVuZXJzKHtcbiAgICAgICAgICAgIGhvb2tJZDogICAgICAgIGhvb2suaWQsXG4gICAgICAgICAgICBob29rQ2xhc3NOYW1lOiBob29rLl9jbGFzc05hbWUsXG4gICAgICAgICAgICBydWxlczogICAgICAgICBob29rLl9yZXF1ZXN0RmlsdGVyUnVsZXMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVSZXF1ZXN0SG9vayAoaG9vazogUmVxdWVzdEhvb2spOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLnRlc3QucmVxdWVzdEhvb2tzLmluY2x1ZGVzKGhvb2spKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHB1bGwodGhpcy50ZXN0LnJlcXVlc3RIb29rcywgaG9vayk7XG4gICAgICAgIHRoaXMuX2RldGFjaFdhcm5pbmdMb2coaG9vayk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5kaXNwYXRjaGVyLnJlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVycyh7IHJ1bGVzOiBob29rLl9yZXF1ZXN0RmlsdGVyUnVsZXMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFzc2VydGlvbkFjdHVhbFZhbHVlIChjb21tYW5kSWQ6IHN0cmluZyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCBjb21tYW5kID0gdGhpcy5hc3NlcnRpb25Db21tYW5kcy5nZXQoY29tbWFuZElkKSBhcyBBc3NlcnRpb25Db21tYW5kO1xuXG4gICAgICAgIHJldHVybiAoY29tbWFuZC5hY3R1YWwgYXMgUmVFeGVjdXRhYmxlUHJvbWlzZSkuX3JlRXhlY3V0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQXNzZXJ0aW9uRm4gKGNvbW1hbmRJZDogc3RyaW5nKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSB0aGlzLmFzc2VydGlvbkNvbW1hbmRzLmdldChjb21tYW5kSWQpIGFzIEFzc2VydGlvbkNvbW1hbmQ7XG5cbiAgICAgICAgY29tbWFuZC5hY3R1YWwgPSBjb21tYW5kLm9yaWdpbkFjdHVhbDtcblxuICAgICAgICBjb25zdCBmbiA9IGdldEZuKGNvbW1hbmQpO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBmbigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXN0b3JlT3JpZ2luQ2FsbHNpdGVGb3JFcnJvciAoZXJyOiBVbmNhdWdodFRlc3RDYWZlRXJyb3JJbkN1c3RvbVNjcmlwdCk6IHZvaWQge1xuICAgICAgICBlcnIuZXJyQ2FsbHNpdGUgPSB0aGlzLmFzeW5jSnNFeHByZXNzaW9uQ2FsbHNpdGVzLmdldChlcnIuZXJyQ2FsbHNpdGUuaWQpO1xuXG4gICAgICAgIHRoaXMuYXN5bmNKc0V4cHJlc3Npb25DYWxsc2l0ZXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hlY2tXaW5kb3cgKGNvbW1hbmRJZDogc3RyaW5nLCB7IHRpdGxlLCB1cmwgfTogQ2hlY2tXaW5kb3dQcmVkaWNhdGVEYXRhKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSB0aGlzLnN3aXRjaFRvV2luZG93QnlQcmVkaWNhdGVDb21tYW5kcy5nZXQoY29tbWFuZElkKSBhcyBTd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlQ29tbWFuZDtcblxuICAgICAgICByZXR1cm4gY29tbWFuZC5jaGVja1dpbmRvdyh7IHRpdGxlLCB1cmwgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUZXN0UnVuUHJveHk7XG5cblxuIl19
|
|
@@ -16,9 +16,9 @@ class CallsiteRecordTransform extends base_transform_1.default {
|
|
|
16
16
|
(!!val.filename && val.filename !== constants_1.ERROR_FILENAME); // Don't serialize callsites for RAW API)
|
|
17
17
|
}
|
|
18
18
|
toSerializable(callsite) {
|
|
19
|
-
return prerender_callsite_1.default(callsite);
|
|
19
|
+
return (0, prerender_callsite_1.default)(callsite);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.default = CallsiteRecordTransform;
|
|
23
23
|
module.exports = exports.default;
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbHNpdGUtcmVjb3JkLXRyYW5zZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9zZXJpYWxpemF0aW9uL3JlcGxpY2F0b3IvdHJhbnNmb3Jtcy9jYWxsc2l0ZS1yZWNvcmQtdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsOEZBQTJGO0FBQzNGLHNFQUE2QztBQUM3QyxvRkFBa0g7QUFNbEgsTUFBcUIsdUJBQXdCLFNBQVEsd0JBQWE7SUFDOUQ7UUFDSSxLQUFLLENBQUMsc0NBQTBCLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sZUFBZSxDQUFFLENBQVUsRUFBRSxHQUF1QjtRQUN2RCxPQUFPLENBQUMsQ0FBQyxHQUFHO1lBQ1IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxzQ0FBMEIsQ0FBQztZQUMxRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssMEJBQWMsQ0FBQyxDQUFDLENBQUMseUNBQXlDO0lBQ3RHLENBQUM7SUFFTSxjQUFjLENBQUUsUUFBd0I7UUFDM0MsT0FBTyxJQUFBLDRCQUFpQixFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDSjtBQWRELDBDQWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FsbHNpdGVSZWNvcmQgfSBmcm9tICdjYWxsc2l0ZS1yZWNvcmQnO1xuaW1wb3J0IHByZXJlbmRlckNhbGxzaXRlLCB7IFJlbmRlcmVkQ2FsbHNpdGUgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9wcmVyZW5kZXItY2FsbHNpdGUnO1xuaW1wb3J0IEJhc2VUcmFuc2Zvcm0gZnJvbSAnLi9iYXNlLXRyYW5zZm9ybSc7XG5pbXBvcnQgeyBFUlJPUl9GSUxFTkFNRSwgQ0FMTFNJVEVfUkVDT1JEX0NMQVNTX05BTUUgfSBmcm9tICcuLi8uLi8uLi8uLi90ZXN0LXJ1bi9leGVjdXRlLWpzLWV4cHJlc3Npb24vY29uc3RhbnRzJztcblxuaW50ZXJmYWNlIENhbGxzaXRlUmVjb3JkTGlrZSB7XG4gICAgZmlsZW5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FsbHNpdGVSZWNvcmRUcmFuc2Zvcm0gZXh0ZW5kcyBCYXNlVHJhbnNmb3JtIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKCkge1xuICAgICAgICBzdXBlcihDQUxMU0lURV9SRUNPUkRfQ0xBU1NfTkFNRSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZFRyYW5zZm9ybSAoXzogdW5rbm93biwgdmFsOiBDYWxsc2l0ZVJlY29yZExpa2UpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdmFsICYmXG4gICAgICAgICAgICAoISF2YWwuY29uc3RydWN0b3IgJiYgdmFsLmNvbnN0cnVjdG9yLm5hbWUgPT09IENBTExTSVRFX1JFQ09SRF9DTEFTU19OQU1FKSAmJlxuICAgICAgICAgICAgKCEhdmFsLmZpbGVuYW1lICYmIHZhbC5maWxlbmFtZSAhPT0gRVJST1JfRklMRU5BTUUpOyAvLyBEb24ndCBzZXJpYWxpemUgY2FsbHNpdGVzIGZvciBSQVcgQVBJKVxuICAgIH1cblxuICAgIHB1YmxpYyB0b1NlcmlhbGl6YWJsZSAoY2FsbHNpdGU6IENhbGxzaXRlUmVjb3JkKTogUmVuZGVyZWRDYWxsc2l0ZSB7XG4gICAgICAgIHJldHVybiBwcmVyZW5kZXJDYWxsc2l0ZShjYWxsc2l0ZSk7XG4gICAgfVxufVxuIl19
|
|
@@ -57,7 +57,8 @@ const COMMAND_CONSTRUCTORS = new Map([
|
|
|
57
57
|
[type_1.default.setCookies, actions_1.SetCookiesCommand],
|
|
58
58
|
[type_1.default.deleteCookies, actions_1.DeleteCookiesCommand],
|
|
59
59
|
[type_1.default.request, actions_1.RequestCommand],
|
|
60
|
+
[type_1.default.skipJsErrors, actions_1.SkipJsErrorsCommand],
|
|
60
61
|
]);
|
|
61
62
|
exports.default = COMMAND_CONSTRUCTORS;
|
|
62
63
|
module.exports = exports.default;
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1jb25zdHJ1Y3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvc2VyaWFsaXphdGlvbi9yZXBsaWNhdG9yL3RyYW5zZm9ybXMvY29tbWFuZC1iYXNlLXRyYXNmb3JtL2NvbW1hbmQtY29uc3RydWN0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUZBQWdFO0FBRWhFLDhFQUlzRDtBQUV0RCxzRUF5Q2tEO0FBRWxELDBFQUE4RTtBQUc5RSxnR0FNK0Q7QUFHL0QsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBNkI7SUFDN0QsQ0FBQyxjQUFXLENBQUMsZUFBZSxFQUFFLG9DQUFzQixDQUFDO0lBQ3JELENBQUMsY0FBVyxDQUFDLHFCQUFxQixFQUFFLDBDQUE0QixDQUFDO0lBQ2pFLENBQUMsY0FBVyxDQUFDLElBQUksRUFBRSx5QkFBVyxDQUFDO0lBQy9CLENBQUMsY0FBVyxDQUFDLEtBQUssRUFBRSxzQkFBWSxDQUFDO0lBQ2pDLENBQUMsY0FBVyxDQUFDLFdBQVcsRUFBRSw0QkFBa0IsQ0FBQztJQUM3QyxDQUFDLGNBQVcsQ0FBQyxVQUFVLEVBQUUsMkJBQWlCLENBQUM7SUFDM0MsQ0FBQyxjQUFXLENBQUMsUUFBUSxFQUFFLHlCQUFlLENBQUM7SUFDdkMsQ0FBQyxjQUFXLENBQUMsc0JBQXNCLEVBQUUsdUNBQTZCLENBQUM7SUFDbkUsQ0FBQyxjQUFXLENBQUMsY0FBYyxFQUFFLCtCQUFxQixDQUFDO0lBQ25ELENBQUMsY0FBVyxDQUFDLGtCQUFrQixFQUFFLG1DQUF5QixDQUFDO0lBQzNELENBQUMsY0FBVyxDQUFDLHNCQUFzQixFQUFFLHVDQUE2QixDQUFDO0lBQ25FLENBQUMsY0FBVyxDQUFDLHlCQUF5QixFQUFFLDBDQUFnQyxDQUFDO0lBQ3pFLENBQUMsY0FBVyxDQUFDLFlBQVksRUFBRSw2QkFBbUIsQ0FBQztJQUMvQyxDQUFDLGNBQVcsQ0FBQyxrQkFBa0IsRUFBRSxtQ0FBeUIsQ0FBQztJQUMzRCxDQUFDLGNBQVcsQ0FBQyxRQUFRLEVBQUUseUJBQWUsQ0FBQztJQUN2QyxDQUFDLGNBQVcsQ0FBQyxhQUFhLEVBQUUsOEJBQW9CLENBQUM7SUFDakQsQ0FBQyxjQUFXLENBQUMscUJBQXFCLEVBQUUsc0NBQTRCLENBQUM7SUFDakUsQ0FBQyxjQUFXLENBQUMsS0FBSyxFQUFFLHNCQUFZLENBQUM7SUFDakMsQ0FBQyxjQUFXLENBQUMsU0FBUyxFQUFFLDRCQUFnQixDQUFDO0lBQ3pDLENBQUMsY0FBVyxDQUFDLE9BQU8sRUFBRSx3QkFBYyxDQUFDO0lBQ3JDLENBQUMsY0FBVyxDQUFDLGlCQUFpQixFQUFFLGtDQUF3QixDQUFDO0lBQ3pELENBQUMsY0FBVyxDQUFDLHNCQUFzQixFQUFFLHVDQUE2QixDQUFDO0lBQ25FLENBQUMsY0FBVyxDQUFDLElBQUksRUFBRSxxQkFBVyxDQUFDO0lBQy9CLENBQUMsY0FBVyxDQUFDLFVBQVUsRUFBRSwyQkFBaUIsQ0FBQztJQUMzQyxDQUFDLGNBQVcsQ0FBQyxVQUFVLEVBQUUsMkJBQWlCLENBQUM7SUFDM0MsQ0FBQyxjQUFXLENBQUMscUJBQXFCLEVBQUUsc0NBQTRCLENBQUM7SUFDakUsQ0FBQyxjQUFXLENBQUMsZ0JBQWdCLEVBQUUsaUNBQXVCLENBQUM7SUFDdkQsQ0FBQyxjQUFXLENBQUMsV0FBVyxFQUFFLDRCQUFrQixDQUFDO0lBQzdDLENBQUMsY0FBVyxDQUFDLGNBQWMsRUFBRSw0Q0FBcUIsQ0FBQztJQUNuRCxDQUFDLGNBQVcsQ0FBQyxxQkFBcUIsRUFBRSxtREFBNEIsQ0FBQztJQUNqRSxDQUFDLGNBQVcsQ0FBQyxZQUFZLEVBQUUsMENBQW1CLENBQUM7SUFDL0MsQ0FBQyxjQUFXLENBQUMsdUJBQXVCLEVBQUUscURBQThCLENBQUM7SUFDckUsQ0FBQyxjQUFXLENBQUMsY0FBYyxFQUFFLDRDQUFxQixDQUFDO0lBQ25ELENBQUMsY0FBVyxDQUFDLGFBQWEsRUFBRSw4QkFBb0IsQ0FBQztJQUNqRCxDQUFDLGNBQVcsQ0FBQyxNQUFNLEVBQUUsdUJBQWEsQ0FBQztJQUNuQyxDQUFDLGNBQVcsQ0FBQyxRQUFRLEVBQUUseUJBQWUsQ0FBQztJQUN2QyxDQUFDLGNBQVcsQ0FBQyxjQUFjLEVBQUUsK0JBQXFCLENBQUM7SUFDbkQsQ0FBQyxjQUFXLENBQUMsVUFBVSxFQUFFLDJCQUFpQixDQUFDO0lBQzNDLENBQUMsY0FBVyxDQUFDLFdBQVcsRUFBRSw0QkFBa0IsQ0FBQztJQUM3QyxDQUFDLGNBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxpQ0FBdUIsQ0FBQztJQUN2RCxDQUFDLGNBQVcsQ0FBQyxjQUFjLEVBQUUsK0JBQXFCLENBQUM7SUFDbkQsQ0FBQyxjQUFXLENBQUMseUJBQXlCLEVBQUUsMENBQWdDLENBQUM7SUFDekUsQ0FBQyxjQUFXLENBQUMsb0JBQW9CLEVBQUUscUNBQTJCLENBQUM7SUFDL0QsQ0FBQyxjQUFXLENBQUMsc0JBQXNCLEVBQUUsdUNBQTZCLENBQUM7SUFDbkUsQ0FBQyxjQUFXLENBQUMsVUFBVSxFQUFFLDJCQUFpQixDQUFDO0lBQzNDLENBQUMsY0FBVyxDQUFDLFVBQVUsRUFBRSwyQkFBaUIsQ0FBQztJQUMzQyxDQUFDLGNBQVcsQ0FBQyxhQUFhLEVBQUUsOEJBQW9CLENBQUM7SUFDakQsQ0FBQyxjQUFXLENBQUMsT0FBTyxFQUFFLHdCQUFjLENBQUM7SUFDckMsQ0FBQyxjQUFXLENBQUMsWUFBWSxFQUFFLDZCQUFtQixDQUFDO0NBQ2xELENBQUMsQ0FBQztBQUVILGtCQUFlLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbW1hbmRUeXBlIGZyb20gJy4uLy4uLy4uLy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL3R5cGUnO1xuXG5pbXBvcnQge1xuICAgIEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmQsXG4gICAgRXhlY3V0ZVNlbGVjdG9yQ29tbWFuZCxcbiAgICBXYWl0Q29tbWFuZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvb2JzZXJ2YXRpb24nO1xuXG5pbXBvcnQge1xuICAgIENsZWFyVXBsb2FkQ29tbWFuZCxcbiAgICBDbGlja0NvbW1hbmQsXG4gICAgQ2xvc2VXaW5kb3dDb21tYW5kLFxuICAgIERpc3BhdGNoRXZlbnRDb21tYW5kLFxuICAgIERvdWJsZUNsaWNrQ29tbWFuZCxcbiAgICBEcmFnQ29tbWFuZCxcbiAgICBEcmFnVG9FbGVtZW50Q29tbWFuZCxcbiAgICBFeGVjdXRlQXN5bmNFeHByZXNzaW9uQ29tbWFuZCxcbiAgICBFeGVjdXRlRXhwcmVzc2lvbkNvbW1hbmQsXG4gICAgR2V0QnJvd3NlckNvbnNvbGVNZXNzYWdlc0NvbW1hbmQsXG4gICAgR2V0Q3VycmVudFdpbmRvd0NvbW1hbmQsXG4gICAgR2V0TmF0aXZlRGlhbG9nSGlzdG9yeUNvbW1hbmQsXG4gICAgSG92ZXJDb21tYW5kLFxuICAgIE5hdmlnYXRlVG9Db21tYW5kLFxuICAgIE9wZW5XaW5kb3dDb21tYW5kLFxuICAgIFByZXNzS2V5Q29tbWFuZCxcbiAgICBSaWdodENsaWNrQ29tbWFuZCxcbiAgICBTY3JvbGxCeUNvbW1hbmQsXG4gICAgU2Nyb2xsQ29tbWFuZCxcbiAgICBTY3JvbGxJbnRvVmlld0NvbW1hbmQsXG4gICAgU2VsZWN0RWRpdGFibGVDb250ZW50Q29tbWFuZCxcbiAgICBTZWxlY3RUZXh0QXJlYUNvbnRlbnRDb21tYW5kLFxuICAgIFNlbGVjdFRleHRDb21tYW5kLFxuICAgIFNldEZpbGVzVG9VcGxvYWRDb21tYW5kLFxuICAgIFNldE5hdGl2ZURpYWxvZ0hhbmRsZXJDb21tYW5kLFxuICAgIFNldFBhZ2VMb2FkVGltZW91dENvbW1hbmQsXG4gICAgU2V0VGVzdFNwZWVkQ29tbWFuZCxcbiAgICBTd2l0Y2hUb0lmcmFtZUNvbW1hbmQsXG4gICAgU3dpdGNoVG9NYWluV2luZG93Q29tbWFuZCxcbiAgICBTd2l0Y2hUb1BhcmVudFdpbmRvd0NvbW1hbmQsXG4gICAgU3dpdGNoVG9QcmV2aW91c1dpbmRvd0NvbW1hbmQsXG4gICAgU3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZUNvbW1hbmQsXG4gICAgU3dpdGNoVG9XaW5kb3dDb21tYW5kLFxuICAgIFR5cGVUZXh0Q29tbWFuZCxcbiAgICBVc2VSb2xlQ29tbWFuZCxcbiAgICBHZXRDb29raWVzQ29tbWFuZCxcbiAgICBTZXRDb29raWVzQ29tbWFuZCxcbiAgICBEZWxldGVDb29raWVzQ29tbWFuZCxcbiAgICBSZXF1ZXN0Q29tbWFuZCxcbiAgICBTa2lwSnNFcnJvcnNDb21tYW5kLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi90ZXN0LXJ1bi9jb21tYW5kcy9hY3Rpb25zJztcblxuaW1wb3J0IHsgQXNzZXJ0aW9uQ29tbWFuZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL2Fzc2VydGlvbic7XG5pbXBvcnQgeyBDb21tYW5kQ29uc3RydWN0b3IgfSBmcm9tICcuL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgICBNYXhpbWl6ZVdpbmRvd0NvbW1hbmQsXG4gICAgUmVzaXplV2luZG93Q29tbWFuZCxcbiAgICBSZXNpemVXaW5kb3dUb0ZpdERldmljZUNvbW1hbmQsXG4gICAgVGFrZUVsZW1lbnRTY3JlZW5zaG90Q29tbWFuZCxcbiAgICBUYWtlU2NyZWVuc2hvdENvbW1hbmQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL2Jyb3dzZXItbWFuaXB1bGF0aW9uJztcblxuXG5jb25zdCBDT01NQU5EX0NPTlNUUlVDVE9SUyA9IG5ldyBNYXA8c3RyaW5nLCBDb21tYW5kQ29uc3RydWN0b3I+KFtcbiAgICBbQ29tbWFuZFR5cGUuZXhlY3V0ZVNlbGVjdG9yLCBFeGVjdXRlU2VsZWN0b3JDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuZXhlY3V0ZUNsaWVudEZ1bmN0aW9uLCBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUud2FpdCwgV2FpdENvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5jbGljaywgQ2xpY2tDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuZG91YmxlQ2xpY2ssIERvdWJsZUNsaWNrQ29tbWFuZF0sXG4gICAgW0NvbW1hbmRUeXBlLm5hdmlnYXRlVG8sIE5hdmlnYXRlVG9Db21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUudHlwZVRleHQsIFR5cGVUZXh0Q29tbWFuZF0sXG4gICAgW0NvbW1hbmRUeXBlLnNldE5hdGl2ZURpYWxvZ0hhbmRsZXIsIFNldE5hdGl2ZURpYWxvZ0hhbmRsZXJDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuc3dpdGNoVG9JZnJhbWUsIFN3aXRjaFRvSWZyYW1lQ29tbWFuZF0sXG4gICAgW0NvbW1hbmRUeXBlLnN3aXRjaFRvTWFpbldpbmRvdywgU3dpdGNoVG9NYWluV2luZG93Q29tbWFuZF0sXG4gICAgW0NvbW1hbmRUeXBlLmdldE5hdGl2ZURpYWxvZ0hpc3RvcnksIEdldE5hdGl2ZURpYWxvZ0hpc3RvcnlDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuZ2V0QnJvd3NlckNvbnNvbGVNZXNzYWdlcywgR2V0QnJvd3NlckNvbnNvbGVNZXNzYWdlc0NvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5zZXRUZXN0U3BlZWQsIFNldFRlc3RTcGVlZENvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5zZXRQYWdlTG9hZFRpbWVvdXQsIFNldFBhZ2VMb2FkVGltZW91dENvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5wcmVzc0tleSwgUHJlc3NLZXlDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuZHJhZ1RvRWxlbWVudCwgRHJhZ1RvRWxlbWVudENvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5zZWxlY3RFZGl0YWJsZUNvbnRlbnQsIFNlbGVjdEVkaXRhYmxlQ29udGVudENvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5ob3ZlciwgSG92ZXJDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuYXNzZXJ0aW9uLCBBc3NlcnRpb25Db21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUudXNlUm9sZSwgVXNlUm9sZUNvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5leGVjdXRlRXhwcmVzc2lvbiwgRXhlY3V0ZUV4cHJlc3Npb25Db21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuZXhlY3V0ZUFzeW5jRXhwcmVzc2lvbiwgRXhlY3V0ZUFzeW5jRXhwcmVzc2lvbkNvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5kcmFnLCBEcmFnQ29tbWFuZF0sXG4gICAgW0NvbW1hbmRUeXBlLnJpZ2h0Q2xpY2ssIFJpZ2h0Q2xpY2tDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuc2VsZWN0VGV4dCwgU2VsZWN0VGV4dENvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5zZWxlY3RUZXh0QXJlYUNvbnRlbnQsIFNlbGVjdFRleHRBcmVhQ29udGVudENvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5zZXRGaWxlc1RvVXBsb2FkLCBTZXRGaWxlc1RvVXBsb2FkQ29tbWFuZF0sXG4gICAgW0NvbW1hbmRUeXBlLmNsZWFyVXBsb2FkLCBDbGVhclVwbG9hZENvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS50YWtlU2NyZWVuc2hvdCwgVGFrZVNjcmVlbnNob3RDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUudGFrZUVsZW1lbnRTY3JlZW5zaG90LCBUYWtlRWxlbWVudFNjcmVlbnNob3RDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUucmVzaXplV2luZG93LCBSZXNpemVXaW5kb3dDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUucmVzaXplV2luZG93VG9GaXREZXZpY2UsIFJlc2l6ZVdpbmRvd1RvRml0RGV2aWNlQ29tbWFuZF0sXG4gICAgW0NvbW1hbmRUeXBlLm1heGltaXplV2luZG93LCBNYXhpbWl6ZVdpbmRvd0NvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5kaXNwYXRjaEV2ZW50LCBEaXNwYXRjaEV2ZW50Q29tbWFuZF0sXG4gICAgW0NvbW1hbmRUeXBlLnNjcm9sbCwgU2Nyb2xsQ29tbWFuZF0sXG4gICAgW0NvbW1hbmRUeXBlLnNjcm9sbEJ5LCBTY3JvbGxCeUNvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5zY3JvbGxJbnRvVmlldywgU2Nyb2xsSW50b1ZpZXdDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUub3BlbldpbmRvdywgT3BlbldpbmRvd0NvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5jbG9zZVdpbmRvdywgQ2xvc2VXaW5kb3dDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuZ2V0Q3VycmVudFdpbmRvdywgR2V0Q3VycmVudFdpbmRvd0NvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5zd2l0Y2hUb1dpbmRvdywgU3dpdGNoVG9XaW5kb3dDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuc3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZSwgU3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZUNvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5zd2l0Y2hUb1BhcmVudFdpbmRvdywgU3dpdGNoVG9QYXJlbnRXaW5kb3dDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuc3dpdGNoVG9QcmV2aW91c1dpbmRvdywgU3dpdGNoVG9QcmV2aW91c1dpbmRvd0NvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5nZXRDb29raWVzLCBHZXRDb29raWVzQ29tbWFuZF0sXG4gICAgW0NvbW1hbmRUeXBlLnNldENvb2tpZXMsIFNldENvb2tpZXNDb21tYW5kXSxcbiAgICBbQ29tbWFuZFR5cGUuZGVsZXRlQ29va2llcywgRGVsZXRlQ29va2llc0NvbW1hbmRdLFxuICAgIFtDb21tYW5kVHlwZS5yZXF1ZXN0LCBSZXF1ZXN0Q29tbWFuZF0sXG4gICAgW0NvbW1hbmRUeXBlLnNraXBKc0Vycm9ycywgU2tpcEpzRXJyb3JzQ29tbWFuZF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ09NTUFORF9DT05TVFJVQ1RPUlM7XG4iXX0=
|
|
@@ -20,8 +20,8 @@ class CommandBaseTransform extends base_transform_1.default {
|
|
|
20
20
|
return val instanceof base_1.CommandBase;
|
|
21
21
|
}
|
|
22
22
|
_skipArgumentValidation(CommandCtor, value) {
|
|
23
|
-
return utils_1.isObservationCommand(value) &&
|
|
24
|
-
!utils_1.isAssertionCommand(value) &&
|
|
23
|
+
return (0, utils_1.isObservationCommand)(value) &&
|
|
24
|
+
!(0, utils_1.isAssertionCommand)(value) &&
|
|
25
25
|
!OBSERVABLE_COMMAND_CONSTRUCTORS_WITH_SKIPPED_ARGUMENT_VALIDATION.includes(CommandCtor);
|
|
26
26
|
}
|
|
27
27
|
_createCommandInstance(CommandCtor, value) {
|
|
@@ -46,4 +46,4 @@ class CommandBaseTransform extends base_transform_1.default {
|
|
|
46
46
|
}
|
|
47
47
|
exports.default = CommandBaseTransform;
|
|
48
48
|
module.exports = exports.default;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvc2VyaWFsaXphdGlvbi9yZXBsaWNhdG9yL3RyYW5zZm9ybXMvY29tbWFuZC1iYXNlLXRyYXNmb3JtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUVBQThDO0FBQzlDLGdFQUFvRTtBQUVwRSxrRUFBa0c7QUFFbEcsc0VBQW1IO0FBQ25ILGtGQUEwRDtBQUMxRCxzR0FBOEU7QUFHOUUsTUFBTSxnRUFBZ0UsR0FBRztJQUNyRSxrQ0FBd0I7Q0FDM0IsQ0FBQztBQUVGLE1BQXFCLG9CQUFxQixTQUFRLHdCQUFhO0lBQzNEO1FBQ0ksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxlQUFlLENBQUUsQ0FBVSxFQUFFLEdBQVk7UUFDNUMsT0FBTyxHQUFHLFlBQVksa0JBQVcsQ0FBQztJQUN0QyxDQUFDO0lBRU8sdUJBQXVCLENBQUUsV0FBK0IsRUFBRSxLQUF3QjtRQUN0RixPQUFPLElBQUEsNEJBQW9CLEVBQUMsS0FBSyxDQUFDO1lBQzlCLENBQUMsSUFBQSwwQkFBa0IsRUFBQyxLQUFLLENBQUM7WUFDMUIsQ0FBQyxnRUFBZ0UsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVPLHNCQUFzQixDQUFFLFdBQStCLEVBQUUsS0FBd0I7UUFDckYseURBQXlEO1FBQ3pELG9EQUFvRDtRQUNwRCxNQUFNLFdBQVcsR0FBVSxFQUFFLENBQUM7UUFDOUIsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFakMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztZQUNoRCxPQUFPLElBQUssV0FBc0MsQ0FBQyxLQUFLLEVBQUUsV0FBc0IsQ0FBQyxDQUFDO2FBRWpGLElBQUksV0FBVyxLQUFLLHVDQUE2QjtZQUNsRCxPQUFPLHVDQUE2QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyRCxPQUFPLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFzQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVNLGdCQUFnQixDQUFFLEtBQXdCO1FBQzdDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxhQUFhO1lBQ25DLENBQUMsQ0FBQyx3Q0FBOEIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztZQUN6RCxDQUFDLENBQUMsOEJBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsV0FBVztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLEtBQUssQ0FBQyxJQUFJLHVCQUF1QixDQUFDLENBQUM7UUFFbEcsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDSjtBQXhDRCx1Q0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZVRyYW5zZm9ybSBmcm9tICcuLi9iYXNlLXRyYW5zZm9ybSc7XG5pbXBvcnQgeyBDb21tYW5kQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL2Jhc2UnO1xuaW1wb3J0IHsgU2VyaWFsaXplZENvbW1hbmQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGlzQXNzZXJ0aW9uQ29tbWFuZCwgaXNPYnNlcnZhdGlvbkNvbW1hbmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90ZXN0LXJ1bi9jb21tYW5kcy91dGlscyc7XG5pbXBvcnQgVGVzdFJ1biBmcm9tICcuLi8uLi8uLi8uLi8uLi90ZXN0LXJ1bic7XG5pbXBvcnQgeyBFeGVjdXRlRXhwcmVzc2lvbkNvbW1hbmQsIFNldE5hdGl2ZURpYWxvZ0hhbmRsZXJDb21tYW5kIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvYWN0aW9ucyc7XG5pbXBvcnQgQ09NTUFORF9DT05TVFJVQ1RPUlMgZnJvbSAnLi9jb21tYW5kLWNvbnN0cnVjdG9ycyc7XG5pbXBvcnQgQVNTRVJUSU9OX0NPTU1BTkRfQ09OU1RSVUNUT1JTIGZyb20gJy4vYXNzZXJ0aW9uLWNvbW1hbmQtY29uc3RydWN0b3JzJztcbmltcG9ydCB7IENvbW1hbmRDb25zdHJ1Y3RvciwgT2JzZXJ2YXRpb25Db25zdHJ1Y3RvciB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBPQlNFUlZBQkxFX0NPTU1BTkRfQ09OU1RSVUNUT1JTX1dJVEhfU0tJUFBFRF9BUkdVTUVOVF9WQUxJREFUSU9OID0gW1xuICAgIEV4ZWN1dGVFeHByZXNzaW9uQ29tbWFuZCxcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbW1hbmRCYXNlVHJhbnNmb3JtIGV4dGVuZHMgQmFzZVRyYW5zZm9ybSB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yICgpIHtcbiAgICAgICAgc3VwZXIoJ0NvbW1hbmRCYXNlJyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZFRyYW5zZm9ybSAoXzogdW5rbm93biwgdmFsOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBDb21tYW5kQmFzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9za2lwQXJndW1lbnRWYWxpZGF0aW9uIChDb21tYW5kQ3RvcjogQ29tbWFuZENvbnN0cnVjdG9yLCB2YWx1ZTogU2VyaWFsaXplZENvbW1hbmQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzT2JzZXJ2YXRpb25Db21tYW5kKHZhbHVlKSAmJlxuICAgICAgICAgICAgIWlzQXNzZXJ0aW9uQ29tbWFuZCh2YWx1ZSkgJiZcbiAgICAgICAgICAgICFPQlNFUlZBQkxFX0NPTU1BTkRfQ09OU1RSVUNUT1JTX1dJVEhfU0tJUFBFRF9BUkdVTUVOVF9WQUxJREFUSU9OLmluY2x1ZGVzKENvbW1hbmRDdG9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVDb21tYW5kSW5zdGFuY2UgKENvbW1hbmRDdG9yOiBDb21tYW5kQ29uc3RydWN0b3IsIHZhbHVlOiBTZXJpYWxpemVkQ29tbWFuZCk6IGFueSB7XG4gICAgICAgIC8vIE5PVEU6IFdlIHNob3VsZCBub3QgdmFsaWRhdGUgdGhlIGNvbW1hbmQgY3JlYXRpb24gaGVyZVxuICAgICAgICAvLyBzaW5jZSBpdCB3YXMgYWxyZWFkeSBkb25lIGJlZm9yZSBhY3Rpb24gZXhlY3V0aW9uXG4gICAgICAgIGNvbnN0IHRlc3RSdW5TdHViICAgICAgICA9IHt9O1xuICAgICAgICBjb25zdCB2YWxpZGF0ZVByb3BlcnRpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fc2tpcEFyZ3VtZW50VmFsaWRhdGlvbihDb21tYW5kQ3RvciwgdmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyAoQ29tbWFuZEN0b3IgYXMgT2JzZXJ2YXRpb25Db25zdHJ1Y3RvcikodmFsdWUsIHRlc3RSdW5TdHViIGFzIFRlc3RSdW4pO1xuXG4gICAgICAgIGVsc2UgaWYgKENvbW1hbmRDdG9yID09PSBTZXROYXRpdmVEaWFsb2dIYW5kbGVyQ29tbWFuZClcbiAgICAgICAgICAgIHJldHVybiBTZXROYXRpdmVEaWFsb2dIYW5kbGVyQ29tbWFuZC5mcm9tKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRDdG9yKHZhbHVlLCB0ZXN0UnVuU3R1YiBhcyBUZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmcm9tU2VyaWFsaXphYmxlICh2YWx1ZTogU2VyaWFsaXplZENvbW1hbmQpOiBhbnkge1xuICAgICAgICBjb25zdCBDb21tYW5kQ3RvciA9IHZhbHVlLmFzc2VydGlvblR5cGVcbiAgICAgICAgICAgID8gQVNTRVJUSU9OX0NPTU1BTkRfQ09OU1RSVUNUT1JTLmdldCh2YWx1ZS5hc3NlcnRpb25UeXBlKVxuICAgICAgICAgICAgOiBDT01NQU5EX0NPTlNUUlVDVE9SUy5nZXQodmFsdWUudHlwZSk7XG5cbiAgICAgICAgaWYgKCFDb21tYW5kQ3RvcilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQW4gYXBwcm9wcmlhdGUgY29tbWFuZCBjb25zdHJ1Y3RvciBmb3IgXCIke3ZhbHVlLnR5cGV9XCIgdHlwZSB3YXMgbm90IGZvdW5kLmApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVDb21tYW5kSW5zdGFuY2UoQ29tbWFuZEN0b3IsIHZhbHVlKTtcbiAgICB9XG59XG4iXX0=
|
package/lib/services/serialization/replicator/transforms/raw-command-callsite-record-transform.js
CHANGED
|
@@ -14,9 +14,9 @@ class RawCommandCallsiteRecordTransform extends base_transform_1.default {
|
|
|
14
14
|
return val instanceof raw_command_callsite_record_1.RawCommandCallsiteRecord;
|
|
15
15
|
}
|
|
16
16
|
toSerializable(callsite) {
|
|
17
|
-
return prerender_callsite_1.default(callsite);
|
|
17
|
+
return (0, prerender_callsite_1.default)(callsite);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
exports.default = RawCommandCallsiteRecordTransform;
|
|
21
21
|
module.exports = exports.default;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3LWNvbW1hbmQtY2FsbHNpdGUtcmVjb3JkLXRyYW5zZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9zZXJpYWxpemF0aW9uL3JlcGxpY2F0b3IvdHJhbnNmb3Jtcy9yYXctY29tbWFuZC1jYWxsc2l0ZS1yZWNvcmQtdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOEZBQTJGO0FBQzNGLHNFQUE2QztBQUM3QywrRkFBeUY7QUFFekYsTUFBcUIsaUNBQWtDLFNBQVEsd0JBQWE7SUFDeEU7UUFDSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sZUFBZSxDQUFFLENBQVUsRUFBRSxHQUFZO1FBQzVDLE9BQU8sR0FBRyxZQUFZLHNEQUF3QixDQUFDO0lBQ25ELENBQUM7SUFFTSxjQUFjLENBQUUsUUFBa0M7UUFDckQsT0FBTyxJQUFBLDRCQUFpQixFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDSjtBQVpELG9EQVlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByZXJlbmRlckNhbGxzaXRlLCB7IFJlbmRlcmVkQ2FsbHNpdGUgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9wcmVyZW5kZXItY2FsbHNpdGUnO1xuaW1wb3J0IEJhc2VUcmFuc2Zvcm0gZnJvbSAnLi9iYXNlLXRyYW5zZm9ybSc7XG5pbXBvcnQgeyBSYXdDb21tYW5kQ2FsbHNpdGVSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9yYXctY29tbWFuZC1jYWxsc2l0ZS1yZWNvcmQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYXdDb21tYW5kQ2FsbHNpdGVSZWNvcmRUcmFuc2Zvcm0gZXh0ZW5kcyBCYXNlVHJhbnNmb3JtIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKCkge1xuICAgICAgICBzdXBlcignUmF3Q29tbWFuZENhbGxzaXRlUmVjb3JkJyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZFRyYW5zZm9ybSAoXzogdW5rbm93biwgdmFsOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBSYXdDb21tYW5kQ2FsbHNpdGVSZWNvcmQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvU2VyaWFsaXphYmxlIChjYWxsc2l0ZTogUmF3Q29tbWFuZENhbGxzaXRlUmVjb3JkKTogUmVuZGVyZWRDYWxsc2l0ZSB7XG4gICAgICAgIHJldHVybiBwcmVyZW5kZXJDYWxsc2l0ZShjYWxsc2l0ZSk7XG4gICAgfVxufVxuIl19
|