oxygen-cli 1.40.2-beta.1 → 1.41.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 +1755 -1742
- package/LICENSE +672 -672
- package/README.md +37 -37
- package/build/core/OxygenCore.js +1 -1
- package/build/core/OxygenEvents.js +1 -1
- package/build/core/OxygenModule.js +1 -1
- package/build/core/OxygenService.js +1 -1
- package/build/core/OxygenSubModule.js +1 -1
- package/build/core/WebDriverModule.js +1 -1
- package/build/core/utils.js +1 -1
- package/build/errors/HookError.js +1 -1
- package/build/errors/ModuleError.js +1 -1
- package/build/errors/ModuleUnavailableError.js +1 -1
- package/build/errors/OxygenError.js +1 -1
- package/build/errors/ScriptNotFound.js +1 -1
- package/build/errors/helper.js +1 -1
- package/build/index.js +1 -1
- package/build/lib/cli-util.js +1 -1
- package/build/lib/cli.js +1 -1
- package/build/lib/debugger.js +1 -1
- package/build/lib/img-merge.js +1 -1
- package/build/lib/launcher.js +1 -1
- package/build/lib/logger.js +43 -43
- package/build/lib/moduleRequire.js +1 -1
- package/build/lib/parallel-launcher.js +1 -1
- package/build/lib/param-manager.js +1 -1
- package/build/lib/param-reader-csv.js +1 -1
- package/build/lib/param-reader-excel.js +1 -1
- package/build/lib/param-reader-json.js +1 -1
- package/build/lib/text-to-image.js +1 -1
- package/build/lib/util.js +1 -1
- package/build/model/case-result.js +1 -1
- package/build/model/failure.js +1 -1
- package/build/model/status.js +1 -1
- package/build/model/step-result.js +1 -1
- package/build/model/suite-result.js +1 -1
- package/build/model/test-result.js +1 -1
- package/build/model/testcase.js +1 -1
- package/build/model/testsuite.js +1 -1
- package/build/ox_modules/index.js +1 -1
- package/build/ox_modules/module-assert.js +37 -37
- package/build/ox_modules/module-date.js +24 -24
- package/build/ox_modules/module-db.js +52 -52
- package/build/ox_modules/module-email.js +59 -59
- package/build/ox_modules/module-eyes.js +34 -34
- package/build/ox_modules/module-http/ntlm-util.js +10 -10
- package/build/ox_modules/module-http/ntlm.js +15 -15
- package/build/ox_modules/module-http.js +132 -132
- package/build/ox_modules/module-log.js +27 -27
- package/build/ox_modules/module-mailinator.js +87 -87
- package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
- package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
- package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
- package/build/ox_modules/module-mob/commands/assertText.js +21 -21
- package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
- package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
- package/build/ox_modules/module-mob/commands/back.js +16 -16
- package/build/ox_modules/module-mob/commands/clear.js +19 -19
- package/build/ox_modules/module-mob/commands/click.js +17 -17
- package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
- package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
- package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
- package/build/ox_modules/module-mob/commands/debug.js +16 -16
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
- package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
- package/build/ox_modules/module-mob/commands/execute.js +21 -21
- package/build/ox_modules/module-mob/commands/findElement.js +20 -20
- package/build/ox_modules/module-mob/commands/findElements.js +23 -23
- package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
- package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
- package/build/ox_modules/module-mob/commands/getSource.js +16 -16
- package/build/ox_modules/module-mob/commands/getText.js +18 -18
- package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
- package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
- package/build/ox_modules/module-mob/commands/getValue.js +18 -18
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
- package/build/ox_modules/module-mob/commands/index.js +1 -1
- package/build/ox_modules/module-mob/commands/installApp.js +16 -16
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
- package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
- package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
- package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
- package/build/ox_modules/module-mob/commands/isExist.js +19 -19
- package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
- package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
- package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
- package/build/ox_modules/module-mob/commands/open.js +17 -17
- package/build/ox_modules/module-mob/commands/pause.js +16 -16
- package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
- package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
- package/build/ox_modules/module-mob/commands/select.js +24 -24
- package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
- package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
- package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
- package/build/ox_modules/module-mob/commands/setContext.js +16 -16
- package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
- package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
- package/build/ox_modules/module-mob/commands/shake.js +16 -16
- package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
- package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
- package/build/ox_modules/module-mob/commands/swipe.js +20 -20
- package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
- package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
- package/build/ox_modules/module-mob/commands/tap.js +17 -17
- package/build/ox_modules/module-mob/commands/type.js +20 -20
- package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
- package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
- package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
- package/build/ox_modules/module-mob.js +74 -74
- package/build/ox_modules/module-mongo.js +82 -82
- package/build/ox_modules/module-pdf.js +35 -35
- package/build/ox_modules/module-proxy.js +77 -77
- package/build/ox_modules/module-serial.js +55 -55
- package/build/ox_modules/module-shell.js +52 -33
- package/build/ox_modules/module-soap.js +72 -72
- package/build/ox_modules/module-twilio.js +41 -41
- package/build/ox_modules/module-utils.js +91 -91
- package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
- package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
- package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
- package/build/ox_modules/module-web/commands/assertExist.js +17 -17
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
- package/build/ox_modules/module-web/commands/assertText.js +21 -21
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
- package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
- package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
- package/build/ox_modules/module-web/commands/assertValue.js +20 -20
- package/build/ox_modules/module-web/commands/back.js +16 -16
- package/build/ox_modules/module-web/commands/clear.js +18 -18
- package/build/ox_modules/module-web/commands/click.js +25 -25
- package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
- package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
- package/build/ox_modules/module-web/commands/debug.js +15 -15
- package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
- package/build/ox_modules/module-web/commands/deselect.js +22 -22
- package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
- package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
- package/build/ox_modules/module-web/commands/execute.js +24 -24
- package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
- package/build/ox_modules/module-web/commands/findElement.js +19 -19
- package/build/ox_modules/module-web/commands/findElements.js +22 -22
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
- package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
- package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
- package/build/ox_modules/module-web/commands/getCookies.js +13 -13
- package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
- package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
- package/build/ox_modules/module-web/commands/getHTML.js +17 -17
- package/build/ox_modules/module-web/commands/getSource.js +16 -16
- package/build/ox_modules/module-web/commands/getText.js +18 -18
- package/build/ox_modules/module-web/commands/getTitle.js +12 -12
- package/build/ox_modules/module-web/commands/getUrl.js +16 -16
- package/build/ox_modules/module-web/commands/getValue.js +18 -18
- package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
- package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
- package/build/ox_modules/module-web/commands/index.js +1 -1
- package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
- package/build/ox_modules/module-web/commands/isChecked.js +18 -18
- package/build/ox_modules/module-web/commands/isExist.js +19 -19
- package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
- package/build/ox_modules/module-web/commands/isSelected.js +23 -23
- package/build/ox_modules/module-web/commands/isVisible.js +19 -19
- package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
- package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
- package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
- package/build/ox_modules/module-web/commands/mock.js +20 -20
- package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
- package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
- package/build/ox_modules/module-web/commands/newWindow.js +16 -16
- package/build/ox_modules/module-web/commands/open.js +16 -16
- package/build/ox_modules/module-web/commands/pause.js +15 -15
- package/build/ox_modules/module-web/commands/point.js +21 -21
- package/build/ox_modules/module-web/commands/pointJS.js +15 -15
- package/build/ox_modules/module-web/commands/refresh.js +15 -15
- package/build/ox_modules/module-web/commands/rightClick.js +17 -17
- package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
- package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
- package/build/ox_modules/module-web/commands/select.js +23 -23
- package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
- package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
- package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
- package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
- package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
- package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
- package/build/ox_modules/module-web/commands/type.js +20 -20
- package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
- package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
- package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
- package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
- package/build/ox_modules/module-web/commands/verifyText.js +21 -21
- package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
- package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
- package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
- package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
- package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
- package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
- package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
- package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
- package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForText.js +20 -20
- package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
- package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
- package/build/ox_modules/module-web.js +94 -94
- package/build/ox_modules/module-win/commands/assertText.js +17 -17
- package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
- package/build/ox_modules/module-win/commands/assertValue.js +14 -14
- package/build/ox_modules/module-win/commands/back.js +11 -11
- package/build/ox_modules/module-win/commands/clear.js +13 -13
- package/build/ox_modules/module-win/commands/click.js +13 -13
- package/build/ox_modules/module-win/commands/clickLong.js +14 -14
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
- package/build/ox_modules/module-win/commands/findElement.js +15 -15
- package/build/ox_modules/module-win/commands/findElements.js +15 -15
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
- package/build/ox_modules/module-win/commands/getLocation.js +14 -14
- package/build/ox_modules/module-win/commands/getSource.js +12 -12
- package/build/ox_modules/module-win/commands/getText.js +14 -14
- package/build/ox_modules/module-win/commands/getValue.js +14 -14
- package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
- package/build/ox_modules/module-win/commands/index.js +1 -1
- package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
- package/build/ox_modules/module-win/commands/isChecked.js +14 -14
- package/build/ox_modules/module-win/commands/isClickable.js +14 -14
- package/build/ox_modules/module-win/commands/isExist.js +15 -15
- package/build/ox_modules/module-win/commands/isSelected.js +14 -14
- package/build/ox_modules/module-win/commands/isVisible.js +15 -15
- package/build/ox_modules/module-win/commands/open.js +13 -13
- package/build/ox_modules/module-win/commands/pause.js +12 -12
- package/build/ox_modules/module-win/commands/rightClick.js +13 -13
- package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
- package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
- package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
- package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
- package/build/ox_modules/module-win/commands/tap.js +13 -13
- package/build/ox_modules/module-win/commands/type.js +16 -16
- package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
- package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
- package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
- package/build/ox_modules/module-win.js +47 -47
- package/build/ox_modules/utils.js +8 -8
- package/build/ox_reporters/excel/template.json +48 -48
- package/build/ox_reporters/html/index.ejs +163 -163
- package/build/ox_reporters/html/summary.ejs +77 -77
- package/build/ox_reporters/html/tests-details.ejs +134 -134
- package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
- package/build/ox_reporters/reporter-excel.js +1 -1
- package/build/ox_reporters/reporter-html.js +1 -1
- package/build/ox_reporters/reporter-json.js +1 -1
- package/build/ox_reporters/reporter-junit.js +1 -1
- package/build/ox_reporters/reporter-pdf.js +1 -1
- package/build/ox_reporters/reporter-rp.js +73 -42
- package/build/ox_reporters/reporter-xml.js +1 -1
- package/build/ox_services/service-devtools/submodule-network.js +1 -1
- package/build/ox_services/service-devtools.js +1 -1
- package/build/reporter/FileReporterBase.js +1 -1
- package/build/reporter/ReportAggregator.js +1 -1
- package/build/reporter/ReporterBase.js +1 -1
- package/build/reporter/WebSocketReporter.js +1 -1
- package/build/runners/WorkerProcess.js +1 -1
- package/build/runners/cucumber/CucumberEventListener.js +1 -1
- package/build/runners/cucumber/CucumberReporter.js +1 -1
- package/build/runners/cucumber/CucumberWorker.js +1 -1
- package/build/runners/cucumber/index.js +1 -1
- package/build/runners/cucumber/worker.js +1 -1
- package/build/runners/index.js +1 -1
- package/build/runners/oxygen/OxygenWorker.js +1 -1
- package/build/runners/oxygen/index.js +1 -1
- package/build/runners/oxygen/worker.js +1 -1
- package/config/default.json +6 -6
- package/package.json +139 -139
- package/types/index.d.ts +70 -70
- package/types/module-eyes.d.ts +39 -39
- package/types/module-http.d.ts +163 -163
- package/types/module-log.d.ts +34 -34
- package/types/module-mob.d.ts +966 -966
- package/types/module-pdf.d.ts +40 -40
- package/types/module-proxy.d.ts +100 -100
- package/types/module-shell.d.ts +24 -24
- package/types/module-utils.d.ts +99 -99
- package/types/module-web.d.ts +1053 -1053
- package/types/module-win.d.ts +352 -352
- package/types/oxygen.d.ts +53 -53
- package/log.txt +0 -1614
- package/reports/2025-06-08_231627/report.html +0 -440
- package/reports/2025-06-09_223615/report.html +0 -440
- package/transpiled/mongodb/etc/prepare.js +0 -18
- package/transpiled/mongodb/lib/admin.js +0 -182
- package/transpiled/mongodb/lib/beta.js +0 -26
- package/transpiled/mongodb/lib/bson.js +0 -220
- package/transpiled/mongodb/lib/bulk/common.js +0 -1041
- package/transpiled/mongodb/lib/bulk/ordered.js +0 -76
- package/transpiled/mongodb/lib/bulk/unordered.js +0 -102
- package/transpiled/mongodb/lib/change_stream.js +0 -517
- package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +0 -329
- package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +0 -779
- package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +0 -95
- package/transpiled/mongodb/lib/client-side-encryption/errors.js +0 -171
- package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +0 -98
- package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +0 -34
- package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +0 -186
- package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +0 -29
- package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +0 -58
- package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +0 -505
- package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +0 -63
- package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +0 -167
- package/transpiled/mongodb/lib/cmap/auth/gssapi.js +0 -207
- package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +0 -193
- package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +0 -181
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +0 -101
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +0 -81
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +0 -174
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +0 -59
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +0 -58
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +0 -138
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +0 -42
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +0 -71
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +0 -34
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +0 -111
- package/transpiled/mongodb/lib/cmap/auth/plain.js +0 -43
- package/transpiled/mongodb/lib/cmap/auth/providers.js +0 -22
- package/transpiled/mongodb/lib/cmap/auth/scram.js +0 -318
- package/transpiled/mongodb/lib/cmap/auth/x509.js +0 -61
- package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +0 -266
- package/transpiled/mongodb/lib/cmap/commands.js +0 -605
- package/transpiled/mongodb/lib/cmap/connect.js +0 -418
- package/transpiled/mongodb/lib/cmap/connection.js +0 -673
- package/transpiled/mongodb/lib/cmap/connection_pool.js +0 -688
- package/transpiled/mongodb/lib/cmap/connection_pool_events.js +0 -254
- package/transpiled/mongodb/lib/cmap/errors.js +0 -128
- package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +0 -278
- package/transpiled/mongodb/lib/cmap/metrics.js +0 -67
- package/transpiled/mongodb/lib/cmap/stream_description.js +0 -74
- package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +0 -196
- package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +0 -19
- package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +0 -144
- package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +0 -278
- package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +0 -376
- package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +0 -49
- package/transpiled/mongodb/lib/collection.js +0 -852
- package/transpiled/mongodb/lib/connection_string.js +0 -1452
- package/transpiled/mongodb/lib/constants.js +0 -162
- package/transpiled/mongodb/lib/cursor/abstract_cursor.js +0 -1082
- package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +0 -227
- package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +0 -136
- package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +0 -69
- package/transpiled/mongodb/lib/cursor/find_cursor.js +0 -476
- package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +0 -48
- package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +0 -46
- package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +0 -30
- package/transpiled/mongodb/lib/cursor/run_command_cursor.js +0 -125
- package/transpiled/mongodb/lib/db.js +0 -467
- package/transpiled/mongodb/lib/deps.js +0 -174
- package/transpiled/mongodb/lib/encrypter.js +0 -129
- package/transpiled/mongodb/lib/error.js +0 -1550
- package/transpiled/mongodb/lib/explain.js +0 -122
- package/transpiled/mongodb/lib/gridfs/download.js +0 -369
- package/transpiled/mongodb/lib/gridfs/index.js +0 -240
- package/transpiled/mongodb/lib/gridfs/upload.js +0 -446
- package/transpiled/mongodb/lib/index.js +0 -975
- package/transpiled/mongodb/lib/mongo_client.js +0 -626
- package/transpiled/mongodb/lib/mongo_client_auth_providers.js +0 -98
- package/transpiled/mongodb/lib/mongo_logger.js +0 -812
- package/transpiled/mongodb/lib/mongo_types.js +0 -71
- package/transpiled/mongodb/lib/operations/aggregate.js +0 -129
- package/transpiled/mongodb/lib/operations/bulk_write.js +0 -48
- package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +0 -96
- package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +0 -409
- package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +0 -5
- package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +0 -144
- package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +0 -228
- package/transpiled/mongodb/lib/operations/collections.js +0 -49
- package/transpiled/mongodb/lib/operations/command.js +0 -102
- package/transpiled/mongodb/lib/operations/count.js +0 -60
- package/transpiled/mongodb/lib/operations/create_collection.js +0 -109
- package/transpiled/mongodb/lib/operations/delete.js +0 -134
- package/transpiled/mongodb/lib/operations/distinct.js +0 -77
- package/transpiled/mongodb/lib/operations/drop.js +0 -102
- package/transpiled/mongodb/lib/operations/estimated_document_count.js +0 -47
- package/transpiled/mongodb/lib/operations/execute_operation.js +0 -251
- package/transpiled/mongodb/lib/operations/find.js +0 -197
- package/transpiled/mongodb/lib/operations/find_and_modify.js +0 -191
- package/transpiled/mongodb/lib/operations/get_more.js +0 -84
- package/transpiled/mongodb/lib/operations/indexes.js +0 -197
- package/transpiled/mongodb/lib/operations/insert.js +0 -138
- package/transpiled/mongodb/lib/operations/is_capped.js +0 -44
- package/transpiled/mongodb/lib/operations/kill_cursors.js +0 -58
- package/transpiled/mongodb/lib/operations/list_collections.js +0 -66
- package/transpiled/mongodb/lib/operations/list_databases.js +0 -56
- package/transpiled/mongodb/lib/operations/operation.js +0 -88
- package/transpiled/mongodb/lib/operations/options_operation.js +0 -44
- package/transpiled/mongodb/lib/operations/profiling_level.js +0 -42
- package/transpiled/mongodb/lib/operations/remove_user.js +0 -35
- package/transpiled/mongodb/lib/operations/rename.js +0 -48
- package/transpiled/mongodb/lib/operations/run_command.js +0 -64
- package/transpiled/mongodb/lib/operations/search_indexes/create.js +0 -41
- package/transpiled/mongodb/lib/operations/search_indexes/drop.js +0 -51
- package/transpiled/mongodb/lib/operations/search_indexes/update.js +0 -40
- package/transpiled/mongodb/lib/operations/set_profiling_level.js +0 -70
- package/transpiled/mongodb/lib/operations/stats.js +0 -39
- package/transpiled/mongodb/lib/operations/update.js +0 -218
- package/transpiled/mongodb/lib/operations/validate_collection.js +0 -49
- package/transpiled/mongodb/lib/read_concern.js +0 -92
- package/transpiled/mongodb/lib/read_preference.js +0 -215
- package/transpiled/mongodb/lib/resource_management.js +0 -74
- package/transpiled/mongodb/lib/sdam/common.js +0 -53
- package/transpiled/mongodb/lib/sdam/events.js +0 -177
- package/transpiled/mongodb/lib/sdam/monitor.js +0 -656
- package/transpiled/mongodb/lib/sdam/server.js +0 -463
- package/transpiled/mongodb/lib/sdam/server_description.js +0 -196
- package/transpiled/mongodb/lib/sdam/server_selection.js +0 -283
- package/transpiled/mongodb/lib/sdam/server_selection_events.js +0 -112
- package/transpiled/mongodb/lib/sdam/srv_polling.js +0 -139
- package/transpiled/mongodb/lib/sdam/topology.js +0 -833
- package/transpiled/mongodb/lib/sdam/topology_description.js +0 -447
- package/transpiled/mongodb/lib/sessions.js +0 -988
- package/transpiled/mongodb/lib/sort.js +0 -123
- package/transpiled/mongodb/lib/timeout.js +0 -349
- package/transpiled/mongodb/lib/transactions.js +0 -149
- package/transpiled/mongodb/lib/utils.js +0 -1502
- package/transpiled/mongodb/lib/write_concern.js +0 -115
package/build/lib/cli-util.js
CHANGED
|
@@ -377,4 +377,4 @@ function processTargetPath(targetPath, userCwd) {
|
|
|
377
377
|
extension: _path.default.extname(targetPath)
|
|
378
378
|
};
|
|
379
379
|
}
|
|
380
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLXV0aWwuanMiXSwibmFtZXMiOlsiT1hZR0VOX0NPTkZJR19GSUxFX05BTUUiLCJPWFlHRU5fRU5WX0ZJTEVfTkFNRSIsIk9YWUdFTl9QQUdFX09CSkVDVF9GSUxFX05BTUUiLCJERUZBVUxUX1JFUE9SVEVSIiwiZ2VuZXJhdGVUZXN0T3B0aW9ucyIsImNvbmZpZyIsImFyZ3YiLCJvcHRpb25zIiwiZW52IiwibG9hZEVudmlyb25tZW50VmFyaWFibGVzIiwicG8iLCJnZXRQYWdlT2JqZWN0RmlsZVBhdGgiLCJzdWl0ZXMiLCJsb2FkU3VpdGVzIiwiZnJhbWV3b3JrIiwidG9Mb3dlckNhc2UiLCJ0YXJnZXQiLCJpc0NvbmZpZ0ZpbGUiLCJuYW1lIiwiaW5kZXhPZiIsImV4dGVuc2lvbiIsImNvbmZpZ1BhdGgiLCJwdXNoIiwib3h1dGlsIiwiZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSlNGaWxlIiwicGF0aCIsInBhcmFtZXRlcnMiLCJmaWxlIiwibW9kZSIsIml0ZXJhdGlvbnMiLCJnZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uRmlsZSIsInN1aXRlRGVmcyIsIkFycmF5IiwiaXNBcnJheSIsInN1aXRlc0ZvbGRlciIsImpvaW4iLCJjd2QiLCJmcyIsImV4aXN0c1N5bmMiLCJsb2FkU3VpdGVEZWZpbml0aW9uc0Zyb21Gb2xkZXIiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwic3VpdGVEZWYiLCJnZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uIiwic2VsZWN0ZWRTdWl0ZU5hbWVzIiwic3BsaXQiLCJmaWx0ZXIiLCJ4IiwiaW5jbHVkZXMiLCJmb2xkZXJQYXRoIiwiZmlsZXMiLCJyZWFkZGlyU3luYyIsImV4dG5hbWUiLCJmdWxsUGF0aCIsInBvRmlsZU5hbWUiLCJwcm9jZXNzIiwicG9GaWxlUGF0aCIsInJlc29sdmUiLCJlIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwic3RhY2siLCJlbnZOYW1lIiwiZW52aXJvbm1lbnQiLCJkZWZhdWx0RW52RmlsZSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlZGljYXRlZEVudkZpbGVKcyIsImRlZGljYXRlZEVudkZpbGVKc29uIiwiZ2V0RW52aXJvbm1lbnRzIiwidGFyZ2V0Q3dkIiwiZ2V0Q29uZmlndXJhdGlvbnMiLCJERUZBVUxUX09QVFMiLCJicm93c2VyTmFtZSIsInNlbGVuaXVtVXJsIiwiYXBwaXVtVXJsIiwicmVvcGVuU2Vzc2lvbiIsInJlUnVuT25GYWlsZWQiLCJkZWJ1Z1BvcnQiLCJkZWxheSIsImNvbGxlY3REZXZpY2VMb2dzIiwiY29sbGVjdEFwcGl1bUxvZ3MiLCJjb2xsZWN0QnJvd3NlckxvZ3MiLCJyZXBvcnRpbmciLCJyZXBvcnRlcnMiLCJjbWRPcHRzIiwiZ2V0Q29tbWFuZExpbmVPcHRpb25zIiwicHJvakNvbmZpZ09wdHMiLCJlbnZzIiwiaXNDbWRPcHRzUmVwb3J0Rm9ybWF0IiwiaXNDb25maWdSZXBvcnRGb3JtYXQiLCJiYXNlTmFtZSIsIm9wdHMiLCJiIiwiYnJvd3NlciIsInMiLCJzZXJ2ZXIiLCJyZW9wZW4iLCJpIiwicGFyc2VJbnQiLCJpdGVyIiwiZGJncG9ydCIsIndzUG9ydCIsIndzcG9ydCIsImQiLCJyZiIsImxlbmd0aCIsInJlcG9ydEZvcm1hdHMiLCJybyIsIm91dHB1dERpciIsInAiLCJwYXJhbSIsInBtIiwic3BlY3MiLCJtb2R1bGVzIiwiZGVsZXRlTnVsbFByb3BlcnRpZXMiLCJvYmoiLCJjbG9uZSIsImtleXMiLCJrZXkiLCJ1bmRlZmluZWQiLCJwcm9jZXNzVGFyZ2V0UGF0aCIsInRhcmdldFBhdGgiLCJ1c2VyQ3dkIiwicmVzb2x2ZVBhdGgiLCJzdGF0cyIsImxzdGF0U3luYyIsImlzRGlyZWN0b3IiLCJpc0RpcmVjdG9yeSIsImNvbmZpZ0ZpbGVQYXRoIiwiZW5kc1dpdGgiLCJkaXJuYW1lIiwiZ2V0RmlsZU5hbWVXaXRob3V0RXh0IiwiZnVsbE5hbWUiLCJiYXNlbmFtZSJdLCJtYXBwaW5ncyI6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RUFBRUssY0FBSzRCLE9BQUwsQ0FBYXlFLFVBQWI7QUFiUixHQUFQO0FBZUgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgb3h1dGlsIGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBmb3JFYWNoIH0gZnJvbSAnYXN5bmMnO1xuaW1wb3J0IG1vZHVsZVJlcXVpcmUgZnJvbSAnLi9tb2R1bGVSZXF1aXJlJztcblxuZXhwb3J0IGNvbnN0IE9YWUdFTl9DT05GSUdfRklMRV9OQU1FID0gJ294eWdlbi5jb25mJztcbmV4cG9ydCBjb25zdCBPWFlHRU5fRU5WX0ZJTEVfTkFNRSA9ICdveHlnZW4uZW52JztcbmV4cG9ydCBjb25zdCBPWFlHRU5fUEFHRV9PQkpFQ1RfRklMRV9OQU1FID0gJ294eWdlbi5wbyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9SRVBPUlRFUiA9ICdodG1sJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlVGVzdE9wdGlvbnMoY29uZmlnLCBhcmd2KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4uY29uZmlnIH07XG4gICAgb3B0aW9ucy5lbnYgPSBsb2FkRW52aXJvbm1lbnRWYXJpYWJsZXMoY29uZmlnLCBhcmd2KTtcbiAgICBvcHRpb25zLnBvID0gZ2V0UGFnZU9iamVjdEZpbGVQYXRoKGNvbmZpZywgYXJndik7XG4gICAgb3B0aW9ucy5zdWl0ZXMgPSBhd2FpdCBsb2FkU3VpdGVzKGNvbmZpZywgYXJndik7XG4gICAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU3VpdGVzKGNvbmZpZywgYXJndikge1xuICAgIGlmIChjb25maWcuZnJhbWV3b3JrICYmIHR5cGVvZiBjb25maWcuZnJhbWV3b3JrID09PSAnc3RyaW5nJyAmJiBjb25maWcuZnJhbWV3b3JrLnRvTG93ZXJDYXNlKCkgIT09ICdveHlnZW4nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgeyB0YXJnZXQgfSA9IGNvbmZpZztcbiAgICBjb25zdCBpc0NvbmZpZ0ZpbGUgPSB0YXJnZXQgJiYgKFxuICAgICAgICAodGFyZ2V0Lm5hbWUgJiYgdGFyZ2V0Lm5hbWUuaW5kZXhPZihPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSkgPT09IDApXG4gICAgICAgIHx8ICh0YXJnZXQuZXh0ZW5zaW9uID09PSAnJyAmJiB0YXJnZXQuY29uZmlnUGF0aCAmJiB0YXJnZXQuY29uZmlnUGF0aC5pbmRleE9mKE9YWUdFTl9DT05GSUdfRklMRV9OQU1FKSA+IC0xKVxuICAgICk7XG4gICAgbGV0IHN1aXRlcyA9IFtdO1xuICAgIC8vIGlmIGFuIGluZGl2aWR1YWwgc2NyaXB0IG9yIHN1aXRlIGZpbGUgd2FzIHBhc3NlZFxuICAgIGlmICghaXNDb25maWdGaWxlKSB7XG4gICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmV4dGVuc2lvbiA9PT0gJy5qcycpIHtcbiAgICAgICAgICAgIHN1aXRlcy5wdXNoKGF3YWl0IG94dXRpbC5nZW5lcmF0ZVRlc3RTdWl0ZUZyb21KU0ZpbGUodGFyZ2V0LnBhdGgsIGNvbmZpZy5wYXJhbWV0ZXJzLmZpbGUsIGNvbmZpZy5wYXJhbWV0ZXJzLm1vZGUsIGZhbHNlLCBjb25maWcuaXRlcmF0aW9ucyB8fCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGFyZ2V0ICYmIHRhcmdldC5leHRlbnNpb24gPT09ICcuanNvbicpIHtcbiAgICAgICAgICAgIHN1aXRlcy5wdXNoKGF3YWl0IG94dXRpbC5nZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uRmlsZSh0YXJnZXQucGF0aCwgY29uZmlnLnBhcmFtZXRlcnMuZmlsZSwgY29uZmlnLnBhcmFtZXRlcnMubW9kZSwgY29uZmlnKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gaWYgYSBmb2xkZXIgb3IgYSBjb25maWd1cmF0aW9uIGZpbGUgd2FzIHBhc3NlZFxuICAgIGVsc2Uge1xuICAgICAgICBsZXQgc3VpdGVEZWZzID0gW107XG4gICAgICAgIGlmIChjb25maWcuc3VpdGVzICYmIEFycmF5LmlzQXJyYXkoY29uZmlnLnN1aXRlcykpIHtcbiAgICAgICAgICAgIHN1aXRlRGVmcyA9IGNvbmZpZy5zdWl0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2hlY2sgaWYgbW9yZSBzdWl0ZXMgYXJlIGRlZmluZWQgaW4gdGhlICdzdWl0ZXMnIGZvbGRlclxuICAgICAgICBjb25zdCBzdWl0ZXNGb2xkZXIgPSBwYXRoLmpvaW4odGFyZ2V0LmN3ZCwgJ3N1aXRlcycpO1xuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhzdWl0ZXNGb2xkZXIpKSB7XG4gICAgICAgICAgICBzdWl0ZURlZnMgPSBbXG4gICAgICAgICAgICAgICAgLi4uc3VpdGVEZWZzLFxuICAgICAgICAgICAgICAgIC4uLmxvYWRTdWl0ZURlZmluaXRpb25zRnJvbUZvbGRlcihzdWl0ZXNGb2xkZXIpXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIC8vIG1lcmdlIHN1aXRlcyBjb25maWd1cmVkIGluIHRoZSBwcm9qZWN0IGNvbmZpZyBmaWxlIGFuZCB0aG9zZSBmb3VuZCBpbiAnc3VpdGVzJyBmb2xkZXJcbiAgICAgICAgc3VpdGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoc3VpdGVEZWZzLm1hcChhc3luYyAoc3VpdGVEZWYpID0+IGF3YWl0IG94dXRpbC5nZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uKHN1aXRlRGVmLCBjb25maWcpKSk7XG4gICAgfVxuICAgIC8vIGZpbHRlciBvdXQgc3VpdGVzIGlmICctLXN1aXRlcycgY29tbWFuZCBsaW5lIGFyZ3VtZW50IHdhcyBzcGVjaWZpZWRcbiAgICBpZiAoYXJndi5zdWl0ZXMgJiYgdHlwZW9mIGFyZ3Yuc3VpdGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFN1aXRlTmFtZXMgPSBhcmd2LnN1aXRlcy5zcGxpdCgnLCcpO1xuICAgICAgICBzdWl0ZXMgPSBzdWl0ZXMuZmlsdGVyKHggPT4gc2VsZWN0ZWRTdWl0ZU5hbWVzLmluY2x1ZGVzKHgubmFtZSkpO1xuICAgIH1cbiAgICByZXR1cm4gc3VpdGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFN1aXRlRGVmaW5pdGlvbnNGcm9tRm9sZGVyKGZvbGRlclBhdGgpIHtcbiAgICBjb25zdCBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKGZvbGRlclBhdGgpO1xuICAgIGxldCBzdWl0ZURlZnMgPSBbXTtcbiAgICBmb3JFYWNoKGZpbGVzLCBmaWxlID0+IHtcbiAgICAgICAgaWYgKHBhdGguZXh0bmFtZShmaWxlKSA9PT0gJy5qc29uJykge1xuICAgICAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZm9sZGVyUGF0aCwgZmlsZSk7XG4gICAgICAgICAgICBzdWl0ZURlZnMucHVzaChtb2R1bGVSZXF1aXJlKGZ1bGxQYXRoKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc3VpdGVEZWZzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFnZU9iamVjdEZpbGVQYXRoKGNvbmZpZywgYXJndiA9IHt9KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gY29uZmlnLnRhcmdldCB8fCB7fTtcbiAgICBjb25zdCBwb0ZpbGVOYW1lID0gYXJndi5wbyB8fCBgJHtPWFlHRU5fUEFHRV9PQkpFQ1RfRklMRV9OQU1FfS5qc2A7XG4gICAgY29uc3QgY3dkID0gdGFyZ2V0LmN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgIGxldCBwb0ZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKGN3ZCwgcG9GaWxlTmFtZSk7XG4gICAgcG9GaWxlUGF0aCA9IGZzLmV4aXN0c1N5bmMocG9GaWxlUGF0aCkgPyBwb0ZpbGVQYXRoIDogbnVsbDtcblxuICAgIGlmIChwb0ZpbGVQYXRoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBtb2R1bGVSZXF1aXJlKHBvRmlsZVBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIHBvRmlsZVBhdGg7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgZmlsZTogJHtwb0ZpbGVQYXRofS4gUmVhc29uOiAke2UubWVzc2FnZX0gJHtlLnN0YWNrfWApO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudmlyb25tZW50VmFyaWFibGVzKGNvbmZpZywgYXJndikge1xuICAgIGNvbnN0IHRhcmdldCA9IGNvbmZpZy50YXJnZXQgfHwge307XG4gICAgY29uc3QgZW52TmFtZSA9IGFyZ3YuZW52IHx8IGNvbmZpZy5lbnZpcm9ubWVudCB8fCAnZGVmYXVsdCc7XG4gICAgY29uc3QgY3dkID0gdGFyZ2V0LmN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IGRlZmF1bHRFbnZGaWxlID0gcGF0aC5qb2luKGN3ZCwgYCR7T1hZR0VOX0VOVl9GSUxFX05BTUV9LmpzYCk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZGVmYXVsdEVudkZpbGUpKSB7XG4gICAgICAgIGNvbnN0IGVudiA9IG1vZHVsZVJlcXVpcmUoZGVmYXVsdEVudkZpbGUpO1xuICAgICAgICBpZiAoZW52ICYmIHR5cGVvZiBlbnYgPT09ICdvYmplY3QnICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlbnYsIGVudk5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZW52W2Vudk5hbWVdO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHRyeSB0byByZXNvbHZlIGEgZGVkaWNhdGVkIGVudmlyb25tZW50IGZpbGUgaW4gJ2Vudicgc3ViIGZvbGRlclxuICAgIGNvbnN0IGRlZGljYXRlZEVudkZpbGVKcyA9IHBhdGguam9pbihjd2QsICdlbnYnLCBgJHtlbnZOYW1lfS5qc2ApO1xuICAgIGNvbnN0IGRlZGljYXRlZEVudkZpbGVKc29uID0gcGF0aC5qb2luKGN3ZCwgJ2VudicsIGAke2Vudk5hbWV9Lmpzb25gKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhkZWRpY2F0ZWRFbnZGaWxlSnMpKSB7XG4gICAgICAgIHJldHVybiBtb2R1bGVSZXF1aXJlKGRlZGljYXRlZEVudkZpbGVKcyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGZzLmV4aXN0c1N5bmMoZGVkaWNhdGVkRW52RmlsZUpzb24pKSB7XG4gICAgICAgIHJldHVybiBtb2R1bGVSZXF1aXJlKGRlZGljYXRlZEVudkZpbGVKc29uKTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW52aXJvbm1lbnRzKHRhcmdldCkge1xuICAgIGxldCB0YXJnZXRDd2QgPSBudWxsO1xuXG4gICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuY3dkKSB7XG4gICAgICAgIHRhcmdldEN3ZCA9IHRhcmdldC5jd2Q7XG4gICAgfVxuXG4gICAgY29uc3QgY3dkID0gdGFyZ2V0Q3dkIHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3QgZGVmYXVsdEVudkZpbGUgPSBwYXRoLmpvaW4oY3dkLCBgJHtPWFlHRU5fRU5WX0ZJTEVfTkFNRX0uanNgKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhkZWZhdWx0RW52RmlsZSkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGVSZXF1aXJlKGRlZmF1bHRFbnZGaWxlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmaWxlOiAke2RlZmF1bHRFbnZGaWxlfS4gUmVhc29uOiAke2UubWVzc2FnZX0gJHtlLnN0YWNrfWApO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ3VyYXRpb25zKHRhcmdldCwgYXJndikge1xuICAgIC8vIHByb2Nlc3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuICAgIGxldCB0YXJnZXRDd2QgPSBudWxsO1xuXG4gICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuY3dkKSB7XG4gICAgICAgIHRhcmdldEN3ZCA9IHRhcmdldC5jd2Q7XG4gICAgfVxuICAgIGNvbnN0IERFRkFVTFRfT1BUUyA9IHtcbiAgICAgICAgY3dkOiB0YXJnZXQgPyAodGFyZ2V0Q3dkIHx8IHByb2Nlc3MuY3dkKCkpIDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICAgIGJyb3dzZXJOYW1lOiAnY2hyb21lJyxcbiAgICAgICAgc2VsZW5pdW1VcmwgOiAnaHR0cDovL2xvY2FsaG9zdDo0NDQ0L3dkL2h1YicsXG4gICAgICAgIGFwcGl1bVVybCA6ICdodHRwOi8vbG9jYWxob3N0OjQ3MjMvd2QvaHViJyxcbiAgICAgICAgcmVvcGVuU2Vzc2lvbjogZmFsc2UsXG4gICAgICAgIHJlUnVuT25GYWlsZWQ6IGZhbHNlLFxuICAgICAgICBpdGVyYXRpb25zIDogMSxcbiAgICAgICAgZGVidWdQb3J0OiBudWxsLFxuICAgICAgICBkZWxheTogbnVsbCxcbiAgICAgICAgY29sbGVjdERldmljZUxvZ3M6IGZhbHNlLFxuICAgICAgICBjb2xsZWN0QXBwaXVtTG9nczogZmFsc2UsXG4gICAgICAgIGNvbGxlY3RCcm93c2VyTG9nczogZmFsc2UsXG4gICAgICAgIHJlcG9ydGluZzoge1xuICAgICAgICAgICAgcmVwb3J0ZXJzOiBbREVGQVVMVF9SRVBPUlRFUl1cbiAgICAgICAgfSxcbiAgICAgICAgcGFyYW1ldGVycyA6IHtcbiAgICAgICAgICAgIGZpbGU6IG51bGwsXG4gICAgICAgICAgICBtb2RlOiAnc2VxJ1xuICAgICAgICB9LFxuICAgIH07XG4gICAgLy8gcmV0cmlldmUgb3B0aW9ucyBwcm92aWRlZCB2aWEgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuICAgIGNvbnN0IGNtZE9wdHMgPSBnZXRDb21tYW5kTGluZU9wdGlvbnMoYXJndik7XG4gICAgLy8gaWYgdGhlIHRhcmdldCBpcyBveHlnZW4gY29uZmlnIGZpbGUsIG1lcmdlIGl0cyBjb250ZW50IHdpdGggdGhlIGRlZmF1bHQgb3B0aW9uc1xuICAgIGxldCBwcm9qQ29uZmlnT3B0cyA9IHt9O1xuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0Lm5hbWUgPT09IE9YWUdFTl9DT05GSUdfRklMRV9OQU1FICYmICh0YXJnZXQuZXh0ZW5zaW9uID09PSAnLmpzJyB8fCB0YXJnZXQuZXh0ZW5zaW9uID09PSAnLmpzb24nKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvakNvbmZpZ09wdHMgPSBtb2R1bGVSZXF1aXJlKHRhcmdldC5wYXRoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmaWxlOiAke3RhcmdldC5wYXRofS4gUmVhc29uOiAke2UubWVzc2FnZX0gJHtlLnN0YWNrfWApO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHRhcmdldCAmJiB0YXJnZXQuY29uZmlnUGF0aCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvakNvbmZpZ09wdHMgPSBtb2R1bGVSZXF1aXJlKHRhcmdldC5jb25maWdQYXRoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmaWxlOiAke3RhcmdldC5jb25maWdQYXRofS4gUmVhc29uOiAke2UubWVzc2FnZX0gJHtlLnN0YWNrfWApO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGVudnMgPSBnZXRFbnZpcm9ubWVudHModGFyZ2V0KTtcblxuICAgIGlmIChwcm9qQ29uZmlnT3B0cy5lbnZzKSB7XG4gICAgICAgIC8vIG1lcmdlIGV4dGVybmFsIGVudmlyb25tZW50cyBkZWZpbml0aW9uIHdpdGggdGhlIG9uZSBpbiB0aGUgY29uZmlnIGZpbGVcbiAgICAgICAgcHJvakNvbmZpZ09wdHMuZW52cyA9IHsgLi4ucHJvakNvbmZpZ09wdHMuZW52cywgLi4uZW52cyB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcHJvakNvbmZpZ09wdHMgPSB7IC4uLnByb2pDb25maWdPcHRzLCBlbnZzOiBlbnZzIH07XG4gICAgfVxuICAgIC8vIG1ha2Ugc3VyZSB0byBzZXQgZGVmYXVsdCBIVE1MIHJlcG9ydGVyIGlmIHJlcG9ydGluZyBvcHRpb25zIGFyZSBub3QgcHJvdmlkZWQgaW4gb3h5Z2VuLmNvbmYgZmlsZSBhbmQgdmlhIGNvbW1hbmQgbGluZVxuICAgIGNvbnN0IGlzQ21kT3B0c1JlcG9ydEZvcm1hdCA9IGNtZE9wdHMucmVwb3J0aW5nICYmIGNtZE9wdHMucmVwb3J0aW5nLnJlcG9ydGVycztcbiAgICBjb25zdCBpc0NvbmZpZ1JlcG9ydEZvcm1hdCA9IHByb2pDb25maWdPcHRzLnJlcG9ydGluZyAmJiBwcm9qQ29uZmlnT3B0cy5yZXBvcnRpbmcucmVwb3J0ZXJzO1xuICAgIGlmICghaXNDbWRPcHRzUmVwb3J0Rm9ybWF0ICYmICFpc0NvbmZpZ1JlcG9ydEZvcm1hdCkge1xuICAgICAgICBpZiAoIXByb2pDb25maWdPcHRzLnJlcG9ydGluZykge1xuICAgICAgICAgICAgcHJvakNvbmZpZ09wdHMucmVwb3J0aW5nID0ge307XG4gICAgICAgIH1cbiAgICAgICAgcHJvakNvbmZpZ09wdHMucmVwb3J0aW5nLnJlcG9ydGVycyA9IFtERUZBVUxUX1JFUE9SVEVSXTtcbiAgICB9XG4gICAgLy8gZGV0ZXJtaW5lIHRlc3QgbmFtZVxuICAgIGxldCBuYW1lID0gY21kT3B0cy5uYW1lIHx8IHByb2pDb25maWdPcHRzLm5hbWUgfHwgbnVsbDtcbiAgICBpZiAoIW5hbWUgJiYgdGFyZ2V0KSB7XG4gICAgICAgIG5hbWUgPSB0YXJnZXQubmFtZSAhPT0gT1hZR0VOX0NPTkZJR19GSUxFX05BTUUgPyB0YXJnZXQubmFtZSA6IHRhcmdldC5iYXNlTmFtZTtcbiAgICB9XG4gICAgLy8gbWVyZ2Ugb3B0aW9ucyBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBvcmRlciAodGhlIGxhc3Qgb25lIG92ZXJyaWRlcyB0aGUgcHJldmlvdXMgb25lKTpcbiAgICAvLyBkZWZhdWx0IG9wdGlvbnMsIHByb2plY3QgY29uZmlnIGZpbGUsIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcbiAgICByZXR1cm4geyAuLi5ERUZBVUxUX09QVFMsIC4uLnByb2pDb25maWdPcHRzLCAuLi5jbWRPcHRzLCBuYW1lOiBuYW1lIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tYW5kTGluZU9wdGlvbnMoYXJndikge1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICAgIC8vIHN3aXRjaDogLS1uYW1lIFxuICAgICAgICBuYW1lOiBhcmd2Lm5hbWUgfHwgbnVsbCxcbiAgICAgICAgLy8gc3dpdGNoOiAtYiBvciAtLWJyb3dzZXJcbiAgICAgICAgYnJvd3Nlck5hbWUgOiBhcmd2LmIgfHwgYXJndi5icm93c2VyIHx8IG51bGwsXG4gICAgICAgIHNlbGVuaXVtVXJsIDogYXJndi5zIHx8IGFyZ3Yuc2VydmVyIHx8IG51bGwsXG4gICAgICAgIGFwcGl1bVVybCA6IGFyZ3YucyB8fCBhcmd2LnNlcnZlciB8fCBudWxsLFxuICAgICAgICByZW9wZW5TZXNzaW9uOiBhcmd2LnJlb3BlbiA/IGFyZ3YucmVvcGVuID09PSAndHJ1ZScgOiBudWxsLFxuICAgICAgICBpdGVyYXRpb25zIDogYXJndi5pID8gcGFyc2VJbnQoYXJndi5pKSA6IChhcmd2Lml0ZXIgPyBwYXJzZUludChhcmd2Lml0ZXIpIDogbnVsbCksXG4gICAgICAgIGRlYnVnUG9ydDogYXJndi5kYmdwb3J0IHx8IG51bGwsXG4gICAgICAgIHdzUG9ydDogYXJndi53c3BvcnQgfHwgbnVsbCxcbiAgICAgICAgZGVsYXk6IGFyZ3YuZCB8fCBhcmd2LmRlbGF5IHx8IG51bGwsXG4gICAgfTtcbiAgICAvLyBzd2l0Y2g6IC0tcmYgZmxhZ1xuICAgIGlmIChhcmd2LnJmICYmIHR5cGVvZiBhcmd2LnJmID09PSAnc3RyaW5nJyAmJiBhcmd2LnJmLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgcmVwb3J0Rm9ybWF0cyA9IGFyZ3YucmYuc3BsaXQoJywnKTtcbiAgICAgICAgb3B0cy5yZXBvcnRpbmcgPSB7XG4gICAgICAgICAgICByZXBvcnRlcnM6IHJlcG9ydEZvcm1hdHNcbiAgICAgICAgfTtcbiAgICAgICAgLy8gc3dpdGNoOiAtLXJvIC0gc2V0IHJlcG9ydGVyIG91dHB1dCBkaXJlY3RvcnkgaWYgc2V0IGJ5IHVzZXIgdGhyb3VnaCBjb21uYW5kIGxpbmVcbiAgICAgICAgLy8gTk9URTogLS1ybyBzd2l0Y2ggbXVzdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCAtLXJmXG4gICAgICAgIGlmIChhcmd2LnJvICYmIHR5cGVvZiBhcmd2LnJvID09PSAnc3RyaW5nJyAmJiBhcmd2LnJvLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIG9wdHMucmVwb3J0aW5nLm91dHB1dERpciA9IGFyZ3Yucm87XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gb3B0aW9uOiAtcCBvciAtLXBhcmFtIGFuZCAtLXBtXG4gICAgaWYgKGFyZ3YucCB8fCBhcmd2LnBhcmFtKSB7XG4gICAgICAgIG9wdHMucGFyYW1ldGVycyA9IHtcbiAgICAgICAgICAgIGZpbGU6IGFyZ3YucCB8fCBhcmd2LnBhcmFtIHx8IG51bGwsXG4gICAgICAgICAgICBtb2RlOiBhcmd2LnBtIHx8ICdzZXEnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gc3dpdGNoOiAtLXNwZWNzIC0gc2V0IHNwZWNzIGlmIHNldCBieSB1c2VyIHRocm91Z2ggY29tbmFuZCBsaW5lXG4gICAgaWYgKGFyZ3Yuc3BlY3MgJiYgdHlwZW9mIGFyZ3Yuc3BlY3MgPT09ICdzdHJpbmcnICYmIGFyZ3Yuc3BlY3MubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBzcGVjcyA9IGFyZ3Yuc3BlY3Muc3BsaXQoJywnKTtcbiAgICAgICAgb3B0cy5zcGVjcyA9IHNwZWNzO1xuICAgIH1cbiAgICAvLyBzd2l0Y2g6IC0tbW9kdWxlcyAtIHNldCBhIGxpc3Qgb2YgbW9kdWxlcyB0byBiZSBsb2FkZWQsIGlmIHNldCBieSB1c2VyIHRocm91Z2ggY29tbmFuZCBsaW5lXG4gICAgaWYgKGFyZ3YubW9kdWxlcyAmJiB0eXBlb2YgYXJndi5tb2R1bGVzID09PSAnc3RyaW5nJyAmJiBhcmd2Lm1vZHVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBtb2R1bGVzID0gYXJndi5tb2R1bGVzLnNwbGl0KCcsJyk7XG4gICAgICAgIG9wdHMubW9kdWxlcyA9IG1vZHVsZXM7XG4gICAgfVxuICAgIC8vIHJlbW92ZSBhbnkgcHJvcGVydHkgd2l0aCBudWxsIHZhbHVlIChzbyBpdCB3b24ndCBvdmVycmlkZSBkZWZhdWx0IHZhbHVlcyBpZiBpdCdzIG51bGwpXG4gICAgcmV0dXJuIGRlbGV0ZU51bGxQcm9wZXJ0aWVzKG9wdHMpO1xufVxuXG5mdW5jdGlvbiBkZWxldGVOdWxsUHJvcGVydGllcyhvYmopIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgY29uc3QgY2xvbmUgPSB7IC4uLm9iaiB9O1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIGZvckVhY2ggKGtleXMsIGtleSA9PiB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpICYmIChvYmpba2V5XSA9PSBudWxsIHx8IG9ialtrZXldID09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjbG9uZVtrZXldO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNsb25lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1RhcmdldFBhdGgodGFyZ2V0UGF0aCwgdXNlckN3ZCkge1xuICAgIGxldCBjd2QgPSB1c2VyQ3dkIHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgLy8gZ2V0IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaWYgdXNlciBoYXMgbm90IHByb3ZpZGVkIHBhdGhcbiAgICBpZiAodHlwZW9mKHRhcmdldFBhdGgpID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0YXJnZXRQYXRoID0gY3dkO1xuICAgIH1cbiAgICAvLyB1c2VyJ3MgcGF0aCBtaWdodCBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAtIG1ha2Ugc3VyZSB0aGUgcmVsYXRpdmUgcGF0aCB3aWxsIHdvcmtcbiAgICBlbHNlIHtcbiAgICAgICAgdGFyZ2V0UGF0aCA9IG94dXRpbC5yZXNvbHZlUGF0aCh0YXJnZXRQYXRoLCBjd2QpO1xuICAgIH1cblxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0YXJnZXRQYXRoKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0cyA9IGZzLmxzdGF0U3luYyh0YXJnZXRQYXRoKTtcbiAgICBjb25zdCBpc0RpcmVjdG9yID0gc3RhdHMuaXNEaXJlY3RvcnkoKTtcbiAgICBsZXQgY29uZmlnRmlsZVBhdGg7XG4gICAgaWYgKGlzRGlyZWN0b3IpIHtcbiAgICAgICAgLy8gaWYgXCJ0YXJnZXRcIiBwcm92aWRlZCBieSB0aGUgdXNlciBpcyBhIGRpcmVjdG9yeSxcbiAgICAgICAgLy8gdGhlbiB1bmxlc3MgXCJjd2RcIiBpcyBwcm92aWRlZCBleHBsaWNpdGx5IGJ5IHRoZSB1c2VyXG4gICAgICAgIC8vIHVzZSB0YXJnZXQgZGlyZWN0b3J5IGFzIGN3ZFxuICAgICAgICBjd2QgPSB1c2VyQ3dkIHx8IHRhcmdldFBhdGg7XG4gICAgICAgIC8vIGFwcGVuZCBveHlnZW4gY29uZmlnIGZpbGUgbmFtZSB0byB0aGUgZGlyZWN0b3J5LCBpZiBubyB0ZXN0IGNhc2UgZmlsZSB3YXMgcHJvdmlkZWRcbiAgICAgICAgY29uZmlnRmlsZVBhdGggPSBwYXRoLmpvaW4odGFyZ2V0UGF0aCwgT1hZR0VOX0NPTkZJR19GSUxFX05BTUUgKyAnLmpzJyk7XG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhjb25maWdGaWxlUGF0aCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ0ZpbGVQYXRoID0gcGF0aC5qb2luKHRhcmdldFBhdGgsIE9YWUdFTl9DT05GSUdfRklMRV9OQU1FICsgJy5qc29uJyk7XG4gICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodGFyZ2V0UGF0aC5lbmRzV2l0aChPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSArICcuanMnKSB8fCB0YXJnZXRQYXRoLmVuZHNXaXRoKE9YWUdFTl9DT05GSUdfRklMRV9OQU1FICsgJy5qc29uJykpIHtcbiAgICAgICAgY29uZmlnRmlsZVBhdGggPSB0YXJnZXRQYXRoO1xuICAgICAgICBjd2QgPSB0YXJnZXRQYXRoID0gcGF0aC5kaXJuYW1lKHRhcmdldFBhdGgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY3dkID0gdXNlckN3ZCB8fCBwYXRoLmRpcm5hbWUodGFyZ2V0UGF0aCk7XG4gICAgICAgIGNvbmZpZ0ZpbGVQYXRoID0gcGF0aC5qb2luKGN3ZCwgT1hZR0VOX0NPTkZJR19GSUxFX05BTUUgKyAnLmpzJyk7XG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhjb25maWdGaWxlUGF0aCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ0ZpbGVQYXRoID0gcGF0aC5qb2luKGN3ZCwgT1hZR0VOX0NPTkZJR19GSUxFX05BTUUgKyAnLmpzb24nKTtcbiAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhjb25maWdGaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICBjb25maWdGaWxlUGF0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXRhcmdldFBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIC8vIHBhdGggdG8gdGhlIGNvbmZpZyBvciAuanMgZmlsZVxuICAgICAgICBwYXRoOiB0YXJnZXRQYXRoLFxuICAgICAgICBjb25maWdQYXRoOiBjb25maWdGaWxlUGF0aCxcbiAgICAgICAgLy8gd29ya2luZyBkaXJlY3RvcnlcbiAgICAgICAgY3dkOiBjd2QgfHwgcGF0aC5kaXJuYW1lKHRhcmdldFBhdGgpLFxuICAgICAgICAvLyBuYW1lIG9mIHRoZSB0YXJnZXQgZmlsZSB3aXRob3V0IGV4dGVuc2lvblxuICAgICAgICBuYW1lOiBveHV0aWwuZ2V0RmlsZU5hbWVXaXRob3V0RXh0KHRhcmdldFBhdGgpLFxuICAgICAgICAvLyBuYW1lIGluY2x1ZGluZyBleHRlbnNpb25cbiAgICAgICAgZnVsbE5hbWU6IHBhdGguYmFzZW5hbWUodGFyZ2V0UGF0aCksXG4gICAgICAgIC8vIHBhcmVudCBmb2xkZXIncyBuYW1lXG4gICAgICAgIGJhc2VOYW1lOiBwYXRoLmJhc2VuYW1lKHBhdGguZGlybmFtZSh0YXJnZXRQYXRoKSksXG4gICAgICAgIC8vIHRhcmdldCBmaWxlIGV4dGVuc2lvblxuICAgICAgICBleHRlbnNpb246IHBhdGguZXh0bmFtZSh0YXJnZXRQYXRoKVxuICAgIH07XG59Il19
|
|
380
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLXV0aWwuanMiXSwibmFtZXMiOlsiT1hZR0VOX0NPTkZJR19GSUxFX05BTUUiLCJPWFlHRU5fRU5WX0ZJTEVfTkFNRSIsIk9YWUdFTl9QQUdFX09CSkVDVF9GSUxFX05BTUUiLCJERUZBVUxUX1JFUE9SVEVSIiwiZ2VuZXJhdGVUZXN0T3B0aW9ucyIsImNvbmZpZyIsImFyZ3YiLCJvcHRpb25zIiwiZW52IiwibG9hZEVudmlyb25tZW50VmFyaWFibGVzIiwicG8iLCJnZXRQYWdlT2JqZWN0RmlsZVBhdGgiLCJzdWl0ZXMiLCJsb2FkU3VpdGVzIiwiZnJhbWV3b3JrIiwidG9Mb3dlckNhc2UiLCJ0YXJnZXQiLCJpc0NvbmZpZ0ZpbGUiLCJuYW1lIiwiaW5kZXhPZiIsImV4dGVuc2lvbiIsImNvbmZpZ1BhdGgiLCJwdXNoIiwib3h1dGlsIiwiZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSlNGaWxlIiwicGF0aCIsInBhcmFtZXRlcnMiLCJmaWxlIiwibW9kZSIsIml0ZXJhdGlvbnMiLCJnZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uRmlsZSIsInN1aXRlRGVmcyIsIkFycmF5IiwiaXNBcnJheSIsInN1aXRlc0ZvbGRlciIsImpvaW4iLCJjd2QiLCJmcyIsImV4aXN0c1N5bmMiLCJsb2FkU3VpdGVEZWZpbml0aW9uc0Zyb21Gb2xkZXIiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwic3VpdGVEZWYiLCJnZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uIiwic2VsZWN0ZWRTdWl0ZU5hbWVzIiwic3BsaXQiLCJmaWx0ZXIiLCJ4IiwiaW5jbHVkZXMiLCJmb2xkZXJQYXRoIiwiZmlsZXMiLCJyZWFkZGlyU3luYyIsImV4dG5hbWUiLCJmdWxsUGF0aCIsInBvRmlsZU5hbWUiLCJwcm9jZXNzIiwicG9GaWxlUGF0aCIsInJlc29sdmUiLCJlIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwic3RhY2siLCJlbnZOYW1lIiwiZW52aXJvbm1lbnQiLCJkZWZhdWx0RW52RmlsZSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlZGljYXRlZEVudkZpbGVKcyIsImRlZGljYXRlZEVudkZpbGVKc29uIiwiZ2V0RW52aXJvbm1lbnRzIiwidGFyZ2V0Q3dkIiwiZ2V0Q29uZmlndXJhdGlvbnMiLCJERUZBVUxUX09QVFMiLCJicm93c2VyTmFtZSIsInNlbGVuaXVtVXJsIiwiYXBwaXVtVXJsIiwicmVvcGVuU2Vzc2lvbiIsInJlUnVuT25GYWlsZWQiLCJkZWJ1Z1BvcnQiLCJkZWxheSIsImNvbGxlY3REZXZpY2VMb2dzIiwiY29sbGVjdEFwcGl1bUxvZ3MiLCJjb2xsZWN0QnJvd3NlckxvZ3MiLCJyZXBvcnRpbmciLCJyZXBvcnRlcnMiLCJjbWRPcHRzIiwiZ2V0Q29tbWFuZExpbmVPcHRpb25zIiwicHJvakNvbmZpZ09wdHMiLCJlbnZzIiwiaXNDbWRPcHRzUmVwb3J0Rm9ybWF0IiwiaXNDb25maWdSZXBvcnRGb3JtYXQiLCJiYXNlTmFtZSIsIm9wdHMiLCJiIiwiYnJvd3NlciIsInMiLCJzZXJ2ZXIiLCJyZW9wZW4iLCJpIiwicGFyc2VJbnQiLCJpdGVyIiwiZGJncG9ydCIsIndzUG9ydCIsIndzcG9ydCIsImQiLCJyZiIsImxlbmd0aCIsInJlcG9ydEZvcm1hdHMiLCJybyIsIm91dHB1dERpciIsInAiLCJwYXJhbSIsInBtIiwic3BlY3MiLCJtb2R1bGVzIiwiZGVsZXRlTnVsbFByb3BlcnRpZXMiLCJvYmoiLCJjbG9uZSIsImtleXMiLCJrZXkiLCJ1bmRlZmluZWQiLCJwcm9jZXNzVGFyZ2V0UGF0aCIsInRhcmdldFBhdGgiLCJ1c2VyQ3dkIiwicmVzb2x2ZVBhdGgiLCJzdGF0cyIsImxzdGF0U3luYyIsImlzRGlyZWN0b3IiLCJpc0RpcmVjdG9yeSIsImNvbmZpZ0ZpbGVQYXRoIiwiZW5kc1dpdGgiLCJkaXJuYW1lIiwiZ2V0RmlsZU5hbWVXaXRob3V0RXh0IiwiZnVsbE5hbWUiLCJiYXNlbmFtZSJdLCJtYXBwaW5ncyI6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RUFBRUssY0FBSzRCLE9BQUwsQ0FBYXlFLFVBQWI7QUFiUixHQUFQO0FBZUgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcclxuaW1wb3J0IGZzIGZyb20gJ2ZzJztcclxuaW1wb3J0IG94dXRpbCBmcm9tICcuL3V0aWwnO1xyXG5pbXBvcnQgeyBmb3JFYWNoIH0gZnJvbSAnYXN5bmMnO1xyXG5pbXBvcnQgbW9kdWxlUmVxdWlyZSBmcm9tICcuL21vZHVsZVJlcXVpcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9YWUdFTl9DT05GSUdfRklMRV9OQU1FID0gJ294eWdlbi5jb25mJztcclxuZXhwb3J0IGNvbnN0IE9YWUdFTl9FTlZfRklMRV9OQU1FID0gJ294eWdlbi5lbnYnO1xyXG5leHBvcnQgY29uc3QgT1hZR0VOX1BBR0VfT0JKRUNUX0ZJTEVfTkFNRSA9ICdveHlnZW4ucG8nO1xyXG5leHBvcnQgY29uc3QgREVGQVVMVF9SRVBPUlRFUiA9ICdodG1sJztcclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVRlc3RPcHRpb25zKGNvbmZpZywgYXJndikge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4uY29uZmlnIH07XHJcbiAgICBvcHRpb25zLmVudiA9IGxvYWRFbnZpcm9ubWVudFZhcmlhYmxlcyhjb25maWcsIGFyZ3YpO1xyXG4gICAgb3B0aW9ucy5wbyA9IGdldFBhZ2VPYmplY3RGaWxlUGF0aChjb25maWcsIGFyZ3YpO1xyXG4gICAgb3B0aW9ucy5zdWl0ZXMgPSBhd2FpdCBsb2FkU3VpdGVzKGNvbmZpZywgYXJndik7XHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRTdWl0ZXMoY29uZmlnLCBhcmd2KSB7XHJcbiAgICBpZiAoY29uZmlnLmZyYW1ld29yayAmJiB0eXBlb2YgY29uZmlnLmZyYW1ld29yayA9PT0gJ3N0cmluZycgJiYgY29uZmlnLmZyYW1ld29yay50b0xvd2VyQ2FzZSgpICE9PSAnb3h5Z2VuJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBjb25maWc7XHJcbiAgICBjb25zdCBpc0NvbmZpZ0ZpbGUgPSB0YXJnZXQgJiYgKFxyXG4gICAgICAgICh0YXJnZXQubmFtZSAmJiB0YXJnZXQubmFtZS5pbmRleE9mKE9YWUdFTl9DT05GSUdfRklMRV9OQU1FKSA9PT0gMClcclxuICAgICAgICB8fCAodGFyZ2V0LmV4dGVuc2lvbiA9PT0gJycgJiYgdGFyZ2V0LmNvbmZpZ1BhdGggJiYgdGFyZ2V0LmNvbmZpZ1BhdGguaW5kZXhPZihPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSkgPiAtMSlcclxuICAgICk7XHJcbiAgICBsZXQgc3VpdGVzID0gW107XHJcbiAgICAvLyBpZiBhbiBpbmRpdmlkdWFsIHNjcmlwdCBvciBzdWl0ZSBmaWxlIHdhcyBwYXNzZWRcclxuICAgIGlmICghaXNDb25maWdGaWxlKSB7XHJcbiAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQuZXh0ZW5zaW9uID09PSAnLmpzJykge1xyXG4gICAgICAgICAgICBzdWl0ZXMucHVzaChhd2FpdCBveHV0aWwuZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSlNGaWxlKHRhcmdldC5wYXRoLCBjb25maWcucGFyYW1ldGVycy5maWxlLCBjb25maWcucGFyYW1ldGVycy5tb2RlLCBmYWxzZSwgY29uZmlnLml0ZXJhdGlvbnMgfHwgMSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmV4dGVuc2lvbiA9PT0gJy5qc29uJykge1xyXG4gICAgICAgICAgICBzdWl0ZXMucHVzaChhd2FpdCBveHV0aWwuZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbkZpbGUodGFyZ2V0LnBhdGgsIGNvbmZpZy5wYXJhbWV0ZXJzLmZpbGUsIGNvbmZpZy5wYXJhbWV0ZXJzLm1vZGUsIGNvbmZpZykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGlmIGEgZm9sZGVyIG9yIGEgY29uZmlndXJhdGlvbiBmaWxlIHdhcyBwYXNzZWRcclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBzdWl0ZURlZnMgPSBbXTtcclxuICAgICAgICBpZiAoY29uZmlnLnN1aXRlcyAmJiBBcnJheS5pc0FycmF5KGNvbmZpZy5zdWl0ZXMpKSB7XHJcbiAgICAgICAgICAgIHN1aXRlRGVmcyA9IGNvbmZpZy5zdWl0ZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNoZWNrIGlmIG1vcmUgc3VpdGVzIGFyZSBkZWZpbmVkIGluIHRoZSAnc3VpdGVzJyBmb2xkZXJcclxuICAgICAgICBjb25zdCBzdWl0ZXNGb2xkZXIgPSBwYXRoLmpvaW4odGFyZ2V0LmN3ZCwgJ3N1aXRlcycpO1xyXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHN1aXRlc0ZvbGRlcikpIHtcclxuICAgICAgICAgICAgc3VpdGVEZWZzID0gW1xyXG4gICAgICAgICAgICAgICAgLi4uc3VpdGVEZWZzLFxyXG4gICAgICAgICAgICAgICAgLi4ubG9hZFN1aXRlRGVmaW5pdGlvbnNGcm9tRm9sZGVyKHN1aXRlc0ZvbGRlcilcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbWVyZ2Ugc3VpdGVzIGNvbmZpZ3VyZWQgaW4gdGhlIHByb2plY3QgY29uZmlnIGZpbGUgYW5kIHRob3NlIGZvdW5kIGluICdzdWl0ZXMnIGZvbGRlclxyXG4gICAgICAgIHN1aXRlcyA9IGF3YWl0IFByb21pc2UuYWxsKHN1aXRlRGVmcy5tYXAoYXN5bmMgKHN1aXRlRGVmKSA9PiBhd2FpdCBveHV0aWwuZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbihzdWl0ZURlZiwgY29uZmlnKSkpO1xyXG4gICAgfVxyXG4gICAgLy8gZmlsdGVyIG91dCBzdWl0ZXMgaWYgJy0tc3VpdGVzJyBjb21tYW5kIGxpbmUgYXJndW1lbnQgd2FzIHNwZWNpZmllZFxyXG4gICAgaWYgKGFyZ3Yuc3VpdGVzICYmIHR5cGVvZiBhcmd2LnN1aXRlcyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZFN1aXRlTmFtZXMgPSBhcmd2LnN1aXRlcy5zcGxpdCgnLCcpO1xyXG4gICAgICAgIHN1aXRlcyA9IHN1aXRlcy5maWx0ZXIoeCA9PiBzZWxlY3RlZFN1aXRlTmFtZXMuaW5jbHVkZXMoeC5uYW1lKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VpdGVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFN1aXRlRGVmaW5pdGlvbnNGcm9tRm9sZGVyKGZvbGRlclBhdGgpIHtcclxuICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMoZm9sZGVyUGF0aCk7XHJcbiAgICBsZXQgc3VpdGVEZWZzID0gW107XHJcbiAgICBmb3JFYWNoKGZpbGVzLCBmaWxlID0+IHtcclxuICAgICAgICBpZiAocGF0aC5leHRuYW1lKGZpbGUpID09PSAnLmpzb24nKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGZvbGRlclBhdGgsIGZpbGUpO1xyXG4gICAgICAgICAgICBzdWl0ZURlZnMucHVzaChtb2R1bGVSZXF1aXJlKGZ1bGxQYXRoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3VpdGVEZWZzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFnZU9iamVjdEZpbGVQYXRoKGNvbmZpZywgYXJndiA9IHt9KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBjb25maWcudGFyZ2V0IHx8IHt9O1xyXG4gICAgY29uc3QgcG9GaWxlTmFtZSA9IGFyZ3YucG8gfHwgYCR7T1hZR0VOX1BBR0VfT0JKRUNUX0ZJTEVfTkFNRX0uanNgO1xyXG4gICAgY29uc3QgY3dkID0gdGFyZ2V0LmN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xyXG4gICAgbGV0IHBvRmlsZVBhdGggPSBwYXRoLnJlc29sdmUoY3dkLCBwb0ZpbGVOYW1lKTtcclxuICAgIHBvRmlsZVBhdGggPSBmcy5leGlzdHNTeW5jKHBvRmlsZVBhdGgpID8gcG9GaWxlUGF0aCA6IG51bGw7XHJcblxyXG4gICAgaWYgKHBvRmlsZVBhdGgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBtb2R1bGVSZXF1aXJlKHBvRmlsZVBhdGgpO1xyXG4gICAgICAgICAgICByZXR1cm4gcG9GaWxlUGF0aDtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgZmlsZTogJHtwb0ZpbGVQYXRofS4gUmVhc29uOiAke2UubWVzc2FnZX0gJHtlLnN0YWNrfWApO1xyXG4gICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRFbnZpcm9ubWVudFZhcmlhYmxlcyhjb25maWcsIGFyZ3YpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGNvbmZpZy50YXJnZXQgfHwge307XHJcbiAgICBjb25zdCBlbnZOYW1lID0gYXJndi5lbnYgfHwgY29uZmlnLmVudmlyb25tZW50IHx8ICdkZWZhdWx0JztcclxuICAgIGNvbnN0IGN3ZCA9IHRhcmdldC5jd2QgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRFbnZGaWxlID0gcGF0aC5qb2luKGN3ZCwgYCR7T1hZR0VOX0VOVl9GSUxFX05BTUV9LmpzYCk7XHJcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhkZWZhdWx0RW52RmlsZSkpIHtcclxuICAgICAgICBjb25zdCBlbnYgPSBtb2R1bGVSZXF1aXJlKGRlZmF1bHRFbnZGaWxlKTtcclxuICAgICAgICBpZiAoZW52ICYmIHR5cGVvZiBlbnYgPT09ICdvYmplY3QnICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlbnYsIGVudk5hbWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbnZbZW52TmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdHJ5IHRvIHJlc29sdmUgYSBkZWRpY2F0ZWQgZW52aXJvbm1lbnQgZmlsZSBpbiAnZW52JyBzdWIgZm9sZGVyXHJcbiAgICBjb25zdCBkZWRpY2F0ZWRFbnZGaWxlSnMgPSBwYXRoLmpvaW4oY3dkLCAnZW52JywgYCR7ZW52TmFtZX0uanNgKTtcclxuICAgIGNvbnN0IGRlZGljYXRlZEVudkZpbGVKc29uID0gcGF0aC5qb2luKGN3ZCwgJ2VudicsIGAke2Vudk5hbWV9Lmpzb25gKTtcclxuICAgIGlmIChmcy5leGlzdHNTeW5jKGRlZGljYXRlZEVudkZpbGVKcykpIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlUmVxdWlyZShkZWRpY2F0ZWRFbnZGaWxlSnMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZnMuZXhpc3RzU3luYyhkZWRpY2F0ZWRFbnZGaWxlSnNvbikpIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlUmVxdWlyZShkZWRpY2F0ZWRFbnZGaWxlSnNvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge307XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnZpcm9ubWVudHModGFyZ2V0KSB7XHJcbiAgICBsZXQgdGFyZ2V0Q3dkID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5jd2QpIHtcclxuICAgICAgICB0YXJnZXRDd2QgPSB0YXJnZXQuY3dkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN3ZCA9IHRhcmdldEN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xyXG4gICAgY29uc3QgZGVmYXVsdEVudkZpbGUgPSBwYXRoLmpvaW4oY3dkLCBgJHtPWFlHRU5fRU5WX0ZJTEVfTkFNRX0uanNgKTtcclxuICAgIGlmIChmcy5leGlzdHNTeW5jKGRlZmF1bHRFbnZGaWxlKSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGVSZXF1aXJlKGRlZmF1bHRFbnZGaWxlKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgZmlsZTogJHtkZWZhdWx0RW52RmlsZX0uIFJlYXNvbjogJHtlLm1lc3NhZ2V9ICR7ZS5zdGFja31gKTtcclxuICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7fTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ3VyYXRpb25zKHRhcmdldCwgYXJndikge1xyXG4gICAgLy8gcHJvY2VzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzXHJcbiAgICBsZXQgdGFyZ2V0Q3dkID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5jd2QpIHtcclxuICAgICAgICB0YXJnZXRDd2QgPSB0YXJnZXQuY3dkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgREVGQVVMVF9PUFRTID0ge1xyXG4gICAgICAgIGN3ZDogdGFyZ2V0ID8gKHRhcmdldEN3ZCB8fCBwcm9jZXNzLmN3ZCgpKSA6IHByb2Nlc3MuY3dkKCksXHJcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXHJcbiAgICAgICAgYnJvd3Nlck5hbWU6ICdjaHJvbWUnLFxyXG4gICAgICAgIHNlbGVuaXVtVXJsIDogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDQ0NC93ZC9odWInLFxyXG4gICAgICAgIGFwcGl1bVVybCA6ICdodHRwOi8vbG9jYWxob3N0OjQ3MjMvd2QvaHViJyxcclxuICAgICAgICByZW9wZW5TZXNzaW9uOiBmYWxzZSxcclxuICAgICAgICByZVJ1bk9uRmFpbGVkOiBmYWxzZSxcclxuICAgICAgICBpdGVyYXRpb25zIDogMSxcclxuICAgICAgICBkZWJ1Z1BvcnQ6IG51bGwsXHJcbiAgICAgICAgZGVsYXk6IG51bGwsXHJcbiAgICAgICAgY29sbGVjdERldmljZUxvZ3M6IGZhbHNlLFxyXG4gICAgICAgIGNvbGxlY3RBcHBpdW1Mb2dzOiBmYWxzZSxcclxuICAgICAgICBjb2xsZWN0QnJvd3NlckxvZ3M6IGZhbHNlLFxyXG4gICAgICAgIHJlcG9ydGluZzoge1xyXG4gICAgICAgICAgICByZXBvcnRlcnM6IFtERUZBVUxUX1JFUE9SVEVSXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFyYW1ldGVycyA6IHtcclxuICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgICAgICAgbW9kZTogJ3NlcSdcclxuICAgICAgICB9LFxyXG4gICAgfTtcclxuICAgIC8vIHJldHJpZXZlIG9wdGlvbnMgcHJvdmlkZWQgdmlhIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcclxuICAgIGNvbnN0IGNtZE9wdHMgPSBnZXRDb21tYW5kTGluZU9wdGlvbnMoYXJndik7XHJcbiAgICAvLyBpZiB0aGUgdGFyZ2V0IGlzIG94eWdlbiBjb25maWcgZmlsZSwgbWVyZ2UgaXRzIGNvbnRlbnQgd2l0aCB0aGUgZGVmYXVsdCBvcHRpb25zXHJcbiAgICBsZXQgcHJvakNvbmZpZ09wdHMgPSB7fTtcclxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0Lm5hbWUgPT09IE9YWUdFTl9DT05GSUdfRklMRV9OQU1FICYmICh0YXJnZXQuZXh0ZW5zaW9uID09PSAnLmpzJyB8fCB0YXJnZXQuZXh0ZW5zaW9uID09PSAnLmpzb24nKSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHByb2pDb25maWdPcHRzID0gbW9kdWxlUmVxdWlyZSh0YXJnZXQucGF0aCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2FkIGZpbGU6ICR7dGFyZ2V0LnBhdGh9LiBSZWFzb246ICR7ZS5tZXNzYWdlfSAke2Uuc3RhY2t9YCk7XHJcbiAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmNvbmZpZ1BhdGgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBwcm9qQ29uZmlnT3B0cyA9IG1vZHVsZVJlcXVpcmUodGFyZ2V0LmNvbmZpZ1BhdGgpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmaWxlOiAke3RhcmdldC5jb25maWdQYXRofS4gUmVhc29uOiAke2UubWVzc2FnZX0gJHtlLnN0YWNrfWApO1xyXG4gICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgZW52cyA9IGdldEVudmlyb25tZW50cyh0YXJnZXQpO1xyXG5cclxuICAgIGlmIChwcm9qQ29uZmlnT3B0cy5lbnZzKSB7XHJcbiAgICAgICAgLy8gbWVyZ2UgZXh0ZXJuYWwgZW52aXJvbm1lbnRzIGRlZmluaXRpb24gd2l0aCB0aGUgb25lIGluIHRoZSBjb25maWcgZmlsZVxyXG4gICAgICAgIHByb2pDb25maWdPcHRzLmVudnMgPSB7IC4uLnByb2pDb25maWdPcHRzLmVudnMsIC4uLmVudnMgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHByb2pDb25maWdPcHRzID0geyAuLi5wcm9qQ29uZmlnT3B0cywgZW52czogZW52cyB9O1xyXG4gICAgfVxyXG4gICAgLy8gbWFrZSBzdXJlIHRvIHNldCBkZWZhdWx0IEhUTUwgcmVwb3J0ZXIgaWYgcmVwb3J0aW5nIG9wdGlvbnMgYXJlIG5vdCBwcm92aWRlZCBpbiBveHlnZW4uY29uZiBmaWxlIGFuZCB2aWEgY29tbWFuZCBsaW5lXHJcbiAgICBjb25zdCBpc0NtZE9wdHNSZXBvcnRGb3JtYXQgPSBjbWRPcHRzLnJlcG9ydGluZyAmJiBjbWRPcHRzLnJlcG9ydGluZy5yZXBvcnRlcnM7XHJcbiAgICBjb25zdCBpc0NvbmZpZ1JlcG9ydEZvcm1hdCA9IHByb2pDb25maWdPcHRzLnJlcG9ydGluZyAmJiBwcm9qQ29uZmlnT3B0cy5yZXBvcnRpbmcucmVwb3J0ZXJzO1xyXG4gICAgaWYgKCFpc0NtZE9wdHNSZXBvcnRGb3JtYXQgJiYgIWlzQ29uZmlnUmVwb3J0Rm9ybWF0KSB7XHJcbiAgICAgICAgaWYgKCFwcm9qQ29uZmlnT3B0cy5yZXBvcnRpbmcpIHtcclxuICAgICAgICAgICAgcHJvakNvbmZpZ09wdHMucmVwb3J0aW5nID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHByb2pDb25maWdPcHRzLnJlcG9ydGluZy5yZXBvcnRlcnMgPSBbREVGQVVMVF9SRVBPUlRFUl07XHJcbiAgICB9XHJcbiAgICAvLyBkZXRlcm1pbmUgdGVzdCBuYW1lXHJcbiAgICBsZXQgbmFtZSA9IGNtZE9wdHMubmFtZSB8fCBwcm9qQ29uZmlnT3B0cy5uYW1lIHx8IG51bGw7XHJcbiAgICBpZiAoIW5hbWUgJiYgdGFyZ2V0KSB7XHJcbiAgICAgICAgbmFtZSA9IHRhcmdldC5uYW1lICE9PSBPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSA/IHRhcmdldC5uYW1lIDogdGFyZ2V0LmJhc2VOYW1lO1xyXG4gICAgfVxyXG4gICAgLy8gbWVyZ2Ugb3B0aW9ucyBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBvcmRlciAodGhlIGxhc3Qgb25lIG92ZXJyaWRlcyB0aGUgcHJldmlvdXMgb25lKTpcclxuICAgIC8vIGRlZmF1bHQgb3B0aW9ucywgcHJvamVjdCBjb25maWcgZmlsZSwgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xyXG4gICAgcmV0dXJuIHsgLi4uREVGQVVMVF9PUFRTLCAuLi5wcm9qQ29uZmlnT3B0cywgLi4uY21kT3B0cywgbmFtZTogbmFtZSB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbWFuZExpbmVPcHRpb25zKGFyZ3YpIHtcclxuICAgIGNvbnN0IG9wdHMgPSB7XHJcbiAgICAgICAgLy8gc3dpdGNoOiAtLW5hbWUgXHJcbiAgICAgICAgbmFtZTogYXJndi5uYW1lIHx8IG51bGwsXHJcbiAgICAgICAgLy8gc3dpdGNoOiAtYiBvciAtLWJyb3dzZXJcclxuICAgICAgICBicm93c2VyTmFtZSA6IGFyZ3YuYiB8fCBhcmd2LmJyb3dzZXIgfHwgbnVsbCxcclxuICAgICAgICBzZWxlbml1bVVybCA6IGFyZ3YucyB8fCBhcmd2LnNlcnZlciB8fCBudWxsLFxyXG4gICAgICAgIGFwcGl1bVVybCA6IGFyZ3YucyB8fCBhcmd2LnNlcnZlciB8fCBudWxsLFxyXG4gICAgICAgIHJlb3BlblNlc3Npb246IGFyZ3YucmVvcGVuID8gYXJndi5yZW9wZW4gPT09ICd0cnVlJyA6IG51bGwsXHJcbiAgICAgICAgaXRlcmF0aW9ucyA6IGFyZ3YuaSA/IHBhcnNlSW50KGFyZ3YuaSkgOiAoYXJndi5pdGVyID8gcGFyc2VJbnQoYXJndi5pdGVyKSA6IG51bGwpLFxyXG4gICAgICAgIGRlYnVnUG9ydDogYXJndi5kYmdwb3J0IHx8IG51bGwsXHJcbiAgICAgICAgd3NQb3J0OiBhcmd2LndzcG9ydCB8fCBudWxsLFxyXG4gICAgICAgIGRlbGF5OiBhcmd2LmQgfHwgYXJndi5kZWxheSB8fCBudWxsLFxyXG4gICAgfTtcclxuICAgIC8vIHN3aXRjaDogLS1yZiBmbGFnXHJcbiAgICBpZiAoYXJndi5yZiAmJiB0eXBlb2YgYXJndi5yZiA9PT0gJ3N0cmluZycgJiYgYXJndi5yZi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgcmVwb3J0Rm9ybWF0cyA9IGFyZ3YucmYuc3BsaXQoJywnKTtcclxuICAgICAgICBvcHRzLnJlcG9ydGluZyA9IHtcclxuICAgICAgICAgICAgcmVwb3J0ZXJzOiByZXBvcnRGb3JtYXRzXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBzd2l0Y2g6IC0tcm8gLSBzZXQgcmVwb3J0ZXIgb3V0cHV0IGRpcmVjdG9yeSBpZiBzZXQgYnkgdXNlciB0aHJvdWdoIGNvbW5hbmQgbGluZVxyXG4gICAgICAgIC8vIE5PVEU6IC0tcm8gc3dpdGNoIG11c3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggLS1yZlxyXG4gICAgICAgIGlmIChhcmd2LnJvICYmIHR5cGVvZiBhcmd2LnJvID09PSAnc3RyaW5nJyAmJiBhcmd2LnJvLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgb3B0cy5yZXBvcnRpbmcub3V0cHV0RGlyID0gYXJndi5ybztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBvcHRpb246IC1wIG9yIC0tcGFyYW0gYW5kIC0tcG1cclxuICAgIGlmIChhcmd2LnAgfHwgYXJndi5wYXJhbSkge1xyXG4gICAgICAgIG9wdHMucGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgZmlsZTogYXJndi5wIHx8IGFyZ3YucGFyYW0gfHwgbnVsbCxcclxuICAgICAgICAgICAgbW9kZTogYXJndi5wbSB8fCAnc2VxJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc3dpdGNoOiAtLXNwZWNzIC0gc2V0IHNwZWNzIGlmIHNldCBieSB1c2VyIHRocm91Z2ggY29tbmFuZCBsaW5lXHJcbiAgICBpZiAoYXJndi5zcGVjcyAmJiB0eXBlb2YgYXJndi5zcGVjcyA9PT0gJ3N0cmluZycgJiYgYXJndi5zcGVjcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3Qgc3BlY3MgPSBhcmd2LnNwZWNzLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgb3B0cy5zcGVjcyA9IHNwZWNzO1xyXG4gICAgfVxyXG4gICAgLy8gc3dpdGNoOiAtLW1vZHVsZXMgLSBzZXQgYSBsaXN0IG9mIG1vZHVsZXMgdG8gYmUgbG9hZGVkLCBpZiBzZXQgYnkgdXNlciB0aHJvdWdoIGNvbW5hbmQgbGluZVxyXG4gICAgaWYgKGFyZ3YubW9kdWxlcyAmJiB0eXBlb2YgYXJndi5tb2R1bGVzID09PSAnc3RyaW5nJyAmJiBhcmd2Lm1vZHVsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IG1vZHVsZXMgPSBhcmd2Lm1vZHVsZXMuc3BsaXQoJywnKTtcclxuICAgICAgICBvcHRzLm1vZHVsZXMgPSBtb2R1bGVzO1xyXG4gICAgfVxyXG4gICAgLy8gcmVtb3ZlIGFueSBwcm9wZXJ0eSB3aXRoIG51bGwgdmFsdWUgKHNvIGl0IHdvbid0IG92ZXJyaWRlIGRlZmF1bHQgdmFsdWVzIGlmIGl0J3MgbnVsbClcclxuICAgIHJldHVybiBkZWxldGVOdWxsUHJvcGVydGllcyhvcHRzKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGVsZXRlTnVsbFByb3BlcnRpZXMob2JqKSB7XHJcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcclxuICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY2xvbmUgPSB7IC4uLm9iaiB9O1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XHJcbiAgICBmb3JFYWNoIChrZXlzLCBrZXkgPT4ge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpICYmIChvYmpba2V5XSA9PSBudWxsIHx8IG9ialtrZXldID09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgICAgICAgZGVsZXRlIGNsb25lW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzVGFyZ2V0UGF0aCh0YXJnZXRQYXRoLCB1c2VyQ3dkKSB7XHJcbiAgICBsZXQgY3dkID0gdXNlckN3ZCB8fCBwcm9jZXNzLmN3ZCgpO1xyXG4gICAgLy8gZ2V0IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgaWYgdXNlciBoYXMgbm90IHByb3ZpZGVkIHBhdGhcclxuICAgIGlmICh0eXBlb2YodGFyZ2V0UGF0aCkgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgdGFyZ2V0UGF0aCA9IGN3ZDtcclxuICAgIH1cclxuICAgIC8vIHVzZXIncyBwYXRoIG1pZ2h0IGJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IC0gbWFrZSBzdXJlIHRoZSByZWxhdGl2ZSBwYXRoIHdpbGwgd29ya1xyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdGFyZ2V0UGF0aCA9IG94dXRpbC5yZXNvbHZlUGF0aCh0YXJnZXRQYXRoLCBjd2QpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0YXJnZXRQYXRoKSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0YXRzID0gZnMubHN0YXRTeW5jKHRhcmdldFBhdGgpO1xyXG4gICAgY29uc3QgaXNEaXJlY3RvciA9IHN0YXRzLmlzRGlyZWN0b3J5KCk7XHJcbiAgICBsZXQgY29uZmlnRmlsZVBhdGg7XHJcbiAgICBpZiAoaXNEaXJlY3Rvcikge1xyXG4gICAgICAgIC8vIGlmIFwidGFyZ2V0XCIgcHJvdmlkZWQgYnkgdGhlIHVzZXIgaXMgYSBkaXJlY3RvcnksXHJcbiAgICAgICAgLy8gdGhlbiB1bmxlc3MgXCJjd2RcIiBpcyBwcm92aWRlZCBleHBsaWNpdGx5IGJ5IHRoZSB1c2VyXHJcbiAgICAgICAgLy8gdXNlIHRhcmdldCBkaXJlY3RvcnkgYXMgY3dkXHJcbiAgICAgICAgY3dkID0gdXNlckN3ZCB8fCB0YXJnZXRQYXRoO1xyXG4gICAgICAgIC8vIGFwcGVuZCBveHlnZW4gY29uZmlnIGZpbGUgbmFtZSB0byB0aGUgZGlyZWN0b3J5LCBpZiBubyB0ZXN0IGNhc2UgZmlsZSB3YXMgcHJvdmlkZWRcclxuICAgICAgICBjb25maWdGaWxlUGF0aCA9IHBhdGguam9pbih0YXJnZXRQYXRoLCBPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSArICcuanMnKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpKSB7XHJcbiAgICAgICAgICAgIGNvbmZpZ0ZpbGVQYXRoID0gcGF0aC5qb2luKHRhcmdldFBhdGgsIE9YWUdFTl9DT05GSUdfRklMRV9OQU1FICsgJy5qc29uJyk7XHJcbiAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhjb25maWdGaWxlUGF0aCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGFyZ2V0UGF0aC5lbmRzV2l0aChPWFlHRU5fQ09ORklHX0ZJTEVfTkFNRSArICcuanMnKSB8fCB0YXJnZXRQYXRoLmVuZHNXaXRoKE9YWUdFTl9DT05GSUdfRklMRV9OQU1FICsgJy5qc29uJykpIHtcclxuICAgICAgICBjb25maWdGaWxlUGF0aCA9IHRhcmdldFBhdGg7XHJcbiAgICAgICAgY3dkID0gdGFyZ2V0UGF0aCA9IHBhdGguZGlybmFtZSh0YXJnZXRQYXRoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGN3ZCA9IHVzZXJDd2QgfHwgcGF0aC5kaXJuYW1lKHRhcmdldFBhdGgpO1xyXG4gICAgICAgIGNvbmZpZ0ZpbGVQYXRoID0gcGF0aC5qb2luKGN3ZCwgT1hZR0VOX0NPTkZJR19GSUxFX05BTUUgKyAnLmpzJyk7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGNvbmZpZ0ZpbGVQYXRoKSkge1xyXG4gICAgICAgICAgICBjb25maWdGaWxlUGF0aCA9IHBhdGguam9pbihjd2QsIE9YWUdFTl9DT05GSUdfRklMRV9OQU1FICsgJy5qc29uJyk7XHJcbiAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhjb25maWdGaWxlUGF0aCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZ0ZpbGVQYXRoID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF0YXJnZXRQYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC8vIHBhdGggdG8gdGhlIGNvbmZpZyBvciAuanMgZmlsZVxyXG4gICAgICAgIHBhdGg6IHRhcmdldFBhdGgsXHJcbiAgICAgICAgY29uZmlnUGF0aDogY29uZmlnRmlsZVBhdGgsXHJcbiAgICAgICAgLy8gd29ya2luZyBkaXJlY3RvcnlcclxuICAgICAgICBjd2Q6IGN3ZCB8fCBwYXRoLmRpcm5hbWUodGFyZ2V0UGF0aCksXHJcbiAgICAgICAgLy8gbmFtZSBvZiB0aGUgdGFyZ2V0IGZpbGUgd2l0aG91dCBleHRlbnNpb25cclxuICAgICAgICBuYW1lOiBveHV0aWwuZ2V0RmlsZU5hbWVXaXRob3V0RXh0KHRhcmdldFBhdGgpLFxyXG4gICAgICAgIC8vIG5hbWUgaW5jbHVkaW5nIGV4dGVuc2lvblxyXG4gICAgICAgIGZ1bGxOYW1lOiBwYXRoLmJhc2VuYW1lKHRhcmdldFBhdGgpLFxyXG4gICAgICAgIC8vIHBhcmVudCBmb2xkZXIncyBuYW1lXHJcbiAgICAgICAgYmFzZU5hbWU6IHBhdGguYmFzZW5hbWUocGF0aC5kaXJuYW1lKHRhcmdldFBhdGgpKSxcclxuICAgICAgICAvLyB0YXJnZXQgZmlsZSBleHRlbnNpb25cclxuICAgICAgICBleHRlbnNpb246IHBhdGguZXh0bmFtZSh0YXJnZXRQYXRoKVxyXG4gICAgfTtcclxufSJdfQ==
|
package/build/lib/cli.js
CHANGED
|
@@ -147,4 +147,4 @@ Web test options:
|
|
|
147
147
|
Mobile test options:
|
|
148
148
|
-s, --server=SERVER_URL Appium server URL. Default is http://localhost:4723/wd/hub.`);
|
|
149
149
|
}
|
|
150
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjd2QiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwiaW5pdCIsIndzUmVwb3J0ZXIiLCJ3c1BvcnQiLCJ1bmRlZmluZWQiLCJXZWJTb2NrZXRSZXBvcnRlciIsImxhdW5jaGVyIiwicGFyYWxsZWwiLCJ3b3JrZXJzIiwiaXNOYU4iLCJQYXJhbGxlbExhdW5jaGVyIiwiTGF1bmNoZXIiLCJzdGFydEFuZFdhaXRGb3JDbGllbnQiLCJvbkxhdW5jaFN0YXJ0IiwicnVuIiwib25MYXVuY2hFbmQiLCJnZW5lcmF0ZVJlcG9ydHMiLCJzdG9wIiwiZ2V0RXhpdENvZGUiLCJ0cmFjZSIsInNldFRpbWVvdXQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQVNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBQSxPQUFPLENBQUNDLEVBQVIsQ0FBVyxRQUFYLEVBQXFCQyxZQUFyQjtBQUNBRixPQUFPLENBQUNDLEVBQVIsQ0FBVyxtQkFBWCxFQUFnQ0UsS0FBSyxJQUFJO0FBQ3JDQyxFQUFBQSxPQUFPLENBQUNELEtB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QWIsQ0FBTjtBQUNBLFVBQU1HLFFBQVEsQ0FBQ2dCLFdBQVQsRUFBTjs7QUFFQSxRQUFJLENBQUNiLFVBQUwsRUFBaUI7QUFDYixZQUFNSCxRQUFRLENBQUNpQixlQUFULEVBQU47QUFDSDs7QUFDRGQsSUFBQUEsVUFBVSxTQUFWLElBQUFBLFVBQVUsV0FBVixZQUFBQSxVQUFVLENBQUVlLElBQVo7QUFDQW5CLElBQUFBLFFBQVEsR0FBR0MsUUFBUSxDQUFDbUIsV0FBVCxFQUFYO0FBQ0gsR0FsQkQsQ0FtQkEsT0FBTzVCLENBQVAsRUFBVTtBQUNOekIsSUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsYUFBZCxFQUE2QjBCLENBQTdCO0FBQ0F6QixJQUFBQSxPQUFPLENBQUNzRCxLQUFSO0FBQ0ExRCxJQUFBQSxPQUFPLENBQUNXLElBQVIsQ0FBYSxDQUFiO0FBQ0g7O0FBQ0QsU0FBTzBCLFFBQVA7QUFDSDs7QUFFRCxTQUFTbkMsWUFBVCxHQUF3QjtBQUVwQnlELEVBQUFBLFVBQVUsQ0FBQyxNQUFNM0QsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYixDQUFQLEVBQXdCLElBQXhCLENBQVY7QUFDSDs7QUFFRCxTQUFTRyxVQUFULEdBQXNCO0FBQ2xCVixFQUFBQSxPQUFPLENBQUNNLEdBQVIsQ0FBYTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUZBakNJO0FBa0NIIiwic291cmNlc0NvbnRlbnQiOlsiIyEgL3Vzci9iaW4vZW52IG5vZGVcbi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKi9cbmltcG9ydCAqIGFzIGNsaXV0aWwgZnJvbSAnLi9jbGktdXRpbCc7XG5pbXBvcnQgTGF1bmNoZXIgZnJvbSAnLi9sYXVuY2hlcic7XG5pbXBvcnQgUGFyYWxsZWxMYXVuY2hlciBmcm9tICcuL3BhcmFsbGVsLWxhdW5jaGVyJztcbmltcG9ydCBSZXBvcnRBZ2dyZWdhdG9yIGZyb20gJy4uL3JlcG9ydGVyL1JlcG9ydEFnZ3JlZ2F0b3InO1xuaW1wb3J0IFdlYlNvY2tldFJlcG9ydGVyIGZyb20gJy4uL3JlcG9ydGVyL1dlYlNvY2tldFJlcG9ydGVyJztcblxucHJvY2Vzcy5vbignU0lHSU5UJywgaGFuZGxlU2lnSW50KTtcbnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyb3IgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyb3IpO1xufSk7XG5cbnByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIGVycm9yID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnJvcik7XG59KTtcblxuLy8gcGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuY29uc3QgYXJndiA9IHJlcXVpcmUoJ21pbmltaXN0JykocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKTtcblxuaWYgKGFyZ3YudiB8fCBhcmd2LnZlcnNpb24pIHtcbiAgICBjb25zb2xlLmxvZyhyZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uKTtcbiAgICBwcm9jZXNzLmV4aXQoMCk7XG59IGVsc2UgaWYgKHR5cGVvZihhcmd2Ll9bMF0pID09PSAndW5kZWZpbmVkJyB8fCBhcmd2LmhlbHApIHtcbiAgICBwcmludFVzYWdlKCk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xufVxuaWYgKGFyZ3YuZCB8fCBhcmd2LmRlbGF5KSB7XG4gICAgY29uc3QgZGVsYXkgPSBhcmd2LmQgfHwgYXJndi5kZWxheTtcbiAgICBpZiAoIShwYXJzZUludChkZWxheSkgPiAwKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBhcmd1bWVudCAtICdkZWxheScgc2hvdWxkIGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci5cIik7XG4gICAgICAgIHByaW50VXNhZ2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbn1cblxuY29uc3QgdGFyZ2V0RmlsZSA9IGNsaXV0aWwucHJvY2Vzc1RhcmdldFBhdGgoYXJndi5fWzBdLCBhcmd2LmN3ZCk7XG5pZiAodGFyZ2V0RmlsZSA9PSBudWxsKSB7XG4gICAgcHJpbnRVc2FnZSgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcblxuY2xpdXRpbC5nZW5lcmF0ZVRlc3RPcHRpb25zKGNvbmZpZywgYXJndikudGhlbihcbiAgICAob3B0aW9ucykgPT4ge1xuICAgICAgICBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpLnRoZW4oXG4gICAgICAgICAgICAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkOiAnLCBlKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSxcbiAgICAoZSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdUZXN0IGZhaWxlZCBvbiBnZW5lcmF0ZSBzdGF0ZTogJywgZSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4pO1xuXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5mcmFtZXdvcmsgPT09ICdveHlnZW4nICYmICghb3B0aW9ucy5zdWl0ZXMgfHwgIUFycmF5LmlzQXJyYXkob3B0aW9ucy5zdWl0ZXMpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgdGVzdCAtIG5vIHN1aXRlcyBhcmUgc3BlY2lmaWVkLicpO1xuICAgIH1cbiAgICBsZXQgY2Fwc0FyciA9IG9wdGlvbnMuY2FwYWJpbGl0aWVzIHx8IFt7fV07XG4gICAgLy8gY2hlY2sgaWYgY2FwYWJpbGl0aWVzIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIGhhc2h0YWJsZVxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgICAgY2Fwc0FyciA9IFtjYXBzQXJyXTtcbiAgICB9XG4gICAgbGV0IGV4aXRDb2RlID0gMDtcbiAgICAvLyBzdGFydCBsYXVuY2hlclxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XG4gICAgICAgIGF3YWl0IHJlcG9ydGVyLmluaXQoKTtcbiAgICAgICAgY29uc3Qgd3NSZXBvcnRlciA9IG9wdGlvbnMud3NQb3J0ICE9PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgbmV3IFdlYlNvY2tldFJlcG9ydGVyKHJlcG9ydGVyKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgbGF1bmNoZXIgPSBvcHRpb25zLnBhcmFsbGVsICYmIG9wdGlvbnMucGFyYWxsZWwud29ya2VycyAmJiAhaXNOYU4ob3B0aW9ucy5wYXJhbGxlbC53b3JrZXJzKSAmJiBvcHRpb25zLnBhcmFsbGVsLndvcmtlcnMgPiAxXG4gICAgICAgICAgICA/IG5ldyBQYXJhbGxlbExhdW5jaGVyKG9wdGlvbnMsIHJlcG9ydGVyKSA6IG5ldyBMYXVuY2hlcihvcHRpb25zLCByZXBvcnRlcik7XG4gICAgICAgIGF3YWl0IHdzUmVwb3J0ZXI/LnN0YXJ0QW5kV2FpdEZvckNsaWVudChvcHRpb25zLndzUG9ydCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdUZXN0IHN0YXJ0ZWQuLi4nKTtcbiAgICAgICAgYXdhaXQgcmVwb3J0ZXIub25MYXVuY2hTdGFydChvcHRpb25zKTtcbiAgICAgICAgYXdhaXQgbGF1bmNoZXIucnVuKGNhcHNBcnIpO1xuICAgICAgICBhd2FpdCByZXBvcnRlci5vbkxhdW5jaEVuZCgpO1xuICAgICAgICAvLyBHZW5lcmF0ZSBmaWxlIHJlcG9ydCBvbmx5IHdoZW4gbm8gd3Nwb3J0IGFyZ3VtZW50IGlzIHByb3ZpZGVkXG4gICAgICAgIGlmICghd3NSZXBvcnRlcikge1xuICAgICAgICAgICAgYXdhaXQgcmVwb3J0ZXIuZ2VuZXJhdGVSZXBvcnRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgd3NSZXBvcnRlcj8uc3RvcCgpO1xuICAgICAgICBleGl0Q29kZSA9IHJlcG9ydGVyLmdldEV4aXRDb2RlKCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhdGFsIGVycm9yJywgZSk7XG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgICByZXR1cm4gZXhpdENvZGU7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcbiAgICAvLyBkZWxheSBwcm9jZXNzIGV4aXQgdG8gbGV0IE94eWdlbiB0byBwcm9wZXJseSBkaXNwb3NlXG4gICAgc2V0VGltZW91dCgoKSA9PiBwcm9jZXNzLmV4aXQoMCksIDIwMDApO1xufVxuXG5mdW5jdGlvbiBwcmludFVzYWdlKCkge1xuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXG5cbkZJTEUgLSBQYXRoIHRvIGEgdGVzdCBzY3JpcHQgKC5qcykgb3IgYSBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gKC5qc29uKSBmaWxlLlxuXG5HZW5lcmFsIG9wdGlvbnM6XG4gIC1kLCAtLWRlbGF5PVNFQ09ORFMgICAgICAgIERlbGF5IGJldHdlZW4gZWFjaCBjb21tYW5kIGluIHNlY29uZHMuXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cbiAgICAgIC0tcm89UEFUSCAgICAgICAgICAgICAgT3V0cHV0IHBhdGggZm9yIHJlcG9ydCBmaWxlLiBJZiBzcGVjaWZpZWQsIHRoZSByZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBvdmVyd3JpdGUgYW55IHByZXZpb3VzIHJlcG9ydHMuXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cbiAgLXAsIC0tcGFyYW09RklMRSAgICAgICAgICAgUGFyYW1ldGVycyBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIGFuIGF0dGVtcHQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBtYWRlIHRvIGxvYWQgcGFyYW1ldGVycyBmcm9tIGEgZmlsZSBuYW1lZCBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBoYXZpbmcgZXh0ZW5zaW9uIC0geGxzeCwgeGxzLCBjc3YsIG9yIHR4dC5cbiAgICAgIC0tcG09e3NlcXxyYW5kb218YWxsfSAgT3JkZXIgaW4gd2hpY2ggdG8gcmVhZCB0aGUgcGFyYW1ldGVycyAtIHNlcXVlbnRpYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gJ3NlcScgYW5kICdyYW5kb20nIG1vZGVzIHRlc3Qgd2lsbCBydW4gZXhhY3QgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRpbWVzIHNwZWNpZmllZCB3aXRoIHRoZSAtaSBvcHRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVudGlhbGx5LiBUaGlzIG9wdGlvbiBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtaSBvcHRpb24uXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXG4gICAgICAtLXdzcG9ydD1QT1JUICAgICAgICAgIFdlYlNvY2tldCBldmVudHMgcmVwb3J0ZXIgcG9ydC5cbiAgICAgIC0tc3VpdGVzICAgICAgICAgICAgICAgRmlsdGVyIG91dCBzdWl0ZXMgYnkgbmFtZVxuICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaW5mb3JtYXRpb24gYW5kIGV4aXQuXG4gIC12LCAtLXZlcnNpb24gICAgICAgICAgICAgIERpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdC5cblxuV2ViIHRlc3Qgb3B0aW9uczpcbiAgLWIsIC0tYnJvd3Nlcj17Y2hyb21lfGllfHNhZmFyaXxmaXJlZm94fSAgQnJvd3NlciBuYW1lLiBEZWZhdWx0IGlzIGNocm9tZS5cbiAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgICAgU2VsZW5pdW0gaHViIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ0NDQvd2QvaHViLlxuICAgICAgLS1yZW9wZW49e3RydWV8ZmFsc2V9ICBSZW9wZW4gYnJvd3NlciBvbiBlYWNoIGl0ZXJhdGlvbi4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICAgIFxuTW9iaWxlIHRlc3Qgb3B0aW9uczpcbiAgICAtcywgLS1zZXJ2ZXI9U0VSVkVSX1VSTCAgQXBwaXVtIHNlcnZlciBVUkwuIERlZmF1bHQgaXMgaHR0cDovL2xvY2FsaG9zdDo0NzIzL3dkL2h1Yi5gKTtcbn0iXX0=
|
|
150
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjd2QiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwiaW5pdCIsIndzUmVwb3J0ZXIiLCJ3c1BvcnQiLCJ1bmRlZmluZWQiLCJXZWJTb2NrZXRSZXBvcnRlciIsImxhdW5jaGVyIiwicGFyYWxsZWwiLCJ3b3JrZXJzIiwiaXNOYU4iLCJQYXJhbGxlbExhdW5jaGVyIiwiTGF1bmNoZXIiLCJzdGFydEFuZFdhaXRGb3JDbGllbnQiLCJvbkxhdW5jaFN0YXJ0IiwicnVuIiwib25MYXVuY2hFbmQiLCJnZW5lcmF0ZVJlcG9ydHMiLCJzdG9wIiwiZ2V0RXhpdENvZGUiLCJ0cmFjZSIsInNldFRpbWVvdXQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQVNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBQSxPQUFPLENBQUNDLEVBQVIsQ0FBVyxRQUFYLEVBQXFCQyxZQUFyQjtBQUNBRixPQUFPLENBQUNDLEVBQVIsQ0FBVyxtQkFBWCxFQUFnQ0UsS0FBSyxJQUFJO0FBQ3JDQyxFQUFBQSxPQUFPLENBQUNELEtB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QWIsQ0FBTjtBQUNBLFVBQU1HLFFBQVEsQ0FBQ2dCLFdBQVQsRUFBTjs7QUFFQSxRQUFJLENBQUNiLFVBQUwsRUFBaUI7QUFDYixZQUFNSCxRQUFRLENBQUNpQixlQUFULEVBQU47QUFDSDs7QUFDRGQsSUFBQUEsVUFBVSxTQUFWLElBQUFBLFVBQVUsV0FBVixZQUFBQSxVQUFVLENBQUVlLElBQVo7QUFDQW5CLElBQUFBLFFBQVEsR0FBR0MsUUFBUSxDQUFDbUIsV0FBVCxFQUFYO0FBQ0gsR0FsQkQsQ0FtQkEsT0FBTzVCLENBQVAsRUFBVTtBQUNOekIsSUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsYUFBZCxFQUE2QjBCLENBQTdCO0FBQ0F6QixJQUFBQSxPQUFPLENBQUNzRCxLQUFSO0FBQ0ExRCxJQUFBQSxPQUFPLENBQUNXLElBQVIsQ0FBYSxDQUFiO0FBQ0g7O0FBQ0QsU0FBTzBCLFFBQVA7QUFDSDs7QUFFRCxTQUFTbkMsWUFBVCxHQUF3QjtBQUVwQnlELEVBQUFBLFVBQVUsQ0FBQyxNQUFNM0QsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYixDQUFQLEVBQXdCLElBQXhCLENBQVY7QUFDSDs7QUFFRCxTQUFTRyxVQUFULEdBQXNCO0FBQ2xCVixFQUFBQSxPQUFPLENBQUNNLEdBQVIsQ0FBYTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUZBakNJO0FBa0NIIiwic291cmNlc0NvbnRlbnQiOlsiIyEgL3Vzci9iaW4vZW52IG5vZGVcclxuLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcbmltcG9ydCAqIGFzIGNsaXV0aWwgZnJvbSAnLi9jbGktdXRpbCc7XHJcbmltcG9ydCBMYXVuY2hlciBmcm9tICcuL2xhdW5jaGVyJztcclxuaW1wb3J0IFBhcmFsbGVsTGF1bmNoZXIgZnJvbSAnLi9wYXJhbGxlbC1sYXVuY2hlcic7XHJcbmltcG9ydCBSZXBvcnRBZ2dyZWdhdG9yIGZyb20gJy4uL3JlcG9ydGVyL1JlcG9ydEFnZ3JlZ2F0b3InO1xyXG5pbXBvcnQgV2ViU29ja2V0UmVwb3J0ZXIgZnJvbSAnLi4vcmVwb3J0ZXIvV2ViU29ja2V0UmVwb3J0ZXInO1xyXG5cclxucHJvY2Vzcy5vbignU0lHSU5UJywgaGFuZGxlU2lnSW50KTtcclxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvciA9PiB7XHJcbiAgICBjb25zb2xlLmVycm9yKCd1bmNhdWdodEV4Y2VwdGlvbicsIGVycm9yKTtcclxufSk7XHJcblxyXG5wcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnJvciA9PiB7XHJcbiAgICBjb25zb2xlLmVycm9yKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnJvcik7XHJcbn0pO1xyXG5cclxuLy8gcGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xyXG5jb25zdCBhcmd2ID0gcmVxdWlyZSgnbWluaW1pc3QnKShwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpO1xyXG5cclxuaWYgKGFyZ3YudiB8fCBhcmd2LnZlcnNpb24pIHtcclxuICAgIGNvbnNvbGUubG9nKHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb24pO1xyXG4gICAgcHJvY2Vzcy5leGl0KDApO1xyXG59IGVsc2UgaWYgKHR5cGVvZihhcmd2Ll9bMF0pID09PSAndW5kZWZpbmVkJyB8fCBhcmd2LmhlbHApIHtcclxuICAgIHByaW50VXNhZ2UoKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxufVxyXG5pZiAoYXJndi5kIHx8IGFyZ3YuZGVsYXkpIHtcclxuICAgIGNvbnN0IGRlbGF5ID0gYXJndi5kIHx8IGFyZ3YuZGVsYXk7XHJcbiAgICBpZiAoIShwYXJzZUludChkZWxheSkgPiAwKSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50IC0gJ2RlbGF5JyBzaG91bGQgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLlwiKTtcclxuICAgICAgICBwcmludFVzYWdlKCk7XHJcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCB0YXJnZXRGaWxlID0gY2xpdXRpbC5wcm9jZXNzVGFyZ2V0UGF0aChhcmd2Ll9bMF0sIGFyZ3YuY3dkKTtcclxuaWYgKHRhcmdldEZpbGUgPT0gbnVsbCkge1xyXG4gICAgcHJpbnRVc2FnZSgpO1xyXG4gICAgcHJvY2Vzcy5leGl0KDEpO1xyXG59XHJcblxyXG5jb25zdCBjb25maWcgPSBjbGl1dGlsLmdldENvbmZpZ3VyYXRpb25zKHRhcmdldEZpbGUsIGFyZ3YpO1xyXG5cclxuY2xpdXRpbC5nZW5lcmF0ZVRlc3RPcHRpb25zKGNvbmZpZywgYXJndikudGhlbihcclxuICAgIChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgcHJlcGFyZUFuZFN0YXJ0VGhlVGVzdChvcHRpb25zKS50aGVuKFxyXG4gICAgICAgICAgICAoY29kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0RvbmUhJyk7XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoY29kZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUZXN0IGZhaWxlZDogJywgZSk7XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSxcclxuICAgIChlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignVGVzdCBmYWlsZWQgb24gZ2VuZXJhdGUgc3RhdGU6ICcsIGUpO1xyXG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcclxuICAgIH1cclxuKTtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHByZXBhcmVBbmRTdGFydFRoZVRlc3Qob3B0aW9ucykge1xyXG4gICAgaWYgKG9wdGlvbnMuZnJhbWV3b3JrID09PSAnb3h5Z2VuJyAmJiAoIW9wdGlvbnMuc3VpdGVzIHx8ICFBcnJheS5pc0FycmF5KG9wdGlvbnMuc3VpdGVzKSkpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgdGVzdCAtIG5vIHN1aXRlcyBhcmUgc3BlY2lmaWVkLicpO1xyXG4gICAgfVxyXG4gICAgbGV0IGNhcHNBcnIgPSBvcHRpb25zLmNhcGFiaWxpdGllcyB8fCBbe31dO1xyXG4gICAgLy8gY2hlY2sgaWYgY2FwYWJpbGl0aWVzIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIGhhc2h0YWJsZVxyXG4gICAgaWYgKCEoY2Fwc0FyciBpbnN0YW5jZW9mIEFycmF5KSkge1xyXG4gICAgICAgIGNhcHNBcnIgPSBbY2Fwc0Fycl07XHJcbiAgICB9XHJcbiAgICBsZXQgZXhpdENvZGUgPSAwO1xyXG4gICAgLy8gc3RhcnQgbGF1bmNoZXJcclxuICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVwb3J0ZXIgPSBuZXcgUmVwb3J0QWdncmVnYXRvcihvcHRpb25zKTtcclxuICAgICAgICBhd2FpdCByZXBvcnRlci5pbml0KCk7XHJcbiAgICAgICAgY29uc3Qgd3NSZXBvcnRlciA9IG9wdGlvbnMud3NQb3J0ICE9PSB1bmRlZmluZWQgP1xyXG4gICAgICAgICAgICBuZXcgV2ViU29ja2V0UmVwb3J0ZXIocmVwb3J0ZXIpIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIGNvbnN0IGxhdW5jaGVyID0gb3B0aW9ucy5wYXJhbGxlbCAmJiBvcHRpb25zLnBhcmFsbGVsLndvcmtlcnMgJiYgIWlzTmFOKG9wdGlvbnMucGFyYWxsZWwud29ya2VycykgJiYgb3B0aW9ucy5wYXJhbGxlbC53b3JrZXJzID4gMVxyXG4gICAgICAgICAgICA/IG5ldyBQYXJhbGxlbExhdW5jaGVyKG9wdGlvbnMsIHJlcG9ydGVyKSA6IG5ldyBMYXVuY2hlcihvcHRpb25zLCByZXBvcnRlcik7XHJcbiAgICAgICAgYXdhaXQgd3NSZXBvcnRlcj8uc3RhcnRBbmRXYWl0Rm9yQ2xpZW50KG9wdGlvbnMud3NQb3J0KTtcclxuICAgICAgICBjb25zb2xlLmxvZygnVGVzdCBzdGFydGVkLi4uJyk7XHJcbiAgICAgICAgYXdhaXQgcmVwb3J0ZXIub25MYXVuY2hTdGFydChvcHRpb25zKTtcclxuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XHJcbiAgICAgICAgYXdhaXQgcmVwb3J0ZXIub25MYXVuY2hFbmQoKTtcclxuICAgICAgICAvLyBHZW5lcmF0ZSBmaWxlIHJlcG9ydCBvbmx5IHdoZW4gbm8gd3Nwb3J0IGFyZ3VtZW50IGlzIHByb3ZpZGVkXHJcbiAgICAgICAgaWYgKCF3c1JlcG9ydGVyKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHJlcG9ydGVyLmdlbmVyYXRlUmVwb3J0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB3c1JlcG9ydGVyPy5zdG9wKCk7XHJcbiAgICAgICAgZXhpdENvZGUgPSByZXBvcnRlci5nZXRFeGl0Q29kZSgpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdGYXRhbCBlcnJvcicsIGUpO1xyXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXhpdENvZGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcclxuICAgIC8vIGRlbGF5IHByb2Nlc3MgZXhpdCB0byBsZXQgT3h5Z2VuIHRvIHByb3Blcmx5IGRpc3Bvc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gcHJvY2Vzcy5leGl0KDApLCAyMDAwKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJpbnRVc2FnZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXHJcblxyXG5GSUxFIC0gUGF0aCB0byBhIHRlc3Qgc2NyaXB0ICguanMpIG9yIGEgcHJvamVjdCBjb25maWd1cmF0aW9uICguanNvbikgZmlsZS5cclxuXHJcbkdlbmVyYWwgb3B0aW9uczpcclxuICAtZCwgLS1kZWxheT1TRUNPTkRTICAgICAgICBEZWxheSBiZXR3ZWVuIGVhY2ggY29tbWFuZCBpbiBzZWNvbmRzLlxyXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cclxuICAgICAgLS1ybz1QQVRIICAgICAgICAgICAgICBPdXRwdXQgcGF0aCBmb3IgcmVwb3J0IGZpbGUuIElmIHNwZWNpZmllZCwgdGhlIHJlcG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgb3ZlcndyaXRlIGFueSBwcmV2aW91cyByZXBvcnRzLlxyXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cclxuICAtcCwgLS1wYXJhbT1GSUxFICAgICAgICAgICBQYXJhbWV0ZXJzIGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgYW4gYXR0ZW1wdCB3aWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgbWFkZSB0byBsb2FkIHBhcmFtZXRlcnMgZnJvbSBhIGZpbGUgbmFtZWQgc2FtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhhdmluZyBleHRlbnNpb24gLSB4bHN4LCB4bHMsIGNzdiwgb3IgdHh0LlxyXG4gICAgICAtLXBtPXtzZXF8cmFuZG9tfGFsbH0gIE9yZGVyIGluIHdoaWNoIHRvIHJlYWQgdGhlIHBhcmFtZXRlcnMgLSBzZXF1ZW50aWFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiAnc2VxJyBhbmQgJ3JhbmRvbScgbW9kZXMgdGVzdCB3aWxsIHJ1biBleGFjdCBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aW1lcyBzcGVjaWZpZWQgd2l0aCB0aGUgLWkgb3B0aW9uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsbHkuIFRoaXMgb3B0aW9uIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWkgb3B0aW9uLlxyXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXHJcbiAgICAgIC0td3Nwb3J0PVBPUlQgICAgICAgICAgV2ViU29ja2V0IGV2ZW50cyByZXBvcnRlciBwb3J0LlxyXG4gICAgICAtLXN1aXRlcyAgICAgICAgICAgICAgIEZpbHRlciBvdXQgc3VpdGVzIGJ5IG5hbWVcclxuICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaW5mb3JtYXRpb24gYW5kIGV4aXQuXHJcbiAgLXYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgRGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0LlxyXG5cclxuV2ViIHRlc3Qgb3B0aW9uczpcclxuICAtYiwgLS1icm93c2VyPXtjaHJvbWV8aWV8c2FmYXJpfGZpcmVmb3h9ICBCcm93c2VyIG5hbWUuIERlZmF1bHQgaXMgY2hyb21lLlxyXG4gIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICAgIFNlbGVuaXVtIGh1YiBVUkwuIERlZmF1bHQgaXMgaHR0cDovL2xvY2FsaG9zdDo0NDQ0L3dkL2h1Yi5cclxuICAgICAgLS1yZW9wZW49e3RydWV8ZmFsc2V9ICBSZW9wZW4gYnJvd3NlciBvbiBlYWNoIGl0ZXJhdGlvbi4gRGVmYXVsdCBpcyBmYWxzZS5cclxuICAgICAgXHJcbk1vYmlsZSB0ZXN0IG9wdGlvbnM6XHJcbiAgICAtcywgLS1zZXJ2ZXI9U0VSVkVSX1VSTCAgQXBwaXVtIHNlcnZlciBVUkwuIERlZmF1bHQgaXMgaHR0cDovL2xvY2FsaG9zdDo0NzIzL3dkL2h1Yi5gKTtcclxufSJdfQ==
|