oxygen-cli 1.41.0 → 1.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/build/core/OxygenCore.js +41 -274
- package/build/core/OxygenEvents.js +2 -12
- package/build/core/OxygenModule.js +1 -16
- package/build/core/OxygenService.js +1 -12
- package/build/core/OxygenSubModule.js +1 -10
- package/build/core/WebDriverModule.js +2 -32
- package/build/core/utils.js +2 -21
- package/build/errors/HookError.js +2 -8
- package/build/errors/ModuleError.js +2 -8
- package/build/errors/ModuleUnavailableError.js +1 -3
- package/build/errors/OxygenError.js +3 -36
- package/build/errors/ScriptNotFound.js +2 -8
- package/build/errors/helper.js +50 -82
- package/build/index.js +8 -22
- package/build/lib/cli-util.js +35 -105
- package/build/lib/cli.js +3 -30
- package/build/lib/debugger.js +2 -145
- package/build/lib/img-merge.js +2 -16
- package/build/lib/launcher.js +3 -31
- package/build/lib/moduleRequire.js +1 -4
- package/build/lib/parallel-launcher.js +44 -84
- package/build/lib/param-manager.js +2 -29
- package/build/lib/param-reader-csv.js +1 -15
- package/build/lib/param-reader-excel.js +1 -14
- package/build/lib/param-reader-json.js +1 -10
- package/build/lib/text-to-image.js +5 -26
- package/build/lib/util.js +4 -75
- package/build/model/case-result.js +1 -2
- package/build/model/failure.js +1 -2
- package/build/model/status.js +1 -2
- package/build/model/step-result.js +1 -2
- package/build/model/suite-result.js +1 -2
- package/build/model/test-result.js +1 -2
- package/build/model/testcase.js +1 -2
- package/build/model/testsuite.js +1 -2
- package/build/ox_modules/index.js +20 -41
- package/build/ox_modules/module-assert.js +9 -28
- package/build/ox_modules/module-date.js +3 -8
- package/build/ox_modules/module-db.js +8 -29
- package/build/ox_modules/module-email.js +14 -45
- package/build/ox_modules/module-eyes.js +6 -47
- package/build/ox_modules/module-http/ntlm-util.js +3 -7
- package/build/ox_modules/module-http/ntlm.js +9 -78
- package/build/ox_modules/module-http.js +69 -172
- package/build/ox_modules/module-log.js +10 -23
- package/build/ox_modules/module-mailinator.js +11 -33
- package/build/ox_modules/module-mob/commands/alertAccept.js +1 -3
- package/build/ox_modules/module-mob/commands/alertDismiss.js +1 -3
- package/build/ox_modules/module-mob/commands/assertAlert.js +1 -7
- package/build/ox_modules/module-mob/commands/assertText.js +1 -4
- package/build/ox_modules/module-mob/commands/assertTitle.js +1 -5
- package/build/ox_modules/module-mob/commands/assertValue.js +9 -17
- package/build/ox_modules/module-mob/commands/back.js +1 -3
- package/build/ox_modules/module-mob/commands/clear.js +1 -5
- package/build/ox_modules/module-mob/commands/click.js +3 -5
- package/build/ox_modules/module-mob/commands/clickHidden.js +3 -10
- package/build/ox_modules/module-mob/commands/clickLong.js +1 -3
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +1 -5
- package/build/ox_modules/module-mob/commands/closeApp.js +1 -3
- package/build/ox_modules/module-mob/commands/debug.js +2 -3
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +1 -3
- package/build/ox_modules/module-mob/commands/enableNetwork.js +4 -13
- package/build/ox_modules/module-mob/commands/execute.js +1 -3
- package/build/ox_modules/module-mob/commands/findElement.js +1 -4
- package/build/ox_modules/module-mob/commands/findElements.js +1 -5
- package/build/ox_modules/module-mob/commands/getAlertText.js +1 -3
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +1 -3
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +1 -11
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +1 -3
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +1 -3
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +1 -10
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +1 -3
- package/build/ox_modules/module-mob/commands/getLocation.js +1 -3
- package/build/ox_modules/module-mob/commands/getSource.js +1 -3
- package/build/ox_modules/module-mob/commands/getText.js +1 -5
- package/build/ox_modules/module-mob/commands/getTitle.js +1 -3
- package/build/ox_modules/module-mob/commands/getUrl.js +1 -3
- package/build/ox_modules/module-mob/commands/getValue.js +5 -10
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +1 -3
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +1 -3
- package/build/ox_modules/module-mob/commands/index.js +1 -148
- package/build/ox_modules/module-mob/commands/installApp.js +1 -3
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +1 -3
- package/build/ox_modules/module-mob/commands/isCheckable.js +1 -3
- package/build/ox_modules/module-mob/commands/isChecked.js +1 -3
- package/build/ox_modules/module-mob/commands/isClickable.js +1 -3
- package/build/ox_modules/module-mob/commands/isExist.js +1 -4
- package/build/ox_modules/module-mob/commands/isSelected.js +1 -3
- package/build/ox_modules/module-mob/commands/isVisible.js +1 -4
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +1 -3
- package/build/ox_modules/module-mob/commands/launchApp.js +1 -3
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +1 -3
- package/build/ox_modules/module-mob/commands/open.js +1 -4
- package/build/ox_modules/module-mob/commands/pause.js +1 -3
- package/build/ox_modules/module-mob/commands/removeApp.js +1 -3
- package/build/ox_modules/module-mob/commands/resetApp.js +1 -3
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +1 -7
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +1 -3
- package/build/ox_modules/module-mob/commands/select.js +1 -5
- package/build/ox_modules/module-mob/commands/selectFrame.js +1 -5
- package/build/ox_modules/module-mob/commands/selectWindow.js +5 -27
- package/build/ox_modules/module-mob/commands/sendKeys.js +6 -10
- package/build/ox_modules/module-mob/commands/setContext.js +1 -3
- package/build/ox_modules/module-mob/commands/setNativeContext.js +1 -3
- package/build/ox_modules/module-mob/commands/setTimeout.js +1 -3
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +3 -7
- package/build/ox_modules/module-mob/commands/shake.js +1 -3
- package/build/ox_modules/module-mob/commands/smsClickLink.js +1 -3
- package/build/ox_modules/module-mob/commands/smsGetText.js +3 -7
- package/build/ox_modules/module-mob/commands/swipe.js +1 -3
- package/build/ox_modules/module-mob/commands/swipeElement.js +1 -3
- package/build/ox_modules/module-mob/commands/swipeScreen.js +1 -3
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +1 -3
- package/build/ox_modules/module-mob/commands/tap.js +1 -3
- package/build/ox_modules/module-mob/commands/type.js +3 -8
- package/build/ox_modules/module-mob/commands/unlockPattern.js +9 -11
- package/build/ox_modules/module-mob/commands/waitForExist.js +1 -3
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +1 -4
- package/build/ox_modules/module-mob/commands/waitForVisible.js +1 -3
- package/build/ox_modules/module-mob.js +74 -216
- package/build/ox_modules/module-mongo.js +14 -51
- package/build/ox_modules/module-pdf.js +24 -65
- package/build/ox_modules/module-proxy.js +9 -69
- package/build/ox_modules/module-serial.js +8 -33
- package/build/ox_modules/module-shell.js +10 -30
- package/build/ox_modules/module-soap.js +17 -52
- package/build/ox_modules/module-twilio.js +11 -54
- package/build/ox_modules/module-utils.js +22 -58
- package/build/ox_modules/module-web/commands/alertAccept.js +1 -3
- package/build/ox_modules/module-web/commands/alertDismiss.js +1 -3
- package/build/ox_modules/module-web/commands/assertAlert.js +1 -7
- package/build/ox_modules/module-web/commands/assertExist.js +1 -3
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +1 -5
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +1 -4
- package/build/ox_modules/module-web/commands/assertText.js +1 -4
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +1 -7
- package/build/ox_modules/module-web/commands/assertTextPresent.js +1 -7
- package/build/ox_modules/module-web/commands/assertTitle.js +1 -4
- package/build/ox_modules/module-web/commands/assertValue.js +1 -4
- package/build/ox_modules/module-web/commands/back.js +1 -3
- package/build/ox_modules/module-web/commands/clear.js +1 -6
- package/build/ox_modules/module-web/commands/click.js +4 -15
- package/build/ox_modules/module-web/commands/clickHidden.js +2 -8
- package/build/ox_modules/module-web/commands/closeWindow.js +1 -3
- package/build/ox_modules/module-web/commands/debug.js +2 -3
- package/build/ox_modules/module-web/commands/deleteCookies.js +1 -3
- package/build/ox_modules/module-web/commands/deselect.js +1 -3
- package/build/ox_modules/module-web/commands/doubleClick.js +3 -10
- package/build/ox_modules/module-web/commands/dragAndDrop.js +1 -3
- package/build/ox_modules/module-web/commands/execute.js +1 -3
- package/build/ox_modules/module-web/commands/fileBrowse.js +4 -11
- package/build/ox_modules/module-web/commands/findElement.js +1 -4
- package/build/ox_modules/module-web/commands/findElements.js +1 -5
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +1 -3
- package/build/ox_modules/module-web/commands/getAlertText.js +1 -3
- package/build/ox_modules/module-web/commands/getAttribute.js +1 -5
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +1 -4
- package/build/ox_modules/module-web/commands/getCookies.js +1 -3
- package/build/ox_modules/module-web/commands/getCssValue.js +1 -5
- package/build/ox_modules/module-web/commands/getElementCount.js +1 -3
- package/build/ox_modules/module-web/commands/getHTML.js +1 -3
- package/build/ox_modules/module-web/commands/getSource.js +1 -3
- package/build/ox_modules/module-web/commands/getText.js +1 -5
- package/build/ox_modules/module-web/commands/getTitle.js +1 -3
- package/build/ox_modules/module-web/commands/getUrl.js +1 -3
- package/build/ox_modules/module-web/commands/getValue.js +1 -6
- package/build/ox_modules/module-web/commands/getWindowHandles.js +1 -3
- package/build/ox_modules/module-web/commands/getWindowSize.js +1 -3
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +1 -6
- package/build/ox_modules/module-web/commands/index.js +1 -184
- package/build/ox_modules/module-web/commands/isAlertPresent.js +1 -3
- package/build/ox_modules/module-web/commands/isChecked.js +1 -3
- package/build/ox_modules/module-web/commands/isExist.js +1 -4
- package/build/ox_modules/module-web/commands/isInteractable.js +1 -3
- package/build/ox_modules/module-web/commands/isSelected.js +1 -3
- package/build/ox_modules/module-web/commands/isVisible.js +1 -4
- package/build/ox_modules/module-web/commands/makeVisible.js +2 -11
- package/build/ox_modules/module-web/commands/maximizeWindow.js +1 -3
- package/build/ox_modules/module-web/commands/minimizeWindow.js +1 -3
- package/build/ox_modules/module-web/commands/mock.js +1 -3
- package/build/ox_modules/module-web/commands/mockClearAll.js +1 -3
- package/build/ox_modules/module-web/commands/mockRestoreAll.js +1 -3
- package/build/ox_modules/module-web/commands/newWindow.js +1 -3
- package/build/ox_modules/module-web/commands/open.js +1 -5
- package/build/ox_modules/module-web/commands/pause.js +1 -3
- package/build/ox_modules/module-web/commands/point.js +1 -3
- package/build/ox_modules/module-web/commands/pointJS.js +2 -9
- package/build/ox_modules/module-web/commands/refresh.js +1 -3
- package/build/ox_modules/module-web/commands/rightClick.js +3 -9
- package/build/ox_modules/module-web/commands/rightClickActions.js +1 -3
- package/build/ox_modules/module-web/commands/scrollToElement.js +1 -3
- package/build/ox_modules/module-web/commands/select.js +1 -6
- package/build/ox_modules/module-web/commands/selectFrame.js +1 -4
- package/build/ox_modules/module-web/commands/selectWindow.js +5 -27
- package/build/ox_modules/module-web/commands/sendKeys.js +3 -7
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +2 -3
- package/build/ox_modules/module-web/commands/setTimeout.js +1 -3
- package/build/ox_modules/module-web/commands/setWindowSize.js +1 -3
- package/build/ox_modules/module-web/commands/takeScreenshot.js +3 -6
- package/build/ox_modules/module-web/commands/type.js +1 -6
- package/build/ox_modules/module-web/commands/verifyAlert.js +1 -7
- package/build/ox_modules/module-web/commands/verifyExist.js +2 -7
- package/build/ox_modules/module-web/commands/verifySelectedLabel.js +1 -5
- package/build/ox_modules/module-web/commands/verifySelectedValue.js +1 -4
- package/build/ox_modules/module-web/commands/verifyText.js +1 -4
- package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +1 -7
- package/build/ox_modules/module-web/commands/verifyTextPresent.js +1 -7
- package/build/ox_modules/module-web/commands/verifyTitle.js +1 -4
- package/build/ox_modules/module-web/commands/verifyValue.js +1 -4
- package/build/ox_modules/module-web/commands/waitForAngular.js +11 -14
- package/build/ox_modules/module-web/commands/waitForExist.js +1 -3
- package/build/ox_modules/module-web/commands/waitForInteractable.js +1 -3
- package/build/ox_modules/module-web/commands/waitForNotExist.js +1 -9
- package/build/ox_modules/module-web/commands/waitForNotText.js +1 -4
- package/build/ox_modules/module-web/commands/waitForNotValue.js +1 -4
- package/build/ox_modules/module-web/commands/waitForText.js +1 -4
- package/build/ox_modules/module-web/commands/waitForValue.js +1 -4
- package/build/ox_modules/module-web/commands/waitForVisible.js +1 -3
- package/build/ox_modules/module-web/commands/waitForWindow.js +4 -22
- package/build/ox_modules/module-web/webdriver/ChromeWDM.js +287 -0
- package/build/ox_modules/module-web/webdriver/auto-start.js +25 -0
- package/build/ox_modules/module-web.js +112 -232
- package/build/ox_modules/module-win/commands/assertText.js +1 -4
- package/build/ox_modules/module-win/commands/assertTitle.js +1 -5
- package/build/ox_modules/module-win/commands/assertValue.js +9 -17
- package/build/ox_modules/module-win/commands/back.js +1 -3
- package/build/ox_modules/module-win/commands/clear.js +1 -5
- package/build/ox_modules/module-win/commands/click.js +1 -3
- package/build/ox_modules/module-win/commands/clickLong.js +1 -3
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +1 -5
- package/build/ox_modules/module-win/commands/findElement.js +1 -4
- package/build/ox_modules/module-win/commands/findElements.js +1 -5
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +1 -3
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +1 -3
- package/build/ox_modules/module-win/commands/getLocation.js +1 -3
- package/build/ox_modules/module-win/commands/getSource.js +1 -3
- package/build/ox_modules/module-win/commands/getText.js +1 -5
- package/build/ox_modules/module-win/commands/getValue.js +5 -10
- package/build/ox_modules/module-win/commands/getWindowHandles.js +1 -3
- package/build/ox_modules/module-win/commands/index.js +1 -74
- package/build/ox_modules/module-win/commands/isCheckable.js +1 -3
- package/build/ox_modules/module-win/commands/isChecked.js +1 -3
- package/build/ox_modules/module-win/commands/isClickable.js +1 -3
- package/build/ox_modules/module-win/commands/isExist.js +1 -4
- package/build/ox_modules/module-win/commands/isSelected.js +1 -3
- package/build/ox_modules/module-win/commands/isVisible.js +1 -4
- package/build/ox_modules/module-win/commands/open.js +1 -3
- package/build/ox_modules/module-win/commands/pause.js +1 -3
- package/build/ox_modules/module-win/commands/rightClick.js +1 -3
- package/build/ox_modules/module-win/commands/selectWindow.js +1 -16
- package/build/ox_modules/module-win/commands/sendKeys.js +1 -5
- package/build/ox_modules/module-win/commands/setTimeout.js +1 -3
- package/build/ox_modules/module-win/commands/takeScreenshot.js +1 -3
- package/build/ox_modules/module-win/commands/tap.js +1 -3
- package/build/ox_modules/module-win/commands/type.js +1 -5
- package/build/ox_modules/module-win/commands/waitForExist.js +1 -3
- package/build/ox_modules/module-win/commands/waitForInteractable.js +1 -5
- package/build/ox_modules/module-win/commands/waitForVisible.js +1 -3
- package/build/ox_modules/module-win.js +54 -95
- package/build/ox_modules/utils.js +91 -79
- package/build/ox_reporters/reporter-excel.js +2 -59
- package/build/ox_reporters/reporter-html.js +2 -29
- package/build/ox_reporters/reporter-json.js +2 -15
- package/build/ox_reporters/reporter-junit.js +2 -25
- package/build/ox_reporters/reporter-pdf.js +2 -20
- package/build/ox_reporters/reporter-rp.js +2 -91
- package/build/ox_reporters/reporter-xml.js +2 -18
- package/build/ox_services/service-devtools/submodule-network.js +4 -86
- package/build/ox_services/service-devtools.js +2 -24
- package/build/reporter/FileReporterBase.js +6 -45
- package/build/reporter/ReportAggregator.js +7 -121
- package/build/reporter/ReporterBase.js +1 -6
- package/build/reporter/WebSocketReporter.js +1 -39
- package/build/runners/WorkerProcess.js +2 -107
- package/build/runners/cucumber/CucumberEventListener.js +4 -29
- package/build/runners/cucumber/CucumberReporter.js +2 -57
- package/build/runners/cucumber/CucumberWorker.js +3 -69
- package/build/runners/cucumber/index.js +2 -31
- package/build/runners/cucumber/worker.js +2 -19
- package/build/runners/index.js +4 -11
- package/build/runners/oxygen/OxygenWorker.js +3 -61
- package/build/runners/oxygen/index.js +18 -179
- package/build/runners/oxygen/worker.js +3 -27
- package/package.json +3 -1
|
@@ -4,66 +4,49 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
var _devtoolsService = _interopRequireDefault(require("@wdio/devtools-service"));
|
|
11
|
-
|
|
12
9
|
var _OxygenService = _interopRequireDefault(require("../core/OxygenService"));
|
|
13
|
-
|
|
14
10
|
var _submoduleNetwork = _interopRequireDefault(require("./service-devtools/submodule-network"));
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
12
|
const CHROME_BROWSER = 'chrome';
|
|
19
|
-
|
|
20
13
|
class DevToolsService extends _OxygenService.default {
|
|
21
14
|
constructor(options, ctx, results, logger) {
|
|
22
15
|
super(options, ctx, results, logger);
|
|
23
16
|
this._subModules = {};
|
|
24
17
|
this.isServiceInitialized = true;
|
|
25
18
|
}
|
|
26
|
-
|
|
27
19
|
onModuleLoaded(module) {
|
|
28
20
|
if (!module || !module.getDriver || typeof module.getDriver !== 'function' || !module.getCapabilities || typeof module.getCapabilities !== 'function') {
|
|
29
21
|
return;
|
|
30
22
|
}
|
|
31
|
-
|
|
32
23
|
const networkSubmodule = new _submoduleNetwork.default('network', module);
|
|
33
24
|
module.addSubModule('network', networkSubmodule);
|
|
34
25
|
this._subModules[module.name] = networkSubmodule;
|
|
35
26
|
}
|
|
36
|
-
|
|
37
27
|
async onModuleInitialized(module) {
|
|
38
28
|
if (!module || !module.getDriver || typeof module.getDriver !== 'function' || !module.getCapabilities || typeof module.getCapabilities !== 'function') {
|
|
39
29
|
return;
|
|
40
30
|
}
|
|
41
|
-
|
|
42
31
|
const submodule = this._subModules[module.name];
|
|
43
|
-
|
|
44
32
|
if (!submodule || submodule.isInitialized) {
|
|
45
33
|
return;
|
|
46
34
|
}
|
|
47
|
-
|
|
48
35
|
let options = {};
|
|
49
36
|
const capabilities = module.getCapabilities() || {};
|
|
50
37
|
const {
|
|
51
38
|
browserName
|
|
52
39
|
} = capabilities;
|
|
53
40
|
this._driver = module.getDriver();
|
|
54
|
-
|
|
55
41
|
if (this._driver && this._driver.capabilities && this._driver.capabilities['goog:chromeOptions'] && this._driver.capabilities['goog:chromeOptions']['debuggerAddress']) {
|
|
56
42
|
options.debuggerAddress = this._driver.capabilities['goog:chromeOptions']['debuggerAddress'];
|
|
57
43
|
}
|
|
58
|
-
|
|
59
44
|
if (this._driver.provider === null && browserName && browserName.toLowerCase() === CHROME_BROWSER) {
|
|
60
45
|
const devToolsSvc = new _devtoolsService.default(options);
|
|
61
46
|
const UNSUPPORTED_ERROR_MESSAGE = devToolsSvc.beforeSession(null, capabilities);
|
|
62
|
-
|
|
63
47
|
if (UNSUPPORTED_ERROR_MESSAGE) {
|
|
64
48
|
console.log('UNSUPPORTED_ERROR_MESSAGE', UNSUPPORTED_ERROR_MESSAGE);
|
|
65
49
|
}
|
|
66
|
-
|
|
67
50
|
if (devToolsSvc._isSupported) {
|
|
68
51
|
global.browser = module.getDriver();
|
|
69
52
|
await devToolsSvc.before(null, null, this._driver);
|
|
@@ -71,18 +54,13 @@ class DevToolsService extends _OxygenService.default {
|
|
|
71
54
|
}
|
|
72
55
|
}
|
|
73
56
|
}
|
|
74
|
-
|
|
75
57
|
onModuleWillDispose(module) {
|
|
76
58
|
const submodule = this._subModules[module.name];
|
|
77
|
-
|
|
78
59
|
if (!submodule) {
|
|
79
60
|
return;
|
|
80
61
|
}
|
|
81
|
-
|
|
82
62
|
submodule.dispose();
|
|
83
63
|
}
|
|
84
|
-
|
|
85
64
|
}
|
|
86
|
-
|
|
87
65
|
exports.default = DevToolsService;
|
|
88
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGV2dG9vbHNTZXJ2aWNlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfT3h5Z2VuU2VydmljZSIsIl9zdWJtb2R1bGVOZXR3b3JrIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQ0hST01FX0JST1dTRVIiLCJEZXZUb29sc1NlcnZpY2UiLCJPeHlnZW5TZXJ2aWNlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiY3R4IiwicmVzdWx0cyIsImxvZ2dlciIsIl9zdWJNb2R1bGVzIiwiaXNTZXJ2aWNlSW5pdGlhbGl6ZWQiLCJvbk1vZHVsZUxvYWRlZCIsIm1vZHVsZSIsImdldERyaXZlciIsImdldENhcGFiaWxpdGllcyIsIm5ldHdvcmtTdWJtb2R1bGUiLCJOZXR3b3JrU3ViTW9kdWxlIiwiYWRkU3ViTW9kdWxlIiwibmFtZSIsIm9uTW9kdWxlSW5pdGlhbGl6ZWQiLCJzdWJtb2R1bGUiLCJpc0luaXRpYWxpemVkIiwiY2FwYWJpbGl0aWVzIiwiYnJvd3Nlck5hbWUiLCJfZHJpdmVyIiwiZGVidWdnZXJBZGRyZXNzIiwicHJvdmlkZXIiLCJ0b0xvd2VyQ2FzZSIsImRldlRvb2xzU3ZjIiwiV0RJT0RldlRvb2xzU2VydmljZSIsIlVOU1VQUE9SVEVEX0VSUk9SX01FU1NBR0UiLCJiZWZvcmVTZXNzaW9uIiwiY29uc29sZSIsImxvZyIsIl9pc1N1cHBvcnRlZCIsImdsb2JhbCIsImJyb3dzZXIiLCJiZWZvcmUiLCJpbml0Iiwib25Nb2R1bGVXaWxsRGlzcG9zZSIsImRpc3Bvc2UiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL294X3NlcnZpY2VzL3NlcnZpY2UtZGV2dG9vbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW5yZWFjaGFibGUgKi9cclxuaW1wb3J0IFdESU9EZXZUb29sc1NlcnZpY2UgZnJvbSAnQHdkaW8vZGV2dG9vbHMtc2VydmljZSc7XHJcblxyXG5pbXBvcnQgT3h5Z2VuU2VydmljZSBmcm9tICcuLi9jb3JlL094eWdlblNlcnZpY2UnO1xyXG5pbXBvcnQgTmV0d29ya1N1Yk1vZHVsZSBmcm9tICcuL3NlcnZpY2UtZGV2dG9vbHMvc3VibW9kdWxlLW5ldHdvcmsnO1xyXG5cclxuY29uc3QgQ0hST01FX0JST1dTRVIgPSAnY2hyb21lJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERldlRvb2xzU2VydmljZSBleHRlbmRzIE94eWdlblNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgY3R4LCByZXN1bHRzLCBsb2dnZXIpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zLCBjdHgsIHJlc3VsdHMsIGxvZ2dlcik7XHJcbiAgICAgICAgLy8gaGFzaCBvZiB3ZWJkcml2ZXIgYmFzZWQgbW9kdWxlc1xyXG4gICAgICAgIHRoaXMuX3N1Yk1vZHVsZXMgPSB7fTtcclxuICAgICAgICB0aGlzLmlzU2VydmljZUluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIG9uTW9kdWxlTG9hZGVkKG1vZHVsZSkge1xyXG4gICAgICAgIC8vIHNraXAgYW55IG1vZHVsZSB0aGF0IGRvZXMgbm90IGltcGxlbWVudCAuZ2V0RHJpdmVyKCkgbWV0aG9kIChlLmcuIG5vdCB3ZWJkcml2ZXIgYmFzZWQpXHJcbiAgICAgICAgaWYgKCFtb2R1bGUgfHwgIW1vZHVsZS5nZXREcml2ZXIgfHwgdHlwZW9mIG1vZHVsZS5nZXREcml2ZXIgIT09ICdmdW5jdGlvbicgfHwgIW1vZHVsZS5nZXRDYXBhYmlsaXRpZXMgfHwgdHlwZW9mIG1vZHVsZS5nZXRDYXBhYmlsaXRpZXMgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgbmV0d29ya1N1Ym1vZHVsZSA9IG5ldyBOZXR3b3JrU3ViTW9kdWxlKCduZXR3b3JrJywgbW9kdWxlKTtcclxuICAgICAgICBtb2R1bGUuYWRkU3ViTW9kdWxlKCduZXR3b3JrJywgbmV0d29ya1N1Ym1vZHVsZSk7XHJcbiAgICAgICAgdGhpcy5fc3ViTW9kdWxlc1ttb2R1bGUubmFtZV0gPSBuZXR3b3JrU3VibW9kdWxlO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgb25Nb2R1bGVJbml0aWFsaXplZChtb2R1bGUpIHtcclxuICAgICAgICAvLyBza2lwIGFueSBtb2R1bGUgdGhhdCBkb2VzIG5vdCBpbXBsZW1lbnQgZ2V0RHJpdmVyIG1ldGhvZCAoZS5nLiBub3Qgd2ViZHJpdmVyIGJhc2VkKVxyXG4gICAgICAgIGlmICghbW9kdWxlIHx8ICFtb2R1bGUuZ2V0RHJpdmVyIHx8IHR5cGVvZiBtb2R1bGUuZ2V0RHJpdmVyICE9PSAnZnVuY3Rpb24nIHx8ICFtb2R1bGUuZ2V0Q2FwYWJpbGl0aWVzIHx8IHR5cGVvZiBtb2R1bGUuZ2V0Q2FwYWJpbGl0aWVzICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3VibW9kdWxlID0gdGhpcy5fc3ViTW9kdWxlc1ttb2R1bGUubmFtZV07XHJcbiAgICAgICAgaWYgKCFzdWJtb2R1bGUgfHwgc3VibW9kdWxlLmlzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG9wdGlvbnMgPSB7fTtcclxuICAgICAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSBtb2R1bGUuZ2V0Q2FwYWJpbGl0aWVzKCkgfHwge307XHJcbiAgICAgICAgY29uc3QgeyBicm93c2VyTmFtZSB9ID0gY2FwYWJpbGl0aWVzO1xyXG4gICAgICAgIHRoaXMuX2RyaXZlciA9IG1vZHVsZS5nZXREcml2ZXIoKTtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLl9kcml2ZXIgJiZcclxuICAgICAgICAgICAgdGhpcy5fZHJpdmVyLmNhcGFiaWxpdGllcyAmJlxyXG4gICAgICAgICAgICB0aGlzLl9kcml2ZXIuY2FwYWJpbGl0aWVzWydnb29nOmNocm9tZU9wdGlvbnMnXSAmJlxyXG4gICAgICAgICAgICB0aGlzLl9kcml2ZXIuY2FwYWJpbGl0aWVzWydnb29nOmNocm9tZU9wdGlvbnMnXVsnZGVidWdnZXJBZGRyZXNzJ11cclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5kZWJ1Z2dlckFkZHJlc3MgPSB0aGlzLl9kcml2ZXIuY2FwYWJpbGl0aWVzWydnb29nOmNocm9tZU9wdGlvbnMnXVsnZGVidWdnZXJBZGRyZXNzJ107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBpZiB3ZSBhcmUgbm90IHVzaW5nIGFueSAzcmQgcGFydHkgcHJvdmlkZXJcclxuICAgICAgICBpZiAodGhpcy5fZHJpdmVyLnByb3ZpZGVyID09PSBudWxsICYmIGJyb3dzZXJOYW1lICYmIGJyb3dzZXJOYW1lLnRvTG93ZXJDYXNlKCkgPT09IENIUk9NRV9CUk9XU0VSKSB7XHJcbiAgICAgICAgICAgIC8vIGluaXRpYWxpemUgRGV2VG9vbHNTZXJ2aWNlIGFuZCBob29rIGl0IHRvIHRoZSBjdXJyZW50IHdlYmRyaXZlciBvYmplY3RcclxuICAgICAgICAgICAgY29uc3QgZGV2VG9vbHNTdmMgPSBuZXcgV0RJT0RldlRvb2xzU2VydmljZShvcHRpb25zKTtcclxuICAgICAgICAgICAgY29uc3QgVU5TVVBQT1JURURfRVJST1JfTUVTU0FHRSA9IGRldlRvb2xzU3ZjLmJlZm9yZVNlc3Npb24obnVsbCwgY2FwYWJpbGl0aWVzKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChVTlNVUFBPUlRFRF9FUlJPUl9NRVNTQUdFKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnVU5TVVBQT1JURURfRVJST1JfTUVTU0FHRScsIFVOU1VQUE9SVEVEX0VSUk9SX01FU1NBR0UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZGV2VG9vbHNTdmMuX2lzU3VwcG9ydGVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjaGFuZ2UgZ2xvYmFsLmJyb3dzZXIgdG8gdGhlIGN1cnJlbnQgbW9kdWxlJ3Mgd2ViZHJpdmVyIGluc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBvcmdHbG9iYWxCcm93c2VyID0gZ2xvYmFsLmJyb3dzZXI7XHJcbiAgICAgICAgICAgICAgICBnbG9iYWwuYnJvd3NlciA9IG1vZHVsZS5nZXREcml2ZXIoKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGRldlRvb2xzU3ZjLmJlZm9yZShudWxsLCBudWxsLCB0aGlzLl9kcml2ZXIpO1xyXG4gICAgICAgICAgICAgICAgc3VibW9kdWxlLmluaXQoZGV2VG9vbHNTdmMpO1xyXG4gICAgICAgICAgICAgICAgLy8gZ2xvYmFsLmJyb3dzZXIgPSBvcmdHbG9iYWxCcm93c2VyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25Nb2R1bGVXaWxsRGlzcG9zZShtb2R1bGUpIHtcclxuICAgICAgICBjb25zdCBzdWJtb2R1bGUgPSB0aGlzLl9zdWJNb2R1bGVzW21vZHVsZS5uYW1lXTtcclxuICAgICAgICBpZiAoIXN1Ym1vZHVsZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1Ym1vZHVsZS5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbn0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsY0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUFvRSxTQUFBRCx1QkFBQUksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVwRSxNQUFNRyxjQUFjLEdBQUcsUUFBUTtBQUVoQixNQUFN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
|
|
@@ -4,42 +4,29 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
var _fs = _interopRequireDefault(require("fs"));
|
|
11
|
-
|
|
12
9
|
var _path = _interopRequireDefault(require("path"));
|
|
13
|
-
|
|
14
10
|
var _moment = _interopRequireDefault(require("moment"));
|
|
15
|
-
|
|
16
11
|
var _ReporterBase = _interopRequireDefault(require("./ReporterBase"));
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
13
|
const REPORTS_FOLDER_NAME = 'reports';
|
|
21
14
|
const REPORT_FILE_NAME = 'report';
|
|
22
|
-
|
|
23
15
|
class FileReporterBase extends _ReporterBase.default {
|
|
24
16
|
constructor(options) {
|
|
25
17
|
super(options);
|
|
26
18
|
}
|
|
27
|
-
|
|
28
19
|
createFolderStructureAndFilePath(fileExtension) {
|
|
29
20
|
if (!fileExtension || typeof fileExtension !== 'string' || fileExtension.length == 0) {
|
|
30
21
|
throw new Error('"fileExtension" argument must be specified');
|
|
31
22
|
}
|
|
32
|
-
|
|
33
23
|
if (!fileExtension.startsWith('.')) {
|
|
34
24
|
fileExtension = `.${fileExtension}`;
|
|
35
25
|
}
|
|
36
|
-
|
|
37
26
|
if (!this.options || !this.options.target || !this.options.reporting) {
|
|
38
27
|
throw new Error('FileReporterBase is not properly initialized');
|
|
39
28
|
}
|
|
40
|
-
|
|
41
29
|
let resultsBaseFolder = null;
|
|
42
|
-
|
|
43
30
|
if (this.options.cwd && this.options.reporting.outputDir) {
|
|
44
31
|
if (_path.default.isAbsolute(this.options.reporting.outputDir)) {
|
|
45
32
|
resultsBaseFolder = this.options.reporting.outputDir;
|
|
@@ -47,44 +34,35 @@ class FileReporterBase extends _ReporterBase.default {
|
|
|
47
34
|
resultsBaseFolder = _path.default.resolve(this.options.cwd, this.options.reporting.outputDir);
|
|
48
35
|
}
|
|
49
36
|
} else if (this.options.target) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
37
|
+
resultsBaseFolder = _path.default.join(this.options.target.cwd, REPORTS_FOLDER_NAME);
|
|
38
|
+
} else {
|
|
39
|
+
throw new Error('Error constructing reports path. Either srcFile or outputFolder is required.');
|
|
40
|
+
}
|
|
55
41
|
this.createFolderIfNotExists(resultsBaseFolder);
|
|
56
42
|
let resultFolderPath = resultsBaseFolder;
|
|
57
|
-
|
|
58
43
|
if (!this.options.reporting.outputDir) {
|
|
59
44
|
const subFolderName = (0, _moment.default)().format('YYYY-MM-DD_HHmmss');
|
|
60
45
|
resultFolderPath = _path.default.join(resultsBaseFolder, subFolderName);
|
|
61
46
|
this.createFolderIfNotExists(resultFolderPath);
|
|
62
47
|
}
|
|
63
|
-
|
|
64
48
|
return _path.default.join(resultFolderPath, `${REPORT_FILE_NAME}${fileExtension}`);
|
|
65
49
|
}
|
|
66
|
-
|
|
67
50
|
createFolderIfNotExists(folderPath) {
|
|
68
51
|
try {
|
|
69
52
|
_fs.default.mkdirSync(folderPath);
|
|
70
53
|
} catch (e) {
|
|
71
54
|
if (e.code != 'EEXIST') throw e;
|
|
72
55
|
}
|
|
73
|
-
|
|
74
56
|
return folderPath;
|
|
75
57
|
}
|
|
76
|
-
|
|
77
58
|
replaceScreenshotsWithFiles(results, folderPath) {
|
|
78
59
|
if (!Array.isArray(results)) {
|
|
79
60
|
throw new Error('Invalid argument "results" - must be an array.');
|
|
80
61
|
}
|
|
81
|
-
|
|
82
62
|
if (!folderPath) {
|
|
83
63
|
throw new Error('"folderPath" argument cannot be null or empty.');
|
|
84
64
|
}
|
|
85
|
-
|
|
86
65
|
const stepsWithScreenshot = [];
|
|
87
|
-
|
|
88
66
|
for (let result of results) {
|
|
89
67
|
for (let suite of result.suites) {
|
|
90
68
|
for (let caze of suite.cases) {
|
|
@@ -92,29 +70,21 @@ class FileReporterBase extends _ReporterBase.default {
|
|
|
92
70
|
}
|
|
93
71
|
}
|
|
94
72
|
}
|
|
95
|
-
|
|
96
73
|
const screenshotFilePrefix = 'screenshot-';
|
|
97
74
|
const screenshotFileSuffix = '.png';
|
|
98
|
-
|
|
99
75
|
for (let i = 0; i < stepsWithScreenshot.length; i++) {
|
|
100
76
|
let filename = screenshotFilePrefix + i + screenshotFileSuffix;
|
|
101
|
-
|
|
102
77
|
let filepath = _path.default.join(folderPath, filename);
|
|
103
|
-
|
|
104
78
|
let step = stepsWithScreenshot[i];
|
|
105
|
-
|
|
106
79
|
_fs.default.writeFileSync(filepath, step.screenshot, 'base64');
|
|
107
|
-
|
|
108
80
|
step.screenshotFile = filename;
|
|
109
81
|
step.screenshot = null;
|
|
110
82
|
}
|
|
111
83
|
}
|
|
112
|
-
|
|
113
84
|
formatTotalDuration(results) {
|
|
114
85
|
if (!Array.isArray(results)) {
|
|
115
86
|
throw new Error('Invalid argument "results" - must be an array.');
|
|
116
87
|
}
|
|
117
|
-
|
|
118
88
|
for (let result of results) {
|
|
119
89
|
for (let suite of result.suites) {
|
|
120
90
|
for (let caze of suite.cases) {
|
|
@@ -125,42 +95,33 @@ class FileReporterBase extends _ReporterBase.default {
|
|
|
125
95
|
}
|
|
126
96
|
}
|
|
127
97
|
}
|
|
128
|
-
|
|
129
98
|
_populateStepsWithScreenshots(steps, stepsWithScreenshot) {
|
|
130
99
|
for (let step of steps) {
|
|
131
100
|
if (step.screenshot) {
|
|
132
101
|
stepsWithScreenshot.push(step);
|
|
133
102
|
}
|
|
134
|
-
|
|
135
103
|
if (step.steps) {
|
|
136
104
|
this._populateStepsWithScreenshots(step.steps, stepsWithScreenshot);
|
|
137
105
|
}
|
|
138
106
|
}
|
|
139
107
|
}
|
|
140
|
-
|
|
141
108
|
formatDuration(miliseconds) {
|
|
142
109
|
var seconds = miliseconds / 1000;
|
|
143
110
|
var hh = Math.floor(seconds / 3600);
|
|
144
111
|
var min = Math.floor((seconds - hh * 3600) / 60);
|
|
145
112
|
var sec = seconds - hh * 3600 - min * 60;
|
|
146
113
|
let result = '';
|
|
147
|
-
|
|
148
114
|
if (hh) {
|
|
149
115
|
result += `${hh.toFixed(0)} hr `;
|
|
150
116
|
}
|
|
151
|
-
|
|
152
117
|
if (min) {
|
|
153
118
|
result += `${min.toFixed(0)} min `;
|
|
154
119
|
}
|
|
155
|
-
|
|
156
120
|
if (sec) {
|
|
157
121
|
result += `${sec.toFixed(0)} sec`;
|
|
158
122
|
}
|
|
159
|
-
|
|
160
123
|
return result;
|
|
161
124
|
}
|
|
162
|
-
|
|
163
125
|
}
|
|
164
|
-
|
|
165
126
|
exports.default = FileReporterBase;
|
|
166
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXBvcnRlci9GaWxlUmVwb3J0ZXJCYXNlLmpzIl0sIm5hbWVzIjpbIlJFUE9SVFNfRk9MREVSX05BTUUiLCJSRVBPUlRfRklMRV9OQU1FIiwiRmlsZVJlcG9ydGVyQmFzZSIsIlJlcG9ydGVyQmFzZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNyZWF0ZUZvbGRlclN0cnVjdHVyZUFuZEZpbGVQYXRoIiwiZmlsZUV4dGVuc2lvbiIsImxlbmd0aCIsIkVycm9yIiwic3RhcnRzV2l0aCIsInRhcmdldCIsInJlcG9ydGluZyIsInJlc3VsdHNCYXNlRm9sZGVyIiwiY3dkIiwib3V0cHV0RGlyIiwicGF0aCIsImlzQWJzb2x1dGUiLCJyZXNvbHZlIiwiam9pbiIsImNyZWF0ZUZvbGRlcklmTm90RXhpc3RzIiwicmVzdWx0Rm9sZGVyUGF0aCIsInN1YkZvbGRlck5hbWUiLCJmb3JtYXQiLCJmb2xkZXJQYXRoIiwiZnMiLCJta2RpclN5bmMiLCJlIiwiY29kZSIsInJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyIsInJlc3VsdHMiLCJBcnJheSIsImlzQXJyYXkiLCJzdGVwc1dpdGhTY3JlZW5zaG90IiwicmVzdWx0Iiwic3VpdGUiLCJzdWl0ZXMiLCJjYXplIiwiY2FzZXMiLCJfcG9wdWxhdGVTdGVwc1dpdGhTY3JlZW5zaG90cyIsInN0ZXBzIiwic2NyZWVuc2hvdEZpbGVQcmVmaXgiLCJzY3JlZW5zaG90RmlsZVN1ZmZpeCIsImkiLCJmaWxlbmFtZSIsImZpbGVwYXRoIiwic3RlcCIsIndyaXRlRmlsZVN5bmMiLCJzY3JlZW5zaG90Iiwic2NyZWVuc2hvdEZpbGUiLCJmb3JtYXRUb3RhbER1cmF0aW9uIiwiZHVyYXRpb24iLCJmb3JtYXREdXJhdGlvbiIsInB1c2giLCJtaWxpc2Vjb25kcyIsInNlY29uZHMiLCJoaCIsIk1hdGgiLCJmbG9vciIsIm1pbiIsInNlYyIsInRvRml4ZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVlBOztB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ckMsQ0FBVjtBQUNBLFFBQUlJLEdBQUcsR0FBR0wsT0FBTyxHQUFJQyxFQUFFLEdBQUcsSUFBaEIsR0FBeUJHLEdBQUcsR0FBRyxFQUF6QztBQUVBLFFBQUl6QixNQUFNLEdBQUcsRUFBYjs7QUFFQSxRQUFJc0IsRUFBSixFQUFRO0FBQ0p0QixNQUFBQSxNQUFNLElBQUssR0FBRXNCLEVBQUUsQ0FBQ0ssT0FBSCxDQUFXLENBQVgsQ0FBYyxNQUEzQjtBQUNIOztBQUNELFFBQUlGLEdBQUosRUFBUztBQUNMekIsTUFBQUEsTUFBTSxJQUFLLEdBQUV5QixHQUFHLENBQUNFLE9BQUosQ0FBWSxDQUFaLENBQWUsT0FBNUI7QUFDSDs7QUFDRCxRQUFJRCxHQUFKLEVBQVM7QUFDTDFCLE1BQUFBLE1BQU0sSUFBSyxHQUFFMEIsR0FBRyxDQUFDQyxPQUFKLENBQVksQ0FBWixDQUFlLE1BQTVCO0FBQ0g7O0FBRUQsV0FBTzNCLE1BQVA7QUFDSDs7QUE5SHNEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKlxyXG4gKiBPeHlnZW4gRmlsZSBSZXBvcnRlciBhYnN0cmFjdCBjbGFzc1xyXG4gKi9cclxuaW1wb3J0IGZzIGZyb20gJ2ZzJztcclxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcbmltcG9ydCBSZXBvcnRlckJhc2UgZnJvbSAnLi9SZXBvcnRlckJhc2UnO1xyXG5cclxuY29uc3QgUkVQT1JUU19GT0xERVJfTkFNRSA9ICdyZXBvcnRzJztcclxuY29uc3QgUkVQT1JUX0ZJTEVfTkFNRSA9ICdyZXBvcnQnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsZVJlcG9ydGVyQmFzZSBleHRlbmRzIFJlcG9ydGVyQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBjcmVhdGVGb2xkZXJTdHJ1Y3R1cmVBbmRGaWxlUGF0aChmaWxlRXh0ZW5zaW9uKSB7XHJcbiAgICAgICAgaWYgKCFmaWxlRXh0ZW5zaW9uIHx8IHR5cGVvZiBmaWxlRXh0ZW5zaW9uICE9PSAnc3RyaW5nJyB8fCBmaWxlRXh0ZW5zaW9uLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignXCJmaWxlRXh0ZW5zaW9uXCIgYXJndW1lbnQgbXVzdCBiZSBzcGVjaWZpZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgZmlsZUV4dGVuc2lvbiBkb2Vzbid0IHN0YXJ0IHdpdGggJy4nLCBhZGQgaXQgYXV0b21hdGljYWxseVxyXG4gICAgICAgIGlmICghZmlsZUV4dGVuc2lvbi5zdGFydHNXaXRoKCcuJykpIHtcclxuICAgICAgICAgICAgZmlsZUV4dGVuc2lvbiA9IGAuJHtmaWxlRXh0ZW5zaW9ufWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zIHx8ICF0aGlzLm9wdGlvbnMudGFyZ2V0IHx8ICF0aGlzLm9wdGlvbnMucmVwb3J0aW5nKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsZVJlcG9ydGVyQmFzZSBpcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHJlc3VsdHNCYXNlRm9sZGVyID0gbnVsbDtcclxuICAgICAgICAvLyBwcm9kdWNlIHJlcG9ydCBhdCB0aGUgc3BlY2lmaWVkIHBhdGguIHdpbGwgb3ZlcndyaXRlIGFueSBleGlzdGluZyByZXBvcnRzLlxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY3dkICYmIHRoaXMub3B0aW9ucy5yZXBvcnRpbmcub3V0cHV0RGlyKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXRoLmlzQWJzb2x1dGUodGhpcy5vcHRpb25zLnJlcG9ydGluZy5vdXRwdXREaXIpKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzQmFzZUZvbGRlciA9IHRoaXMub3B0aW9ucy5yZXBvcnRpbmcub3V0cHV0RGlyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0c0Jhc2VGb2xkZXIgPSBwYXRoLnJlc29sdmUodGhpcy5vcHRpb25zLmN3ZCwgdGhpcy5vcHRpb25zLnJlcG9ydGluZy5vdXRwdXREaXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGdlbmVyYXRlIGRhdGUtdGltZSBmb2xkZXIgc3RydWN0dXJlIGZvciByZXBvcnQgZmlsZXNcclxuICAgICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMudGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdHNCYXNlRm9sZGVyID0gcGF0aC5qb2luKHRoaXMub3B0aW9ucy50YXJnZXQuY3dkLCBSRVBPUlRTX0ZPTERFUl9OQU1FKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGNvbnN0cnVjdGluZyByZXBvcnRzIHBhdGguIEVpdGhlciBzcmNGaWxlIG9yIG91dHB1dEZvbGRlciBpcyByZXF1aXJlZC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY3JlYXRlIHJlc3VsdHMgbWFpbiBmb2xkZXIgKHdoZXJlIGFsbCB0aGUgcmVzdWx0cyBmb3IgdGhlIGN1cnJlbnQgdGVzdCBjYXNlIG9yIHRlc3Qgc3VpdGUgYXJlIHN0b3JlZClcclxuICAgICAgICB0aGlzLmNyZWF0ZUZvbGRlcklmTm90RXhpc3RzKHJlc3VsdHNCYXNlRm9sZGVyKTtcclxuICAgICAgICBsZXQgcmVzdWx0Rm9sZGVyUGF0aCA9IHJlc3VsdHNCYXNlRm9sZGVyO1xyXG4gICAgICAgIC8vIGNyZWF0ZSB0aW1lc3RhbXAtYmFzZWQgc3ViIGZvbGRlciBmb3IgdGhlIGN1cnJlbnQgcmVzdWx0cyBpZiBcIm91dHB1dERpclwiIHByb3BlcnR5IGlzIE5PVCBzcGVjaWZpZWRcclxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5yZXBvcnRpbmcub3V0cHV0RGlyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YkZvbGRlck5hbWUgPSBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tRERfSEhtbXNzJyk7XHJcbiAgICAgICAgICAgIHJlc3VsdEZvbGRlclBhdGggPSBwYXRoLmpvaW4ocmVzdWx0c0Jhc2VGb2xkZXIsIHN1YkZvbGRlck5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUZvbGRlcklmTm90RXhpc3RzKHJlc3VsdEZvbGRlclBhdGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGF0aC5qb2luKHJlc3VsdEZvbGRlclBhdGgsIGAke1JFUE9SVF9GSUxFX05BTUV9JHtmaWxlRXh0ZW5zaW9ufWApO1xyXG5cclxuICAgIH1cclxuICAgIGNyZWF0ZUZvbGRlcklmTm90RXhpc3RzKGZvbGRlclBhdGgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBmcy5ta2RpclN5bmMoZm9sZGVyUGF0aCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBpZiAoIGUuY29kZSAhPSAnRUVYSVNUJyApIHRocm93IGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmb2xkZXJQYXRoO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHNhdmUgYWxsIHNjcmVlbnNob3RzIHRvIGZpbGVzIGFuZCByZXBsYWNlIHNjcmVlbnNob3QgY29udGVudCB3aXRoIGZpbGUgcGF0aCBpbiB0aGUgcmVzdWx0IEpTT04gYmVmb3JlIHNlcmlhbGl6YXRpb25cclxuICAgIHJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyhyZXN1bHRzLCBmb2xkZXJQYXRoKSB7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlc3VsdHMpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudCBcInJlc3VsdHNcIiAtIG11c3QgYmUgYW4gYXJyYXkuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZm9sZGVyUGF0aCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiZm9sZGVyUGF0aFwiIGFyZ3VtZW50IGNhbm5vdCBiZSBudWxsIG9yIGVtcHR5LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdGVwc1dpdGhTY3JlZW5zaG90ID0gW107XHJcbiAgICAgICAgLy8gbWFwIHN0ZXBzIHdpdGggbm9uIGVtcHR5IHNjcmVlbnNob3QgYXR0cmlidXRlXHJcbiAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHJlc3VsdHMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgc3VpdGUgb2YgcmVzdWx0LnN1aXRlcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2F6ZSBvZiBzdWl0ZS5jYXNlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlU3RlcHNXaXRoU2NyZWVuc2hvdHMoY2F6ZS5zdGVwcywgc3RlcHNXaXRoU2NyZWVuc2hvdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2NyZWVuc2hvdEZpbGVQcmVmaXggPSAnc2NyZWVuc2hvdC0nO1xyXG4gICAgICAgIGNvbnN0IHNjcmVlbnNob3RGaWxlU3VmZml4ID0gJy5wbmcnO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPHN0ZXBzV2l0aFNjcmVlbnNob3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gc2NyZWVuc2hvdEZpbGVQcmVmaXggKyBpICsgc2NyZWVuc2hvdEZpbGVTdWZmaXg7XHJcbiAgICAgICAgICAgIGxldCBmaWxlcGF0aCA9IHBhdGguam9pbihmb2xkZXJQYXRoLCBmaWxlbmFtZSk7XHJcbiAgICAgICAgICAgIGxldCBzdGVwID0gc3RlcHNXaXRoU2NyZWVuc2hvdFtpXTtcclxuICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlcGF0aCwgc3RlcC5zY3JlZW5zaG90LCAnYmFzZTY0Jyk7XHJcbiAgICAgICAgICAgIHN0ZXAuc2NyZWVuc2hvdEZpbGUgPSBmaWxlbmFtZTtcclxuICAgICAgICAgICAgc3RlcC5zY3JlZW5zaG90ID0gbnVsbDsgLy8gZG9uJ3Qgc2F2ZSBiYXNlNjQgc2NyZWVuc2hvdCBkYXRlIHRvIHRoZSBmaWxlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZm9ybWF0IHRvdGFsIGR1cmF0aW9uIGxpa2UgOiA1Ni4yIHNlYyAvIDMxIG1pbiA1OSBzZWMgLyAxIGhyIDMxIG1pbiA1OSBzZWNcclxuICAgIGZvcm1hdFRvdGFsRHVyYXRpb24ocmVzdWx0cykge1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyZXN1bHRzKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCJyZXN1bHRzXCIgLSBtdXN0IGJlIGFuIGFycmF5LicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHJlc3VsdHMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgc3VpdGUgb2YgcmVzdWx0LnN1aXRlcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2F6ZSBvZiBzdWl0ZS5jYXNlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHN0ZXAgb2YgY2F6ZS5zdGVwcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmR1cmF0aW9uID0gdGhpcy5mb3JtYXREdXJhdGlvbihzdGVwLmR1cmF0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfcG9wdWxhdGVTdGVwc1dpdGhTY3JlZW5zaG90cyhzdGVwcywgc3RlcHNXaXRoU2NyZWVuc2hvdCkge1xyXG4gICAgICAgIGZvciAobGV0IHN0ZXAgb2Ygc3RlcHMpIHtcclxuICAgICAgICAgICAgaWYgKHN0ZXAuc2NyZWVuc2hvdCkge1xyXG4gICAgICAgICAgICAgICAgc3RlcHNXaXRoU2NyZWVuc2hvdC5wdXNoKHN0ZXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGhhbmRsZSBjaGlsZCBzdGVwcyB0b29cclxuICAgICAgICAgICAgaWYgKHN0ZXAuc3RlcHMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlU3RlcHNXaXRoU2NyZWVuc2hvdHMoc3RlcC5zdGVwcywgc3RlcHNXaXRoU2NyZWVuc2hvdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3JtYXREdXJhdGlvbihtaWxpc2Vjb25kcykge1xyXG4gICAgICAgIHZhciBzZWNvbmRzID0gbWlsaXNlY29uZHMgLyAxMDAwO1xyXG4gICAgICAgIHZhciBoaCAgID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gMzYwMCk7XHJcbiAgICAgICAgdmFyIG1pbiA9IE1hdGguZmxvb3IoKHNlY29uZHMgLSAoaGggKiAzNjAwKSkgLyA2MCk7XHJcbiAgICAgICAgdmFyIHNlYyA9IHNlY29uZHMgLSAoaGggKiAzNjAwKSAtIChtaW4gKiA2MCk7XHJcblxyXG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKGhoKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHtoaC50b0ZpeGVkKDApfSBociBgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobWluKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHttaW4udG9GaXhlZCgwKX0gbWluIGA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWMpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IGAke3NlYy50b0ZpeGVkKDApfSBzZWNgO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
127
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wYXRoIiwiX21vbWVudCIsIl9SZXBvcnRlckJhc2UiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJSRVBPUlRTX0ZPTERFUl9OQU1FIiwiUkVQT1JUX0ZJTEVfTkFNRSIsIkZpbGVSZXBvcnRlckJhc2UiLCJSZXBvcnRlckJhc2UiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJjcmVhdGVGb2xkZXJTdHJ1Y3R1cmVBbmRGaWxlUGF0aCIsImZpbGVFeHRlbnNpb24iLCJsZW5ndGgiLCJFcnJvciIsInN0YXJ0c1dpdGgiLCJ0YXJnZXQiLCJyZXBvcnRpbmciLCJyZXN1bHRzQmFzZUZvbGRlciIsImN3ZCIsIm91dHB1dERpciIsInBhdGgiLCJpc0Fic29sdXRlIiwicmVzb2x2ZSIsImpvaW4iLCJjcmVhdGVGb2xkZXJJZk5vdEV4aXN0cyIsInJlc3VsdEZvbGRlclBhdGgiLCJzdWJGb2xkZXJOYW1lIiwibW9tZW50IiwiZm9ybWF0IiwiZm9sZGVyUGF0aCIsImZzIiwibWtkaXJTeW5jIiwiY29kZSIsInJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyIsInJlc3VsdHMiLCJBcnJheSIsImlzQXJyYXkiLCJzdGVwc1dpdGhTY3JlZW5zaG90IiwicmVzdWx0Iiwic3VpdGUiLCJzdWl0ZXMiLCJjYXplIiwiY2FzZXMiLCJfcG9wdWxhdGVTdGVwc1dpdGhTY3JlZW5zaG90cyIsInN0ZXBzIiwic2NyZWVuc2hvdEZpbGVQcmVmaXgiLCJzY3JlZW5zaG90RmlsZVN1ZmZpeCIsImkiLCJmaWxlbmFtZSIsImZpbGVwYXRoIiwic3RlcCIsIndyaXRlRmlsZVN5bmMiLCJzY3JlZW5zaG90Iiwic2NyZWVuc2hvdEZpbGUiLCJmb3JtYXRUb3RhbER1cmF0aW9uIiwiZHVyYXRpb24iLCJmb3JtYXREdXJhdGlvbiIsInB1c2giLCJtaWxpc2Vjb25kcyIsInNlY29uZHMiLCJoaCIsIk1hdGgiLCJmbG9vciIsIm1pbiIsInNlYyIsInRvRml4ZWQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlcG9ydGVyL0ZpbGVSZXBvcnRlckJhc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKlxyXG4gKiBPeHlnZW4gRmlsZSBSZXBvcnRlciBhYnN0cmFjdCBjbGFzc1xyXG4gKi9cclxuaW1wb3J0IGZzIGZyb20gJ2ZzJztcclxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcbmltcG9ydCBSZXBvcnRlckJhc2UgZnJvbSAnLi9SZXBvcnRlckJhc2UnO1xyXG5cclxuY29uc3QgUkVQT1JUU19GT0xERVJfTkFNRSA9ICdyZXBvcnRzJztcclxuY29uc3QgUkVQT1JUX0ZJTEVfTkFNRSA9ICdyZXBvcnQnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsZVJlcG9ydGVyQmFzZSBleHRlbmRzIFJlcG9ydGVyQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBjcmVhdGVGb2xkZXJTdHJ1Y3R1cmVBbmRGaWxlUGF0aChmaWxlRXh0ZW5zaW9uKSB7XHJcbiAgICAgICAgaWYgKCFmaWxlRXh0ZW5zaW9uIHx8IHR5cGVvZiBmaWxlRXh0ZW5zaW9uICE9PSAnc3RyaW5nJyB8fCBmaWxlRXh0ZW5zaW9uLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignXCJmaWxlRXh0ZW5zaW9uXCIgYXJndW1lbnQgbXVzdCBiZSBzcGVjaWZpZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgZmlsZUV4dGVuc2lvbiBkb2Vzbid0IHN0YXJ0IHdpdGggJy4nLCBhZGQgaXQgYXV0b21hdGljYWxseVxyXG4gICAgICAgIGlmICghZmlsZUV4dGVuc2lvbi5zdGFydHNXaXRoKCcuJykpIHtcclxuICAgICAgICAgICAgZmlsZUV4dGVuc2lvbiA9IGAuJHtmaWxlRXh0ZW5zaW9ufWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zIHx8ICF0aGlzLm9wdGlvbnMudGFyZ2V0IHx8ICF0aGlzLm9wdGlvbnMucmVwb3J0aW5nKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsZVJlcG9ydGVyQmFzZSBpcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHJlc3VsdHNCYXNlRm9sZGVyID0gbnVsbDtcclxuICAgICAgICAvLyBwcm9kdWNlIHJlcG9ydCBhdCB0aGUgc3BlY2lmaWVkIHBhdGguIHdpbGwgb3ZlcndyaXRlIGFueSBleGlzdGluZyByZXBvcnRzLlxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY3dkICYmIHRoaXMub3B0aW9ucy5yZXBvcnRpbmcub3V0cHV0RGlyKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXRoLmlzQWJzb2x1dGUodGhpcy5vcHRpb25zLnJlcG9ydGluZy5vdXRwdXREaXIpKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzQmFzZUZvbGRlciA9IHRoaXMub3B0aW9ucy5yZXBvcnRpbmcub3V0cHV0RGlyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0c0Jhc2VGb2xkZXIgPSBwYXRoLnJlc29sdmUodGhpcy5vcHRpb25zLmN3ZCwgdGhpcy5vcHRpb25zLnJlcG9ydGluZy5vdXRwdXREaXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGdlbmVyYXRlIGRhdGUtdGltZSBmb2xkZXIgc3RydWN0dXJlIGZvciByZXBvcnQgZmlsZXNcclxuICAgICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMudGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdHNCYXNlRm9sZGVyID0gcGF0aC5qb2luKHRoaXMub3B0aW9ucy50YXJnZXQuY3dkLCBSRVBPUlRTX0ZPTERFUl9OQU1FKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGNvbnN0cnVjdGluZyByZXBvcnRzIHBhdGguIEVpdGhlciBzcmNGaWxlIG9yIG91dHB1dEZvbGRlciBpcyByZXF1aXJlZC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY3JlYXRlIHJlc3VsdHMgbWFpbiBmb2xkZXIgKHdoZXJlIGFsbCB0aGUgcmVzdWx0cyBmb3IgdGhlIGN1cnJlbnQgdGVzdCBjYXNlIG9yIHRlc3Qgc3VpdGUgYXJlIHN0b3JlZClcclxuICAgICAgICB0aGlzLmNyZWF0ZUZvbGRlcklmTm90RXhpc3RzKHJlc3VsdHNCYXNlRm9sZGVyKTtcclxuICAgICAgICBsZXQgcmVzdWx0Rm9sZGVyUGF0aCA9IHJlc3VsdHNCYXNlRm9sZGVyO1xyXG4gICAgICAgIC8vIGNyZWF0ZSB0aW1lc3RhbXAtYmFzZWQgc3ViIGZvbGRlciBmb3IgdGhlIGN1cnJlbnQgcmVzdWx0cyBpZiBcIm91dHB1dERpclwiIHByb3BlcnR5IGlzIE5PVCBzcGVjaWZpZWRcclxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5yZXBvcnRpbmcub3V0cHV0RGlyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YkZvbGRlck5hbWUgPSBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tRERfSEhtbXNzJyk7XHJcbiAgICAgICAgICAgIHJlc3VsdEZvbGRlclBhdGggPSBwYXRoLmpvaW4ocmVzdWx0c0Jhc2VGb2xkZXIsIHN1YkZvbGRlck5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUZvbGRlcklmTm90RXhpc3RzKHJlc3VsdEZvbGRlclBhdGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGF0aC5qb2luKHJlc3VsdEZvbGRlclBhdGgsIGAke1JFUE9SVF9GSUxFX05BTUV9JHtmaWxlRXh0ZW5zaW9ufWApO1xyXG5cclxuICAgIH1cclxuICAgIGNyZWF0ZUZvbGRlcklmTm90RXhpc3RzKGZvbGRlclBhdGgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBmcy5ta2RpclN5bmMoZm9sZGVyUGF0aCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBpZiAoIGUuY29kZSAhPSAnRUVYSVNUJyApIHRocm93IGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmb2xkZXJQYXRoO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHNhdmUgYWxsIHNjcmVlbnNob3RzIHRvIGZpbGVzIGFuZCByZXBsYWNlIHNjcmVlbnNob3QgY29udGVudCB3aXRoIGZpbGUgcGF0aCBpbiB0aGUgcmVzdWx0IEpTT04gYmVmb3JlIHNlcmlhbGl6YXRpb25cclxuICAgIHJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyhyZXN1bHRzLCBmb2xkZXJQYXRoKSB7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlc3VsdHMpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudCBcInJlc3VsdHNcIiAtIG11c3QgYmUgYW4gYXJyYXkuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZm9sZGVyUGF0aCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiZm9sZGVyUGF0aFwiIGFyZ3VtZW50IGNhbm5vdCBiZSBudWxsIG9yIGVtcHR5LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdGVwc1dpdGhTY3JlZW5zaG90ID0gW107XHJcbiAgICAgICAgLy8gbWFwIHN0ZXBzIHdpdGggbm9uIGVtcHR5IHNjcmVlbnNob3QgYXR0cmlidXRlXHJcbiAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHJlc3VsdHMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgc3VpdGUgb2YgcmVzdWx0LnN1aXRlcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2F6ZSBvZiBzdWl0ZS5jYXNlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlU3RlcHNXaXRoU2NyZWVuc2hvdHMoY2F6ZS5zdGVwcywgc3RlcHNXaXRoU2NyZWVuc2hvdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2NyZWVuc2hvdEZpbGVQcmVmaXggPSAnc2NyZWVuc2hvdC0nO1xyXG4gICAgICAgIGNvbnN0IHNjcmVlbnNob3RGaWxlU3VmZml4ID0gJy5wbmcnO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPHN0ZXBzV2l0aFNjcmVlbnNob3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gc2NyZWVuc2hvdEZpbGVQcmVmaXggKyBpICsgc2NyZWVuc2hvdEZpbGVTdWZmaXg7XHJcbiAgICAgICAgICAgIGxldCBmaWxlcGF0aCA9IHBhdGguam9pbihmb2xkZXJQYXRoLCBmaWxlbmFtZSk7XHJcbiAgICAgICAgICAgIGxldCBzdGVwID0gc3RlcHNXaXRoU2NyZWVuc2hvdFtpXTtcclxuICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlcGF0aCwgc3RlcC5zY3JlZW5zaG90LCAnYmFzZTY0Jyk7XHJcbiAgICAgICAgICAgIHN0ZXAuc2NyZWVuc2hvdEZpbGUgPSBmaWxlbmFtZTtcclxuICAgICAgICAgICAgc3RlcC5zY3JlZW5zaG90ID0gbnVsbDsgLy8gZG9uJ3Qgc2F2ZSBiYXNlNjQgc2NyZWVuc2hvdCBkYXRlIHRvIHRoZSBmaWxlXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZm9ybWF0IHRvdGFsIGR1cmF0aW9uIGxpa2UgOiA1Ni4yIHNlYyAvIDMxIG1pbiA1OSBzZWMgLyAxIGhyIDMxIG1pbiA1OSBzZWNcclxuICAgIGZvcm1hdFRvdGFsRHVyYXRpb24ocmVzdWx0cykge1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyZXN1bHRzKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCJyZXN1bHRzXCIgLSBtdXN0IGJlIGFuIGFycmF5LicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHJlc3VsdHMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgc3VpdGUgb2YgcmVzdWx0LnN1aXRlcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2F6ZSBvZiBzdWl0ZS5jYXNlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHN0ZXAgb2YgY2F6ZS5zdGVwcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmR1cmF0aW9uID0gdGhpcy5mb3JtYXREdXJhdGlvbihzdGVwLmR1cmF0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfcG9wdWxhdGVTdGVwc1dpdGhTY3JlZW5zaG90cyhzdGVwcywgc3RlcHNXaXRoU2NyZWVuc2hvdCkge1xyXG4gICAgICAgIGZvciAobGV0IHN0ZXAgb2Ygc3RlcHMpIHtcclxuICAgICAgICAgICAgaWYgKHN0ZXAuc2NyZWVuc2hvdCkge1xyXG4gICAgICAgICAgICAgICAgc3RlcHNXaXRoU2NyZWVuc2hvdC5wdXNoKHN0ZXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGhhbmRsZSBjaGlsZCBzdGVwcyB0b29cclxuICAgICAgICAgICAgaWYgKHN0ZXAuc3RlcHMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlU3RlcHNXaXRoU2NyZWVuc2hvdHMoc3RlcC5zdGVwcywgc3RlcHNXaXRoU2NyZWVuc2hvdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3JtYXREdXJhdGlvbihtaWxpc2Vjb25kcykge1xyXG4gICAgICAgIHZhciBzZWNvbmRzID0gbWlsaXNlY29uZHMgLyAxMDAwO1xyXG4gICAgICAgIHZhciBoaCAgID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gMzYwMCk7XHJcbiAgICAgICAgdmFyIG1pbiA9IE1hdGguZmxvb3IoKHNlY29uZHMgLSAoaGggKiAzNjAwKSkgLyA2MCk7XHJcbiAgICAgICAgdmFyIHNlYyA9IHNlY29uZHMgLSAoaGggKiAzNjAwKSAtIChtaW4gKiA2MCk7XHJcblxyXG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKGhoKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHtoaC50b0ZpeGVkKDApfSBociBgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobWluKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHttaW4udG9GaXhlZCgwKX0gbWluIGA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWMpIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IGAke3NlYy50b0ZpeGVkKDApfSBzZWNgO1xyXG4gICAgICAgIH1cclxuXHJc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
|