testcafe 1.20.2-alpha.1 → 2.0.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/request-hooks/assert-type.js +2 -2
- package/lib/api/request-hooks/hook.js +2 -2
- package/lib/api/request-hooks/request-logger.js +2 -2
- package/lib/api/skip-js-errors/index.js +62 -0
- package/lib/api/structure/base-unit.js +2 -2
- package/lib/api/structure/fixture.js +13 -13
- package/lib/api/structure/test.js +18 -17
- package/lib/api/structure/testing-unit.js +26 -16
- package/lib/api/test-controller/assertion.js +5 -5
- package/lib/api/test-controller/execution-context.js +2 -2
- package/lib/api/test-controller/index.js +33 -30
- package/lib/api/test-controller/proxy.js +2 -2
- package/lib/api/test-page-url.js +4 -4
- package/lib/api/test-run-tracker.js +2 -2
- package/lib/api/wrap-test-function.js +3 -3
- package/lib/assertions/executor.js +4 -4
- package/lib/assertions/get-fn.js +3 -3
- package/lib/browser/connection/gateway.js +18 -18
- package/lib/browser/connection/get-hints.js +8 -8
- package/lib/browser/connection/index.js +11 -11
- package/lib/browser/connection/remotes-queue.js +4 -4
- package/lib/browser/provider/built-in/dedicated/base.js +6 -6
- package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +10 -10
- package/lib/browser/provider/built-in/dedicated/chrome/config.js +17 -17
- package/lib/browser/provider/built-in/dedicated/chrome/create-temp-profile.js +4 -4
- package/lib/browser/provider/built-in/dedicated/chrome/index.js +6 -6
- package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +6 -6
- package/lib/browser/provider/built-in/dedicated/chrome/runtime-info.js +4 -4
- package/lib/browser/provider/built-in/dedicated/edge/runtime-info.js +2 -2
- package/lib/browser/provider/built-in/dedicated/firefox/config.js +8 -8
- package/lib/browser/provider/built-in/dedicated/firefox/create-temp-profile.js +3 -3
- package/lib/browser/provider/built-in/dedicated/firefox/index.js +5 -5
- package/lib/browser/provider/built-in/dedicated/firefox/local-firefox.js +2 -2
- package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +7 -7
- package/lib/browser/provider/built-in/dedicated/firefox/runtime-info.js +3 -3
- package/lib/browser/provider/built-in/path.js +2 -2
- package/lib/browser/provider/built-in/remote.js +3 -3
- package/lib/browser/provider/index.js +5 -5
- package/lib/browser/provider/plugin-host.js +5 -6
- package/lib/browser/provider/pool.js +4 -4
- package/lib/browser/provider/utils/argument-parsing.js +3 -3
- package/lib/browser/provider/utils/browser-starter.js +2 -2
- package/lib/cli/argument-parser/index.js +52 -41
- package/lib/cli/argument-parser/parse-utils.js +2 -2
- package/lib/cli/authentication-helper.js +3 -3
- package/lib/cli/cli.js +8 -8
- package/lib/cli/correct-browsers-and-sources.js +2 -2
- package/lib/cli/index.js +2 -2
- package/lib/cli/log.js +3 -3
- package/lib/cli/remotes-wizard.js +3 -3
- package/lib/client/automation/index.js +120 -34
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/browser/idle-page/index.js +321 -317
- package/lib/client/browser/service-worker.js +244 -290
- package/lib/client/core/deps/hammerhead.js +12 -4
- package/lib/client/core/index.js +145 -55
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/core/utils/dom.js +33 -28
- package/lib/client/core/utils/position.js +18 -14
- package/lib/client/core/utils/style.js +8 -4
- package/lib/client/driver/command-executors/client-functions/selector-executor/filter.js +5 -5
- package/lib/client/driver/command-executors/client-functions/selector-executor/utils.js +3 -3
- package/lib/client/driver/deps/hammerhead.js +12 -4
- package/lib/client/driver/deps/testcafe-core.js +12 -4
- package/lib/client/driver/deps/testcafe-ui.js +12 -4
- package/lib/client/driver/index.js +654 -630
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/driver/status.js +2 -2
- package/lib/client/ui/index.js +10 -8
- package/lib/client/ui/index.min.js +1 -1
- package/lib/client-functions/builder-symbol.js +1 -2
- package/lib/client-functions/client-function-builder.js +12 -12
- package/lib/client-functions/replicator.js +2 -2
- package/lib/client-functions/selector-api-execution-mode.js +2 -2
- package/lib/client-functions/selectors/add-api.js +48 -48
- package/lib/client-functions/selectors/selector-builder.js +17 -17
- package/lib/compiler/compile-client-function.js +6 -6
- package/lib/compiler/index.js +9 -9
- package/lib/compiler/test-file/api-based.js +8 -8
- package/lib/compiler/test-file/base.js +6 -6
- package/lib/compiler/test-file/exportble-lib-path.js +2 -2
- package/lib/compiler/test-file/formats/coffeescript/compiler.js +2 -2
- package/lib/compiler/test-file/formats/coffeescript/get-test-list.js +2 -2
- package/lib/compiler/test-file/formats/es-next/compiler.js +4 -4
- package/lib/compiler/test-file/formats/es-next/get-test-list.js +4 -4
- package/lib/compiler/test-file/formats/raw.js +2 -2
- package/lib/compiler/test-file/formats/typescript/compiler.js +11 -11
- package/lib/compiler/test-file/formats/typescript/get-test-list.js +3 -3
- package/lib/compiler/test-file/test-file-parser-base.js +3 -3
- package/lib/configuration/configuration-base.js +15 -15
- package/lib/configuration/interfaces.js +1 -1
- package/lib/configuration/skip-js-errors-option-names.js +11 -0
- package/lib/configuration/testcafe-configuration.js +21 -16
- package/lib/configuration/types.js +1 -1
- package/lib/configuration/typescript-configuration.js +4 -4
- package/lib/custom-client-scripts/assert-type.js +2 -2
- package/lib/custom-client-scripts/client-script.js +6 -6
- package/lib/custom-client-scripts/get-code.js +2 -2
- package/lib/custom-client-scripts/routing.js +3 -3
- package/lib/custom-client-scripts/utils.js +3 -3
- package/lib/dashboard/connector.js +4 -4
- package/lib/dashboard/get-default-project-link.js +2 -2
- package/lib/dashboard/index.js +26 -26
- package/lib/errors/create-stack-filter.js +2 -2
- package/lib/errors/error-list.js +2 -2
- package/lib/errors/get-callsite.js +2 -2
- package/lib/errors/is-internal-stack-frame.js +5 -5
- package/lib/errors/process-test-fn-error.js +2 -2
- package/lib/errors/runtime/index.js +10 -10
- package/lib/errors/runtime/templates.js +5 -2
- package/lib/errors/runtime/type-assertions.js +6 -6
- package/lib/errors/stack-cleaning-hook.js +2 -2
- package/lib/errors/test-run/formattable-adapter.js +7 -7
- package/lib/errors/test-run/index.js +25 -5
- package/lib/errors/test-run/render-error-template/index.js +6 -6
- package/lib/errors/test-run/render-error-template/utils.js +2 -2
- package/lib/errors/test-run/templates.js +40 -31
- package/lib/errors/test-run/utils.js +7 -7
- package/lib/errors/types.js +5 -1
- package/lib/index.js +1 -1
- package/lib/live/file-watcher/index.js +2 -2
- package/lib/live/keyboard-observer.js +3 -3
- package/lib/live/test-run-controller.js +3 -3
- package/lib/live/test-run.js +3 -2
- package/lib/live/test-runner.js +2 -2
- package/lib/load-assets.js +2 -2
- package/lib/notifications/add-rendered-warning.js +4 -4
- package/lib/notifications/debug-logger.js +6 -6
- package/lib/notifications/deprecated.js +2 -2
- package/lib/notifications/information-message.js +4 -3
- package/lib/proxyless/resource-injector.js +4 -4
- package/lib/reporter/command/command-formatter.js +4 -4
- package/lib/reporter/index.js +10 -10
- package/lib/reporter/plugin-host.js +7 -7
- package/lib/role/index.js +8 -8
- package/lib/role/role.js +2 -2
- package/lib/runner/bootstrapper.js +20 -20
- package/lib/runner/browser-job.js +3 -3
- package/lib/runner/browser-set.js +12 -12
- package/lib/runner/fixture-hook-controller.js +5 -5
- package/lib/runner/index.js +43 -33
- package/lib/runner/task/index.js +10 -6
- package/lib/runner/test-run-hook-controller.js +5 -5
- package/lib/runner/tested-app.js +7 -7
- package/lib/screenshots/capturer.js +17 -17
- package/lib/screenshots/crop.js +8 -8
- package/lib/screenshots/index.js +6 -10
- package/lib/screenshots/utils.js +4 -4
- package/lib/services/compiler/host.js +8 -8
- package/lib/services/compiler/service.js +13 -13
- package/lib/services/compiler/test-run-proxy.js +8 -8
- package/lib/services/serialization/replicator/transforms/callsite-record-transform.js +2 -2
- package/lib/services/serialization/replicator/transforms/command-base-trasform/command-constructors.js +2 -1
- package/lib/services/serialization/replicator/transforms/command-base-trasform/index.js +3 -3
- package/lib/services/serialization/replicator/transforms/raw-command-callsite-record-transform.js +2 -2
- package/lib/services/serialization/test-structure.js +4 -4
- package/lib/services/utils/ipc/interfaces.js +1 -3
- package/lib/services/utils/ipc/io.js +3 -3
- package/lib/services/utils/ipc/message.js +2 -2
- package/lib/services/utils/ipc/proxy.js +4 -4
- package/lib/services/utils/ipc/transport.js +2 -2
- package/lib/shared/errors/index.js +9 -2
- package/lib/shared/errors/selector-error-ctor-callback.js +7 -3
- package/lib/test-run/bookmark.js +1 -1
- package/lib/test-run/browser-manipulation-queue.js +3 -3
- package/lib/test-run/commands/actions.js +66 -46
- package/lib/test-run/commands/assertion.js +3 -3
- package/lib/test-run/commands/base.js +2 -2
- package/lib/test-run/commands/browser-manipulation.js +8 -8
- package/lib/test-run/commands/observation.js +4 -4
- package/lib/test-run/commands/options.js +27 -12
- package/lib/test-run/commands/type.js +2 -1
- package/lib/test-run/commands/utils.js +3 -2
- package/lib/test-run/commands/validations/argument.js +19 -10
- package/lib/test-run/commands/validations/factories.js +10 -2
- package/lib/test-run/commands/validations/initializers.js +4 -4
- package/lib/test-run/debug-log.js +4 -4
- package/lib/test-run/execute-js-expression/index.js +4 -4
- package/lib/test-run/index.js +48 -41
- package/lib/test-run/request/create-request-options.js +9 -9
- package/lib/test-run/request/process-response-data.js +2 -2
- package/lib/test-run/request/send.js +5 -5
- package/lib/testcafe.js +8 -4
- package/lib/utils/check-file-path.js +2 -2
- package/lib/utils/check-url.js +2 -2
- package/lib/utils/correct-file-path.js +4 -4
- package/lib/utils/delegated-api.js +1 -1
- package/lib/utils/detect-ffmpeg.js +3 -3
- package/lib/utils/diff/colors.js +2 -2
- package/lib/utils/diff/index.js +11 -7
- package/lib/utils/diff/util.js +5 -5
- package/lib/utils/diff.js +4 -4
- package/lib/utils/escape-user-agent.js +2 -2
- package/lib/utils/execute-fn-with-timeout.js +2 -2
- package/lib/utils/get-browser.js +2 -2
- package/lib/utils/get-filter-fn.js +4 -4
- package/lib/utils/get-options/base.js +2 -2
- package/lib/utils/get-options/compiler.js +2 -2
- package/lib/utils/get-options/dashboard.js +2 -2
- package/lib/utils/get-options/get-assertion-timeout.js +1 -1
- package/lib/utils/get-options/index.js +4 -2
- package/lib/utils/get-options/meta.js +2 -2
- package/lib/utils/get-options/quarantine.js +8 -6
- package/lib/utils/get-options/screenshot.js +2 -2
- package/lib/utils/get-options/skip-js-errors.js +35 -0
- package/lib/utils/get-options/ssl.js +6 -6
- package/lib/utils/get-options/video.js +2 -2
- package/lib/utils/is-password-input.js +1 -1
- package/lib/utils/log-entry.js +2 -2
- package/lib/utils/make-reg-exp.js +19 -6
- package/lib/utils/moment-loader.js +2 -2
- package/lib/utils/parse-file-list.js +7 -7
- package/lib/utils/path-pattern.js +4 -4
- package/lib/utils/prepare-reporters.js +2 -2
- package/lib/utils/prerender-callsite.js +6 -6
- package/lib/utils/process.js +7 -7
- package/lib/utils/promisified-functions.js +14 -14
- package/lib/utils/raw-command-callsite-record.js +2 -2
- package/lib/utils/resolve-path-relatively-cwd.js +2 -2
- package/lib/utils/string.js +3 -3
- package/lib/utils/temp-directory/cleanup-process/index.js +6 -6
- package/lib/utils/temp-directory/cleanup-process/worker.js +4 -4
- package/lib/utils/temp-directory/index.js +6 -6
- package/lib/utils/temp-directory/lockfile.js +2 -2
- package/lib/video-recorder/process.js +6 -6
- package/lib/video-recorder/recorder.js +9 -9
- package/lib/video-recorder/test-run-video-recorder.js +2 -2
- package/package.json +8 -7
- package/ts-defs/index.d.ts +46 -7
- package/ts-defs/selectors.d.ts +39 -0
- package/ts-defs/testcafe-scripts.d.ts +39 -0
|
@@ -16,7 +16,7 @@ const guard_time_execution_1 = __importDefault(require("../../../../../../utils/
|
|
|
16
16
|
const delay_1 = __importDefault(require("../../../../../../utils/delay"));
|
|
17
17
|
const DEBUG_SCOPE = (id) => `testcafe:browser:provider:built-in:chrome:browser-client:${id}`;
|
|
18
18
|
const DOWNLOADS_DIR = path_1.default.join(os_1.default.homedir(), 'Downloads');
|
|
19
|
-
const debugLog = debug_1.default('testcafe:browser:provider:built-in:dedicated:chrome');
|
|
19
|
+
const debugLog = (0, debug_1.default)('testcafe:browser:provider:built-in:dedicated:chrome');
|
|
20
20
|
class ProtocolApiInfo {
|
|
21
21
|
constructor(client) {
|
|
22
22
|
this.client = client;
|
|
@@ -32,7 +32,7 @@ class BrowserClient {
|
|
|
32
32
|
this._clients = {};
|
|
33
33
|
this._screencastFrameListenerAttached = false;
|
|
34
34
|
this._runtimeInfo = runtimeInfo;
|
|
35
|
-
this.debugLogger = debug_1.default(DEBUG_SCOPE(runtimeInfo.browserId));
|
|
35
|
+
this.debugLogger = (0, debug_1.default)(DEBUG_SCOPE(runtimeInfo.browserId));
|
|
36
36
|
runtimeInfo.browserClient = this;
|
|
37
37
|
this._videoFramesBuffer = [];
|
|
38
38
|
this._lastFrame = null;
|
|
@@ -54,7 +54,7 @@ class BrowserClient {
|
|
|
54
54
|
return tabs[0];
|
|
55
55
|
}
|
|
56
56
|
_checkDropOfPerformance(method, elapsedTime) {
|
|
57
|
-
this.debugLogger(`CDP method '${method}' took ${pretty_hrtime_1.default(elapsedTime)}`);
|
|
57
|
+
this.debugLogger(`CDP method '${method}' took ${(0, pretty_hrtime_1.default)(elapsedTime)}`);
|
|
58
58
|
const [elapsedSeconds] = elapsedTime;
|
|
59
59
|
if (elapsedSeconds > elapsed_upperbounds_1.ELAPSED_TIME_UPPERBOUNDS[method]) {
|
|
60
60
|
this._runtimeInfo.providerMethods.reportWarning(warning_message_1.default.browserProviderDropOfPerformance, this._runtimeInfo.browserName);
|
|
@@ -62,10 +62,10 @@ class BrowserClient {
|
|
|
62
62
|
}
|
|
63
63
|
async _createClient() {
|
|
64
64
|
const target = await this._getActiveTab();
|
|
65
|
-
const client = await chrome_remote_interface_1.default({ target, port: this._runtimeInfo.cdpPort });
|
|
65
|
+
const client = await (0, chrome_remote_interface_1.default)({ target, port: this._runtimeInfo.cdpPort });
|
|
66
66
|
const { Page, Network, Runtime } = client;
|
|
67
67
|
this._clients[this._clientKey] = new ProtocolApiInfo(client);
|
|
68
|
-
await guard_time_execution_1.default(async () => await Page.enable(), elapsedTime => this._checkDropOfPerformance(elapsed_upperbounds_1.CheckedCDPMethod.PageEnable, elapsedTime));
|
|
68
|
+
await (0, guard_time_execution_1.default)(async () => await Page.enable(), elapsedTime => this._checkDropOfPerformance(elapsed_upperbounds_1.CheckedCDPMethod.PageEnable, elapsedTime));
|
|
69
69
|
await Network.enable({});
|
|
70
70
|
await Runtime.enable();
|
|
71
71
|
return client;
|
|
@@ -77,7 +77,7 @@ class BrowserClient {
|
|
|
77
77
|
await this._setupDownloads(client);
|
|
78
78
|
}
|
|
79
79
|
async _setDeviceMetricsOverride(client, width, height, deviceScaleFactor, mobile) {
|
|
80
|
-
await guard_time_execution_1.default(async () => {
|
|
80
|
+
await (0, guard_time_execution_1.default)(async () => {
|
|
81
81
|
await client.Emulation.setDeviceMetricsOverride({
|
|
82
82
|
width,
|
|
83
83
|
height,
|
|
@@ -143,7 +143,7 @@ class BrowserClient {
|
|
|
143
143
|
const client = await this.getActiveClient();
|
|
144
144
|
if (client && config.emulation) {
|
|
145
145
|
await this._setDeviceMetricsOverride(client, viewportSize.width, viewportSize.height, emulatedDevicePixelRatio, config.mobile);
|
|
146
|
-
await guard_time_execution_1.default(async () => {
|
|
146
|
+
await (0, guard_time_execution_1.default)(async () => {
|
|
147
147
|
await client.Emulation.setVisibleSize({ width: viewportSize.width, height: viewportSize.height });
|
|
148
148
|
}, elapsedTime => this._checkDropOfPerformance(elapsed_upperbounds_1.CheckedCDPMethod.SetVisibleSize, elapsedTime));
|
|
149
149
|
}
|
|
@@ -195,7 +195,7 @@ class BrowserClient {
|
|
|
195
195
|
const client = await this.getActiveClient();
|
|
196
196
|
if (!client) {
|
|
197
197
|
// NOTE: required for https://github.com/DevExpress/testcafe/issues/6037
|
|
198
|
-
await delay_1.default(0);
|
|
198
|
+
await (0, delay_1.default)(0);
|
|
199
199
|
return Buffer.alloc(0);
|
|
200
200
|
}
|
|
201
201
|
if (fullPage) {
|
|
@@ -230,7 +230,7 @@ class BrowserClient {
|
|
|
230
230
|
async closeBrowserChildWindow() {
|
|
231
231
|
await this.setClientInactive();
|
|
232
232
|
// NOTE: delay browser window closing
|
|
233
|
-
await delay_1.default(100);
|
|
233
|
+
await (0, delay_1.default)(100);
|
|
234
234
|
}
|
|
235
235
|
async startCapturingVideo() {
|
|
236
236
|
const client = await this.getActiveClient();
|
|
@@ -269,4 +269,4 @@ class BrowserClient {
|
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
271
|
exports.BrowserClient = BrowserClient;
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvY2hyb21lL2NkcC1jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsZ0RBQXdCO0FBQ3hCLDRDQUFvQjtBQUNwQixzRkFBbUQ7QUFDbkQsa0RBQTBCO0FBQzFCLHlFQUF1RjtBQUN2RixzR0FBOEU7QUFROUUsa0VBQXVDO0FBQ3ZDLGdFQUFvRjtBQUNwRix3R0FBOEU7QUFDOUUsMEVBQWtEO0FBS2xELE1BQU0sV0FBVyxHQUFHLENBQUMsRUFBVSxFQUFVLEVBQUUsQ0FBQyw0REFBNEQsRUFBRSxFQUFFLENBQUM7QUFDN0csTUFBTSxhQUFhLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxZQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFM0QsTUFBTSxRQUFRLEdBQUcsZUFBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7QUFFOUUsTUFBTSxlQUFlO0lBSWpCLFlBQW9CLE1BQWdDO1FBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUssTUFBTSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7Q0FDSjtBQUVELE1BQU0sa0JBQWtCLEdBQUc7SUFDdkIsTUFBTSxFQUFTLE1BQU07SUFDckIsYUFBYSxFQUFFLENBQUM7Q0FDbkIsQ0FBQztBQU9GLE1BQWEsYUFBYTtJQVN0QixZQUFvQixXQUF3QjtRQVJwQyxhQUFRLEdBQWdDLEVBQUUsQ0FBQztRQU0zQyxxQ0FBZ0MsR0FBRyxLQUFLLENBQUM7UUFHN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBSSxlQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFD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b25hcnkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFByb3RvY29sIGZyb20gJ2RldnRvb2xzLXByb3RvY29sJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCByZW1vdGVDaHJvbWUgZnJvbSAnY2hyb21lLXJlbW90ZS1pbnRlcmZhY2UnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IEdFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NsaWVudC1mdW5jdGlvbnMnO1xuaW1wb3J0IFdBUk5JTkdfTUVTU0FHRSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbWVzc2FnZSc7XG5cbmltcG9ydCB7XG4gICAgQ29uZmlnLFxuICAgIFJ1bnRpbWVJbmZvLFxuICAgIFRvdWNoQ29uZmlnT3B0aW9ucyxcbiAgICBTaXplLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCBwcmV0dHlUaW1lIGZyb20gJ3ByZXR0eS1ocnRpbWUnO1xuaW1wb3J0IHsgQ2hlY2tlZENEUE1ldGhvZCwgRUxBUFNFRF9USU1FX1VQUEVSQk9VTkRTIH0gZnJvbSAnLi4vZWxhcHNlZC11cHBlcmJvdW5kcyc7XG5pbXBvcnQgZ3VhcmRUaW1lRXhlY3V0aW9uIGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3V0aWxzL2d1YXJkLXRpbWUtZXhlY3V0aW9uJztcbmltcG9ydCBkZWxheSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi91dGlscy9kZWxheSc7XG5cbmltcG9ydCBTdGFydFNjcmVlbmNhc3RSZXF1ZXN0ID0gUHJvdG9jb2wuUGFnZS5TdGFydFNjcmVlbmNhc3RSZXF1ZXN0O1xuaW1wb3J0IFNjcmVlbmNhc3RGcmFtZUV2ZW50ID0gUHJvdG9jb2wuUGFnZS5TY3JlZW5jYXN0RnJhbWVFdmVudDtcblxuY29uc3QgREVCVUdfU0NPUEUgPSAoaWQ6IHN0cmluZyk6IHN0cmluZyA9PiBgdGVzdGNhZmU6YnJvd3Nlcjpwcm92aWRlcjpidWlsdC1pbjpjaHJvbWU6YnJvd3Nlci1jbGllbnQ6JHtpZH1gO1xuY29uc3QgRE9XTkxPQURTX0RJUiA9IHBhdGguam9pbihvcy5ob21lZGlyKCksICdEb3dubG9hZHMnKTtcblxuY29uc3QgZGVidWdMb2cgPSBkZWJ1ZygndGVzdGNhZmU6YnJvd3Nlcjpwcm92aWRlcjpidWlsdC1pbjpkZWRpY2F0ZWQ6Y2hyb21lJyk7XG5cbmNsYXNzIFByb3RvY29sQXBpSW5mbyB7XG4gICAgcHVibGljIGluYWN0aXZlOiBib29sZWFuO1xuICAgIHB1YmxpYyBjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpIHtcbiAgICAgICAgdGhpcy5jbGllbnQgICA9IGNsaWVudDtcbiAgICAgICAgdGhpcy5pbmFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbn1cblxuY29uc3QgU0NSRUVOQ0FTVF9PUFRJT05TID0ge1xuICAgIGZvcm1hdDogICAgICAgICdqcGVnJyxcbiAgICBldmVyeU50aEZyYW1lOiAxLFxufTtcblxuaW50ZXJmYWNlIFZpZGVvRnJhbWVEYXRhIHtcbiAgICBkYXRhOiBzdHJpbmc7XG4gICAgc2Vzc2lvbklkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBCcm93c2VyQ2xpZW50IHtcbiAgICBwcml2YXRlIF9jbGllbnRzOiBEaWN0aW9uYXJ5PFByb3RvY29sQXBpSW5mbz4gPSB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydW50aW1lSW5mbzogUnVudGltZUluZm87XG4gICAgcHJpdmF0ZSBfcGFyZW50VGFyZ2V0PzogcmVtb3RlQ2hyb21lLlRhcmdldEluZm87XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJ1Z0xvZ2dlcjogZGVidWcuRGVidWdnZXI7XG4gICAgcHJpdmF0ZSBfdmlkZW9GcmFtZXNCdWZmZXI6IFZpZGVvRnJhbWVEYXRhW107XG4gICAgcHJpdmF0ZSBfbGFzdEZyYW1lOiBWaWRlb0ZyYW1lRGF0YSB8IG51bGw7XG4gICAgcHJpdmF0ZSBfc2NyZWVuY2FzdEZyYW1lTGlzdGVuZXJBdHRhY2hlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChydW50aW1lSW5mbzogUnVudGltZUluZm8pIHtcbiAgICAgICAgdGhpcy5fcnVudGltZUluZm8gPSBydW50aW1lSW5mbztcbiAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dlciAgPSBkZWJ1ZyhERUJVR19TQ09QRShydW50aW1lSW5mby5icm93c2VySWQpKTtcblxuICAgICAgICBydW50aW1lSW5mby5icm93c2VyQ2xpZW50ID0gdGhpcztcblxuICAgICAgICB0aGlzLl92aWRlb0ZyYW1lc0J1ZmZlciA9IFtdO1xuICAgICAgICB0aGlzLl9sYXN0RnJhbWUgICAgICAgICA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgX2NsaWVudEtleSAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVJbmZvLmFjdGl2ZVdpbmRvd0lkIHx8IHRoaXMuX3J1bnRpbWVJbmZvLmJyb3dzZXJJZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBfY29uZmlnICgpOiBDb25maWcge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVudGltZUluZm8uY29uZmlnO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2dldFRhYnMgKCk6IFByb21pc2U8cmVtb3RlQ2hyb21lLlRhcmdldEluZm9bXT4ge1xuICAgICAgICBjb25zdCB0YWJzID0gYXdhaXQgcmVtb3RlQ2hyb21lLkxpc3QoeyBwb3J0OiB0aGlzLl9ydW50aW1lSW5mby5jZHBQb3J0IH0pO1xuXG4gICAgICAgIHJldHVybiB0YWJzLmZpbHRlcih0ID0+IHQudHlwZSA9PT0gJ3BhZ2UnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9nZXRBY3RpdmVUYWIgKCk6IFByb21pc2U8cmVtb3RlQ2hyb21lLlRhcmdldEluZm8+IHtcbiAgICAgICAgbGV0IHRhYnMgPSBhd2FpdCB0aGlzLl9nZXRUYWJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3J1bnRpbWVJbmZvLmFjdGl2ZVdpbmRvd0lkKVxuICAgICAgICAgICAgdGFicyA9IHRhYnMuZmlsdGVyKHQgPT4gdC50aXRsZS5pbmNsdWRlcyh0aGlzLl9ydW50aW1lSW5mby5hY3RpdmVXaW5kb3dJZCkpO1xuXG4gICAgICAgIHJldHVybiB0YWJzWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NoZWNrRHJvcE9mUGVyZm9ybWFuY2UgKG1ldGhvZDogQ2hlY2tlZENEUE1ldGhvZCwgZWxhcHNlZFRpbWU6IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dlcihgQ0RQIG1ldGhvZCAnJHttZXRob2R9JyB0b29rICR7cHJldHR5VGltZShlbGFwc2VkVGltZSl9YCk7XG5cbiAgICAgICAgY29uc3QgWyBlbGFwc2VkU2Vjb25kcyBdID0gZWxhcHNlZFRpbWU7XG5cbiAgICAgICAgaWYgKGVsYXBzZWRTZWNvbmRzID4gRUxBUFNFRF9USU1FX1VQUEVSQk9VTkRTW21ldGhvZF0pIHtcbiAgICAgICAgICAgIHRoaXMuX3J1bnRpbWVJbmZvLnByb3ZpZGVyTWV0aG9kcy5yZXBvcnRXYXJuaW5nKFxuICAgICAgICAgICAgICAgIFdBUk5JTkdfTUVTU0FHRS5icm93c2VyUHJvdmlkZXJEcm9wT2ZQZXJmb3JtYW5jZSxcbiAgICAgICAgICAgICAgICB0aGlzLl9ydW50aW1lSW5mby5icm93c2VyTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2NyZWF0ZUNsaWVudCAoKTogUHJvbWlzZTxyZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGk+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ICAgICAgICAgICAgICAgICAgICAgPSBhd2FpdCB0aGlzLl9nZXRBY3RpdmVUYWIoKTtcbiAgICAgICAgY29uc3QgY2xpZW50ICAgICAgICAgICAgICAgICAgICAgPSBhd2FpdCByZW1vdGVDaHJvbWUoeyB0YXJnZXQsIHBvcnQ6IHRoaXMuX3J1bnRpbWVJbmZvLmNkcFBvcnQgfSk7XG4gICAgICAgIGNvbnN0IHsgUGFnZSwgTmV0d29yaywgUnVudGltZSB9ID0gY2xpZW50O1xuXG4gICAgICAgIHRoaXMuX2NsaWVudHNbdGhpcy5fY2xpZW50S2V5XSA9IG5ldyBQcm90b2NvbEFwaUluZm8oY2xpZW50KTtcblxuICAgICAgICBhd2FpdCBndWFyZFRpbWVFeGVjdXRpb24oXG4gICAgICAgICAgICBhc3luYyAoKSA9PiBhd2FpdCBQYWdlLmVuYWJsZSgpLFxuICAgICAgICAgICAgZWxhcHNlZFRpbWUgPT4gdGhpcy5fY2hlY2tEcm9wT2ZQZXJmb3JtYW5jZShDaGVja2VkQ0RQTWV0aG9kLlBhZ2VFbmFibGUsIGVsYXBzZWRUaW1lKVxuICAgICAgICApO1xuXG4gICAgICAgIGF3YWl0IE5ldHdvcmsuZW5hYmxlKHt9KTtcbiAgICAgICAgYXdhaXQgUnVudGltZS5lbmFibGUoKTtcblxuICAgICAgICByZXR1cm4gY2xpZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwQ2xpZW50IChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fY29uZmlnLmVtdWxhdGlvbilcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldEVtdWxhdGlvbihjbGllbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLl9jb25maWcuaGVhZGxlc3MpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXR1cERvd25sb2FkcyhjbGllbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldERldmljZU1ldHJpY3NPdmVycmlkZSAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGksIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBkZXZpY2VTY2FsZUZhY3RvcjogbnVtYmVyLCBtb2JpbGU6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgZ3VhcmRUaW1lRXhlY3V0aW9uKFxuICAgICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5FbXVsYXRpb24uc2V0RGV2aWNlTWV0cmljc092ZXJyaWRlKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIG1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBmaXRXaW5kb3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVsYXBzZWRUaW1lID0+IHRoaXMuX2NoZWNrRHJvcE9mUGVyZm9ybWFuY2UoQ2hlY2tlZENEUE1ldGhvZC5TZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUsIGVsYXBzZWRUaW1lKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldFVzZXJBZ2VudEVtdWxhdGlvbiAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy51c2VyQWdlbnQgPT09IHZvaWQgMClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhd2FpdCBjbGllbnQuTmV0d29yay5zZXRVc2VyQWdlbnRPdmVycmlkZSh7IHVzZXJBZ2VudDogdGhpcy5fY29uZmlnLnVzZXJBZ2VudCB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRUb3VjaEVtdWxhdGlvbiAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy50b3VjaCA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHRvdWNoQ29uZmlnOiBUb3VjaENvbmZpZ09wdGlvbnMgPSB7XG4gICAgICAgICAgICBlbmFibGVkOiAgICAgICAgdGhpcy5fY29uZmlnLnRvdWNoLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogIHRoaXMuX2NvbmZpZy5tb2JpbGUgPyAnbW9iaWxlJyA6ICdkZXNrdG9wJyxcbiAgICAgICAgICAgIG1heFRvdWNoUG9pbnRzOiAxLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChjbGllbnQuRW11bGF0aW9uLnNldEVtaXRUb3VjaEV2ZW50c0Zvck1vdXNlKVxuICAgICAgICAgICAgYXdhaXQgY2xpZW50LkVtdWxhdGlvbi5zZXRFbWl0VG91Y2hFdmVudHNGb3JNb3VzZSh0b3VjaENvbmZpZyk7XG5cbiAgICAgICAgaWYgKGNsaWVudC5FbXVsYXRpb24uc2V0VG91Y2hFbXVsYXRpb25FbmFibGVkKVxuICAgICAgICAgICAgYXdhaXQgY2xpZW50LkVtdWxhdGlvbi5zZXRUb3VjaEVtdWxhdGlvbkVuYWJsZWQodG91Y2hDb25maWcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldEVtdWxhdGlvbiAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fc2V0VXNlckFnZW50RW11bGF0aW9uKGNsaWVudCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3NldFRvdWNoRW11bGF0aW9uKGNsaWVudCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5yZXNpemVXaW5kb3coe1xuICAgICAgICAgICAgd2lkdGg6ICB0aGlzLl9jb25maWcud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuX2NvbmZpZy5oZWlnaHQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwRG93bmxvYWRzIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBjbGllbnQuUGFnZS5zZXREb3dubG9hZEJlaGF2aW9yKHtcbiAgICAgICAgICAgIGJlaGF2aW9yOiAgICAgJ2FsbG93JyxcbiAgICAgICAgICAgIGRvd25sb2FkUGF0aDogRE9XTkxPQURTX0RJUixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZXZhbHVhdGVSdW50aW1lIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSwgZXhwcmVzc2lvbjogc3RyaW5nLCByZXR1cm5CeVZhbHVlID0gZmFsc2UpOiBQcm9taXNlPFByb3RvY29sLlJ1bnRpbWUuRXZhbHVhdGVSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gY2xpZW50LlJ1bnRpbWUuZXZhbHVhdGUoeyBleHByZXNzaW9uLCByZXR1cm5CeVZhbHVlIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2NhbGN1bGF0ZUVtdWxhdGVkRGV2aWNlUGl4ZWxSYXRpbyAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFjbGllbnQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZGV2aWNlUGl4ZWxSYXRpb1F1ZXJ5UmVzdWx0ID0gYXdhaXQgY2xpZW50LlJ1bnRpbWUuZXZhbHVhdGUoeyBleHByZXNzaW9uOiAnd2luZG93LmRldmljZVBpeGVsUmF0aW8nIH0pO1xuXG4gICAgICAgIHRoaXMuX3J1bnRpbWVJbmZvLm9yaWdpbmFsRGV2aWNlUGl4ZWxSYXRpbyA9IGRldmljZVBpeGVsUmF0aW9RdWVyeVJlc3VsdC5yZXN1bHQudmFsdWU7XG4gICAgICAgIHRoaXMuX3J1bnRpbWVJbmZvLmVtdWxhdGVkRGV2aWNlUGl4ZWxSYXRpbyA9IHRoaXMuX2NvbmZpZy5zY2FsZUZhY3RvciB8fCB0aGlzLl9ydW50aW1lSW5mby5vcmlnaW5hbERldmljZVBpeGVsUmF0aW87XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc2l6ZVdpbmRvdyAobmV3RGltZW5zaW9uczogU2l6ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGJyb3dzZXJJZCwgY29uZmlnLCB2aWV3cG9ydFNpemUsIHByb3ZpZGVyTWV0aG9kcywgZW11bGF0ZWREZXZpY2VQaXhlbFJhdGlvIH0gPSB0aGlzLl9ydW50aW1lSW5mbztcblxuICAgICAgICBjb25zdCBjdXJyZW50V2lkdGggPSB2aWV3cG9ydFNpemUud2lkdGg7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSB2aWV3cG9ydFNpemUuaGVpZ2h0O1xuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IG5ld0RpbWVuc2lvbnMud2lkdGggfHwgY3VycmVudFdpZHRoO1xuICAgICAgICBjb25zdCBuZXdIZWlnaHQgPSBuZXdEaW1lbnNpb25zLmhlaWdodCB8fCBjdXJyZW50SGVpZ2h0O1xuXG4gICAgICAgIGlmICghY29uZmlnLmhlYWRsZXNzKVxuICAgICAgICAgICAgYXdhaXQgcHJvdmlkZXJNZXRob2RzLnJlc2l6ZUxvY2FsQnJvd3NlcldpbmRvdyhicm93c2VySWQsIG5ld1dpZHRoLCBuZXdIZWlnaHQsIGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCk7XG5cbiAgICAgICAgdmlld3BvcnRTaXplLndpZHRoID0gbmV3V2lkdGg7XG4gICAgICAgIHZpZXdwb3J0U2l6ZS5oZWlnaHQgPSBuZXdIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVDbGllbnQoKTtcblxuICAgICAgICBpZiAoY2xpZW50ICYmIGNvbmZpZy5lbXVsYXRpb24pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldERldmljZU1ldHJpY3NPdmVycmlkZShjbGllbnQsIHZpZXdwb3J0U2l6ZS53aWR0aCwgdmlld3BvcnRTaXplLmhlaWdodCwgZW11bGF0ZWREZXZpY2VQaXhlbFJhdGlvLCBjb25maWcubW9iaWxlKTtcblxuICAgICAgICAgICAgYXdhaXQgZ3VhcmRUaW1lRXhlY3V0aW9uKFxuICAgICAgICAgICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LkVtdWxhdGlvbi5zZXRWaXNpYmxlU2l6ZSh7IHdpZHRoOiB2aWV3cG9ydFNpemUud2lkdGgsIGhlaWdodDogdmlld3BvcnRTaXplLmhlaWdodCB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lID0+IHRoaXMuX2NoZWNrRHJvcE9mUGVyZm9ybWFuY2UoQ2hlY2tlZENEUE1ldGhvZC5TZXRWaXNpYmxlU2l6ZSwgZWxhcHNlZFRpbWUpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGVhZGxlc3NUYWIgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9wYXJlbnRUYXJnZXQgJiYgdGhpcy5fY29uZmlnLmhlYWRsZXNzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRDbGllbnRJbmFjdGl2ZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIE5PVEU6IGVuc3VyZSBjbGllbnQgZXhpc3RzXG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gdGhpcy5fY2xpZW50c1t0aGlzLl9jbGllbnRLZXldO1xuXG4gICAgICAgIGlmIChjbGllbnQpXG4gICAgICAgICAgICBjbGllbnQuaW5hY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBY3RpdmVDbGllbnQgKCk6IFByb21pc2U8cmVtb3RlQ2hyb21lLlByb3RvY29sQXBpIHwgdm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9jbGllbnRzW3RoaXMuX2NsaWVudEtleV0pXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fY3JlYXRlQ2xpZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgZGVidWdMb2coZXJyKTtcblxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLl9jbGllbnRzW3RoaXMuX2NsaWVudEtleV07XG5cbiAgICAgICAgaWYgKGluZm8uaW5hY3RpdmUpXG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuXG4gICAgICAgIHJldHVybiBpbmZvLmNsaWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB0YWJzID0gYXdhaXQgdGhpcy5fZ2V0VGFicygpO1xuXG4gICAgICAgICAgICB0aGlzLl9wYXJlbnRUYXJnZXQgPSB0YWJzLmZpbmQodCA9PiB0LnVybC5pbmNsdWRlcyh0aGlzLl9ydW50aW1lSW5mby5icm93c2VySWQpKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9wYXJlbnRUYXJnZXQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgICAgICBpZiAoY2xpZW50KSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fY2FsY3VsYXRlRW11bGF0ZWREZXZpY2VQaXhlbFJhdGlvKGNsaWVudCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2V0dXBDbGllbnQoY2xpZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFNjcmVlbnNob3REYXRhIChmdWxsUGFnZT86IGJvb2xlYW4pOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgICAgICBsZXQgdmlld3BvcnRXaWR0aCAgPSAwO1xuICAgICAgICBsZXQgdmlld3BvcnRIZWlnaHQgPSAwO1xuXG4gICAgICAgIGNvbnN0IHsgY29uZmlnLCBlbXVsYXRlZERldmljZVBpeGVsUmF0aW8gfSA9IHRoaXMuX3J1bnRpbWVJbmZvO1xuXG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgaWYgKCFjbGllbnQpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IHJlcXVpcmVkIGZvciBodHRwczovL2dpdGh1Yi5jb20vRGV2RXhwcmVzcy90ZXN0Y2FmZS9pc3N1ZXMvNjAzN1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoMCk7XG5cbiAgICAgICAgICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZnVsbFBhZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgY29udGVudFNpemUsIHZpc3VhbFZpZXdwb3J0IH0gPSBhd2FpdCBjbGllbnQuUGFnZS5nZXRMYXlvdXRNZXRyaWNzKCk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldERldmljZU1ldHJpY3NPdmVycmlkZShcbiAgICAgICAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgICAgICAgTWF0aC5jZWlsKGNvbnRlbnRTaXplLndpZHRoKSxcbiAgICAgICAgICAgICAgICBNYXRoLmNlaWwoY29udGVudFNpemUuaGVpZ2h0KSxcbiAgICAgICAgICAgICAgICBlbXVsYXRlZERldmljZVBpeGVsUmF0aW8sXG4gICAgICAgICAgICAgICAgY29uZmlnLm1vYmlsZSk7XG5cbiAgICAgICAgICAgIHZpZXdwb3J0V2lkdGggPSB2aXN1YWxWaWV3cG9ydC5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgIHZpZXdwb3J0SGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2NyZWVuc2hvdERhdGEgPSBhd2FpdCBjbGllbnQuUGFnZS5jYXB0dXJlU2NyZWVuc2hvdCh7fSk7XG5cbiAgICAgICAgaWYgKGZ1bGxQYWdlKSB7XG4gICAgICAgICAgICBpZiAoY29uZmlnLmVtdWxhdGlvbikge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldERldmljZU1ldHJpY3NPdmVycmlkZShcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50LFxuICAgICAgICAgICAgICAgICAgICBjb25maWcud2lkdGggfHwgdmlld3BvcnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmhlaWdodCB8fCB2aWV3cG9ydEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgZW11bGF0ZWREZXZpY2VQaXhlbFJhdGlvLFxuICAgICAgICAgICAgICAgICAgICBjb25maWcubW9iaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQuRW11bGF0aW9uLmNsZWFyRGV2aWNlTWV0cmljc092ZXJyaWRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oc2NyZWVuc2hvdERhdGEuZGF0YSwgJ2Jhc2U2NCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbG9zZVRhYiAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnRUYXJnZXQpXG4gICAgICAgICAgICBhd2FpdCByZW1vdGVDaHJvbWUuQ2xvc2UoeyBpZDogdGhpcy5fcGFyZW50VGFyZ2V0LmlkLCBwb3J0OiB0aGlzLl9ydW50aW1lSW5mby5jZHBQb3J0IH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB1cGRhdGVNb2JpbGVWaWV3cG9ydFNpemUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmICghY2xpZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHdpbmRvd0RpbWVuc2lvbnNRdWVyeVJlc3VsdCA9IGF3YWl0IHRoaXMuX2V2YWx1YXRlUnVudGltZShjbGllbnQsIGAoJHtHRVRfV0lORE9XX0RJTUVOU0lPTlNfSU5GT19TQ1JJUFR9KSgpYCwgdHJ1ZSk7XG5cbiAgICAgICAgY29uc3Qgd2luZG93RGltZW5zaW9ucyA9IHdpbmRvd0RpbWVuc2lvbnNRdWVyeVJlc3VsdC5yZXN1bHQudmFsdWU7XG5cbiAgICAgICAgdGhpcy5fcnVudGltZUluZm8udmlld3BvcnRTaXplLndpZHRoID0gd2luZG93RGltZW5zaW9ucy5vdXRlcldpZHRoO1xuICAgICAgICB0aGlzLl9ydW50aW1lSW5mby52aWV3cG9ydFNpemUuaGVpZ2h0ID0gd2luZG93RGltZW5zaW9ucy5vdXRlckhlaWdodDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xvc2VCcm93c2VyQ2hpbGRXaW5kb3cgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNldENsaWVudEluYWN0aXZlKCk7XG5cbiAgICAgICAgLy8gTk9URTogZGVsYXkgYnJvd3NlciB3aW5kb3cgY2xvc2luZ1xuICAgICAgICBhd2FpdCBkZWxheSgxMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdGFydENhcHR1cmluZ1ZpZGVvICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVDbGllbnQoKTtcblxuICAgICAgICBpZiAoIWNsaWVudClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBpZiAoIXRoaXMuX3NjcmVlbmNhc3RGcmFtZUxpc3RlbmVyQXR0YWNoZWQpIHtcbiAgICAgICAgICAgIGNsaWVudC5QYWdlLm9uKCdzY3JlZW5jYXN0RnJhbWUnLCAoZXZlbnQ6IFNjcmVlbmNhc3RGcmFtZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW9GcmFtZXNCdWZmZXIucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6ICAgICAgZXZlbnQuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbklkOiBldmVudC5zZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fc2NyZWVuY2FzdEZyYW1lTGlzdGVuZXJBdHRhY2hlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBjbGllbnQuUGFnZS5zdGFydFNjcmVlbmNhc3QoU0NSRUVOQ0FTVF9PUFRJT05TIGFzIFN0YXJ0U2NyZWVuY2FzdFJlcXVlc3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdG9wQ2FwdHVyaW5nVmlkZW8gKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmICghY2xpZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGF3YWl0IGNsaWVudC5QYWdlLnN0b3BTY3JlZW5jYXN0KCk7XG5cbiAgICAgICAgdGhpcy5fbGFzdEZyYW1lICAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLl92aWRlb0ZyYW1lc0J1ZmZlciA9IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRWaWRlb0ZyYW1lRGF0YSAoKTogUHJvbWlzZTxCdWZmZXIgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWaWRlb0ZyYW1lID0gdGhpcy5fdmlkZW9GcmFtZXNCdWZmZXIuc2hpZnQoKSB8fCB0aGlzLl9sYXN0RnJhbWU7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50VmlkZW9GcmFtZSlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLl92aWRlb0ZyYW1lc0J1ZmZlci5sZW5ndGggPT09IDApXG4gICAgICAgICAgICB0aGlzLl9sYXN0RnJhbWUgPSBjdXJyZW50VmlkZW9GcmFtZTtcblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmICghY2xpZW50KVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgYXdhaXQgY2xpZW50LlBhZ2Uuc2NyZWVuY2FzdEZyYW1lQWNrKHsgc2Vzc2lvbklkOiBjdXJyZW50VmlkZW9GcmFtZS5zZXNzaW9uSWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGN1cnJlbnRWaWRlb0ZyYW1lLmRhdGEsICdiYXNlNjQnKTtcbiAgICB9XG59XG4iXX0=
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvY2hyb21lL2NkcC1jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsZ0RBQXdCO0FBQ3hCLDRDQUFvQjtBQUNwQixzRkFBbUQ7QUFDbkQsa0RBQTBCO0FBQzFCLHlFQUF1RjtBQUN2RixzR0FBOEU7QUFROUUsa0VBQXVDO0FBQ3ZDLGdFQUFvRjtBQUNwRix3R0FBOEU7QUFDOUUsMEVBQWtEO0FBS2xELE1BQU0sV0FBVyxHQUFHLENBQUMsRUFBVSxFQUFVLEVBQUUsQ0FBQyw0REFBNEQsRUFBRSxFQUFFLENBQUM7QUFDN0csTUFBTSxhQUFhLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxZQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFM0QsTUFBTSxRQUFRLEdBQUcsSUFBQSxlQUFLLEVBQUMscURBQXFELENBQUMsQ0FBQztBQUU5RSxNQUFNLGVBQWU7SUFJakIsWUFBb0IsTUFBZ0M7UUFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBSyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztDQUNKO0FBRUQsTUFBTSxrQkFBa0IsR0FBRztJQUN2QixNQUFNLEVBQVMsTUFBTTtJQUNyQixhQUFhLEVBQUUsQ0FBQztDQUNuQixDQUFDO0FBT0YsTUFBYSxhQUFhO0lBU3RCLFlBQW9CLFdBQXdCO1FBUnBDLGFBQVEsR0FBZ0MsRUFBRSxDQUFDO1FBTTNDLHFDQUFnQyxHQUFHLEtBQUssQ0FBQztRQUc3QyxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFJLElBQUEsZUFBSyxFQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFD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cldELHNDQXFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IFByb3RvY29sIGZyb20gJ2RldnRvb2xzLXByb3RvY29sJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCByZW1vdGVDaHJvbWUgZnJvbSAnY2hyb21lLXJlbW90ZS1pbnRlcmZhY2UnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IEdFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2NsaWVudC1mdW5jdGlvbnMnO1xuaW1wb3J0IFdBUk5JTkdfTUVTU0FHRSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbWVzc2FnZSc7XG5cbmltcG9ydCB7XG4gICAgQ29uZmlnLFxuICAgIFJ1bnRpbWVJbmZvLFxuICAgIFRvdWNoQ29uZmlnT3B0aW9ucyxcbiAgICBTaXplLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCBwcmV0dHlUaW1lIGZyb20gJ3ByZXR0eS1ocnRpbWUnO1xuaW1wb3J0IHsgQ2hlY2tlZENEUE1ldGhvZCwgRUxBUFNFRF9USU1FX1VQUEVSQk9VTkRTIH0gZnJvbSAnLi4vZWxhcHNlZC11cHBlcmJvdW5kcyc7XG5pbXBvcnQgZ3VhcmRUaW1lRXhlY3V0aW9uIGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3V0aWxzL2d1YXJkLXRpbWUtZXhlY3V0aW9uJztcbmltcG9ydCBkZWxheSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi91dGlscy9kZWxheSc7XG5cbmltcG9ydCBTdGFydFNjcmVlbmNhc3RSZXF1ZXN0ID0gUHJvdG9jb2wuUGFnZS5TdGFydFNjcmVlbmNhc3RSZXF1ZXN0O1xuaW1wb3J0IFNjcmVlbmNhc3RGcmFtZUV2ZW50ID0gUHJvdG9jb2wuUGFnZS5TY3JlZW5jYXN0RnJhbWVFdmVudDtcblxuY29uc3QgREVCVUdfU0NPUEUgPSAoaWQ6IHN0cmluZyk6IHN0cmluZyA9PiBgdGVzdGNhZmU6YnJvd3Nlcjpwcm92aWRlcjpidWlsdC1pbjpjaHJvbWU6YnJvd3Nlci1jbGllbnQ6JHtpZH1gO1xuY29uc3QgRE9XTkxPQURTX0RJUiA9IHBhdGguam9pbihvcy5ob21lZGlyKCksICdEb3dubG9hZHMnKTtcblxuY29uc3QgZGVidWdMb2cgPSBkZWJ1ZygndGVzdGNhZmU6YnJvd3Nlcjpwcm92aWRlcjpidWlsdC1pbjpkZWRpY2F0ZWQ6Y2hyb21lJyk7XG5cbmNsYXNzIFByb3RvY29sQXBpSW5mbyB7XG4gICAgcHVibGljIGluYWN0aXZlOiBib29sZWFuO1xuICAgIHB1YmxpYyBjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpIHtcbiAgICAgICAgdGhpcy5jbGllbnQgICA9IGNsaWVudDtcbiAgICAgICAgdGhpcy5pbmFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbn1cblxuY29uc3QgU0NSRUVOQ0FTVF9PUFRJT05TID0ge1xuICAgIGZvcm1hdDogICAgICAgICdqcGVnJyxcbiAgICBldmVyeU50aEZyYW1lOiAxLFxufTtcblxuaW50ZXJmYWNlIFZpZGVvRnJhbWVEYXRhIHtcbiAgICBkYXRhOiBzdHJpbmc7XG4gICAgc2Vzc2lvbklkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBCcm93c2VyQ2xpZW50IHtcbiAgICBwcml2YXRlIF9jbGllbnRzOiBEaWN0aW9uYXJ5PFByb3RvY29sQXBpSW5mbz4gPSB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydW50aW1lSW5mbzogUnVudGltZUluZm87XG4gICAgcHJpdmF0ZSBfcGFyZW50VGFyZ2V0PzogcmVtb3RlQ2hyb21lLlRhcmdldEluZm87XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJ1Z0xvZ2dlcjogZGVidWcuRGVidWdnZXI7XG4gICAgcHJpdmF0ZSBfdmlkZW9GcmFtZXNCdWZmZXI6IFZpZGVvRnJhbWVEYXRhW107XG4gICAgcHJpdmF0ZSBfbGFzdEZyYW1lOiBWaWRlb0ZyYW1lRGF0YSB8IG51bGw7XG4gICAgcHJpdmF0ZSBfc2NyZWVuY2FzdEZyYW1lTGlzdGVuZXJBdHRhY2hlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChydW50aW1lSW5mbzogUnVudGltZUluZm8pIHtcbiAgICAgICAgdGhpcy5fcnVudGltZUluZm8gPSBydW50aW1lSW5mbztcbiAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dlciAgPSBkZWJ1ZyhERUJVR19TQ09QRShydW50aW1lSW5mby5icm93c2VySWQpKTtcblxuICAgICAgICBydW50aW1lSW5mby5icm93c2VyQ2xpZW50ID0gdGhpcztcblxuICAgICAgICB0aGlzLl92aWRlb0ZyYW1lc0J1ZmZlciA9IFtdO1xuICAgICAgICB0aGlzLl9sYXN0RnJhbWUgICAgICAgICA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgX2NsaWVudEtleSAoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bnRpbWVJbmZvLmFjdGl2ZVdpbmRvd0lkIHx8IHRoaXMuX3J1bnRpbWVJbmZvLmJyb3dzZXJJZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBfY29uZmlnICgpOiBDb25maWcge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVudGltZUluZm8uY29uZmlnO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2dldFRhYnMgKCk6IFByb21pc2U8cmVtb3RlQ2hyb21lLlRhcmdldEluZm9bXT4ge1xuICAgICAgICBjb25zdCB0YWJzID0gYXdhaXQgcmVtb3RlQ2hyb21lLkxpc3QoeyBwb3J0OiB0aGlzLl9ydW50aW1lSW5mby5jZHBQb3J0IH0pO1xuXG4gICAgICAgIHJldHVybiB0YWJzLmZpbHRlcih0ID0+IHQudHlwZSA9PT0gJ3BhZ2UnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9nZXRBY3RpdmVUYWIgKCk6IFByb21pc2U8cmVtb3RlQ2hyb21lLlRhcmdldEluZm8+IHtcbiAgICAgICAgbGV0IHRhYnMgPSBhd2FpdCB0aGlzLl9nZXRUYWJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3J1bnRpbWVJbmZvLmFjdGl2ZVdpbmRvd0lkKVxuICAgICAgICAgICAgdGFicyA9IHRhYnMuZmlsdGVyKHQgPT4gdC50aXRsZS5pbmNsdWRlcyh0aGlzLl9ydW50aW1lSW5mby5hY3RpdmVXaW5kb3dJZCkpO1xuXG4gICAgICAgIHJldHVybiB0YWJzWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NoZWNrRHJvcE9mUGVyZm9ybWFuY2UgKG1ldGhvZDogQ2hlY2tlZENEUE1ldGhvZCwgZWxhcHNlZFRpbWU6IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dlcihgQ0RQIG1ldGhvZCAnJHttZXRob2R9JyB0b29rICR7cHJldHR5VGltZShlbGFwc2VkVGltZSl9YCk7XG5cbiAgICAgICAgY29uc3QgWyBlbGFwc2VkU2Vjb25kcyBdID0gZWxhcHNlZFRpbWU7XG5cbiAgICAgICAgaWYgKGVsYXBzZWRTZWNvbmRzID4gRUxBUFNFRF9USU1FX1VQUEVSQk9VTkRTW21ldGhvZF0pIHtcbiAgICAgICAgICAgIHRoaXMuX3J1bnRpbWVJbmZvLnByb3ZpZGVyTWV0aG9kcy5yZXBvcnRXYXJuaW5nKFxuICAgICAgICAgICAgICAgIFdBUk5JTkdfTUVTU0FHRS5icm93c2VyUHJvdmlkZXJEcm9wT2ZQZXJmb3JtYW5jZSxcbiAgICAgICAgICAgICAgICB0aGlzLl9ydW50aW1lSW5mby5icm93c2VyTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2NyZWF0ZUNsaWVudCAoKTogUHJvbWlzZTxyZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGk+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ICAgICAgICAgICAgICAgICAgICAgPSBhd2FpdCB0aGlzLl9nZXRBY3RpdmVUYWIoKTtcbiAgICAgICAgY29uc3QgY2xpZW50ICAgICAgICAgICAgICAgICAgICAgPSBhd2FpdCByZW1vdGVDaHJvbWUoeyB0YXJnZXQsIHBvcnQ6IHRoaXMuX3J1bnRpbWVJbmZvLmNkcFBvcnQgfSk7XG4gICAgICAgIGNvbnN0IHsgUGFnZSwgTmV0d29yaywgUnVudGltZSB9ID0gY2xpZW50O1xuXG4gICAgICAgIHRoaXMuX2NsaWVudHNbdGhpcy5fY2xpZW50S2V5XSA9IG5ldyBQcm90b2NvbEFwaUluZm8oY2xpZW50KTtcblxuICAgICAgICBhd2FpdCBndWFyZFRpbWVFeGVjdXRpb24oXG4gICAgICAgICAgICBhc3luYyAoKSA9PiBhd2FpdCBQYWdlLmVuYWJsZSgpLFxuICAgICAgICAgICAgZWxhcHNlZFRpbWUgPT4gdGhpcy5fY2hlY2tEcm9wT2ZQZXJmb3JtYW5jZShDaGVja2VkQ0RQTWV0aG9kLlBhZ2VFbmFibGUsIGVsYXBzZWRUaW1lKVxuICAgICAgICApO1xuXG4gICAgICAgIGF3YWl0IE5ldHdvcmsuZW5hYmxlKHt9KTtcbiAgICAgICAgYXdhaXQgUnVudGltZS5lbmFibGUoKTtcblxuICAgICAgICByZXR1cm4gY2xpZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwQ2xpZW50IChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fY29uZmlnLmVtdWxhdGlvbilcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldEVtdWxhdGlvbihjbGllbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLl9jb25maWcuaGVhZGxlc3MpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXR1cERvd25sb2FkcyhjbGllbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldERldmljZU1ldHJpY3NPdmVycmlkZSAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGksIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBkZXZpY2VTY2FsZUZhY3RvcjogbnVtYmVyLCBtb2JpbGU6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgZ3VhcmRUaW1lRXhlY3V0aW9uKFxuICAgICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5FbXVsYXRpb24uc2V0RGV2aWNlTWV0cmljc092ZXJyaWRlKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIG1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBmaXRXaW5kb3c6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVsYXBzZWRUaW1lID0+IHRoaXMuX2NoZWNrRHJvcE9mUGVyZm9ybWFuY2UoQ2hlY2tlZENEUE1ldGhvZC5TZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUsIGVsYXBzZWRUaW1lKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldFVzZXJBZ2VudEVtdWxhdGlvbiAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy51c2VyQWdlbnQgPT09IHZvaWQgMClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhd2FpdCBjbGllbnQuTmV0d29yay5zZXRVc2VyQWdlbnRPdmVycmlkZSh7IHVzZXJBZ2VudDogdGhpcy5fY29uZmlnLnVzZXJBZ2VudCB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRUb3VjaEVtdWxhdGlvbiAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy50b3VjaCA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHRvdWNoQ29uZmlnOiBUb3VjaENvbmZpZ09wdGlvbnMgPSB7XG4gICAgICAgICAgICBlbmFibGVkOiAgICAgICAgdGhpcy5fY29uZmlnLnRvdWNoLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogIHRoaXMuX2NvbmZpZy5tb2JpbGUgPyAnbW9iaWxlJyA6ICdkZXNrdG9wJyxcbiAgICAgICAgICAgIG1heFRvdWNoUG9pbnRzOiAxLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChjbGllbnQuRW11bGF0aW9uLnNldEVtaXRUb3VjaEV2ZW50c0Zvck1vdXNlKVxuICAgICAgICAgICAgYXdhaXQgY2xpZW50LkVtdWxhdGlvbi5zZXRFbWl0VG91Y2hFdmVudHNGb3JNb3VzZSh0b3VjaENvbmZpZyk7XG5cbiAgICAgICAgaWYgKGNsaWVudC5FbXVsYXRpb24uc2V0VG91Y2hFbXVsYXRpb25FbmFibGVkKVxuICAgICAgICAgICAgYXdhaXQgY2xpZW50LkVtdWxhdGlvbi5zZXRUb3VjaEVtdWxhdGlvbkVuYWJsZWQodG91Y2hDb25maWcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldEVtdWxhdGlvbiAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fc2V0VXNlckFnZW50RW11bGF0aW9uKGNsaWVudCk7XG4gICAgICAgIGF3YWl0IHRoaXMuX3NldFRvdWNoRW11bGF0aW9uKGNsaWVudCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5yZXNpemVXaW5kb3coe1xuICAgICAgICAgICAgd2lkdGg6ICB0aGlzLl9jb25maWcud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMuX2NvbmZpZy5oZWlnaHQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwRG93bmxvYWRzIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBjbGllbnQuUGFnZS5zZXREb3dubG9hZEJlaGF2aW9yKHtcbiAgICAgICAgICAgIGJlaGF2aW9yOiAgICAgJ2FsbG93JyxcbiAgICAgICAgICAgIGRvd25sb2FkUGF0aDogRE9XTkxPQURTX0RJUixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZXZhbHVhdGVSdW50aW1lIChjbGllbnQ6IHJlbW90ZUNocm9tZS5Qcm90b2NvbEFwaSwgZXhwcmVzc2lvbjogc3RyaW5nLCByZXR1cm5CeVZhbHVlID0gZmFsc2UpOiBQcm9taXNlPFByb3RvY29sLlJ1bnRpbWUuRXZhbHVhdGVSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gY2xpZW50LlJ1bnRpbWUuZXZhbHVhdGUoeyBleHByZXNzaW9uLCByZXR1cm5CeVZhbHVlIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2NhbGN1bGF0ZUVtdWxhdGVkRGV2aWNlUGl4ZWxSYXRpbyAoY2xpZW50OiByZW1vdGVDaHJvbWUuUHJvdG9jb2xBcGkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFjbGllbnQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZGV2aWNlUGl4ZWxSYXRpb1F1ZXJ5UmVzdWx0ID0gYXdhaXQgY2xpZW50LlJ1bnRpbWUuZXZhbHVhdGUoeyBleHByZXNzaW9uOiAnd2luZG93LmRldmljZVBpeGVsUmF0aW8nIH0pO1xuXG4gICAgICAgIHRoaXMuX3J1bnRpbWVJbmZvLm9yaWdpbmFsRGV2aWNlUGl4ZWxSYXRpbyA9IGRldmljZVBpeGVsUmF0aW9RdWVyeVJlc3VsdC5yZXN1bHQudmFsdWU7XG4gICAgICAgIHRoaXMuX3J1bnRpbWVJbmZvLmVtdWxhdGVkRGV2aWNlUGl4ZWxSYXRpbyA9IHRoaXMuX2NvbmZpZy5zY2FsZUZhY3RvciB8fCB0aGlzLl9ydW50aW1lSW5mby5vcmlnaW5hbERldmljZVBpeGVsUmF0aW87XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc2l6ZVdpbmRvdyAobmV3RGltZW5zaW9uczogU2l6ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGJyb3dzZXJJZCwgY29uZmlnLCB2aWV3cG9ydFNpemUsIHByb3ZpZGVyTWV0aG9kcywgZW11bGF0ZWREZXZpY2VQaXhlbFJhdGlvIH0gPSB0aGlzLl9ydW50aW1lSW5mbztcblxuICAgICAgICBjb25zdCBjdXJyZW50V2lkdGggPSB2aWV3cG9ydFNpemUud2lkdGg7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSB2aWV3cG9ydFNpemUuaGVpZ2h0O1xuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IG5ld0RpbWVuc2lvbnMud2lkdGggfHwgY3VycmVudFdpZHRoO1xuICAgICAgICBjb25zdCBuZXdIZWlnaHQgPSBuZXdEaW1lbnNpb25zLmhlaWdodCB8fCBjdXJyZW50SGVpZ2h0O1xuXG4gICAgICAgIGlmICghY29uZmlnLmhlYWRsZXNzKVxuICAgICAgICAgICAgYXdhaXQgcHJvdmlkZXJNZXRob2RzLnJlc2l6ZUxvY2FsQnJvd3NlcldpbmRvdyhicm93c2VySWQsIG5ld1dpZHRoLCBuZXdIZWlnaHQsIGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCk7XG5cbiAgICAgICAgdmlld3BvcnRTaXplLndpZHRoID0gbmV3V2lkdGg7XG4gICAgICAgIHZpZXdwb3J0U2l6ZS5oZWlnaHQgPSBuZXdIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVDbGllbnQoKTtcblxuICAgICAgICBpZiAoY2xpZW50ICYmIGNvbmZpZy5lbXVsYXRpb24pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldERldmljZU1ldHJpY3NPdmVycmlkZShjbGllbnQsIHZpZXdwb3J0U2l6ZS53aWR0aCwgdmlld3BvcnRTaXplLmhlaWdodCwgZW11bGF0ZWREZXZpY2VQaXhlbFJhdGlvLCBjb25maWcubW9iaWxlKTtcblxuICAgICAgICAgICAgYXdhaXQgZ3VhcmRUaW1lRXhlY3V0aW9uKFxuICAgICAgICAgICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LkVtdWxhdGlvbi5zZXRWaXNpYmxlU2l6ZSh7IHdpZHRoOiB2aWV3cG9ydFNpemUud2lkdGgsIGhlaWdodDogdmlld3BvcnRTaXplLmhlaWdodCB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lID0+IHRoaXMuX2NoZWNrRHJvcE9mUGVyZm9ybWFuY2UoQ2hlY2tlZENEUE1ldGhvZC5TZXRWaXNpYmxlU2l6ZSwgZWxhcHNlZFRpbWUpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGVhZGxlc3NUYWIgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9wYXJlbnRUYXJnZXQgJiYgdGhpcy5fY29uZmlnLmhlYWRsZXNzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRDbGllbnRJbmFjdGl2ZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIE5PVEU6IGVuc3VyZSBjbGllbnQgZXhpc3RzXG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gdGhpcy5fY2xpZW50c1t0aGlzLl9jbGllbnRLZXldO1xuXG4gICAgICAgIGlmIChjbGllbnQpXG4gICAgICAgICAgICBjbGllbnQuaW5hY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBY3RpdmVDbGllbnQgKCk6IFByb21pc2U8cmVtb3RlQ2hyb21lLlByb3RvY29sQXBpIHwgdm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9jbGllbnRzW3RoaXMuX2NsaWVudEtleV0pXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fY3JlYXRlQ2xpZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgZGVidWdMb2coZXJyKTtcblxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLl9jbGllbnRzW3RoaXMuX2NsaWVudEtleV07XG5cbiAgICAgICAgaWYgKGluZm8uaW5hY3RpdmUpXG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xuXG4gICAgICAgIHJldHVybiBpbmZvLmNsaWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB0YWJzID0gYXdhaXQgdGhpcy5fZ2V0VGFicygpO1xuXG4gICAgICAgICAgICB0aGlzLl9wYXJlbnRUYXJnZXQgPSB0YWJzLmZpbmQodCA9PiB0LnVybC5pbmNsdWRlcyh0aGlzLl9ydW50aW1lSW5mby5icm93c2VySWQpKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9wYXJlbnRUYXJnZXQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgICAgICBpZiAoY2xpZW50KSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fY2FsY3VsYXRlRW11bGF0ZWREZXZpY2VQaXhlbFJhdGlvKGNsaWVudCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2V0dXBDbGllbnQoY2xpZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFNjcmVlbnNob3REYXRhIChmdWxsUGFnZT86IGJvb2xlYW4pOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgICAgICBsZXQgdmlld3BvcnRXaWR0aCAgPSAwO1xuICAgICAgICBsZXQgdmlld3BvcnRIZWlnaHQgPSAwO1xuXG4gICAgICAgIGNvbnN0IHsgY29uZmlnLCBlbXVsYXRlZERldmljZVBpeGVsUmF0aW8gfSA9IHRoaXMuX3J1bnRpbWVJbmZvO1xuXG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgaWYgKCFjbGllbnQpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IHJlcXVpcmVkIGZvciBodHRwczovL2dpdGh1Yi5jb20vRGV2RXhwcmVzcy90ZXN0Y2FmZS9pc3N1ZXMvNjAzN1xuICAgICAgICAgICAgYXdhaXQgZGVsYXkoMCk7XG5cbiAgICAgICAgICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZnVsbFBhZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgY29udGVudFNpemUsIHZpc3VhbFZpZXdwb3J0IH0gPSBhd2FpdCBjbGllbnQuUGFnZS5nZXRMYXlvdXRNZXRyaWNzKCk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldERldmljZU1ldHJpY3NPdmVycmlkZShcbiAgICAgICAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgICAgICAgTWF0aC5jZWlsKGNvbnRlbnRTaXplLndpZHRoKSxcbiAgICAgICAgICAgICAgICBNYXRoLmNlaWwoY29udGVudFNpemUuaGVpZ2h0KSxcbiAgICAgICAgICAgICAgICBlbXVsYXRlZERldmljZVBpeGVsUmF0aW8sXG4gICAgICAgICAgICAgICAgY29uZmlnLm1vYmlsZSk7XG5cbiAgICAgICAgICAgIHZpZXdwb3J0V2lkdGggPSB2aXN1YWxWaWV3cG9ydC5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgIHZpZXdwb3J0SGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2NyZWVuc2hvdERhdGEgPSBhd2FpdCBjbGllbnQuUGFnZS5jYXB0dXJlU2NyZWVuc2hvdCh7fSk7XG5cbiAgICAgICAgaWYgKGZ1bGxQYWdlKSB7XG4gICAgICAgICAgICBpZiAoY29uZmlnLmVtdWxhdGlvbikge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldERldmljZU1ldHJpY3NPdmVycmlkZShcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50LFxuICAgICAgICAgICAgICAgICAgICBjb25maWcud2lkdGggfHwgdmlld3BvcnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmhlaWdodCB8fCB2aWV3cG9ydEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgZW11bGF0ZWREZXZpY2VQaXhlbFJhdGlvLFxuICAgICAgICAgICAgICAgICAgICBjb25maWcubW9iaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQuRW11bGF0aW9uLmNsZWFyRGV2aWNlTWV0cmljc092ZXJyaWRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oc2NyZWVuc2hvdERhdGEuZGF0YSwgJ2Jhc2U2NCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbG9zZVRhYiAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnRUYXJnZXQpXG4gICAgICAgICAgICBhd2FpdCByZW1vdGVDaHJvbWUuQ2xvc2UoeyBpZDogdGhpcy5fcGFyZW50VGFyZ2V0LmlkLCBwb3J0OiB0aGlzLl9ydW50aW1lSW5mby5jZHBQb3J0IH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB1cGRhdGVNb2JpbGVWaWV3cG9ydFNpemUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmICghY2xpZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHdpbmRvd0RpbWVuc2lvbnNRdWVyeVJlc3VsdCA9IGF3YWl0IHRoaXMuX2V2YWx1YXRlUnVudGltZShjbGllbnQsIGAoJHtHRVRfV0lORE9XX0RJTUVOU0lPTlNfSU5GT19TQ1JJUFR9KSgpYCwgdHJ1ZSk7XG5cbiAgICAgICAgY29uc3Qgd2luZG93RGltZW5zaW9ucyA9IHdpbmRvd0RpbWVuc2lvbnNRdWVyeVJlc3VsdC5yZXN1bHQudmFsdWU7XG5cbiAgICAgICAgdGhpcy5fcnVudGltZUluZm8udmlld3BvcnRTaXplLndpZHRoID0gd2luZG93RGltZW5zaW9ucy5vdXRlcldpZHRoO1xuICAgICAgICB0aGlzLl9ydW50aW1lSW5mby52aWV3cG9ydFNpemUuaGVpZ2h0ID0gd2luZG93RGltZW5zaW9ucy5vdXRlckhlaWdodDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xvc2VCcm93c2VyQ2hpbGRXaW5kb3cgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNldENsaWVudEluYWN0aXZlKCk7XG5cbiAgICAgICAgLy8gTk9URTogZGVsYXkgYnJvd3NlciB3aW5kb3cgY2xvc2luZ1xuICAgICAgICBhd2FpdCBkZWxheSgxMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdGFydENhcHR1cmluZ1ZpZGVvICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVDbGllbnQoKTtcblxuICAgICAgICBpZiAoIWNsaWVudClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBpZiAoIXRoaXMuX3NjcmVlbmNhc3RGcmFtZUxpc3RlbmVyQXR0YWNoZWQpIHtcbiAgICAgICAgICAgIGNsaWVudC5QYWdlLm9uKCdzY3JlZW5jYXN0RnJhbWUnLCAoZXZlbnQ6IFNjcmVlbmNhc3RGcmFtZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW9GcmFtZXNCdWZmZXIucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6ICAgICAgZXZlbnQuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbklkOiBldmVudC5zZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fc2NyZWVuY2FzdEZyYW1lTGlzdGVuZXJBdHRhY2hlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBjbGllbnQuUGFnZS5zdGFydFNjcmVlbmNhc3QoU0NSRUVOQ0FTVF9PUFRJT05TIGFzIFN0YXJ0U2NyZWVuY2FzdFJlcXVlc3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdG9wQ2FwdHVyaW5nVmlkZW8gKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmICghY2xpZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGF3YWl0IGNsaWVudC5QYWdlLnN0b3BTY3JlZW5jYXN0KCk7XG5cbiAgICAgICAgdGhpcy5fbGFzdEZyYW1lICAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLl92aWRlb0ZyYW1lc0J1ZmZlciA9IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRWaWRlb0ZyYW1lRGF0YSAoKTogUHJvbWlzZTxCdWZmZXIgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWaWRlb0ZyYW1lID0gdGhpcy5fdmlkZW9GcmFtZXNCdWZmZXIuc2hpZnQoKSB8fCB0aGlzLl9sYXN0RnJhbWU7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50VmlkZW9GcmFtZSlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLl92aWRlb0ZyYW1lc0J1ZmZlci5sZW5ndGggPT09IDApXG4gICAgICAgICAgICB0aGlzLl9sYXN0RnJhbWUgPSBjdXJyZW50VmlkZW9GcmFtZTtcblxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGlmICghY2xpZW50KVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgYXdhaXQgY2xpZW50LlBhZ2Uuc2NyZWVuY2FzdEZyYW1lQWNrKHsgc2Vzc2lvbklkOiBjdXJyZW50VmlkZW9GcmFtZS5zZXNzaW9uSWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGN1cnJlbnRWaWRlb0ZyYW1lLmRhdGEsICdiYXNlNjQnKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -16,15 +16,15 @@ function parseUserArgs(userArgs) {
|
|
|
16
16
|
const splittedArgs = userArgs.split(' ').filter(arg => !!arg);
|
|
17
17
|
splittedArgs.forEach(arg => {
|
|
18
18
|
const keyValuePair = arg.split('=');
|
|
19
|
-
const key = lodash_1.camelCase(keyValuePair[0]);
|
|
19
|
+
const key = (0, lodash_1.camelCase)(keyValuePair[0]);
|
|
20
20
|
parsedArgs[key] = parsedArgs[key] !== void 0;
|
|
21
21
|
});
|
|
22
22
|
return parsedArgs;
|
|
23
23
|
}
|
|
24
24
|
function parseModes(modesStr, userArgs) {
|
|
25
|
-
const parsed = argument_parsing_1.splitEscaped(modesStr, ':');
|
|
26
|
-
const path = argument_parsing_1.getPathFromParsedModes(parsed, AVAILABLE_MODES);
|
|
27
|
-
const detectedModes = argument_parsing_1.getModes(parsed, AVAILABLE_MODES);
|
|
25
|
+
const parsed = (0, argument_parsing_1.splitEscaped)(modesStr, ':');
|
|
26
|
+
const path = (0, argument_parsing_1.getPathFromParsedModes)(parsed, AVAILABLE_MODES);
|
|
27
|
+
const detectedModes = (0, argument_parsing_1.getModes)(parsed, AVAILABLE_MODES);
|
|
28
28
|
let optionsString = '';
|
|
29
29
|
if (parsed.length)
|
|
30
30
|
optionsString = parsed.shift();
|
|
@@ -69,33 +69,33 @@ function getDeviceBasedOptions(deviceName, orientation) {
|
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
function parseOptions(str, useDefaultDimensions) {
|
|
72
|
-
const parsed = argument_parsing_1.splitEscaped(str, ';');
|
|
72
|
+
const parsed = (0, argument_parsing_1.splitEscaped)(str, ';');
|
|
73
73
|
const baseOptions = {
|
|
74
74
|
width: useDefaultDimensions ? HEADLESS_DEFAULT_WIDTH : 0,
|
|
75
75
|
height: useDefaultDimensions ? HEADLESS_DEFAULT_HEIGHT : 0,
|
|
76
76
|
scaleFactor: 0,
|
|
77
77
|
mobile: false,
|
|
78
|
-
cdpPort: argument_parsing_1.findMatch(parsed, /^cdpPort=(.*)/),
|
|
78
|
+
cdpPort: (0, argument_parsing_1.findMatch)(parsed, /^cdpPort=(.*)/),
|
|
79
79
|
};
|
|
80
|
-
const deviceName = argument_parsing_1.findMatch(parsed, /^device=(.*)/);
|
|
81
|
-
const orientation = argument_parsing_1.findMatch(parsed, /^orientation=(.*)/);
|
|
80
|
+
const deviceName = (0, argument_parsing_1.findMatch)(parsed, /^device=(.*)/);
|
|
81
|
+
const orientation = (0, argument_parsing_1.findMatch)(parsed, /^orientation=(.*)/);
|
|
82
82
|
const deviceBasedOptions = getDeviceBasedOptions(deviceName, orientation);
|
|
83
83
|
let specifiedDeviceOptions = {
|
|
84
84
|
orientation: orientation,
|
|
85
|
-
touch: argument_parsing_1.hasMatch(parsed, /^touch=/) ? argument_parsing_1.isMatchTrue(parsed, /^touch=(.*)/) : void 0,
|
|
86
|
-
mobile: argument_parsing_1.isMatchTrue(parsed, /^mobile=(.*)/),
|
|
87
|
-
width: Number(argument_parsing_1.findMatch(parsed, /^width=(.*)/) || NaN),
|
|
88
|
-
height: Number(argument_parsing_1.findMatch(parsed, /^height=(.*)/) || NaN),
|
|
89
|
-
scaleFactor: Number(argument_parsing_1.findMatch(parsed, /^scaleFactor=(.*)/) || NaN),
|
|
90
|
-
userAgent: argument_parsing_1.findMatch(parsed, /^userAgent=(.*)/),
|
|
85
|
+
touch: (0, argument_parsing_1.hasMatch)(parsed, /^touch=/) ? (0, argument_parsing_1.isMatchTrue)(parsed, /^touch=(.*)/) : void 0,
|
|
86
|
+
mobile: (0, argument_parsing_1.isMatchTrue)(parsed, /^mobile=(.*)/),
|
|
87
|
+
width: Number((0, argument_parsing_1.findMatch)(parsed, /^width=(.*)/) || NaN),
|
|
88
|
+
height: Number((0, argument_parsing_1.findMatch)(parsed, /^height=(.*)/) || NaN),
|
|
89
|
+
scaleFactor: Number((0, argument_parsing_1.findMatch)(parsed, /^scaleFactor=(.*)/) || NaN),
|
|
90
|
+
userAgent: (0, argument_parsing_1.findMatch)(parsed, /^userAgent=(.*)/),
|
|
91
91
|
};
|
|
92
|
-
specifiedDeviceOptions = lodash_1.pickBy(specifiedDeviceOptions, optionValue => {
|
|
92
|
+
specifiedDeviceOptions = (0, lodash_1.pickBy)(specifiedDeviceOptions, optionValue => {
|
|
93
93
|
return optionValue !== void 0 && optionValue !== '' && !Number.isNaN(optionValue);
|
|
94
94
|
});
|
|
95
95
|
return Object.assign(baseOptions, deviceBasedOptions, specifiedDeviceOptions);
|
|
96
96
|
}
|
|
97
97
|
function getNewConfig(configString) {
|
|
98
|
-
const { userArgs, modesString } = argument_parsing_1.parseConfig(configString);
|
|
98
|
+
const { userArgs, modesString } = (0, argument_parsing_1.parseConfig)(configString);
|
|
99
99
|
const parsedUserArgs = parseUserArgs(userArgs);
|
|
100
100
|
const { modes, optionsString } = parseModes(modesString, parsedUserArgs);
|
|
101
101
|
const useDefaultDimensions = modes.headless && !parsedUserArgs.windowSize;
|
|
@@ -109,4 +109,4 @@ function default_1(configString) {
|
|
|
109
109
|
}
|
|
110
110
|
exports.default = default_1;
|
|
111
111
|
module.exports = exports.default;
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvYnVpbHQtaW4vZGVkaWNhdGVkL2Nocm9tZS9jb25maWcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQ0FBK0M7QUFDL0MsbUNBQStEO0FBQy9ELHNFQUV5QztBQUd6QyxNQUFNLHNCQUFzQixHQUFJLElBQUksQ0FBQztBQUNyQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUVwQyxNQUFNLGVBQWUsR0FBRyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFakUsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBRXZCLFNBQVMsYUFBYSxDQUFFLFFBQVE7SUFDNUIsTUFBTSxVQUFVLEdBQUc7UUFDZixRQUFRLEVBQUssS0FBSztRQUNsQixXQUFXLEVBQUUsS0FBSztRQUNsQixVQUFVLEVBQUcsS0FBSztLQUNyQixDQUFDO0lBRUYsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFOUQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN2QixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sR0FBRyxHQUFZLGtCQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBRSxRQUFRLEVBQUUsUUFBUTtJQUNuQyxNQUFNLE1BQU0sR0FBVSwrQkFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsRCxNQUFNLElBQUksR0FBWSx5Q0FBc0IsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDdEUsTUFBTSxhQUFhLEdBQUcsMkJBQVEsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDeEQsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBRXZCLElBQUksTUFBTSxDQUFDLE1BQU07UUFDYixhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRW5DLE9BQU8sTUFBTSxDQUFDLE1BQU07UUFDaEIsYUFBYSxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFMUMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQ3RFLE1BQU0sUUFBUSxHQUFNLGFBQWEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNoRSxNQUFNLFNBQVMsR0FBSyxhQUFhLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQztJQUV4RCxNQUFNLEtBQUssR0FBRztRQUNWLElBQUk7UUFDSixXQUFXO1FBQ1gsUUFBUTtRQUNSLFNBQVM7S0FDWixDQUFDO0lBRUYsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBRSxVQUFVO0lBQ25DLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDdkQsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFFLFVBQVU7SUFDM0IsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFbEQsT0FBTyw4QkFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUUsVUFBVSxFQUFFLFdBQVc7SUFDbkQsSUFBSSxDQUFDLFVBQVU7UUFDWCxPQUFPLEVBQUUsQ0FBQztJQUVkLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxQyxJQUFJLENBQUMsVUFBVTtRQUNYLE9BQU8sRUFBRSxDQUFDO0lBRWQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTlELElBQUksQ0FBQyxXQUFXO1FBQ1osV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFFckQsT0FBTztRQUNILFVBQVUsRUFBRyxVQUFVLENBQUMsS0FBSztRQUM3QixNQUFNLEVBQU8sTUFBTTtRQUNuQixXQUFXLEVBQUUsV0FBVztRQUN4QixLQUFLLEVBQVEsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUMxRCxLQUFLLEVBQVEsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLO1FBQ2pELE1BQU0sRUFBTyxVQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU07UUFDbEQsV0FBVyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUM7UUFDcEQsU0FBUyxFQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUM7S0FDeEMsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBRSxHQUFHLEVBQUUsb0JBQW9CO0lBQzVDLE1BQU0sTUFBTSxHQUFHLCtCQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRXRDLE1BQU0sV0FBVyxHQUFHO1FBQ2hCLEtBQUssRUFBUSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsTUFBTSxFQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxXQUFXLEVBQUUsQ0FBQztRQUNkLE1BQU0sRUFBTyxLQUFLO1FBQ2xCLE9BQU8sRUFBTSw0QkFBUyxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUM7S0FDbEQsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFXLDRCQUFTLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdELE1BQU0sV0FBVyxHQUFVLDRCQUFTLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDbEUsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFMUUsSUFBSSxzQkFBc0IsR0FBRztRQUN6QixXQUFXLEVBQUUsV0FBVztRQUN4QixLQUFLLEVBQVEsMkJBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhCQUFXLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEYsTUFBTSxFQUFPLDhCQUFXLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQztRQUNoRCxLQUFLLEVBQVEsTUFBTSxDQUFDLDRCQUFTLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUM1RCxNQUFNLEVBQU8sTUFBTSxDQUFDLDRCQUFTLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUM3RCxXQUFXLEVBQUUsTUFBTSxDQUFDLDRCQUFTLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLElBQUksR0FBRyxDQUFDO1FBQ2xFLFNBQVMsRUFBSSw0QkFBUyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQztLQUNwRCxDQUFDO0lBRUYsc0JBQXNCLEdBQUcsZUFBZ0IsQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLENBQUMsRUFBRTtRQUM1RSxPQUFPLFdBQVcsS0FBSyxLQUFLLENBQUMsSUFBSSxXQUFXLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUNsRixDQUFDO0FBR0QsU0FBUyxZQUFZLENBQUUsWUFBWTtJQUMvQixNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLDhCQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUQsTUFBTSxjQUFjLEdBQWMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFELE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMxRSxNQUFNLG9CQUFvQixHQUFRLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO0lBQy9FLE1BQU0sT0FBTyxHQUFxQixZQUFZLENBQUMsYUFBYSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFFcEYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxtQkFBeUIsWUFBWTtJQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztRQUMxQixXQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRTNELE9BQU8sV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFMRCw0QkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVtdWxhdGVkRGV2aWNlcyB9IGZyb20gJ2RldmljZS1zcGVjcyc7XG5pbXBvcnQgeyBwaWNrQnkgYXMgZmlsdGVyUHJvcGVydGllcywgY2FtZWxDYXNlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gICAgaGFzTWF0Y2gsIGZpbmRNYXRjaCwgaXNNYXRjaFRydWUsIGdldE1vZGVzLCBzcGxpdEVzY2FwZWQsIGdldFBhdGhGcm9tUGFyc2VkTW9kZXMsIHBhcnNlQ29uZmlnLFxufSBmcm9tICcuLi8uLi8uLi91dGlscy9hcmd1bWVudC1wYXJzaW5nJztcblxuXG5jb25zdCBIRUFETEVTU19ERUZBVUxUX1dJRFRIICA9IDEyODA7XG5jb25zdCBIRUFETEVTU19ERUZBVUxUX0hFSUdIVCA9IDgwMDtcblxuY29uc3QgQVZBSUxBQkxFX01PREVTID0gWyd1c2VyUHJvZmlsZScsICdoZWFkbGVzcycsICdlbXVsYXRpb24nXTtcblxuY29uc3QgY29uZmlnQ2FjaGUgPSB7fTtcblxuZnVuY3Rpb24gcGFyc2VVc2VyQXJncyAodXNlckFyZ3MpIHtcbiAgICBjb25zdCBwYXJzZWRBcmdzID0ge1xuICAgICAgICBoZWFkbGVzczogICAgZmFsc2UsXG4gICAgICAgIHVzZXJEYXRhRGlyOiBmYWxzZSxcbiAgICAgICAgd2luZG93U2l6ZTogIGZhbHNlLFxuICAgIH07XG5cbiAgICBjb25zdCBzcGxpdHRlZEFyZ3MgPSB1c2VyQXJncy5zcGxpdCgnICcpLmZpbHRlcihhcmcgPT4gISFhcmcpO1xuXG4gICAgc3BsaXR0ZWRBcmdzLmZvckVhY2goYXJnID0+IHtcbiAgICAgICAgY29uc3Qga2V5VmFsdWVQYWlyID0gYXJnLnNwbGl0KCc9Jyk7XG4gICAgICAgIGNvbnN0IGtleSAgICAgICAgICA9IGNhbWVsQ2FzZShrZXlWYWx1ZVBhaXJbMF0pO1xuXG4gICAgICAgIHBhcnNlZEFyZ3Nba2V5XSA9IHBhcnNlZEFyZ3Nba2V5XSAhPT0gdm9pZCAwO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhcnNlZEFyZ3M7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTW9kZXMgKG1vZGVzU3RyLCB1c2VyQXJncykge1xuICAgIGNvbnN0IHBhcnNlZCAgICAgICAgPSBzcGxpdEVzY2FwZWQobW9kZXNTdHIsICc6Jyk7XG4gICAgY29uc3QgcGF0aCAgICAgICAgICA9IGdldFBhdGhGcm9tUGFyc2VkTW9kZXMocGFyc2VkLCBBVkFJTEFCTEVfTU9ERVMpO1xuICAgIGNvbnN0IGRldGVjdGVkTW9kZXMgPSBnZXRNb2RlcyhwYXJzZWQsIEFWQUlMQUJMRV9NT0RFUyk7XG4gICAgbGV0IG9wdGlvbnNTdHJpbmcgPSAnJztcblxuICAgIGlmIChwYXJzZWQubGVuZ3RoKVxuICAgICAgICBvcHRpb25zU3RyaW5nID0gcGFyc2VkLnNoaWZ0KCk7XG5cbiAgICB3aGlsZSAocGFyc2VkLmxlbmd0aClcbiAgICAgICAgb3B0aW9uc1N0cmluZyArPSAnOicgKyBwYXJzZWQuc2hpZnQoKTtcblxuICAgIGNvbnN0IHVzZXJQcm9maWxlID0gZGV0ZWN0ZWRNb2Rlcy51c2VyUHJvZmlsZSB8fCB1c2VyQXJncy51c2VyRGF0YURpcjtcbiAgICBjb25zdCBoZWFkbGVzcyAgICA9IGRldGVjdGVkTW9kZXMuaGVhZGxlc3MgfHwgdXNlckFyZ3MuaGVhZGxlc3M7XG4gICAgY29uc3QgZW11bGF0aW9uICAgPSBkZXRlY3RlZE1vZGVzLmVtdWxhdGlvbiB8fCBoZWFkbGVzcztcblxuICAgIGNvbnN0IG1vZGVzID0ge1xuICAgICAgICBwYXRoLFxuICAgICAgICB1c2VyUHJvZmlsZSxcbiAgICAgICAgaGVhZGxlc3MsXG4gICAgICAgIGVtdWxhdGlvbixcbiAgICB9O1xuXG4gICAgcmV0dXJuIHsgbW9kZXMsIG9wdGlvbnNTdHJpbmcgfTtcbn1cblxuZnVuY3Rpb24gc2ltcGxpZnlEZXZpY2VOYW1lIChkZXZpY2VOYW1lKSB7XG4gICAgcmV0dXJuIGRldmljZU5hbWUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5mdW5jdGlvbiBmaW5kRGV2aWNlIChkZXZpY2VOYW1lKSB7XG4gICAgY29uc3Qgc2ltcGxlTmFtZSA9IHNpbXBsaWZ5RGV2aWNlTmFtZShkZXZpY2VOYW1lKTtcblxuICAgIHJldHVybiBlbXVsYXRlZERldmljZXMuZmlsdGVyKGRldmljZSA9PiBzaW1wbGlmeURldmljZU5hbWUoZGV2aWNlLnRpdGxlKS5pbmRleE9mKHNpbXBsZU5hbWUpID49IDApWzBdO1xufVxuXG5mdW5jdGlvbiBnZXREZXZpY2VCYXNlZE9wdGlvbnMgKGRldmljZU5hbWUsIG9yaWVudGF0aW9uKSB7XG4gICAgaWYgKCFkZXZpY2VOYW1lKVxuICAgICAgICByZXR1cm4ge307XG5cbiAgICBjb25zdCBkZXZpY2VEYXRhID0gZmluZERldmljZShkZXZpY2VOYW1lKTtcblxuICAgIGlmICghZGV2aWNlRGF0YSlcbiAgICAgICAgcmV0dXJuIHt9O1xuXG4gICAgY29uc3QgbW9iaWxlID0gZGV2aWNlRGF0YS5jYXBhYmlsaXRpZXMuaW5kZXhPZignbW9iaWxlJykgPj0gMDtcblxuICAgIGlmICghb3JpZW50YXRpb24pXG4gICAgICAgIG9yaWVudGF0aW9uID0gbW9iaWxlID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcblxuICAgIHJldHVybiB7XG4gICAgICAgIGRldmljZU5hbWU6ICBkZXZpY2VEYXRhLnRpdGxlLFxuICAgICAgICBtb2JpbGU6ICAgICAgbW9iaWxlLFxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb24sXG4gICAgICAgIHRvdWNoOiAgICAgICBkZXZpY2VEYXRhLmNhcGFiaWxpdGllcy5pbmRleE9mKCd0b3VjaCcpID49IDAsXG4gICAgICAgIHdpZHRoOiAgICAgICBkZXZpY2VEYXRhLnNjcmVlbltvcmllbnRhdGlvbl0ud2lkdGgsXG4gICAgICAgIGhlaWdodDogICAgICBkZXZpY2VEYXRhLnNjcmVlbltvcmllbnRhdGlvbl0uaGVpZ2h0LFxuICAgICAgICBzY2FsZUZhY3RvcjogZGV2aWNlRGF0YS5zY3JlZW5bJ2RldmljZS1waXhlbC1yYXRpbyddLFxuICAgICAgICB1c2VyQWdlbnQ6ICAgZGV2aWNlRGF0YVsndXNlci1hZ2VudCddLFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlT3B0aW9ucyAoc3RyLCB1c2VEZWZhdWx0RGltZW5zaW9ucykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHNwbGl0RXNjYXBlZChzdHIsICc7Jyk7XG5cbiAgICBjb25zdCBiYXNlT3B0aW9ucyA9IHtcbiAgICAgICAgd2lkdGg6ICAgICAgIHVzZURlZmF1bHREaW1lbnNpb25zID8gSEVBRExFU1NfREVGQVVMVF9XSURUSCA6IDAsXG4gICAgICAgIGhlaWdodDogICAgICB1c2VEZWZhdWx0RGltZW5zaW9ucyA/IEhFQURMRVNTX0RFRkFVTFRfSEVJR0hUIDogMCxcbiAgICAgICAgc2NhbGVGYWN0b3I6IDAsXG4gICAgICAgIG1vYmlsZTogICAgICBmYWxzZSxcbiAgICAgICAgY2RwUG9ydDogICAgIGZpbmRNYXRjaChwYXJzZWQsIC9eY2RwUG9ydD0oLiopLyksXG4gICAgfTtcblxuICAgIGNvbnN0IGRldmljZU5hbWUgICAgICAgICA9IGZpbmRNYXRjaChwYXJzZWQsIC9eZGV2aWNlPSguKikvKTtcbiAgICBjb25zdCBvcmllbnRhdGlvbiAgICAgICAgPSBmaW5kTWF0Y2gocGFyc2VkLCAvXm9yaWVudGF0aW9uPSguKikvKTtcbiAgICBjb25zdCBkZXZpY2VCYXNlZE9wdGlvbnMgPSBnZXREZXZpY2VCYXNlZE9wdGlvbnMoZGV2aWNlTmFtZSwgb3JpZW50YXRpb24pO1xuXG4gICAgbGV0IHNwZWNpZmllZERldmljZU9wdGlvbnMgPSB7XG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbixcbiAgICAgICAgdG91Y2g6ICAgICAgIGhhc01hdGNoKHBhcnNlZCwgL150b3VjaD0vKSA/IGlzTWF0Y2hUcnVlKHBhcnNlZCwgL150b3VjaD0oLiopLykgOiB2b2lkIDAsXG4gICAgICAgIG1vYmlsZTogICAgICBpc01hdGNoVHJ1ZShwYXJzZWQsIC9ebW9iaWxlPSguKikvKSxcbiAgICAgICAgd2lkdGg6ICAgICAgIE51bWJlcihmaW5kTWF0Y2gocGFyc2VkLCAvXndpZHRoPSguKikvKSB8fCBOYU4pLFxuICAgICAgICBoZWlnaHQ6ICAgICAgTnVtYmVyKGZpbmRNYXRjaChwYXJzZWQsIC9eaGVpZ2h0PSguKikvKSB8fCBOYU4pLFxuICAgICAgICBzY2FsZUZhY3RvcjogTnVtYmVyKGZpbmRNYXRjaChwYXJzZWQsIC9ec2NhbGVGYWN0b3I9KC4qKS8pIHx8IE5hTiksXG4gICAgICAgIHVzZXJBZ2VudDogICBmaW5kTWF0Y2gocGFyc2VkLCAvXnVzZXJBZ2VudD0oLiopLyksXG4gICAgfTtcblxuICAgIHNwZWNpZmllZERldmljZU9wdGlvbnMgPSBmaWx0ZXJQcm9wZXJ0aWVzKHNwZWNpZmllZERldmljZU9wdGlvbnMsIG9wdGlvblZhbHVlID0+IHtcbiAgICAgICAgcmV0dXJuIG9wdGlvblZhbHVlICE9PSB2b2lkIDAgJiYgb3B0aW9uVmFsdWUgIT09ICcnICYmICFOdW1iZXIuaXNOYU4ob3B0aW9uVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYmFzZU9wdGlvbnMsIGRldmljZUJhc2VkT3B0aW9ucywgc3BlY2lmaWVkRGV2aWNlT3B0aW9ucyk7XG59XG5cblxuZnVuY3Rpb24gZ2V0TmV3Q29uZmlnIChjb25maWdTdHJpbmcpIHtcbiAgICBjb25zdCB7IHVzZXJBcmdzLCBtb2Rlc1N0cmluZyB9ID0gcGFyc2VDb25maWcoY29uZmlnU3RyaW5nKTtcbiAgICBjb25zdCBwYXJzZWRVc2VyQXJncyAgICAgICAgICAgID0gcGFyc2VVc2VyQXJncyh1c2VyQXJncyk7XG4gICAgY29uc3QgeyBtb2Rlcywgb3B0aW9uc1N0cmluZyB9ICA9IHBhcnNlTW9kZXMobW9kZXNTdHJpbmcsIHBhcnNlZFVzZXJBcmdzKTtcbiAgICBjb25zdCB1c2VEZWZhdWx0RGltZW5zaW9ucyAgICAgID0gbW9kZXMuaGVhZGxlc3MgJiYgIXBhcnNlZFVzZXJBcmdzLndpbmRvd1NpemU7XG4gICAgY29uc3Qgb3B0aW9ucyAgICAgICAgICAgICAgICAgICA9IHBhcnNlT3B0aW9ucyhvcHRpb25zU3RyaW5nLCB1c2VEZWZhdWx0RGltZW5zaW9ucyk7XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7IHVzZXJBcmdzIH0sIG1vZGVzLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGNvbmZpZ1N0cmluZykge1xuICAgIGlmICghY29uZmlnQ2FjaGVbY29uZmlnU3RyaW5nXSlcbiAgICAgICAgY29uZmlnQ2FjaGVbY29uZmlnU3RyaW5nXSA9IGdldE5ld0NvbmZpZyhjb25maWdTdHJpbmcpO1xuXG4gICAgcmV0dXJuIGNvbmZpZ0NhY2hlW2NvbmZpZ1N0cmluZ107XG59XG4iXX0=
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvYnVpbHQtaW4vZGVkaWNhdGVkL2Nocm9tZS9jb25maWcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQ0FBK0M7QUFDL0MsbUNBQStEO0FBQy9ELHNFQUV5QztBQUd6QyxNQUFNLHNCQUFzQixHQUFJLElBQUksQ0FBQztBQUNyQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUVwQyxNQUFNLGVBQWUsR0FBRyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFakUsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBRXZCLFNBQVMsYUFBYSxDQUFFLFFBQVE7SUFDNUIsTUFBTSxVQUFVLEdBQUc7UUFDZixRQUFRLEVBQUssS0FBSztRQUNsQixXQUFXLEVBQUUsS0FBSztRQUNsQixVQUFVLEVBQUcsS0FBSztLQUNyQixDQUFDO0lBRUYsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFOUQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN2QixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sR0FBRyxHQUFZLElBQUEsa0JBQVMsRUFBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoRCxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFFLFFBQVEs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O0FBTEQsNEJBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbXVsYXRlZERldmljZXMgfSBmcm9tICdkZXZpY2Utc3BlY3MnO1xuaW1wb3J0IHsgcGlja0J5IGFzIGZpbHRlclByb3BlcnRpZXMsIGNhbWVsQ2FzZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICAgIGhhc01hdGNoLCBmaW5kTWF0Y2gsIGlzTWF0Y2hUcnVlLCBnZXRNb2Rlcywgc3BsaXRFc2NhcGVkLCBnZXRQYXRoRnJvbVBhcnNlZE1vZGVzLCBwYXJzZUNvbmZpZyxcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJndW1lbnQtcGFyc2luZyc7XG5cblxuY29uc3QgSEVBRExFU1NfREVGQVVMVF9XSURUSCAgPSAxMjgwO1xuY29uc3QgSEVBRExFU1NfREVGQVVMVF9IRUlHSFQgPSA4MDA7XG5cbmNvbnN0IEFWQUlMQUJMRV9NT0RFUyA9IFsndXNlclByb2ZpbGUnLCAnaGVhZGxlc3MnLCAnZW11bGF0aW9uJ107XG5cbmNvbnN0IGNvbmZpZ0NhY2hlID0ge307XG5cbmZ1bmN0aW9uIHBhcnNlVXNlckFyZ3MgKHVzZXJBcmdzKSB7XG4gICAgY29uc3QgcGFyc2VkQXJncyA9IHtcbiAgICAgICAgaGVhZGxlc3M6ICAgIGZhbHNlLFxuICAgICAgICB1c2VyRGF0YURpcjogZmFsc2UsXG4gICAgICAgIHdpbmRvd1NpemU6ICBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3BsaXR0ZWRBcmdzID0gdXNlckFyZ3Muc3BsaXQoJyAnKS5maWx0ZXIoYXJnID0+ICEhYXJnKTtcblxuICAgIHNwbGl0dGVkQXJncy5mb3JFYWNoKGFyZyA9PiB7XG4gICAgICAgIGNvbnN0IGtleVZhbHVlUGFpciA9IGFyZy5zcGxpdCgnPScpO1xuICAgICAgICBjb25zdCBrZXkgICAgICAgICAgPSBjYW1lbENhc2Uoa2V5VmFsdWVQYWlyWzBdKTtcblxuICAgICAgICBwYXJzZWRBcmdzW2tleV0gPSBwYXJzZWRBcmdzW2tleV0gIT09IHZvaWQgMDtcbiAgICB9KTtcblxuICAgIHJldHVybiBwYXJzZWRBcmdzO1xufVxuXG5mdW5jdGlvbiBwYXJzZU1vZGVzIChtb2Rlc1N0ciwgdXNlckFyZ3MpIHtcbiAgICBjb25zdCBwYXJzZWQgICAgICAgID0gc3BsaXRFc2NhcGVkKG1vZGVzU3RyLCAnOicpO1xuICAgIGNvbnN0IHBhdGggICAgICAgICAgPSBnZXRQYXRoRnJvbVBhcnNlZE1vZGVzKHBhcnNlZCwgQVZBSUxBQkxFX01PREVTKTtcbiAgICBjb25zdCBkZXRlY3RlZE1vZGVzID0gZ2V0TW9kZXMocGFyc2VkLCBBVkFJTEFCTEVfTU9ERVMpO1xuICAgIGxldCBvcHRpb25zU3RyaW5nID0gJyc7XG5cbiAgICBpZiAocGFyc2VkLmxlbmd0aClcbiAgICAgICAgb3B0aW9uc1N0cmluZyA9IHBhcnNlZC5zaGlmdCgpO1xuXG4gICAgd2hpbGUgKHBhcnNlZC5sZW5ndGgpXG4gICAgICAgIG9wdGlvbnNTdHJpbmcgKz0gJzonICsgcGFyc2VkLnNoaWZ0KCk7XG5cbiAgICBjb25zdCB1c2VyUHJvZmlsZSA9IGRldGVjdGVkTW9kZXMudXNlclByb2ZpbGUgfHwgdXNlckFyZ3MudXNlckRhdGFEaXI7XG4gICAgY29uc3QgaGVhZGxlc3MgICAgPSBkZXRlY3RlZE1vZGVzLmhlYWRsZXNzIHx8IHVzZXJBcmdzLmhlYWRsZXNzO1xuICAgIGNvbnN0IGVtdWxhdGlvbiAgID0gZGV0ZWN0ZWRNb2Rlcy5lbXVsYXRpb24gfHwgaGVhZGxlc3M7XG5cbiAgICBjb25zdCBtb2RlcyA9IHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgdXNlclByb2ZpbGUsXG4gICAgICAgIGhlYWRsZXNzLFxuICAgICAgICBlbXVsYXRpb24sXG4gICAgfTtcblxuICAgIHJldHVybiB7IG1vZGVzLCBvcHRpb25zU3RyaW5nIH07XG59XG5cbmZ1bmN0aW9uIHNpbXBsaWZ5RGV2aWNlTmFtZSAoZGV2aWNlTmFtZSkge1xuICAgIHJldHVybiBkZXZpY2VOYW1lLnJlcGxhY2UoL1xccy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gZmluZERldmljZSAoZGV2aWNlTmFtZSkge1xuICAgIGNvbnN0IHNpbXBsZU5hbWUgPSBzaW1wbGlmeURldmljZU5hbWUoZGV2aWNlTmFtZSk7XG5cbiAgICByZXR1cm4gZW11bGF0ZWREZXZpY2VzLmZpbHRlcihkZXZpY2UgPT4gc2ltcGxpZnlEZXZpY2VOYW1lKGRldmljZS50aXRsZSkuaW5kZXhPZihzaW1wbGVOYW1lKSA+PSAwKVswXTtcbn1cblxuZnVuY3Rpb24gZ2V0RGV2aWNlQmFzZWRPcHRpb25zIChkZXZpY2VOYW1lLCBvcmllbnRhdGlvbikge1xuICAgIGlmICghZGV2aWNlTmFtZSlcbiAgICAgICAgcmV0dXJuIHt9O1xuXG4gICAgY29uc3QgZGV2aWNlRGF0YSA9IGZpbmREZXZpY2UoZGV2aWNlTmFtZSk7XG5cbiAgICBpZiAoIWRldmljZURhdGEpXG4gICAgICAgIHJldHVybiB7fTtcblxuICAgIGNvbnN0IG1vYmlsZSA9IGRldmljZURhdGEuY2FwYWJpbGl0aWVzLmluZGV4T2YoJ21vYmlsZScpID49IDA7XG5cbiAgICBpZiAoIW9yaWVudGF0aW9uKVxuICAgICAgICBvcmllbnRhdGlvbiA9IG1vYmlsZSA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBkZXZpY2VOYW1lOiAgZGV2aWNlRGF0YS50aXRsZSxcbiAgICAgICAgbW9iaWxlOiAgICAgIG1vYmlsZSxcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uLFxuICAgICAgICB0b3VjaDogICAgICAgZGV2aWNlRGF0YS5jYXBhYmlsaXRpZXMuaW5kZXhPZigndG91Y2gnKSA+PSAwLFxuICAgICAgICB3aWR0aDogICAgICAgZGV2aWNlRGF0YS5zY3JlZW5bb3JpZW50YXRpb25dLndpZHRoLFxuICAgICAgICBoZWlnaHQ6ICAgICAgZGV2aWNlRGF0YS5zY3JlZW5bb3JpZW50YXRpb25dLmhlaWdodCxcbiAgICAgICAgc2NhbGVGYWN0b3I6IGRldmljZURhdGEuc2NyZWVuWydkZXZpY2UtcGl4ZWwtcmF0aW8nXSxcbiAgICAgICAgdXNlckFnZW50OiAgIGRldmljZURhdGFbJ3VzZXItYWdlbnQnXSxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBwYXJzZU9wdGlvbnMgKHN0ciwgdXNlRGVmYXVsdERpbWVuc2lvbnMpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBzcGxpdEVzY2FwZWQoc3RyLCAnOycpO1xuXG4gICAgY29uc3QgYmFzZU9wdGlvbnMgPSB7XG4gICAgICAgIHdpZHRoOiAgICAgICB1c2VEZWZhdWx0RGltZW5zaW9ucyA/IEhFQURMRVNTX0RFRkFVTFRfV0lEVEggOiAwLFxuICAgICAgICBoZWlnaHQ6ICAgICAgdXNlRGVmYXVsdERpbWVuc2lvbnMgPyBIRUFETEVTU19ERUZBVUxUX0hFSUdIVCA6IDAsXG4gICAgICAgIHNjYWxlRmFjdG9yOiAwLFxuICAgICAgICBtb2JpbGU6ICAgICAgZmFsc2UsXG4gICAgICAgIGNkcFBvcnQ6ICAgICBmaW5kTWF0Y2gocGFyc2VkLCAvXmNkcFBvcnQ9KC4qKS8pLFxuICAgIH07XG5cbiAgICBjb25zdCBkZXZpY2VOYW1lICAgICAgICAgPSBmaW5kTWF0Y2gocGFyc2VkLCAvXmRldmljZT0oLiopLyk7XG4gICAgY29uc3Qgb3JpZW50YXRpb24gICAgICAgID0gZmluZE1hdGNoKHBhcnNlZCwgL15vcmllbnRhdGlvbj0oLiopLyk7XG4gICAgY29uc3QgZGV2aWNlQmFzZWRPcHRpb25zID0gZ2V0RGV2aWNlQmFzZWRPcHRpb25zKGRldmljZU5hbWUsIG9yaWVudGF0aW9uKTtcblxuICAgIGxldCBzcGVjaWZpZWREZXZpY2VPcHRpb25zID0ge1xuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb24sXG4gICAgICAgIHRvdWNoOiAgICAgICBoYXNNYXRjaChwYXJzZWQsIC9edG91Y2g9LykgPyBpc01hdGNoVHJ1ZShwYXJzZWQsIC9edG91Y2g9KC4qKS8pIDogdm9pZCAwLFxuICAgICAgICBtb2JpbGU6ICAgICAgaXNNYXRjaFRydWUocGFyc2VkLCAvXm1vYmlsZT0oLiopLyksXG4gICAgICAgIHdpZHRoOiAgICAgICBOdW1iZXIoZmluZE1hdGNoKHBhcnNlZCwgL153aWR0aD0oLiopLykgfHwgTmFOKSxcbiAgICAgICAgaGVpZ2h0OiAgICAgIE51bWJlcihmaW5kTWF0Y2gocGFyc2VkLCAvXmhlaWdodD0oLiopLykgfHwgTmFOKSxcbiAgICAgICAgc2NhbGVGYWN0b3I6IE51bWJlcihmaW5kTWF0Y2gocGFyc2VkLCAvXnNjYWxlRmFjdG9yPSguKikvKSB8fCBOYU4pLFxuICAgICAgICB1c2VyQWdlbnQ6ICAgZmluZE1hdGNoKHBhcnNlZCwgL151c2VyQWdlbnQ9KC4qKS8pLFxuICAgIH07XG5cbiAgICBzcGVjaWZpZWREZXZpY2VPcHRpb25zID0gZmlsdGVyUHJvcGVydGllcyhzcGVjaWZpZWREZXZpY2VPcHRpb25zLCBvcHRpb25WYWx1ZSA9PiB7XG4gICAgICAgIHJldHVybiBvcHRpb25WYWx1ZSAhPT0gdm9pZCAwICYmIG9wdGlvblZhbHVlICE9PSAnJyAmJiAhTnVtYmVyLmlzTmFOKG9wdGlvblZhbHVlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGJhc2VPcHRpb25zLCBkZXZpY2VCYXNlZE9wdGlvbnMsIHNwZWNpZmllZERldmljZU9wdGlvbnMpO1xufVxuXG5cbmZ1bmN0aW9uIGdldE5ld0NvbmZpZyAoY29uZmlnU3RyaW5nKSB7XG4gICAgY29uc3QgeyB1c2VyQXJncywgbW9kZXNTdHJpbmcgfSA9IHBhcnNlQ29uZmlnKGNvbmZpZ1N0cmluZyk7XG4gICAgY29uc3QgcGFyc2VkVXNlckFyZ3MgICAgICAgICAgICA9IHBhcnNlVXNlckFyZ3ModXNlckFyZ3MpO1xuICAgIGNvbnN0IHsgbW9kZXMsIG9wdGlvbnNTdHJpbmcgfSAgPSBwYXJzZU1vZGVzKG1vZGVzU3RyaW5nLCBwYXJzZWRVc2VyQXJncyk7XG4gICAgY29uc3QgdXNlRGVmYXVsdERpbWVuc2lvbnMgICAgICA9IG1vZGVzLmhlYWRsZXNzICYmICFwYXJzZWRVc2VyQXJncy53aW5kb3dTaXplO1xuICAgIGNvbnN0IG9wdGlvbnMgICAgICAgICAgICAgICAgICAgPSBwYXJzZU9wdGlvbnMob3B0aW9uc1N0cmluZywgdXNlRGVmYXVsdERpbWVuc2lvbnMpO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oeyB1c2VyQXJncyB9LCBtb2Rlcywgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChjb25maWdTdHJpbmcpIHtcbiAgICBpZiAoIWNvbmZpZ0NhY2hlW2NvbmZpZ1N0cmluZ10pXG4gICAgICAgIGNvbmZpZ0NhY2hlW2NvbmZpZ1N0cmluZ10gPSBnZXROZXdDb25maWcoY29uZmlnU3RyaW5nKTtcblxuICAgIHJldHVybiBjb25maWdDYWNoZVtjb25maWdTdHJpbmddO1xufVxuIl19
|
|
@@ -10,7 +10,7 @@ const promisified_functions_1 = require("../../../../../utils/promisified-functi
|
|
|
10
10
|
async function default_1(proxyHostName, disableMultipleWindows) {
|
|
11
11
|
const tempDir = await temp_directory_1.default.createDirectory('chrome-profile');
|
|
12
12
|
const profileDirName = path_1.default.join(tempDir.path, 'Default');
|
|
13
|
-
await make_dir_1.default(profileDirName);
|
|
13
|
+
await (0, make_dir_1.default)(profileDirName);
|
|
14
14
|
const preferences = {
|
|
15
15
|
'credentials_enable_service': false,
|
|
16
16
|
'devtools': {
|
|
@@ -38,10 +38,10 @@ async function default_1(proxyHostName, disableMultipleWindows) {
|
|
|
38
38
|
'enabled': false,
|
|
39
39
|
},
|
|
40
40
|
};
|
|
41
|
-
await promisified_functions_1.writeFile(path_1.default.join(profileDirName, 'Preferences'), JSON.stringify(preferences));
|
|
42
|
-
await promisified_functions_1.writeFile(path_1.default.join(tempDir.path, 'First Run'), '');
|
|
41
|
+
await (0, promisified_functions_1.writeFile)(path_1.default.join(profileDirName, 'Preferences'), JSON.stringify(preferences));
|
|
42
|
+
await (0, promisified_functions_1.writeFile)(path_1.default.join(tempDir.path, 'First Run'), '');
|
|
43
43
|
return tempDir;
|
|
44
44
|
}
|
|
45
45
|
exports.default = default_1;
|
|
46
46
|
module.exports = exports.default;
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRlbXAtcHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9icm93c2VyL3Byb3ZpZGVyL2J1aWx0LWluL2RlZGljYXRlZC9jaHJvbWUvY3JlYXRlLXRlbXAtcHJvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4Qix3REFBK0I7QUFDL0IseUZBQWdFO0FBQ2hFLHNGQUF1RTtBQUV4RCxLQUFLLG9CQUFXLGFBQXFCLEVBQUUsc0JBQStCO0lBQ2pGLE1BQU0sT0FBTyxHQUFVLE1BQU0sd0JBQWEsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3RSxNQUFNLGNBQWMsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFMUQsTUFBTSxJQUFBLGtCQUFPLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFFOUIsTUFBTSxXQUFXLEdBQUc7UUFDaEIsNEJBQTRCLEVBQUUsS0FBSztRQUVuQyxVQUFVLEVBQUU7WUFDUixhQUFhLEVBQUU7Z0JBQ1gsa0JBQWtCLEVBQUUsWUFBWTtnQkFDaEMsZUFBZSxFQUFLLFVBQVU7YUFDakM7U0FDSjtRQUNELFNBQVMsRUFBRTtZQUNQLDRCQUE0QixFQUFFLElBQUk7U0FDckM7UUFDRCxTQUFTLEVBQUU7WUFDUCxrQkFBa0IsRUFBRTtnQkFDaEIsWUFBWSxrQkFDUixxQkFBcUIsRUFBRTt3QkFDbkIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7cUJBQ2xDLElBQ0UsQ0FBQyxzQkFBc0IsSUFBSTtvQkFDMUIsUUFBUSxFQUFFO3dCQUNOLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO3FCQUNsQztpQkFDSixDQUNKO2FBQ0o7WUFFRCwwQkFBMEIsRUFBRSxLQUFLO1NBQ3BDO1FBRUQsV0FBVyxFQUFFO1lBQ1QsU0FBUyxFQUFFLEtBQUs7U0FDbkI7S0FDSixDQUFDO0lBRUYsTUFBTSxJQUFBLGlDQUFTLEVBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLE1BQU0sSUFBQSxpQ0FBUyxFQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUUxRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBNUNELDRCQTRDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG1ha2VEaXIgZnJvbSAnbWFrZS1kaXInO1xuaW1wb3J0IFRlbXBEaXJlY3RvcnkgZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbHMvdGVtcC1kaXJlY3RvcnknO1xuaW1wb3J0IHsgd3JpdGVGaWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbHMvcHJvbWlzaWZpZWQtZnVuY3Rpb25zJztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKHByb3h5SG9zdE5hbWU6IHN0cmluZywgZGlzYWJsZU11bHRpcGxlV2luZG93czogYm9vbGVhbik6IFByb21pc2U8VGVtcERpcmVjdG9yeT4ge1xuICAgIGNvbnN0IHRlbXBEaXIgICAgICAgID0gYXdhaXQgVGVtcERpcmVjdG9yeS5jcmVhdGVEaXJlY3RvcnkoJ2Nocm9tZS1wcm9maWxlJyk7XG4gICAgY29uc3QgcHJvZmlsZURpck5hbWUgPSBwYXRoLmpvaW4odGVtcERpci5wYXRoLCAnRGVmYXVsdCcpO1xuXG4gICAgYXdhaXQgbWFrZURpcihwcm9maWxlRGlyTmFtZSk7XG5cbiAgICBjb25zdCBwcmVmZXJlbmNlcyA9IHtcbiAgICAgICAgJ2NyZWRlbnRpYWxzX2VuYWJsZV9zZXJ2aWNlJzogZmFsc2UsXG5cbiAgICAgICAgJ2RldnRvb2xzJzoge1xuICAgICAgICAgICAgJ3ByZWZlcmVuY2VzJzoge1xuICAgICAgICAgICAgICAgICdjdXJyZW50RG9ja1N0YXRlJzogJ1widW5kb2NrZWRcIicsXG4gICAgICAgICAgICAgICAgJ2xhc3REb2NrU3RhdGUnOiAgICAnXCJib3R0b21cIicsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAncGx1Z2lucyc6IHtcbiAgICAgICAgICAgICdhbHdheXNfb3Blbl9wZGZfZXh0ZXJuYWxseSc6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgICdwcm9maWxlJzoge1xuICAgICAgICAgICAgJ2NvbnRlbnRfc2V0dGluZ3MnOiB7XG4gICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbnMnOiB7XG4gICAgICAgICAgICAgICAgICAgICdhdXRvbWF0aWNfZG93bmxvYWRzJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3h5SG9zdE5hbWVdOiB7IHNldHRpbmc6IDEgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgLi4uIWRpc2FibGVNdWx0aXBsZVdpbmRvd3MgJiYge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcHVwcyc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJveHlIb3N0TmFtZV06IHsgc2V0dGluZzogMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgJ3Bhc3N3b3JkX21hbmFnZXJfZW5hYmxlZCc6IGZhbHNlLFxuICAgICAgICB9LFxuXG4gICAgICAgICd0cmFuc2xhdGUnOiB7XG4gICAgICAgICAgICAnZW5hYmxlZCc6IGZhbHNlLFxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCB3cml0ZUZpbGUocGF0aC5qb2luKHByb2ZpbGVEaXJOYW1lLCAnUHJlZmVyZW5jZXMnKSwgSlNPTi5zdHJpbmdpZnkocHJlZmVyZW5jZXMpKTtcbiAgICBhd2FpdCB3cml0ZUZpbGUocGF0aC5qb2luKHRlbXBEaXIucGF0aCwgJ0ZpcnN0IFJ1bicpLCAnJyk7XG5cbiAgICByZXR1cm4gdGVtcERpcjtcbn1cbiJdfQ==
|
|
@@ -14,7 +14,7 @@ const cdp_client_1 = require("./cdp-client");
|
|
|
14
14
|
const resource_injector_1 = __importDefault(require("../../../../../proxyless/resource-injector"));
|
|
15
15
|
const MIN_AVAILABLE_DIMENSION = 50;
|
|
16
16
|
exports.default = Object.assign(Object.assign({}, base_1.default), { getConfig(name) {
|
|
17
|
-
return config_1.default(name);
|
|
17
|
+
return (0, config_1.default)(name);
|
|
18
18
|
},
|
|
19
19
|
_getBrowserProtocolClient(runtimeInfo) {
|
|
20
20
|
return runtimeInfo.browserClient;
|
|
@@ -39,7 +39,7 @@ exports.default = Object.assign(Object.assign({}, base_1.default), { getConfig(n
|
|
|
39
39
|
await resourceInjector.setup(cdpClient);
|
|
40
40
|
},
|
|
41
41
|
async openBrowser(browserId, pageUrl, config, disableMultipleWindows, proxyless) {
|
|
42
|
-
const parsedPageUrl = url_1.parse(pageUrl);
|
|
42
|
+
const parsedPageUrl = (0, url_1.parse)(pageUrl);
|
|
43
43
|
const runtimeInfo = await this._createRunTimeInfo(parsedPageUrl.hostname, config, disableMultipleWindows);
|
|
44
44
|
runtimeInfo.browserName = this._getBrowserName();
|
|
45
45
|
runtimeInfo.browserId = browserId;
|
|
@@ -49,9 +49,9 @@ exports.default = Object.assign(Object.assign({}, base_1.default), { getConfig(n
|
|
|
49
49
|
};
|
|
50
50
|
//NOTE: A not-working tab is opened when the browser start in the docker so we should create a new tab.
|
|
51
51
|
if (runtimeInfo.inDocker)
|
|
52
|
-
await local_chrome_1.startOnDocker(pageUrl, runtimeInfo);
|
|
52
|
+
await (0, local_chrome_1.startOnDocker)(pageUrl, runtimeInfo);
|
|
53
53
|
else
|
|
54
|
-
await local_chrome_1.start(pageUrl, runtimeInfo);
|
|
54
|
+
await (0, local_chrome_1.start)(pageUrl, runtimeInfo);
|
|
55
55
|
await this.waitForConnectionReady(browserId);
|
|
56
56
|
runtimeInfo.viewportSize = await this.runInitScript(browserId, client_functions_1.GET_WINDOW_DIMENSIONS_INFO_SCRIPT);
|
|
57
57
|
runtimeInfo.activeWindowId = null;
|
|
@@ -73,7 +73,7 @@ exports.default = Object.assign(Object.assign({}, base_1.default), { getConfig(n
|
|
|
73
73
|
else
|
|
74
74
|
await this.closeLocalBrowser(browserId);
|
|
75
75
|
if (os_family_1.default.mac || runtimeInfo.config.headless)
|
|
76
|
-
await local_chrome_1.stop(runtimeInfo);
|
|
76
|
+
await (0, local_chrome_1.stop)(runtimeInfo);
|
|
77
77
|
if (runtimeInfo.tempProfileDir && !closingInfo.isRestarting)
|
|
78
78
|
await runtimeInfo.tempProfileDir.dispose();
|
|
79
79
|
delete this.openedBrowsers[browserId];
|
|
@@ -121,4 +121,4 @@ exports.default = Object.assign(Object.assign({}, base_1.default), { getConfig(n
|
|
|
121
121
|
}
|
|
122
122
|
} });
|
|
123
123
|
module.exports = exports.default;
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvY2hyb21lL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMERBQTJCO0FBQzNCLDZCQUF3QztBQUN4QyxtREFBNEM7QUFDNUMsa0VBQStDO0FBQy9DLHNEQUFpQztBQUNqQyxpREFJd0I7QUFDeEIsc0VBQW9GO0FBQ3BGLDZDQUE2QztBQUM3QyxtR0FBMEU7QUFFMUUsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFFbkMsa0RBQ08sY0FBcUIsS0FFeEIsU0FBUyxDQUFFLElBQUk7UUFDWCxPQUFPLGdCQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELHlCQUF5QixDQUFFLFdBQVc7UUFDbEMsT0FBTyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxzQkFBc0I7UUFDOUQsT0FBTyxzQkFBaUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCx1Q0FBdUMsQ0FBRSxTQUFTLEVBQUUsTUFBTTtRQUN0RCxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUN6QyxNQUFNLGlCQUFpQixHQUFXLFNBQVMsSUFBSSxVQUFVLENBQUM7UUFFMUQsSUFBSSxDQUFDLGlCQUFpQjtZQUNsQixPQUFPO1FBRVgsTUFBTSxRQUFRLEdBQUcsYUFBYSxVQUFVLEVBQUUsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBSTtZQUNiLGlCQUFpQixFQUFFLElBQUk7U0FDMUIsQ0FBQztRQUVGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE9B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LENBQUMsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7WUFFcEYsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUNwRjtJQUNMLENBQUMsSUFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPUyBmcm9tICdvcy1mYW1pbHknO1xuaW1wb3J0IHsgcGFyc2UgYXMgcGFyc2VVcmwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IGRlZGljYXRlZFByb3ZpZGVyQmFzZSBmcm9tICcuLi9iYXNlJztcbmltcG9ydCBDaHJvbWVSdW5UaW1lSW5mbyBmcm9tICcuL3J1bnRpbWUtaW5mbyc7XG5pbXBvcnQgZ2V0Q29uZmlnIGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7XG4gICAgc3RhcnQgYXMgc3RhcnRMb2NhbENocm9tZSxcbiAgICBzdGFydE9uRG9ja2VyIGFzIHN0YXJ0TG9jYWxDaHJvbWVPbkRvY2tlcixcbiAgICBzdG9wIGFzIHN0b3BMb2NhbENocm9tZSxcbn0gZnJvbSAnLi9sb2NhbC1jaHJvbWUnO1xuaW1wb3J0IHsgR0VUX1dJTkRPV19ESU1FTlNJT05TX0lORk9fU0NSSVBUIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xpZW50LWZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBCcm93c2VyQ2xpZW50IH0gZnJvbSAnLi9jZHAtY2xpZW50JztcbmltcG9ydCBSZXNvdXJjZUluamVjdG9yIGZyb20gJy4uLy4uLy4uLy4uLy4uL3Byb3h5bGVzcy9yZXNvdXJjZS1pbmplY3Rvcic7XG5cbmNvbnN0IE1JTl9BVkFJTEFCTEVfRElNRU5TSU9OID0gNTA7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICAuLi5kZWRpY2F0ZWRQcm92aWRlckJhc2UsXG5cbiAgICBnZXRDb25maWcgKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGdldENvbmZpZyhuYW1lKTtcbiAgICB9LFxuXG4gICAgX2dldEJyb3dzZXJQcm90b2NvbENsaWVudCAocnVudGltZUluZm8pIHtcbiAgICAgICAgcmV0dXJuIHJ1bnRpbWVJbmZvLmJyb3dzZXJDbGllbnQ7XG4gICAgfSxcblxuICAgIGFzeW5jIF9jcmVhdGVSdW5UaW1lSW5mbyAoaG9zdE5hbWUsIGNvbmZpZywgZGlzYWJsZU11bHRpcGxlV2luZG93cykge1xuICAgICAgICByZXR1cm4gQ2hyb21lUnVuVGltZUluZm8uY3JlYXRlKGhvc3ROYW1lLCBjb25maWcsIGRpc2FibGVNdWx0aXBsZVdpbmRvd3MpO1xuICAgIH0sXG5cbiAgICBfc2V0VXNlckFnZW50TWV0YUluZm9Gb3JFbXVsYXRpbmdEZXZpY2UgKGJyb3dzZXJJZCwgY29uZmlnKSB7XG4gICAgICAgIGNvbnN0IHsgZW11bGF0aW9uLCBkZXZpY2VOYW1lIH0gPSBjb25maWc7XG4gICAgICAgIGNvbnN0IGlzRGV2aWNlRW11bGF0aW9uICAgICAgICAgPSBlbXVsYXRpb24gJiYgZGV2aWNlTmFtZTtcblxuICAgICAgICBpZiAoIWlzRGV2aWNlRW11bGF0aW9uKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG1ldGFJbmZvID0gYEVtdWxhdGluZyAke2RldmljZU5hbWV9YDtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyAgPSB7XG4gICAgICAgICAgICBhcHBlbmRUb1VzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNldFVzZXJBZ2VudE1ldGFJbmZvKGJyb3dzZXJJZCwgbWV0YUluZm8sIG9wdGlvbnMpO1xuICAgIH0sXG5cbiAgICBhc3luYyBfc2V0dXBQcm94eWxlc3MgKGJyb3dzZXJJZCwgYnJvd3NlckNsaWVudCkge1xuICAgICAgICBjb25zdCByZXNvdXJjZUluamVjdG9yID0gbmV3IFJlc291cmNlSW5qZWN0b3IoYnJvd3NlcklkKTtcbiAgICAgICAgY29uc3QgY2RwQ2xpZW50ICAgICAgICA9IGF3YWl0IGJyb3dzZXJDbGllbnQuZ2V0QWN0aXZlQ2xpZW50KCk7XG5cbiAgICAgICAgYXdhaXQgcmVzb3VyY2VJbmplY3Rvci5zZXR1cChjZHBDbGllbnQpO1xuICAgIH0sXG5cbiAgICBhc3luYyBvcGVuQnJvd3NlciAoYnJvd3NlcklkLCBwYWdlVXJsLCBjb25maWcsIGRpc2FibGVNdWx0aXBsZVdpbmRvd3MsIHByb3h5bGVzcykge1xuICAgICAgICBjb25zdCBwYXJzZWRQYWdlVXJsID0gcGFyc2VVcmwocGFnZVVybCk7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWVJbmZvICAgPSBhd2FpdCB0aGlzLl9jcmVhdGVSdW5UaW1lSW5mbyhwYXJzZWRQYWdlVXJsLmhvc3RuYW1lLCBjb25maWcsIGRpc2FibGVNdWx0aXBsZVdpbmRvd3MpO1xuXG4gICAgICAgIHJ1bnRpbWVJbmZvLmJyb3dzZXJOYW1lID0gdGhpcy5fZ2V0QnJvd3Nlck5hbWUoKTtcbiAgICAgICAgcnVudGltZUluZm8uYnJvd3NlcklkICAgPSBicm93c2VySWQ7XG5cbiAgICAgICAgcnVudGltZUluZm8ucHJvdmlkZXJNZXRob2RzID0ge1xuICAgICAgICAgICAgcmVzaXplTG9jYWxCcm93c2VyV2luZG93OiAoLi4uYXJncykgPT4gdGhpcy5yZXNpemVMb2NhbEJyb3dzZXJXaW5kb3coLi4uYXJncyksXG4gICAgICAgICAgICByZXBvcnRXYXJuaW5nOiAgICAgICAgICAgICguLi5hcmdzKSA9PiB0aGlzLnJlcG9ydFdhcm5pbmcoYnJvd3NlcklkLCAuLi5hcmdzKSxcbiAgICAgICAgfTtcblxuICAgICAgICAvL05PVEU6IEEgbm90LXdvcmtpbmcgdGFiIGlzIG9wZW5lZCB3aGVuIHRoZSBicm93c2VyIHN0YXJ0IGluIHRoZSBkb2NrZXIgc28gd2Ugc2hvdWxkIGNyZWF0ZSBhIG5ldyB0YWIuXG4gICAgICAgIGlmIChydW50aW1lSW5mby5pbkRvY2tlcilcbiAgICAgICAgICAgIGF3YWl0IHN0YXJ0TG9jYWxDaHJvbWVPbkRvY2tlcihwYWdlVXJsLCBydW50aW1lSW5mbyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGF3YWl0IHN0YXJ0TG9jYWxDaHJvbWUocGFnZVVybCwgcnVudGltZUluZm8pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvckNvbm5lY3Rpb25SZWFkeShicm93c2VySWQpO1xuXG4gICAgICAgIHJ1bnRpbWVJbmZvLnZpZXdwb3J0U2l6ZSAgICAgID0gYXdhaXQgdGhpcy5ydW5Jbml0U2NyaXB0KGJyb3dzZXJJZCwgR0VUX1dJTkRPV19ESU1FTlNJT05TX0lORk9fU0NSSVBUKTtcbiAgICAgICAgcnVudGltZUluZm8uYWN0aXZlV2luZG93SWQgICAgPSBudWxsO1xuICAgICAgICBydW50aW1lSW5mby53aW5kb3dEZXNjcmlwdG9ycyA9IHt9O1xuXG4gICAgICAgIGlmICghZGlzYWJsZU11bHRpcGxlV2luZG93cylcbiAgICAgICAgICAgIHJ1bnRpbWVJbmZvLmFjdGl2ZVdpbmRvd0lkID0gdGhpcy5jYWxjdWxhdGVXaW5kb3dJZCgpO1xuXG4gICAgICAgIGNvbnN0IGJyb3dzZXJDbGllbnQgPSBuZXcgQnJvd3NlckNsaWVudChydW50aW1lSW5mbyk7XG5cbiAgICAgICAgdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdID0gcnVudGltZUluZm87XG5cbiAgICAgICAgYXdhaXQgYnJvd3NlckNsaWVudC5pbml0KCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fZW5zdXJlV2luZG93SXNFeHBhbmRlZChicm93c2VySWQsIHJ1bnRpbWVJbmZvLnZpZXdwb3J0U2l6ZSk7XG5cbiAgICAgICAgdGhpcy5fc2V0VXNlckFnZW50TWV0YUluZm9Gb3JFbXVsYXRpbmdEZXZpY2UoYnJvd3NlcklkLCBydW50aW1lSW5mby5jb25maWcpO1xuXG4gICAgICAgIGlmIChwcm94eWxlc3MpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXR1cFByb3h5bGVzcyhicm93c2VySWQsIGJyb3dzZXJDbGllbnQpO1xuICAgIH0sXG5cbiAgICBhc3luYyBjbG9zZUJyb3dzZXIgKGJyb3dzZXJJZCwgY2xvc2luZ0luZm8gPSB7fSkge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcblxuICAgICAgICBpZiAocnVudGltZUluZm8uYnJvd3NlckNsaWVudC5pc0hlYWRsZXNzVGFiKCkpXG4gICAgICAgICAgICBhd2FpdCBydW50aW1lSW5mby5icm93c2VyQ2xpZW50LmNsb3NlVGFiKCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2xvc2VMb2NhbEJyb3dzZXIoYnJvd3NlcklkKTtcblxuICAgICAgICBpZiAoT1MubWFjIHx8IHJ1bnRpbWVJbmZvLmNvbmZpZy5oZWFkbGVzcylcbiAgICAgICAgICAgIGF3YWl0IHN0b3BMb2NhbENocm9tZShydW50aW1lSW5mbyk7XG5cbiAgICAgICAgaWYgKHJ1bnRpbWVJbmZvLnRlbXBQcm9maWxlRGlyICYmICFjbG9zaW5nSW5mby5pc1Jlc3RhcnRpbmcpXG4gICAgICAgICAgICBhd2FpdCBydW50aW1lSW5mby50ZW1wUHJvZmlsZURpci5kaXNwb3NlKCk7XG5cbiAgICAgICAgZGVsZXRlIHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcbiAgICB9LFxuXG4gICAgYXN5bmMgcmVzaXplV2luZG93IChicm93c2VySWQsIHdpZHRoLCBoZWlnaHQsIGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCkge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcblxuICAgICAgICBpZiAocnVudGltZUluZm8uY29uZmlnLm1vYmlsZSlcbiAgICAgICAgICAgIGF3YWl0IHJ1bnRpbWVJbmZvLmJyb3dzZXJDbGllbnQudXBkYXRlTW9iaWxlVmlld3BvcnRTaXplKCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcnVudGltZUluZm8udmlld3BvcnRTaXplLndpZHRoICA9IGN1cnJlbnRXaWR0aDtcbiAgICAgICAgICAgIHJ1bnRpbWVJbmZvLnZpZXdwb3J0U2l6ZS5oZWlnaHQgPSBjdXJyZW50SGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgcnVudGltZUluZm8uYnJvd3NlckNsaWVudC5yZXNpemVXaW5kb3coeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH0sXG5cbiAgICBhc3luYyBzdGFydENhcHR1cmluZ1ZpZGVvIChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgeyBicm93c2VyQ2xpZW50IH0gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgYXdhaXQgYnJvd3NlckNsaWVudC5zdGFydENhcHR1cmluZ1ZpZGVvKCk7XG4gICAgfSxcblxuICAgIGFzeW5jIHN0b3BDYXB0dXJpbmdWaWRlbyAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IHsgYnJvd3NlckNsaWVudCB9ID0gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuXG4gICAgICAgIGF3YWl0IGJyb3dzZXJDbGllbnQuc3RvcENhcHR1cmluZ1ZpZGVvKCk7XG4gICAgfSxcblxuICAgIGFzeW5jIGdldFZpZGVvRnJhbWVEYXRhIChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgeyBicm93c2VyQ2xpZW50IH0gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJDbGllbnQuZ2V0VmlkZW9GcmFtZURhdGEoKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgaGFzQ3VzdG9tQWN0aW9uRm9yQnJvd3NlciAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IHsgY29uZmlnLCBicm93c2VyQ2xpZW50IH0gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG4gICAgICAgIGNvbnN0IGNsaWVudCAgICAgICAgICAgICAgICAgICAgPSBhd2FpdCBicm93c2VyQ2xpZW50LmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoYXNDbG9zZUJyb3dzZXI6ICAgICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICBoYXNSZXNpemVXaW5kb3c6ICAgICAgICAgICAgICAgICEhY2xpZW50ICYmIChjb25maWcuZW11bGF0aW9uIHx8IGNvbmZpZy5oZWFkbGVzcyksXG4gICAgICAgICAgICBoYXNNYXhpbWl6ZVdpbmRvdzogICAgICAgICAgICAgICEhY2xpZW50ICYmIGNvbmZpZy5oZWFkbGVzcyxcbiAgICAgICAgICAgIGhhc1Rha2VTY3JlZW5zaG90OiAgICAgICAgICAgICAgISFjbGllbnQsXG4gICAgICAgICAgICBoYXNDaHJvbWVsZXNzU2NyZWVuc2hvdHM6ICAgICAgICEhY2xpZW50LFxuICAgICAgICAgICAgaGFzR2V0VmlkZW9GcmFtZURhdGE6ICAgICAgICAgICAhIWNsaWVudCxcbiAgICAgICAgICAgIGhhc0NhblJlc2l6ZVdpbmRvd1RvRGltZW5zaW9uczogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfSxcblxuICAgIGFzeW5jIF9lbnN1cmVXaW5kb3dJc0V4cGFuZGVkIChicm93c2VySWQsIHsgaGVpZ2h0LCB3aWR0aCwgYXZhaWxhYmxlSGVpZ2h0LCBhdmFpbGFibGVXaWR0aCwgb3V0ZXJXaWR0aCwgb3V0ZXJIZWlnaHQgfSkge1xuICAgICAgICBpZiAoaGVpZ2h0IDwgTUlOX0FWQUlMQUJMRV9ESU1FTlNJT04gfHwgd2lkdGggPCBNSU5fQVZBSUxBQkxFX0RJTUVOU0lPTikge1xuICAgICAgICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5tYXgoYXZhaWxhYmxlSGVpZ2h0LCBNSU5fQVZBSUxBQkxFX0RJTUVOU0lPTik7XG4gICAgICAgICAgICBjb25zdCBuZXdXaWR0aCAgPSBNYXRoLm1heChNYXRoLmZsb29yKGF2YWlsYWJsZVdpZHRoIC8gMiksIE1JTl9BVkFJTEFCTEVfRElNRU5TSU9OKTtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXNpemVXaW5kb3coYnJvd3NlcklkLCBuZXdXaWR0aCwgbmV3SGVpZ2h0LCBvdXRlcldpZHRoLCBvdXRlckhlaWdodCk7XG4gICAgICAgIH1cbiAgICB9LFxufTtcbiJdfQ==
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvY2hyb21lL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMERBQTJCO0FBQzNCLDZCQUF3QztBQUN4QyxtREFBNEM7QUFDNUMsa0VBQStDO0FBQy9DLHNEQUFpQztBQUNqQyxpREFJd0I7QUFDeEIsc0VBQW9GO0FBQ3BGLDZDQUE2QztBQUM3QyxtR0FBMEU7QUFFMUUsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFFbkMsa0RBQ08sY0FBcUIsS0FFeEIsU0FBUyxDQUFFLElBQUk7UUFDWCxPQUFPLElBQUEsZ0JBQVMsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQseUJBQXlCLENBQUUsV0FBVztRQUNsQyxPQUFPLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLHNCQUFzQjtRQUM5RCxPQUFPLHNCQUFpQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELHVDQUF1QyxDQUFFLFNBQVMsRUFBRSxNQUFNO1FBQ3RELE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ3pDLE1BQU0saUJBQWlCLEdBQVcsU0FBUyxJQUFJLFVBQVUsQ0FBQztRQUUxRCxJQUFJLENBQUMsaUJBQWlCO1lBQ2xCLE9BQU87UUFFWCxNQUFNLFFBQVEsR0FBRyxhQUFhLFVBQVUsRUFBRSxDQUFDO1FBQzNDLE1BQU0sT0FBTyxHQUFJO1lBQ2IsaUJBQWlCLEVBQUUsSUFBSTtTQUMxQixDQUFDO1FBRUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxRQUFRLEVB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LENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBRXBGLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDcEY7SUFDTCxDQUFDLElBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT1MgZnJvbSAnb3MtZmFtaWx5JztcbmltcG9ydCB7IHBhcnNlIGFzIHBhcnNlVXJsIH0gZnJvbSAndXJsJztcbmltcG9ydCBkZWRpY2F0ZWRQcm92aWRlckJhc2UgZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgQ2hyb21lUnVuVGltZUluZm8gZnJvbSAnLi9ydW50aW1lLWluZm8nO1xuaW1wb3J0IGdldENvbmZpZyBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge1xuICAgIHN0YXJ0IGFzIHN0YXJ0TG9jYWxDaHJvbWUsXG4gICAgc3RhcnRPbkRvY2tlciBhcyBzdGFydExvY2FsQ2hyb21lT25Eb2NrZXIsXG4gICAgc3RvcCBhcyBzdG9wTG9jYWxDaHJvbWUsXG59IGZyb20gJy4vbG9jYWwtY2hyb21lJztcbmltcG9ydCB7IEdFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsaWVudC1mdW5jdGlvbnMnO1xuaW1wb3J0IHsgQnJvd3NlckNsaWVudCB9IGZyb20gJy4vY2RwLWNsaWVudCc7XG5pbXBvcnQgUmVzb3VyY2VJbmplY3RvciBmcm9tICcuLi8uLi8uLi8uLi8uLi9wcm94eWxlc3MvcmVzb3VyY2UtaW5qZWN0b3InO1xuXG5jb25zdCBNSU5fQVZBSUxBQkxFX0RJTUVOU0lPTiA9IDUwO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgLi4uZGVkaWNhdGVkUHJvdmlkZXJCYXNlLFxuXG4gICAgZ2V0Q29uZmlnIChuYW1lKSB7XG4gICAgICAgIHJldHVybiBnZXRDb25maWcobmFtZSk7XG4gICAgfSxcblxuICAgIF9nZXRCcm93c2VyUHJvdG9jb2xDbGllbnQgKHJ1bnRpbWVJbmZvKSB7XG4gICAgICAgIHJldHVybiBydW50aW1lSW5mby5icm93c2VyQ2xpZW50O1xuICAgIH0sXG5cbiAgICBhc3luYyBfY3JlYXRlUnVuVGltZUluZm8gKGhvc3ROYW1lLCBjb25maWcsIGRpc2FibGVNdWx0aXBsZVdpbmRvd3MpIHtcbiAgICAgICAgcmV0dXJuIENocm9tZVJ1blRpbWVJbmZvLmNyZWF0ZShob3N0TmFtZSwgY29uZmlnLCBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzKTtcbiAgICB9LFxuXG4gICAgX3NldFVzZXJBZ2VudE1ldGFJbmZvRm9yRW11bGF0aW5nRGV2aWNlIChicm93c2VySWQsIGNvbmZpZykge1xuICAgICAgICBjb25zdCB7IGVtdWxhdGlvbiwgZGV2aWNlTmFtZSB9ID0gY29uZmlnO1xuICAgICAgICBjb25zdCBpc0RldmljZUVtdWxhdGlvbiAgICAgICAgID0gZW11bGF0aW9uICYmIGRldmljZU5hbWU7XG5cbiAgICAgICAgaWYgKCFpc0RldmljZUVtdWxhdGlvbilcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBtZXRhSW5mbyA9IGBFbXVsYXRpbmcgJHtkZXZpY2VOYW1lfWA7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgID0ge1xuICAgICAgICAgICAgYXBwZW5kVG9Vc2VyQWdlbnQ6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zZXRVc2VyQWdlbnRNZXRhSW5mbyhicm93c2VySWQsIG1ldGFJbmZvLCBvcHRpb25zKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgX3NldHVwUHJveHlsZXNzIChicm93c2VySWQsIGJyb3dzZXJDbGllbnQpIHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VJbmplY3RvciA9IG5ldyBSZXNvdXJjZUluamVjdG9yKGJyb3dzZXJJZCk7XG4gICAgICAgIGNvbnN0IGNkcENsaWVudCAgICAgICAgPSBhd2FpdCBicm93c2VyQ2xpZW50LmdldEFjdGl2ZUNsaWVudCgpO1xuXG4gICAgICAgIGF3YWl0IHJlc291cmNlSW5qZWN0b3Iuc2V0dXAoY2RwQ2xpZW50KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgb3BlbkJyb3dzZXIgKGJyb3dzZXJJZCwgcGFnZVVybCwgY29uZmlnLCBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzLCBwcm94eWxlc3MpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkUGFnZVVybCA9IHBhcnNlVXJsKHBhZ2VVcmwpO1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyAgID0gYXdhaXQgdGhpcy5fY3JlYXRlUnVuVGltZUluZm8ocGFyc2VkUGFnZVVybC5ob3N0bmFtZSwgY29uZmlnLCBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzKTtcblxuICAgICAgICBydW50aW1lSW5mby5icm93c2VyTmFtZSA9IHRoaXMuX2dldEJyb3dzZXJOYW1lKCk7XG4gICAgICAgIHJ1bnRpbWVJbmZvLmJyb3dzZXJJZCAgID0gYnJvd3NlcklkO1xuXG4gICAgICAgIHJ1bnRpbWVJbmZvLnByb3ZpZGVyTWV0aG9kcyA9IHtcbiAgICAgICAgICAgIHJlc2l6ZUxvY2FsQnJvd3NlcldpbmRvdzogKC4uLmFyZ3MpID0+IHRoaXMucmVzaXplTG9jYWxCcm93c2VyV2luZG93KC4uLmFyZ3MpLFxuICAgICAgICAgICAgcmVwb3J0V2FybmluZzogICAgICAgICAgICAoLi4uYXJncykgPT4gdGhpcy5yZXBvcnRXYXJuaW5nKGJyb3dzZXJJZCwgLi4uYXJncyksXG4gICAgICAgIH07XG5cbiAgICAgICAgLy9OT1RFOiBBIG5vdC13b3JraW5nIHRhYiBpcyBvcGVuZWQgd2hlbiB0aGUgYnJvd3NlciBzdGFydCBpbiB0aGUgZG9ja2VyIHNvIHdlIHNob3VsZCBjcmVhdGUgYSBuZXcgdGFiLlxuICAgICAgICBpZiAocnVudGltZUluZm8uaW5Eb2NrZXIpXG4gICAgICAgICAgICBhd2FpdCBzdGFydExvY2FsQ2hyb21lT25Eb2NrZXIocGFnZVVybCwgcnVudGltZUluZm8pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCBzdGFydExvY2FsQ2hyb21lKHBhZ2VVcmwsIHJ1bnRpbWVJbmZvKTtcblxuICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JDb25uZWN0aW9uUmVhZHkoYnJvd3NlcklkKTtcblxuICAgICAgICBydW50aW1lSW5mby52aWV3cG9ydFNpemUgICAgICA9IGF3YWl0IHRoaXMucnVuSW5pdFNjcmlwdChicm93c2VySWQsIEdFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVCk7XG4gICAgICAgIHJ1bnRpbWVJbmZvLmFjdGl2ZVdpbmRvd0lkICAgID0gbnVsbDtcbiAgICAgICAgcnVudGltZUluZm8ud2luZG93RGVzY3JpcHRvcnMgPSB7fTtcblxuICAgICAgICBpZiAoIWRpc2FibGVNdWx0aXBsZVdpbmRvd3MpXG4gICAgICAgICAgICBydW50aW1lSW5mby5hY3RpdmVXaW5kb3dJZCA9IHRoaXMuY2FsY3VsYXRlV2luZG93SWQoKTtcblxuICAgICAgICBjb25zdCBicm93c2VyQ2xpZW50ID0gbmV3IEJyb3dzZXJDbGllbnQocnVudGltZUluZm8pO1xuXG4gICAgICAgIHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXSA9IHJ1bnRpbWVJbmZvO1xuXG4gICAgICAgIGF3YWl0IGJyb3dzZXJDbGllbnQuaW5pdCgpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2Vuc3VyZVdpbmRvd0lzRXhwYW5kZWQoYnJvd3NlcklkLCBydW50aW1lSW5mby52aWV3cG9ydFNpemUpO1xuXG4gICAgICAgIHRoaXMuX3NldFVzZXJBZ2VudE1ldGFJbmZvRm9yRW11bGF0aW5nRGV2aWNlKGJyb3dzZXJJZCwgcnVudGltZUluZm8uY29uZmlnKTtcblxuICAgICAgICBpZiAocHJveHlsZXNzKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2V0dXBQcm94eWxlc3MoYnJvd3NlcklkLCBicm93c2VyQ2xpZW50KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgY2xvc2VCcm93c2VyIChicm93c2VySWQsIGNsb3NpbmdJbmZvID0ge30pIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgaWYgKHJ1bnRpbWVJbmZvLmJyb3dzZXJDbGllbnQuaXNIZWFkbGVzc1RhYigpKVxuICAgICAgICAgICAgYXdhaXQgcnVudGltZUluZm8uYnJvd3NlckNsaWVudC5jbG9zZVRhYigpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNsb3NlTG9jYWxCcm93c2VyKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgaWYgKE9TLm1hYyB8fCBydW50aW1lSW5mby5jb25maWcuaGVhZGxlc3MpXG4gICAgICAgICAgICBhd2FpdCBzdG9wTG9jYWxDaHJvbWUocnVudGltZUluZm8pO1xuXG4gICAgICAgIGlmIChydW50aW1lSW5mby50ZW1wUHJvZmlsZURpciAmJiAhY2xvc2luZ0luZm8uaXNSZXN0YXJ0aW5nKVxuICAgICAgICAgICAgYXdhaXQgcnVudGltZUluZm8udGVtcFByb2ZpbGVEaXIuZGlzcG9zZSgpO1xuXG4gICAgICAgIGRlbGV0ZSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG4gICAgfSxcblxuICAgIGFzeW5jIHJlc2l6ZVdpbmRvdyAoYnJvd3NlcklkLCB3aWR0aCwgaGVpZ2h0LCBjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHQpIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgaWYgKHJ1bnRpbWVJbmZvLmNvbmZpZy5tb2JpbGUpXG4gICAgICAgICAgICBhd2FpdCBydW50aW1lSW5mby5icm93c2VyQ2xpZW50LnVwZGF0ZU1vYmlsZVZpZXdwb3J0U2l6ZSgpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJ1bnRpbWVJbmZvLnZpZXdwb3J0U2l6ZS53aWR0aCAgPSBjdXJyZW50V2lkdGg7XG4gICAgICAgICAgICBydW50aW1lSW5mby52aWV3cG9ydFNpemUuaGVpZ2h0ID0gY3VycmVudEhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHJ1bnRpbWVJbmZvLmJyb3dzZXJDbGllbnQucmVzaXplV2luZG93KHsgd2lkdGgsIGhlaWdodCB9KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgc3RhcnRDYXB0dXJpbmdWaWRlbyAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IHsgYnJvd3NlckNsaWVudCB9ID0gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuXG4gICAgICAgIGF3YWl0IGJyb3dzZXJDbGllbnQuc3RhcnRDYXB0dXJpbmdWaWRlbygpO1xuICAgIH0sXG5cbiAgICBhc3luYyBzdG9wQ2FwdHVyaW5nVmlkZW8gKGJyb3dzZXJJZCkge1xuICAgICAgICBjb25zdCB7IGJyb3dzZXJDbGllbnQgfSA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcblxuICAgICAgICBhd2FpdCBicm93c2VyQ2xpZW50LnN0b3BDYXB0dXJpbmdWaWRlbygpO1xuICAgIH0sXG5cbiAgICBhc3luYyBnZXRWaWRlb0ZyYW1lRGF0YSAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IHsgYnJvd3NlckNsaWVudCB9ID0gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuXG4gICAgICAgIHJldHVybiBicm93c2VyQ2xpZW50LmdldFZpZGVvRnJhbWVEYXRhKCk7XG4gICAgfSxcblxuICAgIGFzeW5jIGhhc0N1c3RvbUFjdGlvbkZvckJyb3dzZXIgKGJyb3dzZXJJZCkge1xuICAgICAgICBjb25zdCB7IGNvbmZpZywgYnJvd3NlckNsaWVudCB9ID0gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuICAgICAgICBjb25zdCBjbGllbnQgICAgICAgICAgICAgICAgICAgID0gYXdhaXQgYnJvd3NlckNsaWVudC5nZXRBY3RpdmVDbGllbnQoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGFzQ2xvc2VCcm93c2VyOiAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgaGFzUmVzaXplV2luZG93OiAgICAgICAgICAgICAgICAhIWNsaWVudCAmJiAoY29uZmlnLmVtdWxhdGlvbiB8fCBjb25maWcuaGVhZGxlc3MpLFxuICAgICAgICAgICAgaGFzTWF4aW1pemVXaW5kb3c6ICAgICAgICAgICAgICAhIWNsaWVudCAmJiBjb25maWcuaGVhZGxlc3MsXG4gICAgICAgICAgICBoYXNUYWtlU2NyZWVuc2hvdDogICAgICAgICAgICAgICEhY2xpZW50LFxuICAgICAgICAgICAgaGFzQ2hyb21lbGVzc1NjcmVlbnNob3RzOiAgICAgICAhIWNsaWVudCxcbiAgICAgICAgICAgIGhhc0dldFZpZGVvRnJhbWVEYXRhOiAgICAgICAgICAgISFjbGllbnQsXG4gICAgICAgICAgICBoYXNDYW5SZXNpemVXaW5kb3dUb0RpbWVuc2lvbnM6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBhc3luYyBfZW5zdXJlV2luZG93SXNFeHBhbmRlZCAoYnJvd3NlcklkLCB7IGhlaWdodCwgd2lkdGgsIGF2YWlsYWJsZUhlaWdodCwgYXZhaWxhYmxlV2lkdGgsIG91dGVyV2lkdGgsIG91dGVySGVpZ2h0IH0pIHtcbiAgICAgICAgaWYgKGhlaWdodCA8IE1JTl9BVkFJTEFCTEVfRElNRU5TSU9OIHx8IHdpZHRoIDwgTUlOX0FWQUlMQUJMRV9ESU1FTlNJT04pIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0hlaWdodCA9IE1hdGgubWF4KGF2YWlsYWJsZUhlaWdodCwgTUlOX0FWQUlMQUJMRV9ESU1FTlNJT04pO1xuICAgICAgICAgICAgY29uc3QgbmV3V2lkdGggID0gTWF0aC5tYXgoTWF0aC5mbG9vcihhdmFpbGFibGVXaWR0aCAvIDIpLCBNSU5fQVZBSUxBQkxFX0RJTUVOU0lPTik7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVzaXplV2luZG93KGJyb3dzZXJJZCwgbmV3V2lkdGgsIG5ld0hlaWdodCwgb3V0ZXJXaWR0aCwgb3V0ZXJIZWlnaHQpO1xuICAgICAgICB9XG4gICAgfSxcbn07XG4iXX0=
|
|
@@ -17,7 +17,7 @@ const LIST_TABS_DELAY = 500;
|
|
|
17
17
|
async function start(pageUrl, { browserName, config, cdpPort, tempProfileDir, inDocker }) {
|
|
18
18
|
const chromeInfo = await testcafe_browser_tools_1.default.getBrowserInfo(config.path || browserName);
|
|
19
19
|
const chromeOpenParameters = Object.assign({}, chromeInfo);
|
|
20
|
-
chromeOpenParameters.cmd = build_chrome_args_1.buildChromeArgs({ config, cdpPort, platformArgs: chromeOpenParameters.cmd, tempProfileDir, inDocker });
|
|
20
|
+
chromeOpenParameters.cmd = (0, build_chrome_args_1.buildChromeArgs)({ config, cdpPort, platformArgs: chromeOpenParameters.cmd, tempProfileDir, inDocker });
|
|
21
21
|
await browserStarter.startBrowser(chromeOpenParameters, pageUrl);
|
|
22
22
|
}
|
|
23
23
|
exports.start = start;
|
|
@@ -35,21 +35,21 @@ async function startOnDocker(pageUrl, { browserName, config, cdpPort, tempProfil
|
|
|
35
35
|
const timer = new timer_1.default(LIST_TABS_TIMEOUT);
|
|
36
36
|
//NOTE: We should repeat getting 'List' after a while because we can get an error if the browser isn't ready.
|
|
37
37
|
while ((error || !tabs.length) && !timer.expired) {
|
|
38
|
-
await delay_1.default(LIST_TABS_DELAY);
|
|
38
|
+
await (0, delay_1.default)(LIST_TABS_DELAY);
|
|
39
39
|
({ tabs, error } = await tryListTabs(cdpPort));
|
|
40
40
|
}
|
|
41
41
|
if (error)
|
|
42
42
|
throw error;
|
|
43
43
|
const target = tabs.filter(t => t.type === 'page')[0];
|
|
44
|
-
const { Target } = await chrome_remote_interface_1.default({ target, port: cdpPort });
|
|
44
|
+
const { Target } = await (0, chrome_remote_interface_1.default)({ target, port: cdpPort });
|
|
45
45
|
await Target.createTarget({ url: pageUrl });
|
|
46
46
|
await chrome_remote_interface_1.default.Close({ id: target.id, port: cdpPort });
|
|
47
47
|
}
|
|
48
48
|
exports.startOnDocker = startOnDocker;
|
|
49
49
|
async function stop({ browserId }) {
|
|
50
50
|
// NOTE: Chrome on Linux closes only after the second SIGTERM signall
|
|
51
|
-
if (!await process_1.killBrowserProcess(browserId))
|
|
52
|
-
await process_1.killBrowserProcess(browserId);
|
|
51
|
+
if (!await (0, process_1.killBrowserProcess)(browserId))
|
|
52
|
+
await (0, process_1.killBrowserProcess)(browserId);
|
|
53
53
|
}
|
|
54
54
|
exports.stop = stop;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtY2hyb21lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvYnVpbHQtaW4vZGVkaWNhdGVkL2Nocm9tZS9sb2NhbC1jaHJvbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0ZBQWtEO0FBQ2xELDBEQUFrRTtBQUNsRSxxRkFBNEQ7QUFDNUQsMkRBQXNEO0FBQ3RELHNGQUFtRDtBQUNuRCx1RUFBK0M7QUFDL0MsdUVBQStDO0FBRS9DLE1BQU0sY0FBYyxHQUFHLElBQUkseUJBQWMsRUFBRSxDQUFDO0FBRTVDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBQ2hDLE1BQU0sZUFBZSxHQUFLLEdBQUcsQ0FBQztBQUV2QixLQUFLLFVBQVUsS0FBSyxDQUFFLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUU7SUFDNUYsTUFBTSxVQUFVLEdBQWEsTUFBTSxnQ0FBWSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQyxDQUFDO0lBQzNGLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFM0Qsb0JBQW9CLENBQUMsR0FBRyxHQUFHLElBQUEsbUNBQWUsRUFBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUVsSSxNQUFNLGNBQWMsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckUsQ0FBQztBQVBELHNCQU9DO0FBRUQsS0FBSyxVQUFVLFdBQVcsQ0FBRSxPQUFPO0lBQy9CLElBQUk7UUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUNBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0tBQy9EO0lBQ0QsT0FBTyxLQUFLLEVBQUU7UUFDVixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7S0FDcEI7QUFDTCxDQUFDO0FBRU0sS0FBSyxVQUFVLGFBQWEsQ0FBRSxPQUFPLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFO0lBQ3BHLE1BQU0sS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRTVFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsTUFBTSxLQUFLLEdBQVcsSUFBSSxlQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUVuRCw2R0FBNkc7SUFDN0csT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7UUFDOUMsTUFBTSxJQUFBLGVBQUssRUFBQyxlQUFlLENBQUMsQ0FBQztRQUU3QixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDbEQ7SUFFRCxJQUFJLEtBQUs7UUFDTCxNQUFNLEtBQUssQ0FBQztJQUVoQixNQUFNLE1BQU0sR0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLGlDQUFZLEVBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFakUsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDNUMsTUFBTSxpQ0FBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFyQkQsc0NBcUJDO0FBRU0sS0FBSyxVQUFVLElBQUksQ0FBRSxFQUFFLFNBQVMsRUFBRTtJQUNyQyxxRUFBcUU7SUFDckUsSUFBSSxDQUFDLE1BQU0sSUFBQSw0QkFBa0IsRUFBQyxTQUFTLENBQUM7UUFDcEMsTUFBTSxJQUFBLDRCQUFrQixFQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFKRCxvQkFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBicm93c2VyVG9vbHMgZnJvbSAndGVzdGNhZmUtYnJvd3Nlci10b29scyc7XG5pbXBvcnQgeyBraWxsQnJvd3NlclByb2Nlc3MgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscy9wcm9jZXNzJztcbmltcG9ydCBCcm93c2VyU3RhcnRlciBmcm9tICcuLi8uLi8uLi91dGlscy9icm93c2VyLXN0YXJ0ZXInO1xuaW1wb3J0IHsgYnVpbGRDaHJvbWVBcmdzIH0gZnJvbSAnLi9idWlsZC1jaHJvbWUtYXJncyc7XG5pbXBvcnQgcmVtb3RlQ2hyb21lIGZyb20gJ2Nocm9tZS1yZW1vdGUtaW50ZXJmYWNlJztcbmltcG9ydCBUaW1lciBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscy90aW1lcic7XG5pbXBvcnQgZGVsYXkgZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbHMvZGVsYXknO1xuXG5jb25zdCBicm93c2VyU3RhcnRlciA9IG5ldyBCcm93c2VyU3RhcnRlcigpO1xuXG5jb25zdCBMSVNUX1RBQlNfVElNRU9VVCA9IDEwMDAwO1xuY29uc3QgTElTVF9UQUJTX0RFTEFZICAgPSA1MDA7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydCAocGFnZVVybCwgeyBicm93c2VyTmFtZSwgY29uZmlnLCBjZHBQb3J0LCB0ZW1wUHJvZmlsZURpciwgaW5Eb2NrZXIgfSkge1xuICAgIGNvbnN0IGNocm9tZUluZm8gICAgICAgICAgID0gYXdhaXQgYnJvd3NlclRvb2xzLmdldEJyb3dzZXJJbmZvKGNvbmZpZy5wYXRoIHx8IGJyb3dzZXJOYW1lKTtcbiAgICBjb25zdCBjaHJvbWVPcGVuUGFyYW1ldGVycyA9IE9iamVjdC5hc3NpZ24oe30sIGNocm9tZUluZm8pO1xuXG4gICAgY2hyb21lT3BlblBhcmFtZXRlcnMuY21kID0gYnVpbGRDaHJvbWVBcmdzKHsgY29uZmlnLCBjZHBQb3J0LCBwbGF0Zm9ybUFyZ3M6IGNocm9tZU9wZW5QYXJhbWV0ZXJzLmNtZCwgdGVtcFByb2ZpbGVEaXIsIGluRG9ja2VyIH0pO1xuXG4gICAgYXdhaXQgYnJvd3NlclN0YXJ0ZXIuc3RhcnRCcm93c2VyKGNocm9tZU9wZW5QYXJhbWV0ZXJzLCBwYWdlVXJsKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdHJ5TGlzdFRhYnMgKGNkcFBvcnQpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4geyB0YWJzOiBhd2FpdCByZW1vdGVDaHJvbWUuTGlzdCh7IHBvcnQ6IGNkcFBvcnQgfSkgfTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiB7IGVycm9yIH07XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRPbkRvY2tlciAocGFnZVVybCwgeyBicm93c2VyTmFtZSwgY29uZmlnLCBjZHBQb3J0LCB0ZW1wUHJvZmlsZURpciwgaW5Eb2NrZXIgfSkge1xuICAgIGF3YWl0IHN0YXJ0KCcnLCB7IGJyb3dzZXJOYW1lLCBjb25maWcsIGNkcFBvcnQsIHRlbXBQcm9maWxlRGlyLCBpbkRvY2tlciB9KTtcblxuICAgIGxldCB7IHRhYnMsIGVycm9yIH0gPSBhd2FpdCB0cnlMaXN0VGFicyhjZHBQb3J0KTtcbiAgICBjb25zdCB0aW1lciAgICAgICAgID0gbmV3IFRpbWVyKExJU1RfVEFCU19USU1FT1VUKTtcblxuICAgIC8vTk9URTogV2Ugc2hvdWxkIHJlcGVhdCBnZXR0aW5nICdMaXN0JyBhZnRlciBhIHdoaWxlIGJlY2F1c2Ugd2UgY2FuIGdldCBhbiBlcnJvciBpZiB0aGUgYnJvd3NlciBpc24ndCByZWFkeS5cbiAgICB3aGlsZSAoKGVycm9yIHx8ICF0YWJzLmxlbmd0aCkgJiYgIXRpbWVyLmV4cGlyZWQpIHtcbiAgICAgICAgYXdhaXQgZGVsYXkoTElTVF9UQUJTX0RFTEFZKTtcblxuICAgICAgICAoeyB0YWJzLCBlcnJvciB9ID0gYXdhaXQgdHJ5TGlzdFRhYnMoY2RwUG9ydCkpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcilcbiAgICAgICAgdGhyb3cgZXJyb3I7XG5cbiAgICBjb25zdCB0YXJnZXQgICAgID0gdGFicy5maWx0ZXIodCA9PiB0LnR5cGUgPT09ICdwYWdlJylbMF07XG4gICAgY29uc3QgeyBUYXJnZXQgfSA9IGF3YWl0IHJlbW90ZUNocm9tZSh7IHRhcmdldCwgcG9ydDogY2RwUG9ydCB9KTtcblxuICAgIGF3YWl0IFRhcmdldC5jcmVhdGVUYXJnZXQoeyB1cmw6IHBhZ2VVcmwgfSk7XG4gICAgYXdhaXQgcmVtb3RlQ2hyb21lLkNsb3NlKHsgaWQ6IHRhcmdldC5pZCwgcG9ydDogY2RwUG9ydCB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0b3AgKHsgYnJvd3NlcklkIH0pIHtcbiAgICAvLyBOT1RFOiBDaHJvbWUgb24gTGludXggY2xvc2VzIG9ubHkgYWZ0ZXIgdGhlIHNlY29uZCBTSUdURVJNIHNpZ25hbGxcbiAgICBpZiAoIWF3YWl0IGtpbGxCcm93c2VyUHJvY2Vzcyhicm93c2VySWQpKVxuICAgICAgICBhd2FpdCBraWxsQnJvd3NlclByb2Nlc3MoYnJvd3NlcklkKTtcbn1cbiJdfQ==
|
|
@@ -11,20 +11,20 @@ class ChromeRuntimeInfo {
|
|
|
11
11
|
this.config = config;
|
|
12
12
|
this.tempProfileDir = null;
|
|
13
13
|
this.cdpPort = this.config.cdpPort;
|
|
14
|
-
this.inDocker = is_docker_1.default();
|
|
14
|
+
this.inDocker = (0, is_docker_1.default)();
|
|
15
15
|
}
|
|
16
16
|
async createTempProfile(proxyHostName, disableMultipleWindows) {
|
|
17
|
-
return await create_temp_profile_1.default(proxyHostName, disableMultipleWindows);
|
|
17
|
+
return await (0, create_temp_profile_1.default)(proxyHostName, disableMultipleWindows);
|
|
18
18
|
}
|
|
19
19
|
static async create(proxyHostName, config, disableMultipleWindows) {
|
|
20
20
|
const runtimeInfo = new this(config);
|
|
21
21
|
if (!runtimeInfo.config.userProfile)
|
|
22
22
|
runtimeInfo.tempProfileDir = await runtimeInfo.createTempProfile(proxyHostName, disableMultipleWindows);
|
|
23
23
|
if (!runtimeInfo.cdpPort && !runtimeInfo.config.userProfile)
|
|
24
|
-
runtimeInfo.cdpPort = await endpoint_utils_1.getFreePort();
|
|
24
|
+
runtimeInfo.cdpPort = await (0, endpoint_utils_1.getFreePort)();
|
|
25
25
|
return runtimeInfo;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
exports.default = ChromeRuntimeInfo;
|
|
29
29
|
module.exports = exports.default;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvYnVpbHQtaW4vZGVkaWNhdGVkL2Nocm9tZS9ydW50aW1lLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtREFBNkM7QUFDN0MsZ0ZBQXNEO0FBQ3RELDBEQUFpQztBQUlqQyxNQUFxQixpQkFBaUI7SUFPbEMsWUFBdUIsTUFBYztRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFXLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQVMsSUFBQSxtQkFBUSxHQUFFLENBQUM7SUFDckMsQ0FBQztJQUVTLEtBQUssQ0FBQyxpQkFBaUIsQ0FBRSxhQUFxQixFQUFFLHNCQUErQjtRQUNyRixPQUFPLE1BQU0sSUFBQSw2QkFBaUIsRUFBQyxhQUFhLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUUsYUFBcUIsRUFBRSxNQUFjLEVBQUUsc0JBQStCO1FBQzlGLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVc7WUFDL0IsV0FBVyxDQUFDLGNBQWMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUU1RyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVztZQUN2RCxXQUFXLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBQSw0QkFBVyxHQUFFLENBQUM7UUFFOUMsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztDQUNKO0FBN0JELG9DQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEZyZWVQb3J0IH0gZnJvbSAnZW5kcG9pbnQtdXRpbHMnO1xuaW1wb3J0IGNyZWF0ZVRlbXBQcm9maWxlIGZyb20gJy4vY3JlYXRlLXRlbXAtcHJvZmlsZSc7XG5pbXBvcnQgaXNEb2NrZXIgZnJvbSAnaXMtZG9ja2VyJztcbmltcG9ydCBUZW1wRGlyZWN0b3J5IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWxzL3RlbXAtZGlyZWN0b3J5JztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENocm9tZVJ1bnRpbWVJbmZvIHtcbiAgICBwdWJsaWMgY29uZmlnOiBDb25maWc7XG4gICAgcHVibGljIHRlbXBQcm9maWxlRGlyOiBudWxsIHwgVGVtcERpcmVjdG9yeTtcbiAgICBwdWJsaWMgY2RwUG9ydDogbnVtYmVyO1xuICAgIHB1YmxpYyBpbkRvY2tlcjogYm9vbGVhbjtcbiAgICBwdWJsaWMgYnJvd3Nlck5hbWU/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IgKGNvbmZpZzogQ29uZmlnKSB7XG4gICAgICAgIHRoaXMuY29uZmlnICAgICAgICAgPSBjb25maWc7XG4gICAgICAgIHRoaXMudGVtcFByb2ZpbGVEaXIgPSBudWxsO1xuICAgICAgICB0aGlzLmNkcFBvcnQgICAgICAgID0gdGhpcy5jb25maWcuY2RwUG9ydDtcbiAgICAgICAgdGhpcy5pbkRvY2tlciAgICAgICA9IGlzRG9ja2VyKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGNyZWF0ZVRlbXBQcm9maWxlIChwcm94eUhvc3ROYW1lOiBzdHJpbmcsIGRpc2FibGVNdWx0aXBsZVdpbmRvd3M6IGJvb2xlYW4pOiBQcm9taXNlPFRlbXBEaXJlY3Rvcnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNyZWF0ZVRlbXBQcm9maWxlKHByb3h5SG9zdE5hbWUsIGRpc2FibGVNdWx0aXBsZVdpbmRvd3MpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgY3JlYXRlIChwcm94eUhvc3ROYW1lOiBzdHJpbmcsIGNvbmZpZzogQ29uZmlnLCBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzOiBib29sZWFuKTogUHJvbWlzZTxDaHJvbWVSdW50aW1lSW5mbz4ge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyA9IG5ldyB0aGlzKGNvbmZpZyk7XG5cbiAgICAgICAgaWYgKCFydW50aW1lSW5mby5jb25maWcudXNlclByb2ZpbGUpXG4gICAgICAgICAgICBydW50aW1lSW5mby50ZW1wUHJvZmlsZURpciA9IGF3YWl0IHJ1bnRpbWVJbmZvLmNyZWF0ZVRlbXBQcm9maWxlKHByb3h5SG9zdE5hbWUsIGRpc2FibGVNdWx0aXBsZVdpbmRvd3MpO1xuXG4gICAgICAgIGlmICghcnVudGltZUluZm8uY2RwUG9ydCAmJiAhcnVudGltZUluZm8uY29uZmlnLnVzZXJQcm9maWxlKVxuICAgICAgICAgICAgcnVudGltZUluZm8uY2RwUG9ydCA9IGF3YWl0IGdldEZyZWVQb3J0KCk7XG5cbiAgICAgICAgcmV0dXJuIHJ1bnRpbWVJbmZvO1xuICAgIH1cbn1cbiJdfQ==
|