testcafe 2.3.1 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +129 -0
- package/LICENSE +1 -1
- package/README.md +40 -46
- package/bin/testcafe-with-v8-flag-filter.js +2 -2
- package/lib/api/test-controller/execution-context.js +4 -2
- package/lib/api/test-controller/index.js +6 -1
- package/lib/api/test-run-tracker.js +1 -1
- package/lib/browser/connection/gateway/index.js +273 -0
- package/lib/browser/connection/gateway/status.js +10 -0
- package/lib/browser/connection/index.js +60 -47
- package/lib/browser/connection/service-routes.js +4 -2
- package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +3 -2
- package/lib/browser/provider/built-in/dedicated/chrome/index.js +48 -23
- package/lib/browser/provider/built-in/dedicated/edge/index.js +4 -1
- package/lib/browser/provider/index.js +13 -4
- package/lib/browser/provider/plugin-host.js +7 -1
- package/lib/cli/argument-parser/index.js +10 -14
- package/lib/cli/cli.js +3 -4
- package/lib/cli/remotes-wizard.js +2 -1
- package/lib/cli/utils/should-move-option-to-end.js +17 -0
- package/lib/client/automation/deps/hammerhead.js +24 -0
- package/lib/client/automation/deps/testcafe-core.js +24 -0
- package/lib/client/automation/index.js +528 -161
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/automation/playback/press/get-key-info.js +44 -0
- package/lib/client/automation/playback/press/utils.js +142 -0
- package/lib/client/automation/utils/get-key-code.js +15 -0
- package/lib/client/automation/utils/get-key-identifier.js +14 -0
- package/lib/client/automation/utils/is-letter.js +7 -0
- package/lib/client/automation/utils/key-identifier-maps.js +93 -0
- package/lib/client/browser/idle-page/index.html.mustache +2 -2
- package/lib/client/browser/idle-page/index.js +13 -8
- package/lib/client/core/index.js +58 -10
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/core/utils/array.js +77 -0
- package/lib/client/core/utils/dom.js +459 -0
- package/lib/client/core/utils/send-request-to-frame.js +22 -0
- package/lib/client/core/utils/style.js +102 -0
- package/lib/client/core/utils/values/boundary-values.js +41 -0
- package/lib/client/driver/index.js +253 -224
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/test-run/iframe.js.mustache +6 -6
- package/lib/client/test-run/index.js.mustache +37 -33
- package/lib/client/ui/index.js +3238 -54
- package/lib/client/ui/index.min.js +1 -1
- package/lib/client/ui/sprite.svg +15 -0
- package/lib/client/ui/styles.css +184 -41
- package/lib/compiler/babel/load-libs.js +6 -6
- package/lib/compiler/compilers.js +7 -7
- package/lib/compiler/index.js +6 -6
- package/lib/compiler/interfaces.js +1 -1
- package/lib/compiler/test-file/api-based.js +5 -5
- package/lib/compiler/test-file/formats/es-next/compiler.js +5 -5
- package/lib/compiler/test-file/formats/typescript/compiler.js +9 -9
- package/lib/compiler/test-file/get-exportable-lib-path.js +3 -3
- package/lib/configuration/configuration-base.js +9 -6
- package/lib/configuration/default-values.js +3 -3
- package/lib/configuration/formats.js +9 -5
- package/lib/configuration/interfaces.js +1 -1
- package/lib/configuration/option-names.js +3 -3
- package/lib/configuration/run-option-names.js +2 -2
- package/lib/configuration/testcafe-configuration.js +41 -24
- package/lib/configuration/types.js +1 -1
- package/lib/configuration/utils.js +32 -0
- package/lib/custom-client-scripts/client-script.js +2 -2
- package/lib/custom-client-scripts/get-code.js +3 -3
- package/lib/custom-client-scripts/routing.js +10 -12
- package/lib/errors/runtime/templates.js +4 -2
- package/lib/errors/test-run/templates.js +4 -1
- package/lib/errors/types.js +4 -1
- package/lib/index.js +6 -29
- package/lib/live/test-runner.js +5 -3
- package/lib/native-automation/add-custom-debug-formatters.js +22 -0
- package/lib/native-automation/api-base.js +27 -0
- package/lib/native-automation/client/event-descriptor.js +112 -0
- package/lib/native-automation/client/input.js +50 -0
- package/lib/native-automation/client/key-press/utils.js +31 -0
- package/lib/native-automation/client/types.js +11 -0
- package/lib/native-automation/client/utils.js +54 -0
- package/lib/native-automation/cookie-provider.js +115 -0
- package/lib/native-automation/empty-page-markup.js +11 -0
- package/lib/native-automation/error-route.js +7 -0
- package/lib/native-automation/errors.js +20 -0
- package/lib/native-automation/index.js +53 -0
- package/lib/native-automation/request-hooks/event-factory/frame-navigated-event-based.js +40 -0
- package/lib/native-automation/request-hooks/event-factory/request-paused-event-based.js +94 -0
- package/lib/native-automation/request-hooks/event-provider.js +52 -0
- package/lib/native-automation/request-hooks/pipeline-context.js +11 -0
- package/lib/{proxyless → native-automation}/request-pipeline/constants.js +1 -1
- package/lib/native-automation/request-pipeline/context-info.js +55 -0
- package/lib/native-automation/request-pipeline/index.js +309 -0
- package/lib/native-automation/request-pipeline/resendAuthRequest.js +23 -0
- package/lib/native-automation/request-pipeline/safe-api.js +63 -0
- package/lib/native-automation/request-pipeline/special-handlers.js +73 -0
- package/lib/native-automation/request-pipeline/test-run-bridge.js +45 -0
- package/lib/native-automation/resource-injector.js +175 -0
- package/lib/native-automation/session-storage/index.js +43 -0
- package/lib/native-automation/storages-provider.js +17 -0
- package/lib/native-automation/types.js +12 -0
- package/lib/native-automation/utils/cdp.js +70 -0
- package/lib/native-automation/utils/convert.js +11 -0
- package/lib/native-automation/utils/get-active-client.js +8 -0
- package/lib/native-automation/utils/headers.js +30 -0
- package/lib/native-automation/utils/string.js +32 -0
- package/lib/reporter/index.js +52 -4
- package/lib/reporter/interfaces.js +1 -1
- package/lib/reporter/plugin-host.js +44 -4
- package/lib/reporter/plugin-methods.js +2 -1
- package/lib/reporter/report-data-log.js +25 -0
- package/lib/runner/bootstrapper.js +38 -6
- package/lib/runner/index.js +87 -47
- package/lib/runner/interfaces.js +1 -1
- package/lib/runner/task/index.js +1 -29
- package/lib/runner/test-run-controller.js +45 -1
- package/lib/services/compiler/host.js +3 -3
- package/lib/services/compiler/interfaces.js +1 -1
- package/lib/services/compiler/service.js +6 -5
- package/lib/services/compiler/test-run-proxy.js +3 -2
- package/lib/services/interfaces.js +1 -1
- package/lib/services/serialization/replicator/transforms/command-base-trasform/command-constructors.js +2 -1
- package/lib/shared/errors/index.js +8 -2
- package/lib/shared/utils/is-file-protocol.js +2 -2
- package/lib/test-run/commands/actions.js +16 -4
- package/lib/test-run/commands/type.js +2 -1
- package/lib/test-run/cookies/base.js +4 -1
- package/lib/test-run/cookies/factory.js +4 -4
- package/lib/test-run/cookies/provider.js +9 -2
- package/lib/test-run/execute-js-expression/index.js +4 -2
- package/lib/test-run/index.js +29 -22
- package/lib/test-run/request/create-request-options.js +37 -24
- package/lib/test-run/request/send.js +2 -3
- package/lib/test-run/role-provider.js +5 -5
- package/lib/test-run/session-controller.js +5 -5
- package/lib/test-run/storages/factory.js +4 -4
- package/lib/testcafe.js +17 -10
- package/lib/utils/check-is-vm.js +58 -0
- package/lib/utils/debug-loggers.js +7 -7
- package/lib/utils/get-browser.js +5 -2
- package/lib/utils/get-options/boolean-or-object-option.js +18 -0
- package/lib/utils/get-options/quarantine.js +10 -13
- package/lib/utils/get-options/skip-js-errors.js +12 -16
- package/lib/utils/parse-user-agent.js +4 -12
- package/lib/utils/string.js +1 -1
- package/package.json +13 -9
- package/ts-defs/index.d.ts +12 -2
- package/ts-defs/selectors.d.ts +8 -1
- package/ts-defs/testcafe-scripts.d.ts +8 -1
- package/lib/browser/connection/gateway.js +0 -205
- package/lib/proxyless/add-custom-debug-formatters.js +0 -22
- package/lib/proxyless/api-base.js +0 -25
- package/lib/proxyless/client/event-simulator.js +0 -40
- package/lib/proxyless/client/types.js +0 -11
- package/lib/proxyless/client/utils.js +0 -24
- package/lib/proxyless/cookie-provider.js +0 -87
- package/lib/proxyless/default-setup-options.js +0 -9
- package/lib/proxyless/empty-page-markup.js +0 -11
- package/lib/proxyless/error-route.js +0 -7
- package/lib/proxyless/index.js +0 -53
- package/lib/proxyless/request-hooks/event-factory/frame-navigated-event-based.js +0 -40
- package/lib/proxyless/request-hooks/event-factory/request-paused-event-based.js +0 -95
- package/lib/proxyless/request-hooks/event-provider.js +0 -52
- package/lib/proxyless/request-hooks/pipeline-context.js +0 -11
- package/lib/proxyless/request-pipeline/context-info.js +0 -55
- package/lib/proxyless/request-pipeline/index.js +0 -230
- package/lib/proxyless/request-pipeline/resendAuthRequest.js +0 -23
- package/lib/proxyless/request-pipeline/safe-api.js +0 -62
- package/lib/proxyless/request-pipeline/special-handlers.js +0 -73
- package/lib/proxyless/request-pipeline/test-run-bridge.js +0 -45
- package/lib/proxyless/resource-injector.js +0 -162
- package/lib/proxyless/session-storage/index.js +0 -39
- package/lib/proxyless/storages-provider.js +0 -17
- package/lib/proxyless/types.js +0 -10
- package/lib/proxyless/utils/cdp.js +0 -66
- package/lib/proxyless/utils/get-active-client.js +0 -8
- package/lib/proxyless/utils/headers.js +0 -30
- package/lib/proxyless/utils/string.js +0 -32
package/lib/runner/task/index.js
CHANGED
|
@@ -1,27 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
@@ -33,7 +10,6 @@ const browser_job_1 = __importDefault(require("../browser-job"));
|
|
|
33
10
|
const screenshots_1 = __importDefault(require("../../screenshots"));
|
|
34
11
|
const warning_log_1 = __importDefault(require("../../notifications/warning-log"));
|
|
35
12
|
const fixture_hook_controller_1 = __importDefault(require("../fixture-hook-controller"));
|
|
36
|
-
const clientScriptsRouting = __importStar(require("../../custom-client-scripts/routing"));
|
|
37
13
|
const videos_1 = __importDefault(require("../../video-recorder/videos"));
|
|
38
14
|
const phase_1 = __importDefault(require("./phase"));
|
|
39
15
|
class Task extends async_event_emitter_1.default {
|
|
@@ -61,7 +37,6 @@ class Task extends async_event_emitter_1.default {
|
|
|
61
37
|
});
|
|
62
38
|
this.fixtureHookController = new fixture_hook_controller_1.default(tests, browserConnectionGroups.length);
|
|
63
39
|
this._pendingBrowserJobs = this._createBrowserJobs(proxy, this.opts);
|
|
64
|
-
this._clientScriptRoutes = clientScriptsRouting.register(proxy, tests, !!this.opts.experimentalProxyless);
|
|
65
40
|
this.testStructure = this._prepareTestStructure(tests);
|
|
66
41
|
if (this.opts.videoPath) {
|
|
67
42
|
const { videoPath, videoOptions, videoEncodingOptions } = this.opts;
|
|
@@ -135,9 +110,6 @@ class Task extends async_event_emitter_1.default {
|
|
|
135
110
|
return job;
|
|
136
111
|
});
|
|
137
112
|
}
|
|
138
|
-
unRegisterClientScriptRouting() {
|
|
139
|
-
clientScriptsRouting.unRegister(this._proxy, this._clientScriptRoutes);
|
|
140
|
-
}
|
|
141
113
|
// API
|
|
142
114
|
abort() {
|
|
143
115
|
this._pendingBrowserJobs.forEach(job => job.abort());
|
|
@@ -145,4 +117,4 @@ class Task extends async_event_emitter_1.default {
|
|
|
145
117
|
}
|
|
146
118
|
exports.default = Task;
|
|
147
119
|
module.exports = exports.default;
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVubmVyL3Rhc2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUFpRDtBQUNqRCxvREFBNEI7QUFDNUIsMEZBQWdFO0FBQ2hFLGlFQUF3QztBQUN4QyxvRUFBNEM7QUFDNUMsa0ZBQXlEO0FBQ3pELHlGQUErRDtBQUMvRCwwRkFBNEU7QUFDNUUseUVBQWlEO0FBYWpELG9EQUFnQztBQUtoQyxNQUFxQixJQUFLLFNBQVEsNkJBQWlCO0lBa0IvQyxZQUFvQixFQUNoQixLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixVQUFVLEdBQ0g7UUFDUCxLQUFLLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxVQUFVLEdBQWdCLElBQUEsZ0JBQU0sR0FBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQW9CLGVBQVMsQ0FBQyxXQUFXLENBQUM7UUFDckQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQXFCLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFzQixJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBb0IsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQWdCLElBQUkscUJBQVUsQ0FBQyxJQUFJLEVBQUUscUJBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLElBQUksQ0FBQyxnQkFBZ0IsR0FBVSxlQUFlLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBZSxVQUFVLENBQUM7UUFFMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBb0MsQ0FBQztRQUVwSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkscUJBQVcsQ0FBQztZQUMvQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtZQUN0QyxJQUFJO1lBQ0osV0FBVztZQUNYLFFBQVE7WUFDUixVQUFVO1lBQ1YsVUFBVTtZQUNWLGVBQWU7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksaUNBQXFCLENBQUMsS0FBSyxFQUFFLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxtQkFBbUIsR0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsbUJBQW1CLEdBQUssb0JBQW9CLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM1RyxJQUFJLENBQUMsYUFBYSxHQUFXLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUVwRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZ0JBQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUE2QixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3RLO0lBQ0wsQ0FBQztJQUVPLDhCQUE4QixDQUFFLEdBQWU7UUFDbkQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLE9BQWdCLEVBQUUsRUFBRTtZQUMvQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUV0RCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNsRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBRWIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2QztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQWUsRUFBRSxFQUFFO1lBQ3hDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxlQUFTLENBQUMsT0FBTyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFNLGVBQVMsQ0FBQyxPQUFPLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO2dCQUUzQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQzthQUM5QztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDeEIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRXpDLElBQUEsYUFBTSxFQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUV0QyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtnQkFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFTLENBQUMsSUFBSSxDQUFDO2dCQUU3QixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxHQUFHLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFvQixFQUFFLEVBQUU7WUFDdEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGVBQVMsQ0FBQyxJQUFJO2dCQUM5QixPQUFPO1lBRVgsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7SUFFTyxxQkFBcUIsQ0FBRSxLQUFhO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUEsZ0JBQU8sRUFBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFNUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN2QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQVEsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQWtCLENBQUM7WUFFeEQsT0FBTztnQkFDSCxPQUFPLEVBQUU7b0JBQ0wsRUFBRSxFQUFLLE9BQU8sQ0FBQyxFQUFFO29CQUNqQixJQUFJLEVBQUcsT0FBTyxDQUFDLElBQWM7b0JBQzdCLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUMzQixPQUFPOzRCQUNILEVBQUUsRUFBSSxJQUFJLENBQUMsRUFBRTs0QkFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQWM7NEJBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTt5QkFDbEIsQ0FBQztvQkFDTixDQUFDLENBQUM7aUJBQ0w7YUFDSixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sa0JBQWtCLENBQUUsS0FBWSxFQUFFLElBQTZCO1FBQ25FLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1lBQzdELE1BQU0sR0FBRyxHQUFHLElBQUkscUJBQVUsQ0FBQztnQkFDdkIsS0FBSyxFQUFrQixJQUFJLENBQUMsS0FBSztnQkFDakMsa0JBQWtCLEVBQUssc0JBQXNCO2dCQUM3QyxXQUFXLEVBQVksSUFBSSxDQUFDLFdBQVc7Z0JBQ3ZDLFVBQVUsRUFBYSxJQUFJLENBQUMsVUFBVTtnQkFDdEMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtnQkFDakQsZUFBZSxFQUFRLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQzVDLFVBQVUsRUFBYSxJQUFJLENBQUMsV0FBVztnQkFDdkMsS0FBSztnQkFDTCxJQUFJO2FBQ1AsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVqRCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLDZCQUE2QjtRQUNoQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsTUFBTTtJQUNDLEtBQUs7UUFDUixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNKO0FBOUpELHVCQThKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdyb3VwQnksIHB1bGwgYXMgcmVtb3ZlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCBBc3luY0V2ZW50RW1pdHRlciBmcm9tICcuLi8uLi91dGlscy9hc3luYy1ldmVudC1lbWl0dGVyJztcbmltcG9ydCBCcm93c2VySm9iIGZyb20gJy4uL2Jyb3dzZXItam9iJztcbmltcG9ydCBTY3JlZW5zaG90cyBmcm9tICcuLi8uLi9zY3JlZW5zaG90cyc7XG5pbXBvcnQgV2FybmluZ0xvZyBmcm9tICcuLi8uLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbG9nJztcbmltcG9ydCBGaXh0dXJlSG9va0NvbnRyb2xsZXIgZnJvbSAnLi4vZml4dHVyZS1ob29rLWNvbnRyb2xsZXInO1xuaW1wb3J0ICogYXMgY2xpZW50U2NyaXB0c1JvdXRpbmcgZnJvbSAnLi4vLi4vY3VzdG9tLWNsaWVudC1zY3JpcHRzL3JvdXRpbmcnO1xuaW1wb3J0IFZpZGVvcyBmcm9tICcuLi8uLi92aWRlby1yZWNvcmRlci92aWRlb3MnO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vLi4vdGVzdC1ydW4nO1xuaW1wb3J0IHsgUHJveHkgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgICBBY3Rpb25FdmVudEFyZyxcbiAgICBSZXBvcnRlZFRlc3RTdHJ1Y3R1cmVJdGVtLFxuICAgIFRhc2tJbml0LFxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0IEJyb3dzZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL2Jyb3dzZXIvY29ubmVjdGlvbic7XG5pbXBvcnQgVGVzdCBmcm9tICcuLi8uLi9hcGkvc3RydWN0dXJlL3Rlc3QnO1xuaW1wb3J0IHsgVmlkZW9PcHRpb25zIH0gZnJvbSAnLi4vLi4vdmlkZW8tcmVjb3JkZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgVGFza1BoYXNlIGZyb20gJy4vcGhhc2UnO1xuaW1wb3J0IENvbXBpbGVyU2VydmljZSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21waWxlci9ob3N0JztcbmltcG9ydCBGaXh0dXJlIGZyb20gJy4uLy4uL2FwaS9zdHJ1Y3R1cmUvZml4dHVyZSc7XG5pbXBvcnQgTWVzc2FnZUJ1cyBmcm9tICcuLi8uLi91dGlscy9tZXNzYWdlLWJ1cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRhc2sgZXh0ZW5kcyBBc3luY0V2ZW50RW1pdHRlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGltZVN0YW1wOiBtb21lbnQuTW9tZW50O1xuICAgIHByaXZhdGUgX3BoYXNlOiBUYXNrUGhhc2U7XG4gICAgcHVibGljIGJyb3dzZXJDb25uZWN0aW9uR3JvdXBzOiBCcm93c2VyQ29ubmVjdGlvbltdW107XG4gICAgcHVibGljIHJlYWRvbmx5IHRlc3RzOiBUZXN0W107XG4gICAgcHVibGljIHJlYWRvbmx5IG9wdHM6IERpY3Rpb25hcnk8T3B0aW9uVmFsdWU+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Byb3h5OiBQcm94eTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgd2FybmluZ0xvZzogV2FybmluZ0xvZztcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2NyZWVuc2hvdHM6IFNjcmVlbnNob3RzO1xuICAgIHB1YmxpYyByZWFkb25seSBmaXh0dXJlSG9va0NvbnRyb2xsZXI6IEZpeHR1cmVIb29rQ29udHJvbGxlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wZW5kaW5nQnJvd3NlckpvYnM6IEJyb3dzZXJKb2JbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jbGllbnRTY3JpcHRSb3V0ZXM6IHN0cmluZ1tdO1xuICAgIHB1YmxpYyByZWFkb25seSB0ZXN0U3RydWN0dXJlOiBSZXBvcnRlZFRlc3RTdHJ1Y3R1cmVJdGVtW107XG4gICAgcHVibGljIHJlYWRvbmx5IHZpZGVvcz86IFZpZGVvcztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb21waWxlclNlcnZpY2U/OiBDb21waWxlclNlcnZpY2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZUJ1czogTWVzc2FnZUJ1cztcbiAgICBwdWJsaWMgc3RhcnRUaW1lPzogRGF0ZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoe1xuICAgICAgICB0ZXN0cyxcbiAgICAgICAgYnJvd3NlckNvbm5lY3Rpb25Hcm91cHMsXG4gICAgICAgIHByb3h5LFxuICAgICAgICBvcHRzLFxuICAgICAgICBydW5uZXJXYXJuaW5nTG9nLFxuICAgICAgICBjb21waWxlclNlcnZpY2UsXG4gICAgICAgIG1lc3NhZ2VCdXMsXG4gICAgfTogVGFza0luaXQpIHtcbiAgICAgICAgc3VwZXIoeyBjYXB0dXJlUmVqZWN0aW9uczogdHJ1ZSB9KTtcblxuICAgICAgICB0aGlzLl90aW1lU3RhbXAgICAgICAgICAgICAgID0gbW9tZW50KCk7XG4gICAgICAgIHRoaXMuX3BoYXNlICAgICAgICAgICAgICAgICAgPSBUYXNrUGhhc2UuaW5pdGlhbGl6ZWQ7XG4gICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25Hcm91cHMgPSBicm93c2VyQ29ubmVjdGlvbkdyb3VwcztcbiAgICAgICAgdGhpcy50ZXN0cyAgICAgICAgICAgICAgICAgICA9IHRlc3RzO1xuICAgICAgICB0aGlzLm9wdHMgICAgICAgICAgICAgICAgICAgID0gb3B0cztcbiAgICAgICAgdGhpcy5fcHJveHkgICAgICAgICAgICAgICAgICA9IHByb3h5O1xuICAgICAgICB0aGlzLndhcm5pbmdMb2cgICAgICAgICAgICAgID0gbmV3IFdhcm5pbmdMb2cobnVsbCwgV2FybmluZ0xvZy5jcmVhdGVBZGRXYXJuaW5nQ2FsbGJhY2sobWVzc2FnZUJ1cykpO1xuICAgICAgICB0aGlzLl9jb21waWxlclNlcnZpY2UgICAgICAgID0gY29tcGlsZXJTZXJ2aWNlO1xuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzICAgICAgICAgICAgID0gbWVzc2FnZUJ1cztcblxuICAgICAgICB0aGlzLndhcm5pbmdMb2cuY29weUZyb20ocnVubmVyV2FybmluZ0xvZyk7XG5cbiAgICAgICAgY29uc3QgeyBwYXRoLCBwYXRoUGF0dGVybiwgZnVsbFBhZ2UsIHRodW1ibmFpbHMsIGF1dG9UYWtlT25GYWlscyB9ID0gdGhpcy5vcHRzLnNjcmVlbnNob3RzIGFzIFNjcmVlbnNob3RPcHRpb25WYWx1ZTtcblxuICAgICAgICB0aGlzLnNjcmVlbnNob3RzID0gbmV3IFNjcmVlbnNob3RzKHtcbiAgICAgICAgICAgIGVuYWJsZWQ6ICF0aGlzLm9wdHMuZGlzYWJsZVNjcmVlbnNob3RzLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIHBhdGhQYXR0ZXJuLFxuICAgICAgICAgICAgZnVsbFBhZ2UsXG4gICAgICAgICAgICB0aHVtYm5haWxzLFxuICAgICAgICAgICAgbWVzc2FnZUJ1cyxcbiAgICAgICAgICAgIGF1dG9UYWtlT25GYWlscyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maXh0dXJlSG9va0NvbnRyb2xsZXIgPSBuZXcgRml4dHVyZUhvb2tDb250cm9sbGVyKHRlc3RzLCBicm93c2VyQ29ubmVjdGlvbkdyb3Vwcy5sZW5ndGgpO1xuICAgICAgICB0aGlzLl9wZW5kaW5nQnJvd3NlckpvYnMgICA9IHRoaXMuX2NyZWF0ZUJyb3dzZXJKb2JzKHByb3h5LCB0aGlzLm9wdHMpO1xuICAgICAgICB0aGlzLl9jbGllbnRTY3JpcHRSb3V0ZXMgICA9IGNsaWVudFNjcmlwdHNSb3V0aW5nLnJlZ2lzdGVyKHByb3h5LCB0ZXN0cywgISF0aGlzLm9wdHMuZXhwZXJpbWVudGFsUHJveHlsZXNzKTtcbiAgICAgICAgdGhpcy50ZXN0U3RydWN0dXJlICAgICAgICAgPSB0aGlzLl9wcmVwYXJlVGVzdFN0cnVjdHVyZSh0ZXN0cyk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0cy52aWRlb1BhdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmlkZW9QYXRoLCB2aWRlb09wdGlvbnMsIHZpZGVvRW5jb2RpbmdPcHRpb25zIH0gPSB0aGlzLm9wdHM7XG5cbiAgICAgICAgICAgIHRoaXMudmlkZW9zID0gbmV3IFZpZGVvcyh0aGlzLl9wZW5kaW5nQnJvd3NlckpvYnMsIHsgdmlkZW9QYXRoLCB2aWRlb09wdGlvbnMsIHZpZGVvRW5jb2RpbmdPcHRpb25zIH0gYXMgdW5rbm93biBhcyBWaWRlb09wdGlvbnMsIHRoaXMud2FybmluZ0xvZywgdGhpcy5fdGltZVN0YW1wKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2Fzc2lnbkJyb3dzZXJKb2JFdmVudEhhbmRsZXJzIChqb2I6IEJyb3dzZXJKb2IpOiB2b2lkIHtcbiAgICAgICAgam9iLm9uKCd0ZXN0LXJ1bi1kb25lJywgYXN5bmMgKHRlc3RSdW46IFRlc3RSdW4pID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgndGVzdC1ydW4tZG9uZScsIHRlc3RSdW4pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRzLnN0b3BPbkZpcnN0RmFpbCAmJiB0ZXN0UnVuLmVycnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hYm9ydCgpO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fbWVzc2FnZUJ1cy5lbWl0KCdkb25lJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGpvYi5vbmNlKCdzdGFydCcsIGFzeW5jIChzdGFydFRpbWU6IERhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9waGFzZSAhPT0gVGFza1BoYXNlLnN0YXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9waGFzZSAgICA9IFRhc2tQaGFzZS5zdGFydGVkO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lID0gc3RhcnRUaW1lO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fbWVzc2FnZUJ1cy5lbWl0KCdzdGFydCcsIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBqb2Iub25jZSgnZG9uZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgnYnJvd3Nlci1qb2ItZG9uZScsIGpvYik7XG5cbiAgICAgICAgICAgIHJlbW92ZSh0aGlzLl9wZW5kaW5nQnJvd3NlckpvYnMsIGpvYik7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ0Jyb3dzZXJKb2JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BoYXNlID0gVGFza1BoYXNlLmRvbmU7XG5cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9tZXNzYWdlQnVzLmVtaXQoJ2RvbmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgam9iLm9uKCd0ZXN0LWFjdGlvbi1kb25lJywgYXN5bmMgKGFyZ3M6IEFjdGlvbkV2ZW50QXJnKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fcGhhc2UgPT09IFRhc2tQaGFzZS5kb25lKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fbWVzc2FnZUJ1cy5lbWl0KCd0ZXN0LWFjdGlvbi1kb25lJywgYXJncyk7XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZVRlc3RTdHJ1Y3R1cmUgKHRlc3RzOiBUZXN0W10pOiBSZXBvcnRlZFRlc3RTdHJ1Y3R1cmVJdGVtW10ge1xuICAgICAgICBjb25zdCBncm91cHMgPSBncm91cEJ5KHRlc3RzLCAnZml4dHVyZS5pZCcpO1xuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhncm91cHMpLm1hcChmaXh0dXJlSWQgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGVzdHNCeUdyb3VwID0gZ3JvdXBzW2ZpeHR1cmVJZF07XG4gICAgICAgICAgICBjb25zdCBmaXh0dXJlICAgICAgPSB0ZXN0c0J5R3JvdXBbMF0uZml4dHVyZSBhcyBGaXh0dXJlO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGZpeHR1cmU6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICAgIGZpeHR1cmUuaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICBmaXh0dXJlLm5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICB0ZXN0czogdGVzdHNCeUdyb3VwLm1hcCh0ZXN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICAgdGVzdC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0ZXN0Lm5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXA6IHRlc3Quc2tpcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVCcm93c2VySm9icyAocHJveHk6IFByb3h5LCBvcHRzOiBEaWN0aW9uYXJ5PE9wdGlvblZhbHVlPik6IEJyb3dzZXJKb2JbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR3JvdXBzLm1hcChicm93c2VyQ29ubmVjdGlvbkdyb3VwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGpvYiA9IG5ldyBCcm93c2VySm9iKHtcbiAgICAgICAgICAgICAgICB0ZXN0czogICAgICAgICAgICAgICAgIHRoaXMudGVzdHMsXG4gICAgICAgICAgICAgICAgYnJvd3NlckNvbm5lY3Rpb25zOiAgICBicm93c2VyQ29ubmVjdGlvbkdyb3VwLFxuICAgICAgICAgICAgICAgIHNjcmVlbnNob3RzOiAgICAgICAgICAgdGhpcy5zY3JlZW5zaG90cyxcbiAgICAgICAgICAgICAgICB3YXJuaW5nTG9nOiAgICAgICAgICAgIHRoaXMud2FybmluZ0xvZyxcbiAgICAgICAgICAgICAgICBmaXh0dXJlSG9va0NvbnRyb2xsZXI6IHRoaXMuZml4dHVyZUhvb2tDb250cm9sbGVyLFxuICAgICAgICAgICAgICAgIGNvbXBpbGVyU2VydmljZTogICAgICAgdGhpcy5fY29tcGlsZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VCdXM6ICAgICAgICAgICAgdGhpcy5fbWVzc2FnZUJ1cyxcbiAgICAgICAgICAgICAgICBwcm94eSxcbiAgICAgICAgICAgICAgICBvcHRzLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX2Fzc2lnbkJyb3dzZXJKb2JFdmVudEhhbmRsZXJzKGpvYik7XG4gICAgICAgICAgICBicm93c2VyQ29ubmVjdGlvbkdyb3VwLm1hcChiYyA9PiBiYy5hZGRKb2Ioam9iKSk7XG5cbiAgICAgICAgICAgIHJldHVybiBqb2I7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB1blJlZ2lzdGVyQ2xpZW50U2NyaXB0Um91dGluZyAoKTogdm9pZCB7XG4gICAgICAgIGNsaWVudFNjcmlwdHNSb3V0aW5nLnVuUmVnaXN0ZXIodGhpcy5fcHJveHksIHRoaXMuX2NsaWVudFNjcmlwdFJvdXRlcyk7XG4gICAgfVxuXG4gICAgLy8gQVBJXG4gICAgcHVibGljIGFib3J0ICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZ0Jyb3dzZXJKb2JzLmZvckVhY2goam9iID0+IGpvYi5hYm9ydCgpKTtcbiAgICB9XG59XG4iXX0=
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVubmVyL3Rhc2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBaUQ7QUFDakQsb0RBQTRCO0FBQzVCLDBGQUFnRTtBQUNoRSxpRUFBd0M7QUFDeEMsb0VBQTRDO0FBQzVDLGtGQUF5RDtBQUN6RCx5RkFBK0Q7QUFDL0QseUVBQWlEO0FBYWpELG9EQUFnQztBQUtoQyxNQUFxQixJQUFLLFNBQVEsNkJBQWlCO0lBaUIvQyxZQUFvQixFQUNoQixLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixVQUFVLEdBQ0g7UUFDUCxLQUFLLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxVQUFVLEdBQWdCLElBQUEsZ0JBQU0sR0FBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQW9CLGVBQVMsQ0FBQyxXQUFXLENBQUM7UUFDckQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQXFCLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFzQixJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBb0IsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQWdCLElBQUkscUJBQVUsQ0FBQyxJQUFJLEVBQUUscUJBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLElBQUksQ0FBQyxnQkFBZ0IsR0FBVSxlQUFlLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBZSxVQUFVLENBQUM7UUFFMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzQyxNQUFNLEVBQUUs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a0JBQWtCLEVBQUssc0JBQXNCO2dCQUM3QyxXQUFXLEVBQVksSUFBSSxDQUFDLFdBQVc7Z0JBQ3ZDLFVBQVUsRUFBYSxJQUFJLENBQUMsVUFBVTtnQkFDdEMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtnQkFDakQsZUFBZSxFQUFRLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQzVDLFVBQVUsRUFBYSxJQUFJLENBQUMsV0FBVztnQkFDdkMsS0FBSztnQkFDTCxJQUFJO2FBQ1AsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVqRCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU07SUFDQyxLQUFLO1FBQ1IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDSjtBQXhKRCx1QkF3SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBncm91cEJ5LCBwdWxsIGFzIHJlbW92ZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgQXN5bmNFdmVudEVtaXR0ZXIgZnJvbSAnLi4vLi4vdXRpbHMvYXN5bmMtZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgQnJvd3NlckpvYiBmcm9tICcuLi9icm93c2VyLWpvYic7XG5pbXBvcnQgU2NyZWVuc2hvdHMgZnJvbSAnLi4vLi4vc2NyZWVuc2hvdHMnO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5pbXBvcnQgRml4dHVyZUhvb2tDb250cm9sbGVyIGZyb20gJy4uL2ZpeHR1cmUtaG9vay1jb250cm9sbGVyJztcbmltcG9ydCBWaWRlb3MgZnJvbSAnLi4vLi4vdmlkZW8tcmVjb3JkZXIvdmlkZW9zJztcbmltcG9ydCBUZXN0UnVuIGZyb20gJy4uLy4uL3Rlc3QtcnVuJztcbmltcG9ydCB7IFByb3h5IH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgQWN0aW9uRXZlbnRBcmcsXG4gICAgUmVwb3J0ZWRUZXN0U3RydWN0dXJlSXRlbSxcbiAgICBUYXNrSW5pdCxcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IFRlc3QgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS90ZXN0JztcbmltcG9ydCB7IFZpZGVvT3B0aW9ucyB9IGZyb20gJy4uLy4uL3ZpZGVvLXJlY29yZGVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IFRhc2tQaGFzZSBmcm9tICcuL3BoYXNlJztcbmltcG9ydCBDb21waWxlclNlcnZpY2UgZnJvbSAnLi4vLi4vc2VydmljZXMvY29tcGlsZXIvaG9zdCc7XG5pbXBvcnQgRml4dHVyZSBmcm9tICcuLi8uLi9hcGkvc3RydWN0dXJlL2ZpeHR1cmUnO1xuaW1wb3J0IE1lc3NhZ2VCdXMgZnJvbSAnLi4vLi4vdXRpbHMvbWVzc2FnZS1idXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYXNrIGV4dGVuZHMgQXN5bmNFdmVudEVtaXR0ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVTdGFtcDogbW9tZW50Lk1vbWVudDtcbiAgICBwcml2YXRlIF9waGFzZTogVGFza1BoYXNlO1xuICAgIHB1YmxpYyBicm93c2VyQ29ubmVjdGlvbkdyb3VwczogQnJvd3NlckNvbm5lY3Rpb25bXVtdO1xuICAgIHB1YmxpYyByZWFkb25seSB0ZXN0czogVGVzdFtdO1xuICAgIHB1YmxpYyByZWFkb25seSBvcHRzOiBEaWN0aW9uYXJ5PE9wdGlvblZhbHVlPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm94eTogUHJveHk7XG4gICAgcHVibGljIHJlYWRvbmx5IHdhcm5pbmdMb2c6IFdhcm5pbmdMb2c7XG4gICAgcHVibGljIHJlYWRvbmx5IHNjcmVlbnNob3RzOiBTY3JlZW5zaG90cztcbiAgICBwdWJsaWMgcmVhZG9ubHkgZml4dHVyZUhvb2tDb250cm9sbGVyOiBGaXh0dXJlSG9va0NvbnRyb2xsZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGVuZGluZ0Jyb3dzZXJKb2JzOiBCcm93c2VySm9iW107XG4gICAgcHVibGljIHJlYWRvbmx5IHRlc3RTdHJ1Y3R1cmU6IFJlcG9ydGVkVGVzdFN0cnVjdHVyZUl0ZW1bXTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlkZW9zPzogVmlkZW9zO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbXBpbGVyU2VydmljZT86IENvbXBpbGVyU2VydmljZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlQnVzOiBNZXNzYWdlQnVzO1xuICAgIHB1YmxpYyBzdGFydFRpbWU/OiBEYXRlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICh7XG4gICAgICAgIHRlc3RzLFxuICAgICAgICBicm93c2VyQ29ubmVjdGlvbkdyb3VwcyxcbiAgICAgICAgcHJveHksXG4gICAgICAgIG9wdHMsXG4gICAgICAgIHJ1bm5lcldhcm5pbmdMb2csXG4gICAgICAgIGNvbXBpbGVyU2VydmljZSxcbiAgICAgICAgbWVzc2FnZUJ1cyxcbiAgICB9OiBUYXNrSW5pdCkge1xuICAgICAgICBzdXBlcih7IGNhcHR1cmVSZWplY3Rpb25zOiB0cnVlIH0pO1xuXG4gICAgICAgIHRoaXMuX3RpbWVTdGFtcCAgICAgICAgICAgICAgPSBtb21lbnQoKTtcbiAgICAgICAgdGhpcy5fcGhhc2UgICAgICAgICAgICAgICAgICA9IFRhc2tQaGFzZS5pbml0aWFsaXplZDtcbiAgICAgICAgdGhpcy5icm93c2VyQ29ubmVjdGlvbkdyb3VwcyA9IGJyb3dzZXJDb25uZWN0aW9uR3JvdXBzO1xuICAgICAgICB0aGlzLnRlc3RzICAgICAgICAgICAgICAgICAgID0gdGVzdHM7XG4gICAgICAgIHRoaXMub3B0cyAgICAgICAgICAgICAgICAgICAgPSBvcHRzO1xuICAgICAgICB0aGlzLl9wcm94eSAgICAgICAgICAgICAgICAgID0gcHJveHk7XG4gICAgICAgIHRoaXMud2FybmluZ0xvZyAgICAgICAgICAgICAgPSBuZXcgV2FybmluZ0xvZyhudWxsLCBXYXJuaW5nTG9nLmNyZWF0ZUFkZFdhcm5pbmdDYWxsYmFjayhtZXNzYWdlQnVzKSk7XG4gICAgICAgIHRoaXMuX2NvbXBpbGVyU2VydmljZSAgICAgICAgPSBjb21waWxlclNlcnZpY2U7XG4gICAgICAgIHRoaXMuX21lc3NhZ2VCdXMgICAgICAgICAgICAgPSBtZXNzYWdlQnVzO1xuXG4gICAgICAgIHRoaXMud2FybmluZ0xvZy5jb3B5RnJvbShydW5uZXJXYXJuaW5nTG9nKTtcblxuICAgICAgICBjb25zdCB7IHBhdGgsIHBhdGhQYXR0ZXJuLCBmdWxsUGFnZSwgdGh1bWJuYWlscywgYXV0b1Rha2VPbkZhaWxzIH0gPSB0aGlzLm9wdHMuc2NyZWVuc2hvdHMgYXMgU2NyZWVuc2hvdE9wdGlvblZhbHVlO1xuXG4gICAgICAgIHRoaXMuc2NyZWVuc2hvdHMgPSBuZXcgU2NyZWVuc2hvdHMoe1xuICAgICAgICAgICAgZW5hYmxlZDogIXRoaXMub3B0cy5kaXNhYmxlU2NyZWVuc2hvdHMsXG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgcGF0aFBhdHRlcm4sXG4gICAgICAgICAgICBmdWxsUGFnZSxcbiAgICAgICAgICAgIHRodW1ibmFpbHMsXG4gICAgICAgICAgICBtZXNzYWdlQnVzLFxuICAgICAgICAgICAgYXV0b1Rha2VPbkZhaWxzLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZpeHR1cmVIb29rQ29udHJvbGxlciA9IG5ldyBGaXh0dXJlSG9va0NvbnRyb2xsZXIodGVzdHMsIGJyb3dzZXJDb25uZWN0aW9uR3JvdXBzLmxlbmd0aCk7XG4gICAgICAgIHRoaXMuX3BlbmRpbmdCcm93c2VySm9icyAgID0gdGhpcy5fY3JlYXRlQnJvd3NlckpvYnMocHJveHksIHRoaXMub3B0cyk7XG4gICAgICAgIHRoaXMudGVzdFN0cnVjdHVyZSAgICAgICAgID0gdGhpcy5fcHJlcGFyZVRlc3RTdHJ1Y3R1cmUodGVzdHMpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMudmlkZW9QYXRoKSB7XG4gICAgICAgICAgICBjb25zdCB7IHZpZGVvUGF0aCwgdmlkZW9PcHRpb25zLCB2aWRlb0VuY29kaW5nT3B0aW9ucyB9ID0gdGhpcy5vcHRzO1xuXG4gICAgICAgICAgICB0aGlzLnZpZGVvcyA9IG5ldyBWaWRlb3ModGhpcy5fcGVuZGluZ0Jyb3dzZXJKb2JzLCB7IHZpZGVvUGF0aCwgdmlkZW9PcHRpb25zLCB2aWRlb0VuY29kaW5nT3B0aW9ucyB9IGFzIHVua25vd24gYXMgVmlkZW9PcHRpb25zLCB0aGlzLndhcm5pbmdMb2csIHRoaXMuX3RpbWVTdGFtcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9hc3NpZ25Ccm93c2VySm9iRXZlbnRIYW5kbGVycyAoam9iOiBCcm93c2VySm9iKTogdm9pZCB7XG4gICAgICAgIGpvYi5vbigndGVzdC1ydW4tZG9uZScsIGFzeW5jICh0ZXN0UnVuOiBUZXN0UnVuKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9tZXNzYWdlQnVzLmVtaXQoJ3Rlc3QtcnVuLWRvbmUnLCB0ZXN0UnVuKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMub3B0cy5zdG9wT25GaXJzdEZhaWwgJiYgdGVzdFJ1bi5lcnJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWJvcnQoKTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgnZG9uZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBqb2Iub25jZSgnc3RhcnQnLCBhc3luYyAoc3RhcnRUaW1lOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fcGhhc2UgIT09IFRhc2tQaGFzZS5zdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGhhc2UgICAgPSBUYXNrUGhhc2Uuc3RhcnRlZDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IHN0YXJ0VGltZTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgnc3RhcnQnLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgam9iLm9uY2UoJ2RvbmUnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ2Jyb3dzZXItam9iLWRvbmUnLCBqb2IpO1xuXG4gICAgICAgICAgICByZW1vdmUodGhpcy5fcGVuZGluZ0Jyb3dzZXJKb2JzLCBqb2IpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdCcm93c2VySm9icy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9waGFzZSA9IFRhc2tQaGFzZS5kb25lO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fbWVzc2FnZUJ1cy5lbWl0KCdkb25lJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGpvYi5vbigndGVzdC1hY3Rpb24tZG9uZScsIGFzeW5jIChhcmdzOiBBY3Rpb25FdmVudEFyZykgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3BoYXNlID09PSBUYXNrUGhhc2UuZG9uZSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgndGVzdC1hY3Rpb24tZG9uZScsIGFyZ3MpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVUZXN0U3RydWN0dXJlICh0ZXN0czogVGVzdFtdKTogUmVwb3J0ZWRUZXN0U3RydWN0dXJlSXRlbVtdIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gZ3JvdXBCeSh0ZXN0cywgJ2ZpeHR1cmUuaWQnKTtcblxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JvdXBzKS5tYXAoZml4dHVyZUlkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RzQnlHcm91cCA9IGdyb3Vwc1tmaXh0dXJlSWRdIGFzIFRlc3RbXTtcbiAgICAgICAgICAgIGNvbnN0IGZpeHR1cmUgICAgICA9IHRlc3RzQnlHcm91cFswXS5maXh0dXJlIGFzIEZpeHR1cmU7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZml4dHVyZToge1xuICAgICAgICAgICAgICAgICAgICBpZDogICAgZml4dHVyZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogIGZpeHR1cmUubmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIHRlc3RzOiB0ZXN0c0J5R3JvdXAubWFwKHRlc3QgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogICB0ZXN0LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRlc3QubmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcDogdGVzdC5za2lwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZUJyb3dzZXJKb2JzIChwcm94eTogUHJveHksIG9wdHM6IERpY3Rpb25hcnk8T3B0aW9uVmFsdWU+KTogQnJvd3NlckpvYltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25Hcm91cHMubWFwKGJyb3dzZXJDb25uZWN0aW9uR3JvdXAgPT4ge1xuICAgICAgICAgICAgY29uc3Qgam9iID0gbmV3IEJyb3dzZXJKb2Ioe1xuICAgICAgICAgICAgICAgIHRlc3RzOiAgICAgICAgICAgICAgICAgdGhpcy50ZXN0cyxcbiAgICAgICAgICAgICAgICBicm93c2VyQ29ubmVjdGlvbnM6ICAgIGJyb3dzZXJDb25uZWN0aW9uR3JvdXAsXG4gICAgICAgICAgICAgICAgc2NyZWVuc2hvdHM6ICAgICAgICAgICB0aGlzLnNjcmVlbnNob3RzLFxuICAgICAgICAgICAgICAgIHdhcm5pbmdMb2c6ICAgICAgICAgICAgdGhpcy53YXJuaW5nTG9nLFxuICAgICAgICAgICAgICAgIGZpeHR1cmVIb29rQ29udHJvbGxlcjogdGhpcy5maXh0dXJlSG9va0NvbnRyb2xsZXIsXG4gICAgICAgICAgICAgICAgY29tcGlsZXJTZXJ2aWNlOiAgICAgICB0aGlzLl9jb21waWxlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgbWVzc2FnZUJ1czogICAgICAgICAgICB0aGlzLl9tZXNzYWdlQnVzLFxuICAgICAgICAgICAgICAgIHByb3h5LFxuICAgICAgICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fYXNzaWduQnJvd3NlckpvYkV2ZW50SGFuZGxlcnMoam9iKTtcbiAgICAgICAgICAgIGJyb3dzZXJDb25uZWN0aW9uR3JvdXAubWFwKGJjID0+IGJjLmFkZEpvYihqb2IpKTtcblxuICAgICAgICAgICAgcmV0dXJuIGpvYjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQVBJXG4gICAgcHVibGljIGFib3J0ICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZ0Jyb3dzZXJKb2JzLmZvckVhY2goam9iID0+IGpvYi5hYm9ydCgpKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
@@ -9,10 +32,17 @@ const testcafe_legacy_api_1 = require("testcafe-legacy-api");
|
|
|
9
32
|
const test_run_1 = __importDefault(require("../test-run"));
|
|
10
33
|
const session_controller_1 = __importDefault(require("../test-run/session-controller"));
|
|
11
34
|
const quarantine_1 = require("../utils/get-options/quarantine");
|
|
35
|
+
const clientScriptsRouting = __importStar(require("../custom-client-scripts/routing"));
|
|
36
|
+
const debug_1 = __importDefault(require("debug"));
|
|
37
|
+
const types_1 = require("../errors/types");
|
|
38
|
+
const runtime_1 = require("../errors/runtime");
|
|
12
39
|
const DISCONNECT_THRESHOLD = 3;
|
|
40
|
+
const debugLogger = (0, debug_1.default)('testcafe:runner:test-run-controller');
|
|
13
41
|
class TestRunController extends async_event_emitter_1.default {
|
|
14
42
|
constructor({ test, index, proxy, screenshots, warningLog, fixtureHookController, opts, testRunHook, compilerService, messageBus, }) {
|
|
15
43
|
super();
|
|
44
|
+
this.clientScriptRoutes = [];
|
|
45
|
+
this.isNativeAutomation = false;
|
|
16
46
|
this.test = test;
|
|
17
47
|
this.index = index;
|
|
18
48
|
this._opts = opts;
|
|
@@ -44,9 +74,11 @@ class TestRunController extends async_event_emitter_1.default {
|
|
|
44
74
|
opts: this._opts,
|
|
45
75
|
compilerService: this.compilerService,
|
|
46
76
|
messageBus: this._messageBus,
|
|
77
|
+
nativeAutomation: this.isNativeAutomation,
|
|
47
78
|
screenshotCapturer,
|
|
48
79
|
startRunExecutionTime,
|
|
49
80
|
});
|
|
81
|
+
this.clientScriptRoutes = clientScriptsRouting.register(this._proxy, this.test, this.isNativeAutomation);
|
|
50
82
|
await this.testRun.initialize();
|
|
51
83
|
this._screenshots.addTestRun(this.test, this.testRun);
|
|
52
84
|
if (this.testRun.addQuarantineInfo)
|
|
@@ -111,8 +143,10 @@ class TestRunController extends async_event_emitter_1.default {
|
|
|
111
143
|
// To keep a sequence after fixture hook execution we use completion queue.
|
|
112
144
|
await this._fixtureHookController.runFixtureAfterHookIfNecessary(this.testRun);
|
|
113
145
|
await this._testRunHook.runTestRunAfterHookIfNecessary(this.testRun);
|
|
146
|
+
clientScriptsRouting.unRegister(this._proxy, this.clientScriptRoutes);
|
|
114
147
|
this.done = true;
|
|
115
148
|
await this.emit('test-run-done');
|
|
149
|
+
debugLogger('done');
|
|
116
150
|
}
|
|
117
151
|
async _emitTestRunStart() {
|
|
118
152
|
await this._messageBus.emit('test-run-start', this.testRun);
|
|
@@ -151,7 +185,17 @@ class TestRunController extends async_event_emitter_1.default {
|
|
|
151
185
|
get blocked() {
|
|
152
186
|
return this._fixtureHookController.isTestBlocked(this.test);
|
|
153
187
|
}
|
|
188
|
+
async _handleNativeAutomationMode(connection) {
|
|
189
|
+
this.isNativeAutomation = !!this._opts.nativeAutomation;
|
|
190
|
+
const supportNativeAutomation = connection.supportNativeAutomation();
|
|
191
|
+
if (!this.isNativeAutomation || supportNativeAutomation)
|
|
192
|
+
return;
|
|
193
|
+
await this._messageBus.emit('before-test-run-created-error');
|
|
194
|
+
throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.setNativeAutomationForUnsupportedBrowsers, connection.browserInfo.providerName);
|
|
195
|
+
}
|
|
154
196
|
async start(connection, startRunExecutionTime) {
|
|
197
|
+
debugLogger('start');
|
|
198
|
+
await this._handleNativeAutomationMode(connection);
|
|
155
199
|
const testRun = await this._createTestRun(connection, startRunExecutionTime);
|
|
156
200
|
const hookOk = await this._testRunHook.runTestRunBeforeHookIfNecessary(testRun)
|
|
157
201
|
&& await this._fixtureHookController.runFixtureBeforeHookIfNecessary(testRun);
|
|
@@ -168,4 +212,4 @@ class TestRunController extends async_event_emitter_1.default {
|
|
|
168
212
|
}
|
|
169
213
|
exports.default = TestRunController;
|
|
170
214
|
module.exports = exports.default;
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1ydW4tY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5uZXIvdGVzdC1ydW4tY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHVGQUE2RDtBQUM3RCxZQUFZO0FBQ1osNkRBQStEO0FBQy9ELDJEQUFrQztBQUNsQyx3RkFBK0Q7QUFVL0QsZ0VBQTZEO0FBSTdELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBRy9CLE1BQXFCLGlCQUFrQixTQUFRLDZCQUFpQjtJQWlCNUQsWUFBb0IsRUFDaEIsSUFBSSxFQUNKLEtBQUssRUFDTCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFVBQVUsRUFDVixxQkFBcUIsRUFDckIsSUFBSSxFQUNKLFdBQVcsRUFDWCxlQUFlLEVBQ2YsVUFBVSxHQUNVO1FBQ3BCLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLElBQUksR0FBSSxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFbEIsSUFBSSxDQUFDLE1BQU0sR0FBbUIsS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQWEsV0FBVyxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQWMsVUFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxxQkFBcUIsQ0FBQztRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFhLFdBQVcsQ0FBQztRQUUxQyxJQUFJLENBQUMsWUFBWSxHQUFHLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLE9BQU8sR0FBZSxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBa0IsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQVcsSUFBSSxDQUFDLEtB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QUFDO1lBRTlCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVoQixPQUFPLDRCQUFpQixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDSjtBQXRPRCxvQ0FzT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXN5bmNFdmVudEVtaXR0ZXIgZnJvbSAnLi4vdXRpbHMvYXN5bmMtZXZlbnQtZW1pdHRlcic7XG4vL0B0cy1pZ25vcmVcbmltcG9ydCB7IFRlc3RSdW4gYXMgTGVnYWN5VGVzdFJ1biB9IGZyb20gJ3Rlc3RjYWZlLWxlZ2FjeS1hcGknO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vdGVzdC1ydW4nO1xuaW1wb3J0IFNlc3Npb25Db250cm9sbGVyIGZyb20gJy4uL3Rlc3QtcnVuL3Nlc3Npb24tY29udHJvbGxlcic7XG5pbXBvcnQgQnJvd3NlckNvbm5lY3Rpb24gZnJvbSAnLi4vYnJvd3Nlci9jb25uZWN0aW9uJztcbmltcG9ydCB7IFByb3h5IH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5pbXBvcnQgVGVzdCBmcm9tICcuLi9hcGkvc3RydWN0dXJlL3Rlc3QnO1xuaW1wb3J0IFNjcmVlbnNob3RzIGZyb20gJy4uL3NjcmVlbnNob3RzJztcbmltcG9ydCBXYXJuaW5nTG9nIGZyb20gJy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1sb2cnO1xuaW1wb3J0IEZpeHR1cmVIb29rQ29udHJvbGxlciBmcm9tICcuL2ZpeHR1cmUtaG9vay1jb250cm9sbGVyJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWN0aW9uRXZlbnRBcmcsIFRlc3RSdW5Db250cm9sbGVySW5pdCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgQ29tcGlsZXJTZXJ2aWNlIGZyb20gJy4uL3NlcnZpY2VzL2NvbXBpbGVyL2hvc3QnO1xuaW1wb3J0IHsgUXVhcmFudGluZSB9IGZyb20gJy4uL3V0aWxzL2dldC1vcHRpb25zL3F1YXJhbnRpbmUnO1xuaW1wb3J0IE1lc3NhZ2VCdXMgZnJvbSAnLi4vdXRpbHMvbWVzc2FnZS1idXMnO1xuaW1wb3J0IFRlc3RSdW5Ib29rQ29udHJvbGxlciBmcm9tICcuL3Rlc3QtcnVuLWhvb2stY29udHJvbGxlcic7XG5cbmNvbnN0IERJU0NPTk5FQ1RfVEhSRVNIT0xEID0gMztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXN0UnVuQ29udHJvbGxlciBleHRlbmRzIEFzeW5jRXZlbnRFbWl0dGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9xdWFyYW50aW5lOiBudWxsIHwgUXVhcmFudGluZTtcbiAgICBwcml2YXRlIF9kaXNjb25uZWN0aW9uQ291bnQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm94eTogUHJveHk7XG4gICAgcHVibGljIHJlYWRvbmx5IGluZGV4OiBudW1iZXI7XG4gICAgcHVibGljIHRlc3Q6IFRlc3Q7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0czogRGljdGlvbmFyeTxPcHRpb25WYWx1ZT47XG4gICAgcHJpdmF0ZSBfc2NyZWVuc2hvdHM6IFNjcmVlbnNob3RzO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3dhcm5pbmdMb2c6IFdhcm5pbmdMb2c7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZml4dHVyZUhvb2tDb250cm9sbGVyOiBGaXh0dXJlSG9va0NvbnRyb2xsZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGVzdFJ1bkN0b3I6IExlZ2FjeVRlc3RSdW5bJ2NvbnN0cnVjdG9yJ10gfCBUZXN0UnVuWydjb25zdHJ1Y3RvciddO1xuICAgIHB1YmxpYyB0ZXN0UnVuOiBudWxsIHwgTGVnYWN5VGVzdFJ1biB8IFRlc3RSdW47XG4gICAgcHVibGljIGRvbmU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21waWxlclNlcnZpY2U/OiBDb21waWxlclNlcnZpY2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZUJ1czogTWVzc2FnZUJ1cztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90ZXN0UnVuSG9vazogVGVzdFJ1bkhvb2tDb250cm9sbGVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICh7XG4gICAgICAgIHRlc3QsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBwcm94eSxcbiAgICAgICAgc2NyZWVuc2hvdHMsXG4gICAgICAgIHdhcm5pbmdMb2csXG4gICAgICAgIGZpeHR1cmVIb29rQ29udHJvbGxlcixcbiAgICAgICAgb3B0cyxcbiAgICAgICAgdGVzdFJ1bkhvb2ssXG4gICAgICAgIGNvbXBpbGVyU2VydmljZSxcbiAgICAgICAgbWVzc2FnZUJ1cyxcbiAgICB9OiBUZXN0UnVuQ29udHJvbGxlckluaXQpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLnRlc3QgID0gdGVzdDtcbiAgICAgICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLl9vcHRzID0gb3B0cztcblxuICAgICAgICB0aGlzLl9wcm94eSAgICAgICAgICAgICAgICAgPSBwcm94eTtcbiAgICAgICAgdGhpcy5fc2NyZWVuc2hvdHMgICAgICAgICAgID0gc2NyZWVuc2hvdHM7XG4gICAgICAgIHRoaXMuX3dhcm5pbmdMb2cgICAgICAgICAgICA9IHdhcm5pbmdMb2c7XG4gICAgICAgIHRoaXMuX2ZpeHR1cmVIb29rQ29udHJvbGxlciA9IGZpeHR1cmVIb29rQ29udHJvbGxlcjtcbiAgICAgICAgdGhpcy5fdGVzdFJ1bkhvb2sgICAgICAgICAgID0gdGVzdFJ1bkhvb2s7XG5cbiAgICAgICAgdGhpcy5fdGVzdFJ1bkN0b3IgPSBUZXN0UnVuQ29udHJvbGxlci5fZ2V0VGVzdFJ1bkN0b3IodGVzdCwgb3B0cyk7XG5cbiAgICAgICAgdGhpcy50ZXN0UnVuICAgICAgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5kb25lICAgICAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3F1YXJhbnRpbmUgICAgICAgICA9IHRoaXMuX29wdHMucXVhcmFudGluZU1vZGUgPyBuZXcgUXVhcmFudGluZSgpIDogbnVsbDtcbiAgICAgICAgdGhpcy5fZGlzY29ubmVjdGlvbkNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5jb21waWxlclNlcnZpY2UgICAgID0gY29tcGlsZXJTZXJ2aWNlO1xuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzICAgICAgICAgPSBtZXNzYWdlQnVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXRUZXN0UnVuQ3RvciAodGVzdDogVGVzdCwgb3B0czogRGljdGlvbmFyeTxPcHRpb25WYWx1ZT4pOiBMZWdhY3lUZXN0UnVuIHwgVGVzdFJ1biB7XG4gICAgICAgIGlmIChvcHRzLlRlc3RSdW5DdG9yKVxuICAgICAgICAgICAgcmV0dXJuIG9wdHMuVGVzdFJ1bkN0b3I7XG5cbiAgICAgICAgcmV0dXJuICh0ZXN0IGFzIExlZ2FjeVRlc3RSdW4pLmlzTGVnYWN5ID8gTGVnYWN5VGVzdFJ1biA6IFRlc3RSdW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfY3JlYXRlVGVzdFJ1biAoY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24sIHN0YXJ0UnVuRXhlY3V0aW9uVGltZT86IERhdGUpOiBQcm9taXNlPFRlc3RSdW4gfCBMZWdhY3lUZXN0UnVuPiB7XG4gICAgICAgIGNvbnN0IHNjcmVlbnNob3RDYXB0dXJlciA9IHRoaXMuX3NjcmVlbnNob3RzLmNyZWF0ZUNhcHR1cmVyRm9yKHRoaXMudGVzdCwgdGhpcy5pbmRleCwgdGhpcy5fcXVhcmFudGluZSwgY29ubmVjdGlvbiwgdGhpcy5fd2FybmluZ0xvZyk7XG4gICAgICAgIGNvbnN0IFRlc3RSdW5DdG9yICAgICAgICA9IHRoaXMuX3Rlc3RSdW5DdG9yO1xuXG4gICAgICAgIHRoaXMudGVzdFJ1biA9IG5ldyBUZXN0UnVuQ3Rvcih7XG4gICAgICAgICAgICB0ZXN0OiAgICAgICAgICAgICAgdGhpcy50ZXN0LFxuICAgICAgICAgICAgYnJvd3NlckNvbm5lY3Rpb246IGNvbm5lY3Rpb24sXG4gICAgICAgICAgICBnbG9iYWxXYXJuaW5nTG9nOiAgdGhpcy5fd2FybmluZ0xvZyxcbiAgICAgICAgICAgIG9wdHM6ICAgICAgICAgICAgICB0aGlzLl9vcHRzLFxuICAgICAgICAgICAgY29tcGlsZXJTZXJ2aWNlOiAgIHRoaXMuY29tcGlsZXJTZXJ2aWNlLFxuICAgICAgICAgICAgbWVzc2FnZUJ1czogICAgICAgIHRoaXMuX21lc3NhZ2VCdXMsXG4gICAgICAgICAgICBzY3JlZW5zaG90Q2FwdHVyZXIsXG4gICAgICAgICAgICBzdGFydFJ1bkV4ZWN1dGlvblRpbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMudGVzdFJ1bi5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgdGhpcy5fc2NyZWVuc2hvdHMuYWRkVGVzdFJ1bih0aGlzLnRlc3QsIHRoaXMudGVzdFJ1bik7XG5cbiAgICAgICAgaWYgKHRoaXMudGVzdFJ1bi5hZGRRdWFyYW50aW5lSW5mbylcbiAgICAgICAgICAgIHRoaXMudGVzdFJ1bi5hZGRRdWFyYW50aW5lSW5mbyh0aGlzLl9xdWFyYW50aW5lKTtcblxuICAgICAgICBpZiAodGhpcy5fcXVhcmFudGluZSkge1xuICAgICAgICAgICAgY29uc3QgeyBzdWNjZXNzVGhyZXNob2xkLCBhdHRlbXB0TGltaXQgfSA9IHRoaXMuX29wdHMucXVhcmFudGluZU1vZGUgYXMgUXVhcmFudGluZU9wdGlvblZhbHVlO1xuXG4gICAgICAgICAgICB0aGlzLl9xdWFyYW50aW5lLnNldEN1c3RvbVBhcmFtZXRlcnMoYXR0ZW1wdExpbWl0LCBzdWNjZXNzVGhyZXNob2xkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fcXVhcmFudGluZSB8fCB0aGlzLl9pc0ZpcnN0UXVhcmFudGluZUF0dGVtcHQoKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1jcmVhdGUnLCB7XG4gICAgICAgICAgICAgICAgdGVzdFJ1bjogICAgdGhpcy50ZXN0UnVuLFxuICAgICAgICAgICAgICAgIGxlZ2FjeTogICAgIFRlc3RSdW5DdG9yID09PSBMZWdhY3lUZXN0UnVuLFxuICAgICAgICAgICAgICAgIHRlc3Q6ICAgICAgIHRoaXMudGVzdCxcbiAgICAgICAgICAgICAgICBpbmRleDogICAgICB0aGlzLmluZGV4LFxuICAgICAgICAgICAgICAgIHF1YXJhbnRpbmU6IHRoaXMuX3F1YXJhbnRpbmUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRlc3RSdW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW5kUXVhcmFudGluZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICgodGhpcy5fcXVhcmFudGluZSBhcyBRdWFyYW50aW5lKS5hdHRlbXB0cy5sZW5ndGggPiAxKVxuICAgICAgICAgICAgdGhpcy50ZXN0UnVuLnVuc3RhYmxlID0gKHRoaXMuX3F1YXJhbnRpbmUgYXMgUXVhcmFudGluZSkuZ2V0UGFzc2VkQXR0ZW1wdHMoKS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2VtaXRUZXN0UnVuRG9uZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Nob3VsZEtlZXBJblF1YXJhbnRpbmUgKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlcnJvcnMgICAgICAgICA9IHRoaXMudGVzdFJ1bi5lcnJzO1xuICAgICAgICBjb25zdCBoYXNFcnJvcnMgICAgICA9ICEhZXJyb3JzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgYXR0ZW1wdHMgICAgICAgPSAodGhpcy5fcXVhcmFudGluZSBhcyBRdWFyYW50aW5lKS5hdHRlbXB0cztcbiAgICAgICAgY29uc3QgaXNGaXJzdEF0dGVtcHQgPSB0aGlzLl9pc0ZpcnN0UXVhcmFudGluZUF0dGVtcHQoKTtcblxuICAgICAgICBhdHRlbXB0cy5wdXNoKHsgdGVzdFJ1bklkOiB0aGlzLnRlc3RSdW4uaWQsIGVycm9ycyB9KTtcblxuICAgICAgICByZXR1cm4gaXNGaXJzdEF0dGVtcHQgPyBoYXNFcnJvcnMgOiAhKHRoaXMuX3F1YXJhbnRpbmUgYXMgUXVhcmFudGluZSkuaXNUaHJlc2hvbGRSZWFjaGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaXNGaXJzdFF1YXJhbnRpbmVBdHRlbXB0ICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fcXVhcmFudGluZSAmJiAhdGhpcy5fcXVhcmFudGluZS5hdHRlbXB0cy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfa2VlcEluUXVhcmFudGluZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX3Jlc3RhcnRUZXN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcmVzdGFydFRlc3QgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLXJlc3RhcnQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF90ZXN0UnVuRG9uZUluUXVhcmFudGluZU1vZGUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fc2hvdWxkS2VlcEluUXVhcmFudGluZSgpKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fa2VlcEluUXVhcmFudGluZSgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9lbmRRdWFyYW50aW5lKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfdGVzdFJ1bkRvbmUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fcXVhcmFudGluZSlcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3Rlc3RSdW5Eb25lSW5RdWFyYW50aW5lTW9kZSgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9lbWl0VGVzdFJ1bkRvbmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9lbWl0QWN0aW9uU3RhcnQgKGFyZ3M6IEFjdGlvbkV2ZW50QXJnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgndGVzdC1hY3Rpb24tc3RhcnQnLCBhcmdzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9lbWl0QWN0aW9uRG9uZSAoYXJnczogQWN0aW9uRXZlbnRBcmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LWFjdGlvbi1kb25lJywgYXJncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW1pdFRlc3RSdW5Eb25lICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gTk9URTogd2Ugc2hvdWxkIHJlcG9ydCB0ZXN0IHJ1biBjb21wbGV0aW9uIGluIG9yZGVyIHRoZXkgd2VyZSBjb21wbGV0ZWQgaW4gYnJvd3Nlci5cbiAgICAgICAgLy8gVG8ga2VlcCBhIHNlcXVlbmNlIGFmdGVyIGZpeHR1cmUgaG9vayBleGVjdXRpb24gd2UgdXNlIGNvbXBsZXRpb24gcXVldWUuXG4gICAgICAgIGF3YWl0IHRoaXMuX2ZpeHR1cmVIb29rQ29udHJvbGxlci5ydW5GaXh0dXJlQWZ0ZXJIb29rSWZOZWNlc3NhcnkodGhpcy50ZXN0UnVuKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fdGVzdFJ1bkhvb2sucnVuVGVzdFJ1bkFmdGVySG9va0lmTmVjZXNzYXJ5KHRoaXMudGVzdFJ1bik7XG5cbiAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLWRvbmUnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9lbWl0VGVzdFJ1blN0YXJ0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fbWVzc2FnZUJ1cy5lbWl0KCd0ZXN0LXJ1bi1zdGFydCcsIHRoaXMudGVzdFJ1bik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfdGVzdFJ1bkJlZm9yZURvbmUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmFpc2VFdmVudCA9ICF0aGlzLl9xdWFyYW50aW5lO1xuXG4gICAgICAgIGlmICghcmFpc2VFdmVudCkge1xuICAgICAgICAgICAgY29uc3QgaXNTdWNjZXNzZnVsUXVhcmFudGluZUZpcnN0QXR0ZW1wdCA9IHRoaXMuX2lzRmlyc3RRdWFyYW50aW5lQXR0ZW1wdCgpICYmICF0aGlzLnRlc3RSdW4uZXJycy5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBpc0F0dGVtcHRzVGhyZXNob2xkUmVhY2hlZCAgICAgICAgID0gKHRoaXMuX3F1YXJhbnRpbmUgYXMgUXVhcmFudGluZSkuaXNUaHJlc2hvbGRSZWFjaGVkKHRoaXMudGVzdFJ1bi5lcnJzKTtcblxuICAgICAgICAgICAgcmFpc2VFdmVudCA9IGlzU3VjY2Vzc2Z1bFF1YXJhbnRpbmVGaXJzdEF0dGVtcHQgfHwgaXNBdHRlbXB0c1RocmVzaG9sZFJlYWNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmFpc2VFdmVudClcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgndGVzdC1ydW4tYmVmb3JlLWRvbmUnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90ZXN0UnVuRGlzY29ubmVjdGVkIChjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9kaXNjb25uZWN0aW9uQ291bnQrKztcblxuICAgICAgICBjb25zdCBkaXNjb25uZWN0aW9uVGhyZXNob2xkRXhjZWVkZWVkID0gdGhpcy5fZGlzY29ubmVjdGlvbkNvdW50ID49IERJU0NPTk5FQ1RfVEhSRVNIT0xEO1xuXG4gICAgICAgIHJldHVybiBjb25uZWN0aW9uXG4gICAgICAgICAgICAucHJvY2Vzc0Rpc2Nvbm5lY3Rpb24oZGlzY29ubmVjdGlvblRocmVzaG9sZEV4Y2VlZGVlZClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVzdGFydFRlc3QoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Fzc2lnblRlc3RSdW5FdmVudHMgKHRlc3RSdW46IFRlc3RSdW4gfCBMZWdhY3lUZXN0UnVuLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICB0ZXN0UnVuLm9uKCdhY3Rpb24tc3RhcnQnLCBhc3luYyAoYXJnczogQWN0aW9uRXZlbnRBcmcpID0+IHRoaXMuX2VtaXRBY3Rpb25TdGFydChPYmplY3QuYXNzaWduKGFyZ3MsIHsgdGVzdFJ1biB9KSkpO1xuICAgICAgICB0ZXN0UnVuLm9uKCdhY3Rpb24tZG9uZScsIGFzeW5jIChhcmdzOiBBY3Rpb25FdmVudEFyZykgPT4gdGhpcy5fZW1pdEFjdGlvbkRvbmUoT2JqZWN0LmFzc2lnbihhcmdzLCB7IHRlc3RSdW4gfSkpKTtcblxuICAgICAgICB0ZXN0UnVuLm9uY2UoJ3N0YXJ0JywgYXN5bmMgKCkgPT4gdGhpcy5fZW1pdFRlc3RSdW5TdGFydCgpKTtcbiAgICAgICAgdGVzdFJ1bi5vbmNlKCdyZWFkeScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fcXVhcmFudGluZSB8fCB0aGlzLl9pc0ZpcnN0UXVhcmFudGluZUF0dGVtcHQoKSlcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLXJlYWR5Jyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0ZXN0UnVuLm9uY2UoJ2JlZm9yZS1kb25lJywgKCkgPT4gdGhpcy5fdGVzdFJ1bkJlZm9yZURvbmUoKSk7XG4gICAgICAgIHRlc3RSdW4ub25jZSgnZG9uZScsICgpID0+IHRoaXMuX3Rlc3RSdW5Eb25lKCkpO1xuICAgICAgICB0ZXN0UnVuLm9uY2UoJ2Rpc2Nvbm5lY3RlZCcsICgpID0+IHRoaXMuX3Rlc3RSdW5EaXNjb25uZWN0ZWQoY29ubmVjdGlvbikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYmxvY2tlZCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maXh0dXJlSG9va0NvbnRyb2xsZXIuaXNUZXN0QmxvY2tlZCh0aGlzLnRlc3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdGFydCAoY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24sIHN0YXJ0UnVuRXhlY3V0aW9uVGltZT86IERhdGUpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgdGVzdFJ1biA9IGF3YWl0IHRoaXMuX2NyZWF0ZVRlc3RSdW4oY29ubmVjdGlvbiwgc3RhcnRSdW5FeGVjdXRpb25UaW1lKTtcblxuICAgICAgICBjb25zdCBob29rT2sgPSBhd2FpdCB0aGlzLl90ZXN0UnVuSG9vay5ydW5UZXN0UnVuQmVmb3JlSG9va0lmTmVjZXNzYXJ5KHRlc3RSdW4pXG4gICAgICAgICAgICAgICAgICAgICAgICYmIGF3YWl0IHRoaXMuX2ZpeHR1cmVIb29rQ29udHJvbGxlci5ydW5GaXh0dXJlQmVmb3JlSG9va0lmTmVjZXNzYXJ5KHRlc3RSdW4pO1xuXG4gICAgICAgIGlmICh0aGlzLnRlc3Quc2tpcCB8fCAhaG9va09rKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9lbWl0VGVzdFJ1blN0YXJ0KCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLWJlZm9yZS1kb25lJyk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9lbWl0VGVzdFJ1bkRvbmUoKTtcblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hc3NpZ25UZXN0UnVuRXZlbnRzKHRlc3RSdW4sIGNvbm5lY3Rpb24pO1xuXG4gICAgICAgIHRlc3RSdW4uc3RhcnQoKTtcblxuICAgICAgICByZXR1cm4gU2Vzc2lvbkNvbnRyb2xsZXIuZ2V0U2Vzc2lvblVybCh0ZXN0UnVuLCB0aGlzLl9wcm94eSk7XG4gICAgfVxufVxuIl19
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1ydW4tY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5uZXIvdGVzdC1ydW4tY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUZBQTZEO0FBQzdELFlBQVk7QUFDWiw2REFBK0Q7QUFDL0QsMkRBQWtDO0FBQ2xDLHdGQUErRDtBQVUvRCxnRUFBNkQ7QUFHN0QsdUZBQXlFO0FBQ3pFLGtEQUEwQjtBQUMxQiwyQ0FBaUQ7QUFDakQsK0NBQWlEO0FBRWpELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBRS9CLE1BQU0sV0FBVyxHQUFHLElBQUEsZUFBSyxFQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFFakUsTUFBcUIsaUJBQWtCLFNBQVEsNkJBQWlCO0lBbUI1RCxZQUFvQixFQUNoQixJQUFJLEVBQ0osS0FBSyxFQUNMLEtBQUssRUFDTCxXQUFXLEVBQ1gsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixJQUFJLEVBQ0osV0FBVyxFQUNYLGVBQWUsRUFDZixVQUFVLEdBQ1U7UUFDcEIsS0FBSyxFQUFFLENBQUM7UUFmSix1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFDbEMsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBZ0IvQixJQUFJLENBQUMsSUFBSSxHQUFJLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUVsQixJQUFJLENBQUMsTUFBTSxHQUFtQixLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBYSxXQUFXLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBYyxVQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQWEsV0FBVyxDQUFD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QUFJLENBQUM7U0FDZjtRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFL0MsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWhCLE9BQU8sNEJBQWlCLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNKO0FBaFFELG9DQWdRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBc3luY0V2ZW50RW1pdHRlciBmcm9tICcuLi91dGlscy9hc3luYy1ldmVudC1lbWl0dGVyJztcbi8vQHRzLWlnbm9yZVxuaW1wb3J0IHsgVGVzdFJ1biBhcyBMZWdhY3lUZXN0UnVuIH0gZnJvbSAndGVzdGNhZmUtbGVnYWN5LWFwaSc7XG5pbXBvcnQgVGVzdFJ1biBmcm9tICcuLi90ZXN0LXJ1bic7XG5pbXBvcnQgU2Vzc2lvbkNvbnRyb2xsZXIgZnJvbSAnLi4vdGVzdC1ydW4vc2Vzc2lvbi1jb250cm9sbGVyJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHsgUHJveHkgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCBUZXN0IGZyb20gJy4uL2FwaS9zdHJ1Y3R1cmUvdGVzdCc7XG5pbXBvcnQgU2NyZWVuc2hvdHMgZnJvbSAnLi4vc2NyZWVuc2hvdHMnO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5pbXBvcnQgRml4dHVyZUhvb2tDb250cm9sbGVyIGZyb20gJy4vZml4dHVyZS1ob29rLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBY3Rpb25FdmVudEFyZywgVGVzdFJ1bkNvbnRyb2xsZXJJbml0IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCBDb21waWxlclNlcnZpY2UgZnJvbSAnLi4vc2VydmljZXMvY29tcGlsZXIvaG9zdCc7XG5pbXBvcnQgeyBRdWFyYW50aW5lIH0gZnJvbSAnLi4vdXRpbHMvZ2V0LW9wdGlvbnMvcXVhcmFudGluZSc7XG5pbXBvcnQgTWVzc2FnZUJ1cyBmcm9tICcuLi91dGlscy9tZXNzYWdlLWJ1cyc7XG5pbXBvcnQgVGVzdFJ1bkhvb2tDb250cm9sbGVyIGZyb20gJy4vdGVzdC1ydW4taG9vay1jb250cm9sbGVyJztcbmltcG9ydCAqIGFzIGNsaWVudFNjcmlwdHNSb3V0aW5nIGZyb20gJy4uL2N1c3RvbS1jbGllbnQtc2NyaXB0cy9yb3V0aW5nJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvcnVudGltZSc7XG5cbmNvbnN0IERJU0NPTk5FQ1RfVEhSRVNIT0xEID0gMztcblxuY29uc3QgZGVidWdMb2dnZXIgPSBkZWJ1ZygndGVzdGNhZmU6cnVubmVyOnRlc3QtcnVuLWNvbnRyb2xsZXInKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVzdFJ1bkNvbnRyb2xsZXIgZXh0ZW5kcyBBc3luY0V2ZW50RW1pdHRlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfcXVhcmFudGluZTogbnVsbCB8IFF1YXJhbnRpbmU7XG4gICAgcHJpdmF0ZSBfZGlzY29ubmVjdGlvbkNvdW50OiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJveHk6IFByb3h5O1xuICAgIHB1YmxpYyByZWFkb25seSBpbmRleDogbnVtYmVyO1xuICAgIHB1YmxpYyB0ZXN0OiBUZXN0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29wdHM6IERpY3Rpb25hcnk8T3B0aW9uVmFsdWU+O1xuICAgIHByaXZhdGUgX3NjcmVlbnNob3RzOiBTY3JlZW5zaG90cztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF93YXJuaW5nTG9nOiBXYXJuaW5nTG9nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZpeHR1cmVIb29rQ29udHJvbGxlcjogRml4dHVyZUhvb2tDb250cm9sbGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Rlc3RSdW5DdG9yOiBMZWdhY3lUZXN0UnVuWydjb25zdHJ1Y3RvciddIHwgVGVzdFJ1blsnY29uc3RydWN0b3InXTtcbiAgICBwdWJsaWMgdGVzdFJ1bjogbnVsbCB8IExlZ2FjeVRlc3RSdW4gfCBUZXN0UnVuO1xuICAgIHB1YmxpYyBkb25lOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcGlsZXJTZXJ2aWNlPzogQ29tcGlsZXJTZXJ2aWNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VCdXM6IE1lc3NhZ2VCdXM7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGVzdFJ1bkhvb2s6IFRlc3RSdW5Ib29rQ29udHJvbGxlcjtcbiAgICBwcml2YXRlIGNsaWVudFNjcmlwdFJvdXRlczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIGlzTmF0aXZlQXV0b21hdGlvbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICh7XG4gICAgICAgIHRlc3QsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBwcm94eSxcbiAgICAgICAgc2NyZWVuc2hvdHMsXG4gICAgICAgIHdhcm5pbmdMb2csXG4gICAgICAgIGZpeHR1cmVIb29rQ29udHJvbGxlcixcbiAgICAgICAgb3B0cyxcbiAgICAgICAgdGVzdFJ1bkhvb2ssXG4gICAgICAgIGNvbXBpbGVyU2VydmljZSxcbiAgICAgICAgbWVzc2FnZUJ1cyxcbiAgICB9OiBUZXN0UnVuQ29udHJvbGxlckluaXQpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLnRlc3QgID0gdGVzdDtcbiAgICAgICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLl9vcHRzID0gb3B0cztcblxuICAgICAgICB0aGlzLl9wcm94eSAgICAgICAgICAgICAgICAgPSBwcm94eTtcbiAgICAgICAgdGhpcy5fc2NyZWVuc2hvdHMgICAgICAgICAgID0gc2NyZWVuc2hvdHM7XG4gICAgICAgIHRoaXMuX3dhcm5pbmdMb2cgICAgICAgICAgICA9IHdhcm5pbmdMb2c7XG4gICAgICAgIHRoaXMuX2ZpeHR1cmVIb29rQ29udHJvbGxlciA9IGZpeHR1cmVIb29rQ29udHJvbGxlcjtcbiAgICAgICAgdGhpcy5fdGVzdFJ1bkhvb2sgICAgICAgICAgID0gdGVzdFJ1bkhvb2s7XG5cbiAgICAgICAgdGhpcy5fdGVzdFJ1bkN0b3IgPSBUZXN0UnVuQ29udHJvbGxlci5fZ2V0VGVzdFJ1bkN0b3IodGVzdCwgb3B0cyk7XG5cbiAgICAgICAgdGhpcy50ZXN0UnVuICAgICAgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5kb25lICAgICAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3F1YXJhbnRpbmUgICAgICAgICA9IHRoaXMuX29wdHMucXVhcmFudGluZU1vZGUgPyBuZXcgUXVhcmFudGluZSgpIDogbnVsbDtcbiAgICAgICAgdGhpcy5fZGlzY29ubmVjdGlvbkNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5jb21waWxlclNlcnZpY2UgICAgID0gY29tcGlsZXJTZXJ2aWNlO1xuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzICAgICAgICAgPSBtZXNzYWdlQnVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXRUZXN0UnVuQ3RvciAodGVzdDogVGVzdCwgb3B0czogRGljdGlvbmFyeTxPcHRpb25WYWx1ZT4pOiBMZWdhY3lUZXN0UnVuIHwgVGVzdFJ1biB7XG4gICAgICAgIGlmIChvcHRzLlRlc3RSdW5DdG9yKVxuICAgICAgICAgICAgcmV0dXJuIG9wdHMuVGVzdFJ1bkN0b3I7XG5cbiAgICAgICAgcmV0dXJuICh0ZXN0IGFzIExlZ2FjeVRlc3RSdW4pLmlzTGVnYWN5ID8gTGVnYWN5VGVzdFJ1biA6IFRlc3RSdW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfY3JlYXRlVGVzdFJ1biAoY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24sIHN0YXJ0UnVuRXhlY3V0aW9uVGltZT86IERhdGUpOiBQcm9taXNlPFRlc3RSdW4gfCBMZWdhY3lUZXN0UnVuPiB7XG4gICAgICAgIGNvbnN0IHNjcmVlbnNob3RDYXB0dXJlciA9IHRoaXMuX3NjcmVlbnNob3RzLmNyZWF0ZUNhcHR1cmVyRm9yKHRoaXMudGVzdCwgdGhpcy5pbmRleCwgdGhpcy5fcXVhcmFudGluZSwgY29ubmVjdGlvbiwgdGhpcy5fd2FybmluZ0xvZyk7XG4gICAgICAgIGNvbnN0IFRlc3RSdW5DdG9yICAgICAgICA9IHRoaXMuX3Rlc3RSdW5DdG9yO1xuXG4gICAgICAgIHRoaXMudGVzdFJ1biA9IG5ldyBUZXN0UnVuQ3Rvcih7XG4gICAgICAgICAgICB0ZXN0OiAgICAgICAgICAgICAgdGhpcy50ZXN0LFxuICAgICAgICAgICAgYnJvd3NlckNvbm5lY3Rpb246IGNvbm5lY3Rpb24sXG4gICAgICAgICAgICBnbG9iYWxXYXJuaW5nTG9nOiAgdGhpcy5fd2FybmluZ0xvZyxcbiAgICAgICAgICAgIG9wdHM6ICAgICAgICAgICAgICB0aGlzLl9vcHRzLFxuICAgICAgICAgICAgY29tcGlsZXJTZXJ2aWNlOiAgIHRoaXMuY29tcGlsZXJTZXJ2aWNlLFxuICAgICAgICAgICAgbWVzc2FnZUJ1czogICAgICAgIHRoaXMuX21lc3NhZ2VCdXMsXG4gICAgICAgICAgICBuYXRpdmVBdXRvbWF0aW9uOiAgdGhpcy5pc05hdGl2ZUF1dG9tYXRpb24sXG4gICAgICAgICAgICBzY3JlZW5zaG90Q2FwdHVyZXIsXG4gICAgICAgICAgICBzdGFydFJ1bkV4ZWN1dGlvblRpbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2xpZW50U2NyaXB0Um91dGVzID0gY2xpZW50U2NyaXB0c1JvdXRpbmcucmVnaXN0ZXIodGhpcy5fcHJveHksIHRoaXMudGVzdCwgdGhpcy5pc05hdGl2ZUF1dG9tYXRpb24pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMudGVzdFJ1bi5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgdGhpcy5fc2NyZWVuc2hvdHMuYWRkVGVzdFJ1bih0aGlzLnRlc3QsIHRoaXMudGVzdFJ1bik7XG5cbiAgICAgICAgaWYgKHRoaXMudGVzdFJ1bi5hZGRRdWFyYW50aW5lSW5mbylcbiAgICAgICAgICAgIHRoaXMudGVzdFJ1bi5hZGRRdWFyYW50aW5lSW5mbyh0aGlzLl9xdWFyYW50aW5lKTtcblxuICAgICAgICBpZiAodGhpcy5fcXVhcmFudGluZSkge1xuICAgICAgICAgICAgY29uc3QgeyBzdWNjZXNzVGhyZXNob2xkLCBhdHRlbXB0TGltaXQgfSA9IHRoaXMuX29wdHMucXVhcmFudGluZU1vZGUgYXMgUXVhcmFudGluZU9wdGlvblZhbHVlO1xuXG4gICAgICAgICAgICB0aGlzLl9xdWFyYW50aW5lLnNldEN1c3RvbVBhcmFtZXRlcnMoYXR0ZW1wdExpbWl0LCBzdWNjZXNzVGhyZXNob2xkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fcXVhcmFudGluZSB8fCB0aGlzLl9pc0ZpcnN0UXVhcmFudGluZUF0dGVtcHQoKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1jcmVhdGUnLCB7XG4gICAgICAgICAgICAgICAgdGVzdFJ1bjogICAgdGhpcy50ZXN0UnVuLFxuICAgICAgICAgICAgICAgIGxlZ2FjeTogICAgIFRlc3RSdW5DdG9yID09PSBMZWdhY3lUZXN0UnVuLFxuICAgICAgICAgICAgICAgIHRlc3Q6ICAgICAgIHRoaXMudGVzdCxcbiAgICAgICAgICAgICAgICBpbmRleDogICAgICB0aGlzLmluZGV4LFxuICAgICAgICAgICAgICAgIHF1YXJhbnRpbmU6IHRoaXMuX3F1YXJhbnRpbmUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRlc3RSdW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW5kUXVhcmFudGluZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICgodGhpcy5fcXVhcmFudGluZSBhcyBRdWFyYW50aW5lKS5hdHRlbXB0cy5sZW5ndGggPiAxKVxuICAgICAgICAgICAgdGhpcy50ZXN0UnVuLnVuc3RhYmxlID0gKHRoaXMuX3F1YXJhbnRpbmUgYXMgUXVhcmFudGluZSkuZ2V0UGFzc2VkQXR0ZW1wdHMoKS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2VtaXRUZXN0UnVuRG9uZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Nob3VsZEtlZXBJblF1YXJhbnRpbmUgKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlcnJvcnMgICAgICAgICA9IHRoaXMudGVzdFJ1bi5lcnJzO1xuICAgICAgICBjb25zdCBoYXNFcnJvcnMgICAgICA9ICEhZXJyb3JzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgYXR0ZW1wdHMgICAgICAgPSAodGhpcy5fcXVhcmFudGluZSBhcyBRdWFyYW50aW5lKS5hdHRlbXB0cztcbiAgICAgICAgY29uc3QgaXNGaXJzdEF0dGVtcHQgPSB0aGlzLl9pc0ZpcnN0UXVhcmFudGluZUF0dGVtcHQoKTtcblxuICAgICAgICBhdHRlbXB0cy5wdXNoKHsgdGVzdFJ1bklkOiB0aGlzLnRlc3RSdW4uaWQsIGVycm9ycyB9KTtcblxuICAgICAgICByZXR1cm4gaXNGaXJzdEF0dGVtcHQgPyBoYXNFcnJvcnMgOiAhKHRoaXMuX3F1YXJhbnRpbmUgYXMgUXVhcmFudGluZSkuaXNUaHJlc2hvbGRSZWFjaGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaXNGaXJzdFF1YXJhbnRpbmVBdHRlbXB0ICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fcXVhcmFudGluZSAmJiAhdGhpcy5fcXVhcmFudGluZS5hdHRlbXB0cy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfa2VlcEluUXVhcmFudGluZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX3Jlc3RhcnRUZXN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcmVzdGFydFRlc3QgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLXJlc3RhcnQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF90ZXN0UnVuRG9uZUluUXVhcmFudGluZU1vZGUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fc2hvdWxkS2VlcEluUXVhcmFudGluZSgpKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fa2VlcEluUXVhcmFudGluZSgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9lbmRRdWFyYW50aW5lKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfdGVzdFJ1bkRvbmUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fcXVhcmFudGluZSlcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3Rlc3RSdW5Eb25lSW5RdWFyYW50aW5lTW9kZSgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9lbWl0VGVzdFJ1bkRvbmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9lbWl0QWN0aW9uU3RhcnQgKGFyZ3M6IEFjdGlvbkV2ZW50QXJnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgndGVzdC1hY3Rpb24tc3RhcnQnLCBhcmdzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9lbWl0QWN0aW9uRG9uZSAoYXJnczogQWN0aW9uRXZlbnRBcmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LWFjdGlvbi1kb25lJywgYXJncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW1pdFRlc3RSdW5Eb25lICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gTk9URTogd2Ugc2hvdWxkIHJlcG9ydCB0ZXN0IHJ1biBjb21wbGV0aW9uIGluIG9yZGVyIHRoZXkgd2VyZSBjb21wbGV0ZWQgaW4gYnJvd3Nlci5cbiAgICAgICAgLy8gVG8ga2VlcCBhIHNlcXVlbmNlIGFmdGVyIGZpeHR1cmUgaG9vayBleGVjdXRpb24gd2UgdXNlIGNvbXBsZXRpb24gcXVldWUuXG4gICAgICAgIGF3YWl0IHRoaXMuX2ZpeHR1cmVIb29rQ29udHJvbGxlci5ydW5GaXh0dXJlQWZ0ZXJIb29rSWZOZWNlc3NhcnkodGhpcy50ZXN0UnVuKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fdGVzdFJ1bkhvb2sucnVuVGVzdFJ1bkFmdGVySG9va0lmTmVjZXNzYXJ5KHRoaXMudGVzdFJ1bik7XG5cbiAgICAgICAgY2xpZW50U2NyaXB0c1JvdXRpbmcudW5SZWdpc3Rlcih0aGlzLl9wcm94eSwgdGhpcy5jbGllbnRTY3JpcHRSb3V0ZXMpO1xuXG4gICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1kb25lJyk7XG5cbiAgICAgICAgZGVidWdMb2dnZXIoJ2RvbmUnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9lbWl0VGVzdFJ1blN0YXJ0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fbWVzc2FnZUJ1cy5lbWl0KCd0ZXN0LXJ1bi1zdGFydCcsIHRoaXMudGVzdFJ1bik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfdGVzdFJ1bkJlZm9yZURvbmUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmFpc2VFdmVudCA9ICF0aGlzLl9xdWFyYW50aW5lO1xuXG4gICAgICAgIGlmICghcmFpc2VFdmVudCkge1xuICAgICAgICAgICAgY29uc3QgaXNTdWNjZXNzZnVsUXVhcmFudGluZUZpcnN0QXR0ZW1wdCA9IHRoaXMuX2lzRmlyc3RRdWFyYW50aW5lQXR0ZW1wdCgpICYmICF0aGlzLnRlc3RSdW4uZXJycy5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBpc0F0dGVtcHRzVGhyZXNob2xkUmVhY2hlZCAgICAgICAgID0gKHRoaXMuX3F1YXJhbnRpbmUgYXMgUXVhcmFudGluZSkuaXNUaHJlc2hvbGRSZWFjaGVkKHRoaXMudGVzdFJ1bi5lcnJzKTtcblxuICAgICAgICAgICAgcmFpc2VFdmVudCA9IGlzU3VjY2Vzc2Z1bFF1YXJhbnRpbmVGaXJzdEF0dGVtcHQgfHwgaXNBdHRlbXB0c1RocmVzaG9sZFJlYWNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmFpc2VFdmVudClcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgndGVzdC1ydW4tYmVmb3JlLWRvbmUnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90ZXN0UnVuRGlzY29ubmVjdGVkIChjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9kaXNjb25uZWN0aW9uQ291bnQrKztcblxuICAgICAgICBjb25zdCBkaXNjb25uZWN0aW9uVGhyZXNob2xkRXhjZWVkZWVkID0gdGhpcy5fZGlzY29ubmVjdGlvbkNvdW50ID49IERJU0NPTk5FQ1RfVEhSRVNIT0xEO1xuXG4gICAgICAgIHJldHVybiBjb25uZWN0aW9uXG4gICAgICAgICAgICAucHJvY2Vzc0Rpc2Nvbm5lY3Rpb24oZGlzY29ubmVjdGlvblRocmVzaG9sZEV4Y2VlZGVlZClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVzdGFydFRlc3QoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Fzc2lnblRlc3RSdW5FdmVudHMgKHRlc3RSdW46IFRlc3RSdW4gfCBMZWdhY3lUZXN0UnVuLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICB0ZXN0UnVuLm9uKCdhY3Rpb24tc3RhcnQnLCBhc3luYyAoYXJnczogQWN0aW9uRXZlbnRBcmcpID0+IHRoaXMuX2VtaXRBY3Rpb25TdGFydChPYmplY3QuYXNzaWduKGFyZ3MsIHsgdGVzdFJ1biB9KSkpO1xuICAgICAgICB0ZXN0UnVuLm9uKCdhY3Rpb24tZG9uZScsIGFzeW5jIChhcmdzOiBBY3Rpb25FdmVudEFyZykgPT4gdGhpcy5fZW1pdEFjdGlvbkRvbmUoT2JqZWN0LmFzc2lnbihhcmdzLCB7IHRlc3RSdW4gfSkpKTtcblxuICAgICAgICB0ZXN0UnVuLm9uY2UoJ3N0YXJ0JywgYXN5bmMgKCkgPT4gdGhpcy5fZW1pdFRlc3RSdW5TdGFydCgpKTtcbiAgICAgICAgdGVzdFJ1bi5vbmNlKCdyZWFkeScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fcXVhcmFudGluZSB8fCB0aGlzLl9pc0ZpcnN0UXVhcmFudGluZUF0dGVtcHQoKSlcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLXJlYWR5Jyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0ZXN0UnVuLm9uY2UoJ2JlZm9yZS1kb25lJywgKCkgPT4gdGhpcy5fdGVzdFJ1bkJlZm9yZURvbmUoKSk7XG4gICAgICAgIHRlc3RSdW4ub25jZSgnZG9uZScsICgpID0+IHRoaXMuX3Rlc3RSdW5Eb25lKCkpO1xuICAgICAgICB0ZXN0UnVuLm9uY2UoJ2Rpc2Nvbm5lY3RlZCcsICgpID0+IHRoaXMuX3Rlc3RSdW5EaXNjb25uZWN0ZWQoY29ubmVjdGlvbikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYmxvY2tlZCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maXh0dXJlSG9va0NvbnRyb2xsZXIuaXNUZXN0QmxvY2tlZCh0aGlzLnRlc3QpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2hhbmRsZU5hdGl2ZUF1dG9tYXRpb25Nb2RlIChjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmlzTmF0aXZlQXV0b21hdGlvbiA9ICEhdGhpcy5fb3B0cy5uYXRpdmVBdXRvbWF0aW9uO1xuXG4gICAgICAgIGNvbnN0IHN1cHBvcnROYXRpdmVBdXRvbWF0aW9uID0gY29ubmVjdGlvbi5zdXBwb3J0TmF0aXZlQXV0b21hdGlvbigpO1xuXG4gICAgICAgIGlmICghdGhpcy5pc05hdGl2ZUF1dG9tYXRpb24gfHwgc3VwcG9ydE5hdGl2ZUF1dG9tYXRpb24pXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fbWVzc2FnZUJ1cy5lbWl0KCdiZWZvcmUtdGVzdC1ydW4tY3JlYXRlZC1lcnJvcicpO1xuXG4gICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuc2V0TmF0aXZlQXV0b21hdGlvbkZvclVuc3VwcG9ydGVkQnJvd3NlcnMsIGNvbm5lY3Rpb24uYnJvd3NlckluZm8ucHJvdmlkZXJOYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc3RhcnQgKGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uLCBzdGFydFJ1bkV4ZWN1dGlvblRpbWU/OiBEYXRlKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgIGRlYnVnTG9nZ2VyKCdzdGFydCcpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZU5hdGl2ZUF1dG9tYXRpb25Nb2RlKGNvbm5lY3Rpb24pO1xuXG4gICAgICAgIGNvbnN0IHRlc3RSdW4gPSBhd2FpdCB0aGlzLl9jcmVhdGVUZXN0UnVuKGNvbm5lY3Rpb24sIHN0YXJ0UnVuRXhlY3V0aW9uVGltZSk7XG5cbiAgICAgICAgY29uc3QgaG9va09rID0gYXdhaXQgdGhpcy5fdGVzdFJ1bkhvb2sucnVuVGVzdFJ1bkJlZm9yZUhvb2tJZk5lY2Vzc2FyeSh0ZXN0UnVuKVxuICAgICAgICAgICAgICAgICAgICAgICAmJiBhd2FpdCB0aGlzLl9maXh0dXJlSG9va0NvbnRyb2xsZXIucnVuRml4dHVyZUJlZm9yZUhvb2tJZk5lY2Vzc2FyeSh0ZXN0UnVuKTtcblxuICAgICAgICBpZiAodGhpcy50ZXN0LnNraXAgfHwgIWhvb2tPaykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZW1pdFRlc3RSdW5TdGFydCgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1iZWZvcmUtZG9uZScpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZW1pdFRlc3RSdW5Eb25lKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYXNzaWduVGVzdFJ1bkV2ZW50cyh0ZXN0UnVuLCBjb25uZWN0aW9uKTtcblxuICAgICAgICB0ZXN0UnVuLnN0YXJ0KCk7XG5cbiAgICAgICAgcmV0dXJuIFNlc3Npb25Db250cm9sbGVyLmdldFNlc3Npb25VcmwodGVzdFJ1biwgdGhpcy5fcHJveHkpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -297,9 +297,9 @@ class CompilerHost extends async_event_emitter_1.default {
|
|
|
297
297
|
async removeRequestEventListeners({ rules }) {
|
|
298
298
|
await this.emit('removeRequestEventListeners', { rules });
|
|
299
299
|
}
|
|
300
|
-
async initializeTestRunData({ testRunId, testId, browser, activeWindowId, messageBus }) {
|
|
300
|
+
async initializeTestRunData({ testRunId, testId, browser, activeWindowId, messageBus, isNativeAutomation }) {
|
|
301
301
|
const { proxy } = await this._getRuntime();
|
|
302
|
-
return proxy.call(this.initializeTestRunData, { testRunId, testId, browser, activeWindowId, messageBus });
|
|
302
|
+
return proxy.call(this.initializeTestRunData, { testRunId, testId, browser, activeWindowId, messageBus, isNativeAutomation });
|
|
303
303
|
}
|
|
304
304
|
async getAssertionActualValue({ testRunId, commandId }) {
|
|
305
305
|
const { proxy } = await this._getRuntime();
|
|
@@ -367,4 +367,4 @@ class CompilerHost extends async_event_emitter_1.default {
|
|
|
367
367
|
}
|
|
368
368
|
exports.default = CompilerHost;
|
|
369
369
|
module.exports = exports.default;
|
|
370
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb21waWxlci9ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLDZCQUFvQztBQUNwQyxzRkFBMEM7QUFFMUMsaURBQW9EO0FBQ3BELG1EQUE2QztBQUU3Qyw2QkFJYztBQUVkLG9FQUFrRjtBQUNsRix1RkFBOEQ7QUFDOUQsa0ZBQXVFO0FBQ3ZFLGdGQUF1RDtBQUV2RCw4Q0FBOEM7QUFDOUMsc0RBQXVEO0FBQ3ZELDBGQUFnRTtBQUNoRSx5RUFBd0Q7QUFDeEQsNEVBQW9EO0FBaUJwRCxxRUFBd0Y7QUFDeEYsbUhBQXNGO0FBNkJ0RixvREFBK0Y7QUFDL0YsNkRBQWtFO0FBQ2xFLDJFQUFpRTtBQUdqRSxNQUFNLFlBQVksR0FBUyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDL0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLG1CQUFhLEVBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUV6RSxNQUFNLFVBQVUsR0FBUSxJQUFJLE1BQU0sQ0FBQyxLQUFLLHNDQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRSxNQUFNLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLHNDQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBbUJuRixNQUFNLCtCQUErQixHQUFHLGdCQUFnQixDQUFDO0FBRXpELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQW1CO0lBQ3BELENBQUMseUNBQThCLENBQUMsSUFBSSxFQUFFLHlDQUE4QixDQUFDO0lBQ3JFLENBQUMsaUNBQXNCLENBQUMsSUFBSSxFQUFFLGlDQUFzQixDQUFDO0NBQ3hELENBQUMsQ0FBQztBQU9ILE1BQXFC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QUFDO1FBRTNDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sS0FBSyxDQUFDLHNCQUFzQixDQUFFLEVBQUUsU0FBUyxFQUFrQjtRQUM5RCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFM0MsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVNLEtBQUssQ0FBQywwQkFBMEIsQ0FBRSxFQUFFLFVBQVUsRUFBOEI7UUFDL0UsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTNDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxLQUFLLENBQUMsb0JBQW9CLENBQUUsRUFBRSx1QkFBdUIsRUFBaUM7UUFDekYsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTNDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNKO0FBM2NELCtCQTJjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgY2RwIGZyb20gJ2Nocm9tZS1yZW1vdGUtaW50ZXJmYWNlJztcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSAnZXZlbnRzJztcbmltcG9ydCB7IHNwYXduLCBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGdldEZyZWVQb3J0IH0gZnJvbSAnZW5kcG9pbnQtdXRpbHMnO1xuXG5pbXBvcnQge1xuICAgIEhPU1RfSU5QVVRfRkQsXG4gICAgSE9TVF9PVVRQVVRfRkQsXG4gICAgSE9TVF9TWU5DX0ZELFxufSBmcm9tICcuL2lvJztcblxuaW1wb3J0IHsgcmVzdG9yZSBhcyByZXN0b3JlVGVzdFN0cnVjdHVyZSB9IGZyb20gJy4uL3NlcmlhbGl6YXRpb24vdGVzdC1zdHJ1Y3R1cmUnO1xuaW1wb3J0IHByZXBhcmVPcHRpb25zIGZyb20gJy4uL3NlcmlhbGl6YXRpb24vcHJlcGFyZS1vcHRpb25zJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgdGVzdFJ1blRyYWNrZXIgfSBmcm9tICcuLi8uLi9hcGkvdGVzdC1ydW4tdHJhY2tlcic7XG5pbXBvcnQgVGVzdENvbnRyb2xsZXIgZnJvbSAnLi4vLi4vYXBpL3Rlc3QtY29udHJvbGxlcic7XG5pbXBvcnQgVGVzdFJ1biBmcm9tICcuLi8uLi90ZXN0LXJ1bic7XG5pbXBvcnQgeyBJUENQcm94eSB9IGZyb20gJy4uL3V0aWxzL2lwYy9wcm94eSc7XG5pbXBvcnQgeyBIb3N0VHJhbnNwb3J0IH0gZnJvbSAnLi4vdXRpbHMvaXBjL3RyYW5zcG9ydCc7XG5pbXBvcnQgQXN5bmNFdmVudEVtaXR0ZXIgZnJvbSAnLi4vLi4vdXRpbHMvYXN5bmMtZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgVGVzdENhZmVFcnJvckxpc3QgZnJvbSAnLi4vLi4vZXJyb3JzL2Vycm9yLWxpc3QnO1xuaW1wb3J0IERFQlVHX0FDVElPTiBmcm9tICcuLi8uLi91dGlscy9kZWJ1Zy1hY3Rpb24nO1xuXG5pbXBvcnQge1xuICAgIENvbXBpbGVyUHJvdG9jb2wsXG4gICAgUnVuVGVzdEFyZ3VtZW50cyxcbiAgICBGdW5jdGlvblByb3BlcnRpZXMsXG59IGZyb20gJy4vcHJvdG9jb2wnO1xuXG5pbXBvcnQgeyBDb21waWxlckFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL2NvbXBpbGVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IFRlc3QgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS90ZXN0JztcblxuaW1wb3J0IHtcbiAgICBSZXF1ZXN0SW5mbyxcbiAgICBSZXNwb25zZU1vY2ssXG4gICAgSW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zLFxufSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcblxuaW1wb3J0IHsgRGVidWdDb21tYW5kLCBEaXNhYmxlRGVidWdDb21tYW5kIH0gZnJvbSAnLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvb2JzZXJ2YXRpb24nO1xuaW1wb3J0IE1ldGhvZFNob3VsZE5vdEJlQ2FsbGVkRXJyb3IgZnJvbSAnLi4vdXRpbHMvbWV0aG9kLXNob3VsZC1ub3QtYmUtY2FsbGVkLWVycm9yJztcblxuaW1wb3J0IHtcbiAgICBBZGRSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMsXG4gICAgRXhlY3V0ZUNvbW1hbmRBcmd1bWVudHMsXG4gICAgRXhlY3V0ZU1vY2tQcmVkaWNhdGUsXG4gICAgRXhlY3V0ZVJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlQXJndW1lbnRzLFxuICAgIEV4ZWN1dGVSb2xlSW5pdEZuQXJndW1lbnRzLFxuICAgIEluaXRpYWxpemVUZXN0UnVuRGF0YUFyZ3VtZW50cyxcbiAgICBSZW1vdmVIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnRBcmd1bWVudHMsXG4gICAgUmVtb3ZlUmVxdWVzdEV2ZW50TGlzdGVuZXJzQXJndW1lbnRzLFxuICAgIFJlcXVlc3RGaWx0ZXJSdWxlTG9jYXRvcixcbiAgICBSZXF1ZXN0SG9va0V2ZW50QXJndW1lbnRzLFxuICAgIFNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zQXJndW1lbnRzLFxuICAgIFNldEN0eEFyZ3VtZW50cyxcbiAgICBTZXRNb2NrQXJndW1lbnRzLFxuICAgIFNldEhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudEFyZ3VtZW50cyxcbiAgICBTZXRPcHRpb25zQXJndW1lbnRzLFxuICAgIFRlc3RSdW5Mb2NhdG9yLFxuICAgIFVwZGF0ZVJvbGVQcm9wZXJ0eUFyZ3VtZW50cyxcbiAgICBFeGVjdXRlSnNFeHByZXNzaW9uQXJndW1lbnRzLFxuICAgIEV4ZWN1dGVBc3luY0pzRXhwcmVzc2lvbkFyZ3VtZW50cyxcbiAgICBDb21tYW5kTG9jYXRvcixcbiAgICBBZGRVbmV4cGVjdGVkRXJyb3JBcmd1bWVudHMsXG4gICAgQ2hlY2tXaW5kb3dBcmd1bWVudCxcbiAgICBSZW1vdmVGaXh0dXJlQ3R4c0FyZ3VtZW50cyxcbiAgICBSZW1vdmVVbml0c0Zyb21TdGF0ZUFyZ3VtZW50cyxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgVW5jYXVnaHRFeGNlcHRpb25FcnJvciwgVW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3Rlc3QtcnVuJztcbmltcG9ydCB7IGhhbmRsZVVuZXhwZWN0ZWRFcnJvciB9IGZyb20gJy4uLy4uL3V0aWxzL2hhbmRsZS1lcnJvcnMnO1xuaW1wb3J0IHsgVjhfREVCVUdfRkxBR1MgfSBmcm9tICcuLi8uLi9jbGkvbm9kZS1hcmd1bWVudHMtZmlsdGVyJztcbmltcG9ydCB7IFdhcm5pbmdMb2dNZXNzYWdlIH0gZnJvbSAnLi4vLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5cbmNvbnN0IFNFUlZJQ0VfUEFUSCAgICAgICA9IHJlcXVpcmUucmVzb2x2ZSgnLi9zZXJ2aWNlLWxvYWRlcicpO1xuY29uc3QgSU5URVJOQUxfRklMRVNfVVJMID0gcGF0aFRvRmlsZVVSTChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vJykpO1xuXG5jb25zdCBJTlNQRUNUX1JFICAgICAgPSBuZXcgUmVnRXhwKGBeKCR7VjhfREVCVUdfRkxBR1Muam9pbignfCcpfSlgKTtcbmNvbnN0IElOU1BFQ1RfUE9SVF9SRSA9IG5ldyBSZWdFeHAoYF4oJHtWOF9ERUJVR19GTEFHUy5qb2luKCd8Jyl9KT0oLis6KT8oXFxcXGQrKSRgKTtcblxuaW50ZXJmYWNlIFJ1bnRpbWVSZXNvdXJjZXMge1xuICAgIHNlcnZpY2U6IENoaWxkUHJvY2VzcztcbiAgICBwcm94eTogSVBDUHJveHk7XG59XG5cbmludGVyZmFjZSBUZXN0RnVuY3Rpb24ge1xuICAgICh0ZXN0UnVuOiBUZXN0UnVuKTogUHJvbWlzZTx1bmtub3duPjtcbn1cblxuaW50ZXJmYWNlIFJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlIHtcbiAgICAocmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogUHJvbWlzZTxib29sZWFuPjtcbn1cblxuaW50ZXJmYWNlIFdyYXBNb2NrUHJlZGljYXRlQXJndW1lbnRzIGV4dGVuZHMgUmVxdWVzdEZpbHRlclJ1bGVMb2NhdG9yIHtcbiAgICBtb2NrOiBSZXNwb25zZU1vY2s7XG59XG5cbmNvbnN0IElOSVRJQUxfREVCVUdHRVJfQlJFQUtfT05fU1RBUlQgPSAnQnJlYWsgb24gc3RhcnQnO1xuXG5jb25zdCBlcnJvclR5cGVDb25zdHJ1Y3RvcnMgPSBuZXcgTWFwPHN0cmluZywgRnVuY3Rpb24+KFtcbiAgICBbVW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkVycm9yLm5hbWUsIFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25FcnJvcl0sXG4gICAgW1VuY2F1Z2h0RXhjZXB0aW9uRXJyb3IubmFtZSwgVW5jYXVnaHRFeGNlcHRpb25FcnJvcl0sXG5dKTtcblxuaW50ZXJmYWNlIENvbXBpbGVySG9zdEluaXRPcHRpb25zIHtcbiAgICBkZXZlbG9wbWVudE1vZGU6IGJvb2xlYW47XG4gICAgdjhGbGFnczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbXBpbGVySG9zdCBleHRlbmRzIEFzeW5jRXZlbnRFbWl0dGVyIGltcGxlbWVudHMgQ29tcGlsZXJQcm90b2NvbCB7XG4gICAgcHJpdmF0ZSBydW50aW1lOiBQcm9taXNlPFJ1bnRpbWVSZXNvdXJjZXMgfCB1bmRlZmluZWQ+O1xuICAgIHByaXZhdGUgY2RwOiBjZHAuUHJvdG9jb2xBcGkgJiBFdmVudEVtaXR0ZXIgfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXZlbG9wbWVudE1vZGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSB2OEZsYWdzOiBzdHJpbmdbXTtcbiAgICBwdWJsaWMgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHsgZGV2ZWxvcG1lbnRNb2RlLCB2OEZsYWdzIH06IENvbXBpbGVySG9zdEluaXRPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5ydW50aW1lICAgICAgICAgPSBQcm9taXNlLnJlc29sdmUodm9pZCAwKTtcbiAgICAgICAgdGhpcy5kZXZlbG9wbWVudE1vZGUgPSBkZXZlbG9wbWVudE1vZGU7XG4gICAgICAgIHRoaXMudjhGbGFncyAgICAgICAgID0gdjhGbGFncztcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCAgICAgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXR1cFJvdXRlcyAocHJveHk6IElQQ1Byb3h5KTogdm9pZCB7XG4gICAgICAgIHByb3h5LnJlZ2lzdGVyKFtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUNvbW1hbmQsXG4gICAgICAgICAgICB0aGlzLnJlYWR5LFxuICAgICAgICAgICAgdGhpcy5vblJlcXVlc3RIb29rRXZlbnQsXG4gICAgICAgICAgICB0aGlzLnNldE1vY2ssXG4gICAgICAgICAgICB0aGlzLnNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zLFxuICAgICAgICAgICAgdGhpcy5zZXRIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnQsXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCxcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZVJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlLFxuICAgICAgICAgICAgdGhpcy5leGVjdXRlTW9ja1ByZWRpY2F0ZSxcbiAgICAgICAgICAgIHRoaXMuZ2V0V2FybmluZ01lc3NhZ2VzLFxuICAgICAgICAgICAgdGhpcy5hZGRSZXF1ZXN0RXZlbnRMaXN0ZW5lcnMsXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVycyxcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRlc3RSdW5EYXRhLFxuICAgICAgICAgICAgdGhpcy5nZXRBc3NlcnRpb25BY3R1YWxWYWx1ZSxcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZVJvbGVJbml0Rm4sXG4gICAgICAgICAgICB0aGlzLmdldEN0eCxcbiAgICAgICAgICAgIHRoaXMuZ2V0Rml4dHVyZUN0eCxcbiAgICAgICAgICAgIHRoaXMuc2V0Q3R4LFxuICAgICAgICAgICAgdGhpcy5zZXRGaXh0dXJlQ3R4LFxuICAgICAgICAgICAgdGhpcy51cGRhdGVSb2xlUHJvcGVydHksXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVKc0V4cHJlc3Npb24sXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVBc3luY0pzRXhwcmVzc2lvbixcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUFzc2VydGlvbkZuLFxuICAgICAgICAgICAgdGhpcy5hZGRVbmV4cGVjdGVkRXJyb3IsXG4gICAgICAgICAgICB0aGlzLmNoZWNrV2luZG93LFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVUZXN0UnVuRnJvbVN0YXRlLFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVGaXh0dXJlQ3R4c0Zyb21TdGF0ZSxcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlVW5pdHNGcm9tU3RhdGUsXG4gICAgICAgIF0sIHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldHVwRGVidWdnZXJIYW5kbGVycyAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jZHApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGVzdFJ1blRyYWNrZXIub24oREVCVUdfQUNUSU9OLnJlc3VtZSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNkcClcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGRpc2FibGVEZWJ1Z01ldGhvZE5hbWUgPSBUZXN0Q29udHJvbGxlci5kaXNhYmxlRGVidWdGb3JOb25EZWJ1Z0NvbW1hbmRzLm5hbWU7XG5cbiAgICAgICAgICAgIC8vIE5PVEU6IGRpc2FibGUgYGRlYnVnZ2VyYCBmb3Igbm9uLWRlYnVnIGNvbW1hbmRzIGlmIHRoZSBgUmVzdW1lYCBidXR0b24gaXMgY2xpY2tlZFxuICAgICAgICAgICAgLy8gdGhlIGBpbmNsdWRlQ29tbWFuZExpbmVBUElgIG9wdGlvbiBhbGxvd3MgdG8gdXNlIHRoZSBgcmVxdWlyZWAgZnVuY3RvaW9uIGluIHRoZSBleHByZXNzaW9uXG4gICAgICAgICAgICAvLyBUT0RPOiBkZWJ1Z2dpbmc6IHJlZmFjdG9yIHRvIHVzZSBhYnNvbHV0ZSBwYXRoc1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jZHAuUnVudGltZS5ldmFsdWF0ZSh7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogICAgICAgICAgICBgcmVxdWlyZS5tYWluLnJlcXVpcmUoJy4uLy4uL2FwaS90ZXN0LWNvbnRyb2xsZXInKS4ke2Rpc2FibGVEZWJ1Z01ldGhvZE5hbWV9KClgLFxuICAgICAgICAgICAgICAgIGluY2x1ZGVDb21tYW5kTGluZUFQSTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNkcC5EZWJ1Z2dlci5yZXN1bWUoeyB0ZXJtaW5hdGVPblJlc3VtZTogZmFsc2UgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRlc3RSdW5UcmFja2VyLm9uKERFQlVHX0FDVElPTi5zdGVwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2RwKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgZW5hYmxlRGVidWdNZXRob2ROYW1lID0gVGVzdENvbnRyb2xsZXIuZW5hYmxlRGVidWdGb3JOb25EZWJ1Z0NvbW1hbmRzLm5hbWU7XG5cbiAgICAgICAgICAgIC8vIE5PVEU6IGVuYWJsZSBgZGVidWdnZXJgIGZvciBub24tZGVidWcgY29tbWFuZHMgaW4gdGhlIGBOZXh0IEFjdGlvbmAgYnV0dG9uIGlzIGNsaWNrZWRcbiAgICAgICAgICAgIC8vIHRoZSBgaW5jbHVkZUNvbW1hbmRMaW5lQVBJYCBvcHRpb24gYWxsb3dzIHRvIHVzZSB0aGUgYHJlcXVpcmVgIGZ1bmN0b2lvbiBpbiB0aGUgZXhwcmVzc2lvblxuICAgICAgICAgICAgLy8gVE9ETzogZGVidWdnaW5nOiByZWZhY3RvciB0byB1c2UgYWJzb2x1dGUgcGF0aHNcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2RwLlJ1bnRpbWUuZXZhbHVhdGUoe1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246ICAgICAgICAgICAgYHJlcXVpcmUubWFpbi5yZXF1aXJlKCcuLi8uLi9hcGkvdGVzdC1jb250cm9sbGVyJykuJHtlbmFibGVEZWJ1Z01ldGhvZE5hbWV9KClgLFxuICAgICAgICAgICAgICAgIGluY2x1ZGVDb21tYW5kTGluZUFQSTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNkcC5EZWJ1Z2dlci5yZXN1bWUoeyB0ZXJtaW5hdGVPblJlc3VtZTogZmFsc2UgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE5PVEU6IG5lZWQgdG8gc3RlcCBvdXQgZnJvbSB0aGUgc291cmNlIGNvZGUgdW50aWwgYnJlYWtwb2ludCBpcyBzZXQgaW4gdGhlIGNvZGUgb2YgdGVzdFxuICAgICAgICAvLyBmb3JjZSBEZWJ1Z0NvbW1hbmQgaWYgYnJlYWtwb2ludCBzdG9wcGVkIGluIHRoZSB0ZXN0IGNvZGVcbiAgICAgICAgLy8gVE9ETzogZGVidWdnaW5nOiByZWZhY3RvciB0byB0aGlzLmNkcC5EZWJ1Z2dlci5vbigncGF1c2VkJykgYWZ0ZXIgdXBkYXRpbmcgdG8gY2hyb21lLXJlbW90ZS1pbnRlcmZhY2VAMC4zMC4wXG4gICAgICAgIHRoaXMuY2RwLm9uKCdEZWJ1Z2dlci5wYXVzZWQnLCAoYXJnczogYW55KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGNhbGxGcmFtZXMgfSA9IGFyZ3M7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNkcCkge1xuICAgICAgICAgICAgICAgIGlmIChhcmdzLnJlYXNvbiA9PT0gSU5JVElBTF9ERUJVR0dFUl9CUkVBS19PTl9TVEFSVClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2RwLkRlYnVnZ2VyLnJlc3VtZSh7IHRlcm1pbmF0ZU9uUmVzdW1lOiBmYWxzZSB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChjYWxsRnJhbWVzWzBdLnVybC5pbmNsdWRlcyhJTlRFUk5BTF9GSUxFU19VUkwpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jZHAuRGVidWdnZXIuc3RlcE91dCgpO1xuXG4gICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyh0ZXN0UnVuVHJhY2tlci5hY3RpdmVUZXN0UnVucykuZm9yRWFjaCh0ZXN0UnVuID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVuLmRlYnVnZ2luZylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW4uZXhlY3V0ZUNvbW1hbmQobmV3IERlYnVnQ29tbWFuZCgpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBOT1RFOiBuZWVkIHRvIGhpZGUgU3RhdHVzIEJhciBpZiBkZWJ1Z2dlciBpcyByZXN1bWVkXG4gICAgICAgIC8vIFRPRE86IGRlYnVnZ2luZzogcmVmYWN0b3IgdG8gdGhpcy5jZHAuRGVidWdnZXIub24oJ3Jlc3VtZWQnKSBhZnRlciB1cGRhdGluZyB0byBjaHJvbWUtcmVtb3RlLWludGVyZmFjZUAwLjMwLjBcbiAgICAgICAgdGhpcy5jZHAub24oJ0RlYnVnZ2VyLnJlc3VtZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKHRlc3RSdW5UcmFja2VyLmFjdGl2ZVRlc3RSdW5zKS5mb3JFYWNoKHRlc3RSdW4gPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0ZXN0UnVuLmRlYnVnZ2luZylcbiAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bi5leGVjdXRlQ29tbWFuZChuZXcgRGlzYWJsZURlYnVnQ29tbWFuZCgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRGVidWdQb3J0ICgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMudjhGbGFncykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnY4RmxhZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMudjhGbGFnc1tpXS5tYXRjaChJTlNQRUNUX1BPUlRfUkUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hbM107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRTZXJ2aWNlUHJvY2Vzc0FyZ3MgKHBvcnQ6IHN0cmluZyk6IHN0cmluZyBbXSB7XG4gICAgICAgIGxldCBhcmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLnY4RmxhZ3MpXG4gICAgICAgICAgICBhcmdzID0gdGhpcy52OEZsYWdzLmZpbHRlcihmbGFnID0+ICFJTlNQRUNUX1JFLnRlc3QoZmxhZykpO1xuXG4gICAgICAgIC8vIFRPRE86IGRlYnVnZ2luZzogcmVmYWN0b3IgdG8gYSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIHBhcnNpbmcgdW5pdFxuICAgICAgICBjb25zdCBpbnNwZWN0QnJrRmxhZyA9IGAtLWluc3BlY3QtYnJrPTEyNy4wLjAuMTokeyBwb3J0IH1gO1xuXG4gICAgICAgIGFyZ3MucHVzaChpbnNwZWN0QnJrRmxhZywgU0VSVklDRV9QQVRIKTtcblxuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9pbml0IChydW50aW1lOiBQcm9taXNlPFJ1bnRpbWVSZXNvdXJjZXMgfCB1bmRlZmluZWQ+KTogUHJvbWlzZTxSdW50aW1lUmVzb3VyY2VzIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUnVudGltZSA9IGF3YWl0IHJ1bnRpbWU7XG5cbiAgICAgICAgaWYgKHJlc29sdmVkUnVudGltZSlcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlZFJ1bnRpbWU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBvcnQgICAgPSB0aGlzLnBhcnNlRGVidWdQb3J0KCkgfHwgYXdhaXQgZ2V0RnJlZVBvcnQoKTtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgICAgPSB0aGlzLl9nZXRTZXJ2aWNlUHJvY2Vzc0FyZ3MocG9ydC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBzcGF3bihwcm9jZXNzLmFyZ3YwLCBhcmdzLCB7IHN0ZGlvOiBbMCwgMSwgMiwgJ3BpcGUnLCAncGlwZScsICdwaXBlJ10gfSk7XG5cbiAgICAgICAgICAgIC8vIE5PVEU6IG5lZWQgdG8gd2FpdCwgb3RoZXJ3aXNlIHRoZSBlcnJvciB3aWxsIGJlIGF0IGBhd2FpdCBjZHAoLi4uKWBcbiAgICAgICAgICAgIC8vIFRPRE86IGRlYnVnZ2luZzogcmVmYWN0b3IgdG8gdXNlIGRlbGF5IGFuZCBtdWx0aXBsZSB0cmllc1xuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDIwMDApKTtcblxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy5jZHAgPSBhd2FpdCBjZHAoeyBwb3J0IH0pO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2RwKVxuICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5kZXZlbG9wbWVudE1vZGUpXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBEZWJ1Z2dlckhhbmRsZXJzKCk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2RwLkRlYnVnZ2VyLmVuYWJsZSh7fSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNkcC5SdW50aW1lLmVuYWJsZSgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jZHAuUnVudGltZS5ydW5JZldhaXRpbmdGb3JEZWJ1Z2dlcigpO1xuXG4gICAgICAgICAgICAvLyBIQUNLOiBOb2RlLmpzIGRlZmluaXRpb24gYXJlIG5vdCBjb3JyZWN0IHdoZW4gYWRkaXRpb25hbCBJL08gY2hhbm5lbHMgYXJlIHNwXG4gICAgICAgICAgICBjb25zdCBzdGRpbyA9IHNlcnZpY2Uuc3RkaW8gYXMgYW55O1xuICAgICAgICAgICAgY29uc3QgcHJveHkgPSBuZXcgSVBDUHJveHkobmV3IEhvc3RUcmFuc3BvcnQoc3RkaW9bSE9TVF9JTlBVVF9GRF0sIHN0ZGlvW0hPU1RfT1VUUFVUX0ZEXSwgc3RkaW9bSE9TVF9TWU5DX0ZEXSkpO1xuXG4gICAgICAgICAgICB0aGlzLl9zZXR1cFJvdXRlcyhwcm94eSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMub25jZSgncmVhZHknKTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgcHJveHksIHNlcnZpY2UgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2dldFJ1bnRpbWUgKCk6IFByb21pc2U8UnVudGltZVJlc291cmNlcz4ge1xuICAgICAgICBjb25zdCBydW50aW1lID0gYXdhaXQgdGhpcy5ydW50aW1lO1xuXG4gICAgICAgIGlmICghcnVudGltZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUnVudGltZSBpcyBub3QgYXZhaWxhYmxlLicpO1xuXG4gICAgICAgIHJldHVybiBydW50aW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFRhcmdldFRlc3RSdW4gKGlkOiBzdHJpbmcpOiBUZXN0UnVuIHtcbiAgICAgICAgcmV0dXJuIHRlc3RSdW5UcmFja2VyLmFjdGl2ZVRlc3RSdW5zW2lkXSBhcyB1bmtub3duIGFzIFRlc3RSdW47XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGluaXQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnJ1bnRpbWUgPSB0aGlzLl9pbml0KHRoaXMucnVudGltZSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5ydW50aW1lO1xuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdG9wICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgc2VydmljZSwgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICBzZXJ2aWNlLmtpbGwoKTtcbiAgICAgICAgcHJveHkuc3RvcCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3dyYXBUZXN0RnVuY3Rpb24gKGlkOiBzdHJpbmcsIGZ1bmN0aW9uTmFtZTogRnVuY3Rpb25Qcm9wZXJ0aWVzKTogVGVzdEZ1bmN0aW9uIHtcbiAgICAgICAgcmV0dXJuIGFzeW5jIHRlc3RSdW4gPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5ydW5UZXN0Rm4oeyBpZCwgZnVuY3Rpb25OYW1lLCB0ZXN0UnVuSWQ6IHRlc3RSdW4uaWQgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyTGlzdCA9IG5ldyBUZXN0Q2FmZUVycm9yTGlzdCgpO1xuXG4gICAgICAgICAgICAgICAgZXJyTGlzdC5hZGRFcnJvcihlcnIpO1xuXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyTGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF93cmFwUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUgKHsgdGVzdElkLCBob29rSWQsIHJ1bGVJZCB9OiBSZXF1ZXN0RmlsdGVyUnVsZUxvY2F0b3IpOiBSZXF1ZXN0RmlsdGVyUnVsZVByZWRpY2F0ZSB7XG4gICAgICAgIHJldHVybiBhc3luYyAocmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUoeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXF1ZXN0SW5mbyB9KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF93cmFwTW9ja1ByZWRpY2F0ZSAoeyBtb2NrLCB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkIH06IFdyYXBNb2NrUHJlZGljYXRlQXJndW1lbnRzKTogdm9pZCB7XG4gICAgICAgIG1vY2suYm9keSA9IGFzeW5jIChyZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8sIHJlczogSW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9ja1ByZWRpY2F0ZSh7IHRlc3RJZCwgaG9va0lkLCBydWxlSWQsIHJlcXVlc3RJbmZvLCByZXMgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0RXJyb3JUeXBlQ29uc3RydWN0b3IgKHR5cGU6IHN0cmluZyk6IEZ1bmN0aW9uIHtcbiAgICAgICAgcmV0dXJuIGVycm9yVHlwZUNvbnN0cnVjdG9ycy5nZXQodHlwZSkgYXMgRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlYWR5ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5lbWl0KCdyZWFkeScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGVjdXRlQ29tbWFuZFN5bmMgKCk6IG5ldmVyIHtcbiAgICAgICAgdGhyb3cgbmV3IE1ldGhvZFNob3VsZE5vdEJlQ2FsbGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUNvbW1hbmQgKHsgY29tbWFuZCwgaWQsIGNhbGxzaXRlIH06IEV4ZWN1dGVDb21tYW5kQXJndW1lbnRzKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICAgICAgICAuX2dldFRhcmdldFRlc3RSdW4oaWQpXG4gICAgICAgICAgICAuZXhlY3V0ZUNvbW1hbmQoY29tbWFuZCwgY2FsbHNpdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRUZXN0cyAoeyBzb3VyY2VMaXN0LCBjb21waWxlck9wdGlvbnMsIHJ1bm5hYmxlQ29uZmlndXJhdGlvbklkIH06IENvbXBpbGVyQXJndW1lbnRzLCBiYXNlVXJsPzogc3RyaW5nKTogUHJvbWlzZTxUZXN0W10+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIGNvbnN0IHVuaXRzID0gYXdhaXQgcHJveHkuY2FsbCh0aGlzLmdldFRlc3RzLCB7IHNvdXJjZUxpc3QsIGNvbXBpbGVyT3B0aW9ucywgcnVubmFibGVDb25maWd1cmF0aW9uSWQgfSwgYmFzZVVybCk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3RvcmVUZXN0U3RydWN0dXJlKFxuICAgICAgICAgICAgdW5pdHMsXG4gICAgICAgICAgICAoLi4uYXJncykgPT4gdGhpcy5fd3JhcFRlc3RGdW5jdGlvbiguLi5hcmdzKSxcbiAgICAgICAgICAgIChydWxlTG9jYXRvcjogUmVxdWVzdEZpbHRlclJ1bGVMb2NhdG9yKSA9PiB0aGlzLl93cmFwUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUocnVsZUxvY2F0b3IpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJ1blRlc3RGbiAoeyBpZCwgZnVuY3Rpb25OYW1lLCB0ZXN0UnVuSWQgfTogUnVuVGVzdEFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHByb3h5LmNhbGwodGhpcy5ydW5UZXN0Rm4sIHsgaWQsIGZ1bmN0aW9uTmFtZSwgdGVzdFJ1bklkIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbGVhblVwICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIGF3YWl0IHByb3h5LmNhbGwodGhpcy5jbGVhblVwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0VXNlclZhcmlhYmxlcyAodXNlclZhcmlhYmxlczogVXNlclZhcmlhYmxlcyB8IG51bGwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIGF3YWl0IHByb3h5LmNhbGwodGhpcy5zZXRVc2VyVmFyaWFibGVzLCB1c2VyVmFyaWFibGVzKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBzZXRPcHRpb25zICh7IHZhbHVlIH06IFNldE9wdGlvbnNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIGNvbnN0IHByZXBhcmVkT3B0aW9ucyA9IHByZXBhcmVPcHRpb25zKHZhbHVlKTtcblxuICAgICAgICBhd2FpdCBwcm94eS5jYWxsKHRoaXMuc2V0T3B0aW9ucywgeyB2YWx1ZTogcHJlcGFyZWRPcHRpb25zIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvblJlcXVlc3RIb29rRXZlbnQgKHsgbmFtZSwgdGVzdElkLCBob29rSWQsIGV2ZW50RGF0YSB9OiBSZXF1ZXN0SG9va0V2ZW50QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICBhd2FpdCBwcm94eS5jYWxsKHRoaXMub25SZXF1ZXN0SG9va0V2ZW50LCB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdGVzdElkLFxuICAgICAgICAgICAgaG9va0lkLFxuICAgICAgICAgICAgZXZlbnREYXRhLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0TW9jayAoeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXNwb25zZUV2ZW50SWQsIG1vY2sgfTogU2V0TW9ja0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAobW9jay5pc1ByZWRpY2F0ZSlcbiAgICAgICAgICAgIHRoaXMuX3dyYXBNb2NrUHJlZGljYXRlKHsgbW9jaywgdGVzdElkLCBob29rSWQsIHJ1bGVJZCB9KTtcblxuICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3NldE1vY2snLCBbcmVzcG9uc2VFdmVudElkLCBtb2NrXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zICh7IGV2ZW50SWQsIG9wdHMgfTogU2V0Q29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCdzZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucycsIFtldmVudElkLCBvcHRzXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldEhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCAoeyBldmVudElkLCBoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZSB9OiBTZXRIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnRBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCdzZXRIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnQnLCBbZXZlbnRJZCwgaGVhZGVyTmFtZSwgaGVhZGVyVmFsdWVdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50ICh7IGV2ZW50SWQsIGhlYWRlck5hbWUgfTogUmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdCgncmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50JywgW2V2ZW50SWQsIGhlYWRlck5hbWVdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZVJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlICh7IHRlc3RJZCwgaG9va0lkLCBydWxlSWQsIHJlcXVlc3RJbmZvIH06IEV4ZWN1dGVSZXF1ZXN0RmlsdGVyUnVsZVByZWRpY2F0ZUFyZ3VtZW50cyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHByb3h5LmNhbGwodGhpcy5leGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUsIHsgdGVzdElkLCBob29rSWQsIHJ1bGVJZCwgcmVxdWVzdEluZm8gfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVNb2NrUHJlZGljYXRlICh7IHRlc3RJZCwgaG9va0lkLCBydWxlSWQsIHJlcXVlc3RJbmZvLCByZXMgfTogRXhlY3V0ZU1vY2tQcmVkaWNhdGUpOiBQcm9taXNlPEluY29taW5nTWVzc2FnZUxpa2VJbml0T3B0aW9ucz4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHByb3h5LmNhbGwodGhpcy5leGVjdXRlTW9ja1ByZWRpY2F0ZSwgeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXF1ZXN0SW5mbywgcmVzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRXYXJuaW5nTWVzc2FnZXMgKHsgdGVzdFJ1bklkIH06IFRlc3RSdW5Mb2NhdG9yKTogUHJvbWlzZTxXYXJuaW5nTG9nTWVzc2FnZVtdPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLmdldFdhcm5pbmdNZXNzYWdlcywgeyB0ZXN0UnVuSWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFkZFJlcXVlc3RFdmVudExpc3RlbmVycyAoIHsgaG9va0lkLCBob29rQ2xhc3NOYW1lLCBydWxlcyB9OiBBZGRSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCdhZGRSZXF1ZXN0RXZlbnRMaXN0ZW5lcnMnLCB7IGhvb2tJZCwgaG9va0NsYXNzTmFtZSwgcnVsZXMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVycyAoeyBydWxlcyB9OiBSZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCdyZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnMnLCB7IHJ1bGVzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0aWFsaXplVGVzdFJ1bkRhdGEgKHsgdGVzdFJ1bklkLCB0ZXN0SWQsIGJyb3dzZXIsIGFjdGl2ZVdpbmRvd0lkLCBtZXNzYWdlQnVzIH06IEluaXRpYWxpemVUZXN0UnVuRGF0YUFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy5pbml0aWFsaXplVGVzdFJ1bkRhdGEsIHsgdGVzdFJ1bklkLCB0ZXN0SWQsIGJyb3dzZXIsIGFjdGl2ZVdpbmRvd0lkLCBtZXNzYWdlQnVzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBc3NlcnRpb25BY3R1YWxWYWx1ZSAoeyB0ZXN0UnVuSWQsIGNvbW1hbmRJZCB9OiBDb21tYW5kTG9jYXRvcik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy5nZXRBc3NlcnRpb25BY3R1YWxWYWx1ZSwgeyB0ZXN0UnVuSWQsIGNvbW1hbmRJZDogY29tbWFuZElkIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlUm9sZUluaXRGbiAoeyB0ZXN0UnVuSWQsIHJvbGVJZCB9OiBFeGVjdXRlUm9sZUluaXRGbkFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy5leGVjdXRlUm9sZUluaXRGbiwgeyB0ZXN0UnVuSWQsIHJvbGVJZCB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q3R4ICh7IHRlc3RSdW5JZCB9OiBUZXN0UnVuTG9jYXRvcik6IFByb21pc2U8b2JqZWN0PiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLmdldEN0eCwgeyB0ZXN0UnVuSWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEZpeHR1cmVDdHggKHsgdGVzdFJ1bklkIH06IFRlc3RSdW5Mb2NhdG9yKTogUHJvbWlzZTxvYmplY3Q+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIHJldHVybiBwcm94eS5jYWxsKHRoaXMuZ2V0Rml4dHVyZUN0eCwgeyB0ZXN0UnVuSWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldEN0eCAoeyB0ZXN0UnVuSWQsIHZhbHVlIH06IFNldEN0eEFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy5zZXRDdHgsIHsgdGVzdFJ1bklkLCB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0Rml4dHVyZUN0eCAoeyB0ZXN0UnVuSWQsIHZhbHVlIH06IFNldEN0eEFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy5zZXRGaXh0dXJlQ3R4LCB7IHRlc3RSdW5JZCwgdmFsdWUgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUm9sZUFwcGVhcmVkICgpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE1ldGhvZFNob3VsZE5vdEJlQ2FsbGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgdXBkYXRlUm9sZVByb3BlcnR5ICh7IHJvbGVJZCwgbmFtZSwgdmFsdWUgfTogVXBkYXRlUm9sZVByb3BlcnR5QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLnVwZGF0ZVJvbGVQcm9wZXJ0eSwgeyByb2xlSWQsIG5hbWUsIHZhbHVlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlSnNFeHByZXNzaW9uICh7IGV4cHJlc3Npb24sIHRlc3RSdW5JZCwgb3B0aW9ucyB9OiBFeGVjdXRlSnNFeHByZXNzaW9uQXJndW1lbnRzKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLmV4ZWN1dGVKc0V4cHJlc3Npb24sIHsgZXhwcmVzc2lvbiwgdGVzdFJ1bklkLCBvcHRpb25zIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQXN5bmNKc0V4cHJlc3Npb24gKHsgZXhwcmVzc2lvbiwgdGVzdFJ1bklkLCBjYWxsc2l0ZSB9OiBFeGVjdXRlQXN5bmNKc0V4cHJlc3Npb25Bcmd1bWVudHMpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIHJldHVybiBwcm94eS5jYWxsKHRoaXMuZXhlY3V0ZUFzeW5jSnNFeHByZXNzaW9uLCB7IGV4cHJlc3Npb24sIHRlc3RSdW5JZCwgY2FsbHNpdGUgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVBc3NlcnRpb25GbiAoeyB0ZXN0UnVuSWQsIGNvbW1hbmRJZCB9OiBDb21tYW5kTG9jYXRvcik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy5leGVjdXRlQXNzZXJ0aW9uRm4sIHsgdGVzdFJ1bklkLCBjb21tYW5kSWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFkZFVuZXhwZWN0ZWRFcnJvciAoeyB0eXBlLCBtZXNzYWdlIH06IEFkZFVuZXhwZWN0ZWRFcnJvckFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBFcnJvclR5cGVDb25zdHJ1Y3RvciA9IHRoaXMuX2dldEVycm9yVHlwZUNvbnN0cnVjdG9yKHR5cGUpO1xuXG4gICAgICAgIGhhbmRsZVVuZXhwZWN0ZWRFcnJvcihFcnJvclR5cGVDb25zdHJ1Y3RvciwgbWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNoZWNrV2luZG93ICh7IHRlc3RSdW5JZCwgY29tbWFuZElkLCB1cmwsIHRpdGxlIH06IENoZWNrV2luZG93QXJndW1lbnQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIHJldHVybiBwcm94eS5jYWxsKHRoaXMuY2hlY2tXaW5kb3csIHsgdGVzdFJ1bklkLCBjb21tYW5kSWQsIHVybCwgdGl0bGUgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZVRlc3RSdW5Gcm9tU3RhdGUgKHsgdGVzdFJ1bklkIH06IFRlc3RSdW5Mb2NhdG9yKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLnJlbW92ZVRlc3RSdW5Gcm9tU3RhdGUsIHsgdGVzdFJ1bklkIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVGaXh0dXJlQ3R4c0Zyb21TdGF0ZSAoeyBmaXh0dXJlSWRzIH06IFJlbW92ZUZpeHR1cmVDdHhzQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLnJlbW92ZUZpeHR1cmVDdHhzRnJvbVN0YXRlLCB7IGZpeHR1cmVJZHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZVVuaXRzRnJvbVN0YXRlICh7IHJ1bm5hYmxlQ29uZmlndXJhdGlvbklkIH06IFJlbW92ZVVuaXRzRnJvbVN0YXRlQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLnJlbW92ZVVuaXRzRnJvbVN0YXRlLCB7IHJ1bm5hYmxlQ29uZmlndXJhdGlvbklkIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
370
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb21waWxlci9ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLDZCQUFvQztBQUNwQyxzRkFBMEM7QUFFMUMsaURBQW9EO0FBQ3BELG1EQUE2QztBQUU3Qyw2QkFJYztBQUVkLG9FQUFrRjtBQUNsRix1RkFBOEQ7QUFDOUQsa0ZBQXVFO0FBQ3ZFLGdGQUF1RDtBQUV2RCw4Q0FBOEM7QUFDOUMsc0RBQXVEO0FBQ3ZELDBGQUFnRTtBQUNoRSx5RUFBd0Q7QUFDeEQsNEVBQW9EO0FBaUJwRCxxRUFBd0Y7QUFDeEYsbUhBQXNGO0FBNkJ0RixvREFBK0Y7QUFDL0YsNkRBQWtFO0FBQ2xFLDJFQUFpRTtBQUdqRSxNQUFNLFlBQVksR0FBUyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDL0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLG1CQUFhLEVBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUV6RSxNQUFNLFVBQVUsR0FBUSxJQUFJLE1BQU0sQ0FBQyxLQUFLLHNDQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRSxNQUFNLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLHNDQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBbUJuRixNQUFNLCtCQUErQixHQUFHLGdCQUFnQixDQUFDO0FBRXpELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQW1CO0lBQ3BELENBQUMseUNBQThCLENBQUMsSUFBSSxFQUFFLHlDQUE4QixDQUFDO0lBQ3JFLENBQUMsaUNBQXNCLENBQUMsSUFBSSxFQUFFLGlDQUFzQixDQUFDO0NBQ3hELENBQUMsQ0FBQztBQU9ILE1BQXFC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QU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTNDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sS0FBSyxDQUFDLHNCQUFzQixDQUFFLEVBQUUsU0FBUyxFQUFrQjtRQUM5RCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFM0MsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVNLEtBQUssQ0FBQywwQkFBMEIsQ0FBRSxFQUFFLFVBQVUsRUFBOEI7UUFDL0UsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTNDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxLQUFLLENBQUMsb0JBQW9CLENBQUUsRUFBRSx1QkFBdUIsRUFBaUM7UUFDekYsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTNDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNKO0FBM2NELCtCQTJjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgY2RwIGZyb20gJ2Nocm9tZS1yZW1vdGUtaW50ZXJmYWNlJztcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSAnZXZlbnRzJztcbmltcG9ydCB7IHNwYXduLCBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGdldEZyZWVQb3J0IH0gZnJvbSAnZW5kcG9pbnQtdXRpbHMnO1xuXG5pbXBvcnQge1xuICAgIEhPU1RfSU5QVVRfRkQsXG4gICAgSE9TVF9PVVRQVVRfRkQsXG4gICAgSE9TVF9TWU5DX0ZELFxufSBmcm9tICcuL2lvJztcblxuaW1wb3J0IHsgcmVzdG9yZSBhcyByZXN0b3JlVGVzdFN0cnVjdHVyZSB9IGZyb20gJy4uL3NlcmlhbGl6YXRpb24vdGVzdC1zdHJ1Y3R1cmUnO1xuaW1wb3J0IHByZXBhcmVPcHRpb25zIGZyb20gJy4uL3NlcmlhbGl6YXRpb24vcHJlcGFyZS1vcHRpb25zJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgdGVzdFJ1blRyYWNrZXIgfSBmcm9tICcuLi8uLi9hcGkvdGVzdC1ydW4tdHJhY2tlcic7XG5pbXBvcnQgVGVzdENvbnRyb2xsZXIgZnJvbSAnLi4vLi4vYXBpL3Rlc3QtY29udHJvbGxlcic7XG5pbXBvcnQgVGVzdFJ1biBmcm9tICcuLi8uLi90ZXN0LXJ1bic7XG5pbXBvcnQgeyBJUENQcm94eSB9IGZyb20gJy4uL3V0aWxzL2lwYy9wcm94eSc7XG5pbXBvcnQgeyBIb3N0VHJhbnNwb3J0IH0gZnJvbSAnLi4vdXRpbHMvaXBjL3RyYW5zcG9ydCc7XG5pbXBvcnQgQXN5bmNFdmVudEVtaXR0ZXIgZnJvbSAnLi4vLi4vdXRpbHMvYXN5bmMtZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgVGVzdENhZmVFcnJvckxpc3QgZnJvbSAnLi4vLi4vZXJyb3JzL2Vycm9yLWxpc3QnO1xuaW1wb3J0IERFQlVHX0FDVElPTiBmcm9tICcuLi8uLi91dGlscy9kZWJ1Zy1hY3Rpb24nO1xuXG5pbXBvcnQge1xuICAgIENvbXBpbGVyUHJvdG9jb2wsXG4gICAgUnVuVGVzdEFyZ3VtZW50cyxcbiAgICBGdW5jdGlvblByb3BlcnRpZXMsXG59IGZyb20gJy4vcHJvdG9jb2wnO1xuXG5pbXBvcnQgeyBDb21waWxlckFyZ3VtZW50cyB9IGZyb20gJy4uLy4uL2NvbXBpbGVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IFRlc3QgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS90ZXN0JztcblxuaW1wb3J0IHtcbiAgICBSZXF1ZXN0SW5mbyxcbiAgICBSZXNwb25zZU1vY2ssXG4gICAgSW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zLFxufSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcblxuaW1wb3J0IHsgRGVidWdDb21tYW5kLCBEaXNhYmxlRGVidWdDb21tYW5kIH0gZnJvbSAnLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvb2JzZXJ2YXRpb24nO1xuaW1wb3J0IE1ldGhvZFNob3VsZE5vdEJlQ2FsbGVkRXJyb3IgZnJvbSAnLi4vdXRpbHMvbWV0aG9kLXNob3VsZC1ub3QtYmUtY2FsbGVkLWVycm9yJztcblxuaW1wb3J0IHtcbiAgICBBZGRSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMsXG4gICAgRXhlY3V0ZUNvbW1hbmRBcmd1bWVudHMsXG4gICAgRXhlY3V0ZU1vY2tQcmVkaWNhdGUsXG4gICAgRXhlY3V0ZVJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlQXJndW1lbnRzLFxuICAgIEV4ZWN1dGVSb2xlSW5pdEZuQXJndW1lbnRzLFxuICAgIEluaXRpYWxpemVUZXN0UnVuRGF0YUFyZ3VtZW50cyxcbiAgICBSZW1vdmVIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnRBcmd1bWVudHMsXG4gICAgUmVtb3ZlUmVxdWVzdEV2ZW50TGlzdGVuZXJzQXJndW1lbnRzLFxuICAgIFJlcXVlc3RGaWx0ZXJSdWxlTG9jYXRvcixcbiAgICBSZXF1ZXN0SG9va0V2ZW50QXJndW1lbnRzLFxuICAgIFNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zQXJndW1lbnRzLFxuICAgIFNldEN0eEFyZ3VtZW50cyxcbiAgICBTZXRNb2NrQXJndW1lbnRzLFxuICAgIFNldEhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudEFyZ3VtZW50cyxcbiAgICBTZXRPcHRpb25zQXJndW1lbnRzLFxuICAgIFRlc3RSdW5Mb2NhdG9yLFxuICAgIFVwZGF0ZVJvbGVQcm9wZXJ0eUFyZ3VtZW50cyxcbiAgICBFeGVjdXRlSnNFeHByZXNzaW9uQXJndW1lbnRzLFxuICAgIEV4ZWN1dGVBc3luY0pzRXhwcmVzc2lvbkFyZ3VtZW50cyxcbiAgICBDb21tYW5kTG9jYXRvcixcbiAgICBBZGRVbmV4cGVjdGVkRXJyb3JBcmd1bWVudHMsXG4gICAgQ2hlY2tXaW5kb3dBcmd1bWVudCxcbiAgICBSZW1vdmVGaXh0dXJlQ3R4c0FyZ3VtZW50cyxcbiAgICBSZW1vdmVVbml0c0Zyb21TdGF0ZUFyZ3VtZW50cyxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgVW5jYXVnaHRFeGNlcHRpb25FcnJvciwgVW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3Rlc3QtcnVuJztcbmltcG9ydCB7IGhhbmRsZVVuZXhwZWN0ZWRFcnJvciB9IGZyb20gJy4uLy4uL3V0aWxzL2hhbmRsZS1lcnJvcnMnO1xuaW1wb3J0IHsgVjhfREVCVUdfRkxBR1MgfSBmcm9tICcuLi8uLi9jbGkvbm9kZS1hcmd1bWVudHMtZmlsdGVyJztcbmltcG9ydCB7IFdhcm5pbmdMb2dNZXNzYWdlIH0gZnJvbSAnLi4vLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5cbmNvbnN0IFNFUlZJQ0VfUEFUSCAgICAgICA9IHJlcXVpcmUucmVzb2x2ZSgnLi9zZXJ2aWNlLWxvYWRlcicpO1xuY29uc3QgSU5URVJOQUxfRklMRVNfVVJMID0gcGF0aFRvRmlsZVVSTChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vJykpO1xuXG5jb25zdCBJTlNQRUNUX1JFICAgICAgPSBuZXcgUmVnRXhwKGBeKCR7VjhfREVCVUdfRkxBR1Muam9pbignfCcpfSlgKTtcbmNvbnN0IElOU1BFQ1RfUE9SVF9SRSA9IG5ldyBSZWdFeHAoYF4oJHtWOF9ERUJVR19GTEFHUy5qb2luKCd8Jyl9KT0oLis6KT8oXFxcXGQrKSRgKTtcblxuaW50ZXJmYWNlIFJ1bnRpbWVSZXNvdXJjZXMge1xuICAgIHNlcnZpY2U6IENoaWxkUHJvY2VzcztcbiAgICBwcm94eTogSVBDUHJveHk7XG59XG5cbmludGVyZmFjZSBUZXN0RnVuY3Rpb24ge1xuICAgICh0ZXN0UnVuOiBUZXN0UnVuKTogUHJvbWlzZTx1bmtub3duPjtcbn1cblxuaW50ZXJmYWNlIFJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlIHtcbiAgICAocmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogUHJvbWlzZTxib29sZWFuPjtcbn1cblxuaW50ZXJmYWNlIFdyYXBNb2NrUHJlZGljYXRlQXJndW1lbnRzIGV4dGVuZHMgUmVxdWVzdEZpbHRlclJ1bGVMb2NhdG9yIHtcbiAgICBtb2NrOiBSZXNwb25zZU1vY2s7XG59XG5cbmNvbnN0IElOSVRJQUxfREVCVUdHRVJfQlJFQUtfT05fU1RBUlQgPSAnQnJlYWsgb24gc3RhcnQnO1xuXG5jb25zdCBlcnJvclR5cGVDb25zdHJ1Y3RvcnMgPSBuZXcgTWFwPHN0cmluZywgRnVuY3Rpb24+KFtcbiAgICBbVW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkVycm9yLm5hbWUsIFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25FcnJvcl0sXG4gICAgW1VuY2F1Z2h0RXhjZXB0aW9uRXJyb3IubmFtZSwgVW5jYXVnaHRFeGNlcHRpb25FcnJvcl0sXG5dKTtcblxuaW50ZXJmYWNlIENvbXBpbGVySG9zdEluaXRPcHRpb25zIHtcbiAgICBkZXZlbG9wbWVudE1vZGU6IGJvb2xlYW47XG4gICAgdjhGbGFnczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbXBpbGVySG9zdCBleHRlbmRzIEFzeW5jRXZlbnRFbWl0dGVyIGltcGxlbWVudHMgQ29tcGlsZXJQcm90b2NvbCB7XG4gICAgcHJpdmF0ZSBydW50aW1lOiBQcm9taXNlPFJ1bnRpbWVSZXNvdXJjZXMgfCB1bmRlZmluZWQ+O1xuICAgIHByaXZhdGUgY2RwOiBjZHAuUHJvdG9jb2xBcGkgJiBFdmVudEVtaXR0ZXIgfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXZlbG9wbWVudE1vZGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSB2OEZsYWdzOiBzdHJpbmdbXTtcbiAgICBwdWJsaWMgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHsgZGV2ZWxvcG1lbnRNb2RlLCB2OEZsYWdzIH06IENvbXBpbGVySG9zdEluaXRPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5ydW50aW1lICAgICAgICAgPSBQcm9taXNlLnJlc29sdmUodm9pZCAwKTtcbiAgICAgICAgdGhpcy5kZXZlbG9wbWVudE1vZGUgPSBkZXZlbG9wbWVudE1vZGU7XG4gICAgICAgIHRoaXMudjhGbGFncyAgICAgICAgID0gdjhGbGFncztcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCAgICAgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXR1cFJvdXRlcyAocHJveHk6IElQQ1Byb3h5KTogdm9pZCB7XG4gICAgICAgIHByb3h5LnJlZ2lzdGVyKFtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUNvbW1hbmQsXG4gICAgICAgICAgICB0aGlzLnJlYWR5LFxuICAgICAgICAgICAgdGhpcy5vblJlcXVlc3RIb29rRXZlbnQsXG4gICAgICAgICAgICB0aGlzLnNldE1vY2ssXG4gICAgICAgICAgICB0aGlzLnNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zLFxuICAgICAgICAgICAgdGhpcy5zZXRIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnQsXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCxcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZVJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlLFxuICAgICAgICAgICAgdGhpcy5leGVjdXRlTW9ja1ByZWRpY2F0ZSxcbiAgICAgICAgICAgIHRoaXMuZ2V0V2FybmluZ01lc3NhZ2VzLFxuICAgICAgICAgICAgdGhpcy5hZGRSZXF1ZXN0RXZlbnRMaXN0ZW5lcnMsXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVycyxcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRlc3RSdW5EYXRhLFxuICAgICAgICAgICAgdGhpcy5nZXRBc3NlcnRpb25BY3R1YWxWYWx1ZSxcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZVJvbGVJbml0Rm4sXG4gICAgICAgICAgICB0aGlzLmdldEN0eCxcbiAgICAgICAgICAgIHRoaXMuZ2V0Rml4dHVyZUN0eCxcbiAgICAgICAgICAgIHRoaXMuc2V0Q3R4LFxuICAgICAgICAgICAgdGhpcy5zZXRGaXh0dXJlQ3R4LFxuICAgICAgICAgICAgdGhpcy51cGRhdGVSb2xlUHJvcGVydHksXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVKc0V4cHJlc3Npb24sXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVBc3luY0pzRXhwcmVzc2lvbixcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUFzc2VydGlvbkZuLFxuICAgICAgICAgICAgdGhpcy5hZGRVbmV4cGVjdGVkRXJyb3IsXG4gICAgICAgICAgICB0aGlzLmNoZWNrV2luZG93LFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVUZXN0UnVuRnJvbVN0YXRlLFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVGaXh0dXJlQ3R4c0Zyb21TdGF0ZSxcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlVW5pdHNGcm9tU3RhdGUsXG4gICAgICAgIF0sIHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldHVwRGVidWdnZXJIYW5kbGVycyAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jZHApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGVzdFJ1blRyYWNrZXIub24oREVCVUdfQUNUSU9OLnJlc3VtZSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNkcClcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGRpc2FibGVEZWJ1Z01ldGhvZE5hbWUgPSBUZXN0Q29udHJvbGxlci5kaXNhYmxlRGVidWdGb3JOb25EZWJ1Z0NvbW1hbmRzLm5hbWU7XG5cbiAgICAgICAgICAgIC8vIE5PVEU6IGRpc2FibGUgYGRlYnVnZ2VyYCBmb3Igbm9uLWRlYnVnIGNvbW1hbmRzIGlmIHRoZSBgUmVzdW1lYCBidXR0b24gaXMgY2xpY2tlZFxuICAgICAgICAgICAgLy8gdGhlIGBpbmNsdWRlQ29tbWFuZExpbmVBUElgIG9wdGlvbiBhbGxvd3MgdG8gdXNlIHRoZSBgcmVxdWlyZWAgZnVuY3RvaW9uIGluIHRoZSBleHByZXNzaW9uXG4gICAgICAgICAgICAvLyBUT0RPOiBkZWJ1Z2dpbmc6IHJlZmFjdG9yIHRvIHVzZSBhYnNvbHV0ZSBwYXRoc1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jZHAuUnVudGltZS5ldmFsdWF0ZSh7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogICAgICAgICAgICBgcmVxdWlyZS5tYWluLnJlcXVpcmUoJy4uLy4uL2FwaS90ZXN0LWNvbnRyb2xsZXInKS4ke2Rpc2FibGVEZWJ1Z01ldGhvZE5hbWV9KClgLFxuICAgICAgICAgICAgICAgIGluY2x1ZGVDb21tYW5kTGluZUFQSTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNkcC5EZWJ1Z2dlci5yZXN1bWUoeyB0ZXJtaW5hdGVPblJlc3VtZTogZmFsc2UgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRlc3RSdW5UcmFja2VyLm9uKERFQlVHX0FDVElPTi5zdGVwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2RwKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgZW5hYmxlRGVidWdNZXRob2ROYW1lID0gVGVzdENvbnRyb2xsZXIuZW5hYmxlRGVidWdGb3JOb25EZWJ1Z0NvbW1hbmRzLm5hbWU7XG5cbiAgICAgICAgICAgIC8vIE5PVEU6IGVuYWJsZSBgZGVidWdnZXJgIGZvciBub24tZGVidWcgY29tbWFuZHMgaW4gdGhlIGBOZXh0IEFjdGlvbmAgYnV0dG9uIGlzIGNsaWNrZWRcbiAgICAgICAgICAgIC8vIHRoZSBgaW5jbHVkZUNvbW1hbmRMaW5lQVBJYCBvcHRpb24gYWxsb3dzIHRvIHVzZSB0aGUgYHJlcXVpcmVgIGZ1bmN0b2lvbiBpbiB0aGUgZXhwcmVzc2lvblxuICAgICAgICAgICAgLy8gVE9ETzogZGVidWdnaW5nOiByZWZhY3RvciB0byB1c2UgYWJzb2x1dGUgcGF0aHNcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2RwLlJ1bnRpbWUuZXZhbHVhdGUoe1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246ICAgICAgICAgICAgYHJlcXVpcmUubWFpbi5yZXF1aXJlKCcuLi8uLi9hcGkvdGVzdC1jb250cm9sbGVyJykuJHtlbmFibGVEZWJ1Z01ldGhvZE5hbWV9KClgLFxuICAgICAgICAgICAgICAgIGluY2x1ZGVDb21tYW5kTGluZUFQSTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNkcC5EZWJ1Z2dlci5yZXN1bWUoeyB0ZXJtaW5hdGVPblJlc3VtZTogZmFsc2UgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE5PVEU6IG5lZWQgdG8gc3RlcCBvdXQgZnJvbSB0aGUgc291cmNlIGNvZGUgdW50aWwgYnJlYWtwb2ludCBpcyBzZXQgaW4gdGhlIGNvZGUgb2YgdGVzdFxuICAgICAgICAvLyBmb3JjZSBEZWJ1Z0NvbW1hbmQgaWYgYnJlYWtwb2ludCBzdG9wcGVkIGluIHRoZSB0ZXN0IGNvZGVcbiAgICAgICAgLy8gVE9ETzogZGVidWdnaW5nOiByZWZhY3RvciB0byB0aGlzLmNkcC5EZWJ1Z2dlci5vbigncGF1c2VkJykgYWZ0ZXIgdXBkYXRpbmcgdG8gY2hyb21lLXJlbW90ZS1pbnRlcmZhY2VAMC4zMC4wXG4gICAgICAgIHRoaXMuY2RwLm9uKCdEZWJ1Z2dlci5wYXVzZWQnLCAoYXJnczogYW55KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGNhbGxGcmFtZXMgfSA9IGFyZ3M7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNkcCkge1xuICAgICAgICAgICAgICAgIGlmIChhcmdzLnJlYXNvbiA9PT0gSU5JVElBTF9ERUJVR0dFUl9CUkVBS19PTl9TVEFSVClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2RwLkRlYnVnZ2VyLnJlc3VtZSh7IHRlcm1pbmF0ZU9uUmVzdW1lOiBmYWxzZSB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChjYWxsRnJhbWVzWzBdLnVybC5pbmNsdWRlcyhJTlRFUk5BTF9GSUxFU19VUkwpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jZHAuRGVidWdnZXIuc3RlcE91dCgpO1xuXG4gICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyh0ZXN0UnVuVHJhY2tlci5hY3RpdmVUZXN0UnVucykuZm9yRWFjaCh0ZXN0UnVuID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVuLmRlYnVnZ2luZylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW4uZXhlY3V0ZUNvbW1hbmQobmV3IERlYnVnQ29tbWFuZCgpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBOT1RFOiBuZWVkIHRvIGhpZGUgU3RhdHVzIEJhciBpZiBkZWJ1Z2dlciBpcyByZXN1bWVkXG4gICAgICAgIC8vIFRPRE86IGRlYnVnZ2luZzogcmVmYWN0b3IgdG8gdGhpcy5jZHAuRGVidWdnZXIub24oJ3Jlc3VtZWQnKSBhZnRlciB1cGRhdGluZyB0byBjaHJvbWUtcmVtb3RlLWludGVyZmFjZUAwLjMwLjBcbiAgICAgICAgdGhpcy5jZHAub24oJ0RlYnVnZ2VyLnJlc3VtZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKHRlc3RSdW5UcmFja2VyLmFjdGl2ZVRlc3RSdW5zKS5mb3JFYWNoKHRlc3RSdW4gPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0ZXN0UnVuLmRlYnVnZ2luZylcbiAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bi5leGVjdXRlQ29tbWFuZChuZXcgRGlzYWJsZURlYnVnQ29tbWFuZCgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRGVidWdQb3J0ICgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMudjhGbGFncykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnY4RmxhZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMudjhGbGFnc1tpXS5tYXRjaChJTlNQRUNUX1BPUlRfUkUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hbM107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRTZXJ2aWNlUHJvY2Vzc0FyZ3MgKHBvcnQ6IHN0cmluZyk6IHN0cmluZyBbXSB7XG4gICAgICAgIGxldCBhcmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLnY4RmxhZ3MpXG4gICAgICAgICAgICBhcmdzID0gdGhpcy52OEZsYWdzLmZpbHRlcihmbGFnID0+ICFJTlNQRUNUX1JFLnRlc3QoZmxhZykpO1xuXG4gICAgICAgIC8vIFRPRE86IGRlYnVnZ2luZzogcmVmYWN0b3IgdG8gYSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIHBhcnNpbmcgdW5pdFxuICAgICAgICBjb25zdCBpbnNwZWN0QnJrRmxhZyA9IGAtLWluc3BlY3QtYnJrPTEyNy4wLjAuMTokeyBwb3J0IH1gO1xuXG4gICAgICAgIGFyZ3MucHVzaChpbnNwZWN0QnJrRmxhZywgU0VSVklDRV9QQVRIKTtcblxuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9pbml0IChydW50aW1lOiBQcm9taXNlPFJ1bnRpbWVSZXNvdXJjZXMgfCB1bmRlZmluZWQ+KTogUHJvbWlzZTxSdW50aW1lUmVzb3VyY2VzIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUnVudGltZSA9IGF3YWl0IHJ1bnRpbWU7XG5cbiAgICAgICAgaWYgKHJlc29sdmVkUnVudGltZSlcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlZFJ1bnRpbWU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBvcnQgICAgPSB0aGlzLnBhcnNlRGVidWdQb3J0KCkgfHwgYXdhaXQgZ2V0RnJlZVBvcnQoKTtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3MgICAgPSB0aGlzLl9nZXRTZXJ2aWNlUHJvY2Vzc0FyZ3MocG9ydC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBzcGF3bihwcm9jZXNzLmFyZ3YwLCBhcmdzLCB7IHN0ZGlvOiBbMCwgMSwgMiwgJ3BpcGUnLCAncGlwZScsICdwaXBlJ10gfSk7XG5cbiAgICAgICAgICAgIC8vIE5PVEU6IG5lZWQgdG8gd2FpdCwgb3RoZXJ3aXNlIHRoZSBlcnJvciB3aWxsIGJlIGF0IGBhd2FpdCBjZHAoLi4uKWBcbiAgICAgICAgICAgIC8vIFRPRE86IGRlYnVnZ2luZzogcmVmYWN0b3IgdG8gdXNlIGRlbGF5IGFuZCBtdWx0aXBsZSB0cmllc1xuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDIwMDApKTtcblxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy5jZHAgPSBhd2FpdCBjZHAoeyBwb3J0IH0pO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2RwKVxuICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5kZXZlbG9wbWVudE1vZGUpXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBEZWJ1Z2dlckhhbmRsZXJzKCk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2RwLkRlYnVnZ2VyLmVuYWJsZSh7fSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNkcC5SdW50aW1lLmVuYWJsZSgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jZHAuUnVudGltZS5ydW5JZldhaXRpbmdGb3JEZWJ1Z2dlcigpO1xuXG4gICAgICAgICAgICAvLyBIQUNLOiBOb2RlLmpzIGRlZmluaXRpb24gYXJlIG5vdCBjb3JyZWN0IHdoZW4gYWRkaXRpb25hbCBJL08gY2hhbm5lbHMgYXJlIHNwXG4gICAgICAgICAgICBjb25zdCBzdGRpbyA9IHNlcnZpY2Uuc3RkaW8gYXMgYW55O1xuICAgICAgICAgICAgY29uc3QgcHJveHkgPSBuZXcgSVBDUHJveHkobmV3IEhvc3RUcmFuc3BvcnQoc3RkaW9bSE9TVF9JTlBVVF9GRF0sIHN0ZGlvW0hPU1RfT1VUUFVUX0ZEXSwgc3RkaW9bSE9TVF9TWU5DX0ZEXSkpO1xuXG4gICAgICAgICAgICB0aGlzLl9zZXR1cFJvdXRlcyhwcm94eSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMub25jZSgncmVhZHknKTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgcHJveHksIHNlcnZpY2UgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2dldFJ1bnRpbWUgKCk6IFByb21pc2U8UnVudGltZVJlc291cmNlcz4ge1xuICAgICAgICBjb25zdCBydW50aW1lID0gYXdhaXQgdGhpcy5ydW50aW1lO1xuXG4gICAgICAgIGlmICghcnVudGltZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUnVudGltZSBpcyBub3QgYXZhaWxhYmxlLicpO1xuXG4gICAgICAgIHJldHVybiBydW50aW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFRhcmdldFRlc3RSdW4gKGlkOiBzdHJpbmcpOiBUZXN0UnVuIHtcbiAgICAgICAgcmV0dXJuIHRlc3RSdW5UcmFja2VyLmFjdGl2ZVRlc3RSdW5zW2lkXSBhcyB1bmtub3duIGFzIFRlc3RSdW47XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGluaXQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnJ1bnRpbWUgPSB0aGlzLl9pbml0KHRoaXMucnVudGltZSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5ydW50aW1lO1xuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdG9wICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgc2VydmljZSwgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICBzZXJ2aWNlLmtpbGwoKTtcbiAgICAgICAgcHJveHkuc3RvcCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3dyYXBUZXN0RnVuY3Rpb24gKGlkOiBzdHJpbmcsIGZ1bmN0aW9uTmFtZTogRnVuY3Rpb25Qcm9wZXJ0aWVzKTogVGVzdEZ1bmN0aW9uIHtcbiAgICAgICAgcmV0dXJuIGFzeW5jIHRlc3RSdW4gPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5ydW5UZXN0Rm4oeyBpZCwgZnVuY3Rpb25OYW1lLCB0ZXN0UnVuSWQ6IHRlc3RSdW4uaWQgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyTGlzdCA9IG5ldyBUZXN0Q2FmZUVycm9yTGlzdCgpO1xuXG4gICAgICAgICAgICAgICAgZXJyTGlzdC5hZGRFcnJvcihlcnIpO1xuXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyTGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF93cmFwUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUgKHsgdGVzdElkLCBob29rSWQsIHJ1bGVJZCB9OiBSZXF1ZXN0RmlsdGVyUnVsZUxvY2F0b3IpOiBSZXF1ZXN0RmlsdGVyUnVsZVByZWRpY2F0ZSB7XG4gICAgICAgIHJldHVybiBhc3luYyAocmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUoeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXF1ZXN0SW5mbyB9KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF93cmFwTW9ja1ByZWRpY2F0ZSAoeyBtb2NrLCB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkIH06IFdyYXBNb2NrUHJlZGljYXRlQXJndW1lbnRzKTogdm9pZCB7XG4gICAgICAgIG1vY2suYm9keSA9IGFzeW5jIChyZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8sIHJlczogSW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9ja1ByZWRpY2F0ZSh7IHRlc3RJZCwgaG9va0lkLCBydWxlSWQsIHJlcXVlc3RJbmZvLCByZXMgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0RXJyb3JUeXBlQ29uc3RydWN0b3IgKHR5cGU6IHN0cmluZyk6IEZ1bmN0aW9uIHtcbiAgICAgICAgcmV0dXJuIGVycm9yVHlwZUNvbnN0cnVjdG9ycy5nZXQodHlwZSkgYXMgRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlYWR5ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5lbWl0KCdyZWFkeScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGVjdXRlQ29tbWFuZFN5bmMgKCk6IG5ldmVyIHtcbiAgICAgICAgdGhyb3cgbmV3IE1ldGhvZFNob3VsZE5vdEJlQ2FsbGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUNvbW1hbmQgKHsgY29tbWFuZCwgaWQsIGNhbGxzaXRlIH06IEV4ZWN1dGVDb21tYW5kQXJndW1lbnRzKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICAgICAgICAuX2dldFRhcmdldFRlc3RSdW4oaWQpXG4gICAgICAgICAgICAuZXhlY3V0ZUNvbW1hbmQoY29tbWFuZCwgY2FsbHNpdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRUZXN0cyAoeyBzb3VyY2VMaXN0LCBjb21waWxlck9wdGlvbnMsIHJ1bm5hYmxlQ29uZmlndXJhdGlvbklkIH06IENvbXBpbGVyQXJndW1lbnRzLCBiYXNlVXJsPzogc3RyaW5nKTogUHJvbWlzZTxUZXN0W10+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIGNvbnN0IHVuaXRzID0gYXdhaXQgcHJveHkuY2FsbCh0aGlzLmdldFRlc3RzLCB7IHNvdXJjZUxpc3QsIGNvbXBpbGVyT3B0aW9ucywgcnVubmFibGVDb25maWd1cmF0aW9uSWQgfSwgYmFzZVVybCk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3RvcmVUZXN0U3RydWN0dXJlKFxuICAgICAgICAgICAgdW5pdHMsXG4gICAgICAgICAgICAoLi4uYXJncykgPT4gdGhpcy5fd3JhcFRlc3RGdW5jdGlvbiguLi5hcmdzKSxcbiAgICAgICAgICAgIChydWxlTG9jYXRvcjogUmVxdWVzdEZpbHRlclJ1bGVMb2NhdG9yKSA9PiB0aGlzLl93cmFwUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUocnVsZUxvY2F0b3IpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJ1blRlc3RGbiAoeyBpZCwgZnVuY3Rpb25OYW1lLCB0ZXN0UnVuSWQgfTogUnVuVGVzdEFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHByb3h5LmNhbGwodGhpcy5ydW5UZXN0Rm4sIHsgaWQsIGZ1bmN0aW9uTmFtZSwgdGVzdFJ1bklkIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbGVhblVwICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIGF3YWl0IHByb3h5LmNhbGwodGhpcy5jbGVhblVwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0VXNlclZhcmlhYmxlcyAodXNlclZhcmlhYmxlczogVXNlclZhcmlhYmxlcyB8IG51bGwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIGF3YWl0IHByb3h5LmNhbGwodGhpcy5zZXRVc2VyVmFyaWFibGVzLCB1c2VyVmFyaWFibGVzKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBzZXRPcHRpb25zICh7IHZhbHVlIH06IFNldE9wdGlvbnNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIGNvbnN0IHByZXBhcmVkT3B0aW9ucyA9IHByZXBhcmVPcHRpb25zKHZhbHVlKTtcblxuICAgICAgICBhd2FpdCBwcm94eS5jYWxsKHRoaXMuc2V0T3B0aW9ucywgeyB2YWx1ZTogcHJlcGFyZWRPcHRpb25zIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvblJlcXVlc3RIb29rRXZlbnQgKHsgbmFtZSwgdGVzdElkLCBob29rSWQsIGV2ZW50RGF0YSB9OiBSZXF1ZXN0SG9va0V2ZW50QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICBhd2FpdCBwcm94eS5jYWxsKHRoaXMub25SZXF1ZXN0SG9va0V2ZW50LCB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdGVzdElkLFxuICAgICAgICAgICAgaG9va0lkLFxuICAgICAgICAgICAgZXZlbnREYXRhLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0TW9jayAoeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXNwb25zZUV2ZW50SWQsIG1vY2sgfTogU2V0TW9ja0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAobW9jay5pc1ByZWRpY2F0ZSlcbiAgICAgICAgICAgIHRoaXMuX3dyYXBNb2NrUHJlZGljYXRlKHsgbW9jaywgdGVzdElkLCBob29rSWQsIHJ1bGVJZCB9KTtcblxuICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3NldE1vY2snLCBbcmVzcG9uc2VFdmVudElkLCBtb2NrXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zICh7IGV2ZW50SWQsIG9wdHMgfTogU2V0Q29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCdzZXRDb25maWd1cmVSZXNwb25zZUV2ZW50T3B0aW9ucycsIFtldmVudElkLCBvcHRzXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldEhlYWRlck9uQ29uZmlndXJlUmVzcG9uc2VFdmVudCAoeyBldmVudElkLCBoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZSB9OiBTZXRIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnRBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCdzZXRIZWFkZXJPbkNvbmZpZ3VyZVJlc3BvbnNlRXZlbnQnLCBbZXZlbnRJZCwgaGVhZGVyTmFtZSwgaGVhZGVyVmFsdWVdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50ICh7IGV2ZW50SWQsIGhlYWRlck5hbWUgfTogUmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdCgncmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50JywgW2V2ZW50SWQsIGhlYWRlck5hbWVdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZVJlcXVlc3RGaWx0ZXJSdWxlUHJlZGljYXRlICh7IHRlc3RJZCwgaG9va0lkLCBydWxlSWQsIHJlcXVlc3RJbmZvIH06IEV4ZWN1dGVSZXF1ZXN0RmlsdGVyUnVsZVByZWRpY2F0ZUFyZ3VtZW50cyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHByb3h5LmNhbGwodGhpcy5leGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGUsIHsgdGVzdElkLCBob29rSWQsIHJ1bGVJZCwgcmVxdWVzdEluZm8gfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4ZWN1dGVNb2NrUHJlZGljYXRlICh7IHRlc3RJZCwgaG9va0lkLCBydWxlSWQsIHJlcXVlc3RJbmZvLCByZXMgfTogRXhlY3V0ZU1vY2tQcmVkaWNhdGUpOiBQcm9taXNlPEluY29taW5nTWVzc2FnZUxpa2VJbml0T3B0aW9ucz4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHByb3h5LmNhbGwodGhpcy5leGVjdXRlTW9ja1ByZWRpY2F0ZSwgeyB0ZXN0SWQsIGhvb2tJZCwgcnVsZUlkLCByZXF1ZXN0SW5mbywgcmVzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRXYXJuaW5nTWVzc2FnZXMgKHsgdGVzdFJ1bklkIH06IFRlc3RSdW5Mb2NhdG9yKTogUHJvbWlzZTxXYXJuaW5nTG9nTWVzc2FnZVtdPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLmdldFdhcm5pbmdNZXNzYWdlcywgeyB0ZXN0UnVuSWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFkZFJlcXVlc3RFdmVudExpc3RlbmVycyAoIHsgaG9va0lkLCBob29rQ2xhc3NOYW1lLCBydWxlcyB9OiBBZGRSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCdhZGRSZXF1ZXN0RXZlbnRMaXN0ZW5lcnMnLCB7IGhvb2tJZCwgaG9va0NsYXNzTmFtZSwgcnVsZXMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbW92ZVJlcXVlc3RFdmVudExpc3RlbmVycyAoeyBydWxlcyB9OiBSZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCdyZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnMnLCB7IHJ1bGVzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0aWFsaXplVGVzdFJ1bkRhdGEgKHsgdGVzdFJ1bklkLCB0ZXN0SWQsIGJyb3dzZXIsIGFjdGl2ZVdpbmRvd0lkLCBtZXNzYWdlQnVzLCBpc05hdGl2ZUF1dG9tYXRpb24gfTogSW5pdGlhbGl6ZVRlc3RSdW5EYXRhQXJndW1lbnRzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLmluaXRpYWxpemVUZXN0UnVuRGF0YSwgeyB0ZXN0UnVuSWQsIHRlc3RJZCwgYnJvd3NlciwgYWN0aXZlV2luZG93SWQsIG1lc3NhZ2VCdXMsIGlzTmF0aXZlQXV0b21hdGlvbiB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXNzZXJ0aW9uQWN0dWFsVmFsdWUgKHsgdGVzdFJ1bklkLCBjb21tYW5kSWQgfTogQ29tbWFuZExvY2F0b3IpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIHJldHVybiBwcm94eS5jYWxsKHRoaXMuZ2V0QXNzZXJ0aW9uQWN0dWFsVmFsdWUsIHsgdGVzdFJ1bklkLCBjb21tYW5kSWQ6IGNvbW1hbmRJZCB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZVJvbGVJbml0Rm4gKHsgdGVzdFJ1bklkLCByb2xlSWQgfTogRXhlY3V0ZVJvbGVJbml0Rm5Bcmd1bWVudHMpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIHJldHVybiBwcm94eS5jYWxsKHRoaXMuZXhlY3V0ZVJvbGVJbml0Rm4sIHsgdGVzdFJ1bklkLCByb2xlSWQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEN0eCAoeyB0ZXN0UnVuSWQgfTogVGVzdFJ1bkxvY2F0b3IpOiBQcm9taXNlPG9iamVjdD4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy5nZXRDdHgsIHsgdGVzdFJ1bklkIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGaXh0dXJlQ3R4ICh7IHRlc3RSdW5JZCB9OiBUZXN0UnVuTG9jYXRvcik6IFByb21pc2U8b2JqZWN0PiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLmdldEZpeHR1cmVDdHgsIHsgdGVzdFJ1bklkIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRDdHggKHsgdGVzdFJ1bklkLCB2YWx1ZSB9OiBTZXRDdHhBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIHJldHVybiBwcm94eS5jYWxsKHRoaXMuc2V0Q3R4LCB7IHRlc3RSdW5JZCwgdmFsdWUgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldEZpeHR1cmVDdHggKHsgdGVzdFJ1bklkLCB2YWx1ZSB9OiBTZXRDdHhBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIHJldHVybiBwcm94eS5jYWxsKHRoaXMuc2V0Rml4dHVyZUN0eCwgeyB0ZXN0UnVuSWQsIHZhbHVlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJvbGVBcHBlYXJlZCAoKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBNZXRob2RTaG91bGROb3RCZUNhbGxlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHVwZGF0ZVJvbGVQcm9wZXJ0eSAoeyByb2xlSWQsIG5hbWUsIHZhbHVlIH06IFVwZGF0ZVJvbGVQcm9wZXJ0eUFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy51cGRhdGVSb2xlUHJvcGVydHksIHsgcm9sZUlkLCBuYW1lLCB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUpzRXhwcmVzc2lvbiAoeyBleHByZXNzaW9uLCB0ZXN0UnVuSWQsIG9wdGlvbnMgfTogRXhlY3V0ZUpzRXhwcmVzc2lvbkFyZ3VtZW50cyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy5leGVjdXRlSnNFeHByZXNzaW9uLCB7IGV4cHJlc3Npb24sIHRlc3RSdW5JZCwgb3B0aW9ucyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXhlY3V0ZUFzeW5jSnNFeHByZXNzaW9uICh7IGV4cHJlc3Npb24sIHRlc3RSdW5JZCwgY2FsbHNpdGUgfTogRXhlY3V0ZUFzeW5jSnNFeHByZXNzaW9uQXJndW1lbnRzKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLmV4ZWN1dGVBc3luY0pzRXhwcmVzc2lvbiwgeyBleHByZXNzaW9uLCB0ZXN0UnVuSWQsIGNhbGxzaXRlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGVjdXRlQXNzZXJ0aW9uRm4gKHsgdGVzdFJ1bklkLCBjb21tYW5kSWQgfTogQ29tbWFuZExvY2F0b3IpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgY29uc3QgeyBwcm94eSB9ID0gYXdhaXQgdGhpcy5fZ2V0UnVudGltZSgpO1xuXG4gICAgICAgIHJldHVybiBwcm94eS5jYWxsKHRoaXMuZXhlY3V0ZUFzc2VydGlvbkZuLCB7IHRlc3RSdW5JZCwgY29tbWFuZElkIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBhZGRVbmV4cGVjdGVkRXJyb3IgKHsgdHlwZSwgbWVzc2FnZSB9OiBBZGRVbmV4cGVjdGVkRXJyb3JBcmd1bWVudHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgRXJyb3JUeXBlQ29uc3RydWN0b3IgPSB0aGlzLl9nZXRFcnJvclR5cGVDb25zdHJ1Y3Rvcih0eXBlKTtcblxuICAgICAgICBoYW5kbGVVbmV4cGVjdGVkRXJyb3IoRXJyb3JUeXBlQ29uc3RydWN0b3IsIG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjaGVja1dpbmRvdyAoeyB0ZXN0UnVuSWQsIGNvbW1hbmRJZCwgdXJsLCB0aXRsZSB9OiBDaGVja1dpbmRvd0FyZ3VtZW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHsgcHJveHkgfSA9IGF3YWl0IHRoaXMuX2dldFJ1bnRpbWUoKTtcblxuICAgICAgICByZXR1cm4gcHJveHkuY2FsbCh0aGlzLmNoZWNrV2luZG93LCB7IHRlc3RSdW5JZCwgY29tbWFuZElkLCB1cmwsIHRpdGxlIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVUZXN0UnVuRnJvbVN0YXRlICh7IHRlc3RSdW5JZCB9OiBUZXN0UnVuTG9jYXRvcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy5yZW1vdmVUZXN0UnVuRnJvbVN0YXRlLCB7IHRlc3RSdW5JZCB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVtb3ZlRml4dHVyZUN0eHNGcm9tU3RhdGUgKHsgZml4dHVyZUlkcyB9OiBSZW1vdmVGaXh0dXJlQ3R4c0FyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy5yZW1vdmVGaXh0dXJlQ3R4c0Zyb21TdGF0ZSwgeyBmaXh0dXJlSWRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVVbml0c0Zyb21TdGF0ZSAoeyBydW5uYWJsZUNvbmZpZ3VyYXRpb25JZCB9OiBSZW1vdmVVbml0c0Zyb21TdGF0ZUFyZ3VtZW50cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHByb3h5IH0gPSBhd2FpdCB0aGlzLl9nZXRSdW50aW1lKCk7XG5cbiAgICAgICAgcmV0dXJuIHByb3h5LmNhbGwodGhpcy5yZW1vdmVVbml0c0Zyb21TdGF0ZSwgeyBydW5uYWJsZUNvbmZpZ3VyYXRpb25JZCB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb21waWxlci9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kQmFzZSB9IGZyb20gJy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL2Jhc2UnO1xuXG5pbXBvcnQge1xuICAgIENvbmZpZ3VyZVJlc3BvbnNlRXZlbnQsXG4gICAgQ29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnMsXG4gICAgSW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zLFxuICAgIFJlcXVlc3RFdmVudCxcbiAgICBSZXF1ZXN0RmlsdGVyUnVsZSxcbiAgICBSZXF1ZXN0SW5mbyxcbiAgICBSZXNwb25zZUV2ZW50LFxuICAgIFJlc3BvbnNlTW9jayxcbn0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5cbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFJlcXVlc3RIb29rTWV0aG9kTmFtZXMgZnJvbSAnLi4vLi4vYXBpL3JlcXVlc3QtaG9va3MvaG9vay1tZXRob2QtbmFtZXMnO1xuaW1wb3J0IFJvbGUgZnJvbSAnLi4vLi4vcm9sZS9yb2xlJztcbmltcG9ydCB7IENhbGxzaXRlUmVjb3JkIH0gZnJvbSAnY2FsbHNpdGUtcmVjb3JkJztcbmltcG9ydCBNZXNzYWdlQnVzIGZyb20gJy4uLy4uL3V0aWxzL21lc3NhZ2UtYnVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUZXN0UnVuTG9jYXRvciB7XG4gICAgdGVzdFJ1bklkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZUNvbW1hbmRBcmd1bWVudHMge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29tbWFuZDogQ29tbWFuZEJhc2U7XG4gICAgY2FsbHNpdGU/OiBzdHJpbmcgfCBDYWxsc2l0ZVJlY29yZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMge1xuICAgIHJ1bGVzOiBSZXF1ZXN0RmlsdGVyUnVsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFJlcXVlc3RFdmVudExpc3RlbmVyc0FyZ3VtZW50cyB7XG4gICAgaG9va0lkOiBzdHJpbmc7XG4gICAgaG9va0NsYXNzTmFtZTogc3RyaW5nO1xuICAgIHJ1bGVzOiBSZXF1ZXN0RmlsdGVyUnVsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldE9wdGlvbnNBcmd1bWVudHMge1xuICAgIHZhbHVlOiBEaWN0aW9uYXJ5PE9wdGlvblZhbHVlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0SG9va0V2ZW50QXJndW1lbnRzIHtcbiAgICBuYW1lOiBSZXF1ZXN0SG9va01ldGhvZE5hbWVzO1xuICAgIHRlc3RJZDogc3RyaW5nO1xuICAgIGhvb2tJZDogc3RyaW5nO1xuICAgIGV2ZW50RGF0YTogUmVxdWVzdEV2ZW50IHwgQ29uZmlndXJlUmVzcG9uc2VFdmVudCB8IFJlc3BvbnNlRXZlbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0TW9ja0FyZ3VtZW50cyBleHRlbmRzIFJlcXVlc3RGaWx0ZXJSdWxlTG9jYXRvciB7XG4gICAgcmVzcG9uc2VFdmVudElkOiBzdHJpbmc7XG4gICAgbW9jazogUmVzcG9uc2VNb2NrO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zQXJndW1lbnRzIHtcbiAgICBldmVudElkOiBzdHJpbmc7XG4gICAgb3B0czogQ29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0SGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzIHtcbiAgICBldmVudElkOiBzdHJpbmc7XG4gICAgaGVhZGVyTmFtZTogc3RyaW5nO1xuICAgIGhlYWRlclZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzIHtcbiAgICBldmVudElkOiBzdHJpbmc7XG4gICAgaGVhZGVyTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RIb29rTG9jYXRvciB7XG4gICAgdGVzdElkOiBzdHJpbmc7XG4gICAgaG9va0lkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdEZpbHRlclJ1bGVMb2NhdG9yIGV4dGVuZHMgUmVxdWVzdEhvb2tMb2NhdG9yIHtcbiAgICBydWxlSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGVBcmd1bWVudHMgZXh0ZW5kcyBSZXF1ZXN0RmlsdGVyUnVsZUxvY2F0b3Ige1xuICAgIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlTW9ja1ByZWRpY2F0ZSBleHRlbmRzIFJlcXVlc3RGaWx0ZXJSdWxlTG9jYXRvciB7XG4gICAgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvO1xuICAgIHJlczogSW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRpYWxpemVUZXN0UnVuRGF0YUFyZ3VtZW50cyBleHRlbmRzIFRlc3RSdW5Mb2NhdG9yIHtcbiAgICB0ZXN0SWQ6IHN0cmluZztcbiAgICBicm93c2VyOiBCcm93c2VyO1xuICAgIGFjdGl2ZVdpbmRvd0lkOiBzdHJpbmcgfCBudWxsO1xuICAgIG1lc3NhZ2VCdXM/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb21waWxlci9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kQmFzZSB9IGZyb20gJy4uLy4uL3Rlc3QtcnVuL2NvbW1hbmRzL2Jhc2UnO1xuXG5pbXBvcnQge1xuICAgIENvbmZpZ3VyZVJlc3BvbnNlRXZlbnQsXG4gICAgQ29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnMsXG4gICAgSW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zLFxuICAgIFJlcXVlc3RFdmVudCxcbiAgICBSZXF1ZXN0RmlsdGVyUnVsZSxcbiAgICBSZXF1ZXN0SW5mbyxcbiAgICBSZXNwb25zZUV2ZW50LFxuICAgIFJlc3BvbnNlTW9jayxcbn0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5cbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFJlcXVlc3RIb29rTWV0aG9kTmFtZXMgZnJvbSAnLi4vLi4vYXBpL3JlcXVlc3QtaG9va3MvaG9vay1tZXRob2QtbmFtZXMnO1xuaW1wb3J0IFJvbGUgZnJvbSAnLi4vLi4vcm9sZS9yb2xlJztcbmltcG9ydCB7IENhbGxzaXRlUmVjb3JkIH0gZnJvbSAnY2FsbHNpdGUtcmVjb3JkJztcbmltcG9ydCBNZXNzYWdlQnVzIGZyb20gJy4uLy4uL3V0aWxzL21lc3NhZ2UtYnVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUZXN0UnVuTG9jYXRvciB7XG4gICAgdGVzdFJ1bklkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZUNvbW1hbmRBcmd1bWVudHMge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29tbWFuZDogQ29tbWFuZEJhc2U7XG4gICAgY2FsbHNpdGU/OiBzdHJpbmcgfCBDYWxsc2l0ZVJlY29yZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVSZXF1ZXN0RXZlbnRMaXN0ZW5lcnNBcmd1bWVudHMge1xuICAgIHJ1bGVzOiBSZXF1ZXN0RmlsdGVyUnVsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFJlcXVlc3RFdmVudExpc3RlbmVyc0FyZ3VtZW50cyB7XG4gICAgaG9va0lkOiBzdHJpbmc7XG4gICAgaG9va0NsYXNzTmFtZTogc3RyaW5nO1xuICAgIHJ1bGVzOiBSZXF1ZXN0RmlsdGVyUnVsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldE9wdGlvbnNBcmd1bWVudHMge1xuICAgIHZhbHVlOiBEaWN0aW9uYXJ5PE9wdGlvblZhbHVlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0SG9va0V2ZW50QXJndW1lbnRzIHtcbiAgICBuYW1lOiBSZXF1ZXN0SG9va01ldGhvZE5hbWVzO1xuICAgIHRlc3RJZDogc3RyaW5nO1xuICAgIGhvb2tJZDogc3RyaW5nO1xuICAgIGV2ZW50RGF0YTogUmVxdWVzdEV2ZW50IHwgQ29uZmlndXJlUmVzcG9uc2VFdmVudCB8IFJlc3BvbnNlRXZlbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0TW9ja0FyZ3VtZW50cyBleHRlbmRzIFJlcXVlc3RGaWx0ZXJSdWxlTG9jYXRvciB7XG4gICAgcmVzcG9uc2VFdmVudElkOiBzdHJpbmc7XG4gICAgbW9jazogUmVzcG9uc2VNb2NrO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldENvbmZpZ3VyZVJlc3BvbnNlRXZlbnRPcHRpb25zQXJndW1lbnRzIHtcbiAgICBldmVudElkOiBzdHJpbmc7XG4gICAgb3B0czogQ29uZmlndXJlUmVzcG9uc2VFdmVudE9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0SGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzIHtcbiAgICBldmVudElkOiBzdHJpbmc7XG4gICAgaGVhZGVyTmFtZTogc3RyaW5nO1xuICAgIGhlYWRlclZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3ZlSGVhZGVyT25Db25maWd1cmVSZXNwb25zZUV2ZW50QXJndW1lbnRzIHtcbiAgICBldmVudElkOiBzdHJpbmc7XG4gICAgaGVhZGVyTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RIb29rTG9jYXRvciB7XG4gICAgdGVzdElkOiBzdHJpbmc7XG4gICAgaG9va0lkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdEZpbHRlclJ1bGVMb2NhdG9yIGV4dGVuZHMgUmVxdWVzdEhvb2tMb2NhdG9yIHtcbiAgICBydWxlSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlUmVxdWVzdEZpbHRlclJ1bGVQcmVkaWNhdGVBcmd1bWVudHMgZXh0ZW5kcyBSZXF1ZXN0RmlsdGVyUnVsZUxvY2F0b3Ige1xuICAgIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlTW9ja1ByZWRpY2F0ZSBleHRlbmRzIFJlcXVlc3RGaWx0ZXJSdWxlTG9jYXRvciB7XG4gICAgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvO1xuICAgIHJlczogSW5jb21pbmdNZXNzYWdlTGlrZUluaXRPcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRpYWxpemVUZXN0UnVuRGF0YUFyZ3VtZW50cyBleHRlbmRzIFRlc3RSdW5Mb2NhdG9yIHtcbiAgICB0ZXN0SWQ6IHN0cmluZztcbiAgICBicm93c2VyOiBCcm93c2VyO1xuICAgIGFjdGl2ZVdpbmRvd0lkOiBzdHJpbmcgfCBudWxsO1xuICAgIG1lc3NhZ2VCdXM/OiBNZXNzYWdlQnVzO1xuICAgIGlzTmF0aXZlQXV0b21hdGlvbjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb2xlTG9jYXRvciB7XG4gICAgcm9sZUlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0Q3R4QXJndW1lbnRzIGV4dGVuZHMgVGVzdFJ1bkxvY2F0b3Ige1xuICAgIHZhbHVlOiBvYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZVJvbGVJbml0Rm5Bcmd1bWVudHMgZXh0ZW5kcyBSb2xlTG9jYXRvciB7XG4gICAgdGVzdFJ1bklkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUm9sZVByb3BlcnR5QXJndW1lbnRzIGV4dGVuZHMgUm9sZUxvY2F0b3Ige1xuICAgIG5hbWU6IGtleW9mIFJvbGU7XG4gICAgdmFsdWU6IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZUpzRXhwcmVzc2lvbk9wdGlvbnMge1xuICAgIHNraXBWaXNpYmlsaXR5Q2hlY2s6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZUpzRXhwcmVzc2lvbkFyZ3VtZW50cyBleHRlbmRzIFRlc3RSdW5Mb2NhdG9yIHtcbiAgICBleHByZXNzaW9uOiBzdHJpbmc7XG4gICAgb3B0aW9uczogRXhlY3V0ZUpzRXhwcmVzc2lvbk9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZUFzeW5jSnNFeHByZXNzaW9uQXJndW1lbnRzIGV4dGVuZHMgVGVzdFJ1bkxvY2F0b3Ige1xuICAgIGV4cHJlc3Npb246IHN0cmluZztcbiAgICBjYWxsc2l0ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kTG9jYXRvciBleHRlbmRzIFRlc3RSdW5Mb2NhdG9yIHtcbiAgICBjb21tYW5kSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRVbmV4cGVjdGVkRXJyb3JBcmd1bWVudHMge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tXaW5kb3dBcmd1bWVudCBleHRlbmRzIFRlc3RSdW5Mb2NhdG9yIHtcbiAgICBjb21tYW5kSWQ6IHN0cmluZztcbiAgICB1cmw6IFVSTDtcbiAgICB0aXRsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZUZpeHR1cmVDdHhzQXJndW1lbnRzIHtcbiAgICBmaXh0dXJlSWRzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVVbml0c0Zyb21TdGF0ZUFyZ3VtZW50cyB7XG4gICAgcnVubmFibGVDb25maWd1cmF0aW9uSWQ6IHN0cmluZztcbn1cblxuIl19
|