From 912763b3f16a7dbe2849d4314b041e11c80d9df5 Mon Sep 17 00:00:00 2001 From: admtracksteel Date: Sat, 2 May 2026 15:37:40 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Auto-deploy:=20BotVPS=20atualiza?= =?UTF-8?q?do=20em=2002/05/2026=2015:37:40?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ai_agent.py | 36 +- bridge_telegram.py | 124 +- browser_cloud.py | 238 + config.py | 4 +- core_tools.py | 104 + llm_providers.py | 51 +- main.py | 48 +- node_modules/.bin/playwright | 1 + node_modules/.bin/playwright-core | 1 + node_modules/.package-lock.json | 37 + node_modules/playwright-core/LICENSE | 202 + node_modules/playwright-core/NOTICE | 5 + node_modules/playwright-core/README.md | 3 + .../playwright-core/ThirdPartyNotices.txt | 3552 +++ .../bin/install_media_pack.ps1 | 5 + .../bin/install_webkit_wsl.ps1 | 33 + .../bin/reinstall_chrome_beta_linux.sh | 42 + .../bin/reinstall_chrome_beta_mac.sh | 13 + .../bin/reinstall_chrome_beta_win.ps1 | 24 + .../bin/reinstall_chrome_stable_linux.sh | 42 + .../bin/reinstall_chrome_stable_mac.sh | 12 + .../bin/reinstall_chrome_stable_win.ps1 | 24 + .../bin/reinstall_msedge_beta_linux.sh | 48 + .../bin/reinstall_msedge_beta_mac.sh | 11 + .../bin/reinstall_msedge_beta_win.ps1 | 23 + .../bin/reinstall_msedge_dev_linux.sh | 48 + .../bin/reinstall_msedge_dev_mac.sh | 11 + .../bin/reinstall_msedge_dev_win.ps1 | 23 + .../bin/reinstall_msedge_stable_linux.sh | 48 + .../bin/reinstall_msedge_stable_mac.sh | 11 + .../bin/reinstall_msedge_stable_win.ps1 | 24 + node_modules/playwright-core/browsers.json | 81 + node_modules/playwright-core/cli.js | 18 + node_modules/playwright-core/index.d.ts | 17 + node_modules/playwright-core/index.js | 32 + node_modules/playwright-core/index.mjs | 28 + .../playwright-core/lib/androidServerImpl.js | 65 + node_modules/playwright-core/lib/bootstrap.js | 77 + .../playwright-core/lib/browserServerImpl.js | 120 + .../playwright-core/lib/cli/browserActions.js | 308 + .../playwright-core/lib/cli/driver.js | 98 + .../playwright-core/lib/cli/installActions.js | 171 + .../playwright-core/lib/cli/program.js | 225 + .../lib/cli/programWithTestStub.js | 74 + .../playwright-core/lib/client/android.js | 361 + .../playwright-core/lib/client/api.js | 137 + .../playwright-core/lib/client/artifact.js | 79 + .../playwright-core/lib/client/browser.js | 169 + .../lib/client/browserContext.js | 563 + .../playwright-core/lib/client/browserType.js | 153 + .../playwright-core/lib/client/cdpSession.js | 55 + .../lib/client/channelOwner.js | 194 + .../lib/client/clientHelper.js | 64 + .../lib/client/clientInstrumentation.js | 55 + .../lib/client/clientStackTrace.js | 69 + .../playwright-core/lib/client/clock.js | 68 + .../playwright-core/lib/client/connect.js | 143 + .../playwright-core/lib/client/connection.js | 322 + .../lib/client/consoleMessage.js | 61 + .../playwright-core/lib/client/coverage.js | 44 + .../playwright-core/lib/client/debugger.js | 57 + .../playwright-core/lib/client/dialog.js | 63 + .../playwright-core/lib/client/disposable.js | 76 + .../playwright-core/lib/client/download.js | 62 + .../playwright-core/lib/client/electron.js | 139 + .../lib/client/elementHandle.js | 281 + .../playwright-core/lib/client/errors.js | 77 + .../lib/client/eventEmitter.js | 314 + .../playwright-core/lib/client/events.js | 103 + .../playwright-core/lib/client/fetch.js | 367 + .../playwright-core/lib/client/fileChooser.js | 46 + .../playwright-core/lib/client/fileUtils.js | 34 + .../playwright-core/lib/client/frame.js | 404 + .../playwright-core/lib/client/harRouter.js | 99 + .../playwright-core/lib/client/input.js | 84 + .../playwright-core/lib/client/jsHandle.js | 105 + .../playwright-core/lib/client/jsonPipe.js | 39 + .../playwright-core/lib/client/localUtils.js | 60 + .../playwright-core/lib/client/locator.js | 367 + .../playwright-core/lib/client/network.js | 750 + .../playwright-core/lib/client/page.js | 731 + .../playwright-core/lib/client/platform.js | 74 + .../playwright-core/lib/client/playwright.js | 71 + .../playwright-core/lib/client/screencast.js | 88 + .../playwright-core/lib/client/selectors.js | 57 + .../playwright-core/lib/client/stream.js | 39 + .../lib/client/timeoutSettings.js | 79 + .../playwright-core/lib/client/tracing.js | 126 + .../playwright-core/lib/client/types.js | 28 + .../playwright-core/lib/client/video.js | 52 + .../playwright-core/lib/client/waiter.js | 142 + .../playwright-core/lib/client/webError.js | 39 + .../playwright-core/lib/client/worker.js | 85 + .../lib/client/writableStream.js | 39 + .../lib/generated/bindingsControllerSource.js | 28 + .../lib/generated/clockSource.js | 28 + .../lib/generated/injectedScriptSource.js | 28 + .../lib/generated/pollingRecorderSource.js | 28 + .../lib/generated/storageScriptSource.js | 28 + .../lib/generated/utilityScriptSource.js | 28 + .../lib/generated/webSocketMockSource.js | 336 + .../playwright-core/lib/inProcessFactory.js | 60 + node_modules/playwright-core/lib/inprocess.js | 3 + node_modules/playwright-core/lib/mcpBundle.js | 78 + .../playwright-core/lib/mcpBundleImpl.js | 91 + .../playwright-core/lib/outofprocess.js | 76 + .../lib/protocol/serializers.js | 197 + .../playwright-core/lib/protocol/validator.js | 3067 ++ .../lib/protocol/validatorPrimitives.js | 193 + .../lib/remote/playwrightConnection.js | 131 + .../lib/remote/playwrightPipeServer.js | 100 + .../lib/remote/playwrightServer.js | 339 + .../lib/remote/playwrightWebSocketServer.js | 73 + .../lib/remote/serverTransport.js | 96 + .../lib/server/android/android.js | 465 + .../lib/server/android/backendAdb.js | 177 + .../playwright-core/lib/server/artifact.js | 127 + .../lib/server/bidi/bidiBrowser.js | 571 + .../lib/server/bidi/bidiChromium.js | 162 + .../lib/server/bidi/bidiConnection.js | 213 + .../lib/server/bidi/bidiDeserializer.js | 116 + .../lib/server/bidi/bidiExecutionContext.js | 267 + .../lib/server/bidi/bidiFirefox.js | 128 + .../lib/server/bidi/bidiInput.js | 146 + .../lib/server/bidi/bidiNetworkManager.js | 411 + .../lib/server/bidi/bidiOverCdp.js | 102 + .../lib/server/bidi/bidiPage.js | 599 + .../lib/server/bidi/bidiPdf.js | 106 + .../server/bidi/third_party/bidiCommands.d.js | 22 + .../server/bidi/third_party/bidiKeyboard.js | 256 + .../server/bidi/third_party/bidiProtocol.js | 24 + .../bidi/third_party/bidiProtocolCore.js | 180 + .../third_party/bidiProtocolPermissions.js | 42 + .../server/bidi/third_party/bidiSerializer.js | 148 + .../server/bidi/third_party/firefoxPrefs.js | 261 + .../playwright-core/lib/server/browser.js | 212 + .../lib/server/browserContext.js | 741 + .../playwright-core/lib/server/browserType.js | 338 + .../playwright-core/lib/server/callLog.js | 82 + .../lib/server/chromium/appIcon.png | Bin 0 -> 16565 bytes .../lib/server/chromium/chromium.js | 399 + .../lib/server/chromium/chromiumSwitches.js | 104 + .../lib/server/chromium/crBrowser.js | 528 + .../lib/server/chromium/crConnection.js | 197 + .../lib/server/chromium/crCoverage.js | 235 + .../lib/server/chromium/crDevTools.js | 111 + .../lib/server/chromium/crDragDrop.js | 131 + .../lib/server/chromium/crExecutionContext.js | 146 + .../lib/server/chromium/crInput.js | 187 + .../lib/server/chromium/crNetworkManager.js | 707 + .../lib/server/chromium/crPage.js | 963 + .../lib/server/chromium/crPdf.js | 121 + .../lib/server/chromium/crProtocolHelper.js | 145 + .../lib/server/chromium/crServiceWorker.js | 137 + .../server/chromium/defaultFontFamilies.js | 162 + .../lib/server/chromium/protocol.d.js | 16 + .../playwright-core/lib/server/clock.js | 149 + .../lib/server/codegen/csharp.js | 327 + .../lib/server/codegen/java.js | 274 + .../lib/server/codegen/javascript.js | 247 + .../lib/server/codegen/jsonl.js | 52 + .../lib/server/codegen/language.js | 132 + .../lib/server/codegen/languages.js | 68 + .../lib/server/codegen/python.js | 279 + .../lib/server/codegen/types.js | 16 + .../playwright-core/lib/server/console.js | 61 + .../playwright-core/lib/server/cookieStore.js | 206 + .../lib/server/debugController.js | 197 + .../playwright-core/lib/server/debugger.js | 112 + .../lib/server/deviceDescriptors.js | 39 + .../lib/server/deviceDescriptorsSource.json | 1779 ++ .../playwright-core/lib/server/dialog.js | 116 + .../server/dispatchers/androidDispatcher.js | 325 + .../server/dispatchers/artifactDispatcher.js | 118 + .../dispatchers/browserContextDispatcher.js | 381 + .../server/dispatchers/browserDispatcher.js | 124 + .../dispatchers/browserTypeDispatcher.js | 71 + .../dispatchers/cdpSessionDispatcher.js | 47 + .../dispatchers/debugControllerDispatcher.js | 78 + .../server/dispatchers/debuggerDispatcher.js | 84 + .../server/dispatchers/dialogDispatcher.js | 47 + .../lib/server/dispatchers/dispatcher.js | 364 + .../dispatchers/disposableDispatcher.js | 39 + .../server/dispatchers/electronDispatcher.js | 90 + .../dispatchers/elementHandlerDispatcher.js | 181 + .../lib/server/dispatchers/frameDispatcher.js | 227 + .../server/dispatchers/jsHandleDispatcher.js | 85 + .../server/dispatchers/jsonPipeDispatcher.js | 58 + .../dispatchers/localUtilsDispatcher.js | 185 + .../server/dispatchers/networkDispatchers.js | 214 + .../lib/server/dispatchers/pageDispatcher.js | 456 + .../dispatchers/playwrightDispatcher.js | 108 + .../server/dispatchers/streamDispatcher.js | 67 + .../server/dispatchers/tracingDispatcher.js | 68 + .../dispatchers/webSocketRouteDispatcher.js | 164 + .../dispatchers/writableStreamDispatcher.js | 79 + .../playwright-core/lib/server/disposable.js | 41 + .../playwright-core/lib/server/dom.js | 833 + .../playwright-core/lib/server/download.js | 71 + .../lib/server/electron/electron.js | 278 + .../lib/server/electron/loader.js | 29 + .../playwright-core/lib/server/errors.js | 69 + .../playwright-core/lib/server/fetch.js | 621 + .../playwright-core/lib/server/fileChooser.js | 43 + .../lib/server/fileUploadUtils.js | 84 + .../lib/server/firefox/ffBrowser.js | 408 + .../lib/server/firefox/ffConnection.js | 142 + .../lib/server/firefox/ffExecutionContext.js | 150 + .../lib/server/firefox/ffInput.js | 175 + .../lib/server/firefox/ffNetworkManager.js | 256 + .../lib/server/firefox/ffPage.js | 494 + .../lib/server/firefox/firefox.js | 114 + .../lib/server/firefox/protocol.d.js | 16 + .../playwright-core/lib/server/formData.js | 147 + .../lib/server/frameSelectors.js | 160 + .../playwright-core/lib/server/frames.js | 1500 + .../lib/server/har/harRecorder.js | 147 + .../lib/server/har/harTracer.js | 608 + .../playwright-core/lib/server/harBackend.js | 157 + .../playwright-core/lib/server/helper.js | 96 + .../playwright-core/lib/server/index.js | 58 + .../playwright-core/lib/server/input.js | 322 + .../lib/server/instrumentation.js | 77 + .../playwright-core/lib/server/javascript.js | 291 + .../playwright-core/lib/server/launchApp.js | 127 + .../playwright-core/lib/server/localUtils.js | 214 + .../lib/server/macEditingCommands.js | 143 + .../playwright-core/lib/server/network.js | 668 + .../playwright-core/lib/server/overlay.js | 138 + .../playwright-core/lib/server/page.js | 890 + .../lib/server/pipeTransport.js | 89 + .../playwright-core/lib/server/playwright.js | 69 + .../playwright-core/lib/server/progress.js | 138 + .../lib/server/protocolError.js | 52 + .../playwright-core/lib/server/recorder.js | 535 + .../lib/server/recorder/chat.js | 161 + .../lib/server/recorder/recorderApp.js | 367 + .../lib/server/recorder/recorderRunner.js | 138 + .../recorder/recorderSignalProcessor.js | 83 + .../lib/server/recorder/recorderUtils.js | 157 + .../lib/server/recorder/throttledFile.js | 57 + .../lib/server/registry/browserFetcher.js | 177 + .../lib/server/registry/dependencies.js | 371 + .../lib/server/registry/index.js | 1395 + .../lib/server/registry/nativeDeps.js | 1281 + .../server/registry/oopDownloadBrowserMain.js | 127 + .../playwright-core/lib/server/screencast.js | 137 + .../lib/server/screenshotter.js | 333 + .../playwright-core/lib/server/selectors.js | 112 + .../socksClientCertificatesInterceptor.js | 383 + .../lib/server/socksInterceptor.js | 95 + .../lib/server/trace/recorder/snapshotter.js | 147 + .../trace/recorder/snapshotterInjected.js | 561 + .../lib/server/trace/recorder/tracing.js | 655 + .../lib/server/trace/viewer/traceViewer.js | 244 + .../playwright-core/lib/server/transport.js | 181 + .../playwright-core/lib/server/types.js | 28 + .../lib/server/usKeyboardLayout.js | 152 + .../playwright-core/lib/server/utils/ascii.js | 44 + .../lib/server/utils/comparators.js | 139 + .../lib/server/utils/crypto.js | 216 + .../playwright-core/lib/server/utils/debug.js | 42 + .../lib/server/utils/debugLogger.js | 122 + .../lib/server/utils/disposable.js | 32 + .../playwright-core/lib/server/utils/env.js | 73 + .../lib/server/utils/eventsHelper.js | 41 + .../lib/server/utils/expectUtils.js | 123 + .../lib/server/utils/fileUtils.js | 205 + .../lib/server/utils/happyEyeballs.js | 210 + .../lib/server/utils/hostPlatform.js | 123 + .../lib/server/utils/httpServer.js | 205 + .../server/utils/image_tools/colorUtils.js | 89 + .../lib/server/utils/image_tools/compare.js | 109 + .../server/utils/image_tools/imageChannel.js | 78 + .../lib/server/utils/image_tools/stats.js | 102 + .../lib/server/utils/linuxUtils.js | 71 + .../lib/server/utils/network.js | 243 + .../lib/server/utils/nodePlatform.js | 148 + .../lib/server/utils/pipeTransport.js | 84 + .../lib/server/utils/processLauncher.js | 242 + .../lib/server/utils/profiler.js | 65 + .../lib/server/utils/socksProxy.js | 511 + .../lib/server/utils/spawnAsync.js | 41 + .../playwright-core/lib/server/utils/task.js | 51 + .../lib/server/utils/userAgent.js | 98 + .../lib/server/utils/wsServer.js | 121 + .../lib/server/utils/zipFile.js | 74 + .../playwright-core/lib/server/utils/zones.js | 57 + .../lib/server/videoRecorder.js | 194 + .../lib/server/webkit/protocol.d.js | 16 + .../lib/server/webkit/webkit.js | 108 + .../lib/server/webkit/wkBrowser.js | 330 + .../lib/server/webkit/wkConnection.js | 144 + .../lib/server/webkit/wkExecutionContext.js | 154 + .../lib/server/webkit/wkInput.js | 181 + .../server/webkit/wkInterceptableRequest.js | 197 + .../lib/server/webkit/wkPage.js | 1161 + .../lib/server/webkit/wkProvisionalPage.js | 83 + .../lib/server/webkit/wkWorkers.js | 106 + .../playwright-core/lib/serverRegistry.js | 156 + .../lib/third_party/pixelmatch.js | 255 + .../lib/tools/backend/browserBackend.js | 79 + .../lib/tools/backend/common.js | 63 + .../lib/tools/backend/config.js | 41 + .../lib/tools/backend/console.js | 66 + .../lib/tools/backend/context.js | 296 + .../lib/tools/backend/cookies.js | 152 + .../lib/tools/backend/devtools.js | 69 + .../lib/tools/backend/dialogs.js | 59 + .../lib/tools/backend/evaluate.js | 64 + .../lib/tools/backend/files.js | 60 + .../playwright-core/lib/tools/backend/form.js | 64 + .../lib/tools/backend/keyboard.js | 155 + .../lib/tools/backend/logFile.js | 95 + .../lib/tools/backend/mouse.js | 168 + .../lib/tools/backend/navigate.js | 106 + .../lib/tools/backend/network.js | 135 + .../playwright-core/lib/tools/backend/pdf.js | 48 + .../lib/tools/backend/response.js | 305 + .../lib/tools/backend/route.js | 140 + .../lib/tools/backend/runCode.js | 77 + .../lib/tools/backend/screenshot.js | 88 + .../lib/tools/backend/sessionLog.js | 74 + .../lib/tools/backend/snapshot.js | 208 + .../lib/tools/backend/storage.js | 68 + .../playwright-core/lib/tools/backend/tab.js | 445 + .../playwright-core/lib/tools/backend/tabs.js | 67 + .../playwright-core/lib/tools/backend/tool.js | 47 + .../lib/tools/backend/tools.js | 102 + .../lib/tools/backend/tracing.js | 78 + .../lib/tools/backend/utils.js | 83 + .../lib/tools/backend/verify.js | 151 + .../lib/tools/backend/video.js | 98 + .../playwright-core/lib/tools/backend/wait.js | 63 + .../lib/tools/backend/webstorage.js | 223 + .../lib/tools/cli-client/cli.js | 6 + .../lib/tools/cli-client/help.json | 399 + .../lib/tools/cli-client/minimist.js | 128 + .../lib/tools/cli-client/program.js | 350 + .../lib/tools/cli-client/registry.js | 176 + .../lib/tools/cli-client/session.js | 289 + .../lib/tools/cli-client/skill/SKILL.md | 328 + .../skill/references/element-attributes.md | 23 + .../skill/references/playwright-tests.md | 39 + .../skill/references/request-mocking.md | 87 + .../skill/references/running-code.md | 231 + .../skill/references/session-management.md | 169 + .../skill/references/storage-state.md | 275 + .../skill/references/test-generation.md | 88 + .../cli-client/skill/references/tracing.md | 139 + .../skill/references/video-recording.md | 143 + .../lib/tools/cli-daemon/command.js | 73 + .../lib/tools/cli-daemon/commands.js | 956 + .../lib/tools/cli-daemon/daemon.js | 157 + .../lib/tools/cli-daemon/helpGenerator.js | 177 + .../lib/tools/cli-daemon/program.js | 129 + .../lib/tools/dashboard/appIcon.png | Bin 0 -> 16565 bytes .../lib/tools/dashboard/dashboardApp.js | 284 + .../tools/dashboard/dashboardController.js | 296 + .../playwright-core/lib/tools/exports.js | 60 + .../lib/tools/mcp/browserFactory.js | 233 + .../playwright-core/lib/tools/mcp/cdpRelay.js | 352 + .../playwright-core/lib/tools/mcp/cli-stub.js | 7 + .../playwright-core/lib/tools/mcp/config.d.js | 16 + .../playwright-core/lib/tools/mcp/config.js | 446 + .../lib/tools/mcp/configIni.js | 189 + .../lib/tools/mcp/extensionContextFactory.js | 55 + .../playwright-core/lib/tools/mcp/index.js | 62 + .../playwright-core/lib/tools/mcp/log.js | 35 + .../playwright-core/lib/tools/mcp/program.js | 107 + .../playwright-core/lib/tools/mcp/protocol.js | 28 + .../playwright-core/lib/tools/mcp/watchdog.js | 44 + .../playwright-core/lib/tools/trace/SKILL.md | 171 + .../lib/tools/trace/installSkill.js | 48 + .../lib/tools/trace/traceActions.js | 142 + .../lib/tools/trace/traceAttachments.js | 69 + .../lib/tools/trace/traceCli.js | 87 + .../lib/tools/trace/traceConsole.js | 97 + .../lib/tools/trace/traceErrors.js | 55 + .../lib/tools/trace/traceOpen.js | 69 + .../lib/tools/trace/traceParser.js | 96 + .../lib/tools/trace/traceRequests.js | 182 + .../lib/tools/trace/traceScreenshot.js | 68 + .../lib/tools/trace/traceSnapshot.js | 149 + .../lib/tools/trace/traceUtils.js | 153 + .../lib/tools/utils/connect.js | 32 + .../lib/tools/utils/mcp/http.js | 152 + .../lib/tools/utils/mcp/server.js | 230 + .../lib/tools/utils/mcp/tool.js | 47 + .../lib/tools/utils/socketConnection.js | 108 + node_modules/playwright-core/lib/utils.js | 115 + .../lib/utils/isomorphic/ariaSnapshot.js | 455 + .../lib/utils/isomorphic/assert.js | 31 + .../lib/utils/isomorphic/colors.js | 72 + .../lib/utils/isomorphic/cssParser.js | 245 + .../lib/utils/isomorphic/cssTokenizer.js | 1051 + .../lib/utils/isomorphic/formatUtils.js | 64 + .../lib/utils/isomorphic/headers.js | 53 + .../lib/utils/isomorphic/imageUtils.js | 141 + .../lib/utils/isomorphic/jsonSchema.js | 89 + .../lib/utils/isomorphic/locatorGenerators.js | 689 + .../lib/utils/isomorphic/locatorParser.js | 176 + .../lib/utils/isomorphic/locatorUtils.js | 81 + .../lib/utils/isomorphic/lruCache.js | 51 + .../lib/utils/isomorphic/manualPromise.js | 114 + .../lib/utils/isomorphic/mimeType.js | 464 + .../lib/utils/isomorphic/multimap.js | 80 + .../lib/utils/isomorphic/protocolFormatter.js | 81 + .../lib/utils/isomorphic/protocolMetainfo.js | 351 + .../lib/utils/isomorphic/rtti.js | 43 + .../lib/utils/isomorphic/selectorParser.js | 386 + .../lib/utils/isomorphic/semaphore.js | 54 + .../lib/utils/isomorphic/stackTrace.js | 158 + .../lib/utils/isomorphic/stringUtils.js | 204 + .../lib/utils/isomorphic/time.js | 49 + .../lib/utils/isomorphic/timeoutRunner.js | 66 + .../lib/utils/isomorphic/trace/entries.js | 16 + .../isomorphic/trace/snapshotRenderer.js | 492 + .../utils/isomorphic/trace/snapshotServer.js | 120 + .../utils/isomorphic/trace/snapshotStorage.js | 89 + .../lib/utils/isomorphic/trace/traceLoader.js | 132 + .../lib/utils/isomorphic/trace/traceModel.js | 366 + .../utils/isomorphic/trace/traceModernizer.js | 401 + .../lib/utils/isomorphic/trace/traceUtils.js | 58 + .../isomorphic/trace/versions/traceV3.js | 16 + .../isomorphic/trace/versions/traceV4.js | 16 + .../isomorphic/trace/versions/traceV5.js | 16 + .../isomorphic/trace/versions/traceV6.js | 16 + .../isomorphic/trace/versions/traceV7.js | 16 + .../isomorphic/trace/versions/traceV8.js | 16 + .../lib/utils/isomorphic/types.js | 16 + .../lib/utils/isomorphic/urlMatch.js | 243 + .../isomorphic/utilityScriptSerializers.js | 262 + .../lib/utils/isomorphic/yaml.js | 84 + .../playwright-core/lib/utilsBundle.js | 91 + .../lib/utilsBundleImpl/index.js | 217 + .../lib/utilsBundleImpl/xdg-open | 1066 + .../vite/dashboard/assets/index-BAOybkp8.js | 50 + .../vite/dashboard/assets/index-CZAYOG76.css | 1 + .../lib/vite/dashboard/index.html | 28 + .../lib/vite/htmlReport/index.html | 16 + .../lib/vite/htmlReport/report.css | 1 + .../lib/vite/htmlReport/report.js | 72 + .../assets/codeMirrorModule-C8KMvO9L.js | 32 + .../assets/codeMirrorModule-DYBRYzYX.css | 1 + .../vite/recorder/assets/codicon-DCmgc-ay.ttf | Bin 0 -> 80340 bytes .../vite/recorder/assets/index-BSjZa4pk.css | 1 + .../vite/recorder/assets/index-CqAYX1I3.js | 193 + .../lib/vite/recorder/index.html | 29 + .../lib/vite/recorder/playwright-logo.svg | 9 + .../assets/codeMirrorModule-DS0FLvoc.js | 32 + .../assets/defaultSettingsView-GTWI-W_B.js | 262 + .../assets/xtermModule-CsJ4vdCR.js | 9 + .../traceViewer/codeMirrorModule.DYBRYzYX.css | 1 + .../lib/vite/traceViewer/codicon.DCmgc-ay.ttf | Bin 0 -> 80340 bytes .../defaultSettingsView.B4dS75f0.css | 1 + .../lib/vite/traceViewer/index.C5466mMT.js | 2 + .../lib/vite/traceViewer/index.CzXZzn5A.css | 1 + .../lib/vite/traceViewer/index.html | 43 + .../lib/vite/traceViewer/manifest.webmanifest | 16 + .../lib/vite/traceViewer/playwright-logo.svg | 9 + .../lib/vite/traceViewer/snapshot.html | 21 + .../lib/vite/traceViewer/sw.bundle.js | 5 + .../lib/vite/traceViewer/uiMode.Btcz36p_.css | 1 + .../lib/vite/traceViewer/uiMode.Vipi55dB.js | 6 + .../lib/vite/traceViewer/uiMode.html | 17 + .../vite/traceViewer/xtermModule.DYP7pi_n.css | 32 + node_modules/playwright-core/lib/zipBundle.js | 34 + .../playwright-core/lib/zipBundleImpl.js | 5 + node_modules/playwright-core/lib/zodBundle.js | 39 + .../playwright-core/lib/zodBundleImpl.js | 40 + node_modules/playwright-core/package.json | 48 + .../playwright-core/types/protocol.d.ts | 24720 ++++++++++++++++ .../playwright-core/types/structs.d.ts | 45 + node_modules/playwright-core/types/types.d.ts | 23623 +++++++++++++++ node_modules/playwright/LICENSE | 202 + node_modules/playwright/NOTICE | 5 + node_modules/playwright/README.md | 170 + node_modules/playwright/ThirdPartyNotices.txt | 3919 +++ node_modules/playwright/cli.js | 19 + node_modules/playwright/index.d.ts | 17 + node_modules/playwright/index.js | 17 + node_modules/playwright/index.mjs | 18 + node_modules/playwright/jsx-runtime.js | 42 + node_modules/playwright/jsx-runtime.mjs | 21 + .../playwright/lib/agents/agentParser.js | 89 + .../lib/agents/copilot-setup-steps.yml | 34 + .../playwright/lib/agents/generateAgents.js | 346 + .../agents/playwright-test-coverage.prompt.md | 31 + .../agents/playwright-test-generate.prompt.md | 8 + .../agents/playwright-test-generator.agent.md | 88 + .../lib/agents/playwright-test-heal.prompt.md | 6 + .../agents/playwright-test-healer.agent.md | 55 + .../lib/agents/playwright-test-plan.prompt.md | 9 + .../agents/playwright-test-planner.agent.md | 73 + node_modules/playwright/lib/common/config.js | 281 + .../playwright/lib/common/configLoader.js | 344 + .../playwright/lib/common/esmLoaderHost.js | 104 + .../playwright/lib/common/expectBundle.js | 28 + .../playwright/lib/common/expectBundleImpl.js | 407 + .../playwright/lib/common/fixtures.js | 302 + node_modules/playwright/lib/common/globals.js | 58 + node_modules/playwright/lib/common/ipc.js | 60 + .../playwright/lib/common/poolBuilder.js | 85 + node_modules/playwright/lib/common/process.js | 133 + .../playwright/lib/common/suiteUtils.js | 140 + node_modules/playwright/lib/common/test.js | 330 + .../playwright/lib/common/testLoader.js | 101 + .../playwright/lib/common/testType.js | 301 + .../playwright/lib/common/validators.js | 68 + node_modules/playwright/lib/errorContext.js | 121 + node_modules/playwright/lib/fsWatcher.js | 67 + node_modules/playwright/lib/index.js | 764 + .../playwright/lib/internalsForTest.js | 42 + .../playwright/lib/isomorphic/events.js | 77 + .../playwright/lib/isomorphic/folders.js | 30 + .../lib/isomorphic/stringInternPool.js | 69 + .../playwright/lib/isomorphic/teleReceiver.js | 538 + .../lib/isomorphic/teleSuiteUpdater.js | 157 + .../lib/isomorphic/testServerConnection.js | 223 + .../lib/isomorphic/testServerInterface.js | 16 + .../playwright/lib/isomorphic/testTree.js | 329 + .../playwright/lib/isomorphic/types.d.js | 16 + .../playwright/lib/loader/loaderMain.js | 59 + .../playwright/lib/matchers/expect.js | 311 + .../playwright/lib/matchers/matcherHint.js | 44 + .../playwright/lib/matchers/matchers.js | 385 + .../playwright/lib/matchers/toBeTruthy.js | 75 + .../playwright/lib/matchers/toEqual.js | 100 + .../playwright/lib/matchers/toHaveURL.js | 101 + .../lib/matchers/toMatchAriaSnapshot.js | 163 + .../lib/matchers/toMatchSnapshot.js | 349 + .../playwright/lib/matchers/toMatchText.js | 99 + .../playwright/lib/mcp/test/browserBackend.js | 121 + .../playwright/lib/mcp/test/generatorTools.js | 122 + .../playwright/lib/mcp/test/plannerTools.js | 145 + node_modules/playwright/lib/mcp/test/seed.js | 82 + .../playwright/lib/mcp/test/streams.js | 44 + .../playwright/lib/mcp/test/testBackend.js | 99 + .../playwright/lib/mcp/test/testContext.js | 283 + .../playwright/lib/mcp/test/testTool.js | 30 + .../playwright/lib/mcp/test/testTools.js | 108 + .../lib/plugins/gitCommitInfoPlugin.js | 198 + node_modules/playwright/lib/plugins/index.js | 28 + .../playwright/lib/plugins/webServerPlugin.js | 238 + node_modules/playwright/lib/program.js | 239 + node_modules/playwright/lib/reportActions.js | 80 + node_modules/playwright/lib/reporters/base.js | 633 + node_modules/playwright/lib/reporters/blob.js | 138 + node_modules/playwright/lib/reporters/dot.js | 99 + .../playwright/lib/reporters/empty.js | 32 + .../playwright/lib/reporters/github.js | 127 + node_modules/playwright/lib/reporters/html.js | 666 + .../lib/reporters/internalReporter.js | 138 + node_modules/playwright/lib/reporters/json.js | 254 + .../playwright/lib/reporters/junit.js | 321 + node_modules/playwright/lib/reporters/line.js | 131 + node_modules/playwright/lib/reporters/list.js | 252 + .../lib/reporters/listModeReporter.js | 69 + .../playwright/lib/reporters/markdown.js | 144 + .../playwright/lib/reporters/merge.js | 579 + .../playwright/lib/reporters/multiplexer.js | 116 + .../playwright/lib/reporters/reporterV2.js | 102 + .../playwright/lib/reporters/teleEmitter.js | 319 + .../lib/reporters/versions/blobV1.js | 16 + .../playwright/lib/runner/dispatcher.js | 522 + .../playwright/lib/runner/failureTracker.js | 72 + node_modules/playwright/lib/runner/lastRun.js | 77 + .../playwright/lib/runner/loadUtils.js | 340 + .../playwright/lib/runner/loaderHost.js | 89 + .../playwright/lib/runner/processHost.js | 180 + .../playwright/lib/runner/projectUtils.js | 241 + node_modules/playwright/lib/runner/rebase.js | 189 + .../playwright/lib/runner/reporters.js | 143 + .../playwright/lib/runner/sigIntWatcher.js | 96 + .../playwright/lib/runner/taskRunner.js | 127 + node_modules/playwright/lib/runner/tasks.js | 413 + .../playwright/lib/runner/testGroups.js | 125 + .../playwright/lib/runner/testRunner.js | 398 + .../playwright/lib/runner/testServer.js | 269 + .../playwright/lib/runner/uiModeReporter.js | 30 + node_modules/playwright/lib/runner/vcs.js | 72 + .../playwright/lib/runner/watchMode.js | 396 + .../playwright/lib/runner/workerHost.js | 101 + node_modules/playwright/lib/testActions.js | 220 + .../playwright/lib/third_party/pirates.js | 62 + .../lib/third_party/tsconfig-loader.js | 103 + .../playwright/lib/transform/babelBundle.js | 43 + .../lib/transform/babelBundleImpl.js | 461 + .../lib/transform/compilationCache.js | 272 + .../playwright/lib/transform/esmLoader.js | 105 + .../playwright/lib/transform/portTransport.js | 67 + .../playwright/lib/transform/transform.js | 296 + node_modules/playwright/lib/util.js | 400 + node_modules/playwright/lib/utilsBundle.js | 43 + .../playwright/lib/utilsBundleImpl.js | 100 + .../playwright/lib/worker/fixtureRunner.js | 262 + .../playwright/lib/worker/testInfo.js | 532 + .../playwright/lib/worker/testTracing.js | 351 + .../playwright/lib/worker/timeoutManager.js | 185 + node_modules/playwright/lib/worker/util.js | 31 + .../playwright/lib/worker/workerMain.js | 533 + node_modules/playwright/package.json | 68 + node_modules/playwright/test.d.ts | 18 + node_modules/playwright/test.js | 24 + node_modules/playwright/test.mjs | 34 + node_modules/playwright/types/test.d.ts | 10322 +++++++ .../playwright/types/testReporter.d.ts | 822 + orchestrator.py | 16 +- package-lock.json | 56 + package.json | 5 + session_manager.py | 140 + templates/index.html | 35 +- 613 files changed, 169969 insertions(+), 60 deletions(-) create mode 100644 browser_cloud.py create mode 120000 node_modules/.bin/playwright create mode 120000 node_modules/.bin/playwright-core create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/playwright-core/LICENSE create mode 100644 node_modules/playwright-core/NOTICE create mode 100644 node_modules/playwright-core/README.md create mode 100644 node_modules/playwright-core/ThirdPartyNotices.txt create mode 100644 node_modules/playwright-core/bin/install_media_pack.ps1 create mode 100644 node_modules/playwright-core/bin/install_webkit_wsl.ps1 create mode 100644 node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh create mode 100644 node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh create mode 100644 node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 create mode 100644 node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh create mode 100644 node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh create mode 100644 node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 create mode 100644 node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh create mode 100644 node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh create mode 100644 node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 create mode 100644 node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh create mode 100644 node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh create mode 100644 node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 create mode 100644 node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh create mode 100644 node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh create mode 100644 node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 create mode 100644 node_modules/playwright-core/browsers.json create mode 100644 node_modules/playwright-core/cli.js create mode 100644 node_modules/playwright-core/index.d.ts create mode 100644 node_modules/playwright-core/index.js create mode 100644 node_modules/playwright-core/index.mjs create mode 100644 node_modules/playwright-core/lib/androidServerImpl.js create mode 100644 node_modules/playwright-core/lib/bootstrap.js create mode 100644 node_modules/playwright-core/lib/browserServerImpl.js create mode 100644 node_modules/playwright-core/lib/cli/browserActions.js create mode 100644 node_modules/playwright-core/lib/cli/driver.js create mode 100644 node_modules/playwright-core/lib/cli/installActions.js create mode 100644 node_modules/playwright-core/lib/cli/program.js create mode 100644 node_modules/playwright-core/lib/cli/programWithTestStub.js create mode 100644 node_modules/playwright-core/lib/client/android.js create mode 100644 node_modules/playwright-core/lib/client/api.js create mode 100644 node_modules/playwright-core/lib/client/artifact.js create mode 100644 node_modules/playwright-core/lib/client/browser.js create mode 100644 node_modules/playwright-core/lib/client/browserContext.js create mode 100644 node_modules/playwright-core/lib/client/browserType.js create mode 100644 node_modules/playwright-core/lib/client/cdpSession.js create mode 100644 node_modules/playwright-core/lib/client/channelOwner.js create mode 100644 node_modules/playwright-core/lib/client/clientHelper.js create mode 100644 node_modules/playwright-core/lib/client/clientInstrumentation.js create mode 100644 node_modules/playwright-core/lib/client/clientStackTrace.js create mode 100644 node_modules/playwright-core/lib/client/clock.js create mode 100644 node_modules/playwright-core/lib/client/connect.js create mode 100644 node_modules/playwright-core/lib/client/connection.js create mode 100644 node_modules/playwright-core/lib/client/consoleMessage.js create mode 100644 node_modules/playwright-core/lib/client/coverage.js create mode 100644 node_modules/playwright-core/lib/client/debugger.js create mode 100644 node_modules/playwright-core/lib/client/dialog.js create mode 100644 node_modules/playwright-core/lib/client/disposable.js create mode 100644 node_modules/playwright-core/lib/client/download.js create mode 100644 node_modules/playwright-core/lib/client/electron.js create mode 100644 node_modules/playwright-core/lib/client/elementHandle.js create mode 100644 node_modules/playwright-core/lib/client/errors.js create mode 100644 node_modules/playwright-core/lib/client/eventEmitter.js create mode 100644 node_modules/playwright-core/lib/client/events.js create mode 100644 node_modules/playwright-core/lib/client/fetch.js create mode 100644 node_modules/playwright-core/lib/client/fileChooser.js create mode 100644 node_modules/playwright-core/lib/client/fileUtils.js create mode 100644 node_modules/playwright-core/lib/client/frame.js create mode 100644 node_modules/playwright-core/lib/client/harRouter.js create mode 100644 node_modules/playwright-core/lib/client/input.js create mode 100644 node_modules/playwright-core/lib/client/jsHandle.js create mode 100644 node_modules/playwright-core/lib/client/jsonPipe.js create mode 100644 node_modules/playwright-core/lib/client/localUtils.js create mode 100644 node_modules/playwright-core/lib/client/locator.js create mode 100644 node_modules/playwright-core/lib/client/network.js create mode 100644 node_modules/playwright-core/lib/client/page.js create mode 100644 node_modules/playwright-core/lib/client/platform.js create mode 100644 node_modules/playwright-core/lib/client/playwright.js create mode 100644 node_modules/playwright-core/lib/client/screencast.js create mode 100644 node_modules/playwright-core/lib/client/selectors.js create mode 100644 node_modules/playwright-core/lib/client/stream.js create mode 100644 node_modules/playwright-core/lib/client/timeoutSettings.js create mode 100644 node_modules/playwright-core/lib/client/tracing.js create mode 100644 node_modules/playwright-core/lib/client/types.js create mode 100644 node_modules/playwright-core/lib/client/video.js create mode 100644 node_modules/playwright-core/lib/client/waiter.js create mode 100644 node_modules/playwright-core/lib/client/webError.js create mode 100644 node_modules/playwright-core/lib/client/worker.js create mode 100644 node_modules/playwright-core/lib/client/writableStream.js create mode 100644 node_modules/playwright-core/lib/generated/bindingsControllerSource.js create mode 100644 node_modules/playwright-core/lib/generated/clockSource.js create mode 100644 node_modules/playwright-core/lib/generated/injectedScriptSource.js create mode 100644 node_modules/playwright-core/lib/generated/pollingRecorderSource.js create mode 100644 node_modules/playwright-core/lib/generated/storageScriptSource.js create mode 100644 node_modules/playwright-core/lib/generated/utilityScriptSource.js create mode 100644 node_modules/playwright-core/lib/generated/webSocketMockSource.js create mode 100644 node_modules/playwright-core/lib/inProcessFactory.js create mode 100644 node_modules/playwright-core/lib/inprocess.js create mode 100644 node_modules/playwright-core/lib/mcpBundle.js create mode 100644 node_modules/playwright-core/lib/mcpBundleImpl.js create mode 100644 node_modules/playwright-core/lib/outofprocess.js create mode 100644 node_modules/playwright-core/lib/protocol/serializers.js create mode 100644 node_modules/playwright-core/lib/protocol/validator.js create mode 100644 node_modules/playwright-core/lib/protocol/validatorPrimitives.js create mode 100644 node_modules/playwright-core/lib/remote/playwrightConnection.js create mode 100644 node_modules/playwright-core/lib/remote/playwrightPipeServer.js create mode 100644 node_modules/playwright-core/lib/remote/playwrightServer.js create mode 100644 node_modules/playwright-core/lib/remote/playwrightWebSocketServer.js create mode 100644 node_modules/playwright-core/lib/remote/serverTransport.js create mode 100644 node_modules/playwright-core/lib/server/android/android.js create mode 100644 node_modules/playwright-core/lib/server/android/backendAdb.js create mode 100644 node_modules/playwright-core/lib/server/artifact.js create mode 100644 node_modules/playwright-core/lib/server/bidi/bidiBrowser.js create mode 100644 node_modules/playwright-core/lib/server/bidi/bidiChromium.js create mode 100644 node_modules/playwright-core/lib/server/bidi/bidiConnection.js create mode 100644 node_modules/playwright-core/lib/server/bidi/bidiDeserializer.js create mode 100644 node_modules/playwright-core/lib/server/bidi/bidiExecutionContext.js create mode 100644 node_modules/playwright-core/lib/server/bidi/bidiFirefox.js create mode 100644 node_modules/playwright-core/lib/server/bidi/bidiInput.js create mode 100644 node_modules/playwright-core/lib/server/bidi/bidiNetworkManager.js create mode 100644 node_modules/playwright-core/lib/server/bidi/bidiOverCdp.js create mode 100644 node_modules/playwright-core/lib/server/bidi/bidiPage.js create mode 100644 node_modules/playwright-core/lib/server/bidi/bidiPdf.js create mode 100644 node_modules/playwright-core/lib/server/bidi/third_party/bidiCommands.d.js create mode 100644 node_modules/playwright-core/lib/server/bidi/third_party/bidiKeyboard.js create mode 100644 node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocol.js create mode 100644 node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolCore.js create mode 100644 node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolPermissions.js create mode 100644 node_modules/playwright-core/lib/server/bidi/third_party/bidiSerializer.js create mode 100644 node_modules/playwright-core/lib/server/bidi/third_party/firefoxPrefs.js create mode 100644 node_modules/playwright-core/lib/server/browser.js create mode 100644 node_modules/playwright-core/lib/server/browserContext.js create mode 100644 node_modules/playwright-core/lib/server/browserType.js create mode 100644 node_modules/playwright-core/lib/server/callLog.js create mode 100644 node_modules/playwright-core/lib/server/chromium/appIcon.png create mode 100644 node_modules/playwright-core/lib/server/chromium/chromium.js create mode 100644 node_modules/playwright-core/lib/server/chromium/chromiumSwitches.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crBrowser.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crConnection.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crCoverage.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crDevTools.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crDragDrop.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crExecutionContext.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crInput.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crNetworkManager.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crPage.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crPdf.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crProtocolHelper.js create mode 100644 node_modules/playwright-core/lib/server/chromium/crServiceWorker.js create mode 100644 node_modules/playwright-core/lib/server/chromium/defaultFontFamilies.js create mode 100644 node_modules/playwright-core/lib/server/chromium/protocol.d.js create mode 100644 node_modules/playwright-core/lib/server/clock.js create mode 100644 node_modules/playwright-core/lib/server/codegen/csharp.js create mode 100644 node_modules/playwright-core/lib/server/codegen/java.js create mode 100644 node_modules/playwright-core/lib/server/codegen/javascript.js create mode 100644 node_modules/playwright-core/lib/server/codegen/jsonl.js create mode 100644 node_modules/playwright-core/lib/server/codegen/language.js create mode 100644 node_modules/playwright-core/lib/server/codegen/languages.js create mode 100644 node_modules/playwright-core/lib/server/codegen/python.js create mode 100644 node_modules/playwright-core/lib/server/codegen/types.js create mode 100644 node_modules/playwright-core/lib/server/console.js create mode 100644 node_modules/playwright-core/lib/server/cookieStore.js create mode 100644 node_modules/playwright-core/lib/server/debugController.js create mode 100644 node_modules/playwright-core/lib/server/debugger.js create mode 100644 node_modules/playwright-core/lib/server/deviceDescriptors.js create mode 100644 node_modules/playwright-core/lib/server/deviceDescriptorsSource.json create mode 100644 node_modules/playwright-core/lib/server/dialog.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/androidDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/artifactDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/browserContextDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/browserDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/browserTypeDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/cdpSessionDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/debugControllerDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/debuggerDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/dialogDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/dispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/disposableDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/electronDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/elementHandlerDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/frameDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/jsHandleDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/jsonPipeDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/localUtilsDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/networkDispatchers.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/pageDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/playwrightDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/streamDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/tracingDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/webSocketRouteDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/dispatchers/writableStreamDispatcher.js create mode 100644 node_modules/playwright-core/lib/server/disposable.js create mode 100644 node_modules/playwright-core/lib/server/dom.js create mode 100644 node_modules/playwright-core/lib/server/download.js create mode 100644 node_modules/playwright-core/lib/server/electron/electron.js create mode 100644 node_modules/playwright-core/lib/server/electron/loader.js create mode 100644 node_modules/playwright-core/lib/server/errors.js create mode 100644 node_modules/playwright-core/lib/server/fetch.js create mode 100644 node_modules/playwright-core/lib/server/fileChooser.js create mode 100644 node_modules/playwright-core/lib/server/fileUploadUtils.js create mode 100644 node_modules/playwright-core/lib/server/firefox/ffBrowser.js create mode 100644 node_modules/playwright-core/lib/server/firefox/ffConnection.js create mode 100644 node_modules/playwright-core/lib/server/firefox/ffExecutionContext.js create mode 100644 node_modules/playwright-core/lib/server/firefox/ffInput.js create mode 100644 node_modules/playwright-core/lib/server/firefox/ffNetworkManager.js create mode 100644 node_modules/playwright-core/lib/server/firefox/ffPage.js create mode 100644 node_modules/playwright-core/lib/server/firefox/firefox.js create mode 100644 node_modules/playwright-core/lib/server/firefox/protocol.d.js create mode 100644 node_modules/playwright-core/lib/server/formData.js create mode 100644 node_modules/playwright-core/lib/server/frameSelectors.js create mode 100644 node_modules/playwright-core/lib/server/frames.js create mode 100644 node_modules/playwright-core/lib/server/har/harRecorder.js create mode 100644 node_modules/playwright-core/lib/server/har/harTracer.js create mode 100644 node_modules/playwright-core/lib/server/harBackend.js create mode 100644 node_modules/playwright-core/lib/server/helper.js create mode 100644 node_modules/playwright-core/lib/server/index.js create mode 100644 node_modules/playwright-core/lib/server/input.js create mode 100644 node_modules/playwright-core/lib/server/instrumentation.js create mode 100644 node_modules/playwright-core/lib/server/javascript.js create mode 100644 node_modules/playwright-core/lib/server/launchApp.js create mode 100644 node_modules/playwright-core/lib/server/localUtils.js create mode 100644 node_modules/playwright-core/lib/server/macEditingCommands.js create mode 100644 node_modules/playwright-core/lib/server/network.js create mode 100644 node_modules/playwright-core/lib/server/overlay.js create mode 100644 node_modules/playwright-core/lib/server/page.js create mode 100644 node_modules/playwright-core/lib/server/pipeTransport.js create mode 100644 node_modules/playwright-core/lib/server/playwright.js create mode 100644 node_modules/playwright-core/lib/server/progress.js create mode 100644 node_modules/playwright-core/lib/server/protocolError.js create mode 100644 node_modules/playwright-core/lib/server/recorder.js create mode 100644 node_modules/playwright-core/lib/server/recorder/chat.js create mode 100644 node_modules/playwright-core/lib/server/recorder/recorderApp.js create mode 100644 node_modules/playwright-core/lib/server/recorder/recorderRunner.js create mode 100644 node_modules/playwright-core/lib/server/recorder/recorderSignalProcessor.js create mode 100644 node_modules/playwright-core/lib/server/recorder/recorderUtils.js create mode 100644 node_modules/playwright-core/lib/server/recorder/throttledFile.js create mode 100644 node_modules/playwright-core/lib/server/registry/browserFetcher.js create mode 100644 node_modules/playwright-core/lib/server/registry/dependencies.js create mode 100644 node_modules/playwright-core/lib/server/registry/index.js create mode 100644 node_modules/playwright-core/lib/server/registry/nativeDeps.js create mode 100644 node_modules/playwright-core/lib/server/registry/oopDownloadBrowserMain.js create mode 100644 node_modules/playwright-core/lib/server/screencast.js create mode 100644 node_modules/playwright-core/lib/server/screenshotter.js create mode 100644 node_modules/playwright-core/lib/server/selectors.js create mode 100644 node_modules/playwright-core/lib/server/socksClientCertificatesInterceptor.js create mode 100644 node_modules/playwright-core/lib/server/socksInterceptor.js create mode 100644 node_modules/playwright-core/lib/server/trace/recorder/snapshotter.js create mode 100644 node_modules/playwright-core/lib/server/trace/recorder/snapshotterInjected.js create mode 100644 node_modules/playwright-core/lib/server/trace/recorder/tracing.js create mode 100644 node_modules/playwright-core/lib/server/trace/viewer/traceViewer.js create mode 100644 node_modules/playwright-core/lib/server/transport.js create mode 100644 node_modules/playwright-core/lib/server/types.js create mode 100644 node_modules/playwright-core/lib/server/usKeyboardLayout.js create mode 100644 node_modules/playwright-core/lib/server/utils/ascii.js create mode 100644 node_modules/playwright-core/lib/server/utils/comparators.js create mode 100644 node_modules/playwright-core/lib/server/utils/crypto.js create mode 100644 node_modules/playwright-core/lib/server/utils/debug.js create mode 100644 node_modules/playwright-core/lib/server/utils/debugLogger.js create mode 100644 node_modules/playwright-core/lib/server/utils/disposable.js create mode 100644 node_modules/playwright-core/lib/server/utils/env.js create mode 100644 node_modules/playwright-core/lib/server/utils/eventsHelper.js create mode 100644 node_modules/playwright-core/lib/server/utils/expectUtils.js create mode 100644 node_modules/playwright-core/lib/server/utils/fileUtils.js create mode 100644 node_modules/playwright-core/lib/server/utils/happyEyeballs.js create mode 100644 node_modules/playwright-core/lib/server/utils/hostPlatform.js create mode 100644 node_modules/playwright-core/lib/server/utils/httpServer.js create mode 100644 node_modules/playwright-core/lib/server/utils/image_tools/colorUtils.js create mode 100644 node_modules/playwright-core/lib/server/utils/image_tools/compare.js create mode 100644 node_modules/playwright-core/lib/server/utils/image_tools/imageChannel.js create mode 100644 node_modules/playwright-core/lib/server/utils/image_tools/stats.js create mode 100644 node_modules/playwright-core/lib/server/utils/linuxUtils.js create mode 100644 node_modules/playwright-core/lib/server/utils/network.js create mode 100644 node_modules/playwright-core/lib/server/utils/nodePlatform.js create mode 100644 node_modules/playwright-core/lib/server/utils/pipeTransport.js create mode 100644 node_modules/playwright-core/lib/server/utils/processLauncher.js create mode 100644 node_modules/playwright-core/lib/server/utils/profiler.js create mode 100644 node_modules/playwright-core/lib/server/utils/socksProxy.js create mode 100644 node_modules/playwright-core/lib/server/utils/spawnAsync.js create mode 100644 node_modules/playwright-core/lib/server/utils/task.js create mode 100644 node_modules/playwright-core/lib/server/utils/userAgent.js create mode 100644 node_modules/playwright-core/lib/server/utils/wsServer.js create mode 100644 node_modules/playwright-core/lib/server/utils/zipFile.js create mode 100644 node_modules/playwright-core/lib/server/utils/zones.js create mode 100644 node_modules/playwright-core/lib/server/videoRecorder.js create mode 100644 node_modules/playwright-core/lib/server/webkit/protocol.d.js create mode 100644 node_modules/playwright-core/lib/server/webkit/webkit.js create mode 100644 node_modules/playwright-core/lib/server/webkit/wkBrowser.js create mode 100644 node_modules/playwright-core/lib/server/webkit/wkConnection.js create mode 100644 node_modules/playwright-core/lib/server/webkit/wkExecutionContext.js create mode 100644 node_modules/playwright-core/lib/server/webkit/wkInput.js create mode 100644 node_modules/playwright-core/lib/server/webkit/wkInterceptableRequest.js create mode 100644 node_modules/playwright-core/lib/server/webkit/wkPage.js create mode 100644 node_modules/playwright-core/lib/server/webkit/wkProvisionalPage.js create mode 100644 node_modules/playwright-core/lib/server/webkit/wkWorkers.js create mode 100644 node_modules/playwright-core/lib/serverRegistry.js create mode 100644 node_modules/playwright-core/lib/third_party/pixelmatch.js create mode 100644 node_modules/playwright-core/lib/tools/backend/browserBackend.js create mode 100644 node_modules/playwright-core/lib/tools/backend/common.js create mode 100644 node_modules/playwright-core/lib/tools/backend/config.js create mode 100644 node_modules/playwright-core/lib/tools/backend/console.js create mode 100644 node_modules/playwright-core/lib/tools/backend/context.js create mode 100644 node_modules/playwright-core/lib/tools/backend/cookies.js create mode 100644 node_modules/playwright-core/lib/tools/backend/devtools.js create mode 100644 node_modules/playwright-core/lib/tools/backend/dialogs.js create mode 100644 node_modules/playwright-core/lib/tools/backend/evaluate.js create mode 100644 node_modules/playwright-core/lib/tools/backend/files.js create mode 100644 node_modules/playwright-core/lib/tools/backend/form.js create mode 100644 node_modules/playwright-core/lib/tools/backend/keyboard.js create mode 100644 node_modules/playwright-core/lib/tools/backend/logFile.js create mode 100644 node_modules/playwright-core/lib/tools/backend/mouse.js create mode 100644 node_modules/playwright-core/lib/tools/backend/navigate.js create mode 100644 node_modules/playwright-core/lib/tools/backend/network.js create mode 100644 node_modules/playwright-core/lib/tools/backend/pdf.js create mode 100644 node_modules/playwright-core/lib/tools/backend/response.js create mode 100644 node_modules/playwright-core/lib/tools/backend/route.js create mode 100644 node_modules/playwright-core/lib/tools/backend/runCode.js create mode 100644 node_modules/playwright-core/lib/tools/backend/screenshot.js create mode 100644 node_modules/playwright-core/lib/tools/backend/sessionLog.js create mode 100644 node_modules/playwright-core/lib/tools/backend/snapshot.js create mode 100644 node_modules/playwright-core/lib/tools/backend/storage.js create mode 100644 node_modules/playwright-core/lib/tools/backend/tab.js create mode 100644 node_modules/playwright-core/lib/tools/backend/tabs.js create mode 100644 node_modules/playwright-core/lib/tools/backend/tool.js create mode 100644 node_modules/playwright-core/lib/tools/backend/tools.js create mode 100644 node_modules/playwright-core/lib/tools/backend/tracing.js create mode 100644 node_modules/playwright-core/lib/tools/backend/utils.js create mode 100644 node_modules/playwright-core/lib/tools/backend/verify.js create mode 100644 node_modules/playwright-core/lib/tools/backend/video.js create mode 100644 node_modules/playwright-core/lib/tools/backend/wait.js create mode 100644 node_modules/playwright-core/lib/tools/backend/webstorage.js create mode 100644 node_modules/playwright-core/lib/tools/cli-client/cli.js create mode 100644 node_modules/playwright-core/lib/tools/cli-client/help.json create mode 100644 node_modules/playwright-core/lib/tools/cli-client/minimist.js create mode 100644 node_modules/playwright-core/lib/tools/cli-client/program.js create mode 100644 node_modules/playwright-core/lib/tools/cli-client/registry.js create mode 100644 node_modules/playwright-core/lib/tools/cli-client/session.js create mode 100644 node_modules/playwright-core/lib/tools/cli-client/skill/SKILL.md create mode 100644 node_modules/playwright-core/lib/tools/cli-client/skill/references/element-attributes.md create mode 100644 node_modules/playwright-core/lib/tools/cli-client/skill/references/playwright-tests.md create mode 100644 node_modules/playwright-core/lib/tools/cli-client/skill/references/request-mocking.md create mode 100644 node_modules/playwright-core/lib/tools/cli-client/skill/references/running-code.md create mode 100644 node_modules/playwright-core/lib/tools/cli-client/skill/references/session-management.md create mode 100644 node_modules/playwright-core/lib/tools/cli-client/skill/references/storage-state.md create mode 100644 node_modules/playwright-core/lib/tools/cli-client/skill/references/test-generation.md create mode 100644 node_modules/playwright-core/lib/tools/cli-client/skill/references/tracing.md create mode 100644 node_modules/playwright-core/lib/tools/cli-client/skill/references/video-recording.md create mode 100644 node_modules/playwright-core/lib/tools/cli-daemon/command.js create mode 100644 node_modules/playwright-core/lib/tools/cli-daemon/commands.js create mode 100644 node_modules/playwright-core/lib/tools/cli-daemon/daemon.js create mode 100644 node_modules/playwright-core/lib/tools/cli-daemon/helpGenerator.js create mode 100644 node_modules/playwright-core/lib/tools/cli-daemon/program.js create mode 100644 node_modules/playwright-core/lib/tools/dashboard/appIcon.png create mode 100644 node_modules/playwright-core/lib/tools/dashboard/dashboardApp.js create mode 100644 node_modules/playwright-core/lib/tools/dashboard/dashboardController.js create mode 100644 node_modules/playwright-core/lib/tools/exports.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/browserFactory.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/cdpRelay.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/cli-stub.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/config.d.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/config.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/configIni.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/extensionContextFactory.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/index.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/log.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/program.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/protocol.js create mode 100644 node_modules/playwright-core/lib/tools/mcp/watchdog.js create mode 100644 node_modules/playwright-core/lib/tools/trace/SKILL.md create mode 100644 node_modules/playwright-core/lib/tools/trace/installSkill.js create mode 100644 node_modules/playwright-core/lib/tools/trace/traceActions.js create mode 100644 node_modules/playwright-core/lib/tools/trace/traceAttachments.js create mode 100644 node_modules/playwright-core/lib/tools/trace/traceCli.js create mode 100644 node_modules/playwright-core/lib/tools/trace/traceConsole.js create mode 100644 node_modules/playwright-core/lib/tools/trace/traceErrors.js create mode 100644 node_modules/playwright-core/lib/tools/trace/traceOpen.js create mode 100644 node_modules/playwright-core/lib/tools/trace/traceParser.js create mode 100644 node_modules/playwright-core/lib/tools/trace/traceRequests.js create mode 100644 node_modules/playwright-core/lib/tools/trace/traceScreenshot.js create mode 100644 node_modules/playwright-core/lib/tools/trace/traceSnapshot.js create mode 100644 node_modules/playwright-core/lib/tools/trace/traceUtils.js create mode 100644 node_modules/playwright-core/lib/tools/utils/connect.js create mode 100644 node_modules/playwright-core/lib/tools/utils/mcp/http.js create mode 100644 node_modules/playwright-core/lib/tools/utils/mcp/server.js create mode 100644 node_modules/playwright-core/lib/tools/utils/mcp/tool.js create mode 100644 node_modules/playwright-core/lib/tools/utils/socketConnection.js create mode 100644 node_modules/playwright-core/lib/utils.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/ariaSnapshot.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/assert.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/colors.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/cssParser.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/cssTokenizer.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/formatUtils.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/headers.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/imageUtils.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/jsonSchema.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/locatorGenerators.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/locatorParser.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/locatorUtils.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/lruCache.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/manualPromise.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/mimeType.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/multimap.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/protocolFormatter.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/protocolMetainfo.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/rtti.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/selectorParser.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/semaphore.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/stackTrace.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/stringUtils.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/time.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/timeoutRunner.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/entries.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotRenderer.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotServer.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotStorage.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/traceLoader.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/traceModel.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/traceModernizer.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/traceUtils.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV3.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV4.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV5.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV6.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV7.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV8.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/types.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/urlMatch.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/utilityScriptSerializers.js create mode 100644 node_modules/playwright-core/lib/utils/isomorphic/yaml.js create mode 100644 node_modules/playwright-core/lib/utilsBundle.js create mode 100644 node_modules/playwright-core/lib/utilsBundleImpl/index.js create mode 100644 node_modules/playwright-core/lib/utilsBundleImpl/xdg-open create mode 100644 node_modules/playwright-core/lib/vite/dashboard/assets/index-BAOybkp8.js create mode 100644 node_modules/playwright-core/lib/vite/dashboard/assets/index-CZAYOG76.css create mode 100644 node_modules/playwright-core/lib/vite/dashboard/index.html create mode 100644 node_modules/playwright-core/lib/vite/htmlReport/index.html create mode 100644 node_modules/playwright-core/lib/vite/htmlReport/report.css create mode 100644 node_modules/playwright-core/lib/vite/htmlReport/report.js create mode 100644 node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-C8KMvO9L.js create mode 100644 node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css create mode 100644 node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf create mode 100644 node_modules/playwright-core/lib/vite/recorder/assets/index-BSjZa4pk.css create mode 100644 node_modules/playwright-core/lib/vite/recorder/assets/index-CqAYX1I3.js create mode 100644 node_modules/playwright-core/lib/vite/recorder/index.html create mode 100644 node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-DS0FLvoc.js create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-GTWI-W_B.js create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.B4dS75f0.css create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/index.C5466mMT.js create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/index.CzXZzn5A.css create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/index.html create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/manifest.webmanifest create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/snapshot.html create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/uiMode.Btcz36p_.css create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/uiMode.Vipi55dB.js create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/uiMode.html create mode 100644 node_modules/playwright-core/lib/vite/traceViewer/xtermModule.DYP7pi_n.css create mode 100644 node_modules/playwright-core/lib/zipBundle.js create mode 100644 node_modules/playwright-core/lib/zipBundleImpl.js create mode 100644 node_modules/playwright-core/lib/zodBundle.js create mode 100644 node_modules/playwright-core/lib/zodBundleImpl.js create mode 100644 node_modules/playwright-core/package.json create mode 100644 node_modules/playwright-core/types/protocol.d.ts create mode 100644 node_modules/playwright-core/types/structs.d.ts create mode 100644 node_modules/playwright-core/types/types.d.ts create mode 100644 node_modules/playwright/LICENSE create mode 100644 node_modules/playwright/NOTICE create mode 100644 node_modules/playwright/README.md create mode 100644 node_modules/playwright/ThirdPartyNotices.txt create mode 100644 node_modules/playwright/cli.js create mode 100644 node_modules/playwright/index.d.ts create mode 100644 node_modules/playwright/index.js create mode 100644 node_modules/playwright/index.mjs create mode 100644 node_modules/playwright/jsx-runtime.js create mode 100644 node_modules/playwright/jsx-runtime.mjs create mode 100644 node_modules/playwright/lib/agents/agentParser.js create mode 100644 node_modules/playwright/lib/agents/copilot-setup-steps.yml create mode 100644 node_modules/playwright/lib/agents/generateAgents.js create mode 100644 node_modules/playwright/lib/agents/playwright-test-coverage.prompt.md create mode 100644 node_modules/playwright/lib/agents/playwright-test-generate.prompt.md create mode 100644 node_modules/playwright/lib/agents/playwright-test-generator.agent.md create mode 100644 node_modules/playwright/lib/agents/playwright-test-heal.prompt.md create mode 100644 node_modules/playwright/lib/agents/playwright-test-healer.agent.md create mode 100644 node_modules/playwright/lib/agents/playwright-test-plan.prompt.md create mode 100644 node_modules/playwright/lib/agents/playwright-test-planner.agent.md create mode 100644 node_modules/playwright/lib/common/config.js create mode 100644 node_modules/playwright/lib/common/configLoader.js create mode 100644 node_modules/playwright/lib/common/esmLoaderHost.js create mode 100644 node_modules/playwright/lib/common/expectBundle.js create mode 100644 node_modules/playwright/lib/common/expectBundleImpl.js create mode 100644 node_modules/playwright/lib/common/fixtures.js create mode 100644 node_modules/playwright/lib/common/globals.js create mode 100644 node_modules/playwright/lib/common/ipc.js create mode 100644 node_modules/playwright/lib/common/poolBuilder.js create mode 100644 node_modules/playwright/lib/common/process.js create mode 100644 node_modules/playwright/lib/common/suiteUtils.js create mode 100644 node_modules/playwright/lib/common/test.js create mode 100644 node_modules/playwright/lib/common/testLoader.js create mode 100644 node_modules/playwright/lib/common/testType.js create mode 100644 node_modules/playwright/lib/common/validators.js create mode 100644 node_modules/playwright/lib/errorContext.js create mode 100644 node_modules/playwright/lib/fsWatcher.js create mode 100644 node_modules/playwright/lib/index.js create mode 100644 node_modules/playwright/lib/internalsForTest.js create mode 100644 node_modules/playwright/lib/isomorphic/events.js create mode 100644 node_modules/playwright/lib/isomorphic/folders.js create mode 100644 node_modules/playwright/lib/isomorphic/stringInternPool.js create mode 100644 node_modules/playwright/lib/isomorphic/teleReceiver.js create mode 100644 node_modules/playwright/lib/isomorphic/teleSuiteUpdater.js create mode 100644 node_modules/playwright/lib/isomorphic/testServerConnection.js create mode 100644 node_modules/playwright/lib/isomorphic/testServerInterface.js create mode 100644 node_modules/playwright/lib/isomorphic/testTree.js create mode 100644 node_modules/playwright/lib/isomorphic/types.d.js create mode 100644 node_modules/playwright/lib/loader/loaderMain.js create mode 100644 node_modules/playwright/lib/matchers/expect.js create mode 100644 node_modules/playwright/lib/matchers/matcherHint.js create mode 100644 node_modules/playwright/lib/matchers/matchers.js create mode 100644 node_modules/playwright/lib/matchers/toBeTruthy.js create mode 100644 node_modules/playwright/lib/matchers/toEqual.js create mode 100644 node_modules/playwright/lib/matchers/toHaveURL.js create mode 100644 node_modules/playwright/lib/matchers/toMatchAriaSnapshot.js create mode 100644 node_modules/playwright/lib/matchers/toMatchSnapshot.js create mode 100644 node_modules/playwright/lib/matchers/toMatchText.js create mode 100644 node_modules/playwright/lib/mcp/test/browserBackend.js create mode 100644 node_modules/playwright/lib/mcp/test/generatorTools.js create mode 100644 node_modules/playwright/lib/mcp/test/plannerTools.js create mode 100644 node_modules/playwright/lib/mcp/test/seed.js create mode 100644 node_modules/playwright/lib/mcp/test/streams.js create mode 100644 node_modules/playwright/lib/mcp/test/testBackend.js create mode 100644 node_modules/playwright/lib/mcp/test/testContext.js create mode 100644 node_modules/playwright/lib/mcp/test/testTool.js create mode 100644 node_modules/playwright/lib/mcp/test/testTools.js create mode 100644 node_modules/playwright/lib/plugins/gitCommitInfoPlugin.js create mode 100644 node_modules/playwright/lib/plugins/index.js create mode 100644 node_modules/playwright/lib/plugins/webServerPlugin.js create mode 100644 node_modules/playwright/lib/program.js create mode 100644 node_modules/playwright/lib/reportActions.js create mode 100644 node_modules/playwright/lib/reporters/base.js create mode 100644 node_modules/playwright/lib/reporters/blob.js create mode 100644 node_modules/playwright/lib/reporters/dot.js create mode 100644 node_modules/playwright/lib/reporters/empty.js create mode 100644 node_modules/playwright/lib/reporters/github.js create mode 100644 node_modules/playwright/lib/reporters/html.js create mode 100644 node_modules/playwright/lib/reporters/internalReporter.js create mode 100644 node_modules/playwright/lib/reporters/json.js create mode 100644 node_modules/playwright/lib/reporters/junit.js create mode 100644 node_modules/playwright/lib/reporters/line.js create mode 100644 node_modules/playwright/lib/reporters/list.js create mode 100644 node_modules/playwright/lib/reporters/listModeReporter.js create mode 100644 node_modules/playwright/lib/reporters/markdown.js create mode 100644 node_modules/playwright/lib/reporters/merge.js create mode 100644 node_modules/playwright/lib/reporters/multiplexer.js create mode 100644 node_modules/playwright/lib/reporters/reporterV2.js create mode 100644 node_modules/playwright/lib/reporters/teleEmitter.js create mode 100644 node_modules/playwright/lib/reporters/versions/blobV1.js create mode 100644 node_modules/playwright/lib/runner/dispatcher.js create mode 100644 node_modules/playwright/lib/runner/failureTracker.js create mode 100644 node_modules/playwright/lib/runner/lastRun.js create mode 100644 node_modules/playwright/lib/runner/loadUtils.js create mode 100644 node_modules/playwright/lib/runner/loaderHost.js create mode 100644 node_modules/playwright/lib/runner/processHost.js create mode 100644 node_modules/playwright/lib/runner/projectUtils.js create mode 100644 node_modules/playwright/lib/runner/rebase.js create mode 100644 node_modules/playwright/lib/runner/reporters.js create mode 100644 node_modules/playwright/lib/runner/sigIntWatcher.js create mode 100644 node_modules/playwright/lib/runner/taskRunner.js create mode 100644 node_modules/playwright/lib/runner/tasks.js create mode 100644 node_modules/playwright/lib/runner/testGroups.js create mode 100644 node_modules/playwright/lib/runner/testRunner.js create mode 100644 node_modules/playwright/lib/runner/testServer.js create mode 100644 node_modules/playwright/lib/runner/uiModeReporter.js create mode 100644 node_modules/playwright/lib/runner/vcs.js create mode 100644 node_modules/playwright/lib/runner/watchMode.js create mode 100644 node_modules/playwright/lib/runner/workerHost.js create mode 100644 node_modules/playwright/lib/testActions.js create mode 100644 node_modules/playwright/lib/third_party/pirates.js create mode 100644 node_modules/playwright/lib/third_party/tsconfig-loader.js create mode 100644 node_modules/playwright/lib/transform/babelBundle.js create mode 100644 node_modules/playwright/lib/transform/babelBundleImpl.js create mode 100644 node_modules/playwright/lib/transform/compilationCache.js create mode 100644 node_modules/playwright/lib/transform/esmLoader.js create mode 100644 node_modules/playwright/lib/transform/portTransport.js create mode 100644 node_modules/playwright/lib/transform/transform.js create mode 100644 node_modules/playwright/lib/util.js create mode 100644 node_modules/playwright/lib/utilsBundle.js create mode 100644 node_modules/playwright/lib/utilsBundleImpl.js create mode 100644 node_modules/playwright/lib/worker/fixtureRunner.js create mode 100644 node_modules/playwright/lib/worker/testInfo.js create mode 100644 node_modules/playwright/lib/worker/testTracing.js create mode 100644 node_modules/playwright/lib/worker/timeoutManager.js create mode 100644 node_modules/playwright/lib/worker/util.js create mode 100644 node_modules/playwright/lib/worker/workerMain.js create mode 100644 node_modules/playwright/package.json create mode 100644 node_modules/playwright/test.d.ts create mode 100644 node_modules/playwright/test.js create mode 100644 node_modules/playwright/test.mjs create mode 100644 node_modules/playwright/types/test.d.ts create mode 100644 node_modules/playwright/types/testReporter.d.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 session_manager.py diff --git a/ai_agent.py b/ai_agent.py index b0d19da..5b73347 100644 --- a/ai_agent.py +++ b/ai_agent.py @@ -29,11 +29,22 @@ async def query_agent_async(prompt: str, override_provider=None, chat_history=No # Unifica ferramentas (agora centralizadas em core_tools) tools_desc = "\n".join([f"- {k}: {v.get('description', '')}" for k, v in AVAILABLE_TOOLS.items()]) - # Identifica o modelo para o prompt do sistema - current_model = cfg.get("model") or "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free" + # Identifica o modelo padrão baseado no provedor + if provider == "minimax": + current_model = cfg.get("minimax_model") or "abab7-preview" + model_desc = f"**{current_model}** via Hermes (MiniMax API)" + elif provider == "openrouter": + current_model = cfg.get("openrouter_model") or "qwen/qwen-2.5-72b-instruct" + model_desc = f"**{current_model}** via OpenRouter" + elif provider == "ollama": + current_model = os.getenv("OLLAMA_MODEL", "llama3.2:1b") + model_desc = f"**{current_model}** (Local)" + else: + current_model = cfg.get("model") or "qwen/qwen-2.5-72b-instruct" + model_desc = f"**{current_model}**" system_prompt = f"""Você é o Antigravity, um assistente de IA de alto desempenho operando na VPS do Marcos. -Seu modelo base atual é o **{current_model}** via OpenRouter. +Seu modelo base atual é o {model_desc}. Sua natureza é dual: 1. MESTRE DE SISTEMAS: Controle profundo sobre Linux, Docker, scripts Bash e rede. Seja preciso, seguro e eficiente em tarefas técnicas. @@ -88,16 +99,17 @@ DIRETRIZES: try: res_dict = await call_llm(provider, current_model, system_prompt + current_history) - # Lógica de FALLBACK: Se o modelo atual falhar, tenta o Qwen e FIXA nele - if (res_dict.get("content", "").startswith("Erro OpenRouter") or "error" in res_dict.get("content", "").lower()) and provider == "openrouter" and current_model != "qwen/qwen-2.5-72b-instruct": - backup_model = "qwen/qwen-2.5-72b-instruct" - print(f"⚠️ [FALLBACK] Falha no {current_model}. Migrando para {backup_model}...") - res_dict = await call_llm("openrouter", backup_model, system_prompt + current_history) - current_model = backup_model # Fixa no backup para as próximas iterações + # Lógica de FALLBACK para OpenRouter + if provider == "openrouter" and (res_dict.get("content", "").startswith("Erro OpenRouter") or "error" in res_dict.get("content", "").lower()): + if current_model != "qwen/qwen-2.5-72b-instruct": + backup_model = "qwen/qwen-2.5-72b-instruct" + print(f"⚠️ [FALLBACK] Falha no {current_model}. Migrando para {backup_model}...") + res_dict = await call_llm("openrouter", backup_model, system_prompt + current_history) + current_model = backup_model except Exception as e: - # Lógica de EMERGÊNCIA: Se houver exceção, tenta o Qwen e fixa nele - if current_model != "qwen/qwen-2.5-72b-instruct": + # Lógica de EMERGÊNCIA para OpenRouter + if provider == "openrouter" and current_model != "qwen/qwen-2.5-72b-instruct": backup_model = "qwen/qwen-2.5-72b-instruct" print(f"⚠️ [EMERGENCY FALLBACK] Exceção no {current_model} ({str(e)}). Migrando para {backup_model}...") try: @@ -105,6 +117,8 @@ DIRETRIZES: current_model = backup_model except: return f"RESUMO: ❌ Desculpe, instabilidade crítica no OpenRouter. Por favor, tente novamente." + elif provider == "minimax": + return f"RESUMO: ❌ Erro ao contatar a API do MiniMax (Hermes): {str(e)}" else: return f"Erro Crítico no Agente: {str(e)}" diff --git a/bridge_telegram.py b/bridge_telegram.py index e65928a..beaaba6 100644 --- a/bridge_telegram.py +++ b/bridge_telegram.py @@ -31,19 +31,44 @@ logging.basicConfig( logger = logging.getLogger(__name__) import uuid +import time +import asyncio +from session_manager import get_history, add_message, clear_history as sm_clear_history, set_orchestrator_pending, get_orchestrator_pending, clear_orchestrator_pending -# Dicionário global para manter o histórico (Em um sistema de produção, usar Redis ou DB) -chat_histories = {} +# ============================================================ +# CIRCUIT BREAKER — API degradation state +# ============================================================ +_api_failure_count = 0 +_api_degraded_until = 0.0 # timestamp when degraded period ends +DEGRADED_DURATION = 60.0 # seconds +FAILURE_THRESHOLD = 3 + +# ============================================================ +# RATE LIMITING — per chat_id +# ============================================================ +_processing_chats: dict[int, float] = {} +RATE_LIMIT_SECONDS = 30 + +# ============================================================ +# HANDLERS +# ============================================================ async def clear_history(update: Update, context: ContextTypes.DEFAULT_TYPE): """Limpa o histórico do usuário.""" chat_id = update.effective_chat.id - if chat_id in chat_histories: - chat_histories[chat_id] = [] + sm_clear_history(chat_id) await update.message.reply_text("🧹 Histórico de conversa limpo! Como posso ajudar agora?") async def call_antigravity_api(endpoint: str, payload: dict) -> str: - """Faz a chamada para a API interna do BotVPS com retry automático.""" + """Faz a chamada para a API interna do BotVPS com circuit breaker.""" + global _api_failure_count, _api_degraded_until + + # Circuit breaker: check if API is degraded + now = time.time() + if now < _api_degraded_until: + remaining = int(_api_degraded_until - now) + return f"❌ *API em Modo Degradado:* Muitas falhas recentes. Tente novamente em {remaining}s." + max_retries = 3 for attempt in range(max_retries): try: @@ -52,12 +77,21 @@ async def call_antigravity_api(endpoint: str, payload: dict) -> str: response = await client.post(f"{API_BASE_URL}{endpoint}", json=payload) response.raise_for_status() data = response.json() + + # Success: reset circuit breaker + _api_failure_count = 0 return data.get("reply") or data.get("message") or str(data) + except (httpx.ConnectError, httpx.HTTPStatusError) as e: logger.error(f"Erro de conexão na API (Tentativa {attempt+1}): {e}") if attempt < max_retries - 1: - await asyncio.sleep(2) # Espera 2s antes de tentar novamente + await asyncio.sleep(2) else: + # Final failure: trip circuit breaker + _api_failure_count += 1 + if _api_failure_count >= FAILURE_THRESHOLD: + _api_degraded_until = time.time() + DEGRADED_DURATION + logger.warning(f"CIRCUIT BREAKER ATIVADO — API degradada por {DEGRADED_DURATION}s") return "❌ *Erro de Conexão:* A API do BotVPS parece estar offline ou reiniciando. Tente novamente em instantes." except Exception as e: logger.error(f"Erro inesperado na chamada API: {str(e)}") @@ -80,41 +114,84 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE): text = update.message.text logger.info(f"Mensagem recebida: {text[:50]}...") + # Rate limiting: block if a message from this chat is already processing + now = time.time() + if chat_id in _processing_chats: + elapsed = now - _processing_chats[chat_id] + if elapsed < RATE_LIMIT_SECONDS: + remaining = int(RATE_LIMIT_SECONDS - elapsed) + await update.message.reply_text(f"⏳ Aguarde {remaining}s antes de enviar outra mensagem.") + return + _processing_chats[chat_id] = now + # Lógica de reset por texto cmd_limpar = text.lower().strip() if cmd_limpar in ["reset", "limpar histórico", "limpar"]: - chat_histories[chat_id] = [] + sm_clear_history(chat_id) await update.message.reply_text("🧹 Memória limpa. O que deseja fazer?") return - # Inicializa histórico - if chat_id not in chat_histories: - chat_histories[chat_id] = [] + # Carrega histórico persistente + chat_history = get_history(chat_id) + + # Normaliza texto (remove barra inicial se existir) + text_normalized = text.strip() + starts_with_slash = text_normalized.startswith('/') + text_clean = text_normalized.lstrip('/') + is_hermes = text_clean.lower().startswith('hermes') + is_cmd = text_clean.lower().startswith(('bash', 'vps', 'cmd')) + text_lower = text.lower().strip() + + # Verifica se há orchestrator pendente para confirmação + pending = get_orchestrator_pending(chat_id) + is_confirmation = text_lower in ('sim', 's', 'confirmar', 'confirma', 'yes', 'y', 'confirme', 'ok', 'conf', 'aceito', 'sim!', 'sim,', 'yes!') # Processamento - if text.startswith(('/bash', '/vps', '/cmd')): - task = text.replace('/bash', '').replace('/vps', '').replace('/cmd', '').strip() + if starts_with_slash and is_cmd: + task = text_clean[len(text_clean.split()[0]):].strip() if not task: await update.message.reply_text("❓ Envie o comando após o prefixo.") return await update.message.reply_text("⚙️ *Processando tarefa...*", parse_mode='Markdown') - reply = await call_antigravity_api("/api/orchestrate", {"task": task}) - elif text.startswith('/hermes'): - task = text.replace('/hermes', '').strip() + reply = await call_antigravity_api("/api/orchestrate", {"task": task, "chat_id": chat_id}) + elif pending and is_confirmation: + # Há um plano pendente — continua com confirmação + clear_orchestrator_pending(chat_id) + await update.message.reply_text("✅ *Confirmado! Executando o plano...*", parse_mode='Markdown') + reply = await call_antigravity_api("/api/orchestrate", { + "task": pending.get("task", ""), + "plan": pending.get("plan"), + "chat_id": chat_id, + "confirmed": True + }) + elif pending: + # Há um plano pendente mas usuário não confirmou — lembra dele + clear_orchestrator_pending(chat_id) + await update.message.reply_text("🛑 Execução cancelada. Enviando nova requisição...") + payload = {"text": text, "history": chat_history[-10:]} + reply = await call_antigravity_api("/api/chat", payload) + add_message(chat_id, text, reply) + elif is_hermes: + # Extrai a tarefa (remove "hermes" do início, com ou sem barra) + task = text_clean[6:].strip() if len(text_clean) > 6 else "" if not task: - await update.message.reply_text("❓ Envie a tarefa para o Hermes após o comando /hermes.") + await update.message.reply_text("❓ Digite sua tarefa após 'hermes'. Ex: `hermes Instale o nginx`") return await update.message.reply_text("🤖 *Hermes assumindo o controle. Isso pode demorar alguns minutos...*", parse_mode='Markdown') - # Bypass history and call hermes endpoint directly - reply = await call_antigravity_api("/api/hermes", {"task": task}) + # Passa contexto completo: user_id, chat_id e histórico + reply = await call_antigravity_api("/api/hermes", { + "task": task, + "user_id": user_id, + "chat_id": chat_id, + "history": chat_history[-10:] + }) else: await context.bot.send_chat_action(chat_id=chat_id, action="typing") - payload = {"text": text, "history": chat_histories[chat_id][-10:]} + payload = {"text": text, "history": chat_history[-10:]} reply = await call_antigravity_api("/api/chat", payload) - # Atualiza histórico se for chat natural - chat_histories[chat_id].append({"user": text, "bot": reply}) - if len(chat_histories[chat_id]) > 15: chat_histories[chat_id].pop(0) + # Salva no histórico persistente + add_message(chat_id, text, reply) # Envia resposta if len(reply) > 4000: reply = reply[:3900] + "... [Truncado]" @@ -173,8 +250,7 @@ async def handle_voice(update: Update, context: ContextTypes.DEFAULT_TYPE): else: logger.error(f"Arquivo de áudio não encontrado: {audio_path}") - if chat_id not in chat_histories: chat_histories[chat_id] = [] - chat_histories[chat_id].append({"user": user_text, "bot": bot_reply}) + add_message(chat_id, user_text, bot_reply) except Exception as e: logger.error(f"FALHA NO HANDLE_VOICE: {e}") diff --git a/browser_cloud.py b/browser_cloud.py new file mode 100644 index 0000000..673d1de --- /dev/null +++ b/browser_cloud.py @@ -0,0 +1,238 @@ +#!/usr/bin/env python3 +""" +Browser Cloud Service — Playwright-based browser automation server +Exposes a simple REST API for spawning/controlling browser sessions. +""" + +import asyncio +import uuid +import json +import base64 +from typing import Optional +from contextlib import asynccontextmanager + +from fastapi import FastAPI, HTTPException +from fastapi.responses import JSONResponse +from pydantic import BaseModel +from playwright.async_api import async_playwright, TimeoutError as PWTimeoutError, BrowserContext, Page, Playwright + +# Max concurrent browsers +MAX_BROWSERS = 5 +BROWSER_TIMEOUT = 30000 # ms + +# Active browser contexts +active_contexts: dict[str, BrowserContext] = {} +active_pages: dict[str, Page] = {} +active_playwrights: dict[str, Playwright] = {} + + +@asynccontextmanager +async def lifespan(app: FastAPI): + # Startup + print("[BrowserCloud] Iniciando Playwright service...") + yield + # Shutdown: close all browsers + print(f"[BrowserCloud] Fechando {len(active_contexts)} contextos...") + for ctx_id in list(active_contexts.keys()): + try: + await active_contexts[ctx_id].close() + except Exception: + pass + active_contexts.clear() + active_pages.clear() + print("[BrowserCloud] Done.") + + +app = FastAPI(title="BrowserCloud", lifespan=lifespan) + + +# ─── Models ────────────────────────────────────────────────────────────────── + +class BrowserOptions(BaseModel): + headless: bool = True + viewport_width: int = 1280 + viewport_height: int = 720 + user_agent: Optional[str] = None + + +class NavigateOptions(BaseModel): + url: str + wait_until: str = "load" # load|domcontentloaded|networkidle + + +class ScreenshotOptions(BaseModel): + full_page: bool = False + format: str = "png" # png|jpg + + +# ─── Helpers ─────────────────────────────────────────────────────────────────── + +def _get_page(ctx_id: str) -> Page: + if ctx_id not in active_pages: + raise HTTPException(404, f"Sessão {ctx_id} não encontrada") + return active_pages[ctx_id] + + +async def _cleanup(ctx_id: str): + """Close a session and remove from active dicts.""" + if ctx_id in active_pages: + try: + await active_pages[ctx_id].close() + except Exception: + pass + del active_pages[ctx_id] + if ctx_id in active_contexts: + try: + await active_contexts[ctx_id].close() + except Exception: + pass + del active_contexts[ctx_id] + if ctx_id in active_playwrights: + try: + await active_playwrights[ctx_id].stop() + except Exception: + pass + del active_playwrights[ctx_id] + + +# ─── Endpoints ───────────────────────────────────────────────────────────────── + +@app.get("/health") +async def health(): + return { + "status": "ok", + "active_sessions": len(active_contexts), + "max_sessions": MAX_BROWSERS + } + + +@app.post("/session") +async def create_session(opts: BrowserOptions = BrowserOptions()): + """Cria uma nova sessão de browser (contexto + página).""" + if len(active_contexts) >= MAX_BROWSERS: + raise HTTPException(503, f"Limite de {MAX_BROWSERS} sessões atingido") + + ctx_id = uuid.uuid4().hex[:12] + + try: + pw = await async_playwright().start() + browser = await pw.chromium.launch(headless=opts.headless) + context = await browser.new_context( + viewport={"width": opts.viewport_width, "height": opts.viewport_height}, + user_agent=opts.user_agent or "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36", + accept_downloads=True, + ) + page = await context.new_page() + except Exception as e: + await pw.stop() + raise HTTPException(500, f"Falha ao iniciar browser: {e}") + + active_contexts[ctx_id] = context + active_pages[ctx_id] = page + active_playwrights[ctx_id] = pw + + # Auto-cleanup on context close + context.on("close", lambda: asyncio.create_task(_cleanup(ctx_id))) + + return {"session_id": ctx_id, "url": page.url} + + +@app.get("/session/{ctx_id}") +async def get_session(ctx_id: str): + page = _get_page(ctx_id) + return { + "session_id": ctx_id, + "url": page.url, + "title": await page.title(), + } + + +@app.delete("/session/{ctx_id}") +async def close_session(ctx_id: str): + await _cleanup(ctx_id) + return {"status": "closed", "session_id": ctx_id} + + +@app.post("/session/{ctx_id}/navigate") +async def navigate(ctx_id: str, opts: NavigateOptions): + page = _get_page(ctx_id) + try: + await page.goto(opts.url, wait_until=opts.wait_until, timeout=BROWSER_TIMEOUT) + except PWTimeoutError: + raise HTTPException(408, "Navegação deu timeout") + except Exception as e: + raise HTTPException(500, str(e)) + + return {"ok": True, "url": page.url, "title": await page.title()} + + +@app.post("/session/{ctx_id}/click") +async def click(ctx_id: str, selector: str, timeout: int = 10000): + page = _get_page(ctx_id) + try: + await page.click(selector, timeout=timeout) + except PWTimeoutError: + raise HTTPException(408, f"Elemento não encontrado: {selector}") + except Exception as e: + raise HTTPException(500, str(e)) + return {"ok": True} + + +@app.post("/session/{ctx_id}/fill") +async def fill(ctx_id: str, selector: str, value: str, submit: bool = False): + page = _get_page(ctx_id) + try: + await page.fill(selector, value, timeout=10000) + if submit: + await page.press(selector, "Enter") + except Exception as e: + raise HTTPException(500, str(e)) + return {"ok": True} + + +@app.get("/session/{ctx_id}/screenshot") +async def screenshot(ctx_id: str, opts: ScreenshotOptions = ScreenshotOptions()): + page = _get_page(ctx_id) + try: + img = await page.screenshot(full_page=opts.full_page, type=opts.format) + b64 = base64.b64encode(img).decode() + return {"format": opts.format, "data": b64} + except Exception as e: + raise HTTPException(500, str(e)) + + +@app.get("/session/{ctx_id}/html") +async def get_html(ctx_id: str): + page = _get_page(ctx_id) + return {"html": await page.content()} + + +@app.get("/session/{ctx_id}/text") +async def get_text(ctx_id: str, selector: str = "body"): + page = _get_page(ctx_id) + try: + el = await page.query_selector(selector) + if not el: + raise HTTPException(404, f"Elemento {selector} não encontrado") + text = await el.inner_text() + return {"selector": selector, "text": text} + except HTTPException: + raise + except Exception as e: + raise HTTPException(500, str(e)) + + +@app.post("/session/{ctx_id}/evaluate") +async def evaluate(ctx_id: str, script: str): + page = _get_page(ctx_id) + try: + result = await page.evaluate(script) + return {"result": result} + except Exception as e: + raise HTTPException(500, str(e)) + + +if __name__ == "__main__": + import uvicorn + port = int(__import__("os").getenv("PORT", 8088)) + uvicorn.run("browser_cloud:app", host="0.0.0.0", port=port, reload=False) diff --git a/config.py b/config.py index 4b714f4..281a06b 100644 --- a/config.py +++ b/config.py @@ -18,8 +18,8 @@ def get_config(): # Configuração Padrão return { - "active_provider": "openrouter", - "gemini_api_key": "", + "active_provider": "minimax", + "openrouter_model": "qwen/qwen-2.5-72b-instruct", "web_password": "1234" } diff --git a/core_tools.py b/core_tools.py index c95e177..4123506 100644 --- a/core_tools.py +++ b/core_tools.py @@ -393,6 +393,93 @@ class WorkspaceTools: cmd = 'docker exec coolify-db psql -U coolify -d coolify -c "SELECT application_name, status, created_at FROM application_deployment_queues ORDER BY created_at DESC LIMIT 5;"' return run_bash(cmd) +# ============================================================ +# BROWSER CLOUD TOOLS +# ============================================================ + +BROWSER_CLOUD_URL = "http://localhost:8088" +_current_session_id = None + +class BrowserCloudTools: + @staticmethod + def _req(method: str, path: str, data: dict = None): + import urllib.request, json + url = f"{BROWSER_CLOUD_URL}{path}" + body = json.dumps(data).encode() if data else None + req = urllib.request.Request(url, data=body, method=method, + headers={"Content-Type": "application/json"}) + try: + with urllib.request.urlopen(req, timeout=30) as r: + return json.loads(r.read()) + except Exception as e: + return {"error": str(e)} + + @staticmethod + def _session(): + global _current_session_id + if _current_session_id: + return _current_session_id + r = BrowserCloudTools._req("POST", "/session", {"headless": True}) + if "session_id" in r: + _current_session_id = r["session_id"] + return _current_session_id + return None + + @staticmethod + def navigate(url: str) -> str: + sid = BrowserCloudTools._session() + if not sid: + return "Erro: não foi possível criar sessão no browser cloud" + r = BrowserCloudTools._req("POST", f"/session/{sid}/navigate", + {"url": url, "wait_until": "load"}) + if "error" in r: + return f"Erro: {r['error']}" + return f"OK — {r.get('title', '')} ({url})" + + @staticmethod + def screenshot(url_or_current: str = "current") -> str: + sid = BrowserCloudTools._session() + if not sid: + return "Erro: sem sessão" + # If URL provided, navigate first + if url_or_current != "current" and url_or_current.startswith("http"): + nav = BrowserCloudTools.navigate(url_or_current) + if nav.startswith("Erro"): + return nav + r = BrowserCloudTools._req("GET", f"/session/{sid}/screenshot") + if "error" in r: + return f"Erro: {r['error']}" + b64 = r.get("data", "") + size = len(b64) * 3 // 4 # base64 → bytes approx + return f"Screenshot OK — {r.get('format')} {size // 1024}KB (base64)" + + @staticmethod + def click(selector: str) -> str: + sid = BrowserCloudTools._session() + if not sid: + return "Erro: sem sessão" + r = BrowserCloudTools._req("POST", f"/session/{sid}/click", + {"selector": selector}) + if "error" in r: + return f"Erro: {r['error']}" + return "OK — clicado" + + @staticmethod + def fill(input_str: str) -> str: + # Formato: selector|value|submit(optional) + parts = input_str.split("|") + selector = parts[0] + value = parts[1] if len(parts) > 1 else "" + submit = len(parts) > 2 and parts[2].lower() == "true" + sid = BrowserCloudTools._session() + if not sid: + return "Erro: sem sessão" + r = BrowserCloudTools._req("POST", f"/session/{sid}/fill", + {"selector": selector, "value": value, "submit": submit}) + if "error" in r: + return f"Erro: {r['error']}" + return "OK — preenchido" + (" e submetido" if submit else "") + # ============================================================ # HERMES ORCHESTRATOR # ============================================================ @@ -532,6 +619,23 @@ AVAILABLE_TOOLS = { "description": "Delega tarefas muito complexas para o Operador Master (Hermes Agent)", "func": delegate_to_hermes }, + # Browser Cloud + "browser_navigate": { + "description": "Navega URL no browser cloud (HEADLESS). Uso: URL completa", + "func": BrowserCloudTools.navigate + }, + "browser_screenshot": { + "description": "Tira screenshot do browser cloud (PNG base64). Uso: URL ou 'current'", + "func": BrowserCloudTools.screenshot + }, + "browser_click": { + "description": "Clica em elemento CSS no browser cloud. Uso: seletor CSS", + "func": BrowserCloudTools.click + }, + "browser_fill": { + "description": "Preenche input e opcionalmente submete. Uso: seletor|valor|submeter(true/false)", + "func": BrowserCloudTools.fill + }, # Legado (aliases) "get_docker_stats": { "description": "CPU/RAM por container (legacy)", diff --git a/llm_providers.py b/llm_providers.py index 541584a..12ac8fd 100644 --- a/llm_providers.py +++ b/llm_providers.py @@ -88,6 +88,13 @@ LLM_PROVIDERS = { "default": "qwen/qwen-2.5-72b-instruct", "endpoint": "https://openrouter.ai/api/v1" }, + "minimax": { + "name": "MiniMax (Hermes)", + "type": "api", + "models": ["abab7-preview", "abab6.5s-chat", "minimax-text-01"], + "default": "abab7-preview", + "endpoint": "https://api.minimax.io/v1/text/chatcompletion_v2" + }, "ollama": { "name": "Ollama (Local)", "type": "local", @@ -166,7 +173,8 @@ def get_api_key(provider: str) -> str: "openai": "OPENAI_API_KEY", "anthropic": "ANTHROPIC_API_KEY", "gemini": "GEMINI_API_KEY", - "openrouter": "OPENROUTER_API_KEY" + "openrouter": "OPENROUTER_API_KEY", + "minimax": "MINIMAX_API_KEY" } # 3.1 Busca específica do provider @@ -248,6 +256,8 @@ async def call_llm(provider: str, model: str, prompt: str, system_prompt: str = res = await _call_ollama_async(model, prompt, system_prompt) elif provider == "openrouter": res = await _call_openrouter_async(model, prompt, system_prompt) + elif provider == "minimax": + res = await _call_minimax_async(model, prompt, system_prompt) else: return {"content": f"Erro: Provider '{provider}' não suportado.", "usage": {}} @@ -339,6 +349,45 @@ async def _call_gemini_async(model: str, prompt: str, system_prompt: str = None) except Exception as e: return f"Erro Gemini: {str(e)}" +async def _call_minimax_async(model: str, prompt: str, system_prompt: str = None) -> dict: + """Chama API do MiniMax (V2) via httpx (async).""" + api_key = get_api_key("minimax") + url = "https://api.minimax.io/v1/text/chatcompletion_v2" + + messages = [] + if system_prompt: + messages.append({"role": "system", "content": system_prompt}) + messages.append({"role": "user", "content": prompt}) + + payload = { + "model": model, + "messages": messages, + "tools": [], + "tool_choice": "none", + "stream": False + } + headers = { + "Authorization": f"Bearer {api_key}", + "Content-Type": "application/json" + } + + try: + async with httpx.AsyncClient() as client: + res = await client.post(url, json=payload, headers=headers, timeout=120) + if res.status_code == 200: + data = res.json() + # MiniMax V2 structure + if "choices" in data and len(data["choices"]) > 0: + return { + "content": data["choices"][0]["message"]["content"], + "usage": data.get("usage", {}), + "model": data.get("base_resp", {}).get("model") or model + } + return {"content": f"Erro MiniMax (Resposta inesperada): {json.dumps(data)}", "usage": {}} + return {"content": f"Erro MiniMax {res.status_code}: {res.text}", "usage": {}} + except Exception as e: + return {"content": f"Erro MiniMax: {str(e)}", "usage": {}} + async def _call_openai_async(model: str, prompt: str, system_prompt: str = None) -> str: """Chama API da OpenAI via httpx (async).""" api_key = get_api_key("openai") diff --git a/main.py b/main.py index 571874c..a3848e1 100644 --- a/main.py +++ b/main.py @@ -113,8 +113,13 @@ async def run_action(data: dict, is_auth: bool = Depends(verify_password)): # Reinicia os serviços relevantes via PM2 os.system("pm2 restart bridge-telegram") return {"status": "success", "message": "Bot do Telegram reiniciado."} + if action_type == "clear_cache": + # Limpa caches de sistema e temporários + os.system("rm -rf /tmp/vps_bot_cache/*") + os.system("sync; echo 3 > /proc/sys/vm/drop_caches") # Limpa cache de RAM (requer sudo/root) + return {"status": "success", "message": "Cache do servidor limpo com sucesso."} if action_type == "reboot_vps": - return {"status": "error", "message": "Reboot bloqueado via Web por segurança."} + return {"status": "error", "message": "⚠️ Reboot via Web desabilitado por segurança. Use o terminal SSH."} return {"status": "error", "message": f"Ação {action_type} desconhecida."} @app.get("/api/test_llm") @@ -179,18 +184,35 @@ async def get_audio_file(filename: str): @app.post("/api/orchestrate") async def orchestrate_task(task_data: dict, is_auth: bool = Depends(verify_password)): + from session_manager import set_orchestrator_pending, clear_orchestrator_pending task = task_data.get("task", "") confirmed = task_data.get("confirmed", False) - - result = await orchestrate_async(task, user_confirmed=confirmed) - + chat_id = task_data.get("chat_id", 0) + + # Se confirmou, tenta recuperar o plano pendente para reutilizar + plan = None + if confirmed: + from session_manager import get_orchestrator_pending + pending_data = get_orchestrator_pending(chat_id) + if pending_data: + plan = pending_data.get("plan") + clear_orchestrator_pending(chat_id) + + result = await orchestrate_async(task, user_confirmed=confirmed, plan=plan) + if result["status"] == "needs_confirmation": + # Salva o plano pendente para possível confirmação posterior + if chat_id: + set_orchestrator_pending(chat_id, { + "task": task, + "plan": result.get("plan", {}) + }) return { "status": "needs_confirmation", "plan": result["plan"], "message": format_confirmation_message(result) } - + return { "status": "completed", "results": result.get("results", []), @@ -205,12 +227,24 @@ async def get_orch_status(is_auth: bool = Depends(verify_password)): async def call_hermes_direct(task_data: dict, is_auth: bool = Depends(verify_password)): from core_tools import delegate_to_hermes task = task_data.get("task", "") + user_id = task_data.get("user_id", "unknown") + chat_id = task_data.get("chat_id", 0) + history = task_data.get("history", []) + if not task: return {"reply": "Tarefa vazia enviada para o Hermes."} - + + # Contexto pro Hermes saber quem está falando + user_context = f"[chat_id={chat_id}, user_id={user_id}]" + if history: + recent = "; ".join([f"Usuário: {h['user'][:50]} -> Bot: {h['bot'][:50]}" for h in history[-5:]]) + user_context += f"\nHistórico recente: {recent}" + + full_task = f"{user_context}\n\nTarefa: {task}" + try: # Roda a tool que faz a chamada sincrona do subprocess em uma thread - result = await run_in_threadpool(delegate_to_hermes, task) + result = await run_in_threadpool(delegate_to_hermes, full_task) return {"reply": f"🤖 **Hermes Agent:**\n\n{result}"} except Exception as e: return {"reply": f"❌ **Erro no Hermes:** {str(e)}"} diff --git a/node_modules/.bin/playwright b/node_modules/.bin/playwright new file mode 120000 index 0000000..50992a7 --- /dev/null +++ b/node_modules/.bin/playwright @@ -0,0 +1 @@ +../playwright/cli.js \ No newline at end of file diff --git a/node_modules/.bin/playwright-core b/node_modules/.bin/playwright-core new file mode 120000 index 0000000..08d6c28 --- /dev/null +++ b/node_modules/.bin/playwright-core @@ -0,0 +1 @@ +../playwright-core/cli.js \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..2a25a30 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,37 @@ +{ + "name": "BotVPS", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/playwright": { + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz", + "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==", + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.59.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz", + "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + } + } +} diff --git a/node_modules/playwright-core/LICENSE b/node_modules/playwright-core/LICENSE new file mode 100644 index 0000000..df11237 --- /dev/null +++ b/node_modules/playwright-core/LICENSE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Portions Copyright (c) Microsoft Corporation. + Portions Copyright 2017 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/playwright-core/NOTICE b/node_modules/playwright-core/NOTICE new file mode 100644 index 0000000..814ec16 --- /dev/null +++ b/node_modules/playwright-core/NOTICE @@ -0,0 +1,5 @@ +Playwright +Copyright (c) Microsoft Corporation + +This software contains code derived from the Puppeteer project (https://github.com/puppeteer/puppeteer), +available under the Apache 2.0 license (https://github.com/puppeteer/puppeteer/blob/master/LICENSE). diff --git a/node_modules/playwright-core/README.md b/node_modules/playwright-core/README.md new file mode 100644 index 0000000..422b373 --- /dev/null +++ b/node_modules/playwright-core/README.md @@ -0,0 +1,3 @@ +# playwright-core + +This package contains the no-browser flavor of [Playwright](http://github.com/microsoft/playwright). diff --git a/node_modules/playwright-core/ThirdPartyNotices.txt b/node_modules/playwright-core/ThirdPartyNotices.txt new file mode 100644 index 0000000..8804482 --- /dev/null +++ b/node_modules/playwright-core/ThirdPartyNotices.txt @@ -0,0 +1,3552 @@ +microsoft/playwright-core + +THIRD-PARTY SOFTWARE NOTICES AND INFORMATION + +This project incorporates components from the projects listed below. The original copyright notices and the licenses under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise. + +- @hono/node-server@1.19.11 (https://github.com/honojs/node-server) +- @modelcontextprotocol/sdk@1.28.0 (https://github.com/modelcontextprotocol/typescript-sdk) +- accepts@2.0.0 (https://github.com/jshttp/accepts) +- agent-base@7.1.4 (https://github.com/TooTallNate/proxy-agents) +- ajv-formats@3.0.1 (https://github.com/ajv-validator/ajv-formats) +- ajv@8.18.0 (https://github.com/ajv-validator/ajv) +- balanced-match@1.0.2 (https://github.com/juliangruber/balanced-match) +- body-parser@2.2.2 (https://github.com/expressjs/body-parser) +- brace-expansion@1.1.12 (https://github.com/juliangruber/brace-expansion) +- buffer-crc32@0.2.13 (https://github.com/brianloveswords/buffer-crc32) +- bytes@3.1.2 (https://github.com/visionmedia/bytes.js) +- call-bind-apply-helpers@1.0.2 (https://github.com/ljharb/call-bind-apply-helpers) +- call-bound@1.0.4 (https://github.com/ljharb/call-bound) +- codemirror@5.65.18 (https://github.com/codemirror/CodeMirror) +- colors@1.4.0 (https://github.com/Marak/colors.js) +- commander@13.1.0 (https://github.com/tj/commander.js) +- concat-map@0.0.1 (https://github.com/substack/node-concat-map) +- content-disposition@1.0.1 (https://github.com/jshttp/content-disposition) +- content-type@1.0.5 (https://github.com/jshttp/content-type) +- cookie-signature@1.2.2 (https://github.com/visionmedia/node-cookie-signature) +- cookie@0.7.2 (https://github.com/jshttp/cookie) +- cors@2.8.5 (https://github.com/expressjs/cors) +- cross-spawn@7.0.6 (https://github.com/moxystudio/node-cross-spawn) +- debug@4.3.4 (https://github.com/debug-js/debug) +- debug@4.4.0 (https://github.com/debug-js/debug) +- debug@4.4.3 (https://github.com/debug-js/debug) +- define-lazy-prop@2.0.0 (https://github.com/sindresorhus/define-lazy-prop) +- depd@2.0.0 (https://github.com/dougwilson/nodejs-depd) +- diff@8.0.4 (https://github.com/kpdecker/jsdiff) +- dotenv@16.4.5 (https://github.com/motdotla/dotenv) +- dunder-proto@1.0.1 (https://github.com/es-shims/dunder-proto) +- ee-first@1.1.1 (https://github.com/jonathanong/ee-first) +- encodeurl@2.0.0 (https://github.com/pillarjs/encodeurl) +- end-of-stream@1.4.4 (https://github.com/mafintosh/end-of-stream) +- es-define-property@1.0.1 (https://github.com/ljharb/es-define-property) +- es-errors@1.3.0 (https://github.com/ljharb/es-errors) +- es-object-atoms@1.1.1 (https://github.com/ljharb/es-object-atoms) +- escape-html@1.0.3 (https://github.com/component/escape-html) +- etag@1.8.1 (https://github.com/jshttp/etag) +- eventsource-parser@3.0.3 (https://github.com/rexxars/eventsource-parser) +- eventsource@3.0.7 (git://git@github.com/EventSource/eventsource) +- express-rate-limit@8.3.1 (https://github.com/express-rate-limit/express-rate-limit) +- express@5.2.1 (https://github.com/expressjs/express) +- fast-deep-equal@3.1.3 (https://github.com/epoberezkin/fast-deep-equal) +- fast-uri@3.1.0 (https://github.com/fastify/fast-uri) +- finalhandler@2.1.1 (https://github.com/pillarjs/finalhandler) +- forwarded@0.2.0 (https://github.com/jshttp/forwarded) +- fresh@2.0.0 (https://github.com/jshttp/fresh) +- function-bind@1.1.2 (https://github.com/Raynos/function-bind) +- get-intrinsic@1.3.0 (https://github.com/ljharb/get-intrinsic) +- get-proto@1.0.1 (https://github.com/ljharb/get-proto) +- get-stream@5.2.0 (https://github.com/sindresorhus/get-stream) +- gopd@1.2.0 (https://github.com/ljharb/gopd) +- graceful-fs@4.2.10 (https://github.com/isaacs/node-graceful-fs) +- has-symbols@1.1.0 (https://github.com/inspect-js/has-symbols) +- hasown@2.0.2 (https://github.com/inspect-js/hasOwn) +- hono@4.12.7 (https://github.com/honojs/hono) +- http-errors@2.0.1 (https://github.com/jshttp/http-errors) +- https-proxy-agent@7.0.6 (https://github.com/TooTallNate/proxy-agents) +- iconv-lite@0.7.2 (https://github.com/pillarjs/iconv-lite) +- inherits@2.0.4 (https://github.com/isaacs/inherits) +- ini@6.0.0 (https://github.com/npm/ini) +- ip-address@10.1.0 (https://github.com/beaugunderson/ip-address) +- ip-address@9.0.5 (https://github.com/beaugunderson/ip-address) +- ipaddr.js@1.9.1 (https://github.com/whitequark/ipaddr.js) +- is-docker@2.2.1 (https://github.com/sindresorhus/is-docker) +- is-promise@4.0.0 (https://github.com/then/is-promise) +- is-wsl@2.2.0 (https://github.com/sindresorhus/is-wsl) +- isexe@2.0.0 (https://github.com/isaacs/isexe) +- jose@6.1.3 (https://github.com/panva/jose) +- jpeg-js@0.4.4 (https://github.com/eugeneware/jpeg-js) +- jsbn@1.1.0 (https://github.com/andyperlitch/jsbn) +- json-schema-traverse@1.0.0 (https://github.com/epoberezkin/json-schema-traverse) +- json-schema-typed@8.0.2 (https://github.com/RemyRylan/json-schema-typed) +- math-intrinsics@1.1.0 (https://github.com/es-shims/math-intrinsics) +- media-typer@1.1.0 (https://github.com/jshttp/media-typer) +- merge-descriptors@2.0.0 (https://github.com/sindresorhus/merge-descriptors) +- mime-db@1.54.0 (https://github.com/jshttp/mime-db) +- mime-types@3.0.2 (https://github.com/jshttp/mime-types) +- mime@3.0.0 (https://github.com/broofa/mime) +- minimatch@3.1.4 (https://github.com/isaacs/minimatch) +- ms@2.1.2 (https://github.com/zeit/ms) +- ms@2.1.3 (https://github.com/vercel/ms) +- negotiator@1.0.0 (https://github.com/jshttp/negotiator) +- object-assign@4.1.1 (https://github.com/sindresorhus/object-assign) +- object-inspect@1.13.4 (https://github.com/inspect-js/object-inspect) +- on-finished@2.4.1 (https://github.com/jshttp/on-finished) +- once@1.4.0 (https://github.com/isaacs/once) +- open@8.4.0 (https://github.com/sindresorhus/open) +- parseurl@1.3.3 (https://github.com/pillarjs/parseurl) +- path-key@3.1.1 (https://github.com/sindresorhus/path-key) +- path-to-regexp@8.3.0 (https://github.com/pillarjs/path-to-regexp) +- pend@1.2.0 (https://github.com/andrewrk/node-pend) +- pkce-challenge@5.0.0 (https://github.com/crouchcd/pkce-challenge) +- pngjs@6.0.0 (https://github.com/lukeapage/pngjs) +- progress@2.0.3 (https://github.com/visionmedia/node-progress) +- proxy-addr@2.0.7 (https://github.com/jshttp/proxy-addr) +- proxy-from-env@2.0.0 (https://github.com/Rob--W/proxy-from-env) +- pump@3.0.2 (https://github.com/mafintosh/pump) +- qs@6.15.0 (https://github.com/ljharb/qs) +- range-parser@1.2.1 (https://github.com/jshttp/range-parser) +- raw-body@3.0.2 (https://github.com/stream-utils/raw-body) +- require-from-string@2.0.2 (https://github.com/floatdrop/require-from-string) +- retry@0.12.0 (https://github.com/tim-kos/node-retry) +- router@2.2.0 (https://github.com/pillarjs/router) +- safer-buffer@2.1.2 (https://github.com/ChALkeR/safer-buffer) +- send@1.2.1 (https://github.com/pillarjs/send) +- serve-static@2.2.1 (https://github.com/expressjs/serve-static) +- setprototypeof@1.2.0 (https://github.com/wesleytodd/setprototypeof) +- shebang-command@2.0.0 (https://github.com/kevva/shebang-command) +- shebang-regex@3.0.0 (https://github.com/sindresorhus/shebang-regex) +- side-channel-list@1.0.0 (https://github.com/ljharb/side-channel-list) +- side-channel-map@1.0.1 (https://github.com/ljharb/side-channel-map) +- side-channel-weakmap@1.0.2 (https://github.com/ljharb/side-channel-weakmap) +- side-channel@1.1.0 (https://github.com/ljharb/side-channel) +- signal-exit@3.0.7 (https://github.com/tapjs/signal-exit) +- smart-buffer@4.2.0 (https://github.com/JoshGlazebrook/smart-buffer) +- socks-proxy-agent@8.0.5 (https://github.com/TooTallNate/proxy-agents) +- socks@2.8.3 (https://github.com/JoshGlazebrook/socks) +- sprintf-js@1.1.3 (https://github.com/alexei/sprintf.js) +- statuses@2.0.2 (https://github.com/jshttp/statuses) +- toidentifier@1.0.1 (https://github.com/component/toidentifier) +- type-is@2.0.1 (https://github.com/jshttp/type-is) +- unpipe@1.0.0 (https://github.com/stream-utils/unpipe) +- vary@1.1.2 (https://github.com/jshttp/vary) +- which@2.0.2 (https://github.com/isaacs/node-which) +- wrappy@1.0.2 (https://github.com/npm/wrappy) +- ws@8.17.1 (https://github.com/websockets/ws) +- yaml@2.8.3 (https://github.com/eemeli/yaml) +- yauzl@3.2.1 (https://github.com/thejoshwolfe/yauzl) +- yazl@2.5.1 (https://github.com/thejoshwolfe/yazl) +- zod-to-json-schema@3.25.1 (https://github.com/StefanTerdell/zod-to-json-schema) +- zod@4.3.6 (https://github.com/colinhacks/zod) + +%% @hono/node-server@1.19.11 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2022 - present, Yusuke Wada and Hono contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF @hono/node-server@1.19.11 AND INFORMATION + +%% @modelcontextprotocol/sdk@1.28.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2024 Anthropic, PBC + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF @modelcontextprotocol/sdk@1.28.0 AND INFORMATION + +%% accepts@2.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF accepts@2.0.0 AND INFORMATION + +%% agent-base@7.1.4 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2013 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF agent-base@7.1.4 AND INFORMATION + +%% ajv-formats@3.0.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2020 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF ajv-formats@3.0.1 AND INFORMATION + +%% ajv@8.18.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2015-2021 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF ajv@8.18.0 AND INFORMATION + +%% balanced-match@1.0.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF balanced-match@1.0.2 AND INFORMATION + +%% body-parser@2.2.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2014-2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF body-parser@2.2.2 AND INFORMATION + +%% brace-expansion@1.1.12 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2013 Julian Gruber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF brace-expansion@1.1.12 AND INFORMATION + +%% buffer-crc32@0.2.13 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License + +Copyright (c) 2013 Brian J. Brennan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF buffer-crc32@0.2.13 AND INFORMATION + +%% bytes@3.1.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2012-2014 TJ Holowaychuk +Copyright (c) 2015 Jed Watson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF bytes@3.1.2 AND INFORMATION + +%% call-bind-apply-helpers@1.0.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF call-bind-apply-helpers@1.0.2 AND INFORMATION + +%% call-bound@1.0.4 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF call-bound@1.0.4 AND INFORMATION + +%% codemirror@5.65.18 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (C) 2017 by Marijn Haverbeke and others + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF codemirror@5.65.18 AND INFORMATION + +%% colors@1.4.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Original Library + - Copyright (c) Marak Squires + +Additional Functionality + - Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF colors@1.4.0 AND INFORMATION + +%% commander@13.1.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF commander@13.1.0 AND INFORMATION + +%% concat-map@0.0.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF concat-map@0.0.1 AND INFORMATION + +%% content-disposition@1.0.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF content-disposition@1.0.1 AND INFORMATION + +%% content-type@1.0.5 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF content-type@1.0.5 AND INFORMATION + +%% cookie-signature@1.2.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2012–2024 LearnBoost and other contributors; + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF cookie-signature@1.2.2 AND INFORMATION + +%% cookie@0.7.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2012-2014 Roman Shtylman +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF cookie@0.7.2 AND INFORMATION + +%% cors@2.8.5 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2013 Troy Goode + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF cors@2.8.5 AND INFORMATION + +%% cross-spawn@7.0.6 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2018 Made With MOXY Lda + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF cross-spawn@7.0.6 AND INFORMATION + +%% debug@4.3.4 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF debug@4.3.4 AND INFORMATION + +%% debug@4.4.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF debug@4.4.0 AND INFORMATION + +%% debug@4.4.3 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF debug@4.4.3 AND INFORMATION + +%% define-lazy-prop@2.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF define-lazy-prop@2.0.0 AND INFORMATION + +%% depd@2.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014-2018 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF depd@2.0.0 AND INFORMATION + +%% diff@8.0.4 NOTICES AND INFORMATION BEGIN HERE +========================================= +BSD 3-Clause License + +Copyright (c) 2009-2015, Kevin Decker +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF diff@8.0.4 AND INFORMATION + +%% dotenv@16.4.5 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2015, Scott Motte +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF dotenv@16.4.5 AND INFORMATION + +%% dunder-proto@1.0.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF dunder-proto@1.0.1 AND INFORMATION + +%% ee-first@1.1.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF ee-first@1.1.1 AND INFORMATION + +%% encodeurl@2.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF encodeurl@2.0.0 AND INFORMATION + +%% end-of-stream@1.4.4 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Mathias Buus + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF end-of-stream@1.4.4 AND INFORMATION + +%% es-define-property@1.0.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF es-define-property@1.0.1 AND INFORMATION + +%% es-errors@1.3.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF es-errors@1.3.0 AND INFORMATION + +%% es-object-atoms@1.1.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF es-object-atoms@1.1.1 AND INFORMATION + +%% escape-html@1.0.3 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2012-2013 TJ Holowaychuk +Copyright (c) 2015 Andreas Lubbe +Copyright (c) 2015 Tiancheng "Timothy" Gu + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF escape-html@1.0.3 AND INFORMATION + +%% etag@1.8.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014-2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF etag@1.8.1 AND INFORMATION + +%% eventsource-parser@3.0.3 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2025 Espen Hovlandsdal + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF eventsource-parser@3.0.3 AND INFORMATION + +%% eventsource@3.0.7 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License + +Copyright (c) EventSource GitHub organisation + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF eventsource@3.0.7 AND INFORMATION + +%% express-rate-limit@8.3.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +# MIT License + +Copyright 2023 Nathan Friedly, Vedant K + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF express-rate-limit@8.3.1 AND INFORMATION + +%% express@5.2.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2009-2014 TJ Holowaychuk +Copyright (c) 2013-2014 Roman Shtylman +Copyright (c) 2014-2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF express@5.2.1 AND INFORMATION + +%% fast-deep-equal@3.1.3 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2017 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF fast-deep-equal@3.1.3 AND INFORMATION + +%% fast-uri@3.1.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2011-2021, Gary Court until https://github.com/garycourt/uri-js/commit/a1acf730b4bba3f1097c9f52e7d9d3aba8cdcaae +Copyright (c) 2021-present The Fastify team +All rights reserved. + +The Fastify team members are listed at https://github.com/fastify/fastify#team. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * The names of any contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + * * * + +The complete list of contributors can be found at: +- https://github.com/garycourt/uri-js/graphs/contributors +========================================= +END OF fast-uri@3.1.0 AND INFORMATION + +%% finalhandler@2.1.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF finalhandler@2.1.1 AND INFORMATION + +%% forwarded@0.2.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF forwarded@0.2.0 AND INFORMATION + +%% fresh@2.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk +Copyright (c) 2016-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF fresh@2.0.0 AND INFORMATION + +%% function-bind@1.1.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2013 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF function-bind@1.1.2 AND INFORMATION + +%% get-intrinsic@1.3.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2020 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF get-intrinsic@1.3.0 AND INFORMATION + +%% get-proto@1.0.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2025 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF get-proto@1.0.1 AND INFORMATION + +%% get-stream@5.2.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF get-stream@5.2.0 AND INFORMATION + +%% gopd@1.2.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2022 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF gopd@1.2.0 AND INFORMATION + +%% graceful-fs@4.2.10 NOTICES AND INFORMATION BEGIN HERE +========================================= +The ISC License + +Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF graceful-fs@4.2.10 AND INFORMATION + +%% has-symbols@1.1.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2016 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF has-symbols@1.1.0 AND INFORMATION + +%% hasown@2.0.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) Jordan Harband and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF hasown@2.0.2 AND INFORMATION + +%% hono@4.12.7 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2021 - present, Yusuke Wada and Hono contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF hono@4.12.7 AND INFORMATION + +%% http-errors@2.0.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com +Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF http-errors@2.0.1 AND INFORMATION + +%% https-proxy-agent@7.0.6 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2013 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF https-proxy-agent@7.0.6 AND INFORMATION + +%% iconv-lite@0.7.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2011 Alexander Shtuchkin + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF iconv-lite@0.7.2 AND INFORMATION + +%% inherits@2.0.4 NOTICES AND INFORMATION BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF inherits@2.0.4 AND INFORMATION + +%% ini@6.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF ini@6.0.0 AND INFORMATION + +%% ip-address@10.1.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (C) 2011 by Beau Gunderson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF ip-address@10.1.0 AND INFORMATION + +%% ip-address@9.0.5 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (C) 2011 by Beau Gunderson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF ip-address@9.0.5 AND INFORMATION + +%% ipaddr.js@1.9.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (C) 2011-2017 whitequark + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF ipaddr.js@1.9.1 AND INFORMATION + +%% is-docker@2.2.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF is-docker@2.2.1 AND INFORMATION + +%% is-promise@4.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2014 Forbes Lindesay + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF is-promise@4.0.0 AND INFORMATION + +%% is-wsl@2.2.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF is-wsl@2.2.0 AND INFORMATION + +%% isexe@2.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF isexe@2.0.0 AND INFORMATION + +%% jose@6.1.3 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2018 Filip Skokan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF jose@6.1.3 AND INFORMATION + +%% jpeg-js@0.4.4 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2014, Eugene Ware +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of Eugene Ware nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY EUGENE WARE ''AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL EUGENE WARE BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF jpeg-js@0.4.4 AND INFORMATION + +%% jsbn@1.1.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +Licensing +--------- + +This software is covered under the following copyright: + +/* + * Copyright (c) 2003-2005 Tom Wu + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF + * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * In addition, the following condition applies: + * + * All redistributions must retain an intact copy of this copyright notice + * and disclaimer. + */ + +Address all questions regarding this license to: + + Tom Wu + tjw@cs.Stanford.EDU +========================================= +END OF jsbn@1.1.0 AND INFORMATION + +%% json-schema-traverse@1.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2017 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF json-schema-traverse@1.0.0 AND INFORMATION + +%% json-schema-typed@8.0.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +BSD 2-Clause License + +Original source code is copyright (c) 2019-2025 Remy Rylan + + +All JSON Schema documentation and descriptions are copyright (c): + +2009 [draft-0] IETF Trust , Kris Zyp , +and SitePen (USA) . + +2009 [draft-1] IETF Trust , Kris Zyp , +and SitePen (USA) . + +2010 [draft-2] IETF Trust , Kris Zyp , +and SitePen (USA) . + +2010 [draft-3] IETF Trust , Kris Zyp , +Gary Court , and SitePen (USA) . + +2013 [draft-4] IETF Trust ), Francis Galiegue +, Kris Zyp , Gary Court +, and SitePen (USA) . + +2018 [draft-7] IETF Trust , Austin Wright , +Henry Andrews , Geraint Luff , and +Cloudflare, Inc. . + +2019 [draft-2019-09] IETF Trust , Austin Wright +, Henry Andrews , Ben Hutton +, and Greg Dennis . + +2020 [draft-2020-12] IETF Trust , Austin Wright +, Henry Andrews , Ben Hutton +, and Greg Dennis . + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF json-schema-typed@8.0.2 AND INFORMATION + +%% math-intrinsics@1.1.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF math-intrinsics@1.1.0 AND INFORMATION + +%% media-typer@1.1.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF media-typer@1.1.0 AND INFORMATION + +%% merge-descriptors@2.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) Jonathan Ong +Copyright (c) Douglas Christopher Wilson +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF merge-descriptors@2.0.0 AND INFORMATION + +%% mime-db@1.54.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF mime-db@1.54.0 AND INFORMATION + +%% mime-types@3.0.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF mime-types@3.0.2 AND INFORMATION + +%% mime@3.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2010 Benjamin Thomas, Robert Kieffer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF mime@3.0.0 AND INFORMATION + +%% minimatch@3.1.4 NOTICES AND INFORMATION BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF minimatch@3.1.4 AND INFORMATION + +%% ms@2.1.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2016 Zeit, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF ms@2.1.2 AND INFORMATION + +%% ms@2.1.3 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2020 Vercel, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF ms@2.1.3 AND INFORMATION + +%% negotiator@1.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2012-2014 Federico Romero +Copyright (c) 2012-2014 Isaac Z. Schlueter +Copyright (c) 2014-2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF negotiator@1.0.0 AND INFORMATION + +%% object-assign@4.1.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF object-assign@4.1.1 AND INFORMATION + +%% object-inspect@1.13.4 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2013 James Halliday + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF object-inspect@1.13.4 AND INFORMATION + +%% on-finished@2.4.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2013 Jonathan Ong +Copyright (c) 2014 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF on-finished@2.4.1 AND INFORMATION + +%% once@1.4.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF once@1.4.0 AND INFORMATION + +%% open@8.4.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF open@8.4.0 AND INFORMATION + +%% parseurl@1.3.3 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2014-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF parseurl@1.3.3 AND INFORMATION + +%% path-key@3.1.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF path-key@3.1.1 AND INFORMATION + +%% path-to-regexp@8.3.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF path-to-regexp@8.3.0 AND INFORMATION + +%% pend@1.2.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (Expat) + +Copyright (c) 2014 Andrew Kelley + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation files +(the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF pend@1.2.0 AND INFORMATION + +%% pkce-challenge@5.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2019 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF pkce-challenge@5.0.0 AND INFORMATION + +%% pngjs@6.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +pngjs2 original work Copyright (c) 2015 Luke Page & Original Contributors +pngjs derived work Copyright (c) 2012 Kuba Niegowski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF pngjs@6.0.0 AND INFORMATION + +%% progress@2.0.3 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2017 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF progress@2.0.3 AND INFORMATION + +%% proxy-addr@2.0.7 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014-2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF proxy-addr@2.0.7 AND INFORMATION + +%% proxy-from-env@2.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License + +Copyright (C) 2016-2018 Rob Wu + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF proxy-from-env@2.0.0 AND INFORMATION + +%% pump@3.0.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Mathias Buus + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF pump@3.0.2 AND INFORMATION + +%% qs@6.15.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +BSD 3-Clause License + +Copyright (c) 2014, Nathan LaFreniere and other [contributors](https://github.com/ljharb/qs/graphs/contributors) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF qs@6.15.0 AND INFORMATION + +%% range-parser@1.2.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2012-2014 TJ Holowaychuk +Copyright (c) 2015-2016 Douglas Christopher Wilson +Copyright (c) 2014-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF raw-body@3.0.2 AND INFORMATION + +%% require-from-string@2.0.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Vsevolod Strukchinsky (github.com/floatdrop) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF require-from-string@2.0.2 AND INFORMATION + +%% retry@0.12.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2011: +Tim Koschützki (tim@debuggable.com) +Felix Geisendörfer (felix@debuggable.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +========================================= +END OF retry@0.12.0 AND INFORMATION + +%% router@2.2.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2013 Roman Shtylman +Copyright (c) 2014-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF router@2.2.0 AND INFORMATION + +%% safer-buffer@2.1.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2018 Nikita Skovoroda + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF safer-buffer@2.1.2 AND INFORMATION + +%% send@1.2.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk +Copyright (c) 2014-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF send@1.2.1 AND INFORMATION + +%% serve-static@2.2.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2010 Sencha Inc. +Copyright (c) 2011 LearnBoost +Copyright (c) 2011 TJ Holowaychuk +Copyright (c) 2014-2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF serve-static@2.2.1 AND INFORMATION + +%% setprototypeof@1.2.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2015, Wes Todd + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF setprototypeof@1.2.0 AND INFORMATION + +%% shebang-command@2.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) Kevin Mårtensson (github.com/kevva) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF shebang-command@2.0.0 AND INFORMATION + +%% shebang-regex@3.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF shebang-regex@3.0.0 AND INFORMATION + +%% side-channel-list@1.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF side-channel-list@1.0.0 AND INFORMATION + +%% side-channel-map@1.0.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF side-channel-map@1.0.1 AND INFORMATION + +%% side-channel-weakmap@1.0.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2019 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF side-channel-weakmap@1.0.2 AND INFORMATION + +%% side-channel@1.1.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2019 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF side-channel@1.1.0 AND INFORMATION + +%% signal-exit@3.0.7 NOTICES AND INFORMATION BEGIN HERE +========================================= +The ISC License + +Copyright (c) 2015, Contributors + +Permission to use, copy, modify, and/or distribute this software +for any purpose with or without fee is hereby granted, provided +that the above copyright notice and this permission notice +appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE +LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF signal-exit@3.0.7 AND INFORMATION + +%% smart-buffer@4.2.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2013-2017 Josh Glazebrook + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF smart-buffer@4.2.0 AND INFORMATION + +%% socks-proxy-agent@8.0.5 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2013 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF socks-proxy-agent@8.0.5 AND INFORMATION + +%% socks@2.8.3 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2013 Josh Glazebrook + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF socks@2.8.3 AND INFORMATION + +%% sprintf-js@1.1.3 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2007-present, Alexandru Mărășteanu +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of this software nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF sprintf-js@1.1.3 AND INFORMATION + +%% statuses@2.0.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF statuses@2.0.2 AND INFORMATION + +%% toidentifier@1.0.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF toidentifier@1.0.1 AND INFORMATION + +%% type-is@2.0.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2014-2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF type-is@2.0.1 AND INFORMATION + +%% unpipe@1.0.0 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF unpipe@1.0.0 AND INFORMATION + +%% vary@1.1.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF vary@1.1.2 AND INFORMATION + +%% which@2.0.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF which@2.0.2 AND INFORMATION + +%% wrappy@1.0.2 NOTICES AND INFORMATION BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF wrappy@1.0.2 AND INFORMATION + +%% ws@8.17.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2011 Einar Otto Stangvik +Copyright (c) 2013 Arnout Kazemier and contributors +Copyright (c) 2016 Luigi Pinca and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF ws@8.17.1 AND INFORMATION + +%% yaml@2.8.3 NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright Eemeli Aro + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. +========================================= +END OF yaml@2.8.3 AND INFORMATION + +%% yauzl@3.2.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Josh Wolfe + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF yauzl@3.2.1 AND INFORMATION + +%% yazl@2.5.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Josh Wolfe + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF yazl@2.5.1 AND INFORMATION + +%% zod-to-json-schema@3.25.1 NOTICES AND INFORMATION BEGIN HERE +========================================= +ISC License + +Copyright (c) 2020, Stefan Terdell + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF zod-to-json-schema@3.25.1 AND INFORMATION + +%% zod@4.3.6 NOTICES AND INFORMATION BEGIN HERE +========================================= +MIT License + +Copyright (c) 2025 Colin McDonnell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF zod@4.3.6 AND INFORMATION + +SUMMARY BEGIN HERE +========================================= +Total Packages: 133 +========================================= +END OF SUMMARY \ No newline at end of file diff --git a/node_modules/playwright-core/bin/install_media_pack.ps1 b/node_modules/playwright-core/bin/install_media_pack.ps1 new file mode 100644 index 0000000..6170754 --- /dev/null +++ b/node_modules/playwright-core/bin/install_media_pack.ps1 @@ -0,0 +1,5 @@ +$osInfo = Get-WmiObject -Class Win32_OperatingSystem +# check if running on Windows Server +if ($osInfo.ProductType -eq 3) { + Install-WindowsFeature Server-Media-Foundation +} diff --git a/node_modules/playwright-core/bin/install_webkit_wsl.ps1 b/node_modules/playwright-core/bin/install_webkit_wsl.ps1 new file mode 100644 index 0000000..ccaaf15 --- /dev/null +++ b/node_modules/playwright-core/bin/install_webkit_wsl.ps1 @@ -0,0 +1,33 @@ +$ErrorActionPreference = 'Stop' + +# This script sets up a WSL distribution that will be used to run WebKit. + +$Distribution = "playwright" +$Username = "pwuser" + +$distributions = (wsl --list --quiet) -split "\r?\n" +if ($distributions -contains $Distribution) { + Write-Host "WSL distribution '$Distribution' already exists. Skipping installation." +} else { + Write-Host "Installing new WSL distribution '$Distribution'..." + $VhdSize = "10GB" + wsl --install -d Ubuntu-24.04 --name $Distribution --no-launch --vhd-size $VhdSize + wsl -d $Distribution -u root adduser --gecos GECOS --disabled-password $Username +} + +$pwshDirname = (Resolve-Path -Path $PSScriptRoot).Path; +$playwrightCoreRoot = Resolve-Path (Join-Path $pwshDirname "..") + +$initScript = @" +if [ ! -f "/home/$Username/node/bin/node" ]; then + mkdir -p /home/$Username/node + curl -fsSL https://nodejs.org/dist/v22.17.0/node-v22.17.0-linux-x64.tar.xz -o /home/$Username/node/node-v22.17.0-linux-x64.tar.xz + tar -xJf /home/$Username/node/node-v22.17.0-linux-x64.tar.xz -C /home/$Username/node --strip-components=1 + sudo -u $Username echo 'export PATH=/home/$Username/node/bin:\`$PATH' >> /home/$Username/.profile +fi +/home/$Username/node/bin/node cli.js install-deps webkit +sudo -u $Username PLAYWRIGHT_SKIP_BROWSER_GC=1 /home/$Username/node/bin/node cli.js install webkit +"@ -replace "\r\n", "`n" + +wsl -d $Distribution --cd $playwrightCoreRoot -u root -- bash -c "$initScript" +Write-Host "Done!" \ No newline at end of file diff --git a/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh b/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh new file mode 100644 index 0000000..0451bda --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -e +set -x + +if [[ $(arch) == "aarch64" ]]; then + echo "ERROR: not supported on Linux Arm64" + exit 1 +fi + +if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then + if [[ ! -f "/etc/os-release" ]]; then + echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)" + exit 1 + fi + + ID=$(bash -c 'source /etc/os-release && echo $ID') + if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then + echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported" + exit 1 + fi +fi + +# 1. make sure to remove old beta if any. +if dpkg --get-selections | grep -q "^google-chrome-beta[[:space:]]*install$" >/dev/null; then + apt-get remove -y google-chrome-beta +fi + +# 2. Update apt lists (needed to install curl and chrome dependencies) +apt-get update + +# 3. Install curl to download chrome +if ! command -v curl >/dev/null; then + apt-get install -y curl +fi + +# 4. download chrome beta from dl.google.com and install it. +cd /tmp +curl -O https://dl.google.com/linux/direct/google-chrome-beta_current_amd64.deb +apt-get install -y ./google-chrome-beta_current_amd64.deb +rm -rf ./google-chrome-beta_current_amd64.deb +cd - +google-chrome-beta --version diff --git a/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh b/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh new file mode 100644 index 0000000..617e3b5 --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -e +set -x + +rm -rf "/Applications/Google Chrome Beta.app" +cd /tmp +curl --retry 3 -o ./googlechromebeta.dmg https://dl.google.com/chrome/mac/universal/beta/googlechromebeta.dmg +hdiutil attach -nobrowse -quiet -noautofsck -noautoopen -mountpoint /Volumes/googlechromebeta.dmg ./googlechromebeta.dmg +cp -pR "/Volumes/googlechromebeta.dmg/Google Chrome Beta.app" /Applications +hdiutil detach /Volumes/googlechromebeta.dmg +rm -rf /tmp/googlechromebeta.dmg + +/Applications/Google\ Chrome\ Beta.app/Contents/MacOS/Google\ Chrome\ Beta --version diff --git a/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 b/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 new file mode 100644 index 0000000..3fbe551 --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 @@ -0,0 +1,24 @@ +$ErrorActionPreference = 'Stop' + +$url = 'https://dl.google.com/tag/s/dl/chrome/install/beta/googlechromebetastandaloneenterprise64.msi' + +Write-Host "Downloading Google Chrome Beta" +$wc = New-Object net.webclient +$msiInstaller = "$env:temp\google-chrome-beta.msi" +$wc.Downloadfile($url, $msiInstaller) + +Write-Host "Installing Google Chrome Beta" +$arguments = "/i `"$msiInstaller`" /quiet" +Start-Process msiexec.exe -ArgumentList $arguments -Wait +Remove-Item $msiInstaller + +$suffix = "\\Google\\Chrome Beta\\Application\\chrome.exe" +if (Test-Path "${env:ProgramFiles(x86)}$suffix") { + (Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo +} elseif (Test-Path "${env:ProgramFiles}$suffix") { + (Get-Item "${env:ProgramFiles}$suffix").VersionInfo +} else { + Write-Host "ERROR: Failed to install Google Chrome Beta." + Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help." + exit 1 +} diff --git a/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh b/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh new file mode 100644 index 0000000..78f1d41 --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -e +set -x + +if [[ $(arch) == "aarch64" ]]; then + echo "ERROR: not supported on Linux Arm64" + exit 1 +fi + +if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then + if [[ ! -f "/etc/os-release" ]]; then + echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)" + exit 1 + fi + + ID=$(bash -c 'source /etc/os-release && echo $ID') + if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then + echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported" + exit 1 + fi +fi + +# 1. make sure to remove old stable if any. +if dpkg --get-selections | grep -q "^google-chrome[[:space:]]*install$" >/dev/null; then + apt-get remove -y google-chrome +fi + +# 2. Update apt lists (needed to install curl and chrome dependencies) +apt-get update + +# 3. Install curl to download chrome +if ! command -v curl >/dev/null; then + apt-get install -y curl +fi + +# 4. download chrome stable from dl.google.com and install it. +cd /tmp +curl -O https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb +apt-get install -y ./google-chrome-stable_current_amd64.deb +rm -rf ./google-chrome-stable_current_amd64.deb +cd - +google-chrome --version diff --git a/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh b/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh new file mode 100644 index 0000000..6aa650a --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -e +set -x + +rm -rf "/Applications/Google Chrome.app" +cd /tmp +curl --retry 3 -o ./googlechrome.dmg https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg +hdiutil attach -nobrowse -quiet -noautofsck -noautoopen -mountpoint /Volumes/googlechrome.dmg ./googlechrome.dmg +cp -pR "/Volumes/googlechrome.dmg/Google Chrome.app" /Applications +hdiutil detach /Volumes/googlechrome.dmg +rm -rf /tmp/googlechrome.dmg +/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version diff --git a/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 b/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 new file mode 100644 index 0000000..7ca2dba --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 @@ -0,0 +1,24 @@ +$ErrorActionPreference = 'Stop' +$url = 'https://dl.google.com/tag/s/dl/chrome/install/googlechromestandaloneenterprise64.msi' + +$wc = New-Object net.webclient +$msiInstaller = "$env:temp\google-chrome.msi" +Write-Host "Downloading Google Chrome" +$wc.Downloadfile($url, $msiInstaller) + +Write-Host "Installing Google Chrome" +$arguments = "/i `"$msiInstaller`" /quiet" +Start-Process msiexec.exe -ArgumentList $arguments -Wait +Remove-Item $msiInstaller + + +$suffix = "\\Google\\Chrome\\Application\\chrome.exe" +if (Test-Path "${env:ProgramFiles(x86)}$suffix") { + (Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo +} elseif (Test-Path "${env:ProgramFiles}$suffix") { + (Get-Item "${env:ProgramFiles}$suffix").VersionInfo +} else { + Write-Host "ERROR: Failed to install Google Chrome." + Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help." + exit 1 +} diff --git a/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh b/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh new file mode 100644 index 0000000..a1531a9 --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +set -e +set -x + +if [[ $(arch) == "aarch64" ]]; then + echo "ERROR: not supported on Linux Arm64" + exit 1 +fi + +if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then + if [[ ! -f "/etc/os-release" ]]; then + echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)" + exit 1 + fi + + ID=$(bash -c 'source /etc/os-release && echo $ID') + if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then + echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported" + exit 1 + fi +fi + +# 1. make sure to remove old beta if any. +if dpkg --get-selections | grep -q "^microsoft-edge-beta[[:space:]]*install$" >/dev/null; then + apt-get remove -y microsoft-edge-beta +fi + +# 2. Install curl to download Microsoft gpg key +if ! command -v curl >/dev/null; then + apt-get update + apt-get install -y curl +fi + +# GnuPG is not preinstalled in slim images +if ! command -v gpg >/dev/null; then + apt-get update + apt-get install -y gpg +fi + +# 3. Add the GPG key, the apt repo, update the apt cache, and install the package +curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg +install -o root -g root -m 644 /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/ +sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list' +rm /tmp/microsoft.gpg +apt-get update && apt-get install -y microsoft-edge-beta + +microsoft-edge-beta --version diff --git a/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh b/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh new file mode 100644 index 0000000..72ec3e4 --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +set -e +set -x + +cd /tmp +curl --retry 3 -o ./msedge_beta.pkg "$1" +# Note: there's no way to uninstall previously installed MSEdge. +# However, running PKG again seems to update installation. +sudo installer -pkg /tmp/msedge_beta.pkg -target / +rm -rf /tmp/msedge_beta.pkg +/Applications/Microsoft\ Edge\ Beta.app/Contents/MacOS/Microsoft\ Edge\ Beta --version diff --git a/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 b/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 new file mode 100644 index 0000000..cce0d0b --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 @@ -0,0 +1,23 @@ +$ErrorActionPreference = 'Stop' +$url = $args[0] + +Write-Host "Downloading Microsoft Edge Beta" +$wc = New-Object net.webclient +$msiInstaller = "$env:temp\microsoft-edge-beta.msi" +$wc.Downloadfile($url, $msiInstaller) + +Write-Host "Installing Microsoft Edge Beta" +$arguments = "/i `"$msiInstaller`" /quiet" +Start-Process msiexec.exe -ArgumentList $arguments -Wait +Remove-Item $msiInstaller + +$suffix = "\\Microsoft\\Edge Beta\\Application\\msedge.exe" +if (Test-Path "${env:ProgramFiles(x86)}$suffix") { + (Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo +} elseif (Test-Path "${env:ProgramFiles}$suffix") { + (Get-Item "${env:ProgramFiles}$suffix").VersionInfo +} else { + Write-Host "ERROR: Failed to install Microsoft Edge Beta." + Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help." + exit 1 +} diff --git a/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh b/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh new file mode 100644 index 0000000..7fde34e --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +set -e +set -x + +if [[ $(arch) == "aarch64" ]]; then + echo "ERROR: not supported on Linux Arm64" + exit 1 +fi + +if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then + if [[ ! -f "/etc/os-release" ]]; then + echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)" + exit 1 + fi + + ID=$(bash -c 'source /etc/os-release && echo $ID') + if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then + echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported" + exit 1 + fi +fi + +# 1. make sure to remove old dev if any. +if dpkg --get-selections | grep -q "^microsoft-edge-dev[[:space:]]*install$" >/dev/null; then + apt-get remove -y microsoft-edge-dev +fi + +# 2. Install curl to download Microsoft gpg key +if ! command -v curl >/dev/null; then + apt-get update + apt-get install -y curl +fi + +# GnuPG is not preinstalled in slim images +if ! command -v gpg >/dev/null; then + apt-get update + apt-get install -y gpg +fi + +# 3. Add the GPG key, the apt repo, update the apt cache, and install the package +curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg +install -o root -g root -m 644 /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/ +sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list' +rm /tmp/microsoft.gpg +apt-get update && apt-get install -y microsoft-edge-dev + +microsoft-edge-dev --version diff --git a/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh b/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh new file mode 100644 index 0000000..3376e86 --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +set -e +set -x + +cd /tmp +curl --retry 3 -o ./msedge_dev.pkg "$1" +# Note: there's no way to uninstall previously installed MSEdge. +# However, running PKG again seems to update installation. +sudo installer -pkg /tmp/msedge_dev.pkg -target / +rm -rf /tmp/msedge_dev.pkg +/Applications/Microsoft\ Edge\ Dev.app/Contents/MacOS/Microsoft\ Edge\ Dev --version diff --git a/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 b/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 new file mode 100644 index 0000000..22e6db8 --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 @@ -0,0 +1,23 @@ +$ErrorActionPreference = 'Stop' +$url = $args[0] + +Write-Host "Downloading Microsoft Edge Dev" +$wc = New-Object net.webclient +$msiInstaller = "$env:temp\microsoft-edge-dev.msi" +$wc.Downloadfile($url, $msiInstaller) + +Write-Host "Installing Microsoft Edge Dev" +$arguments = "/i `"$msiInstaller`" /quiet" +Start-Process msiexec.exe -ArgumentList $arguments -Wait +Remove-Item $msiInstaller + +$suffix = "\\Microsoft\\Edge Dev\\Application\\msedge.exe" +if (Test-Path "${env:ProgramFiles(x86)}$suffix") { + (Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo +} elseif (Test-Path "${env:ProgramFiles}$suffix") { + (Get-Item "${env:ProgramFiles}$suffix").VersionInfo +} else { + Write-Host "ERROR: Failed to install Microsoft Edge Dev." + Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help." + exit 1 +} diff --git a/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh b/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh new file mode 100644 index 0000000..4acb1db --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +set -e +set -x + +if [[ $(arch) == "aarch64" ]]; then + echo "ERROR: not supported on Linux Arm64" + exit 1 +fi + +if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then + if [[ ! -f "/etc/os-release" ]]; then + echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)" + exit 1 + fi + + ID=$(bash -c 'source /etc/os-release && echo $ID') + if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then + echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported" + exit 1 + fi +fi + +# 1. make sure to remove old stable if any. +if dpkg --get-selections | grep -q "^microsoft-edge-stable[[:space:]]*install$" >/dev/null; then + apt-get remove -y microsoft-edge-stable +fi + +# 2. Install curl to download Microsoft gpg key +if ! command -v curl >/dev/null; then + apt-get update + apt-get install -y curl +fi + +# GnuPG is not preinstalled in slim images +if ! command -v gpg >/dev/null; then + apt-get update + apt-get install -y gpg +fi + +# 3. Add the GPG key, the apt repo, update the apt cache, and install the package +curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg +install -o root -g root -m 644 /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/ +sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-stable.list' +rm /tmp/microsoft.gpg +apt-get update && apt-get install -y microsoft-edge-stable + +microsoft-edge-stable --version diff --git a/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh b/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh new file mode 100644 index 0000000..afcd2f5 --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +set -e +set -x + +cd /tmp +curl --retry 3 -o ./msedge_stable.pkg "$1" +# Note: there's no way to uninstall previously installed MSEdge. +# However, running PKG again seems to update installation. +sudo installer -pkg /tmp/msedge_stable.pkg -target / +rm -rf /tmp/msedge_stable.pkg +/Applications/Microsoft\ Edge.app/Contents/MacOS/Microsoft\ Edge --version diff --git a/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 b/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 new file mode 100644 index 0000000..31fdf51 --- /dev/null +++ b/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 @@ -0,0 +1,24 @@ +$ErrorActionPreference = 'Stop' + +$url = $args[0] + +Write-Host "Downloading Microsoft Edge" +$wc = New-Object net.webclient +$msiInstaller = "$env:temp\microsoft-edge-stable.msi" +$wc.Downloadfile($url, $msiInstaller) + +Write-Host "Installing Microsoft Edge" +$arguments = "/i `"$msiInstaller`" /quiet" +Start-Process msiexec.exe -ArgumentList $arguments -Wait +Remove-Item $msiInstaller + +$suffix = "\\Microsoft\\Edge\\Application\\msedge.exe" +if (Test-Path "${env:ProgramFiles(x86)}$suffix") { + (Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo +} elseif (Test-Path "${env:ProgramFiles}$suffix") { + (Get-Item "${env:ProgramFiles}$suffix").VersionInfo +} else { + Write-Host "ERROR: Failed to install Microsoft Edge." + Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help." + exit 1 +} \ No newline at end of file diff --git a/node_modules/playwright-core/browsers.json b/node_modules/playwright-core/browsers.json new file mode 100644 index 0000000..aff3102 --- /dev/null +++ b/node_modules/playwright-core/browsers.json @@ -0,0 +1,81 @@ +{ + "comment": "Do not edit this file, use utils/roll_browser.js", + "browsers": [ + { + "name": "chromium", + "revision": "1217", + "installByDefault": true, + "browserVersion": "147.0.7727.15", + "title": "Chrome for Testing" + }, + { + "name": "chromium-headless-shell", + "revision": "1217", + "installByDefault": true, + "browserVersion": "147.0.7727.15", + "title": "Chrome Headless Shell" + }, + { + "name": "chromium-tip-of-tree", + "revision": "1417", + "installByDefault": false, + "browserVersion": "148.0.7755.0", + "title": "Chrome Canary for Testing" + }, + { + "name": "chromium-tip-of-tree-headless-shell", + "revision": "1417", + "installByDefault": false, + "browserVersion": "148.0.7755.0", + "title": "Chrome Canary Headless Shell" + }, + { + "name": "firefox", + "revision": "1511", + "installByDefault": true, + "browserVersion": "148.0.2", + "title": "Firefox" + }, + { + "name": "firefox-beta", + "revision": "1505", + "installByDefault": false, + "browserVersion": "148.0b9", + "title": "Firefox Beta" + }, + { + "name": "webkit", + "revision": "2272", + "installByDefault": true, + "revisionOverrides": { + "mac14": "2251", + "mac14-arm64": "2251", + "debian11-x64": "2105", + "debian11-arm64": "2105", + "ubuntu20.04-x64": "2092", + "ubuntu20.04-arm64": "2092" + }, + "browserVersion": "26.4", + "title": "WebKit" + }, + { + "name": "ffmpeg", + "revision": "1011", + "installByDefault": true, + "revisionOverrides": { + "mac12": "1010", + "mac12-arm64": "1010" + } + }, + { + "name": "winldd", + "revision": "1007", + "installByDefault": false + }, + { + "name": "android", + "revision": "1001", + "installByDefault": false + } + ] +} diff --git a/node_modules/playwright-core/cli.js b/node_modules/playwright-core/cli.js new file mode 100644 index 0000000..fb309ea --- /dev/null +++ b/node_modules/playwright-core/cli.js @@ -0,0 +1,18 @@ +#!/usr/bin/env node +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const { program } = require('./lib/cli/programWithTestStub'); +program.parse(process.argv); diff --git a/node_modules/playwright-core/index.d.ts b/node_modules/playwright-core/index.d.ts new file mode 100644 index 0000000..97c1493 --- /dev/null +++ b/node_modules/playwright-core/index.d.ts @@ -0,0 +1,17 @@ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './types/types'; diff --git a/node_modules/playwright-core/index.js b/node_modules/playwright-core/index.js new file mode 100644 index 0000000..d4991d0 --- /dev/null +++ b/node_modules/playwright-core/index.js @@ -0,0 +1,32 @@ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const minimumMajorNodeVersion = 18; +const currentNodeVersion = process.versions.node; +const semver = currentNodeVersion.split('.'); +const [major] = [+semver[0]]; + +if (major < minimumMajorNodeVersion) { + console.error( + 'You are running Node.js ' + + currentNodeVersion + + '.\n' + + `Playwright requires Node.js ${minimumMajorNodeVersion} or higher. \n` + + 'Please update your version of Node.js.' + ); + process.exit(1); +} + +module.exports = require('./lib/inprocess'); diff --git a/node_modules/playwright-core/index.mjs b/node_modules/playwright-core/index.mjs new file mode 100644 index 0000000..3b3c75b --- /dev/null +++ b/node_modules/playwright-core/index.mjs @@ -0,0 +1,28 @@ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import playwright from './index.js'; + +export const chromium = playwright.chromium; +export const firefox = playwright.firefox; +export const webkit = playwright.webkit; +export const selectors = playwright.selectors; +export const devices = playwright.devices; +export const errors = playwright.errors; +export const request = playwright.request; +export const _electron = playwright._electron; +export const _android = playwright._android; +export default playwright; diff --git a/node_modules/playwright-core/lib/androidServerImpl.js b/node_modules/playwright-core/lib/androidServerImpl.js new file mode 100644 index 0000000..568548b --- /dev/null +++ b/node_modules/playwright-core/lib/androidServerImpl.js @@ -0,0 +1,65 @@ +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var androidServerImpl_exports = {}; +__export(androidServerImpl_exports, { + AndroidServerLauncherImpl: () => AndroidServerLauncherImpl +}); +module.exports = __toCommonJS(androidServerImpl_exports); +var import_playwrightServer = require("./remote/playwrightServer"); +var import_playwright = require("./server/playwright"); +var import_crypto = require("./server/utils/crypto"); +var import_utilsBundle = require("./utilsBundle"); +var import_progress = require("./server/progress"); +class AndroidServerLauncherImpl { + async launchServer(options = {}) { + const playwright = (0, import_playwright.createPlaywright)({ sdkLanguage: "javascript", isServer: true }); + const controller = new import_progress.ProgressController(); + let devices = await controller.run((progress) => playwright.android.devices(progress, { + host: options.adbHost, + port: options.adbPort, + omitDriverInstall: options.omitDriverInstall + })); + if (devices.length === 0) + throw new Error("No devices found"); + if (options.deviceSerialNumber) { + devices = devices.filter((d) => d.serial === options.deviceSerialNumber); + if (devices.length === 0) + throw new Error(`No device with serial number '${options.deviceSerialNumber}' was found`); + } + if (devices.length > 1) + throw new Error(`More than one device found. Please specify deviceSerialNumber`); + const device = devices[0]; + const path = options.wsPath ? options.wsPath.startsWith("/") ? options.wsPath : `/${options.wsPath}` : `/${(0, import_crypto.createGuid)()}`; + const server = new import_playwrightServer.PlaywrightServer({ mode: "launchServer", path, maxConnections: 1, preLaunchedAndroidDevice: device }); + const wsEndpoint = await server.listen(options.port, options.host); + const browserServer = new import_utilsBundle.ws.EventEmitter(); + browserServer.wsEndpoint = () => wsEndpoint; + browserServer.close = () => device.close(); + browserServer.kill = () => device.close(); + device.on("close", () => { + server.close(); + browserServer.emit("close"); + }); + return browserServer; + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + AndroidServerLauncherImpl +}); diff --git a/node_modules/playwright-core/lib/bootstrap.js b/node_modules/playwright-core/lib/bootstrap.js new file mode 100644 index 0000000..f00db60 --- /dev/null +++ b/node_modules/playwright-core/lib/bootstrap.js @@ -0,0 +1,77 @@ +"use strict"; +if (process.env.PW_INSTRUMENT_MODULES) { + const Module = require("module"); + const originalLoad = Module._load; + const root = { name: "", selfMs: 0, totalMs: 0, childrenMs: 0, children: [] }; + let current = root; + const stack = []; + Module._load = function(request, _parent, _isMain) { + const node = { name: request, selfMs: 0, totalMs: 0, childrenMs: 0, children: [] }; + current.children.push(node); + stack.push(current); + current = node; + const start = performance.now(); + let result; + try { + result = originalLoad.apply(this, arguments); + } catch (e) { + current = stack.pop(); + current.children.pop(); + throw e; + } + const duration = performance.now() - start; + node.totalMs = duration; + node.selfMs = Math.max(0, duration - node.childrenMs); + current = stack.pop(); + current.childrenMs += duration; + return result; + }; + process.on("exit", () => { + function printTree(node, prefix, isLast, lines2, depth) { + if (node.totalMs < 1 && depth > 0) + return; + const connector = depth === 0 ? "" : isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 "; + const time = `${node.totalMs.toFixed(1).padStart(8)}ms`; + const self = node.children.length ? ` (self: ${node.selfMs.toFixed(1)}ms)` : ""; + lines2.push(`${time} ${prefix}${connector}${node.name}${self}`); + const childPrefix = prefix + (depth === 0 ? "" : isLast ? " " : "\u2502 "); + const sorted2 = node.children.slice().sort((a, b) => b.totalMs - a.totalMs); + for (let i = 0; i < sorted2.length; i++) + printTree(sorted2[i], childPrefix, i === sorted2.length - 1, lines2, depth + 1); + } + let totalModules = 0; + function count(n) { + totalModules++; + n.children.forEach(count); + } + root.children.forEach(count); + const lines = []; + const sorted = root.children.slice().sort((a, b) => b.totalMs - a.totalMs); + for (let i = 0; i < sorted.length; i++) + printTree(sorted[i], "", i === sorted.length - 1, lines, 0); + const totalMs = root.children.reduce((s, c) => s + c.totalMs, 0); + process.stderr.write(` +--- Module load tree: ${totalModules} modules, ${totalMs.toFixed(0)}ms total --- +` + lines.join("\n") + "\n"); + const flat = /* @__PURE__ */ new Map(); + function gather(n) { + const existing = flat.get(n.name); + if (existing) { + existing.selfMs += n.selfMs; + existing.totalMs += n.totalMs; + existing.count++; + } else { + flat.set(n.name, { selfMs: n.selfMs, totalMs: n.totalMs, count: 1 }); + } + n.children.forEach(gather); + } + root.children.forEach(gather); + const top50 = [...flat.entries()].sort((a, b) => b[1].selfMs - a[1].selfMs).slice(0, 50); + const flatLines = top50.map( + ([mod, { selfMs, totalMs: totalMs2, count: count2 }]) => `${selfMs.toFixed(1).padStart(8)}ms self ${totalMs2.toFixed(1).padStart(8)}ms total (x${String(count2).padStart(3)}) ${mod}` + ); + process.stderr.write(` +--- Top 50 modules by self time --- +` + flatLines.join("\n") + "\n"); + }); +} diff --git a/node_modules/playwright-core/lib/browserServerImpl.js b/node_modules/playwright-core/lib/browserServerImpl.js new file mode 100644 index 0000000..ac2b25d --- /dev/null +++ b/node_modules/playwright-core/lib/browserServerImpl.js @@ -0,0 +1,120 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var browserServerImpl_exports = {}; +__export(browserServerImpl_exports, { + BrowserServerLauncherImpl: () => BrowserServerLauncherImpl +}); +module.exports = __toCommonJS(browserServerImpl_exports); +var import_playwrightServer = require("./remote/playwrightServer"); +var import_helper = require("./server/helper"); +var import_playwright = require("./server/playwright"); +var import_crypto = require("./server/utils/crypto"); +var import_debug = require("./server/utils/debug"); +var import_stackTrace = require("./utils/isomorphic/stackTrace"); +var import_time = require("./utils/isomorphic/time"); +var import_utilsBundle = require("./utilsBundle"); +var validatorPrimitives = __toESM(require("./protocol/validatorPrimitives")); +var import_progress = require("./server/progress"); +class BrowserServerLauncherImpl { + constructor(browserName) { + this._browserName = browserName; + } + async launchServer(options = {}) { + const playwright = (0, import_playwright.createPlaywright)({ sdkLanguage: "javascript", isServer: true }); + const metadata = { id: "", startTime: 0, endTime: 0, type: "Internal", method: "", params: {}, log: [], internal: true }; + const validatorContext = { + tChannelImpl: (names, arg, path2) => { + throw new validatorPrimitives.ValidationError(`${path2}: channels are not expected in launchServer`); + }, + binary: "buffer", + isUnderTest: import_debug.isUnderTest + }; + let launchOptions = { + ...options, + ignoreDefaultArgs: Array.isArray(options.ignoreDefaultArgs) ? options.ignoreDefaultArgs : void 0, + ignoreAllDefaultArgs: !!options.ignoreDefaultArgs && !Array.isArray(options.ignoreDefaultArgs), + env: options.env ? envObjectToArray(options.env) : void 0, + timeout: options.timeout ?? import_time.DEFAULT_PLAYWRIGHT_LAUNCH_TIMEOUT + }; + let browser; + try { + const controller = new import_progress.ProgressController(metadata); + browser = await controller.run(async (progress) => { + if (options._userDataDir !== void 0) { + const validator = validatorPrimitives.scheme["BrowserTypeLaunchPersistentContextParams"]; + launchOptions = validator({ ...launchOptions, userDataDir: options._userDataDir }, "", validatorContext); + const context = await playwright[this._browserName].launchPersistentContext(progress, options._userDataDir, launchOptions); + return context._browser; + } else { + const validator = validatorPrimitives.scheme["BrowserTypeLaunchParams"]; + launchOptions = validator(launchOptions, "", validatorContext); + return await playwright[this._browserName].launch(progress, launchOptions, toProtocolLogger(options.logger)); + } + }); + } catch (e) { + const log = import_helper.helper.formatBrowserLogs(metadata.log); + (0, import_stackTrace.rewriteErrorMessage)(e, `${e.message} Failed to launch browser.${log}`); + throw e; + } + const path = options.wsPath ? options.wsPath.startsWith("/") ? options.wsPath : `/${options.wsPath}` : `/${(0, import_crypto.createGuid)()}`; + const server = new import_playwrightServer.PlaywrightServer({ mode: options._sharedBrowser ? "launchServerShared" : "launchServer", path, maxConnections: Infinity, preLaunchedBrowser: browser }); + const wsEndpoint = await server.listen(options.port, options.host); + const browserServer = new import_utilsBundle.ws.EventEmitter(); + browserServer.process = () => browser.options.browserProcess.process; + browserServer.wsEndpoint = () => wsEndpoint; + browserServer.close = () => browser.options.browserProcess.close(); + browserServer[Symbol.asyncDispose] = browserServer.close; + browserServer.kill = () => browser.options.browserProcess.kill(); + browserServer._disconnectForTest = () => server.close(); + browserServer._userDataDirForTest = browser._userDataDirForTest; + browser.options.browserProcess.onclose = (exitCode, signal) => { + server.close(); + browserServer.emit("close", exitCode, signal); + }; + return browserServer; + } +} +function toProtocolLogger(logger) { + return logger ? (direction, message) => { + if (logger.isEnabled("protocol", "verbose")) + logger.log("protocol", "verbose", (direction === "send" ? "SEND \u25BA " : "\u25C0 RECV ") + JSON.stringify(message), [], {}); + } : void 0; +} +function envObjectToArray(env) { + const result = []; + for (const name in env) { + if (!Object.is(env[name], void 0)) + result.push({ name, value: String(env[name]) }); + } + return result; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + BrowserServerLauncherImpl +}); diff --git a/node_modules/playwright-core/lib/cli/browserActions.js b/node_modules/playwright-core/lib/cli/browserActions.js new file mode 100644 index 0000000..2a00914 --- /dev/null +++ b/node_modules/playwright-core/lib/cli/browserActions.js @@ -0,0 +1,308 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var browserActions_exports = {}; +__export(browserActions_exports, { + codegen: () => codegen, + open: () => open, + pdf: () => pdf, + screenshot: () => screenshot +}); +module.exports = __toCommonJS(browserActions_exports); +var import_fs = __toESM(require("fs")); +var import_os = __toESM(require("os")); +var import_path = __toESM(require("path")); +var playwright = __toESM(require("../..")); +var import_utils = require("../utils"); +var import_utilsBundle = require("../utilsBundle"); +async function launchContext(options, extraOptions) { + validateOptions(options); + const browserType = lookupBrowserType(options); + const launchOptions = extraOptions; + if (options.channel) + launchOptions.channel = options.channel; + launchOptions.handleSIGINT = false; + const contextOptions = ( + // Copy the device descriptor since we have to compare and modify the options. + options.device ? { ...playwright.devices[options.device] } : {} + ); + if (!extraOptions.headless) + contextOptions.deviceScaleFactor = import_os.default.platform() === "darwin" ? 2 : 1; + if (browserType.name() === "webkit" && process.platform === "linux") { + delete contextOptions.hasTouch; + delete contextOptions.isMobile; + } + if (contextOptions.isMobile && browserType.name() === "firefox") + contextOptions.isMobile = void 0; + if (options.blockServiceWorkers) + contextOptions.serviceWorkers = "block"; + if (options.proxyServer) { + launchOptions.proxy = { + server: options.proxyServer + }; + if (options.proxyBypass) + launchOptions.proxy.bypass = options.proxyBypass; + } + if (options.viewportSize) { + try { + const [width, height] = options.viewportSize.split(",").map((n) => +n); + if (isNaN(width) || isNaN(height)) + throw new Error("bad values"); + contextOptions.viewport = { width, height }; + } catch (e) { + throw new Error('Invalid viewport size format: use "width,height", for example --viewport-size="800,600"'); + } + } + if (options.geolocation) { + try { + const [latitude, longitude] = options.geolocation.split(",").map((n) => parseFloat(n.trim())); + contextOptions.geolocation = { + latitude, + longitude + }; + } catch (e) { + throw new Error('Invalid geolocation format, should be "lat,long". For example --geolocation="37.819722,-122.478611"'); + } + contextOptions.permissions = ["geolocation"]; + } + if (options.userAgent) + contextOptions.userAgent = options.userAgent; + if (options.lang) + contextOptions.locale = options.lang; + if (options.colorScheme) + contextOptions.colorScheme = options.colorScheme; + if (options.timezone) + contextOptions.timezoneId = options.timezone; + if (options.loadStorage) + contextOptions.storageState = options.loadStorage; + if (options.ignoreHttpsErrors) + contextOptions.ignoreHTTPSErrors = true; + if (options.saveHar) { + contextOptions.recordHar = { path: import_path.default.resolve(process.cwd(), options.saveHar), mode: "minimal" }; + if (options.saveHarGlob) + contextOptions.recordHar.urlFilter = options.saveHarGlob; + contextOptions.serviceWorkers = "block"; + } + let browser; + let context; + if (options.userDataDir) { + context = await browserType.launchPersistentContext(options.userDataDir, { ...launchOptions, ...contextOptions }); + browser = context.browser(); + } else { + browser = await browserType.launch(launchOptions); + context = await browser.newContext(contextOptions); + } + let closingBrowser = false; + async function closeBrowser() { + if (closingBrowser) + return; + closingBrowser = true; + if (options.saveStorage) + await context.storageState({ path: options.saveStorage }).catch((e) => null); + if (options.saveHar) + await context.close(); + await browser.close(); + } + context.on("page", (page) => { + page.on("dialog", () => { + }); + page.on("close", () => { + const hasPage = browser.contexts().some((context2) => context2.pages().length > 0); + if (hasPage) + return; + closeBrowser().catch(() => { + }); + }); + }); + process.on("SIGINT", async () => { + await closeBrowser(); + (0, import_utils.gracefullyProcessExitDoNotHang)(130); + }); + const timeout = options.timeout ? parseInt(options.timeout, 10) : 0; + context.setDefaultTimeout(timeout); + context.setDefaultNavigationTimeout(timeout); + delete launchOptions.headless; + delete launchOptions.executablePath; + delete launchOptions.handleSIGINT; + delete contextOptions.deviceScaleFactor; + return { browser, browserName: browserType.name(), context, contextOptions, launchOptions, closeBrowser }; +} +async function openPage(context, url) { + let page = context.pages()[0]; + if (!page) + page = await context.newPage(); + if (url) { + if (import_fs.default.existsSync(url)) + url = "file://" + import_path.default.resolve(url); + else if (!url.startsWith("http") && !url.startsWith("file://") && !url.startsWith("about:") && !url.startsWith("data:")) + url = "http://" + url; + await page.goto(url); + } + return page; +} +async function open(options, url) { + const { context } = await launchContext(options, { headless: !!process.env.PWTEST_CLI_HEADLESS, executablePath: process.env.PWTEST_CLI_EXECUTABLE_PATH }); + await context._exposeConsoleApi(); + await openPage(context, url); +} +async function codegen(options, url) { + const { target: language, output: outputFile, testIdAttribute: testIdAttributeName } = options; + const tracesDir = import_path.default.join(import_os.default.tmpdir(), `playwright-recorder-trace-${Date.now()}`); + const { context, browser, launchOptions, contextOptions, closeBrowser } = await launchContext(options, { + headless: !!process.env.PWTEST_CLI_HEADLESS, + executablePath: process.env.PWTEST_CLI_EXECUTABLE_PATH, + tracesDir + }); + const donePromise = new import_utils.ManualPromise(); + maybeSetupTestHooks(browser, closeBrowser, donePromise); + import_utilsBundle.dotenv.config({ path: "playwright.env" }); + await context._enableRecorder({ + language, + launchOptions, + contextOptions, + device: options.device, + saveStorage: options.saveStorage, + mode: "recording", + testIdAttributeName, + outputFile: outputFile ? import_path.default.resolve(outputFile) : void 0, + handleSIGINT: false + }); + await openPage(context, url); + donePromise.resolve(); +} +async function maybeSetupTestHooks(browser, closeBrowser, donePromise) { + if (!process.env.PWTEST_CLI_IS_UNDER_TEST) + return; + const logs = []; + require("playwright-core/lib/utilsBundle").debug.log = (...args) => { + const line = require("util").format(...args) + "\n"; + logs.push(line); + process.stderr.write(line); + }; + browser.on("disconnected", () => { + const hasCrashLine = logs.some((line) => line.includes("process did exit:") && !line.includes("process did exit: exitCode=0, signal=null")); + if (hasCrashLine) { + process.stderr.write("Detected browser crash.\n"); + (0, import_utils.gracefullyProcessExitDoNotHang)(1); + } + }); + const close = async () => { + await donePromise; + await closeBrowser(); + }; + if (process.env.PWTEST_CLI_EXIT_AFTER_TIMEOUT) { + setTimeout(close, +process.env.PWTEST_CLI_EXIT_AFTER_TIMEOUT); + return; + } + let stdin = ""; + process.stdin.on("data", (data) => { + stdin += data.toString(); + if (stdin.startsWith("exit")) { + process.stdin.destroy(); + close(); + } + }); +} +async function waitForPage(page, captureOptions) { + if (captureOptions.waitForSelector) { + console.log(`Waiting for selector ${captureOptions.waitForSelector}...`); + await page.waitForSelector(captureOptions.waitForSelector); + } + if (captureOptions.waitForTimeout) { + console.log(`Waiting for timeout ${captureOptions.waitForTimeout}...`); + await page.waitForTimeout(parseInt(captureOptions.waitForTimeout, 10)); + } +} +async function screenshot(options, captureOptions, url, path2) { + const { context } = await launchContext(options, { headless: true }); + console.log("Navigating to " + url); + const page = await openPage(context, url); + await waitForPage(page, captureOptions); + console.log("Capturing screenshot into " + path2); + await page.screenshot({ path: path2, fullPage: !!captureOptions.fullPage }); + await page.close(); +} +async function pdf(options, captureOptions, url, path2) { + if (options.browser !== "chromium") + throw new Error("PDF creation is only working with Chromium"); + const { context } = await launchContext({ ...options, browser: "chromium" }, { headless: true }); + console.log("Navigating to " + url); + const page = await openPage(context, url); + await waitForPage(page, captureOptions); + console.log("Saving as pdf into " + path2); + await page.pdf({ path: path2, format: captureOptions.paperFormat }); + await page.close(); +} +function lookupBrowserType(options) { + let name = options.browser; + if (options.device) { + const device = playwright.devices[options.device]; + name = device.defaultBrowserType; + } + let browserType; + switch (name) { + case "chromium": + browserType = playwright.chromium; + break; + case "webkit": + browserType = playwright.webkit; + break; + case "firefox": + browserType = playwright.firefox; + break; + case "cr": + browserType = playwright.chromium; + break; + case "wk": + browserType = playwright.webkit; + break; + case "ff": + browserType = playwright.firefox; + break; + } + if (browserType) + return browserType; + import_utilsBundle.program.help(); +} +function validateOptions(options) { + if (options.device && !(options.device in playwright.devices)) { + const lines = [`Device descriptor not found: '${options.device}', available devices are:`]; + for (const name in playwright.devices) + lines.push(` "${name}"`); + throw new Error(lines.join("\n")); + } + if (options.colorScheme && !["light", "dark"].includes(options.colorScheme)) + throw new Error('Invalid color scheme, should be one of "light", "dark"'); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + codegen, + open, + pdf, + screenshot +}); diff --git a/node_modules/playwright-core/lib/cli/driver.js b/node_modules/playwright-core/lib/cli/driver.js new file mode 100644 index 0000000..c96c3f6 --- /dev/null +++ b/node_modules/playwright-core/lib/cli/driver.js @@ -0,0 +1,98 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var driver_exports = {}; +__export(driver_exports, { + launchBrowserServer: () => launchBrowserServer, + printApiJson: () => printApiJson, + runDriver: () => runDriver, + runServer: () => runServer +}); +module.exports = __toCommonJS(driver_exports); +var import_fs = __toESM(require("fs")); +var playwright = __toESM(require("../..")); +var import_pipeTransport = require("../server/utils/pipeTransport"); +var import_playwrightServer = require("../remote/playwrightServer"); +var import_server = require("../server"); +var import_processLauncher = require("../server/utils/processLauncher"); +function printApiJson() { + console.log(JSON.stringify(require("../../api.json"))); +} +function runDriver() { + const dispatcherConnection = new import_server.DispatcherConnection(); + new import_server.RootDispatcher(dispatcherConnection, async (rootScope, { sdkLanguage }) => { + const playwright2 = (0, import_server.createPlaywright)({ sdkLanguage }); + return new import_server.PlaywrightDispatcher(rootScope, playwright2); + }); + const transport = new import_pipeTransport.PipeTransport(process.stdout, process.stdin); + transport.onmessage = (message) => dispatcherConnection.dispatch(JSON.parse(message)); + const isJavaScriptLanguageBinding = !process.env.PW_LANG_NAME || process.env.PW_LANG_NAME === "javascript"; + const replacer = !isJavaScriptLanguageBinding && String.prototype.toWellFormed ? (key, value) => { + if (typeof value === "string") + return value.toWellFormed(); + return value; + } : void 0; + dispatcherConnection.onmessage = (message) => transport.send(JSON.stringify(message, replacer)); + transport.onclose = () => { + dispatcherConnection.onmessage = () => { + }; + (0, import_processLauncher.gracefullyProcessExitDoNotHang)(0); + }; + process.on("SIGINT", () => { + }); +} +async function runServer(options) { + const { + port, + host, + path = "/", + maxConnections = Infinity, + extension, + artifactsDir + } = options; + const server = new import_playwrightServer.PlaywrightServer({ mode: extension ? "extension" : "default", path, maxConnections, artifactsDir }); + const wsEndpoint = await server.listen(port, host); + process.on("exit", () => server.close().catch(console.error)); + console.log("Listening on " + wsEndpoint); + process.stdin.on("close", () => (0, import_processLauncher.gracefullyProcessExitDoNotHang)(0)); +} +async function launchBrowserServer(browserName, configFile) { + let options = {}; + if (configFile) + options = JSON.parse(import_fs.default.readFileSync(configFile).toString()); + const browserType = playwright[browserName]; + const server = await browserType.launchServer(options); + console.log(server.wsEndpoint()); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + launchBrowserServer, + printApiJson, + runDriver, + runServer +}); diff --git a/node_modules/playwright-core/lib/cli/installActions.js b/node_modules/playwright-core/lib/cli/installActions.js new file mode 100644 index 0000000..eddcf4a --- /dev/null +++ b/node_modules/playwright-core/lib/cli/installActions.js @@ -0,0 +1,171 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var installActions_exports = {}; +__export(installActions_exports, { + installBrowsers: () => installBrowsers, + installDeps: () => installDeps, + markDockerImage: () => markDockerImage, + registry: () => import_server.registry, + uninstallBrowsers: () => uninstallBrowsers +}); +module.exports = __toCommonJS(installActions_exports); +var import_path = __toESM(require("path")); +var import_server = require("../server"); +var import_utils = require("../utils"); +var import_utils2 = require("../utils"); +var import_ascii = require("../server/utils/ascii"); +function printInstalledBrowsers(browsers) { + const browserPaths = /* @__PURE__ */ new Set(); + for (const browser of browsers) + browserPaths.add(browser.browserPath); + console.log(` Browsers:`); + for (const browserPath of [...browserPaths].sort()) + console.log(` ${browserPath}`); + console.log(` References:`); + const references = /* @__PURE__ */ new Set(); + for (const browser of browsers) + references.add(browser.referenceDir); + for (const reference of [...references].sort()) + console.log(` ${reference}`); +} +function printGroupedByPlaywrightVersion(browsers) { + const dirToVersion = /* @__PURE__ */ new Map(); + for (const browser of browsers) { + if (dirToVersion.has(browser.referenceDir)) + continue; + const packageJSON = require(import_path.default.join(browser.referenceDir, "package.json")); + const version = packageJSON.version; + dirToVersion.set(browser.referenceDir, version); + } + const groupedByPlaywrightMinorVersion = /* @__PURE__ */ new Map(); + for (const browser of browsers) { + const version = dirToVersion.get(browser.referenceDir); + let entries = groupedByPlaywrightMinorVersion.get(version); + if (!entries) { + entries = []; + groupedByPlaywrightMinorVersion.set(version, entries); + } + entries.push(browser); + } + const sortedVersions = [...groupedByPlaywrightMinorVersion.keys()].sort((a, b) => { + const aComponents = a.split("."); + const bComponents = b.split("."); + const aMajor = parseInt(aComponents[0], 10); + const bMajor = parseInt(bComponents[0], 10); + if (aMajor !== bMajor) + return aMajor - bMajor; + const aMinor = parseInt(aComponents[1], 10); + const bMinor = parseInt(bComponents[1], 10); + if (aMinor !== bMinor) + return aMinor - bMinor; + return aComponents.slice(2).join(".").localeCompare(bComponents.slice(2).join(".")); + }); + for (const version of sortedVersions) { + console.log(` +Playwright version: ${version}`); + printInstalledBrowsers(groupedByPlaywrightMinorVersion.get(version)); + } +} +async function markDockerImage(dockerImageNameTemplate) { + (0, import_utils2.assert)(dockerImageNameTemplate, "dockerImageNameTemplate is required"); + await (0, import_server.writeDockerVersion)(dockerImageNameTemplate); +} +async function installBrowsers(args, options) { + if ((0, import_utils.isLikelyNpxGlobal)()) { + console.error((0, import_ascii.wrapInASCIIBox)([ + `WARNING: It looks like you are running 'npx playwright install' without first`, + `installing your project's dependencies.`, + ``, + `To avoid unexpected behavior, please install your dependencies first, and`, + `then run Playwright's install command:`, + ``, + ` npm install`, + ` npx playwright install`, + ``, + `If your project does not yet depend on Playwright, first install the`, + `applicable npm package (most commonly @playwright/test), and`, + `then run Playwright's install command to download the browsers:`, + ``, + ` npm install @playwright/test`, + ` npx playwright install`, + `` + ].join("\n"), 1)); + } + if (options.shell === false && options.onlyShell) + throw new Error(`Only one of --no-shell and --only-shell can be specified`); + const shell = options.shell === false ? "no" : options.onlyShell ? "only" : void 0; + const executables = import_server.registry.resolveBrowsers(args, { shell }); + if (options.withDeps) + await import_server.registry.installDeps(executables, !!options.dryRun); + if (options.dryRun && options.list) + throw new Error(`Only one of --dry-run and --list can be specified`); + if (options.dryRun) { + for (const executable of executables) { + console.log(import_server.registry.calculateDownloadTitle(executable)); + console.log(` Install location: ${executable.directory ?? ""}`); + if (executable.downloadURLs?.length) { + const [url, ...fallbacks] = executable.downloadURLs; + console.log(` Download url: ${url}`); + for (let i = 0; i < fallbacks.length; ++i) + console.log(` Download fallback ${i + 1}: ${fallbacks[i]}`); + } + console.log(``); + } + } else if (options.list) { + const browsers = await import_server.registry.listInstalledBrowsers(); + printGroupedByPlaywrightVersion(browsers); + } else { + await import_server.registry.install(executables, { force: options.force }); + await import_server.registry.validateHostRequirementsForExecutablesIfNeeded(executables, process.env.PW_LANG_NAME || "javascript").catch((e) => { + e.name = "Playwright Host validation warning"; + console.error(e); + }); + } +} +async function uninstallBrowsers(options) { + delete process.env.PLAYWRIGHT_SKIP_BROWSER_GC; + await import_server.registry.uninstall(!!options.all).then(({ numberOfBrowsersLeft }) => { + if (!options.all && numberOfBrowsersLeft > 0) { + console.log("Successfully uninstalled Playwright browsers for the current Playwright installation."); + console.log(`There are still ${numberOfBrowsersLeft} browsers left, used by other Playwright installations. +To uninstall Playwright browsers for all installations, re-run with --all flag.`); + } + }); +} +async function installDeps(args, options) { + await import_server.registry.installDeps(import_server.registry.resolveBrowsers(args, {}), !!options.dryRun); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + installBrowsers, + installDeps, + markDockerImage, + registry, + uninstallBrowsers +}); diff --git a/node_modules/playwright-core/lib/cli/program.js b/node_modules/playwright-core/lib/cli/program.js new file mode 100644 index 0000000..39b59dd --- /dev/null +++ b/node_modules/playwright-core/lib/cli/program.js @@ -0,0 +1,225 @@ +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var program_exports = {}; +__export(program_exports, { + program: () => import_utilsBundle2.program +}); +module.exports = __toCommonJS(program_exports); +var import_bootstrap = require("../bootstrap"); +var import_utils = require("../utils"); +var import_traceCli = require("../tools/trace/traceCli"); +var import_utilsBundle = require("../utilsBundle"); +var import_utilsBundle2 = require("../utilsBundle"); +const packageJSON = require("../../package.json"); +import_utilsBundle.program.version("Version " + (process.env.PW_CLI_DISPLAY_VERSION || packageJSON.version)).name(buildBasePlaywrightCLICommand(process.env.PW_LANG_NAME)); +import_utilsBundle.program.command("mark-docker-image [dockerImageNameTemplate]", { hidden: true }).description("mark docker image").allowUnknownOption(true).action(async function(dockerImageNameTemplate) { + const { markDockerImage } = require("./installActions"); + markDockerImage(dockerImageNameTemplate).catch(logErrorAndExit); +}); +commandWithOpenOptions("open [url]", "open page in browser specified via -b, --browser", []).action(async function(url, options) { + const { open } = require("./browserActions"); + open(options, url).catch(logErrorAndExit); +}).addHelpText("afterAll", ` +Examples: + + $ open + $ open -b webkit https://example.com`); +commandWithOpenOptions( + "codegen [url]", + "open page and generate code for user actions", + [ + ["-o, --output ", "saves the generated script to a file"], + ["--target ", `language to generate, one of javascript, playwright-test, python, python-async, python-pytest, csharp, csharp-mstest, csharp-nunit, java, java-junit`, codegenId()], + ["--test-id-attribute ", "use the specified attribute to generate data test ID selectors"] + ] +).action(async function(url, options) { + const { codegen } = require("./browserActions"); + await codegen(options, url); +}).addHelpText("afterAll", ` +Examples: + + $ codegen + $ codegen --target=python + $ codegen -b webkit https://example.com`); +import_utilsBundle.program.command("install [browser...]").description("ensure browsers necessary for this version of Playwright are installed").option("--with-deps", "install system dependencies for browsers").option("--dry-run", "do not execute installation, only print information").option("--list", "prints list of browsers from all playwright installations").option("--force", "force reinstall of already installed browsers").option("--only-shell", "only install headless shell when installing chromium").option("--no-shell", "do not install chromium headless shell").action(async function(args, options) { + try { + const { installBrowsers } = require("./installActions"); + await installBrowsers(args, options); + } catch (e) { + console.log(`Failed to install browsers +${e}`); + (0, import_utils.gracefullyProcessExitDoNotHang)(1); + } +}).addHelpText("afterAll", ` + +Examples: + - $ install + Install default browsers. + + - $ install chrome firefox + Install custom browsers, supports chromium, firefox, webkit, chromium-headless-shell.`); +import_utilsBundle.program.command("uninstall").description("Removes browsers used by this installation of Playwright from the system (chromium, firefox, webkit, ffmpeg). This does not include branded channels.").option("--all", "Removes all browsers used by any Playwright installation from the system.").action(async (options) => { + const { uninstallBrowsers } = require("./installActions"); + uninstallBrowsers(options).catch(logErrorAndExit); +}); +import_utilsBundle.program.command("install-deps [browser...]").description("install dependencies necessary to run browsers (will ask for sudo permissions)").option("--dry-run", "Do not execute installation commands, only print them").action(async function(args, options) { + try { + const { installDeps } = require("./installActions"); + await installDeps(args, options); + } catch (e) { + console.log(`Failed to install browser dependencies +${e}`); + (0, import_utils.gracefullyProcessExitDoNotHang)(1); + } +}).addHelpText("afterAll", ` +Examples: + - $ install-deps + Install dependencies for default browsers. + + - $ install-deps chrome firefox + Install dependencies for specific browsers, supports chromium, firefox, webkit, chromium-headless-shell.`); +const browsers = [ + { alias: "cr", name: "Chromium", type: "chromium" }, + { alias: "ff", name: "Firefox", type: "firefox" }, + { alias: "wk", name: "WebKit", type: "webkit" } +]; +for (const { alias, name, type } of browsers) { + commandWithOpenOptions(`${alias} [url]`, `open page in ${name}`, []).action(async function(url, options) { + const { open } = require("./browserActions"); + open({ ...options, browser: type }, url).catch(logErrorAndExit); + }).addHelpText("afterAll", ` +Examples: + + $ ${alias} https://example.com`); +} +commandWithOpenOptions( + "screenshot ", + "capture a page screenshot", + [ + ["--wait-for-selector ", "wait for selector before taking a screenshot"], + ["--wait-for-timeout ", "wait for timeout in milliseconds before taking a screenshot"], + ["--full-page", "whether to take a full page screenshot (entire scrollable area)"] + ] +).action(async function(url, filename, command) { + const { screenshot } = require("./browserActions"); + screenshot(command, command, url, filename).catch(logErrorAndExit); +}).addHelpText("afterAll", ` +Examples: + + $ screenshot -b webkit https://example.com example.png`); +commandWithOpenOptions( + "pdf ", + "save page as pdf", + [ + ["--paper-format ", "paper format: Letter, Legal, Tabloid, Ledger, A0, A1, A2, A3, A4, A5, A6"], + ["--wait-for-selector ", "wait for given selector before saving as pdf"], + ["--wait-for-timeout ", "wait for given timeout in milliseconds before saving as pdf"] + ] +).action(async function(url, filename, options) { + const { pdf } = require("./browserActions"); + pdf(options, options, url, filename).catch(logErrorAndExit); +}).addHelpText("afterAll", ` +Examples: + + $ pdf https://example.com example.pdf`); +import_utilsBundle.program.command("run-driver", { hidden: true }).action(async function(options) { + const { runDriver } = require("./driver"); + runDriver(); +}); +import_utilsBundle.program.command("run-server", { hidden: true }).option("--port ", "Server port").option("--host ", "Server host").option("--path ", "Endpoint Path", "/").option("--max-clients ", "Maximum clients").option("--mode ", 'Server mode, either "default" or "extension"').option("--artifacts-dir ", "Artifacts directory").action(async function(options) { + const { runServer } = require("./driver"); + runServer({ + port: options.port ? +options.port : void 0, + host: options.host, + path: options.path, + maxConnections: options.maxClients ? +options.maxClients : Infinity, + extension: options.mode === "extension" || !!process.env.PW_EXTENSION_MODE, + artifactsDir: options.artifactsDir + }).catch(logErrorAndExit); +}); +import_utilsBundle.program.command("print-api-json", { hidden: true }).action(async function(options) { + const { printApiJson } = require("./driver"); + printApiJson(); +}); +import_utilsBundle.program.command("launch-server", { hidden: true }).requiredOption("--browser ", 'Browser name, one of "chromium", "firefox" or "webkit"').option("--config ", "JSON file with launchServer options").action(async function(options) { + const { launchBrowserServer } = require("./driver"); + launchBrowserServer(options.browser, options.config); +}); +import_utilsBundle.program.command("show-trace [trace]").option("-b, --browser ", "browser to use, one of cr, chromium, ff, firefox, wk, webkit", "chromium").option("-h, --host ", "Host to serve trace on; specifying this option opens trace in a browser tab").option("-p, --port ", "Port to serve trace on, 0 for any free port; specifying this option opens trace in a browser tab").option("--stdin", "Accept trace URLs over stdin to update the viewer").description("show trace viewer").action(async function(trace, options) { + if (options.browser === "cr") + options.browser = "chromium"; + if (options.browser === "ff") + options.browser = "firefox"; + if (options.browser === "wk") + options.browser = "webkit"; + const openOptions = { + host: options.host, + port: +options.port, + isServer: !!options.stdin + }; + const { runTraceInBrowser, runTraceViewerApp } = require("../server/trace/viewer/traceViewer"); + if (options.port !== void 0 || options.host !== void 0) + runTraceInBrowser(trace, openOptions).catch(logErrorAndExit); + else + runTraceViewerApp(trace, options.browser, openOptions).catch(logErrorAndExit); +}).addHelpText("afterAll", ` +Examples: + + $ show-trace + $ show-trace https://example.com/trace.zip`); +(0, import_traceCli.addTraceCommands)(import_utilsBundle.program, logErrorAndExit); +import_utilsBundle.program.command("cli", { hidden: true }).allowExcessArguments(true).allowUnknownOption(true).action(async (options) => { + const { program: cliProgram } = require("../tools/cli-client/program"); + process.argv.splice(process.argv.indexOf("cli"), 1); + cliProgram().catch(logErrorAndExit); +}); +function logErrorAndExit(e) { + if (process.env.PWDEBUGIMPL) + console.error(e); + else + console.error(e.name + ": " + e.message); + (0, import_utils.gracefullyProcessExitDoNotHang)(1); +} +function codegenId() { + return process.env.PW_LANG_NAME || "playwright-test"; +} +function commandWithOpenOptions(command, description, options) { + let result = import_utilsBundle.program.command(command).description(description); + for (const option of options) + result = result.option(option[0], ...option.slice(1)); + return result.option("-b, --browser ", "browser to use, one of cr, chromium, ff, firefox, wk, webkit", "chromium").option("--block-service-workers", "block service workers").option("--channel ", 'Chromium distribution channel, "chrome", "chrome-beta", "msedge-dev", etc').option("--color-scheme ", 'emulate preferred color scheme, "light" or "dark"').option("--device ", 'emulate device, for example "iPhone 11"').option("--geolocation ", 'specify geolocation coordinates, for example "37.819722,-122.478611"').option("--ignore-https-errors", "ignore https errors").option("--load-storage ", "load context storage state from the file, previously saved with --save-storage").option("--lang ", 'specify language / locale, for example "en-GB"').option("--proxy-server ", 'specify proxy server, for example "http://myproxy:3128" or "socks5://myproxy:8080"').option("--proxy-bypass ", 'comma-separated domains to bypass proxy, for example ".com,chromium.org,.domain.com"').option("--save-har ", "save HAR file with all network activity at the end").option("--save-har-glob ", "filter entries in the HAR by matching url against this glob pattern").option("--save-storage ", "save context storage state at the end, for later use with --load-storage").option("--timezone