testcafe 3.4.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/skip-js-errors/index.js +1 -1
- package/lib/api/test-controller/index.js +4 -4
- package/lib/browser/connection/gateway/index.js +10 -1
- package/lib/browser/connection/index.js +9 -1
- package/lib/browser/connection/service-routes.js +2 -1
- package/lib/browser/provider/built-in/dedicated/base.js +7 -3
- package/lib/browser/provider/built-in/dedicated/chrome/build-chrome-args.js +5 -3
- package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +44 -28
- package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/utils.js +31 -0
- package/lib/browser/provider/built-in/dedicated/chrome/index.js +18 -15
- package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +3 -3
- package/lib/browser/provider/index.js +14 -3
- package/lib/browser/provider/plugin-host.js +5 -2
- package/lib/cli/argument-parser/index.js +4 -1
- package/lib/client/automation/index.js +28 -5
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/browser/idle-page/index.js +1 -0
- package/lib/client/core/index.js +21 -5
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/core/utils/style.js +6 -2
- package/lib/client/driver/generate-id.js +4 -2
- package/lib/client/driver/index.js +94 -24
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/test-run/iframe.js.mustache +11 -1
- package/lib/client/test-run/index.js.mustache +25 -18
- package/lib/client/ui/index.js +41 -16
- package/lib/client/ui/index.min.js +1 -1
- package/lib/client/ui/styles.css +1 -0
- package/lib/client-functions/client-function-builder.js +3 -3
- package/lib/client-functions/selectors/selector-builder.js +3 -3
- package/lib/configuration/default-values.js +3 -2
- package/lib/configuration/option-names.js +3 -1
- package/lib/configuration/run-option-names.js +2 -1
- package/lib/configuration/screenshot-option-names.js +2 -1
- package/lib/configuration/testcafe-configuration.js +3 -1
- package/lib/configuration/types.js +1 -1
- package/lib/native-automation/index.js +40 -6
- package/lib/native-automation/request-pipeline/index.js +9 -5
- package/lib/native-automation/request-pipeline/special-handlers.js +19 -5
- package/lib/native-automation/request-pipeline/test-run-bridge.js +4 -3
- package/lib/native-automation/types.js +1 -1
- package/lib/notifications/warning-message.js +2 -1
- package/lib/reporter/command/command-formatter.js +5 -5
- package/lib/runner/browser-job.js +3 -2
- package/lib/runner/fixture-hook-controller.js +14 -5
- package/lib/runner/index.js +13 -6
- package/lib/runner/task/index.js +3 -2
- package/lib/runner/test-run-controller.js +5 -1
- package/lib/screenshots/capturer.js +7 -5
- package/lib/screenshots/index.js +4 -3
- package/lib/test-run/bookmark.js +1 -1
- package/lib/test-run/browser-manipulation-queue.js +2 -1
- package/lib/test-run/commands/actions.js +3 -3
- package/lib/test-run/commands/browser-manipulation.js +2 -1
- package/lib/test-run/commands/execute-client-function.js +47 -0
- package/lib/test-run/commands/observation.js +10 -38
- package/lib/test-run/commands/service.js +3 -2
- package/lib/test-run/commands/validations/initializers.js +3 -3
- package/lib/test-run/index.js +20 -11
- package/lib/test-run/session-controller.js +3 -3
- package/lib/utils/path-pattern.js +8 -5
- package/package.json +3 -3
- package/ts-defs/index.d.ts +4 -0
- package/ts-defs/selectors.d.ts +4 -0
- package/ts-defs/testcafe-scripts.d.ts +4 -0
|
@@ -39,6 +39,7 @@ class BrowserConnection extends events_1.EventEmitter {
|
|
|
39
39
|
this.heartbeatUrl = '';
|
|
40
40
|
this.statusUrl = '';
|
|
41
41
|
this.activeWindowIdUrl = '';
|
|
42
|
+
this.ensureWindowInNativeAutomationUrl = '';
|
|
42
43
|
this.closeWindowUrl = '';
|
|
43
44
|
this.statusDoneUrl = '';
|
|
44
45
|
this.heartbeatRelativeUrl = '';
|
|
@@ -91,6 +92,7 @@ class BrowserConnection extends events_1.EventEmitter {
|
|
|
91
92
|
this.statusDoneRelativeUrl = `${service_routes_1.default.statusDone}/${this.id}`;
|
|
92
93
|
this.idleRelativeUrl = `${service_routes_1.default.idle}/${this.id}`;
|
|
93
94
|
this.activeWindowIdUrl = `${service_routes_1.default.activeWindowId}/${this.id}`;
|
|
95
|
+
this.ensureWindowInNativeAutomationUrl = `${service_routes_1.default.ensureWindowInNativeAutomation}/${this.id}`;
|
|
94
96
|
this.closeWindowUrl = `${service_routes_1.default.closeWindow}/${this.id}`;
|
|
95
97
|
this.openFileProtocolRelativeUrl = `${service_routes_1.default.openFileProtocol}/${this.id}`;
|
|
96
98
|
this.dispatchNativeAutomationEventRelativeUrl = `${service_routes_1.default.dispatchNativeAutomationEvent}/${this.id}`;
|
|
@@ -432,7 +434,13 @@ class BrowserConnection extends events_1.EventEmitter {
|
|
|
432
434
|
isNativeAutomationEnabled() {
|
|
433
435
|
return this._options.nativeAutomation;
|
|
434
436
|
}
|
|
437
|
+
async getNewWindowIdInNativeAutomation(windowId) {
|
|
438
|
+
return this.provider.getNewWindowIdInNativeAutomation(this.id, windowId);
|
|
439
|
+
}
|
|
440
|
+
resetActiveWindowId() {
|
|
441
|
+
this.provider.resetActiveWindowId(this.id);
|
|
442
|
+
}
|
|
435
443
|
}
|
|
436
444
|
exports.default = BrowserConnection;
|
|
437
445
|
module.exports = exports.default;
|
|
438
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJvd3Nlci9jb25uZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLDRFQUEyQztBQUMzQyxtQ0FBc0M7QUFDdEMsd0RBQWdDO0FBQ2hDLG1DQUF3QztBQUN4QyxtRUFHc0M7QUFDdEMsMkRBQXNEO0FBQ3RELHNFQUE2QztBQUM3QyxtQ0FBZ0M7QUFDaEMsd0RBQWdDO0FBQ2hDLHNEQUErQztBQUMvQywwRUFBaUQ7QUFDakQsa0RBQWtFO0FBQ2xFLDhDQUFvRDtBQUdwRCxrRkFBeUQ7QUFFekQsc0VBQThDO0FBQzlDLHlGQU1pRDtBQUVqRCx3REFBaUQ7QUFTakQsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLEVBQVUsRUFBVSxFQUFFLENBQUMsK0JBQStCLEVBQUUsRUFBRSxDQUFDO0FBRW5HLE1BQU0sa0JBQWtCLEdBQUcsSUFBQSw2QkFBSSxFQUFDLG9EQUFvRCxDQUFDLENBQUM7QUFtRHRGLE1BQU0sa0NBQWtDLEdBQUc7SUFDdkMsc0JBQXNCLEVBQUUsS0FBSztJQUM3QixlQUFlLEVBQVMsS0FBSztJQUM3QixnQkFBZ0IsRUFBUSxLQUFLO0NBQ2hDLENBQUM7QUFFRixNQUFxQixpQkFBa0IsU0FBUSxxQkFBWTtJQTRDdkQsWUFDSSxPQUFpQyxFQUNqQyxXQUF3QixFQUN4QixTQUFrQixFQUNsQixVQUE2QyxFQUFFLEVBQy9DLFVBQXVCO1FBQ3ZCLEtBQUssRUFBRSxDQUFDO1FBM0NKLG9CQUFlLEdBQW1CLElBQUksQ0FBQztRQVN4QyxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNaLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFD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QUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxLQUFLLENBQUMscUNBQXFDLENBQUUsYUFBaUI7UUFDakUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHFDQUFxQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVNLEtBQUssQ0FBQywwQkFBMEI7UUFDbkMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU0sT0FBTztRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxnQkFBdUIsQ0FBQyxLQUFLO1lBQ2hELElBQUksQ0FBQyxNQUFNLEtBQUssZ0JBQXVCLENBQUMsTUFBTTtZQUM5QyxJQUFJLENBQUMsTUFBTSxLQUFLLGdCQUF1QixDQUFDLE9BQU8sQ0FBQztJQUN4RCxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sdUJBQXVCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFTSxtQkFBbUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0seUJBQXlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMxQyxDQUFDO0NBQ0o7QUE3aUJELG9DQTZpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHRpbWVMaW1pdCBmcm9tICd0aW1lLWxpbWl0LXByb21pc2UnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBNdXN0YWNoZSBmcm9tICdtdXN0YWNoZSc7XG5pbXBvcnQgeyBwdWxsIGFzIHJlbW92ZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICAgIFBhcnNlZFVzZXJBZ2VudCxcbiAgICBwYXJzZVVzZXJBZ2VudCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvcGFyc2UtdXNlci1hZ2VudCc7XG5pbXBvcnQgeyByZWFkU3luYyBhcyByZWFkIH0gZnJvbSAncmVhZC1maWxlLXJlbGF0aXZlJztcbmltcG9ydCBwcm9taXNpZnlFdmVudCBmcm9tICdwcm9taXNpZnktZXZlbnQnO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSAnbmFub2lkJztcbmltcG9ydCBDT01NQU5EIGZyb20gJy4vY29tbWFuZCc7XG5pbXBvcnQgQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMgZnJvbSAnLi9zdGF0dXMnO1xuaW1wb3J0IEhlYXJ0YmVhdFN0YXR1cyBmcm9tICcuL2hlYXJ0YmVhdC1zdGF0dXMnO1xuaW1wb3J0IHsgR2VuZXJhbEVycm9yLCBUaW1lb3V0RXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5IGZyb20gJy4vZ2F0ZXdheSc7XG5pbXBvcnQgQnJvd3NlckpvYiBmcm9tICcuLi8uLi9ydW5uZXIvYnJvd3Nlci1qb2InO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5pbXBvcnQgQnJvd3NlclByb3ZpZGVyIGZyb20gJy4uL3Byb3ZpZGVyJztcbmltcG9ydCBTRVJWSUNFX1JPVVRFUyBmcm9tICcuL3NlcnZpY2Utcm91dGVzJztcbmltcG9ydCB7XG4gICAgQlJPV1NFUl9SRVNUQVJUX1RJTUVPVVQsXG4gICAgQlJPV1NFUl9DTE9TRV9USU1FT1VULFxuICAgIEhFQVJUQkVBVF9USU1FT1VULFxuICAgIExPQ0FMX0JST1dTRVJfSU5JVF9USU1FT1VULFxuICAgIFJFTU9URV9CUk9XU0VSX0lOSVRfVElNRU9VVCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvYnJvd3Nlci1jb25uZWN0aW9uLXRpbWVvdXRzJztcbmltcG9ydCBNZXNzYWdlQnVzIGZyb20gJy4uLy4uL3V0aWxzL21lc3NhZ2UtYnVzJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvblRyYWNrZXIgZnJvbSAnLi90cmFja2VyJztcbmltcG9ydCBUZXN0UnVuIGZyb20gJy4uLy4uL3Rlc3QtcnVuJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IFRlc3RSdW4gYXMgTGVnYWN5VGVzdFJ1biB9IGZyb20gJ3Rlc3RjYWZlLWxlZ2FjeS1hcGknO1xuaW1wb3J0IHsgUHJveHkgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCB7IE5leHRUZXN0UnVuSW5mbywgT3BlbkJyb3dzZXJBZGRpdGlvbmFsT3B0aW9ucyB9IGZyb20gJy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQgeyBFdmVudFR5cGUgfSBmcm9tICcuLi8uLi9uYXRpdmUtYXV0b21hdGlvbi90eXBlcyc7XG5pbXBvcnQgTmF0aXZlQXV0b21hdGlvbiBmcm9tICcuLi8uLi9uYXRpdmUtYXV0b21hdGlvbic7XG5cbmNvbnN0IGdldEJyb3dzZXJDb25uZWN0aW9uRGVidWdTY29wZSA9IChpZDogc3RyaW5nKTogc3RyaW5nID0+IGB0ZXN0Y2FmZTpicm93c2VyOmNvbm5lY3Rpb246JHtpZH1gO1xuXG5jb25zdCBJRExFX1BBR0VfVEVNUExBVEUgPSByZWFkKCcuLi8uLi9jbGllbnQvYnJvd3Nlci9pZGxlLXBhZ2UvaW5kZXguaHRtbC5tdXN0YWNoZScpO1xuXG5cbmludGVyZmFjZSBEaXNjb25uZWN0aW9uUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4ge1xuICAgIHJlc29sdmU6IEZ1bmN0aW9uO1xuICAgIHJlamVjdDogRnVuY3Rpb247XG59XG5cbmludGVyZmFjZSBCcm93c2VyQ29ubmVjdGlvblN0YXR1c1Jlc3VsdCB7XG4gICAgY21kOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgdGVzdFJ1bklkOiBzdHJpbmcgfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgSGVhcnRiZWF0U3RhdHVzUmVzdWx0IHtcbiAgICBjb2RlOiBIZWFydGJlYXRTdGF0dXM7XG4gICAgdXJsOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJbml0U2NyaXB0IHtcbiAgICBjb2RlOiBzdHJpbmcgfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgSW5pdFNjcmlwdFRhc2sgZXh0ZW5kcyBJbml0U2NyaXB0IHtcbiAgICByZXNvbHZlOiBGdW5jdGlvbjtcbn1cblxuaW50ZXJmYWNlIFByb3ZpZGVyTWV0YUluZm9PcHRpb25zIHtcbiAgICBhcHBlbmRUb1VzZXJBZ2VudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJvd3NlckNsb3NpbmdJbmZvIHtcbiAgICBpc1Jlc3RhcnRpbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzZXJJbmZvIHtcbiAgICBhbGlhczogc3RyaW5nO1xuICAgIGJyb3dzZXJOYW1lOiBzdHJpbmc7XG4gICAgYnJvd3Nlck9wdGlvbjogdW5rbm93bjtcbiAgICBwcm92aWRlck5hbWU6IHN0cmluZztcbiAgICBwcm92aWRlcjogQnJvd3NlclByb3ZpZGVyO1xuICAgIHVzZXJBZ2VudFByb3ZpZGVyTWV0YUluZm86IHN0cmluZztcbiAgICBwYXJzZWRVc2VyQWdlbnQ6IFBhcnNlZFVzZXJBZ2VudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcm93c2VyQ29ubmVjdGlvbk9wdGlvbnMge1xuICAgIGRpc2FibGVNdWx0aXBsZVdpbmRvd3M6IGJvb2xlYW47XG4gICAgZGV2ZWxvcG1lbnRNb2RlOiBib29sZWFuO1xuICAgIG5hdGl2ZUF1dG9tYXRpb246IGJvb2xlYW47XG59XG5cbmNvbnN0IERFRkFVTFRfQlJPV1NFUl9DT05ORUNUSU9OX09QVElPTlMgPSB7XG4gICAgZGlzYWJsZU11bHRpcGxlV2luZG93czogZmFsc2UsXG4gICAgZGV2ZWxvcG1lbnRNb2RlOiAgICAgICAgZmFsc2UsXG4gICAgbmF0aXZlQXV0b21hdGlvbjogICAgICAgZmFsc2UsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyQ29ubmVjdGlvbiBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gICAgcHVibGljIHBlcm1hbmVudDogYm9vbGVhbjtcbiAgICBwdWJsaWMgcHJldmlvdXNBY3RpdmVXaW5kb3dJZDogc3RyaW5nIHwgbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IEhFQVJUQkVBVF9USU1FT1VUOiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBCUk9XU0VSX0NMT1NFX1RJTUVPVVQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IEJST1dTRVJfUkVTVEFSVF9USU1FT1VUOiBudW1iZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY3VycmVudFRlc3RSdW46IFRlc3RSdW4gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGpvYlF1ZXVlOiBCcm93c2VySm9iW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbml0U2NyaXB0c1F1ZXVlOiBJbml0U2NyaXB0VGFza1tdO1xuICAgIHB1YmxpYyBicm93c2VyQ29ubmVjdGlvbkdhdGV3YXk6IEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheTtcbiAgICBwcml2YXRlIGRpc2Nvbm5lY3Rpb25Qcm9taXNlOiBEaXNjb25uZWN0aW9uUHJvbWlzZTx2b2lkPiB8IG51bGw7XG4gICAgcHJpdmF0ZSB0ZXN0UnVuQWJvcnRlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgc3RhdHVzOiBCcm93c2VyQ29ubmVjdGlvblN0YXR1cztcbiAgICBwcml2YXRlIGhlYXJ0YmVhdFRpbWVvdXQ6IE5vZGVKUy5UaW1lb3V0IHwgbnVsbDtcbiAgICBwcml2YXRlIHBlbmRpbmdUZXN0UnVuSW5mbzogTmV4dFRlc3RSdW5JbmZvIHwgbnVsbDtcbiAgICBwdWJsaWMgdXJsID0gJyc7XG4gICAgcHVibGljIGlkbGVVcmwgPSAnJztcbiAgICBwcml2YXRlIGZvcmNlZElkbGVVcmwgPSAnJztcbiAgICBwcml2YXRlIGluaXRTY3JpcHRVcmwgPSAnJztcbiAgICBwdWJsaWMgaGVhcnRiZWF0VXJsID0gJyc7XG4gICAgcHVibGljIHN0YXR1c1VybCA9ICcnO1xuICAgIHB1YmxpYyBhY3RpdmVXaW5kb3dJZFVybCA9ICcnO1xuICAgIHB1YmxpYyBjbG9zZVdpbmRvd1VybCA9ICcnO1xuICAgIHB1YmxpYyBzdGF0dXNEb25lVXJsID0gJyc7XG4gICAgcHVibGljIGhlYXJ0YmVhdFJlbGF0aXZlVXJsID0gJyc7XG4gICAgcHVibGljIHN0YXR1c1JlbGF0aXZlVXJsID0gJyc7XG4gICAgcHVibGljIHN0YXR1c0RvbmVSZWxhdGl2ZVVybCA9ICcnO1xuICAgIHB1YmxpYyBpZGxlUmVsYXRpdmVVcmwgPSAnJztcbiAgICBwdWJsaWMgb3BlbkZpbGVQcm90b2NvbFJlbGF0aXZlVXJsID0gJyc7XG4gICAgcHVibGljIG9wZW5GaWxlUHJvdG9jb2xVcmwgPSAnJztcbiAgICBwdWJsaWMgZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRSZWxhdGl2ZVVybCA9ICcnO1xuICAgIHB1YmxpYyBkaXNwYXRjaE5hdGl2ZUF1dG9tYXRpb25FdmVudFNlcXVlbmNlUmVsYXRpdmVVcmwgPSAnJztcbiAgICBwdWJsaWMgcGFyc2VTZWxlY3RvclJlbGF0aXZlVXJsID0gJyc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJ1Z0xvZ2dlcjogZGVidWcuRGVidWdnZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IHdhcm5pbmdMb2c6IFdhcm5pbmdMb2c7XG4gICAgcHJpdmF0ZSBfbWVzc2FnZUJ1cz86IE1lc3NhZ2VCdXM7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogQnJvd3NlckNvbm5lY3Rpb25PcHRpb25zO1xuXG4gICAgcHVibGljIGlkbGU6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgYnJvd3NlckluZm86IEJyb3dzZXJJbmZvO1xuICAgIHB1YmxpYyBwcm92aWRlcjogYW55O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChcbiAgICAgICAgZ2F0ZXdheTogQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LFxuICAgICAgICBicm93c2VySW5mbzogQnJvd3NlckluZm8sXG4gICAgICAgIHBlcm1hbmVudDogYm9vbGVhbixcbiAgICAgICAgb3B0aW9uczogUGFydGlhbDxCcm93c2VyQ29ubmVjdGlvbk9wdGlvbnM+ID0ge30sXG4gICAgICAgIG1lc3NhZ2VCdXM/OiBNZXNzYWdlQnVzKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5IRUFSVEJFQVRfVElNRU9VVCAgICAgICA9IEhFQVJUQkVBVF9USU1FT1VUO1xuICAgICAgICB0aGlzLkJST1dTRVJfQ0xPU0VfVElNRU9VVCAgID0gQlJPV1NFUl9DTE9TRV9USU1FT1VUO1xuICAgICAgICB0aGlzLkJST1dTRVJfUkVTVEFSVF9USU1FT1VUID0gQlJPV1NFUl9SRVNUQVJUX1RJTUVPVVQ7XG5cbiAgICAgICAgdGhpcy5pZCAgICAgICAgICAgICAgICAgICAgICAgPSBCcm93c2VyQ29ubmVjdGlvbi5fZ2VuZXJhdGVJZCgpO1xuICAgICAgICB0aGlzLmpvYlF1ZXVlICAgICAgICAgICAgICAgICA9IFtdO1xuICAgICAgICB0aGlzLmluaXRTY3JpcHRzUXVldWUgICAgICAgICA9IFtdO1xuICAgICAgICB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSA9IGdhdGV3YXk7XG4gICAgICAgIHRoaXMuZGlzY29ubmVjdGlvblByb21pc2UgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy50ZXN0UnVuQWJvcnRlZCAgICAgICAgICAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy53YXJuaW5nTG9nICAgICAgICAgICAgICAgPSBuZXcgV2FybmluZ0xvZyhudWxsLCBXYXJuaW5nTG9nLmNyZWF0ZUFkZFdhcm5pbmdDYWxsYmFjayhtZXNzYWdlQnVzKSk7XG4gICAgICAgIHRoaXMuZGVidWdMb2dnZXIgICAgICAgICAgICAgID0gZGVidWcoZ2V0QnJvd3NlckNvbm5lY3Rpb25EZWJ1Z1Njb3BlKHRoaXMuaWQpKTtcblxuICAgICAgICBpZiAobWVzc2FnZUJ1cykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlQnVzID0gbWVzc2FnZUJ1cztcblxuICAgICAgICAgICAgdGhpcy5pbml0TWVzc2FnZUJ1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5icm93c2VySW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYnJvd3NlckluZm87XG4gICAgICAgIHRoaXMuYnJvd3NlckluZm8udXNlckFnZW50UHJvdmlkZXJNZXRhSW5mbyA9ICcnO1xuXG4gICAgICAgIHRoaXMucHJvdmlkZXIgPSBicm93c2VySW5mby5wcm92aWRlcjtcblxuICAgICAgICB0aGlzLnBlcm1hbmVudCAgICAgICAgICAgICAgPSBwZXJtYW5lbnQ7XG4gICAgICAgIHRoaXMuc3RhdHVzICAgICAgICAgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLnVuaW5pdGlhbGl6ZWQ7XG4gICAgICAgIHRoaXMuaWRsZSAgICAgICAgICAgICAgICAgICA9IHRydWU7XG4gICAgICAgIHRoaXMuaGVhcnRiZWF0VGltZW91dCAgICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMucGVuZGluZ1Rlc3RSdW5JbmZvICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgICAgICAgICAgICAgICA9IHRoaXMuX2NhbGN1bGF0ZVJlc3VsdE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5fc2V0RXZlbnRIYW5kbGVycygpO1xuXG4gICAgICAgIEJyb3dzZXJDb25uZWN0aW9uVHJhY2tlci5hZGQodGhpcyk7XG5cbiAgICAgICAgdGhpcy5wcmV2aW91c0FjdGl2ZVdpbmRvd0lkID0gbnVsbDtcblxuICAgICAgICB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5zdGFydFNlcnZpbmdDb25uZWN0aW9uKHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVJlc3VsdE9wdGlvbnMgKG9wdGlvbnM6IFBhcnRpYWw8QnJvd3NlckNvbm5lY3Rpb25PcHRpb25zPik6IEJyb3dzZXJDb25uZWN0aW9uT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0JST1dTRVJfQ09OTkVDVElPTl9PUFRJT05TLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9idWlsZENvbW11bmljYXRpb25VcmxzIChwcm94eTogUHJveHkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cmwgICAgICAgICAgID0gcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybChgJHtTRVJWSUNFX1JPVVRFUy5jb25uZWN0fS8ke3RoaXMuaWR9YCk7XG4gICAgICAgIHRoaXMuZm9yY2VkSWRsZVVybCA9IHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwoYCR7U0VSVklDRV9ST1VURVMuaWRsZUZvcmNlZH0vJHt0aGlzLmlkfWApO1xuICAgICAgICB0aGlzLmluaXRTY3JpcHRVcmwgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKGAke1NFUlZJQ0VfUk9VVEVTLmluaXRTY3JpcHR9LyR7dGhpcy5pZH1gKTtcblxuICAgICAgICB0aGlzLmhlYXJ0YmVhdFJlbGF0aXZlVXJsICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuaGVhcnRiZWF0fS8ke3RoaXMuaWR9YDtcbiAgICAgICAgdGhpcy5zdGF0dXNSZWxhdGl2ZVVybCAgICAgICAgICAgICAgICAgICAgICAgICA9IGAke1NFUlZJQ0VfUk9VVEVTLnN0YXR1c30vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMuc3RhdHVzRG9uZVJlbGF0aXZlVXJsICAgICAgICAgICAgICAgICAgICAgPSBgJHtTRVJWSUNFX1JPVVRFUy5zdGF0dXNEb25lfS8ke3RoaXMuaWR9YDtcbiAgICAgICAgdGhpcy5pZGxlUmVsYXRpdmVVcmwgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGAke1NFUlZJQ0VfUk9VVEVTLmlkbGV9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLmFjdGl2ZVdpbmRvd0lkVXJsICAgICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuYWN0aXZlV2luZG93SWR9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLmNsb3NlV2luZG93VXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuY2xvc2VXaW5kb3d9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLm9wZW5GaWxlUHJvdG9jb2xSZWxhdGl2ZVVybCAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMub3BlbkZpbGVQcm90b2NvbH0vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRSZWxhdGl2ZVVybCAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnR9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLmRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50U2VxdWVuY2VSZWxhdGl2ZVVybCA9IGAke1NFUlZJQ0VfUk9VVEVTLmRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50U2VxdWVuY2V9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLnBhcnNlU2VsZWN0b3JSZWxhdGl2ZVVybCAgICAgICAgICAgICAgICAgICAgICAgICA9IGAke1NFUlZJQ0VfUk9VVEVTLnBhcnNlU2VsZWN0b3J9LyR7dGhpcy5pZH1gO1xuXG4gICAgICAgIHRoaXMuaWRsZVVybCAgICAgICAgICAgICA9IHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwodGhpcy5pZGxlUmVsYXRpdmVVcmwpO1xuICAgICAgICB0aGlzLmhlYXJ0YmVhdFVybCAgICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKHRoaXMuaGVhcnRiZWF0UmVsYXRpdmVVcmwpO1xuICAgICAgICB0aGlzLnN0YXR1c1VybCAgICAgICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKHRoaXMuc3RhdHVzUmVsYXRpdmVVcmwpO1xuICAgICAgICB0aGlzLnN0YXR1c0RvbmVVcmwgICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKHRoaXMuc3RhdHVzRG9uZVJlbGF0aXZlVXJsKTtcbiAgICAgICAgdGhpcy5vcGVuRmlsZVByb3RvY29sVXJsID0gcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybCh0aGlzLm9wZW5GaWxlUHJvdG9jb2xSZWxhdGl2ZVVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXRNZXNzYWdlQnVzICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53YXJuaW5nTG9nLmNhbGxiYWNrID0gV2FybmluZ0xvZy5jcmVhdGVBZGRXYXJuaW5nQ2FsbGJhY2sodGhpcy5fbWVzc2FnZUJ1cyk7XG5cbiAgICAgICAgdGhpcy5hc3NpZ25UZXN0UnVuU3RhcnRFdmVudExpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZS1idXMtaW5pdGlhbGl6ZWQnLCB0aGlzLl9tZXNzYWdlQnVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNzaWduVGVzdFJ1blN0YXJ0RXZlbnRMaXN0ZW5lciAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fbWVzc2FnZUJ1cylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzLm9uKCd0ZXN0LXJ1bi1zdGFydCcsIHRlc3RSdW4gPT4ge1xuICAgICAgICAgICAgaWYgKHRlc3RSdW4uYnJvd3NlckNvbm5lY3Rpb24uaWQgPT09IHRoaXMuaWQpXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFRlc3RSdW4gPSB0ZXN0UnVuO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IG1lc3NhZ2VCdXMgKG1lc3NhZ2VCdXM6IE1lc3NhZ2VCdXMgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZUJ1cyA9IG1lc3NhZ2VCdXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZXNzYWdlQnVzICgpOiBNZXNzYWdlQnVzIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VCdXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0RXZlbnRIYW5kbGVycyAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub24oJ2Vycm9yJywgZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnTG9nZ2VyKGUpO1xuICAgICAgICAgICAgdGhpcy5fZm9yY2VJZGxlKCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBCcm93c2VyQ29ubmVjdGlvblN0YXR1cykge1xuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXNbbmFtZSBhcyBrZXlvZiB0eXBlb2YgQnJvd3NlckNvbm5lY3Rpb25TdGF0dXNdO1xuXG4gICAgICAgICAgICB0aGlzLm9uKHN0YXR1cywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVidWdMb2dnZXIoYHN0YXR1cyBjaGFuZ2VkIHRvICcke3N0YXR1c30nYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZW5lcmF0ZUlkICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbmFub2lkKDcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEFkZGl0aW9uYWxCcm93c2VyT3B0aW9ucyAoKTogT3BlbkJyb3dzZXJBZGRpdGlvbmFsT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzOiB0aGlzLl9vcHRpb25zLmRpc2FibGVNdWx0aXBsZVdpbmRvd3MsXG4gICAgICAgICAgICBuYXRpdmVBdXRvbWF0aW9uOiAgICAgICB0aGlzLl9vcHRpb25zLm5hdGl2ZUF1dG9tYXRpb24sXG4gICAgICAgICAgICBkZXZlbG9wbWVudE1vZGU6ICAgICAgICB0aGlzLl9vcHRpb25zLmRldmVsb3BtZW50TW9kZSxcbiAgICAgICAgICAgIHNlcnZpY2VEb21haW5zOiAgICAgICAgIFtcbiAgICAgICAgICAgICAgICB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5wcm94eS5zZXJ2ZXIxSW5mby5kb21haW4sXG4gICAgICAgICAgICAgICAgdGhpcy5icm93c2VyQ29ubmVjdGlvbkdhdGV3YXkucHJveHkuc2VydmVyMkluZm8uZG9tYWluLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9ydW5Ccm93c2VyICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxPcHRpb25zID0gdGhpcy5fZ2V0QWRkaXRpb25hbEJyb3dzZXJPcHRpb25zKCk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXIub3BlbkJyb3dzZXIodGhpcy5pZCwgdGhpcy51cmwsIHRoaXMuYnJvd3NlckluZm8uYnJvd3Nlck9wdGlvbiwgYWRkaXRpb25hbE9wdGlvbnMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgIT09IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLnJlYWR5KVxuICAgICAgICAgICAgICAgIGF3YWl0IHByb21pc2lmeUV2ZW50KHRoaXMsICdyZWFkeScpO1xuXG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLm9wZW5lZDtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnb3BlbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEdlbmVyYWxFcnJvcihcbiAgICAgICAgICAgICAgICBSVU5USU1FX0VSUk9SUy51bmFibGVUb09wZW5Ccm93c2VyLFxuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3NlckluZm8ucHJvdmlkZXJOYW1lICsgJzonICsgdGhpcy5icm93c2VySW5mby5icm93c2VyTmFtZSxcbiAgICAgICAgICAgICAgICBlcnIuc3RhY2tcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfY2xvc2VCcm93c2VyIChkYXRhOiBCcm93c2VyQ2xvc2luZ0luZm8gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuaWRsZSlcbiAgICAgICAgICAgIGF3YWl0IHByb21pc2lmeUV2ZW50KHRoaXMsICdpZGxlJyk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXIuY2xvc2VCcm93c2VyKHRoaXMuaWQsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IEEgd2FybmluZyB3b3VsZCBiZSByZWFsbHkgbmljZSBoZXJlLCBidXQgaXQgY2FuJ3QgYmUgZG9uZSB3aGlsZSBsb2cgaXMgc3RvcmVkIGluIGEgdGFzay5cbiAgICAgICAgICAgIHRoaXMuZGVidWdMb2dnZXIoZXJyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2ZvcmNlSWRsZSAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pZGxlKSB7XG4gICAgICAgICAgICB0aGlzLmlkbGUgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2lkbGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZUJyb3dzZXJEaXNjb25uZWN0ZWRFcnJvciAoKTogR2VuZXJhbEVycm9yIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuYnJvd3NlckRpc2Nvbm5lY3RlZCwgdGhpcy51c2VyQWdlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3dhaXRGb3JIZWFydGJlYXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5kZXZlbG9wbWVudE1vZGUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5oZWFydGJlYXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlcnIgPSB0aGlzLl9jcmVhdGVCcm93c2VyRGlzY29ubmVjdGVkRXJyb3IoKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0dXMgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLmRpc2Nvbm5lY3RlZDtcbiAgICAgICAgICAgIHRoaXMudGVzdFJ1bkFib3J0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2Rpc2Nvbm5lY3RlZCcsIGVycik7XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc3RhcnRCcm93c2VyT25EaXNjb25uZWN0KGVycik7XG4gICAgICAgIH0sIHRoaXMuSEVBUlRCRUFUX1RJTUVPVVQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2dldFRlc3RSdW5JbmZvIChuZWVkUG9wTmV4dDogYm9vbGVhbik6IFByb21pc2U8TmV4dFRlc3RSdW5JbmZvPiB7XG4gICAgICAgIGlmIChuZWVkUG9wTmV4dCB8fCAhdGhpcy5wZW5kaW5nVGVzdFJ1bkluZm8pXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdUZXN0UnVuSW5mbyA9IGF3YWl0IHRoaXMuX3BvcE5leHRUZXN0UnVuSW5mbygpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdUZXN0UnVuSW5mbyBhcyBOZXh0VGVzdFJ1bkluZm87XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcG9wTmV4dFRlc3RSdW5JbmZvICgpOiBQcm9taXNlPE5leHRUZXN0UnVuSW5mbyB8IG51bGw+IHtcbiAgICAgICAgd2hpbGUgKHRoaXMuaGFzUXVldWVkSm9icyAmJiAhdGhpcy5jdXJyZW50Sm9iLmhhc1F1ZXVlZFRlc3RSdW5zKVxuICAgICAgICAgICAgdGhpcy5qb2JRdWV1ZS5zaGlmdCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmhhc1F1ZXVlZEpvYnMgPyBhd2FpdCB0aGlzLmN1cnJlbnRKb2IucG9wTmV4dFRlc3RSdW5JbmZvKHRoaXMpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFRlc3RSdW4gKCk6IExlZ2FjeVRlc3RSdW4gfCBUZXN0UnVuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGVzdFJ1bjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEJ5SWQgKGlkOiBzdHJpbmcpOiBCcm93c2VyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gQnJvd3NlckNvbm5lY3Rpb25UcmFja2VyLmFjdGl2ZUJyb3dzZXJDb25uZWN0aW9uc1tpZF0gfHwgbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9yZXN0YXJ0QnJvd3NlciAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMudW5pbml0aWFsaXplZDtcblxuICAgICAgICB0aGlzLl9mb3JjZUlkbGUoKTtcblxuICAgICAgICBsZXQgcmVzb2x2ZVRpbWVvdXQ6IEZ1bmN0aW9uIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCBpc1RpbWVvdXRFeHBpcmVkICAgICAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIGxldCB0aW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IG51bGwgID0gbnVsbDtcblxuICAgICAgICBjb25zdCByZXN0YXJ0UHJvbWlzZSA9IHRpbWVMaW1pdCh0aGlzLl9jbG9zZUJyb3dzZXIoeyBpc1Jlc3RhcnRpbmc6IHRydWUgfSksIHRoaXMuQlJPV1NFUl9DTE9TRV9USU1FT1VULCB7IHJlamVjdFdpdGg6IG5ldyBUaW1lb3V0RXJyb3IoKSB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB0aGlzLmRlYnVnTG9nZ2VyKGVycikpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLl9ydW5Ccm93c2VyKCkpO1xuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlVGltZW91dCA9IHJlc29sdmU7XG5cbiAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpc1RpbWVvdXRFeHBpcmVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIHRoaXMuQlJPV1NFUl9SRVNUQVJUX1RJTUVPVVQpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtyZXN0YXJ0UHJvbWlzZSwgdGltZW91dFByb21pc2VdKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0IGFzIE5vZGVKUy5UaW1lb3V0KTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1RpbWVvdXRFeHBpcmVkKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgdGhpcy5fY3JlYXRlQnJvd3NlckRpc2Nvbm5lY3RlZEVycm9yKCkpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKHJlc29sdmVUaW1lb3V0IGFzIEZ1bmN0aW9uKSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVzdGFydEJyb3dzZXJPbkRpc2Nvbm5lY3QgKGVycjogRXJyb3IpOiB2b2lkIHtcbiAgICAgICAgbGV0IHJlc29sdmVGbjogRnVuY3Rpb24gfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IHJlamVjdEZuOiBGdW5jdGlvbiB8IG51bGwgID0gbnVsbDtcblxuICAgICAgICB0aGlzLmRpc2Nvbm5lY3Rpb25Qcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZUZuID0gcmVzb2x2ZTtcblxuICAgICAgICAgICAgcmVqZWN0Rm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAocmVqZWN0Rm4gYXMgRnVuY3Rpb24pKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVzdGFydEJyb3dzZXIoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGUpO1xuICAgICAgICAgICAgfSkgYXMgRGlzY29ubmVjdGlvblByb21pc2U8dm9pZD47XG5cbiAgICAgICAgdGhpcy5kaXNjb25uZWN0aW9uUHJvbWlzZS5yZXNvbHZlID0gcmVzb2x2ZUZuIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG4gICAgICAgIHRoaXMuZGlzY29ubmVjdGlvblByb21pc2UucmVqZWN0ICA9IHJlamVjdEZuIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldERlZmF1bHRCcm93c2VySW5pdFRpbWVvdXQgKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IGlzTG9jYWxCcm93c2VyID0gYXdhaXQgdGhpcy5wcm92aWRlci5pc0xvY2FsQnJvd3Nlcih0aGlzLmlkLCB0aGlzLmJyb3dzZXJJbmZvLmJyb3dzZXJOYW1lKTtcblxuICAgICAgICByZXR1cm4gaXNMb2NhbEJyb3dzZXIgPyBMT0NBTF9CUk9XU0VSX0lOSVRfVElNRU9VVCA6IFJFTU9URV9CUk9XU0VSX0lOSVRfVElNRU9VVDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJvY2Vzc0Rpc2Nvbm5lY3Rpb24gKGRpc2Nvbm5lY3Rpb25UaHJlc2hvbGRFeGNlZWRlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHJlc29sdmUsIHJlamVjdCB9ID0gdGhpcy5kaXNjb25uZWN0aW9uUHJvbWlzZSBhcyBEaXNjb25uZWN0aW9uUHJvbWlzZTx2b2lkPjtcblxuICAgICAgICBpZiAoZGlzY29ubmVjdGlvblRocmVzaG9sZEV4Y2VlZGVkKVxuICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkV2FybmluZyAobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Sm9iKVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Sm9iLndhcm5pbmdMb2cuYWRkV2FybmluZyhtZXNzYWdlLCAuLi5hcmdzKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy53YXJuaW5nTG9nLmFkZFdhcm5pbmcobWVzc2FnZSwgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwZW5kVG9QcmV0dHlVc2VyQWdlbnQgKHN0cjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnJvd3NlckluZm8ucGFyc2VkVXNlckFnZW50LnByZXR0eVVzZXJBZ2VudCArPSBgICgke3N0cn0pYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9tb3ZlV2FybmluZ0xvZ1RvSm9iIChqb2I6IEJyb3dzZXJKb2IpOiB2b2lkIHtcbiAgICAgICAgam9iLndhcm5pbmdMb2cuY29weUZyb20odGhpcy53YXJuaW5nTG9nKTtcbiAgICAgICAgdGhpcy53YXJuaW5nTG9nLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFByb3ZpZGVyTWV0YUluZm8gKHN0cjogc3RyaW5nLCBvcHRpb25zPzogUHJvdmlkZXJNZXRhSW5mb09wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXBwZW5kVG9Vc2VyQWdlbnQgPSBvcHRpb25zPy5hcHBlbmRUb1VzZXJBZ2VudCBhcyBib29sZWFuO1xuXG4gICAgICAgIGlmIChhcHBlbmRUb1VzZXJBZ2VudCkge1xuICAgICAgICAgICAgLy8gTk9URTpcbiAgICAgICAgICAgIC8vIGNoYW5nZSBwcmV0dHlVc2VyQWdlbnQgb25seSB3aGVuIGNvbm5lY3Rpb24gYWxyZWFkeSB3YXMgZXN0YWJsaXNoZWRcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZHkoKSlcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRUb1ByZXR0eVVzZXJBZ2VudChzdHIpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMub24oJ3JlYWR5JywgKCkgPT4gdGhpcy5fYXBwZW5kVG9QcmV0dHlVc2VyQWdlbnQoc3RyKSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnJvd3NlckluZm8udXNlckFnZW50UHJvdmlkZXJNZXRhSW5mbyA9IHN0cjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVzZXJBZ2VudCAoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHVzZXJBZ2VudCA9IHRoaXMuYnJvd3NlckluZm8ucGFyc2VkVXNlckFnZW50LnByZXR0eVVzZXJBZ2VudDtcblxuICAgICAgICBpZiAodGhpcy5icm93c2VySW5mby51c2VyQWdlbnRQcm92aWRlck1ldGFJbmZvKVxuICAgICAgICAgICAgdXNlckFnZW50ICs9IGAgKCR7dGhpcy5icm93c2VySW5mby51c2VyQWdlbnRQcm92aWRlck1ldGFJbmZvfSlgO1xuXG4gICAgICAgIHJldHVybiB1c2VyQWdlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXRyeVRlc3RQYWdlcyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5yZXRyeVRlc3RQYWdlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1F1ZXVlZEpvYnMgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmpvYlF1ZXVlLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRKb2IgKCk6IEJyb3dzZXJKb2Ige1xuICAgICAgICByZXR1cm4gdGhpcy5qb2JRdWV1ZVswXTtcbiAgICB9XG5cbiAgICAvLyBBUElcbiAgICBwdWJsaWMgcnVuSW5pdFNjcmlwdCAoY29kZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmtub3duPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRoaXMuaW5pdFNjcmlwdHNRdWV1ZS5wdXNoKHsgY29kZSwgcmVzb2x2ZSB9KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEpvYiAoam9iOiBCcm93c2VySm9iKTogdm9pZCB7XG4gICAgICAgIHRoaXMuam9iUXVldWUucHVzaChqb2IpO1xuXG4gICAgICAgIHRoaXMuX21vdmVXYXJuaW5nTG9nVG9Kb2Ioam9iKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSm9iIChqb2I6IEJyb3dzZXJKb2IpOiB2b2lkIHtcbiAgICAgICAgcmVtb3ZlKHRoaXMuam9iUXVldWUsIGpvYik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNsb3NlICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zaW5nIHx8IHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zZWQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5zdGF0dXMgPSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zaW5nO1xuICAgICAgICB0aGlzLmVtaXQoQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2luZyk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fY2xvc2VCcm93c2VyKCk7XG5cbiAgICAgICAgdGhpcy5icm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuc3RvcFNlcnZpbmdDb25uZWN0aW9uKHRoaXMpO1xuXG4gICAgICAgIGlmICh0aGlzLmhlYXJ0YmVhdFRpbWVvdXQpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5oZWFydGJlYXRUaW1lb3V0KTtcblxuICAgICAgICBCcm93c2VyQ29ubmVjdGlvblRyYWNrZXIucmVtb3ZlKHRoaXMpO1xuXG4gICAgICAgIHRoaXMuc3RhdHVzID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2VkO1xuICAgICAgICB0aGlzLmVtaXQoQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2VkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXN0YWJsaXNoICh1c2VyQWdlbnQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBvc0luZm8gPSBhd2FpdCB0aGlzLnByb3ZpZGVyLmdldE9TSW5mbyh0aGlzLmlkKTtcblxuICAgICAgICB0aGlzLnN0YXR1cyAgICAgICAgICAgICAgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLnJlYWR5O1xuICAgICAgICB0aGlzLmJyb3dzZXJJbmZvLnBhcnNlZFVzZXJBZ2VudCA9IHBhcnNlVXNlckFnZW50KHVzZXJBZ2VudCwgb3NJbmZvKTtcblxuICAgICAgICB0aGlzLl93YWl0Rm9ySGVhcnRiZWF0KCk7XG4gICAgICAgIHRoaXMuZW1pdCgncmVhZHknKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGVhcnRiZWF0ICgpOiBIZWFydGJlYXRTdGF0dXNSZXN1bHQge1xuICAgICAgICBpZiAodGhpcy5oZWFydGJlYXRUaW1lb3V0KVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGVhcnRiZWF0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5fd2FpdEZvckhlYXJ0YmVhdCgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2RlOiB0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2luZyA/IEhlYXJ0YmVhdFN0YXR1cy5jbG9zaW5nIDogSGVhcnRiZWF0U3RhdHVzLm9rLFxuICAgICAgICAgICAgdXJsOiAgdGhpcy5zdGF0dXMgPT09IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLmNsb3NpbmcgPyB0aGlzLmlkbGVVcmwgOiAnJyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVuZGVySWRsZVBhZ2UgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBNdXN0YWNoZS5yZW5kZXIoSURMRV9QQUdFX1RFTVBMQVRFIGFzIHN0cmluZywge1xuICAgICAgICAgICAgdXNlckFnZW50OiAgICAgICAgICAgdGhpcy51c2VyQWdlbnQsXG4gICAgICAgICAgICBzdGF0dXNVcmw6ICAgICAgICAgICB0aGlzLnN0YXR1c1VybCxcbiAgICAgICAgICAgIGhlYXJ0YmVhdFVybDogICAgICAgIHRoaXMuaGVhcnRiZWF0VXJsLFxuICAgICAgICAgICAgaW5pdFNjcmlwdFVybDogICAgICAgdGhpcy5pbml0U2NyaXB0VXJsLFxuICAgICAgICAgICAgb3BlbkZpbGVQcm90b2NvbFVybDogdGhpcy5vcGVuRmlsZVByb3RvY29sVXJsLFxuICAgICAgICAgICAgcmV0cnlUZXN0UGFnZXM6ICAgICAgISF0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5yZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgICAgIG5hdGl2ZUF1dG9tYXRpb246ICAgIHRoaXMuX29wdGlvbnMubmF0aXZlQXV0b21hdGlvbixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEluaXRTY3JpcHQgKCk6IEluaXRTY3JpcHQge1xuICAgICAgICBjb25zdCBpbml0U2NyaXB0UHJvbWlzZSA9IHRoaXMuaW5pdFNjcmlwdHNRdWV1ZVswXTtcblxuICAgICAgICByZXR1cm4geyBjb2RlOiBpbml0U2NyaXB0UHJvbWlzZSA/IGluaXRTY3JpcHRQcm9taXNlLmNvZGUgOiBudWxsIH07XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUluaXRTY3JpcHRSZXN1bHQgKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbml0U2NyaXB0UHJvbWlzZSA9IHRoaXMuaW5pdFNjcmlwdHNRdWV1ZS5zaGlmdCgpO1xuXG4gICAgICAgIGlmIChpbml0U2NyaXB0UHJvbWlzZSlcbiAgICAgICAgICAgIGluaXRTY3JpcHRQcm9taXNlLnJlc29sdmUoSlNPTi5wYXJzZShkYXRhKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGVhZGxlc3NCcm93c2VyICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuaXNIZWFkbGVzc0Jyb3dzZXIodGhpcy5pZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlcG9ydEpvYlJlc3VsdCAoc3RhdHVzOiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXIucmVwb3J0Sm9iUmVzdWx0KHRoaXMuaWQsIHN0YXR1cywgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFN0YXR1cyAoaXNUZXN0RG9uZTogYm9vbGVhbik6IFByb21pc2U8QnJvd3NlckNvbm5lY3Rpb25TdGF0dXNSZXN1bHQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlkbGUgJiYgIWlzVGVzdERvbmUpIHtcbiAgICAgICAgICAgIHRoaXMuaWRsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2lkbGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMub3BlbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0VGVzdFJ1bkluZm8gPSBhd2FpdCB0aGlzLl9nZXRUZXN0UnVuSW5mbyhpc1Rlc3REb25lIHx8IHRoaXMudGVzdFJ1bkFib3J0ZWQpO1xuXG4gICAgICAgICAgICB0aGlzLnRlc3RSdW5BYm9ydGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChuZXh0VGVzdFJ1bkluZm8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlkbGUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNtZDogICAgICAgQ09NTUFORC5ydW4sXG4gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5JZDogbmV4dFRlc3RSdW5JbmZvLnRlc3RSdW5JZCxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAgICAgICBuZXh0VGVzdFJ1bkluZm8udXJsLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY21kOiAgICAgICBDT01NQU5ELmlkbGUsXG4gICAgICAgICAgICB1cmw6ICAgICAgIHRoaXMuaWRsZVVybCxcbiAgICAgICAgICAgIHRlc3RSdW5JZDogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZVdpbmRvd0lkICgpOiBudWxsIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0QWN0aXZlV2luZG93SWQodGhpcy5pZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBhY3RpdmVXaW5kb3dJZCAodmFsKSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNBY3RpdmVXaW5kb3dJZCA9IHRoaXMuYWN0aXZlV2luZG93SWQ7XG5cbiAgICAgICAgdGhpcy5wcm92aWRlci5zZXRBY3RpdmVXaW5kb3dJZCh0aGlzLmlkLCB2YWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvcGVuRmlsZVByb3RvY29sICh1cmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5vcGVuRmlsZVByb3RvY29sKHRoaXMuaWQsIHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50ICh0eXBlOiBFdmVudFR5cGUsIG9wdGlvbnM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5kaXNwYXRjaE5hdGl2ZUF1dG9tYXRpb25FdmVudCh0aGlzLmlkLCB0eXBlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRTZXF1ZW5jZSAoZXZlbnRTZXF1ZW5jZTogW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRTZXF1ZW5jZSh0aGlzLmlkLCBldmVudFNlcXVlbmNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5jYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyh0aGlzLmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNSZWFkeSAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMucmVhZHkgfHxcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5vcGVuZWQgfHxcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0aWFsaXplICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYnVpbGRDb21tdW5pY2F0aW9uVXJscyh0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5wcm94eSk7XG5cbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB0aGlzLl9ydW5Ccm93c2VyKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdXBwb3J0TmF0aXZlQXV0b21hdGlvbiAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLnN1cHBvcnROYXRpdmVBdXRvbWF0aW9uKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hdGl2ZUF1dG9tYXRpb24gKCk6IE5hdGl2ZUF1dG9tYXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5nZXROYXRpdmVBdXRvbWF0aW9uKHRoaXMuaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc05hdGl2ZUF1dG9tYXRpb25FbmFibGVkICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMubmF0aXZlQXV0b21hdGlvbjtcbiAgICB9XG59XG4iXX0=
|
|
446
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJvd3Nlci9jb25uZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLDRFQUEyQztBQUMzQyxtQ0FBc0M7QUFDdEMsd0RBQWdDO0FBQ2hDLG1DQUF3QztBQUN4QyxtRUFHc0M7QUFDdEMsMkRBQXNEO0FBQ3RELHNFQUE2QztBQUM3QyxtQ0FBZ0M7QUFDaEMsd0RBQWdDO0FBQ2hDLHNEQUErQztBQUMvQywwRUFBaUQ7QUFDakQsa0RBQWtFO0FBQ2xFLDhDQUFvRDtBQUdwRCxrRkFBeUQ7QUFFekQsc0VBQThDO0FBQzlDLHlGQU1pRDtBQUVqRCx3REFBaUQ7QUFTakQsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLEVBQVUsRUFBVSxFQUFFLENBQUMsK0JBQStCLEVBQUUsRUFBRSxDQUFDO0FBRW5HLE1BQU0sa0JBQWtCLEdBQUcsSUFBQSw2QkFBSSxFQUFDLG9EQUFvRCxDQUFDLENBQUM7QUFtRHRGLE1BQU0sa0NBQWtDLEdBQUc7SUFDdkMsc0JBQXNCLEVBQUUsS0FBSztJQUM3QixlQUFlLEVBQVMsS0FBSztJQUM3QixnQkFBZ0IsRUFBUSxLQUFLO0NBQ2hDLENBQUM7QUFFRixNQUFxQixpQkFBa0IsU0FBUSxxQkFBWTtJQTZDdkQsWUFDSSxPQUFpQyxFQUNqQyxXQUF3QixFQUN4QixTQUFrQixFQUNsQixVQUE2QyxFQUFFLEVBQy9DLFVBQXVCO1FBQ3ZCLEtBQUssRUFBRSxDQUFDO1FBNUNKLG9CQUFlLEdBQW1CLElBQUksQ0FBQztRQVN4QyxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNaLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFD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Q0FBQztJQUVELEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBRSxRQUFnQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sbUJBQW1CO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDSjtBQXZqQkQsb0NBdWpCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdGltZUxpbWl0IGZyb20gJ3RpbWUtbGltaXQtcHJvbWlzZSc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0IE11c3RhY2hlIGZyb20gJ211c3RhY2hlJztcbmltcG9ydCB7IHB1bGwgYXMgcmVtb3ZlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gICAgUGFyc2VkVXNlckFnZW50LFxuICAgIHBhcnNlVXNlckFnZW50LFxufSBmcm9tICcuLi8uLi91dGlscy9wYXJzZS11c2VyLWFnZW50JztcbmltcG9ydCB7IHJlYWRTeW5jIGFzIHJlYWQgfSBmcm9tICdyZWFkLWZpbGUtcmVsYXRpdmUnO1xuaW1wb3J0IHByb21pc2lmeUV2ZW50IGZyb20gJ3Byb21pc2lmeS1ldmVudCc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IENPTU1BTkQgZnJvbSAnLi9jb21tYW5kJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvblN0YXR1cyBmcm9tICcuL3N0YXR1cyc7XG5pbXBvcnQgSGVhcnRiZWF0U3RhdHVzIGZyb20gJy4vaGVhcnRiZWF0LXN0YXR1cyc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IsIFRpbWVvdXRFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkgZnJvbSAnLi9nYXRld2F5JztcbmltcG9ydCBCcm93c2VySm9iIGZyb20gJy4uLy4uL3J1bm5lci9icm93c2VyLWpvYic7XG5pbXBvcnQgV2FybmluZ0xvZyBmcm9tICcuLi8uLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbG9nJztcbmltcG9ydCBCcm93c2VyUHJvdmlkZXIgZnJvbSAnLi4vcHJvdmlkZXInO1xuaW1wb3J0IFNFUlZJQ0VfUk9VVEVTIGZyb20gJy4vc2VydmljZS1yb3V0ZXMnO1xuaW1wb3J0IHtcbiAgICBCUk9XU0VSX1JFU1RBUlRfVElNRU9VVCxcbiAgICBCUk9XU0VSX0NMT1NFX1RJTUVPVVQsXG4gICAgSEVBUlRCRUFUX1RJTUVPVVQsXG4gICAgTE9DQUxfQlJPV1NFUl9JTklUX1RJTUVPVVQsXG4gICAgUkVNT1RFX0JST1dTRVJfSU5JVF9USU1FT1VULFxufSBmcm9tICcuLi8uLi91dGlscy9icm93c2VyLWNvbm5lY3Rpb24tdGltZW91dHMnO1xuaW1wb3J0IE1lc3NhZ2VCdXMgZnJvbSAnLi4vLi4vdXRpbHMvbWVzc2FnZS1idXMnO1xuaW1wb3J0IEJyb3dzZXJDb25uZWN0aW9uVHJhY2tlciBmcm9tICcuL3RyYWNrZXInO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vLi4vdGVzdC1ydW4nO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgVGVzdFJ1biBhcyBMZWdhY3lUZXN0UnVuIH0gZnJvbSAndGVzdGNhZmUtbGVnYWN5LWFwaSc7XG5pbXBvcnQgeyBQcm94eSB9IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuaW1wb3J0IHsgTmV4dFRlc3RSdW5JbmZvLCBPcGVuQnJvd3NlckFkZGl0aW9uYWxPcHRpb25zIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IEV2ZW50VHlwZSB9IGZyb20gJy4uLy4uL25hdGl2ZS1hdXRvbWF0aW9uL3R5cGVzJztcbmltcG9ydCB7IE5hdGl2ZUF1dG9tYXRpb25CYXNlIH0gZnJvbSAnLi4vLi4vbmF0aXZlLWF1dG9tYXRpb24nO1xuXG5jb25zdCBnZXRCcm93c2VyQ29ubmVjdGlvbkRlYnVnU2NvcGUgPSAoaWQ6IHN0cmluZyk6IHN0cmluZyA9PiBgdGVzdGNhZmU6YnJvd3Nlcjpjb25uZWN0aW9uOiR7aWR9YDtcblxuY29uc3QgSURMRV9QQUdFX1RFTVBMQVRFID0gcmVhZCgnLi4vLi4vY2xpZW50L2Jyb3dzZXIvaWRsZS1wYWdlL2luZGV4Lmh0bWwubXVzdGFjaGUnKTtcblxuXG5pbnRlcmZhY2UgRGlzY29ubmVjdGlvblByb21pc2U8VD4gZXh0ZW5kcyBQcm9taXNlPFQ+IHtcbiAgICByZXNvbHZlOiBGdW5jdGlvbjtcbiAgICByZWplY3Q6IEZ1bmN0aW9uO1xufVxuXG5pbnRlcmZhY2UgQnJvd3NlckNvbm5lY3Rpb25TdGF0dXNSZXN1bHQge1xuICAgIGNtZDogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xuICAgIHRlc3RSdW5JZDogc3RyaW5nIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIEhlYXJ0YmVhdFN0YXR1c1Jlc3VsdCB7XG4gICAgY29kZTogSGVhcnRiZWF0U3RhdHVzO1xuICAgIHVybDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSW5pdFNjcmlwdCB7XG4gICAgY29kZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIEluaXRTY3JpcHRUYXNrIGV4dGVuZHMgSW5pdFNjcmlwdCB7XG4gICAgcmVzb2x2ZTogRnVuY3Rpb247XG59XG5cbmludGVyZmFjZSBQcm92aWRlck1ldGFJbmZvT3B0aW9ucyB7XG4gICAgYXBwZW5kVG9Vc2VyQWdlbnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzZXJDbG9zaW5nSW5mbyB7XG4gICAgaXNSZXN0YXJ0aW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcm93c2VySW5mbyB7XG4gICAgYWxpYXM6IHN0cmluZztcbiAgICBicm93c2VyTmFtZTogc3RyaW5nO1xuICAgIGJyb3dzZXJPcHRpb246IHVua25vd247XG4gICAgcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG4gICAgcHJvdmlkZXI6IEJyb3dzZXJQcm92aWRlcjtcbiAgICB1c2VyQWdlbnRQcm92aWRlck1ldGFJbmZvOiBzdHJpbmc7XG4gICAgcGFyc2VkVXNlckFnZW50OiBQYXJzZWRVc2VyQWdlbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJvd3NlckNvbm5lY3Rpb25PcHRpb25zIHtcbiAgICBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzOiBib29sZWFuO1xuICAgIGRldmVsb3BtZW50TW9kZTogYm9vbGVhbjtcbiAgICBuYXRpdmVBdXRvbWF0aW9uOiBib29sZWFuO1xufVxuXG5jb25zdCBERUZBVUxUX0JST1dTRVJfQ09OTkVDVElPTl9PUFRJT05TID0ge1xuICAgIGRpc2FibGVNdWx0aXBsZVdpbmRvd3M6IGZhbHNlLFxuICAgIGRldmVsb3BtZW50TW9kZTogICAgICAgIGZhbHNlLFxuICAgIG5hdGl2ZUF1dG9tYXRpb246ICAgICAgIGZhbHNlLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckNvbm5lY3Rpb24gZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICAgIHB1YmxpYyBwZXJtYW5lbnQ6IGJvb2xlYW47XG4gICAgcHVibGljIHByZXZpb3VzQWN0aXZlV2luZG93SWQ6IHN0cmluZyB8IG51bGw7XG4gICAgcHJpdmF0ZSByZWFkb25seSBIRUFSVEJFQVRfVElNRU9VVDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQlJPV1NFUl9DTE9TRV9USU1FT1VUOiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBCUk9XU0VSX1JFU1RBUlRfVElNRU9VVDogbnVtYmVyO1xuICAgIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nO1xuICAgIHByaXZhdGUgX2N1cnJlbnRUZXN0UnVuOiBUZXN0UnVuIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSByZWFkb25seSBqb2JRdWV1ZTogQnJvd3NlckpvYltdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5pdFNjcmlwdHNRdWV1ZTogSW5pdFNjcmlwdFRhc2tbXTtcbiAgICBwdWJsaWMgYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5OiBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXk7XG4gICAgcHJpdmF0ZSBkaXNjb25uZWN0aW9uUHJvbWlzZTogRGlzY29ubmVjdGlvblByb21pc2U8dm9pZD4gfCBudWxsO1xuICAgIHByaXZhdGUgdGVzdFJ1bkFib3J0ZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIHN0YXR1czogQnJvd3NlckNvbm5lY3Rpb25TdGF0dXM7XG4gICAgcHJpdmF0ZSBoZWFydGJlYXRUaW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IG51bGw7XG4gICAgcHJpdmF0ZSBwZW5kaW5nVGVzdFJ1bkluZm86IE5leHRUZXN0UnVuSW5mbyB8IG51bGw7XG4gICAgcHVibGljIHVybCA9ICcnO1xuICAgIHB1YmxpYyBpZGxlVXJsID0gJyc7XG4gICAgcHJpdmF0ZSBmb3JjZWRJZGxlVXJsID0gJyc7XG4gICAgcHJpdmF0ZSBpbml0U2NyaXB0VXJsID0gJyc7XG4gICAgcHVibGljIGhlYXJ0YmVhdFVybCA9ICcnO1xuICAgIHB1YmxpYyBzdGF0dXNVcmwgPSAnJztcbiAgICBwdWJsaWMgYWN0aXZlV2luZG93SWRVcmwgPSAnJztcbiAgICBwdWJsaWMgZW5zdXJlV2luZG93SW5OYXRpdmVBdXRvbWF0aW9uVXJsID0gJyc7XG4gICAgcHVibGljIGNsb3NlV2luZG93VXJsID0gJyc7XG4gICAgcHVibGljIHN0YXR1c0RvbmVVcmwgPSAnJztcbiAgICBwdWJsaWMgaGVhcnRiZWF0UmVsYXRpdmVVcmwgPSAnJztcbiAgICBwdWJsaWMgc3RhdHVzUmVsYXRpdmVVcmwgPSAnJztcbiAgICBwdWJsaWMgc3RhdHVzRG9uZVJlbGF0aXZlVXJsID0gJyc7XG4gICAgcHVibGljIGlkbGVSZWxhdGl2ZVVybCA9ICcnO1xuICAgIHB1YmxpYyBvcGVuRmlsZVByb3RvY29sUmVsYXRpdmVVcmwgPSAnJztcbiAgICBwdWJsaWMgb3BlbkZpbGVQcm90b2NvbFVybCA9ICcnO1xuICAgIHB1YmxpYyBkaXNwYXRjaE5hdGl2ZUF1dG9tYXRpb25FdmVudFJlbGF0aXZlVXJsID0gJyc7XG4gICAgcHVibGljIGRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50U2VxdWVuY2VSZWxhdGl2ZVVybCA9ICcnO1xuICAgIHB1YmxpYyBwYXJzZVNlbGVjdG9yUmVsYXRpdmVVcmwgPSAnJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnTG9nZ2VyOiBkZWJ1Zy5EZWJ1Z2dlcjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgd2FybmluZ0xvZzogV2FybmluZ0xvZztcbiAgICBwcml2YXRlIF9tZXNzYWdlQnVzPzogTWVzc2FnZUJ1cztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBCcm93c2VyQ29ubmVjdGlvbk9wdGlvbnM7XG5cbiAgICBwdWJsaWMgaWRsZTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBicm93c2VySW5mbzogQnJvd3NlckluZm87XG4gICAgcHVibGljIHByb3ZpZGVyOiBhbnk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKFxuICAgICAgICBnYXRld2F5OiBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXksXG4gICAgICAgIGJyb3dzZXJJbmZvOiBCcm93c2VySW5mbyxcbiAgICAgICAgcGVybWFuZW50OiBib29sZWFuLFxuICAgICAgICBvcHRpb25zOiBQYXJ0aWFsPEJyb3dzZXJDb25uZWN0aW9uT3B0aW9ucz4gPSB7fSxcbiAgICAgICAgbWVzc2FnZUJ1cz86IE1lc3NhZ2VCdXMpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLkhFQVJUQkVBVF9USU1FT1VUICAgICAgID0gSEVBUlRCRUFUX1RJTUVPVVQ7XG4gICAgICAgIHRoaXMuQlJPV1NFUl9DTE9TRV9USU1FT1VUICAgPSBCUk9XU0VSX0NMT1NFX1RJTUVPVVQ7XG4gICAgICAgIHRoaXMuQlJPV1NFUl9SRVNUQVJUX1RJTUVPVVQgPSBCUk9XU0VSX1JFU1RBUlRfVElNRU9VVDtcblxuICAgICAgICB0aGlzLmlkICAgICAgICAgICAgICAgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uLl9nZW5lcmF0ZUlkKCk7XG4gICAgICAgIHRoaXMuam9iUXVldWUgICAgICAgICAgICAgICAgID0gW107XG4gICAgICAgIHRoaXMuaW5pdFNjcmlwdHNRdWV1ZSAgICAgICAgID0gW107XG4gICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5ID0gZ2F0ZXdheTtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0aW9uUHJvbWlzZSAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLnRlc3RSdW5BYm9ydGVkICAgICAgICAgICA9IGZhbHNlO1xuICAgICAgICB0aGlzLndhcm5pbmdMb2cgICAgICAgICAgICAgICA9IG5ldyBXYXJuaW5nTG9nKG51bGwsIFdhcm5pbmdMb2cuY3JlYXRlQWRkV2FybmluZ0NhbGxiYWNrKG1lc3NhZ2VCdXMpKTtcbiAgICAgICAgdGhpcy5kZWJ1Z0xvZ2dlciAgICAgICAgICAgICAgPSBkZWJ1ZyhnZXRCcm93c2VyQ29ubmVjdGlvbkRlYnVnU2NvcGUodGhpcy5pZCkpO1xuXG4gICAgICAgIGlmIChtZXNzYWdlQnVzKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VCdXMgPSBtZXNzYWdlQnVzO1xuXG4gICAgICAgICAgICB0aGlzLmluaXRNZXNzYWdlQnVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJyb3dzZXJJbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBicm93c2VySW5mbztcbiAgICAgICAgdGhpcy5icm93c2VySW5mby51c2VyQWdlbnRQcm92aWRlck1ldGFJbmZvID0gJyc7XG5cbiAgICAgICAgdGhpcy5wcm92aWRlciA9IGJyb3dzZXJJbmZvLnByb3ZpZGVyO1xuXG4gICAgICAgIHRoaXMucGVybWFuZW50ICAgICAgICAgICAgICA9IHBlcm1hbmVudDtcbiAgICAgICAgdGhpcy5zdGF0dXMgICAgICAgICAgICAgICAgID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMudW5pbml0aWFsaXplZDtcbiAgICAgICAgdGhpcy5pZGxlICAgICAgICAgICAgICAgICAgID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5oZWFydGJlYXRUaW1lb3V0ICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5wZW5kaW5nVGVzdFJ1bkluZm8gICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyAgICAgICAgICAgICAgID0gdGhpcy5fY2FsY3VsYXRlUmVzdWx0T3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgICB0aGlzLl9zZXRFdmVudEhhbmRsZXJzKCk7XG5cbiAgICAgICAgQnJvd3NlckNvbm5lY3Rpb25UcmFja2VyLmFkZCh0aGlzKTtcblxuICAgICAgICB0aGlzLnByZXZpb3VzQWN0aXZlV2luZG93SWQgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LnN0YXJ0U2VydmluZ0Nvbm5lY3Rpb24odGhpcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlUmVzdWx0T3B0aW9ucyAob3B0aW9uczogUGFydGlhbDxCcm93c2VyQ29ubmVjdGlvbk9wdGlvbnM+KTogQnJvd3NlckNvbm5lY3Rpb25PcHRpb25zIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfQlJPV1NFUl9DT05ORUNUSU9OX09QVElPTlMsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2J1aWxkQ29tbXVuaWNhdGlvblVybHMgKHByb3h5OiBQcm94eSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVybCAgICAgICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKGAke1NFUlZJQ0VfUk9VVEVTLmNvbm5lY3R9LyR7dGhpcy5pZH1gKTtcbiAgICAgICAgdGhpcy5mb3JjZWRJZGxlVXJsID0gcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybChgJHtTRVJWSUNFX1JPVVRFUy5pZGxlRm9yY2VkfS8ke3RoaXMuaWR9YCk7XG4gICAgICAgIHRoaXMuaW5pdFNjcmlwdFVybCA9IHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwoYCR7U0VSVklDRV9ST1VURVMuaW5pdFNjcmlwdH0vJHt0aGlzLmlkfWApO1xuXG4gICAgICAgIHRoaXMuaGVhcnRiZWF0UmVsYXRpdmVVcmwgICAgICAgICAgICAgICAgICAgICAgPSBgJHtTRVJWSUNFX1JPVVRFUy5oZWFydGJlYXR9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLnN0YXR1c1JlbGF0aXZlVXJsICAgICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuc3RhdHVzfS8ke3RoaXMuaWR9YDtcbiAgICAgICAgdGhpcy5zdGF0dXNEb25lUmVsYXRpdmVVcmwgICAgICAgICAgICAgICAgICAgICA9IGAke1NFUlZJQ0VfUk9VVEVTLnN0YXR1c0RvbmV9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLmlkbGVSZWxhdGl2ZVVybCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuaWRsZX0vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMuYWN0aXZlV2luZG93SWRVcmwgICAgICAgICAgICAgICAgICAgICAgICAgPSBgJHtTRVJWSUNFX1JPVVRFUy5hY3RpdmVXaW5kb3dJZH0vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMuZW5zdXJlV2luZG93SW5OYXRpdmVBdXRvbWF0aW9uVXJsICAgICAgICAgPSBgJHtTRVJWSUNFX1JPVVRFUy5lbnN1cmVXaW5kb3dJbk5hdGl2ZUF1dG9tYXRpb259LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLmNsb3NlV2luZG93VXJsICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuY2xvc2VXaW5kb3d9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLm9wZW5GaWxlUHJvdG9jb2xSZWxhdGl2ZVVybCAgICAgICAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMub3BlbkZpbGVQcm90b2NvbH0vJHt0aGlzLmlkfWA7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRSZWxhdGl2ZVVybCAgICAgICAgID0gYCR7U0VSVklDRV9ST1VURVMuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnR9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLmRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50U2VxdWVuY2VSZWxhdGl2ZVVybCA9IGAke1NFUlZJQ0VfUk9VVEVTLmRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50U2VxdWVuY2V9LyR7dGhpcy5pZH1gO1xuICAgICAgICB0aGlzLnBhcnNlU2VsZWN0b3JSZWxhdGl2ZVVybCAgICAgICAgICAgICAgICAgICAgICAgICA9IGAke1NFUlZJQ0VfUk9VVEVTLnBhcnNlU2VsZWN0b3J9LyR7dGhpcy5pZH1gO1xuXG4gICAgICAgIHRoaXMuaWRsZVVybCAgICAgICAgICAgICA9IHByb3h5LnJlc29sdmVSZWxhdGl2ZVNlcnZpY2VVcmwodGhpcy5pZGxlUmVsYXRpdmVVcmwpO1xuICAgICAgICB0aGlzLmhlYXJ0YmVhdFVybCAgICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKHRoaXMuaGVhcnRiZWF0UmVsYXRpdmVVcmwpO1xuICAgICAgICB0aGlzLnN0YXR1c1VybCAgICAgICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKHRoaXMuc3RhdHVzUmVsYXRpdmVVcmwpO1xuICAgICAgICB0aGlzLnN0YXR1c0RvbmVVcmwgICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKHRoaXMuc3RhdHVzRG9uZVJlbGF0aXZlVXJsKTtcbiAgICAgICAgdGhpcy5vcGVuRmlsZVByb3RvY29sVXJsID0gcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybCh0aGlzLm9wZW5GaWxlUHJvdG9jb2xSZWxhdGl2ZVVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXRNZXNzYWdlQnVzICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53YXJuaW5nTG9nLmNhbGxiYWNrID0gV2FybmluZ0xvZy5jcmVhdGVBZGRXYXJuaW5nQ2FsbGJhY2sodGhpcy5fbWVzc2FnZUJ1cyk7XG5cbiAgICAgICAgdGhpcy5hc3NpZ25UZXN0UnVuU3RhcnRFdmVudExpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZS1idXMtaW5pdGlhbGl6ZWQnLCB0aGlzLl9tZXNzYWdlQnVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNzaWduVGVzdFJ1blN0YXJ0RXZlbnRMaXN0ZW5lciAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fbWVzc2FnZUJ1cylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzLm9uKCd0ZXN0LXJ1bi1zdGFydCcsIHRlc3RSdW4gPT4ge1xuICAgICAgICAgICAgaWYgKHRlc3RSdW4uYnJvd3NlckNvbm5lY3Rpb24uaWQgPT09IHRoaXMuaWQpXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFRlc3RSdW4gPSB0ZXN0UnVuO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IG1lc3NhZ2VCdXMgKG1lc3NhZ2VCdXM6IE1lc3NhZ2VCdXMgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZUJ1cyA9IG1lc3NhZ2VCdXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZXNzYWdlQnVzICgpOiBNZXNzYWdlQnVzIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VCdXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0RXZlbnRIYW5kbGVycyAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub24oJ2Vycm9yJywgZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnTG9nZ2VyKGUpO1xuICAgICAgICAgICAgdGhpcy5fZm9yY2VJZGxlKCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBCcm93c2VyQ29ubmVjdGlvblN0YXR1cykge1xuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXNbbmFtZSBhcyBrZXlvZiB0eXBlb2YgQnJvd3NlckNvbm5lY3Rpb25TdGF0dXNdO1xuXG4gICAgICAgICAgICB0aGlzLm9uKHN0YXR1cywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVidWdMb2dnZXIoYHN0YXR1cyBjaGFuZ2VkIHRvICcke3N0YXR1c30nYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZW5lcmF0ZUlkICgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbmFub2lkKDcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEFkZGl0aW9uYWxCcm93c2VyT3B0aW9ucyAoKTogT3BlbkJyb3dzZXJBZGRpdGlvbmFsT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzOiB0aGlzLl9vcHRpb25zLmRpc2FibGVNdWx0aXBsZVdpbmRvd3MsXG4gICAgICAgICAgICBuYXRpdmVBdXRvbWF0aW9uOiAgICAgICB0aGlzLl9vcHRpb25zLm5hdGl2ZUF1dG9tYXRpb24sXG4gICAgICAgICAgICBkZXZlbG9wbWVudE1vZGU6ICAgICAgICB0aGlzLl9vcHRpb25zLmRldmVsb3BtZW50TW9kZSxcbiAgICAgICAgICAgIHNlcnZpY2VEb21haW5zOiAgICAgICAgIFtcbiAgICAgICAgICAgICAgICB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5wcm94eS5zZXJ2ZXIxSW5mby5kb21haW4sXG4gICAgICAgICAgICAgICAgdGhpcy5icm93c2VyQ29ubmVjdGlvbkdhdGV3YXkucHJveHkuc2VydmVyMkluZm8uZG9tYWluLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9ydW5Ccm93c2VyICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxPcHRpb25zID0gdGhpcy5fZ2V0QWRkaXRpb25hbEJyb3dzZXJPcHRpb25zKCk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXIub3BlbkJyb3dzZXIodGhpcy5pZCwgdGhpcy51cmwsIHRoaXMuYnJvd3NlckluZm8uYnJvd3Nlck9wdGlvbiwgYWRkaXRpb25hbE9wdGlvbnMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgIT09IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLnJlYWR5KVxuICAgICAgICAgICAgICAgIGF3YWl0IHByb21pc2lmeUV2ZW50KHRoaXMsICdyZWFkeScpO1xuXG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLm9wZW5lZDtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnb3BlbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEdlbmVyYWxFcnJvcihcbiAgICAgICAgICAgICAgICBSVU5USU1FX0VSUk9SUy51bmFibGVUb09wZW5Ccm93c2VyLFxuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3NlckluZm8ucHJvdmlkZXJOYW1lICsgJzonICsgdGhpcy5icm93c2VySW5mby5icm93c2VyTmFtZSxcbiAgICAgICAgICAgICAgICBlcnIuc3RhY2tcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfY2xvc2VCcm93c2VyIChkYXRhOiBCcm93c2VyQ2xvc2luZ0luZm8gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuaWRsZSlcbiAgICAgICAgICAgIGF3YWl0IHByb21pc2lmeUV2ZW50KHRoaXMsICdpZGxlJyk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXIuY2xvc2VCcm93c2VyKHRoaXMuaWQsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IEEgd2FybmluZyB3b3VsZCBiZSByZWFsbHkgbmljZSBoZXJlLCBidXQgaXQgY2FuJ3QgYmUgZG9uZSB3aGlsZSBsb2cgaXMgc3RvcmVkIGluIGEgdGFzay5cbiAgICAgICAgICAgIHRoaXMuZGVidWdMb2dnZXIoZXJyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2ZvcmNlSWRsZSAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pZGxlKSB7XG4gICAgICAgICAgICB0aGlzLmlkbGUgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2lkbGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZUJyb3dzZXJEaXNjb25uZWN0ZWRFcnJvciAoKTogR2VuZXJhbEVycm9yIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuYnJvd3NlckRpc2Nvbm5lY3RlZCwgdGhpcy51c2VyQWdlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3dhaXRGb3JIZWFydGJlYXQgKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5kZXZlbG9wbWVudE1vZGUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5oZWFydGJlYXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlcnIgPSB0aGlzLl9jcmVhdGVCcm93c2VyRGlzY29ubmVjdGVkRXJyb3IoKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0dXMgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLmRpc2Nvbm5lY3RlZDtcbiAgICAgICAgICAgIHRoaXMudGVzdFJ1bkFib3J0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2Rpc2Nvbm5lY3RlZCcsIGVycik7XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc3RhcnRCcm93c2VyT25EaXNjb25uZWN0KGVycik7XG4gICAgICAgIH0sIHRoaXMuSEVBUlRCRUFUX1RJTUVPVVQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2dldFRlc3RSdW5JbmZvIChuZWVkUG9wTmV4dDogYm9vbGVhbik6IFByb21pc2U8TmV4dFRlc3RSdW5JbmZvPiB7XG4gICAgICAgIGlmIChuZWVkUG9wTmV4dCB8fCAhdGhpcy5wZW5kaW5nVGVzdFJ1bkluZm8pXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdUZXN0UnVuSW5mbyA9IGF3YWl0IHRoaXMuX3BvcE5leHRUZXN0UnVuSW5mbygpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdUZXN0UnVuSW5mbyBhcyBOZXh0VGVzdFJ1bkluZm87XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcG9wTmV4dFRlc3RSdW5JbmZvICgpOiBQcm9taXNlPE5leHRUZXN0UnVuSW5mbyB8IG51bGw+IHtcbiAgICAgICAgd2hpbGUgKHRoaXMuaGFzUXVldWVkSm9icyAmJiAhdGhpcy5jdXJyZW50Sm9iLmhhc1F1ZXVlZFRlc3RSdW5zKVxuICAgICAgICAgICAgdGhpcy5qb2JRdWV1ZS5zaGlmdCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmhhc1F1ZXVlZEpvYnMgPyBhd2FpdCB0aGlzLmN1cnJlbnRKb2IucG9wTmV4dFRlc3RSdW5JbmZvKHRoaXMpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFRlc3RSdW4gKCk6IExlZ2FjeVRlc3RSdW4gfCBUZXN0UnVuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGVzdFJ1bjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEJ5SWQgKGlkOiBzdHJpbmcpOiBCcm93c2VyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gQnJvd3NlckNvbm5lY3Rpb25UcmFja2VyLmFjdGl2ZUJyb3dzZXJDb25uZWN0aW9uc1tpZF0gfHwgbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9yZXN0YXJ0QnJvd3NlciAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMudW5pbml0aWFsaXplZDtcblxuICAgICAgICB0aGlzLl9mb3JjZUlkbGUoKTtcblxuICAgICAgICBsZXQgcmVzb2x2ZVRpbWVvdXQ6IEZ1bmN0aW9uIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCBpc1RpbWVvdXRFeHBpcmVkICAgICAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIGxldCB0aW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IG51bGwgID0gbnVsbDtcblxuICAgICAgICBjb25zdCByZXN0YXJ0UHJvbWlzZSA9IHRpbWVMaW1pdCh0aGlzLl9jbG9zZUJyb3dzZXIoeyBpc1Jlc3RhcnRpbmc6IHRydWUgfSksIHRoaXMuQlJPV1NFUl9DTE9TRV9USU1FT1VULCB7IHJlamVjdFdpdGg6IG5ldyBUaW1lb3V0RXJyb3IoKSB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB0aGlzLmRlYnVnTG9nZ2VyKGVycikpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLl9ydW5Ccm93c2VyKCkpO1xuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlVGltZW91dCA9IHJlc29sdmU7XG5cbiAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpc1RpbWVvdXRFeHBpcmVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIHRoaXMuQlJPV1NFUl9SRVNUQVJUX1RJTUVPVVQpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtyZXN0YXJ0UHJvbWlzZSwgdGltZW91dFByb21pc2VdKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0IGFzIE5vZGVKUy5UaW1lb3V0KTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1RpbWVvdXRFeHBpcmVkKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgdGhpcy5fY3JlYXRlQnJvd3NlckRpc2Nvbm5lY3RlZEVycm9yKCkpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgKHJlc29sdmVUaW1lb3V0IGFzIEZ1bmN0aW9uKSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVzdGFydEJyb3dzZXJPbkRpc2Nvbm5lY3QgKGVycjogRXJyb3IpOiB2b2lkIHtcbiAgICAgICAgbGV0IHJlc29sdmVGbjogRnVuY3Rpb24gfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IHJlamVjdEZuOiBGdW5jdGlvbiB8IG51bGwgID0gbnVsbDtcblxuICAgICAgICB0aGlzLmRpc2Nvbm5lY3Rpb25Qcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZUZuID0gcmVzb2x2ZTtcblxuICAgICAgICAgICAgcmVqZWN0Rm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAocmVqZWN0Rm4gYXMgRnVuY3Rpb24pKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVzdGFydEJyb3dzZXIoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGUpO1xuICAgICAgICAgICAgfSkgYXMgRGlzY29ubmVjdGlvblByb21pc2U8dm9pZD47XG5cbiAgICAgICAgdGhpcy5kaXNjb25uZWN0aW9uUHJvbWlzZS5yZXNvbHZlID0gcmVzb2x2ZUZuIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG4gICAgICAgIHRoaXMuZGlzY29ubmVjdGlvblByb21pc2UucmVqZWN0ICA9IHJlamVjdEZuIGFzIHVua25vd24gYXMgRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldERlZmF1bHRCcm93c2VySW5pdFRpbWVvdXQgKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IGlzTG9jYWxCcm93c2VyID0gYXdhaXQgdGhpcy5wcm92aWRlci5pc0xvY2FsQnJvd3Nlcih0aGlzLmlkLCB0aGlzLmJyb3dzZXJJbmZvLmJyb3dzZXJOYW1lKTtcblxuICAgICAgICByZXR1cm4gaXNMb2NhbEJyb3dzZXIgPyBMT0NBTF9CUk9XU0VSX0lOSVRfVElNRU9VVCA6IFJFTU9URV9CUk9XU0VSX0lOSVRfVElNRU9VVDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJvY2Vzc0Rpc2Nvbm5lY3Rpb24gKGRpc2Nvbm5lY3Rpb25UaHJlc2hvbGRFeGNlZWRlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IHJlc29sdmUsIHJlamVjdCB9ID0gdGhpcy5kaXNjb25uZWN0aW9uUHJvbWlzZSBhcyBEaXNjb25uZWN0aW9uUHJvbWlzZTx2b2lkPjtcblxuICAgICAgICBpZiAoZGlzY29ubmVjdGlvblRocmVzaG9sZEV4Y2VlZGVkKVxuICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkV2FybmluZyAobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Sm9iKVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Sm9iLndhcm5pbmdMb2cuYWRkV2FybmluZyhtZXNzYWdlLCAuLi5hcmdzKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy53YXJuaW5nTG9nLmFkZFdhcm5pbmcobWVzc2FnZSwgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwZW5kVG9QcmV0dHlVc2VyQWdlbnQgKHN0cjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnJvd3NlckluZm8ucGFyc2VkVXNlckFnZW50LnByZXR0eVVzZXJBZ2VudCArPSBgICgke3N0cn0pYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9tb3ZlV2FybmluZ0xvZ1RvSm9iIChqb2I6IEJyb3dzZXJKb2IpOiB2b2lkIHtcbiAgICAgICAgam9iLndhcm5pbmdMb2cuY29weUZyb20odGhpcy53YXJuaW5nTG9nKTtcbiAgICAgICAgdGhpcy53YXJuaW5nTG9nLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFByb3ZpZGVyTWV0YUluZm8gKHN0cjogc3RyaW5nLCBvcHRpb25zPzogUHJvdmlkZXJNZXRhSW5mb09wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXBwZW5kVG9Vc2VyQWdlbnQgPSBvcHRpb25zPy5hcHBlbmRUb1VzZXJBZ2VudCBhcyBib29sZWFuO1xuXG4gICAgICAgIGlmIChhcHBlbmRUb1VzZXJBZ2VudCkge1xuICAgICAgICAgICAgLy8gTk9URTpcbiAgICAgICAgICAgIC8vIGNoYW5nZSBwcmV0dHlVc2VyQWdlbnQgb25seSB3aGVuIGNvbm5lY3Rpb24gYWxyZWFkeSB3YXMgZXN0YWJsaXNoZWRcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZHkoKSlcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRUb1ByZXR0eVVzZXJBZ2VudChzdHIpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMub24oJ3JlYWR5JywgKCkgPT4gdGhpcy5fYXBwZW5kVG9QcmV0dHlVc2VyQWdlbnQoc3RyKSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnJvd3NlckluZm8udXNlckFnZW50UHJvdmlkZXJNZXRhSW5mbyA9IHN0cjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVzZXJBZ2VudCAoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHVzZXJBZ2VudCA9IHRoaXMuYnJvd3NlckluZm8ucGFyc2VkVXNlckFnZW50LnByZXR0eVVzZXJBZ2VudDtcblxuICAgICAgICBpZiAodGhpcy5icm93c2VySW5mby51c2VyQWdlbnRQcm92aWRlck1ldGFJbmZvKVxuICAgICAgICAgICAgdXNlckFnZW50ICs9IGAgKCR7dGhpcy5icm93c2VySW5mby51c2VyQWdlbnRQcm92aWRlck1ldGFJbmZvfSlgO1xuXG4gICAgICAgIHJldHVybiB1c2VyQWdlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXRyeVRlc3RQYWdlcyAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5yZXRyeVRlc3RQYWdlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1F1ZXVlZEpvYnMgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmpvYlF1ZXVlLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRKb2IgKCk6IEJyb3dzZXJKb2Ige1xuICAgICAgICByZXR1cm4gdGhpcy5qb2JRdWV1ZVswXTtcbiAgICB9XG5cbiAgICAvLyBBUElcbiAgICBwdWJsaWMgcnVuSW5pdFNjcmlwdCAoY29kZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmtub3duPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRoaXMuaW5pdFNjcmlwdHNRdWV1ZS5wdXNoKHsgY29kZSwgcmVzb2x2ZSB9KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEpvYiAoam9iOiBCcm93c2VySm9iKTogdm9pZCB7XG4gICAgICAgIHRoaXMuam9iUXVldWUucHVzaChqb2IpO1xuXG4gICAgICAgIHRoaXMuX21vdmVXYXJuaW5nTG9nVG9Kb2Ioam9iKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSm9iIChqb2I6IEJyb3dzZXJKb2IpOiB2b2lkIHtcbiAgICAgICAgcmVtb3ZlKHRoaXMuam9iUXVldWUsIGpvYik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNsb3NlICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zaW5nIHx8IHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zZWQpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5zdGF0dXMgPSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zaW5nO1xuICAgICAgICB0aGlzLmVtaXQoQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2luZyk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fY2xvc2VCcm93c2VyKCk7XG5cbiAgICAgICAgdGhpcy5icm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuc3RvcFNlcnZpbmdDb25uZWN0aW9uKHRoaXMpO1xuXG4gICAgICAgIGlmICh0aGlzLmhlYXJ0YmVhdFRpbWVvdXQpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5oZWFydGJlYXRUaW1lb3V0KTtcblxuICAgICAgICBCcm93c2VyQ29ubmVjdGlvblRyYWNrZXIucmVtb3ZlKHRoaXMpO1xuXG4gICAgICAgIHRoaXMuc3RhdHVzID0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2VkO1xuICAgICAgICB0aGlzLmVtaXQoQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2VkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZXN0YWJsaXNoICh1c2VyQWdlbnQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBvc0luZm8gPSBhd2FpdCB0aGlzLnByb3ZpZGVyLmdldE9TSW5mbyh0aGlzLmlkKTtcblxuICAgICAgICB0aGlzLnN0YXR1cyAgICAgICAgICAgICAgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLnJlYWR5O1xuICAgICAgICB0aGlzLmJyb3dzZXJJbmZvLnBhcnNlZFVzZXJBZ2VudCA9IHBhcnNlVXNlckFnZW50KHVzZXJBZ2VudCwgb3NJbmZvKTtcblxuICAgICAgICB0aGlzLl93YWl0Rm9ySGVhcnRiZWF0KCk7XG4gICAgICAgIHRoaXMuZW1pdCgncmVhZHknKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGVhcnRiZWF0ICgpOiBIZWFydGJlYXRTdGF0dXNSZXN1bHQge1xuICAgICAgICBpZiAodGhpcy5oZWFydGJlYXRUaW1lb3V0KVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGVhcnRiZWF0VGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5fd2FpdEZvckhlYXJ0YmVhdCgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2RlOiB0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMuY2xvc2luZyA/IEhlYXJ0YmVhdFN0YXR1cy5jbG9zaW5nIDogSGVhcnRiZWF0U3RhdHVzLm9rLFxuICAgICAgICAgICAgdXJsOiAgdGhpcy5zdGF0dXMgPT09IEJyb3dzZXJDb25uZWN0aW9uU3RhdHVzLmNsb3NpbmcgPyB0aGlzLmlkbGVVcmwgOiAnJyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVuZGVySWRsZVBhZ2UgKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBNdXN0YWNoZS5yZW5kZXIoSURMRV9QQUdFX1RFTVBMQVRFIGFzIHN0cmluZywge1xuICAgICAgICAgICAgdXNlckFnZW50OiAgICAgICAgICAgdGhpcy51c2VyQWdlbnQsXG4gICAgICAgICAgICBzdGF0dXNVcmw6ICAgICAgICAgICB0aGlzLnN0YXR1c1VybCxcbiAgICAgICAgICAgIGhlYXJ0YmVhdFVybDogICAgICAgIHRoaXMuaGVhcnRiZWF0VXJsLFxuICAgICAgICAgICAgaW5pdFNjcmlwdFVybDogICAgICAgdGhpcy5pbml0U2NyaXB0VXJsLFxuICAgICAgICAgICAgb3BlbkZpbGVQcm90b2NvbFVybDogdGhpcy5vcGVuRmlsZVByb3RvY29sVXJsLFxuICAgICAgICAgICAgcmV0cnlUZXN0UGFnZXM6ICAgICAgISF0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5yZXRyeVRlc3RQYWdlcyxcbiAgICAgICAgICAgIG5hdGl2ZUF1dG9tYXRpb246ICAgIHRoaXMuX29wdGlvbnMubmF0aXZlQXV0b21hdGlvbixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEluaXRTY3JpcHQgKCk6IEluaXRTY3JpcHQge1xuICAgICAgICBjb25zdCBpbml0U2NyaXB0UHJvbWlzZSA9IHRoaXMuaW5pdFNjcmlwdHNRdWV1ZVswXTtcblxuICAgICAgICByZXR1cm4geyBjb2RlOiBpbml0U2NyaXB0UHJvbWlzZSA/IGluaXRTY3JpcHRQcm9taXNlLmNvZGUgOiBudWxsIH07XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUluaXRTY3JpcHRSZXN1bHQgKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbml0U2NyaXB0UHJvbWlzZSA9IHRoaXMuaW5pdFNjcmlwdHNRdWV1ZS5zaGlmdCgpO1xuXG4gICAgICAgIGlmIChpbml0U2NyaXB0UHJvbWlzZSlcbiAgICAgICAgICAgIGluaXRTY3JpcHRQcm9taXNlLnJlc29sdmUoSlNPTi5wYXJzZShkYXRhKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGVhZGxlc3NCcm93c2VyICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuaXNIZWFkbGVzc0Jyb3dzZXIodGhpcy5pZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlcG9ydEpvYlJlc3VsdCAoc3RhdHVzOiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvdmlkZXIucmVwb3J0Sm9iUmVzdWx0KHRoaXMuaWQsIHN0YXR1cywgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFN0YXR1cyAoaXNUZXN0RG9uZTogYm9vbGVhbik6IFByb21pc2U8QnJvd3NlckNvbm5lY3Rpb25TdGF0dXNSZXN1bHQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlkbGUgJiYgIWlzVGVzdERvbmUpIHtcbiAgICAgICAgICAgIHRoaXMuaWRsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2lkbGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMub3BlbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0VGVzdFJ1bkluZm8gPSBhd2FpdCB0aGlzLl9nZXRUZXN0UnVuSW5mbyhpc1Rlc3REb25lIHx8IHRoaXMudGVzdFJ1bkFib3J0ZWQpO1xuXG4gICAgICAgICAgICB0aGlzLnRlc3RSdW5BYm9ydGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChuZXh0VGVzdFJ1bkluZm8pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlkbGUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNtZDogICAgICAgQ09NTUFORC5ydW4sXG4gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5JZDogbmV4dFRlc3RSdW5JbmZvLnRlc3RSdW5JZCxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAgICAgICBuZXh0VGVzdFJ1bkluZm8udXJsLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY21kOiAgICAgICBDT01NQU5ELmlkbGUsXG4gICAgICAgICAgICB1cmw6ICAgICAgIHRoaXMuaWRsZVVybCxcbiAgICAgICAgICAgIHRlc3RSdW5JZDogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZVdpbmRvd0lkICgpOiBudWxsIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0QWN0aXZlV2luZG93SWQodGhpcy5pZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBhY3RpdmVXaW5kb3dJZCAodmFsKSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNBY3RpdmVXaW5kb3dJZCA9IHRoaXMuYWN0aXZlV2luZG93SWQ7XG5cbiAgICAgICAgdGhpcy5wcm92aWRlci5zZXRBY3RpdmVXaW5kb3dJZCh0aGlzLmlkLCB2YWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvcGVuRmlsZVByb3RvY29sICh1cmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5vcGVuRmlsZVByb3RvY29sKHRoaXMuaWQsIHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50ICh0eXBlOiBFdmVudFR5cGUsIG9wdGlvbnM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5kaXNwYXRjaE5hdGl2ZUF1dG9tYXRpb25FdmVudCh0aGlzLmlkLCB0eXBlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRTZXF1ZW5jZSAoZXZlbnRTZXF1ZW5jZTogW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRTZXF1ZW5jZSh0aGlzLmlkLCBldmVudFNlcXVlbmNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5jYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyh0aGlzLmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNSZWFkeSAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gQnJvd3NlckNvbm5lY3Rpb25TdGF0dXMucmVhZHkgfHxcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5vcGVuZWQgfHxcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID09PSBCcm93c2VyQ29ubmVjdGlvblN0YXR1cy5jbG9zaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0aWFsaXplICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYnVpbGRDb21tdW5pY2F0aW9uVXJscyh0aGlzLmJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5wcm94eSk7XG5cbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB0aGlzLl9ydW5Ccm93c2VyKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdXBwb3J0TmF0aXZlQXV0b21hdGlvbiAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLnN1cHBvcnROYXRpdmVBdXRvbWF0aW9uKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hdGl2ZUF1dG9tYXRpb24gKCk6IE5hdGl2ZUF1dG9tYXRpb25CYXNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0TmF0aXZlQXV0b21hdGlvbih0aGlzLmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNOYXRpdmVBdXRvbWF0aW9uRW5hYmxlZCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zLm5hdGl2ZUF1dG9tYXRpb247XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TmV3V2luZG93SWRJbk5hdGl2ZUF1dG9tYXRpb24gKHdpbmRvd0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0TmV3V2luZG93SWRJbk5hdGl2ZUF1dG9tYXRpb24odGhpcy5pZCwgd2luZG93SWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldEFjdGl2ZVdpbmRvd0lkICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm92aWRlci5yZXNldEFjdGl2ZVdpbmRvd0lkKHRoaXMuaWQpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -10,6 +10,7 @@ exports.default = {
|
|
|
10
10
|
idle: '/browser/idle',
|
|
11
11
|
idleForced: '/browser/idle-forced',
|
|
12
12
|
activeWindowId: '/browser/active-window-id',
|
|
13
|
+
ensureWindowInNativeAutomation: '/browser/ensure-window-in-native-automation',
|
|
13
14
|
closeWindow: '/browser/close-window',
|
|
14
15
|
serviceWorker: '/service-worker.js',
|
|
15
16
|
openFileProtocol: '/browser/open-file-protocol',
|
|
@@ -23,4 +24,4 @@ exports.default = {
|
|
|
23
24
|
},
|
|
24
25
|
};
|
|
25
26
|
module.exports = exports.default;
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1yb3V0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJvd3Nlci9jb25uZWN0aW9uL3NlcnZpY2Utcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0JBQWU7SUFDWCxPQUFPLEVBQWdDLGtCQUFrQjtJQUN6RCx3QkFBd0IsRUFBZSxtQkFBbUI7SUFDMUQsU0FBUyxFQUE4QixvQkFBb0I7SUFDM0QsTUFBTSxFQUFpQyxpQkFBaUI7SUFDeEQsVUFBVSxFQUE2QixzQkFBc0I7SUFDN0QsVUFBVSxFQUE2QixzQkFBc0I7SUFDN0QsSUFBSSxFQUFtQyxlQUFlO0lBQ3RELFVBQVUsRUFBNkIsc0JBQXNCO0lBQzdELGNBQWMsRUFBeUIsMkJBQTJCO0lBQ2xFLDhCQUE4QixFQUFTLDZDQUE2QztJQUNwRixXQUFXLEVBQTRCLHVCQUF1QjtJQUM5RCxhQUFhLEVBQTBCLG9CQUFvQjtJQUMzRCxnQkFBZ0IsRUFBdUIsNkJBQTZCO0lBQ3BFLDZCQUE2QixFQUFVLDJDQUEyQztJQUNsRixxQ0FBcUMsRUFBRSxvREFBb0Q7SUFDM0YsYUFBYSxFQUEwQixpQkFBaUI7SUFFeEQsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFHLDBCQUEwQjtRQUNsQyxNQUFNLEVBQUUsNEJBQTRCO1FBQ3BDLElBQUksRUFBSSwwQkFBMEI7S0FDckM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICAgIGNvbm5lY3Q6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvYnJvd3Nlci9jb25uZWN0JyxcbiAgICBjb25uZWN0V2l0aFRyYWlsaW5nU2xhc2g6ICAgICAgICAgICAgICAnL2Jyb3dzZXIvY29ubmVjdC8nLFxuICAgIGhlYXJ0YmVhdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvYnJvd3Nlci9oZWFydGJlYXQnLFxuICAgIHN0YXR1czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvYnJvd3Nlci9zdGF0dXMnLFxuICAgIHN0YXR1c0RvbmU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvYnJvd3Nlci9zdGF0dXMtZG9uZScsXG4gICAgaW5pdFNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9icm93c2VyL2luaXQtc2NyaXB0JyxcbiAgICBpZGxlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL2Jyb3dzZXIvaWRsZScsXG4gICAgaWRsZUZvcmNlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9icm93c2VyL2lkbGUtZm9yY2VkJyxcbiAgICBhY3RpdmVXaW5kb3dJZDogICAgICAgICAgICAgICAgICAgICAgICAnL2Jyb3dzZXIvYWN0aXZlLXdpbmRvdy1pZCcsXG4gICAgZW5zdXJlV2luZG93SW5OYXRpdmVBdXRvbWF0aW9uOiAgICAgICAgJy9icm93c2VyL2Vuc3VyZS13aW5kb3ctaW4tbmF0aXZlLWF1dG9tYXRpb24nLFxuICAgIGNsb3NlV2luZG93OiAgICAgICAgICAgICAgICAgICAgICAgICAgICcvYnJvd3Nlci9jbG9zZS13aW5kb3cnLFxuICAgIHNlcnZpY2VXb3JrZXI6ICAgICAgICAgICAgICAgICAgICAgICAgICcvc2VydmljZS13b3JrZXIuanMnLFxuICAgIG9wZW5GaWxlUHJvdG9jb2w6ICAgICAgICAgICAgICAgICAgICAgICcvYnJvd3Nlci9vcGVuLWZpbGUtcHJvdG9jb2wnLFxuICAgIGRpc3BhdGNoTmF0aXZlQXV0b21hdGlvbkV2ZW50OiAgICAgICAgICcvYnJvd3Nlci9kaXNwYXRjaC1uYXRpdmUtYXV0b21hdGlvbi1ldmVudCcsXG4gICAgZGlzcGF0Y2hOYXRpdmVBdXRvbWF0aW9uRXZlbnRTZXF1ZW5jZTogJy9icm93c2VyL2Rpc3BhdGNoLW5hdGl2ZS1hdXRvbWF0aW9uLWV2ZW50LXNlcXVlbmNlJyxcbiAgICBwYXJzZVNlbGVjdG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAnL3BhcnNlLXNlbGVjdG9yJyxcblxuICAgIGFzc2V0czoge1xuICAgICAgICBpbmRleDogICcvYnJvd3Nlci9hc3NldHMvaW5kZXguanMnLFxuICAgICAgICBzdHlsZXM6ICcvYnJvd3Nlci9hc3NldHMvc3R5bGVzLmNzcycsXG4gICAgICAgIGxvZ286ICAgJy9icm93c2VyL2Fzc2V0cy9sb2dvLnN2ZycsXG4gICAgfSxcbn07XG4iXX0=
|
|
@@ -14,6 +14,10 @@ exports.default = {
|
|
|
14
14
|
getActiveWindowId(browserId) {
|
|
15
15
|
return this.openedBrowsers[browserId].activeWindowId;
|
|
16
16
|
},
|
|
17
|
+
resetActiveWindowId(browserId) {
|
|
18
|
+
var _a;
|
|
19
|
+
this.openedBrowsers[browserId].activeWindowId = (_a = this.openedBrowsers[browserId].nativeAutomation) === null || _a === void 0 ? void 0 : _a.windowId;
|
|
20
|
+
},
|
|
17
21
|
setActiveWindowId(browserId, val) {
|
|
18
22
|
this.openedBrowsers[browserId].activeWindowId = val;
|
|
19
23
|
},
|
|
@@ -77,11 +81,11 @@ exports.default = {
|
|
|
77
81
|
const maximumSize = (0, get_maximized_headless_window_size_1.default)();
|
|
78
82
|
await this.resizeWindow(browserId, maximumSize.width, maximumSize.height, maximumSize.width, maximumSize.height);
|
|
79
83
|
},
|
|
80
|
-
async closeBrowserChildWindow(browserId) {
|
|
84
|
+
async closeBrowserChildWindow(browserId, windowId) {
|
|
81
85
|
const runtimeInfo = this.openedBrowsers[browserId];
|
|
82
86
|
const browserClient = this._getBrowserProtocolClient(runtimeInfo);
|
|
83
|
-
return browserClient.closeBrowserChildWindow();
|
|
87
|
+
return browserClient.closeBrowserChildWindow(windowId);
|
|
84
88
|
},
|
|
85
89
|
};
|
|
86
90
|
module.exports = exports.default;
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9icm93c2VyL3Byb3ZpZGVyL2J1aWx0LWluL2RlZGljYXRlZC9iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUVBQXdEO0FBQ3hELHdIQUE0RjtBQUM1Rix1REFBOEQ7QUFDOUQsbUZBQTRFO0FBRTVFLGtCQUFlO0lBQ1gsY0FBYyxFQUFFLEVBQUU7SUFFbEIsY0FBYyxFQUFFLEtBQUs7SUFFckIsc0JBQXNCLEVBQUUsSUFBSTtJQUU1QixpQkFBaUIsQ0FBRSxTQUFTO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDekQsQ0FBQztJQUVELG1CQUFtQixDQUFFLFNBQVM7O1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxHQUFHLE1BQUEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsMENBQUUsUUFBUSxDQUFDO0lBQzlHLENBQUM7SUFFRCxpQkFBaUIsQ0FBRSxTQUFTLEVBQUUsR0FBRztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUM7SUFDeEQsQ0FBQztJQUVELFlBQVksQ0FBRSxTQUFTO1FBQ25CLE1BQU0sV0FBVyxHQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUUzRSxPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxtQkFBbUIsQ0FBRSxTQUFTO1FBQzFCLE1BQU0sV0FBVyxH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LElBQUEsNENBQThCLEdBQUUsQ0FBQztRQUVyRCxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFFLFNBQVMsRUFBRSxRQUFRO1FBQzlDLE1BQU0sV0FBVyxHQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWxFLE9BQU8sYUFBYSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0QnJvd3NlckluZm8gfSBmcm9tICd0ZXN0Y2FmZS1icm93c2VyLXRvb2xzJztcbmltcG9ydCBnZXRNYXhpbWl6ZWRIZWFkbGVzc1dpbmRvd1NpemUgZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LW1heGltaXplZC1oZWFkbGVzcy13aW5kb3ctc2l6ZSc7XG5pbXBvcnQgeyBjcm9wU2NyZWVuc2hvdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NjcmVlbnNob3RzL2Nyb3AnO1xuaW1wb3J0IHsgcmVhZFBuZywgd3JpdGVQbmcgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9wcm9taXNpZmllZC1mdW5jdGlvbnMnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgb3BlbmVkQnJvd3NlcnM6IHt9LFxuXG4gICAgaXNNdWx0aUJyb3dzZXI6IGZhbHNlLFxuXG4gICAgc3VwcG9ydE11bHRpcGxlV2luZG93czogdHJ1ZSxcblxuICAgIGdldEFjdGl2ZVdpbmRvd0lkIChicm93c2VySWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXS5hY3RpdmVXaW5kb3dJZDtcbiAgICB9LFxuXG4gICAgcmVzZXRBY3RpdmVXaW5kb3dJZCAoYnJvd3NlcklkKSB7XG4gICAgICAgIHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXS5hY3RpdmVXaW5kb3dJZCA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXS5uYXRpdmVBdXRvbWF0aW9uPy53aW5kb3dJZDtcbiAgICB9LFxuXG4gICAgc2V0QWN0aXZlV2luZG93SWQgKGJyb3dzZXJJZCwgdmFsKSB7XG4gICAgICAgIHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXS5hY3RpdmVXaW5kb3dJZCA9IHZhbDtcbiAgICB9LFxuXG4gICAgZ2V0UGFnZVRpdGxlIChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gICAgID0gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuICAgICAgICBjb25zdCBpc0lkbGVQYWdlU2hvd24gPSAhT2JqZWN0LmtleXMocnVudGltZUluZm8ud2luZG93RGVzY3JpcHRvcnMpLmxlbmd0aDtcblxuICAgICAgICByZXR1cm4gaXNJZGxlUGFnZVNob3duID8gYnJvd3NlcklkIDogcnVudGltZUluZm8uYWN0aXZlV2luZG93SWQ7XG4gICAgfSxcblxuICAgIGdldFdpbmRvd0Rlc2NyaXB0b3IgKGJyb3dzZXJJZCkge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcblxuICAgICAgICByZXR1cm4gcnVudGltZUluZm8ud2luZG93RGVzY3JpcHRvcnNbcnVudGltZUluZm8uYWN0aXZlV2luZG93SWRdO1xuICAgIH0sXG5cbiAgICBzZXRXaW5kb3dEZXNjcmlwdG9yIChicm93c2VySWQsIHdpbmRvd0Rlc2NyaXB0b3IpIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgcnVudGltZUluZm8ud2luZG93RGVzY3JpcHRvcnNbcnVudGltZUluZm8uYWN0aXZlV2luZG93SWRdID0gd2luZG93RGVzY3JpcHRvcjtcbiAgICB9LFxuXG4gICAgZ2V0Q29uZmlnICgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9LFxuXG4gICAgX2dldEJyb3dzZXJQcm90b2NvbENsaWVudCAoLyogcnVudGltZUluZm8gKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9LFxuXG4gICAgX2dldEJyb3dzZXJOYW1lICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXJOYW1lLnJlcGxhY2UoJzonLCAnJyk7XG4gICAgfSxcblxuICAgIGFzeW5jIGlzVmFsaWRCcm93c2VyTmFtZSAoYnJvd3Nlck5hbWUpIHtcbiAgICAgICAgY29uc3QgY29uZmlnICAgICAgPSBhd2FpdCB0aGlzLmdldENvbmZpZyhicm93c2VyTmFtZSk7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJJbmZvID0gYXdhaXQgZ2V0QnJvd3NlckluZm8oY29uZmlnLnBhdGggfHwgdGhpcy5fZ2V0QnJvd3Nlck5hbWUoKSk7XG5cbiAgICAgICAgcmV0dXJuICEhYnJvd3NlckluZm87XG4gICAgfSxcblxuICAgIGFzeW5jIGlzTG9jYWxCcm93c2VyICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcblxuICAgIGlzSGVhZGxlc3NCcm93c2VyIChicm93c2VySWQsIGJyb3dzZXJOYW1lKSB7XG4gICAgICAgIGlmIChicm93c2VySWQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdLmNvbmZpZy5oZWFkbGVzcztcblxuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmdldENvbmZpZyhicm93c2VyTmFtZSk7XG5cbiAgICAgICAgcmV0dXJuICEhY29uZmlnLmhlYWRsZXNzO1xuICAgIH0sXG5cbiAgICBfZ2V0Q3JvcERpbWVuc2lvbnMgKHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAgIGlmICghdmlld3BvcnRXaWR0aCB8fCAhdmlld3BvcnRIZWlnaHQpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGVmdDogICAwLFxuICAgICAgICAgICAgdG9wOiAgICAwLFxuICAgICAgICAgICAgcmlnaHQ6ICB2aWV3cG9ydFdpZHRoLFxuICAgICAgICAgICAgYm90dG9tOiB2aWV3cG9ydEhlaWdodCxcbiAgICAgICAgfTtcbiAgICB9LFxuXG4gICAgYXN5bmMgdGFrZVNjcmVlbnNob3QgKGJyb3dzZXJJZCwgcGF0aCwgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQsIGZ1bGxQYWdlKSB7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWVJbmZvICAgID0gdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuICAgICAgICBjb25zdCBicm93c2VyQ2xpZW50ICA9IHRoaXMuX2dldEJyb3dzZXJQcm90b2NvbENsaWVudChydW50aW1lSW5mbyk7XG4gICAgICAgIGNvbnN0IGJpbmFyeUltYWdlICAgID0gYXdhaXQgYnJvd3NlckNsaWVudC5nZXRTY3JlZW5zaG90RGF0YShmdWxsUGFnZSk7XG4gICAgICAgIGNvbnN0IGNyb3BEaW1lbnNpb25zID0gdGhpcy5fZ2V0Q3JvcERpbWVuc2lvbnModmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpO1xuXG4gICAgICAgIGxldCBwbmdJbWFnZSA9IGF3YWl0IHJlYWRQbmcoYmluYXJ5SW1hZ2UpO1xuXG4gICAgICAgIGlmICghZnVsbFBhZ2UpXG4gICAgICAgICAgICBwbmdJbWFnZSA9IGF3YWl0IGNyb3BTY3JlZW5zaG90KHBuZ0ltYWdlLCB7IHBhdGgsIGNyb3BEaW1lbnNpb25zIH0pIHx8IHBuZ0ltYWdlO1xuXG4gICAgICAgIGF3YWl0IHdyaXRlUG5nKHBhdGgsIHBuZ0ltYWdlKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgbWF4aW1pemVXaW5kb3cgKGJyb3dzZXJJZCkge1xuICAgICAgICBjb25zdCBtYXhpbXVtU2l6ZSA9IGdldE1heGltaXplZEhlYWRsZXNzV2luZG93U2l6ZSgpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMucmVzaXplV2luZG93KGJyb3dzZXJJZCwgbWF4aW11bVNpemUud2lkdGgsIG1heGltdW1TaXplLmhlaWdodCwgbWF4aW11bVNpemUud2lkdGgsIG1heGltdW1TaXplLmhlaWdodCk7XG4gICAgfSxcblxuICAgIGFzeW5jIGNsb3NlQnJvd3NlckNoaWxkV2luZG93IChicm93c2VySWQsIHdpbmRvd0lkKSB7XG4gICAgICAgIGNvbnN0IHJ1bnRpbWVJbmZvICAgPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG4gICAgICAgIGNvbnN0IGJyb3dzZXJDbGllbnQgPSB0aGlzLl9nZXRCcm93c2VyUHJvdG9jb2xDbGllbnQocnVudGltZUluZm8pO1xuXG4gICAgICAgIHJldHVybiBicm93c2VyQ2xpZW50LmNsb3NlQnJvd3NlckNoaWxkV2luZG93KHdpbmRvd0lkKTtcbiAgICB9LFxufTtcbiJdfQ==
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildChromeArgs = exports.CONTAINERIZED_CHROME_FLAGS = void 0;
|
|
4
4
|
exports.CONTAINERIZED_CHROME_FLAGS = ['--no-sandbox', '--disable-dev-shm-usage'];
|
|
5
|
-
function buildChromeArgs({ config, cdpPort, platformArgs, tempProfileDir, isContainerized }) {
|
|
5
|
+
function buildChromeArgs({ config, cdpPort, platformArgs, tempProfileDir, isContainerized, isNativeAutomation }) {
|
|
6
6
|
let chromeArgs = []
|
|
7
|
-
.concat(cdpPort ? [`--remote-debugging-port=${cdpPort}`] : [], !config.userProfile ? [`--user-data-dir=${tempProfileDir.path}`] : [], config.headless ? ['--headless'] : [], config.userArgs ? [config.userArgs] : [],
|
|
7
|
+
.concat(cdpPort ? [`--remote-debugging-port=${cdpPort}`] : [], !config.userProfile ? [`--user-data-dir=${tempProfileDir.path}`] : [], config.headless ? ['--headless'] : [], config.userArgs ? [config.userArgs] : [],
|
|
8
|
+
// NOTE: we need to prevent new window blocking for multiple windows in Native Automation
|
|
9
|
+
isNativeAutomation ? ['--disable-popup-blocking'] : [], platformArgs ? [platformArgs] : [])
|
|
8
10
|
.join(' ');
|
|
9
11
|
if (isContainerized) {
|
|
10
12
|
exports.CONTAINERIZED_CHROME_FLAGS.forEach(flag => {
|
|
@@ -15,4 +17,4 @@ function buildChromeArgs({ config, cdpPort, platformArgs, tempProfileDir, isCont
|
|
|
15
17
|
return chromeArgs;
|
|
16
18
|
}
|
|
17
19
|
exports.buildChromeArgs = buildChromeArgs;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY2hyb21lLWFyZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvY2hyb21lL2J1aWxkLWNocm9tZS1hcmdzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsMEJBQTBCLEdBQUcsQ0FBQyxjQUFjLEVBQUUseUJBQXlCLENBQUMsQ0FBQztBQUV0RixTQUFnQixlQUFlLENBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFO0lBQ25ILElBQUksVUFBVSxHQUFHLEVBQUU7U0FDZCxNQUFNLENBQ0gsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ3JELENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDckUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN4Qyx5RkFBeUY7SUFDekYsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUN0RCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDckM7U0FDQSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFZixJQUFJLGVBQWUsRUFBRTtRQUNqQixrQ0FBMEIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUMxQixVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7S0FDTjtJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUM7QUFyQkQsMENBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENPTlRBSU5FUklaRURfQ0hST01FX0ZMQUdTID0gWyctLW5vLXNhbmRib3gnLCAnLS1kaXNhYmxlLWRldi1zaG0tdXNhZ2UnXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ2hyb21lQXJncyAoeyBjb25maWcsIGNkcFBvcnQsIHBsYXRmb3JtQXJncywgdGVtcFByb2ZpbGVEaXIsIGlzQ29udGFpbmVyaXplZCwgaXNOYXRpdmVBdXRvbWF0aW9uIH0pIHtcbiAgICBsZXQgY2hyb21lQXJncyA9IFtdXG4gICAgICAgIC5jb25jYXQoXG4gICAgICAgICAgICBjZHBQb3J0ID8gW2AtLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydD0ke2NkcFBvcnR9YF0gOiBbXSxcbiAgICAgICAgICAgICFjb25maWcudXNlclByb2ZpbGUgPyBbYC0tdXNlci1kYXRhLWRpcj0ke3RlbXBQcm9maWxlRGlyLnBhdGh9YF0gOiBbXSxcbiAgICAgICAgICAgIGNvbmZpZy5oZWFkbGVzcyA/IFsnLS1oZWFkbGVzcyddIDogW10sXG4gICAgICAgICAgICBjb25maWcudXNlckFyZ3MgPyBbY29uZmlnLnVzZXJBcmdzXSA6IFtdLFxuICAgICAgICAgICAgLy8gTk9URTogd2UgbmVlZCB0byBwcmV2ZW50IG5ldyB3aW5kb3cgYmxvY2tpbmcgZm9yIG11bHRpcGxlIHdpbmRvd3MgaW4gTmF0aXZlIEF1dG9tYXRpb25cbiAgICAgICAgICAgIGlzTmF0aXZlQXV0b21hdGlvbiA/IFsnLS1kaXNhYmxlLXBvcHVwLWJsb2NraW5nJ10gOiBbXSxcbiAgICAgICAgICAgIHBsYXRmb3JtQXJncyA/IFtwbGF0Zm9ybUFyZ3NdIDogW11cbiAgICAgICAgKVxuICAgICAgICAuam9pbignICcpO1xuXG4gICAgaWYgKGlzQ29udGFpbmVyaXplZCkge1xuICAgICAgICBDT05UQUlORVJJWkVEX0NIUk9NRV9GTEFHUy5mb3JFYWNoKGZsYWcgPT4ge1xuICAgICAgICAgICAgaWYgKCFjaHJvbWVBcmdzLmluY2x1ZGVzKGZsYWcpKVxuICAgICAgICAgICAgICAgIGNocm9tZUFyZ3MgPSBjaHJvbWVBcmdzLmNvbmNhdCgnICcsIGZsYWcpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hyb21lQXJncztcbn1cbiJdfQ==
|