[
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 2\nindent_style = space\ninsert_final_newline = true\nmax_line_length = 120\ntab_width = 2\ntrim_trailing_whitespace = true\n"
  },
  {
    "path": ".eslintignore",
    "content": "# Ignore all files in the 'dist' directory\n\n**/dist/**/*\n**/coverage/*\n**/.next/*\n\n# Ignore all '.min.js' files\n*.min.js\n\n# Temporary measure while migrating nodes\nholding/**/*\n\n.github\n.husky\n.turbo\n.yarn\n\n# ignore Service Worker files\n/public/sw.js\n/public/workbox-*.js\n\n"
  },
  {
    "path": ".eslintrc.js",
    "content": "module.exports = {\n  'env': {\n    'browser': true,\n    'es2021': true,\n  },\n  'overrides': [\n    {\n      'env': {\n        'node': true,\n      },\n      'files': ['*.ts', '*.tsx', '*.js', '*.jsx'],\n      'parserOptions': {\n        'sourceType': 'script',\n      },\n    },\n  ],\n  'parser': '@typescript-eslint/parser',\n  'parserOptions': {\n    'ecmaVersion': 'latest',\n    'sourceType': 'module',\n  },\n  'plugins': [\n    '@stylistic',\n    'react-hooks',\n    'import',\n  ],\n  'rules': {\n    'no-multiple-empty-lines': ['error', { 'max': 1, 'maxEOF': 0, 'maxBOF': 0 }],\n    'padded-blocks': ['error', { 'blocks': 'never' }],\n    'no-trailing-spaces': 'error',\n    'react-hooks/rules-of-hooks': 'error',\n    'react-hooks/exhaustive-deps': 'warn',\n    '@stylistic/indent': [\n      'error',\n      2,\n    ],\n    '@stylistic/linebreak-style': 'off',\n    '@stylistic/quotes': [\n      'error',\n      'single',\n    ],\n    '@stylistic/eol-last': 'off',\n    '@stylistic/space-infix-ops': ['warn', { 'int32Hint': false }],\n    '@stylistic/comma-dangle': ['error', {\n      'arrays': 'always-multiline',\n      'objects': 'always-multiline',\n      'imports': 'always-multiline',\n      'exports': 'always-multiline',\n      'functions': 'always-multiline',\n    }],\n    '@stylistic/object-curly-spacing': ['error', 'always'],\n  },\n};\n"
  },
  {
    "path": ".gitattributes",
    "content": "/.yarn/releases/** binary\n/.yarn/plugins/** binary\n"
  },
  {
    "path": ".github/workflows/publish.yml",
    "content": "name: Publish CI\n\non:\n  workflow_run:\n    workflows: [ \"Test CI\" ]\n    branches: [ main ]\n    types: [ completed ]\n\njobs:\n  publish_core:\n    runs-on: ubuntu-latest\n    if: github.ref == 'refs/heads/main'\n    steps:\n      - uses: actions/checkout@v4\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '21.x'\n          registry-url: 'https://registry.npmjs.org'\n\n      - name: Check Test CI status\n        if: >\n          github.event.workflow_run.conclusion == 'failure' ||\n          github.event.workflow_run.conclusion == 'cancelled'\n        run: |\n          echo \"The 'Test CI' workflow is ${{ github.event.workflow_run.conclusion }}.\"\n          exit 1 # Exit with a failure\n\n      - name: Download dist artifacts from Test CI\n        uses: actions/download-artifact@v4\n        with:\n          name: dist-artifacts\n          path: packages\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          repository: ${{ github.repository }}\n          run-id: ${{ github.event.workflow_run.id }}\n\n      - name: Check version\n        id: check\n        run: |\n          PACKAGE_VERSION=$(node -p -e \"require('./packages/core/package.json').version\")\n          echo \"Version: $PACKAGE_VERSION\"\n          HTTP_STATUS=$(curl --silent --head --write-out \"%{http_code}\" --output /dev/null https://registry.npmjs.org/@data-story/core/$PACKAGE_VERSION)\n\n          if [ $HTTP_STATUS -eq 200 ]; then\n            echo \"Version $PACKAGE_VERSION already exists. Exiting the action script.\"\n            echo \"VERSION_EXISTS=true\" >> $GITHUB_ENV\n          else\n            echo \"Version does not exist.\"\n            echo \"VERSION_EXISTS=false\" >> $GITHUB_ENV\n          fi\n\n      - name: Publish\n        if: ${{ env.VERSION_EXISTS == 'false' }}\n        run: |\n          yarn config set -H npmScopes.data-story.npmPublishRegistry \"https://registry.npmjs.org/\"\n          yarn config set -H npmScopes.data-story.npmAuthToken \"${{ secrets.NPM_DATA_STORY }}\"\n          cd packages/core && yarn npm publish --access public\n\n  publish_ui:\n    needs: publish_core\n    runs-on: ubuntu-latest\n    if: github.ref == 'refs/heads/main'\n    steps:\n      - uses: actions/checkout@v4\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '21.x'\n          registry-url: 'https://registry.npmjs.org'\n\n      - name: Download dist artifacts from Test CI\n        uses: actions/download-artifact@v4\n        with:\n          name: dist-artifacts\n          path: packages\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          repository: ${{ github.repository }}\n          run-id: ${{ github.event.workflow_run.id }}\n\n      - name: Check version\n        id: check\n        run: |\n          PACKAGE_VERSION=$(node -p -e \"require('./packages/ui/package.json').version\")\n          echo \"Version: $PACKAGE_VERSION\"\n          HTTP_STATUS=$(curl --silent --head --write-out \"%{http_code}\" --output /dev/null https://registry.npmjs.org/@data-story/ui/$PACKAGE_VERSION)\n\n          if [ $HTTP_STATUS -eq 200 ]; then\n            echo \"Version $PACKAGE_VERSION already exists. Exiting the action script.\"\n            echo \"VERSION_EXISTS=true\" >> $GITHUB_ENV\n          else\n            echo \"Version does not exist.\"\n            echo \"VERSION_EXISTS=false\" >> $GITHUB_ENV\n          fi\n      - name: Publish\n        if: ${{ env.VERSION_EXISTS == 'false' }}\n        run: |\n          yarn config set -H npmScopes.data-story.npmPublishRegistry \"https://registry.npmjs.org/\"\n          yarn config set -H npmScopes.data-story.npmAuthToken \"${{ secrets.NPM_DATA_STORY }}\"\n          cd packages/ui && yarn npm publish --access public\n\n  publish_nodejs:\n    needs: publish_core\n    runs-on: ubuntu-latest\n    if: github.ref == 'refs/heads/main'\n    steps:\n      - uses: actions/checkout@v4\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '21.x'\n          registry-url: 'https://registry.npmjs.org'\n\n      - name: Check version\n        id: check\n        run: |\n          PACKAGE_VERSION=$(node -p -e \"require('./packages/nodejs/package.json').version\")\n          echo \"Version: $PACKAGE_VERSION\"\n          HTTP_STATUS=$(curl --silent --head --write-out \"%{http_code}\" --output /dev/null https://registry.npmjs.org/@data-story/nodejs/$PACKAGE_VERSION)\n\n          if [ $HTTP_STATUS -eq 200 ]; then\n            echo \"Version $PACKAGE_VERSION already exists. Exiting the action script.\"\n            echo \"VERSION_EXISTS=true\" >> $GITHUB_ENV\n          else\n            echo \"Version does not exist.\"\n            echo \"VERSION_EXISTS=false\" >> $GITHUB_ENV\n          fi\n\n      - name: Publish\n        if: ${{ env.VERSION_EXISTS == 'false' }}\n        run: |\n          yarn config set -H npmScopes.data-story.npmPublishRegistry \"https://registry.npmjs.org/\"\n          yarn config set -H npmScopes.data-story.npmAuthToken \"${{ secrets.NPM_DATA_STORY }}\"\n          cd packages/nodejs && yarn npm publish --access public\n\n  publish_vscode_extension:\n    needs: [ publish_ui, publish_nodejs ]\n    runs-on: ubuntu-latest\n    if: github.ref == 'refs/heads/main'\n    permissions:\n      actions: read\n      packages: write\n      contents: write\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '21.x'\n\n      - name: Install vsce\n        run: npm install -g @vscode/vsce@3.1.0\n\n      - name: Check VS Code extension version\n        id: check_vscode\n        run: |\n          # get local version\n          LOCAL_VERSION=$(node -p \"require('./packages/ds-ext/package.json').version\")\n          echo \"Local Version: $LOCAL_VERSION\"\n          echo \"LOCAL_VERSION=$LOCAL_VERSION\" >> $GITHUB_ENV\n\n          # query online latest version\n          RESPONSE=$(curl -s -X POST \\\n            -H \"Content-Type: application/json\" \\\n            -H \"Accept: application/json;api-version=3.0-preview\" \\\n            -d '{\"filters\":[{\"criteria\":[{\"filterType\":7,\"value\":\"ajthinking.ds-ext\"}]}],\"flags\":914}' \\\n            \"https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery\")\n\n          # parse online version\n          ONLINE_VERSION=$(echo $RESPONSE | jq -r '.results[0].extensions[0].versions[0].version')\n          echo \"Online Version: $ONLINE_VERSION\"\n\n          # version comparison logic\n          if [ \"$LOCAL_VERSION\" = \"$ONLINE_VERSION\" ]; then\n            echo \"::warning::Version $LOCAL_VERSION already exists. Skipping build and publish.\"\n            echo \"VERSION_EXISTS=true\" >> $GITHUB_ENV\n          else\n            echo \"::notice::New version detected. Proceeding to build and publish.\"\n            echo \"VERSION_EXISTS=false\" >> $GITHUB_ENV\n          fi\n\n        # add error handling (continue publishing when API is unavailable)\n        continue-on-error: true\n\n      - name: Download ds-ext artifact from Test CI\n        if: env.VERSION_EXISTS == 'false'\n        uses: actions/download-artifact@v4\n        with:\n          name: ds-ext\n          path: dist\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          repository: ${{ github.repository }}\n          run-id: ${{ github.event.workflow_run.id }}\n\n      - name: Publish VS Code Extension\n        if: env.VERSION_EXISTS == 'false'\n        run: |\n          # publish the prebuilt vsix from the downloaded artifact\n          VSIX_FILE=$(ls dist/*.vsix | head -n 1)\n          VSIX_FILE=$(realpath \"$VSIX_FILE\")\n          if [ -z \"$VSIX_FILE\" ]; then\n            echo \"No VSIX found in dist/. Did the Test CI upload the ds-ext artifact?\" >&2\n            exit 1\n          fi\n          echo \"Publishing $VSIX_FILE\"\n          cd packages/ds-ext\n          vsce publish --pat ${{ secrets.AZURE_ACCESS_TOKEN }} --packagePath \"$VSIX_FILE\"\n\n      - name: Create GitHub release for ds-ext\n        if: always() && env.VERSION_EXISTS == 'false'\n        uses: softprops/action-gh-release@v2\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          tag_name: ds-ext@${{ env.LOCAL_VERSION }}\n          files: dist/*.vsix\n"
  },
  {
    "path": ".github/workflows/test.yml",
    "content": "name: Test CI\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n    branches:\n      - main\n\npermissions:\n  pull-requests: write\n\njobs:\n  build-artifact:\n    name: Build And Test\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '21.x'\n          registry-url: 'https://registry.npmjs.org'\n\n      - name: Restore node_modules\n        uses: actions/cache/restore@v4\n        id: restore-node-modules\n        with:\n          path: |\n            node_modules\n            packages/**/node_modules\n            !node_modules/@data-story\n            !packages/*/node_modules/@data-story\n            !**/node_modules/.cache\n            !**/node_modules/**/node_modules\n          key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}\n          restore-keys: |\n            ${{ runner.os }}-modules-\n\n      - name: Restore Turbo cache\n        uses: actions/cache/restore@v4\n        id: restore-turbo-cache\n        with:\n          path: .turbo/cache\n          key: ${{ runner.os }}-turbo-${{ hashFiles('**/yarn.lock') }}\n          restore-keys: |\n            ${{ runner.os }}-turbo-\n      - name: Restore Cypress cache\n        uses: actions/cache/restore@v4\n        id: restore-cypress-cache\n        with:\n          path: /home/runner/.cache/Cypress\n          key: ${{ runner.os }}-cypress-${{ hashFiles('**/yarn.lock') }}\n          restore-keys: |\n            ${{ runner.os }}-cypress-\n\n      # Install dependencies (only when cache is not hit)\n      - name: Install dependencies\n        if: |\n          steps.restore-node-modules.outputs.cache-hit != 'true'\n        run: yarn install --immutable\n\n      - name: cypress install\n        if: |\n          steps.restore-cypress-cache.outputs.cache-hit != 'true'\n        run: |\n          # run yarn cypress verify, if it fails, run yarn cypress install\n          if ! yarn cypress verify; then\n            yarn cypress install\n          fi\n\n      - name: Build and Test\n        run: |\n          yarn turbo run build\n          # skipping testing ds-ext for now\n          yarn turbo run test --filter=!ds-ext\n          npm install -g @vscode/vsce@3.1.0\n          cd packages/ds-ext\n          mkdir ../../dist\n          vsce package --no-yarn --skip-license -o ../../dist/\n\n      - name: Upload ds-ext\n        uses: actions/upload-artifact@v4\n        if: |\n          github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref == 'refs/heads/main')\n        with:\n          name: ds-ext\n          path: |\n            dist/\n          retention-days: 3\n\n      - name: Upload build dist artifacts\n        uses: actions/upload-artifact@v4\n        with:\n          name: dist-artifacts\n          path: |\n            packages/core/dist\n            packages/ui/dist\n            packages/nodejs/dist\n            packages/hubspot/dist\n            packages/ds-ext/dist\n            packages/docs/dist\n          retention-days: 1\n\n      - name: Comment PR\n        uses: thollander/actions-comment-pull-request@v3\n        if: |\n          github.event_name == 'pull_request'\n        with:\n          comment-tag: ds-ext-artifact\n          message: |\n            Checkout ds-ext artifact: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\n      # Save node_modules (always execute)\n      - name: Save node_modules\n        if: success()\n        uses: actions/cache/save@v4\n        with:\n          path: |\n            node_modules\n            packages/**/node_modules\n            !node_modules/@data-story\n            !packages/*/node_modules/@data-story\n            !**/node_modules/.cache\n            !**/node_modules/**/node_modules\n          key: ${{ steps.restore-node-modules.outputs.cache-primary-key }}\n\n      # Save Turbo cache (always execute)\n      - name: Save Turbo cache\n        if: success()\n        uses: actions/cache/save@v4\n        with:\n          path: .turbo/cache\n          key: ${{ steps.restore-turbo-cache.outputs.cache-primary-key }}\n\n      # Save Cypress cache (always execute)\n      - name: Save Cypress cache\n        if: success()\n        uses: actions/cache/save@v4\n        with:\n          path: /home/runner/.cache/Cypress\n          key: ${{ steps.restore-cypress-cache.outputs.cache-primary-key }}\n\n      - name: Cleanup\n        if: always()\n        run: yarn cache clean\n"
  },
  {
    "path": ".gitignore",
    "content": "### yarn ###\n# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored\n\n.yarn/*\n!.yarn/releases\n!.yarn/patches\n!.yarn/plugins\n!.yarn/sdks\n!.yarn/versions\n\n# if you are NOT using Zero-installs, then:\n# comment the following lines\n# !.yarn/cache\n\n# and uncomment the following lines\n.pnp.*\n\n.turbo\n\nnotes\nnotes.*\n\npackages/private\n\n# Cypress artifacts\ncypress/screenshots/\ncypress/videos/\n\n# Node.js\nnode_modules/\nnpm-debug.log\nyarn-error.log\n\n# Build output\ndist/\nbuild/\nout/\ntmp/\ntemp/\n\n# Environment variables\n.env\n.env.local\n.env.*.local\n\n# IDEs and editors\n.vscode/*\n!.vscode/settings.json\n!.vscode/launch.json\n!.vscode/tasks.json\n!.vscode/extensions.json\n*.vsix\n\n.vscode-test/\n.idea/\n*.sublime-project\n*.sublime-workspace\n*.swp\n\n# Logs\nlogs/\n*.log\n\n# OS generated files\n.DS_Store\nThumbs.db\n\n# Coverage reports\ncoverage/\n*.lcov\n\n# Package files\npackage-lock.json\nyarn.lock\n\n# TypeScript\n*.tsbuildinfo\n\n# SASS\n.sass-cache/\n\n# Other\n*.bak\n*.tmp\n*.orig\n*.swp\n*.swo\n.aider*\n\n# Private\nprivate-analyze-build-size.js\n\n# windsurf\n.windsurf*"
  },
  {
    "path": ".husky/pre-commit",
    "content": "#!/usr/bin/env sh\n. \"$(dirname -- \"$0\")/_/husky.sh\"\n\nnpx lint-staged --no-stash\n"
  },
  {
    "path": ".vscode/extensions.json",
    "content": "{\n    \"recommendations\": [\n        \"dbaeumer.vscode-eslint\",\n        \"amodio.tsl-problem-matcher\",\n        \"ms-vscode.extension-test-runner\"\n    ]\n}\n"
  },
  {
    "path": ".vscode/launch.json",
    "content": "{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n      {\n        \"name\": \"Run Extension\",\n        \"type\": \"extensionHost\",\n        \"request\": \"launch\",\n        \"runtimeExecutable\": \"${execPath}\",\n        \"args\": [\n          \"--extensionDevelopmentPath=${workspaceFolder}/packages/ds-ext\"\n        ],\n        \"outFiles\": [\n          \"${workspaceFolder}/packages/ds-ext/dist/**/*.js\"\n        ],\n        \"preLaunchTask\": \"${defaultBuildTask}\"\n      },\n      {\n        \"name\": \"Debug Tinker\",\n        \"type\": \"node\",\n        \"request\": \"launch\",\n        \"runtimeExecutable\": \"npx\",\n        \"runtimeArgs\": [\n          \"ts-node\",\n          \"--transpile-only\",\n          \"--files\",\n          \"--project\",\n          \"tsconfig.json\"\n        ],\n        \"sourceMaps\": true,\n        \"resolveSourceMapLocations\": [\n          \"${workspaceFolder}/**\",\n          \"!**/node_modules/**\"\n        ],\n        \"args\": [\n          \"${workspaceFolder}/packages/core/src/tinker.ts\"\n        ],\n        \"cwd\": \"${workspaceFolder}/packages/core\",\n        \"internalConsoleOptions\": \"openOnSessionStart\",\n        \"skipFiles\": [\n          \"<node_internals>/**\",\n          \"node_modules/**\"\n        ]\n      },      \n    ]\n  }\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "// Place your settings in this file to overwrite default and user settings.\n{\n\t\"files.exclude\": {\n\t\t\"out\": false, // set this to true to hide the \"out\" folder with the compiled JS files\n\t\t\"dist\": false // set this to true to hide the \"dist\" folder with the compiled JS files\n\t},\n\t\"search.exclude\": {\n\t\t\"out\": true, // set this to false to include \"out\" folder in search results\n\t\t\"dist\": true // set this to false to include \"dist\" folder in search results\n\t},\n\t// Turn off tsc task auto detection since we have the necessary tasks as npm scripts\n  \"typescript.tsc.autoDetect\": \"off\",\n  \"vitest.disableWorkspaceWarning\": true\n\n}\n"
  },
  {
    "path": ".vscode/tasks.json",
    "content": "{\n    \"version\": \"2.0.0\",\n    \"tasks\": [\n      {\n        \"type\": \"npm\",\n        \"script\": \"watch:ds-ext\",\n        \"isBackground\": true,\n        \"presentation\": {\n          \"reveal\": \"never\",\n          \"group\": \"watchers\"\n        },\n        \"group\": {\n          \"kind\": \"build\",\n          \"isDefault\": true\n        }\n      }\n    ]\n  }\n  "
  },
  {
    "path": ".yarn/patches/@uiw-codemirror-extensions-basic-setup-npm-4.23.10-953e998a73.patch",
    "content": "diff --git a/cjs/index.cjs b/cjs/index.cjs\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..2ce5c94c9b76155719455c68e8e22e60bd2e0a0e\n--- /dev/null\n+++ b/cjs/index.cjs\n@@ -0,0 +1,95 @@\n+var __defProp = Object.defineProperty;\n+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n+var __getOwnPropNames = Object.getOwnPropertyNames;\n+var __hasOwnProp = Object.prototype.hasOwnProperty;\n+var __export = (target, all) => {\n+  for (var name in all)\n+    __defProp(target, name, { get: all[name], enumerable: true });\n+};\n+var __copyProps = (to, from, except, desc) => {\n+  if (from && typeof from === \"object\" || typeof from === \"function\") {\n+    for (let key of __getOwnPropNames(from))\n+      if (!__hasOwnProp.call(to, key) && key !== except)\n+        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n+  }\n+  return to;\n+};\n+var __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n+\n+// src/index.ts\n+var index_exports = {};\n+__export(index_exports, {\n+  basicSetup: () => basicSetup,\n+  minimalSetup: () => minimalSetup\n+});\n+module.exports = __toCommonJS(index_exports);\n+var import_view = require(\"@codemirror/view\");\n+var import_state = require(\"@codemirror/state\");\n+var import_commands = require(\"@codemirror/commands\");\n+var import_search = require(\"@codemirror/search\");\n+var import_autocomplete = require(\"@codemirror/autocomplete\");\n+var import_language = require(\"@codemirror/language\");\n+var import_lint = require(\"@codemirror/lint\");\n+var basicSetup = (options = {}) => {\n+  const { crosshairCursor: initCrosshairCursor = false } = options;\n+  let keymaps = [];\n+  if (options.closeBracketsKeymap !== false) {\n+    keymaps = keymaps.concat(import_autocomplete.closeBracketsKeymap);\n+  }\n+  if (options.defaultKeymap !== false) {\n+    keymaps = keymaps.concat(import_commands.defaultKeymap);\n+  }\n+  if (options.searchKeymap !== false) {\n+    keymaps = keymaps.concat(import_search.searchKeymap);\n+  }\n+  if (options.historyKeymap !== false) {\n+    keymaps = keymaps.concat(import_commands.historyKeymap);\n+  }\n+  if (options.foldKeymap !== false) {\n+    keymaps = keymaps.concat(import_language.foldKeymap);\n+  }\n+  if (options.completionKeymap !== false) {\n+    keymaps = keymaps.concat(import_autocomplete.completionKeymap);\n+  }\n+  if (options.lintKeymap !== false) {\n+    keymaps = keymaps.concat(import_lint.lintKeymap);\n+  }\n+  const extensions = [];\n+  if (options.lineNumbers !== false) extensions.push((0, import_view.lineNumbers)());\n+  if (options.highlightActiveLineGutter !== false) extensions.push((0, import_view.highlightActiveLineGutter)());\n+  if (options.highlightSpecialChars !== false) extensions.push((0, import_view.highlightSpecialChars)());\n+  if (options.history !== false) extensions.push((0, import_commands.history)());\n+  if (options.foldGutter !== false) extensions.push((0, import_language.foldGutter)());\n+  if (options.drawSelection !== false) extensions.push((0, import_view.drawSelection)());\n+  if (options.dropCursor !== false) extensions.push((0, import_view.dropCursor)());\n+  if (options.allowMultipleSelections !== false) extensions.push(import_state.EditorState.allowMultipleSelections.of(true));\n+  if (options.indentOnInput !== false) extensions.push((0, import_language.indentOnInput)());\n+  if (options.syntaxHighlighting !== false)\n+    extensions.push((0, import_language.syntaxHighlighting)(import_language.defaultHighlightStyle, { fallback: true }));\n+  if (options.bracketMatching !== false) extensions.push((0, import_language.bracketMatching)());\n+  if (options.closeBrackets !== false) extensions.push((0, import_autocomplete.closeBrackets)());\n+  if (options.autocompletion !== false) extensions.push((0, import_autocomplete.autocompletion)());\n+  if (options.rectangularSelection !== false) extensions.push((0, import_view.rectangularSelection)());\n+  if (initCrosshairCursor !== false) extensions.push((0, import_view.crosshairCursor)());\n+  if (options.highlightActiveLine !== false) extensions.push((0, import_view.highlightActiveLine)());\n+  if (options.highlightSelectionMatches !== false) extensions.push((0, import_search.highlightSelectionMatches)());\n+  if (options.tabSize && typeof options.tabSize === \"number\")\n+    extensions.push(import_language.indentUnit.of(\" \".repeat(options.tabSize)));\n+  return extensions.concat([import_view.keymap.of(keymaps.flat())]).filter(Boolean);\n+};\n+var minimalSetup = (options = {}) => {\n+  let keymaps = [];\n+  if (options.defaultKeymap !== false) {\n+    keymaps = keymaps.concat(import_commands.defaultKeymap);\n+  }\n+  if (options.historyKeymap !== false) {\n+    keymaps = keymaps.concat(import_commands.historyKeymap);\n+  }\n+  const extensions = [];\n+  if (options.highlightSpecialChars !== false) extensions.push((0, import_view.highlightSpecialChars)());\n+  if (options.history !== false) extensions.push((0, import_commands.history)());\n+  if (options.drawSelection !== false) extensions.push((0, import_view.drawSelection)());\n+  if (options.syntaxHighlighting !== false)\n+    extensions.push((0, import_language.syntaxHighlighting)(import_language.defaultHighlightStyle, { fallback: true }));\n+  return extensions.concat([import_view.keymap.of(keymaps.flat())]).filter(Boolean);\n+};\ndiff --git a/esm/index.mjs b/esm/index.mjs\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..feeb0a2e6b9fc8c9a9f901663daf08a364bcd4d6\n--- /dev/null\n+++ b/esm/index.mjs\n@@ -0,0 +1,93 @@\n+// src/index.ts\n+import {\n+  lineNumbers,\n+  highlightActiveLineGutter,\n+  highlightSpecialChars,\n+  drawSelection,\n+  dropCursor,\n+  rectangularSelection,\n+  crosshairCursor,\n+  highlightActiveLine,\n+  keymap\n+} from \"@codemirror/view\";\n+import { EditorState } from \"@codemirror/state\";\n+import { history, defaultKeymap, historyKeymap } from \"@codemirror/commands\";\n+import { highlightSelectionMatches, searchKeymap } from \"@codemirror/search\";\n+import { closeBrackets, autocompletion, closeBracketsKeymap, completionKeymap } from \"@codemirror/autocomplete\";\n+import {\n+  foldGutter,\n+  indentOnInput,\n+  syntaxHighlighting,\n+  defaultHighlightStyle,\n+  bracketMatching,\n+  indentUnit,\n+  foldKeymap\n+} from \"@codemirror/language\";\n+import { lintKeymap } from \"@codemirror/lint\";\n+var basicSetup = (options = {}) => {\n+  const { crosshairCursor: initCrosshairCursor = false } = options;\n+  let keymaps = [];\n+  if (options.closeBracketsKeymap !== false) {\n+    keymaps = keymaps.concat(closeBracketsKeymap);\n+  }\n+  if (options.defaultKeymap !== false) {\n+    keymaps = keymaps.concat(defaultKeymap);\n+  }\n+  if (options.searchKeymap !== false) {\n+    keymaps = keymaps.concat(searchKeymap);\n+  }\n+  if (options.historyKeymap !== false) {\n+    keymaps = keymaps.concat(historyKeymap);\n+  }\n+  if (options.foldKeymap !== false) {\n+    keymaps = keymaps.concat(foldKeymap);\n+  }\n+  if (options.completionKeymap !== false) {\n+    keymaps = keymaps.concat(completionKeymap);\n+  }\n+  if (options.lintKeymap !== false) {\n+    keymaps = keymaps.concat(lintKeymap);\n+  }\n+  const extensions = [];\n+  if (options.lineNumbers !== false) extensions.push(lineNumbers());\n+  if (options.highlightActiveLineGutter !== false) extensions.push(highlightActiveLineGutter());\n+  if (options.highlightSpecialChars !== false) extensions.push(highlightSpecialChars());\n+  if (options.history !== false) extensions.push(history());\n+  if (options.foldGutter !== false) extensions.push(foldGutter());\n+  if (options.drawSelection !== false) extensions.push(drawSelection());\n+  if (options.dropCursor !== false) extensions.push(dropCursor());\n+  if (options.allowMultipleSelections !== false) extensions.push(EditorState.allowMultipleSelections.of(true));\n+  if (options.indentOnInput !== false) extensions.push(indentOnInput());\n+  if (options.syntaxHighlighting !== false)\n+    extensions.push(syntaxHighlighting(defaultHighlightStyle, { fallback: true }));\n+  if (options.bracketMatching !== false) extensions.push(bracketMatching());\n+  if (options.closeBrackets !== false) extensions.push(closeBrackets());\n+  if (options.autocompletion !== false) extensions.push(autocompletion());\n+  if (options.rectangularSelection !== false) extensions.push(rectangularSelection());\n+  if (initCrosshairCursor !== false) extensions.push(crosshairCursor());\n+  if (options.highlightActiveLine !== false) extensions.push(highlightActiveLine());\n+  if (options.highlightSelectionMatches !== false) extensions.push(highlightSelectionMatches());\n+  if (options.tabSize && typeof options.tabSize === \"number\")\n+    extensions.push(indentUnit.of(\" \".repeat(options.tabSize)));\n+  return extensions.concat([keymap.of(keymaps.flat())]).filter(Boolean);\n+};\n+var minimalSetup = (options = {}) => {\n+  let keymaps = [];\n+  if (options.defaultKeymap !== false) {\n+    keymaps = keymaps.concat(defaultKeymap);\n+  }\n+  if (options.historyKeymap !== false) {\n+    keymaps = keymaps.concat(historyKeymap);\n+  }\n+  const extensions = [];\n+  if (options.highlightSpecialChars !== false) extensions.push(highlightSpecialChars());\n+  if (options.history !== false) extensions.push(history());\n+  if (options.drawSelection !== false) extensions.push(drawSelection());\n+  if (options.syntaxHighlighting !== false)\n+    extensions.push(syntaxHighlighting(defaultHighlightStyle, { fallback: true }));\n+  return extensions.concat([keymap.of(keymaps.flat())]).filter(Boolean);\n+};\n+export {\n+  basicSetup,\n+  minimalSetup\n+};\ndiff --git a/package.json b/package.json\nindex b72183819565dde9c08e313d44f2ea014728c5bc..5ff9e38793ff3e478f18ddf75c3b2c1f813b3f7c 100644\n--- a/package.json\n+++ b/package.json\n@@ -7,12 +7,13 @@\n   \"author\": \"kenny wong <wowohoo@qq.com>\",\n   \"license\": \"MIT\",\n   \"type\": \"module\",\n-  \"main\": \"./cjs/index.js\",\n-  \"module\": \"./esm/index.js\",\n+  \"main\": \"./cjs/index.cjs\",\n+  \"module\": \"./esm/index.mjs\",\n   \"exports\": {\n     \".\": {\n-      \"require\": \"./cjs/index.js\",\n-      \"import\": \"./esm/index.js\"\n+      \"types\": \"./src/index.ts\",\n+      \"import\": \"./esm/index.mjs\",\n+      \"require\": \"./cjs/index.cjs\"\n     },\n     \"./*\": \"./*\"\n   },\n"
  },
  {
    "path": ".yarn/patches/@uiw-react-codemirror-npm-4.23.10-2db625ca86.patch",
    "content": "diff --git a/cjs/index.cjs b/cjs/index.cjs\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..0b833d65573173b3c2c3c38cec0ef6f6b635296d\n--- /dev/null\n+++ b/cjs/index.cjs\n@@ -0,0 +1,362 @@\n+var __create = Object.create;\n+var __defProp = Object.defineProperty;\n+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n+var __getOwnPropNames = Object.getOwnPropertyNames;\n+var __getProtoOf = Object.getPrototypeOf;\n+var __hasOwnProp = Object.prototype.hasOwnProperty;\n+var __export = (target, all) => {\n+  for (var name in all)\n+    __defProp(target, name, { get: all[name], enumerable: true });\n+};\n+var __copyProps = (to, from, except, desc) => {\n+  if (from && typeof from === \"object\" || typeof from === \"function\") {\n+    for (let key of __getOwnPropNames(from))\n+      if (!__hasOwnProp.call(to, key) && key !== except)\n+        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n+  }\n+  return to;\n+};\n+var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n+  // If the importer is in node compatibility mode or this is not an ESM\n+  // file that has been converted to a CommonJS file using a Babel-\n+  // compatible transform (i.e. \"__esModule\" has not been set), then set\n+  // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n+  isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n+  mod\n+));\n+var __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n+\n+// src/index.tsx\n+var index_exports = {};\n+__export(index_exports, {\n+  default: () => index_default,\n+  defaultLightThemeOption: () => defaultLightThemeOption,\n+  getDefaultExtensions: () => getDefaultExtensions,\n+  getStatistics: () => getStatistics,\n+  useCodeMirror: () => useCodeMirror\n+});\n+module.exports = __toCommonJS(index_exports);\n+var import_react2 = __toESM(require(\"react\"), 1);\n+\n+// src/useCodeMirror.ts\n+var import_react = require(\"react\");\n+var import_state2 = require(\"@codemirror/state\");\n+var import_view3 = require(\"@codemirror/view\");\n+\n+// src/getDefaultExtensions.ts\n+var getDefaultExtensions_exports = {};\n+__export(getDefaultExtensions_exports, {\n+  defaultLightThemeOption: () => defaultLightThemeOption,\n+  getDefaultExtensions: () => getDefaultExtensions\n+});\n+var import_commands = require(\"@codemirror/commands\");\n+var import_codemirror_extensions_basic_setup = require(\"@uiw/codemirror-extensions-basic-setup\");\n+var import_view2 = require(\"@codemirror/view\");\n+var import_theme_one_dark = require(\"@codemirror/theme-one-dark\");\n+var import_state = require(\"@codemirror/state\");\n+\n+// src/theme/light.ts\n+var import_view = require(\"@codemirror/view\");\n+var defaultLightThemeOption = import_view.EditorView.theme(\n+  {\n+    \"&\": {\n+      backgroundColor: \"#fff\"\n+    }\n+  },\n+  {\n+    dark: false\n+  }\n+);\n+\n+// src/getDefaultExtensions.ts\n+__reExport(getDefaultExtensions_exports, require(\"@codemirror/theme-one-dark\"));\n+var getDefaultExtensions = (optios = {}) => {\n+  const {\n+    indentWithTab: defaultIndentWithTab = true,\n+    editable = true,\n+    readOnly = false,\n+    theme = \"light\",\n+    placeholder: placeholderStr = \"\",\n+    basicSetup: defaultBasicSetup = true\n+  } = optios;\n+  const getExtensions = [];\n+  if (defaultIndentWithTab) {\n+    getExtensions.unshift(import_view2.keymap.of([import_commands.indentWithTab]));\n+  }\n+  if (defaultBasicSetup) {\n+    if (typeof defaultBasicSetup === \"boolean\") {\n+      getExtensions.unshift((0, import_codemirror_extensions_basic_setup.basicSetup)());\n+    } else {\n+      getExtensions.unshift((0, import_codemirror_extensions_basic_setup.basicSetup)(defaultBasicSetup));\n+    }\n+  }\n+  if (placeholderStr) {\n+    getExtensions.unshift((0, import_view2.placeholder)(placeholderStr));\n+  }\n+  switch (theme) {\n+    case \"light\":\n+      getExtensions.push(defaultLightThemeOption);\n+      break;\n+    case \"dark\":\n+      getExtensions.push(import_theme_one_dark.oneDark);\n+      break;\n+    case \"none\":\n+      break;\n+    default:\n+      getExtensions.push(theme);\n+      break;\n+  }\n+  if (editable === false) {\n+    getExtensions.push(import_view2.EditorView.editable.of(false));\n+  }\n+  if (readOnly) {\n+    getExtensions.push(import_state.EditorState.readOnly.of(true));\n+  }\n+  return [...getExtensions];\n+};\n+\n+// src/utils.ts\n+var getStatistics = (view) => {\n+  return {\n+    line: view.state.doc.lineAt(view.state.selection.main.from),\n+    lineCount: view.state.doc.lines,\n+    lineBreak: view.state.lineBreak,\n+    length: view.state.doc.length,\n+    readOnly: view.state.readOnly,\n+    tabSize: view.state.tabSize,\n+    selection: view.state.selection,\n+    selectionAsSingle: view.state.selection.asSingle().main,\n+    ranges: view.state.selection.ranges,\n+    selectionCode: view.state.sliceDoc(view.state.selection.main.from, view.state.selection.main.to),\n+    selections: view.state.selection.ranges.map((r) => view.state.sliceDoc(r.from, r.to)),\n+    selectedText: view.state.selection.ranges.some((r) => !r.empty)\n+  };\n+};\n+\n+// src/useCodeMirror.ts\n+var External = import_state2.Annotation.define();\n+var emptyExtensions = [];\n+function useCodeMirror(props) {\n+  const {\n+    value,\n+    selection,\n+    onChange,\n+    onStatistics,\n+    onCreateEditor,\n+    onUpdate,\n+    extensions = emptyExtensions,\n+    autoFocus,\n+    theme = \"light\",\n+    height = null,\n+    minHeight = null,\n+    maxHeight = null,\n+    width = null,\n+    minWidth = null,\n+    maxWidth = null,\n+    placeholder: placeholderStr = \"\",\n+    editable = true,\n+    readOnly = false,\n+    indentWithTab: defaultIndentWithTab = true,\n+    basicSetup: defaultBasicSetup = true,\n+    root,\n+    initialState\n+  } = props;\n+  const [container, setContainer] = (0, import_react.useState)();\n+  const [view, setView] = (0, import_react.useState)();\n+  const [state, setState] = (0, import_react.useState)();\n+  const defaultThemeOption = import_view3.EditorView.theme({\n+    \"&\": {\n+      height,\n+      minHeight,\n+      maxHeight,\n+      width,\n+      minWidth,\n+      maxWidth\n+    },\n+    \"& .cm-scroller\": {\n+      height: \"100% !important\"\n+    }\n+  });\n+  const updateListener = import_view3.EditorView.updateListener.of((vu) => {\n+    if (vu.docChanged && typeof onChange === \"function\" && // Fix echoing of the remote changes:\n+    // If transaction is market as remote we don't have to call `onChange` handler again\n+    !vu.transactions.some((tr) => tr.annotation(External))) {\n+      const doc = vu.state.doc;\n+      const value2 = doc.toString();\n+      onChange(value2, vu);\n+    }\n+    onStatistics && onStatistics(getStatistics(vu));\n+  });\n+  const defaultExtensions = getDefaultExtensions({\n+    theme,\n+    editable,\n+    readOnly,\n+    placeholder: placeholderStr,\n+    indentWithTab: defaultIndentWithTab,\n+    basicSetup: defaultBasicSetup\n+  });\n+  let getExtensions = [updateListener, defaultThemeOption, ...defaultExtensions];\n+  if (onUpdate && typeof onUpdate === \"function\") {\n+    getExtensions.push(import_view3.EditorView.updateListener.of(onUpdate));\n+  }\n+  getExtensions = getExtensions.concat(extensions);\n+  (0, import_react.useLayoutEffect)(() => {\n+    if (container && !state) {\n+      const config = {\n+        doc: value,\n+        selection,\n+        extensions: getExtensions\n+      };\n+      const stateCurrent = initialState ? import_state2.EditorState.fromJSON(initialState.json, config, initialState.fields) : import_state2.EditorState.create(config);\n+      setState(stateCurrent);\n+      if (!view) {\n+        const viewCurrent = new import_view3.EditorView({\n+          state: stateCurrent,\n+          parent: container,\n+          root\n+        });\n+        setView(viewCurrent);\n+        onCreateEditor && onCreateEditor(viewCurrent, stateCurrent);\n+      }\n+    }\n+    return () => {\n+      if (view) {\n+        setState(void 0);\n+        setView(void 0);\n+      }\n+    };\n+  }, [container, state]);\n+  (0, import_react.useEffect)(() => {\n+    if (props.container) {\n+      setContainer(props.container);\n+    }\n+  }, [props.container]);\n+  (0, import_react.useEffect)(\n+    () => () => {\n+      if (view) {\n+        view.destroy();\n+        setView(void 0);\n+      }\n+    },\n+    [view]\n+  );\n+  (0, import_react.useEffect)(() => {\n+    if (autoFocus && view) {\n+      view.focus();\n+    }\n+  }, [autoFocus, view]);\n+  (0, import_react.useEffect)(() => {\n+    if (view) {\n+      view.dispatch({ effects: import_state2.StateEffect.reconfigure.of(getExtensions) });\n+    }\n+  }, [\n+    theme,\n+    extensions,\n+    height,\n+    minHeight,\n+    maxHeight,\n+    width,\n+    minWidth,\n+    maxWidth,\n+    placeholderStr,\n+    editable,\n+    readOnly,\n+    defaultIndentWithTab,\n+    defaultBasicSetup,\n+    onChange,\n+    onUpdate\n+  ]);\n+  (0, import_react.useEffect)(() => {\n+    if (value === void 0) {\n+      return;\n+    }\n+    const currentValue = view ? view.state.doc.toString() : \"\";\n+    if (view && value !== currentValue) {\n+      view.dispatch({\n+        changes: { from: 0, to: currentValue.length, insert: value || \"\" },\n+        annotations: [External.of(true)]\n+      });\n+    }\n+  }, [value, view]);\n+  return { state, setState, view, setView, container, setContainer };\n+}\n+\n+// src/index.tsx\n+__reExport(index_exports, require(\"@codemirror/view\"), module.exports);\n+__reExport(index_exports, require(\"@codemirror/state\"), module.exports);\n+__reExport(index_exports, require(\"@uiw/codemirror-extensions-basic-setup\"), module.exports);\n+__reExport(index_exports, getDefaultExtensions_exports, module.exports);\n+var ReactCodeMirror = (0, import_react2.forwardRef)((props, ref) => {\n+  const {\n+    className,\n+    value = \"\",\n+    selection,\n+    extensions = [],\n+    onChange,\n+    onStatistics,\n+    onCreateEditor,\n+    onUpdate,\n+    autoFocus,\n+    theme = \"light\",\n+    height,\n+    minHeight,\n+    maxHeight,\n+    width,\n+    minWidth,\n+    maxWidth,\n+    basicSetup: basicSetup2,\n+    placeholder: placeholder2,\n+    indentWithTab: indentWithTab2,\n+    editable,\n+    readOnly,\n+    root,\n+    initialState,\n+    ...other\n+  } = props;\n+  const editor = (0, import_react2.useRef)(null);\n+  const { state, view, container, setContainer } = useCodeMirror({\n+    root,\n+    value,\n+    autoFocus,\n+    theme,\n+    height,\n+    minHeight,\n+    maxHeight,\n+    width,\n+    minWidth,\n+    maxWidth,\n+    basicSetup: basicSetup2,\n+    placeholder: placeholder2,\n+    indentWithTab: indentWithTab2,\n+    editable,\n+    readOnly,\n+    selection,\n+    onChange,\n+    onStatistics,\n+    onCreateEditor,\n+    onUpdate,\n+    extensions,\n+    initialState\n+  });\n+  (0, import_react2.useImperativeHandle)(ref, () => ({ editor: editor.current, state, view }), [\n+    editor,\n+    container,\n+    state,\n+    view\n+  ]);\n+  const setEditorRef = (0, import_react2.useCallback)(\n+    (el) => {\n+      editor.current = el;\n+      setContainer(el);\n+    },\n+    [setContainer]\n+  );\n+  if (typeof value !== \"string\") {\n+    throw new Error(`value must be typeof string but got ${typeof value}`);\n+  }\n+  const defaultClassNames = typeof theme === \"string\" ? `cm-theme-${theme}` : \"cm-theme\";\n+  return /* @__PURE__ */ import_react2.default.createElement(\"div\", { ref: setEditorRef, className: `${defaultClassNames}${className ? ` ${className}` : \"\"}`, ...other });\n+});\n+ReactCodeMirror.displayName = \"CodeMirror\";\n+var index_default = ReactCodeMirror;\ndiff --git a/esm/index.mjs b/esm/index.mjs\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..db2bfdb41d7ebd80319430348c7f2a04edf6b1e1\n--- /dev/null\n+++ b/esm/index.mjs\n@@ -0,0 +1,358 @@\n+var __defProp = Object.defineProperty;\n+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n+var __getOwnPropNames = Object.getOwnPropertyNames;\n+var __hasOwnProp = Object.prototype.hasOwnProperty;\n+var __export = (target, all) => {\n+  for (var name in all)\n+    __defProp(target, name, { get: all[name], enumerable: true });\n+};\n+var __copyProps = (to, from, except, desc) => {\n+  if (from && typeof from === \"object\" || typeof from === \"function\") {\n+    for (let key of __getOwnPropNames(from))\n+      if (!__hasOwnProp.call(to, key) && key !== except)\n+        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n+  }\n+  return to;\n+};\n+var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n+\n+// src/index.tsx\n+var index_exports = {};\n+__export(index_exports, {\n+  default: () => index_default,\n+  defaultLightThemeOption: () => defaultLightThemeOption,\n+  getDefaultExtensions: () => getDefaultExtensions,\n+  getStatistics: () => getStatistics,\n+  useCodeMirror: () => useCodeMirror\n+});\n+import React, { useRef, forwardRef, useImperativeHandle, useCallback } from \"react\";\n+\n+// src/useCodeMirror.ts\n+import { useEffect, useLayoutEffect, useState } from \"react\";\n+import { Annotation, EditorState as EditorState2, StateEffect } from \"@codemirror/state\";\n+import { EditorView as EditorView3 } from \"@codemirror/view\";\n+\n+// src/getDefaultExtensions.ts\n+var getDefaultExtensions_exports = {};\n+__export(getDefaultExtensions_exports, {\n+  defaultLightThemeOption: () => defaultLightThemeOption,\n+  getDefaultExtensions: () => getDefaultExtensions\n+});\n+import { indentWithTab } from \"@codemirror/commands\";\n+import { basicSetup } from \"@uiw/codemirror-extensions-basic-setup\";\n+import { EditorView as EditorView2, keymap, placeholder } from \"@codemirror/view\";\n+import { oneDark } from \"@codemirror/theme-one-dark\";\n+import { EditorState } from \"@codemirror/state\";\n+\n+// src/theme/light.ts\n+import { EditorView } from \"@codemirror/view\";\n+var defaultLightThemeOption = EditorView.theme(\n+  {\n+    \"&\": {\n+      backgroundColor: \"#fff\"\n+    }\n+  },\n+  {\n+    dark: false\n+  }\n+);\n+\n+// src/getDefaultExtensions.ts\n+__reExport(getDefaultExtensions_exports, theme_one_dark_star);\n+import * as theme_one_dark_star from \"@codemirror/theme-one-dark\";\n+var getDefaultExtensions = (optios = {}) => {\n+  const {\n+    indentWithTab: defaultIndentWithTab = true,\n+    editable = true,\n+    readOnly = false,\n+    theme = \"light\",\n+    placeholder: placeholderStr = \"\",\n+    basicSetup: defaultBasicSetup = true\n+  } = optios;\n+  const getExtensions = [];\n+  if (defaultIndentWithTab) {\n+    getExtensions.unshift(keymap.of([indentWithTab]));\n+  }\n+  if (defaultBasicSetup) {\n+    if (typeof defaultBasicSetup === \"boolean\") {\n+      getExtensions.unshift(basicSetup());\n+    } else {\n+      getExtensions.unshift(basicSetup(defaultBasicSetup));\n+    }\n+  }\n+  if (placeholderStr) {\n+    getExtensions.unshift(placeholder(placeholderStr));\n+  }\n+  switch (theme) {\n+    case \"light\":\n+      getExtensions.push(defaultLightThemeOption);\n+      break;\n+    case \"dark\":\n+      getExtensions.push(oneDark);\n+      break;\n+    case \"none\":\n+      break;\n+    default:\n+      getExtensions.push(theme);\n+      break;\n+  }\n+  if (editable === false) {\n+    getExtensions.push(EditorView2.editable.of(false));\n+  }\n+  if (readOnly) {\n+    getExtensions.push(EditorState.readOnly.of(true));\n+  }\n+  return [...getExtensions];\n+};\n+\n+// src/utils.ts\n+var getStatistics = (view) => {\n+  return {\n+    line: view.state.doc.lineAt(view.state.selection.main.from),\n+    lineCount: view.state.doc.lines,\n+    lineBreak: view.state.lineBreak,\n+    length: view.state.doc.length,\n+    readOnly: view.state.readOnly,\n+    tabSize: view.state.tabSize,\n+    selection: view.state.selection,\n+    selectionAsSingle: view.state.selection.asSingle().main,\n+    ranges: view.state.selection.ranges,\n+    selectionCode: view.state.sliceDoc(view.state.selection.main.from, view.state.selection.main.to),\n+    selections: view.state.selection.ranges.map((r) => view.state.sliceDoc(r.from, r.to)),\n+    selectedText: view.state.selection.ranges.some((r) => !r.empty)\n+  };\n+};\n+\n+// src/useCodeMirror.ts\n+var External = Annotation.define();\n+var emptyExtensions = [];\n+function useCodeMirror(props) {\n+  const {\n+    value,\n+    selection,\n+    onChange,\n+    onStatistics,\n+    onCreateEditor,\n+    onUpdate,\n+    extensions = emptyExtensions,\n+    autoFocus,\n+    theme = \"light\",\n+    height = null,\n+    minHeight = null,\n+    maxHeight = null,\n+    width = null,\n+    minWidth = null,\n+    maxWidth = null,\n+    placeholder: placeholderStr = \"\",\n+    editable = true,\n+    readOnly = false,\n+    indentWithTab: defaultIndentWithTab = true,\n+    basicSetup: defaultBasicSetup = true,\n+    root,\n+    initialState\n+  } = props;\n+  const [container, setContainer] = useState();\n+  const [view, setView] = useState();\n+  const [state, setState] = useState();\n+  const defaultThemeOption = EditorView3.theme({\n+    \"&\": {\n+      height,\n+      minHeight,\n+      maxHeight,\n+      width,\n+      minWidth,\n+      maxWidth\n+    },\n+    \"& .cm-scroller\": {\n+      height: \"100% !important\"\n+    }\n+  });\n+  const updateListener = EditorView3.updateListener.of((vu) => {\n+    if (vu.docChanged && typeof onChange === \"function\" && // Fix echoing of the remote changes:\n+    // If transaction is market as remote we don't have to call `onChange` handler again\n+    !vu.transactions.some((tr) => tr.annotation(External))) {\n+      const doc = vu.state.doc;\n+      const value2 = doc.toString();\n+      onChange(value2, vu);\n+    }\n+    onStatistics && onStatistics(getStatistics(vu));\n+  });\n+  const defaultExtensions = getDefaultExtensions({\n+    theme,\n+    editable,\n+    readOnly,\n+    placeholder: placeholderStr,\n+    indentWithTab: defaultIndentWithTab,\n+    basicSetup: defaultBasicSetup\n+  });\n+  let getExtensions = [updateListener, defaultThemeOption, ...defaultExtensions];\n+  if (onUpdate && typeof onUpdate === \"function\") {\n+    getExtensions.push(EditorView3.updateListener.of(onUpdate));\n+  }\n+  getExtensions = getExtensions.concat(extensions);\n+  useLayoutEffect(() => {\n+    if (container && !state) {\n+      const config = {\n+        doc: value,\n+        selection,\n+        extensions: getExtensions\n+      };\n+      const stateCurrent = initialState ? EditorState2.fromJSON(initialState.json, config, initialState.fields) : EditorState2.create(config);\n+      setState(stateCurrent);\n+      if (!view) {\n+        const viewCurrent = new EditorView3({\n+          state: stateCurrent,\n+          parent: container,\n+          root\n+        });\n+        setView(viewCurrent);\n+        onCreateEditor && onCreateEditor(viewCurrent, stateCurrent);\n+      }\n+    }\n+    return () => {\n+      if (view) {\n+        setState(void 0);\n+        setView(void 0);\n+      }\n+    };\n+  }, [container, state]);\n+  useEffect(() => {\n+    if (props.container) {\n+      setContainer(props.container);\n+    }\n+  }, [props.container]);\n+  useEffect(\n+    () => () => {\n+      if (view) {\n+        view.destroy();\n+        setView(void 0);\n+      }\n+    },\n+    [view]\n+  );\n+  useEffect(() => {\n+    if (autoFocus && view) {\n+      view.focus();\n+    }\n+  }, [autoFocus, view]);\n+  useEffect(() => {\n+    if (view) {\n+      view.dispatch({ effects: StateEffect.reconfigure.of(getExtensions) });\n+    }\n+  }, [\n+    theme,\n+    extensions,\n+    height,\n+    minHeight,\n+    maxHeight,\n+    width,\n+    minWidth,\n+    maxWidth,\n+    placeholderStr,\n+    editable,\n+    readOnly,\n+    defaultIndentWithTab,\n+    defaultBasicSetup,\n+    onChange,\n+    onUpdate\n+  ]);\n+  useEffect(() => {\n+    if (value === void 0) {\n+      return;\n+    }\n+    const currentValue = view ? view.state.doc.toString() : \"\";\n+    if (view && value !== currentValue) {\n+      view.dispatch({\n+        changes: { from: 0, to: currentValue.length, insert: value || \"\" },\n+        annotations: [External.of(true)]\n+      });\n+    }\n+  }, [value, view]);\n+  return { state, setState, view, setView, container, setContainer };\n+}\n+\n+// src/index.tsx\n+__reExport(index_exports, getDefaultExtensions_exports);\n+export * from \"@codemirror/view\";\n+export * from \"@codemirror/state\";\n+export * from \"@uiw/codemirror-extensions-basic-setup\";\n+var ReactCodeMirror = forwardRef((props, ref) => {\n+  const {\n+    className,\n+    value = \"\",\n+    selection,\n+    extensions = [],\n+    onChange,\n+    onStatistics,\n+    onCreateEditor,\n+    onUpdate,\n+    autoFocus,\n+    theme = \"light\",\n+    height,\n+    minHeight,\n+    maxHeight,\n+    width,\n+    minWidth,\n+    maxWidth,\n+    basicSetup: basicSetup2,\n+    placeholder: placeholder2,\n+    indentWithTab: indentWithTab2,\n+    editable,\n+    readOnly,\n+    root,\n+    initialState,\n+    ...other\n+  } = props;\n+  const editor = useRef(null);\n+  const { state, view, container, setContainer } = useCodeMirror({\n+    root,\n+    value,\n+    autoFocus,\n+    theme,\n+    height,\n+    minHeight,\n+    maxHeight,\n+    width,\n+    minWidth,\n+    maxWidth,\n+    basicSetup: basicSetup2,\n+    placeholder: placeholder2,\n+    indentWithTab: indentWithTab2,\n+    editable,\n+    readOnly,\n+    selection,\n+    onChange,\n+    onStatistics,\n+    onCreateEditor,\n+    onUpdate,\n+    extensions,\n+    initialState\n+  });\n+  useImperativeHandle(ref, () => ({ editor: editor.current, state, view }), [\n+    editor,\n+    container,\n+    state,\n+    view\n+  ]);\n+  const setEditorRef = useCallback(\n+    (el) => {\n+      editor.current = el;\n+      setContainer(el);\n+    },\n+    [setContainer]\n+  );\n+  if (typeof value !== \"string\") {\n+    throw new Error(`value must be typeof string but got ${typeof value}`);\n+  }\n+  const defaultClassNames = typeof theme === \"string\" ? `cm-theme-${theme}` : \"cm-theme\";\n+  return /* @__PURE__ */ React.createElement(\"div\", { ref: setEditorRef, className: `${defaultClassNames}${className ? ` ${className}` : \"\"}`, ...other });\n+});\n+ReactCodeMirror.displayName = \"CodeMirror\";\n+var index_default = ReactCodeMirror;\n+export {\n+  index_default as default,\n+  defaultLightThemeOption,\n+  getDefaultExtensions,\n+  getStatistics,\n+  useCodeMirror\n+};\ndiff --git a/package.json b/package.json\nindex 1300846da3274f76cd3c48942ba118915f9b1a97..87aff5bfad1e541fdd296de739f3e57d69d7980c 100644\n--- a/package.json\n+++ b/package.json\n@@ -6,12 +6,14 @@\n   \"funding\": \"https://jaywcjlove.github.io/#/sponsor\",\n   \"author\": \"kenny wong <wowohoo@qq.com>\",\n   \"license\": \"MIT\",\n-  \"main\": \"./cjs/index.js\",\n-  \"module\": \"./esm/index.js\",\n+  \"main\": \"./cjs/index.cjs\",\n+  \"module\": \"./esm/index.mjs\",\n+  \"type\": \"module\",\n   \"exports\": {\n     \".\": {\n-      \"require\": \"./cjs/index.js\",\n-      \"import\": \"./esm/index.js\"\n+      \"types\": \"./src/index.tsx\",\n+      \"import\": \"./esm/index.mjs\",\n+      \"require\": \"./cjs/index.cjs\"\n     },\n     \"./*\": \"./*\"\n   },\n"
  },
  {
    "path": ".yarn/releases/yarn-4.2.1.cjs",
    "content": "#!/usr/bin/env node\n/* eslint-disable */\n//prettier-ignore\n(()=>{var $3e=Object.create;var LR=Object.defineProperty;var e_e=Object.getOwnPropertyDescriptor;var t_e=Object.getOwnPropertyNames;var r_e=Object.getPrototypeOf,n_e=Object.prototype.hasOwnProperty;var ve=(t=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(t,{get:(e,r)=>(typeof require<\"u\"?require:e)[r]}):t)(function(t){if(typeof require<\"u\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+t+'\" is not supported')});var Et=(t,e)=>()=>(t&&(e=t(t=0)),e);var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Vt=(t,e)=>{for(var r in e)LR(t,r,{get:e[r],enumerable:!0})},i_e=(t,e,r,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let a of t_e(e))!n_e.call(t,a)&&a!==r&&LR(t,a,{get:()=>e[a],enumerable:!(o=e_e(e,a))||o.enumerable});return t};var $e=(t,e,r)=>(r=t!=null?$3e(r_e(t)):{},i_e(e||!t||!t.__esModule?LR(r,\"default\",{value:t,enumerable:!0}):r,t));var vi={};Vt(vi,{SAFE_TIME:()=>x7,S_IFDIR:()=>wD,S_IFLNK:()=>ID,S_IFMT:()=>Ou,S_IFREG:()=>jw});var Ou,wD,jw,ID,x7,k7=Et(()=>{Ou=61440,wD=16384,jw=32768,ID=40960,x7=456789e3});var ar={};Vt(ar,{EBADF:()=>Io,EBUSY:()=>s_e,EEXIST:()=>A_e,EINVAL:()=>a_e,EISDIR:()=>u_e,ENOENT:()=>l_e,ENOSYS:()=>o_e,ENOTDIR:()=>c_e,ENOTEMPTY:()=>p_e,EOPNOTSUPP:()=>h_e,EROFS:()=>f_e,ERR_DIR_CLOSED:()=>NR});function Tl(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function s_e(t){return Tl(\"EBUSY\",t)}function o_e(t,e){return Tl(\"ENOSYS\",`${t}, ${e}`)}function a_e(t){return Tl(\"EINVAL\",`invalid argument, ${t}`)}function Io(t){return Tl(\"EBADF\",`bad file descriptor, ${t}`)}function l_e(t){return Tl(\"ENOENT\",`no such file or directory, ${t}`)}function c_e(t){return Tl(\"ENOTDIR\",`not a directory, ${t}`)}function u_e(t){return Tl(\"EISDIR\",`illegal operation on a directory, ${t}`)}function A_e(t){return Tl(\"EEXIST\",`file already exists, ${t}`)}function f_e(t){return Tl(\"EROFS\",`read-only filesystem, ${t}`)}function p_e(t){return Tl(\"ENOTEMPTY\",`directory not empty, ${t}`)}function h_e(t){return Tl(\"EOPNOTSUPP\",`operation not supported, ${t}`)}function NR(){return Tl(\"ERR_DIR_CLOSED\",\"Directory handle was closed\")}var BD=Et(()=>{});var Ea={};Vt(Ea,{BigIntStatsEntry:()=>ty,DEFAULT_MODE:()=>UR,DirEntry:()=>OR,StatEntry:()=>ey,areStatsEqual:()=>_R,clearStats:()=>vD,convertToBigIntStats:()=>d_e,makeDefaultStats:()=>Q7,makeEmptyStats:()=>g_e});function Q7(){return new ey}function g_e(){return vD(Q7())}function vD(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r==\"number\"?t[e]=0:typeof r==\"bigint\"?t[e]=BigInt(0):MR.types.isDate(r)&&(t[e]=new Date(0))}return t}function d_e(t){let e=new ty;for(let r in t)if(Object.hasOwn(t,r)){let o=t[r];typeof o==\"number\"?e[r]=BigInt(o):MR.types.isDate(o)&&(e[r]=new Date(o))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function _R(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,o=e;return!(r.atimeNs!==o.atimeNs||r.mtimeNs!==o.mtimeNs||r.ctimeNs!==o.ctimeNs||r.birthtimeNs!==o.birthtimeNs)}var MR,UR,OR,ey,ty,HR=Et(()=>{MR=$e(ve(\"util\")),UR=33188,OR=class{constructor(){this.name=\"\";this.path=\"\";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},ey=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=UR;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},ty=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(UR);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function w_e(t){let e,r;if(e=t.match(E_e))t=e[1];else if(r=t.match(C_e))t=`\\\\\\\\${r[1]?\".\\\\\":\"\"}${r[2]}`;else return t;return t.replace(/\\//g,\"\\\\\")}function I_e(t){t=t.replace(/\\\\/g,\"/\");let e,r;return(e=t.match(m_e))?t=`/${e[1]}`:(r=t.match(y_e))&&(t=`/unc/${r[1]?\".dot/\":\"\"}${r[2]}`),t}function DD(t,e){return t===ue?R7(e):jR(e)}var qw,Bt,dr,ue,V,F7,m_e,y_e,E_e,C_e,jR,R7,Ca=Et(()=>{qw=$e(ve(\"path\")),Bt={root:\"/\",dot:\".\",parent:\"..\"},dr={home:\"~\",nodeModules:\"node_modules\",manifest:\"package.json\",lockfile:\"yarn.lock\",virtual:\"__virtual__\",pnpJs:\".pnp.js\",pnpCjs:\".pnp.cjs\",pnpData:\".pnp.data.json\",pnpEsmLoader:\".pnp.loader.mjs\",rc:\".yarnrc.yml\",env:\".env\"},ue=Object.create(qw.default),V=Object.create(qw.default.posix);ue.cwd=()=>process.cwd();V.cwd=process.platform===\"win32\"?()=>jR(process.cwd()):process.cwd;process.platform===\"win32\"&&(V.resolve=(...t)=>t.length>0&&V.isAbsolute(t[0])?qw.default.posix.resolve(...t):qw.default.posix.resolve(V.cwd(),...t));F7=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?\".\":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};ue.contains=(t,e)=>F7(ue,t,e);V.contains=(t,e)=>F7(V,t,e);m_e=/^([a-zA-Z]:.*)$/,y_e=/^\\/\\/(\\.\\/)?(.*)$/,E_e=/^\\/([a-zA-Z]:.*)$/,C_e=/^\\/unc\\/(\\.dot\\/)?(.*)$/;jR=process.platform===\"win32\"?I_e:t=>t,R7=process.platform===\"win32\"?w_e:t=>t;ue.fromPortablePath=R7;ue.toPortablePath=jR});async function PD(t,e){let r=\"0123456789abcdef\";await t.mkdirPromise(e.indexPath,{recursive:!0});let o=[];for(let a of r)for(let n of r)o.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(o),e.indexPath}async function T7(t,e,r,o,a){let n=t.pathUtils.normalize(e),u=r.pathUtils.normalize(o),A=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:Og,mtime:Og}:await r.lstatPromise(u);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,E]}),await qR(A,p,t,n,r,u,{...a,didParentExist:!0});for(let I of A)await I();await Promise.all(p.map(I=>I()))}async function qR(t,e,r,o,a,n,u){let A=u.didParentExist?await L7(r,o):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=u.stableTime?{atime:Og,mtime:Og}:p,I;switch(!0){case p.isDirectory():I=await v_e(t,e,r,o,A,a,n,p,u);break;case p.isFile():I=await S_e(t,e,r,o,A,a,n,p,u);break;case p.isSymbolicLink():I=await b_e(t,e,r,o,A,a,n,p,u);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(u.linkStrategy?.type!==\"HardlinkFromIndex\"||!p.isFile())&&((I||A?.mtime?.getTime()!==E.getTime()||A?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(o,h,E)),I=!0),(A===null||(A.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(o,p.mode&511)),I=!0)),I}async function L7(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function v_e(t,e,r,o,a,n,u,A,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(o,{mode:A.mode})}catch(v){if(v.code!==\"EEXIST\")throw v}}),h=!0);let E=await n.readdirPromise(u),I=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let v of E.sort())await qR(t,e,r,r.pathUtils.join(o,v),n,n.pathUtils.join(u,v),I)&&(h=!0);else(await Promise.all(E.map(async x=>{await qR(t,e,r,r.pathUtils.join(o,x),n,n.pathUtils.join(u,x),I)}))).some(x=>x)&&(h=!0);return h}async function D_e(t,e,r,o,a,n,u,A,p,h){let E=await n.checksumFilePromise(u,{algorithm:\"sha1\"}),I=420,v=A.mode&511,x=`${E}${v!==I?v.toString(8):\"\"}`,C=r.pathUtils.join(h.indexPath,E.slice(0,2),`${x}.dat`),R;(ce=>(ce[ce.Lock=0]=\"Lock\",ce[ce.Rename=1]=\"Rename\"))(R||={});let N=1,U=await L7(r,C);if(a){let ae=U&&a.dev===U.dev&&a.ino===U.ino,fe=U?.mtimeMs!==B_e;if(ae&&fe&&h.autoRepair&&(N=0,U=null),!ae)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1}let J=!U&&N===1?`${C}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,\"0\")}`:null,te=!1;return t.push(async()=>{if(!U&&(N===0&&await r.lockPromise(C,async()=>{let ae=await n.readFilePromise(u);await r.writeFilePromise(C,ae)}),N===1&&J)){let ae=await n.readFilePromise(u);await r.writeFilePromise(J,ae);try{await r.linkPromise(J,C)}catch(fe){if(fe.code===\"EEXIST\")te=!0,await r.unlinkPromise(J);else throw fe}}a||await r.linkPromise(C,o)}),e.push(async()=>{U||(await r.lutimesPromise(C,Og,Og),v!==I&&await r.chmodPromise(C,v)),J&&!te&&await r.unlinkPromise(J)}),!1}async function P_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(u);await r.writeFilePromise(o,h)}),!0}async function S_e(t,e,r,o,a,n,u,A,p){return p.linkStrategy?.type===\"HardlinkFromIndex\"?D_e(t,e,r,o,a,n,u,A,p,p.linkStrategy):P_e(t,e,r,o,a,n,u,A,p)}async function b_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(DD(r.pathUtils,await n.readlinkPromise(u)),o)}),!0}var Og,B_e,GR=Et(()=>{Ca();Og=new Date(456789e3*1e3),B_e=Og.getTime()});function SD(t,e,r,o){let a=()=>{let n=r.shift();if(typeof n>\"u\")return null;let u=t.pathUtils.join(e,n);return Object.assign(t.statSync(u),{name:n,path:void 0})};return new Gw(e,a,o)}var Gw,N7=Et(()=>{BD();Gw=class{constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.closed=!1}throwIfClosed(){if(this.closed)throw NR()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<\"u\"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<\"u\"?e(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function O7(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var M7,ry,U7=Et(()=>{M7=ve(\"events\");HR();ry=class extends M7.EventEmitter{constructor(r,o,{bigint:a=!1}={}){super();this.status=\"ready\";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=o,this.bigint=a,this.lastStats=this.stat()}static create(r,o,a){let n=new ry(r,o,a);return n.start(),n}start(){O7(this.status,\"ready\"),this.status=\"running\",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(\"change\",this.lastStats,this.lastStats)},3)}stop(){O7(this.status,\"running\"),this.status=\"stopped\",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(\"stop\")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let o=this.bigint?new ty:new ey;return vD(o)}}makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStats;_R(a,n)||(this.lastStats=a,this.emit(\"change\",a,n))},r.interval);return r.persistent?o:o.unref()}registerChangeListener(r,o){this.addListener(\"change\",r),this.changeListeners.set(r,this.makeInterval(o))}unregisterChangeListener(r){this.removeListener(\"change\",r);let o=this.changeListeners.get(r);typeof o<\"u\"&&clearInterval(o),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function ny(t,e,r,o){let a,n,u,A;switch(typeof r){case\"function\":a=!1,n=!0,u=5007,A=r;break;default:({bigint:a=!1,persistent:n=!0,interval:u=5007}=r),A=o;break}let p=bD.get(t);typeof p>\"u\"&&bD.set(t,p=new Map);let h=p.get(e);return typeof h>\"u\"&&(h=ry.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(A,{persistent:n,interval:u}),h}function Mg(t,e,r){let o=bD.get(t);if(typeof o>\"u\")return;let a=o.get(e);typeof a>\"u\"||(typeof r>\"u\"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),o.delete(e)))}function Ug(t){let e=bD.get(t);if(!(typeof e>\"u\"))for(let r of e.keys())Mg(t,r)}var bD,YR=Et(()=>{U7();bD=new WeakMap});function x_e(t){let e=t.match(/\\r?\\n/g);if(e===null)return H7.EOL;let r=e.filter(a=>a===`\\r\n`).length,o=e.length-r;return r>o?`\\r\n`:`\n`}function _g(t,e){return e.replace(/\\r?\\n/g,x_e(t))}var _7,H7,gf,Mu,Hg=Et(()=>{_7=ve(\"crypto\"),H7=ve(\"os\");GR();Ca();gf=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let o=[e];for(;o.length>0;){let a=o.shift();if((await this.lstatPromise(a)).isDirectory()){let u=await this.readdirPromise(a);if(r)for(let A of u.sort())o.push(this.pathUtils.join(a,A));else throw new Error(\"Not supported\")}else yield a}}async checksumFilePromise(e,{algorithm:r=\"sha512\"}={}){let o=await this.openPromise(e,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,_7.createHash)(r),A=0;for(;(A=await this.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest(\"hex\")}finally{await this.closePromise(o)}}async removePromise(e,{recursive:r=!0,maxRetries:o=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code===\"ENOENT\")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(u=>this.removePromise(this.pathUtils.resolve(e,u))))}for(let n=0;n<=o;n++)try{await this.rmdirPromise(e);break}catch(u){if(u.code!==\"EBUSY\"&&u.code!==\"ENOTEMPTY\")throw u;n<o&&await new Promise(A=>setTimeout(A,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let o;try{o=this.lstatSync(e)}catch(a){if(a.code===\"ENOENT\")return;throw a}if(o.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{await this.mkdirPromise(A)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=A,r!=null&&await this.chmodPromise(A,r),o!=null)await this.utimesPromise(A,o[0],o[1]);else{let p=await this.statPromise(this.pathUtils.dirname(A));await this.utimesPromise(A,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{this.mkdirSync(A)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=A,r!=null&&this.chmodSync(A,r),o!=null)this.utimesSync(A,o[0],o[1]);else{let p=this.statSync(this.pathUtils.dirname(A));this.utimesSync(A,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:o=this,overwrite:a=!0,stableSort:n=!1,stableTime:u=!1,linkStrategy:A=null}={}){return await T7(this,e,o,r,{overwrite:a,stableSort:n,stableTime:u,linkStrategy:A})}copySync(e,r,{baseFs:o=this,overwrite:a=!0}={}){let n=o.lstatSync(r),u=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=o.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),o.pathUtils.join(r,h),{baseFs:o,overwrite:a})}else if(n.isFile()){if(!u||a){u&&this.removeSync(e);let p=o.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!u||a){u&&this.removeSync(e);let p=o.readlinkSync(r);this.symlinkSync(DD(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,\"0\")})`);let A=n.mode&511;this.chmodSync(e,A)}async changeFilePromise(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,o):this.changeFileTextPromise(e,r,o)}async changeFileBufferPromise(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:o})}async changeFileTextPromise(e,r,{automaticNewlines:o,mode:a}={}){let n=\"\";try{n=await this.readFilePromise(e,\"utf8\")}catch{}let u=o?_g(n,r):r;n!==u&&await this.writeFilePromise(e,u,{mode:a})}changeFileSync(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,o):this.changeFileTextSync(e,r,o)}changeFileBufferSync(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:o})}changeFileTextSync(e,r,{automaticNewlines:o=!1,mode:a}={}){let n=\"\";try{n=this.readFileSync(e,\"utf8\")}catch{}let u=o?_g(n,r):r;n!==u&&this.writeFileSync(e,u,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(o){if(o.code===\"EXDEV\")await this.copyPromise(r,e),await this.removePromise(e);else throw o}}moveSync(e,r){try{this.renameSync(e,r)}catch(o){if(o.code===\"EXDEV\")this.copySync(r,e),this.removeSync(e);else throw o}}async lockPromise(e,r){let o=`${e}.flock`,a=1e3/60,n=Date.now(),u=null,A=async()=>{let p;try{[p]=await this.readJsonPromise(o)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;u===null;)try{u=await this.openPromise(o,\"wx\")}catch(p){if(p.code===\"EEXIST\"){if(!await A())try{await this.unlinkPromise(o);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${o})`)}else throw p}await this.writePromise(u,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(u),await this.unlinkPromise(o)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,\"utf8\");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}readJsonSync(e){let r=this.readFileSync(e,\"utf8\");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}async writeJsonPromise(e,r,{compact:o=!1}={}){let a=o?0:2;return await this.writeFilePromise(e,`${JSON.stringify(r,null,a)}\n`)}writeJsonSync(e,r,{compact:o=!1}={}){let a=o?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)}\n`)}async preserveTimePromise(e,r){let o=await this.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await this.lutimesPromise(e,o.atime,o.mtime)}async preserveTimeSync(e,r){let o=this.lstatSync(e),a=r();typeof a<\"u\"&&(e=a),this.lutimesSync(e,o.atime,o.mtime)}},Mu=class extends gf{constructor(){super(V)}}});var Ps,df=Et(()=>{Hg();Ps=class extends gf{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,o){return this.baseFs.openPromise(this.mapToBase(e),r,o)}openSync(e,r,o){return this.baseFs.openSync(this.mapToBase(e),r,o)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,o,a,n){return await this.baseFs.readPromise(e,r,o,a,n)}readSync(e,r,o,a,n){return this.baseFs.readSync(e,r,o,a,n)}async writePromise(e,r,o,a,n){return typeof r==\"string\"?await this.baseFs.writePromise(e,r,o):await this.baseFs.writePromise(e,r,o,a,n)}writeSync(e,r,o,a,n){return typeof r==\"string\"?this.baseFs.writeSync(e,r,o):this.baseFs.writeSync(e,r,o,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,o){return this.baseFs.fchownPromise(e,r,o)}fchownSync(e,r,o){return this.baseFs.fchownSync(e,r,o)}async chownPromise(e,r,o){return this.baseFs.chownPromise(this.mapToBase(e),r,o)}chownSync(e,r,o){return this.baseFs.chownSync(this.mapToBase(e),r,o)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,o=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),o)}copyFileSync(e,r,o=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),o)}async appendFilePromise(e,r,o){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,o)}appendFileSync(e,r,o){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,o)}async writeFilePromise(e,r,o){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,o)}writeFileSync(e,r,o){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,o)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,o){return this.baseFs.utimesPromise(this.mapToBase(e),r,o)}utimesSync(e,r,o){return this.baseFs.utimesSync(this.mapToBase(e),r,o)}async lutimesPromise(e,r,o){return this.baseFs.lutimesPromise(this.mapToBase(e),r,o)}lutimesSync(e,r,o){return this.baseFs.lutimesSync(this.mapToBase(e),r,o)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(u,a,o)}symlinkSync(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(u,a,o)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,o){return this.baseFs.watch(this.mapToBase(e),r,o)}watchFile(e,r,o){return this.baseFs.watchFile(this.mapToBase(e),r,o)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e==\"number\"?e:this.mapToBase(e)}}});var Uu,j7=Et(()=>{df();Uu=class extends Ps{constructor(r,{baseFs:o,pathUtils:a}){super(a);this.target=r,this.baseFs=o}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(r){return r}mapToBase(r){return r}}});function q7(t){let e=t;return typeof t.path==\"string\"&&(e.path=ue.toPortablePath(t.path)),e}var G7,Tn,jg=Et(()=>{G7=$e(ve(\"fs\"));Hg();Ca();Tn=class extends Mu{constructor(r=G7.default){super();this.realFs=r}getExtractHint(){return!1}getRealPath(){return Bt.root}resolve(r){return V.resolve(r)}async openPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.open(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}openSync(r,o,a){return this.realFs.openSync(ue.fromPortablePath(r),o,a)}async opendirPromise(r,o){return await new Promise((a,n)=>{typeof o<\"u\"?this.realFs.opendir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.opendir(ue.fromPortablePath(r),this.makeCallback(a,n))}).then(a=>{let n=a;return Object.defineProperty(n,\"path\",{value:r,configurable:!0,writable:!0}),n})}opendirSync(r,o){let n=typeof o<\"u\"?this.realFs.opendirSync(ue.fromPortablePath(r),o):this.realFs.opendirSync(ue.fromPortablePath(r));return Object.defineProperty(n,\"path\",{value:r,configurable:!0,writable:!0}),n}async readPromise(r,o,a=0,n=0,u=-1){return await new Promise((A,p)=>{this.realFs.read(r,o,a,n,u,(h,E)=>{h?p(h):A(E)})})}readSync(r,o,a,n,u){return this.realFs.readSync(r,o,a,n,u)}async writePromise(r,o,a,n,u){return await new Promise((A,p)=>typeof o==\"string\"?this.realFs.write(r,o,a,this.makeCallback(A,p)):this.realFs.write(r,o,a,n,u,this.makeCallback(A,p)))}writeSync(r,o,a,n,u){return typeof o==\"string\"?this.realFs.writeSync(r,o,a):this.realFs.writeSync(r,o,a,n,u)}async closePromise(r){await new Promise((o,a)=>{this.realFs.close(r,this.makeCallback(o,a))})}closeSync(r){this.realFs.closeSync(r)}createReadStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createReadStream(a,o)}createWriteStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createWriteStream(a,o)}async realpathPromise(r){return await new Promise((o,a)=>{this.realFs.realpath(ue.fromPortablePath(r),{},this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}realpathSync(r){return ue.toPortablePath(this.realFs.realpathSync(ue.fromPortablePath(r),{}))}async existsPromise(r){return await new Promise(o=>{this.realFs.exists(ue.fromPortablePath(r),o)})}accessSync(r,o){return this.realFs.accessSync(ue.fromPortablePath(r),o)}async accessPromise(r,o){return await new Promise((a,n)=>{this.realFs.access(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}existsSync(r){return this.realFs.existsSync(ue.fromPortablePath(r))}async statPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.stat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.stat(ue.fromPortablePath(r),this.makeCallback(a,n))})}statSync(r,o){return o?this.realFs.statSync(ue.fromPortablePath(r),o):this.realFs.statSync(ue.fromPortablePath(r))}async fstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.fstat(r,o,this.makeCallback(a,n)):this.realFs.fstat(r,this.makeCallback(a,n))})}fstatSync(r,o){return o?this.realFs.fstatSync(r,o):this.realFs.fstatSync(r)}async lstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.lstat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.lstat(ue.fromPortablePath(r),this.makeCallback(a,n))})}lstatSync(r,o){return o?this.realFs.lstatSync(ue.fromPortablePath(r),o):this.realFs.lstatSync(ue.fromPortablePath(r))}async fchmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.fchmod(r,o,this.makeCallback(a,n))})}fchmodSync(r,o){return this.realFs.fchmodSync(r,o)}async chmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.chmod(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}chmodSync(r,o){return this.realFs.chmodSync(ue.fromPortablePath(r),o)}async fchownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.fchown(r,o,a,this.makeCallback(n,u))})}fchownSync(r,o,a){return this.realFs.fchownSync(r,o,a)}async chownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.chown(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}chownSync(r,o,a){return this.realFs.chownSync(ue.fromPortablePath(r),o,a)}async renamePromise(r,o){return await new Promise((a,n)=>{this.realFs.rename(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}renameSync(r,o){return this.realFs.renameSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async copyFilePromise(r,o,a=0){return await new Promise((n,u)=>{this.realFs.copyFile(ue.fromPortablePath(r),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}copyFileSync(r,o,a=0){return this.realFs.copyFileSync(ue.fromPortablePath(r),ue.fromPortablePath(o),a)}async appendFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.appendFile(A,o,a,this.makeCallback(n,u)):this.realFs.appendFile(A,o,this.makeCallback(n,u))})}appendFileSync(r,o,a){let n=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.appendFileSync(n,o,a):this.realFs.appendFileSync(n,o)}async writeFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.writeFile(A,o,a,this.makeCallback(n,u)):this.realFs.writeFile(A,o,this.makeCallback(n,u))})}writeFileSync(r,o,a){let n=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.writeFileSync(n,o,a):this.realFs.writeFileSync(n,o)}async unlinkPromise(r){return await new Promise((o,a)=>{this.realFs.unlink(ue.fromPortablePath(r),this.makeCallback(o,a))})}unlinkSync(r){return this.realFs.unlinkSync(ue.fromPortablePath(r))}async utimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.utimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}utimesSync(r,o,a){this.realFs.utimesSync(ue.fromPortablePath(r),o,a)}async lutimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.lutimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}lutimesSync(r,o,a){this.realFs.lutimesSync(ue.fromPortablePath(r),o,a)}async mkdirPromise(r,o){return await new Promise((a,n)=>{this.realFs.mkdir(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}mkdirSync(r,o){return this.realFs.mkdirSync(ue.fromPortablePath(r),o)}async rmdirPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.rmdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.rmdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}rmdirSync(r,o){return this.realFs.rmdirSync(ue.fromPortablePath(r),o)}async linkPromise(r,o){return await new Promise((a,n)=>{this.realFs.link(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}linkSync(r,o){return this.realFs.linkSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async symlinkPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.symlink(ue.fromPortablePath(r.replace(/\\/+$/,\"\")),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}symlinkSync(r,o,a){return this.realFs.symlinkSync(ue.fromPortablePath(r.replace(/\\/+$/,\"\")),ue.fromPortablePath(o),a)}async readFilePromise(r,o){return await new Promise((a,n)=>{let u=typeof r==\"string\"?ue.fromPortablePath(r):r;this.realFs.readFile(u,o,this.makeCallback(a,n))})}readFileSync(r,o){let a=typeof r==\"string\"?ue.fromPortablePath(r):r;return this.realFs.readFileSync(a,o)}async readdirPromise(r,o){return await new Promise((a,n)=>{o?o.recursive&&process.platform===\"win32\"?o.withFileTypes?this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(q7)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(ue.toPortablePath)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.readdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}readdirSync(r,o){return o?o.recursive&&process.platform===\"win32\"?o.withFileTypes?this.realFs.readdirSync(ue.fromPortablePath(r),o).map(q7):this.realFs.readdirSync(ue.fromPortablePath(r),o).map(ue.toPortablePath):this.realFs.readdirSync(ue.fromPortablePath(r),o):this.realFs.readdirSync(ue.fromPortablePath(r))}async readlinkPromise(r){return await new Promise((o,a)=>{this.realFs.readlink(ue.fromPortablePath(r),this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}readlinkSync(r){return ue.toPortablePath(this.realFs.readlinkSync(ue.fromPortablePath(r)))}async truncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.truncate(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}truncateSync(r,o){return this.realFs.truncateSync(ue.fromPortablePath(r),o)}async ftruncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.ftruncate(r,o,this.makeCallback(a,n))})}ftruncateSync(r,o){return this.realFs.ftruncateSync(r,o)}watch(r,o,a){return this.realFs.watch(ue.fromPortablePath(r),o,a)}watchFile(r,o,a){return this.realFs.watchFile(ue.fromPortablePath(r),o,a)}unwatchFile(r,o){return this.realFs.unwatchFile(ue.fromPortablePath(r),o)}makeCallback(r,o){return(a,n)=>{a?o(a):r(n)}}}});var gn,Y7=Et(()=>{jg();df();Ca();gn=class extends Ps{constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils.normalize(r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(r){return this.pathUtils.isAbsolute(r)?V.normalize(r):this.baseFs.resolve(V.join(this.target,r))}mapFromBase(r){return r}mapToBase(r){return this.pathUtils.isAbsolute(r)?r:this.pathUtils.join(this.target,r)}}});var W7,_u,K7=Et(()=>{jg();df();Ca();W7=Bt.root,_u=class extends Ps{constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils.resolve(Bt.root,r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Bt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(r){let o=this.pathUtils.normalize(r);if(this.pathUtils.isAbsolute(r))return this.pathUtils.resolve(this.target,this.pathUtils.relative(W7,r));if(o.match(/^\\.\\.\\/?/))throw new Error(`Resolving this path (${r}) would escape the jail`);return this.pathUtils.resolve(this.target,r)}mapFromBase(r){return this.pathUtils.resolve(W7,this.pathUtils.relative(this.target,r))}}});var iy,V7=Et(()=>{df();iy=class extends Ps{constructor(r,o){super(o);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var qg,wa,Hp,J7=Et(()=>{qg=ve(\"fs\");Hg();jg();YR();BD();Ca();wa=4278190080,Hp=class extends Mu{constructor({baseFs:r=new Tn,filter:o=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:u=!0,maxAge:A=5e3,typeCheck:p=qg.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:I}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error(\"The magic byte must be set to a round value between 1 and 127 included\");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=u?new Map:null,this.factoryPromise=E,this.factorySync=I,this.filter=o,this.getMountPoint=h,this.magic=a<<24,this.maxAge=A,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(Ug(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(Ug(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,o){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,o]),a}async openPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,o,a),async(n,{subPath:u})=>this.remapFd(n,await n.openPromise(u,o,a)))}openSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,o,a),(n,{subPath:u})=>this.remapFd(n,n.openSync(u,o,a)))}async opendirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,o),async(a,{subPath:n})=>await a.opendirPromise(n,o),{requireSubpath:!1})}opendirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,o),(a,{subPath:n})=>a.opendirSync(n,o),{requireSubpath:!1})}async readPromise(r,o,a,n,u){if((r&wa)!==this.magic)return await this.baseFs.readPromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"read\");let[p,h]=A;return await p.readPromise(h,o,a,n,u)}readSync(r,o,a,n,u){if((r&wa)!==this.magic)return this.baseFs.readSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"readSync\");let[p,h]=A;return p.readSync(h,o,a,n,u)}async writePromise(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o==\"string\"?await this.baseFs.writePromise(r,o,a):await this.baseFs.writePromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"write\");let[p,h]=A;return typeof o==\"string\"?await p.writePromise(h,o,a):await p.writePromise(h,o,a,n,u)}writeSync(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o==\"string\"?this.baseFs.writeSync(r,o,a):this.baseFs.writeSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"writeSync\");let[p,h]=A;return typeof o==\"string\"?p.writeSync(h,o,a):p.writeSync(h,o,a,n,u)}async closePromise(r){if((r&wa)!==this.magic)return await this.baseFs.closePromise(r);let o=this.fdMap.get(r);if(typeof o>\"u\")throw Io(\"close\");this.fdMap.delete(r);let[a,n]=o;return await a.closePromise(n)}closeSync(r){if((r&wa)!==this.magic)return this.baseFs.closeSync(r);let o=this.fdMap.get(r);if(typeof o>\"u\")throw Io(\"closeSync\");this.fdMap.delete(r);let[a,n]=o;return a.closeSync(n)}createReadStream(r,o){return r===null?this.baseFs.createReadStream(r,o):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,o),(a,{archivePath:n,subPath:u})=>{let A=a.createReadStream(u,o);return A.path=ue.fromPortablePath(this.pathUtils.join(n,u)),A})}createWriteStream(r,o){return r===null?this.baseFs.createWriteStream(r,o):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,o),(a,{subPath:n})=>a.createWriteStream(n,o))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>\"u\"&&(u=await this.baseFs.realpathPromise(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,await o.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>\"u\"&&(u=this.baseFs.realpathSync(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,o.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(o,{subPath:a})=>await o.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(o,{subPath:a})=>o.existsSync(a))}async accessPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,o),async(a,{subPath:n})=>await a.accessPromise(n,o))}accessSync(r,o){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,o),(a,{subPath:n})=>a.accessSync(n,o))}async statPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,o),async(a,{subPath:n})=>await a.statPromise(n,o))}statSync(r,o){return this.makeCallSync(r,()=>this.baseFs.statSync(r,o),(a,{subPath:n})=>a.statSync(n,o))}async fstatPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatPromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fstat\");let[n,u]=a;return n.fstatPromise(u,o)}fstatSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fstatSync\");let[n,u]=a;return n.fstatSync(u,o)}async lstatPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,o),async(a,{subPath:n})=>await a.lstatPromise(n,o))}lstatSync(r,o){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,o),(a,{subPath:n})=>a.lstatSync(n,o))}async fchmodPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodPromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fchmod\");let[n,u]=a;return n.fchmodPromise(u,o)}fchmodSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fchmodSync\");let[n,u]=a;return n.fchmodSync(u,o)}async chmodPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,o),async(a,{subPath:n})=>await a.chmodPromise(n,o))}chmodSync(r,o){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,o),(a,{subPath:n})=>a.chmodSync(n,o))}async fchownPromise(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownPromise(r,o,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Io(\"fchown\");let[u,A]=n;return u.fchownPromise(A,o,a)}fchownSync(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownSync(r,o,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Io(\"fchownSync\");let[u,A]=n;return u.fchownSync(A,o,a)}async chownPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,o,a),async(n,{subPath:u})=>await n.chownPromise(u,o,a))}chownSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,o,a),(n,{subPath:u})=>n.chownSync(u,o,a))}async renamePromise(r,o){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.renamePromise(r,o),async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),async(a,{subPath:n})=>await this.makeCallPromise(o,async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},async(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return await a.renamePromise(n,A)}))}renameSync(r,o){return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.renameSync(r,o),()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),(a,{subPath:n})=>this.makeCallSync(o,()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return a.renameSync(n,A)}))}async copyFilePromise(r,o,a=0){let n=async(u,A,p,h)=>{if((a&qg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:\"EXDEV\"});if(a&qg.constants.COPYFILE_EXCL&&await this.existsPromise(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=await u.readFilePromise(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:\"EINVAL\"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.copyFilePromise(r,o,a),async(u,{subPath:A})=>await n(this.baseFs,r,u,A)),async(u,{subPath:A})=>await this.makeCallPromise(o,async()=>await n(u,A,this.baseFs,o),async(p,{subPath:h})=>u!==p?await n(u,A,p,h):await u.copyFilePromise(A,h,a)))}copyFileSync(r,o,a=0){let n=(u,A,p,h)=>{if((a&qg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:\"EXDEV\"});if(a&qg.constants.COPYFILE_EXCL&&this.existsSync(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=u.readFileSync(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:\"EINVAL\"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.copyFileSync(r,o,a),(u,{subPath:A})=>n(this.baseFs,r,u,A)),(u,{subPath:A})=>this.makeCallSync(o,()=>n(u,A,this.baseFs,o),(p,{subPath:h})=>u!==p?n(u,A,p,h):u.copyFileSync(A,h,a)))}async appendFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,o,a),async(n,{subPath:u})=>await n.appendFilePromise(u,o,a))}appendFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,o,a),(n,{subPath:u})=>n.appendFileSync(u,o,a))}async writeFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,o,a),async(n,{subPath:u})=>await n.writeFilePromise(u,o,a))}writeFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,o,a),(n,{subPath:u})=>n.writeFileSync(u,o,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(o,{subPath:a})=>await o.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(o,{subPath:a})=>o.unlinkSync(a))}async utimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,o,a),async(n,{subPath:u})=>await n.utimesPromise(u,o,a))}utimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,o,a),(n,{subPath:u})=>n.utimesSync(u,o,a))}async lutimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,o,a),async(n,{subPath:u})=>await n.lutimesPromise(u,o,a))}lutimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,o,a),(n,{subPath:u})=>n.lutimesSync(u,o,a))}async mkdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,o),async(a,{subPath:n})=>await a.mkdirPromise(n,o))}mkdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,o),(a,{subPath:n})=>a.mkdirSync(n,o))}async rmdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,o),async(a,{subPath:n})=>await a.rmdirPromise(n,o))}rmdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,o),(a,{subPath:n})=>a.rmdirSync(n,o))}async linkPromise(r,o){return await this.makeCallPromise(o,async()=>await this.baseFs.linkPromise(r,o),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,o){return this.makeCallSync(o,()=>this.baseFs.linkSync(r,o),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,o,a){return await this.makeCallPromise(o,async()=>await this.baseFs.symlinkPromise(r,o,a),async(n,{subPath:u})=>await n.symlinkPromise(r,u))}symlinkSync(r,o,a){return this.makeCallSync(o,()=>this.baseFs.symlinkSync(r,o,a),(n,{subPath:u})=>n.symlinkSync(r,u))}async readFilePromise(r,o){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,o),async(a,{subPath:n})=>await a.readFilePromise(n,o))}readFileSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,o),(a,{subPath:n})=>a.readFileSync(n,o))}async readdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,o),async(a,{subPath:n})=>await a.readdirPromise(n,o),{requireSubpath:!1})}readdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,o),(a,{subPath:n})=>a.readdirSync(n,o),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(o,{subPath:a})=>await o.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(o,{subPath:a})=>o.readlinkSync(a))}async truncatePromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,o),async(a,{subPath:n})=>await a.truncatePromise(n,o))}truncateSync(r,o){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,o),(a,{subPath:n})=>a.truncateSync(n,o))}async ftruncatePromise(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncatePromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"ftruncate\");let[n,u]=a;return n.ftruncatePromise(u,o)}ftruncateSync(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncateSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"ftruncateSync\");let[n,u]=a;return n.ftruncateSync(u,o)}watch(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,o,a),(n,{subPath:u})=>n.watch(u,o,a))}watchFile(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,o,a),()=>ny(this,r,o,a))}unwatchFile(r,o){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,o),()=>Mg(this,r,o))}async makeCallPromise(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return await o();let u=this.resolve(r),A=this.findMount(u);return A?n&&A.subPath===\"/\"?await o():await this.getMountPromise(A.archivePath,async p=>await a(p,A)):await o()}makeCallSync(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return o();let u=this.resolve(r),A=this.findMount(u);return!A||n&&A.subPath===\"/\"?o():this.getMountSync(A.archivePath,p=>a(p,A))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let o=\"\";for(;;){let a=r.substring(o.length),n=this.getMountPoint(a,o);if(!n)return null;if(o=this.pathUtils.join(o,n),!this.isMount.has(o)){if(this.notMount.has(o))continue;try{if(this.typeCheck!==null&&(this.baseFs.lstatSync(o).mode&qg.constants.S_IFMT)!==this.typeCheck){this.notMount.add(o);continue}}catch{return null}this.isMount.add(o)}return{archivePath:o,subPath:this.pathUtils.join(Bt.root,r.substring(o.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let o=Date.now(),a=o+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[u,{childFs:A,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||A.hasOpenFileHandles?.())){if(o>=p){A.saveAndClose?.(),this.mountInstances.delete(u),n-=1;continue}else if(r===null||n<=0){a=p;break}A.saveAndClose?.(),this.mountInstances.delete(u),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-o).unref())}async getMountPromise(r,o){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await o(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await o(a)}finally{a.saveAndClose?.()}}}getMountSync(r,o){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,o(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return o(a)}finally{a.saveAndClose?.()}}}}});var Zt,WR,Yw,z7=Et(()=>{Hg();Ca();Zt=()=>Object.assign(new Error(\"ENOSYS: unsupported filesystem access\"),{code:\"ENOSYS\"}),WR=class extends gf{constructor(){super(V)}getExtractHint(){throw Zt()}getRealPath(){throw Zt()}resolve(){throw Zt()}async openPromise(){throw Zt()}openSync(){throw Zt()}async opendirPromise(){throw Zt()}opendirSync(){throw Zt()}async readPromise(){throw Zt()}readSync(){throw Zt()}async writePromise(){throw Zt()}writeSync(){throw Zt()}async closePromise(){throw Zt()}closeSync(){throw Zt()}createWriteStream(){throw Zt()}createReadStream(){throw Zt()}async realpathPromise(){throw Zt()}realpathSync(){throw Zt()}async readdirPromise(){throw Zt()}readdirSync(){throw Zt()}async existsPromise(e){throw Zt()}existsSync(e){throw Zt()}async accessPromise(){throw Zt()}accessSync(){throw Zt()}async statPromise(){throw Zt()}statSync(){throw Zt()}async fstatPromise(e){throw Zt()}fstatSync(e){throw Zt()}async lstatPromise(e){throw Zt()}lstatSync(e){throw Zt()}async fchmodPromise(){throw Zt()}fchmodSync(){throw Zt()}async chmodPromise(){throw Zt()}chmodSync(){throw Zt()}async fchownPromise(){throw Zt()}fchownSync(){throw Zt()}async chownPromise(){throw Zt()}chownSync(){throw Zt()}async mkdirPromise(){throw Zt()}mkdirSync(){throw Zt()}async rmdirPromise(){throw Zt()}rmdirSync(){throw Zt()}async linkPromise(){throw Zt()}linkSync(){throw Zt()}async symlinkPromise(){throw Zt()}symlinkSync(){throw Zt()}async renamePromise(){throw Zt()}renameSync(){throw Zt()}async copyFilePromise(){throw Zt()}copyFileSync(){throw Zt()}async appendFilePromise(){throw Zt()}appendFileSync(){throw Zt()}async writeFilePromise(){throw Zt()}writeFileSync(){throw Zt()}async unlinkPromise(){throw Zt()}unlinkSync(){throw Zt()}async utimesPromise(){throw Zt()}utimesSync(){throw Zt()}async lutimesPromise(){throw Zt()}lutimesSync(){throw Zt()}async readFilePromise(){throw Zt()}readFileSync(){throw Zt()}async readlinkPromise(){throw Zt()}readlinkSync(){throw Zt()}async truncatePromise(){throw Zt()}truncateSync(){throw Zt()}async ftruncatePromise(e,r){throw Zt()}ftruncateSync(e,r){throw Zt()}watch(){throw Zt()}watchFile(){throw Zt()}unwatchFile(){throw Zt()}},Yw=WR;Yw.instance=new WR});var jp,X7=Et(()=>{df();Ca();jp=class extends Ps{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return ue.fromPortablePath(r)}mapToBase(r){return ue.toPortablePath(r)}}});var k_e,KR,Q_e,mi,Z7=Et(()=>{jg();df();Ca();k_e=/^[0-9]+$/,KR=/^(\\/(?:[^/]+\\/)*?(?:\\$\\$virtual|__virtual__))((?:\\/((?:[^/]+-)?[a-f0-9]+)(?:\\/([^/]+))?)?((?:\\/.*)?))$/,Q_e=/^([^/]+-)?[a-f0-9]+$/,mi=class extends Ps{constructor({baseFs:r=new Tn}={}){super(V);this.baseFs=r}static makeVirtualPath(r,o,a){if(V.basename(r)!==\"__virtual__\")throw new Error('Assertion failed: Virtual folders must be named \"__virtual__\"');if(!V.basename(o).match(Q_e))throw new Error(\"Assertion failed: Virtual components must be ended by an hexadecimal hash\");let u=V.relative(V.dirname(r),a).split(\"/\"),A=0;for(;A<u.length&&u[A]===\"..\";)A+=1;let p=u.slice(A);return V.join(r,o,String(A),...p)}static resolveVirtual(r){let o=r.match(KR);if(!o||!o[3]&&o[5])return r;let a=V.dirname(o[1]);if(!o[3]||!o[4])return a;if(!k_e.test(o[4]))return r;let u=Number(o[4]),A=\"../\".repeat(u),p=o[5]||\".\";return mi.resolveVirtual(V.join(a,A,p))}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}realpathSync(r){let o=r.match(KR);if(!o)return this.baseFs.realpathSync(r);if(!o[5])return r;let a=this.baseFs.realpathSync(this.mapToBase(r));return mi.makeVirtualPath(o[1],o[3],a)}async realpathPromise(r){let o=r.match(KR);if(!o)return await this.baseFs.realpathPromise(r);if(!o[5])return r;let a=await this.baseFs.realpathPromise(this.mapToBase(r));return mi.makeVirtualPath(o[1],o[3],a)}mapToBase(r){if(r===\"\")return r;if(this.pathUtils.isAbsolute(r))return mi.resolveVirtual(r);let o=mi.resolveVirtual(this.baseFs.resolve(Bt.dot)),a=mi.resolveVirtual(this.baseFs.resolve(r));return V.relative(o,a)||Bt.dot}mapFromBase(r){return r}}});function F_e(t,e){return typeof VR.default.isUtf8<\"u\"?VR.default.isUtf8(t):Buffer.byteLength(e)===t.byteLength}var VR,$7,eY,xD,tY=Et(()=>{VR=$e(ve(\"buffer\")),$7=ve(\"url\"),eY=ve(\"util\");df();Ca();xD=class extends Ps{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return r}mapToBase(r){if(typeof r==\"string\")return r;if(r instanceof URL)return(0,$7.fileURLToPath)(r);if(Buffer.isBuffer(r)){let o=r.toString();if(!F_e(r,o))throw new Error(\"Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942\");return o}throw new Error(`Unsupported path type: ${(0,eY.inspect)(r)}`)}}});var rY,Bo,mf,qp,kD,QD,sy,Tc,Lc,R_e,T_e,L_e,N_e,Ww,nY=Et(()=>{rY=ve(\"readline\"),Bo=Symbol(\"kBaseFs\"),mf=Symbol(\"kFd\"),qp=Symbol(\"kClosePromise\"),kD=Symbol(\"kCloseResolve\"),QD=Symbol(\"kCloseReject\"),sy=Symbol(\"kRefs\"),Tc=Symbol(\"kRef\"),Lc=Symbol(\"kUnref\"),Ww=class{constructor(e,r){this[R_e]=1;this[T_e]=void 0;this[L_e]=void 0;this[N_e]=void 0;this[Bo]=r,this[mf]=e}get fd(){return this[mf]}async appendFile(e,r){try{this[Tc](this.appendFile);let o=(typeof r==\"string\"?r:r?.encoding)??void 0;return await this[Bo].appendFilePromise(this.fd,e,o?{encoding:o}:void 0)}finally{this[Lc]()}}async chown(e,r){try{return this[Tc](this.chown),await this[Bo].fchownPromise(this.fd,e,r)}finally{this[Lc]()}}async chmod(e){try{return this[Tc](this.chmod),await this[Bo].fchmodPromise(this.fd,e)}finally{this[Lc]()}}createReadStream(e){return this[Bo].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Bo].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error(\"Method not implemented.\")}sync(){throw new Error(\"Method not implemented.\")}async read(e,r,o,a){try{this[Tc](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??={},n=e.buffer??Buffer.alloc(16384),r=e.offset||0,o=e.length??n.byteLength,a=e.position??null),r??=0,o??=0,o===0?{bytesRead:o,buffer:n}:{bytesRead:await this[Bo].readPromise(this.fd,n,r,o,a),buffer:n}}finally{this[Lc]()}}async readFile(e){try{this[Tc](this.readFile);let r=(typeof e==\"string\"?e:e?.encoding)??void 0;return await this[Bo].readFilePromise(this.fd,r)}finally{this[Lc]()}}readLines(e){return(0,rY.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Tc](this.stat),await this[Bo].fstatPromise(this.fd,e)}finally{this[Lc]()}}async truncate(e){try{return this[Tc](this.truncate),await this[Bo].ftruncatePromise(this.fd,e)}finally{this[Lc]()}}utimes(e,r){throw new Error(\"Method not implemented.\")}async writeFile(e,r){try{this[Tc](this.writeFile);let o=(typeof r==\"string\"?r:r?.encoding)??void 0;await this[Bo].writeFilePromise(this.fd,e,o)}finally{this[Lc]()}}async write(...e){try{if(this[Tc](this.write),ArrayBuffer.isView(e[0])){let[r,o,a,n]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,o,a]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o,a),buffer:r}}}finally{this[Lc]()}}async writev(e,r){try{this[Tc](this.writev);let o=0;if(typeof r<\"u\")for(let a of e){let n=await this.write(a,void 0,void 0,r);o+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);o+=n.bytesWritten}return{buffers:e,bytesWritten:o}}finally{this[Lc]()}}readv(e,r){throw new Error(\"Method not implemented.\")}close(){if(this[mf]===-1)return Promise.resolve();if(this[qp])return this[qp];if(this[sy]--,this[sy]===0){let e=this[mf];this[mf]=-1,this[qp]=this[Bo].closePromise(e).finally(()=>{this[qp]=void 0})}else this[qp]=new Promise((e,r)=>{this[kD]=e,this[QD]=r}).finally(()=>{this[qp]=void 0,this[QD]=void 0,this[kD]=void 0});return this[qp]}[(Bo,mf,R_e=sy,T_e=qp,L_e=kD,N_e=QD,Tc)](e){if(this[mf]===-1){let r=new Error(\"file closed\");throw r.code=\"EBADF\",r.syscall=e.name,r}this[sy]++}[Lc](){if(this[sy]--,this[sy]===0){let e=this[mf];this[mf]=-1,this[Bo].closePromise(e).then(this[kD],this[QD])}}}});function Kw(t,e){e=new xD(e);let r=(o,a,n)=>{let u=o[a];o[a]=n,typeof u?.[oy.promisify.custom]<\"u\"&&(n[oy.promisify.custom]=u[oy.promisify.custom])};{r(t,\"exists\",(o,...a)=>{let u=typeof a[a.length-1]==\"function\"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(o).then(A=>{u(A)},()=>{u(!1)})})}),r(t,\"read\",(...o)=>{let[a,n,u,A,p,h]=o;if(o.length<=3){let E={};o.length<3?h=o[1]:(E=o[1],h=o[2]),{buffer:n=Buffer.alloc(16384),offset:u=0,length:A=n.byteLength,position:p}=E}if(u==null&&(u=0),A|=0,A===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,u,A,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let o of iY){let a=o.replace(/Promise$/,\"\");if(typeof t[a]>\"u\")continue;let n=e[o];if(typeof n>\"u\")continue;r(t,a,(...A)=>{let h=typeof A[A.length-1]==\"function\"?A.pop():()=>{};process.nextTick(()=>{n.apply(e,A).then(E=>{h(null,E)},E=>{h(E)})})})}t.realpath.native=t.realpath}{r(t,\"existsSync\",o=>{try{return e.existsSync(o)}catch{return!1}}),r(t,\"readSync\",(...o)=>{let[a,n,u,A,p]=o;return o.length<=3&&({offset:u=0,length:A=n.byteLength,position:p}=o[2]||{}),u==null&&(u=0),A|=0,A===0?0:(p==null&&(p=-1),e.readSync(a,n,u,A,p))});for(let o of O_e){let a=o;if(typeof t[a]>\"u\")continue;let n=e[o];typeof n>\"u\"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let o=t.promises;for(let a of iY){let n=a.replace(/Promise$/,\"\");if(typeof o[n]>\"u\")continue;let u=e[a];typeof u>\"u\"||a!==\"open\"&&r(o,n,(A,...p)=>A instanceof Ww?A[n].apply(A,p):u.call(e,A,...p))}r(o,\"open\",async(...a)=>{let n=await e.openPromise(...a);return new Ww(n,e)})}t.read[oy.promisify.custom]=async(o,a,...n)=>({bytesRead:await e.readPromise(o,a,...n),buffer:a}),t.write[oy.promisify.custom]=async(o,a,...n)=>({bytesWritten:await e.writePromise(o,a,...n),buffer:a})}function FD(t,e){let r=Object.create(t);return Kw(r,e),r}var oy,O_e,iY,sY=Et(()=>{oy=ve(\"util\");tY();nY();O_e=new Set([\"accessSync\",\"appendFileSync\",\"createReadStream\",\"createWriteStream\",\"chmodSync\",\"fchmodSync\",\"chownSync\",\"fchownSync\",\"closeSync\",\"copyFileSync\",\"linkSync\",\"lstatSync\",\"fstatSync\",\"lutimesSync\",\"mkdirSync\",\"openSync\",\"opendirSync\",\"readlinkSync\",\"readFileSync\",\"readdirSync\",\"readlinkSync\",\"realpathSync\",\"renameSync\",\"rmdirSync\",\"statSync\",\"symlinkSync\",\"truncateSync\",\"ftruncateSync\",\"unlinkSync\",\"unwatchFile\",\"utimesSync\",\"watch\",\"watchFile\",\"writeFileSync\",\"writeSync\"]),iY=new Set([\"accessPromise\",\"appendFilePromise\",\"fchmodPromise\",\"chmodPromise\",\"fchownPromise\",\"chownPromise\",\"closePromise\",\"copyFilePromise\",\"linkPromise\",\"fstatPromise\",\"lstatPromise\",\"lutimesPromise\",\"mkdirPromise\",\"openPromise\",\"opendirPromise\",\"readdirPromise\",\"realpathPromise\",\"readFilePromise\",\"readdirPromise\",\"readlinkPromise\",\"renamePromise\",\"rmdirPromise\",\"statPromise\",\"symlinkPromise\",\"truncatePromise\",\"ftruncatePromise\",\"unlinkPromise\",\"utimesPromise\",\"writeFilePromise\",\"writeSync\"])});function oY(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,\"0\");return`${t}${e}`}function aY(){if(JR)return JR;let t=ue.toPortablePath(lY.default.tmpdir()),e=oe.realpathSync(t);return process.once(\"exit\",()=>{oe.rmtempSync()}),JR={tmpdir:t,realTmpdir:e}}var lY,Nc,JR,oe,cY=Et(()=>{lY=$e(ve(\"os\"));jg();Ca();Nc=new Set,JR=null;oe=Object.assign(new Tn,{detachTemp(t){Nc.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=aY();for(;;){let o=oY(\"xfs-\");try{this.mkdirSync(V.join(e,o))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=V.join(r,o);if(Nc.add(a),typeof t>\"u\")return a;try{return t(a)}finally{if(Nc.has(a)){Nc.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=aY();for(;;){let o=oY(\"xfs-\");try{await this.mkdirPromise(V.join(e,o))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=V.join(r,o);if(Nc.add(a),typeof t>\"u\")return a;try{return await t(a)}finally{if(Nc.has(a)){Nc.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Nc.values()).map(async t=>{try{await oe.removePromise(t,{maxRetries:0}),Nc.delete(t)}catch{}}))},rmtempSync(){for(let t of Nc)try{oe.removeSync(t),Nc.delete(t)}catch{}}})});var Vw={};Vt(Vw,{AliasFS:()=>Uu,BasePortableFakeFS:()=>Mu,CustomDir:()=>Gw,CwdFS:()=>gn,FakeFS:()=>gf,Filename:()=>dr,JailFS:()=>_u,LazyFS:()=>iy,MountFS:()=>Hp,NoFS:()=>Yw,NodeFS:()=>Tn,PortablePath:()=>Bt,PosixFS:()=>jp,ProxiedFS:()=>Ps,VirtualFS:()=>mi,constants:()=>vi,errors:()=>ar,extendFs:()=>FD,normalizeLineEndings:()=>_g,npath:()=>ue,opendir:()=>SD,patchFs:()=>Kw,ppath:()=>V,setupCopyIndex:()=>PD,statUtils:()=>Ea,unwatchAllFiles:()=>Ug,unwatchFile:()=>Mg,watchFile:()=>ny,xfs:()=>oe});var Pt=Et(()=>{k7();BD();HR();GR();N7();YR();Hg();Ca();Ca();j7();Hg();Y7();K7();V7();J7();z7();jg();X7();df();Z7();sY();cY()});var hY=_((abt,pY)=>{pY.exports=fY;fY.sync=U_e;var uY=ve(\"fs\");function M_e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(\";\"),r.indexOf(\"\")!==-1))return!0;for(var o=0;o<r.length;o++){var a=r[o].toLowerCase();if(a&&t.substr(-a.length).toLowerCase()===a)return!0}return!1}function AY(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:M_e(e,r)}function fY(t,e,r){uY.stat(t,function(o,a){r(o,o?!1:AY(a,t,e))})}function U_e(t,e){return AY(uY.statSync(t),t,e)}});var EY=_((lbt,yY)=>{yY.exports=dY;dY.sync=__e;var gY=ve(\"fs\");function dY(t,e,r){gY.stat(t,function(o,a){r(o,o?!1:mY(a,e))})}function __e(t,e){return mY(gY.statSync(t),e)}function mY(t,e){return t.isFile()&&H_e(t,e)}function H_e(t,e){var r=t.mode,o=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),u=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),A=parseInt(\"100\",8),p=parseInt(\"010\",8),h=parseInt(\"001\",8),E=A|p,I=r&h||r&p&&a===u||r&A&&o===n||r&E&&n===0;return I}});var wY=_((ubt,CY)=>{var cbt=ve(\"fs\"),RD;process.platform===\"win32\"||global.TESTING_WINDOWS?RD=hY():RD=EY();CY.exports=zR;zR.sync=j_e;function zR(t,e,r){if(typeof e==\"function\"&&(r=e,e={}),!r){if(typeof Promise!=\"function\")throw new TypeError(\"callback not provided\");return new Promise(function(o,a){zR(t,e||{},function(n,u){n?a(n):o(u)})})}RD(t,e||{},function(o,a){o&&(o.code===\"EACCES\"||e&&e.ignoreErrors)&&(o=null,a=!1),r(o,a)})}function j_e(t,e){try{return RD.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code===\"EACCES\")return!1;throw r}}});var bY=_((Abt,SY)=>{var ay=process.platform===\"win32\"||process.env.OSTYPE===\"cygwin\"||process.env.OSTYPE===\"msys\",IY=ve(\"path\"),q_e=ay?\";\":\":\",BY=wY(),vY=t=>Object.assign(new Error(`not found: ${t}`),{code:\"ENOENT\"}),DY=(t,e)=>{let r=e.colon||q_e,o=t.match(/\\//)||ay&&t.match(/\\\\/)?[\"\"]:[...ay?[process.cwd()]:[],...(e.path||process.env.PATH||\"\").split(r)],a=ay?e.pathExt||process.env.PATHEXT||\".EXE;.CMD;.BAT;.COM\":\"\",n=ay?a.split(r):[\"\"];return ay&&t.indexOf(\".\")!==-1&&n[0]!==\"\"&&n.unshift(\"\"),{pathEnv:o,pathExt:n,pathExtExe:a}},PY=(t,e,r)=>{typeof e==\"function\"&&(r=e,e={}),e||(e={});let{pathEnv:o,pathExt:a,pathExtExe:n}=DY(t,e),u=[],A=h=>new Promise((E,I)=>{if(h===o.length)return e.all&&u.length?E(u):I(vY(t));let v=o[h],x=/^\".*\"$/.test(v)?v.slice(1,-1):v,C=IY.join(x,t),R=!x&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+C:C;E(p(R,h,0))}),p=(h,E,I)=>new Promise((v,x)=>{if(I===a.length)return v(A(E+1));let C=a[I];BY(h+C,{pathExt:n},(R,N)=>{if(!R&&N)if(e.all)u.push(h+C);else return v(h+C);return v(p(h,E,I+1))})});return r?A(0).then(h=>r(null,h),r):A(0)},G_e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:o,pathExtExe:a}=DY(t,e),n=[];for(let u=0;u<r.length;u++){let A=r[u],p=/^\".*\"$/.test(A)?A.slice(1,-1):A,h=IY.join(p,t),E=!p&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+h:h;for(let I=0;I<o.length;I++){let v=E+o[I];try{if(BY.sync(v,{pathExt:a}))if(e.all)n.push(v);else return v}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw vY(t)};SY.exports=PY;PY.sync=G_e});var kY=_((fbt,XR)=>{\"use strict\";var xY=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!==\"win32\"?\"PATH\":Object.keys(e).reverse().find(o=>o.toUpperCase()===\"PATH\")||\"Path\"};XR.exports=xY;XR.exports.default=xY});var TY=_((pbt,RY)=>{\"use strict\";var QY=ve(\"path\"),Y_e=bY(),W_e=kY();function FY(t,e){let r=t.options.env||process.env,o=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let u;try{u=Y_e.sync(t.command,{path:r[W_e({env:r})],pathExt:e?QY.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return u&&(u=QY.resolve(a?t.options.cwd:\"\",u)),u}function K_e(t){return FY(t)||FY(t,!0)}RY.exports=K_e});var LY=_((hbt,$R)=>{\"use strict\";var ZR=/([()\\][%!^\"`<>&|;, *?])/g;function V_e(t){return t=t.replace(ZR,\"^$1\"),t}function J_e(t,e){return t=`${t}`,t=t.replace(/(\\\\*)\"/g,'$1$1\\\\\"'),t=t.replace(/(\\\\*)$/,\"$1$1\"),t=`\"${t}\"`,t=t.replace(ZR,\"^$1\"),e&&(t=t.replace(ZR,\"^$1\")),t}$R.exports.command=V_e;$R.exports.argument=J_e});var OY=_((gbt,NY)=>{\"use strict\";NY.exports=/^#!(.*)/});var UY=_((dbt,MY)=>{\"use strict\";var z_e=OY();MY.exports=(t=\"\")=>{let e=t.match(z_e);if(!e)return null;let[r,o]=e[0].replace(/#! ?/,\"\").split(\" \"),a=r.split(\"/\").pop();return a===\"env\"?o:o?`${a} ${o}`:a}});var HY=_((mbt,_Y)=>{\"use strict\";var eT=ve(\"fs\"),X_e=UY();function Z_e(t){let r=Buffer.alloc(150),o;try{o=eT.openSync(t,\"r\"),eT.readSync(o,r,0,150,0),eT.closeSync(o)}catch{}return X_e(r.toString())}_Y.exports=Z_e});var YY=_((ybt,GY)=>{\"use strict\";var $_e=ve(\"path\"),jY=TY(),qY=LY(),e8e=HY(),t8e=process.platform===\"win32\",r8e=/\\.(?:com|exe)$/i,n8e=/node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;function i8e(t){t.file=jY(t);let e=t.file&&e8e(t.file);return e?(t.args.unshift(t.file),t.command=e,jY(t)):t.file}function s8e(t){if(!t8e)return t;let e=i8e(t),r=!r8e.test(e);if(t.options.forceShell||r){let o=n8e.test(e);t.command=$_e.normalize(t.command),t.command=qY.command(t.command),t.args=t.args.map(n=>qY.argument(n,o));let a=[t.command].concat(t.args).join(\" \");t.args=[\"/d\",\"/s\",\"/c\",`\"${a}\"`],t.command=process.env.comspec||\"cmd.exe\",t.options.windowsVerbatimArguments=!0}return t}function o8e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let o={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?o:s8e(o)}GY.exports=o8e});var VY=_((Ebt,KY)=>{\"use strict\";var tT=process.platform===\"win32\";function rT(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:\"ENOENT\",errno:\"ENOENT\",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function a8e(t,e){if(!tT)return;let r=t.emit;t.emit=function(o,a){if(o===\"exit\"){let n=WY(a,e,\"spawn\");if(n)return r.call(t,\"error\",n)}return r.apply(t,arguments)}}function WY(t,e){return tT&&t===1&&!e.file?rT(e.original,\"spawn\"):null}function l8e(t,e){return tT&&t===1&&!e.file?rT(e.original,\"spawnSync\"):null}KY.exports={hookChildProcess:a8e,verifyENOENT:WY,verifyENOENTSync:l8e,notFoundError:rT}});var sT=_((Cbt,ly)=>{\"use strict\";var JY=ve(\"child_process\"),nT=YY(),iT=VY();function zY(t,e,r){let o=nT(t,e,r),a=JY.spawn(o.command,o.args,o.options);return iT.hookChildProcess(a,o),a}function c8e(t,e,r){let o=nT(t,e,r),a=JY.spawnSync(o.command,o.args,o.options);return a.error=a.error||iT.verifyENOENTSync(a.status,o),a}ly.exports=zY;ly.exports.spawn=zY;ly.exports.sync=c8e;ly.exports._parse=nT;ly.exports._enoent=iT});var ZY=_((wbt,XY)=>{\"use strict\";function u8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Gg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Gg)}u8e(Gg,Error);Gg.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function A8e(t,e){e=e!==void 0?e:{};var r={},o={Start:hg},a=hg,n=function(L){return L||[]},u=function(L,K,re){return[{command:L,type:K}].concat(re||[])},A=function(L,K){return[{command:L,type:K||\";\"}]},p=function(L){return L},h=\";\",E=Br(\";\",!1),I=\"&\",v=Br(\"&\",!1),x=function(L,K){return K?{chain:L,then:K}:{chain:L}},C=function(L,K){return{type:L,line:K}},R=\"&&\",N=Br(\"&&\",!1),U=\"||\",J=Br(\"||\",!1),te=function(L,K){return K?{...L,then:K}:L},ae=function(L,K){return{type:L,chain:K}},fe=\"|&\",ce=Br(\"|&\",!1),me=\"|\",he=Br(\"|\",!1),Be=\"=\",we=Br(\"=\",!1),g=function(L,K){return{name:L,args:[K]}},Ee=function(L){return{name:L,args:[]}},Pe=\"(\",le=Br(\"(\",!1),ne=\")\",ee=Br(\")\",!1),Ie=function(L,K){return{type:\"subshell\",subshell:L,args:K}},Fe=\"{\",At=Br(\"{\",!1),H=\"}\",at=Br(\"}\",!1),Re=function(L,K){return{type:\"group\",group:L,args:K}},ke=function(L,K){return{type:\"command\",args:K,envs:L}},xe=function(L){return{type:\"envs\",envs:L}},He=function(L){return L},Te=function(L){return L},Je=/^[0-9]/,je=Cs([[\"0\",\"9\"]],!1,!1),b=function(L,K,re){return{type:\"redirection\",subtype:K,fd:L!==null?parseInt(L):null,args:[re]}},w=\">>\",S=Br(\">>\",!1),y=\">&\",F=Br(\">&\",!1),z=\">\",X=Br(\">\",!1),Z=\"<<<\",ie=Br(\"<<<\",!1),be=\"<&\",Le=Br(\"<&\",!1),ot=\"<\",dt=Br(\"<\",!1),qt=function(L){return{type:\"argument\",segments:[].concat(...L)}},$t=function(L){return L},bt=\"$'\",an=Br(\"$'\",!1),Qr=\"'\",mr=Br(\"'\",!1),br=function(L){return[{type:\"text\",text:L}]},Wr='\"\"',Kn=Br('\"\"',!1),Ls=function(){return{type:\"text\",text:\"\"}},Ti='\"',ps=Br('\"',!1),io=function(L){return L},Si=function(L){return{type:\"arithmetic\",arithmetic:L,quoted:!0}},Ns=function(L){return{type:\"shell\",shell:L,quoted:!0}},so=function(L){return{type:\"variable\",...L,quoted:!0}},cc=function(L){return{type:\"text\",text:L}},cu=function(L){return{type:\"arithmetic\",arithmetic:L,quoted:!1}},lp=function(L){return{type:\"shell\",shell:L,quoted:!1}},cp=function(L){return{type:\"variable\",...L,quoted:!1}},Os=function(L){return{type:\"glob\",pattern:L}},Dn=/^[^']/,oo=Cs([\"'\"],!0,!1),Ms=function(L){return L.join(\"\")},ml=/^[^$\"]/,yl=Cs([\"$\",'\"'],!0,!1),ao=`\\\\\n`,Vn=Br(`\\\\\n`,!1),On=function(){return\"\"},Li=\"\\\\\",Mn=Br(\"\\\\\",!1),_i=/^[\\\\$\"`]/,tr=Cs([\"\\\\\",\"$\",'\"',\"`\"],!1,!1),Oe=function(L){return L},ii=\"\\\\a\",Ma=Br(\"\\\\a\",!1),hr=function(){return\"a\"},uc=\"\\\\b\",uu=Br(\"\\\\b\",!1),Ac=function(){return\"\\b\"},El=/^[Ee]/,DA=Cs([\"E\",\"e\"],!1,!1),Au=function(){return\"\\x1B\"},Ce=\"\\\\f\",Rt=Br(\"\\\\f\",!1),fc=function(){return\"\\f\"},Hi=\"\\\\n\",fu=Br(\"\\\\n\",!1),Yt=function(){return`\n`},Cl=\"\\\\r\",PA=Br(\"\\\\r\",!1),up=function(){return\"\\r\"},pc=\"\\\\t\",SA=Br(\"\\\\t\",!1),Qn=function(){return\"\t\"},hi=\"\\\\v\",hc=Br(\"\\\\v\",!1),bA=function(){return\"\\v\"},sa=/^[\\\\'\"?]/,Ni=Cs([\"\\\\\",\"'\",'\"',\"?\"],!1,!1),_o=function(L){return String.fromCharCode(parseInt(L,16))},Ze=\"\\\\x\",lo=Br(\"\\\\x\",!1),gc=\"\\\\u\",pu=Br(\"\\\\u\",!1),ji=\"\\\\U\",hu=Br(\"\\\\U\",!1),xA=function(L){return String.fromCodePoint(parseInt(L,16))},Ua=/^[0-7]/,dc=Cs([[\"0\",\"7\"]],!1,!1),hs=/^[0-9a-fA-f]/,Ht=Cs([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"f\"]],!1,!1),Fn=ug(),Ci=\"{}\",oa=Br(\"{}\",!1),co=function(){return\"{}\"},Us=\"-\",aa=Br(\"-\",!1),la=\"+\",Ho=Br(\"+\",!1),wi=\".\",gs=Br(\".\",!1),ds=function(L,K,re){return{type:\"number\",value:(L===\"-\"?-1:1)*parseFloat(K.join(\"\")+\".\"+re.join(\"\"))}},ms=function(L,K){return{type:\"number\",value:(L===\"-\"?-1:1)*parseInt(K.join(\"\"))}},_s=function(L){return{type:\"variable\",...L}},Un=function(L){return{type:\"variable\",name:L}},Pn=function(L){return L},ys=\"*\",We=Br(\"*\",!1),tt=\"/\",It=Br(\"/\",!1),nr=function(L,K,re){return{type:K===\"*\"?\"multiplication\":\"division\",right:re}},$=function(L,K){return K.reduce((re,pe)=>({left:re,...pe}),L)},ye=function(L,K,re){return{type:K===\"+\"?\"addition\":\"subtraction\",right:re}},Ne=\"$((\",pt=Br(\"$((\",!1),ht=\"))\",Tt=Br(\"))\",!1),er=function(L){return L},$r=\"$(\",qi=Br(\"$(\",!1),es=function(L){return L},bi=\"${\",jo=Br(\"${\",!1),kA=\":-\",QA=Br(\":-\",!1),Ap=function(L,K){return{name:L,defaultValue:K}},ig=\":-}\",gu=Br(\":-}\",!1),sg=function(L){return{name:L,defaultValue:[]}},du=\":+\",uo=Br(\":+\",!1),FA=function(L,K){return{name:L,alternativeValue:K}},mc=\":+}\",ca=Br(\":+}\",!1),og=function(L){return{name:L,alternativeValue:[]}},yc=function(L){return{name:L}},Sm=\"$\",ag=Br(\"$\",!1),ei=function(L){return e.isGlobPattern(L)},fp=function(L){return L},lg=/^[a-zA-Z0-9_]/,RA=Cs([[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\"],!1,!1),Hs=function(){return cg()},mu=/^[$@*?#a-zA-Z0-9_\\-]/,Ha=Cs([\"$\",\"@\",\"*\",\"?\",\"#\",[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\",\"-\"],!1,!1),Gi=/^[()}<>$|&; \\t\"']/,ua=Cs([\"(\",\")\",\"}\",\"<\",\">\",\"$\",\"|\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),yu=/^[<>&; \\t\"']/,Es=Cs([\"<\",\">\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),Ec=/^[ \\t]/,Cc=Cs([\" \",\"\t\"],!1,!1),G=0,Dt=0,wl=[{line:1,column:1}],xi=0,wc=[],ct=0,Eu;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function cg(){return t.substring(Dt,G)}function yw(){return Ic(Dt,G)}function TA(L,K){throw K=K!==void 0?K:Ic(Dt,G),pg([fg(L)],t.substring(Dt,G),K)}function pp(L,K){throw K=K!==void 0?K:Ic(Dt,G),bm(L,K)}function Br(L,K){return{type:\"literal\",text:L,ignoreCase:K}}function Cs(L,K,re){return{type:\"class\",parts:L,inverted:K,ignoreCase:re}}function ug(){return{type:\"any\"}}function Ag(){return{type:\"end\"}}function fg(L){return{type:\"other\",description:L}}function hp(L){var K=wl[L],re;if(K)return K;for(re=L-1;!wl[re];)re--;for(K=wl[re],K={line:K.line,column:K.column};re<L;)t.charCodeAt(re)===10?(K.line++,K.column=1):K.column++,re++;return wl[L]=K,K}function Ic(L,K){var re=hp(L),pe=hp(K);return{start:{offset:L,line:re.line,column:re.column},end:{offset:K,line:pe.line,column:pe.column}}}function Ct(L){G<xi||(G>xi&&(xi=G,wc=[]),wc.push(L))}function bm(L,K){return new Gg(L,null,null,K)}function pg(L,K,re){return new Gg(Gg.buildMessage(L,K),L,K,re)}function hg(){var L,K,re;for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(re=Cu(),re===r&&(re=null),re!==r?(Dt=L,K=n(re),L=K):(G=L,L=r)):(G=L,L=r),L}function Cu(){var L,K,re,pe,ze;if(L=G,K=wu(),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();re!==r?(pe=gg(),pe!==r?(ze=xm(),ze===r&&(ze=null),ze!==r?(Dt=L,K=u(K,pe,ze),L=K):(G=L,L=r)):(G=L,L=r)):(G=L,L=r)}else G=L,L=r;if(L===r)if(L=G,K=wu(),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();re!==r?(pe=gg(),pe===r&&(pe=null),pe!==r?(Dt=L,K=A(K,pe),L=K):(G=L,L=r)):(G=L,L=r)}else G=L,L=r;return L}function xm(){var L,K,re,pe,ze;for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=Cu(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=L,K=p(re),L=K):(G=L,L=r)}else G=L,L=r;else G=L,L=r;return L}function gg(){var L;return t.charCodeAt(G)===59?(L=h,G++):(L=r,ct===0&&Ct(E)),L===r&&(t.charCodeAt(G)===38?(L=I,G++):(L=r,ct===0&&Ct(v))),L}function wu(){var L,K,re;return L=G,K=Aa(),K!==r?(re=Ew(),re===r&&(re=null),re!==r?(Dt=L,K=x(K,re),L=K):(G=L,L=r)):(G=L,L=r),L}function Ew(){var L,K,re,pe,ze,mt,fr;for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=km(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=wu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=L,K=C(re,ze),L=K):(G=L,L=r)}else G=L,L=r;else G=L,L=r}else G=L,L=r;else G=L,L=r;return L}function km(){var L;return t.substr(G,2)===R?(L=R,G+=2):(L=r,ct===0&&Ct(N)),L===r&&(t.substr(G,2)===U?(L=U,G+=2):(L=r,ct===0&&Ct(J))),L}function Aa(){var L,K,re;return L=G,K=dg(),K!==r?(re=Bc(),re===r&&(re=null),re!==r?(Dt=L,K=te(K,re),L=K):(G=L,L=r)):(G=L,L=r),L}function Bc(){var L,K,re,pe,ze,mt,fr;for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=Il(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Aa(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=L,K=ae(re,ze),L=K):(G=L,L=r)}else G=L,L=r;else G=L,L=r}else G=L,L=r;else G=L,L=r;return L}function Il(){var L;return t.substr(G,2)===fe?(L=fe,G+=2):(L=r,ct===0&&Ct(ce)),L===r&&(t.charCodeAt(G)===124?(L=me,G++):(L=r,ct===0&&Ct(he))),L}function Iu(){var L,K,re,pe,ze,mt;if(L=G,K=Cg(),K!==r)if(t.charCodeAt(G)===61?(re=Be,G++):(re=r,ct===0&&Ct(we)),re!==r)if(pe=qo(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(Dt=L,K=g(K,pe),L=K):(G=L,L=r)}else G=L,L=r;else G=L,L=r;else G=L,L=r;if(L===r)if(L=G,K=Cg(),K!==r)if(t.charCodeAt(G)===61?(re=Be,G++):(re=r,ct===0&&Ct(we)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=L,K=Ee(K),L=K):(G=L,L=r)}else G=L,L=r;else G=L,L=r;return L}function dg(){var L,K,re,pe,ze,mt,fr,Cr,yn,oi,Oi;for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(t.charCodeAt(G)===40?(re=Pe,G++):(re=r,ct===0&&Ct(le)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Cu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(G)===41?(fr=ne,G++):(fr=r,ct===0&&Ct(ee)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=ja();oi!==r;)yn.push(oi),oi=ja();if(yn!==r){for(oi=[],Oi=Qt();Oi!==r;)oi.push(Oi),Oi=Qt();oi!==r?(Dt=L,K=Ie(ze,yn),L=K):(G=L,L=r)}else G=L,L=r}else G=L,L=r}else G=L,L=r;else G=L,L=r}else G=L,L=r;else G=L,L=r}else G=L,L=r;else G=L,L=r;if(L===r){for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(t.charCodeAt(G)===123?(re=Fe,G++):(re=r,ct===0&&Ct(At)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Cu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(G)===125?(fr=H,G++):(fr=r,ct===0&&Ct(at)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=ja();oi!==r;)yn.push(oi),oi=ja();if(yn!==r){for(oi=[],Oi=Qt();Oi!==r;)oi.push(Oi),Oi=Qt();oi!==r?(Dt=L,K=Re(ze,yn),L=K):(G=L,L=r)}else G=L,L=r}else G=L,L=r}else G=L,L=r;else G=L,L=r}else G=L,L=r;else G=L,L=r}else G=L,L=r;else G=L,L=r;if(L===r){for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){for(re=[],pe=Iu();pe!==r;)re.push(pe),pe=Iu();if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r){if(ze=[],mt=gp(),mt!==r)for(;mt!==r;)ze.push(mt),mt=gp();else ze=r;if(ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=L,K=ke(re,ze),L=K):(G=L,L=r)}else G=L,L=r}else G=L,L=r}else G=L,L=r}else G=L,L=r;if(L===r){for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){if(re=[],pe=Iu(),pe!==r)for(;pe!==r;)re.push(pe),pe=Iu();else re=r;if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=L,K=xe(re),L=K):(G=L,L=r)}else G=L,L=r}else G=L,L=r}}}return L}function LA(){var L,K,re,pe,ze;for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){if(re=[],pe=dp(),pe!==r)for(;pe!==r;)re.push(pe),pe=dp();else re=r;if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=L,K=He(re),L=K):(G=L,L=r)}else G=L,L=r}else G=L,L=r;return L}function gp(){var L,K,re;for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r?(re=ja(),re!==r?(Dt=L,K=Te(re),L=K):(G=L,L=r)):(G=L,L=r),L===r){for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();K!==r?(re=dp(),re!==r?(Dt=L,K=Te(re),L=K):(G=L,L=r)):(G=L,L=r)}return L}function ja(){var L,K,re,pe,ze;for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(Je.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(je)),re===r&&(re=null),re!==r?(pe=mg(),pe!==r?(ze=dp(),ze!==r?(Dt=L,K=b(re,pe,ze),L=K):(G=L,L=r)):(G=L,L=r)):(G=L,L=r)):(G=L,L=r),L}function mg(){var L;return t.substr(G,2)===w?(L=w,G+=2):(L=r,ct===0&&Ct(S)),L===r&&(t.substr(G,2)===y?(L=y,G+=2):(L=r,ct===0&&Ct(F)),L===r&&(t.charCodeAt(G)===62?(L=z,G++):(L=r,ct===0&&Ct(X)),L===r&&(t.substr(G,3)===Z?(L=Z,G+=3):(L=r,ct===0&&Ct(ie)),L===r&&(t.substr(G,2)===be?(L=be,G+=2):(L=r,ct===0&&Ct(Le)),L===r&&(t.charCodeAt(G)===60?(L=ot,G++):(L=r,ct===0&&Ct(dt))))))),L}function dp(){var L,K,re;for(L=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(re=qo(),re!==r?(Dt=L,K=Te(re),L=K):(G=L,L=r)):(G=L,L=r),L}function qo(){var L,K,re;if(L=G,K=[],re=ws(),re!==r)for(;re!==r;)K.push(re),re=ws();else K=r;return K!==r&&(Dt=L,K=qt(K)),L=K,L}function ws(){var L,K;return L=G,K=Ii(),K!==r&&(Dt=L,K=$t(K)),L=K,L===r&&(L=G,K=Qm(),K!==r&&(Dt=L,K=$t(K)),L=K,L===r&&(L=G,K=Fm(),K!==r&&(Dt=L,K=$t(K)),L=K,L===r&&(L=G,K=Go(),K!==r&&(Dt=L,K=$t(K)),L=K))),L}function Ii(){var L,K,re,pe;return L=G,t.substr(G,2)===bt?(K=bt,G+=2):(K=r,ct===0&&Ct(an)),K!==r?(re=ln(),re!==r?(t.charCodeAt(G)===39?(pe=Qr,G++):(pe=r,ct===0&&Ct(mr)),pe!==r?(Dt=L,K=br(re),L=K):(G=L,L=r)):(G=L,L=r)):(G=L,L=r),L}function Qm(){var L,K,re,pe;return L=G,t.charCodeAt(G)===39?(K=Qr,G++):(K=r,ct===0&&Ct(mr)),K!==r?(re=yp(),re!==r?(t.charCodeAt(G)===39?(pe=Qr,G++):(pe=r,ct===0&&Ct(mr)),pe!==r?(Dt=L,K=br(re),L=K):(G=L,L=r)):(G=L,L=r)):(G=L,L=r),L}function Fm(){var L,K,re,pe;if(L=G,t.substr(G,2)===Wr?(K=Wr,G+=2):(K=r,ct===0&&Ct(Kn)),K!==r&&(Dt=L,K=Ls()),L=K,L===r)if(L=G,t.charCodeAt(G)===34?(K=Ti,G++):(K=r,ct===0&&Ct(ps)),K!==r){for(re=[],pe=NA();pe!==r;)re.push(pe),pe=NA();re!==r?(t.charCodeAt(G)===34?(pe=Ti,G++):(pe=r,ct===0&&Ct(ps)),pe!==r?(Dt=L,K=io(re),L=K):(G=L,L=r)):(G=L,L=r)}else G=L,L=r;return L}function Go(){var L,K,re;if(L=G,K=[],re=mp(),re!==r)for(;re!==r;)K.push(re),re=mp();else K=r;return K!==r&&(Dt=L,K=io(K)),L=K,L}function NA(){var L,K;return L=G,K=Gr(),K!==r&&(Dt=L,K=Si(K)),L=K,L===r&&(L=G,K=Ep(),K!==r&&(Dt=L,K=Ns(K)),L=K,L===r&&(L=G,K=Dc(),K!==r&&(Dt=L,K=so(K)),L=K,L===r&&(L=G,K=yg(),K!==r&&(Dt=L,K=cc(K)),L=K))),L}function mp(){var L,K;return L=G,K=Gr(),K!==r&&(Dt=L,K=cu(K)),L=K,L===r&&(L=G,K=Ep(),K!==r&&(Dt=L,K=lp(K)),L=K,L===r&&(L=G,K=Dc(),K!==r&&(Dt=L,K=cp(K)),L=K,L===r&&(L=G,K=Cw(),K!==r&&(Dt=L,K=Os(K)),L=K,L===r&&(L=G,K=pa(),K!==r&&(Dt=L,K=cc(K)),L=K)))),L}function yp(){var L,K,re;for(L=G,K=[],Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo));re!==r;)K.push(re),Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo));return K!==r&&(Dt=L,K=Ms(K)),L=K,L}function yg(){var L,K,re;if(L=G,K=[],re=fa(),re===r&&(ml.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(yl))),re!==r)for(;re!==r;)K.push(re),re=fa(),re===r&&(ml.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(yl)));else K=r;return K!==r&&(Dt=L,K=Ms(K)),L=K,L}function fa(){var L,K,re;return L=G,t.substr(G,2)===ao?(K=ao,G+=2):(K=r,ct===0&&Ct(Vn)),K!==r&&(Dt=L,K=On()),L=K,L===r&&(L=G,t.charCodeAt(G)===92?(K=Li,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(_i.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(tr)),re!==r?(Dt=L,K=Oe(re),L=K):(G=L,L=r)):(G=L,L=r)),L}function ln(){var L,K,re;for(L=G,K=[],re=Ao(),re===r&&(Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo)));re!==r;)K.push(re),re=Ao(),re===r&&(Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo)));return K!==r&&(Dt=L,K=Ms(K)),L=K,L}function Ao(){var L,K,re;return L=G,t.substr(G,2)===ii?(K=ii,G+=2):(K=r,ct===0&&Ct(Ma)),K!==r&&(Dt=L,K=hr()),L=K,L===r&&(L=G,t.substr(G,2)===uc?(K=uc,G+=2):(K=r,ct===0&&Ct(uu)),K!==r&&(Dt=L,K=Ac()),L=K,L===r&&(L=G,t.charCodeAt(G)===92?(K=Li,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(El.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(DA)),re!==r?(Dt=L,K=Au(),L=K):(G=L,L=r)):(G=L,L=r),L===r&&(L=G,t.substr(G,2)===Ce?(K=Ce,G+=2):(K=r,ct===0&&Ct(Rt)),K!==r&&(Dt=L,K=fc()),L=K,L===r&&(L=G,t.substr(G,2)===Hi?(K=Hi,G+=2):(K=r,ct===0&&Ct(fu)),K!==r&&(Dt=L,K=Yt()),L=K,L===r&&(L=G,t.substr(G,2)===Cl?(K=Cl,G+=2):(K=r,ct===0&&Ct(PA)),K!==r&&(Dt=L,K=up()),L=K,L===r&&(L=G,t.substr(G,2)===pc?(K=pc,G+=2):(K=r,ct===0&&Ct(SA)),K!==r&&(Dt=L,K=Qn()),L=K,L===r&&(L=G,t.substr(G,2)===hi?(K=hi,G+=2):(K=r,ct===0&&Ct(hc)),K!==r&&(Dt=L,K=bA()),L=K,L===r&&(L=G,t.charCodeAt(G)===92?(K=Li,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(sa.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Ni)),re!==r?(Dt=L,K=Oe(re),L=K):(G=L,L=r)):(G=L,L=r),L===r&&(L=OA()))))))))),L}function OA(){var L,K,re,pe,ze,mt,fr,Cr,yn,oi,Oi,Ig;return L=G,t.charCodeAt(G)===92?(K=Li,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(re=qa(),re!==r?(Dt=L,K=_o(re),L=K):(G=L,L=r)):(G=L,L=r),L===r&&(L=G,t.substr(G,2)===Ze?(K=Ze,G+=2):(K=r,ct===0&&Ct(lo)),K!==r?(re=G,pe=G,ze=qa(),ze!==r?(mt=si(),mt!==r?(ze=[ze,mt],pe=ze):(G=pe,pe=r)):(G=pe,pe=r),pe===r&&(pe=qa()),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=L,K=_o(re),L=K):(G=L,L=r)):(G=L,L=r),L===r&&(L=G,t.substr(G,2)===gc?(K=gc,G+=2):(K=r,ct===0&&Ct(pu)),K!==r?(re=G,pe=G,ze=si(),ze!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(ze=[ze,mt,fr,Cr],pe=ze):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=L,K=_o(re),L=K):(G=L,L=r)):(G=L,L=r),L===r&&(L=G,t.substr(G,2)===ji?(K=ji,G+=2):(K=r,ct===0&&Ct(hu)),K!==r?(re=G,pe=G,ze=si(),ze!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(yn=si(),yn!==r?(oi=si(),oi!==r?(Oi=si(),Oi!==r?(Ig=si(),Ig!==r?(ze=[ze,mt,fr,Cr,yn,oi,Oi,Ig],pe=ze):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=L,K=xA(re),L=K):(G=L,L=r)):(G=L,L=r)))),L}function qa(){var L;return Ua.test(t.charAt(G))?(L=t.charAt(G),G++):(L=r,ct===0&&Ct(dc)),L}function si(){var L;return hs.test(t.charAt(G))?(L=t.charAt(G),G++):(L=r,ct===0&&Ct(Ht)),L}function pa(){var L,K,re,pe,ze;if(L=G,K=[],re=G,t.charCodeAt(G)===92?(pe=Li,G++):(pe=r,ct===0&&Ct(Mn)),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r),re===r&&(re=G,t.substr(G,2)===Ci?(pe=Ci,G+=2):(pe=r,ct===0&&Ct(oa)),pe!==r&&(Dt=re,pe=co()),re=pe,re===r&&(re=G,pe=G,ct++,ze=Rm(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r))),re!==r)for(;re!==r;)K.push(re),re=G,t.charCodeAt(G)===92?(pe=Li,G++):(pe=r,ct===0&&Ct(Mn)),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r),re===r&&(re=G,t.substr(G,2)===Ci?(pe=Ci,G+=2):(pe=r,ct===0&&Ct(oa)),pe!==r&&(Dt=re,pe=co()),re=pe,re===r&&(re=G,pe=G,ct++,ze=Rm(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r)));else K=r;return K!==r&&(Dt=L,K=Ms(K)),L=K,L}function vc(){var L,K,re,pe,ze,mt;if(L=G,t.charCodeAt(G)===45?(K=Us,G++):(K=r,ct===0&&Ct(aa)),K===r&&(t.charCodeAt(G)===43?(K=la,G++):(K=r,ct===0&&Ct(Ho))),K===r&&(K=null),K!==r){if(re=[],Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(je)),pe!==r)for(;pe!==r;)re.push(pe),Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(je));else re=r;if(re!==r)if(t.charCodeAt(G)===46?(pe=wi,G++):(pe=r,ct===0&&Ct(gs)),pe!==r){if(ze=[],Je.test(t.charAt(G))?(mt=t.charAt(G),G++):(mt=r,ct===0&&Ct(je)),mt!==r)for(;mt!==r;)ze.push(mt),Je.test(t.charAt(G))?(mt=t.charAt(G),G++):(mt=r,ct===0&&Ct(je));else ze=r;ze!==r?(Dt=L,K=ds(K,re,ze),L=K):(G=L,L=r)}else G=L,L=r;else G=L,L=r}else G=L,L=r;if(L===r){if(L=G,t.charCodeAt(G)===45?(K=Us,G++):(K=r,ct===0&&Ct(aa)),K===r&&(t.charCodeAt(G)===43?(K=la,G++):(K=r,ct===0&&Ct(Ho))),K===r&&(K=null),K!==r){if(re=[],Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(je)),pe!==r)for(;pe!==r;)re.push(pe),Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(je));else re=r;re!==r?(Dt=L,K=ms(K,re),L=K):(G=L,L=r)}else G=L,L=r;if(L===r&&(L=G,K=Dc(),K!==r&&(Dt=L,K=_s(K)),L=K,L===r&&(L=G,K=Ga(),K!==r&&(Dt=L,K=Un(K)),L=K,L===r)))if(L=G,t.charCodeAt(G)===40?(K=Pe,G++):(K=r,ct===0&&Ct(le)),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();if(re!==r)if(pe=ts(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(t.charCodeAt(G)===41?(mt=ne,G++):(mt=r,ct===0&&Ct(ee)),mt!==r?(Dt=L,K=Pn(pe),L=K):(G=L,L=r)):(G=L,L=r)}else G=L,L=r;else G=L,L=r}else G=L,L=r}return L}function Bl(){var L,K,re,pe,ze,mt,fr,Cr;if(L=G,K=vc(),K!==r){for(re=[],pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===42?(mt=ys,G++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(G)===47?(mt=tt,G++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=pe,ze=nr(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r;for(;pe!==r;){for(re.push(pe),pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===42?(mt=ys,G++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(G)===47?(mt=tt,G++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=pe,ze=nr(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r}re!==r?(Dt=L,K=$(K,re),L=K):(G=L,L=r)}else G=L,L=r;return L}function ts(){var L,K,re,pe,ze,mt,fr,Cr;if(L=G,K=Bl(),K!==r){for(re=[],pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===43?(mt=la,G++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(G)===45?(mt=Us,G++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=pe,ze=ye(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r;for(;pe!==r;){for(re.push(pe),pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===43?(mt=la,G++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(G)===45?(mt=Us,G++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=pe,ze=ye(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r}re!==r?(Dt=L,K=$(K,re),L=K):(G=L,L=r)}else G=L,L=r;return L}function Gr(){var L,K,re,pe,ze,mt;if(L=G,t.substr(G,3)===Ne?(K=Ne,G+=3):(K=r,ct===0&&Ct(pt)),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();if(re!==r)if(pe=ts(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(t.substr(G,2)===ht?(mt=ht,G+=2):(mt=r,ct===0&&Ct(Tt)),mt!==r?(Dt=L,K=er(pe),L=K):(G=L,L=r)):(G=L,L=r)}else G=L,L=r;else G=L,L=r}else G=L,L=r;return L}function Ep(){var L,K,re,pe;return L=G,t.substr(G,2)===$r?(K=$r,G+=2):(K=r,ct===0&&Ct(qi)),K!==r?(re=Cu(),re!==r?(t.charCodeAt(G)===41?(pe=ne,G++):(pe=r,ct===0&&Ct(ee)),pe!==r?(Dt=L,K=es(re),L=K):(G=L,L=r)):(G=L,L=r)):(G=L,L=r),L}function Dc(){var L,K,re,pe,ze,mt;return L=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=Ga(),re!==r?(t.substr(G,2)===kA?(pe=kA,G+=2):(pe=r,ct===0&&Ct(QA)),pe!==r?(ze=LA(),ze!==r?(t.charCodeAt(G)===125?(mt=H,G++):(mt=r,ct===0&&Ct(at)),mt!==r?(Dt=L,K=Ap(re,ze),L=K):(G=L,L=r)):(G=L,L=r)):(G=L,L=r)):(G=L,L=r)):(G=L,L=r),L===r&&(L=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=Ga(),re!==r?(t.substr(G,3)===ig?(pe=ig,G+=3):(pe=r,ct===0&&Ct(gu)),pe!==r?(Dt=L,K=sg(re),L=K):(G=L,L=r)):(G=L,L=r)):(G=L,L=r),L===r&&(L=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=Ga(),re!==r?(t.substr(G,2)===du?(pe=du,G+=2):(pe=r,ct===0&&Ct(uo)),pe!==r?(ze=LA(),ze!==r?(t.charCodeAt(G)===125?(mt=H,G++):(mt=r,ct===0&&Ct(at)),mt!==r?(Dt=L,K=FA(re,ze),L=K):(G=L,L=r)):(G=L,L=r)):(G=L,L=r)):(G=L,L=r)):(G=L,L=r),L===r&&(L=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=Ga(),re!==r?(t.substr(G,3)===mc?(pe=mc,G+=3):(pe=r,ct===0&&Ct(ca)),pe!==r?(Dt=L,K=og(re),L=K):(G=L,L=r)):(G=L,L=r)):(G=L,L=r),L===r&&(L=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(jo)),K!==r?(re=Ga(),re!==r?(t.charCodeAt(G)===125?(pe=H,G++):(pe=r,ct===0&&Ct(at)),pe!==r?(Dt=L,K=yc(re),L=K):(G=L,L=r)):(G=L,L=r)):(G=L,L=r),L===r&&(L=G,t.charCodeAt(G)===36?(K=Sm,G++):(K=r,ct===0&&Ct(ag)),K!==r?(re=Ga(),re!==r?(Dt=L,K=yc(re),L=K):(G=L,L=r)):(G=L,L=r)))))),L}function Cw(){var L,K,re;return L=G,K=Eg(),K!==r?(Dt=G,re=ei(K),re?re=void 0:re=r,re!==r?(Dt=L,K=fp(K),L=K):(G=L,L=r)):(G=L,L=r),L}function Eg(){var L,K,re,pe,ze;if(L=G,K=[],re=G,pe=G,ct++,ze=wg(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r),re!==r)for(;re!==r;)K.push(re),re=G,pe=G,ct++,ze=wg(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r);else K=r;return K!==r&&(Dt=L,K=Ms(K)),L=K,L}function Cg(){var L,K,re;if(L=G,K=[],lg.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(RA)),re!==r)for(;re!==r;)K.push(re),lg.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(RA));else K=r;return K!==r&&(Dt=L,K=Hs()),L=K,L}function Ga(){var L,K,re;if(L=G,K=[],mu.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Ha)),re!==r)for(;re!==r;)K.push(re),mu.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Ha));else K=r;return K!==r&&(Dt=L,K=Hs()),L=K,L}function Rm(){var L;return Gi.test(t.charAt(G))?(L=t.charAt(G),G++):(L=r,ct===0&&Ct(ua)),L}function wg(){var L;return yu.test(t.charAt(G))?(L=t.charAt(G),G++):(L=r,ct===0&&Ct(Es)),L}function Qt(){var L,K;if(L=[],Ec.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,ct===0&&Ct(Cc)),K!==r)for(;K!==r;)L.push(K),Ec.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,ct===0&&Ct(Cc));else L=r;return L}if(Eu=a(),Eu!==r&&G===t.length)return Eu;throw Eu!==r&&G<t.length&&Ct(Ag()),pg(wc,xi<t.length?t.charAt(xi):null,xi<t.length?Ic(xi,xi+1):Ic(xi,xi))}XY.exports={SyntaxError:Gg,parse:A8e}});function LD(t,e={isGlobPattern:()=>!1}){try{return(0,$Y.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function cy(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:o},a)=>`${ND(r)}${o===\";\"?a!==t.length-1||e?\";\":\"\":\" &\"}`).join(\" \")}function ND(t){return`${uy(t.chain)}${t.then?` ${oT(t.then)}`:\"\"}`}function oT(t){return`${t.type} ${ND(t.line)}`}function uy(t){return`${lT(t)}${t.then?` ${aT(t.then)}`:\"\"}`}function aT(t){return`${t.type} ${uy(t.chain)}`}function lT(t){switch(t.type){case\"command\":return`${t.envs.length>0?`${t.envs.map(e=>TD(e)).join(\" \")} `:\"\"}${t.args.map(e=>cT(e)).join(\" \")}`;case\"subshell\":return`(${cy(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Jw(e)).join(\" \")}`:\"\"}`;case\"group\":return`{ ${cy(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Jw(e)).join(\" \")}`:\"\"}`;case\"envs\":return t.envs.map(e=>TD(e)).join(\" \");default:throw new Error(`Unsupported command type:  \"${t.type}\"`)}}function TD(t){return`${t.name}=${t.args[0]?Yg(t.args[0]):\"\"}`}function cT(t){switch(t.type){case\"redirection\":return Jw(t);case\"argument\":return Yg(t);default:throw new Error(`Unsupported argument type: \"${t.type}\"`)}}function Jw(t){return`${t.subtype} ${t.args.map(e=>Yg(e)).join(\" \")}`}function Yg(t){return t.segments.map(e=>uT(e)).join(\"\")}function uT(t){let e=(o,a)=>a?`\"${o}\"`:o,r=o=>o===\"\"?\"''\":o.match(/[()}<>$|&;\"'\\n\\t ]/)?o.match(/['\\t\\p{C}]/u)?o.match(/'/)?`\"${o.replace(/[\"$\\t\\p{C}]/u,p8e)}\"`:`$'${o.replace(/[\\t\\p{C}]/u,tW)}'`:`'${o}'`:o;switch(t.type){case\"text\":return r(t.text);case\"glob\":return t.pattern;case\"shell\":return e(`$(${cy(t.shell)})`,t.quoted);case\"variable\":return e(typeof t.defaultValue>\"u\"?typeof t.alternativeValue>\"u\"?`\\${${t.name}}`:t.alternativeValue.length===0?`\\${${t.name}:+}`:`\\${${t.name}:+${t.alternativeValue.map(o=>Yg(o)).join(\" \")}}`:t.defaultValue.length===0?`\\${${t.name}:-}`:`\\${${t.name}:-${t.defaultValue.map(o=>Yg(o)).join(\" \")}}`,t.quoted);case\"arithmetic\":return`$(( ${OD(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: \"${t.type}\"`)}}function OD(t){let e=a=>{switch(a){case\"addition\":return\"+\";case\"subtraction\":return\"-\";case\"multiplication\":return\"*\";case\"division\":return\"/\";default:throw new Error(`Can't extract operator from arithmetic expression of type \"${a}\"`)}},r=(a,n)=>n?`( ${a} )`:a,o=a=>r(OD(a),![\"number\",\"variable\"].includes(a.type));switch(t.type){case\"number\":return String(t.value);case\"variable\":return t.name;default:return`${o(t.left)} ${e(t.type)} ${o(t.right)}`}}var $Y,eW,f8e,tW,p8e,rW=Et(()=>{$Y=$e(ZY());eW=new Map([[\"\\f\",\"\\\\f\"],[`\n`,\"\\\\n\"],[\"\\r\",\"\\\\r\"],[\"\t\",\"\\\\t\"],[\"\\v\",\"\\\\v\"],[\"\\0\",\"\\\\0\"]]),f8e=new Map([[\"\\\\\",\"\\\\\\\\\"],[\"$\",\"\\\\$\"],['\"','\\\\\"'],...Array.from(eW,([t,e])=>[t,`\"$'${e}'\"`])]),tW=t=>eW.get(t)??`\\\\x${t.charCodeAt(0).toString(16).padStart(2,\"0\")}`,p8e=t=>f8e.get(t)??`\"$'${tW(t)}'\"`});var iW=_((Lbt,nW)=>{\"use strict\";function h8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Wg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Wg)}h8e(Wg,Error);Wg.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function g8e(t,e){e=e!==void 0?e:{};var r={},o={resolution:ke},a=ke,n=\"/\",u=Pe(\"/\",!1),A=function(je,b){return{from:je,descriptor:b}},p=function(je){return{descriptor:je}},h=\"@\",E=Pe(\"@\",!1),I=function(je,b){return{fullName:je,description:b}},v=function(je){return{fullName:je}},x=function(){return Be()},C=/^[^\\/@]/,R=le([\"/\",\"@\"],!0,!1),N=/^[^\\/]/,U=le([\"/\"],!0,!1),J=0,te=0,ae=[{line:1,column:1}],fe=0,ce=[],me=0,he;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function Be(){return t.substring(te,J)}function we(){return At(te,J)}function g(je,b){throw b=b!==void 0?b:At(te,J),Re([Ie(je)],t.substring(te,J),b)}function Ee(je,b){throw b=b!==void 0?b:At(te,J),at(je,b)}function Pe(je,b){return{type:\"literal\",text:je,ignoreCase:b}}function le(je,b,w){return{type:\"class\",parts:je,inverted:b,ignoreCase:w}}function ne(){return{type:\"any\"}}function ee(){return{type:\"end\"}}function Ie(je){return{type:\"other\",description:je}}function Fe(je){var b=ae[je],w;if(b)return b;for(w=je-1;!ae[w];)w--;for(b=ae[w],b={line:b.line,column:b.column};w<je;)t.charCodeAt(w)===10?(b.line++,b.column=1):b.column++,w++;return ae[je]=b,b}function At(je,b){var w=Fe(je),S=Fe(b);return{start:{offset:je,line:w.line,column:w.column},end:{offset:b,line:S.line,column:S.column}}}function H(je){J<fe||(J>fe&&(fe=J,ce=[]),ce.push(je))}function at(je,b){return new Wg(je,null,null,b)}function Re(je,b,w){return new Wg(Wg.buildMessage(je,b),je,b,w)}function ke(){var je,b,w,S;return je=J,b=xe(),b!==r?(t.charCodeAt(J)===47?(w=n,J++):(w=r,me===0&&H(u)),w!==r?(S=xe(),S!==r?(te=je,b=A(b,S),je=b):(J=je,je=r)):(J=je,je=r)):(J=je,je=r),je===r&&(je=J,b=xe(),b!==r&&(te=je,b=p(b)),je=b),je}function xe(){var je,b,w,S;return je=J,b=He(),b!==r?(t.charCodeAt(J)===64?(w=h,J++):(w=r,me===0&&H(E)),w!==r?(S=Je(),S!==r?(te=je,b=I(b,S),je=b):(J=je,je=r)):(J=je,je=r)):(J=je,je=r),je===r&&(je=J,b=He(),b!==r&&(te=je,b=v(b)),je=b),je}function He(){var je,b,w,S,y;return je=J,t.charCodeAt(J)===64?(b=h,J++):(b=r,me===0&&H(E)),b!==r?(w=Te(),w!==r?(t.charCodeAt(J)===47?(S=n,J++):(S=r,me===0&&H(u)),S!==r?(y=Te(),y!==r?(te=je,b=x(),je=b):(J=je,je=r)):(J=je,je=r)):(J=je,je=r)):(J=je,je=r),je===r&&(je=J,b=Te(),b!==r&&(te=je,b=x()),je=b),je}function Te(){var je,b,w;if(je=J,b=[],C.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(R)),w!==r)for(;w!==r;)b.push(w),C.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(R));else b=r;return b!==r&&(te=je,b=x()),je=b,je}function Je(){var je,b,w;if(je=J,b=[],N.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(U)),w!==r)for(;w!==r;)b.push(w),N.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(U));else b=r;return b!==r&&(te=je,b=x()),je=b,je}if(he=a(),he!==r&&J===t.length)return he;throw he!==r&&J<t.length&&H(ee()),Re(ce,fe<t.length?t.charAt(fe):null,fe<t.length?At(fe,fe+1):At(fe,fe))}nW.exports={SyntaxError:Wg,parse:g8e}});function MD(t){let e=t.match(/^\\*{1,2}\\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,sW.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function UD(t){let e=\"\";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+=\"/\"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var sW,oW=Et(()=>{sW=$e(iW())});var Vg=_((Obt,Kg)=>{\"use strict\";function aW(t){return typeof t>\"u\"||t===null}function d8e(t){return typeof t==\"object\"&&t!==null}function m8e(t){return Array.isArray(t)?t:aW(t)?[]:[t]}function y8e(t,e){var r,o,a,n;if(e)for(n=Object.keys(e),r=0,o=n.length;r<o;r+=1)a=n[r],t[a]=e[a];return t}function E8e(t,e){var r=\"\",o;for(o=0;o<e;o+=1)r+=t;return r}function C8e(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}Kg.exports.isNothing=aW;Kg.exports.isObject=d8e;Kg.exports.toArray=m8e;Kg.exports.repeat=E8e;Kg.exports.isNegativeZero=C8e;Kg.exports.extend=y8e});var Ay=_((Mbt,lW)=>{\"use strict\";function zw(t,e){Error.call(this),this.name=\"YAMLException\",this.reason=t,this.mark=e,this.message=(this.reason||\"(unknown reason)\")+(this.mark?\" \"+this.mark.toString():\"\"),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||\"\"}zw.prototype=Object.create(Error.prototype);zw.prototype.constructor=zw;zw.prototype.toString=function(e){var r=this.name+\": \";return r+=this.reason||\"(unknown reason)\",!e&&this.mark&&(r+=\" \"+this.mark.toString()),r};lW.exports=zw});var AW=_((Ubt,uW)=>{\"use strict\";var cW=Vg();function AT(t,e,r,o,a){this.name=t,this.buffer=e,this.position=r,this.line=o,this.column=a}AT.prototype.getSnippet=function(e,r){var o,a,n,u,A;if(!this.buffer)return null;for(e=e||4,r=r||75,o=\"\",a=this.position;a>0&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){o=\" ... \",a+=5;break}for(n=\"\",u=this.position;u<this.buffer.length&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(u))===-1;)if(u+=1,u-this.position>r/2-1){n=\" ... \",u-=5;break}return A=this.buffer.slice(a,u),cW.repeat(\" \",e)+o+A+n+`\n`+cW.repeat(\" \",e+this.position-a+o.length)+\"^\"};AT.prototype.toString=function(e){var r,o=\"\";return this.name&&(o+='in \"'+this.name+'\" '),o+=\"at line \"+(this.line+1)+\", column \"+(this.column+1),e||(r=this.getSnippet(),r&&(o+=`:\n`+r)),o};uW.exports=AT});var os=_((_bt,pW)=>{\"use strict\";var fW=Ay(),w8e=[\"kind\",\"resolve\",\"construct\",\"instanceOf\",\"predicate\",\"represent\",\"defaultStyle\",\"styleAliases\"],I8e=[\"scalar\",\"sequence\",\"mapping\"];function B8e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(o){e[String(o)]=r})}),e}function v8e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(w8e.indexOf(r)===-1)throw new fW('Unknown option \"'+r+'\" is met in definition of \"'+t+'\" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=B8e(e.styleAliases||null),I8e.indexOf(this.kind)===-1)throw new fW('Unknown kind \"'+this.kind+'\" is specified for \"'+t+'\" YAML type.')}pW.exports=v8e});var Jg=_((Hbt,gW)=>{\"use strict\";var hW=Vg(),_D=Ay(),D8e=os();function fT(t,e,r){var o=[];return t.include.forEach(function(a){r=fT(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,u){n.tag===a.tag&&n.kind===a.kind&&o.push(u)}),r.push(a)}),r.filter(function(a,n){return o.indexOf(n)===-1})}function P8e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function o(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e<r;e+=1)arguments[e].forEach(o);return t}function fy(t){this.include=t.include||[],this.implicit=t.implicit||[],this.explicit=t.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&e.loadKind!==\"scalar\")throw new _D(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\")}),this.compiledImplicit=fT(this,\"implicit\",[]),this.compiledExplicit=fT(this,\"explicit\",[]),this.compiledTypeMap=P8e(this.compiledImplicit,this.compiledExplicit)}fy.DEFAULT=null;fy.create=function(){var e,r;switch(arguments.length){case 1:e=fy.DEFAULT,r=arguments[0];break;case 2:e=arguments[0],r=arguments[1];break;default:throw new _D(\"Wrong number of arguments for Schema.create function\")}if(e=hW.toArray(e),r=hW.toArray(r),!e.every(function(o){return o instanceof fy}))throw new _D(\"Specified list of super schemas (or a single Schema object) contains a non-Schema object.\");if(!r.every(function(o){return o instanceof D8e}))throw new _D(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");return new fy({include:e,explicit:r})};gW.exports=fy});var mW=_((jbt,dW)=>{\"use strict\";var S8e=os();dW.exports=new S8e(\"tag:yaml.org,2002:str\",{kind:\"scalar\",construct:function(t){return t!==null?t:\"\"}})});var EW=_((qbt,yW)=>{\"use strict\";var b8e=os();yW.exports=new b8e(\"tag:yaml.org,2002:seq\",{kind:\"sequence\",construct:function(t){return t!==null?t:[]}})});var wW=_((Gbt,CW)=>{\"use strict\";var x8e=os();CW.exports=new x8e(\"tag:yaml.org,2002:map\",{kind:\"mapping\",construct:function(t){return t!==null?t:{}}})});var HD=_((Ybt,IW)=>{\"use strict\";var k8e=Jg();IW.exports=new k8e({explicit:[mW(),EW(),wW()]})});var vW=_((Wbt,BW)=>{\"use strict\";var Q8e=os();function F8e(t){if(t===null)return!0;var e=t.length;return e===1&&t===\"~\"||e===4&&(t===\"null\"||t===\"Null\"||t===\"NULL\")}function R8e(){return null}function T8e(t){return t===null}BW.exports=new Q8e(\"tag:yaml.org,2002:null\",{kind:\"scalar\",resolve:F8e,construct:R8e,predicate:T8e,represent:{canonical:function(){return\"~\"},lowercase:function(){return\"null\"},uppercase:function(){return\"NULL\"},camelcase:function(){return\"Null\"}},defaultStyle:\"lowercase\"})});var PW=_((Kbt,DW)=>{\"use strict\";var L8e=os();function N8e(t){if(t===null)return!1;var e=t.length;return e===4&&(t===\"true\"||t===\"True\"||t===\"TRUE\")||e===5&&(t===\"false\"||t===\"False\"||t===\"FALSE\")}function O8e(t){return t===\"true\"||t===\"True\"||t===\"TRUE\"}function M8e(t){return Object.prototype.toString.call(t)===\"[object Boolean]\"}DW.exports=new L8e(\"tag:yaml.org,2002:bool\",{kind:\"scalar\",resolve:N8e,construct:O8e,predicate:M8e,represent:{lowercase:function(t){return t?\"true\":\"false\"},uppercase:function(t){return t?\"TRUE\":\"FALSE\"},camelcase:function(t){return t?\"True\":\"False\"}},defaultStyle:\"lowercase\"})});var bW=_((Vbt,SW)=>{\"use strict\";var U8e=Vg(),_8e=os();function H8e(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function j8e(t){return 48<=t&&t<=55}function q8e(t){return 48<=t&&t<=57}function G8e(t){if(t===null)return!1;var e=t.length,r=0,o=!1,a;if(!e)return!1;if(a=t[r],(a===\"-\"||a===\"+\")&&(a=t[++r]),a===\"0\"){if(r+1===e)return!0;if(a=t[++r],a===\"b\"){for(r++;r<e;r++)if(a=t[r],a!==\"_\"){if(a!==\"0\"&&a!==\"1\")return!1;o=!0}return o&&a!==\"_\"}if(a===\"x\"){for(r++;r<e;r++)if(a=t[r],a!==\"_\"){if(!H8e(t.charCodeAt(r)))return!1;o=!0}return o&&a!==\"_\"}for(;r<e;r++)if(a=t[r],a!==\"_\"){if(!j8e(t.charCodeAt(r)))return!1;o=!0}return o&&a!==\"_\"}if(a===\"_\")return!1;for(;r<e;r++)if(a=t[r],a!==\"_\"){if(a===\":\")break;if(!q8e(t.charCodeAt(r)))return!1;o=!0}return!o||a===\"_\"?!1:a!==\":\"?!0:/^(:[0-5]?[0-9])+$/.test(t.slice(r))}function Y8e(t){var e=t,r=1,o,a,n=[];return e.indexOf(\"_\")!==-1&&(e=e.replace(/_/g,\"\")),o=e[0],(o===\"-\"||o===\"+\")&&(o===\"-\"&&(r=-1),e=e.slice(1),o=e[0]),e===\"0\"?0:o===\"0\"?e[1]===\"b\"?r*parseInt(e.slice(2),2):e[1]===\"x\"?r*parseInt(e,16):r*parseInt(e,8):e.indexOf(\":\")!==-1?(e.split(\":\").forEach(function(u){n.unshift(parseInt(u,10))}),e=0,a=1,n.forEach(function(u){e+=u*a,a*=60}),r*e):r*parseInt(e,10)}function W8e(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&t%1===0&&!U8e.isNegativeZero(t)}SW.exports=new _8e(\"tag:yaml.org,2002:int\",{kind:\"scalar\",resolve:G8e,construct:Y8e,predicate:W8e,represent:{binary:function(t){return t>=0?\"0b\"+t.toString(2):\"-0b\"+t.toString(2).slice(1)},octal:function(t){return t>=0?\"0\"+t.toString(8):\"-0\"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?\"0x\"+t.toString(16).toUpperCase():\"-0x\"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:\"decimal\",styleAliases:{binary:[2,\"bin\"],octal:[8,\"oct\"],decimal:[10,\"dec\"],hexadecimal:[16,\"hex\"]}})});var QW=_((Jbt,kW)=>{\"use strict\";var xW=Vg(),K8e=os(),V8e=new RegExp(\"^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");function J8e(t){return!(t===null||!V8e.test(t)||t[t.length-1]===\"_\")}function z8e(t){var e,r,o,a;return e=t.replace(/_/g,\"\").toLowerCase(),r=e[0]===\"-\"?-1:1,a=[],\"+-\".indexOf(e[0])>=0&&(e=e.slice(1)),e===\".inf\"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===\".nan\"?NaN:e.indexOf(\":\")>=0?(e.split(\":\").forEach(function(n){a.unshift(parseFloat(n,10))}),e=0,o=1,a.forEach(function(n){e+=n*o,o*=60}),r*e):r*parseFloat(e,10)}var X8e=/^[-+]?[0-9]+e/;function Z8e(t,e){var r;if(isNaN(t))switch(e){case\"lowercase\":return\".nan\";case\"uppercase\":return\".NAN\";case\"camelcase\":return\".NaN\"}else if(Number.POSITIVE_INFINITY===t)switch(e){case\"lowercase\":return\".inf\";case\"uppercase\":return\".INF\";case\"camelcase\":return\".Inf\"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case\"lowercase\":return\"-.inf\";case\"uppercase\":return\"-.INF\";case\"camelcase\":return\"-.Inf\"}else if(xW.isNegativeZero(t))return\"-0.0\";return r=t.toString(10),X8e.test(r)?r.replace(\"e\",\".e\"):r}function $8e(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&(t%1!==0||xW.isNegativeZero(t))}kW.exports=new K8e(\"tag:yaml.org,2002:float\",{kind:\"scalar\",resolve:J8e,construct:z8e,predicate:$8e,represent:Z8e,defaultStyle:\"lowercase\"})});var pT=_((zbt,FW)=>{\"use strict\";var eHe=Jg();FW.exports=new eHe({include:[HD()],implicit:[vW(),PW(),bW(),QW()]})});var hT=_((Xbt,RW)=>{\"use strict\";var tHe=Jg();RW.exports=new tHe({include:[pT()]})});var OW=_((Zbt,NW)=>{\"use strict\";var rHe=os(),TW=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"),LW=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\");function nHe(t){return t===null?!1:TW.exec(t)!==null||LW.exec(t)!==null}function iHe(t){var e,r,o,a,n,u,A,p=0,h=null,E,I,v;if(e=TW.exec(t),e===null&&(e=LW.exec(t)),e===null)throw new Error(\"Date resolve error\");if(r=+e[1],o=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,o,a));if(n=+e[4],u=+e[5],A=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+=\"0\";p=+p}return e[9]&&(E=+e[10],I=+(e[11]||0),h=(E*60+I)*6e4,e[9]===\"-\"&&(h=-h)),v=new Date(Date.UTC(r,o,a,n,u,A,p)),h&&v.setTime(v.getTime()-h),v}function sHe(t){return t.toISOString()}NW.exports=new rHe(\"tag:yaml.org,2002:timestamp\",{kind:\"scalar\",resolve:nHe,construct:iHe,instanceOf:Date,represent:sHe})});var UW=_(($bt,MW)=>{\"use strict\";var oHe=os();function aHe(t){return t===\"<<\"||t===null}MW.exports=new oHe(\"tag:yaml.org,2002:merge\",{kind:\"scalar\",resolve:aHe})});var jW=_((ext,HW)=>{\"use strict\";var zg;try{_W=ve,zg=_W(\"buffer\").Buffer}catch{}var _W,lHe=os(),gT=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\\r`;function cHe(t){if(t===null)return!1;var e,r,o=0,a=t.length,n=gT;for(r=0;r<a;r++)if(e=n.indexOf(t.charAt(r)),!(e>64)){if(e<0)return!1;o+=6}return o%8===0}function uHe(t){var e,r,o=t.replace(/[\\r\\n=]/g,\"\"),a=o.length,n=gT,u=0,A=[];for(e=0;e<a;e++)e%4===0&&e&&(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)),u=u<<6|n.indexOf(o.charAt(e));return r=a%4*6,r===0?(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)):r===18?(A.push(u>>10&255),A.push(u>>2&255)):r===12&&A.push(u>>4&255),zg?zg.from?zg.from(A):new zg(A):A}function AHe(t){var e=\"\",r=0,o,a,n=t.length,u=gT;for(o=0;o<n;o++)o%3===0&&o&&(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]),r=(r<<8)+t[o];return a=n%3,a===0?(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]):a===2?(e+=u[r>>10&63],e+=u[r>>4&63],e+=u[r<<2&63],e+=u[64]):a===1&&(e+=u[r>>2&63],e+=u[r<<4&63],e+=u[64],e+=u[64]),e}function fHe(t){return zg&&zg.isBuffer(t)}HW.exports=new lHe(\"tag:yaml.org,2002:binary\",{kind:\"scalar\",resolve:cHe,construct:uHe,predicate:fHe,represent:AHe})});var GW=_((rxt,qW)=>{\"use strict\";var pHe=os(),hHe=Object.prototype.hasOwnProperty,gHe=Object.prototype.toString;function dHe(t){if(t===null)return!0;var e=[],r,o,a,n,u,A=t;for(r=0,o=A.length;r<o;r+=1){if(a=A[r],u=!1,gHe.call(a)!==\"[object Object]\")return!1;for(n in a)if(hHe.call(a,n))if(!u)u=!0;else return!1;if(!u)return!1;if(e.indexOf(n)===-1)e.push(n);else return!1}return!0}function mHe(t){return t!==null?t:[]}qW.exports=new pHe(\"tag:yaml.org,2002:omap\",{kind:\"sequence\",resolve:dHe,construct:mHe})});var WW=_((nxt,YW)=>{\"use strict\";var yHe=os(),EHe=Object.prototype.toString;function CHe(t){if(t===null)return!0;var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1){if(o=u[e],EHe.call(o)!==\"[object Object]\"||(a=Object.keys(o),a.length!==1))return!1;n[e]=[a[0],o[a[0]]]}return!0}function wHe(t){if(t===null)return[];var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1)o=u[e],a=Object.keys(o),n[e]=[a[0],o[a[0]]];return n}YW.exports=new yHe(\"tag:yaml.org,2002:pairs\",{kind:\"sequence\",resolve:CHe,construct:wHe})});var VW=_((ixt,KW)=>{\"use strict\";var IHe=os(),BHe=Object.prototype.hasOwnProperty;function vHe(t){if(t===null)return!0;var e,r=t;for(e in r)if(BHe.call(r,e)&&r[e]!==null)return!1;return!0}function DHe(t){return t!==null?t:{}}KW.exports=new IHe(\"tag:yaml.org,2002:set\",{kind:\"mapping\",resolve:vHe,construct:DHe})});var py=_((sxt,JW)=>{\"use strict\";var PHe=Jg();JW.exports=new PHe({include:[hT()],implicit:[OW(),UW()],explicit:[jW(),GW(),WW(),VW()]})});var XW=_((oxt,zW)=>{\"use strict\";var SHe=os();function bHe(){return!0}function xHe(){}function kHe(){return\"\"}function QHe(t){return typeof t>\"u\"}zW.exports=new SHe(\"tag:yaml.org,2002:js/undefined\",{kind:\"scalar\",resolve:bHe,construct:xHe,predicate:QHe,represent:kHe})});var $W=_((axt,ZW)=>{\"use strict\";var FHe=os();function RHe(t){if(t===null||t.length===0)return!1;var e=t,r=/\\/([gim]*)$/.exec(t),o=\"\";return!(e[0]===\"/\"&&(r&&(o=r[1]),o.length>3||e[e.length-o.length-1]!==\"/\"))}function THe(t){var e=t,r=/\\/([gim]*)$/.exec(t),o=\"\";return e[0]===\"/\"&&(r&&(o=r[1]),e=e.slice(1,e.length-o.length-1)),new RegExp(e,o)}function LHe(t){var e=\"/\"+t.source+\"/\";return t.global&&(e+=\"g\"),t.multiline&&(e+=\"m\"),t.ignoreCase&&(e+=\"i\"),e}function NHe(t){return Object.prototype.toString.call(t)===\"[object RegExp]\"}ZW.exports=new FHe(\"tag:yaml.org,2002:js/regexp\",{kind:\"scalar\",resolve:RHe,construct:THe,predicate:NHe,represent:LHe})});var rK=_((lxt,tK)=>{\"use strict\";var jD;try{eK=ve,jD=eK(\"esprima\")}catch{typeof window<\"u\"&&(jD=window.esprima)}var eK,OHe=os();function MHe(t){if(t===null)return!1;try{var e=\"(\"+t+\")\",r=jD.parse(e,{range:!0});return!(r.type!==\"Program\"||r.body.length!==1||r.body[0].type!==\"ExpressionStatement\"||r.body[0].expression.type!==\"ArrowFunctionExpression\"&&r.body[0].expression.type!==\"FunctionExpression\")}catch{return!1}}function UHe(t){var e=\"(\"+t+\")\",r=jD.parse(e,{range:!0}),o=[],a;if(r.type!==\"Program\"||r.body.length!==1||r.body[0].type!==\"ExpressionStatement\"||r.body[0].expression.type!==\"ArrowFunctionExpression\"&&r.body[0].expression.type!==\"FunctionExpression\")throw new Error(\"Failed to resolve function\");return r.body[0].expression.params.forEach(function(n){o.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type===\"BlockStatement\"?new Function(o,e.slice(a[0]+1,a[1]-1)):new Function(o,\"return \"+e.slice(a[0],a[1]))}function _He(t){return t.toString()}function HHe(t){return Object.prototype.toString.call(t)===\"[object Function]\"}tK.exports=new OHe(\"tag:yaml.org,2002:js/function\",{kind:\"scalar\",resolve:MHe,construct:UHe,predicate:HHe,represent:_He})});var Xw=_((uxt,iK)=>{\"use strict\";var nK=Jg();iK.exports=nK.DEFAULT=new nK({include:[py()],explicit:[XW(),$W(),rK()]})});var BK=_((Axt,Zw)=>{\"use strict\";var yf=Vg(),AK=Ay(),jHe=AW(),fK=py(),qHe=Xw(),Yp=Object.prototype.hasOwnProperty,qD=1,pK=2,hK=3,GD=4,dT=1,GHe=2,sK=3,YHe=/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,WHe=/[\\x85\\u2028\\u2029]/,KHe=/[,\\[\\]\\{\\}]/,gK=/^(?:!|!!|![a-z\\-]+!)$/i,dK=/^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;function oK(t){return Object.prototype.toString.call(t)}function Hu(t){return t===10||t===13}function Zg(t){return t===9||t===32}function Ia(t){return t===9||t===32||t===10||t===13}function hy(t){return t===44||t===91||t===93||t===123||t===125}function VHe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function JHe(t){return t===120?2:t===117?4:t===85?8:0}function zHe(t){return 48<=t&&t<=57?t-48:-1}function aK(t){return t===48?\"\\0\":t===97?\"\\x07\":t===98?\"\\b\":t===116||t===9?\"\t\":t===110?`\n`:t===118?\"\\v\":t===102?\"\\f\":t===114?\"\\r\":t===101?\"\\x1B\":t===32?\" \":t===34?'\"':t===47?\"/\":t===92?\"\\\\\":t===78?\"\\x85\":t===95?\"\\xA0\":t===76?\"\\u2028\":t===80?\"\\u2029\":\"\"}function XHe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var mK=new Array(256),yK=new Array(256);for(Xg=0;Xg<256;Xg++)mK[Xg]=aK(Xg)?1:0,yK[Xg]=aK(Xg);var Xg;function ZHe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||qHe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function EK(t,e){return new AK(e,new jHe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function Sr(t,e){throw EK(t,e)}function YD(t,e){t.onWarning&&t.onWarning.call(null,EK(t,e))}var lK={YAML:function(e,r,o){var a,n,u;e.version!==null&&Sr(e,\"duplication of %YAML directive\"),o.length!==1&&Sr(e,\"YAML directive accepts exactly one argument\"),a=/^([0-9]+)\\.([0-9]+)$/.exec(o[0]),a===null&&Sr(e,\"ill-formed argument of the YAML directive\"),n=parseInt(a[1],10),u=parseInt(a[2],10),n!==1&&Sr(e,\"unacceptable YAML version of the document\"),e.version=o[0],e.checkLineBreaks=u<2,u!==1&&u!==2&&YD(e,\"unsupported YAML version of the document\")},TAG:function(e,r,o){var a,n;o.length!==2&&Sr(e,\"TAG directive accepts exactly two arguments\"),a=o[0],n=o[1],gK.test(a)||Sr(e,\"ill-formed tag handle (first argument) of the TAG directive\"),Yp.call(e.tagMap,a)&&Sr(e,'there is a previously declared suffix for \"'+a+'\" tag handle'),dK.test(n)||Sr(e,\"ill-formed tag prefix (second argument) of the TAG directive\"),e.tagMap[a]=n}};function Gp(t,e,r,o){var a,n,u,A;if(e<r){if(A=t.input.slice(e,r),o)for(a=0,n=A.length;a<n;a+=1)u=A.charCodeAt(a),u===9||32<=u&&u<=1114111||Sr(t,\"expected valid JSON character\");else YHe.test(A)&&Sr(t,\"the stream contains non-printable characters\");t.result+=A}}function cK(t,e,r,o){var a,n,u,A;for(yf.isObject(r)||Sr(t,\"cannot merge mappings; the provided source object is unacceptable\"),a=Object.keys(r),u=0,A=a.length;u<A;u+=1)n=a[u],Yp.call(e,n)||(e[n]=r[n],o[n]=!0)}function gy(t,e,r,o,a,n,u,A){var p,h;if(Array.isArray(a))for(a=Array.prototype.slice.call(a),p=0,h=a.length;p<h;p+=1)Array.isArray(a[p])&&Sr(t,\"nested arrays are not supported inside keys\"),typeof a==\"object\"&&oK(a[p])===\"[object Object]\"&&(a[p]=\"[object Object]\");if(typeof a==\"object\"&&oK(a)===\"[object Object]\"&&(a=\"[object Object]\"),a=String(a),e===null&&(e={}),o===\"tag:yaml.org,2002:merge\")if(Array.isArray(n))for(p=0,h=n.length;p<h;p+=1)cK(t,e,n[p],r);else cK(t,e,n,r);else!t.json&&!Yp.call(r,a)&&Yp.call(e,a)&&(t.line=u||t.line,t.position=A||t.position,Sr(t,\"duplicated mapping key\")),e[a]=n,delete r[a];return e}function mT(t){var e;e=t.input.charCodeAt(t.position),e===10?t.position++:e===13?(t.position++,t.input.charCodeAt(t.position)===10&&t.position++):Sr(t,\"a line break is expected\"),t.line+=1,t.lineStart=t.position}function Wi(t,e,r){for(var o=0,a=t.input.charCodeAt(t.position);a!==0;){for(;Zg(a);)a=t.input.charCodeAt(++t.position);if(e&&a===35)do a=t.input.charCodeAt(++t.position);while(a!==10&&a!==13&&a!==0);if(Hu(a))for(mT(t),a=t.input.charCodeAt(t.position),o++,t.lineIndent=0;a===32;)t.lineIndent++,a=t.input.charCodeAt(++t.position);else break}return r!==-1&&o!==0&&t.lineIndent<r&&YD(t,\"deficient indentation\"),o}function WD(t){var e=t.position,r;return r=t.input.charCodeAt(e),!!((r===45||r===46)&&r===t.input.charCodeAt(e+1)&&r===t.input.charCodeAt(e+2)&&(e+=3,r=t.input.charCodeAt(e),r===0||Ia(r)))}function yT(t,e){e===1?t.result+=\" \":e>1&&(t.result+=yf.repeat(`\n`,e-1))}function $He(t,e,r){var o,a,n,u,A,p,h,E,I=t.kind,v=t.result,x;if(x=t.input.charCodeAt(t.position),Ia(x)||hy(x)||x===35||x===38||x===42||x===33||x===124||x===62||x===39||x===34||x===37||x===64||x===96||(x===63||x===45)&&(a=t.input.charCodeAt(t.position+1),Ia(a)||r&&hy(a)))return!1;for(t.kind=\"scalar\",t.result=\"\",n=u=t.position,A=!1;x!==0;){if(x===58){if(a=t.input.charCodeAt(t.position+1),Ia(a)||r&&hy(a))break}else if(x===35){if(o=t.input.charCodeAt(t.position-1),Ia(o))break}else{if(t.position===t.lineStart&&WD(t)||r&&hy(x))break;if(Hu(x))if(p=t.line,h=t.lineStart,E=t.lineIndent,Wi(t,!1,-1),t.lineIndent>=e){A=!0,x=t.input.charCodeAt(t.position);continue}else{t.position=u,t.line=p,t.lineStart=h,t.lineIndent=E;break}}A&&(Gp(t,n,u,!1),yT(t,t.line-p),n=u=t.position,A=!1),Zg(x)||(u=t.position+1),x=t.input.charCodeAt(++t.position)}return Gp(t,n,u,!1),t.result?!0:(t.kind=I,t.result=v,!1)}function e6e(t,e){var r,o,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,o=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(Gp(t,o,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)o=t.position,t.position++,a=t.position;else return!0;else Hu(r)?(Gp(t,o,a,!0),yT(t,Wi(t,!1,e)),o=a=t.position):t.position===t.lineStart&&WD(t)?Sr(t,\"unexpected end of the document within a single quoted scalar\"):(t.position++,a=t.position);Sr(t,\"unexpected end of the stream within a single quoted scalar\")}function t6e(t,e){var r,o,a,n,u,A;if(A=t.input.charCodeAt(t.position),A!==34)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,r=o=t.position;(A=t.input.charCodeAt(t.position))!==0;){if(A===34)return Gp(t,r,t.position,!0),t.position++,!0;if(A===92){if(Gp(t,r,t.position,!0),A=t.input.charCodeAt(++t.position),Hu(A))Wi(t,!1,e);else if(A<256&&mK[A])t.result+=yK[A],t.position++;else if((u=JHe(A))>0){for(a=u,n=0;a>0;a--)A=t.input.charCodeAt(++t.position),(u=VHe(A))>=0?n=(n<<4)+u:Sr(t,\"expected hexadecimal character\");t.result+=XHe(n),t.position++}else Sr(t,\"unknown escape sequence\");r=o=t.position}else Hu(A)?(Gp(t,r,o,!0),yT(t,Wi(t,!1,e)),r=o=t.position):t.position===t.lineStart&&WD(t)?Sr(t,\"unexpected end of the document within a double quoted scalar\"):(t.position++,o=t.position)}Sr(t,\"unexpected end of the stream within a double quoted scalar\")}function r6e(t,e){var r=!0,o,a=t.tag,n,u=t.anchor,A,p,h,E,I,v={},x,C,R,N;if(N=t.input.charCodeAt(t.position),N===91)p=93,I=!1,n=[];else if(N===123)p=125,I=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),N=t.input.charCodeAt(++t.position);N!==0;){if(Wi(t,!0,e),N=t.input.charCodeAt(t.position),N===p)return t.position++,t.tag=a,t.anchor=u,t.kind=I?\"mapping\":\"sequence\",t.result=n,!0;r||Sr(t,\"missed comma between flow collection entries\"),C=x=R=null,h=E=!1,N===63&&(A=t.input.charCodeAt(t.position+1),Ia(A)&&(h=E=!0,t.position++,Wi(t,!0,e))),o=t.line,dy(t,e,qD,!1,!0),C=t.tag,x=t.result,Wi(t,!0,e),N=t.input.charCodeAt(t.position),(E||t.line===o)&&N===58&&(h=!0,N=t.input.charCodeAt(++t.position),Wi(t,!0,e),dy(t,e,qD,!1,!0),R=t.result),I?gy(t,n,v,C,x,R):h?n.push(gy(t,null,v,C,x,R)):n.push(x),Wi(t,!0,e),N=t.input.charCodeAt(t.position),N===44?(r=!0,N=t.input.charCodeAt(++t.position)):r=!1}Sr(t,\"unexpected end of the stream within a flow collection\")}function n6e(t,e){var r,o,a=dT,n=!1,u=!1,A=e,p=0,h=!1,E,I;if(I=t.input.charCodeAt(t.position),I===124)o=!1;else if(I===62)o=!0;else return!1;for(t.kind=\"scalar\",t.result=\"\";I!==0;)if(I=t.input.charCodeAt(++t.position),I===43||I===45)dT===a?a=I===43?sK:GHe:Sr(t,\"repeat of a chomping mode identifier\");else if((E=zHe(I))>=0)E===0?Sr(t,\"bad explicit indentation width of a block scalar; it cannot be less than one\"):u?Sr(t,\"repeat of an indentation width identifier\"):(A=e+E-1,u=!0);else break;if(Zg(I)){do I=t.input.charCodeAt(++t.position);while(Zg(I));if(I===35)do I=t.input.charCodeAt(++t.position);while(!Hu(I)&&I!==0)}for(;I!==0;){for(mT(t),t.lineIndent=0,I=t.input.charCodeAt(t.position);(!u||t.lineIndent<A)&&I===32;)t.lineIndent++,I=t.input.charCodeAt(++t.position);if(!u&&t.lineIndent>A&&(A=t.lineIndent),Hu(I)){p++;continue}if(t.lineIndent<A){a===sK?t.result+=yf.repeat(`\n`,n?1+p:p):a===dT&&n&&(t.result+=`\n`);break}for(o?Zg(I)?(h=!0,t.result+=yf.repeat(`\n`,n?1+p:p)):h?(h=!1,t.result+=yf.repeat(`\n`,p+1)):p===0?n&&(t.result+=\" \"):t.result+=yf.repeat(`\n`,p):t.result+=yf.repeat(`\n`,n?1+p:p),n=!0,u=!0,p=0,r=t.position;!Hu(I)&&I!==0;)I=t.input.charCodeAt(++t.position);Gp(t,r,t.position,!1)}return!0}function uK(t,e){var r,o=t.tag,a=t.anchor,n=[],u,A=!1,p;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),p=t.input.charCodeAt(t.position);p!==0&&!(p!==45||(u=t.input.charCodeAt(t.position+1),!Ia(u)));){if(A=!0,t.position++,Wi(t,!0,-1)&&t.lineIndent<=e){n.push(null),p=t.input.charCodeAt(t.position);continue}if(r=t.line,dy(t,e,hK,!1,!0),n.push(t.result),Wi(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&p!==0)Sr(t,\"bad indentation of a sequence entry\");else if(t.lineIndent<e)break}return A?(t.tag=o,t.anchor=a,t.kind=\"sequence\",t.result=n,!0):!1}function i6e(t,e,r){var o,a,n,u,A=t.tag,p=t.anchor,h={},E={},I=null,v=null,x=null,C=!1,R=!1,N;for(t.anchor!==null&&(t.anchorMap[t.anchor]=h),N=t.input.charCodeAt(t.position);N!==0;){if(o=t.input.charCodeAt(t.position+1),n=t.line,u=t.position,(N===63||N===58)&&Ia(o))N===63?(C&&(gy(t,h,E,I,v,null),I=v=x=null),R=!0,C=!0,a=!0):C?(C=!1,a=!0):Sr(t,\"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\"),t.position+=1,N=o;else if(dy(t,r,pK,!1,!0))if(t.line===n){for(N=t.input.charCodeAt(t.position);Zg(N);)N=t.input.charCodeAt(++t.position);if(N===58)N=t.input.charCodeAt(++t.position),Ia(N)||Sr(t,\"a whitespace character is expected after the key-value separator within a block mapping\"),C&&(gy(t,h,E,I,v,null),I=v=x=null),R=!0,C=!1,a=!1,I=t.tag,v=t.result;else if(R)Sr(t,\"can not read an implicit mapping pair; a colon is missed\");else return t.tag=A,t.anchor=p,!0}else if(R)Sr(t,\"can not read a block mapping entry; a multiline key may not be an implicit key\");else return t.tag=A,t.anchor=p,!0;else break;if((t.line===n||t.lineIndent>e)&&(dy(t,e,GD,!0,a)&&(C?v=t.result:x=t.result),C||(gy(t,h,E,I,v,x,n,u),I=v=x=null),Wi(t,!0,-1),N=t.input.charCodeAt(t.position)),t.lineIndent>e&&N!==0)Sr(t,\"bad indentation of a mapping entry\");else if(t.lineIndent<e)break}return C&&gy(t,h,E,I,v,null),R&&(t.tag=A,t.anchor=p,t.kind=\"mapping\",t.result=h),R}function s6e(t){var e,r=!1,o=!1,a,n,u;if(u=t.input.charCodeAt(t.position),u!==33)return!1;if(t.tag!==null&&Sr(t,\"duplication of a tag property\"),u=t.input.charCodeAt(++t.position),u===60?(r=!0,u=t.input.charCodeAt(++t.position)):u===33?(o=!0,a=\"!!\",u=t.input.charCodeAt(++t.position)):a=\"!\",e=t.position,r){do u=t.input.charCodeAt(++t.position);while(u!==0&&u!==62);t.position<t.length?(n=t.input.slice(e,t.position),u=t.input.charCodeAt(++t.position)):Sr(t,\"unexpected end of the stream within a verbatim tag\")}else{for(;u!==0&&!Ia(u);)u===33&&(o?Sr(t,\"tag suffix cannot contain exclamation marks\"):(a=t.input.slice(e-1,t.position+1),gK.test(a)||Sr(t,\"named tag handle cannot contain such characters\"),o=!0,e=t.position+1)),u=t.input.charCodeAt(++t.position);n=t.input.slice(e,t.position),KHe.test(n)&&Sr(t,\"tag suffix cannot contain flow indicator characters\")}return n&&!dK.test(n)&&Sr(t,\"tag name cannot contain such characters: \"+n),r?t.tag=n:Yp.call(t.tagMap,a)?t.tag=t.tagMap[a]+n:a===\"!\"?t.tag=\"!\"+n:a===\"!!\"?t.tag=\"tag:yaml.org,2002:\"+n:Sr(t,'undeclared tag handle \"'+a+'\"'),!0}function o6e(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)return!1;for(t.anchor!==null&&Sr(t,\"duplication of an anchor property\"),r=t.input.charCodeAt(++t.position),e=t.position;r!==0&&!Ia(r)&&!hy(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&Sr(t,\"name of an anchor node must contain at least one character\"),t.anchor=t.input.slice(e,t.position),!0}function a6e(t){var e,r,o;if(o=t.input.charCodeAt(t.position),o!==42)return!1;for(o=t.input.charCodeAt(++t.position),e=t.position;o!==0&&!Ia(o)&&!hy(o);)o=t.input.charCodeAt(++t.position);return t.position===e&&Sr(t,\"name of an alias node must contain at least one character\"),r=t.input.slice(e,t.position),Yp.call(t.anchorMap,r)||Sr(t,'unidentified alias \"'+r+'\"'),t.result=t.anchorMap[r],Wi(t,!0,-1),!0}function dy(t,e,r,o,a){var n,u,A,p=1,h=!1,E=!1,I,v,x,C,R;if(t.listener!==null&&t.listener(\"open\",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,n=u=A=GD===r||hK===r,o&&Wi(t,!0,-1)&&(h=!0,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)),p===1)for(;s6e(t)||o6e(t);)Wi(t,!0,-1)?(h=!0,A=n,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)):A=!1;if(A&&(A=h||a),(p===1||GD===r)&&(qD===r||pK===r?C=e:C=e+1,R=t.position-t.lineStart,p===1?A&&(uK(t,R)||i6e(t,R,C))||r6e(t,C)?E=!0:(u&&n6e(t,C)||e6e(t,C)||t6e(t,C)?E=!0:a6e(t)?(E=!0,(t.tag!==null||t.anchor!==null)&&Sr(t,\"alias node should not have any properties\")):$He(t,C,qD===r)&&(E=!0,t.tag===null&&(t.tag=\"?\")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):p===0&&(E=A&&uK(t,R))),t.tag!==null&&t.tag!==\"!\")if(t.tag===\"?\"){for(t.result!==null&&t.kind!==\"scalar\"&&Sr(t,'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"'+t.kind+'\"'),I=0,v=t.implicitTypes.length;I<v;I+=1)if(x=t.implicitTypes[I],x.resolve(t.result)){t.result=x.construct(t.result),t.tag=x.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else Yp.call(t.typeMap[t.kind||\"fallback\"],t.tag)?(x=t.typeMap[t.kind||\"fallback\"][t.tag],t.result!==null&&x.kind!==t.kind&&Sr(t,\"unacceptable node kind for !<\"+t.tag+'> tag; it should be \"'+x.kind+'\", not \"'+t.kind+'\"'),x.resolve(t.result)?(t.result=x.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Sr(t,\"cannot resolve a node with !<\"+t.tag+\"> explicit tag\")):Sr(t,\"unknown tag !<\"+t.tag+\">\");return t.listener!==null&&t.listener(\"close\",t),t.tag!==null||t.anchor!==null||E}function l6e(t){var e=t.position,r,o,a,n=!1,u;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(u=t.input.charCodeAt(t.position))!==0&&(Wi(t,!0,-1),u=t.input.charCodeAt(t.position),!(t.lineIndent>0||u!==37));){for(n=!0,u=t.input.charCodeAt(++t.position),r=t.position;u!==0&&!Ia(u);)u=t.input.charCodeAt(++t.position);for(o=t.input.slice(r,t.position),a=[],o.length<1&&Sr(t,\"directive name must not be less than one character in length\");u!==0;){for(;Zg(u);)u=t.input.charCodeAt(++t.position);if(u===35){do u=t.input.charCodeAt(++t.position);while(u!==0&&!Hu(u));break}if(Hu(u))break;for(r=t.position;u!==0&&!Ia(u);)u=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}u!==0&&mT(t),Yp.call(lK,o)?lK[o](t,o,a):YD(t,'unknown document directive \"'+o+'\"')}if(Wi(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Wi(t,!0,-1)):n&&Sr(t,\"directives end mark is expected\"),dy(t,t.lineIndent-1,GD,!1,!0),Wi(t,!0,-1),t.checkLineBreaks&&WHe.test(t.input.slice(e,t.position))&&YD(t,\"non-ASCII line breaks are interpreted as content\"),t.documents.push(t.result),t.position===t.lineStart&&WD(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Wi(t,!0,-1));return}if(t.position<t.length-1)Sr(t,\"end of the stream or a document separator is expected\");else return}function CK(t,e){t=String(t),e=e||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=`\n`),t.charCodeAt(0)===65279&&(t=t.slice(1)));var r=new ZHe(t,e),o=t.indexOf(\"\\0\");for(o!==-1&&(r.position=o,Sr(r,\"null byte is not allowed in input\")),r.input+=\"\\0\";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)l6e(r);return r.documents}function wK(t,e,r){e!==null&&typeof e==\"object\"&&typeof r>\"u\"&&(r=e,e=null);var o=CK(t,r);if(typeof e!=\"function\")return o;for(var a=0,n=o.length;a<n;a+=1)e(o[a])}function IK(t,e){var r=CK(t,e);if(r.length!==0){if(r.length===1)return r[0];throw new AK(\"expected a single document in the stream, but found more\")}}function c6e(t,e,r){return typeof e==\"object\"&&e!==null&&typeof r>\"u\"&&(r=e,e=null),wK(t,e,yf.extend({schema:fK},r))}function u6e(t,e){return IK(t,yf.extend({schema:fK},e))}Zw.exports.loadAll=wK;Zw.exports.load=IK;Zw.exports.safeLoadAll=c6e;Zw.exports.safeLoad=u6e});var WK=_((fxt,IT)=>{\"use strict\";var eI=Vg(),tI=Ay(),A6e=Xw(),f6e=py(),QK=Object.prototype.toString,FK=Object.prototype.hasOwnProperty,p6e=9,$w=10,h6e=13,g6e=32,d6e=33,m6e=34,RK=35,y6e=37,E6e=38,C6e=39,w6e=42,TK=44,I6e=45,LK=58,B6e=61,v6e=62,D6e=63,P6e=64,NK=91,OK=93,S6e=96,MK=123,b6e=124,UK=125,vo={};vo[0]=\"\\\\0\";vo[7]=\"\\\\a\";vo[8]=\"\\\\b\";vo[9]=\"\\\\t\";vo[10]=\"\\\\n\";vo[11]=\"\\\\v\";vo[12]=\"\\\\f\";vo[13]=\"\\\\r\";vo[27]=\"\\\\e\";vo[34]='\\\\\"';vo[92]=\"\\\\\\\\\";vo[133]=\"\\\\N\";vo[160]=\"\\\\_\";vo[8232]=\"\\\\L\";vo[8233]=\"\\\\P\";var x6e=[\"y\",\"Y\",\"yes\",\"Yes\",\"YES\",\"on\",\"On\",\"ON\",\"n\",\"N\",\"no\",\"No\",\"NO\",\"off\",\"Off\",\"OFF\"];function k6e(t,e){var r,o,a,n,u,A,p;if(e===null)return{};for(r={},o=Object.keys(e),a=0,n=o.length;a<n;a+=1)u=o[a],A=String(e[u]),u.slice(0,2)===\"!!\"&&(u=\"tag:yaml.org,2002:\"+u.slice(2)),p=t.compiledTypeMap.fallback[u],p&&FK.call(p.styleAliases,A)&&(A=p.styleAliases[A]),r[u]=A;return r}function vK(t){var e,r,o;if(e=t.toString(16).toUpperCase(),t<=255)r=\"x\",o=2;else if(t<=65535)r=\"u\",o=4;else if(t<=4294967295)r=\"U\",o=8;else throw new tI(\"code point within a string may not be greater than 0xFFFFFFFF\");return\"\\\\\"+r+eI.repeat(\"0\",o-e.length)+e}function Q6e(t){this.schema=t.schema||A6e,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=eI.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=k6e(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result=\"\",this.duplicates=[],this.usedDuplicates=null}function DK(t,e){for(var r=eI.repeat(\" \",e),o=0,a=-1,n=\"\",u,A=t.length;o<A;)a=t.indexOf(`\n`,o),a===-1?(u=t.slice(o),o=A):(u=t.slice(o,a+1),o=a+1),u.length&&u!==`\n`&&(n+=r),n+=u;return n}function ET(t,e){return`\n`+eI.repeat(\" \",t.indent*e)}function F6e(t,e){var r,o,a;for(r=0,o=t.implicitTypes.length;r<o;r+=1)if(a=t.implicitTypes[r],a.resolve(e))return!0;return!1}function wT(t){return t===g6e||t===p6e}function my(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==65279||65536<=t&&t<=1114111}function R6e(t){return my(t)&&!wT(t)&&t!==65279&&t!==h6e&&t!==$w}function PK(t,e){return my(t)&&t!==65279&&t!==TK&&t!==NK&&t!==OK&&t!==MK&&t!==UK&&t!==LK&&(t!==RK||e&&R6e(e))}function T6e(t){return my(t)&&t!==65279&&!wT(t)&&t!==I6e&&t!==D6e&&t!==LK&&t!==TK&&t!==NK&&t!==OK&&t!==MK&&t!==UK&&t!==RK&&t!==E6e&&t!==w6e&&t!==d6e&&t!==b6e&&t!==B6e&&t!==v6e&&t!==C6e&&t!==m6e&&t!==y6e&&t!==P6e&&t!==S6e}function _K(t){var e=/^\\n* /;return e.test(t)}var HK=1,jK=2,qK=3,GK=4,KD=5;function L6e(t,e,r,o,a){var n,u,A,p=!1,h=!1,E=o!==-1,I=-1,v=T6e(t.charCodeAt(0))&&!wT(t.charCodeAt(t.length-1));if(e)for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),!my(u))return KD;A=n>0?t.charCodeAt(n-1):null,v=v&&PK(u,A)}else{for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),u===$w)p=!0,E&&(h=h||n-I-1>o&&t[I+1]!==\" \",I=n);else if(!my(u))return KD;A=n>0?t.charCodeAt(n-1):null,v=v&&PK(u,A)}h=h||E&&n-I-1>o&&t[I+1]!==\" \"}return!p&&!h?v&&!a(t)?HK:jK:r>9&&_K(t)?KD:h?GK:qK}function N6e(t,e,r,o){t.dump=function(){if(e.length===0)return\"''\";if(!t.noCompatMode&&x6e.indexOf(e)!==-1)return\"'\"+e+\"'\";var a=t.indent*Math.max(1,r),n=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),u=o||t.flowLevel>-1&&r>=t.flowLevel;function A(p){return F6e(t,p)}switch(L6e(e,u,t.indent,n,A)){case HK:return e;case jK:return\"'\"+e.replace(/'/g,\"''\")+\"'\";case qK:return\"|\"+SK(e,t.indent)+bK(DK(e,a));case GK:return\">\"+SK(e,t.indent)+bK(DK(O6e(e,n),a));case KD:return'\"'+M6e(e,n)+'\"';default:throw new tI(\"impossible error: invalid scalar style\")}}()}function SK(t,e){var r=_K(t)?String(e):\"\",o=t[t.length-1]===`\n`,a=o&&(t[t.length-2]===`\n`||t===`\n`),n=a?\"+\":o?\"\":\"-\";return r+n+`\n`}function bK(t){return t[t.length-1]===`\n`?t.slice(0,-1):t}function O6e(t,e){for(var r=/(\\n+)([^\\n]*)/g,o=function(){var h=t.indexOf(`\n`);return h=h!==-1?h:t.length,r.lastIndex=h,xK(t.slice(0,h),e)}(),a=t[0]===`\n`||t[0]===\" \",n,u;u=r.exec(t);){var A=u[1],p=u[2];n=p[0]===\" \",o+=A+(!a&&!n&&p!==\"\"?`\n`:\"\")+xK(p,e),a=n}return o}function xK(t,e){if(t===\"\"||t[0]===\" \")return t;for(var r=/ [^ ]/g,o,a=0,n,u=0,A=0,p=\"\";o=r.exec(t);)A=o.index,A-a>e&&(n=u>a?u:A,p+=`\n`+t.slice(a,n),a=n+1),u=A;return p+=`\n`,t.length-a>e&&u>a?p+=t.slice(a,u)+`\n`+t.slice(u+1):p+=t.slice(a),p.slice(1)}function M6e(t){for(var e=\"\",r,o,a,n=0;n<t.length;n++){if(r=t.charCodeAt(n),r>=55296&&r<=56319&&(o=t.charCodeAt(n+1),o>=56320&&o<=57343)){e+=vK((r-55296)*1024+o-56320+65536),n++;continue}a=vo[r],e+=!a&&my(r)?t[n]:a||vK(r)}return e}function U6e(t,e,r){var o=\"\",a=t.tag,n,u;for(n=0,u=r.length;n<u;n+=1)$g(t,e,r[n],!1,!1)&&(n!==0&&(o+=\",\"+(t.condenseFlow?\"\":\" \")),o+=t.dump);t.tag=a,t.dump=\"[\"+o+\"]\"}function _6e(t,e,r,o){var a=\"\",n=t.tag,u,A;for(u=0,A=r.length;u<A;u+=1)$g(t,e+1,r[u],!0,!0)&&((!o||u!==0)&&(a+=ET(t,e)),t.dump&&$w===t.dump.charCodeAt(0)?a+=\"-\":a+=\"- \",a+=t.dump);t.tag=n,t.dump=a||\"[]\"}function H6e(t,e,r){var o=\"\",a=t.tag,n=Object.keys(r),u,A,p,h,E;for(u=0,A=n.length;u<A;u+=1)E=\"\",u!==0&&(E+=\", \"),t.condenseFlow&&(E+='\"'),p=n[u],h=r[p],$g(t,e,p,!1,!1)&&(t.dump.length>1024&&(E+=\"? \"),E+=t.dump+(t.condenseFlow?'\"':\"\")+\":\"+(t.condenseFlow?\"\":\" \"),$g(t,e,h,!1,!1)&&(E+=t.dump,o+=E));t.tag=a,t.dump=\"{\"+o+\"}\"}function j6e(t,e,r,o){var a=\"\",n=t.tag,u=Object.keys(r),A,p,h,E,I,v;if(t.sortKeys===!0)u.sort();else if(typeof t.sortKeys==\"function\")u.sort(t.sortKeys);else if(t.sortKeys)throw new tI(\"sortKeys must be a boolean or a function\");for(A=0,p=u.length;A<p;A+=1)v=\"\",(!o||A!==0)&&(v+=ET(t,e)),h=u[A],E=r[h],$g(t,e+1,h,!0,!0,!0)&&(I=t.tag!==null&&t.tag!==\"?\"||t.dump&&t.dump.length>1024,I&&(t.dump&&$w===t.dump.charCodeAt(0)?v+=\"?\":v+=\"? \"),v+=t.dump,I&&(v+=ET(t,e)),$g(t,e+1,E,!0,I)&&(t.dump&&$w===t.dump.charCodeAt(0)?v+=\":\":v+=\": \",v+=t.dump,a+=v));t.tag=n,t.dump=a||\"{}\"}function kK(t,e,r){var o,a,n,u,A,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,u=a.length;n<u;n+=1)if(A=a[n],(A.instanceOf||A.predicate)&&(!A.instanceOf||typeof e==\"object\"&&e instanceof A.instanceOf)&&(!A.predicate||A.predicate(e))){if(t.tag=r?A.tag:\"?\",A.represent){if(p=t.styleMap[A.tag]||A.defaultStyle,QK.call(A.represent)===\"[object Function]\")o=A.represent(e,p);else if(FK.call(A.represent,p))o=A.represent[p](e,p);else throw new tI(\"!<\"+A.tag+'> tag resolver accepts not \"'+p+'\" style');t.dump=o}return!0}return!1}function $g(t,e,r,o,a,n){t.tag=null,t.dump=r,kK(t,r,!1)||kK(t,r,!0);var u=QK.call(t.dump);o&&(o=t.flowLevel<0||t.flowLevel>e);var A=u===\"[object Object]\"||u===\"[object Array]\",p,h;if(A&&(p=t.duplicates.indexOf(r),h=p!==-1),(t.tag!==null&&t.tag!==\"?\"||h||t.indent!==2&&e>0)&&(a=!1),h&&t.usedDuplicates[p])t.dump=\"*ref_\"+p;else{if(A&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),u===\"[object Object]\")o&&Object.keys(t.dump).length!==0?(j6e(t,e,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(H6e(t,e,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump));else if(u===\"[object Array]\"){var E=t.noArrayIndent&&e>0?e-1:e;o&&t.dump.length!==0?(_6e(t,E,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(U6e(t,E,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump))}else if(u===\"[object String]\")t.tag!==\"?\"&&N6e(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new tI(\"unacceptable kind of an object to dump \"+u)}t.tag!==null&&t.tag!==\"?\"&&(t.dump=\"!<\"+t.tag+\"> \"+t.dump)}return!0}function q6e(t,e){var r=[],o=[],a,n;for(CT(t,r,o),a=0,n=o.length;a<n;a+=1)e.duplicates.push(r[o[a]]);e.usedDuplicates=new Array(n)}function CT(t,e,r){var o,a,n;if(t!==null&&typeof t==\"object\")if(a=e.indexOf(t),a!==-1)r.indexOf(a)===-1&&r.push(a);else if(e.push(t),Array.isArray(t))for(a=0,n=t.length;a<n;a+=1)CT(t[a],e,r);else for(o=Object.keys(t),a=0,n=o.length;a<n;a+=1)CT(t[o[a]],e,r)}function YK(t,e){e=e||{};var r=new Q6e(e);return r.noRefs||q6e(t,r),$g(r,0,t,!0,!0)?r.dump+`\n`:\"\"}function G6e(t,e){return YK(t,eI.extend({schema:f6e},e))}IT.exports.dump=YK;IT.exports.safeDump=G6e});var VK=_((pxt,ki)=>{\"use strict\";var VD=BK(),KK=WK();function JD(t){return function(){throw new Error(\"Function \"+t+\" is deprecated and cannot be used.\")}}ki.exports.Type=os();ki.exports.Schema=Jg();ki.exports.FAILSAFE_SCHEMA=HD();ki.exports.JSON_SCHEMA=pT();ki.exports.CORE_SCHEMA=hT();ki.exports.DEFAULT_SAFE_SCHEMA=py();ki.exports.DEFAULT_FULL_SCHEMA=Xw();ki.exports.load=VD.load;ki.exports.loadAll=VD.loadAll;ki.exports.safeLoad=VD.safeLoad;ki.exports.safeLoadAll=VD.safeLoadAll;ki.exports.dump=KK.dump;ki.exports.safeDump=KK.safeDump;ki.exports.YAMLException=Ay();ki.exports.MINIMAL_SCHEMA=HD();ki.exports.SAFE_SCHEMA=py();ki.exports.DEFAULT_SCHEMA=Xw();ki.exports.scan=JD(\"scan\");ki.exports.parse=JD(\"parse\");ki.exports.compose=JD(\"compose\");ki.exports.addConstructor=JD(\"addConstructor\")});var zK=_((hxt,JK)=>{\"use strict\";var Y6e=VK();JK.exports=Y6e});var ZK=_((gxt,XK)=>{\"use strict\";function W6e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function ed(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,ed)}W6e(ed,Error);ed.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function K6e(t,e){e=e!==void 0?e:{};var r={},o={Start:pu},a=pu,n=function($){return[].concat(...$)},u=\"-\",A=Qn(\"-\",!1),p=function($){return $},h=function($){return Object.assign({},...$)},E=\"#\",I=Qn(\"#\",!1),v=hc(),x=function(){return{}},C=\":\",R=Qn(\":\",!1),N=function($,ye){return{[$]:ye}},U=\",\",J=Qn(\",\",!1),te=function($,ye){return ye},ae=function($,ye,Ne){return Object.assign({},...[$].concat(ye).map(pt=>({[pt]:Ne})))},fe=function($){return $},ce=function($){return $},me=sa(\"correct indentation\"),he=\" \",Be=Qn(\" \",!1),we=function($){return $.length===nr*It},g=function($){return $.length===(nr+1)*It},Ee=function(){return nr++,!0},Pe=function(){return nr--,!0},le=function(){return PA()},ne=sa(\"pseudostring\"),ee=/^[^\\r\\n\\t ?:,\\][{}#&*!|>'\"%@`\\-]/,Ie=hi([\"\\r\",`\n`,\"\t\",\" \",\"?\",\":\",\",\",\"]\",\"[\",\"{\",\"}\",\"#\",\"&\",\"*\",\"!\",\"|\",\">\",\"'\",'\"',\"%\",\"@\",\"`\",\"-\"],!0,!1),Fe=/^[^\\r\\n\\t ,\\][{}:#\"']/,At=hi([\"\\r\",`\n`,\"\t\",\" \",\",\",\"]\",\"[\",\"{\",\"}\",\":\",\"#\",'\"',\"'\"],!0,!1),H=function(){return PA().replace(/^ *| *$/g,\"\")},at=\"--\",Re=Qn(\"--\",!1),ke=/^[a-zA-Z\\/0-9]/,xe=hi([[\"a\",\"z\"],[\"A\",\"Z\"],\"/\",[\"0\",\"9\"]],!1,!1),He=/^[^\\r\\n\\t :,]/,Te=hi([\"\\r\",`\n`,\"\t\",\" \",\":\",\",\"],!0,!1),Je=\"null\",je=Qn(\"null\",!1),b=function(){return null},w=\"true\",S=Qn(\"true\",!1),y=function(){return!0},F=\"false\",z=Qn(\"false\",!1),X=function(){return!1},Z=sa(\"string\"),ie='\"',be=Qn('\"',!1),Le=function(){return\"\"},ot=function($){return $},dt=function($){return $.join(\"\")},qt=/^[^\"\\\\\\0-\\x1F\\x7F]/,$t=hi(['\"',\"\\\\\",[\"\\0\",\"\u001f\"],\"\\x7F\"],!0,!1),bt='\\\\\"',an=Qn('\\\\\"',!1),Qr=function(){return'\"'},mr=\"\\\\\\\\\",br=Qn(\"\\\\\\\\\",!1),Wr=function(){return\"\\\\\"},Kn=\"\\\\/\",Ls=Qn(\"\\\\/\",!1),Ti=function(){return\"/\"},ps=\"\\\\b\",io=Qn(\"\\\\b\",!1),Si=function(){return\"\\b\"},Ns=\"\\\\f\",so=Qn(\"\\\\f\",!1),cc=function(){return\"\\f\"},cu=\"\\\\n\",lp=Qn(\"\\\\n\",!1),cp=function(){return`\n`},Os=\"\\\\r\",Dn=Qn(\"\\\\r\",!1),oo=function(){return\"\\r\"},Ms=\"\\\\t\",ml=Qn(\"\\\\t\",!1),yl=function(){return\"\t\"},ao=\"\\\\u\",Vn=Qn(\"\\\\u\",!1),On=function($,ye,Ne,pt){return String.fromCharCode(parseInt(`0x${$}${ye}${Ne}${pt}`))},Li=/^[0-9a-fA-F]/,Mn=hi([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"F\"]],!1,!1),_i=sa(\"blank space\"),tr=/^[ \\t]/,Oe=hi([\" \",\"\t\"],!1,!1),ii=sa(\"white space\"),Ma=/^[ \\t\\n\\r]/,hr=hi([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),uc=`\\r\n`,uu=Qn(`\\r\n`,!1),Ac=`\n`,El=Qn(`\n`,!1),DA=\"\\r\",Au=Qn(\"\\r\",!1),Ce=0,Rt=0,fc=[{line:1,column:1}],Hi=0,fu=[],Yt=0,Cl;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function PA(){return t.substring(Rt,Ce)}function up(){return _o(Rt,Ce)}function pc($,ye){throw ye=ye!==void 0?ye:_o(Rt,Ce),gc([sa($)],t.substring(Rt,Ce),ye)}function SA($,ye){throw ye=ye!==void 0?ye:_o(Rt,Ce),lo($,ye)}function Qn($,ye){return{type:\"literal\",text:$,ignoreCase:ye}}function hi($,ye,Ne){return{type:\"class\",parts:$,inverted:ye,ignoreCase:Ne}}function hc(){return{type:\"any\"}}function bA(){return{type:\"end\"}}function sa($){return{type:\"other\",description:$}}function Ni($){var ye=fc[$],Ne;if(ye)return ye;for(Ne=$-1;!fc[Ne];)Ne--;for(ye=fc[Ne],ye={line:ye.line,column:ye.column};Ne<$;)t.charCodeAt(Ne)===10?(ye.line++,ye.column=1):ye.column++,Ne++;return fc[$]=ye,ye}function _o($,ye){var Ne=Ni($),pt=Ni(ye);return{start:{offset:$,line:Ne.line,column:Ne.column},end:{offset:ye,line:pt.line,column:pt.column}}}function Ze($){Ce<Hi||(Ce>Hi&&(Hi=Ce,fu=[]),fu.push($))}function lo($,ye){return new ed($,null,null,ye)}function gc($,ye,Ne){return new ed(ed.buildMessage($,ye),$,ye,Ne)}function pu(){var $;return $=xA(),$}function ji(){var $,ye,Ne;for($=Ce,ye=[],Ne=hu();Ne!==r;)ye.push(Ne),Ne=hu();return ye!==r&&(Rt=$,ye=n(ye)),$=ye,$}function hu(){var $,ye,Ne,pt,ht;return $=Ce,ye=hs(),ye!==r?(t.charCodeAt(Ce)===45?(Ne=u,Ce++):(Ne=r,Yt===0&&Ze(A)),Ne!==r?(pt=Pn(),pt!==r?(ht=dc(),ht!==r?(Rt=$,ye=p(ht),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$}function xA(){var $,ye,Ne;for($=Ce,ye=[],Ne=Ua();Ne!==r;)ye.push(Ne),Ne=Ua();return ye!==r&&(Rt=$,ye=h(ye)),$=ye,$}function Ua(){var $,ye,Ne,pt,ht,Tt,er,$r,qi;if($=Ce,ye=Pn(),ye===r&&(ye=null),ye!==r){if(Ne=Ce,t.charCodeAt(Ce)===35?(pt=E,Ce++):(pt=r,Yt===0&&Ze(I)),pt!==r){if(ht=[],Tt=Ce,er=Ce,Yt++,$r=tt(),Yt--,$r===r?er=void 0:(Ce=er,er=r),er!==r?(t.length>Ce?($r=t.charAt(Ce),Ce++):($r=r,Yt===0&&Ze(v)),$r!==r?(er=[er,$r],Tt=er):(Ce=Tt,Tt=r)):(Ce=Tt,Tt=r),Tt!==r)for(;Tt!==r;)ht.push(Tt),Tt=Ce,er=Ce,Yt++,$r=tt(),Yt--,$r===r?er=void 0:(Ce=er,er=r),er!==r?(t.length>Ce?($r=t.charAt(Ce),Ce++):($r=r,Yt===0&&Ze(v)),$r!==r?(er=[er,$r],Tt=er):(Ce=Tt,Tt=r)):(Ce=Tt,Tt=r);else ht=r;ht!==r?(pt=[pt,ht],Ne=pt):(Ce=Ne,Ne=r)}else Ce=Ne,Ne=r;if(Ne===r&&(Ne=null),Ne!==r){if(pt=[],ht=We(),ht!==r)for(;ht!==r;)pt.push(ht),ht=We();else pt=r;pt!==r?(Rt=$,ye=x(),$=ye):(Ce=$,$=r)}else Ce=$,$=r}else Ce=$,$=r;if($===r&&($=Ce,ye=hs(),ye!==r?(Ne=oa(),Ne!==r?(pt=Pn(),pt===r&&(pt=null),pt!==r?(t.charCodeAt(Ce)===58?(ht=C,Ce++):(ht=r,Yt===0&&Ze(R)),ht!==r?(Tt=Pn(),Tt===r&&(Tt=null),Tt!==r?(er=dc(),er!==r?(Rt=$,ye=N(Ne,er),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,ye=hs(),ye!==r?(Ne=co(),Ne!==r?(pt=Pn(),pt===r&&(pt=null),pt!==r?(t.charCodeAt(Ce)===58?(ht=C,Ce++):(ht=r,Yt===0&&Ze(R)),ht!==r?(Tt=Pn(),Tt===r&&(Tt=null),Tt!==r?(er=dc(),er!==r?(Rt=$,ye=N(Ne,er),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r))){if($=Ce,ye=hs(),ye!==r)if(Ne=co(),Ne!==r)if(pt=Pn(),pt!==r)if(ht=aa(),ht!==r){if(Tt=[],er=We(),er!==r)for(;er!==r;)Tt.push(er),er=We();else Tt=r;Tt!==r?(Rt=$,ye=N(Ne,ht),$=ye):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r;else Ce=$,$=r;else Ce=$,$=r;if($===r)if($=Ce,ye=hs(),ye!==r)if(Ne=co(),Ne!==r){if(pt=[],ht=Ce,Tt=Pn(),Tt===r&&(Tt=null),Tt!==r?(t.charCodeAt(Ce)===44?(er=U,Ce++):(er=r,Yt===0&&Ze(J)),er!==r?($r=Pn(),$r===r&&($r=null),$r!==r?(qi=co(),qi!==r?(Rt=ht,Tt=te(Ne,qi),ht=Tt):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r),ht!==r)for(;ht!==r;)pt.push(ht),ht=Ce,Tt=Pn(),Tt===r&&(Tt=null),Tt!==r?(t.charCodeAt(Ce)===44?(er=U,Ce++):(er=r,Yt===0&&Ze(J)),er!==r?($r=Pn(),$r===r&&($r=null),$r!==r?(qi=co(),qi!==r?(Rt=ht,Tt=te(Ne,qi),ht=Tt):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r);else pt=r;pt!==r?(ht=Pn(),ht===r&&(ht=null),ht!==r?(t.charCodeAt(Ce)===58?(Tt=C,Ce++):(Tt=r,Yt===0&&Ze(R)),Tt!==r?(er=Pn(),er===r&&(er=null),er!==r?($r=dc(),$r!==r?(Rt=$,ye=ae(Ne,pt,$r),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r}return $}function dc(){var $,ye,Ne,pt,ht,Tt,er;if($=Ce,ye=Ce,Yt++,Ne=Ce,pt=tt(),pt!==r?(ht=Ht(),ht!==r?(t.charCodeAt(Ce)===45?(Tt=u,Ce++):(Tt=r,Yt===0&&Ze(A)),Tt!==r?(er=Pn(),er!==r?(pt=[pt,ht,Tt,er],Ne=pt):(Ce=Ne,Ne=r)):(Ce=Ne,Ne=r)):(Ce=Ne,Ne=r)):(Ce=Ne,Ne=r),Yt--,Ne!==r?(Ce=ye,ye=void 0):ye=r,ye!==r?(Ne=We(),Ne!==r?(pt=Fn(),pt!==r?(ht=ji(),ht!==r?(Tt=Ci(),Tt!==r?(Rt=$,ye=fe(ht),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,ye=tt(),ye!==r?(Ne=Fn(),Ne!==r?(pt=xA(),pt!==r?(ht=Ci(),ht!==r?(Rt=$,ye=fe(pt),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r))if($=Ce,ye=Us(),ye!==r){if(Ne=[],pt=We(),pt!==r)for(;pt!==r;)Ne.push(pt),pt=We();else Ne=r;Ne!==r?(Rt=$,ye=ce(ye),$=ye):(Ce=$,$=r)}else Ce=$,$=r;return $}function hs(){var $,ye,Ne;for(Yt++,$=Ce,ye=[],t.charCodeAt(Ce)===32?(Ne=he,Ce++):(Ne=r,Yt===0&&Ze(Be));Ne!==r;)ye.push(Ne),t.charCodeAt(Ce)===32?(Ne=he,Ce++):(Ne=r,Yt===0&&Ze(Be));return ye!==r?(Rt=Ce,Ne=we(ye),Ne?Ne=void 0:Ne=r,Ne!==r?(ye=[ye,Ne],$=ye):(Ce=$,$=r)):(Ce=$,$=r),Yt--,$===r&&(ye=r,Yt===0&&Ze(me)),$}function Ht(){var $,ye,Ne;for($=Ce,ye=[],t.charCodeAt(Ce)===32?(Ne=he,Ce++):(Ne=r,Yt===0&&Ze(Be));Ne!==r;)ye.push(Ne),t.charCodeAt(Ce)===32?(Ne=he,Ce++):(Ne=r,Yt===0&&Ze(Be));return ye!==r?(Rt=Ce,Ne=g(ye),Ne?Ne=void 0:Ne=r,Ne!==r?(ye=[ye,Ne],$=ye):(Ce=$,$=r)):(Ce=$,$=r),$}function Fn(){var $;return Rt=Ce,$=Ee(),$?$=void 0:$=r,$}function Ci(){var $;return Rt=Ce,$=Pe(),$?$=void 0:$=r,$}function oa(){var $;return $=ds(),$===r&&($=la()),$}function co(){var $,ye,Ne;if($=ds(),$===r){if($=Ce,ye=[],Ne=Ho(),Ne!==r)for(;Ne!==r;)ye.push(Ne),Ne=Ho();else ye=r;ye!==r&&(Rt=$,ye=le()),$=ye}return $}function Us(){var $;return $=wi(),$===r&&($=gs(),$===r&&($=ds(),$===r&&($=la()))),$}function aa(){var $;return $=wi(),$===r&&($=ds(),$===r&&($=Ho())),$}function la(){var $,ye,Ne,pt,ht,Tt;if(Yt++,$=Ce,ee.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Ie)),ye!==r){for(Ne=[],pt=Ce,ht=Pn(),ht===r&&(ht=null),ht!==r?(Fe.test(t.charAt(Ce))?(Tt=t.charAt(Ce),Ce++):(Tt=r,Yt===0&&Ze(At)),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);pt!==r;)Ne.push(pt),pt=Ce,ht=Pn(),ht===r&&(ht=null),ht!==r?(Fe.test(t.charAt(Ce))?(Tt=t.charAt(Ce),Ce++):(Tt=r,Yt===0&&Ze(At)),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);Ne!==r?(Rt=$,ye=H(),$=ye):(Ce=$,$=r)}else Ce=$,$=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(ne)),$}function Ho(){var $,ye,Ne,pt,ht;if($=Ce,t.substr(Ce,2)===at?(ye=at,Ce+=2):(ye=r,Yt===0&&Ze(Re)),ye===r&&(ye=null),ye!==r)if(ke.test(t.charAt(Ce))?(Ne=t.charAt(Ce),Ce++):(Ne=r,Yt===0&&Ze(xe)),Ne!==r){for(pt=[],He.test(t.charAt(Ce))?(ht=t.charAt(Ce),Ce++):(ht=r,Yt===0&&Ze(Te));ht!==r;)pt.push(ht),He.test(t.charAt(Ce))?(ht=t.charAt(Ce),Ce++):(ht=r,Yt===0&&Ze(Te));pt!==r?(Rt=$,ye=H(),$=ye):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r;return $}function wi(){var $,ye;return $=Ce,t.substr(Ce,4)===Je?(ye=Je,Ce+=4):(ye=r,Yt===0&&Ze(je)),ye!==r&&(Rt=$,ye=b()),$=ye,$}function gs(){var $,ye;return $=Ce,t.substr(Ce,4)===w?(ye=w,Ce+=4):(ye=r,Yt===0&&Ze(S)),ye!==r&&(Rt=$,ye=y()),$=ye,$===r&&($=Ce,t.substr(Ce,5)===F?(ye=F,Ce+=5):(ye=r,Yt===0&&Ze(z)),ye!==r&&(Rt=$,ye=X()),$=ye),$}function ds(){var $,ye,Ne,pt;return Yt++,$=Ce,t.charCodeAt(Ce)===34?(ye=ie,Ce++):(ye=r,Yt===0&&Ze(be)),ye!==r?(t.charCodeAt(Ce)===34?(Ne=ie,Ce++):(Ne=r,Yt===0&&Ze(be)),Ne!==r?(Rt=$,ye=Le(),$=ye):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,t.charCodeAt(Ce)===34?(ye=ie,Ce++):(ye=r,Yt===0&&Ze(be)),ye!==r?(Ne=ms(),Ne!==r?(t.charCodeAt(Ce)===34?(pt=ie,Ce++):(pt=r,Yt===0&&Ze(be)),pt!==r?(Rt=$,ye=ot(Ne),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)),Yt--,$===r&&(ye=r,Yt===0&&Ze(Z)),$}function ms(){var $,ye,Ne;if($=Ce,ye=[],Ne=_s(),Ne!==r)for(;Ne!==r;)ye.push(Ne),Ne=_s();else ye=r;return ye!==r&&(Rt=$,ye=dt(ye)),$=ye,$}function _s(){var $,ye,Ne,pt,ht,Tt;return qt.test(t.charAt(Ce))?($=t.charAt(Ce),Ce++):($=r,Yt===0&&Ze($t)),$===r&&($=Ce,t.substr(Ce,2)===bt?(ye=bt,Ce+=2):(ye=r,Yt===0&&Ze(an)),ye!==r&&(Rt=$,ye=Qr()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===mr?(ye=mr,Ce+=2):(ye=r,Yt===0&&Ze(br)),ye!==r&&(Rt=$,ye=Wr()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Kn?(ye=Kn,Ce+=2):(ye=r,Yt===0&&Ze(Ls)),ye!==r&&(Rt=$,ye=Ti()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===ps?(ye=ps,Ce+=2):(ye=r,Yt===0&&Ze(io)),ye!==r&&(Rt=$,ye=Si()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Ns?(ye=Ns,Ce+=2):(ye=r,Yt===0&&Ze(so)),ye!==r&&(Rt=$,ye=cc()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===cu?(ye=cu,Ce+=2):(ye=r,Yt===0&&Ze(lp)),ye!==r&&(Rt=$,ye=cp()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Os?(ye=Os,Ce+=2):(ye=r,Yt===0&&Ze(Dn)),ye!==r&&(Rt=$,ye=oo()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Ms?(ye=Ms,Ce+=2):(ye=r,Yt===0&&Ze(ml)),ye!==r&&(Rt=$,ye=yl()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===ao?(ye=ao,Ce+=2):(ye=r,Yt===0&&Ze(Vn)),ye!==r?(Ne=Un(),Ne!==r?(pt=Un(),pt!==r?(ht=Un(),ht!==r?(Tt=Un(),Tt!==r?(Rt=$,ye=On(Ne,pt,ht,Tt),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)))))))))),$}function Un(){var $;return Li.test(t.charAt(Ce))?($=t.charAt(Ce),Ce++):($=r,Yt===0&&Ze(Mn)),$}function Pn(){var $,ye;if(Yt++,$=[],tr.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Oe)),ye!==r)for(;ye!==r;)$.push(ye),tr.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Oe));else $=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(_i)),$}function ys(){var $,ye;if(Yt++,$=[],Ma.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(hr)),ye!==r)for(;ye!==r;)$.push(ye),Ma.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(hr));else $=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(ii)),$}function We(){var $,ye,Ne,pt,ht,Tt;if($=Ce,ye=tt(),ye!==r){for(Ne=[],pt=Ce,ht=Pn(),ht===r&&(ht=null),ht!==r?(Tt=tt(),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);pt!==r;)Ne.push(pt),pt=Ce,ht=Pn(),ht===r&&(ht=null),ht!==r?(Tt=tt(),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);Ne!==r?(ye=[ye,Ne],$=ye):(Ce=$,$=r)}else Ce=$,$=r;return $}function tt(){var $;return t.substr(Ce,2)===uc?($=uc,Ce+=2):($=r,Yt===0&&Ze(uu)),$===r&&(t.charCodeAt(Ce)===10?($=Ac,Ce++):($=r,Yt===0&&Ze(El)),$===r&&(t.charCodeAt(Ce)===13?($=DA,Ce++):($=r,Yt===0&&Ze(Au)))),$}let It=2,nr=0;if(Cl=a(),Cl!==r&&Ce===t.length)return Cl;throw Cl!==r&&Ce<t.length&&Ze(bA()),gc(fu,Hi<t.length?t.charAt(Hi):null,Hi<t.length?_o(Hi,Hi+1):_o(Hi,Hi))}XK.exports={SyntaxError:ed,parse:K6e}});function eV(t){return t.match(V6e)?t:JSON.stringify(t)}function rV(t){return typeof t>\"u\"?!0:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?Object.keys(t).every(e=>rV(t[e])):!1}function BT(t,e,r){if(t===null)return`null\n`;if(typeof t==\"number\"||typeof t==\"boolean\")return`${t.toString()}\n`;if(typeof t==\"string\")return`${eV(t)}\n`;if(Array.isArray(t)){if(t.length===0)return`[]\n`;let o=\"  \".repeat(e);return`\n${t.map(n=>`${o}- ${BT(n,e+1,!1)}`).join(\"\")}`}if(typeof t==\"object\"&&t){let[o,a]=t instanceof zD?[t.data,!1]:[t,!0],n=\"  \".repeat(e),u=Object.keys(o);a&&u.sort((p,h)=>{let E=$K.indexOf(p),I=$K.indexOf(h);return E===-1&&I===-1?p<h?-1:p>h?1:0:E!==-1&&I===-1?-1:E===-1&&I!==-1?1:E-I});let A=u.filter(p=>!rV(o[p])).map((p,h)=>{let E=o[p],I=eV(p),v=BT(E,e+1,!0),x=h>0||r?n:\"\",C=I.length>1024?`? ${I}\n${x}:`:`${I}:`,R=v.startsWith(`\n`)?v:` ${v}`;return`${x}${C}${R}`}).join(e===0?`\n`:\"\")||`\n`;return r?`\n${A}`:`${A}`}throw new Error(`Unsupported value type (${t})`)}function Ba(t){try{let e=BT(t,0,!1);return e!==`\n`?e:\"\"}catch(e){throw e.location&&(e.message=e.message.replace(/(\\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}function J6e(t){return t.endsWith(`\n`)||(t+=`\n`),(0,tV.parse)(t)}function X6e(t){if(z6e.test(t))return J6e(t);let e=(0,XD.safeLoad)(t,{schema:XD.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!=\"object\")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error(\"Expected an indexed object, got an array instead. Does your file follow Yaml's rules?\");return e}function Ki(t){return X6e(t)}var XD,tV,V6e,$K,zD,z6e,nV=Et(()=>{XD=$e(zK()),tV=$e(ZK()),V6e=/^(?![-?:,\\][{}#&*!|>'\"%@` \\t\\r\\n]).([ \\t]*(?![,\\][{}:# \\t\\r\\n]).)*$/,$K=[\"__metadata\",\"version\",\"resolution\",\"dependencies\",\"peerDependencies\",\"dependenciesMeta\",\"peerDependenciesMeta\",\"binaries\"],zD=class{constructor(e){this.data=e}};Ba.PreserveOrdering=zD;z6e=/^(#.*(\\r?\\n))*?#\\s+yarn\\s+lockfile\\s+v1\\r?\\n/i});var rI={};Vt(rI,{parseResolution:()=>MD,parseShell:()=>LD,parseSyml:()=>Ki,stringifyArgument:()=>cT,stringifyArgumentSegment:()=>uT,stringifyArithmeticExpression:()=>OD,stringifyCommand:()=>lT,stringifyCommandChain:()=>uy,stringifyCommandChainThen:()=>aT,stringifyCommandLine:()=>ND,stringifyCommandLineThen:()=>oT,stringifyEnvSegment:()=>TD,stringifyRedirectArgument:()=>Jw,stringifyResolution:()=>UD,stringifyShell:()=>cy,stringifyShellLine:()=>cy,stringifySyml:()=>Ba,stringifyValueArgument:()=>Yg});var Ll=Et(()=>{rW();oW();nV()});var sV=_((Cxt,vT)=>{\"use strict\";var Z6e=t=>{let e=!1,r=!1,o=!1;for(let a=0;a<t.length;a++){let n=t[a];e&&/[a-zA-Z]/.test(n)&&n.toUpperCase()===n?(t=t.slice(0,a)+\"-\"+t.slice(a),e=!1,o=r,r=!0,a++):r&&o&&/[a-zA-Z]/.test(n)&&n.toLowerCase()===n?(t=t.slice(0,a-1)+\"-\"+t.slice(a-1),o=r,r=!1,e=!0):(e=n.toLowerCase()===n&&n.toUpperCase()!==n,o=r,r=n.toUpperCase()===n&&n.toLowerCase()!==n)}return t},iV=(t,e)=>{if(!(typeof t==\"string\"||Array.isArray(t)))throw new TypeError(\"Expected the input to be `string | string[]`\");e=Object.assign({pascalCase:!1},e);let r=a=>e.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(t)?t=t.map(a=>a.trim()).filter(a=>a.length).join(\"-\"):t=t.trim(),t.length===0?\"\":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=Z6e(t)),t=t.replace(/^[_.\\- ]+/,\"\").toLowerCase().replace(/[_.\\- ]+(\\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\\d+(\\w|$)/g,a=>a.toUpperCase()),r(t))};vT.exports=iV;vT.exports.default=iV});var oV=_((wxt,$6e)=>{$6e.exports=[{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\",pr:\"SYSTEM_PULLREQUEST_PULLREQUESTID\"},{name:\"Appcircle\",constant:\"APPCIRCLE\",env:\"AC_APPCIRCLE\"},{name:\"Bamboo\",constant:\"BAMBOO\",env:\"bamboo_planKey\"},{name:\"Bitbucket Pipelines\",constant:\"BITBUCKET\",env:\"BITBUCKET_COMMIT\",pr:\"BITBUCKET_PR_ID\"},{name:\"Bitrise\",constant:\"BITRISE\",env:\"BITRISE_IO\",pr:\"BITRISE_PULL_REQUEST\"},{name:\"Buddy\",constant:\"BUDDY\",env:\"BUDDY_WORKSPACE_ID\",pr:\"BUDDY_EXECUTION_PULL_REQUEST_ID\"},{name:\"Buildkite\",constant:\"BUILDKITE\",env:\"BUILDKITE\",pr:{env:\"BUILDKITE_PULL_REQUEST\",ne:\"false\"}},{name:\"CircleCI\",constant:\"CIRCLE\",env:\"CIRCLECI\",pr:\"CIRCLE_PULL_REQUEST\"},{name:\"Cirrus CI\",constant:\"CIRRUS\",env:\"CIRRUS_CI\",pr:\"CIRRUS_PR\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Codefresh\",constant:\"CODEFRESH\",env:\"CF_BUILD_ID\",pr:{any:[\"CF_PULL_REQUEST_NUMBER\",\"CF_PULL_REQUEST_ID\"]}},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"GitHub Actions\",constant:\"GITHUB_ACTIONS\",env:\"GITHUB_ACTIONS\",pr:{GITHUB_EVENT_NAME:\"pull_request\"}},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\",pr:\"CI_MERGE_REQUEST_ID\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"LayerCI\",constant:\"LAYERCI\",env:\"LAYERCI\",pr:\"LAYERCI_PULL_REQUEST\"},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Nevercode\",constant:\"NEVERCODE\",env:\"NEVERCODE\",pr:{env:\"NEVERCODE_PULL_REQUEST\",ne:\"false\"}},{name:\"Render\",constant:\"RENDER\",env:\"RENDER\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Screwdriver\",constant:\"SCREWDRIVER\",env:\"SCREWDRIVER\",pr:{env:\"SD_PULL_REQUEST\",ne:\"false\"}},{name:\"Shippable\",constant:\"SHIPPABLE\",env:\"SHIPPABLE\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Solano CI\",constant:\"SOLANO\",env:\"TDDIUM\",pr:\"TDDIUM_PR_ID\"},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}},{name:\"Vercel\",constant:\"VERCEL\",env:\"NOW_BUILDER\"},{name:\"Visual Studio App Center\",constant:\"APPCENTER\",env:\"APPCENTER_BUILD_ID\"}]});var td=_(Xa=>{\"use strict\";var lV=oV(),ju=process.env;Object.defineProperty(Xa,\"_vendors\",{value:lV.map(function(t){return t.constant})});Xa.name=null;Xa.isPR=null;lV.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(o){return aV(o)});if(Xa[t.constant]=r,r)switch(Xa.name=t.name,typeof t.pr){case\"string\":Xa.isPR=!!ju[t.pr];break;case\"object\":\"env\"in t.pr?Xa.isPR=t.pr.env in ju&&ju[t.pr.env]!==t.pr.ne:\"any\"in t.pr?Xa.isPR=t.pr.any.some(function(o){return!!ju[o]}):Xa.isPR=aV(t.pr);break;default:Xa.isPR=null}});Xa.isCI=!!(ju.CI||ju.CONTINUOUS_INTEGRATION||ju.BUILD_NUMBER||ju.RUN_ID||Xa.name);function aV(t){return typeof t==\"string\"?!!ju[t]:Object.keys(t).every(function(e){return ju[e]===t[e]})}});var Hn,cn,rd,DT,ZD,cV,PT,ST,$D=Et(()=>{(function(t){t.StartOfInput=\"\\0\",t.EndOfInput=\"\u0001\",t.EndOfPartialInput=\"\u0002\"})(Hn||(Hn={}));(function(t){t[t.InitialNode=0]=\"InitialNode\",t[t.SuccessNode=1]=\"SuccessNode\",t[t.ErrorNode=2]=\"ErrorNode\",t[t.CustomNode=3]=\"CustomNode\"})(cn||(cn={}));rd=-1,DT=/^(-h|--help)(?:=([0-9]+))?$/,ZD=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,cV=/^-[a-zA-Z]{2,}$/,PT=/^([^=]+)=([\\s\\S]*)$/,ST=process.env.DEBUG_CLI===\"1\"});var it,yy,eP,bT,tP=Et(()=>{$D();it=class extends Error{constructor(e){super(e),this.clipanion={type:\"usage\"},this.name=\"UsageError\"}},yy=class extends Error{constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanion={type:\"none\"},this.name=\"UnknownSyntaxError\",this.candidates.length===0)this.message=\"Command not found, but we're not sure what's the alternative.\";else if(this.candidates.every(o=>o.reason!==null&&o.reason===r[0].reason)){let[{reason:o}]=this.candidates;this.message=`${o}\n\n${this.candidates.map(({usage:a})=>`$ ${a}`).join(`\n`)}`}else if(this.candidates.length===1){let[{usage:o}]=this.candidates;this.message=`Command not found; did you mean:\n\n$ ${o}\n${bT(e)}`}else this.message=`Command not found; did you mean one of:\n\n${this.candidates.map(({usage:o},a)=>`${`${a}.`.padStart(4)} ${o}`).join(`\n`)}\n\n${bT(e)}`}},eP=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:\"none\"},this.name=\"AmbiguousSyntaxError\",this.message=`Cannot find which to pick amongst the following alternatives:\n\n${this.usages.map((o,a)=>`${`${a}.`.padStart(4)} ${o}`).join(`\n`)}\n\n${bT(e)}`}},bT=t=>`While running ${t.filter(e=>e!==Hn.EndOfInput&&e!==Hn.EndOfPartialInput).map(e=>{let r=JSON.stringify(e);return e.match(/\\s/)||e.length===0||r!==`\"${e}\"`?r:e}).join(\" \")}`});function eje(t){let e=t.split(`\n`),r=e.filter(a=>a.match(/\\S/)),o=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(o).trimRight()).join(`\n`)}function Do(t,{format:e,paragraphs:r}){return t=t.replace(/\\r\\n?/g,`\n`),t=eje(t),t=t.replace(/^\\n+|\\n+$/g,\"\"),t=t.replace(/^(\\s*)-([^\\n]*?)\\n+/gm,`$1-$2\n\n`),t=t.replace(/\\n(\\n)?\\n*/g,(o,a)=>a||\" \"),r&&(t=t.split(/\\n/).map(o=>{let a=o.match(/^\\s*[*-][\\t ]+(.*)/);if(!a)return o.match(/(.{1,80})(?: |$)/g).join(`\n`);let n=o.length-o.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,\"g\")).map((u,A)=>\" \".repeat(n)+(A===0?\"- \":\"  \")+u).join(`\n`)}).join(`\n\n`)),t=t.replace(/(`+)((?:.|[\\n])*?)\\1/g,(o,a,n)=>e.code(a+n+a)),t=t.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(o,a,n)=>e.bold(a+n+a)),t?`${t}\n`:\"\"}var xT,uV,AV,kT=Et(()=>{xT=Array(80).fill(\"\\u2501\");for(let t=0;t<=24;++t)xT[xT.length-t]=`\\x1B[38;5;${232+t}m\\u2501`;uV={header:t=>`\\x1B[1m\\u2501\\u2501\\u2501 ${t}${t.length<80-5?` ${xT.slice(t.length+5).join(\"\")}`:\":\"}\\x1B[0m`,bold:t=>`\\x1B[1m${t}\\x1B[22m`,error:t=>`\\x1B[31m\\x1B[1m${t}\\x1B[22m\\x1B[39m`,code:t=>`\\x1B[36m${t}\\x1B[39m`},AV={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function Ko(t){return{...t,[nI]:!0}}function qu(t,e){return typeof t>\"u\"?[t,e]:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function rP(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(!r)return\"validation failed\";let[,o,a]=r;return e&&(a=a[0].toLowerCase()+a.slice(1)),a=o!==\".\"||!e?`${o.replace(/^\\.(\\[|$)/,\"$1\")}: ${a}`:`: ${a}`,a}function iI(t,e){return e.length===1?new it(`${t}${rP(e[0],{mergeName:!0})}`):new it(`${t}:\n${e.map(r=>`\n- ${rP(r)}`).join(\"\")}`)}function nd(t,e,r){if(typeof r>\"u\")return e;let o=[],a=[],n=A=>{let p=e;return e=A,n.bind(null,p)};if(!r(e,{errors:o,coercions:a,coercion:n}))throw iI(`Invalid value for ${t}`,o);for(let[,A]of a)A();return e}var nI,Ef=Et(()=>{tP();nI=Symbol(\"clipanion/isOption\")});var Vo={};Vt(Vo,{KeyRelationship:()=>Gu,TypeAssertionError:()=>Kp,applyCascade:()=>aI,as:()=>Eje,assert:()=>dje,assertWithErrors:()=>mje,cascade:()=>oP,fn:()=>Cje,hasAtLeastOneKey:()=>OT,hasExactLength:()=>dV,hasForbiddenKeys:()=>Uje,hasKeyRelationship:()=>cI,hasMaxLength:()=>Ije,hasMinLength:()=>wje,hasMutuallyExclusiveKeys:()=>_je,hasRequiredKeys:()=>Mje,hasUniqueItems:()=>Bje,isArray:()=>nP,isAtLeast:()=>LT,isAtMost:()=>Pje,isBase64:()=>Tje,isBoolean:()=>lje,isDate:()=>uje,isDict:()=>pje,isEnum:()=>Ks,isHexColor:()=>Rje,isISO8601:()=>Fje,isInExclusiveRange:()=>bje,isInInclusiveRange:()=>Sje,isInstanceOf:()=>gje,isInteger:()=>NT,isJSON:()=>Lje,isLiteral:()=>pV,isLowerCase:()=>xje,isMap:()=>fje,isNegative:()=>vje,isNullable:()=>Oje,isNumber:()=>RT,isObject:()=>hV,isOneOf:()=>TT,isOptional:()=>Nje,isPartial:()=>hje,isPayload:()=>cje,isPositive:()=>Dje,isRecord:()=>sP,isSet:()=>Aje,isString:()=>Cy,isTuple:()=>iP,isUUID4:()=>Qje,isUnknown:()=>FT,isUpperCase:()=>kje,makeTrait:()=>gV,makeValidator:()=>Hr,matchesRegExp:()=>oI,softAssert:()=>yje});function jn(t){return t===null?\"null\":t===void 0?\"undefined\":t===\"\"?\"an empty string\":typeof t==\"symbol\"?`<${t.toString()}>`:Array.isArray(t)?\"an array\":JSON.stringify(t)}function Ey(t,e){if(t.length===0)return\"nothing\";if(t.length===1)return jn(t[0]);let r=t.slice(0,-1),o=t[t.length-1],a=t.length>2?`, ${e} `:` ${e} `;return`${r.map(n=>jn(n)).join(\", \")}${a}${jn(o)}`}function Wp(t,e){var r,o,a;return typeof e==\"number\"?`${(r=t?.p)!==null&&r!==void 0?r:\".\"}[${e}]`:tje.test(e)?`${(o=t?.p)!==null&&o!==void 0?o:\"\"}.${e}`:`${(a=t?.p)!==null&&a!==void 0?a:\".\"}[${JSON.stringify(e)}]`}function QT(t,e,r){return t===1?e:r}function pr({errors:t,p:e}={},r){return t?.push(`${e??\".\"}: ${r}`),!1}function oje(t,e){return r=>{t[e]=r}}function Yu(t,e){return r=>{let o=t[e];return t[e]=r,Yu(t,e).bind(null,o)}}function sI(t,e,r){let o=()=>(t(r()),a),a=()=>(t(e),o);return o}function FT(){return Hr({test:(t,e)=>!0})}function pV(t){return Hr({test:(e,r)=>e!==t?pr(r,`Expected ${jn(t)} (got ${jn(e)})`):!0})}function Cy(){return Hr({test:(t,e)=>typeof t!=\"string\"?pr(e,`Expected a string (got ${jn(t)})`):!0})}function Ks(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>typeof a==\"string\"||typeof a==\"number\"),o=new Set(e);return o.size===1?pV([...o][0]):Hr({test:(a,n)=>o.has(a)?!0:r?pr(n,`Expected one of ${Ey(e,\"or\")} (got ${jn(a)})`):pr(n,`Expected a valid enumeration value (got ${jn(a)})`)})}function lje(){return Hr({test:(t,e)=>{var r;if(typeof t!=\"boolean\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o=aje.get(t);if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a boolean (got ${jn(t)})`)}return!0}})}function RT(){return Hr({test:(t,e)=>{var r;if(typeof t!=\"number\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o;if(typeof t==\"string\"){let a;try{a=JSON.parse(t)}catch{}if(typeof a==\"number\")if(JSON.stringify(a)===t)o=a;else return pr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a number (got ${jn(t)})`)}return!0}})}function cje(t){return Hr({test:(e,r)=>{var o;if(typeof r?.coercions>\"u\")return pr(r,\"The isPayload predicate can only be used with coercion enabled\");if(typeof r.coercion>\"u\")return pr(r,\"Unbound coercion result\");if(typeof e!=\"string\")return pr(r,`Expected a string (got ${jn(e)})`);let a;try{a=JSON.parse(e)}catch{return pr(r,`Expected a JSON string (got ${jn(e)})`)}let n={value:a};return t(a,Object.assign(Object.assign({},r),{coercion:Yu(n,\"value\")}))?(r.coercions.push([(o=r.p)!==null&&o!==void 0?o:\".\",r.coercion.bind(null,n.value)]),!0):!1}})}function uje(){return Hr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o;if(typeof t==\"string\"&&fV.test(t))o=new Date(t);else{let a;if(typeof t==\"string\"){let n;try{n=JSON.parse(t)}catch{}typeof n==\"number\"&&(a=n)}else typeof t==\"number\"&&(a=t);if(typeof a<\"u\")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))o=new Date(a*1e3);else return pr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a date (got ${jn(t)})`)}return!0}})}function nP(t,{delimiter:e}={}){return Hr({test:(r,o)=>{var a;let n=r;if(typeof r==\"string\"&&typeof e<\"u\"&&typeof o?.coercions<\"u\"){if(typeof o?.coercion>\"u\")return pr(o,\"Unbound coercion result\");r=r.split(e)}if(!Array.isArray(r))return pr(o,`Expected an array (got ${jn(r)})`);let u=!0;for(let A=0,p=r.length;A<p&&(u=t(r[A],Object.assign(Object.assign({},o),{p:Wp(o,A),coercion:Yu(r,A)}))&&u,!(!u&&o?.errors==null));++A);return r!==n&&o.coercions.push([(a=o.p)!==null&&a!==void 0?a:\".\",o.coercion.bind(null,r)]),u}})}function Aje(t,{delimiter:e}={}){let r=nP(t,{delimiter:e});return Hr({test:(o,a)=>{var n,u;if(Object.getPrototypeOf(o).toString()===\"[object Set]\")if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");let A=[...o],p=[...o];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,I)=>E!==A[I])?new Set(p):o;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",sI(a.coercion,o,h)]),!0}else{let A=!0;for(let p of o)if(A=t(p,Object.assign({},a))&&A,!A&&a?.errors==null)break;return A}if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");let A={value:o};return r(o,Object.assign(Object.assign({},a),{coercion:Yu(A,\"value\")}))?(a.coercions.push([(u=a.p)!==null&&u!==void 0?u:\".\",sI(a.coercion,o,()=>new Set(A.value))]),!0):!1}return pr(a,`Expected a set (got ${jn(o)})`)}})}function fje(t,e){let r=nP(iP([t,e])),o=sP(e,{keys:t});return Hr({test:(a,n)=>{var u,A,p;if(Object.getPrototypeOf(a).toString()===\"[object Map]\")if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return pr(n,\"Unbound coercion result\");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let I=()=>E.some((v,x)=>v[0]!==h[x][0]||v[1]!==h[x][1])?new Map(E):a;return n.coercions.push([(u=n.p)!==null&&u!==void 0?u:\".\",sI(n.coercion,a,I)]),!0}else{let h=!0;for(let[E,I]of a)if(h=t(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=e(I,Object.assign(Object.assign({},n),{p:Wp(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return pr(n,\"Unbound coercion result\");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(A=n.p)!==null&&A!==void 0?A:\".\",sI(n.coercion,a,()=>new Map(h.value))]),!0):!1:o(a,Object.assign(Object.assign({},n),{coercion:Yu(h,\"value\")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:\".\",sI(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return pr(n,`Expected a map (got ${jn(a)})`)}})}function iP(t,{delimiter:e}={}){let r=dV(t.length);return Hr({test:(o,a)=>{var n;if(typeof o==\"string\"&&typeof e<\"u\"&&typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");o=o.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,o)])}if(!Array.isArray(o))return pr(a,`Expected a tuple (got ${jn(o)})`);let u=r(o,Object.assign({},a));for(let A=0,p=o.length;A<p&&A<t.length&&(u=t[A](o[A],Object.assign(Object.assign({},a),{p:Wp(a,A),coercion:Yu(o,A)}))&&u,!(!u&&a?.errors==null));++A);return u}})}function sP(t,{keys:e=null}={}){let r=nP(iP([e??Cy(),t]));return Hr({test:(o,a)=>{var n;if(Array.isArray(o)&&typeof a?.coercions<\"u\")return typeof a?.coercion>\"u\"?pr(a,\"Unbound coercion result\"):r(o,Object.assign(Object.assign({},a),{coercion:void 0}))?(o=Object.fromEntries(o),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,o)]),!0):!1;if(typeof o!=\"object\"||o===null)return pr(a,`Expected an object (got ${jn(o)})`);let u=Object.keys(o),A=!0;for(let p=0,h=u.length;p<h&&(A||a?.errors!=null);++p){let E=u[p],I=o[E];if(E===\"__proto__\"||E===\"constructor\"){A=pr(Object.assign(Object.assign({},a),{p:Wp(a,E)}),\"Unsafe property name\");continue}if(e!==null&&!e(E,a)){A=!1;continue}if(!t(I,Object.assign(Object.assign({},a),{p:Wp(a,E),coercion:Yu(o,E)}))){A=!1;continue}}return A}})}function pje(t,e={}){return sP(t,e)}function hV(t,{extra:e=null}={}){let r=Object.keys(t),o=Hr({test:(a,n)=>{if(typeof a!=\"object\"||a===null)return pr(n,`Expected an object (got ${jn(a)})`);let u=new Set([...r,...Object.keys(a)]),A={},p=!0;for(let h of u){if(h===\"constructor\"||h===\"__proto__\")p=pr(Object.assign(Object.assign({},n),{p:Wp(n,h)}),\"Unsafe property name\");else{let E=Object.prototype.hasOwnProperty.call(t,h)?t[h]:void 0,I=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<\"u\"?p=E(I,Object.assign(Object.assign({},n),{p:Wp(n,h),coercion:Yu(a,h)}))&&p:e===null?p=pr(Object.assign(Object.assign({},n),{p:Wp(n,h)}),`Extraneous property (got ${jn(I)})`):Object.defineProperty(A,h,{enumerable:!0,get:()=>I,set:oje(a,h)})}if(!p&&n?.errors==null)break}return e!==null&&(p||n?.errors!=null)&&(p=e(A,n)&&p),p}});return Object.assign(o,{properties:t})}function hje(t){return hV(t,{extra:sP(FT())})}function gV(t){return()=>t}function Hr({test:t}){return gV(t)()}function dje(t,e){if(!e(t))throw new Kp}function mje(t,e){let r=[];if(!e(t,{errors:r}))throw new Kp({errors:r})}function yje(t,e){}function Eje(t,e,{coerce:r=!1,errors:o,throw:a}={}){let n=o?[]:void 0;if(!r){if(e(t,{errors:n}))return a?t:{value:t,errors:void 0};if(a)throw new Kp({errors:n});return{value:void 0,errors:n??!0}}let u={value:t},A=Yu(u,\"value\"),p=[];if(!e(t,{errors:n,coercion:A,coercions:p})){if(a)throw new Kp({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?u.value:{value:u.value,errors:void 0}}function Cje(t,e){let r=iP(t);return(...o)=>{if(!r(o))throw new Kp;return e(...o)}}function wje(t){return Hr({test:(e,r)=>e.length>=t?!0:pr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)})}function Ije(t){return Hr({test:(e,r)=>e.length<=t?!0:pr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)})}function dV(t){return Hr({test:(e,r)=>e.length!==t?pr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0})}function Bje({map:t}={}){return Hr({test:(e,r)=>{let o=new Set,a=new Set;for(let n=0,u=e.length;n<u;++n){let A=e[n],p=typeof t<\"u\"?t(A):A;if(o.has(p)){if(a.has(p))continue;pr(r,`Expected to contain unique elements; got a duplicate with ${jn(e)}`),a.add(p)}else o.add(p)}return a.size===0}})}function vje(){return Hr({test:(t,e)=>t<=0?!0:pr(e,`Expected to be negative (got ${t})`)})}function Dje(){return Hr({test:(t,e)=>t>=0?!0:pr(e,`Expected to be positive (got ${t})`)})}function LT(t){return Hr({test:(e,r)=>e>=t?!0:pr(r,`Expected to be at least ${t} (got ${e})`)})}function Pje(t){return Hr({test:(e,r)=>e<=t?!0:pr(r,`Expected to be at most ${t} (got ${e})`)})}function Sje(t,e){return Hr({test:(r,o)=>r>=t&&r<=e?!0:pr(o,`Expected to be in the [${t}; ${e}] range (got ${r})`)})}function bje(t,e){return Hr({test:(r,o)=>r>=t&&r<e?!0:pr(o,`Expected to be in the [${t}; ${e}[ range (got ${r})`)})}function NT({unsafe:t=!1}={}){return Hr({test:(e,r)=>e!==Math.round(e)?pr(r,`Expected to be an integer (got ${e})`):!t&&!Number.isSafeInteger(e)?pr(r,`Expected to be a safe integer (got ${e})`):!0})}function oI(t){return Hr({test:(e,r)=>t.test(e)?!0:pr(r,`Expected to match the pattern ${t.toString()} (got ${jn(e)})`)})}function xje(){return Hr({test:(t,e)=>t!==t.toLowerCase()?pr(e,`Expected to be all-lowercase (got ${t})`):!0})}function kje(){return Hr({test:(t,e)=>t!==t.toUpperCase()?pr(e,`Expected to be all-uppercase (got ${t})`):!0})}function Qje(){return Hr({test:(t,e)=>sje.test(t)?!0:pr(e,`Expected to be a valid UUID v4 (got ${jn(t)})`)})}function Fje(){return Hr({test:(t,e)=>fV.test(t)?!0:pr(e,`Expected to be a valid ISO 8601 date string (got ${jn(t)})`)})}function Rje({alpha:t=!1}){return Hr({test:(e,r)=>(t?rje.test(e):nje.test(e))?!0:pr(r,`Expected to be a valid hexadecimal color string (got ${jn(e)})`)})}function Tje(){return Hr({test:(t,e)=>ije.test(t)?!0:pr(e,`Expected to be a valid base 64 string (got ${jn(t)})`)})}function Lje(t=FT()){return Hr({test:(e,r)=>{let o;try{o=JSON.parse(e)}catch{return pr(r,`Expected to be a valid JSON string (got ${jn(e)})`)}return t(o,r)}})}function oP(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Hr({test:(o,a)=>{var n,u;let A={value:o},p=typeof a?.coercions<\"u\"?Yu(A,\"value\"):void 0,h=typeof a?.coercions<\"u\"?[]:void 0;if(!t(o,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<\"u\")for(let[,I]of h)E.push(I());try{if(typeof a?.coercions<\"u\"){if(A.value!==o){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,A.value)])}(u=a?.coercions)===null||u===void 0||u.push(...h)}return r.every(I=>I(A.value,a))}finally{for(let I of E)I()}}})}function aI(t,...e){let r=Array.isArray(e[0])?e[0]:e;return oP(t,r)}function Nje(t){return Hr({test:(e,r)=>typeof e>\"u\"?!0:t(e,r)})}function Oje(t){return Hr({test:(e,r)=>e===null?!0:t(e,r)})}function Mje(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)||p.push(h);return p.length>0?pr(u,`Missing required ${QT(p.length,\"property\",\"properties\")} ${Ey(p,\"and\")}`):!0}})}function OT(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>Object.keys(n).some(h=>a(o,h,n))?!0:pr(u,`Missing at least one property from ${Ey(Array.from(o),\"or\")}`)})}function Uje(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)&&p.push(h);return p.length>0?pr(u,`Forbidden ${QT(p.length,\"property\",\"properties\")} ${Ey(p,\"and\")}`):!0}})}function _je(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)&&p.push(h);return p.length>1?pr(u,`Mutually exclusive properties ${Ey(p,\"and\")}`):!0}})}function cI(t,e,r,o){var a,n;let u=new Set((a=o?.ignore)!==null&&a!==void 0?a:[]),A=lI[(n=o?.missingIf)!==null&&n!==void 0?n:\"missing\"],p=new Set(r),h=Hje[e],E=e===Gu.Forbids?\"or\":\"and\";return Hr({test:(I,v)=>{let x=new Set(Object.keys(I));if(!A(x,t,I)||u.has(I[t]))return!0;let C=[];for(let R of p)(A(x,R,I)&&!u.has(I[R]))!==h.expect&&C.push(R);return C.length>=1?pr(v,`Property \"${t}\" ${h.message} ${QT(C.length,\"property\",\"properties\")} ${Ey(C,E)}`):!0}})}var tje,rje,nje,ije,sje,fV,aje,gje,TT,Kp,lI,Gu,Hje,Za=Et(()=>{tje=/^[a-zA-Z_][a-zA-Z0-9_]*$/;rje=/^#[0-9a-f]{6}$/i,nje=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,ije=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,sje=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,fV=/^(?:[1-9]\\d{3}(-?)(?:(?:0[1-9]|1[0-2])\\1(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])\\1(?:29|30)|(?:0[13578]|1[02])(?:\\1)31|00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[0-5]))|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\\2)29|-?366))T(?:[01]\\d|2[0-3])(:?)[0-5]\\d(?:\\3[0-5]\\d)?(?:Z|[+-][01]\\d(?:\\3[0-5]\\d)?)$/;aje=new Map([[\"true\",!0],[\"True\",!0],[\"1\",!0],[1,!0],[\"false\",!1],[\"False\",!1],[\"0\",!1],[0,!1]]);gje=t=>Hr({test:(e,r)=>e instanceof t?!0:pr(r,`Expected an instance of ${t.name} (got ${jn(e)})`)}),TT=(t,{exclusive:e=!1}={})=>Hr({test:(r,o)=>{var a,n,u;let A=[],p=typeof o?.errors<\"u\"?[]:void 0;for(let h=0,E=t.length;h<E;++h){let I=typeof o?.errors<\"u\"?[]:void 0,v=typeof o?.coercions<\"u\"?[]:void 0;if(t[h](r,Object.assign(Object.assign({},o),{errors:I,coercions:v,p:`${(a=o?.p)!==null&&a!==void 0?a:\".\"}#${h+1}`}))){if(A.push([`#${h+1}`,v]),!e)break}else p?.push(I[0])}if(A.length===1){let[,h]=A[0];return typeof h<\"u\"&&((n=o?.coercions)===null||n===void 0||n.push(...h)),!0}return A.length>1?pr(o,`Expected to match exactly a single predicate (matched ${A.join(\", \")})`):(u=o?.errors)===null||u===void 0||u.push(...p),!1}});Kp=class extends Error{constructor({errors:e}={}){let r=\"Type mismatch\";if(e&&e.length>0){r+=`\n`;for(let o of e)r+=`\n- ${o}`}super(r)}};lI={missing:(t,e)=>t.has(e),undefined:(t,e,r)=>t.has(e)&&typeof r[e]<\"u\",nil:(t,e,r)=>t.has(e)&&r[e]!=null,falsy:(t,e,r)=>t.has(e)&&!!r[e]};(function(t){t.Forbids=\"Forbids\",t.Requires=\"Requires\"})(Gu||(Gu={}));Hje={[Gu.Forbids]:{expect:!1,message:\"forbids using\"},[Gu.Requires]:{expect:!0,message:\"requires using\"}}});var nt,Vp=Et(()=>{Ef();nt=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:u}=await Promise.resolve().then(()=>(Za(),Vo)),A=u(a(n()),r),p=[],h=[];if(!A(this,{errors:p,coercions:h}))throw iI(\"Invalid option schema\",p);for(let[,I]of h)I()}else if(r!=null)throw new Error(\"Invalid command schema\");let o=await this.execute();return typeof o<\"u\"?o:0}};nt.isOption=nI;nt.Default=[]});function va(t){ST&&console.log(t)}function yV(){let t={nodes:[]};for(let e=0;e<cn.CustomNode;++e)t.nodes.push($a());return t}function jje(t){let e=yV(),r=[],o=e.nodes.length;for(let a of t){r.push(o);for(let n=0;n<a.nodes.length;++n)CV(n)||e.nodes.push(zje(a.nodes[n],o));o+=a.nodes.length-cn.CustomNode+1}for(let a of r)wy(e,cn.InitialNode,a);return e}function Oc(t,e){return t.nodes.push(e),t.nodes.length-1}function qje(t){let e=new Set,r=o=>{if(e.has(o))return;e.add(o);let a=t.nodes[o];for(let u of Object.values(a.statics))for(let{to:A}of u)r(A);for(let[,{to:u}]of a.dynamics)r(u);for(let{to:u}of a.shortcuts)r(u);let n=new Set(a.shortcuts.map(({to:u})=>u));for(;a.shortcuts.length>0;){let{to:u}=a.shortcuts.shift(),A=t.nodes[u];for(let[p,h]of Object.entries(A.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let I of h)E.some(({to:v})=>I.to===v)||E.push(I)}for(let[p,h]of A.dynamics)a.dynamics.some(([E,{to:I}])=>p===E&&h.to===I)||a.dynamics.push([p,h]);for(let p of A.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(cn.InitialNode)}function Gje(t,{prefix:e=\"\"}={}){if(ST){va(`${e}Nodes are:`);for(let r=0;r<t.nodes.length;++r)va(`${e}  ${r}: ${JSON.stringify(t.nodes[r])}`)}}function Yje(t,e,r=!1){va(`Running a vm on ${JSON.stringify(e)}`);let o=[{node:cn.InitialNode,state:{candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null,partial:!1,tokens:[]}}];Gje(t,{prefix:\"  \"});let a=[Hn.StartOfInput,...e];for(let n=0;n<a.length;++n){let u=a[n],A=u===Hn.EndOfInput||u===Hn.EndOfPartialInput,p=n-1;va(`  Processing ${JSON.stringify(u)}`);let h=[];for(let{node:E,state:I}of o){va(`    Current node is ${E}`);let v=t.nodes[E];if(E===cn.ErrorNode){h.push({node:E,state:I});continue}console.assert(v.shortcuts.length===0,\"Shortcuts should have been eliminated by now\");let x=Object.prototype.hasOwnProperty.call(v.statics,u);if(!r||n<a.length-1||x)if(x){let C=v.statics[u];for(let{to:R,reducer:N}of C)h.push({node:R,state:typeof N<\"u\"?aP(UT,N,I,u,p):I}),va(`      Static transition to ${R} found`)}else va(\"      No static transition found\");else{let C=!1;for(let R of Object.keys(v.statics))if(!!R.startsWith(u)){if(u===R)for(let{to:N,reducer:U}of v.statics[R])h.push({node:N,state:typeof U<\"u\"?aP(UT,U,I,u,p):I}),va(`      Static transition to ${N} found`);else for(let{to:N}of v.statics[R])h.push({node:N,state:{...I,remainder:R.slice(u.length)}}),va(`      Static transition to ${N} found (partial match)`);C=!0}C||va(\"      No partial static transition found\")}if(!A)for(let[C,{to:R,reducer:N}]of v.dynamics)aP(Xje,C,I,u,p)&&(h.push({node:R,state:typeof N<\"u\"?aP(UT,N,I,u,p):I}),va(`      Dynamic transition to ${R} found (via ${C})`))}if(h.length===0&&A&&e.length===1)return[{node:cn.InitialNode,state:mV}];if(h.length===0)throw new yy(e,o.filter(({node:E})=>E!==cn.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===cn.ErrorNode))throw new yy(e,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));o=Kje(h)}if(o.length>0){va(\"  Results:\");for(let n of o)va(`    - ${n.node} -> ${JSON.stringify(n.state)}`)}else va(\"  No results\");return o}function Wje(t,e,{endToken:r=Hn.EndOfInput}={}){let o=Yje(t,[...e,r]);return Vje(e,o.map(({state:a})=>a))}function Kje(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function Vje(t,e){let r=e.filter(v=>v.selectedIndex!==null),o=r.filter(v=>!v.partial);if(o.length>0&&(r=o),r.length===0)throw new Error;let a=r.filter(v=>v.selectedIndex===rd||v.requiredOptions.every(x=>x.some(C=>v.options.find(R=>R.name===C))));if(a.length===0)throw new yy(t,r.map(v=>({usage:v.candidateUsage,reason:null})));let n=0;for(let v of a)v.path.length>n&&(n=v.path.length);let u=a.filter(v=>v.path.length===n),A=v=>v.positionals.filter(({extra:x})=>!x).length+v.options.length,p=u.map(v=>({state:v,positionalCount:A(v)})),h=0;for(let{positionalCount:v}of p)v>h&&(h=v);let E=p.filter(({positionalCount:v})=>v===h).map(({state:v})=>v),I=Jje(E);if(I.length>1)throw new eP(t,I.map(v=>v.candidateUsage));return I[0]}function Jje(t){let e=[],r=[];for(let o of t)o.selectedIndex===rd?r.push(o):e.push(o);return r.length>0&&e.push({...mV,path:EV(...r.map(o=>o.path)),options:r.reduce((o,a)=>o.concat(a.options),[])}),e}function EV(t,e,...r){return e===void 0?Array.from(t):EV(t.filter((o,a)=>o===e[a]),...r)}function $a(){return{dynamics:[],shortcuts:[],statics:{}}}function CV(t){return t===cn.SuccessNode||t===cn.ErrorNode}function MT(t,e=0){return{to:CV(t.to)?t.to:t.to>=cn.CustomNode?t.to+e-cn.CustomNode+1:t.to+e,reducer:t.reducer}}function zje(t,e=0){let r=$a();for(let[o,a]of t.dynamics)r.dynamics.push([o,MT(a,e)]);for(let o of t.shortcuts)r.shortcuts.push(MT(o,e));for(let[o,a]of Object.entries(t.statics))r.statics[o]=a.map(n=>MT(n,e));return r}function Ss(t,e,r,o,a){t.nodes[e].dynamics.push([r,{to:o,reducer:a}])}function wy(t,e,r,o){t.nodes[e].shortcuts.push({to:r,reducer:o})}function Jo(t,e,r,o,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:o,reducer:a})}function aP(t,e,r,o,a){if(Array.isArray(e)){let[n,...u]=e;return t[n](r,o,a,...u)}else return t[e](r,o,a)}var mV,Xje,UT,el,_T,Iy,lP=Et(()=>{$D();tP();mV={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:rd,partial:!1,tokens:[]};Xje={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!==\"-\"&&e.startsWith(\"-\"),isNotOptionLike:(t,e)=>t.ignoreOptions||e===\"-\"||!e.startsWith(\"-\"),isOption:(t,e,r,o)=>!t.ignoreOptions&&e===o,isBatchOption:(t,e,r,o)=>!t.ignoreOptions&&cV.test(e)&&[...e.slice(1)].every(a=>o.has(`-${a}`)),isBoundOption:(t,e,r,o,a)=>{let n=e.match(PT);return!t.ignoreOptions&&!!n&&ZD.test(n[1])&&o.has(n[1])&&a.filter(u=>u.nameSet.includes(n[1])).every(u=>u.allowBinding)},isNegatedOption:(t,e,r,o)=>!t.ignoreOptions&&e===`--no-${o.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&DT.test(e),isUnsupportedOption:(t,e,r,o)=>!t.ignoreOptions&&e.startsWith(\"-\")&&ZD.test(e)&&!o.has(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith(\"-\")&&!ZD.test(e)},UT={setCandidateState:(t,e,r,o)=>({...t,...o}),setSelectedIndex:(t,e,r,o)=>({...t,selectedIndex:o}),setPartialIndex:(t,e,r,o)=>({...t,selectedIndex:o,partial:!0}),pushBatch:(t,e,r,o)=>{let a=t.options.slice(),n=t.tokens.slice();for(let u=1;u<e.length;++u){let A=o.get(`-${e[u]}`),p=u===1?[0,2]:[u,u+1];a.push({name:A,value:!0}),n.push({segmentIndex:r,type:\"option\",option:A,slice:p})}return{...t,options:a,tokens:n}},pushBound:(t,e,r)=>{let[,o,a]=e.match(PT),n=t.options.concat({name:o,value:a}),u=t.tokens.concat([{segmentIndex:r,type:\"option\",slice:[0,o.length],option:o},{segmentIndex:r,type:\"assign\",slice:[o.length,o.length+1]},{segmentIndex:r,type:\"value\",slice:[o.length+1,o.length+a.length+1]}]);return{...t,options:n,tokens:u}},pushPath:(t,e,r)=>{let o=t.path.concat(e),a=t.tokens.concat({segmentIndex:r,type:\"path\"});return{...t,path:o,tokens:a}},pushPositional:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:!1}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushExtra:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:!0}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushExtraNoLimits:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:el}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushTrue:(t,e,r,o)=>{let a=t.options.concat({name:o,value:!0}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:o});return{...t,options:a,tokens:n}},pushFalse:(t,e,r,o)=>{let a=t.options.concat({name:o,value:!1}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:o});return{...t,options:a,tokens:n}},pushUndefined:(t,e,r,o)=>{let a=t.options.concat({name:e,value:void 0}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:e});return{...t,options:a,tokens:n}},pushStringValue:(t,e,r)=>{var o;let a=t.options[t.options.length-1],n=t.options.slice(),u=t.tokens.concat({segmentIndex:r,type:\"value\"});return a.value=((o=a.value)!==null&&o!==void 0?o:[]).concat([e]),{...t,options:n,tokens:u}},setStringValue:(t,e,r)=>{let o=t.options[t.options.length-1],a=t.options.slice(),n=t.tokens.concat({segmentIndex:r,type:\"value\"});return o.value=e,{...t,options:a,tokens:n}},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r,o)=>{let[,,a]=e.match(DT);return typeof a<\"u\"?{...t,options:[{name:\"-c\",value:String(o)},{name:\"-i\",value:a}]}:{...t,options:[{name:\"-c\",value:String(o)}]}},setError:(t,e,r,o)=>e===Hn.EndOfInput||e===Hn.EndOfPartialInput?{...t,errorMessage:`${o}.`}:{...t,errorMessage:`${o} (\"${e}\").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},el=Symbol(),_T=class{constructor(e,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:o=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:o,proxy:a})}addPositional({name:e=\"arg\",required:r=!0}={}){if(!r&&this.arity.extra===el)throw new Error(\"Optional parameters cannot be declared when using .rest() or .proxy()\");if(!r&&this.arity.trailing.length>0)throw new Error(\"Optional parameters cannot be declared after the required trailing positional arguments\");!r&&this.arity.extra!==el?this.arity.extra.push(e):this.arity.extra!==el&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e=\"arg\",required:r=0}={}){if(this.arity.extra===el)throw new Error(\"Infinite lists cannot be declared multiple times in the same command\");if(this.arity.trailing.length>0)throw new Error(\"Infinite lists cannot be declared after the required trailing positional arguments\");for(let o=0;o<r;++o)this.addPositional({name:e});this.arity.extra=el}addProxy({required:e=0}={}){this.addRest({required:e}),this.arity.proxy=!0}addOption({names:e,description:r,arity:o=0,hidden:a=!1,required:n=!1,allowBinding:u=!0}){if(!u&&o>1)throw new Error(\"The arity cannot be higher than 1 when the option only supports the --arg=value syntax\");if(!Number.isInteger(o))throw new Error(`The arity must be an integer, got ${o}`);if(o<0)throw new Error(`The arity must be positive, got ${o}`);let A=e.reduce((p,h)=>h.length>p.length?h:p,\"\");for(let p of e)this.allOptionNames.set(p,A);this.options.push({preferredName:A,nameSet:e,description:r,arity:o,hidden:a,required:n,allowBinding:u})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let o=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&o.push(...this.paths[0]),e){for(let{preferredName:u,nameSet:A,arity:p,hidden:h,description:E,required:I}of this.options){if(h)continue;let v=[];for(let C=0;C<p;++C)v.push(` #${C}`);let x=`${A.join(\",\")}${v.join(\"\")}`;!r&&E?a.push({preferredName:u,nameSet:A,definition:x,description:E,required:I}):o.push(I?`<${x}>`:`[${x}]`)}o.push(...this.arity.leading.map(u=>`<${u}>`)),this.arity.extra===el?o.push(\"...\"):o.push(...this.arity.extra.map(u=>`[${u}]`)),o.push(...this.arity.trailing.map(u=>`<${u}>`))}return{usage:o.join(\" \"),options:a}}compile(){if(typeof this.context>\"u\")throw new Error(\"Assertion failed: No context attached\");let e=yV(),r=cn.InitialNode,o=this.usage().usage,a=this.options.filter(A=>A.required).map(A=>A.nameSet);r=Oc(e,$a()),Jo(e,cn.InitialNode,Hn.StartOfInput,r,[\"setCandidateState\",{candidateUsage:o,requiredOptions:a}]);let n=this.arity.proxy?\"always\":\"isNotOptionLike\",u=this.paths.length>0?this.paths:[[]];for(let A of u){let p=r;if(A.length>0){let v=Oc(e,$a());wy(e,p,v),this.registerOptions(e,v),p=v}for(let v=0;v<A.length;++v){let x=Oc(e,$a());Jo(e,p,A[v],x,\"pushPath\"),p=x}if(this.arity.leading.length>0||!this.arity.proxy){let v=Oc(e,$a());Ss(e,p,\"isHelp\",v,[\"useHelp\",this.cliIndex]),Ss(e,v,\"always\",v,\"pushExtra\"),Jo(e,v,Hn.EndOfInput,cn.SuccessNode,[\"setSelectedIndex\",rd]),this.registerOptions(e,p)}this.arity.leading.length>0&&(Jo(e,p,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,p,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let h=p;for(let v=0;v<this.arity.leading.length;++v){let x=Oc(e,$a());(!this.arity.proxy||v+1!==this.arity.leading.length)&&this.registerOptions(e,x),(this.arity.trailing.length>0||v+1!==this.arity.leading.length)&&(Jo(e,x,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,x,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex])),Ss(e,h,\"isNotOptionLike\",x,\"pushPositional\"),h=x}let E=h;if(this.arity.extra===el||this.arity.extra.length>0){let v=Oc(e,$a());if(wy(e,h,v),this.arity.extra===el){let x=Oc(e,$a());this.arity.proxy||this.registerOptions(e,x),Ss(e,h,n,x,\"pushExtraNoLimits\"),Ss(e,x,n,x,\"pushExtraNoLimits\"),wy(e,x,v)}else for(let x=0;x<this.arity.extra.length;++x){let C=Oc(e,$a());(!this.arity.proxy||x>0)&&this.registerOptions(e,C),Ss(e,E,n,C,\"pushExtra\"),wy(e,C,v),E=C}E=v}this.arity.trailing.length>0&&(Jo(e,E,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,E,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let I=E;for(let v=0;v<this.arity.trailing.length;++v){let x=Oc(e,$a());this.arity.proxy||this.registerOptions(e,x),v+1<this.arity.trailing.length&&(Jo(e,x,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,x,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex])),Ss(e,I,\"isNotOptionLike\",x,\"pushPositional\"),I=x}Ss(e,I,n,cn.ErrorNode,[\"setError\",\"Extraneous positional argument\"]),Jo(e,I,Hn.EndOfInput,cn.SuccessNode,[\"setSelectedIndex\",this.cliIndex]),Jo(e,I,Hn.EndOfPartialInput,cn.SuccessNode,[\"setSelectedIndex\",this.cliIndex])}return{machine:e,context:this.context}}registerOptions(e,r){Ss(e,r,[\"isOption\",\"--\"],r,\"inhibateOptions\"),Ss(e,r,[\"isBatchOption\",this.allOptionNames],r,[\"pushBatch\",this.allOptionNames]),Ss(e,r,[\"isBoundOption\",this.allOptionNames,this.options],r,\"pushBound\"),Ss(e,r,[\"isUnsupportedOption\",this.allOptionNames],cn.ErrorNode,[\"setError\",\"Unsupported option name\"]),Ss(e,r,[\"isInvalidOption\"],cn.ErrorNode,[\"setError\",\"Invalid option name\"]);for(let o of this.options)if(o.arity===0)for(let a of o.nameSet)Ss(e,r,[\"isOption\",a],r,[\"pushTrue\",o.preferredName]),a.startsWith(\"--\")&&!a.startsWith(\"--no-\")&&Ss(e,r,[\"isNegatedOption\",a],r,[\"pushFalse\",o.preferredName]);else{let a=Oc(e,$a());for(let n of o.nameSet)Ss(e,r,[\"isOption\",n],a,[\"pushUndefined\",o.preferredName]);for(let n=0;n<o.arity;++n){let u=Oc(e,$a());Jo(e,a,Hn.EndOfInput,cn.ErrorNode,\"setOptionArityError\"),Jo(e,a,Hn.EndOfPartialInput,cn.ErrorNode,\"setOptionArityError\"),Ss(e,a,\"isOptionLike\",cn.ErrorNode,\"setOptionArityError\");let A=o.arity===1?\"setStringValue\":\"pushStringValue\";Ss(e,a,\"isNotOptionLike\",u,A),a=u}wy(e,a,r)}}},Iy=class{constructor({binaryName:e=\"...\"}={}){this.builders=[],this.opts={binaryName:e}}static build(e,r={}){return new Iy(r).commands(e).compile()}getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Error(`Assertion failed: Out-of-bound command index (${e})`);return this.builders[e]}commands(e){for(let r of e)r(this.command());return this}command(){let e=new _T(this.builders.length,this.opts);return this.builders.push(e),e}compile(){let e=[],r=[];for(let a of this.builders){let{machine:n,context:u}=a.compile();e.push(n),r.push(u)}let o=jje(e);return qje(o),{machine:o,contexts:r,process:(a,{partial:n}={})=>{let u=n?Hn.EndOfPartialInput:Hn.EndOfInput;return Wje(o,a,{endToken:u})}}}}});function IV(){return cP.default&&\"getColorDepth\"in cP.default.WriteStream.prototype?cP.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR===\"0\"?1:process.env.FORCE_COLOR===\"1\"||typeof process.stdout<\"u\"&&process.stdout.isTTY?8:1}function BV(t){let e=wV;if(typeof e>\"u\"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=ve(\"async_hooks\");e=wV=new r;let o=process.stdout._write;process.stdout._write=function(n,u,A){let p=e.getStore();return typeof p>\"u\"?o.call(this,n,u,A):p.stdout.write(n,u,A)};let a=process.stderr._write;process.stderr._write=function(n,u,A){let p=e.getStore();return typeof p>\"u\"?a.call(this,n,u,A):p.stderr.write(n,u,A)}}return r=>e.run(t,r)}var cP,wV,vV=Et(()=>{cP=$e(ve(\"tty\"),1)});var By,DV=Et(()=>{Vp();By=class extends nt{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let o=new By(r);o.path=e.path;for(let a of e.options)switch(a.name){case\"-c\":o.commands.push(Number(a.value));break;case\"-i\":o.index=Number(a.value);break}return o}async execute(){let e=this.commands;if(typeof this.index<\"u\"&&this.index>=0&&this.index<e.length&&(e=[e[this.index]]),e.length===0)this.context.stdout.write(this.cli.usage());else if(e.length===1)this.context.stdout.write(this.cli.usage(this.contexts[e[0]].commandClass,{detailed:!0}));else if(e.length>1){this.context.stdout.write(`Multiple commands match your selection:\n`),this.context.stdout.write(`\n`);let r=0;for(let o of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[o].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(`\n`),this.context.stdout.write(`Run again with -h=<index> to see the longer details of any of those commands.\n`)}}}});async function bV(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=kV(t);return as.from(r,e).runExit(o,a)}async function xV(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=kV(t);return as.from(r,e).run(o,a)}function kV(t){let e,r,o,a;switch(typeof process<\"u\"&&typeof process.argv<\"u\"&&(o=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof nt||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?o=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],o=t[2]):t[0]&&t[0].prototype instanceof nt||Array.isArray(t[0])?(r=t[0],o=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],o=t[2],a=t[3];break}if(typeof o>\"u\")throw new Error(\"The argv parameter must be provided when running Clipanion outside of a Node context\");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}}function SV(t){return t()}var PV,as,QV=Et(()=>{$D();lP();kT();vV();Vp();DV();PV=Symbol(\"clipanion/errorCommand\");as=class{constructor({binaryLabel:e,binaryName:r=\"...\",binaryVersion:o,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Iy({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=o,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let o=new as(r),a=Array.isArray(e)?e:[e];for(let n of a)o.register(n);return o}register(e){var r;let o=new Map,a=new e;for(let p in a){let h=a[p];typeof h==\"object\"&&h!==null&&h[nt.isOption]&&o.set(p,h)}let n=this.builder.command(),u=n.cliIndex,A=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof A<\"u\")for(let p of A)n.addPath(p);this.registrations.set(e,{specs:o,builder:n,index:u});for(let[p,{definition:h}]of o.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{input:o,context:a,partial:n}=typeof e==\"object\"&&Array.isArray(e)?{input:e,context:r}:e,{contexts:u,process:A}=this.builder.compile(),p=A(o,{partial:n}),h={...as.defaultContext,...a};switch(p.selectedIndex){case rd:{let E=By.from(p,u);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=u[p.selectedIndex],I=this.registrations.get(E);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the command class to have been registered.\");let v=new E;v.context=h,v.tokens=p.tokens,v.path=p.path;try{for(let[x,{transformer:C}]of I.specs.entries())v[x]=C(I.builder,x,p,h);return v}catch(x){throw x[PV]=v,x}}break}}async run(e,r){var o,a;let n,u={...as.defaultContext,...r},A=(o=this.enableColors)!==null&&o!==void 0?o:u.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,u)}catch(E){return u.stdout.write(this.error(E,{colored:A})),1}if(n.help)return u.stdout.write(this.usage(n,{colored:A,detailed:!0})),0;n.context=u,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,I)=>this.error(E,I),format:E=>this.format(E),process:(E,I)=>this.process(E,{...u,...I}),run:(E,I)=>this.run(E,{...u,...I}),usage:(E,I)=>this.usage(E,I)};let p=this.enableCapture&&(a=BV(u))!==null&&a!==void 0?a:SV,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return u.stdout.write(this.error(E,{colored:A,command:n})),1}return h}async runExit(e,r){process.exitCode=await this.run(e,r)}definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:o}=this.getUsageByRegistration(e,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(e,{detailed:!0,inlineOptions:!1}),u=typeof e.usage.category<\"u\"?Do(e.usage.category,{format:this.format(r),paragraphs:!1}):void 0,A=typeof e.usage.description<\"u\"?Do(e.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof e.usage.details<\"u\"?Do(e.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof e.usage.examples<\"u\"?e.usage.examples.map(([E,I])=>[Do(E,{format:this.format(r),paragraphs:!1}),I.replace(/\\$0/g,this.binaryName)]):void 0;return{path:o,usage:a,category:u,description:A,details:p,examples:h,options:n}}definitions({colored:e=!1}={}){let r=[];for(let o of this.registrations.keys()){let a=this.definition(o,{colored:e});!a||r.push(a)}return r}usage(e=null,{colored:r,detailed:o=!1,prefix:a=\"$ \"}={}){var n;if(e===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<\"u\";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(x=>x.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(E){e=null;continue}}e&&(o=!0)}let u=e!==null&&e instanceof nt?e.constructor:e,A=\"\";if(u)if(o){let{description:p=\"\",details:h=\"\",examples:E=[]}=u.usage||{};p!==\"\"&&(A+=Do(p,{format:this.format(r),paragraphs:!1}).replace(/^./,x=>x.toUpperCase()),A+=`\n`),(h!==\"\"||E.length>0)&&(A+=`${this.format(r).header(\"Usage\")}\n`,A+=`\n`);let{usage:I,options:v}=this.getUsageByRegistration(u,{inlineOptions:!1});if(A+=`${this.format(r).bold(a)}${I}\n`,v.length>0){A+=`\n`,A+=`${this.format(r).header(\"Options\")}\n`;let x=v.reduce((C,R)=>Math.max(C,R.definition.length),0);A+=`\n`;for(let{definition:C,description:R}of v)A+=`  ${this.format(r).bold(C.padEnd(x))}    ${Do(R,{format:this.format(r),paragraphs:!1})}`}if(h!==\"\"&&(A+=`\n`,A+=`${this.format(r).header(\"Details\")}\n`,A+=`\n`,A+=Do(h,{format:this.format(r),paragraphs:!0})),E.length>0){A+=`\n`,A+=`${this.format(r).header(\"Examples\")}\n`;for(let[x,C]of E)A+=`\n`,A+=Do(x,{format:this.format(r),paragraphs:!1}),A+=`${C.replace(/^/m,`  ${this.format(r).bold(a)}`).replace(/\\$0/g,this.binaryName)}\n`}}else{let{usage:p}=this.getUsageByRegistration(u);A+=`${this.format(r).bold(a)}${p}\n`}else{let p=new Map;for(let[v,{index:x}]of this.registrations.entries()){if(typeof v.usage>\"u\")continue;let C=typeof v.usage.category<\"u\"?Do(v.usage.category,{format:this.format(r),paragraphs:!1}):null,R=p.get(C);typeof R>\"u\"&&p.set(C,R=[]);let{usage:N}=this.getUsageByIndex(x);R.push({commandClass:v,usage:N})}let h=Array.from(p.keys()).sort((v,x)=>v===null?-1:x===null?1:v.localeCompare(x,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),E=typeof this.binaryLabel<\"u\",I=typeof this.binaryVersion<\"u\";E||I?(E&&I?A+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)}\n\n`:E?A+=`${this.format(r).header(`${this.binaryLabel}`)}\n`:A+=`${this.format(r).header(`${this.binaryVersion}`)}\n`,A+=`  ${this.format(r).bold(a)}${this.binaryName} <command>\n`):A+=`${this.format(r).bold(a)}${this.binaryName} <command>\n`;for(let v of h){let x=p.get(v).slice().sort((R,N)=>R.usage.localeCompare(N.usage,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),C=v!==null?v.trim():\"General commands\";A+=`\n`,A+=`${this.format(r).header(`${C}`)}\n`;for(let{commandClass:R,usage:N}of x){let U=R.usage.description||\"undocumented\";A+=`\n`,A+=`  ${this.format(r).bold(N)}\n`,A+=`    ${Do(U,{format:this.format(r),paragraphs:!1})}`}}A+=`\n`,A+=Do(\"You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.\",{format:this.format(r),paragraphs:!0})}return A}error(e,r){var o,{colored:a,command:n=(o=e[PV])!==null&&o!==void 0?o:null}=r===void 0?{}:r;(!e||typeof e!=\"object\"||!(\"stack\"in e))&&(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let u=\"\",A=e.name.replace(/([a-z])([A-Z])/g,\"$1 $2\");A===\"Error\"&&(A=\"Internal Error\"),u+=`${this.format(a).error(A)}: ${e.message}\n`;let p=e.clipanion;return typeof p<\"u\"?p.type===\"usage\"&&(u+=`\n`,u+=this.usage(n)):e.stack&&(u+=`${e.stack.replace(/^.*\\n/,\"\")}\n`),u}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:as.defaultContext.colorDepth>1)?uV:AV}getUsageByRegistration(e,r){let o=this.registrations.get(e);if(typeof o>\"u\")throw new Error(\"Assertion failed: Unregistered command\");return this.getUsageByIndex(o.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};as.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:IV()}});var uI,FV=Et(()=>{Vp();uI=class extends nt{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)}\n`)}};uI.paths=[[\"--clipanion=definitions\"]]});var AI,RV=Et(()=>{Vp();AI=class extends nt{async execute(){this.context.stdout.write(this.cli.usage())}};AI.paths=[[\"-h\"],[\"--help\"]]});function uP(t={}){return Ko({definition(e,r){var o;e.addProxy({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){return o.positionals.map(({value:a})=>a)}})}var HT=Et(()=>{Ef()});var fI,TV=Et(()=>{Vp();HT();fI=class extends nt{constructor(){super(...arguments),this.args=uP()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)}\n`)}};fI.paths=[[\"--clipanion=tokens\"]]});var pI,LV=Et(()=>{Vp();pI=class extends nt{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:\"<unknown>\"}\n`)}};pI.paths=[[\"-v\"],[\"--version\"]]});var jT={};Vt(jT,{DefinitionsCommand:()=>uI,HelpCommand:()=>AI,TokensCommand:()=>fI,VersionCommand:()=>pI});var NV=Et(()=>{FV();RV();TV();LV()});function OV(t,e,r){let[o,a]=qu(e,r??{}),{arity:n=1}=a,u=t.split(\",\"),A=new Set(u);return Ko({definition(p){p.addOption({names:u,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let I,v=typeof o<\"u\"?[...o]:void 0;for(let{name:x,value:C}of E.options)!A.has(x)||(I=x,v=v??[],v.push(C));return typeof v<\"u\"?nd(I??h,v,a.validator):v}})}var MV=Et(()=>{Ef()});function UV(t,e,r){let[o,a]=qu(e,r??{}),n=t.split(\",\"),u=new Set(n);return Ko({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let E=o;for(let{name:I,value:v}of h.options)!u.has(I)||(E=v);return E}})}var _V=Et(()=>{Ef()});function HV(t,e,r){let[o,a]=qu(e,r??{}),n=t.split(\",\"),u=new Set(n);return Ko({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let E=o;for(let{name:I,value:v}of h.options)!u.has(I)||(E??(E=0),v?E+=1:E=0);return E}})}var jV=Et(()=>{Ef()});function qV(t={}){return Ko({definition(e,r){var o;e.addRest({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){let a=u=>{let A=o.positionals[u];return A.extra===el||A.extra===!1&&u<e.arity.leading.length},n=0;for(;n<o.positionals.length&&a(n);)n+=1;return o.positionals.splice(0,n).map(({value:u})=>u)}})}var GV=Et(()=>{lP();Ef()});function Zje(t,e,r){let[o,a]=qu(e,r??{}),{arity:n=1}=a,u=t.split(\",\"),A=new Set(u);return Ko({definition(p){p.addOption({names:u,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,I){let v,x=o;typeof a.env<\"u\"&&I.env[a.env]&&(v=a.env,x=I.env[a.env]);for(let{name:C,value:R}of E.options)!A.has(C)||(v=C,x=R);return typeof x==\"string\"?nd(v??h,x,a.validator):x}})}function $je(t={}){let{required:e=!0}=t;return Ko({definition(r,o){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:o,required:t.required})},transformer(r,o,a){var n;for(let u=0;u<a.positionals.length;++u){if(a.positionals[u].extra===el||e&&a.positionals[u].extra===!0||!e&&a.positionals[u].extra===!1)continue;let[A]=a.positionals.splice(u,1);return nd((n=t.name)!==null&&n!==void 0?n:o,A.value,t.validator)}}})}function YV(t,...e){return typeof t==\"string\"?Zje(t,...e):$je(t)}var WV=Et(()=>{lP();Ef()});var ge={};Vt(ge,{Array:()=>OV,Boolean:()=>UV,Counter:()=>HV,Proxy:()=>uP,Rest:()=>qV,String:()=>YV,applyValidator:()=>nd,cleanValidationError:()=>rP,formatError:()=>iI,isOptionSymbol:()=>nI,makeCommandOption:()=>Ko,rerouteArguments:()=>qu});var KV=Et(()=>{Ef();HT();MV();_V();jV();GV();WV()});var hI={};Vt(hI,{Builtins:()=>jT,Cli:()=>as,Command:()=>nt,Option:()=>ge,UsageError:()=>it,formatMarkdownish:()=>Do,run:()=>xV,runExit:()=>bV});var jt=Et(()=>{tP();kT();Vp();QV();NV();KV()});var VV=_((bkt,eqe)=>{eqe.exports={name:\"dotenv\",version:\"16.3.1\",description:\"Loads environment variables from .env file\",main:\"lib/main.js\",types:\"lib/main.d.ts\",exports:{\".\":{types:\"./lib/main.d.ts\",require:\"./lib/main.js\",default:\"./lib/main.js\"},\"./config\":\"./config.js\",\"./config.js\":\"./config.js\",\"./lib/env-options\":\"./lib/env-options.js\",\"./lib/env-options.js\":\"./lib/env-options.js\",\"./lib/cli-options\":\"./lib/cli-options.js\",\"./lib/cli-options.js\":\"./lib/cli-options.js\",\"./package.json\":\"./package.json\"},scripts:{\"dts-check\":\"tsc --project tests/types/tsconfig.json\",lint:\"standard\",\"lint-readme\":\"standard-markdown\",pretest:\"npm run lint && npm run dts-check\",test:\"tap tests/*.js --100 -Rspec\",prerelease:\"npm test\",release:\"standard-version\"},repository:{type:\"git\",url:\"git://github.com/motdotla/dotenv.git\"},funding:\"https://github.com/motdotla/dotenv?sponsor=1\",keywords:[\"dotenv\",\"env\",\".env\",\"environment\",\"variables\",\"config\",\"settings\"],readmeFilename:\"README.md\",license:\"BSD-2-Clause\",devDependencies:{\"@definitelytyped/dtslint\":\"^0.0.133\",\"@types/node\":\"^18.11.3\",decache:\"^4.6.1\",sinon:\"^14.0.1\",standard:\"^17.0.0\",\"standard-markdown\":\"^7.1.0\",\"standard-version\":\"^9.5.0\",tap:\"^16.3.0\",tar:\"^6.1.11\",typescript:\"^4.8.4\"},engines:{node:\">=12\"},browser:{fs:!1}}});var ZV=_((xkt,Cf)=>{var JV=ve(\"fs\"),GT=ve(\"path\"),tqe=ve(\"os\"),rqe=ve(\"crypto\"),nqe=VV(),YT=nqe.version,iqe=/(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg;function sqe(t){let e={},r=t.toString();r=r.replace(/\\r\\n?/mg,`\n`);let o;for(;(o=iqe.exec(r))!=null;){let a=o[1],n=o[2]||\"\";n=n.trim();let u=n[0];n=n.replace(/^(['\"`])([\\s\\S]*)\\1$/mg,\"$2\"),u==='\"'&&(n=n.replace(/\\\\n/g,`\n`),n=n.replace(/\\\\r/g,\"\\r\")),e[a]=n}return e}function oqe(t){let e=XV(t),r=bs.configDotenv({path:e});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);let o=zV(t).split(\",\"),a=o.length,n;for(let u=0;u<a;u++)try{let A=o[u].trim(),p=cqe(r,A);n=bs.decrypt(p.ciphertext,p.key);break}catch(A){if(u+1>=a)throw A}return bs.parse(n)}function aqe(t){console.log(`[dotenv@${YT}][INFO] ${t}`)}function lqe(t){console.log(`[dotenv@${YT}][WARN] ${t}`)}function qT(t){console.log(`[dotenv@${YT}][DEBUG] ${t}`)}function zV(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:\"\"}function cqe(t,e){let r;try{r=new URL(e)}catch(A){throw A.code===\"ERR_INVALID_URL\"?new Error(\"INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development\"):A}let o=r.password;if(!o)throw new Error(\"INVALID_DOTENV_KEY: Missing key part\");let a=r.searchParams.get(\"environment\");if(!a)throw new Error(\"INVALID_DOTENV_KEY: Missing environment part\");let n=`DOTENV_VAULT_${a.toUpperCase()}`,u=t.parsed[n];if(!u)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:u,key:o}}function XV(t){let e=GT.resolve(process.cwd(),\".env\");return t&&t.path&&t.path.length>0&&(e=t.path),e.endsWith(\".vault\")?e:`${e}.vault`}function uqe(t){return t[0]===\"~\"?GT.join(tqe.homedir(),t.slice(1)):t}function Aqe(t){aqe(\"Loading env from encrypted .env.vault\");let e=bs._parseVault(t),r=process.env;return t&&t.processEnv!=null&&(r=t.processEnv),bs.populate(r,e,t),{parsed:e}}function fqe(t){let e=GT.resolve(process.cwd(),\".env\"),r=\"utf8\",o=Boolean(t&&t.debug);t&&(t.path!=null&&(e=uqe(t.path)),t.encoding!=null&&(r=t.encoding));try{let a=bs.parse(JV.readFileSync(e,{encoding:r})),n=process.env;return t&&t.processEnv!=null&&(n=t.processEnv),bs.populate(n,a,t),{parsed:a}}catch(a){return o&&qT(`Failed to load ${e} ${a.message}`),{error:a}}}function pqe(t){let e=XV(t);return zV(t).length===0?bs.configDotenv(t):JV.existsSync(e)?bs._configVault(t):(lqe(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),bs.configDotenv(t))}function hqe(t,e){let r=Buffer.from(e.slice(-64),\"hex\"),o=Buffer.from(t,\"base64\"),a=o.slice(0,12),n=o.slice(-16);o=o.slice(12,-16);try{let u=rqe.createDecipheriv(\"aes-256-gcm\",r,a);return u.setAuthTag(n),`${u.update(o)}${u.final()}`}catch(u){let A=u instanceof RangeError,p=u.message===\"Invalid key length\",h=u.message===\"Unsupported state or unable to authenticate data\";if(A||p){let E=\"INVALID_DOTENV_KEY: It must be 64 characters long (or more)\";throw new Error(E)}else if(h){let E=\"DECRYPTION_FAILED: Please check your DOTENV_KEY\";throw new Error(E)}else throw console.error(\"Error: \",u.code),console.error(\"Error: \",u.message),u}}function gqe(t,e,r={}){let o=Boolean(r&&r.debug),a=Boolean(r&&r.override);if(typeof e!=\"object\")throw new Error(\"OBJECT_REQUIRED: Please check the processEnv argument being passed to populate\");for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(t,n)?(a===!0&&(t[n]=e[n]),o&&qT(a===!0?`\"${n}\" is already defined and WAS overwritten`:`\"${n}\" is already defined and was NOT overwritten`)):t[n]=e[n]}var bs={configDotenv:fqe,_configVault:Aqe,_parseVault:oqe,config:pqe,decrypt:hqe,parse:sqe,populate:gqe};Cf.exports.configDotenv=bs.configDotenv;Cf.exports._configVault=bs._configVault;Cf.exports._parseVault=bs._parseVault;Cf.exports.config=bs.config;Cf.exports.decrypt=bs.decrypt;Cf.exports.parse=bs.parse;Cf.exports.populate=bs.populate;Cf.exports=bs});var eJ=_((kkt,$V)=>{\"use strict\";$V.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var id=_((Qkt,WT)=>{\"use strict\";var dqe=eJ(),tJ=t=>{if(t<1)throw new TypeError(\"Expected `concurrency` to be a number from 1 and up\");let e=[],r=0,o=()=>{r--,e.length>0&&e.shift()()},a=(A,p,...h)=>{r++;let E=dqe(A,...h);p(E),E.then(o,o)},n=(A,p,...h)=>{r<t?a(A,p,...h):e.push(a.bind(null,A,p,...h))},u=(A,...p)=>new Promise(h=>n(A,h,...p));return Object.defineProperties(u,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),u};WT.exports=tJ;WT.exports.default=tJ});function Wu(t){return`YN${t.toString(10).padStart(4,\"0\")}`}function AP(t){let e=Number(t.slice(2));if(typeof wr[e]>\"u\")throw new Error(`Unknown message name: \"${t}\"`);return e}var wr,fP=Et(()=>{wr=(Oe=>(Oe[Oe.UNNAMED=0]=\"UNNAMED\",Oe[Oe.EXCEPTION=1]=\"EXCEPTION\",Oe[Oe.MISSING_PEER_DEPENDENCY=2]=\"MISSING_PEER_DEPENDENCY\",Oe[Oe.CYCLIC_DEPENDENCIES=3]=\"CYCLIC_DEPENDENCIES\",Oe[Oe.DISABLED_BUILD_SCRIPTS=4]=\"DISABLED_BUILD_SCRIPTS\",Oe[Oe.BUILD_DISABLED=5]=\"BUILD_DISABLED\",Oe[Oe.SOFT_LINK_BUILD=6]=\"SOFT_LINK_BUILD\",Oe[Oe.MUST_BUILD=7]=\"MUST_BUILD\",Oe[Oe.MUST_REBUILD=8]=\"MUST_REBUILD\",Oe[Oe.BUILD_FAILED=9]=\"BUILD_FAILED\",Oe[Oe.RESOLVER_NOT_FOUND=10]=\"RESOLVER_NOT_FOUND\",Oe[Oe.FETCHER_NOT_FOUND=11]=\"FETCHER_NOT_FOUND\",Oe[Oe.LINKER_NOT_FOUND=12]=\"LINKER_NOT_FOUND\",Oe[Oe.FETCH_NOT_CACHED=13]=\"FETCH_NOT_CACHED\",Oe[Oe.YARN_IMPORT_FAILED=14]=\"YARN_IMPORT_FAILED\",Oe[Oe.REMOTE_INVALID=15]=\"REMOTE_INVALID\",Oe[Oe.REMOTE_NOT_FOUND=16]=\"REMOTE_NOT_FOUND\",Oe[Oe.RESOLUTION_PACK=17]=\"RESOLUTION_PACK\",Oe[Oe.CACHE_CHECKSUM_MISMATCH=18]=\"CACHE_CHECKSUM_MISMATCH\",Oe[Oe.UNUSED_CACHE_ENTRY=19]=\"UNUSED_CACHE_ENTRY\",Oe[Oe.MISSING_LOCKFILE_ENTRY=20]=\"MISSING_LOCKFILE_ENTRY\",Oe[Oe.WORKSPACE_NOT_FOUND=21]=\"WORKSPACE_NOT_FOUND\",Oe[Oe.TOO_MANY_MATCHING_WORKSPACES=22]=\"TOO_MANY_MATCHING_WORKSPACES\",Oe[Oe.CONSTRAINTS_MISSING_DEPENDENCY=23]=\"CONSTRAINTS_MISSING_DEPENDENCY\",Oe[Oe.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]=\"CONSTRAINTS_INCOMPATIBLE_DEPENDENCY\",Oe[Oe.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]=\"CONSTRAINTS_EXTRANEOUS_DEPENDENCY\",Oe[Oe.CONSTRAINTS_INVALID_DEPENDENCY=26]=\"CONSTRAINTS_INVALID_DEPENDENCY\",Oe[Oe.CANT_SUGGEST_RESOLUTIONS=27]=\"CANT_SUGGEST_RESOLUTIONS\",Oe[Oe.FROZEN_LOCKFILE_EXCEPTION=28]=\"FROZEN_LOCKFILE_EXCEPTION\",Oe[Oe.CROSS_DRIVE_VIRTUAL_LOCAL=29]=\"CROSS_DRIVE_VIRTUAL_LOCAL\",Oe[Oe.FETCH_FAILED=30]=\"FETCH_FAILED\",Oe[Oe.DANGEROUS_NODE_MODULES=31]=\"DANGEROUS_NODE_MODULES\",Oe[Oe.NODE_GYP_INJECTED=32]=\"NODE_GYP_INJECTED\",Oe[Oe.AUTHENTICATION_NOT_FOUND=33]=\"AUTHENTICATION_NOT_FOUND\",Oe[Oe.INVALID_CONFIGURATION_KEY=34]=\"INVALID_CONFIGURATION_KEY\",Oe[Oe.NETWORK_ERROR=35]=\"NETWORK_ERROR\",Oe[Oe.LIFECYCLE_SCRIPT=36]=\"LIFECYCLE_SCRIPT\",Oe[Oe.CONSTRAINTS_MISSING_FIELD=37]=\"CONSTRAINTS_MISSING_FIELD\",Oe[Oe.CONSTRAINTS_INCOMPATIBLE_FIELD=38]=\"CONSTRAINTS_INCOMPATIBLE_FIELD\",Oe[Oe.CONSTRAINTS_EXTRANEOUS_FIELD=39]=\"CONSTRAINTS_EXTRANEOUS_FIELD\",Oe[Oe.CONSTRAINTS_INVALID_FIELD=40]=\"CONSTRAINTS_INVALID_FIELD\",Oe[Oe.AUTHENTICATION_INVALID=41]=\"AUTHENTICATION_INVALID\",Oe[Oe.PROLOG_UNKNOWN_ERROR=42]=\"PROLOG_UNKNOWN_ERROR\",Oe[Oe.PROLOG_SYNTAX_ERROR=43]=\"PROLOG_SYNTAX_ERROR\",Oe[Oe.PROLOG_EXISTENCE_ERROR=44]=\"PROLOG_EXISTENCE_ERROR\",Oe[Oe.STACK_OVERFLOW_RESOLUTION=45]=\"STACK_OVERFLOW_RESOLUTION\",Oe[Oe.AUTOMERGE_FAILED_TO_PARSE=46]=\"AUTOMERGE_FAILED_TO_PARSE\",Oe[Oe.AUTOMERGE_IMMUTABLE=47]=\"AUTOMERGE_IMMUTABLE\",Oe[Oe.AUTOMERGE_SUCCESS=48]=\"AUTOMERGE_SUCCESS\",Oe[Oe.AUTOMERGE_REQUIRED=49]=\"AUTOMERGE_REQUIRED\",Oe[Oe.DEPRECATED_CLI_SETTINGS=50]=\"DEPRECATED_CLI_SETTINGS\",Oe[Oe.PLUGIN_NAME_NOT_FOUND=51]=\"PLUGIN_NAME_NOT_FOUND\",Oe[Oe.INVALID_PLUGIN_REFERENCE=52]=\"INVALID_PLUGIN_REFERENCE\",Oe[Oe.CONSTRAINTS_AMBIGUITY=53]=\"CONSTRAINTS_AMBIGUITY\",Oe[Oe.CACHE_OUTSIDE_PROJECT=54]=\"CACHE_OUTSIDE_PROJECT\",Oe[Oe.IMMUTABLE_INSTALL=55]=\"IMMUTABLE_INSTALL\",Oe[Oe.IMMUTABLE_CACHE=56]=\"IMMUTABLE_CACHE\",Oe[Oe.INVALID_MANIFEST=57]=\"INVALID_MANIFEST\",Oe[Oe.PACKAGE_PREPARATION_FAILED=58]=\"PACKAGE_PREPARATION_FAILED\",Oe[Oe.INVALID_RANGE_PEER_DEPENDENCY=59]=\"INVALID_RANGE_PEER_DEPENDENCY\",Oe[Oe.INCOMPATIBLE_PEER_DEPENDENCY=60]=\"INCOMPATIBLE_PEER_DEPENDENCY\",Oe[Oe.DEPRECATED_PACKAGE=61]=\"DEPRECATED_PACKAGE\",Oe[Oe.INCOMPATIBLE_OS=62]=\"INCOMPATIBLE_OS\",Oe[Oe.INCOMPATIBLE_CPU=63]=\"INCOMPATIBLE_CPU\",Oe[Oe.FROZEN_ARTIFACT_EXCEPTION=64]=\"FROZEN_ARTIFACT_EXCEPTION\",Oe[Oe.TELEMETRY_NOTICE=65]=\"TELEMETRY_NOTICE\",Oe[Oe.PATCH_HUNK_FAILED=66]=\"PATCH_HUNK_FAILED\",Oe[Oe.INVALID_CONFIGURATION_VALUE=67]=\"INVALID_CONFIGURATION_VALUE\",Oe[Oe.UNUSED_PACKAGE_EXTENSION=68]=\"UNUSED_PACKAGE_EXTENSION\",Oe[Oe.REDUNDANT_PACKAGE_EXTENSION=69]=\"REDUNDANT_PACKAGE_EXTENSION\",Oe[Oe.AUTO_NM_SUCCESS=70]=\"AUTO_NM_SUCCESS\",Oe[Oe.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]=\"NM_CANT_INSTALL_EXTERNAL_SOFT_LINK\",Oe[Oe.NM_PRESERVE_SYMLINKS_REQUIRED=72]=\"NM_PRESERVE_SYMLINKS_REQUIRED\",Oe[Oe.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]=\"UPDATE_LOCKFILE_ONLY_SKIP_LINK\",Oe[Oe.NM_HARDLINKS_MODE_DOWNGRADED=74]=\"NM_HARDLINKS_MODE_DOWNGRADED\",Oe[Oe.PROLOG_INSTANTIATION_ERROR=75]=\"PROLOG_INSTANTIATION_ERROR\",Oe[Oe.INCOMPATIBLE_ARCHITECTURE=76]=\"INCOMPATIBLE_ARCHITECTURE\",Oe[Oe.GHOST_ARCHITECTURE=77]=\"GHOST_ARCHITECTURE\",Oe[Oe.RESOLUTION_MISMATCH=78]=\"RESOLUTION_MISMATCH\",Oe[Oe.PROLOG_LIMIT_EXCEEDED=79]=\"PROLOG_LIMIT_EXCEEDED\",Oe[Oe.NETWORK_DISABLED=80]=\"NETWORK_DISABLED\",Oe[Oe.NETWORK_UNSAFE_HTTP=81]=\"NETWORK_UNSAFE_HTTP\",Oe[Oe.RESOLUTION_FAILED=82]=\"RESOLUTION_FAILED\",Oe[Oe.AUTOMERGE_GIT_ERROR=83]=\"AUTOMERGE_GIT_ERROR\",Oe[Oe.CONSTRAINTS_CHECK_FAILED=84]=\"CONSTRAINTS_CHECK_FAILED\",Oe[Oe.UPDATED_RESOLUTION_RECORD=85]=\"UPDATED_RESOLUTION_RECORD\",Oe[Oe.EXPLAIN_PEER_DEPENDENCIES_CTA=86]=\"EXPLAIN_PEER_DEPENDENCIES_CTA\",Oe[Oe.MIGRATION_SUCCESS=87]=\"MIGRATION_SUCCESS\",Oe[Oe.VERSION_NOTICE=88]=\"VERSION_NOTICE\",Oe[Oe.TIPS_NOTICE=89]=\"TIPS_NOTICE\",Oe[Oe.OFFLINE_MODE_ENABLED=90]=\"OFFLINE_MODE_ENABLED\",Oe))(wr||{})});var gI=_((Rkt,rJ)=>{var mqe=\"2.0.0\",yqe=Number.MAX_SAFE_INTEGER||9007199254740991,Eqe=16,Cqe=256-6,wqe=[\"major\",\"premajor\",\"minor\",\"preminor\",\"patch\",\"prepatch\",\"prerelease\"];rJ.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Eqe,MAX_SAFE_BUILD_LENGTH:Cqe,MAX_SAFE_INTEGER:yqe,RELEASE_TYPES:wqe,SEMVER_SPEC_VERSION:mqe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var dI=_((Tkt,nJ)=>{var Iqe=typeof process==\"object\"&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error(\"SEMVER\",...t):()=>{};nJ.exports=Iqe});var vy=_((wf,iJ)=>{var{MAX_SAFE_COMPONENT_LENGTH:KT,MAX_SAFE_BUILD_LENGTH:Bqe,MAX_LENGTH:vqe}=gI(),Dqe=dI();wf=iJ.exports={};var Pqe=wf.re=[],Sqe=wf.safeRe=[],lr=wf.src=[],cr=wf.t={},bqe=0,VT=\"[a-zA-Z0-9-]\",xqe=[[\"\\\\s\",1],[\"\\\\d\",vqe],[VT,Bqe]],kqe=t=>{for(let[e,r]of xqe)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Jr=(t,e,r)=>{let o=kqe(e),a=bqe++;Dqe(t,a,e),cr[t]=a,lr[a]=e,Pqe[a]=new RegExp(e,r?\"g\":void 0),Sqe[a]=new RegExp(o,r?\"g\":void 0)};Jr(\"NUMERICIDENTIFIER\",\"0|[1-9]\\\\d*\");Jr(\"NUMERICIDENTIFIERLOOSE\",\"\\\\d+\");Jr(\"NONNUMERICIDENTIFIER\",`\\\\d*[a-zA-Z-]${VT}*`);Jr(\"MAINVERSION\",`(${lr[cr.NUMERICIDENTIFIER]})\\\\.(${lr[cr.NUMERICIDENTIFIER]})\\\\.(${lr[cr.NUMERICIDENTIFIER]})`);Jr(\"MAINVERSIONLOOSE\",`(${lr[cr.NUMERICIDENTIFIERLOOSE]})\\\\.(${lr[cr.NUMERICIDENTIFIERLOOSE]})\\\\.(${lr[cr.NUMERICIDENTIFIERLOOSE]})`);Jr(\"PRERELEASEIDENTIFIER\",`(?:${lr[cr.NUMERICIDENTIFIER]}|${lr[cr.NONNUMERICIDENTIFIER]})`);Jr(\"PRERELEASEIDENTIFIERLOOSE\",`(?:${lr[cr.NUMERICIDENTIFIERLOOSE]}|${lr[cr.NONNUMERICIDENTIFIER]})`);Jr(\"PRERELEASE\",`(?:-(${lr[cr.PRERELEASEIDENTIFIER]}(?:\\\\.${lr[cr.PRERELEASEIDENTIFIER]})*))`);Jr(\"PRERELEASELOOSE\",`(?:-?(${lr[cr.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${lr[cr.PRERELEASEIDENTIFIERLOOSE]})*))`);Jr(\"BUILDIDENTIFIER\",`${VT}+`);Jr(\"BUILD\",`(?:\\\\+(${lr[cr.BUILDIDENTIFIER]}(?:\\\\.${lr[cr.BUILDIDENTIFIER]})*))`);Jr(\"FULLPLAIN\",`v?${lr[cr.MAINVERSION]}${lr[cr.PRERELEASE]}?${lr[cr.BUILD]}?`);Jr(\"FULL\",`^${lr[cr.FULLPLAIN]}$`);Jr(\"LOOSEPLAIN\",`[v=\\\\s]*${lr[cr.MAINVERSIONLOOSE]}${lr[cr.PRERELEASELOOSE]}?${lr[cr.BUILD]}?`);Jr(\"LOOSE\",`^${lr[cr.LOOSEPLAIN]}$`);Jr(\"GTLT\",\"((?:<|>)?=?)\");Jr(\"XRANGEIDENTIFIERLOOSE\",`${lr[cr.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);Jr(\"XRANGEIDENTIFIER\",`${lr[cr.NUMERICIDENTIFIER]}|x|X|\\\\*`);Jr(\"XRANGEPLAIN\",`[v=\\\\s]*(${lr[cr.XRANGEIDENTIFIER]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIER]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIER]})(?:${lr[cr.PRERELEASE]})?${lr[cr.BUILD]}?)?)?`);Jr(\"XRANGEPLAINLOOSE\",`[v=\\\\s]*(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:${lr[cr.PRERELEASELOOSE]})?${lr[cr.BUILD]}?)?)?`);Jr(\"XRANGE\",`^${lr[cr.GTLT]}\\\\s*${lr[cr.XRANGEPLAIN]}$`);Jr(\"XRANGELOOSE\",`^${lr[cr.GTLT]}\\\\s*${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"COERCE\",`(^|[^\\\\d])(\\\\d{1,${KT}})(?:\\\\.(\\\\d{1,${KT}}))?(?:\\\\.(\\\\d{1,${KT}}))?(?:$|[^\\\\d])`);Jr(\"COERCERTL\",lr[cr.COERCE],!0);Jr(\"LONETILDE\",\"(?:~>?)\");Jr(\"TILDETRIM\",`(\\\\s*)${lr[cr.LONETILDE]}\\\\s+`,!0);wf.tildeTrimReplace=\"$1~\";Jr(\"TILDE\",`^${lr[cr.LONETILDE]}${lr[cr.XRANGEPLAIN]}$`);Jr(\"TILDELOOSE\",`^${lr[cr.LONETILDE]}${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"LONECARET\",\"(?:\\\\^)\");Jr(\"CARETTRIM\",`(\\\\s*)${lr[cr.LONECARET]}\\\\s+`,!0);wf.caretTrimReplace=\"$1^\";Jr(\"CARET\",`^${lr[cr.LONECARET]}${lr[cr.XRANGEPLAIN]}$`);Jr(\"CARETLOOSE\",`^${lr[cr.LONECARET]}${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"COMPARATORLOOSE\",`^${lr[cr.GTLT]}\\\\s*(${lr[cr.LOOSEPLAIN]})$|^$`);Jr(\"COMPARATOR\",`^${lr[cr.GTLT]}\\\\s*(${lr[cr.FULLPLAIN]})$|^$`);Jr(\"COMPARATORTRIM\",`(\\\\s*)${lr[cr.GTLT]}\\\\s*(${lr[cr.LOOSEPLAIN]}|${lr[cr.XRANGEPLAIN]})`,!0);wf.comparatorTrimReplace=\"$1$2$3\";Jr(\"HYPHENRANGE\",`^\\\\s*(${lr[cr.XRANGEPLAIN]})\\\\s+-\\\\s+(${lr[cr.XRANGEPLAIN]})\\\\s*$`);Jr(\"HYPHENRANGELOOSE\",`^\\\\s*(${lr[cr.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${lr[cr.XRANGEPLAINLOOSE]})\\\\s*$`);Jr(\"STAR\",\"(<|>)?=?\\\\s*\\\\*\");Jr(\"GTE0\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");Jr(\"GTE0PRE\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\")});var pP=_((Lkt,sJ)=>{var Qqe=Object.freeze({loose:!0}),Fqe=Object.freeze({}),Rqe=t=>t?typeof t!=\"object\"?Qqe:t:Fqe;sJ.exports=Rqe});var JT=_((Nkt,lJ)=>{var oJ=/^[0-9]+$/,aJ=(t,e)=>{let r=oJ.test(t),o=oJ.test(e);return r&&o&&(t=+t,e=+e),t===e?0:r&&!o?-1:o&&!r?1:t<e?-1:1},Tqe=(t,e)=>aJ(e,t);lJ.exports={compareIdentifiers:aJ,rcompareIdentifiers:Tqe}});var Po=_((Okt,fJ)=>{var hP=dI(),{MAX_LENGTH:cJ,MAX_SAFE_INTEGER:gP}=gI(),{safeRe:uJ,t:AJ}=vy(),Lqe=pP(),{compareIdentifiers:Dy}=JT(),tl=class{constructor(e,r){if(r=Lqe(r),e instanceof tl){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!=\"string\")throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof e}\".`);if(e.length>cJ)throw new TypeError(`version is longer than ${cJ} characters`);hP(\"SemVer\",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let o=e.trim().match(r.loose?uJ[AJ.LOOSE]:uJ[AJ.FULL]);if(!o)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>gP||this.major<0)throw new TypeError(\"Invalid major version\");if(this.minor>gP||this.minor<0)throw new TypeError(\"Invalid minor version\");if(this.patch>gP||this.patch<0)throw new TypeError(\"Invalid patch version\");o[4]?this.prerelease=o[4].split(\".\").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n<gP)return n}return a}):this.prerelease=[],this.build=o[5]?o[5].split(\".\"):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(\".\")}`),this.version}toString(){return this.version}compare(e){if(hP(\"SemVer.compare\",this.version,this.options,e),!(e instanceof tl)){if(typeof e==\"string\"&&e===this.version)return 0;e=new tl(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof tl||(e=new tl(e,this.options)),Dy(this.major,e.major)||Dy(this.minor,e.minor)||Dy(this.patch,e.patch)}comparePre(e){if(e instanceof tl||(e=new tl(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let o=this.prerelease[r],a=e.prerelease[r];if(hP(\"prerelease compare\",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return Dy(o,a)}while(++r)}compareBuild(e){e instanceof tl||(e=new tl(e,this.options));let r=0;do{let o=this.build[r],a=e.build[r];if(hP(\"prerelease compare\",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return Dy(o,a)}while(++r)}inc(e,r,o){switch(e){case\"premajor\":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(\"pre\",r,o);break;case\"preminor\":this.prerelease.length=0,this.patch=0,this.minor++,this.inc(\"pre\",r,o);break;case\"prepatch\":this.prerelease.length=0,this.inc(\"patch\",r,o),this.inc(\"pre\",r,o);break;case\"prerelease\":this.prerelease.length===0&&this.inc(\"patch\",r,o),this.inc(\"pre\",r,o);break;case\"major\":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case\"minor\":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case\"patch\":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case\"pre\":{let a=Number(o)?1:0;if(!r&&o===!1)throw new Error(\"invalid increment argument: identifier is empty\");if(this.prerelease.length===0)this.prerelease=[a];else{let n=this.prerelease.length;for(;--n>=0;)typeof this.prerelease[n]==\"number\"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(\".\")&&o===!1)throw new Error(\"invalid increment argument: identifier already exists\");this.prerelease.push(a)}}if(r){let n=[r,a];o===!1&&(n=[r]),Dy(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(\".\")}`),this}};fJ.exports=tl});var sd=_((Mkt,hJ)=>{var pJ=Po(),Nqe=(t,e,r=!1)=>{if(t instanceof pJ)return t;try{return new pJ(t,e)}catch(o){if(!r)return null;throw o}};hJ.exports=Nqe});var dJ=_((Ukt,gJ)=>{var Oqe=sd(),Mqe=(t,e)=>{let r=Oqe(t,e);return r?r.version:null};gJ.exports=Mqe});var yJ=_((_kt,mJ)=>{var Uqe=sd(),_qe=(t,e)=>{let r=Uqe(t.trim().replace(/^[=v]+/,\"\"),e);return r?r.version:null};mJ.exports=_qe});var wJ=_((Hkt,CJ)=>{var EJ=Po(),Hqe=(t,e,r,o,a)=>{typeof r==\"string\"&&(a=o,o=r,r=void 0);try{return new EJ(t instanceof EJ?t.version:t,r).inc(e,o,a).version}catch{return null}};CJ.exports=Hqe});var vJ=_((jkt,BJ)=>{var IJ=sd(),jqe=(t,e)=>{let r=IJ(t,null,!0),o=IJ(e,null,!0),a=r.compare(o);if(a===0)return null;let n=a>0,u=n?r:o,A=n?o:r,p=!!u.prerelease.length;if(!!A.prerelease.length&&!p)return!A.patch&&!A.minor?\"major\":u.patch?\"patch\":u.minor?\"minor\":\"major\";let E=p?\"pre\":\"\";return r.major!==o.major?E+\"major\":r.minor!==o.minor?E+\"minor\":r.patch!==o.patch?E+\"patch\":\"prerelease\"};BJ.exports=jqe});var PJ=_((qkt,DJ)=>{var qqe=Po(),Gqe=(t,e)=>new qqe(t,e).major;DJ.exports=Gqe});var bJ=_((Gkt,SJ)=>{var Yqe=Po(),Wqe=(t,e)=>new Yqe(t,e).minor;SJ.exports=Wqe});var kJ=_((Ykt,xJ)=>{var Kqe=Po(),Vqe=(t,e)=>new Kqe(t,e).patch;xJ.exports=Vqe});var FJ=_((Wkt,QJ)=>{var Jqe=sd(),zqe=(t,e)=>{let r=Jqe(t,e);return r&&r.prerelease.length?r.prerelease:null};QJ.exports=zqe});var Nl=_((Kkt,TJ)=>{var RJ=Po(),Xqe=(t,e,r)=>new RJ(t,r).compare(new RJ(e,r));TJ.exports=Xqe});var NJ=_((Vkt,LJ)=>{var Zqe=Nl(),$qe=(t,e,r)=>Zqe(e,t,r);LJ.exports=$qe});var MJ=_((Jkt,OJ)=>{var eGe=Nl(),tGe=(t,e)=>eGe(t,e,!0);OJ.exports=tGe});var dP=_((zkt,_J)=>{var UJ=Po(),rGe=(t,e,r)=>{let o=new UJ(t,r),a=new UJ(e,r);return o.compare(a)||o.compareBuild(a)};_J.exports=rGe});var jJ=_((Xkt,HJ)=>{var nGe=dP(),iGe=(t,e)=>t.sort((r,o)=>nGe(r,o,e));HJ.exports=iGe});var GJ=_((Zkt,qJ)=>{var sGe=dP(),oGe=(t,e)=>t.sort((r,o)=>sGe(o,r,e));qJ.exports=oGe});var mI=_(($kt,YJ)=>{var aGe=Nl(),lGe=(t,e,r)=>aGe(t,e,r)>0;YJ.exports=lGe});var mP=_((eQt,WJ)=>{var cGe=Nl(),uGe=(t,e,r)=>cGe(t,e,r)<0;WJ.exports=uGe});var zT=_((tQt,KJ)=>{var AGe=Nl(),fGe=(t,e,r)=>AGe(t,e,r)===0;KJ.exports=fGe});var XT=_((rQt,VJ)=>{var pGe=Nl(),hGe=(t,e,r)=>pGe(t,e,r)!==0;VJ.exports=hGe});var yP=_((nQt,JJ)=>{var gGe=Nl(),dGe=(t,e,r)=>gGe(t,e,r)>=0;JJ.exports=dGe});var EP=_((iQt,zJ)=>{var mGe=Nl(),yGe=(t,e,r)=>mGe(t,e,r)<=0;zJ.exports=yGe});var ZT=_((sQt,XJ)=>{var EGe=zT(),CGe=XT(),wGe=mI(),IGe=yP(),BGe=mP(),vGe=EP(),DGe=(t,e,r,o)=>{switch(e){case\"===\":return typeof t==\"object\"&&(t=t.version),typeof r==\"object\"&&(r=r.version),t===r;case\"!==\":return typeof t==\"object\"&&(t=t.version),typeof r==\"object\"&&(r=r.version),t!==r;case\"\":case\"=\":case\"==\":return EGe(t,r,o);case\"!=\":return CGe(t,r,o);case\">\":return wGe(t,r,o);case\">=\":return IGe(t,r,o);case\"<\":return BGe(t,r,o);case\"<=\":return vGe(t,r,o);default:throw new TypeError(`Invalid operator: ${e}`)}};XJ.exports=DGe});var $J=_((oQt,ZJ)=>{var PGe=Po(),SGe=sd(),{safeRe:CP,t:wP}=vy(),bGe=(t,e)=>{if(t instanceof PGe)return t;if(typeof t==\"number\"&&(t=String(t)),typeof t!=\"string\")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(CP[wP.COERCE]);else{let o;for(;(o=CP[wP.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||o.index+o[0].length!==r.index+r[0].length)&&(r=o),CP[wP.COERCERTL].lastIndex=o.index+o[1].length+o[2].length;CP[wP.COERCERTL].lastIndex=-1}return r===null?null:SGe(`${r[2]}.${r[3]||\"0\"}.${r[4]||\"0\"}`,e)};ZJ.exports=bGe});var tz=_((aQt,ez)=>{\"use strict\";ez.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var IP=_((lQt,rz)=>{\"use strict\";rz.exports=Cn;Cn.Node=od;Cn.create=Cn;function Cn(t){var e=this;if(e instanceof Cn||(e=new Cn),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach==\"function\")t.forEach(function(a){e.push(a)});else if(arguments.length>0)for(var r=0,o=arguments.length;r<o;r++)e.push(arguments[r]);return e}Cn.prototype.removeNode=function(t){if(t.list!==this)throw new Error(\"removing node which does not belong to this list\");var e=t.next,r=t.prev;return e&&(e.prev=r),r&&(r.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=r),t.list.length--,t.next=null,t.prev=null,t.list=null,e};Cn.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}};Cn.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}};Cn.prototype.push=function(){for(var t=0,e=arguments.length;t<e;t++)kGe(this,arguments[t]);return this.length};Cn.prototype.unshift=function(){for(var t=0,e=arguments.length;t<e;t++)QGe(this,arguments[t]);return this.length};Cn.prototype.pop=function(){if(!!this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}};Cn.prototype.shift=function(){if(!!this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}};Cn.prototype.forEach=function(t,e){e=e||this;for(var r=this.head,o=0;r!==null;o++)t.call(e,r.value,o,this),r=r.next};Cn.prototype.forEachReverse=function(t,e){e=e||this;for(var r=this.tail,o=this.length-1;r!==null;o--)t.call(e,r.value,o,this),r=r.prev};Cn.prototype.get=function(t){for(var e=0,r=this.head;r!==null&&e<t;e++)r=r.next;if(e===t&&r!==null)return r.value};Cn.prototype.getReverse=function(t){for(var e=0,r=this.tail;r!==null&&e<t;e++)r=r.prev;if(e===t&&r!==null)return r.value};Cn.prototype.map=function(t,e){e=e||this;for(var r=new Cn,o=this.head;o!==null;)r.push(t.call(e,o.value,this)),o=o.next;return r};Cn.prototype.mapReverse=function(t,e){e=e||this;for(var r=new Cn,o=this.tail;o!==null;)r.push(t.call(e,o.value,this)),o=o.prev;return r};Cn.prototype.reduce=function(t,e){var r,o=this.head;if(arguments.length>1)r=e;else if(this.head)o=this.head.next,r=this.head.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=0;o!==null;a++)r=t(r,o.value,a),o=o.next;return r};Cn.prototype.reduceReverse=function(t,e){var r,o=this.tail;if(arguments.length>1)r=e;else if(this.tail)o=this.tail.prev,r=this.tail.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=this.length-1;o!==null;a--)r=t(r,o.value,a),o=o.prev;return r};Cn.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Cn.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Cn.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Cn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(;a!==null&&o<e;o++,a=a.next)r.push(a.value);return r};Cn.prototype.sliceReverse=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Cn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=this.length,a=this.tail;a!==null&&o>e;o--)a=a.prev;for(;a!==null&&o>t;o--,a=a.prev)r.push(a.value);return r};Cn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(var n=[],o=0;a&&o<e;o++)n.push(a.value),a=this.removeNode(a);a===null&&(a=this.tail),a!==this.head&&a!==this.tail&&(a=a.prev);for(var o=0;o<r.length;o++)a=xGe(this,a,r[o]);return n};Cn.prototype.reverse=function(){for(var t=this.head,e=this.tail,r=t;r!==null;r=r.prev){var o=r.prev;r.prev=r.next,r.next=o}return this.head=e,this.tail=t,this};function xGe(t,e,r){var o=e===t.head?new od(r,null,e,t):new od(r,e,e.next,t);return o.next===null&&(t.tail=o),o.prev===null&&(t.head=o),t.length++,o}function kGe(t,e){t.tail=new od(e,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function QGe(t,e){t.head=new od(e,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function od(t,e,r,o){if(!(this instanceof od))return new od(t,e,r,o);this.list=o,this.value=t,e?(e.next=this,this.prev=e):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{tz()(Cn)}catch{}});var az=_((cQt,oz)=>{\"use strict\";var FGe=IP(),ad=Symbol(\"max\"),Bf=Symbol(\"length\"),Py=Symbol(\"lengthCalculator\"),EI=Symbol(\"allowStale\"),ld=Symbol(\"maxAge\"),If=Symbol(\"dispose\"),nz=Symbol(\"noDisposeOnSet\"),xs=Symbol(\"lruList\"),Mc=Symbol(\"cache\"),sz=Symbol(\"updateAgeOnGet\"),$T=()=>1,tL=class{constructor(e){if(typeof e==\"number\"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!=\"number\"||e.max<0))throw new TypeError(\"max must be a non-negative number\");let r=this[ad]=e.max||1/0,o=e.length||$T;if(this[Py]=typeof o!=\"function\"?$T:o,this[EI]=e.stale||!1,e.maxAge&&typeof e.maxAge!=\"number\")throw new TypeError(\"maxAge must be a number\");this[ld]=e.maxAge||0,this[If]=e.dispose,this[nz]=e.noDisposeOnSet||!1,this[sz]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!=\"number\"||e<0)throw new TypeError(\"max must be a non-negative number\");this[ad]=e||1/0,yI(this)}get max(){return this[ad]}set allowStale(e){this[EI]=!!e}get allowStale(){return this[EI]}set maxAge(e){if(typeof e!=\"number\")throw new TypeError(\"maxAge must be a non-negative number\");this[ld]=e,yI(this)}get maxAge(){return this[ld]}set lengthCalculator(e){typeof e!=\"function\"&&(e=$T),e!==this[Py]&&(this[Py]=e,this[Bf]=0,this[xs].forEach(r=>{r.length=this[Py](r.value,r.key),this[Bf]+=r.length})),yI(this)}get lengthCalculator(){return this[Py]}get length(){return this[Bf]}get itemCount(){return this[xs].length}rforEach(e,r){r=r||this;for(let o=this[xs].tail;o!==null;){let a=o.prev;iz(this,e,o,r),o=a}}forEach(e,r){r=r||this;for(let o=this[xs].head;o!==null;){let a=o.next;iz(this,e,o,r),o=a}}keys(){return this[xs].toArray().map(e=>e.key)}values(){return this[xs].toArray().map(e=>e.value)}reset(){this[If]&&this[xs]&&this[xs].length&&this[xs].forEach(e=>this[If](e.key,e.value)),this[Mc]=new Map,this[xs]=new FGe,this[Bf]=0}dump(){return this[xs].map(e=>BP(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[xs]}set(e,r,o){if(o=o||this[ld],o&&typeof o!=\"number\")throw new TypeError(\"maxAge must be a number\");let a=o?Date.now():0,n=this[Py](r,e);if(this[Mc].has(e)){if(n>this[ad])return Sy(this,this[Mc].get(e)),!1;let p=this[Mc].get(e).value;return this[If]&&(this[nz]||this[If](e,p.value)),p.now=a,p.maxAge=o,p.value=r,this[Bf]+=n-p.length,p.length=n,this.get(e),yI(this),!0}let u=new rL(e,r,n,a,o);return u.length>this[ad]?(this[If]&&this[If](e,r),!1):(this[Bf]+=u.length,this[xs].unshift(u),this[Mc].set(e,this[xs].head),yI(this),!0)}has(e){if(!this[Mc].has(e))return!1;let r=this[Mc].get(e).value;return!BP(this,r)}get(e){return eL(this,e,!0)}peek(e){return eL(this,e,!1)}pop(){let e=this[xs].tail;return e?(Sy(this,e),e.value):null}del(e){Sy(this,this[Mc].get(e))}load(e){this.reset();let r=Date.now();for(let o=e.length-1;o>=0;o--){let a=e[o],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let u=n-r;u>0&&this.set(a.k,a.v,u)}}}prune(){this[Mc].forEach((e,r)=>eL(this,r,!1))}},eL=(t,e,r)=>{let o=t[Mc].get(e);if(o){let a=o.value;if(BP(t,a)){if(Sy(t,o),!t[EI])return}else r&&(t[sz]&&(o.value.now=Date.now()),t[xs].unshiftNode(o));return a.value}},BP=(t,e)=>{if(!e||!e.maxAge&&!t[ld])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[ld]&&r>t[ld]},yI=t=>{if(t[Bf]>t[ad])for(let e=t[xs].tail;t[Bf]>t[ad]&&e!==null;){let r=e.prev;Sy(t,e),e=r}},Sy=(t,e)=>{if(e){let r=e.value;t[If]&&t[If](r.key,r.value),t[Bf]-=r.length,t[Mc].delete(r.key),t[xs].removeNode(e)}},rL=class{constructor(e,r,o,a,n){this.key=e,this.value=r,this.length=o,this.now=a,this.maxAge=n||0}},iz=(t,e,r,o)=>{let a=r.value;BP(t,a)&&(Sy(t,r),t[EI]||(a=void 0)),a&&e.call(o,a.value,a.key,t)};oz.exports=tL});var Ol=_((uQt,Az)=>{var cd=class{constructor(e,r){if(r=TGe(r),e instanceof cd)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new cd(e.raw,r);if(e instanceof nL)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().split(/\\s+/).join(\" \"),this.set=this.raw.split(\"||\").map(o=>this.parseRange(o.trim())).filter(o=>o.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let o=this.set[0];if(this.set=this.set.filter(a=>!cz(a[0])),this.set.length===0)this.set=[o];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&HGe(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(\" \").trim()).join(\"||\").trim(),this.range}toString(){return this.range}parseRange(e){let o=((this.options.includePrerelease&&UGe)|(this.options.loose&&_Ge))+\":\"+e,a=lz.get(o);if(a)return a;let n=this.options.loose,u=n?Da[zo.HYPHENRANGELOOSE]:Da[zo.HYPHENRANGE];e=e.replace(u,XGe(this.options.includePrerelease)),ci(\"hyphen replace\",e),e=e.replace(Da[zo.COMPARATORTRIM],NGe),ci(\"comparator trim\",e),e=e.replace(Da[zo.TILDETRIM],OGe),ci(\"tilde trim\",e),e=e.replace(Da[zo.CARETTRIM],MGe),ci(\"caret trim\",e);let A=e.split(\" \").map(I=>jGe(I,this.options)).join(\" \").split(/\\s+/).map(I=>zGe(I,this.options));n&&(A=A.filter(I=>(ci(\"loose invalid filter\",I,this.options),!!I.match(Da[zo.COMPARATORLOOSE])))),ci(\"range list\",A);let p=new Map,h=A.map(I=>new nL(I,this.options));for(let I of h){if(cz(I))return[I];p.set(I.value,I)}p.size>1&&p.has(\"\")&&p.delete(\"\");let E=[...p.values()];return lz.set(o,E),E}intersects(e,r){if(!(e instanceof cd))throw new TypeError(\"a Range is required\");return this.set.some(o=>uz(o,r)&&e.set.some(a=>uz(a,r)&&o.every(n=>a.every(u=>n.intersects(u,r)))))}test(e){if(!e)return!1;if(typeof e==\"string\")try{e=new LGe(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(ZGe(this.set[r],e,this.options))return!0;return!1}};Az.exports=cd;var RGe=az(),lz=new RGe({max:1e3}),TGe=pP(),nL=CI(),ci=dI(),LGe=Po(),{safeRe:Da,t:zo,comparatorTrimReplace:NGe,tildeTrimReplace:OGe,caretTrimReplace:MGe}=vy(),{FLAG_INCLUDE_PRERELEASE:UGe,FLAG_LOOSE:_Ge}=gI(),cz=t=>t.value===\"<0.0.0-0\",HGe=t=>t.value===\"\",uz=(t,e)=>{let r=!0,o=t.slice(),a=o.pop();for(;r&&o.length;)r=o.every(n=>a.intersects(n,e)),a=o.pop();return r},jGe=(t,e)=>(ci(\"comp\",t,e),t=YGe(t,e),ci(\"caret\",t),t=qGe(t,e),ci(\"tildes\",t),t=KGe(t,e),ci(\"xrange\",t),t=JGe(t,e),ci(\"stars\",t),t),Xo=t=>!t||t.toLowerCase()===\"x\"||t===\"*\",qGe=(t,e)=>t.trim().split(/\\s+/).map(r=>GGe(r,e)).join(\" \"),GGe=(t,e)=>{let r=e.loose?Da[zo.TILDELOOSE]:Da[zo.TILDE];return t.replace(r,(o,a,n,u,A)=>{ci(\"tilde\",t,o,a,n,u,A);let p;return Xo(a)?p=\"\":Xo(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Xo(u)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:A?(ci(\"replaceTilde pr\",A),p=`>=${a}.${n}.${u}-${A} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${u} <${a}.${+n+1}.0-0`,ci(\"tilde return\",p),p})},YGe=(t,e)=>t.trim().split(/\\s+/).map(r=>WGe(r,e)).join(\" \"),WGe=(t,e)=>{ci(\"caret\",t,e);let r=e.loose?Da[zo.CARETLOOSE]:Da[zo.CARET],o=e.includePrerelease?\"-0\":\"\";return t.replace(r,(a,n,u,A,p)=>{ci(\"caret\",t,a,n,u,A,p);let h;return Xo(n)?h=\"\":Xo(u)?h=`>=${n}.0.0${o} <${+n+1}.0.0-0`:Xo(A)?n===\"0\"?h=`>=${n}.${u}.0${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.0${o} <${+n+1}.0.0-0`:p?(ci(\"replaceCaret pr\",p),n===\"0\"?u===\"0\"?h=`>=${n}.${u}.${A}-${p} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}-${p} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A}-${p} <${+n+1}.0.0-0`):(ci(\"no pr\"),n===\"0\"?u===\"0\"?h=`>=${n}.${u}.${A}${o} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A} <${+n+1}.0.0-0`),ci(\"caret return\",h),h})},KGe=(t,e)=>(ci(\"replaceXRanges\",t,e),t.split(/\\s+/).map(r=>VGe(r,e)).join(\" \")),VGe=(t,e)=>{t=t.trim();let r=e.loose?Da[zo.XRANGELOOSE]:Da[zo.XRANGE];return t.replace(r,(o,a,n,u,A,p)=>{ci(\"xRange\",t,o,a,n,u,A,p);let h=Xo(n),E=h||Xo(u),I=E||Xo(A),v=I;return a===\"=\"&&v&&(a=\"\"),p=e.includePrerelease?\"-0\":\"\",h?a===\">\"||a===\"<\"?o=\"<0.0.0-0\":o=\"*\":a&&v?(E&&(u=0),A=0,a===\">\"?(a=\">=\",E?(n=+n+1,u=0,A=0):(u=+u+1,A=0)):a===\"<=\"&&(a=\"<\",E?n=+n+1:u=+u+1),a===\"<\"&&(p=\"-0\"),o=`${a+n}.${u}.${A}${p}`):E?o=`>=${n}.0.0${p} <${+n+1}.0.0-0`:I&&(o=`>=${n}.${u}.0${p} <${n}.${+u+1}.0-0`),ci(\"xRange return\",o),o})},JGe=(t,e)=>(ci(\"replaceStars\",t,e),t.trim().replace(Da[zo.STAR],\"\")),zGe=(t,e)=>(ci(\"replaceGTE0\",t,e),t.trim().replace(Da[e.includePrerelease?zo.GTE0PRE:zo.GTE0],\"\")),XGe=t=>(e,r,o,a,n,u,A,p,h,E,I,v,x)=>(Xo(o)?r=\"\":Xo(a)?r=`>=${o}.0.0${t?\"-0\":\"\"}`:Xo(n)?r=`>=${o}.${a}.0${t?\"-0\":\"\"}`:u?r=`>=${r}`:r=`>=${r}${t?\"-0\":\"\"}`,Xo(h)?p=\"\":Xo(E)?p=`<${+h+1}.0.0-0`:Xo(I)?p=`<${h}.${+E+1}.0-0`:v?p=`<=${h}.${E}.${I}-${v}`:t?p=`<${h}.${E}.${+I+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),ZGe=(t,e,r)=>{for(let o=0;o<t.length;o++)if(!t[o].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let o=0;o<t.length;o++)if(ci(t[o].semver),t[o].semver!==nL.ANY&&t[o].semver.prerelease.length>0){let a=t[o].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var CI=_((AQt,mz)=>{var wI=Symbol(\"SemVer ANY\"),by=class{static get ANY(){return wI}constructor(e,r){if(r=fz(r),e instanceof by){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\\s+/).join(\" \"),sL(\"comparator\",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===wI?this.value=\"\":this.value=this.operator+this.semver.version,sL(\"comp\",this)}parse(e){let r=this.options.loose?pz[hz.COMPARATORLOOSE]:pz[hz.COMPARATOR],o=e.match(r);if(!o)throw new TypeError(`Invalid comparator: ${e}`);this.operator=o[1]!==void 0?o[1]:\"\",this.operator===\"=\"&&(this.operator=\"\"),o[2]?this.semver=new gz(o[2],this.options.loose):this.semver=wI}toString(){return this.value}test(e){if(sL(\"Comparator.test\",e,this.options.loose),this.semver===wI||e===wI)return!0;if(typeof e==\"string\")try{e=new gz(e,this.options)}catch{return!1}return iL(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof by))throw new TypeError(\"a Comparator is required\");return this.operator===\"\"?this.value===\"\"?!0:new dz(e.value,r).test(this.value):e.operator===\"\"?e.value===\"\"?!0:new dz(this.value,r).test(e.semver):(r=fz(r),r.includePrerelease&&(this.value===\"<0.0.0-0\"||e.value===\"<0.0.0-0\")||!r.includePrerelease&&(this.value.startsWith(\"<0.0.0\")||e.value.startsWith(\"<0.0.0\"))?!1:!!(this.operator.startsWith(\">\")&&e.operator.startsWith(\">\")||this.operator.startsWith(\"<\")&&e.operator.startsWith(\"<\")||this.semver.version===e.semver.version&&this.operator.includes(\"=\")&&e.operator.includes(\"=\")||iL(this.semver,\"<\",e.semver,r)&&this.operator.startsWith(\">\")&&e.operator.startsWith(\"<\")||iL(this.semver,\">\",e.semver,r)&&this.operator.startsWith(\"<\")&&e.operator.startsWith(\">\")))}};mz.exports=by;var fz=pP(),{safeRe:pz,t:hz}=vy(),iL=ZT(),sL=dI(),gz=Po(),dz=Ol()});var II=_((fQt,yz)=>{var $Ge=Ol(),e9e=(t,e,r)=>{try{e=new $Ge(e,r)}catch{return!1}return e.test(t)};yz.exports=e9e});var Cz=_((pQt,Ez)=>{var t9e=Ol(),r9e=(t,e)=>new t9e(t,e).set.map(r=>r.map(o=>o.value).join(\" \").trim().split(\" \"));Ez.exports=r9e});var Iz=_((hQt,wz)=>{var n9e=Po(),i9e=Ol(),s9e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new i9e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===-1)&&(o=u,a=new n9e(o,r))}),o};wz.exports=s9e});var vz=_((gQt,Bz)=>{var o9e=Po(),a9e=Ol(),l9e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new a9e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===1)&&(o=u,a=new o9e(o,r))}),o};Bz.exports=l9e});var Sz=_((dQt,Pz)=>{var oL=Po(),c9e=Ol(),Dz=mI(),u9e=(t,e)=>{t=new c9e(t,e);let r=new oL(\"0.0.0\");if(t.test(r)||(r=new oL(\"0.0.0-0\"),t.test(r)))return r;r=null;for(let o=0;o<t.set.length;++o){let a=t.set[o],n=null;a.forEach(u=>{let A=new oL(u.semver.version);switch(u.operator){case\">\":A.prerelease.length===0?A.patch++:A.prerelease.push(0),A.raw=A.format();case\"\":case\">=\":(!n||Dz(A,n))&&(n=A);break;case\"<\":case\"<=\":break;default:throw new Error(`Unexpected operation: ${u.operator}`)}}),n&&(!r||Dz(r,n))&&(r=n)}return r&&t.test(r)?r:null};Pz.exports=u9e});var xz=_((mQt,bz)=>{var A9e=Ol(),f9e=(t,e)=>{try{return new A9e(t,e).range||\"*\"}catch{return null}};bz.exports=f9e});var vP=_((yQt,Rz)=>{var p9e=Po(),Fz=CI(),{ANY:h9e}=Fz,g9e=Ol(),d9e=II(),kz=mI(),Qz=mP(),m9e=EP(),y9e=yP(),E9e=(t,e,r,o)=>{t=new p9e(t,o),e=new g9e(e,o);let a,n,u,A,p;switch(r){case\">\":a=kz,n=m9e,u=Qz,A=\">\",p=\">=\";break;case\"<\":a=Qz,n=y9e,u=kz,A=\"<\",p=\"<=\";break;default:throw new TypeError('Must provide a hilo val of \"<\" or \">\"')}if(d9e(t,e,o))return!1;for(let h=0;h<e.set.length;++h){let E=e.set[h],I=null,v=null;if(E.forEach(x=>{x.semver===h9e&&(x=new Fz(\">=0.0.0\")),I=I||x,v=v||x,a(x.semver,I.semver,o)?I=x:u(x.semver,v.semver,o)&&(v=x)}),I.operator===A||I.operator===p||(!v.operator||v.operator===A)&&n(t,v.semver))return!1;if(v.operator===p&&u(t,v.semver))return!1}return!0};Rz.exports=E9e});var Lz=_((EQt,Tz)=>{var C9e=vP(),w9e=(t,e,r)=>C9e(t,e,\">\",r);Tz.exports=w9e});var Oz=_((CQt,Nz)=>{var I9e=vP(),B9e=(t,e,r)=>I9e(t,e,\"<\",r);Nz.exports=B9e});var _z=_((wQt,Uz)=>{var Mz=Ol(),v9e=(t,e,r)=>(t=new Mz(t,r),e=new Mz(e,r),t.intersects(e,r));Uz.exports=v9e});var jz=_((IQt,Hz)=>{var D9e=II(),P9e=Nl();Hz.exports=(t,e,r)=>{let o=[],a=null,n=null,u=t.sort((E,I)=>P9e(E,I,r));for(let E of u)D9e(E,e,r)?(n=E,a||(a=E)):(n&&o.push([a,n]),n=null,a=null);a&&o.push([a,null]);let A=[];for(let[E,I]of o)E===I?A.push(E):!I&&E===u[0]?A.push(\"*\"):I?E===u[0]?A.push(`<=${I}`):A.push(`${E} - ${I}`):A.push(`>=${E}`);let p=A.join(\" || \"),h=typeof e.raw==\"string\"?e.raw:String(e);return p.length<h.length?p:e}});var Vz=_((BQt,Kz)=>{var qz=Ol(),lL=CI(),{ANY:aL}=lL,BI=II(),cL=Nl(),S9e=(t,e,r={})=>{if(t===e)return!0;t=new qz(t,r),e=new qz(e,r);let o=!1;e:for(let a of t.set){for(let n of e.set){let u=x9e(a,n,r);if(o=o||u!==null,u)continue e}if(o)return!1}return!0},b9e=[new lL(\">=0.0.0-0\")],Gz=[new lL(\">=0.0.0\")],x9e=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===aL){if(e.length===1&&e[0].semver===aL)return!0;r.includePrerelease?t=b9e:t=Gz}if(e.length===1&&e[0].semver===aL){if(r.includePrerelease)return!0;e=Gz}let o=new Set,a,n;for(let x of t)x.operator===\">\"||x.operator===\">=\"?a=Yz(a,x,r):x.operator===\"<\"||x.operator===\"<=\"?n=Wz(n,x,r):o.add(x.semver);if(o.size>1)return null;let u;if(a&&n){if(u=cL(a.semver,n.semver,r),u>0)return null;if(u===0&&(a.operator!==\">=\"||n.operator!==\"<=\"))return null}for(let x of o){if(a&&!BI(x,String(a),r)||n&&!BI(x,String(n),r))return null;for(let C of e)if(!BI(x,String(C),r))return!1;return!0}let A,p,h,E,I=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,v=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;I&&I.prerelease.length===1&&n.operator===\"<\"&&I.prerelease[0]===0&&(I=!1);for(let x of e){if(E=E||x.operator===\">\"||x.operator===\">=\",h=h||x.operator===\"<\"||x.operator===\"<=\",a){if(v&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===v.major&&x.semver.minor===v.minor&&x.semver.patch===v.patch&&(v=!1),x.operator===\">\"||x.operator===\">=\"){if(A=Yz(a,x,r),A===x&&A!==a)return!1}else if(a.operator===\">=\"&&!BI(a.semver,String(x),r))return!1}if(n){if(I&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===I.major&&x.semver.minor===I.minor&&x.semver.patch===I.patch&&(I=!1),x.operator===\"<\"||x.operator===\"<=\"){if(p=Wz(n,x,r),p===x&&p!==n)return!1}else if(n.operator===\"<=\"&&!BI(n.semver,String(x),r))return!1}if(!x.operator&&(n||a)&&u!==0)return!1}return!(a&&h&&!n&&u!==0||n&&E&&!a&&u!==0||v||I)},Yz=(t,e,r)=>{if(!t)return e;let o=cL(t.semver,e.semver,r);return o>0?t:o<0||e.operator===\">\"&&t.operator===\">=\"?e:t},Wz=(t,e,r)=>{if(!t)return e;let o=cL(t.semver,e.semver,r);return o<0?t:o>0||e.operator===\"<\"&&t.operator===\"<=\"?e:t};Kz.exports=S9e});var zn=_((vQt,Xz)=>{var uL=vy(),Jz=gI(),k9e=Po(),zz=JT(),Q9e=sd(),F9e=dJ(),R9e=yJ(),T9e=wJ(),L9e=vJ(),N9e=PJ(),O9e=bJ(),M9e=kJ(),U9e=FJ(),_9e=Nl(),H9e=NJ(),j9e=MJ(),q9e=dP(),G9e=jJ(),Y9e=GJ(),W9e=mI(),K9e=mP(),V9e=zT(),J9e=XT(),z9e=yP(),X9e=EP(),Z9e=ZT(),$9e=$J(),e5e=CI(),t5e=Ol(),r5e=II(),n5e=Cz(),i5e=Iz(),s5e=vz(),o5e=Sz(),a5e=xz(),l5e=vP(),c5e=Lz(),u5e=Oz(),A5e=_z(),f5e=jz(),p5e=Vz();Xz.exports={parse:Q9e,valid:F9e,clean:R9e,inc:T9e,diff:L9e,major:N9e,minor:O9e,patch:M9e,prerelease:U9e,compare:_9e,rcompare:H9e,compareLoose:j9e,compareBuild:q9e,sort:G9e,rsort:Y9e,gt:W9e,lt:K9e,eq:V9e,neq:J9e,gte:z9e,lte:X9e,cmp:Z9e,coerce:$9e,Comparator:e5e,Range:t5e,satisfies:r5e,toComparators:n5e,maxSatisfying:i5e,minSatisfying:s5e,minVersion:o5e,validRange:a5e,outside:l5e,gtr:c5e,ltr:u5e,intersects:A5e,simplifyRange:f5e,subset:p5e,SemVer:k9e,re:uL.re,src:uL.src,tokens:uL.t,SEMVER_SPEC_VERSION:Jz.SEMVER_SPEC_VERSION,RELEASE_TYPES:Jz.RELEASE_TYPES,compareIdentifiers:zz.compareIdentifiers,rcompareIdentifiers:zz.rcompareIdentifiers}});var $z=_((DQt,Zz)=>{\"use strict\";function h5e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function ud(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,ud)}h5e(ud,Error);ud.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function g5e(t,e){e=e!==void 0?e:{};var r={},o={Expression:y},a=y,n=\"|\",u=Re(\"|\",!1),A=\"&\",p=Re(\"&\",!1),h=\"^\",E=Re(\"^\",!1),I=function(Z,ie){return!!ie.reduce((be,Le)=>{switch(Le[1]){case\"|\":return be|Le[3];case\"&\":return be&Le[3];case\"^\":return be^Le[3]}},Z)},v=\"!\",x=Re(\"!\",!1),C=function(Z){return!Z},R=\"(\",N=Re(\"(\",!1),U=\")\",J=Re(\")\",!1),te=function(Z){return Z},ae=/^[^ \\t\\n\\r()!|&\\^]/,fe=ke([\" \",\"\t\",`\n`,\"\\r\",\"(\",\")\",\"!\",\"|\",\"&\",\"^\"],!0,!1),ce=function(Z){return e.queryPattern.test(Z)},me=function(Z){return e.checkFn(Z)},he=Te(\"whitespace\"),Be=/^[ \\t\\n\\r]/,we=ke([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),g=0,Ee=0,Pe=[{line:1,column:1}],le=0,ne=[],ee=0,Ie;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function Fe(){return t.substring(Ee,g)}function At(){return je(Ee,g)}function H(Z,ie){throw ie=ie!==void 0?ie:je(Ee,g),S([Te(Z)],t.substring(Ee,g),ie)}function at(Z,ie){throw ie=ie!==void 0?ie:je(Ee,g),w(Z,ie)}function Re(Z,ie){return{type:\"literal\",text:Z,ignoreCase:ie}}function ke(Z,ie,be){return{type:\"class\",parts:Z,inverted:ie,ignoreCase:be}}function xe(){return{type:\"any\"}}function He(){return{type:\"end\"}}function Te(Z){return{type:\"other\",description:Z}}function Je(Z){var ie=Pe[Z],be;if(ie)return ie;for(be=Z-1;!Pe[be];)be--;for(ie=Pe[be],ie={line:ie.line,column:ie.column};be<Z;)t.charCodeAt(be)===10?(ie.line++,ie.column=1):ie.column++,be++;return Pe[Z]=ie,ie}function je(Z,ie){var be=Je(Z),Le=Je(ie);return{start:{offset:Z,line:be.line,column:be.column},end:{offset:ie,line:Le.line,column:Le.column}}}function b(Z){g<le||(g>le&&(le=g,ne=[]),ne.push(Z))}function w(Z,ie){return new ud(Z,null,null,ie)}function S(Z,ie,be){return new ud(ud.buildMessage(Z,ie),Z,ie,be)}function y(){var Z,ie,be,Le,ot,dt,qt,$t;if(Z=g,ie=F(),ie!==r){for(be=[],Le=g,ot=X(),ot!==r?(t.charCodeAt(g)===124?(dt=n,g++):(dt=r,ee===0&&b(u)),dt===r&&(t.charCodeAt(g)===38?(dt=A,g++):(dt=r,ee===0&&b(p)),dt===r&&(t.charCodeAt(g)===94?(dt=h,g++):(dt=r,ee===0&&b(E)))),dt!==r?(qt=X(),qt!==r?($t=F(),$t!==r?(ot=[ot,dt,qt,$t],Le=ot):(g=Le,Le=r)):(g=Le,Le=r)):(g=Le,Le=r)):(g=Le,Le=r);Le!==r;)be.push(Le),Le=g,ot=X(),ot!==r?(t.charCodeAt(g)===124?(dt=n,g++):(dt=r,ee===0&&b(u)),dt===r&&(t.charCodeAt(g)===38?(dt=A,g++):(dt=r,ee===0&&b(p)),dt===r&&(t.charCodeAt(g)===94?(dt=h,g++):(dt=r,ee===0&&b(E)))),dt!==r?(qt=X(),qt!==r?($t=F(),$t!==r?(ot=[ot,dt,qt,$t],Le=ot):(g=Le,Le=r)):(g=Le,Le=r)):(g=Le,Le=r)):(g=Le,Le=r);be!==r?(Ee=Z,ie=I(ie,be),Z=ie):(g=Z,Z=r)}else g=Z,Z=r;return Z}function F(){var Z,ie,be,Le,ot,dt;return Z=g,t.charCodeAt(g)===33?(ie=v,g++):(ie=r,ee===0&&b(x)),ie!==r?(be=F(),be!==r?(Ee=Z,ie=C(be),Z=ie):(g=Z,Z=r)):(g=Z,Z=r),Z===r&&(Z=g,t.charCodeAt(g)===40?(ie=R,g++):(ie=r,ee===0&&b(N)),ie!==r?(be=X(),be!==r?(Le=y(),Le!==r?(ot=X(),ot!==r?(t.charCodeAt(g)===41?(dt=U,g++):(dt=r,ee===0&&b(J)),dt!==r?(Ee=Z,ie=te(Le),Z=ie):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r),Z===r&&(Z=z())),Z}function z(){var Z,ie,be,Le,ot;if(Z=g,ie=X(),ie!==r){if(be=g,Le=[],ae.test(t.charAt(g))?(ot=t.charAt(g),g++):(ot=r,ee===0&&b(fe)),ot!==r)for(;ot!==r;)Le.push(ot),ae.test(t.charAt(g))?(ot=t.charAt(g),g++):(ot=r,ee===0&&b(fe));else Le=r;Le!==r?be=t.substring(be,g):be=Le,be!==r?(Ee=g,Le=ce(be),Le?Le=void 0:Le=r,Le!==r?(Ee=Z,ie=me(be),Z=ie):(g=Z,Z=r)):(g=Z,Z=r)}else g=Z,Z=r;return Z}function X(){var Z,ie;for(ee++,Z=[],Be.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,ee===0&&b(we));ie!==r;)Z.push(ie),Be.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,ee===0&&b(we));return ee--,Z===r&&(ie=r,ee===0&&b(he)),Z}if(Ie=a(),Ie!==r&&g===t.length)return Ie;throw Ie!==r&&g<t.length&&b(He()),S(ne,le<t.length?t.charAt(le):null,le<t.length?je(le,le+1):je(le,le))}Zz.exports={SyntaxError:ud,parse:g5e}});var eX=_(DP=>{var{parse:d5e}=$z();DP.makeParser=(t=/[a-z]+/)=>(e,r)=>d5e(e,{queryPattern:t,checkFn:r});DP.parse=DP.makeParser()});var rX=_((SQt,tX)=>{\"use strict\";tX.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var AL=_((bQt,iX)=>{var vI=rX(),nX={};for(let t of Object.keys(vI))nX[vI[t]]=t;var Ar={rgb:{channels:3,labels:\"rgb\"},hsl:{channels:3,labels:\"hsl\"},hsv:{channels:3,labels:\"hsv\"},hwb:{channels:3,labels:\"hwb\"},cmyk:{channels:4,labels:\"cmyk\"},xyz:{channels:3,labels:\"xyz\"},lab:{channels:3,labels:\"lab\"},lch:{channels:3,labels:\"lch\"},hex:{channels:1,labels:[\"hex\"]},keyword:{channels:1,labels:[\"keyword\"]},ansi16:{channels:1,labels:[\"ansi16\"]},ansi256:{channels:1,labels:[\"ansi256\"]},hcg:{channels:3,labels:[\"h\",\"c\",\"g\"]},apple:{channels:3,labels:[\"r16\",\"g16\",\"b16\"]},gray:{channels:1,labels:[\"gray\"]}};iX.exports=Ar;for(let t of Object.keys(Ar)){if(!(\"channels\"in Ar[t]))throw new Error(\"missing channels property: \"+t);if(!(\"labels\"in Ar[t]))throw new Error(\"missing channel labels property: \"+t);if(Ar[t].labels.length!==Ar[t].channels)throw new Error(\"channel and label counts mismatch: \"+t);let{channels:e,labels:r}=Ar[t];delete Ar[t].channels,delete Ar[t].labels,Object.defineProperty(Ar[t],\"channels\",{value:e}),Object.defineProperty(Ar[t],\"labels\",{value:r})}Ar.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(e,r,o),n=Math.max(e,r,o),u=n-a,A,p;n===a?A=0:e===n?A=(r-o)/u:r===n?A=2+(o-e)/u:o===n&&(A=4+(e-r)/u),A=Math.min(A*60,360),A<0&&(A+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=u/(n+a):p=u/(2-n-a),[A,p*100,h*100]};Ar.rgb.hsv=function(t){let e,r,o,a,n,u=t[0]/255,A=t[1]/255,p=t[2]/255,h=Math.max(u,A,p),E=h-Math.min(u,A,p),I=function(v){return(h-v)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,e=I(u),r=I(A),o=I(p),u===h?a=o-r:A===h?a=1/3+e-o:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};Ar.rgb.hwb=function(t){let e=t[0],r=t[1],o=t[2],a=Ar.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,o));return o=1-1/255*Math.max(e,Math.max(r,o)),[a,n*100,o*100]};Ar.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(1-e,1-r,1-o),n=(1-e-a)/(1-a)||0,u=(1-r-a)/(1-a)||0,A=(1-o-a)/(1-a)||0;return[n*100,u*100,A*100,a*100]};function m5e(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Ar.rgb.keyword=function(t){let e=nX[t];if(e)return e;let r=1/0,o;for(let a of Object.keys(vI)){let n=vI[a],u=m5e(t,n);u<r&&(r=u,o=a)}return o};Ar.keyword.rgb=function(t){return vI[t]};Ar.rgb.xyz=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255;e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92;let a=e*.4124+r*.3576+o*.1805,n=e*.2126+r*.7152+o*.0722,u=e*.0193+r*.1192+o*.9505;return[a*100,n*100,u*100]};Ar.rgb.lab=function(t){let e=Ar.rgb.xyz(t),r=e[0],o=e[1],a=e[2];r/=95.047,o/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*o-16,u=500*(r-o),A=200*(o-a);return[n,u,A]};Ar.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a,n,u;if(r===0)return u=o*255,[u,u,u];o<.5?a=o*(1+r):a=o+r-o*r;let A=2*o-a,p=[0,0,0];for(let h=0;h<3;h++)n=e+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?u=A+(a-A)*6*n:2*n<1?u=a:3*n<2?u=A+(a-A)*(2/3-n)*6:u=A,p[h]=u*255;return p};Ar.hsl.hsv=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=r,n=Math.max(o,.01);o*=2,r*=o<=1?o:2-o,a*=n<=1?n:2-n;let u=(o+r)/2,A=o===0?2*a/(n+a):2*r/(o+r);return[e,A*100,u*100]};Ar.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,o=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),u=255*o*(1-r),A=255*o*(1-r*n),p=255*o*(1-r*(1-n));switch(o*=255,a){case 0:return[o,p,u];case 1:return[A,o,u];case 2:return[u,o,p];case 3:return[u,A,o];case 4:return[p,u,o];case 5:return[o,u,A]}};Ar.hsv.hsl=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=Math.max(o,.01),n,u;u=(2-r)*o;let A=(2-r)*a;return n=r*a,n/=A<=1?A:2-A,n=n||0,u/=2,[e,n*100,u*100]};Ar.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a=r+o,n;a>1&&(r/=a,o/=a);let u=Math.floor(6*e),A=1-o;n=6*e-u,(u&1)!==0&&(n=1-n);let p=r+n*(A-r),h,E,I;switch(u){default:case 6:case 0:h=A,E=p,I=r;break;case 1:h=p,E=A,I=r;break;case 2:h=r,E=A,I=p;break;case 3:h=r,E=p,I=A;break;case 4:h=p,E=r,I=A;break;case 5:h=A,E=r,I=p;break}return[h*255,E*255,I*255]};Ar.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),u=1-Math.min(1,r*(1-a)+a),A=1-Math.min(1,o*(1-a)+a);return[n*255,u*255,A*255]};Ar.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a,n,u;return a=e*3.2406+r*-1.5372+o*-.4986,n=e*-.9689+r*1.8758+o*.0415,u=e*.0557+r*-.204+o*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,u=u>.0031308?1.055*u**(1/2.4)-.055:u*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),u=Math.min(Math.max(0,u),1),[a*255,n*255,u*255]};Ar.xyz.lab=function(t){let e=t[0],r=t[1],o=t[2];e/=95.047,r/=100,o/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;let a=116*r-16,n=500*(e-r),u=200*(r-o);return[a,n,u]};Ar.lab.xyz=function(t){let e=t[0],r=t[1],o=t[2],a,n,u;n=(e+16)/116,a=r/500+n,u=n-o/200;let A=n**3,p=a**3,h=u**3;return n=A>.008856?A:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,u=h>.008856?h:(u-16/116)/7.787,a*=95.047,n*=100,u*=108.883,[a,n,u]};Ar.lab.lch=function(t){let e=t[0],r=t[1],o=t[2],a;a=Math.atan2(o,r)*360/2/Math.PI,a<0&&(a+=360);let u=Math.sqrt(r*r+o*o);return[e,u,a]};Ar.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),u=r*Math.sin(a);return[e,n,u]};Ar.rgb.ansi16=function(t,e=null){let[r,o,a]=t,n=e===null?Ar.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let u=30+(Math.round(a/255)<<2|Math.round(o/255)<<1|Math.round(r/255));return n===2&&(u+=60),u};Ar.hsv.ansi16=function(t){return Ar.rgb.ansi16(Ar.hsv.rgb(t),t[2])};Ar.rgb.ansi256=function(t){let e=t[0],r=t[1],o=t[2];return e===r&&r===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)};Ar.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,o=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[o,a,n]};Ar.ansi256.rgb=function(t){if(t>=232){let n=(t-232)*10+8;return[n,n,n]}t-=16;let e,r=Math.floor(t/36)/5*255,o=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,o,a]};Ar.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return\"000000\".substring(r.length)+r};Ar.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split(\"\").map(A=>A+A).join(\"\"));let o=parseInt(r,16),a=o>>16&255,n=o>>8&255,u=o&255;return[a,n,u]};Ar.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.max(Math.max(e,r),o),n=Math.min(Math.min(e,r),o),u=a-n,A,p;return u<1?A=n/(1-u):A=0,u<=0?p=0:a===e?p=(r-o)/u%6:a===r?p=2+(o-e)/u:p=4+(e-r)/u,p/=6,p%=1,[p*360,u*100,A*100]};Ar.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=r<.5?2*e*r:2*e*(1-r),a=0;return o<1&&(a=(r-.5*o)/(1-o)),[t[0],o*100,a*100]};Ar.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=e*r,a=0;return o<1&&(a=(r-o)/(1-o)),[t[0],o*100,a*100]};Ar.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100;if(r===0)return[o*255,o*255,o*255];let a=[0,0,0],n=e%1*6,u=n%1,A=1-u,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=u,a[2]=0;break;case 1:a[0]=A,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=u;break;case 3:a[0]=0,a[1]=A,a[2]=1;break;case 4:a[0]=u,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=A}return p=(1-r)*o,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};Ar.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e),a=0;return o>0&&(a=e/o),[t[0],a*100,o*100]};Ar.hcg.hsl=function(t){let e=t[1]/100,o=t[2]/100*(1-e)+.5*e,a=0;return o>0&&o<.5?a=e/(2*o):o>=.5&&o<1&&(a=e/(2*(1-o))),[t[0],a*100,o*100]};Ar.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e);return[t[0],(o-e)*100,(1-o)*100]};Ar.hwb.hcg=function(t){let e=t[1]/100,o=1-t[2]/100,a=o-e,n=0;return a<1&&(n=(o-a)/(1-a)),[t[0],a*100,n*100]};Ar.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Ar.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Ar.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Ar.gray.hsl=function(t){return[0,0,t[0]]};Ar.gray.hsv=Ar.gray.hsl;Ar.gray.hwb=function(t){return[0,100,t[0]]};Ar.gray.cmyk=function(t){return[0,0,0,t[0]]};Ar.gray.lab=function(t){return[t[0],0,0]};Ar.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,o=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return\"000000\".substring(o.length)+o};Ar.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var oX=_((xQt,sX)=>{var PP=AL();function y5e(){let t={},e=Object.keys(PP);for(let r=e.length,o=0;o<r;o++)t[e[o]]={distance:-1,parent:null};return t}function E5e(t){let e=y5e(),r=[t];for(e[t].distance=0;r.length;){let o=r.pop(),a=Object.keys(PP[o]);for(let n=a.length,u=0;u<n;u++){let A=a[u],p=e[A];p.distance===-1&&(p.distance=e[o].distance+1,p.parent=o,r.unshift(A))}}return e}function C5e(t,e){return function(r){return e(t(r))}}function w5e(t,e){let r=[e[t].parent,t],o=PP[e[t].parent][t],a=e[t].parent;for(;e[a].parent;)r.unshift(e[a].parent),o=C5e(PP[e[a].parent][a],o),a=e[a].parent;return o.conversion=r,o}sX.exports=function(t){let e=E5e(t),r={},o=Object.keys(e);for(let a=o.length,n=0;n<a;n++){let u=o[n];e[u].parent!==null&&(r[u]=w5e(u,e))}return r}});var lX=_((kQt,aX)=>{var fL=AL(),I5e=oX(),xy={},B5e=Object.keys(fL);function v5e(t){let e=function(...r){let o=r[0];return o==null?o:(o.length>1&&(r=o),t(r))};return\"conversion\"in t&&(e.conversion=t.conversion),e}function D5e(t){let e=function(...r){let o=r[0];if(o==null)return o;o.length>1&&(r=o);let a=t(r);if(typeof a==\"object\")for(let n=a.length,u=0;u<n;u++)a[u]=Math.round(a[u]);return a};return\"conversion\"in t&&(e.conversion=t.conversion),e}B5e.forEach(t=>{xy[t]={},Object.defineProperty(xy[t],\"channels\",{value:fL[t].channels}),Object.defineProperty(xy[t],\"labels\",{value:fL[t].labels});let e=I5e(t);Object.keys(e).forEach(o=>{let a=e[o];xy[t][o]=D5e(a),xy[t][o].raw=v5e(a)})});aX.exports=xy});var DI=_((QQt,pX)=>{\"use strict\";var cX=(t,e)=>(...r)=>`\\x1B[${t(...r)+e}m`,uX=(t,e)=>(...r)=>{let o=t(...r);return`\\x1B[${38+e};5;${o}m`},AX=(t,e)=>(...r)=>{let o=t(...r);return`\\x1B[${38+e};2;${o[0]};${o[1]};${o[2]}m`},SP=t=>t,fX=(t,e,r)=>[t,e,r],ky=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let o=r();return Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0}),o},enumerable:!0,configurable:!0})},pL,Qy=(t,e,r,o)=>{pL===void 0&&(pL=lX());let a=o?10:0,n={};for(let[u,A]of Object.entries(pL)){let p=u===\"ansi16\"?\"ansi\":u;u===e?n[p]=t(r,a):typeof A==\"object\"&&(n[p]=t(A[e],a))}return n};function P5e(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,o]of Object.entries(e)){for(let[a,n]of Object.entries(o))e[a]={open:`\\x1B[${n[0]}m`,close:`\\x1B[${n[1]}m`},o[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:o,enumerable:!1})}return Object.defineProperty(e,\"codes\",{value:t,enumerable:!1}),e.color.close=\"\\x1B[39m\",e.bgColor.close=\"\\x1B[49m\",ky(e.color,\"ansi\",()=>Qy(cX,\"ansi16\",SP,!1)),ky(e.color,\"ansi256\",()=>Qy(uX,\"ansi256\",SP,!1)),ky(e.color,\"ansi16m\",()=>Qy(AX,\"rgb\",fX,!1)),ky(e.bgColor,\"ansi\",()=>Qy(cX,\"ansi16\",SP,!0)),ky(e.bgColor,\"ansi256\",()=>Qy(uX,\"ansi256\",SP,!0)),ky(e.bgColor,\"ansi16m\",()=>Qy(AX,\"rgb\",fX,!0)),e}Object.defineProperty(pX,\"exports\",{enumerable:!0,get:P5e})});var gX=_((FQt,hX)=>{\"use strict\";hX.exports=(t,e=process.argv)=>{let r=t.startsWith(\"-\")?\"\":t.length===1?\"-\":\"--\",o=e.indexOf(r+t),a=e.indexOf(\"--\");return o!==-1&&(a===-1||o<a)}});var dL=_((RQt,mX)=>{\"use strict\";var S5e=ve(\"os\"),dX=ve(\"tty\"),Ml=gX(),{env:ls}=process,Jp;Ml(\"no-color\")||Ml(\"no-colors\")||Ml(\"color=false\")||Ml(\"color=never\")?Jp=0:(Ml(\"color\")||Ml(\"colors\")||Ml(\"color=true\")||Ml(\"color=always\"))&&(Jp=1);\"FORCE_COLOR\"in ls&&(ls.FORCE_COLOR===\"true\"?Jp=1:ls.FORCE_COLOR===\"false\"?Jp=0:Jp=ls.FORCE_COLOR.length===0?1:Math.min(parseInt(ls.FORCE_COLOR,10),3));function hL(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function gL(t,e){if(Jp===0)return 0;if(Ml(\"color=16m\")||Ml(\"color=full\")||Ml(\"color=truecolor\"))return 3;if(Ml(\"color=256\"))return 2;if(t&&!e&&Jp===void 0)return 0;let r=Jp||0;if(ls.TERM===\"dumb\")return r;if(process.platform===\"win32\"){let o=S5e.release().split(\".\");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}if(\"CI\"in ls)return[\"TRAVIS\",\"CIRCLECI\",\"APPVEYOR\",\"GITLAB_CI\"].some(o=>o in ls)||ls.CI_NAME===\"codeship\"?1:r;if(\"TEAMCITY_VERSION\"in ls)return/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(ls.TEAMCITY_VERSION)?1:0;if(\"GITHUB_ACTIONS\"in ls)return 1;if(ls.COLORTERM===\"truecolor\")return 3;if(\"TERM_PROGRAM\"in ls){let o=parseInt((ls.TERM_PROGRAM_VERSION||\"\").split(\".\")[0],10);switch(ls.TERM_PROGRAM){case\"iTerm.app\":return o>=3?3:2;case\"Apple_Terminal\":return 2}}return/-256(color)?$/i.test(ls.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ls.TERM)||\"COLORTERM\"in ls?1:r}function b5e(t){let e=gL(t,t&&t.isTTY);return hL(e)}mX.exports={supportsColor:b5e,stdout:hL(gL(!0,dX.isatty(1))),stderr:hL(gL(!0,dX.isatty(2)))}});var EX=_((TQt,yX)=>{\"use strict\";var x5e=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u=\"\";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},k5e=(t,e,r,o)=>{let a=0,n=\"\";do{let u=t[o-1]===\"\\r\";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\\r\n`:`\n`)+r,a=o+1,o=t.indexOf(`\n`,a)}while(o!==-1);return n+=t.substr(a),n};yX.exports={stringReplaceAll:x5e,stringEncaseCRLFWithFirstIndex:k5e}});var vX=_((LQt,BX)=>{\"use strict\";var Q5e=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,CX=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,F5e=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,R5e=/\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.)|([^\\\\])/gi,T5e=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function IX(t){let e=t[0]===\"u\",r=t[1]===\"{\";return e&&!r&&t.length===5||t[0]===\"x\"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):T5e.get(t)||t}function L5e(t,e){let r=[],o=e.trim().split(/\\s*,\\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(F5e))r.push(a[2].replace(R5e,(A,p,h)=>p?IX(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function N5e(t){CX.lastIndex=0;let e=[],r;for(;(r=CX.exec(t))!==null;){let o=r[1];if(r[2]){let a=L5e(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function wX(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}BX.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(Q5e,(n,u,A,p,h,E)=>{if(u)a.push(IX(u));else if(p){let I=a.join(\"\");a=[],o.push(r.length===0?I:wX(t,r)(I)),r.push({inverse:A,styles:N5e(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");o.push(wX(t,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),o.push(a.join(\"\")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?\"\":\"s\"} (\\`}\\`)`;throw new Error(n)}return o.join(\"\")}});var IL=_((NQt,bX)=>{\"use strict\";var PI=DI(),{stdout:yL,stderr:EL}=dL(),{stringReplaceAll:O5e,stringEncaseCRLFWithFirstIndex:M5e}=EX(),DX=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],Fy=Object.create(null),U5e=(t,e={})=>{if(e.level>3||e.level<0)throw new Error(\"The `level` option should be an integer from 0 to 3\");let r=yL?yL.level:0;t.level=e.level===void 0?r:e.level},CL=class{constructor(e){return PX(e)}},PX=t=>{let e={};return U5e(e,t),e.template=(...r)=>j5e(e.template,...r),Object.setPrototypeOf(e,bP.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},e.template.Instance=CL,e.template};function bP(t){return PX(t)}for(let[t,e]of Object.entries(PI))Fy[t]={get(){let r=xP(this,wL(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};Fy.visible={get(){let t=xP(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:t}),t}};var SX=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let t of SX)Fy[t]={get(){let{level:e}=this;return function(...r){let o=wL(PI.color[DX[e]][t](...r),PI.color.close,this._styler);return xP(this,o,this._isEmpty)}}};for(let t of SX){let e=\"bg\"+t[0].toUpperCase()+t.slice(1);Fy[e]={get(){let{level:r}=this;return function(...o){let a=wL(PI.bgColor[DX[r]][t](...o),PI.bgColor.close,this._styler);return xP(this,a,this._isEmpty)}}}}var _5e=Object.defineProperties(()=>{},{...Fy,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),wL=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},xP=(t,e,r)=>{let o=(...a)=>H5e(o,a.length===1?\"\"+a[0]:a.join(\" \"));return o.__proto__=_5e,o._generator=t,o._styler=e,o._isEmpty=r,o},H5e=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?\"\":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)e=O5e(e,r.close,r.open),r=r.parent;let n=e.indexOf(`\n`);return n!==-1&&(e=M5e(e,a,o,n)),o+e+a},mL,j5e=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(\" \");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return mL===void 0&&(mL=vX()),mL(t,a.join(\"\"))};Object.defineProperties(bP.prototype,Fy);var SI=bP();SI.supportsColor=yL;SI.stderr=bP({level:EL?EL.level:0});SI.stderr.supportsColor=EL;SI.Level={None:0,Basic:1,Ansi256:2,TrueColor:3,0:\"None\",1:\"Basic\",2:\"Ansi256\",3:\"TrueColor\"};bX.exports=SI});var kP=_(Ul=>{\"use strict\";Ul.isInteger=t=>typeof t==\"number\"?Number.isInteger(t):typeof t==\"string\"&&t.trim()!==\"\"?Number.isInteger(Number(t)):!1;Ul.find=(t,e)=>t.nodes.find(r=>r.type===e);Ul.exceedsLimit=(t,e,r=1,o)=>o===!1||!Ul.isInteger(t)||!Ul.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=o;Ul.escapeNode=(t,e=0,r)=>{let o=t.nodes[e];!o||(r&&o.type===r||o.type===\"open\"||o.type===\"close\")&&o.escaped!==!0&&(o.value=\"\\\\\"+o.value,o.escaped=!0)};Ul.encloseBrace=t=>t.type!==\"brace\"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;Ul.isInvalidBrace=t=>t.type!==\"brace\"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;Ul.isOpenOrClose=t=>t.type===\"open\"||t.type===\"close\"?!0:t.open===!0||t.close===!0;Ul.reduce=t=>t.reduce((e,r)=>(r.type===\"text\"&&e.push(r.value),r.type===\"range\"&&(r.type=\"text\"),e),[]);Ul.flatten=(...t)=>{let e=[],r=o=>{for(let a=0;a<o.length;a++){let n=o[a];Array.isArray(n)?r(n,e):n!==void 0&&e.push(n)}return e};return r(t),e}});var QP=_((MQt,kX)=>{\"use strict\";var xX=kP();kX.exports=(t,e={})=>{let r=(o,a={})=>{let n=e.escapeInvalid&&xX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A=\"\";if(o.value)return(n||u)&&xX.isOpenOrClose(o)?\"\\\\\"+o.value:o.value;if(o.value)return o.value;if(o.nodes)for(let p of o.nodes)A+=r(p);return A};return r(t)}});var FX=_((UQt,QX)=>{\"use strict\";QX.exports=function(t){return typeof t==\"number\"?t-t===0:typeof t==\"string\"&&t.trim()!==\"\"?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var HX=_((_Qt,_X)=>{\"use strict\";var RX=FX(),Ad=(t,e,r)=>{if(RX(t)===!1)throw new TypeError(\"toRegexRange: expected the first argument to be a number\");if(e===void 0||t===e)return String(t);if(RX(e)===!1)throw new TypeError(\"toRegexRange: expected the second argument to be a number.\");let o={relaxZeros:!0,...r};typeof o.strictZeros==\"boolean\"&&(o.relaxZeros=o.strictZeros===!1);let a=String(o.relaxZeros),n=String(o.shorthand),u=String(o.capture),A=String(o.wrap),p=t+\":\"+e+\"=\"+a+n+u+A;if(Ad.cache.hasOwnProperty(p))return Ad.cache[p].result;let h=Math.min(t,e),E=Math.max(t,e);if(Math.abs(h-E)===1){let R=t+\"|\"+e;return o.capture?`(${R})`:o.wrap===!1?R:`(?:${R})`}let I=UX(t)||UX(e),v={min:t,max:e,a:h,b:E},x=[],C=[];if(I&&(v.isPadded=I,v.maxLen=String(v.max).length),h<0){let R=E<0?Math.abs(E):1;C=TX(R,Math.abs(h),v,o),h=v.a=0}return E>=0&&(x=TX(h,E,v,o)),v.negatives=C,v.positives=x,v.result=q5e(C,x,o),o.capture===!0?v.result=`(${v.result})`:o.wrap!==!1&&x.length+C.length>1&&(v.result=`(?:${v.result})`),Ad.cache[p]=v,v.result};function q5e(t,e,r){let o=BL(t,e,\"-\",!1,r)||[],a=BL(e,t,\"\",!1,r)||[],n=BL(t,e,\"-?\",!0,r)||[];return o.concat(n).concat(a).join(\"|\")}function G5e(t,e){let r=1,o=1,a=NX(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=NX(t,r);for(a=OX(e+1,o)-1;t<a&&a<=e;)n.add(a),o+=1,a=OX(e+1,o)-1;return n=[...n],n.sort(K5e),n}function Y5e(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let o=W5e(t,e),a=o.length,n=\"\",u=0;for(let A=0;A<a;A++){let[p,h]=o[A];p===h?n+=p:p!==\"0\"||h!==\"9\"?n+=V5e(p,h,r):u++}return u&&(n+=r.shorthand===!0?\"\\\\d\":\"[0-9]\"),{pattern:n,count:[u],digits:a}}function TX(t,e,r,o){let a=G5e(t,e),n=[],u=t,A;for(let p=0;p<a.length;p++){let h=a[p],E=Y5e(String(u),String(h),o),I=\"\";if(!r.isPadded&&A&&A.pattern===E.pattern){A.count.length>1&&A.count.pop(),A.count.push(E.count[0]),A.string=A.pattern+MX(A.count),u=h+1;continue}r.isPadded&&(I=J5e(h,r,o)),E.string=I+E.pattern+MX(E.count),n.push(E),u=h+1,A=E}return n}function BL(t,e,r,o,a){let n=[];for(let u of t){let{string:A}=u;!o&&!LX(e,\"string\",A)&&n.push(r+A),o&&LX(e,\"string\",A)&&n.push(r+A)}return n}function W5e(t,e){let r=[];for(let o=0;o<t.length;o++)r.push([t[o],e[o]]);return r}function K5e(t,e){return t>e?1:e>t?-1:0}function LX(t,e,r){return t.some(o=>o[e]===r)}function NX(t,e){return Number(String(t).slice(0,-e)+\"9\".repeat(e))}function OX(t,e){return t-t%Math.pow(10,e)}function MX(t){let[e=0,r=\"\"]=t;return r||e>1?`{${e+(r?\",\"+r:\"\")}}`:\"\"}function V5e(t,e,r){return`[${t}${e-t===1?\"\":\"-\"}${e}]`}function UX(t){return/^-?(0+)\\d/.test(t)}function J5e(t,e,r){if(!e.isPadded)return t;let o=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(o){case 0:return\"\";case 1:return a?\"0?\":\"0\";case 2:return a?\"0{0,2}\":\"00\";default:return a?`0{0,${o}}`:`0{${o}}`}}Ad.cache={};Ad.clearCache=()=>Ad.cache={};_X.exports=Ad});var PL=_((HQt,JX)=>{\"use strict\";var z5e=ve(\"util\"),GX=HX(),jX=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),X5e=t=>e=>t===!0?Number(e):String(e),vL=t=>typeof t==\"number\"||typeof t==\"string\"&&t!==\"\",bI=t=>Number.isInteger(+t),DL=t=>{let e=`${t}`,r=-1;if(e[0]===\"-\"&&(e=e.slice(1)),e===\"0\")return!1;for(;e[++r]===\"0\";);return r>0},Z5e=(t,e,r)=>typeof t==\"string\"||typeof e==\"string\"?!0:r.stringify===!0,$5e=(t,e,r)=>{if(e>0){let o=t[0]===\"-\"?\"-\":\"\";o&&(t=t.slice(1)),t=o+t.padStart(o?e-1:e,\"0\")}return r===!1?String(t):t},qX=(t,e)=>{let r=t[0]===\"-\"?\"-\":\"\";for(r&&(t=t.slice(1),e--);t.length<e;)t=\"0\"+t;return r?\"-\"+t:t},e7e=(t,e)=>{t.negatives.sort((u,A)=>u<A?-1:u>A?1:0),t.positives.sort((u,A)=>u<A?-1:u>A?1:0);let r=e.capture?\"\":\"?:\",o=\"\",a=\"\",n;return t.positives.length&&(o=t.positives.join(\"|\")),t.negatives.length&&(a=`-(${r}${t.negatives.join(\"|\")})`),o&&a?n=`${o}|${a}`:n=o||a,e.wrap?`(${r}${n})`:n},YX=(t,e,r,o)=>{if(r)return GX(t,e,{wrap:!1,...o});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},WX=(t,e,r)=>{if(Array.isArray(t)){let o=r.wrap===!0,a=r.capture?\"\":\"?:\";return o?`(${a}${t.join(\"|\")})`:t.join(\"|\")}return GX(t,e,r)},KX=(...t)=>new RangeError(\"Invalid range arguments: \"+z5e.inspect(...t)),VX=(t,e,r)=>{if(r.strictRanges===!0)throw KX([t,e]);return[]},t7e=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step \"${t}\" to be a number`);return[]},r7e=(t,e,r=1,o={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(o.strictRanges===!0)throw KX([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let u=a>n,A=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let E=DL(A)||DL(p)||DL(h),I=E?Math.max(A.length,p.length,h.length):0,v=E===!1&&Z5e(t,e,o)===!1,x=o.transform||X5e(v);if(o.toRegex&&r===1)return YX(qX(t,I),qX(e,I),!0,o);let C={negatives:[],positives:[]},R=J=>C[J<0?\"negatives\":\"positives\"].push(Math.abs(J)),N=[],U=0;for(;u?a>=n:a<=n;)o.toRegex===!0&&r>1?R(a):N.push($5e(x(a,U),I,v)),a=u?a-r:a+r,U++;return o.toRegex===!0?r>1?e7e(C,o):WX(N,null,{wrap:!1,...o}):N},n7e=(t,e,r=1,o={})=>{if(!bI(t)&&t.length>1||!bI(e)&&e.length>1)return VX(t,e,o);let a=o.transform||(v=>String.fromCharCode(v)),n=`${t}`.charCodeAt(0),u=`${e}`.charCodeAt(0),A=n>u,p=Math.min(n,u),h=Math.max(n,u);if(o.toRegex&&r===1)return YX(p,h,!1,o);let E=[],I=0;for(;A?n>=u:n<=u;)E.push(a(n,I)),n=A?n-r:n+r,I++;return o.toRegex===!0?WX(E,null,{wrap:!1,options:o}):E},FP=(t,e,r,o={})=>{if(e==null&&vL(t))return[t];if(!vL(t)||!vL(e))return VX(t,e,o);if(typeof r==\"function\")return FP(t,e,1,{transform:r});if(jX(r))return FP(t,e,0,r);let a={...o};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,bI(r)?bI(t)&&bI(e)?r7e(t,e,r,a):n7e(t,e,Math.max(Math.abs(r),1),a):r!=null&&!jX(r)?t7e(r,a):FP(t,e,1,r)};JX.exports=FP});var ZX=_((jQt,XX)=>{\"use strict\";var i7e=PL(),zX=kP(),s7e=(t,e={})=>{let r=(o,a={})=>{let n=zX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A=n===!0||u===!0,p=e.escapeInvalid===!0?\"\\\\\":\"\",h=\"\";if(o.isOpen===!0||o.isClose===!0)return p+o.value;if(o.type===\"open\")return A?p+o.value:\"(\";if(o.type===\"close\")return A?p+o.value:\")\";if(o.type===\"comma\")return o.prev.type===\"comma\"?\"\":A?o.value:\"|\";if(o.value)return o.value;if(o.nodes&&o.ranges>0){let E=zX.reduce(o.nodes),I=i7e(...E,{...e,wrap:!1,toRegex:!0});if(I.length!==0)return E.length>1&&I.length>1?`(${I})`:I}if(o.nodes)for(let E of o.nodes)h+=r(E,o);return h};return r(t)};XX.exports=s7e});var tZ=_((qQt,eZ)=>{\"use strict\";var o7e=PL(),$X=QP(),Ry=kP(),fd=(t=\"\",e=\"\",r=!1)=>{let o=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?Ry.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)o.push(fd(n,e,r));else for(let n of e)r===!0&&typeof n==\"string\"&&(n=`{${n}}`),o.push(Array.isArray(n)?fd(a,n,r):a+n);return Ry.flatten(o)},a7e=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,o=(a,n={})=>{a.queue=[];let u=n,A=n.queue;for(;u.type!==\"brace\"&&u.type!==\"root\"&&u.parent;)u=u.parent,A=u.queue;if(a.invalid||a.dollar){A.push(fd(A.pop(),$X(a,e)));return}if(a.type===\"brace\"&&a.invalid!==!0&&a.nodes.length===2){A.push(fd(A.pop(),[\"{}\"]));return}if(a.nodes&&a.ranges>0){let I=Ry.reduce(a.nodes);if(Ry.exceedsLimit(...I,e.step,r))throw new RangeError(\"expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.\");let v=o7e(...I,e);v.length===0&&(v=$X(a,e)),A.push(fd(A.pop(),v)),a.nodes=[];return}let p=Ry.encloseBrace(a),h=a.queue,E=a;for(;E.type!==\"brace\"&&E.type!==\"root\"&&E.parent;)E=E.parent,h=E.queue;for(let I=0;I<a.nodes.length;I++){let v=a.nodes[I];if(v.type===\"comma\"&&a.type===\"brace\"){I===1&&h.push(\"\"),h.push(\"\");continue}if(v.type===\"close\"){A.push(fd(A.pop(),h,p));continue}if(v.value&&v.type!==\"open\"){h.push(fd(h.pop(),v.value));continue}v.nodes&&o(v,a)}return h};return Ry.flatten(o(t))};eZ.exports=a7e});var nZ=_((GQt,rZ)=>{\"use strict\";rZ.exports={MAX_LENGTH:1024*64,CHAR_0:\"0\",CHAR_9:\"9\",CHAR_UPPERCASE_A:\"A\",CHAR_LOWERCASE_A:\"a\",CHAR_UPPERCASE_Z:\"Z\",CHAR_LOWERCASE_Z:\"z\",CHAR_LEFT_PARENTHESES:\"(\",CHAR_RIGHT_PARENTHESES:\")\",CHAR_ASTERISK:\"*\",CHAR_AMPERSAND:\"&\",CHAR_AT:\"@\",CHAR_BACKSLASH:\"\\\\\",CHAR_BACKTICK:\"`\",CHAR_CARRIAGE_RETURN:\"\\r\",CHAR_CIRCUMFLEX_ACCENT:\"^\",CHAR_COLON:\":\",CHAR_COMMA:\",\",CHAR_DOLLAR:\"$\",CHAR_DOT:\".\",CHAR_DOUBLE_QUOTE:'\"',CHAR_EQUAL:\"=\",CHAR_EXCLAMATION_MARK:\"!\",CHAR_FORM_FEED:\"\\f\",CHAR_FORWARD_SLASH:\"/\",CHAR_HASH:\"#\",CHAR_HYPHEN_MINUS:\"-\",CHAR_LEFT_ANGLE_BRACKET:\"<\",CHAR_LEFT_CURLY_BRACE:\"{\",CHAR_LEFT_SQUARE_BRACKET:\"[\",CHAR_LINE_FEED:`\n`,CHAR_NO_BREAK_SPACE:\"\\xA0\",CHAR_PERCENT:\"%\",CHAR_PLUS:\"+\",CHAR_QUESTION_MARK:\"?\",CHAR_RIGHT_ANGLE_BRACKET:\">\",CHAR_RIGHT_CURLY_BRACE:\"}\",CHAR_RIGHT_SQUARE_BRACKET:\"]\",CHAR_SEMICOLON:\";\",CHAR_SINGLE_QUOTE:\"'\",CHAR_SPACE:\" \",CHAR_TAB:\"\t\",CHAR_UNDERSCORE:\"_\",CHAR_VERTICAL_LINE:\"|\",CHAR_ZERO_WIDTH_NOBREAK_SPACE:\"\\uFEFF\"}});var lZ=_((YQt,aZ)=>{\"use strict\";var l7e=QP(),{MAX_LENGTH:iZ,CHAR_BACKSLASH:SL,CHAR_BACKTICK:c7e,CHAR_COMMA:u7e,CHAR_DOT:A7e,CHAR_LEFT_PARENTHESES:f7e,CHAR_RIGHT_PARENTHESES:p7e,CHAR_LEFT_CURLY_BRACE:h7e,CHAR_RIGHT_CURLY_BRACE:g7e,CHAR_LEFT_SQUARE_BRACKET:sZ,CHAR_RIGHT_SQUARE_BRACKET:oZ,CHAR_DOUBLE_QUOTE:d7e,CHAR_SINGLE_QUOTE:m7e,CHAR_NO_BREAK_SPACE:y7e,CHAR_ZERO_WIDTH_NOBREAK_SPACE:E7e}=nZ(),C7e=(t,e={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");let r=e||{},o=typeof r.maxLength==\"number\"?Math.min(iZ,r.maxLength):iZ;if(t.length>o)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${o})`);let a={type:\"root\",input:t,nodes:[]},n=[a],u=a,A=a,p=0,h=t.length,E=0,I=0,v,x={},C=()=>t[E++],R=N=>{if(N.type===\"text\"&&A.type===\"dot\"&&(A.type=\"text\"),A&&A.type===\"text\"&&N.type===\"text\"){A.value+=N.value;return}return u.nodes.push(N),N.parent=u,N.prev=A,A=N,N};for(R({type:\"bos\"});E<h;)if(u=n[n.length-1],v=C(),!(v===E7e||v===y7e)){if(v===SL){R({type:\"text\",value:(e.keepEscaping?v:\"\")+C()});continue}if(v===oZ){R({type:\"text\",value:\"\\\\\"+v});continue}if(v===sZ){p++;let N=!0,U;for(;E<h&&(U=C());){if(v+=U,U===sZ){p++;continue}if(U===SL){v+=C();continue}if(U===oZ&&(p--,p===0))break}R({type:\"text\",value:v});continue}if(v===f7e){u=R({type:\"paren\",nodes:[]}),n.push(u),R({type:\"text\",value:v});continue}if(v===p7e){if(u.type!==\"paren\"){R({type:\"text\",value:v});continue}u=n.pop(),R({type:\"text\",value:v}),u=n[n.length-1];continue}if(v===d7e||v===m7e||v===c7e){let N=v,U;for(e.keepQuotes!==!0&&(v=\"\");E<h&&(U=C());){if(U===SL){v+=U+C();continue}if(U===N){e.keepQuotes===!0&&(v+=U);break}v+=U}R({type:\"text\",value:v});continue}if(v===h7e){I++;let U={type:\"brace\",open:!0,close:!1,dollar:A.value&&A.value.slice(-1)===\"$\"||u.dollar===!0,depth:I,commas:0,ranges:0,nodes:[]};u=R(U),n.push(u),R({type:\"open\",value:v});continue}if(v===g7e){if(u.type!==\"brace\"){R({type:\"text\",value:v});continue}let N=\"close\";u=n.pop(),u.close=!0,R({type:N,value:v}),I--,u=n[n.length-1];continue}if(v===u7e&&I>0){if(u.ranges>0){u.ranges=0;let N=u.nodes.shift();u.nodes=[N,{type:\"text\",value:l7e(u)}]}R({type:\"comma\",value:v}),u.commas++;continue}if(v===A7e&&I>0&&u.commas===0){let N=u.nodes;if(I===0||N.length===0){R({type:\"text\",value:v});continue}if(A.type===\"dot\"){if(u.range=[],A.value+=v,A.type=\"range\",u.nodes.length!==3&&u.nodes.length!==5){u.invalid=!0,u.ranges=0,A.type=\"text\";continue}u.ranges++,u.args=[];continue}if(A.type===\"range\"){N.pop();let U=N[N.length-1];U.value+=A.value+v,A=U,u.ranges--;continue}R({type:\"dot\",value:v});continue}R({type:\"text\",value:v})}do if(u=n.pop(),u.type!==\"root\"){u.nodes.forEach(J=>{J.nodes||(J.type===\"open\"&&(J.isOpen=!0),J.type===\"close\"&&(J.isClose=!0),J.nodes||(J.type=\"text\"),J.invalid=!0)});let N=n[n.length-1],U=N.nodes.indexOf(u);N.nodes.splice(U,1,...u.nodes)}while(n.length>0);return R({type:\"eos\"}),a};aZ.exports=C7e});var AZ=_((WQt,uZ)=>{\"use strict\";var cZ=QP(),w7e=ZX(),I7e=tZ(),B7e=lZ(),rl=(t,e={})=>{let r=[];if(Array.isArray(t))for(let o of t){let a=rl.create(o,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(rl.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};rl.parse=(t,e={})=>B7e(t,e);rl.stringify=(t,e={})=>cZ(typeof t==\"string\"?rl.parse(t,e):t,e);rl.compile=(t,e={})=>(typeof t==\"string\"&&(t=rl.parse(t,e)),w7e(t,e));rl.expand=(t,e={})=>{typeof t==\"string\"&&(t=rl.parse(t,e));let r=I7e(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};rl.create=(t,e={})=>t===\"\"||t.length<3?[t]:e.expand!==!0?rl.compile(t,e):rl.expand(t,e);uZ.exports=rl});var xI=_((KQt,dZ)=>{\"use strict\";var v7e=ve(\"path\"),Ku=\"\\\\\\\\/\",fZ=`[^${Ku}]`,vf=\"\\\\.\",D7e=\"\\\\+\",P7e=\"\\\\?\",RP=\"\\\\/\",S7e=\"(?=.)\",pZ=\"[^/]\",bL=`(?:${RP}|$)`,hZ=`(?:^|${RP})`,xL=`${vf}{1,2}${bL}`,b7e=`(?!${vf})`,x7e=`(?!${hZ}${xL})`,k7e=`(?!${vf}{0,1}${bL})`,Q7e=`(?!${xL})`,F7e=`[^.${RP}]`,R7e=`${pZ}*?`,gZ={DOT_LITERAL:vf,PLUS_LITERAL:D7e,QMARK_LITERAL:P7e,SLASH_LITERAL:RP,ONE_CHAR:S7e,QMARK:pZ,END_ANCHOR:bL,DOTS_SLASH:xL,NO_DOT:b7e,NO_DOTS:x7e,NO_DOT_SLASH:k7e,NO_DOTS_SLASH:Q7e,QMARK_NO_DOT:F7e,STAR:R7e,START_ANCHOR:hZ},T7e={...gZ,SLASH_LITERAL:`[${Ku}]`,QMARK:fZ,STAR:`${fZ}*?`,DOTS_SLASH:`${vf}{1,2}(?:[${Ku}]|$)`,NO_DOT:`(?!${vf})`,NO_DOTS:`(?!(?:^|[${Ku}])${vf}{1,2}(?:[${Ku}]|$))`,NO_DOT_SLASH:`(?!${vf}{0,1}(?:[${Ku}]|$))`,NO_DOTS_SLASH:`(?!${vf}{1,2}(?:[${Ku}]|$))`,QMARK_NO_DOT:`[^.${Ku}]`,START_ANCHOR:`(?:^|[${Ku}])`,END_ANCHOR:`(?:[${Ku}]|$)`},L7e={alnum:\"a-zA-Z0-9\",alpha:\"a-zA-Z\",ascii:\"\\\\x00-\\\\x7F\",blank:\" \\\\t\",cntrl:\"\\\\x00-\\\\x1F\\\\x7F\",digit:\"0-9\",graph:\"\\\\x21-\\\\x7E\",lower:\"a-z\",print:\"\\\\x20-\\\\x7E \",punct:\"\\\\-!\\\"#$%&'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~\",space:\" \\\\t\\\\r\\\\n\\\\v\\\\f\",upper:\"A-Z\",word:\"A-Za-z0-9_\",xdigit:\"A-Fa-f0-9\"};dZ.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:L7e,REGEX_BACKSLASH:/\\\\(?![*+?^${}(|)[\\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\\].,$*+?^{}()|\\\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\\\?)((\\W)(\\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,REPLACEMENTS:{\"***\":\"*\",\"**/**\":\"**\",\"**/**/**\":\"**\"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:v7e.sep,extglobChars(t){return{\"!\":{type:\"negate\",open:\"(?:(?!(?:\",close:`))${t.STAR})`},\"?\":{type:\"qmark\",open:\"(?:\",close:\")?\"},\"+\":{type:\"plus\",open:\"(?:\",close:\")+\"},\"*\":{type:\"star\",open:\"(?:\",close:\")*\"},\"@\":{type:\"at\",open:\"(?:\",close:\")\"}}},globChars(t){return t===!0?T7e:gZ}}});var kI=_(Pa=>{\"use strict\";var N7e=ve(\"path\"),O7e=process.platform===\"win32\",{REGEX_BACKSLASH:M7e,REGEX_REMOVE_BACKSLASH:U7e,REGEX_SPECIAL_CHARS:_7e,REGEX_SPECIAL_CHARS_GLOBAL:H7e}=xI();Pa.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);Pa.hasRegexChars=t=>_7e.test(t);Pa.isRegexChar=t=>t.length===1&&Pa.hasRegexChars(t);Pa.escapeRegex=t=>t.replace(H7e,\"\\\\$1\");Pa.toPosixSlashes=t=>t.replace(M7e,\"/\");Pa.removeBackslashes=t=>t.replace(U7e,e=>e===\"\\\\\"?\"\":e);Pa.supportsLookbehinds=()=>{let t=process.version.slice(1).split(\".\").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Pa.isWindows=t=>t&&typeof t.windows==\"boolean\"?t.windows:O7e===!0||N7e.sep===\"\\\\\";Pa.escapeLast=(t,e,r)=>{let o=t.lastIndexOf(e,r);return o===-1?t:t[o-1]===\"\\\\\"?Pa.escapeLast(t,e,o-1):`${t.slice(0,o)}\\\\${t.slice(o)}`};Pa.removePrefix=(t,e={})=>{let r=t;return r.startsWith(\"./\")&&(r=r.slice(2),e.prefix=\"./\"),r};Pa.wrapOutput=(t,e={},r={})=>{let o=r.contains?\"\":\"^\",a=r.contains?\"\":\"$\",n=`${o}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var vZ=_((JQt,BZ)=>{\"use strict\";var mZ=kI(),{CHAR_ASTERISK:kL,CHAR_AT:j7e,CHAR_BACKWARD_SLASH:QI,CHAR_COMMA:q7e,CHAR_DOT:QL,CHAR_EXCLAMATION_MARK:FL,CHAR_FORWARD_SLASH:IZ,CHAR_LEFT_CURLY_BRACE:RL,CHAR_LEFT_PARENTHESES:TL,CHAR_LEFT_SQUARE_BRACKET:G7e,CHAR_PLUS:Y7e,CHAR_QUESTION_MARK:yZ,CHAR_RIGHT_CURLY_BRACE:W7e,CHAR_RIGHT_PARENTHESES:EZ,CHAR_RIGHT_SQUARE_BRACKET:K7e}=xI(),CZ=t=>t===IZ||t===QI,wZ=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},V7e=(t,e)=>{let r=e||{},o=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],u=[],A=[],p=t,h=-1,E=0,I=0,v=!1,x=!1,C=!1,R=!1,N=!1,U=!1,J=!1,te=!1,ae=!1,fe=!1,ce=0,me,he,Be={value:\"\",depth:0,isGlob:!1},we=()=>h>=o,g=()=>p.charCodeAt(h+1),Ee=()=>(me=he,p.charCodeAt(++h));for(;h<o;){he=Ee();let Ie;if(he===QI){J=Be.backslashes=!0,he=Ee(),he===RL&&(U=!0);continue}if(U===!0||he===RL){for(ce++;we()!==!0&&(he=Ee());){if(he===QI){J=Be.backslashes=!0,Ee();continue}if(he===RL){ce++;continue}if(U!==!0&&he===QL&&(he=Ee())===QL){if(v=Be.isBrace=!0,C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(U!==!0&&he===q7e){if(v=Be.isBrace=!0,C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(he===W7e&&(ce--,ce===0)){U=!1,v=Be.isBrace=!0,fe=!0;break}}if(a===!0)continue;break}if(he===IZ){if(n.push(h),u.push(Be),Be={value:\"\",depth:0,isGlob:!1},fe===!0)continue;if(me===QL&&h===E+1){E+=2;continue}I=h+1;continue}if(r.noext!==!0&&(he===Y7e||he===j7e||he===kL||he===yZ||he===FL)===!0&&g()===TL){if(C=Be.isGlob=!0,R=Be.isExtglob=!0,fe=!0,he===FL&&h===E&&(ae=!0),a===!0){for(;we()!==!0&&(he=Ee());){if(he===QI){J=Be.backslashes=!0,he=Ee();continue}if(he===EZ){C=Be.isGlob=!0,fe=!0;break}}continue}break}if(he===kL){if(me===kL&&(N=Be.isGlobstar=!0),C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(he===yZ){if(C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(he===G7e){for(;we()!==!0&&(Ie=Ee());){if(Ie===QI){J=Be.backslashes=!0,Ee();continue}if(Ie===K7e){x=Be.isBracket=!0,C=Be.isGlob=!0,fe=!0;break}}if(a===!0)continue;break}if(r.nonegate!==!0&&he===FL&&h===E){te=Be.negated=!0,E++;continue}if(r.noparen!==!0&&he===TL){if(C=Be.isGlob=!0,a===!0){for(;we()!==!0&&(he=Ee());){if(he===TL){J=Be.backslashes=!0,he=Ee();continue}if(he===EZ){fe=!0;break}}continue}break}if(C===!0){if(fe=!0,a===!0)continue;break}}r.noext===!0&&(R=!1,C=!1);let Pe=p,le=\"\",ne=\"\";E>0&&(le=p.slice(0,E),p=p.slice(E),I-=E),Pe&&C===!0&&I>0?(Pe=p.slice(0,I),ne=p.slice(I)):C===!0?(Pe=\"\",ne=p):Pe=p,Pe&&Pe!==\"\"&&Pe!==\"/\"&&Pe!==p&&CZ(Pe.charCodeAt(Pe.length-1))&&(Pe=Pe.slice(0,-1)),r.unescape===!0&&(ne&&(ne=mZ.removeBackslashes(ne)),Pe&&J===!0&&(Pe=mZ.removeBackslashes(Pe)));let ee={prefix:le,input:t,start:E,base:Pe,glob:ne,isBrace:v,isBracket:x,isGlob:C,isExtglob:R,isGlobstar:N,negated:te,negatedExtglob:ae};if(r.tokens===!0&&(ee.maxDepth=0,CZ(he)||u.push(Be),ee.tokens=u),r.parts===!0||r.tokens===!0){let Ie;for(let Fe=0;Fe<n.length;Fe++){let At=Ie?Ie+1:E,H=n[Fe],at=t.slice(At,H);r.tokens&&(Fe===0&&E!==0?(u[Fe].isPrefix=!0,u[Fe].value=le):u[Fe].value=at,wZ(u[Fe]),ee.maxDepth+=u[Fe].depth),(Fe!==0||at!==\"\")&&A.push(at),Ie=H}if(Ie&&Ie+1<t.length){let Fe=t.slice(Ie+1);A.push(Fe),r.tokens&&(u[u.length-1].value=Fe,wZ(u[u.length-1]),ee.maxDepth+=u[u.length-1].depth)}ee.slashes=n,ee.parts=A}return ee};BZ.exports=V7e});var SZ=_((zQt,PZ)=>{\"use strict\";var TP=xI(),nl=kI(),{MAX_LENGTH:LP,POSIX_REGEX_SOURCE:J7e,REGEX_NON_SPECIAL_CHARS:z7e,REGEX_SPECIAL_CHARS_BACKREF:X7e,REPLACEMENTS:DZ}=TP,Z7e=(t,e)=>{if(typeof e.expandRange==\"function\")return e.expandRange(...t,e);t.sort();let r=`[${t.join(\"-\")}]`;try{new RegExp(r)}catch{return t.map(a=>nl.escapeRegex(a)).join(\"..\")}return r},Ty=(t,e)=>`Missing ${t}: \"${e}\" - use \"\\\\\\\\${e}\" to match literal characters`,LL=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");t=DZ[t]||t;let r={...e},o=typeof r.maxLength==\"number\"?Math.min(LP,r.maxLength):LP,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);let n={type:\"bos\",value:\"\",output:r.prepend||\"\"},u=[n],A=r.capture?\"\":\"?:\",p=nl.isWindows(e),h=TP.globChars(p),E=TP.extglobChars(h),{DOT_LITERAL:I,PLUS_LITERAL:v,SLASH_LITERAL:x,ONE_CHAR:C,DOTS_SLASH:R,NO_DOT:N,NO_DOT_SLASH:U,NO_DOTS_SLASH:J,QMARK:te,QMARK_NO_DOT:ae,STAR:fe,START_ANCHOR:ce}=h,me=b=>`(${A}(?:(?!${ce}${b.dot?R:I}).)*?)`,he=r.dot?\"\":N,Be=r.dot?te:ae,we=r.bash===!0?me(r):fe;r.capture&&(we=`(${we})`),typeof r.noext==\"boolean\"&&(r.noextglob=r.noext);let g={input:t,index:-1,start:0,dot:r.dot===!0,consumed:\"\",output:\"\",prefix:\"\",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:u};t=nl.removePrefix(t,g),a=t.length;let Ee=[],Pe=[],le=[],ne=n,ee,Ie=()=>g.index===a-1,Fe=g.peek=(b=1)=>t[g.index+b],At=g.advance=()=>t[++g.index]||\"\",H=()=>t.slice(g.index+1),at=(b=\"\",w=0)=>{g.consumed+=b,g.index+=w},Re=b=>{g.output+=b.output!=null?b.output:b.value,at(b.value)},ke=()=>{let b=1;for(;Fe()===\"!\"&&(Fe(2)!==\"(\"||Fe(3)===\"?\");)At(),g.start++,b++;return b%2===0?!1:(g.negated=!0,g.start++,!0)},xe=b=>{g[b]++,le.push(b)},He=b=>{g[b]--,le.pop()},Te=b=>{if(ne.type===\"globstar\"){let w=g.braces>0&&(b.type===\"comma\"||b.type===\"brace\"),S=b.extglob===!0||Ee.length&&(b.type===\"pipe\"||b.type===\"paren\");b.type!==\"slash\"&&b.type!==\"paren\"&&!w&&!S&&(g.output=g.output.slice(0,-ne.output.length),ne.type=\"star\",ne.value=\"*\",ne.output=we,g.output+=ne.output)}if(Ee.length&&b.type!==\"paren\"&&(Ee[Ee.length-1].inner+=b.value),(b.value||b.output)&&Re(b),ne&&ne.type===\"text\"&&b.type===\"text\"){ne.value+=b.value,ne.output=(ne.output||\"\")+b.value;return}b.prev=ne,u.push(b),ne=b},Je=(b,w)=>{let S={...E[w],conditions:1,inner:\"\"};S.prev=ne,S.parens=g.parens,S.output=g.output;let y=(r.capture?\"(\":\"\")+S.open;xe(\"parens\"),Te({type:b,value:w,output:g.output?\"\":C}),Te({type:\"paren\",extglob:!0,value:At(),output:y}),Ee.push(S)},je=b=>{let w=b.close+(r.capture?\")\":\"\"),S;if(b.type===\"negate\"){let y=we;if(b.inner&&b.inner.length>1&&b.inner.includes(\"/\")&&(y=me(r)),(y!==we||Ie()||/^\\)+$/.test(H()))&&(w=b.close=`)$))${y}`),b.inner.includes(\"*\")&&(S=H())&&/^\\.[^\\\\/.]+$/.test(S)){let F=LL(S,{...e,fastpaths:!1}).output;w=b.close=`)${F})${y})`}b.prev.type===\"bos\"&&(g.negatedExtglob=!0)}Te({type:\"paren\",extglob:!0,value:ee,output:w}),He(\"parens\")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\\]{}\"])/.test(t)){let b=!1,w=t.replace(X7e,(S,y,F,z,X,Z)=>z===\"\\\\\"?(b=!0,S):z===\"?\"?y?y+z+(X?te.repeat(X.length):\"\"):Z===0?Be+(X?te.repeat(X.length):\"\"):te.repeat(F.length):z===\".\"?I.repeat(F.length):z===\"*\"?y?y+z+(X?we:\"\"):we:y?S:`\\\\${S}`);return b===!0&&(r.unescape===!0?w=w.replace(/\\\\/g,\"\"):w=w.replace(/\\\\+/g,S=>S.length%2===0?\"\\\\\\\\\":S?\"\\\\\":\"\")),w===t&&r.contains===!0?(g.output=t,g):(g.output=nl.wrapOutput(w,g,e),g)}for(;!Ie();){if(ee=At(),ee===\"\\0\")continue;if(ee===\"\\\\\"){let S=Fe();if(S===\"/\"&&r.bash!==!0||S===\".\"||S===\";\")continue;if(!S){ee+=\"\\\\\",Te({type:\"text\",value:ee});continue}let y=/^\\\\+/.exec(H()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(ee+=\"\\\\\")),r.unescape===!0?ee=At():ee+=At(),g.brackets===0){Te({type:\"text\",value:ee});continue}}if(g.brackets>0&&(ee!==\"]\"||ne.value===\"[\"||ne.value===\"[^\")){if(r.posix!==!1&&ee===\":\"){let S=ne.value.slice(1);if(S.includes(\"[\")&&(ne.posix=!0,S.includes(\":\"))){let y=ne.value.lastIndexOf(\"[\"),F=ne.value.slice(0,y),z=ne.value.slice(y+2),X=J7e[z];if(X){ne.value=F+X,g.backtrack=!0,At(),!n.output&&u.indexOf(ne)===1&&(n.output=C);continue}}}(ee===\"[\"&&Fe()!==\":\"||ee===\"-\"&&Fe()===\"]\")&&(ee=`\\\\${ee}`),ee===\"]\"&&(ne.value===\"[\"||ne.value===\"[^\")&&(ee=`\\\\${ee}`),r.posix===!0&&ee===\"!\"&&ne.value===\"[\"&&(ee=\"^\"),ne.value+=ee,Re({value:ee});continue}if(g.quotes===1&&ee!=='\"'){ee=nl.escapeRegex(ee),ne.value+=ee,Re({value:ee});continue}if(ee==='\"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&Te({type:\"text\",value:ee});continue}if(ee===\"(\"){xe(\"parens\"),Te({type:\"paren\",value:ee});continue}if(ee===\")\"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Ty(\"opening\",\"(\"));let S=Ee[Ee.length-1];if(S&&g.parens===S.parens+1){je(Ee.pop());continue}Te({type:\"paren\",value:ee,output:g.parens?\")\":\"\\\\)\"}),He(\"parens\");continue}if(ee===\"[\"){if(r.nobracket===!0||!H().includes(\"]\")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"]\"));ee=`\\\\${ee}`}else xe(\"brackets\");Te({type:\"bracket\",value:ee});continue}if(ee===\"]\"){if(r.nobracket===!0||ne&&ne.type===\"bracket\"&&ne.value.length===1){Te({type:\"text\",value:ee,output:`\\\\${ee}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"opening\",\"[\"));Te({type:\"text\",value:ee,output:`\\\\${ee}`});continue}He(\"brackets\");let S=ne.value.slice(1);if(ne.posix!==!0&&S[0]===\"^\"&&!S.includes(\"/\")&&(ee=`/${ee}`),ne.value+=ee,Re({value:ee}),r.literalBrackets===!1||nl.hasRegexChars(S))continue;let y=nl.escapeRegex(ne.value);if(g.output=g.output.slice(0,-ne.value.length),r.literalBrackets===!0){g.output+=y,ne.value=y;continue}ne.value=`(${A}${y}|${ne.value})`,g.output+=ne.value;continue}if(ee===\"{\"&&r.nobrace!==!0){xe(\"braces\");let S={type:\"brace\",value:ee,output:\"(\",outputIndex:g.output.length,tokensIndex:g.tokens.length};Pe.push(S),Te(S);continue}if(ee===\"}\"){let S=Pe[Pe.length-1];if(r.nobrace===!0||!S){Te({type:\"text\",value:ee,output:ee});continue}let y=\")\";if(S.dots===!0){let F=u.slice(),z=[];for(let X=F.length-1;X>=0&&(u.pop(),F[X].type!==\"brace\");X--)F[X].type!==\"dots\"&&z.unshift(F[X].value);y=Z7e(z,r),g.backtrack=!0}if(S.comma!==!0&&S.dots!==!0){let F=g.output.slice(0,S.outputIndex),z=g.tokens.slice(S.tokensIndex);S.value=S.output=\"\\\\{\",ee=y=\"\\\\}\",g.output=F;for(let X of z)g.output+=X.output||X.value}Te({type:\"brace\",value:ee,output:y}),He(\"braces\"),Pe.pop();continue}if(ee===\"|\"){Ee.length>0&&Ee[Ee.length-1].conditions++,Te({type:\"text\",value:ee});continue}if(ee===\",\"){let S=ee,y=Pe[Pe.length-1];y&&le[le.length-1]===\"braces\"&&(y.comma=!0,S=\"|\"),Te({type:\"comma\",value:ee,output:S});continue}if(ee===\"/\"){if(ne.type===\"dot\"&&g.index===g.start+1){g.start=g.index+1,g.consumed=\"\",g.output=\"\",u.pop(),ne=n;continue}Te({type:\"slash\",value:ee,output:x});continue}if(ee===\".\"){if(g.braces>0&&ne.type===\"dot\"){ne.value===\".\"&&(ne.output=I);let S=Pe[Pe.length-1];ne.type=\"dots\",ne.output+=ee,ne.value+=ee,S.dots=!0;continue}if(g.braces+g.parens===0&&ne.type!==\"bos\"&&ne.type!==\"slash\"){Te({type:\"text\",value:ee,output:I});continue}Te({type:\"dot\",value:ee,output:I});continue}if(ee===\"?\"){if(!(ne&&ne.value===\"(\")&&r.noextglob!==!0&&Fe()===\"(\"&&Fe(2)!==\"?\"){Je(\"qmark\",ee);continue}if(ne&&ne.type===\"paren\"){let y=Fe(),F=ee;if(y===\"<\"&&!nl.supportsLookbehinds())throw new Error(\"Node.js v10 or higher is required for regex lookbehinds\");(ne.value===\"(\"&&!/[!=<:]/.test(y)||y===\"<\"&&!/<([!=]|\\w+>)/.test(H()))&&(F=`\\\\${ee}`),Te({type:\"text\",value:ee,output:F});continue}if(r.dot!==!0&&(ne.type===\"slash\"||ne.type===\"bos\")){Te({type:\"qmark\",value:ee,output:ae});continue}Te({type:\"qmark\",value:ee,output:te});continue}if(ee===\"!\"){if(r.noextglob!==!0&&Fe()===\"(\"&&(Fe(2)!==\"?\"||!/[!=<:]/.test(Fe(3)))){Je(\"negate\",ee);continue}if(r.nonegate!==!0&&g.index===0){ke();continue}}if(ee===\"+\"){if(r.noextglob!==!0&&Fe()===\"(\"&&Fe(2)!==\"?\"){Je(\"plus\",ee);continue}if(ne&&ne.value===\"(\"||r.regex===!1){Te({type:\"plus\",value:ee,output:v});continue}if(ne&&(ne.type===\"bracket\"||ne.type===\"paren\"||ne.type===\"brace\")||g.parens>0){Te({type:\"plus\",value:ee});continue}Te({type:\"plus\",value:v});continue}if(ee===\"@\"){if(r.noextglob!==!0&&Fe()===\"(\"&&Fe(2)!==\"?\"){Te({type:\"at\",extglob:!0,value:ee,output:\"\"});continue}Te({type:\"text\",value:ee});continue}if(ee!==\"*\"){(ee===\"$\"||ee===\"^\")&&(ee=`\\\\${ee}`);let S=z7e.exec(H());S&&(ee+=S[0],g.index+=S[0].length),Te({type:\"text\",value:ee});continue}if(ne&&(ne.type===\"globstar\"||ne.star===!0)){ne.type=\"star\",ne.star=!0,ne.value+=ee,ne.output=we,g.backtrack=!0,g.globstar=!0,at(ee);continue}let b=H();if(r.noextglob!==!0&&/^\\([^?]/.test(b)){Je(\"star\",ee);continue}if(ne.type===\"star\"){if(r.noglobstar===!0){at(ee);continue}let S=ne.prev,y=S.prev,F=S.type===\"slash\"||S.type===\"bos\",z=y&&(y.type===\"star\"||y.type===\"globstar\");if(r.bash===!0&&(!F||b[0]&&b[0]!==\"/\")){Te({type:\"star\",value:ee,output:\"\"});continue}let X=g.braces>0&&(S.type===\"comma\"||S.type===\"brace\"),Z=Ee.length&&(S.type===\"pipe\"||S.type===\"paren\");if(!F&&S.type!==\"paren\"&&!X&&!Z){Te({type:\"star\",value:ee,output:\"\"});continue}for(;b.slice(0,3)===\"/**\";){let ie=t[g.index+4];if(ie&&ie!==\"/\")break;b=b.slice(3),at(\"/**\",3)}if(S.type===\"bos\"&&Ie()){ne.type=\"globstar\",ne.value+=ee,ne.output=me(r),g.output=ne.output,g.globstar=!0,at(ee);continue}if(S.type===\"slash\"&&S.prev.type!==\"bos\"&&!z&&Ie()){g.output=g.output.slice(0,-(S.output+ne.output).length),S.output=`(?:${S.output}`,ne.type=\"globstar\",ne.output=me(r)+(r.strictSlashes?\")\":\"|$)\"),ne.value+=ee,g.globstar=!0,g.output+=S.output+ne.output,at(ee);continue}if(S.type===\"slash\"&&S.prev.type!==\"bos\"&&b[0]===\"/\"){let ie=b[1]!==void 0?\"|$\":\"\";g.output=g.output.slice(0,-(S.output+ne.output).length),S.output=`(?:${S.output}`,ne.type=\"globstar\",ne.output=`${me(r)}${x}|${x}${ie})`,ne.value+=ee,g.output+=S.output+ne.output,g.globstar=!0,at(ee+At()),Te({type:\"slash\",value:\"/\",output:\"\"});continue}if(S.type===\"bos\"&&b[0]===\"/\"){ne.type=\"globstar\",ne.value+=ee,ne.output=`(?:^|${x}|${me(r)}${x})`,g.output=ne.output,g.globstar=!0,at(ee+At()),Te({type:\"slash\",value:\"/\",output:\"\"});continue}g.output=g.output.slice(0,-ne.output.length),ne.type=\"globstar\",ne.output=me(r),ne.value+=ee,g.output+=ne.output,g.globstar=!0,at(ee);continue}let w={type:\"star\",value:ee,output:we};if(r.bash===!0){w.output=\".*?\",(ne.type===\"bos\"||ne.type===\"slash\")&&(w.output=he+w.output),Te(w);continue}if(ne&&(ne.type===\"bracket\"||ne.type===\"paren\")&&r.regex===!0){w.output=ee,Te(w);continue}(g.index===g.start||ne.type===\"slash\"||ne.type===\"dot\")&&(ne.type===\"dot\"?(g.output+=U,ne.output+=U):r.dot===!0?(g.output+=J,ne.output+=J):(g.output+=he,ne.output+=he),Fe()!==\"*\"&&(g.output+=C,ne.output+=C)),Te(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"]\"));g.output=nl.escapeLast(g.output,\"[\"),He(\"brackets\")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\")\"));g.output=nl.escapeLast(g.output,\"(\"),He(\"parens\")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"}\"));g.output=nl.escapeLast(g.output,\"{\"),He(\"braces\")}if(r.strictSlashes!==!0&&(ne.type===\"star\"||ne.type===\"bracket\")&&Te({type:\"maybe_slash\",value:\"\",output:`${x}?`}),g.backtrack===!0){g.output=\"\";for(let b of g.tokens)g.output+=b.output!=null?b.output:b.value,b.suffix&&(g.output+=b.suffix)}return g};LL.fastpaths=(t,e)=>{let r={...e},o=typeof r.maxLength==\"number\"?Math.min(LP,r.maxLength):LP,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);t=DZ[t]||t;let n=nl.isWindows(e),{DOT_LITERAL:u,SLASH_LITERAL:A,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:I,NO_DOTS_SLASH:v,STAR:x,START_ANCHOR:C}=TP.globChars(n),R=r.dot?I:E,N=r.dot?v:E,U=r.capture?\"\":\"?:\",J={negated:!1,prefix:\"\"},te=r.bash===!0?\".*?\":x;r.capture&&(te=`(${te})`);let ae=he=>he.noglobstar===!0?te:`(${U}(?:(?!${C}${he.dot?h:u}).)*?)`,fe=he=>{switch(he){case\"*\":return`${R}${p}${te}`;case\".*\":return`${u}${p}${te}`;case\"*.*\":return`${R}${te}${u}${p}${te}`;case\"*/*\":return`${R}${te}${A}${p}${N}${te}`;case\"**\":return R+ae(r);case\"**/*\":return`(?:${R}${ae(r)}${A})?${N}${p}${te}`;case\"**/*.*\":return`(?:${R}${ae(r)}${A})?${N}${te}${u}${p}${te}`;case\"**/.*\":return`(?:${R}${ae(r)}${A})?${u}${p}${te}`;default:{let Be=/^(.*?)\\.(\\w+)$/.exec(he);if(!Be)return;let we=fe(Be[1]);return we?we+u+Be[2]:void 0}}},ce=nl.removePrefix(t,J),me=fe(ce);return me&&r.strictSlashes!==!0&&(me+=`${A}?`),me};PZ.exports=LL});var xZ=_((XQt,bZ)=>{\"use strict\";var $7e=ve(\"path\"),eYe=vZ(),NL=SZ(),OL=kI(),tYe=xI(),rYe=t=>t&&typeof t==\"object\"&&!Array.isArray(t),Mi=(t,e,r=!1)=>{if(Array.isArray(t)){let E=t.map(v=>Mi(v,e,r));return v=>{for(let x of E){let C=x(v);if(C)return C}return!1}}let o=rYe(t)&&t.tokens&&t.input;if(t===\"\"||typeof t!=\"string\"&&!o)throw new TypeError(\"Expected pattern to be a non-empty string\");let a=e||{},n=OL.isWindows(e),u=o?Mi.compileRe(t,e):Mi.makeRe(t,e,!1,!0),A=u.state;delete u.state;let p=()=>!1;if(a.ignore){let E={...e,ignore:null,onMatch:null,onResult:null};p=Mi(a.ignore,E,r)}let h=(E,I=!1)=>{let{isMatch:v,match:x,output:C}=Mi.test(E,u,e,{glob:t,posix:n}),R={glob:t,state:A,regex:u,posix:n,input:E,output:C,match:x,isMatch:v};return typeof a.onResult==\"function\"&&a.onResult(R),v===!1?(R.isMatch=!1,I?R:!1):p(E)?(typeof a.onIgnore==\"function\"&&a.onIgnore(R),R.isMatch=!1,I?R:!1):(typeof a.onMatch==\"function\"&&a.onMatch(R),I?R:!0)};return r&&(h.state=A),h};Mi.test=(t,e,r,{glob:o,posix:a}={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected input to be a string\");if(t===\"\")return{isMatch:!1,output:\"\"};let n=r||{},u=n.format||(a?OL.toPosixSlashes:null),A=t===o,p=A&&u?u(t):t;return A===!1&&(p=u?u(t):t,A=p===o),(A===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?A=Mi.matchBase(t,e,r,a):A=e.exec(p)),{isMatch:Boolean(A),match:A,output:p}};Mi.matchBase=(t,e,r,o=OL.isWindows(r))=>(e instanceof RegExp?e:Mi.makeRe(e,r)).test($7e.basename(t));Mi.isMatch=(t,e,r)=>Mi(e,r)(t);Mi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Mi.parse(r,e)):NL(t,{...e,fastpaths:!1});Mi.scan=(t,e)=>eYe(t,e);Mi.compileRe=(t,e,r=!1,o=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?\"\":\"^\",u=a.contains?\"\":\"$\",A=`${n}(?:${t.output})${u}`;t&&t.negated===!0&&(A=`^(?!${A}).*$`);let p=Mi.toRegex(A,e);return o===!0&&(p.state=t),p};Mi.makeRe=(t,e={},r=!1,o=!1)=>{if(!t||typeof t!=\"string\")throw new TypeError(\"Expected a non-empty string\");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]===\".\"||t[0]===\"*\")&&(a.output=NL.fastpaths(t,e)),a.output||(a=NL(t,e)),Mi.compileRe(a,e,r,o)};Mi.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?\"i\":\"\"))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Mi.constants=tYe;bZ.exports=Mi});var QZ=_((ZQt,kZ)=>{\"use strict\";kZ.exports=xZ()});var Zo=_(($Qt,LZ)=>{\"use strict\";var RZ=ve(\"util\"),TZ=AZ(),Vu=QZ(),ML=kI(),FZ=t=>t===\"\"||t===\"./\",yi=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let o=new Set,a=new Set,n=new Set,u=0,A=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E<e.length;E++){let I=Vu(String(e[E]),{...r,onResult:A},!0),v=I.state.negated||I.state.negatedExtglob;v&&u++;for(let x of t){let C=I(x,!0);!(v?!C.isMatch:C.isMatch)||(v?o.add(C.output):(o.delete(C.output),a.add(C.output)))}}let h=(u===e.length?[...n]:[...a]).filter(E=>!o.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for \"${e.join(\", \")}\"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(E=>E.replace(/\\\\/g,\"\")):e}return h};yi.match=yi;yi.matcher=(t,e)=>Vu(t,e);yi.isMatch=(t,e,r)=>Vu(e,r)(t);yi.any=yi.isMatch;yi.not=(t,e,r={})=>{e=[].concat(e).map(String);let o=new Set,a=[],n=A=>{r.onResult&&r.onResult(A),a.push(A.output)},u=new Set(yi(t,e,{...r,onResult:n}));for(let A of a)u.has(A)||o.add(A);return[...o]};yi.contains=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${RZ.inspect(t)}\"`);if(Array.isArray(e))return e.some(o=>yi.contains(t,o,r));if(typeof e==\"string\"){if(FZ(t)||FZ(e))return!1;if(t.includes(e)||t.startsWith(\"./\")&&t.slice(2).includes(e))return!0}return yi.isMatch(t,e,{...r,contains:!0})};yi.matchKeys=(t,e,r)=>{if(!ML.isObject(t))throw new TypeError(\"Expected the first argument to be an object\");let o=yi(Object.keys(t),e,r),a={};for(let n of o)a[n]=t[n];return a};yi.some=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Vu(String(a),r);if(o.some(u=>n(u)))return!0}return!1};yi.every=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Vu(String(a),r);if(!o.every(u=>n(u)))return!1}return!0};yi.all=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${RZ.inspect(t)}\"`);return[].concat(e).every(o=>Vu(o,r)(t))};yi.capture=(t,e,r)=>{let o=ML.isWindows(r),n=Vu.makeRe(String(t),{...r,capture:!0}).exec(o?ML.toPosixSlashes(e):e);if(n)return n.slice(1).map(u=>u===void 0?\"\":u)};yi.makeRe=(...t)=>Vu.makeRe(...t);yi.scan=(...t)=>Vu.scan(...t);yi.parse=(t,e)=>{let r=[];for(let o of[].concat(t||[]))for(let a of TZ(String(o),e))r.push(Vu.parse(a,e));return r};yi.braces=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return e&&e.nobrace===!0||!/\\{.*\\}/.test(t)?[t]:TZ(t,e)};yi.braceExpand=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return yi.braces(t,{...e,expand:!0})};LZ.exports=yi});var OZ=_((eFt,NZ)=>{\"use strict\";NZ.exports=({onlyFirst:t=!1}={})=>{let e=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\"].join(\"|\");return new RegExp(e,t?void 0:\"g\")}});var NP=_((tFt,MZ)=>{\"use strict\";var nYe=OZ();MZ.exports=t=>typeof t==\"string\"?t.replace(nYe(),\"\"):t});var _Z=_((rFt,UZ)=>{function iYe(){this.__data__=[],this.size=0}UZ.exports=iYe});var Ly=_((nFt,HZ)=>{function sYe(t,e){return t===e||t!==t&&e!==e}HZ.exports=sYe});var FI=_((iFt,jZ)=>{var oYe=Ly();function aYe(t,e){for(var r=t.length;r--;)if(oYe(t[r][0],e))return r;return-1}jZ.exports=aYe});var GZ=_((sFt,qZ)=>{var lYe=FI(),cYe=Array.prototype,uYe=cYe.splice;function AYe(t){var e=this.__data__,r=lYe(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():uYe.call(e,r,1),--this.size,!0}qZ.exports=AYe});var WZ=_((oFt,YZ)=>{var fYe=FI();function pYe(t){var e=this.__data__,r=fYe(e,t);return r<0?void 0:e[r][1]}YZ.exports=pYe});var VZ=_((aFt,KZ)=>{var hYe=FI();function gYe(t){return hYe(this.__data__,t)>-1}KZ.exports=gYe});var zZ=_((lFt,JZ)=>{var dYe=FI();function mYe(t,e){var r=this.__data__,o=dYe(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}JZ.exports=mYe});var RI=_((cFt,XZ)=>{var yYe=_Z(),EYe=GZ(),CYe=WZ(),wYe=VZ(),IYe=zZ();function Ny(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Ny.prototype.clear=yYe;Ny.prototype.delete=EYe;Ny.prototype.get=CYe;Ny.prototype.has=wYe;Ny.prototype.set=IYe;XZ.exports=Ny});var $Z=_((uFt,ZZ)=>{var BYe=RI();function vYe(){this.__data__=new BYe,this.size=0}ZZ.exports=vYe});var t$=_((AFt,e$)=>{function DYe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}e$.exports=DYe});var n$=_((fFt,r$)=>{function PYe(t){return this.__data__.get(t)}r$.exports=PYe});var s$=_((pFt,i$)=>{function SYe(t){return this.__data__.has(t)}i$.exports=SYe});var UL=_((hFt,o$)=>{var bYe=typeof global==\"object\"&&global&&global.Object===Object&&global;o$.exports=bYe});var _l=_((gFt,a$)=>{var xYe=UL(),kYe=typeof self==\"object\"&&self&&self.Object===Object&&self,QYe=xYe||kYe||Function(\"return this\")();a$.exports=QYe});var pd=_((dFt,l$)=>{var FYe=_l(),RYe=FYe.Symbol;l$.exports=RYe});var f$=_((mFt,A$)=>{var c$=pd(),u$=Object.prototype,TYe=u$.hasOwnProperty,LYe=u$.toString,TI=c$?c$.toStringTag:void 0;function NYe(t){var e=TYe.call(t,TI),r=t[TI];try{t[TI]=void 0;var o=!0}catch{}var a=LYe.call(t);return o&&(e?t[TI]=r:delete t[TI]),a}A$.exports=NYe});var h$=_((yFt,p$)=>{var OYe=Object.prototype,MYe=OYe.toString;function UYe(t){return MYe.call(t)}p$.exports=UYe});var hd=_((EFt,m$)=>{var g$=pd(),_Ye=f$(),HYe=h$(),jYe=\"[object Null]\",qYe=\"[object Undefined]\",d$=g$?g$.toStringTag:void 0;function GYe(t){return t==null?t===void 0?qYe:jYe:d$&&d$ in Object(t)?_Ye(t):HYe(t)}m$.exports=GYe});var il=_((CFt,y$)=>{function YYe(t){var e=typeof t;return t!=null&&(e==\"object\"||e==\"function\")}y$.exports=YYe});var OP=_((wFt,E$)=>{var WYe=hd(),KYe=il(),VYe=\"[object AsyncFunction]\",JYe=\"[object Function]\",zYe=\"[object GeneratorFunction]\",XYe=\"[object Proxy]\";function ZYe(t){if(!KYe(t))return!1;var e=WYe(t);return e==JYe||e==zYe||e==VYe||e==XYe}E$.exports=ZYe});var w$=_((IFt,C$)=>{var $Ye=_l(),eWe=$Ye[\"__core-js_shared__\"];C$.exports=eWe});var v$=_((BFt,B$)=>{var _L=w$(),I$=function(){var t=/[^.]+$/.exec(_L&&_L.keys&&_L.keys.IE_PROTO||\"\");return t?\"Symbol(src)_1.\"+t:\"\"}();function tWe(t){return!!I$&&I$ in t}B$.exports=tWe});var HL=_((vFt,D$)=>{var rWe=Function.prototype,nWe=rWe.toString;function iWe(t){if(t!=null){try{return nWe.call(t)}catch{}try{return t+\"\"}catch{}}return\"\"}D$.exports=iWe});var S$=_((DFt,P$)=>{var sWe=OP(),oWe=v$(),aWe=il(),lWe=HL(),cWe=/[\\\\^$.*+?()[\\]{}|]/g,uWe=/^\\[object .+?Constructor\\]$/,AWe=Function.prototype,fWe=Object.prototype,pWe=AWe.toString,hWe=fWe.hasOwnProperty,gWe=RegExp(\"^\"+pWe.call(hWe).replace(cWe,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");function dWe(t){if(!aWe(t)||oWe(t))return!1;var e=sWe(t)?gWe:uWe;return e.test(lWe(t))}P$.exports=dWe});var x$=_((PFt,b$)=>{function mWe(t,e){return t?.[e]}b$.exports=mWe});var zp=_((SFt,k$)=>{var yWe=S$(),EWe=x$();function CWe(t,e){var r=EWe(t,e);return yWe(r)?r:void 0}k$.exports=CWe});var MP=_((bFt,Q$)=>{var wWe=zp(),IWe=_l(),BWe=wWe(IWe,\"Map\");Q$.exports=BWe});var LI=_((xFt,F$)=>{var vWe=zp(),DWe=vWe(Object,\"create\");F$.exports=DWe});var L$=_((kFt,T$)=>{var R$=LI();function PWe(){this.__data__=R$?R$(null):{},this.size=0}T$.exports=PWe});var O$=_((QFt,N$)=>{function SWe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}N$.exports=SWe});var U$=_((FFt,M$)=>{var bWe=LI(),xWe=\"__lodash_hash_undefined__\",kWe=Object.prototype,QWe=kWe.hasOwnProperty;function FWe(t){var e=this.__data__;if(bWe){var r=e[t];return r===xWe?void 0:r}return QWe.call(e,t)?e[t]:void 0}M$.exports=FWe});var H$=_((RFt,_$)=>{var RWe=LI(),TWe=Object.prototype,LWe=TWe.hasOwnProperty;function NWe(t){var e=this.__data__;return RWe?e[t]!==void 0:LWe.call(e,t)}_$.exports=NWe});var q$=_((TFt,j$)=>{var OWe=LI(),MWe=\"__lodash_hash_undefined__\";function UWe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=OWe&&e===void 0?MWe:e,this}j$.exports=UWe});var Y$=_((LFt,G$)=>{var _We=L$(),HWe=O$(),jWe=U$(),qWe=H$(),GWe=q$();function Oy(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Oy.prototype.clear=_We;Oy.prototype.delete=HWe;Oy.prototype.get=jWe;Oy.prototype.has=qWe;Oy.prototype.set=GWe;G$.exports=Oy});var V$=_((NFt,K$)=>{var W$=Y$(),YWe=RI(),WWe=MP();function KWe(){this.size=0,this.__data__={hash:new W$,map:new(WWe||YWe),string:new W$}}K$.exports=KWe});var z$=_((OFt,J$)=>{function VWe(t){var e=typeof t;return e==\"string\"||e==\"number\"||e==\"symbol\"||e==\"boolean\"?t!==\"__proto__\":t===null}J$.exports=VWe});var NI=_((MFt,X$)=>{var JWe=z$();function zWe(t,e){var r=t.__data__;return JWe(e)?r[typeof e==\"string\"?\"string\":\"hash\"]:r.map}X$.exports=zWe});var $$=_((UFt,Z$)=>{var XWe=NI();function ZWe(t){var e=XWe(this,t).delete(t);return this.size-=e?1:0,e}Z$.exports=ZWe});var tee=_((_Ft,eee)=>{var $We=NI();function eKe(t){return $We(this,t).get(t)}eee.exports=eKe});var nee=_((HFt,ree)=>{var tKe=NI();function rKe(t){return tKe(this,t).has(t)}ree.exports=rKe});var see=_((jFt,iee)=>{var nKe=NI();function iKe(t,e){var r=nKe(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}iee.exports=iKe});var UP=_((qFt,oee)=>{var sKe=V$(),oKe=$$(),aKe=tee(),lKe=nee(),cKe=see();function My(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}My.prototype.clear=sKe;My.prototype.delete=oKe;My.prototype.get=aKe;My.prototype.has=lKe;My.prototype.set=cKe;oee.exports=My});var lee=_((GFt,aee)=>{var uKe=RI(),AKe=MP(),fKe=UP(),pKe=200;function hKe(t,e){var r=this.__data__;if(r instanceof uKe){var o=r.__data__;if(!AKe||o.length<pKe-1)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new fKe(o)}return r.set(t,e),this.size=r.size,this}aee.exports=hKe});var _P=_((YFt,cee)=>{var gKe=RI(),dKe=$Z(),mKe=t$(),yKe=n$(),EKe=s$(),CKe=lee();function Uy(t){var e=this.__data__=new gKe(t);this.size=e.size}Uy.prototype.clear=dKe;Uy.prototype.delete=mKe;Uy.prototype.get=yKe;Uy.prototype.has=EKe;Uy.prototype.set=CKe;cee.exports=Uy});var Aee=_((WFt,uee)=>{var wKe=\"__lodash_hash_undefined__\";function IKe(t){return this.__data__.set(t,wKe),this}uee.exports=IKe});var pee=_((KFt,fee)=>{function BKe(t){return this.__data__.has(t)}fee.exports=BKe});var gee=_((VFt,hee)=>{var vKe=UP(),DKe=Aee(),PKe=pee();function HP(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new vKe;++e<r;)this.add(t[e])}HP.prototype.add=HP.prototype.push=DKe;HP.prototype.has=PKe;hee.exports=HP});var mee=_((JFt,dee)=>{function SKe(t,e){for(var r=-1,o=t==null?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1}dee.exports=SKe});var Eee=_((zFt,yee)=>{function bKe(t,e){return t.has(e)}yee.exports=bKe});var jL=_((XFt,Cee)=>{var xKe=gee(),kKe=mee(),QKe=Eee(),FKe=1,RKe=2;function TKe(t,e,r,o,a,n){var u=r&FKe,A=t.length,p=e.length;if(A!=p&&!(u&&p>A))return!1;var h=n.get(t),E=n.get(e);if(h&&E)return h==e&&E==t;var I=-1,v=!0,x=r&RKe?new xKe:void 0;for(n.set(t,e),n.set(e,t);++I<A;){var C=t[I],R=e[I];if(o)var N=u?o(R,C,I,e,t,n):o(C,R,I,t,e,n);if(N!==void 0){if(N)continue;v=!1;break}if(x){if(!kKe(e,function(U,J){if(!QKe(x,J)&&(C===U||a(C,U,r,o,n)))return x.push(J)})){v=!1;break}}else if(!(C===R||a(C,R,r,o,n))){v=!1;break}}return n.delete(t),n.delete(e),v}Cee.exports=TKe});var qL=_((ZFt,wee)=>{var LKe=_l(),NKe=LKe.Uint8Array;wee.exports=NKe});var Bee=_(($Ft,Iee)=>{function OKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o,a){r[++e]=[a,o]}),r}Iee.exports=OKe});var Dee=_((eRt,vee)=>{function MKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}vee.exports=MKe});var kee=_((tRt,xee)=>{var Pee=pd(),See=qL(),UKe=Ly(),_Ke=jL(),HKe=Bee(),jKe=Dee(),qKe=1,GKe=2,YKe=\"[object Boolean]\",WKe=\"[object Date]\",KKe=\"[object Error]\",VKe=\"[object Map]\",JKe=\"[object Number]\",zKe=\"[object RegExp]\",XKe=\"[object Set]\",ZKe=\"[object String]\",$Ke=\"[object Symbol]\",eVe=\"[object ArrayBuffer]\",tVe=\"[object DataView]\",bee=Pee?Pee.prototype:void 0,YL=bee?bee.valueOf:void 0;function rVe(t,e,r,o,a,n,u){switch(r){case tVe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case eVe:return!(t.byteLength!=e.byteLength||!n(new See(t),new See(e)));case YKe:case WKe:case JKe:return UKe(+t,+e);case KKe:return t.name==e.name&&t.message==e.message;case zKe:case ZKe:return t==e+\"\";case VKe:var A=HKe;case XKe:var p=o&qKe;if(A||(A=jKe),t.size!=e.size&&!p)return!1;var h=u.get(t);if(h)return h==e;o|=GKe,u.set(t,e);var E=_Ke(A(t),A(e),o,a,n,u);return u.delete(t),E;case $Ke:if(YL)return YL.call(t)==YL.call(e)}return!1}xee.exports=rVe});var jP=_((rRt,Qee)=>{function nVe(t,e){for(var r=-1,o=e.length,a=t.length;++r<o;)t[a+r]=e[r];return t}Qee.exports=nVe});var Hl=_((nRt,Fee)=>{var iVe=Array.isArray;Fee.exports=iVe});var WL=_((iRt,Ree)=>{var sVe=jP(),oVe=Hl();function aVe(t,e,r){var o=e(t);return oVe(t)?o:sVe(o,r(t))}Ree.exports=aVe});var Lee=_((sRt,Tee)=>{function lVe(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r<o;){var u=t[r];e(u,r,t)&&(n[a++]=u)}return n}Tee.exports=lVe});var KL=_((oRt,Nee)=>{function cVe(){return[]}Nee.exports=cVe});var qP=_((aRt,Mee)=>{var uVe=Lee(),AVe=KL(),fVe=Object.prototype,pVe=fVe.propertyIsEnumerable,Oee=Object.getOwnPropertySymbols,hVe=Oee?function(t){return t==null?[]:(t=Object(t),uVe(Oee(t),function(e){return pVe.call(t,e)}))}:AVe;Mee.exports=hVe});var _ee=_((lRt,Uee)=>{function gVe(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}Uee.exports=gVe});var Ju=_((cRt,Hee)=>{function dVe(t){return t!=null&&typeof t==\"object\"}Hee.exports=dVe});var qee=_((uRt,jee)=>{var mVe=hd(),yVe=Ju(),EVe=\"[object Arguments]\";function CVe(t){return yVe(t)&&mVe(t)==EVe}jee.exports=CVe});var OI=_((ARt,Wee)=>{var Gee=qee(),wVe=Ju(),Yee=Object.prototype,IVe=Yee.hasOwnProperty,BVe=Yee.propertyIsEnumerable,vVe=Gee(function(){return arguments}())?Gee:function(t){return wVe(t)&&IVe.call(t,\"callee\")&&!BVe.call(t,\"callee\")};Wee.exports=vVe});var Vee=_((fRt,Kee)=>{function DVe(){return!1}Kee.exports=DVe});var UI=_((MI,_y)=>{var PVe=_l(),SVe=Vee(),Xee=typeof MI==\"object\"&&MI&&!MI.nodeType&&MI,Jee=Xee&&typeof _y==\"object\"&&_y&&!_y.nodeType&&_y,bVe=Jee&&Jee.exports===Xee,zee=bVe?PVe.Buffer:void 0,xVe=zee?zee.isBuffer:void 0,kVe=xVe||SVe;_y.exports=kVe});var _I=_((pRt,Zee)=>{var QVe=9007199254740991,FVe=/^(?:0|[1-9]\\d*)$/;function RVe(t,e){var r=typeof t;return e=e??QVe,!!e&&(r==\"number\"||r!=\"symbol\"&&FVe.test(t))&&t>-1&&t%1==0&&t<e}Zee.exports=RVe});var GP=_((hRt,$ee)=>{var TVe=9007199254740991;function LVe(t){return typeof t==\"number\"&&t>-1&&t%1==0&&t<=TVe}$ee.exports=LVe});var tte=_((gRt,ete)=>{var NVe=hd(),OVe=GP(),MVe=Ju(),UVe=\"[object Arguments]\",_Ve=\"[object Array]\",HVe=\"[object Boolean]\",jVe=\"[object Date]\",qVe=\"[object Error]\",GVe=\"[object Function]\",YVe=\"[object Map]\",WVe=\"[object Number]\",KVe=\"[object Object]\",VVe=\"[object RegExp]\",JVe=\"[object Set]\",zVe=\"[object String]\",XVe=\"[object WeakMap]\",ZVe=\"[object ArrayBuffer]\",$Ve=\"[object DataView]\",eJe=\"[object Float32Array]\",tJe=\"[object Float64Array]\",rJe=\"[object Int8Array]\",nJe=\"[object Int16Array]\",iJe=\"[object Int32Array]\",sJe=\"[object Uint8Array]\",oJe=\"[object Uint8ClampedArray]\",aJe=\"[object Uint16Array]\",lJe=\"[object Uint32Array]\",ui={};ui[eJe]=ui[tJe]=ui[rJe]=ui[nJe]=ui[iJe]=ui[sJe]=ui[oJe]=ui[aJe]=ui[lJe]=!0;ui[UVe]=ui[_Ve]=ui[ZVe]=ui[HVe]=ui[$Ve]=ui[jVe]=ui[qVe]=ui[GVe]=ui[YVe]=ui[WVe]=ui[KVe]=ui[VVe]=ui[JVe]=ui[zVe]=ui[XVe]=!1;function cJe(t){return MVe(t)&&OVe(t.length)&&!!ui[NVe(t)]}ete.exports=cJe});var YP=_((dRt,rte)=>{function uJe(t){return function(e){return t(e)}}rte.exports=uJe});var WP=_((HI,Hy)=>{var AJe=UL(),nte=typeof HI==\"object\"&&HI&&!HI.nodeType&&HI,jI=nte&&typeof Hy==\"object\"&&Hy&&!Hy.nodeType&&Hy,fJe=jI&&jI.exports===nte,VL=fJe&&AJe.process,pJe=function(){try{var t=jI&&jI.require&&jI.require(\"util\").types;return t||VL&&VL.binding&&VL.binding(\"util\")}catch{}}();Hy.exports=pJe});var KP=_((mRt,ote)=>{var hJe=tte(),gJe=YP(),ite=WP(),ste=ite&&ite.isTypedArray,dJe=ste?gJe(ste):hJe;ote.exports=dJe});var JL=_((yRt,ate)=>{var mJe=_ee(),yJe=OI(),EJe=Hl(),CJe=UI(),wJe=_I(),IJe=KP(),BJe=Object.prototype,vJe=BJe.hasOwnProperty;function DJe(t,e){var r=EJe(t),o=!r&&yJe(t),a=!r&&!o&&CJe(t),n=!r&&!o&&!a&&IJe(t),u=r||o||a||n,A=u?mJe(t.length,String):[],p=A.length;for(var h in t)(e||vJe.call(t,h))&&!(u&&(h==\"length\"||a&&(h==\"offset\"||h==\"parent\")||n&&(h==\"buffer\"||h==\"byteLength\"||h==\"byteOffset\")||wJe(h,p)))&&A.push(h);return A}ate.exports=DJe});var VP=_((ERt,lte)=>{var PJe=Object.prototype;function SJe(t){var e=t&&t.constructor,r=typeof e==\"function\"&&e.prototype||PJe;return t===r}lte.exports=SJe});var zL=_((CRt,cte)=>{function bJe(t,e){return function(r){return t(e(r))}}cte.exports=bJe});var Ate=_((wRt,ute)=>{var xJe=zL(),kJe=xJe(Object.keys,Object);ute.exports=kJe});var pte=_((IRt,fte)=>{var QJe=VP(),FJe=Ate(),RJe=Object.prototype,TJe=RJe.hasOwnProperty;function LJe(t){if(!QJe(t))return FJe(t);var e=[];for(var r in Object(t))TJe.call(t,r)&&r!=\"constructor\"&&e.push(r);return e}fte.exports=LJe});var qI=_((BRt,hte)=>{var NJe=OP(),OJe=GP();function MJe(t){return t!=null&&OJe(t.length)&&!NJe(t)}hte.exports=MJe});var JP=_((vRt,gte)=>{var UJe=JL(),_Je=pte(),HJe=qI();function jJe(t){return HJe(t)?UJe(t):_Je(t)}gte.exports=jJe});var XL=_((DRt,dte)=>{var qJe=WL(),GJe=qP(),YJe=JP();function WJe(t){return qJe(t,YJe,GJe)}dte.exports=WJe});var Ete=_((PRt,yte)=>{var mte=XL(),KJe=1,VJe=Object.prototype,JJe=VJe.hasOwnProperty;function zJe(t,e,r,o,a,n){var u=r&KJe,A=mte(t),p=A.length,h=mte(e),E=h.length;if(p!=E&&!u)return!1;for(var I=p;I--;){var v=A[I];if(!(u?v in e:JJe.call(e,v)))return!1}var x=n.get(t),C=n.get(e);if(x&&C)return x==e&&C==t;var R=!0;n.set(t,e),n.set(e,t);for(var N=u;++I<p;){v=A[I];var U=t[v],J=e[v];if(o)var te=u?o(J,U,v,e,t,n):o(U,J,v,t,e,n);if(!(te===void 0?U===J||a(U,J,r,o,n):te)){R=!1;break}N||(N=v==\"constructor\")}if(R&&!N){var ae=t.constructor,fe=e.constructor;ae!=fe&&\"constructor\"in t&&\"constructor\"in e&&!(typeof ae==\"function\"&&ae instanceof ae&&typeof fe==\"function\"&&fe instanceof fe)&&(R=!1)}return n.delete(t),n.delete(e),R}yte.exports=zJe});var wte=_((SRt,Cte)=>{var XJe=zp(),ZJe=_l(),$Je=XJe(ZJe,\"DataView\");Cte.exports=$Je});var Bte=_((bRt,Ite)=>{var eze=zp(),tze=_l(),rze=eze(tze,\"Promise\");Ite.exports=rze});var Dte=_((xRt,vte)=>{var nze=zp(),ize=_l(),sze=nze(ize,\"Set\");vte.exports=sze});var Ste=_((kRt,Pte)=>{var oze=zp(),aze=_l(),lze=oze(aze,\"WeakMap\");Pte.exports=lze});var GI=_((QRt,Tte)=>{var ZL=wte(),$L=MP(),eN=Bte(),tN=Dte(),rN=Ste(),Rte=hd(),jy=HL(),bte=\"[object Map]\",cze=\"[object Object]\",xte=\"[object Promise]\",kte=\"[object Set]\",Qte=\"[object WeakMap]\",Fte=\"[object DataView]\",uze=jy(ZL),Aze=jy($L),fze=jy(eN),pze=jy(tN),hze=jy(rN),gd=Rte;(ZL&&gd(new ZL(new ArrayBuffer(1)))!=Fte||$L&&gd(new $L)!=bte||eN&&gd(eN.resolve())!=xte||tN&&gd(new tN)!=kte||rN&&gd(new rN)!=Qte)&&(gd=function(t){var e=Rte(t),r=e==cze?t.constructor:void 0,o=r?jy(r):\"\";if(o)switch(o){case uze:return Fte;case Aze:return bte;case fze:return xte;case pze:return kte;case hze:return Qte}return e});Tte.exports=gd});var jte=_((FRt,Hte)=>{var nN=_P(),gze=jL(),dze=kee(),mze=Ete(),Lte=GI(),Nte=Hl(),Ote=UI(),yze=KP(),Eze=1,Mte=\"[object Arguments]\",Ute=\"[object Array]\",zP=\"[object Object]\",Cze=Object.prototype,_te=Cze.hasOwnProperty;function wze(t,e,r,o,a,n){var u=Nte(t),A=Nte(e),p=u?Ute:Lte(t),h=A?Ute:Lte(e);p=p==Mte?zP:p,h=h==Mte?zP:h;var E=p==zP,I=h==zP,v=p==h;if(v&&Ote(t)){if(!Ote(e))return!1;u=!0,E=!1}if(v&&!E)return n||(n=new nN),u||yze(t)?gze(t,e,r,o,a,n):dze(t,e,p,r,o,a,n);if(!(r&Eze)){var x=E&&_te.call(t,\"__wrapped__\"),C=I&&_te.call(e,\"__wrapped__\");if(x||C){var R=x?t.value():t,N=C?e.value():e;return n||(n=new nN),a(R,N,r,o,n)}}return v?(n||(n=new nN),mze(t,e,r,o,a,n)):!1}Hte.exports=wze});var Wte=_((RRt,Yte)=>{var Ize=jte(),qte=Ju();function Gte(t,e,r,o,a){return t===e?!0:t==null||e==null||!qte(t)&&!qte(e)?t!==t&&e!==e:Ize(t,e,r,o,Gte,a)}Yte.exports=Gte});var Vte=_((TRt,Kte)=>{var Bze=Wte();function vze(t,e){return Bze(t,e)}Kte.exports=vze});var iN=_((LRt,Jte)=>{var Dze=zp(),Pze=function(){try{var t=Dze(Object,\"defineProperty\");return t({},\"\",{}),t}catch{}}();Jte.exports=Pze});var XP=_((NRt,Xte)=>{var zte=iN();function Sze(t,e,r){e==\"__proto__\"&&zte?zte(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}Xte.exports=Sze});var sN=_((ORt,Zte)=>{var bze=XP(),xze=Ly();function kze(t,e,r){(r!==void 0&&!xze(t[e],r)||r===void 0&&!(e in t))&&bze(t,e,r)}Zte.exports=kze});var ere=_((MRt,$te)=>{function Qze(t){return function(e,r,o){for(var a=-1,n=Object(e),u=o(e),A=u.length;A--;){var p=u[t?A:++a];if(r(n[p],p,n)===!1)break}return e}}$te.exports=Qze});var rre=_((URt,tre)=>{var Fze=ere(),Rze=Fze();tre.exports=Rze});var oN=_((YI,qy)=>{var Tze=_l(),ore=typeof YI==\"object\"&&YI&&!YI.nodeType&&YI,nre=ore&&typeof qy==\"object\"&&qy&&!qy.nodeType&&qy,Lze=nre&&nre.exports===ore,ire=Lze?Tze.Buffer:void 0,sre=ire?ire.allocUnsafe:void 0;function Nze(t,e){if(e)return t.slice();var r=t.length,o=sre?sre(r):new t.constructor(r);return t.copy(o),o}qy.exports=Nze});var ZP=_((_Rt,lre)=>{var are=qL();function Oze(t){var e=new t.constructor(t.byteLength);return new are(e).set(new are(t)),e}lre.exports=Oze});var aN=_((HRt,cre)=>{var Mze=ZP();function Uze(t,e){var r=e?Mze(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}cre.exports=Uze});var $P=_((jRt,ure)=>{function _ze(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e}ure.exports=_ze});var pre=_((qRt,fre)=>{var Hze=il(),Are=Object.create,jze=function(){function t(){}return function(e){if(!Hze(e))return{};if(Are)return Are(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();fre.exports=jze});var eS=_((GRt,hre)=>{var qze=zL(),Gze=qze(Object.getPrototypeOf,Object);hre.exports=Gze});var lN=_((YRt,gre)=>{var Yze=pre(),Wze=eS(),Kze=VP();function Vze(t){return typeof t.constructor==\"function\"&&!Kze(t)?Yze(Wze(t)):{}}gre.exports=Vze});var mre=_((WRt,dre)=>{var Jze=qI(),zze=Ju();function Xze(t){return zze(t)&&Jze(t)}dre.exports=Xze});var cN=_((KRt,Ere)=>{var Zze=hd(),$ze=eS(),eXe=Ju(),tXe=\"[object Object]\",rXe=Function.prototype,nXe=Object.prototype,yre=rXe.toString,iXe=nXe.hasOwnProperty,sXe=yre.call(Object);function oXe(t){if(!eXe(t)||Zze(t)!=tXe)return!1;var e=$ze(t);if(e===null)return!0;var r=iXe.call(e,\"constructor\")&&e.constructor;return typeof r==\"function\"&&r instanceof r&&yre.call(r)==sXe}Ere.exports=oXe});var uN=_((VRt,Cre)=>{function aXe(t,e){if(!(e===\"constructor\"&&typeof t[e]==\"function\")&&e!=\"__proto__\")return t[e]}Cre.exports=aXe});var tS=_((JRt,wre)=>{var lXe=XP(),cXe=Ly(),uXe=Object.prototype,AXe=uXe.hasOwnProperty;function fXe(t,e,r){var o=t[e];(!(AXe.call(t,e)&&cXe(o,r))||r===void 0&&!(e in t))&&lXe(t,e,r)}wre.exports=fXe});var dd=_((zRt,Ire)=>{var pXe=tS(),hXe=XP();function gXe(t,e,r,o){var a=!r;r||(r={});for(var n=-1,u=e.length;++n<u;){var A=e[n],p=o?o(r[A],t[A],A,r,t):void 0;p===void 0&&(p=t[A]),a?hXe(r,A,p):pXe(r,A,p)}return r}Ire.exports=gXe});var vre=_((XRt,Bre)=>{function dXe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}Bre.exports=dXe});var Pre=_((ZRt,Dre)=>{var mXe=il(),yXe=VP(),EXe=vre(),CXe=Object.prototype,wXe=CXe.hasOwnProperty;function IXe(t){if(!mXe(t))return EXe(t);var e=yXe(t),r=[];for(var o in t)o==\"constructor\"&&(e||!wXe.call(t,o))||r.push(o);return r}Dre.exports=IXe});var Gy=_(($Rt,Sre)=>{var BXe=JL(),vXe=Pre(),DXe=qI();function PXe(t){return DXe(t)?BXe(t,!0):vXe(t)}Sre.exports=PXe});var xre=_((eTt,bre)=>{var SXe=dd(),bXe=Gy();function xXe(t){return SXe(t,bXe(t))}bre.exports=xXe});var Lre=_((tTt,Tre)=>{var kre=sN(),kXe=oN(),QXe=aN(),FXe=$P(),RXe=lN(),Qre=OI(),Fre=Hl(),TXe=mre(),LXe=UI(),NXe=OP(),OXe=il(),MXe=cN(),UXe=KP(),Rre=uN(),_Xe=xre();function HXe(t,e,r,o,a,n,u){var A=Rre(t,r),p=Rre(e,r),h=u.get(p);if(h){kre(t,r,h);return}var E=n?n(A,p,r+\"\",t,e,u):void 0,I=E===void 0;if(I){var v=Fre(p),x=!v&&LXe(p),C=!v&&!x&&UXe(p);E=p,v||x||C?Fre(A)?E=A:TXe(A)?E=FXe(A):x?(I=!1,E=kXe(p,!0)):C?(I=!1,E=QXe(p,!0)):E=[]:MXe(p)||Qre(p)?(E=A,Qre(A)?E=_Xe(A):(!OXe(A)||NXe(A))&&(E=RXe(p))):I=!1}I&&(u.set(p,E),a(E,p,o,n,u),u.delete(p)),kre(t,r,E)}Tre.exports=HXe});var Mre=_((rTt,Ore)=>{var jXe=_P(),qXe=sN(),GXe=rre(),YXe=Lre(),WXe=il(),KXe=Gy(),VXe=uN();function Nre(t,e,r,o,a){t!==e&&GXe(e,function(n,u){if(a||(a=new jXe),WXe(n))YXe(t,e,u,r,Nre,o,a);else{var A=o?o(VXe(t,u),n,u+\"\",t,e,a):void 0;A===void 0&&(A=n),qXe(t,u,A)}},KXe)}Ore.exports=Nre});var AN=_((nTt,Ure)=>{function JXe(t){return t}Ure.exports=JXe});var Hre=_((iTt,_re)=>{function zXe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}_re.exports=zXe});var fN=_((sTt,qre)=>{var XXe=Hre(),jre=Math.max;function ZXe(t,e,r){return e=jre(e===void 0?t.length-1:e,0),function(){for(var o=arguments,a=-1,n=jre(o.length-e,0),u=Array(n);++a<n;)u[a]=o[e+a];a=-1;for(var A=Array(e+1);++a<e;)A[a]=o[a];return A[e]=r(u),XXe(t,this,A)}}qre.exports=ZXe});var Yre=_((oTt,Gre)=>{function $Xe(t){return function(){return t}}Gre.exports=$Xe});var Vre=_((aTt,Kre)=>{var eZe=Yre(),Wre=iN(),tZe=AN(),rZe=Wre?function(t,e){return Wre(t,\"toString\",{configurable:!0,enumerable:!1,value:eZe(e),writable:!0})}:tZe;Kre.exports=rZe});var zre=_((lTt,Jre)=>{var nZe=800,iZe=16,sZe=Date.now;function oZe(t){var e=0,r=0;return function(){var o=sZe(),a=iZe-(o-r);if(r=o,a>0){if(++e>=nZe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}Jre.exports=oZe});var pN=_((cTt,Xre)=>{var aZe=Vre(),lZe=zre(),cZe=lZe(aZe);Xre.exports=cZe});var $re=_((uTt,Zre)=>{var uZe=AN(),AZe=fN(),fZe=pN();function pZe(t,e){return fZe(AZe(t,e,uZe),t+\"\")}Zre.exports=pZe});var tne=_((ATt,ene)=>{var hZe=Ly(),gZe=qI(),dZe=_I(),mZe=il();function yZe(t,e,r){if(!mZe(r))return!1;var o=typeof e;return(o==\"number\"?gZe(r)&&dZe(e,r.length):o==\"string\"&&e in r)?hZe(r[e],t):!1}ene.exports=yZe});var nne=_((fTt,rne)=>{var EZe=$re(),CZe=tne();function wZe(t){return EZe(function(e,r){var o=-1,a=r.length,n=a>1?r[a-1]:void 0,u=a>2?r[2]:void 0;for(n=t.length>3&&typeof n==\"function\"?(a--,n):void 0,u&&CZe(r[0],r[1],u)&&(n=a<3?void 0:n,a=1),e=Object(e);++o<a;){var A=r[o];A&&t(e,A,o,n)}return e})}rne.exports=wZe});var sne=_((pTt,ine)=>{var IZe=Mre(),BZe=nne(),vZe=BZe(function(t,e,r,o){IZe(t,e,r,o)});ine.exports=vZe});var _e={};Vt(_e,{AsyncActions:()=>dN,BufferStream:()=>gN,CachingStrategy:()=>mne,DefaultStream:()=>mN,allSettledSafe:()=>Uc,assertNever:()=>EN,bufferStream:()=>Vy,buildIgnorePattern:()=>QZe,convertMapsToIndexableObjects:()=>nS,dynamicRequire:()=>Df,escapeRegExp:()=>PZe,getArrayWithDefault:()=>Yy,getFactoryWithDefault:()=>ol,getMapWithDefault:()=>Wy,getSetWithDefault:()=>md,groupBy:()=>IN,isIndexableObject:()=>hN,isPathLike:()=>FZe,isTaggedYarnVersion:()=>DZe,makeDeferred:()=>hne,mapAndFilter:()=>sl,mapAndFind:()=>KI,mergeIntoTarget:()=>Ene,overrideType:()=>SZe,parseBoolean:()=>VI,parseInt:()=>Jy,parseOptionalBoolean:()=>yne,plural:()=>rS,prettifyAsyncErrors:()=>Ky,prettifySyncErrors:()=>CN,releaseAfterUseAsync:()=>xZe,replaceEnvVariables:()=>iS,sortMap:()=>ks,toMerged:()=>RZe,tryParseOptionalBoolean:()=>wN,validateEnum:()=>bZe});function DZe(t){return!!(Ane.default.valid(t)&&t.match(/^[^-]+(-rc\\.[0-9]+)?$/))}function rS(t,{one:e,more:r,zero:o=r}){return t===0?o:t===1?e:r}function PZe(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function SZe(t){}function EN(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function bZe(t,e){let r=Object.values(t);if(!r.includes(e))throw new it(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(o=>JSON.stringify(o)).join(\", \")})`);return e}function sl(t,e){let r=[];for(let o of t){let a=e(o);a!==fne&&r.push(a)}return r}function KI(t,e){for(let r of t){let o=e(r);if(o!==pne)return o}}function hN(t){return typeof t==\"object\"&&t!==null}async function Uc(t){let e=await Promise.allSettled(t),r=[];for(let o of e){if(o.status===\"rejected\")throw o.reason;r.push(o.value)}return r}function nS(t){if(t instanceof Map&&(t=Object.fromEntries(t)),hN(t))for(let e of Object.keys(t)){let r=t[e];hN(r)&&(t[e]=nS(r))}return t}function ol(t,e,r){let o=t.get(e);return typeof o>\"u\"&&t.set(e,o=r()),o}function Yy(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=[]),r}function md(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Set),r}function Wy(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Map),r}async function xZe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function Ky(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function CN(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Vy(t){return await new Promise((e,r)=>{let o=[];t.on(\"error\",a=>{r(a)}),t.on(\"data\",a=>{o.push(a)}),t.on(\"end\",()=>{e(Buffer.concat(o))})})}function hne(){let t,e;return{promise:new Promise((o,a)=>{t=o,e=a}),resolve:t,reject:e}}function gne(t){return WI(ue.fromPortablePath(t))}function dne(path){let physicalPath=ue.fromPortablePath(path),currentCacheEntry=WI.cache[physicalPath];delete WI.cache[physicalPath];let result;try{result=gne(physicalPath);let freshCacheEntry=WI.cache[physicalPath],dynamicModule=eval(\"module\"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{WI.cache[physicalPath]=currentCacheEntry}return result}function kZe(t){let e=one.get(t),r=oe.statSync(t);if(e?.mtime===r.mtimeMs)return e.instance;let o=dne(t);return one.set(t,{mtime:r.mtimeMs,instance:o}),o}function Df(t,{cachingStrategy:e=2}={}){switch(e){case 0:return dne(t);case 1:return kZe(t);case 2:return gne(t);default:throw new Error(\"Unsupported caching strategy\")}}function ks(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function QZe(t){return t.length===0?null:t.map(e=>`(${cne.default.makeRe(e,{windows:!1,dot:!0}).source})`).join(\"|\")}function iS(t,{env:e}){let r=/\\${(?<variableName>[\\d\\w_]+)(?<colon>:)?(?:-(?<fallback>[^}]*))?}/g;return t.replace(r,(...o)=>{let{variableName:a,colon:n,fallback:u}=o[o.length-1],A=Object.hasOwn(e,a),p=e[a];if(p||A&&!n)return p;if(u!=null)return u;throw new it(`Environment variable not found (${a})`)})}function VI(t){switch(t){case\"true\":case\"1\":case 1:case!0:return!0;case\"false\":case\"0\":case 0:case!1:return!1;default:throw new Error(`Couldn't parse \"${t}\" as a boolean`)}}function yne(t){return typeof t>\"u\"?t:VI(t)}function wN(t){try{return yne(t)}catch{return null}}function FZe(t){return!!(ue.isAbsolute(t)||t.match(/^(\\.{1,2}|~)\\//))}function Ene(t,...e){let r=u=>({value:u}),o=r(t),a=e.map(u=>r(u)),{value:n}=(0,lne.default)(o,...a,(u,A)=>{if(Array.isArray(u)&&Array.isArray(A)){for(let p of A)u.find(h=>(0,ane.default)(h,p))||u.push(p);return u}});return n}function RZe(...t){return Ene({},...t)}function IN(t,e){let r=Object.create(null);for(let o of t){let a=o[e];r[a]??=[],r[a].push(o)}return r}function Jy(t){return typeof t==\"string\"?Number.parseInt(t,10):t}var ane,lne,cne,une,Ane,yN,fne,pne,gN,dN,mN,WI,one,mne,jl=Et(()=>{Pt();jt();ane=$e(Vte()),lne=$e(sne()),cne=$e(Zo()),une=$e(id()),Ane=$e(zn()),yN=ve(\"stream\");fne=Symbol();sl.skip=fne;pne=Symbol();KI.skip=pne;gN=class extends yN.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,o,a){if(o!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: BufferStream only accept buffers\");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};dN=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,une.default)(e)}set(e,r){let o=this.deferred.get(e);typeof o>\"u\"&&this.deferred.set(e,o=hne());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&o.resolve()},n=>{this.promises.get(e)===a&&o.reject(n)}),o.promise}reduce(e,r){let o=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(o))}async wait(){await Promise.all(this.promises.values())}},mN=class extends yN.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,o,a){if(o!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: DefaultStream only accept buffers\");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},WI=eval(\"require\");one=new Map;mne=(o=>(o[o.NoCache=0]=\"NoCache\",o[o.FsTime=1]=\"FsTime\",o[o.Node=2]=\"Node\",o))(mne||{})});var zy,BN,vN,Cne=Et(()=>{zy=(r=>(r.HARD=\"HARD\",r.SOFT=\"SOFT\",r))(zy||{}),BN=(o=>(o.Dependency=\"Dependency\",o.PeerDependency=\"PeerDependency\",o.PeerDependencyMeta=\"PeerDependencyMeta\",o))(BN||{}),vN=(o=>(o.Inactive=\"inactive\",o.Redundant=\"redundant\",o.Active=\"active\",o))(vN||{})});var de={};Vt(de,{LogLevel:()=>cS,Style:()=>oS,Type:()=>yt,addLogFilterSupport:()=>XI,applyColor:()=>Vs,applyHyperlink:()=>Zy,applyStyle:()=>yd,json:()=>Ed,jsonOrPretty:()=>NZe,mark:()=>xN,pretty:()=>Ut,prettyField:()=>zu,prettyList:()=>bN,prettyTruncatedLocatorList:()=>lS,stripAnsi:()=>Xy.default,supportsColor:()=>aS,supportsHyperlinks:()=>SN,tuple:()=>_c});function wne(t){let e=[\"KiB\",\"MiB\",\"GiB\",\"TiB\"],r=e.length;for(;r>1&&t<1024**r;)r-=1;let o=1024**r;return`${Math.floor(t*100/o)/100} ${e[r-1]}`}function _c(t,e){return[e,t]}function yd(t,e,r){return t.get(\"enableColors\")&&r&2&&(e=zI.default.bold(e)),e}function Vs(t,e,r){if(!t.get(\"enableColors\"))return e;let o=TZe.get(r);if(o===null)return e;let a=typeof o>\"u\"?r:PN.level>=3?o[0]:o[1],n=typeof a==\"number\"?DN.ansi256(a):a.startsWith(\"#\")?DN.hex(a):DN[a];if(typeof n!=\"function\")throw new Error(`Invalid format type ${a}`);return n(e)}function Zy(t,e,r){return t.get(\"enableHyperlinks\")?LZe?`\\x1B]8;;${r}\\x1B\\\\${e}\\x1B]8;;\\x1B\\\\`:`\\x1B]8;;${r}\\x07${e}\\x1B]8;;\\x07`:e}function Ut(t,e,r){if(e===null)return Vs(t,\"null\",yt.NULL);if(Object.hasOwn(sS,r))return sS[r].pretty(t,e);if(typeof e!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return Vs(t,e,r)}function bN(t,e,r,{separator:o=\", \"}={}){return[...e].map(a=>Ut(t,a,r)).join(o)}function Ed(t,e){if(t===null)return null;if(Object.hasOwn(sS,e))return sS[e].json(t);if(typeof t!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function NZe(t,e,[r,o]){return t?Ed(r,o):Ut(e,r,o)}function xN(t){return{Check:Vs(t,\"\\u2713\",\"green\"),Cross:Vs(t,\"\\u2718\",\"red\"),Question:Vs(t,\"?\",\"cyan\")}}function zu(t,{label:e,value:[r,o]}){return`${Ut(t,e,yt.CODE)}: ${Ut(t,r,o)}`}function lS(t,e,r){let o=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=`${jr(t,h)}, `,I=kN(h).length+2;if(o.length>0&&n<I)break;o.push([E,I]),n-=I,a.shift()}if(a.length===0)return o.map(([h])=>h).join(\"\").slice(0,-2);let u=\"X\".repeat(a.length.toString().length),A=`and ${u} more.`,p=a.length;for(;o.length>1&&n<A.length;)n+=o[o.length-1][1],p+=1,o.pop();return[o.map(([h])=>h).join(\"\"),A.replace(u,Ut(t,p,yt.NUMBER))].join(\"\")}function XI(t,{configuration:e}){let r=e.get(\"logFilters\"),o=new Map,a=new Map,n=[];for(let I of r){let v=I.get(\"level\");if(typeof v>\"u\")continue;let x=I.get(\"code\");typeof x<\"u\"&&o.set(x,v);let C=I.get(\"text\");typeof C<\"u\"&&a.set(C,v);let R=I.get(\"pattern\");typeof R<\"u\"&&n.push([Ine.default.matcher(R,{contains:!0}),v])}n.reverse();let u=(I,v,x)=>{if(I===null||I===0)return x;let C=a.size>0||n.length>0?(0,Xy.default)(v):v;if(a.size>0){let R=a.get(C);if(typeof R<\"u\")return R??x}if(n.length>0){for(let[R,N]of n)if(R(C))return N??x}if(o.size>0){let R=o.get(Wu(I));if(typeof R<\"u\")return R??x}return x},A=t.reportInfo,p=t.reportWarning,h=t.reportError,E=function(I,v,x,C){switch(u(v,x,C)){case\"info\":A.call(I,v,x);break;case\"warning\":p.call(I,v??0,x);break;case\"error\":h.call(I,v??0,x);break}};t.reportInfo=function(...I){return E(this,...I,\"info\")},t.reportWarning=function(...I){return E(this,...I,\"warning\")},t.reportError=function(...I){return E(this,...I,\"error\")}}var zI,JI,Ine,Xy,Bne,yt,oS,PN,aS,SN,DN,TZe,So,sS,LZe,cS,ql=Et(()=>{Pt();zI=$e(IL()),JI=$e(td());jt();Ine=$e(Zo()),Xy=$e(NP()),Bne=ve(\"util\");fP();bo();yt={NO_HINT:\"NO_HINT\",ID:\"ID\",NULL:\"NULL\",SCOPE:\"SCOPE\",NAME:\"NAME\",RANGE:\"RANGE\",REFERENCE:\"REFERENCE\",NUMBER:\"NUMBER\",PATH:\"PATH\",URL:\"URL\",ADDED:\"ADDED\",REMOVED:\"REMOVED\",CODE:\"CODE\",INSPECT:\"INSPECT\",DURATION:\"DURATION\",SIZE:\"SIZE\",SIZE_DIFF:\"SIZE_DIFF\",IDENT:\"IDENT\",DESCRIPTOR:\"DESCRIPTOR\",LOCATOR:\"LOCATOR\",RESOLUTION:\"RESOLUTION\",DEPENDENT:\"DEPENDENT\",PACKAGE_EXTENSION:\"PACKAGE_EXTENSION\",SETTING:\"SETTING\",MARKDOWN:\"MARKDOWN\",MARKDOWN_INLINE:\"MARKDOWN_INLINE\"},oS=(e=>(e[e.BOLD=2]=\"BOLD\",e))(oS||{}),PN=JI.default.GITHUB_ACTIONS?{level:2}:zI.default.supportsColor?{level:zI.default.supportsColor.level}:{level:0},aS=PN.level!==0,SN=aS&&!JI.default.GITHUB_ACTIONS&&!JI.default.CIRCLE&&!JI.default.GITLAB,DN=new zI.default.Instance(PN),TZe=new Map([[yt.NO_HINT,null],[yt.NULL,[\"#a853b5\",129]],[yt.SCOPE,[\"#d75f00\",166]],[yt.NAME,[\"#d7875f\",173]],[yt.RANGE,[\"#00afaf\",37]],[yt.REFERENCE,[\"#87afff\",111]],[yt.NUMBER,[\"#ffd700\",220]],[yt.PATH,[\"#d75fd7\",170]],[yt.URL,[\"#d75fd7\",170]],[yt.ADDED,[\"#5faf00\",70]],[yt.REMOVED,[\"#ff3131\",160]],[yt.CODE,[\"#87afff\",111]],[yt.SIZE,[\"#ffd700\",220]]]),So=t=>t;sS={[yt.ID]:So({pretty:(t,e)=>typeof e==\"number\"?Vs(t,`${e}`,yt.NUMBER):Vs(t,e,yt.CODE),json:t=>t}),[yt.INSPECT]:So({pretty:(t,e)=>(0,Bne.inspect)(e,{depth:1/0,colors:t.get(\"enableColors\"),compact:!0,breakLength:1/0}),json:t=>t}),[yt.NUMBER]:So({pretty:(t,e)=>Vs(t,`${e}`,yt.NUMBER),json:t=>t}),[yt.IDENT]:So({pretty:(t,e)=>cs(t,e),json:t=>fn(t)}),[yt.LOCATOR]:So({pretty:(t,e)=>jr(t,e),json:t=>ba(t)}),[yt.DESCRIPTOR]:So({pretty:(t,e)=>qn(t,e),json:t=>Sa(t)}),[yt.RESOLUTION]:So({pretty:(t,{descriptor:e,locator:r})=>ZI(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:Sa(t),locator:e!==null?ba(e):null})}),[yt.DEPENDENT]:So({pretty:(t,{locator:e,descriptor:r})=>QN(t,e,r),json:({locator:t,descriptor:e})=>({locator:ba(t),descriptor:Sa(e)})}),[yt.PACKAGE_EXTENSION]:So({pretty:(t,e)=>{switch(e.type){case\"Dependency\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Vs(t,\"dependencies\",yt.CODE)} \\u27A4 ${cs(t,e.descriptor)}`;case\"PeerDependency\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Vs(t,\"peerDependencies\",yt.CODE)} \\u27A4 ${cs(t,e.descriptor)}`;case\"PeerDependencyMeta\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Vs(t,\"peerDependenciesMeta\",yt.CODE)} \\u27A4 ${cs(t,Js(e.selector))} \\u27A4 ${Vs(t,e.key,yt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case\"Dependency\":return`${fn(t.parentDescriptor)} > ${fn(t.descriptor)}`;case\"PeerDependency\":return`${fn(t.parentDescriptor)} >> ${fn(t.descriptor)}`;case\"PeerDependencyMeta\":return`${fn(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[yt.SETTING]:So({pretty:(t,e)=>(t.get(e),Zy(t,Vs(t,e,yt.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[yt.DURATION]:So({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),o=Math.ceil((e-r*60*1e3)/1e3);return o===0?`${r}m`:`${r}m ${o}s`}else{let r=Math.floor(e/1e3),o=e-r*1e3;return o===0?`${r}s`:`${r}s ${o}ms`}},json:t=>t}),[yt.SIZE]:So({pretty:(t,e)=>Vs(t,wne(e),yt.NUMBER),json:t=>t}),[yt.SIZE_DIFF]:So({pretty:(t,e)=>{let r=e>=0?\"+\":\"-\",o=r===\"+\"?yt.REMOVED:yt.ADDED;return Vs(t,`${r} ${wne(Math.max(Math.abs(e),1))}`,o)},json:t=>t}),[yt.PATH]:So({pretty:(t,e)=>Vs(t,ue.fromPortablePath(e),yt.PATH),json:t=>ue.fromPortablePath(t)}),[yt.MARKDOWN]:So({pretty:(t,{text:e,format:r,paragraphs:o})=>Do(e,{format:r,paragraphs:o}),json:({text:t})=>t}),[yt.MARKDOWN_INLINE]:So({pretty:(t,e)=>(e=e.replace(/(`+)((?:.|[\\n])*?)\\1/g,(r,o,a)=>Ut(t,o+a+o,yt.CODE)),e=e.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(r,o,a)=>yd(t,a,2)),e),json:t=>t})};LZe=!!process.env.KONSOLE_VERSION;cS=(a=>(a.Error=\"error\",a.Warning=\"warning\",a.Info=\"info\",a.Discard=\"discard\",a))(cS||{})});var vne=_($y=>{\"use strict\";Object.defineProperty($y,\"__esModule\",{value:!0});$y.splitWhen=$y.flatten=void 0;function OZe(t){return t.reduce((e,r)=>[].concat(e,r),[])}$y.flatten=OZe;function MZe(t,e){let r=[[]],o=0;for(let a of t)e(a)?(o++,r[o]=[]):r[o].push(a);return r}$y.splitWhen=MZe});var Dne=_(uS=>{\"use strict\";Object.defineProperty(uS,\"__esModule\",{value:!0});uS.isEnoentCodeError=void 0;function UZe(t){return t.code===\"ENOENT\"}uS.isEnoentCodeError=UZe});var Pne=_(AS=>{\"use strict\";Object.defineProperty(AS,\"__esModule\",{value:!0});AS.createDirentFromStats=void 0;var FN=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function _Ze(t,e){return new FN(t,e)}AS.createDirentFromStats=_Ze});var Sne=_(Xu=>{\"use strict\";Object.defineProperty(Xu,\"__esModule\",{value:!0});Xu.removeLeadingDotSegment=Xu.escape=Xu.makeAbsolute=Xu.unixify=void 0;var HZe=ve(\"path\"),jZe=2,qZe=/(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\())/g;function GZe(t){return t.replace(/\\\\/g,\"/\")}Xu.unixify=GZe;function YZe(t,e){return HZe.resolve(t,e)}Xu.makeAbsolute=YZe;function WZe(t){return t.replace(qZe,\"\\\\$2\")}Xu.escape=WZe;function KZe(t){if(t.charAt(0)===\".\"){let e=t.charAt(1);if(e===\"/\"||e===\"\\\\\")return t.slice(jZe)}return t}Xu.removeLeadingDotSegment=KZe});var xne=_((bTt,bne)=>{bne.exports=function(e){if(typeof e!=\"string\"||e===\"\")return!1;for(var r;r=/(\\\\).|([@?!+*]\\(.*\\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var Fne=_((xTt,Qne)=>{var VZe=xne(),kne={\"{\":\"}\",\"(\":\")\",\"[\":\"]\"},JZe=function(t){if(t[0]===\"!\")return!0;for(var e=0,r=-2,o=-2,a=-2,n=-2,u=-2;e<t.length;){if(t[e]===\"*\"||t[e+1]===\"?\"&&/[\\].+)]/.test(t[e])||o!==-1&&t[e]===\"[\"&&t[e+1]!==\"]\"&&(o<e&&(o=t.indexOf(\"]\",e)),o>e&&(u===-1||u>o||(u=t.indexOf(\"\\\\\",e),u===-1||u>o)))||a!==-1&&t[e]===\"{\"&&t[e+1]!==\"}\"&&(a=t.indexOf(\"}\",e),a>e&&(u=t.indexOf(\"\\\\\",e),u===-1||u>a))||n!==-1&&t[e]===\"(\"&&t[e+1]===\"?\"&&/[:!=]/.test(t[e+2])&&t[e+3]!==\")\"&&(n=t.indexOf(\")\",e),n>e&&(u=t.indexOf(\"\\\\\",e),u===-1||u>n))||r!==-1&&t[e]===\"(\"&&t[e+1]!==\"|\"&&(r<e&&(r=t.indexOf(\"|\",e)),r!==-1&&t[r+1]!==\")\"&&(n=t.indexOf(\")\",r),n>r&&(u=t.indexOf(\"\\\\\",r),u===-1||u>n))))return!0;if(t[e]===\"\\\\\"){var A=t[e+1];e+=2;var p=kne[A];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]===\"!\")return!0}else e++}return!1},zZe=function(t){if(t[0]===\"!\")return!0;for(var e=0;e<t.length;){if(/[*?{}()[\\]]/.test(t[e]))return!0;if(t[e]===\"\\\\\"){var r=t[e+1];e+=2;var o=kne[r];if(o){var a=t.indexOf(o,e);a!==-1&&(e=a+1)}if(t[e]===\"!\")return!0}else e++}return!1};Qne.exports=function(e,r){if(typeof e!=\"string\"||e===\"\")return!1;if(VZe(e))return!0;var o=JZe;return r&&r.strict===!1&&(o=zZe),o(e)}});var Tne=_((kTt,Rne)=>{\"use strict\";var XZe=Fne(),ZZe=ve(\"path\").posix.dirname,$Ze=ve(\"os\").platform()===\"win32\",RN=\"/\",e$e=/\\\\/g,t$e=/[\\{\\[].*[\\}\\]]$/,r$e=/(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/,n$e=/\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;Rne.exports=function(e,r){var o=Object.assign({flipBackslashes:!0},r);o.flipBackslashes&&$Ze&&e.indexOf(RN)<0&&(e=e.replace(e$e,RN)),t$e.test(e)&&(e+=RN),e+=\"a\";do e=ZZe(e);while(XZe(e)||r$e.test(e));return e.replace(n$e,\"$1\")}});var jne=_(qr=>{\"use strict\";Object.defineProperty(qr,\"__esModule\",{value:!0});qr.matchAny=qr.convertPatternsToRe=qr.makeRe=qr.getPatternParts=qr.expandBraceExpansion=qr.expandPatternsWithBraceExpansion=qr.isAffectDepthOfReadingPattern=qr.endsWithSlashGlobStar=qr.hasGlobStar=qr.getBaseDirectory=qr.isPatternRelatedToParentDirectory=qr.getPatternsOutsideCurrentDirectory=qr.getPatternsInsideCurrentDirectory=qr.getPositivePatterns=qr.getNegativePatterns=qr.isPositivePattern=qr.isNegativePattern=qr.convertToNegativePattern=qr.convertToPositivePattern=qr.isDynamicPattern=qr.isStaticPattern=void 0;var i$e=ve(\"path\"),s$e=Tne(),TN=Zo(),Lne=\"**\",o$e=\"\\\\\",a$e=/[*?]|^!/,l$e=/\\[[^[]*]/,c$e=/(?:^|[^!*+?@])\\([^(]*\\|[^|]*\\)/,u$e=/[!*+?@]\\([^(]*\\)/,A$e=/,|\\.\\./;function Nne(t,e={}){return!One(t,e)}qr.isStaticPattern=Nne;function One(t,e={}){return t===\"\"?!1:!!(e.caseSensitiveMatch===!1||t.includes(o$e)||a$e.test(t)||l$e.test(t)||c$e.test(t)||e.extglob!==!1&&u$e.test(t)||e.braceExpansion!==!1&&f$e(t))}qr.isDynamicPattern=One;function f$e(t){let e=t.indexOf(\"{\");if(e===-1)return!1;let r=t.indexOf(\"}\",e+1);if(r===-1)return!1;let o=t.slice(e,r);return A$e.test(o)}function p$e(t){return fS(t)?t.slice(1):t}qr.convertToPositivePattern=p$e;function h$e(t){return\"!\"+t}qr.convertToNegativePattern=h$e;function fS(t){return t.startsWith(\"!\")&&t[1]!==\"(\"}qr.isNegativePattern=fS;function Mne(t){return!fS(t)}qr.isPositivePattern=Mne;function g$e(t){return t.filter(fS)}qr.getNegativePatterns=g$e;function d$e(t){return t.filter(Mne)}qr.getPositivePatterns=d$e;function m$e(t){return t.filter(e=>!LN(e))}qr.getPatternsInsideCurrentDirectory=m$e;function y$e(t){return t.filter(LN)}qr.getPatternsOutsideCurrentDirectory=y$e;function LN(t){return t.startsWith(\"..\")||t.startsWith(\"./..\")}qr.isPatternRelatedToParentDirectory=LN;function E$e(t){return s$e(t,{flipBackslashes:!1})}qr.getBaseDirectory=E$e;function C$e(t){return t.includes(Lne)}qr.hasGlobStar=C$e;function Une(t){return t.endsWith(\"/\"+Lne)}qr.endsWithSlashGlobStar=Une;function w$e(t){let e=i$e.basename(t);return Une(t)||Nne(e)}qr.isAffectDepthOfReadingPattern=w$e;function I$e(t){return t.reduce((e,r)=>e.concat(_ne(r)),[])}qr.expandPatternsWithBraceExpansion=I$e;function _ne(t){return TN.braces(t,{expand:!0,nodupes:!0})}qr.expandBraceExpansion=_ne;function B$e(t,e){let{parts:r}=TN.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith(\"/\")&&(r[0]=r[0].slice(1),r.unshift(\"\")),r}qr.getPatternParts=B$e;function Hne(t,e){return TN.makeRe(t,e)}qr.makeRe=Hne;function v$e(t,e){return t.map(r=>Hne(r,e))}qr.convertPatternsToRe=v$e;function D$e(t,e){return e.some(r=>r.test(t))}qr.matchAny=D$e});var Wne=_((FTt,Yne)=>{\"use strict\";var P$e=ve(\"stream\"),qne=P$e.PassThrough,S$e=Array.prototype.slice;Yne.exports=b$e;function b$e(){let t=[],e=S$e.call(arguments),r=!1,o=e[e.length-1];o&&!Array.isArray(o)&&o.pipe==null?e.pop():o={};let a=o.end!==!1,n=o.pipeError===!0;o.objectMode==null&&(o.objectMode=!0),o.highWaterMark==null&&(o.highWaterMark=64*1024);let u=qne(o);function A(){for(let E=0,I=arguments.length;E<I;E++)t.push(Gne(arguments[E],o));return p(),this}function p(){if(r)return;r=!0;let E=t.shift();if(!E){process.nextTick(h);return}Array.isArray(E)||(E=[E]);let I=E.length+1;function v(){--I>0||(r=!1,p())}function x(C){function R(){C.removeListener(\"merge2UnpipeEnd\",R),C.removeListener(\"end\",R),n&&C.removeListener(\"error\",N),v()}function N(U){u.emit(\"error\",U)}if(C._readableState.endEmitted)return v();C.on(\"merge2UnpipeEnd\",R),C.on(\"end\",R),n&&C.on(\"error\",N),C.pipe(u,{end:!1}),C.resume()}for(let C=0;C<E.length;C++)x(E[C]);v()}function h(){r=!1,u.emit(\"queueDrain\"),a&&u.end()}return u.setMaxListeners(0),u.add=A,u.on(\"unpipe\",function(E){E.emit(\"merge2UnpipeEnd\")}),e.length&&A.apply(null,e),u}function Gne(t,e){if(Array.isArray(t))for(let r=0,o=t.length;r<o;r++)t[r]=Gne(t[r],e);else{if(!t._readableState&&t.pipe&&(t=t.pipe(qne(e))),!t._readableState||!t.pause||!t.pipe)throw new Error(\"Only readable stream can be merged.\");t.pause()}return t}});var Vne=_(pS=>{\"use strict\";Object.defineProperty(pS,\"__esModule\",{value:!0});pS.merge=void 0;var x$e=Wne();function k$e(t){let e=x$e(t);return t.forEach(r=>{r.once(\"error\",o=>e.emit(\"error\",o))}),e.once(\"close\",()=>Kne(t)),e.once(\"end\",()=>Kne(t)),e}pS.merge=k$e;function Kne(t){t.forEach(e=>e.emit(\"close\"))}});var Jne=_(eE=>{\"use strict\";Object.defineProperty(eE,\"__esModule\",{value:!0});eE.isEmpty=eE.isString=void 0;function Q$e(t){return typeof t==\"string\"}eE.isString=Q$e;function F$e(t){return t===\"\"}eE.isEmpty=F$e});var Pf=_(xo=>{\"use strict\";Object.defineProperty(xo,\"__esModule\",{value:!0});xo.string=xo.stream=xo.pattern=xo.path=xo.fs=xo.errno=xo.array=void 0;var R$e=vne();xo.array=R$e;var T$e=Dne();xo.errno=T$e;var L$e=Pne();xo.fs=L$e;var N$e=Sne();xo.path=N$e;var O$e=jne();xo.pattern=O$e;var M$e=Vne();xo.stream=M$e;var U$e=Jne();xo.string=U$e});var Zne=_(ko=>{\"use strict\";Object.defineProperty(ko,\"__esModule\",{value:!0});ko.convertPatternGroupToTask=ko.convertPatternGroupsToTasks=ko.groupPatternsByBaseDirectory=ko.getNegativePatternsAsPositive=ko.getPositivePatterns=ko.convertPatternsToTasks=ko.generate=void 0;var Sf=Pf();function _$e(t,e){let r=zne(t),o=Xne(t,e.ignore),a=r.filter(p=>Sf.pattern.isStaticPattern(p,e)),n=r.filter(p=>Sf.pattern.isDynamicPattern(p,e)),u=NN(a,o,!1),A=NN(n,o,!0);return u.concat(A)}ko.generate=_$e;function NN(t,e,r){let o=[],a=Sf.pattern.getPatternsOutsideCurrentDirectory(t),n=Sf.pattern.getPatternsInsideCurrentDirectory(t),u=ON(a),A=ON(n);return o.push(...MN(u,e,r)),\".\"in A?o.push(UN(\".\",n,e,r)):o.push(...MN(A,e,r)),o}ko.convertPatternsToTasks=NN;function zne(t){return Sf.pattern.getPositivePatterns(t)}ko.getPositivePatterns=zne;function Xne(t,e){return Sf.pattern.getNegativePatterns(t).concat(e).map(Sf.pattern.convertToPositivePattern)}ko.getNegativePatternsAsPositive=Xne;function ON(t){let e={};return t.reduce((r,o)=>{let a=Sf.pattern.getBaseDirectory(o);return a in r?r[a].push(o):r[a]=[o],r},e)}ko.groupPatternsByBaseDirectory=ON;function MN(t,e,r){return Object.keys(t).map(o=>UN(o,t[o],e,r))}ko.convertPatternGroupsToTasks=MN;function UN(t,e,r,o){return{dynamic:o,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Sf.pattern.convertToNegativePattern))}}ko.convertPatternGroupToTask=UN});var eie=_(tE=>{\"use strict\";Object.defineProperty(tE,\"__esModule\",{value:!0});tE.removeDuplicateSlashes=tE.transform=void 0;var H$e=/(?!^)\\/{2,}/g;function j$e(t){return t.map(e=>$ne(e))}tE.transform=j$e;function $ne(t){return t.replace(H$e,\"/\")}tE.removeDuplicateSlashes=$ne});var rie=_(hS=>{\"use strict\";Object.defineProperty(hS,\"__esModule\",{value:!0});hS.read=void 0;function q$e(t,e,r){e.fs.lstat(t,(o,a)=>{if(o!==null){tie(r,o);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){_N(r,a);return}e.fs.stat(t,(n,u)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){tie(r,n);return}_N(r,a);return}e.markSymbolicLink&&(u.isSymbolicLink=()=>!0),_N(r,u)})})}hS.read=q$e;function tie(t,e){t(e)}function _N(t,e){t(null,e)}});var nie=_(gS=>{\"use strict\";Object.defineProperty(gS,\"__esModule\",{value:!0});gS.read=void 0;function G$e(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let o=e.fs.statSync(t);return e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),o}catch(o){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw o}}gS.read=G$e});var iie=_(Xp=>{\"use strict\";Object.defineProperty(Xp,\"__esModule\",{value:!0});Xp.createFileSystemAdapter=Xp.FILE_SYSTEM_ADAPTER=void 0;var dS=ve(\"fs\");Xp.FILE_SYSTEM_ADAPTER={lstat:dS.lstat,stat:dS.stat,lstatSync:dS.lstatSync,statSync:dS.statSync};function Y$e(t){return t===void 0?Xp.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Xp.FILE_SYSTEM_ADAPTER),t)}Xp.createFileSystemAdapter=Y$e});var sie=_(jN=>{\"use strict\";Object.defineProperty(jN,\"__esModule\",{value:!0});var W$e=iie(),HN=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=W$e.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};jN.default=HN});var Cd=_(Zp=>{\"use strict\";Object.defineProperty(Zp,\"__esModule\",{value:!0});Zp.statSync=Zp.stat=Zp.Settings=void 0;var oie=rie(),K$e=nie(),qN=sie();Zp.Settings=qN.default;function V$e(t,e,r){if(typeof e==\"function\"){oie.read(t,GN(),e);return}oie.read(t,GN(e),r)}Zp.stat=V$e;function J$e(t,e){let r=GN(e);return K$e.read(t,r)}Zp.statSync=J$e;function GN(t={}){return t instanceof qN.default?t:new qN.default(t)}});var lie=_((qTt,aie)=>{aie.exports=z$e;function z$e(t,e){var r,o,a,n=!0;Array.isArray(t)?(r=[],o=t.length):(a=Object.keys(t),r={},o=a.length);function u(p){function h(){e&&e(p,r),e=null}n?process.nextTick(h):h()}function A(p,h,E){r[p]=E,(--o===0||h)&&u(h)}o?a?a.forEach(function(p){t[p](function(h,E){A(p,h,E)})}):t.forEach(function(p,h){p(function(E,I){A(h,E,I)})}):u(null),n=!1}});var YN=_(yS=>{\"use strict\";Object.defineProperty(yS,\"__esModule\",{value:!0});yS.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var mS=process.versions.node.split(\".\");if(mS[0]===void 0||mS[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var cie=Number.parseInt(mS[0],10),X$e=Number.parseInt(mS[1],10),uie=10,Z$e=10,$$e=cie>uie,eet=cie===uie&&X$e>=Z$e;yS.IS_SUPPORT_READDIR_WITH_FILE_TYPES=$$e||eet});var Aie=_(ES=>{\"use strict\";Object.defineProperty(ES,\"__esModule\",{value:!0});ES.createDirentFromStats=void 0;var WN=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function tet(t,e){return new WN(t,e)}ES.createDirentFromStats=tet});var KN=_(CS=>{\"use strict\";Object.defineProperty(CS,\"__esModule\",{value:!0});CS.fs=void 0;var ret=Aie();CS.fs=ret});var VN=_(wS=>{\"use strict\";Object.defineProperty(wS,\"__esModule\",{value:!0});wS.joinPathSegments=void 0;function net(t,e,r){return t.endsWith(r)?t+e:t+r+e}wS.joinPathSegments=net});var mie=_($p=>{\"use strict\";Object.defineProperty($p,\"__esModule\",{value:!0});$p.readdir=$p.readdirWithFileTypes=$p.read=void 0;var iet=Cd(),fie=lie(),set=YN(),pie=KN(),hie=VN();function oet(t,e,r){if(!e.stats&&set.IS_SUPPORT_READDIR_WITH_FILE_TYPES){gie(t,e,r);return}die(t,e,r)}$p.read=oet;function gie(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(o,a)=>{if(o!==null){IS(r,o);return}let n=a.map(A=>({dirent:A,name:A.name,path:hie.joinPathSegments(t,A.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){JN(r,n);return}let u=n.map(A=>aet(A,e));fie(u,(A,p)=>{if(A!==null){IS(r,A);return}JN(r,p)})})}$p.readdirWithFileTypes=gie;function aet(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(o,a)=>{if(o!==null){if(e.throwErrorOnBrokenSymbolicLink){r(o);return}r(null,t);return}t.dirent=pie.fs.createDirentFromStats(t.name,a),r(null,t)})}}function die(t,e,r){e.fs.readdir(t,(o,a)=>{if(o!==null){IS(r,o);return}let n=a.map(u=>{let A=hie.joinPathSegments(t,u,e.pathSegmentSeparator);return p=>{iet.stat(A,e.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let I={name:u,path:A,dirent:pie.fs.createDirentFromStats(u,E)};e.stats&&(I.stats=E),p(null,I)})}});fie(n,(u,A)=>{if(u!==null){IS(r,u);return}JN(r,A)})})}$p.readdir=die;function IS(t,e){t(e)}function JN(t,e){t(null,e)}});var Iie=_(eh=>{\"use strict\";Object.defineProperty(eh,\"__esModule\",{value:!0});eh.readdir=eh.readdirWithFileTypes=eh.read=void 0;var cet=Cd(),uet=YN(),yie=KN(),Eie=VN();function Aet(t,e){return!e.stats&&uet.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Cie(t,e):wie(t,e)}eh.read=Aet;function Cie(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(o=>{let a={dirent:o,name:o.name,path:Eie.joinPathSegments(t,o.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=yie.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}eh.readdirWithFileTypes=Cie;function wie(t,e){return e.fs.readdirSync(t).map(o=>{let a=Eie.joinPathSegments(t,o,e.pathSegmentSeparator),n=cet.statSync(a,e.fsStatSettings),u={name:o,path:a,dirent:yie.fs.createDirentFromStats(o,n)};return e.stats&&(u.stats=n),u})}eh.readdir=wie});var Bie=_(th=>{\"use strict\";Object.defineProperty(th,\"__esModule\",{value:!0});th.createFileSystemAdapter=th.FILE_SYSTEM_ADAPTER=void 0;var rE=ve(\"fs\");th.FILE_SYSTEM_ADAPTER={lstat:rE.lstat,stat:rE.stat,lstatSync:rE.lstatSync,statSync:rE.statSync,readdir:rE.readdir,readdirSync:rE.readdirSync};function fet(t){return t===void 0?th.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},th.FILE_SYSTEM_ADAPTER),t)}th.createFileSystemAdapter=fet});var vie=_(XN=>{\"use strict\";Object.defineProperty(XN,\"__esModule\",{value:!0});var pet=ve(\"path\"),het=Cd(),get=Bie(),zN=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=get.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,pet.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new het.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};XN.default=zN});var BS=_(rh=>{\"use strict\";Object.defineProperty(rh,\"__esModule\",{value:!0});rh.Settings=rh.scandirSync=rh.scandir=void 0;var Die=mie(),det=Iie(),ZN=vie();rh.Settings=ZN.default;function met(t,e,r){if(typeof e==\"function\"){Die.read(t,$N(),e);return}Die.read(t,$N(e),r)}rh.scandir=met;function yet(t,e){let r=$N(e);return det.read(t,r)}rh.scandirSync=yet;function $N(t={}){return t instanceof ZN.default?t:new ZN.default(t)}});var Sie=_(($Tt,Pie)=>{\"use strict\";function Eet(t){var e=new t,r=e;function o(){var n=e;return n.next?e=n.next:(e=new t,r=e),n.next=null,n}function a(n){r.next=n,r=n}return{get:o,release:a}}Pie.exports=Eet});var xie=_((eLt,eO)=>{\"use strict\";var Cet=Sie();function bie(t,e,r){if(typeof t==\"function\"&&(r=e,e=t,t=null),r<1)throw new Error(\"fastqueue concurrency must be greater than 1\");var o=Cet(wet),a=null,n=null,u=0,A=null,p={push:R,drain:Gl,saturated:Gl,pause:E,paused:!1,concurrency:r,running:h,resume:x,idle:C,length:I,getQueue:v,unshift:N,empty:Gl,kill:J,killAndDrain:te,error:ae};return p;function h(){return u}function E(){p.paused=!0}function I(){for(var fe=a,ce=0;fe;)fe=fe.next,ce++;return ce}function v(){for(var fe=a,ce=[];fe;)ce.push(fe.value),fe=fe.next;return ce}function x(){if(!!p.paused){p.paused=!1;for(var fe=0;fe<p.concurrency;fe++)u++,U()}}function C(){return u===0&&p.length()===0}function R(fe,ce){var me=o.get();me.context=t,me.release=U,me.value=fe,me.callback=ce||Gl,me.errorHandler=A,u===p.concurrency||p.paused?n?(n.next=me,n=me):(a=me,n=me,p.saturated()):(u++,e.call(t,me.value,me.worked))}function N(fe,ce){var me=o.get();me.context=t,me.release=U,me.value=fe,me.callback=ce||Gl,u===p.concurrency||p.paused?a?(me.next=a,a=me):(a=me,n=me,p.saturated()):(u++,e.call(t,me.value,me.worked))}function U(fe){fe&&o.release(fe);var ce=a;ce?p.paused?u--:(n===a&&(n=null),a=ce.next,ce.next=null,e.call(t,ce.value,ce.worked),n===null&&p.empty()):--u===0&&p.drain()}function J(){a=null,n=null,p.drain=Gl}function te(){a=null,n=null,p.drain(),p.drain=Gl}function ae(fe){A=fe}}function Gl(){}function wet(){this.value=null,this.callback=Gl,this.next=null,this.release=Gl,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,o){var a=t.callback,n=t.errorHandler,u=t.value;t.value=null,t.callback=Gl,t.errorHandler&&n(r,u),a.call(t.context,r,o),t.release(t)}}function Iet(t,e,r){typeof t==\"function\"&&(r=e,e=t,t=null);function o(E,I){e.call(this,E).then(function(v){I(null,v)},I)}var a=bie(t,o,r),n=a.push,u=a.unshift;return a.push=A,a.unshift=p,a.drained=h,a;function A(E){var I=new Promise(function(v,x){n(E,function(C,R){if(C){x(C);return}v(R)})});return I.catch(Gl),I}function p(E){var I=new Promise(function(v,x){u(E,function(C,R){if(C){x(C);return}v(R)})});return I.catch(Gl),I}function h(){var E=a.drain,I=new Promise(function(v){a.drain=function(){E(),v()}});return I}}eO.exports=bie;eO.exports.promise=Iet});var vS=_(Zu=>{\"use strict\";Object.defineProperty(Zu,\"__esModule\",{value:!0});Zu.joinPathSegments=Zu.replacePathSegmentSeparator=Zu.isAppliedFilter=Zu.isFatalError=void 0;function Bet(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Zu.isFatalError=Bet;function vet(t,e){return t===null||t(e)}Zu.isAppliedFilter=vet;function Det(t,e){return t.split(/[/\\\\]/).join(e)}Zu.replacePathSegmentSeparator=Det;function Pet(t,e,r){return t===\"\"?e:t.endsWith(r)?t+e:t+r+e}Zu.joinPathSegments=Pet});var nO=_(rO=>{\"use strict\";Object.defineProperty(rO,\"__esModule\",{value:!0});var bet=vS(),tO=class{constructor(e,r){this._root=e,this._settings=r,this._root=bet.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};rO.default=tO});var oO=_(sO=>{\"use strict\";Object.defineProperty(sO,\"__esModule\",{value:!0});var xet=ve(\"events\"),ket=BS(),Qet=xie(),DS=vS(),Fet=nO(),iO=class extends Fet.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=ket.scandir,this._emitter=new xet.EventEmitter,this._queue=Qet(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit(\"end\")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error(\"The reader is already destroyed\");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on(\"entry\",e)}onError(e){this._emitter.once(\"error\",e)}onEnd(e){this._emitter.once(\"end\",e)}_pushToQueue(e,r){let o={directory:e,base:r};this._queue.push(o,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(o,a)=>{if(o!==null){r(o,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!DS.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit(\"error\",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let o=e.path;r!==void 0&&(e.path=DS.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),DS.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&DS.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit(\"entry\",e)}};sO.default=iO});var kie=_(lO=>{\"use strict\";Object.defineProperty(lO,\"__esModule\",{value:!0});var Ret=oO(),aO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Ret.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{Tet(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{Let(e,this._storage)}),this._reader.read()}};lO.default=aO;function Tet(t,e){t(e)}function Let(t,e){t(null,e)}});var Qie=_(uO=>{\"use strict\";Object.defineProperty(uO,\"__esModule\",{value:!0});var Net=ve(\"stream\"),Oet=oO(),cO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Oet.default(this._root,this._settings),this._stream=new Net.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit(\"error\",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};uO.default=cO});var Fie=_(fO=>{\"use strict\";Object.defineProperty(fO,\"__esModule\",{value:!0});var Met=BS(),PS=vS(),Uet=nO(),AO=class extends Uet.default{constructor(){super(...arguments),this._scandir=Met.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let o=this._scandir(e,this._settings.fsScandirSettings);for(let a of o)this._handleEntry(a,r)}catch(o){this._handleError(o)}}_handleError(e){if(!!PS.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let o=e.path;r!==void 0&&(e.path=PS.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),PS.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&PS.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};fO.default=AO});var Rie=_(hO=>{\"use strict\";Object.defineProperty(hO,\"__esModule\",{value:!0});var _et=Fie(),pO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new _et.default(this._root,this._settings)}read(){return this._reader.read()}};hO.default=pO});var Tie=_(dO=>{\"use strict\";Object.defineProperty(dO,\"__esModule\",{value:!0});var Het=ve(\"path\"),jet=BS(),gO=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Het.sep),this.fsScandirSettings=new jet.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};dO.default=gO});var bS=_($u=>{\"use strict\";Object.defineProperty($u,\"__esModule\",{value:!0});$u.Settings=$u.walkStream=$u.walkSync=$u.walk=void 0;var Lie=kie(),qet=Qie(),Get=Rie(),mO=Tie();$u.Settings=mO.default;function Yet(t,e,r){if(typeof e==\"function\"){new Lie.default(t,SS()).read(e);return}new Lie.default(t,SS(e)).read(r)}$u.walk=Yet;function Wet(t,e){let r=SS(e);return new Get.default(t,r).read()}$u.walkSync=Wet;function Ket(t,e){let r=SS(e);return new qet.default(t,r).read()}$u.walkStream=Ket;function SS(t={}){return t instanceof mO.default?t:new mO.default(t)}});var xS=_(EO=>{\"use strict\";Object.defineProperty(EO,\"__esModule\",{value:!0});var Vet=ve(\"path\"),Jet=Cd(),Nie=Pf(),yO=class{constructor(e){this._settings=e,this._fsStatSettings=new Jet.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return Vet.resolve(this._settings.cwd,e)}_makeEntry(e,r){let o={name:r,path:r,dirent:Nie.fs.createDirentFromStats(r,e)};return this._settings.stats&&(o.stats=e),o}_isFatalError(e){return!Nie.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};EO.default=yO});var IO=_(wO=>{\"use strict\";Object.defineProperty(wO,\"__esModule\",{value:!0});var zet=ve(\"stream\"),Xet=Cd(),Zet=bS(),$et=xS(),CO=class extends $et.default{constructor(){super(...arguments),this._walkStream=Zet.walkStream,this._stat=Xet.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let o=e.map(this._getFullEntryPath,this),a=new zet.PassThrough({objectMode:!0});a._write=(n,u,A)=>this._getEntry(o[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===o.length-1&&a.end(),A()}).catch(A);for(let n=0;n<o.length;n++)a.write(n);return a}_getEntry(e,r,o){return this._getStat(e).then(a=>this._makeEntry(a,r)).catch(a=>{if(o.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,o)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):o(a))})}};wO.default=CO});var Oie=_(vO=>{\"use strict\";Object.defineProperty(vO,\"__esModule\",{value:!0});var ett=bS(),ttt=xS(),rtt=IO(),BO=class extends ttt.default{constructor(){super(...arguments),this._walkAsync=ett.walk,this._readerStream=new rtt.default(this._settings)}dynamic(e,r){return new Promise((o,a)=>{this._walkAsync(e,r,(n,u)=>{n===null?o(u):a(n)})})}async static(e,r){let o=[],a=this._readerStream.static(e,r);return new Promise((n,u)=>{a.once(\"error\",u),a.on(\"data\",A=>o.push(A)),a.once(\"end\",()=>n(o))})}};vO.default=BO});var Mie=_(PO=>{\"use strict\";Object.defineProperty(PO,\"__esModule\",{value:!0});var nE=Pf(),DO=class{constructor(e,r,o){this._patterns=e,this._settings=r,this._micromatchOptions=o,this._storage=[],this._fillStorage()}_fillStorage(){let e=nE.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let o=this._getPatternSegments(r),a=this._splitSegmentsIntoSections(o);this._storage.push({complete:a.length<=1,pattern:r,segments:o,sections:a})}}_getPatternSegments(e){return nE.pattern.getPatternParts(e,this._micromatchOptions).map(o=>nE.pattern.isDynamicPattern(o,this._settings)?{dynamic:!0,pattern:o,patternRe:nE.pattern.makeRe(o,this._micromatchOptions)}:{dynamic:!1,pattern:o})}_splitSegmentsIntoSections(e){return nE.array.splitWhen(e,r=>r.dynamic&&nE.pattern.hasGlobStar(r.pattern))}};PO.default=DO});var Uie=_(bO=>{\"use strict\";Object.defineProperty(bO,\"__esModule\",{value:!0});var ntt=Mie(),SO=class extends ntt.default{match(e){let r=e.split(\"/\"),o=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>o);for(let n of a){let u=n.sections[0];if(!n.complete&&o>u.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};bO.default=SO});var _ie=_(kO=>{\"use strict\";Object.defineProperty(kO,\"__esModule\",{value:!0});var kS=Pf(),itt=Uie(),xO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,o){let a=this._getMatcher(r),n=this._getNegativePatternsRe(o);return u=>this._filter(e,u,a,n)}_getMatcher(e){return new itt.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(kS.pattern.isAffectDepthOfReadingPattern);return kS.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,o,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=kS.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,o)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let o=r.split(\"/\").length;if(e===\"\")return o;let a=e.split(\"/\").length;return o-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!kS.pattern.matchAny(e,r)}};kO.default=xO});var Hie=_(FO=>{\"use strict\";Object.defineProperty(FO,\"__esModule\",{value:!0});var wd=Pf(),QO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let o=wd.pattern.convertPatternsToRe(e,this._micromatchOptions),a=wd.pattern.convertPatternsToRe(r,this._micromatchOptions);return n=>this._filter(n,o,a)}_filter(e,r,o){if(this._settings.unique&&this._isDuplicateEntry(e)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e.path,o))return!1;let a=this._settings.baseNameMatch?e.name:e.path,n=e.dirent.isDirectory(),u=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(e.path,o,n);return this._settings.unique&&u&&this._createIndexRecord(e),u}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let o=wd.path.makeAbsolute(this._settings.cwd,e);return wd.pattern.matchAny(o,r)}_isMatchToPatterns(e,r,o){let a=wd.path.removeLeadingDotSegment(e),n=wd.pattern.matchAny(a,r);return!n&&o?wd.pattern.matchAny(a+\"/\",r):n}};FO.default=QO});var jie=_(TO=>{\"use strict\";Object.defineProperty(TO,\"__esModule\",{value:!0});var stt=Pf(),RO=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return stt.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};TO.default=RO});var Gie=_(NO=>{\"use strict\";Object.defineProperty(NO,\"__esModule\",{value:!0});var qie=Pf(),LO=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=qie.path.makeAbsolute(this._settings.cwd,r),r=qie.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+=\"/\"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};NO.default=LO});var QS=_(MO=>{\"use strict\";Object.defineProperty(MO,\"__esModule\",{value:!0});var ott=ve(\"path\"),att=_ie(),ltt=Hie(),ctt=jie(),utt=Gie(),OO=class{constructor(e){this._settings=e,this.errorFilter=new ctt.default(this._settings),this.entryFilter=new ltt.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new att.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new utt.default(this._settings)}_getRootDirectory(e){return ott.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base===\".\"?\"\":e.base;return{basePath:r,pathSegmentSeparator:\"/\",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};MO.default=OO});var Yie=_(_O=>{\"use strict\";Object.defineProperty(_O,\"__esModule\",{value:!0});var Att=Oie(),ftt=QS(),UO=class extends ftt.default{constructor(){super(...arguments),this._reader=new Att.default(this._settings)}async read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return(await this.api(r,e,o)).map(n=>o.transform(n))}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};_O.default=UO});var Wie=_(jO=>{\"use strict\";Object.defineProperty(jO,\"__esModule\",{value:!0});var ptt=ve(\"stream\"),htt=IO(),gtt=QS(),HO=class extends gtt.default{constructor(){super(...arguments),this._reader=new htt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e),a=this.api(r,e,o),n=new ptt.Readable({objectMode:!0,read:()=>{}});return a.once(\"error\",u=>n.emit(\"error\",u)).on(\"data\",u=>n.emit(\"data\",o.transform(u))).once(\"end\",()=>n.emit(\"end\")),n.once(\"close\",()=>a.destroy()),n}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};jO.default=HO});var Kie=_(GO=>{\"use strict\";Object.defineProperty(GO,\"__esModule\",{value:!0});var dtt=Cd(),mtt=bS(),ytt=xS(),qO=class extends ytt.default{constructor(){super(...arguments),this._walkSync=mtt.walkSync,this._statSync=dtt.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let o=[];for(let a of e){let n=this._getFullEntryPath(a),u=this._getEntry(n,a,r);u===null||!r.entryFilter(u)||o.push(u)}return o}_getEntry(e,r,o){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(o.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};GO.default=qO});var Vie=_(WO=>{\"use strict\";Object.defineProperty(WO,\"__esModule\",{value:!0});var Ett=Kie(),Ctt=QS(),YO=class extends Ctt.default{constructor(){super(...arguments),this._reader=new Ett.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return this.api(r,e,o).map(o.transform)}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};WO.default=YO});var Jie=_(sE=>{\"use strict\";Object.defineProperty(sE,\"__esModule\",{value:!0});sE.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var iE=ve(\"fs\"),wtt=ve(\"os\"),Itt=Math.max(wtt.cpus().length,1);sE.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:iE.lstat,lstatSync:iE.lstatSync,stat:iE.stat,statSync:iE.statSync,readdir:iE.readdir,readdirSync:iE.readdirSync};var KO=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,Itt),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},sE.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};sE.default=KO});var RS=_((DLt,Zie)=>{\"use strict\";var zie=Zne(),Xie=eie(),Btt=Yie(),vtt=Wie(),Dtt=Vie(),VO=Jie(),Id=Pf();async function JO(t,e){oE(t);let r=zO(t,Btt.default,e),o=await Promise.all(r);return Id.array.flatten(o)}(function(t){function e(u,A){oE(u);let p=zO(u,Dtt.default,A);return Id.array.flatten(p)}t.sync=e;function r(u,A){oE(u);let p=zO(u,vtt.default,A);return Id.stream.merge(p)}t.stream=r;function o(u,A){oE(u);let p=Xie.transform([].concat(u)),h=new VO.default(A);return zie.generate(p,h)}t.generateTasks=o;function a(u,A){oE(u);let p=new VO.default(A);return Id.pattern.isDynamicPattern(u,p)}t.isDynamicPattern=a;function n(u){return oE(u),Id.path.escape(u)}t.escapePath=n})(JO||(JO={}));function zO(t,e,r){let o=Xie.transform([].concat(t)),a=new VO.default(r),n=zie.generate(o,a),u=new e(a);return n.map(u.read,u)}function oE(t){if(![].concat(t).every(o=>Id.string.isString(o)&&!Id.string.isEmpty(o)))throw new TypeError(\"Patterns must be a string (non empty) or an array of strings\")}Zie.exports=JO});var wn={};Vt(wn,{checksumFile:()=>LS,checksumPattern:()=>NS,makeHash:()=>zs});function zs(...t){let e=(0,TS.createHash)(\"sha512\"),r=\"\";for(let o of t)typeof o==\"string\"?r+=o:o&&(r&&(e.update(r),r=\"\"),e.update(o));return r&&e.update(r),e.digest(\"hex\")}async function LS(t,{baseFs:e,algorithm:r}={baseFs:oe,algorithm:\"sha512\"}){let o=await e.openPromise(t,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,TS.createHash)(r),A=0;for(;(A=await e.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest(\"hex\")}finally{await e.closePromise(o)}}async function NS(t,{cwd:e}){let o=(await(0,XO.default)(t,{cwd:ue.fromPortablePath(e),onlyDirectories:!0})).map(A=>`${A}/**/*`),a=await(0,XO.default)([t,...o],{cwd:ue.fromPortablePath(e),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async A=>{let p=[Buffer.from(A)],h=ue.toPortablePath(A),E=await oe.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await oe.readlinkPromise(h))):E.isFile()&&p.push(await oe.readFilePromise(h)),p.join(\"\\0\")})),u=(0,TS.createHash)(\"sha512\");for(let A of n)u.update(A);return u.digest(\"hex\")}var TS,XO,nh=Et(()=>{Pt();TS=ve(\"crypto\"),XO=$e(RS())});var W={};Vt(W,{areDescriptorsEqual:()=>nse,areIdentsEqual:()=>n1,areLocatorsEqual:()=>i1,areVirtualPackagesEquivalent:()=>Ttt,bindDescriptor:()=>Ftt,bindLocator:()=>Rtt,convertDescriptorToLocator:()=>OS,convertLocatorToDescriptor:()=>$O,convertPackageToLocator:()=>xtt,convertToIdent:()=>btt,convertToManifestRange:()=>Gtt,copyPackage:()=>e1,devirtualizeDescriptor:()=>t1,devirtualizeLocator:()=>r1,ensureDevirtualizedDescriptor:()=>ktt,ensureDevirtualizedLocator:()=>Qtt,getIdentVendorPath:()=>nM,isPackageCompatible:()=>jS,isVirtualDescriptor:()=>bf,isVirtualLocator:()=>Hc,makeDescriptor:()=>In,makeIdent:()=>eA,makeLocator:()=>Qs,makeRange:()=>_S,parseDescriptor:()=>ih,parseFileStyleRange:()=>jtt,parseIdent:()=>Js,parseLocator:()=>xf,parseRange:()=>Bd,prettyDependent:()=>QN,prettyDescriptor:()=>qn,prettyIdent:()=>cs,prettyLocator:()=>jr,prettyLocatorNoColors:()=>kN,prettyRange:()=>cE,prettyReference:()=>o1,prettyResolution:()=>ZI,prettyWorkspace:()=>a1,renamePackage:()=>eM,slugifyIdent:()=>ZO,slugifyLocator:()=>lE,sortDescriptors:()=>uE,stringifyDescriptor:()=>Sa,stringifyIdent:()=>fn,stringifyLocator:()=>ba,tryParseDescriptor:()=>s1,tryParseIdent:()=>ise,tryParseLocator:()=>US,tryParseRange:()=>Htt,virtualizeDescriptor:()=>tM,virtualizePackage:()=>rM});function eA(t,e){if(t?.startsWith(\"@\"))throw new Error(\"Invalid scope: don't prefix it with '@'\");return{identHash:zs(t,e),scope:t,name:e}}function In(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zs(t.identHash,e),range:e}}function Qs(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zs(t.identHash,e),reference:e}}function btt(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function OS(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function $O(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function xtt(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function eM(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function e1(t){return eM(t,t)}function tM(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return In(t,`virtual:${e}#${t.range}`)}function rM(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return eM(t,Qs(t,`virtual:${e}#${t.reference}`))}function bf(t){return t.range.startsWith($I)}function Hc(t){return t.reference.startsWith($I)}function t1(t){if(!bf(t))throw new Error(\"Not a virtual descriptor\");return In(t,t.range.replace(MS,\"\"))}function r1(t){if(!Hc(t))throw new Error(\"Not a virtual descriptor\");return Qs(t,t.reference.replace(MS,\"\"))}function ktt(t){return bf(t)?In(t,t.range.replace(MS,\"\")):t}function Qtt(t){return Hc(t)?Qs(t,t.reference.replace(MS,\"\")):t}function Ftt(t,e){return t.range.includes(\"::\")?t:In(t,`${t.range}::${aE.default.stringify(e)}`)}function Rtt(t,e){return t.reference.includes(\"::\")?t:Qs(t,`${t.reference}::${aE.default.stringify(e)}`)}function n1(t,e){return t.identHash===e.identHash}function nse(t,e){return t.descriptorHash===e.descriptorHash}function i1(t,e){return t.locatorHash===e.locatorHash}function Ttt(t,e){if(!Hc(t))throw new Error(\"Invalid package type\");if(!Hc(e))throw new Error(\"Invalid package type\");if(!n1(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let o=e.dependencies.get(r.identHash);if(!o||!nse(r,o))return!1}return!0}function Js(t){let e=ise(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function ise(t){let e=t.match(Ltt);if(!e)return null;let[,r,o]=e;return eA(typeof r<\"u\"?r:null,o)}function ih(t,e=!1){let r=s1(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function s1(t,e=!1){let r=e?t.match(Ntt):t.match(Ott);if(!r)return null;let[,o,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid range (${t})`);let u=typeof o<\"u\"?o:null,A=typeof n<\"u\"?n:\"unknown\";return In(eA(u,a),A)}function xf(t,e=!1){let r=US(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function US(t,e=!1){let r=e?t.match(Mtt):t.match(Utt);if(!r)return null;let[,o,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid reference (${t})`);let u=typeof o<\"u\"?o:null,A=typeof n<\"u\"?n:\"unknown\";return Qs(eA(u,a),A)}function Bd(t,e){let r=t.match(_tt);if(r===null)throw new Error(`Invalid range (${t})`);let o=typeof r[1]<\"u\"?r[1]:null;if(typeof e?.requireProtocol==\"string\"&&o!==e.requireProtocol)throw new Error(`Invalid protocol (${o})`);if(e?.requireProtocol&&o===null)throw new Error(`Missing protocol (${o})`);let a=typeof r[3]<\"u\"?decodeURIComponent(r[2]):null;if(e?.requireSource&&a===null)throw new Error(`Missing source (${t})`);let n=typeof r[3]<\"u\"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),u=e?.parseSelector?aE.default.parse(n):n,A=typeof r[4]<\"u\"?aE.default.parse(r[4]):null;return{protocol:o,source:a,selector:u,params:A}}function Htt(t,e){try{return Bd(t,e)}catch{return null}}function jtt(t,{protocol:e}){let{selector:r,params:o}=Bd(t,{requireProtocol:e,requireBindings:!0});if(typeof o.locator!=\"string\")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:xf(o.locator,!0),path:r}}function $ie(t){return t=t.replaceAll(\"%\",\"%25\"),t=t.replaceAll(\":\",\"%3A\"),t=t.replaceAll(\"#\",\"%23\"),t}function qtt(t){return t===null?!1:Object.entries(t).length>0}function _S({protocol:t,source:e,selector:r,params:o}){let a=\"\";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${$ie(e)}#`),a+=$ie(r),qtt(o)&&(a+=`::${aE.default.stringify(o)}`),a}function Gtt(t){let{params:e,protocol:r,source:o,selector:a}=Bd(t);for(let n in e)n.startsWith(\"__\")&&delete e[n];return _S({protocol:r,source:o,params:e,selector:a})}function fn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function Sa(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function ba(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function ZO(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function lE(t){let{protocol:e,selector:r}=Bd(t.reference),o=e!==null?e.replace(Ytt,\"\"):\"exotic\",a=ese.default.valid(r),n=a!==null?`${o}-${a}`:`${o}`,u=10;return t.scope?`${ZO(t)}-${n}-${t.locatorHash.slice(0,u)}`:`${ZO(t)}-${n}-${t.locatorHash.slice(0,u)}`}function cs(t,e){return e.scope?`${Ut(t,`@${e.scope}/`,yt.SCOPE)}${Ut(t,e.name,yt.NAME)}`:`${Ut(t,e.name,yt.NAME)}`}function HS(t){if(t.startsWith($I)){let e=HS(t.substring(t.indexOf(\"#\")+1)),r=t.substring($I.length,$I.length+Ptt);return`${e} [${r}]`}else return t.replace(Wtt,\"?[...]\")}function cE(t,e){return`${Ut(t,HS(e),yt.RANGE)}`}function qn(t,e){return`${cs(t,e)}${Ut(t,\"@\",yt.RANGE)}${cE(t,e.range)}`}function o1(t,e){return`${Ut(t,HS(e),yt.REFERENCE)}`}function jr(t,e){return`${cs(t,e)}${Ut(t,\"@\",yt.REFERENCE)}${o1(t,e.reference)}`}function kN(t){return`${fn(t)}@${HS(t.reference)}`}function uE(t){return ks(t,[e=>fn(e),e=>e.range])}function a1(t,e){return cs(t,e.anchoredLocator)}function ZI(t,e,r){let o=bf(e)?t1(e):e;return r===null?`${qn(t,o)} \\u2192 ${xN(t).Cross}`:o.identHash===r.identHash?`${qn(t,o)} \\u2192 ${o1(t,r.reference)}`:`${qn(t,o)} \\u2192 ${jr(t,r)}`}function QN(t,e,r){return r===null?`${jr(t,e)}`:`${jr(t,e)} (via ${cE(t,r.range)})`}function nM(t){return`node_modules/${fn(t)}`}function jS(t,e){return t.conditions?Stt(t.conditions,r=>{let[,o,a]=r.match(rse),n=e[o];return n?n.includes(a):!0}):!0}var aE,ese,tse,$I,Ptt,rse,Stt,MS,Ltt,Ntt,Ott,Mtt,Utt,_tt,Ytt,Wtt,bo=Et(()=>{aE=$e(ve(\"querystring\")),ese=$e(zn()),tse=$e(eX());ql();nh();jl();bo();$I=\"virtual:\",Ptt=5,rse=/(os|cpu|libc)=([a-z0-9_-]+)/,Stt=(0,tse.makeParser)(rse);MS=/^[^#]*#/;Ltt=/^(?:@([^/]+?)\\/)?([^@/]+)$/;Ntt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,Ott=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;Mtt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,Utt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;_tt=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;Ytt=/:$/;Wtt=/\\?.*/});var sse,ose=Et(()=>{bo();sse={hooks:{reduceDependency:(t,e,r,o,{resolver:a,resolveOptions:n})=>{for(let{pattern:u,reference:A}of e.topLevelWorkspace.manifest.resolutions){if(u.from&&(u.from.fullName!==fn(r)||e.configuration.normalizeLocator(Qs(Js(u.from.fullName),u.from.description??r.reference)).locatorHash!==r.locatorHash)||u.descriptor.fullName!==fn(t)||e.configuration.normalizeDependency(In(xf(u.descriptor.fullName),u.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(In(t,A)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let o=a1(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${o}: ${n}`),reportError:(a,n)=>e.reportError(a,`${o}: ${n}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error(\"Resolutions field will be ignored\"));for(let o of r.errors)e.reportWarning(57,o.message)}}}});var l1,Xn,vd=Et(()=>{l1=class{supportsDescriptor(e,r){return!!(e.range.startsWith(l1.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(l1.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[o.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.getWorkspaceByCwd(e.reference.slice(l1.protocol.length));return{...e,version:o.manifest.version||\"0.0.0\",languageName:\"unknown\",linkType:\"SOFT\",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...o.manifest.dependencies,...o.manifest.devDependencies])),peerDependencies:new Map([...o.manifest.peerDependencies]),dependenciesMeta:o.manifest.dependenciesMeta,peerDependenciesMeta:o.manifest.peerDependenciesMeta,bin:o.manifest.bin}}},Xn=l1;Xn.protocol=\"workspace:\"});var kr={};Vt(kr,{SemVer:()=>Ase.SemVer,clean:()=>Vtt,getComparator:()=>cse,mergeComparators:()=>iM,satisfiesWithPrereleases:()=>kf,simplifyRanges:()=>sM,stringifyComparator:()=>use,validRange:()=>xa});function kf(t,e,r=!1){if(!t)return!1;let o=`${e}${r}`,a=ase.get(o);if(typeof a>\"u\")try{a=new sh.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{ase.set(o,a||null)}else if(a===null)return!1;let n;try{n=new sh.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(u=>{for(let A of u)A.semver.prerelease&&(A.semver.prerelease=[]);return u.every(A=>A.test(n))}))}function xa(t){if(t.indexOf(\":\")!==-1)return null;let e=lse.get(t);if(typeof e<\"u\")return e;try{e=new sh.default.Range(t)}catch{e=null}return lse.set(t,e),e}function Vtt(t){let e=Ktt.exec(t);return e?e[1]:null}function cse(t){if(t.semver===sh.default.Comparator.ANY)return{gt:null,lt:null};switch(t.operator){case\"\":return{gt:[\">=\",t.semver],lt:[\"<=\",t.semver]};case\">\":case\">=\":return{gt:[t.operator,t.semver],lt:null};case\"<\":case\"<=\":return{gt:null,lt:[t.operator,t.semver]};default:throw new Error(`Assertion failed: Unexpected comparator operator (${t.operator})`)}}function iM(t){if(t.length===0)return null;let e=null,r=null;for(let o of t){if(o.gt){let a=e!==null?sh.default.compare(o.gt[1],e[1]):null;(a===null||a>0||a===0&&o.gt[0]===\">\")&&(e=o.gt)}if(o.lt){let a=r!==null?sh.default.compare(o.lt[1],r[1]):null;(a===null||a<0||a===0&&o.lt[0]===\"<\")&&(r=o.lt)}}if(e&&r){let o=sh.default.compare(e[1],r[1]);if(o===0&&(e[0]===\">\"||r[0]===\"<\")||o>0)return null}return{gt:e,lt:r}}function use(t){if(t.gt&&t.lt){if(t.gt[0]===\">=\"&&t.lt[0]===\"<=\"&&t.gt[1].version===t.lt[1].version)return t.gt[1].version;if(t.gt[0]===\">=\"&&t.lt[0]===\"<\"){if(t.lt[1].version===`${t.gt[1].major+1}.0.0-0`)return`^${t.gt[1].version}`;if(t.lt[1].version===`${t.gt[1].major}.${t.gt[1].minor+1}.0-0`)return`~${t.gt[1].version}`}}let e=[];return t.gt&&e.push(t.gt[0]+t.gt[1].version),t.lt&&e.push(t.lt[0]+t.lt[1].version),e.length?e.join(\" \"):\"*\"}function sM(t){let e=t.map(o=>xa(o).set.map(a=>a.map(n=>cse(n)))),r=e.shift().map(o=>iM(o)).filter(o=>o!==null);for(let o of e){let a=[];for(let n of r)for(let u of o){let A=iM([n,...u]);A!==null&&a.push(A)}r=a}return r.length===0?null:r.map(o=>use(o)).join(\" || \")}var sh,Ase,ase,lse,Ktt,Qf=Et(()=>{sh=$e(zn()),Ase=$e(zn()),ase=new Map;lse=new Map;Ktt=/^(?:[\\sv=]*?)((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)(?:\\s*)$/});function fse(t){let e=t.match(/^[ \\t]+/m);return e?e[0]:\"  \"}function pse(t){return t.charCodeAt(0)===65279?t.slice(1):t}function $o(t){return t.replace(/\\\\/g,\"/\")}function qS(t,{yamlCompatibilityMode:e}){return e?wN(t):typeof t>\"u\"||typeof t==\"boolean\"?t:null}function hse(t,e){let r=e.search(/[^!]/);if(r===-1)return\"invalid\";let o=r%2===0?\"\":\"!\",a=e.slice(r);return`${o}${t}=${a}`}function oM(t,e){return e.length===1?hse(t,e[0]):`(${e.map(r=>hse(t,r)).join(\" | \")})`}var gse,AE,Ot,fE=Et(()=>{Pt();Ll();gse=$e(zn());vd();jl();Qf();bo();AE=class{constructor(){this.indent=\"  \";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new Tn}={}){let o=V.join(e,\"package.json\");try{return await AE.fromFile(o,{baseFs:r})}catch(a){if(a.code===\"ENOENT\")return null;throw a}}static async find(e,{baseFs:r}={}){let o=await AE.tryFind(e,{baseFs:r});if(o===null)throw new Error(\"Manifest not found\");return o}static async fromFile(e,{baseFs:r=new Tn}={}){let o=new AE;return await o.loadFile(e,{baseFs:r}),o}static fromText(e){let r=new AE;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(pse(e)||\"{}\")}catch(o){throw o.message+=` (when parsing ${e})`,o}this.load(r),this.indent=fse(e)}async loadFile(e,{baseFs:r=new Tn}){let o=await r.readFilePromise(e,\"utf8\"),a;try{a=JSON.parse(pse(o)||\"{}\")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=fse(o)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!=\"object\"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let o=[];if(this.name=null,typeof e.name==\"string\")try{this.name=Js(e.name)}catch{o.push(new Error(\"Parsing failed for the 'name' field\"))}if(typeof e.version==\"string\"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let u of e.os)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'os' field\")):n.push(u)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let u of e.cpu)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'cpu' field\")):n.push(u)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let u of e.libc)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'libc' field\")):n.push(u)}else this.libc=null;if(typeof e.type==\"string\"?this.type=e.type:this.type=null,typeof e.packageManager==\"string\"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private==\"boolean\"?this.private=e.private:this.private=!1,typeof e.license==\"string\"?this.license=e.license:this.license=null,typeof e.languageName==\"string\"?this.languageName=e.languageName:this.languageName=null,typeof e.main==\"string\"?this.main=$o(e.main):this.main=null,typeof e.module==\"string\"?this.module=$o(e.module):this.module=null,e.browser!=null)if(typeof e.browser==\"string\")this.browser=$o(e.browser);else{this.browser=new Map;for(let[n,u]of Object.entries(e.browser))this.browser.set($o(n),typeof u==\"string\"?$o(u):u)}else this.browser=null;if(this.bin=new Map,typeof e.bin==\"string\")e.bin.trim()===\"\"?o.push(new Error(\"Invalid bin field\")):this.name!==null?this.bin.set(this.name.name,$o(e.bin)):o.push(new Error(\"String bin field, but no attached package name\"));else if(typeof e.bin==\"object\"&&e.bin!==null)for(let[n,u]of Object.entries(e.bin)){if(typeof u!=\"string\"||u.trim()===\"\"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}let A=Js(n);this.bin.set(A.name,$o(u))}if(this.scripts=new Map,typeof e.scripts==\"object\"&&e.scripts!==null)for(let[n,u]of Object.entries(e.scripts)){if(typeof u!=\"string\"){o.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,u)}if(this.dependencies=new Map,typeof e.dependencies==\"object\"&&e.dependencies!==null)for(let[n,u]of Object.entries(e.dependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies==\"object\"&&e.devDependencies!==null)for(let[n,u]of Object.entries(e.devDependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies==\"object\"&&e.peerDependencies!==null)for(let[n,u]of Object.entries(e.peerDependencies)){let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof u!=\"string\"||!u.startsWith(Xn.protocol)&&!xa(u))&&(o.push(new Error(`Invalid dependency range for '${n}'`)),u=\"*\");let p=In(A,u);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces==\"object\"&&e.workspaces!==null&&e.workspaces.nohoist&&o.push(new Error(\"'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead\"));let a=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces==\"object\"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!=\"string\"){o.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta==\"object\"&&e.dependenciesMeta!==null)for(let[n,u]of Object.entries(e.dependenciesMeta)){if(typeof u!=\"object\"||u===null){o.push(new Error(`Invalid meta field for '${n}`));continue}let A=ih(n),p=this.ensureDependencyMeta(A),h=qS(u.built,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=qS(u.optional,{yamlCompatibilityMode:r});if(E===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}let I=qS(u.unplugged,{yamlCompatibilityMode:r});if(I===null){o.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:I})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta==\"object\"&&e.peerDependenciesMeta!==null)for(let[n,u]of Object.entries(e.peerDependenciesMeta)){if(typeof u!=\"object\"||u===null){o.push(new Error(`Invalid meta field for '${n}'`));continue}let A=ih(n),p=this.ensurePeerDependencyMeta(A),h=qS(u.optional,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof e.resolutions==\"object\"&&e.resolutions!==null)for(let[n,u]of Object.entries(e.resolutions)){if(typeof u!=\"string\"){o.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:MD(n),reference:u})}catch(A){o.push(A);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!=\"string\"){o.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig==\"object\"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access==\"string\"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main==\"string\"&&(this.publishConfig.main=$o(e.publishConfig.main)),typeof e.publishConfig.module==\"string\"&&(this.publishConfig.module=$o(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser==\"string\")this.publishConfig.browser=$o(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,u]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set($o(n),typeof u==\"string\"?$o(u):u)}if(typeof e.publishConfig.registry==\"string\"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin==\"string\")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,$o(e.publishConfig.bin)]]):o.push(new Error(\"String bin field, but no attached package name\"));else if(typeof e.publishConfig.bin==\"object\"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,u]of Object.entries(e.publishConfig.bin)){if(typeof u!=\"string\"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,$o(u))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!=\"string\"){o.push(new Error(\"Invalid executable file definition\"));continue}this.publishConfig.executableFiles.add($o(n))}}}else this.publishConfig=null;if(typeof e.installConfig==\"object\"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n===\"hoistingLimits\"?typeof e.installConfig.hoistingLimits==\"string\"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:o.push(new Error(\"Invalid hoisting limits definition\")):n==\"selfReferences\"?typeof e.installConfig.selfReferences==\"boolean\"?this.installConfig.selfReferences=e.installConfig.selfReferences:o.push(new Error(\"Invalid selfReferences definition, must be a boolean value\")):o.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies==\"object\"&&e.optionalDependencies!==null)for(let[n,u]of Object.entries(e.optionalDependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.dependencies.set(p.identHash,p);let h=In(A,\"unknown\"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof e.preferUnplugged==\"boolean\"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=o}getForScope(e){switch(e){case\"dependencies\":return this.dependencies;case\"devDependencies\":return this.devDependencies;case\"peerDependencies\":return this.peerDependencies;default:throw new Error(`Unsupported value (\"${e}\")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(oM(\"os\",this.os)),this.cpu&&this.cpu.length>0&&e.push(oM(\"cpu\",this.cpu)),this.libc&&this.libc.length>0&&e.push(oM(\"libc\",this.libc)),e.length>0?e.join(\" & \"):null}ensureDependencyMeta(e){if(e.range!==\"unknown\"&&!gse.default.valid(e.range))throw new Error(`Invalid meta field range for '${Sa(e)}'`);let r=fn(e),o=e.range!==\"unknown\"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(o);return n||a.set(o,n={}),n}ensurePeerDependencyMeta(e){if(e.range!==\"unknown\")throw new Error(`Invalid meta field range for '${Sa(e)}'`);let r=fn(e),o=this.peerDependenciesMeta.get(r);return o||this.peerDependenciesMeta.set(r,o={}),o}setRawField(e,r,{after:o=[]}={}){let a=new Set(o.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,e))this.raw[e]=r;else{let n=this.raw,u=this.raw={},A=!1;for(let p of Object.keys(n))u[p]=n[p],A||(a.delete(p),a.size===0&&(u[e]=r,A=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=fn(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let n=this.browser;typeof n==\"string\"?e.browser=n:n instanceof Map&&(e.browser=Object.assign({},...Array.from(n.keys()).sort().map(u=>({[u]:n.get(u)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:e.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let o=[],a=[];for(let n of this.dependencies.values()){let u=this.dependenciesMeta.get(fn(n)),A=!1;if(r&&u){let p=u.get(null);p&&p.optional&&(A=!0)}A?a.push(n):o.push(n)}o.length>0?e.dependencies=Object.assign({},...uE(o).map(n=>({[fn(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...uE(a).map(n=>({[fn(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...uE(this.devDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...uE(this.peerDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,u]of ks(this.dependenciesMeta.entries(),([A,p])=>A))for(let[A,p]of ks(u.entries(),([h,E])=>h!==null?`0${h}`:\"1\")){let h=A!==null?Sa(In(Js(n),A)):n,E={...p};r&&A===null&&delete E.optional,Object.keys(E).length!==0&&(e.dependenciesMeta[h]=E)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...ks(this.peerDependenciesMeta.entries(),([n,u])=>n).map(([n,u])=>({[n]:u}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:u})=>({[UD(n)]:u}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){e.scripts??={};for(let n of Object.keys(e.scripts))this.scripts.has(n)||delete e.scripts[n];for(let[n,u]of this.scripts.entries())e.scripts[n]=u}else delete e.scripts;return e}},Ot=AE;Ot.fileName=\"package.json\",Ot.allDependencies=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],Ot.hardDependencies=[\"dependencies\",\"devDependencies\"]});var mse=_((_Lt,dse)=>{var Jtt=_l(),ztt=function(){return Jtt.Date.now()};dse.exports=ztt});var Ese=_((HLt,yse)=>{var Xtt=/\\s/;function Ztt(t){for(var e=t.length;e--&&Xtt.test(t.charAt(e)););return e}yse.exports=Ztt});var wse=_((jLt,Cse)=>{var $tt=Ese(),ert=/^\\s+/;function trt(t){return t&&t.slice(0,$tt(t)+1).replace(ert,\"\")}Cse.exports=trt});var pE=_((qLt,Ise)=>{var rrt=hd(),nrt=Ju(),irt=\"[object Symbol]\";function srt(t){return typeof t==\"symbol\"||nrt(t)&&rrt(t)==irt}Ise.exports=srt});var Pse=_((GLt,Dse)=>{var ort=wse(),Bse=il(),art=pE(),vse=0/0,lrt=/^[-+]0x[0-9a-f]+$/i,crt=/^0b[01]+$/i,urt=/^0o[0-7]+$/i,Art=parseInt;function frt(t){if(typeof t==\"number\")return t;if(art(t))return vse;if(Bse(t)){var e=typeof t.valueOf==\"function\"?t.valueOf():t;t=Bse(e)?e+\"\":e}if(typeof t!=\"string\")return t===0?t:+t;t=ort(t);var r=crt.test(t);return r||urt.test(t)?Art(t.slice(2),r?2:8):lrt.test(t)?vse:+t}Dse.exports=frt});var xse=_((YLt,bse)=>{var prt=il(),aM=mse(),Sse=Pse(),hrt=\"Expected a function\",grt=Math.max,drt=Math.min;function mrt(t,e,r){var o,a,n,u,A,p,h=0,E=!1,I=!1,v=!0;if(typeof t!=\"function\")throw new TypeError(hrt);e=Sse(e)||0,prt(r)&&(E=!!r.leading,I=\"maxWait\"in r,n=I?grt(Sse(r.maxWait)||0,e):n,v=\"trailing\"in r?!!r.trailing:v);function x(ce){var me=o,he=a;return o=a=void 0,h=ce,u=t.apply(he,me),u}function C(ce){return h=ce,A=setTimeout(U,e),E?x(ce):u}function R(ce){var me=ce-p,he=ce-h,Be=e-me;return I?drt(Be,n-he):Be}function N(ce){var me=ce-p,he=ce-h;return p===void 0||me>=e||me<0||I&&he>=n}function U(){var ce=aM();if(N(ce))return J(ce);A=setTimeout(U,R(ce))}function J(ce){return A=void 0,v&&o?x(ce):(o=a=void 0,u)}function te(){A!==void 0&&clearTimeout(A),h=0,o=p=a=A=void 0}function ae(){return A===void 0?u:J(aM())}function fe(){var ce=aM(),me=N(ce);if(o=arguments,a=this,p=ce,me){if(A===void 0)return C(p);if(I)return clearTimeout(A),A=setTimeout(U,e),x(p)}return A===void 0&&(A=setTimeout(U,e)),u}return fe.cancel=te,fe.flush=ae,fe}bse.exports=mrt});var lM=_((WLt,kse)=>{var yrt=xse(),Ert=il(),Crt=\"Expected a function\";function wrt(t,e,r){var o=!0,a=!0;if(typeof t!=\"function\")throw new TypeError(Crt);return Ert(r)&&(o=\"leading\"in r?!!r.leading:o,a=\"trailing\"in r?!!r.trailing:a),yrt(t,e,{leading:o,maxWait:e,trailing:a})}kse.exports=wrt});function Brt(t){return typeof t.reportCode<\"u\"}var Qse,Fse,Rse,Irt,zt,Xs,Yl=Et(()=>{Qse=$e(lM()),Fse=ve(\"stream\"),Rse=ve(\"string_decoder\"),Irt=15,zt=class extends Error{constructor(r,o,a){super(o);this.reportExtra=a;this.reportCode=r}};Xs=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(e){this.cacheHits.add(e.locatorHash)}reportCacheMiss(e,r){this.cacheMisses.add(e.locatorHash)}static progressViaCounter(e){let r=0,o,a=new Promise(p=>{o=p}),n=p=>{let h=o;a=new Promise(E=>{o=E}),r=p,h()},u=(p=0)=>{n(r+1)},A=async function*(){for(;r<e;)await a,yield{progress:r/e}}();return{[Symbol.asyncIterator](){return A},hasProgress:!0,hasTitle:!1,set:n,tick:u}}static progressViaTitle(){let e,r,o=new Promise(u=>{r=u}),a=(0,Qse.default)(u=>{let A=r;o=new Promise(p=>{r=p}),e=u,A()},1e3/Irt),n=async function*(){for(;;)await o,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let o=this.reportProgress(e);try{return await r(e)}finally{o.stop()}}startProgressSync(e,r){let o=this.reportProgress(e);try{return r(e)}finally{o.stop()}}reportInfoOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),o?.reportExtra?.(this))}reportWarningOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),o?.reportExtra?.(this))}reportErrorOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),o?.reportExtra?.(this))}reportExceptionOnce(e){Brt(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let r=new Fse.PassThrough,o=new Rse.StringDecoder,a=\"\";return r.on(\"data\",n=>{let u=o.write(n),A;do if(A=u.indexOf(`\n`),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a=\"\",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(A!==-1);a+=u}),r.on(\"end\",()=>{let n=o.end();n!==\"\"&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var hE,cM=Et(()=>{Yl();bo();hE=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));return o||null}getFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));if(!o)throw new zt(11,`${jr(r.project.configuration,e)} isn't supported by any available fetcher`);return o}}});var Dd,uM=Et(()=>{bo();Dd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.getResolverByDescriptor(e,o).bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,o){return await this.getResolverByDescriptor(e,o).getCandidates(e,r,o)}async getSatisfying(e,r,o,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,o,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));return o||null}getResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!o)throw new Error(`${qn(r.project.configuration,e)} isn't supported by any available resolver`);return o}tryResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));return o||null}getResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));if(!o)throw new Error(`${jr(r.project.configuration,e)} isn't supported by any available resolver`);return o}}});var gE,AM=Et(()=>{Pt();bo();gE=class{supports(e){return!!e.reference.startsWith(\"virtual:\")}getLocalPath(e,r){let o=e.reference.indexOf(\"#\");if(o===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(o+1),n=Qs(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let o=e.reference.indexOf(\"#\");if(o===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(o+1),n=Qs(e,a),u=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,u,r)}getLocatorFilename(e){return lE(e)}async ensureVirtualLink(e,r,o){let a=r.packageFs.getRealPath(),n=o.project.configuration.get(\"virtualFolder\"),u=this.getLocatorFilename(e),A=mi.makeVirtualPath(n,u,a),p=new Uu(A,{baseFs:r.packageFs,pathUtils:V});return{...r,packageFs:p}}}});var dE,c1,Tse=Et(()=>{dE=class{static isVirtualDescriptor(e){return!!e.range.startsWith(dE.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(dE.protocol)}supportsDescriptor(e,r){return dE.isVirtualDescriptor(e)}supportsLocator(e,r){return dE.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){throw new Error('Assertion failed: calling \"bindDescriptor\" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling \"getResolutionDependencies\" on a virtual descriptor is unsupported')}async getCandidates(e,r,o){throw new Error('Assertion failed: calling \"getCandidates\" on a virtual descriptor is unsupported')}async getSatisfying(e,r,o,a){throw new Error('Assertion failed: calling \"getSatisfying\" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling \"resolve\" on a virtual locator is unsupported')}},c1=dE;c1.protocol=\"virtual:\"});var mE,fM=Et(()=>{Pt();vd();mE=class{supports(e){return!!e.reference.startsWith(Xn.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let o=this.getWorkspace(e,r).cwd;return{packageFs:new gn(o),prefixPath:Bt.dot,localPath:o}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Xn.protocol.length))}}});function u1(t){return typeof t==\"object\"&&t!==null&&!Array.isArray(t)}function Lse(t){return typeof t>\"u\"?3:u1(t)?0:Array.isArray(t)?1:2}function gM(t,e){return Object.hasOwn(t,e)}function Drt(t){return u1(t)&&gM(t,\"onConflict\")&&typeof t.onConflict==\"string\"}function Prt(t){if(typeof t>\"u\")return{onConflict:\"default\",value:t};if(!Drt(t))return{onConflict:\"default\",value:t};if(gM(t,\"value\"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function Nse(t,e){let r=u1(t)&&gM(t,e)?t[e]:void 0;return Prt(r)}function yE(t,e){return[t,e,Ose]}function dM(t){return Array.isArray(t)?t[2]===Ose:!1}function pM(t,e){if(u1(t)){let r={};for(let o of Object.keys(t))r[o]=pM(t[o],e);return yE(e,r)}return Array.isArray(t)?yE(e,t.map(r=>pM(r,e))):yE(e,t)}function hM(t,e,r,o,a){let n,u=[],A=a,p=0;for(let E=a-1;E>=o;--E){let[I,v]=t[E],{onConflict:x,value:C}=Nse(v,r),R=Lse(C);if(R!==3){if(n??=R,R!==n||x===\"hardReset\"){p=A;break}if(R===2)return yE(I,C);if(u.unshift([I,C]),x===\"reset\"){p=E;break}x===\"extend\"&&E===o&&(o=0),A=E}}if(typeof n>\"u\")return null;let h=u.map(([E])=>E).join(\", \");switch(n){case 1:return yE(h,new Array().concat(...u.map(([E,I])=>I.map(v=>pM(v,E)))));case 0:{let E=Object.assign({},...u.map(([,R])=>R)),I=Object.keys(E),v={},x=t.map(([R,N])=>[R,Nse(N,r).value]),C=vrt(x,([R,N])=>{let U=Lse(N);return U!==0&&U!==3});if(C!==-1){let R=x.slice(C+1);for(let N of I)v[N]=hM(R,e,N,0,R.length)}else for(let R of I)v[R]=hM(x,e,R,p,x.length);return yE(h,v)}default:throw new Error(\"Assertion failed: Non-extendable value type\")}}function Mse(t){return hM(t.map(([e,r])=>[e,{[\".\"]:r}]),[],\".\",0,t.length)}function A1(t){return dM(t)?t[1]:t}function GS(t){let e=dM(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>GS(r));if(u1(e)){let r={};for(let[o,a]of Object.entries(e))r[o]=GS(a);return r}return e}function mM(t){return dM(t)?t[0]:null}var vrt,Ose,Use=Et(()=>{vrt=(t,e,r)=>{let o=[...t];return o.reverse(),o.findIndex(e,r)};Ose=Symbol()});var YS={};Vt(YS,{getDefaultGlobalFolder:()=>EM,getHomeFolder:()=>EE,isFolderInside:()=>CM});function EM(){if(process.platform===\"win32\"){let t=ue.toPortablePath(process.env.LOCALAPPDATA||ue.join((0,yM.homedir)(),\"AppData\",\"Local\"));return V.resolve(t,\"Yarn/Berry\")}if(process.env.XDG_DATA_HOME){let t=ue.toPortablePath(process.env.XDG_DATA_HOME);return V.resolve(t,\"yarn/berry\")}return V.resolve(EE(),\".yarn/berry\")}function EE(){return ue.toPortablePath((0,yM.homedir)()||\"/usr/local/share\")}function CM(t,e){let r=V.relative(e,t);return r&&!r.startsWith(\"..\")&&!V.isAbsolute(r)}var yM,WS=Et(()=>{Pt();yM=ve(\"os\")});var qse=_(CE=>{\"use strict\";var sNt=ve(\"net\"),brt=ve(\"tls\"),wM=ve(\"http\"),_se=ve(\"https\"),xrt=ve(\"events\"),oNt=ve(\"assert\"),krt=ve(\"util\");CE.httpOverHttp=Qrt;CE.httpsOverHttp=Frt;CE.httpOverHttps=Rrt;CE.httpsOverHttps=Trt;function Qrt(t){var e=new Ff(t);return e.request=wM.request,e}function Frt(t){var e=new Ff(t);return e.request=wM.request,e.createSocket=Hse,e.defaultPort=443,e}function Rrt(t){var e=new Ff(t);return e.request=_se.request,e}function Trt(t){var e=new Ff(t);return e.request=_se.request,e.createSocket=Hse,e.defaultPort=443,e}function Ff(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||wM.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on(\"free\",function(o,a,n,u){for(var A=jse(a,n,u),p=0,h=e.requests.length;p<h;++p){var E=e.requests[p];if(E.host===A.host&&E.port===A.port){e.requests.splice(p,1),E.request.onSocket(o);return}}o.destroy(),e.removeSocket(o)})}krt.inherits(Ff,xrt.EventEmitter);Ff.prototype.addRequest=function(e,r,o,a){var n=this,u=IM({request:e},n.options,jse(r,o,a));if(n.sockets.length>=this.maxSockets){n.requests.push(u);return}n.createSocket(u,function(A){A.on(\"free\",p),A.on(\"close\",h),A.on(\"agentRemove\",h),e.onSocket(A);function p(){n.emit(\"free\",A,u)}function h(E){n.removeSocket(A),A.removeListener(\"free\",p),A.removeListener(\"close\",h),A.removeListener(\"agentRemove\",h)}})};Ff.prototype.createSocket=function(e,r){var o=this,a={};o.sockets.push(a);var n=IM({},o.proxyOptions,{method:\"CONNECT\",path:e.host+\":\"+e.port,agent:!1,headers:{host:e.host+\":\"+e.port}});e.localAddress&&(n.localAddress=e.localAddress),n.proxyAuth&&(n.headers=n.headers||{},n.headers[\"Proxy-Authorization\"]=\"Basic \"+new Buffer(n.proxyAuth).toString(\"base64\")),oh(\"making CONNECT request\");var u=o.request(n);u.useChunkedEncodingByDefault=!1,u.once(\"response\",A),u.once(\"upgrade\",p),u.once(\"connect\",h),u.once(\"error\",E),u.end();function A(I){I.upgrade=!0}function p(I,v,x){process.nextTick(function(){h(I,v,x)})}function h(I,v,x){if(u.removeAllListeners(),v.removeAllListeners(),I.statusCode!==200){oh(\"tunneling socket could not be established, statusCode=%d\",I.statusCode),v.destroy();var C=new Error(\"tunneling socket could not be established, statusCode=\"+I.statusCode);C.code=\"ECONNRESET\",e.request.emit(\"error\",C),o.removeSocket(a);return}if(x.length>0){oh(\"got illegal response body from proxy\"),v.destroy();var C=new Error(\"got illegal response body from proxy\");C.code=\"ECONNRESET\",e.request.emit(\"error\",C),o.removeSocket(a);return}return oh(\"tunneling connection has established\"),o.sockets[o.sockets.indexOf(a)]=v,r(v)}function E(I){u.removeAllListeners(),oh(`tunneling socket could not be established, cause=%s\n`,I.message,I.stack);var v=new Error(\"tunneling socket could not be established, cause=\"+I.message);v.code=\"ECONNRESET\",e.request.emit(\"error\",v),o.removeSocket(a)}};Ff.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var o=this.requests.shift();o&&this.createSocket(o,function(a){o.request.onSocket(a)})}};function Hse(t,e){var r=this;Ff.prototype.createSocket.call(r,t,function(o){var a=t.request.getHeader(\"host\"),n=IM({},r.options,{socket:o,servername:a?a.replace(/:.*$/,\"\"):t.host}),u=brt.connect(0,n);r.sockets[r.sockets.indexOf(o)]=u,e(u)})}function jse(t,e,r){return typeof t==\"string\"?{host:t,port:e,localAddress:r}:t}function IM(t){for(var e=1,r=arguments.length;e<r;++e){var o=arguments[e];if(typeof o==\"object\")for(var a=Object.keys(o),n=0,u=a.length;n<u;++n){var A=a[n];o[A]!==void 0&&(t[A]=o[A])}}return t}var oh;process.env.NODE_DEBUG&&/\\btunnel\\b/.test(process.env.NODE_DEBUG)?oh=function(){var t=Array.prototype.slice.call(arguments);typeof t[0]==\"string\"?t[0]=\"TUNNEL: \"+t[0]:t.unshift(\"TUNNEL:\"),console.error.apply(console,t)}:oh=function(){};CE.debug=oh});var Yse=_((lNt,Gse)=>{Gse.exports=qse()});var Tf=_((Rf,KS)=>{\"use strict\";Object.defineProperty(Rf,\"__esModule\",{value:!0});var Wse=[\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"BigInt64Array\",\"BigUint64Array\"];function Lrt(t){return Wse.includes(t)}var Nrt=[\"Function\",\"Generator\",\"AsyncGenerator\",\"GeneratorFunction\",\"AsyncGeneratorFunction\",\"AsyncFunction\",\"Observable\",\"Array\",\"Buffer\",\"Blob\",\"Object\",\"RegExp\",\"Date\",\"Error\",\"Map\",\"Set\",\"WeakMap\",\"WeakSet\",\"ArrayBuffer\",\"SharedArrayBuffer\",\"DataView\",\"Promise\",\"URL\",\"FormData\",\"URLSearchParams\",\"HTMLElement\",...Wse];function Ort(t){return Nrt.includes(t)}var Mrt=[\"null\",\"undefined\",\"string\",\"number\",\"bigint\",\"boolean\",\"symbol\"];function Urt(t){return Mrt.includes(t)}function wE(t){return e=>typeof e===t}var{toString:Kse}=Object.prototype,f1=t=>{let e=Kse.call(t).slice(8,-1);if(/HTML\\w+Element/.test(e)&&Se.domElement(t))return\"HTMLElement\";if(Ort(e))return e},Zn=t=>e=>f1(e)===t;function Se(t){if(t===null)return\"null\";switch(typeof t){case\"undefined\":return\"undefined\";case\"string\":return\"string\";case\"number\":return\"number\";case\"boolean\":return\"boolean\";case\"function\":return\"Function\";case\"bigint\":return\"bigint\";case\"symbol\":return\"symbol\";default:}if(Se.observable(t))return\"Observable\";if(Se.array(t))return\"Array\";if(Se.buffer(t))return\"Buffer\";let e=f1(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError(\"Please don't use object wrappers for primitive types\");return\"Object\"}Se.undefined=wE(\"undefined\");Se.string=wE(\"string\");var _rt=wE(\"number\");Se.number=t=>_rt(t)&&!Se.nan(t);Se.bigint=wE(\"bigint\");Se.function_=wE(\"function\");Se.null_=t=>t===null;Se.class_=t=>Se.function_(t)&&t.toString().startsWith(\"class \");Se.boolean=t=>t===!0||t===!1;Se.symbol=wE(\"symbol\");Se.numericString=t=>Se.string(t)&&!Se.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));Se.array=(t,e)=>Array.isArray(t)?Se.function_(e)?t.every(e):!0:!1;Se.buffer=t=>{var e,r,o,a;return(a=(o=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||o===void 0?void 0:o.call(r,t))!==null&&a!==void 0?a:!1};Se.blob=t=>Zn(\"Blob\")(t);Se.nullOrUndefined=t=>Se.null_(t)||Se.undefined(t);Se.object=t=>!Se.null_(t)&&(typeof t==\"object\"||Se.function_(t));Se.iterable=t=>{var e;return Se.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};Se.asyncIterable=t=>{var e;return Se.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};Se.generator=t=>{var e,r;return Se.iterable(t)&&Se.function_((e=t)===null||e===void 0?void 0:e.next)&&Se.function_((r=t)===null||r===void 0?void 0:r.throw)};Se.asyncGenerator=t=>Se.asyncIterable(t)&&Se.function_(t.next)&&Se.function_(t.throw);Se.nativePromise=t=>Zn(\"Promise\")(t);var Hrt=t=>{var e,r;return Se.function_((e=t)===null||e===void 0?void 0:e.then)&&Se.function_((r=t)===null||r===void 0?void 0:r.catch)};Se.promise=t=>Se.nativePromise(t)||Hrt(t);Se.generatorFunction=Zn(\"GeneratorFunction\");Se.asyncGeneratorFunction=t=>f1(t)===\"AsyncGeneratorFunction\";Se.asyncFunction=t=>f1(t)===\"AsyncFunction\";Se.boundFunction=t=>Se.function_(t)&&!t.hasOwnProperty(\"prototype\");Se.regExp=Zn(\"RegExp\");Se.date=Zn(\"Date\");Se.error=Zn(\"Error\");Se.map=t=>Zn(\"Map\")(t);Se.set=t=>Zn(\"Set\")(t);Se.weakMap=t=>Zn(\"WeakMap\")(t);Se.weakSet=t=>Zn(\"WeakSet\")(t);Se.int8Array=Zn(\"Int8Array\");Se.uint8Array=Zn(\"Uint8Array\");Se.uint8ClampedArray=Zn(\"Uint8ClampedArray\");Se.int16Array=Zn(\"Int16Array\");Se.uint16Array=Zn(\"Uint16Array\");Se.int32Array=Zn(\"Int32Array\");Se.uint32Array=Zn(\"Uint32Array\");Se.float32Array=Zn(\"Float32Array\");Se.float64Array=Zn(\"Float64Array\");Se.bigInt64Array=Zn(\"BigInt64Array\");Se.bigUint64Array=Zn(\"BigUint64Array\");Se.arrayBuffer=Zn(\"ArrayBuffer\");Se.sharedArrayBuffer=Zn(\"SharedArrayBuffer\");Se.dataView=Zn(\"DataView\");Se.enumCase=(t,e)=>Object.values(e).includes(t);Se.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;Se.urlInstance=t=>Zn(\"URL\")(t);Se.urlString=t=>{if(!Se.string(t))return!1;try{return new URL(t),!0}catch{return!1}};Se.truthy=t=>Boolean(t);Se.falsy=t=>!t;Se.nan=t=>Number.isNaN(t);Se.primitive=t=>Se.null_(t)||Urt(typeof t);Se.integer=t=>Number.isInteger(t);Se.safeInteger=t=>Number.isSafeInteger(t);Se.plainObject=t=>{if(Kse.call(t)!==\"[object Object]\")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};Se.typedArray=t=>Lrt(f1(t));var jrt=t=>Se.safeInteger(t)&&t>=0;Se.arrayLike=t=>!Se.nullOrUndefined(t)&&!Se.function_(t)&&jrt(t.length);Se.inRange=(t,e)=>{if(Se.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(Se.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var qrt=1,Grt=[\"innerHTML\",\"ownerDocument\",\"style\",\"attributes\",\"nodeValue\"];Se.domElement=t=>Se.object(t)&&t.nodeType===qrt&&Se.string(t.nodeName)&&!Se.plainObject(t)&&Grt.every(e=>e in t);Se.observable=t=>{var e,r,o,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(o=t)[\"@@observable\"])===null||a===void 0?void 0:a.call(o)):!1};Se.nodeStream=t=>Se.object(t)&&Se.function_(t.pipe)&&!Se.observable(t);Se.infinite=t=>t===1/0||t===-1/0;var Vse=t=>e=>Se.integer(e)&&Math.abs(e%2)===t;Se.evenInteger=Vse(0);Se.oddInteger=Vse(1);Se.emptyArray=t=>Se.array(t)&&t.length===0;Se.nonEmptyArray=t=>Se.array(t)&&t.length>0;Se.emptyString=t=>Se.string(t)&&t.length===0;var Yrt=t=>Se.string(t)&&!/\\S/.test(t);Se.emptyStringOrWhitespace=t=>Se.emptyString(t)||Yrt(t);Se.nonEmptyString=t=>Se.string(t)&&t.length>0;Se.nonEmptyStringAndNotWhitespace=t=>Se.string(t)&&!Se.emptyStringOrWhitespace(t);Se.emptyObject=t=>Se.object(t)&&!Se.map(t)&&!Se.set(t)&&Object.keys(t).length===0;Se.nonEmptyObject=t=>Se.object(t)&&!Se.map(t)&&!Se.set(t)&&Object.keys(t).length>0;Se.emptySet=t=>Se.set(t)&&t.size===0;Se.nonEmptySet=t=>Se.set(t)&&t.size>0;Se.emptyMap=t=>Se.map(t)&&t.size===0;Se.nonEmptyMap=t=>Se.map(t)&&t.size>0;Se.propertyKey=t=>Se.any([Se.string,Se.number,Se.symbol],t);Se.formData=t=>Zn(\"FormData\")(t);Se.urlSearchParams=t=>Zn(\"URLSearchParams\")(t);var Jse=(t,e,r)=>{if(!Se.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError(\"Invalid number of values\");return t.call(r,e)};Se.any=(t,...e)=>(Se.array(t)?t:[t]).some(o=>Jse(Array.prototype.some,o,e));Se.all=(t,...e)=>Jse(Array.prototype.every,t,e);var Mt=(t,e,r,o={})=>{if(!t){let{multipleValues:a}=o,n=a?`received values of types ${[...new Set(r.map(u=>`\\`${Se(u)}\\``))].join(\", \")}`:`received value of type \\`${Se(r)}\\``;throw new TypeError(`Expected value which is \\`${e}\\`, ${n}.`)}};Rf.assert={undefined:t=>Mt(Se.undefined(t),\"undefined\",t),string:t=>Mt(Se.string(t),\"string\",t),number:t=>Mt(Se.number(t),\"number\",t),bigint:t=>Mt(Se.bigint(t),\"bigint\",t),function_:t=>Mt(Se.function_(t),\"Function\",t),null_:t=>Mt(Se.null_(t),\"null\",t),class_:t=>Mt(Se.class_(t),\"Class\",t),boolean:t=>Mt(Se.boolean(t),\"boolean\",t),symbol:t=>Mt(Se.symbol(t),\"symbol\",t),numericString:t=>Mt(Se.numericString(t),\"string with a number\",t),array:(t,e)=>{Mt(Se.array(t),\"Array\",t),e&&t.forEach(e)},buffer:t=>Mt(Se.buffer(t),\"Buffer\",t),blob:t=>Mt(Se.blob(t),\"Blob\",t),nullOrUndefined:t=>Mt(Se.nullOrUndefined(t),\"null or undefined\",t),object:t=>Mt(Se.object(t),\"Object\",t),iterable:t=>Mt(Se.iterable(t),\"Iterable\",t),asyncIterable:t=>Mt(Se.asyncIterable(t),\"AsyncIterable\",t),generator:t=>Mt(Se.generator(t),\"Generator\",t),asyncGenerator:t=>Mt(Se.asyncGenerator(t),\"AsyncGenerator\",t),nativePromise:t=>Mt(Se.nativePromise(t),\"native Promise\",t),promise:t=>Mt(Se.promise(t),\"Promise\",t),generatorFunction:t=>Mt(Se.generatorFunction(t),\"GeneratorFunction\",t),asyncGeneratorFunction:t=>Mt(Se.asyncGeneratorFunction(t),\"AsyncGeneratorFunction\",t),asyncFunction:t=>Mt(Se.asyncFunction(t),\"AsyncFunction\",t),boundFunction:t=>Mt(Se.boundFunction(t),\"Function\",t),regExp:t=>Mt(Se.regExp(t),\"RegExp\",t),date:t=>Mt(Se.date(t),\"Date\",t),error:t=>Mt(Se.error(t),\"Error\",t),map:t=>Mt(Se.map(t),\"Map\",t),set:t=>Mt(Se.set(t),\"Set\",t),weakMap:t=>Mt(Se.weakMap(t),\"WeakMap\",t),weakSet:t=>Mt(Se.weakSet(t),\"WeakSet\",t),int8Array:t=>Mt(Se.int8Array(t),\"Int8Array\",t),uint8Array:t=>Mt(Se.uint8Array(t),\"Uint8Array\",t),uint8ClampedArray:t=>Mt(Se.uint8ClampedArray(t),\"Uint8ClampedArray\",t),int16Array:t=>Mt(Se.int16Array(t),\"Int16Array\",t),uint16Array:t=>Mt(Se.uint16Array(t),\"Uint16Array\",t),int32Array:t=>Mt(Se.int32Array(t),\"Int32Array\",t),uint32Array:t=>Mt(Se.uint32Array(t),\"Uint32Array\",t),float32Array:t=>Mt(Se.float32Array(t),\"Float32Array\",t),float64Array:t=>Mt(Se.float64Array(t),\"Float64Array\",t),bigInt64Array:t=>Mt(Se.bigInt64Array(t),\"BigInt64Array\",t),bigUint64Array:t=>Mt(Se.bigUint64Array(t),\"BigUint64Array\",t),arrayBuffer:t=>Mt(Se.arrayBuffer(t),\"ArrayBuffer\",t),sharedArrayBuffer:t=>Mt(Se.sharedArrayBuffer(t),\"SharedArrayBuffer\",t),dataView:t=>Mt(Se.dataView(t),\"DataView\",t),enumCase:(t,e)=>Mt(Se.enumCase(t,e),\"EnumCase\",t),urlInstance:t=>Mt(Se.urlInstance(t),\"URL\",t),urlString:t=>Mt(Se.urlString(t),\"string with a URL\",t),truthy:t=>Mt(Se.truthy(t),\"truthy\",t),falsy:t=>Mt(Se.falsy(t),\"falsy\",t),nan:t=>Mt(Se.nan(t),\"NaN\",t),primitive:t=>Mt(Se.primitive(t),\"primitive\",t),integer:t=>Mt(Se.integer(t),\"integer\",t),safeInteger:t=>Mt(Se.safeInteger(t),\"integer\",t),plainObject:t=>Mt(Se.plainObject(t),\"plain object\",t),typedArray:t=>Mt(Se.typedArray(t),\"TypedArray\",t),arrayLike:t=>Mt(Se.arrayLike(t),\"array-like\",t),domElement:t=>Mt(Se.domElement(t),\"HTMLElement\",t),observable:t=>Mt(Se.observable(t),\"Observable\",t),nodeStream:t=>Mt(Se.nodeStream(t),\"Node.js Stream\",t),infinite:t=>Mt(Se.infinite(t),\"infinite number\",t),emptyArray:t=>Mt(Se.emptyArray(t),\"empty array\",t),nonEmptyArray:t=>Mt(Se.nonEmptyArray(t),\"non-empty array\",t),emptyString:t=>Mt(Se.emptyString(t),\"empty string\",t),emptyStringOrWhitespace:t=>Mt(Se.emptyStringOrWhitespace(t),\"empty string or whitespace\",t),nonEmptyString:t=>Mt(Se.nonEmptyString(t),\"non-empty string\",t),nonEmptyStringAndNotWhitespace:t=>Mt(Se.nonEmptyStringAndNotWhitespace(t),\"non-empty string and not whitespace\",t),emptyObject:t=>Mt(Se.emptyObject(t),\"empty object\",t),nonEmptyObject:t=>Mt(Se.nonEmptyObject(t),\"non-empty object\",t),emptySet:t=>Mt(Se.emptySet(t),\"empty set\",t),nonEmptySet:t=>Mt(Se.nonEmptySet(t),\"non-empty set\",t),emptyMap:t=>Mt(Se.emptyMap(t),\"empty map\",t),nonEmptyMap:t=>Mt(Se.nonEmptyMap(t),\"non-empty map\",t),propertyKey:t=>Mt(Se.propertyKey(t),\"PropertyKey\",t),formData:t=>Mt(Se.formData(t),\"FormData\",t),urlSearchParams:t=>Mt(Se.urlSearchParams(t),\"URLSearchParams\",t),evenInteger:t=>Mt(Se.evenInteger(t),\"even integer\",t),oddInteger:t=>Mt(Se.oddInteger(t),\"odd integer\",t),directInstanceOf:(t,e)=>Mt(Se.directInstanceOf(t,e),\"T\",t),inRange:(t,e)=>Mt(Se.inRange(t,e),\"in range\",t),any:(t,...e)=>Mt(Se.any(t,...e),\"predicate returns truthy for any value\",e,{multipleValues:!0}),all:(t,...e)=>Mt(Se.all(t,...e),\"predicate returns truthy for all values\",e,{multipleValues:!0})};Object.defineProperties(Se,{class:{value:Se.class_},function:{value:Se.function_},null:{value:Se.null_}});Object.defineProperties(Rf.assert,{class:{value:Rf.assert.class_},function:{value:Rf.assert.function_},null:{value:Rf.assert.null_}});Rf.default=Se;KS.exports=Se;KS.exports.default=Se;KS.exports.assert=Rf.assert});var zse=_((cNt,BM)=>{\"use strict\";var VS=class extends Error{constructor(e){super(e||\"Promise was canceled\"),this.name=\"CancelError\"}get isCanceled(){return!0}},IE=class{static fn(e){return(...r)=>new IE((o,a,n)=>{r.push(n),e(...r).then(o,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,o)=>{this._reject=o;let a=A=>{this._isPending=!1,r(A)},n=A=>{this._isPending=!1,o(A)},u=A=>{if(!this._isPending)throw new Error(\"The `onCancel` handler was attached after the promise settled.\");this._cancelHandlers.push(A)};return Object.defineProperties(u,{shouldReject:{get:()=>this._rejectOnCancel,set:A=>{this._rejectOnCancel=A}}}),e(a,n,u)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new VS(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(IE.prototype,Promise.prototype);BM.exports=IE;BM.exports.CancelError=VS});var Xse=_((DM,PM)=>{\"use strict\";Object.defineProperty(DM,\"__esModule\",{value:!0});function Wrt(t){return t.encrypted}var vM=(t,e)=>{let r;typeof e==\"function\"?r={connect:e}:r=e;let o=typeof r.connect==\"function\",a=typeof r.secureConnect==\"function\",n=typeof r.close==\"function\",u=()=>{o&&r.connect(),Wrt(t)&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once(\"secureConnect\",r.secureConnect)),n&&t.once(\"close\",r.close)};t.writable&&!t.connecting?u():t.connecting?t.once(\"connect\",u):t.destroyed&&n&&r.close(t._hadError)};DM.default=vM;PM.exports=vM;PM.exports.default=vM});var Zse=_((bM,xM)=>{\"use strict\";Object.defineProperty(bM,\"__esModule\",{value:!0});var Krt=Xse(),Vrt=Number(process.versions.node.split(\".\")[0]),SM=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=u=>{let A=u.emit.bind(u);u.emit=(p,...h)=>(p===\"error\"&&(e.error=Date.now(),e.phases.total=e.error-e.start,u.emit=A),A(p,...h))};r(t),t.prependOnceListener(\"abort\",()=>{e.abort=Date.now(),(!e.response||Vrt>=13)&&(e.phases.total=Date.now()-e.start)});let o=u=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let A=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};u.prependOnceListener(\"lookup\",A),Krt.default(u,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(u.removeListener(\"lookup\",A),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?o(t.socket):t.prependOnceListener(\"socket\",o);let a=()=>{var u;e.upload=Date.now(),e.phases.request=e.upload-(u=e.secureConnect,u??e.connect)};return(()=>typeof t.writableFinished==\"boolean\"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?a():t.prependOnceListener(\"finish\",a),t.prependOnceListener(\"response\",u=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,u.timings=e,r(u),u.prependOnceListener(\"end\",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};bM.default=SM;xM.exports=SM;xM.exports.default=SM});var soe=_((uNt,FM)=>{\"use strict\";var{V4MAPPED:Jrt,ADDRCONFIG:zrt,ALL:ioe,promises:{Resolver:$se},lookup:Xrt}=ve(\"dns\"),{promisify:kM}=ve(\"util\"),Zrt=ve(\"os\"),BE=Symbol(\"cacheableLookupCreateConnection\"),QM=Symbol(\"cacheableLookupInstance\"),eoe=Symbol(\"expires\"),$rt=typeof ioe==\"number\",toe=t=>{if(!(t&&typeof t.createConnection==\"function\"))throw new Error(\"Expected an Agent instance as the first argument\")},ent=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},roe=()=>{let t=!1,e=!1;for(let r of Object.values(Zrt.networkInterfaces()))for(let o of r)if(!o.internal&&(o.family===\"IPv6\"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},tnt=t=>Symbol.iterator in t,noe={ttl:!0},rnt={all:!0},JS=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:o=3600,errorTtl:a=.15,resolver:n=new $se,lookup:u=Xrt}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=kM(u),this._resolver instanceof $se?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=kM(this._resolver.resolve4.bind(this._resolver)),this._resolve6=kM(this._resolver.resolve6.bind(this._resolver))),this._iface=roe(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,o<1)this._fallback=!1;else{this._fallback=!0;let A=setInterval(()=>{this._hostnamesToFallback.clear()},o*1e3);A.unref&&A.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,o){if(typeof r==\"function\"?(o=r,r={}):typeof r==\"number\"&&(r={family:r}),!o)throw new Error(\"Callback must be a function.\");this.lookupAsync(e,r).then(a=>{r.all?o(null,a):o(null,a.address,a.family,a.expires,a.ttl)},o)}async lookupAsync(e,r={}){typeof r==\"number\"&&(r={family:r});let o=await this.query(e);if(r.family===6){let a=o.filter(n=>n.family===6);r.hints&Jrt&&($rt&&r.hints&ioe||a.length===0)?ent(o):o=a}else r.family===4&&(o=o.filter(a=>a.family===4));if(r.hints&zrt){let{_iface:a}=this;o=o.filter(n=>n.family===6?a.has6:a.has4)}if(o.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code=\"ENOTFOUND\",a.hostname=e,a}return r.all?o:o[0]}async query(e){let r=await this._cache.get(e);if(!r){let o=this._pending[e];if(o)r=await o;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(o=>({...o})),r}async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code===\"ENODATA\"||E.code===\"ENOTFOUND\")return[];throw E}},[o,a]=await Promise.all([this._resolve4(e,noe),this._resolve6(e,noe)].map(h=>r(h))),n=0,u=0,A=0,p=Date.now();for(let h of o)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,u=Math.max(u,h.ttl);return o.length>0?a.length>0?A=Math.min(n,u):A=n:A=u,{entries:[...o,...a],cacheTtl:A}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,o){if(this.maxTtl>0&&o>0){o=Math.min(o,this.maxTtl)*1e3,r[eoe]=Date.now()+o;try{await this._cache.set(e,r,o)}catch(a){this.lookupAsync=async()=>{let n=new Error(\"Cache Error. Please recreate the CacheableLookup instance.\");throw n.cause=a,n}}tnt(this._cache)&&this._tick(o)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,rnt);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let o=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,o),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e<r)&&(clearTimeout(this._removalTimeout),this._nextRemovalTime=e,this._removalTimeout=setTimeout(()=>{this._nextRemovalTime=!1;let o=1/0,a=Date.now();for(let[n,u]of this._cache){let A=u[eoe];a>=A?this._cache.delete(n):A<o&&(o=A)}o!==1/0&&this._tick(o-a)},e),this._removalTimeout.unref&&this._removalTimeout.unref())}install(e){if(toe(e),BE in e)throw new Error(\"CacheableLookup has been already installed\");e[BE]=e.createConnection,e[QM]=this,e.createConnection=(r,o)=>(\"lookup\"in r||(r.lookup=this.lookup),e[BE](r,o))}uninstall(e){if(toe(e),e[BE]){if(e[QM]!==this)throw new Error(\"The agent is not owned by this CacheableLookup instance\");e.createConnection=e[BE],delete e[BE],delete e[QM]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=roe(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};FM.exports=JS;FM.exports.default=JS});var loe=_((ANt,RM)=>{\"use strict\";var nnt=typeof URL>\"u\"?ve(\"url\").URL:URL,int=\"text/plain\",snt=\"us-ascii\",ooe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),ont=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let o=r[1].split(\";\"),a=r[2],n=e?\"\":r[3],u=!1;o[o.length-1]===\"base64\"&&(o.pop(),u=!0);let A=(o.shift()||\"\").toLowerCase(),h=[...o.map(E=>{let[I,v=\"\"]=E.split(\"=\").map(x=>x.trim());return I===\"charset\"&&(v=v.toLowerCase(),v===snt)?\"\":`${I}${v?`=${v}`:\"\"}`}).filter(Boolean)];return u&&h.push(\"base64\"),(h.length!==0||A&&A!==int)&&h.unshift(A),`data:${h.join(\";\")},${u?a.trim():a}${n?`#${n}`:\"\"}`},aoe=(t,e)=>{if(e={defaultProtocol:\"http:\",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,\"normalizeHttps\"))throw new Error(\"options.normalizeHttps is renamed to options.forceHttp\");if(Reflect.has(e,\"normalizeHttp\"))throw new Error(\"options.normalizeHttp is renamed to options.forceHttps\");if(Reflect.has(e,\"stripFragment\"))throw new Error(\"options.stripFragment is renamed to options.stripHash\");if(t=t.trim(),/^data:/i.test(t))return ont(t,e);let r=t.startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,e.defaultProtocol));let a=new nnt(t);if(e.forceHttp&&e.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(e.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),e.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),e.stripAuthentication&&(a.username=\"\",a.password=\"\"),e.stripHash&&(a.hash=\"\"),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\\/{2,}/g,(n,u)=>/^(?!\\/)/g.test(u)?`${u}/`:\"/\")),a.pathname&&(a.pathname=decodeURI(a.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let n=a.pathname.split(\"/\"),u=n[n.length-1];ooe(u,e.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.([a-z\\-\\d]{2,63})\\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(let n of[...a.searchParams.keys()])ooe(n,e.removeQueryParameters)&&a.searchParams.delete(n);return e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\\/$/,\"\")),t=a.toString(),(e.removeTrailingSlash||a.pathname===\"/\")&&a.hash===\"\"&&(t=t.replace(/\\/$/,\"\")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\\/\\//,\"//\")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\\/\\//,\"\")),t};RM.exports=aoe;RM.exports.default=aoe});var Aoe=_((fNt,uoe)=>{uoe.exports=coe;function coe(t,e){if(t&&e)return coe(t)(e);if(typeof t!=\"function\")throw new TypeError(\"need wrapper function\");return Object.keys(t).forEach(function(o){r[o]=t[o]}),r;function r(){for(var o=new Array(arguments.length),a=0;a<o.length;a++)o[a]=arguments[a];var n=t.apply(this,o),u=o[o.length-1];return typeof n==\"function\"&&n!==u&&Object.keys(u).forEach(function(A){n[A]=u[A]}),n}}});var LM=_((pNt,TM)=>{var foe=Aoe();TM.exports=foe(zS);TM.exports.strict=foe(poe);zS.proto=zS(function(){Object.defineProperty(Function.prototype,\"once\",{value:function(){return zS(this)},configurable:!0}),Object.defineProperty(Function.prototype,\"onceStrict\",{value:function(){return poe(this)},configurable:!0})});function zS(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function poe(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||\"Function wrapped with `once`\";return e.onceError=r+\" shouldn't be called more than once\",e.called=!1,e}});var NM=_((hNt,goe)=>{var ant=LM(),lnt=function(){},cnt=function(t){return t.setHeader&&typeof t.abort==\"function\"},unt=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},hoe=function(t,e,r){if(typeof e==\"function\")return hoe(t,null,e);e||(e={}),r=ant(r||lnt);var o=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,u=e.writable||e.writable!==!1&&t.writable,A=function(){t.writable||p()},p=function(){u=!1,n||r.call(t)},h=function(){n=!1,u||r.call(t)},E=function(C){r.call(t,C?new Error(\"exited with error code: \"+C):null)},I=function(C){r.call(t,C)},v=function(){if(n&&!(a&&a.ended))return r.call(t,new Error(\"premature close\"));if(u&&!(o&&o.ended))return r.call(t,new Error(\"premature close\"))},x=function(){t.req.on(\"finish\",p)};return cnt(t)?(t.on(\"complete\",p),t.on(\"abort\",v),t.req?x():t.on(\"request\",x)):u&&!o&&(t.on(\"end\",A),t.on(\"close\",A)),unt(t)&&t.on(\"exit\",E),t.on(\"end\",h),t.on(\"finish\",p),e.error!==!1&&t.on(\"error\",I),t.on(\"close\",v),function(){t.removeListener(\"complete\",p),t.removeListener(\"abort\",v),t.removeListener(\"request\",x),t.req&&t.req.removeListener(\"finish\",p),t.removeListener(\"end\",A),t.removeListener(\"close\",A),t.removeListener(\"finish\",p),t.removeListener(\"exit\",E),t.removeListener(\"end\",h),t.removeListener(\"error\",I),t.removeListener(\"close\",v)}};goe.exports=hoe});var yoe=_((gNt,moe)=>{var Ant=LM(),fnt=NM(),OM=ve(\"fs\"),p1=function(){},pnt=/^v?\\.0/.test(process.version),XS=function(t){return typeof t==\"function\"},hnt=function(t){return!pnt||!OM?!1:(t instanceof(OM.ReadStream||p1)||t instanceof(OM.WriteStream||p1))&&XS(t.close)},gnt=function(t){return t.setHeader&&XS(t.abort)},dnt=function(t,e,r,o){o=Ant(o);var a=!1;t.on(\"close\",function(){a=!0}),fnt(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,hnt(t))return t.close(p1);if(gnt(t))return t.abort();if(XS(t.destroy))return t.destroy();o(u||new Error(\"stream was destroyed\"))}}},doe=function(t){t()},mnt=function(t,e){return t.pipe(e)},ynt=function(){var t=Array.prototype.slice.call(arguments),e=XS(t[t.length-1]||p1)&&t.pop()||p1;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error(\"pump requires two streams per minimum\");var r,o=t.map(function(a,n){var u=n<t.length-1,A=n>0;return dnt(a,u,A,function(p){r||(r=p),p&&o.forEach(doe),!u&&(o.forEach(doe),e(r))})});return t.reduce(mnt)};moe.exports=ynt});var Coe=_((dNt,Eoe)=>{\"use strict\";var{PassThrough:Ent}=ve(\"stream\");Eoe.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,o=r===\"buffer\",a=!1;e?a=!(r||o):r=r||\"utf8\",o&&(r=null);let n=new Ent({objectMode:a});r&&n.setEncoding(r);let u=0,A=[];return n.on(\"data\",p=>{A.push(p),a?u=A.length:u+=p.length}),n.getBufferedValue=()=>e?A:o?Buffer.concat(A,u):A.join(\"\"),n.getBufferedLength=()=>u,n}});var woe=_((mNt,vE)=>{\"use strict\";var Cnt=yoe(),wnt=Coe(),ZS=class extends Error{constructor(){super(\"maxBuffer exceeded\"),this.name=\"MaxBufferError\"}};async function $S(t,e){if(!t)return Promise.reject(new Error(\"Expected a stream\"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,o;return await new Promise((a,n)=>{let u=A=>{A&&(A.bufferedData=o.getBufferedValue()),n(A)};o=Cnt(t,wnt(e),A=>{if(A){u(A);return}a()}),o.on(\"data\",()=>{o.getBufferedLength()>r&&u(new ZS)})}),o.getBufferedValue()}vE.exports=$S;vE.exports.default=$S;vE.exports.buffer=(t,e)=>$S(t,{...e,encoding:\"buffer\"});vE.exports.array=(t,e)=>$S(t,{...e,array:!0});vE.exports.MaxBufferError=ZS});var Boe=_((ENt,Ioe)=>{\"use strict\";var Int=new Set([200,203,204,206,300,301,308,404,405,410,414,501]),Bnt=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),vnt=new Set([500,502,503,504]),Dnt={date:!0,connection:!0,\"keep-alive\":!0,\"proxy-authenticate\":!0,\"proxy-authorization\":!0,te:!0,trailer:!0,\"transfer-encoding\":!0,upgrade:!0},Pnt={\"content-length\":!0,\"content-encoding\":!0,\"transfer-encoding\":!0,\"content-range\":!0};function Pd(t){let e=parseInt(t,10);return isFinite(e)?e:0}function Snt(t){return t?vnt.has(t.status):!0}function MM(t){let e={};if(!t)return e;let r=t.trim().split(/,/);for(let o of r){let[a,n]=o.split(/=/,2);e[a.trim()]=n===void 0?!0:n.trim().replace(/^\"|\"$/g,\"\")}return e}function bnt(t){let e=[];for(let r in t){let o=t[r];e.push(o===!0?r:r+\"=\"+o)}if(!!e.length)return e.join(\", \")}Ioe.exports=class{constructor(e,r,{shared:o,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:u,_fromObject:A}={}){if(A){this._fromObject(A);return}if(!r||!r.headers)throw Error(\"Response headers missing\");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=o!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status=\"status\"in r?r.status:200,this._resHeaders=r.headers,this._rescc=MM(r.headers[\"cache-control\"]),this._method=\"method\"in e?e.method:\"GET\",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=MM(e.headers[\"cache-control\"]),u&&\"pre-check\"in this._rescc&&\"post-check\"in this._rescc&&(delete this._rescc[\"pre-check\"],delete this._rescc[\"post-check\"],delete this._rescc[\"no-cache\"],delete this._rescc[\"no-store\"],delete this._rescc[\"must-revalidate\"],this._resHeaders=Object.assign({},this._resHeaders,{\"cache-control\":bnt(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers[\"cache-control\"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc[\"no-cache\"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc[\"no-store\"]&&(this._method===\"GET\"||this._method===\"HEAD\"||this._method===\"POST\"&&this._hasExplicitExpiration())&&Bnt.has(this._status)&&!this._rescc[\"no-store\"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc[\"max-age\"]||this._isShared&&this._rescc[\"s-maxage\"]||this._rescc.public||Int.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc[\"s-maxage\"]||this._rescc[\"max-age\"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error(\"Request headers missing\")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=MM(e.headers[\"cache-control\"]);return r[\"no-cache\"]||/no-cache/.test(e.headers.pragma)||r[\"max-age\"]&&this.age()>r[\"max-age\"]||r[\"min-fresh\"]&&this.timeToLive()<1e3*r[\"min-fresh\"]||this.stale()&&!(r[\"max-stale\"]&&!this._rescc[\"must-revalidate\"]&&(r[\"max-stale\"]===!0||r[\"max-stale\"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method===\"HEAD\")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc[\"must-revalidate\"]||this._rescc.public||this._rescc[\"s-maxage\"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary===\"*\")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\\s*,\\s*/);for(let o of r)if(e.headers[o]!==this._reqHeaders[o])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let o in e)Dnt[o]||(r[o]=e[o]);if(e.connection){let o=e.connection.trim().split(/\\s*,\\s*/);for(let a of o)delete r[a]}if(r.warning){let o=r.warning.split(/,/).filter(a=>!/^\\s*1[0-9][0-9]/.test(a));o.length?r.warning=o.join(\",\").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:\"\")+'113 - \"rfc7234 5.5.4\"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){return Pd(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc[\"no-cache\"]||this._isShared&&this._resHeaders[\"set-cookie\"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary===\"*\")return 0;if(this._isShared){if(this._rescc[\"proxy-revalidate\"])return 0;if(this._rescc[\"s-maxage\"])return Pd(this._rescc[\"s-maxage\"])}if(this._rescc[\"max-age\"])return Pd(this._rescc[\"max-age\"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let o=Date.parse(this._resHeaders.expires);return Number.isNaN(o)||o<r?0:Math.max(e,(o-r)/1e3)}if(this._resHeaders[\"last-modified\"]){let o=Date.parse(this._resHeaders[\"last-modified\"]);if(isFinite(o)&&r>o)return Math.max(e,(r-o)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+Pd(this._rescc[\"stale-if-error\"]),o=e+Pd(this._rescc[\"stale-while-revalidate\"]);return Math.max(0,e,r,o)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+Pd(this._rescc[\"stale-if-error\"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+Pd(this._rescc[\"stale-while-revalidate\"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error(\"Reinitialized\");if(!e||e.v!==1)throw Error(\"Invalid serialization\");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r[\"if-range\"],!this._requestMatches(e,!0)||!this.storable())return delete r[\"if-none-match\"],delete r[\"if-modified-since\"],r;if(this._resHeaders.etag&&(r[\"if-none-match\"]=r[\"if-none-match\"]?`${r[\"if-none-match\"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r[\"accept-ranges\"]||r[\"if-match\"]||r[\"if-unmodified-since\"]||this._method&&this._method!=\"GET\"){if(delete r[\"if-modified-since\"],r[\"if-none-match\"]){let a=r[\"if-none-match\"].split(/,/).filter(n=>!/^\\s*W\\//.test(n));a.length?r[\"if-none-match\"]=a.join(\",\").trim():delete r[\"if-none-match\"]}}else this._resHeaders[\"last-modified\"]&&!r[\"if-modified-since\"]&&(r[\"if-modified-since\"]=this._resHeaders[\"last-modified\"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&Snt(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error(\"Response headers missing\");let o=!1;if(r.status!==void 0&&r.status!=304?o=!1:r.headers.etag&&!/^\\s*W\\//.test(r.headers.etag)?o=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?o=this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag.replace(/^\\s*W\\//,\"\"):this._resHeaders[\"last-modified\"]?o=this._resHeaders[\"last-modified\"]===r.headers[\"last-modified\"]:!this._resHeaders.etag&&!this._resHeaders[\"last-modified\"]&&!r.headers.etag&&!r.headers[\"last-modified\"]&&(o=!0),!o)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let u in this._resHeaders)a[u]=u in r.headers&&!Pnt[u]?r.headers[u]:this._resHeaders[u];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var eb=_((CNt,voe)=>{\"use strict\";voe.exports=t=>{let e={};for(let[r,o]of Object.entries(t))e[r.toLowerCase()]=o;return e}});var Poe=_((wNt,Doe)=>{\"use strict\";var xnt=ve(\"stream\").Readable,knt=eb(),UM=class extends xnt{constructor(e,r,o,a){if(typeof e!=\"number\")throw new TypeError(\"Argument `statusCode` should be a number\");if(typeof r!=\"object\")throw new TypeError(\"Argument `headers` should be an object\");if(!(o instanceof Buffer))throw new TypeError(\"Argument `body` should be a buffer\");if(typeof a!=\"string\")throw new TypeError(\"Argument `url` should be a string\");super(),this.statusCode=e,this.headers=knt(r),this.body=o,this.url=a}_read(){this.push(this.body),this.push(null)}};Doe.exports=UM});var boe=_((INt,Soe)=>{\"use strict\";var Qnt=[\"destroy\",\"setTimeout\",\"socket\",\"headers\",\"trailers\",\"rawHeaders\",\"statusCode\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"rawTrailers\",\"statusMessage\"];Soe.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Qnt));for(let o of r)o in e||(e[o]=typeof t[o]==\"function\"?t[o].bind(t):t[o])}});var koe=_((BNt,xoe)=>{\"use strict\";var Fnt=ve(\"stream\").PassThrough,Rnt=boe(),Tnt=t=>{if(!(t&&t.pipe))throw new TypeError(\"Parameter `response` must be a response stream.\");let e=new Fnt;return Rnt(t,e),t.pipe(e)};xoe.exports=Tnt});var Qoe=_(_M=>{_M.stringify=function t(e){if(typeof e>\"u\")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(\":base64:\"+e.toString(\"base64\"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e==\"object\"){var r=\"\",o=Array.isArray(e);r=o?\"[\":\"{\";var a=!0;for(var n in e){var u=typeof e[n]==\"function\"||!o&&typeof e[n]>\"u\";Object.hasOwnProperty.call(e,n)&&!u&&(a||(r+=\",\"),a=!1,o?e[n]==null?r+=\"null\":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+\":\"+t(e[n])))}return r+=o?\"]\":\"}\",r}else return typeof e==\"string\"?JSON.stringify(/^:/.test(e)?\":\"+e:e):typeof e>\"u\"?\"null\":JSON.stringify(e)};_M.parse=function(t){return JSON.parse(t,function(e,r){return typeof r==\"string\"?/^:base64:/.test(r)?Buffer.from(r.substring(8),\"base64\"):/^:/.test(r)?r.substring(1):r:r})}});var Loe=_((DNt,Toe)=>{\"use strict\";var Lnt=ve(\"events\"),Foe=Qoe(),Nnt=t=>{let e={redis:\"@keyv/redis\",rediss:\"@keyv/redis\",mongodb:\"@keyv/mongo\",mongo:\"@keyv/mongo\",sqlite:\"@keyv/sqlite\",postgresql:\"@keyv/postgres\",postgres:\"@keyv/postgres\",mysql:\"@keyv/mysql\",etcd:\"@keyv/etcd\",offline:\"@keyv/offline\",tiered:\"@keyv/tiered\"};if(t.adapter||t.uri){let r=t.adapter||/^[^:+]*/.exec(t.uri)[0];return new(ve(e[r]))(t)}return new Map},Roe=[\"sqlite\",\"postgres\",\"mysql\",\"mongo\",\"redis\",\"tiered\"],HM=class extends Lnt{constructor(e,{emitErrors:r=!0,...o}={}){if(super(),this.opts={namespace:\"keyv\",serialize:Foe.stringify,deserialize:Foe.parse,...typeof e==\"string\"?{uri:e}:e,...o},!this.opts.store){let n={...this.opts};this.opts.store=Nnt(n)}if(this.opts.compression){let n=this.opts.compression;this.opts.serialize=n.serialize.bind(n),this.opts.deserialize=n.deserialize.bind(n)}typeof this.opts.store.on==\"function\"&&r&&this.opts.store.on(\"error\",n=>this.emit(\"error\",n)),this.opts.store.namespace=this.opts.namespace;let a=n=>async function*(){for await(let[u,A]of typeof n==\"function\"?n(this.opts.store.namespace):n){let p=await this.opts.deserialize(A);if(!(this.opts.store.namespace&&!u.includes(this.opts.store.namespace))){if(typeof p.expires==\"number\"&&Date.now()>p.expires){this.delete(u);continue}yield[this._getKeyUnprefix(u),p.value]}}};typeof this.opts.store[Symbol.iterator]==\"function\"&&this.opts.store instanceof Map?this.iterator=a(this.opts.store):typeof this.opts.store.iterator==\"function\"&&this.opts.store.opts&&this._checkIterableAdaptar()&&(this.iterator=a(this.opts.store.iterator.bind(this.opts.store)))}_checkIterableAdaptar(){return Roe.includes(this.opts.store.opts.dialect)||Roe.findIndex(e=>this.opts.store.opts.url.includes(e))>=0}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}_getKeyPrefixArray(e){return e.map(r=>`${this.opts.namespace}:${r}`)}_getKeyUnprefix(e){return e.split(\":\").splice(1).join(\":\")}get(e,r){let{store:o}=this.opts,a=Array.isArray(e),n=a?this._getKeyPrefixArray(e):this._getKeyPrefix(e);if(a&&o.getMany===void 0){let u=[];for(let A of n)u.push(Promise.resolve().then(()=>o.get(A)).then(p=>typeof p==\"string\"?this.opts.deserialize(p):this.opts.compression?this.opts.deserialize(p):p).then(p=>{if(p!=null)return typeof p.expires==\"number\"&&Date.now()>p.expires?this.delete(A).then(()=>{}):r&&r.raw?p:p.value}));return Promise.allSettled(u).then(A=>{let p=[];for(let h of A)p.push(h.value);return p})}return Promise.resolve().then(()=>a?o.getMany(n):o.get(n)).then(u=>typeof u==\"string\"?this.opts.deserialize(u):this.opts.compression?this.opts.deserialize(u):u).then(u=>{if(u!=null)return a?u.map((A,p)=>{if(typeof A==\"string\"&&(A=this.opts.deserialize(A)),A!=null){if(typeof A.expires==\"number\"&&Date.now()>A.expires){this.delete(e[p]).then(()=>{});return}return r&&r.raw?A:A.value}}):typeof u.expires==\"number\"&&Date.now()>u.expires?this.delete(e).then(()=>{}):r&&r.raw?u:u.value})}set(e,r,o){let a=this._getKeyPrefix(e);typeof o>\"u\"&&(o=this.opts.ttl),o===0&&(o=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let u=typeof o==\"number\"?Date.now()+o:null;return typeof r==\"symbol\"&&this.emit(\"error\",\"symbol cannot be serialized\"),r={value:r,expires:u},this.opts.serialize(r)}).then(u=>n.set(a,u,o)).then(()=>!0)}delete(e){let{store:r}=this.opts;if(Array.isArray(e)){let a=this._getKeyPrefixArray(e);if(r.deleteMany===void 0){let n=[];for(let u of a)n.push(r.delete(u));return Promise.allSettled(n).then(u=>u.every(A=>A.value===!0))}return Promise.resolve().then(()=>r.deleteMany(a))}let o=this._getKeyPrefix(e);return Promise.resolve().then(()=>r.delete(o))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}has(e){let r=this._getKeyPrefix(e),{store:o}=this.opts;return Promise.resolve().then(async()=>typeof o.has==\"function\"?o.has(r):await o.get(r)!==void 0)}disconnect(){let{store:e}=this.opts;if(typeof e.disconnect==\"function\")return e.disconnect()}};Toe.exports=HM});var Moe=_((SNt,Ooe)=>{\"use strict\";var Ont=ve(\"events\"),tb=ve(\"url\"),Mnt=loe(),Unt=woe(),jM=Boe(),Noe=Poe(),_nt=eb(),Hnt=koe(),jnt=Loe(),jc=class{constructor(e,r){if(typeof e!=\"function\")throw new TypeError(\"Parameter `request` must be a function\");return this.cache=new jnt({uri:typeof r==\"string\"&&r,store:typeof r!=\"string\"&&r,namespace:\"cacheable-request\"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,o)=>{let a;if(typeof r==\"string\")a=qM(tb.parse(r)),r={};else if(r instanceof tb.URL)a=qM(tb.parse(r.toString())),r={};else{let[I,...v]=(r.path||\"\").split(\"?\"),x=v.length>0?`?${v.join(\"?\")}`:\"\";a=qM({...r,pathname:I,search:x})}r={headers:{},method:\"GET\",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...qnt(a)},r.headers=_nt(r.headers);let n=new Ont,u=Mnt(tb.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),A=`${r.method}:${u}`,p=!1,h=!1,E=I=>{h=!0;let v=!1,x,C=new Promise(N=>{x=()=>{v||(v=!0,N())}}),R=N=>{if(p&&!I.forceRefresh){N.status=N.statusCode;let J=jM.fromObject(p.cachePolicy).revalidatedPolicy(I,N);if(!J.modified){let te=J.policy.responseHeaders();N=new Noe(p.statusCode,te,p.body,p.url),N.cachePolicy=J.policy,N.fromCache=!0}}N.fromCache||(N.cachePolicy=new jM(I,N,I),N.fromCache=!1);let U;I.cache&&N.cachePolicy.storable()?(U=Hnt(N),(async()=>{try{let J=Unt.buffer(N);if(await Promise.race([C,new Promise(ce=>N.once(\"end\",ce))]),v)return;let te=await J,ae={cachePolicy:N.cachePolicy.toObject(),url:N.url,statusCode:N.fromCache?p.statusCode:N.statusCode,body:te},fe=I.strictTtl?N.cachePolicy.timeToLive():void 0;I.maxTtl&&(fe=fe?Math.min(fe,I.maxTtl):I.maxTtl),await this.cache.set(A,ae,fe)}catch(J){n.emit(\"error\",new jc.CacheError(J))}})()):I.cache&&p&&(async()=>{try{await this.cache.delete(A)}catch(J){n.emit(\"error\",new jc.CacheError(J))}})(),n.emit(\"response\",U||N),typeof o==\"function\"&&o(U||N)};try{let N=e(I,R);N.once(\"error\",x),N.once(\"abort\",x),n.emit(\"request\",N)}catch(N){n.emit(\"error\",new jc.RequestError(N))}};return(async()=>{let I=async x=>{await Promise.resolve();let C=x.cache?await this.cache.get(A):void 0;if(typeof C>\"u\")return E(x);let R=jM.fromObject(C.cachePolicy);if(R.satisfiesWithoutRevalidation(x)&&!x.forceRefresh){let N=R.responseHeaders(),U=new Noe(C.statusCode,N,C.body,C.url);U.cachePolicy=R,U.fromCache=!0,n.emit(\"response\",U),typeof o==\"function\"&&o(U)}else p=C,x.headers=R.revalidationHeaders(x),E(x)},v=x=>n.emit(\"error\",new jc.CacheError(x));this.cache.once(\"error\",v),n.on(\"response\",()=>this.cache.removeListener(\"error\",v));try{await I(r)}catch(x){r.automaticFailover&&!h&&E(r),n.emit(\"error\",new jc.CacheError(x))}})(),n}}};function qnt(t){let e={...t};return e.path=`${t.pathname||\"/\"}${t.search||\"\"}`,delete e.pathname,delete e.search,e}function qM(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||\"localhost\",port:t.port,pathname:t.pathname,search:t.search}}jc.RequestError=class extends Error{constructor(t){super(t.message),this.name=\"RequestError\",Object.assign(this,t)}};jc.CacheError=class extends Error{constructor(t){super(t.message),this.name=\"CacheError\",Object.assign(this,t)}};Ooe.exports=jc});var _oe=_((kNt,Uoe)=>{\"use strict\";var Gnt=[\"aborted\",\"complete\",\"headers\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"method\",\"rawHeaders\",\"rawTrailers\",\"setTimeout\",\"socket\",\"statusCode\",\"statusMessage\",\"trailers\",\"url\"];Uoe.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error(\"The second stream must have the `autoDestroy` option set to `false`\");let r=new Set(Object.keys(t).concat(Gnt)),o={};for(let a of r)a in e||(o[a]={get(){let n=t[a];return typeof n==\"function\"?n.bind(t):n},set(n){t[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,o),t.once(\"aborted\",()=>{e.destroy(),e.emit(\"aborted\")}),t.once(\"close\",()=>{t.complete&&e.readable?e.once(\"end\",()=>{e.emit(\"close\")}):e.emit(\"close\")}),e}});var joe=_((QNt,Hoe)=>{\"use strict\";var{Transform:Ynt,PassThrough:Wnt}=ve(\"stream\"),GM=ve(\"zlib\"),Knt=_oe();Hoe.exports=t=>{let e=(t.headers[\"content-encoding\"]||\"\").toLowerCase();if(![\"gzip\",\"deflate\",\"br\"].includes(e))return t;let r=e===\"br\";if(r&&typeof GM.createBrotliDecompress!=\"function\")return t.destroy(new Error(\"Brotli is not supported on Node.js < 12\")),t;let o=!0,a=new Ynt({transform(A,p,h){o=!1,h(null,A)},flush(A){A()}}),n=new Wnt({autoDestroy:!1,destroy(A,p){t.destroy(),p(A)}}),u=r?GM.createBrotliDecompress():GM.createUnzip();return u.once(\"error\",A=>{if(o&&!t.readable){n.end();return}n.destroy(A)}),Knt(t,n),t.pipe(a).pipe(u).pipe(n),n}});var WM=_((FNt,qoe)=>{\"use strict\";var YM=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError(\"`maxSize` must be a number greater than 0\");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction==\"function\")for(let[o,a]of this.oldCache.entries())this.onEviction(o,a);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};qoe.exports=YM});var VM=_((RNt,Koe)=>{\"use strict\";var Vnt=ve(\"events\"),Jnt=ve(\"tls\"),znt=ve(\"http2\"),Xnt=WM(),ea=Symbol(\"currentStreamsCount\"),Goe=Symbol(\"request\"),Wl=Symbol(\"cachedOriginSet\"),DE=Symbol(\"gracefullyClosing\"),Znt=[\"maxDeflateDynamicTableSize\",\"maxSessionMemory\",\"maxHeaderListPairs\",\"maxOutstandingPings\",\"maxReservedRemoteStreams\",\"maxSendHeaderBlockLength\",\"paddingStrategy\",\"localAddress\",\"path\",\"rejectUnauthorized\",\"minDHSize\",\"ca\",\"cert\",\"clientCertEngine\",\"ciphers\",\"key\",\"pfx\",\"servername\",\"minVersion\",\"maxVersion\",\"secureProtocol\",\"crl\",\"honorCipherOrder\",\"ecdhCurve\",\"dhparam\",\"secureOptions\",\"sessionIdContext\"],$nt=(t,e,r)=>{let o=0,a=t.length;for(;o<a;){let n=o+a>>>1;r(t[n],e)?o=n+1:a=n}return o},eit=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,KM=(t,e)=>{for(let r of t)r[Wl].length<e[Wl].length&&r[Wl].every(o=>e[Wl].includes(o))&&r[ea]+e[ea]<=e.remoteSettings.maxConcurrentStreams&&Woe(r)},tit=(t,e)=>{for(let r of t)e[Wl].length<r[Wl].length&&e[Wl].every(o=>r[Wl].includes(o))&&e[ea]+r[ea]<=r.remoteSettings.maxConcurrentStreams&&Woe(e)},Yoe=({agent:t,isFree:e})=>{let r={};for(let o in t.sessions){let n=t.sessions[o].filter(u=>{let A=u[tA.kCurrentStreamsCount]<u.remoteSettings.maxConcurrentStreams;return e?A:!A});n.length!==0&&(r[o]=n)}return r},Woe=t=>{t[DE]=!0,t[ea]===0&&t.close()},tA=class extends Vnt{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:o=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=o,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Xnt({maxSize:a})}static normalizeOrigin(e,r){return typeof e==\"string\"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r=\"\";if(e)for(let o of Znt)e[o]&&(r+=`:${e[o]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let o=this.queue[e][r];this._sessionsCount<this.maxSessions&&!o.completed&&(o.completed=!0,o())}getSession(e,r,o){return new Promise((a,n)=>{Array.isArray(o)?(o=[...o],a()):o=[{resolve:a,reject:n}];let u=this.normalizeOptions(r),A=tA.normalizeOrigin(e,r&&r.servername);if(A===void 0){for(let{reject:E}of o)E(new TypeError(\"The `origin` argument needs to be a string or an URL object\"));return}if(u in this.sessions){let E=this.sessions[u],I=-1,v=-1,x;for(let C of E){let R=C.remoteSettings.maxConcurrentStreams;if(R<I)break;if(C[Wl].includes(A)){let N=C[ea];if(N>=R||C[DE]||C.destroyed)continue;x||(I=R),N>v&&(x=C,v=N)}}if(x){if(o.length!==1){for(let{reject:C}of o){let R=new Error(`Expected the length of listeners to be 1, got ${o.length}.\nPlease report this to https://github.com/szmarczak/http2-wrapper/`);C(R)}return}o[0].resolve(x);return}}if(u in this.queue){if(A in this.queue[u]){this.queue[u][A].listeners.push(...o),this._tryToCreateNewSession(u,A);return}}else this.queue[u]={};let p=()=>{u in this.queue&&this.queue[u][A]===h&&(delete this.queue[u][A],Object.keys(this.queue[u]).length===0&&delete this.queue[u])},h=()=>{let E=`${A}:${u}`,I=!1;try{let v=znt.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});v[ea]=0,v[DE]=!1;let x=()=>v[ea]<v.remoteSettings.maxConcurrentStreams,C=!0;v.socket.once(\"session\",N=>{this.tlsSessionCache.set(E,N)}),v.once(\"error\",N=>{for(let{reject:U}of o)U(N);this.tlsSessionCache.delete(E)}),v.setTimeout(this.timeout,()=>{v.destroy()}),v.once(\"close\",()=>{if(I){C&&this._freeSessionsCount--,this._sessionsCount--;let N=this.sessions[u];N.splice(N.indexOf(v),1),N.length===0&&delete this.sessions[u]}else{let N=new Error(\"Session closed without receiving a SETTINGS frame\");N.code=\"HTTP2WRAPPER_NOSETTINGS\";for(let{reject:U}of o)U(N);p()}this._tryToCreateNewSession(u,A)});let R=()=>{if(!(!(u in this.queue)||!x())){for(let N of v[Wl])if(N in this.queue[u]){let{listeners:U}=this.queue[u][N];for(;U.length!==0&&x();)U.shift().resolve(v);let J=this.queue[u];if(J[N].listeners.length===0&&(delete J[N],Object.keys(J).length===0)){delete this.queue[u];break}if(!x())break}}};v.on(\"origin\",()=>{v[Wl]=v.originSet,x()&&(R(),KM(this.sessions[u],v))}),v.once(\"remoteSettings\",()=>{if(v.ref(),v.unref(),this._sessionsCount++,h.destroyed){let N=new Error(\"Agent has been destroyed\");for(let U of o)U.reject(N);v.destroy();return}v[Wl]=v.originSet;{let N=this.sessions;if(u in N){let U=N[u];U.splice($nt(U,v,eit),0,v)}else N[u]=[v]}this._freeSessionsCount+=1,I=!0,this.emit(\"session\",v),R(),p(),v[ea]===0&&this._freeSessionsCount>this.maxFreeSessions&&v.close(),o.length!==0&&(this.getSession(A,r,o),o.length=0),v.on(\"remoteSettings\",()=>{R(),KM(this.sessions[u],v)})}),v[Goe]=v.request,v.request=(N,U)=>{if(v[DE])throw new Error(\"The session is gracefully closing. No new streams are allowed.\");let J=v[Goe](N,U);return v.ref(),++v[ea],v[ea]===v.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,J.once(\"close\",()=>{if(C=x(),--v[ea],!v.destroyed&&!v.closed&&(tit(this.sessions[u],v),x()&&!v.closed)){C||(this._freeSessionsCount++,C=!0);let te=v[ea]===0;te&&v.unref(),te&&(this._freeSessionsCount>this.maxFreeSessions||v[DE])?v.close():(KM(this.sessions[u],v),R())}}),J}}catch(v){for(let x of o)x.reject(v);p()}};h.listeners=o,h.completed=!1,h.destroyed=!1,this.queue[u][A]=h,this._tryToCreateNewSession(u,A)})}request(e,r,o,a){return new Promise((n,u)=>{this.getSession(e,r,[{reject:u,resolve:A=>{try{n(A.request(o,a))}catch(p){u(p)}}}])})}createConnection(e,r){return tA.connect(e,r)}static connect(e,r){r.ALPNProtocols=[\"h2\"];let o=e.port||443,a=e.hostname||e.host;return typeof r.servername>\"u\"&&(r.servername=a),Jnt.connect(o,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[ea]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let o of r)o.destroy(e);for(let r of Object.values(this.queue))for(let o of Object.values(r))o.destroyed=!0;this.queue={}}get freeSessions(){return Yoe({agent:this,isFree:!0})}get busySessions(){return Yoe({agent:this,isFree:!1})}};tA.kCurrentStreamsCount=ea;tA.kGracefullyClosing=DE;Koe.exports={Agent:tA,globalAgent:new tA}});var zM=_((TNt,Voe)=>{\"use strict\";var{Readable:rit}=ve(\"stream\"),JM=class extends rit{constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage=\"\",this.httpVersion=\"2.0\",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners(\"data\"),this.resume())}_read(){this.req&&this.req._request.resume()}};Voe.exports=JM});var XM=_((LNt,Joe)=>{\"use strict\";Joe.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname==\"string\"&&t.hostname.startsWith(\"[\")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||\"\"}${t.search||\"\"}`};return typeof t.port==\"string\"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||\"\"}:${t.password||\"\"}`),e}});var Xoe=_((NNt,zoe)=>{\"use strict\";zoe.exports=(t,e,r)=>{for(let o of r)t.on(o,(...a)=>e.emit(o,...a))}});var $oe=_((ONt,Zoe)=>{\"use strict\";Zoe.exports=t=>{switch(t){case\":method\":case\":scheme\":case\":authority\":case\":path\":return!0;default:return!1}}});var tae=_((UNt,eae)=>{\"use strict\";var PE=(t,e,r)=>{eae.exports[e]=class extends t{constructor(...a){super(typeof r==\"string\"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};PE(TypeError,\"ERR_INVALID_ARG_TYPE\",t=>{let e=t[0].includes(\".\")?\"property\":\"argument\",r=t[1],o=Array.isArray(r);return o&&(r=`${r.slice(0,-1).join(\", \")} or ${r.slice(-1)}`),`The \"${t[0]}\" ${e} must be ${o?\"one of\":\"of\"} type ${r}. Received ${typeof t[2]}`});PE(TypeError,\"ERR_INVALID_PROTOCOL\",t=>`Protocol \"${t[0]}\" not supported. Expected \"${t[1]}\"`);PE(Error,\"ERR_HTTP_HEADERS_SENT\",t=>`Cannot ${t[0]} headers after they are sent to the client`);PE(TypeError,\"ERR_INVALID_HTTP_TOKEN\",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);PE(TypeError,\"ERR_HTTP_INVALID_HEADER_VALUE\",t=>`Invalid value \"${t[0]} for header \"${t[1]}\"`);PE(TypeError,\"ERR_INVALID_CHAR\",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var r4=_((_Nt,lae)=>{\"use strict\";var nit=ve(\"http2\"),{Writable:iit}=ve(\"stream\"),{Agent:rae,globalAgent:sit}=VM(),oit=zM(),ait=XM(),lit=Xoe(),cit=$oe(),{ERR_INVALID_ARG_TYPE:ZM,ERR_INVALID_PROTOCOL:uit,ERR_HTTP_HEADERS_SENT:nae,ERR_INVALID_HTTP_TOKEN:Ait,ERR_HTTP_INVALID_HEADER_VALUE:fit,ERR_INVALID_CHAR:pit}=tae(),{HTTP2_HEADER_STATUS:iae,HTTP2_HEADER_METHOD:sae,HTTP2_HEADER_PATH:oae,HTTP2_METHOD_CONNECT:hit}=nit.constants,Qo=Symbol(\"headers\"),$M=Symbol(\"origin\"),e4=Symbol(\"session\"),aae=Symbol(\"options\"),rb=Symbol(\"flushedHeaders\"),h1=Symbol(\"jobs\"),git=/^[\\^`\\-\\w!#$%&*+.|~]+$/,dit=/[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/,t4=class extends iit{constructor(e,r,o){super({autoDestroy:!1});let a=typeof e==\"string\"||e instanceof URL;if(a&&(e=ait(e instanceof URL?e:new URL(e))),typeof r==\"function\"||r===void 0?(o=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[e4]=r.h2session;else if(r.agent===!1)this.agent=new rae({maxFreeSessions:0});else if(typeof r.agent>\"u\"||r.agent===null)typeof r.createConnection==\"function\"?(this.agent=new rae({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=sit;else if(typeof r.agent.request==\"function\")this.agent=r.agent;else throw new ZM(\"options.agent\",[\"Agent-like Object\",\"undefined\",\"false\"],r.agent);if(r.protocol&&r.protocol!==\"https:\")throw new uit(r.protocol,\"https:\");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,u=r.hostname||r.host||\"localhost\";delete r.hostname,delete r.host,delete r.port;let{timeout:A}=r;if(r.timeout=void 0,this[Qo]=Object.create(null),this[h1]=[],this.socket=null,this.connection=null,this.method=r.method||\"GET\",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!(\"authorization\"in this[Qo])&&(this[Qo].authorization=\"Basic \"+Buffer.from(r.auth).toString(\"base64\")),r.session=r.tlsSession,r.path=r.socketPath,this[aae]=r,n===443?(this[$M]=`https://${u}`,\":authority\"in this[Qo]||(this[Qo][\":authority\"]=u)):(this[$M]=`https://${u}:${n}`,\":authority\"in this[Qo]||(this[Qo][\":authority\"]=`${u}:${n}`)),A&&this.setTimeout(A),o&&this.once(\"response\",o),this[rb]=!1}get method(){return this[Qo][sae]}set method(e){e&&(this[Qo][sae]=e.toUpperCase())}get path(){return this[Qo][oae]}set path(e){e&&(this[Qo][oae]=e)}get _mustNotHaveABody(){return this.method===\"GET\"||this.method===\"HEAD\"||this.method===\"DELETE\"}_write(e,r,o){if(this._mustNotHaveABody){o(new Error(\"The GET, HEAD and DELETE methods must NOT have a body\"));return}this.flushHeaders();let a=()=>this._request.write(e,r,o);this._request?a():this[h1].push(a)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[h1].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit(\"abort\")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[rb]||this.destroyed)return;this[rb]=!0;let e=this.method===hit,r=o=>{if(this._request=o,this.destroyed){o.destroy();return}e||lit(o,this,[\"timeout\",\"continue\",\"close\",\"error\"]);let a=u=>(...A)=>{!this.writable&&!this.destroyed?u(...A):this.once(\"finish\",()=>{u(...A)})};o.once(\"response\",a((u,A,p)=>{let h=new oit(this.socket,o.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=u[iae],h.headers=u,h.rawHeaders=p,h.once(\"end\",()=>{this.aborted?(h.aborted=!0,h.emit(\"aborted\")):(h.complete=!0,h.socket=null,h.connection=null)}),e?(h.upgrade=!0,this.emit(\"connect\",h,o,Buffer.alloc(0))?this.emit(\"close\"):o.destroy()):(o.on(\"data\",E=>{!h._dumped&&!h.push(E)&&o.pause()}),o.once(\"end\",()=>{h.push(null)}),this.emit(\"response\",h)||h._dump())})),o.once(\"headers\",a(u=>this.emit(\"information\",{statusCode:u[iae]}))),o.once(\"trailers\",a((u,A,p)=>{let{res:h}=this;h.trailers=u,h.rawTrailers=p}));let{socket:n}=o.session;this.socket=n,this.connection=n;for(let u of this[h1])u();this.emit(\"socket\",this.socket)};if(this[e4])try{r(this[e4].request(this[Qo]))}catch(o){this.emit(\"error\",o)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[$M],this[aae],this[Qo]))}catch(o){this.emit(\"error\",o)}}}getHeader(e){if(typeof e!=\"string\")throw new ZM(\"name\",\"string\",e);return this[Qo][e.toLowerCase()]}get headersSent(){return this[rb]}removeHeader(e){if(typeof e!=\"string\")throw new ZM(\"name\",\"string\",e);if(this.headersSent)throw new nae(\"remove\");delete this[Qo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new nae(\"set\");if(typeof e!=\"string\"||!git.test(e)&&!cit(e))throw new Ait(\"Header name\",e);if(typeof r>\"u\")throw new fit(r,e);if(dit.test(r))throw new pit(\"header content\",e);this[Qo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let o=()=>this._request.setTimeout(e,r);return this._request?o():this[h1].push(o),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};lae.exports=t4});var uae=_((HNt,cae)=>{\"use strict\";var mit=ve(\"tls\");cae.exports=(t={},e=mit.connect)=>new Promise((r,o)=>{let a=!1,n,u=async()=>{await p,n.off(\"timeout\",A),n.off(\"error\",o),t.resolveSocket?(r({alpnProtocol:n.alpnProtocol,socket:n,timeout:a}),a&&(await Promise.resolve(),n.emit(\"timeout\"))):(n.destroy(),r({alpnProtocol:n.alpnProtocol,timeout:a}))},A=async()=>{a=!0,u()},p=(async()=>{try{n=await e(t,u),n.on(\"error\",o),n.once(\"timeout\",A)}catch(h){o(h)}})()})});var fae=_((jNt,Aae)=>{\"use strict\";var yit=ve(\"net\");Aae.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith(\"[\")?r.indexOf(\"]\")===-1?e=r:e=r.slice(1,-1):e=r.split(\":\",1)[0]),yit.isIP(e)?\"\":e}});var gae=_((qNt,i4)=>{\"use strict\";var pae=ve(\"http\"),n4=ve(\"https\"),Eit=uae(),Cit=WM(),wit=r4(),Iit=fae(),Bit=XM(),nb=new Cit({maxSize:100}),g1=new Map,hae=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let o=()=>{t.emit(\"free\",e,r)};e.on(\"free\",o);let a=()=>{t.removeSocket(e,r)};e.on(\"close\",a);let n=()=>{t.removeSocket(e,r),e.off(\"close\",a),e.off(\"free\",o),e.off(\"agentRemove\",n)};e.on(\"agentRemove\",n),t.emit(\"free\",e,r)},vit=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!nb.has(e)){if(g1.has(e))return(await g1.get(e)).alpnProtocol;let{path:r,agent:o}=t;t.path=t.socketPath;let a=Eit(t);g1.set(e,a);try{let{socket:n,alpnProtocol:u}=await a;if(nb.set(e,u),t.path=r,u===\"h2\")n.destroy();else{let{globalAgent:A}=n4,p=n4.Agent.prototype.createConnection;o?o.createConnection===p?hae(o,n,t):n.destroy():A.createConnection===p?hae(A,n,t):n.destroy()}return g1.delete(e),u}catch(n){throw g1.delete(e),n}}return nb.get(e)};i4.exports=async(t,e,r)=>{if((typeof t==\"string\"||t instanceof URL)&&(t=Bit(new URL(t))),typeof e==\"function\"&&(r=e,e=void 0),e={ALPNProtocols:[\"h2\",\"http/1.1\"],...t,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error(\"The `ALPNProtocols` option must be an Array with at least one entry\");e.protocol=e.protocol||\"https:\";let o=e.protocol===\"https:\";e.host=e.hostname||e.host||\"localhost\",e.session=e.tlsSession,e.servername=e.servername||Iit(e),e.port=e.port||(o?443:80),e._defaultAgent=o?n4.globalAgent:pae.globalAgent;let a=e.agent;if(a){if(a.addRequest)throw new Error(\"The `options.agent` object can contain only `http`, `https` or `http2` properties\");e.agent=a[o?\"https\":\"http\"]}return o&&await vit(e)===\"h2\"?(a&&(e.agent=a.http2),new wit(e,r)):pae.request(e,r)};i4.exports.protocolCache=nb});var mae=_((GNt,dae)=>{\"use strict\";var Dit=ve(\"http2\"),Pit=VM(),s4=r4(),Sit=zM(),bit=gae(),xit=(t,e,r)=>new s4(t,e,r),kit=(t,e,r)=>{let o=new s4(t,e,r);return o.end(),o};dae.exports={...Dit,ClientRequest:s4,IncomingMessage:Sit,...Pit,request:xit,get:kit,auto:bit}});var a4=_(o4=>{\"use strict\";Object.defineProperty(o4,\"__esModule\",{value:!0});var yae=Tf();o4.default=t=>yae.default.nodeStream(t)&&yae.default.function_(t.getBoundary)});var Iae=_(l4=>{\"use strict\";Object.defineProperty(l4,\"__esModule\",{value:!0});var Cae=ve(\"fs\"),wae=ve(\"util\"),Eae=Tf(),Qit=a4(),Fit=wae.promisify(Cae.stat);l4.default=async(t,e)=>{if(e&&\"content-length\"in e)return Number(e[\"content-length\"]);if(!t)return 0;if(Eae.default.string(t))return Buffer.byteLength(t);if(Eae.default.buffer(t))return t.length;if(Qit.default(t))return wae.promisify(t.getLength.bind(t))();if(t instanceof Cae.ReadStream){let{size:r}=await Fit(t.path);return r===0?void 0:r}}});var u4=_(c4=>{\"use strict\";Object.defineProperty(c4,\"__esModule\",{value:!0});function Rit(t,e,r){let o={};for(let a of r)o[a]=(...n)=>{e.emit(a,...n)},t.on(a,o[a]);return()=>{for(let a of r)t.off(a,o[a])}}c4.default=Rit});var Bae=_(A4=>{\"use strict\";Object.defineProperty(A4,\"__esModule\",{value:!0});A4.default=()=>{let t=[];return{once(e,r,o){e.once(r,o),t.push({origin:e,event:r,fn:o})},unhandleAll(){for(let e of t){let{origin:r,event:o,fn:a}=e;r.removeListener(o,a)}t.length=0}}}});var Dae=_(d1=>{\"use strict\";Object.defineProperty(d1,\"__esModule\",{value:!0});d1.TimeoutError=void 0;var Tit=ve(\"net\"),Lit=Bae(),vae=Symbol(\"reentry\"),Nit=()=>{},ib=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name=\"TimeoutError\",this.code=\"ETIMEDOUT\"}};d1.TimeoutError=ib;d1.default=(t,e,r)=>{if(vae in t)return Nit;t[vae]=!0;let o=[],{once:a,unhandleAll:n}=Lit.default(),u=(I,v,x)=>{var C;let R=setTimeout(v,I,I,x);(C=R.unref)===null||C===void 0||C.call(R);let N=()=>{clearTimeout(R)};return o.push(N),N},{host:A,hostname:p}=r,h=(I,v)=>{t.destroy(new ib(I,v))},E=()=>{for(let I of o)I();n()};if(t.once(\"error\",I=>{if(E(),t.listenerCount(\"error\")===0)throw I}),t.once(\"close\",E),a(t,\"response\",I=>{a(I,\"end\",E)}),typeof e.request<\"u\"&&u(e.request,h,\"request\"),typeof e.socket<\"u\"){let I=()=>{h(e.socket,\"socket\")};t.setTimeout(e.socket,I),o.push(()=>{t.removeListener(\"timeout\",I)})}return a(t,\"socket\",I=>{var v;let{socketPath:x}=t;if(I.connecting){let C=Boolean(x??Tit.isIP((v=p??A)!==null&&v!==void 0?v:\"\")!==0);if(typeof e.lookup<\"u\"&&!C&&typeof I.address().address>\"u\"){let R=u(e.lookup,h,\"lookup\");a(I,\"lookup\",R)}if(typeof e.connect<\"u\"){let R=()=>u(e.connect,h,\"connect\");C?a(I,\"connect\",R()):a(I,\"lookup\",N=>{N===null&&a(I,\"connect\",R())})}typeof e.secureConnect<\"u\"&&r.protocol===\"https:\"&&a(I,\"connect\",()=>{let R=u(e.secureConnect,h,\"secureConnect\");a(I,\"secureConnect\",R)})}if(typeof e.send<\"u\"){let C=()=>u(e.send,h,\"send\");I.connecting?a(I,\"connect\",()=>{a(t,\"upload-complete\",C())}):a(t,\"upload-complete\",C())}}),typeof e.response<\"u\"&&a(t,\"upload-complete\",()=>{let I=u(e.response,h,\"response\");a(t,\"response\",I)}),E}});var Sae=_(f4=>{\"use strict\";Object.defineProperty(f4,\"__esModule\",{value:!0});var Pae=Tf();f4.default=t=>{t=t;let e={protocol:t.protocol,hostname:Pae.default.string(t.hostname)&&t.hostname.startsWith(\"[\")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||\"\"}${t.search||\"\"}`};return Pae.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||\"\"}:${t.password||\"\"}`),e}});var bae=_(p4=>{\"use strict\";Object.defineProperty(p4,\"__esModule\",{value:!0});var Oit=ve(\"url\"),Mit=[\"protocol\",\"host\",\"hostname\",\"port\",\"pathname\",\"search\"];p4.default=(t,e)=>{var r,o;if(e.path){if(e.pathname)throw new TypeError(\"Parameters `path` and `pathname` are mutually exclusive.\");if(e.search)throw new TypeError(\"Parameters `path` and `search` are mutually exclusive.\");if(e.searchParams)throw new TypeError(\"Parameters `path` and `searchParams` are mutually exclusive.\")}if(e.search&&e.searchParams)throw new TypeError(\"Parameters `search` and `searchParams` are mutually exclusive.\");if(!t){if(!e.protocol)throw new TypeError(\"No URL protocol specified\");t=`${e.protocol}//${(o=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&o!==void 0?o:\"\"}`}let a=new Oit.URL(t);if(e.path){let n=e.path.indexOf(\"?\");n===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,n),e.search=e.path.slice(n+1)),delete e.path}for(let n of Mit)e[n]&&(a[n]=e[n].toString());return a}});var xae=_(g4=>{\"use strict\";Object.defineProperty(g4,\"__esModule\",{value:!0});var h4=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e==\"object\"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e==\"object\"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e==\"object\"?this.weakMap.has(e):this.map.has(e)}};g4.default=h4});var m4=_(d4=>{\"use strict\";Object.defineProperty(d4,\"__esModule\",{value:!0});var Uit=async t=>{let e=[],r=0;for await(let o of t)e.push(o),r+=Buffer.byteLength(o);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(\"\"))};d4.default=Uit});var Qae=_(Sd=>{\"use strict\";Object.defineProperty(Sd,\"__esModule\",{value:!0});Sd.dnsLookupIpVersionToFamily=Sd.isDnsLookupIpVersion=void 0;var kae={auto:0,ipv4:4,ipv6:6};Sd.isDnsLookupIpVersion=t=>t in kae;Sd.dnsLookupIpVersionToFamily=t=>{if(Sd.isDnsLookupIpVersion(t))return kae[t];throw new Error(\"Invalid DNS lookup IP version\")}});var y4=_(sb=>{\"use strict\";Object.defineProperty(sb,\"__esModule\",{value:!0});sb.isResponseOk=void 0;sb.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var Rae=_(E4=>{\"use strict\";Object.defineProperty(E4,\"__esModule\",{value:!0});var Fae=new Set;E4.default=t=>{Fae.has(t)||(Fae.add(t),process.emitWarning(`Got: ${t}`,{type:\"DeprecationWarning\"}))}});var Tae=_(C4=>{\"use strict\";Object.defineProperty(C4,\"__esModule\",{value:!0});var Ai=Tf(),_it=(t,e)=>{if(Ai.default.null_(t.encoding))throw new TypeError(\"To get a Buffer, set `options.responseType` to `buffer` instead\");Ai.assert.any([Ai.default.string,Ai.default.undefined],t.encoding),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.resolveBodyOnly),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.methodRewriting),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.isStream),Ai.assert.any([Ai.default.string,Ai.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType=\"text\");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:o=>o.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Ai.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(o=>o.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):Ai.default.number(r)&&(t.retry.limit=r),Ai.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(Ai.default.number))),Ai.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:o}=t;if(!Ai.default.function_(o.transform))throw new Error(\"`options.pagination.transform` must be implemented\");if(!Ai.default.function_(o.shouldContinue))throw new Error(\"`options.pagination.shouldContinue` must be implemented\");if(!Ai.default.function_(o.filter))throw new TypeError(\"`options.pagination.filter` must be implemented\");if(!Ai.default.function_(o.paginate))throw new Error(\"`options.pagination.paginate` must be implemented\")}return t.responseType===\"json\"&&t.headers.accept===void 0&&(t.headers.accept=\"application/json\"),t};C4.default=_it});var Lae=_(m1=>{\"use strict\";Object.defineProperty(m1,\"__esModule\",{value:!0});m1.retryAfterStatusCodes=void 0;m1.retryAfterStatusCodes=new Set([413,429,503]);var Hit=({attemptCount:t,retryOptions:e,error:r,retryAfter:o})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),u=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!u)return 0;if(r.response){if(o)return e.maxRetryAfter===void 0||o>e.maxRetryAfter?0:o;if(r.response.statusCode===413)return 0}let A=Math.random()*100;return 2**(t-1)*1e3+A};m1.default=Hit});var C1=_(Bn=>{\"use strict\";Object.defineProperty(Bn,\"__esModule\",{value:!0});Bn.UnsupportedProtocolError=Bn.ReadError=Bn.TimeoutError=Bn.UploadError=Bn.CacheError=Bn.HTTPError=Bn.MaxRedirectsError=Bn.RequestError=Bn.setNonEnumerableProperties=Bn.knownHookEvents=Bn.withoutBody=Bn.kIsNormalizedAlready=void 0;var Nae=ve(\"util\"),Oae=ve(\"stream\"),jit=ve(\"fs\"),ah=ve(\"url\"),Mae=ve(\"http\"),w4=ve(\"http\"),qit=ve(\"https\"),Git=Zse(),Yit=soe(),Uae=Moe(),Wit=joe(),Kit=mae(),Vit=eb(),st=Tf(),Jit=Iae(),_ae=a4(),zit=u4(),Hae=Dae(),Xit=Sae(),jae=bae(),Zit=xae(),$it=m4(),qae=Qae(),est=y4(),lh=Rae(),tst=Tae(),rst=Lae(),I4,Zs=Symbol(\"request\"),lb=Symbol(\"response\"),SE=Symbol(\"responseSize\"),bE=Symbol(\"downloadedSize\"),xE=Symbol(\"bodySize\"),kE=Symbol(\"uploadedSize\"),ob=Symbol(\"serverResponsesPiped\"),Gae=Symbol(\"unproxyEvents\"),Yae=Symbol(\"isFromCache\"),B4=Symbol(\"cancelTimeouts\"),Wae=Symbol(\"startedReading\"),QE=Symbol(\"stopReading\"),ab=Symbol(\"triggerRead\"),ch=Symbol(\"body\"),y1=Symbol(\"jobs\"),Kae=Symbol(\"originalResponse\"),Vae=Symbol(\"retryTimeout\");Bn.kIsNormalizedAlready=Symbol(\"isNormalizedAlready\");var nst=st.default.string(process.versions.brotli);Bn.withoutBody=new Set([\"GET\",\"HEAD\"]);Bn.knownHookEvents=[\"init\",\"beforeRequest\",\"beforeRedirect\",\"beforeError\",\"beforeRetry\",\"afterResponse\"];function ist(t){for(let e in t){let r=t[e];if(!st.default.string(r)&&!st.default.number(r)&&!st.default.boolean(r)&&!st.default.null_(r)&&!st.default.undefined(r))throw new TypeError(`The \\`searchParams\\` value '${String(r)}' must be a string, number, boolean or null`)}}function sst(t){return st.default.object(t)&&!(\"statusCode\"in t)}var v4=new Zit.default,ost=async t=>new Promise((e,r)=>{let o=a=>{r(a)};t.pending||e(),t.once(\"error\",o),t.once(\"ready\",()=>{t.off(\"error\",o),e()})}),ast=new Set([300,301,302,303,304,307,308]),lst=[\"context\",\"body\",\"json\",\"form\"];Bn.setNonEnumerableProperties=(t,e)=>{let r={};for(let o of t)if(!!o)for(let a of lst)a in o&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:o[a]});Object.defineProperties(e,r)};var Vi=class extends Error{constructor(e,r,o){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name=\"RequestError\",this.code=r.code,o instanceof db?(Object.defineProperty(this,\"request\",{enumerable:!1,value:o}),Object.defineProperty(this,\"response\",{enumerable:!1,value:o[lb]}),Object.defineProperty(this,\"options\",{enumerable:!1,value:o.options})):Object.defineProperty(this,\"options\",{enumerable:!1,value:o}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,st.default.string(r.stack)&&st.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,u=this.stack.slice(n).split(`\n`).reverse(),A=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(`\n`).reverse();for(;A.length!==0&&A[0]===u[0];)u.shift();this.stack=`${this.stack.slice(0,n)}${u.reverse().join(`\n`)}${A.reverse().join(`\n`)}`}}};Bn.RequestError=Vi;var ub=class extends Vi{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name=\"MaxRedirectsError\"}};Bn.MaxRedirectsError=ub;var Ab=class extends Vi{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name=\"HTTPError\"}};Bn.HTTPError=Ab;var fb=class extends Vi{constructor(e,r){super(e.message,e,r),this.name=\"CacheError\"}};Bn.CacheError=fb;var pb=class extends Vi{constructor(e,r){super(e.message,e,r),this.name=\"UploadError\"}};Bn.UploadError=pb;var hb=class extends Vi{constructor(e,r,o){super(e.message,e,o),this.name=\"TimeoutError\",this.event=e.event,this.timings=r}};Bn.TimeoutError=hb;var E1=class extends Vi{constructor(e,r){super(e.message,e,r),this.name=\"ReadError\"}};Bn.ReadError=E1;var gb=class extends Vi{constructor(e){super(`Unsupported protocol \"${e.url.protocol}\"`,{},e),this.name=\"UnsupportedProtocolError\"}};Bn.UnsupportedProtocolError=gb;var cst=[\"socket\",\"connect\",\"continue\",\"information\",\"upgrade\",\"timeout\"],db=class extends Oae.Duplex{constructor(e,r={},o){super({autoDestroy:!1,highWaterMark:0}),this[bE]=0,this[kE]=0,this.requestInitialized=!1,this[ob]=new Set,this.redirects=[],this[QE]=!1,this[ab]=!1,this[y1]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on(\"pipe\",h=>{h.prependListener(\"data\",a),h.on(\"data\",n),h.prependListener(\"end\",a),h.on(\"end\",n)}),this.on(\"unpipe\",h=>{h.off(\"data\",a),h.off(\"data\",n),h.off(\"end\",a),h.off(\"end\",n)}),this.on(\"pipe\",h=>{h instanceof w4.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:u,body:A,form:p}=r;if((u||A||p)&&this._lockWrite(),Bn.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,o)}catch(h){st.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof jit.ReadStream&&await ost(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError(\"Missing `url` property\");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[Zs])===null||h===void 0||h.destroy();return}for(let I of this[y1])I();this[y1].length=0,this.requestInitialized=!0}catch(E){if(E instanceof Vi){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(e,r,o){var a,n,u,A,p;let h=r;if(st.default.object(e)&&!st.default.urlInstance(e))r={...o,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError(\"The `url` option is mutually exclusive with the `input` argument\");r={...o,...r},e!==void 0&&(r.url=e),st.default.urlInstance(r.url)&&(r.url=new ah.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),st.assert.any([st.default.string,st.default.undefined],r.method),st.assert.any([st.default.object,st.default.undefined],r.headers),st.assert.any([st.default.string,st.default.urlInstance,st.default.undefined],r.prefixUrl),st.assert.any([st.default.object,st.default.undefined],r.cookieJar),st.assert.any([st.default.object,st.default.string,st.default.undefined],r.searchParams),st.assert.any([st.default.object,st.default.string,st.default.undefined],r.cache),st.assert.any([st.default.object,st.default.number,st.default.undefined],r.timeout),st.assert.any([st.default.object,st.default.undefined],r.context),st.assert.any([st.default.object,st.default.undefined],r.hooks),st.assert.any([st.default.boolean,st.default.undefined],r.decompress),st.assert.any([st.default.boolean,st.default.undefined],r.ignoreInvalidCookies),st.assert.any([st.default.boolean,st.default.undefined],r.followRedirect),st.assert.any([st.default.number,st.default.undefined],r.maxRedirects),st.assert.any([st.default.boolean,st.default.undefined],r.throwHttpErrors),st.assert.any([st.default.boolean,st.default.undefined],r.http2),st.assert.any([st.default.boolean,st.default.undefined],r.allowGetBody),st.assert.any([st.default.string,st.default.undefined],r.localAddress),st.assert.any([qae.isDnsLookupIpVersion,st.default.undefined],r.dnsLookupIpVersion),st.assert.any([st.default.object,st.default.undefined],r.https),st.assert.any([st.default.boolean,st.default.undefined],r.rejectUnauthorized),r.https&&(st.assert.any([st.default.boolean,st.default.undefined],r.https.rejectUnauthorized),st.assert.any([st.default.function_,st.default.undefined],r.https.checkServerIdentity),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.certificateAuthority),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.key),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.certificate),st.assert.any([st.default.string,st.default.undefined],r.https.passphrase),st.assert.any([st.default.string,st.default.buffer,st.default.array,st.default.undefined],r.https.pfx)),st.assert.any([st.default.object,st.default.undefined],r.cacheOptions),st.default.string(r.method)?r.method=r.method.toUpperCase():r.method=\"GET\",r.headers===o?.headers?r.headers={...r.headers}:r.headers=Vit({...o?.headers,...r.headers}),\"slashes\"in r)throw new TypeError(\"The legacy `url.Url` has been deprecated. Use `URL` instead.\");if(\"auth\"in r)throw new TypeError(\"Parameter `auth` is deprecated. Use `username` / `password` instead.\");if(\"searchParams\"in r&&r.searchParams&&r.searchParams!==o?.searchParams){let x;if(st.default.string(r.searchParams)||r.searchParams instanceof ah.URLSearchParams)x=new ah.URLSearchParams(r.searchParams);else{ist(r.searchParams),x=new ah.URLSearchParams;for(let C in r.searchParams){let R=r.searchParams[C];R===null?x.append(C,\"\"):R!==void 0&&x.append(C,R)}}(a=o?.searchParams)===null||a===void 0||a.forEach((C,R)=>{x.has(R)||x.append(R,C)}),r.searchParams=x}if(r.username=(n=r.username)!==null&&n!==void 0?n:\"\",r.password=(u=r.password)!==null&&u!==void 0?u:\"\",st.default.undefined(r.prefixUrl)?r.prefixUrl=(A=o?.prefixUrl)!==null&&A!==void 0?A:\"\":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==\"\"&&!r.prefixUrl.endsWith(\"/\")&&(r.prefixUrl+=\"/\")),st.default.string(r.url)){if(r.url.startsWith(\"/\"))throw new Error(\"`input` must not start with a slash when using `prefixUrl`\");r.url=jae.default(r.prefixUrl+r.url,r)}else(st.default.undefined(r.url)&&r.prefixUrl!==\"\"||r.protocol)&&(r.url=jae.default(r.prefixUrl,r));if(r.url){\"port\"in r&&delete r.port;let{prefixUrl:x}=r;Object.defineProperty(r,\"prefixUrl\",{set:R=>{let N=r.url;if(!N.href.startsWith(R))throw new Error(`Cannot change \\`prefixUrl\\` from ${x} to ${R}: ${N.href}`);r.url=new ah.URL(R+N.href.slice(x.length)),x=R},get:()=>x});let{protocol:C}=r.url;if(C===\"unix:\"&&(C=\"http:\",r.url=new ah.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),C!==\"http:\"&&C!==\"https:\")throw new gb(r);r.username===\"\"?r.username=r.url.username:r.url.username=r.username,r.password===\"\"?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:x,getCookieString:C}=E;st.assert.function_(x),st.assert.function_(C),x.length===4&&C.length===0&&(x=Nae.promisify(x.bind(r.cookieJar)),C=Nae.promisify(C.bind(r.cookieJar)),r.cookieJar={setCookie:x,getCookieString:C})}let{cache:I}=r;if(I&&(v4.has(I)||v4.set(I,new Uae((x,C)=>{let R=x[Zs](x,C);return st.default.promise(R)&&(R.once=(N,U)=>{if(N===\"error\")R.catch(U);else if(N===\"abort\")(async()=>{try{(await R).once(\"abort\",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${N}`);return R}),R},I))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)I4||(I4=new Yit.default),r.dnsCache=I4;else if(!st.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \\`dnsCache\\` must be a CacheableLookup instance or a boolean, got ${st.default(r.dnsCache)}`);st.default.number(r.timeout)?r.timeout={request:r.timeout}:o&&r.timeout!==o.timeout?r.timeout={...o.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let v=r.hooks===o?.hooks;r.hooks={...r.hooks};for(let x of Bn.knownHookEvents)if(x in r.hooks)if(st.default.array(r.hooks[x]))r.hooks[x]=[...r.hooks[x]];else throw new TypeError(`Parameter \\`${x}\\` must be an Array, got ${st.default(r.hooks[x])}`);else r.hooks[x]=[];if(o&&!v)for(let x of Bn.knownHookEvents)o.hooks[x].length>0&&(r.hooks[x]=[...o.hooks[x],...r.hooks[x]]);if(\"family\"in r&&lh.default('\"options.family\" was never documented, please use \"options.dnsLookupIpVersion\"'),o?.https&&(r.https={...o.https,...r.https}),\"rejectUnauthorized\"in r&&lh.default('\"options.rejectUnauthorized\" is now deprecated, please use \"options.https.rejectUnauthorized\"'),\"checkServerIdentity\"in r&&lh.default('\"options.checkServerIdentity\" was never documented, please use \"options.https.checkServerIdentity\"'),\"ca\"in r&&lh.default('\"options.ca\" was never documented, please use \"options.https.certificateAuthority\"'),\"key\"in r&&lh.default('\"options.key\" was never documented, please use \"options.https.key\"'),\"cert\"in r&&lh.default('\"options.cert\" was never documented, please use \"options.https.certificate\"'),\"passphrase\"in r&&lh.default('\"options.passphrase\" was never documented, please use \"options.https.passphrase\"'),\"pfx\"in r&&lh.default('\"options.pfx\" was never documented, please use \"options.https.pfx\"'),\"followRedirects\"in r)throw new TypeError(\"The `followRedirects` option does not exist. Use `followRedirect` instead.\");if(r.agent){for(let x in r.agent)if(x!==\"http\"&&x!==\"https\"&&x!==\"http2\")throw new TypeError(`Expected the \\`options.agent\\` properties to be \\`http\\`, \\`https\\` or \\`http2\\`, got \\`${x}\\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Bn.setNonEnumerableProperties([o,h],r),tst.default(r,o)}_lockWrite(){let e=()=>{throw new TypeError(\"The payload has been already provided\")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,o=!st.default.undefined(e.form),a=!st.default.undefined(e.json),n=!st.default.undefined(e.body),u=o||a||n,A=Bn.withoutBody.has(e.method)&&!(e.method===\"GET\"&&e.allowGetBody);if(this._cannotHaveBody=A,u){if(A)throw new TypeError(`The \\`${e.method}\\` method cannot be used with a body`);if([n,o,a].filter(p=>p).length>1)throw new TypeError(\"The `body`, `json` and `form` options are mutually exclusive\");if(n&&!(e.body instanceof Oae.Readable)&&!st.default.string(e.body)&&!st.default.buffer(e.body)&&!_ae.default(e.body))throw new TypeError(\"The `body` option must be a stream.Readable, string or Buffer\");if(o&&!st.default.object(e.form))throw new TypeError(\"The `form` option must be an Object\");{let p=!st.default.string(r[\"content-type\"]);n?(_ae.default(e.body)&&p&&(r[\"content-type\"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[ch]=e.body):o?(p&&(r[\"content-type\"]=\"application/x-www-form-urlencoded\"),this[ch]=new ah.URLSearchParams(e.form).toString()):(p&&(r[\"content-type\"]=\"application/json\"),this[ch]=e.stringifyJson(e.json));let h=await Jit.default(this[ch],e.headers);st.default.undefined(r[\"content-length\"])&&st.default.undefined(r[\"transfer-encoding\"])&&!A&&!st.default.undefined(h)&&(r[\"content-length\"]=String(h))}}else A?this._lockWrite():this._unlockWrite();this[xE]=Number(r[\"content-length\"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:o}=r;this[Kae]=e,r.decompress&&(e=Wit(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:Mae.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[Yae]=n.isFromCache,this[SE]=Number(e.headers[\"content-length\"])||void 0,this[lb]=e,e.once(\"end\",()=>{this[SE]=this[bE],this.emit(\"downloadProgress\",this.downloadProgress)}),e.once(\"error\",A=>{e.destroy(),this._beforeError(new E1(A,this))}),e.once(\"aborted\",()=>{this._beforeError(new E1({name:\"Error\",message:\"The server aborted pending request\",code:\"ECONNRESET\"},this))}),this.emit(\"downloadProgress\",this.downloadProgress);let u=e.headers[\"set-cookie\"];if(st.default.object(r.cookieJar)&&u){let A=u.map(async p=>r.cookieJar.setCookie(p,o.toString()));r.ignoreInvalidCookies&&(A=A.map(async p=>p.catch(()=>{})));try{await Promise.all(A)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&ast.has(a)){if(e.resume(),this[Zs]&&(this[B4](),delete this[Zs],this[Gae]()),(a===303&&r.method!==\"GET\"&&r.method!==\"HEAD\"||!r.methodRewriting)&&(r.method=\"GET\",\"body\"in r&&delete r.body,\"json\"in r&&delete r.json,\"form\"in r&&delete r.form,this[ch]=void 0,delete r.headers[\"content-length\"]),this.redirects.length>=r.maxRedirects){this._beforeError(new ub(this));return}try{let p=Buffer.from(e.headers.location,\"binary\").toString(),h=new ah.URL(p,o),E=h.toString();decodeURI(E),h.hostname!==o.hostname||h.port!==o.port?(\"host\"in r.headers&&delete r.headers.host,\"cookie\"in r.headers&&delete r.headers.cookie,\"authorization\"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username=\"\",r.password=\"\")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let I of r.hooks.beforeRedirect)await I(r,n);this.emit(\"redirect\",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!est.isResponseOk(n)){this._beforeError(new Ab(n));return}e.on(\"readable\",()=>{this[ab]&&this._read()}),this.on(\"resume\",()=>{e.resume()}),this.on(\"pause\",()=>{e.pause()}),e.once(\"end\",()=>{this.push(null)}),this.emit(\"response\",e);for(let A of this[ob])if(!A.headersSent){for(let p in e.headers){let h=r.decompress?p!==\"content-encoding\":!0,E=e.headers[p];h&&A.setHeader(p,E)}A.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:o,url:a}=r;Git.default(e),this[B4]=Hae.default(e,o,a);let n=r.cache?\"cacheableResponse\":\"response\";e.once(n,p=>{this._onResponse(p)}),e.once(\"error\",p=>{var h;e.destroy(),(h=e.res)===null||h===void 0||h.removeAllListeners(\"end\"),p=p instanceof Hae.TimeoutError?new hb(p,this.timings,this):new Vi(p.message,p,this),this._beforeError(p)}),this[Gae]=zit.default(e,this,cst),this[Zs]=e,this.emit(\"uploadProgress\",this.uploadProgress);let u=this[ch],A=this.redirects.length===0?this:e;st.default.nodeStream(u)?(u.pipe(A),u.once(\"error\",p=>{this._beforeError(new pb(p,this))})):(this._unlockWrite(),st.default.undefined(u)?(this._cannotHaveBody||this._noPipe)&&(A.end(),this._lockWrite()):(this._writeRequest(u,void 0,()=>{}),A.end(),this._lockWrite())),this.emit(\"request\",e)}async _createCacheableRequest(e,r){return new Promise((o,a)=>{Object.assign(r,Xit.default(e)),delete r.url;let n,u=v4.get(r.cache)(r,async A=>{A._readableState.autoDestroy=!1,n&&(await n).emit(\"cacheableResponse\",A),o(A)});r.url=e,u.once(\"error\",a),u.once(\"request\",async A=>{n=A,o(n)})})}async _makeRequest(){var e,r,o,a,n;let{options:u}=this,{headers:A}=u;for(let U in A)if(st.default.undefined(A[U]))delete A[U];else if(st.default.null_(A[U]))throw new TypeError(`Use \\`undefined\\` instead of \\`null\\` to delete the \\`${U}\\` header`);if(u.decompress&&st.default.undefined(A[\"accept-encoding\"])&&(A[\"accept-encoding\"]=nst?\"gzip, deflate, br\":\"gzip, deflate\"),u.cookieJar){let U=await u.cookieJar.getCookieString(u.url.toString());st.default.nonEmptyString(U)&&(u.headers.cookie=U)}for(let U of u.hooks.beforeRequest){let J=await U(u);if(!st.default.undefined(J)){u.request=()=>J;break}}u.body&&this[ch]!==u.body&&(this[ch]=u.body);let{agent:p,request:h,timeout:E,url:I}=u;if(u.dnsCache&&!(\"lookup\"in u)&&(u.lookup=u.dnsCache.lookup),I.hostname===\"unix\"){let U=/(?<socketPath>.+?):(?<path>.+)/.exec(`${I.pathname}${I.search}`);if(U?.groups){let{socketPath:J,path:te}=U.groups;Object.assign(u,{socketPath:J,path:te,host:\"\"})}}let v=I.protocol===\"https:\",x;u.http2?x=Kit.auto:x=v?qit.request:Mae.request;let C=(e=u.request)!==null&&e!==void 0?e:x,R=u.cache?this._createCacheableRequest:C;p&&!u.http2&&(u.agent=p[v?\"https\":\"http\"]),u[Zs]=C,delete u.request,delete u.timeout;let N=u;if(N.shared=(r=u.cacheOptions)===null||r===void 0?void 0:r.shared,N.cacheHeuristic=(o=u.cacheOptions)===null||o===void 0?void 0:o.cacheHeuristic,N.immutableMinTimeToLive=(a=u.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,N.ignoreCargoCult=(n=u.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,u.dnsLookupIpVersion!==void 0)try{N.family=qae.dnsLookupIpVersionToFamily(u.dnsLookupIpVersion)}catch{throw new Error(\"Invalid `dnsLookupIpVersion` option value\")}u.https&&(\"rejectUnauthorized\"in u.https&&(N.rejectUnauthorized=u.https.rejectUnauthorized),u.https.checkServerIdentity&&(N.checkServerIdentity=u.https.checkServerIdentity),u.https.certificateAuthority&&(N.ca=u.https.certificateAuthority),u.https.certificate&&(N.cert=u.https.certificate),u.https.key&&(N.key=u.https.key),u.https.passphrase&&(N.passphrase=u.https.passphrase),u.https.pfx&&(N.pfx=u.https.pfx));try{let U=await R(I,N);st.default.undefined(U)&&(U=x(I,N)),u.request=h,u.timeout=E,u.agent=p,u.https&&(\"rejectUnauthorized\"in u.https&&delete N.rejectUnauthorized,u.https.checkServerIdentity&&delete N.checkServerIdentity,u.https.certificateAuthority&&delete N.ca,u.https.certificate&&delete N.cert,u.https.key&&delete N.key,u.https.passphrase&&delete N.passphrase,u.https.pfx&&delete N.pfx),sst(U)?this._onRequest(U):this.writable?(this.once(\"finish\",()=>{this._onResponse(U)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(U)}catch(U){throw U instanceof Uae.CacheError?new fb(U,this):new Vi(U.message,U,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new Vi(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[QE])return;let{options:r}=this,o=this.retryCount+1;this[QE]=!0,e instanceof Vi||(e=new Vi(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await $it.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount(\"retry\")!==0){let u;try{let A;n&&\"retry-after\"in n.headers&&(A=Number(n.headers[\"retry-after\"]),Number.isNaN(A)?(A=Date.parse(n.headers[\"retry-after\"])-Date.now(),A<=0&&(A=1)):A*=1e3),u=await r.retry.calculateDelay({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:rst.default({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:0})})}catch(A){this._error(new Vi(A.message,A,this));return}if(u){let A=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,o)}catch(p){this._error(new Vi(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit(\"retry\",o,e))};this[Vae]=setTimeout(A,u);return}}this._error(a)})()}_read(){this[ab]=!0;let e=this[lb];if(e&&!this[QE]){e.readableLength&&(this[ab]=!1);let r;for(;(r=e.read())!==null;){this[bE]+=r.length,this[Wae]=!0;let o=this.downloadProgress;o.percent<1&&this.emit(\"downloadProgress\",o),this.push(r)}}}_write(e,r,o){let a=()=>{this._writeRequest(e,r,o)};this.requestInitialized?a():this[y1].push(a)}_writeRequest(e,r,o){this[Zs].destroyed||(this._progressCallbacks.push(()=>{this[kE]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit(\"uploadProgress\",a)}),this[Zs].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),o(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Zs in this)){e();return}if(this[Zs].destroyed){e();return}this[Zs].end(o=>{o||(this[xE]=this[kE],this.emit(\"uploadProgress\",this.uploadProgress),this[Zs].emit(\"upload-complete\")),e(o)})};this.requestInitialized?r():this[y1].push(r)}_destroy(e,r){var o;this[QE]=!0,clearTimeout(this[Vae]),Zs in this&&(this[B4](),!((o=this[lb])===null||o===void 0)&&o.complete||this[Zs].destroy()),e!==null&&!st.default.undefined(e)&&!(e instanceof Vi)&&(e=new Vi(e.message,e,this)),r(e)}get _isAboutToError(){return this[QE]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,o;return((r=(e=this[Zs])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((o=this[Kae])===null||o===void 0)&&o.complete)}get socket(){var e,r;return(r=(e=this[Zs])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[SE]?e=this[bE]/this[SE]:this[SE]===this[bE]?e=1:e=0,{percent:e,transferred:this[bE],total:this[SE]}}get uploadProgress(){let e;return this[xE]?e=this[kE]/this[xE]:this[xE]===this[kE]?e=1:e=0,{percent:e,transferred:this[kE],total:this[xE]}}get timings(){var e;return(e=this[Zs])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[Yae]}pipe(e,r){if(this[Wae])throw new Error(\"Failed to pipe. The response has been emitted already.\");return e instanceof w4.ServerResponse&&this[ob].add(e),super.pipe(e,r)}unpipe(e){return e instanceof w4.ServerResponse&&this[ob].delete(e),super.unpipe(e),this}};Bn.default=db});var w1=_(qc=>{\"use strict\";var ust=qc&&qc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Ast=qc&&qc.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&ust(e,t,r)};Object.defineProperty(qc,\"__esModule\",{value:!0});qc.CancelError=qc.ParseError=void 0;var Jae=C1(),D4=class extends Jae.RequestError{constructor(e,r){let{options:o}=r.request;super(`${e.message} in \"${o.url.toString()}\"`,e,r.request),this.name=\"ParseError\"}};qc.ParseError=D4;var P4=class extends Jae.RequestError{constructor(e){super(\"Promise was canceled\",{},e),this.name=\"CancelError\"}get isCanceled(){return!0}};qc.CancelError=P4;Ast(C1(),qc)});var Xae=_(S4=>{\"use strict\";Object.defineProperty(S4,\"__esModule\",{value:!0});var zae=w1(),fst=(t,e,r,o)=>{let{rawBody:a}=t;try{if(e===\"text\")return a.toString(o);if(e===\"json\")return a.length===0?\"\":r(a.toString());if(e===\"buffer\")return a;throw new zae.ParseError({message:`Unknown body type '${e}'`,name:\"Error\"},t)}catch(n){throw new zae.ParseError(n,t)}};S4.default=fst});var b4=_(uh=>{\"use strict\";var pst=uh&&uh.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),hst=uh&&uh.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&pst(e,t,r)};Object.defineProperty(uh,\"__esModule\",{value:!0});var gst=ve(\"events\"),dst=Tf(),mst=zse(),mb=w1(),Zae=Xae(),$ae=C1(),yst=u4(),Est=m4(),ele=y4(),Cst=[\"request\",\"response\",\"redirect\",\"uploadProgress\",\"downloadProgress\"];function tle(t){let e,r,o=new gst.EventEmitter,a=new mst((u,A,p)=>{let h=E=>{let I=new $ae.default(void 0,t);I.retryCount=E,I._noPipe=!0,p(()=>I.destroy()),p.shouldReject=!1,p(()=>A(new mb.CancelError(I))),e=I,I.once(\"response\",async C=>{var R;if(C.retryCount=E,C.request.aborted)return;let N;try{N=await Est.default(I),C.rawBody=N}catch{return}if(I._isAboutToError)return;let U=((R=C.headers[\"content-encoding\"])!==null&&R!==void 0?R:\"\").toLowerCase(),J=[\"gzip\",\"deflate\",\"br\"].includes(U),{options:te}=I;if(J&&!te.decompress)C.body=N;else try{C.body=Zae.default(C,te.responseType,te.parseJson,te.encoding)}catch(ae){if(C.body=N.toString(),ele.isResponseOk(C)){I._beforeError(ae);return}}try{for(let[ae,fe]of te.hooks.afterResponse.entries())C=await fe(C,async ce=>{let me=$ae.default.normalizeArguments(void 0,{...ce,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},te);me.hooks.afterResponse=me.hooks.afterResponse.slice(0,ae);for(let Be of me.hooks.beforeRetry)await Be(me);let he=tle(me);return p(()=>{he.catch(()=>{}),he.cancel()}),he})}catch(ae){I._beforeError(new mb.RequestError(ae.message,ae,I));return}if(!ele.isResponseOk(C)){I._beforeError(new mb.HTTPError(C));return}r=C,u(I.options.resolveBodyOnly?C.body:C)});let v=C=>{if(a.isCanceled)return;let{options:R}=I;if(C instanceof mb.HTTPError&&!R.throwHttpErrors){let{response:N}=C;u(I.options.resolveBodyOnly?N.body:N);return}A(C)};I.once(\"error\",v);let x=I.options.body;I.once(\"retry\",(C,R)=>{var N,U;if(x===((N=R.request)===null||N===void 0?void 0:N.options.body)&&dst.default.nodeStream((U=R.request)===null||U===void 0?void 0:U.options.body)){v(R);return}h(C)}),yst.default(I,o,Cst)};h(0)});a.on=(u,A)=>(o.on(u,A),a);let n=u=>{let A=(async()=>{await a;let{options:p}=r.request;return Zae.default(r,u,p.parseJson,p.encoding)})();return Object.defineProperties(A,Object.getOwnPropertyDescriptors(a)),A};return a.json=()=>{let{headers:u}=e.options;return!e.writableFinished&&u.accept===void 0&&(u.accept=\"application/json\"),n(\"json\")},a.buffer=()=>n(\"buffer\"),a.text=()=>n(\"text\"),a}uh.default=tle;hst(w1(),uh)});var rle=_(x4=>{\"use strict\";Object.defineProperty(x4,\"__esModule\",{value:!0});var wst=w1();function Ist(t,...e){let r=(async()=>{if(t instanceof wst.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),o=()=>r;return r.json=o,r.text=o,r.buffer=o,r.on=o,r}x4.default=Ist});var sle=_(k4=>{\"use strict\";Object.defineProperty(k4,\"__esModule\",{value:!0});var nle=Tf();function ile(t){for(let e of Object.values(t))(nle.default.plainObject(e)||nle.default.array(e))&&ile(e);return Object.freeze(t)}k4.default=ile});var ale=_(ole=>{\"use strict\";Object.defineProperty(ole,\"__esModule\",{value:!0})});var Q4=_(Vl=>{\"use strict\";var Bst=Vl&&Vl.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),vst=Vl&&Vl.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Bst(e,t,r)};Object.defineProperty(Vl,\"__esModule\",{value:!0});Vl.defaultHandler=void 0;var lle=Tf(),Kl=b4(),Dst=rle(),Eb=C1(),Pst=sle(),Sst={RequestError:Kl.RequestError,CacheError:Kl.CacheError,ReadError:Kl.ReadError,HTTPError:Kl.HTTPError,MaxRedirectsError:Kl.MaxRedirectsError,TimeoutError:Kl.TimeoutError,ParseError:Kl.ParseError,CancelError:Kl.CancelError,UnsupportedProtocolError:Kl.UnsupportedProtocolError,UploadError:Kl.UploadError},bst=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:yb}=Eb.default,cle=(...t)=>{let e;for(let r of t)e=yb(void 0,r,e);return e},xst=t=>t.isStream?new Eb.default(void 0,t):Kl.default(t),kst=t=>\"defaults\"in t&&\"options\"in t.defaults,Qst=[\"get\",\"post\",\"put\",\"patch\",\"head\",\"delete\"];Vl.defaultHandler=(t,e)=>e(t);var ule=(t,e)=>{if(t)for(let r of t)r(e)},Ale=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(o=>(a,n)=>{let u,A=o(a,p=>(u=n(p),u));if(A!==u&&!a.isStream&&u){let p=A,{then:h,catch:E,finally:I}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(u)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(u)),p.then=h,p.catch=E,p.finally=I}return A});let e=(o,a={},n)=>{var u,A;let p=0,h=E=>t.handlers[p++](E,p===t.handlers.length?xst:h);if(lle.default.plainObject(o)){let E={...o,...a};Eb.setNonEnumerableProperties([o,a],E),a=E,o=void 0}try{let E;try{ule(t.options.hooks.init,a),ule((u=a.hooks)===null||u===void 0?void 0:u.init,a)}catch(v){E=v}let I=yb(o,a,n??t.options);if(I[Eb.kIsNormalizedAlready]=!0,E)throw new Kl.RequestError(E.message,E,I);return h(I)}catch(E){if(a.isStream)throw E;return Dst.default(E,t.options.hooks.beforeError,(A=a.hooks)===null||A===void 0?void 0:A.beforeError)}};e.extend=(...o)=>{let a=[t.options],n=[...t._rawHandlers],u;for(let A of o)kst(A)?(a.push(A.defaults.options),n.push(...A.defaults._rawHandlers),u=A.defaults.mutableDefaults):(a.push(A),\"handlers\"in A&&n.push(...A.handlers),u=A.mutableDefaults);return n=n.filter(A=>A!==Vl.defaultHandler),n.length===0&&n.push(Vl.defaultHandler),Ale({options:cle(...a),handlers:n,mutableDefaults:Boolean(u)})};let r=async function*(o,a){let n=yb(o,a,t.options);n.resolveBodyOnly=!1;let u=n.pagination;if(!lle.default.object(u))throw new TypeError(\"`options.pagination` must be implemented\");let A=[],{countLimit:p}=u,h=0;for(;h<u.requestLimit;){h!==0&&await bst(u.backoff);let E=await e(void 0,void 0,n),I=await u.transform(E),v=[];for(let C of I)if(u.filter(C,A,v)&&(!u.shouldContinue(C,A,v)||(yield C,u.stackAllItems&&A.push(C),v.push(C),--p<=0)))return;let x=u.paginate(E,A,v);if(x===!1)return;x===E.request.options?n=E.request.options:x!==void 0&&(n=yb(void 0,x,n)),h++}};e.paginate=r,e.paginate.all=async(o,a)=>{let n=[];for await(let u of r(o,a))n.push(u);return n},e.paginate.each=r,e.stream=(o,a)=>e(o,{...a,isStream:!0});for(let o of Qst)e[o]=(a,n)=>e(a,{...n,method:o}),e.stream[o]=(a,n)=>e(a,{...n,method:o,isStream:!0});return Object.assign(e,Sst),Object.defineProperty(e,\"defaults\",{value:t.mutableDefaults?t:Pst.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=cle,e};Vl.default=Ale;vst(ale(),Vl)});var hle=_((Lf,Cb)=>{\"use strict\";var Fst=Lf&&Lf.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),fle=Lf&&Lf.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Fst(e,t,r)};Object.defineProperty(Lf,\"__esModule\",{value:!0});var Rst=ve(\"url\"),ple=Q4(),Tst={options:{method:\"GET\",retry:{limit:2,methods:[\"GET\",\"PUT\",\"HEAD\",\"DELETE\",\"OPTIONS\",\"TRACE\"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:[\"ETIMEDOUT\",\"ECONNRESET\",\"EADDRINUSE\",\"ECONNREFUSED\",\"EPIPE\",\"ENOTFOUND\",\"ENETUNREACH\",\"EAI_AGAIN\"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{\"user-agent\":\"got (https://github.com/sindresorhus/got)\"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:\"text\",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:\"\",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType===\"json\"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,\"link\"))return!1;let e=t.headers.link.split(\",\"),r;for(let o of e){let a=o.split(\";\");if(a[1].includes(\"next\")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new Rst.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[ple.defaultHandler],mutableDefaults:!1},F4=ple.default(Tst);Lf.default=F4;Cb.exports=F4;Cb.exports.default=F4;Cb.exports.__esModule=!0;fle(Q4(),Lf);fle(b4(),Lf)});var nn={};Vt(nn,{Method:()=>wle,del:()=>Ust,get:()=>N4,getNetworkSettings:()=>Cle,post:()=>O4,put:()=>Mst,request:()=>I1});function mle(t){let e=new URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),e.username&&e.password&&(r.proxyAuth=`${e.username}:${e.password}`),{proxy:r}}async function R4(t){return ol(dle,t,()=>oe.readFilePromise(t).then(e=>(dle.set(t,e),e)))}function Ost({statusCode:t,statusMessage:e},r){let o=Ut(r,t,yt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Zy(r,`${o}${e?` (${e})`:\"\"}`,a)}async function wb(t,{configuration:e,customErrorMessage:r}){try{return await t}catch(o){if(o.name!==\"HTTPError\")throw o;let a=r?.(o,e)??o.response.body?.error;a==null&&(o.message.startsWith(\"Response code\")?a=\"The remote server failed to provide the requested resource\":a=o.message),o.code===\"ETIMEDOUT\"&&o.event===\"socket\"&&(a+=`(can be increased via ${Ut(e,\"httpTimeout\",yt.SETTING)})`);let n=new zt(35,a,u=>{o.response&&u.reportError(35,`  ${zu(e,{label:\"Response Code\",value:_c(yt.NO_HINT,Ost(o.response,e))})}`),o.request&&(u.reportError(35,`  ${zu(e,{label:\"Request Method\",value:_c(yt.NO_HINT,o.request.options.method)})}`),u.reportError(35,`  ${zu(e,{label:\"Request URL\",value:_c(yt.URL,o.request.requestUrl)})}`)),o.request.redirects.length>0&&u.reportError(35,`  ${zu(e,{label:\"Request Redirects\",value:_c(yt.NO_HINT,bN(e,o.request.redirects,yt.URL))})}`),o.request.retryCount===o.request.options.retry.limit&&u.reportError(35,`  ${zu(e,{label:\"Request Retry Count\",value:_c(yt.NO_HINT,`${Ut(e,o.request.retryCount,yt.NUMBER)} (can be increased via ${Ut(e,\"httpRetry\",yt.SETTING)})`)})}`)});throw n.originalError=o,n}}function Cle(t,e){let r=[...e.configuration.get(\"networkSettings\")].sort(([u],[A])=>A.length-u.length),o={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(o),n=typeof t==\"string\"?new URL(t):t;for(let[u,A]of r)if(L4.default.isMatch(n.hostname,u))for(let p of a){let h=A.get(p);h!==null&&typeof o[p]>\"u\"&&(o[p]=h)}for(let u of a)typeof o[u]>\"u\"&&(o[u]=e.configuration.get(u));return o}async function I1(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u=\"GET\",wrapNetworkRequest:A}){let p={target:t,body:e,configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u},h=async()=>await _st(t,e,p),E=typeof A<\"u\"?await A(h,p):h;return await(await r.reduceHook(v=>v.wrapNetworkRequest,E,p))()}async function N4(t,{configuration:e,jsonResponse:r,customErrorMessage:o,wrapNetworkRequest:a,...n}){let u=()=>wb(I1(t,null,{configuration:e,wrapNetworkRequest:a,...n}),{configuration:e,customErrorMessage:o}).then(p=>p.body),A=await(typeof a<\"u\"?u():ol(gle,t,()=>u().then(p=>(gle.set(t,p),p))));return r?JSON.parse(A.toString()):A}async function Mst(t,e,{customErrorMessage:r,...o}){return(await wb(I1(t,e,{...o,method:\"PUT\"}),{customErrorMessage:r,configuration:o.configuration})).body}async function O4(t,e,{customErrorMessage:r,...o}){return(await wb(I1(t,e,{...o,method:\"POST\"}),{customErrorMessage:r,configuration:o.configuration})).body}async function Ust(t,{customErrorMessage:e,...r}){return(await wb(I1(t,null,{...r,method:\"DELETE\"}),{customErrorMessage:e,configuration:r.configuration})).body}async function _st(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u=\"GET\"}){let A=typeof t==\"string\"?new URL(t):t,p=Cle(A,{configuration:r});if(p.enableNetwork===!1)throw new zt(80,`Request to '${A.href}' has been blocked because of your configuration settings`);if(A.protocol===\"http:\"&&!L4.default.isMatch(A.hostname,r.get(\"unsafeHttpWhitelist\")))throw new zt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${A.hostname})`);let E={agent:{http:p.httpProxy?T4.default.httpOverHttp(mle(p.httpProxy)):Lst,https:p.httpsProxy?T4.default.httpsOverHttp(mle(p.httpsProxy)):Nst},headers:o,method:u};E.responseType=n?\"json\":\"buffer\",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e==\"string\"?E.body=e:E.json=e);let I=r.get(\"httpTimeout\"),v=r.get(\"httpRetry\"),x=r.get(\"enableStrictSsl\"),C=p.httpsCaFilePath,R=p.httpsCertFilePath,N=p.httpsKeyFilePath,{default:U}=await Promise.resolve().then(()=>$e(hle())),J=C?await R4(C):void 0,te=R?await R4(R):void 0,ae=N?await R4(N):void 0,fe=U.extend({timeout:{socket:I},retry:v,https:{rejectUnauthorized:x,certificateAuthority:J,certificate:te,key:ae},...E});return r.getLimit(\"networkConcurrency\")(()=>fe(A))}var yle,Ele,L4,T4,gle,dle,Lst,Nst,wle,Ib=Et(()=>{Pt();yle=ve(\"https\"),Ele=ve(\"http\"),L4=$e(Zo()),T4=$e(Yse());Yl();ql();jl();gle=new Map,dle=new Map,Lst=new Ele.Agent({keepAlive:!0}),Nst=new yle.Agent({keepAlive:!0});wle=(a=>(a.GET=\"GET\",a.PUT=\"PUT\",a.POST=\"POST\",a.DELETE=\"DELETE\",a))(wle||{})});var Ji={};Vt(Ji,{availableParallelism:()=>U4,getArchitecture:()=>B1,getArchitectureName:()=>Yst,getArchitectureSet:()=>M4,getCaller:()=>Jst,major:()=>Hst,openUrl:()=>jst});function Gst(){if(process.platform===\"darwin\"||process.platform===\"win32\")return null;let t;try{t=oe.readFileSync(qst)}catch{}if(typeof t<\"u\"){if(t&&(t.includes(\"GLIBC\")||t.includes(\"libc\")))return\"glibc\";if(t&&t.includes(\"musl\"))return\"musl\"}let r=(process.report?.getReport()??{}).sharedObjects??[],o=/\\/(?:(ld-linux-|[^/]+-linux-gnu\\/)|(libc.musl-|ld-musl-))/;return KI(r,a=>{let n=a.match(o);if(!n)return KI.skip;if(n[1])return\"glibc\";if(n[2])return\"musl\";throw new Error(\"Assertion failed: Expected the libc variant to have been detected\")})??null}function B1(){return Ble=Ble??{os:process.platform,cpu:process.arch,libc:Gst()}}function Yst(t=B1()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function M4(){let t=B1();return vle=vle??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function Vst(t){let e=Wst.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf(\"native\")===0,o=e[2]&&e[2].indexOf(\"eval\")===0,a=Kst.exec(e[2]);return o&&a!=null&&(e[2]=a[1],e[3]=a[2],e[4]=a[3]),{file:r?null:e[2],methodName:e[1]||\"<unknown>\",arguments:r?[e[2]]:[],line:e[3]?+e[3]:null,column:e[4]?+e[4]:null}}function Jst(){let e=new Error().stack.split(`\n`)[3];return Vst(e)}function U4(){return typeof Bb.default.availableParallelism<\"u\"?Bb.default.availableParallelism():Math.max(1,Bb.default.cpus().length)}var Bb,Hst,Ile,jst,qst,Ble,vle,Wst,Kst,vb=Et(()=>{Pt();Bb=$e(ve(\"os\"));Db();jl();Hst=Number(process.versions.node.split(\".\")[0]),Ile=new Map([[\"darwin\",\"open\"],[\"linux\",\"xdg-open\"],[\"win32\",\"explorer.exe\"]]).get(process.platform),jst=typeof Ile<\"u\"?async t=>{try{return await _4(Ile,[t],{cwd:V.cwd()}),!0}catch{return!1}}:void 0,qst=\"/usr/bin/ldd\";Wst=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,Kst=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/});function Y4(t,e,r,o,a){let n=A1(r);if(o.isArray||o.type===\"ANY\"&&Array.isArray(n))return Array.isArray(n)?n.map((u,A)=>H4(t,`${e}[${A}]`,u,o,a)):String(n).split(/,/).map(u=>H4(t,e,u,o,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings \"${e}\" cannot be an array`);return H4(t,e,r,o,a)}function H4(t,e,r,o,a){let n=A1(r);switch(o.type){case\"ANY\":return GS(n);case\"SHAPE\":return $st(t,e,r,o,a);case\"MAP\":return eot(t,e,r,o,a)}if(n===null&&!o.isNullable&&o.default!==null)throw new Error(`Non-nullable configuration settings \"${e}\" cannot be set to null`);if(o.values?.includes(n))return n;let A=(()=>{if(o.type===\"BOOLEAN\"&&typeof n!=\"string\")return VI(n);if(typeof n!=\"string\")throw new Error(`Expected configuration setting \"${e}\" to be a string, got ${typeof n}`);let p=iS(n,{env:t.env});switch(o.type){case\"ABSOLUTE_PATH\":{let h=a,E=mM(r);return E&&E[0]!==\"<\"&&(h=V.dirname(E)),V.resolve(h,ue.toPortablePath(p))}case\"LOCATOR_LOOSE\":return xf(p,!1);case\"NUMBER\":return parseInt(p);case\"LOCATOR\":return xf(p);case\"BOOLEAN\":return VI(p);default:return p}})();if(o.values&&!o.values.includes(A))throw new Error(`Invalid value, expected one of ${o.values.join(\", \")}`);return A}function $st(t,e,r,o,a){let n=A1(r);if(typeof n!=\"object\"||Array.isArray(n))throw new it(`Object configuration settings \"${e}\" must be an object`);let u=W4(t,o,{ignoreArrays:!0});if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=`${e}.${A}`;if(!o.properties[A])throw new it(`Unrecognized configuration settings found: ${e}.${A} - run \"yarn config -v\" to see the list of settings supported in Yarn`);u.set(A,Y4(t,h,p,o.properties[A],a))}return u}function eot(t,e,r,o,a){let n=A1(r),u=new Map;if(typeof n!=\"object\"||Array.isArray(n))throw new it(`Map configuration settings \"${e}\" must be an object`);if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=o.normalizeKeys?o.normalizeKeys(A):A,E=`${e}['${h}']`,I=o.valueDefinition;u.set(h,Y4(t,E,p,I,a))}return u}function W4(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case\"SHAPE\":{if(e.isArray&&!r)return[];let o=new Map;for(let[a,n]of Object.entries(e.properties))o.set(a,W4(t,n));return o}case\"MAP\":return e.isArray&&!r?[]:new Map;case\"ABSOLUTE_PATH\":return e.default===null?null:t.projectCwd===null?Array.isArray(e.default)?e.default.map(o=>V.normalize(o)):V.isAbsolute(e.default)?V.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(o=>V.resolve(t.projectCwd,o)):V.resolve(t.projectCwd,e.default);default:return e.default}}function Sb(t,e,r){if(e.type===\"SECRET\"&&typeof t==\"string\"&&r.hideSecrets)return Zst;if(e.type===\"ABSOLUTE_PATH\"&&typeof t==\"string\"&&r.getNativePaths)return ue.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let o=[];for(let a of t)o.push(Sb(a,e,r));return o}if(e.type===\"MAP\"&&t instanceof Map){if(t.size===0)return;let o=new Map;for(let[a,n]of t.entries()){let u=Sb(n,e.valueDefinition,r);typeof u<\"u\"&&o.set(a,u)}return o}if(e.type===\"SHAPE\"&&t instanceof Map){if(t.size===0)return;let o=new Map;for(let[a,n]of t.entries()){let u=e.properties[a],A=Sb(n,u,r);typeof A<\"u\"&&o.set(a,A)}return o}return t}function tot(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(bb)&&(e=(0,Ple.default)(e.slice(bb.length)),t[e]=r);return t}function q4(){let t=`${bb}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r==\"string\")return r;return G4}async function Dle(t){try{return await oe.readFilePromise(t)}catch{return Buffer.of()}}async function rot(t,e){return Buffer.compare(...await Promise.all([Dle(t),Dle(e)]))===0}async function not(t,e){let[r,o]=await Promise.all([oe.statPromise(t),oe.statPromise(e)]);return r.dev===o.dev&&r.ino===o.ino}async function sot({configuration:t,selfPath:e}){let r=t.get(\"yarnPath\");return t.get(\"ignorePath\")||r===null||r===e||await iot(r,e)?null:r}var Ple,Nf,Sle,ble,xle,j4,zst,v1,Xst,FE,bb,G4,Zst,D1,kle,xb,Pb,iot,rA,Ke,P1=Et(()=>{Pt();Ll();Ple=$e(sV()),Nf=$e(td());jt();Sle=$e(ZV()),ble=ve(\"module\"),xle=$e(id()),j4=ve(\"stream\");ose();fE();cM();uM();AM();Tse();fM();vd();Use();WS();ql();nh();Ib();jl();vb();Qf();bo();zst=function(){if(!Nf.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let t=ue.toPortablePath(process.env.GITHUB_EVENT_PATH),e;try{e=oe.readJsonSync(t)}catch{return!1}return!(!(\"repository\"in e)||!e.repository||(e.repository.private??!0))}(),v1=new Set([\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"]),Xst=new Set([\"isTestEnv\",\"injectNpmUser\",\"injectNpmPassword\",\"injectNpm2FaToken\",\"zipDataEpilogue\",\"cacheCheckpointOverride\",\"cacheVersionOverride\",\"lockfileVersionOverride\",\"binFolder\",\"version\",\"flags\",\"profile\",\"gpg\",\"ignoreNode\",\"wrapOutput\",\"home\",\"confDir\",\"registry\",\"ignoreCwd\"]),FE=/^(?!v)[a-z0-9._-]+$/i,bb=\"yarn_\",G4=\".yarnrc.yml\",Zst=\"********\",D1=(E=>(E.ANY=\"ANY\",E.BOOLEAN=\"BOOLEAN\",E.ABSOLUTE_PATH=\"ABSOLUTE_PATH\",E.LOCATOR=\"LOCATOR\",E.LOCATOR_LOOSE=\"LOCATOR_LOOSE\",E.NUMBER=\"NUMBER\",E.STRING=\"STRING\",E.SECRET=\"SECRET\",E.SHAPE=\"SHAPE\",E.MAP=\"MAP\",E))(D1||{}),kle=yt,xb=(r=>(r.JUNCTIONS=\"junctions\",r.SYMLINKS=\"symlinks\",r))(xb||{}),Pb={lastUpdateCheck:{description:\"Last timestamp we checked whether new Yarn versions were available\",type:\"STRING\",default:null},yarnPath:{description:\"Path to the local executable that must be used over the global one\",type:\"ABSOLUTE_PATH\",default:null},ignorePath:{description:\"If true, the local executable will be ignored when using the global one\",type:\"BOOLEAN\",default:!1},globalFolder:{description:\"Folder where all system-global files are stored\",type:\"ABSOLUTE_PATH\",default:EM()},cacheFolder:{description:\"Folder where the cache files must be written\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/cache\"},compressionLevel:{description:\"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)\",type:\"NUMBER\",values:[\"mixed\",0,1,2,3,4,5,6,7,8,9],default:0},virtualFolder:{description:\"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/__virtual__\"},installStatePath:{description:\"Path of the file where the install state will be persisted\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/install-state.gz\"},immutablePatterns:{description:\"Array of glob patterns; files matching them won't be allowed to change during immutable installs\",type:\"STRING\",default:[],isArray:!0},rcFilename:{description:\"Name of the files where the configuration can be found\",type:\"STRING\",default:q4()},enableGlobalCache:{description:\"If true, the system-wide cache folder will be used regardless of `cache-folder`\",type:\"BOOLEAN\",default:!0},cacheMigrationMode:{description:\"Defines the conditions under which Yarn upgrades should cause the cache archives to be regenerated.\",type:\"STRING\",values:[\"always\",\"match-spec\",\"required-only\"],default:\"always\"},enableColors:{description:\"If true, the CLI is allowed to use colors in its output\",type:\"BOOLEAN\",default:aS,defaultText:\"<dynamic>\"},enableHyperlinks:{description:\"If true, the CLI is allowed to use hyperlinks in its output\",type:\"BOOLEAN\",default:SN,defaultText:\"<dynamic>\"},enableInlineBuilds:{description:\"If true, the CLI will print the build output on the command line\",type:\"BOOLEAN\",default:Nf.isCI,defaultText:\"<dynamic>\"},enableMessageNames:{description:\"If true, the CLI will prefix most messages with codes suitable for search engines\",type:\"BOOLEAN\",default:!0},enableProgressBars:{description:\"If true, the CLI is allowed to show a progress bar for long-running events\",type:\"BOOLEAN\",default:!Nf.isCI,defaultText:\"<dynamic>\"},enableTimers:{description:\"If true, the CLI is allowed to print the time spent executing commands\",type:\"BOOLEAN\",default:!0},enableTips:{description:\"If true, installs will print a helpful message every day of the week\",type:\"BOOLEAN\",default:!Nf.isCI,defaultText:\"<dynamic>\"},preferInteractive:{description:\"If true, the CLI will automatically use the interactive mode when called from a TTY\",type:\"BOOLEAN\",default:!1},preferTruncatedLines:{description:\"If true, the CLI will truncate lines that would go beyond the size of the terminal\",type:\"BOOLEAN\",default:!1},progressBarStyle:{description:\"Which style of progress bar should be used (only when progress bars are enabled)\",type:\"STRING\",default:void 0,defaultText:\"<dynamic>\"},defaultLanguageName:{description:\"Default language mode that should be used when a package doesn't offer any insight\",type:\"STRING\",default:\"node\"},defaultProtocol:{description:\"Default resolution protocol used when resolving pure semver and tag ranges\",type:\"STRING\",default:\"npm:\"},enableTransparentWorkspaces:{description:\"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol\",type:\"BOOLEAN\",default:!0},supportedArchitectures:{description:\"Architectures that Yarn will fetch and inject into the resolver\",type:\"SHAPE\",properties:{os:{description:\"Array of supported process.platform strings, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]},cpu:{description:\"Array of supported process.arch strings, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]},libc:{description:\"Array of supported libc libraries, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]}}},enableMirror:{description:\"If true, the downloaded packages will be retrieved and stored in both the local and global folders\",type:\"BOOLEAN\",default:!0},enableNetwork:{description:\"If false, Yarn will refuse to use the network if required to\",type:\"BOOLEAN\",default:!0},enableOfflineMode:{description:\"If true, Yarn will attempt to retrieve files and metadata from the global cache rather than the network\",type:\"BOOLEAN\",default:!1},httpProxy:{description:\"URL of the http proxy that must be used for outgoing http requests\",type:\"STRING\",default:null},httpsProxy:{description:\"URL of the http proxy that must be used for outgoing https requests\",type:\"STRING\",default:null},unsafeHttpWhitelist:{description:\"List of the hostnames for which http queries are allowed (glob patterns are supported)\",type:\"STRING\",default:[],isArray:!0},httpTimeout:{description:\"Timeout of each http request in milliseconds\",type:\"NUMBER\",default:6e4},httpRetry:{description:\"Retry times on http failure\",type:\"NUMBER\",default:3},networkConcurrency:{description:\"Maximal number of concurrent requests\",type:\"NUMBER\",default:50},taskPoolConcurrency:{description:\"Maximal amount of concurrent heavy task processing\",type:\"NUMBER\",default:U4()},taskPoolMode:{description:\"Execution strategy for heavy tasks\",type:\"STRING\",values:[\"async\",\"workers\"],default:\"workers\"},networkSettings:{description:\"Network settings per hostname (glob patterns are supported)\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{httpsCaFilePath:{description:\"Path to file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},enableNetwork:{description:\"If false, the package manager will refuse to use the network if required to\",type:\"BOOLEAN\",default:null},httpProxy:{description:\"URL of the http proxy that must be used for outgoing http requests\",type:\"STRING\",default:null},httpsProxy:{description:\"URL of the http proxy that must be used for outgoing https requests\",type:\"STRING\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null}}}},httpsCaFilePath:{description:\"A path to a file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null},enableStrictSsl:{description:\"If false, SSL certificate errors will be ignored\",type:\"BOOLEAN\",default:!0},logFilters:{description:\"Overrides for log levels\",type:\"SHAPE\",isArray:!0,concatenateValues:!0,properties:{code:{description:\"Code of the messages covered by this override\",type:\"STRING\",default:void 0},text:{description:\"Code of the texts covered by this override\",type:\"STRING\",default:void 0},pattern:{description:\"Code of the patterns covered by this override\",type:\"STRING\",default:void 0},level:{description:\"Log level override, set to null to remove override\",type:\"STRING\",values:Object.values(cS),isNullable:!0,default:void 0}}},enableTelemetry:{description:\"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry\",type:\"BOOLEAN\",default:!0},telemetryInterval:{description:\"Minimal amount of time between two telemetry uploads, in days\",type:\"NUMBER\",default:7},telemetryUserId:{description:\"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.\",type:\"STRING\",default:null},enableHardenedMode:{description:\"If true, automatically enable --check-resolutions --refresh-lockfile on installs\",type:\"BOOLEAN\",default:Nf.isPR&&zst,defaultText:\"<true on public PRs>\"},enableScripts:{description:\"If true, packages are allowed to have install scripts by default\",type:\"BOOLEAN\",default:!0},enableStrictSettings:{description:\"If true, unknown settings will cause Yarn to abort\",type:\"BOOLEAN\",default:!0},enableImmutableCache:{description:\"If true, the cache is reputed immutable and actions that would modify it will throw\",type:\"BOOLEAN\",default:!1},checksumBehavior:{description:\"Enumeration defining what to do when a checksum doesn't match expectations\",type:\"STRING\",default:\"throw\"},injectEnvironmentFiles:{description:\"List of all the environment files that Yarn should inject inside the process when it starts\",type:\"ABSOLUTE_PATH\",default:[\".env.yarn?\"],isArray:!0},packageExtensions:{description:\"Map of package corrections to apply on the dependency tree\",type:\"MAP\",valueDefinition:{description:\"The extension that will be applied to any package whose version matches the specified range\",type:\"SHAPE\",properties:{dependencies:{description:\"The set of dependencies that must be made available to the current package in order for it to work properly\",type:\"MAP\",valueDefinition:{description:\"A range\",type:\"STRING\"}},peerDependencies:{description:\"Inherited dependencies - the consumer of the package will be tasked to provide them\",type:\"MAP\",valueDefinition:{description:\"A semver range\",type:\"STRING\"}},peerDependenciesMeta:{description:\"Extra information related to the dependencies listed in the peerDependencies field\",type:\"MAP\",valueDefinition:{description:\"The peerDependency meta\",type:\"SHAPE\",properties:{optional:{description:\"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error\",type:\"BOOLEAN\",default:!1}}}}}}}};iot=process.platform===\"win32\"?rot:not;rA=class{constructor(e){this.isCI=Nf.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=e}static create(e,r,o){let a=new rA(e);typeof r<\"u\"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(Pb);let n=typeof o<\"u\"?o:r instanceof Map?r:new Map;for(let[u,A]of n)a.activatePlugin(u,A);return a}static async find(e,r,{strict:o=!0,usePathCheck:a=null,useRc:n=!0}={}){let u=tot();delete u.rcFilename;let A=new rA(e),p=await rA.findRcFiles(e),h=await rA.findFolderRcFile(EE());h&&(p.find(me=>me.path===h.path)||p.unshift(h));let E=Mse(p.map(ce=>[ce.path,ce.data])),I=Bt.dot,v=new Set(Object.keys(Pb)),x=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he})=>({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he}),C=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he,...Be})=>{let we={};for(let[g,Ee]of Object.entries(Be))v.has(g)&&(we[g]=Ee);return we},R=({yarnPath:ce,ignorePath:me,...he})=>{let Be={};for(let[we,g]of Object.entries(he))v.has(we)||(Be[we]=g);return Be};if(A.importSettings(x(Pb)),A.useWithSource(\"<environment>\",x(u),e,{strict:!1}),E){let[ce,me]=E;A.useWithSource(ce,x(me),I,{strict:!1})}if(a){if(await sot({configuration:A,selfPath:a})!==null)return A;A.useWithSource(\"<override>\",{ignorePath:!0},e,{strict:!1,overwrite:!0})}let N=await rA.findProjectCwd(e);A.startingCwd=e,A.projectCwd=N;let U=Object.assign(Object.create(null),process.env);A.env=U;let J=await Promise.all(A.get(\"injectEnvironmentFiles\").map(async ce=>{let me=ce.endsWith(\"?\")?await oe.readFilePromise(ce.slice(0,-1),\"utf8\").catch(()=>\"\"):await oe.readFilePromise(ce,\"utf8\");return(0,Sle.parse)(me)}));for(let ce of J)for(let[me,he]of Object.entries(ce))A.env[me]=iS(he,{env:U});if(A.importSettings(C(Pb)),A.useWithSource(\"<environment>\",C(u),e,{strict:o}),E){let[ce,me]=E;A.useWithSource(ce,C(me),I,{strict:o})}let te=ce=>\"default\"in ce?ce.default:ce,ae=new Map([[\"@@core\",sse]]);if(r!==null)for(let ce of r.plugins.keys())ae.set(ce,te(r.modules.get(ce)));for(let[ce,me]of ae)A.activatePlugin(ce,me);let fe=new Map([]);if(r!==null){let ce=new Map;for(let Be of ble.builtinModules)ce.set(Be,()=>Df(Be));for(let[Be,we]of r.modules)ce.set(Be,()=>we);let me=new Set,he=async(Be,we)=>{let{factory:g,name:Ee}=Df(Be);if(!g||me.has(Ee))return;let Pe=new Map(ce),le=ee=>{if(Pe.has(ee))return Pe.get(ee)();throw new it(`This plugin cannot access the package referenced via ${ee} which is neither a builtin, nor an exposed entry`)},ne=await Ky(async()=>te(await g(le)),ee=>`${ee} (when initializing ${Ee}, defined in ${we})`);ce.set(Ee,()=>ne),me.add(Ee),fe.set(Ee,ne)};if(u.plugins)for(let Be of u.plugins.split(\";\")){let we=V.resolve(e,ue.toPortablePath(Be));await he(we,\"<environment>\")}for(let{path:Be,cwd:we,data:g}of p)if(!!n&&!!Array.isArray(g.plugins))for(let Ee of g.plugins){let Pe=typeof Ee!=\"string\"?Ee.path:Ee,le=Ee?.spec??\"\",ne=Ee?.checksum??\"\";if(v1.has(le))continue;let ee=V.resolve(we,ue.toPortablePath(Pe));if(!await oe.existsPromise(ee)){if(!le){let At=Ut(A,V.basename(ee,\".cjs\"),yt.NAME),H=Ut(A,\".gitignore\",yt.NAME),at=Ut(A,A.values.get(\"rcFilename\"),yt.NAME),Re=Ut(A,\"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored\",yt.URL);throw new it(`Missing source for the ${At} plugin - please try to remove the plugin from ${at} then reinstall it manually. This error usually occurs because ${H} is incorrect, check ${Re} to make sure your plugin folder isn't gitignored.`)}if(!le.match(/^https?:/)){let At=Ut(A,V.basename(ee,\".cjs\"),yt.NAME),H=Ut(A,A.values.get(\"rcFilename\"),yt.NAME);throw new it(`Failed to recognize the source for the ${At} plugin - please try to delete the plugin from ${H} then reinstall it manually.`)}let Ie=await N4(le,{configuration:A}),Fe=zs(Ie);if(ne&&ne!==Fe){let At=Ut(A,V.basename(ee,\".cjs\"),yt.NAME),H=Ut(A,A.values.get(\"rcFilename\"),yt.NAME),at=Ut(A,`yarn plugin import ${le}`,yt.CODE);throw new it(`Failed to fetch the ${At} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${H} then run ${at} to reimport it.`)}await oe.mkdirPromise(V.dirname(ee),{recursive:!0}),await oe.writeFilePromise(ee,Ie)}await he(ee,Be)}}for(let[ce,me]of fe)A.activatePlugin(ce,me);if(A.useWithSource(\"<environment>\",R(u),e,{strict:o}),E){let[ce,me]=E;A.useWithSource(ce,R(me),I,{strict:o})}return A.get(\"enableGlobalCache\")&&(A.values.set(\"cacheFolder\",`${A.get(\"globalFolder\")}/cache`),A.sources.set(\"cacheFolder\",\"<internal>\")),A}static async findRcFiles(e){let r=q4(),o=[],a=e,n=null;for(;a!==n;){n=a;let u=V.join(n,r);if(oe.existsSync(u)){let A=await oe.readFilePromise(u,\"utf8\"),p;try{p=Ki(A)}catch{let E=\"\";throw A.match(/^\\s+(?!-)[^:]+\\s+\\S+/m)&&(E=\" (in particular, make sure you list the colons after each key name)\"),new it(`Parse error when loading ${u}; please check it's proper Yaml${E}`)}o.unshift({path:u,cwd:n,data:p})}a=V.dirname(n)}return o}static async findFolderRcFile(e){let r=V.join(e,dr.rc),o;try{o=await oe.readFilePromise(r,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return null;throw n}let a=Ki(o);return{path:r,cwd:e,data:a}}static async findProjectCwd(e){let r=null,o=e,a=null;for(;o!==a;){if(a=o,oe.existsSync(V.join(a,dr.lockfile)))return a;oe.existsSync(V.join(a,dr.manifest))&&(r=a),o=V.dirname(a)}return r}static async updateConfiguration(e,r,o={}){let a=q4(),n=V.join(e,a),u=oe.existsSync(n)?Ki(await oe.readFilePromise(n,\"utf8\")):{},A=!1,p;if(typeof r==\"function\"){try{p=r(u)}catch{p=r({})}if(p===u)return!1}else{p=u;for(let h of Object.keys(r)){let E=u[h],I=r[h],v;if(typeof I==\"function\")try{v=I(E)}catch{v=I(void 0)}else v=I;E!==v&&(v===rA.deleteProperty?delete p[h]:p[h]=v,A=!0)}if(!A)return!1}return await oe.changeFilePromise(n,Ba(p),{automaticNewlines:!0}),!0}static async addPlugin(e,r){r.length!==0&&await rA.updateConfiguration(e,o=>{let a=o.plugins??[];if(a.length===0)return{...o,plugins:r};let n=[],u=[...r];for(let A of a){let p=typeof A!=\"string\"?A.path:A,h=u.find(E=>E.path===p);h?(n.push(h),u=u.filter(E=>E!==h)):n.push(A)}return n.push(...u),{...o,plugins:n}})}static async updateHomeConfiguration(e){let r=EE();return await rA.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<\"u\"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,o]of Object.entries(e))if(o!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings \"${r}\"`);this.settings.set(r,o),this.values.set(r,W4(this,o))}}useWithSource(e,r,o,a){try{this.use(e,r,o,a)}catch(n){throw n.message+=` (in ${Ut(this,e,yt.PATH)})`,n}}use(e,r,o,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get(\"enableStrictSettings\");for(let u of[\"enableStrictSettings\",...Object.keys(r)]){let A=r[u],p=mM(A);if(p&&(e=p),typeof A>\"u\"||u===\"plugins\"||e===\"<environment>\"&&Xst.has(u))continue;if(u===\"rcFilename\")throw new it(`The rcFilename settings can only be set via ${`${bb}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(u);if(!h){let I=EE(),v=e[0]!==\"<\"?V.dirname(e):null;if(a&&!(v!==null?I===v:!1))throw new it(`Unrecognized or legacy configuration settings found: ${u} - run \"yarn config -v\" to see the list of settings supported in Yarn`);this.invalid.set(u,e);continue}if(this.sources.has(u)&&!(n||h.type===\"MAP\"||h.isArray&&h.concatenateValues))continue;let E;try{E=Y4(this,u,A,h,o)}catch(I){throw I.message+=` in ${Ut(this,e,yt.PATH)}`,I}if(u===\"enableStrictSettings\"&&e!==\"<environment>\"){a=E;continue}if(h.type===\"MAP\"){let I=this.values.get(u);this.values.set(u,new Map(n?[...I,...E]:[...E,...I])),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let I=this.values.get(u);this.values.set(u,n?[...I,...E]:[...E,...I]),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else this.values.set(u,E),this.sources.set(u,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key \"${e}\"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:o=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>\"u\")throw new it(`Couldn't find a configuration settings named \"${e}\"`);return Sb(a,n,{hideSecrets:r,getNativePaths:o})}getSubprocessStreams(e,{header:r,prefix:o,report:a}){let n,u,A=oe.createWriteStream(e);if(this.get(\"enableInlineBuilds\")){let p=a.createStreamReporter(`${o} ${Ut(this,\"STDOUT\",\"green\")}`),h=a.createStreamReporter(`${o} ${Ut(this,\"STDERR\",\"red\")}`);n=new j4.PassThrough,n.pipe(p),n.pipe(A),u=new j4.PassThrough,u.pipe(h),u.pipe(A)}else n=A,u=A,typeof r<\"u\"&&n.write(`${r}\n`);return{stdout:n,stderr:u}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let o of r.resolvers||[])e.push(new o);return new Dd([new c1,new Xn,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let o of r.fetchers||[])e.push(new o);return new hE([new gE,new mE,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let o of r.linkers||[])e.push(new o);return e}getSupportedArchitectures(){let e=B1(),r=this.get(\"supportedArchitectures\"),o=r.get(\"os\");o!==null&&(o=o.map(u=>u===\"current\"?e.os:u));let a=r.get(\"cpu\");a!==null&&(a=a.map(u=>u===\"current\"?e.cpu:u));let n=r.get(\"libc\");return n!==null&&(n=sl(n,u=>u===\"current\"?e.libc??sl.skip:u)),{os:o,cpu:a,libc:n}}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let e=this.packageExtensions,r=(o,a,{userProvided:n=!1}={})=>{if(!xa(o.range))throw new Error(\"Only semver ranges are allowed as keys for the packageExtensions setting\");let u=new Ot;u.load(a,{yamlCompatibilityMode:!0});let A=Yy(e,o.identHash),p=[];A.push([o.range,p]);let h={status:\"inactive\",userProvided:n,parentDescriptor:o};for(let E of u.dependencies.values())p.push({...h,type:\"Dependency\",descriptor:E});for(let E of u.peerDependencies.values())p.push({...h,type:\"PeerDependency\",descriptor:E});for(let[E,I]of u.peerDependenciesMeta)for(let[v,x]of Object.entries(I))p.push({...h,type:\"PeerDependencyMeta\",selector:E,key:v,value:x})};await this.triggerHook(o=>o.registerPackageExtensions,this,r);for(let[o,a]of this.get(\"packageExtensions\"))r(ih(o,!0),nS(a),{userProvided:!0});return e}normalizeLocator(e){return xa(e.reference)?Qs(e,`${this.get(\"defaultProtocol\")}${e.reference}`):FE.test(e.reference)?Qs(e,`${this.get(\"defaultProtocol\")}${e.reference}`):e}normalizeDependency(e){return xa(e.range)?In(e,`${this.get(\"defaultProtocol\")}${e.range}`):FE.test(e.range)?In(e,`${this.get(\"defaultProtocol\")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,o])=>[r,this.normalizeDependency(o)]))}normalizePackage(e,{packageExtensions:r}){let o=e1(e),a=r.get(e.identHash);if(typeof a<\"u\"){let u=e.version;if(u!==null){for(let[A,p]of a)if(!!kf(u,A))for(let h of p)switch(h.status===\"inactive\"&&(h.status=\"redundant\"),h.type){case\"Dependency\":typeof o.dependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",o.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case\"PeerDependency\":typeof o.peerDependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",o.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case\"PeerDependencyMeta\":{let E=o.peerDependenciesMeta.get(h.selector);(typeof E>\"u\"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status=\"active\",ol(o.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:EN(h)}}}let n=u=>u.scope?`${u.scope}__${u.name}`:`${u.name}`;for(let u of o.peerDependenciesMeta.keys()){let A=Js(u);o.peerDependencies.has(A.identHash)||o.peerDependencies.set(A.identHash,In(A,\"*\"))}for(let u of o.peerDependencies.values()){if(u.scope===\"types\")continue;let A=n(u),p=eA(\"types\",A),h=fn(p);o.peerDependencies.has(p.identHash)||o.peerDependenciesMeta.has(h)||(o.peerDependencies.set(p.identHash,In(p,\"*\")),o.peerDependenciesMeta.set(h,{optional:!0}))}return o.dependencies=new Map(ks(o.dependencies,([,u])=>Sa(u))),o.peerDependencies=new Map(ks(o.peerDependencies,([,u])=>Sa(u))),o}getLimit(e){return ol(this.limits,e,()=>(0,xle.default)(this.get(e)))}async triggerHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);!n||await n(...r)}}async triggerMultipleHooks(e,r){for(let o of r)await this.triggerHook(e,...o)}async reduceHook(e,r,...o){let a=r;for(let n of this.plugins.values()){let u=n.hooks;if(!u)continue;let A=e(u);!A||(a=await A(a,...o))}return a}async firstHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);if(!n)continue;let u=await n(...r);if(typeof u<\"u\")return u}return null}},Ke=rA;Ke.deleteProperty=Symbol(),Ke.telemetry=null});var Ur={};Vt(Ur,{EndStrategy:()=>z4,ExecError:()=>kb,PipeError:()=>S1,execvp:()=>_4,pipevp:()=>Gc});function bd(t){return t!==null&&typeof t.fd==\"number\"}function K4(){}function V4(){for(let t of xd)t.kill()}async function Gc(t,e,{cwd:r,env:o=process.env,strict:a=!1,stdin:n=null,stdout:u,stderr:A,end:p=2}){let h=[\"pipe\",\"pipe\",\"pipe\"];n===null?h[0]=\"ignore\":bd(n)&&(h[0]=n),bd(u)&&(h[1]=u),bd(A)&&(h[2]=A);let E=(0,J4.default)(t,e,{cwd:ue.fromPortablePath(r),env:{...o,PWD:ue.fromPortablePath(r)},stdio:h});xd.add(E),xd.size===1&&(process.on(\"SIGINT\",K4),process.on(\"SIGTERM\",V4)),!bd(n)&&n!==null&&n.pipe(E.stdin),bd(u)||E.stdout.pipe(u,{end:!1}),bd(A)||E.stderr.pipe(A,{end:!1});let I=()=>{for(let v of new Set([u,A]))bd(v)||v.end()};return new Promise((v,x)=>{E.on(\"error\",C=>{xd.delete(E),xd.size===0&&(process.off(\"SIGINT\",K4),process.off(\"SIGTERM\",V4)),(p===2||p===1)&&I(),x(C)}),E.on(\"close\",(C,R)=>{xd.delete(E),xd.size===0&&(process.off(\"SIGINT\",K4),process.off(\"SIGTERM\",V4)),(p===2||p===1&&C!==0)&&I(),C===0||!a?v({code:X4(C,R)}):x(new S1({fileName:t,code:C,signal:R}))})})}async function _4(t,e,{cwd:r,env:o=process.env,encoding:a=\"utf8\",strict:n=!1}){let u=[\"ignore\",\"pipe\",\"pipe\"],A=[],p=[],h=ue.fromPortablePath(r);typeof o.PWD<\"u\"&&(o={...o,PWD:h});let E=(0,J4.default)(t,e,{cwd:h,env:o,stdio:u});return E.stdout.on(\"data\",I=>{A.push(I)}),E.stderr.on(\"data\",I=>{p.push(I)}),await new Promise((I,v)=>{E.on(\"error\",x=>{let C=Ke.create(r),R=Ut(C,t,yt.PATH);v(new zt(1,`Process ${R} failed to spawn`,N=>{N.reportError(1,`  ${zu(C,{label:\"Thrown Error\",value:_c(yt.NO_HINT,x.message)})}`)}))}),E.on(\"close\",(x,C)=>{let R=a===\"buffer\"?Buffer.concat(A):Buffer.concat(A).toString(a),N=a===\"buffer\"?Buffer.concat(p):Buffer.concat(p).toString(a);x===0||!n?I({code:X4(x,C),stdout:R,stderr:N}):v(new kb({fileName:t,code:x,signal:C,stdout:R,stderr:N}))})})}function X4(t,e){let r=oot.get(e);return typeof r<\"u\"?128+r:t??1}function aot(t,e,{configuration:r,report:o}){o.reportError(1,`  ${zu(r,t!==null?{label:\"Exit Code\",value:_c(yt.NUMBER,t)}:{label:\"Exit Signal\",value:_c(yt.CODE,e)})}`)}var J4,z4,S1,kb,xd,oot,Db=Et(()=>{Pt();J4=$e(sT());P1();Yl();ql();z4=(o=>(o[o.Never=0]=\"Never\",o[o.ErrorCode=1]=\"ErrorCode\",o[o.Always=2]=\"Always\",o))(z4||{}),S1=class extends zt{constructor({fileName:r,code:o,signal:a}){let n=Ke.create(V.cwd()),u=Ut(n,r,yt.PATH);super(1,`Child ${u} reported an error`,A=>{aot(o,a,{configuration:n,report:A})});this.code=X4(o,a)}},kb=class extends S1{constructor({fileName:r,code:o,signal:a,stdout:n,stderr:u}){super({fileName:r,code:o,signal:a});this.stdout=n,this.stderr=u}};xd=new Set;oot=new Map([[\"SIGINT\",2],[\"SIGQUIT\",3],[\"SIGKILL\",9],[\"SIGTERM\",15]])});function Fle(t){Qle=t}function b1(){return typeof Z4>\"u\"&&(Z4=Qle()),Z4}var Z4,Qle,$4=Et(()=>{Qle=()=>{throw new Error(\"Assertion failed: No libzip instance is available, and no factory was configured\")}});var Rle=_((Qb,tU)=>{var lot=Object.assign({},ve(\"fs\")),eU=function(){var t=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(t=t||__filename),function(e){e=e||{};var r=typeof e<\"u\"?e:{},o,a;r.ready=new Promise(function(We,tt){o=We,a=tt});var n={},u;for(u in r)r.hasOwnProperty(u)&&(n[u]=r[u]);var A=[],p=\"./this.program\",h=function(We,tt){throw tt},E=!1,I=!0,v=\"\";function x(We){return r.locateFile?r.locateFile(We,v):v+We}var C,R,N,U;I&&(E?v=ve(\"path\").dirname(v)+\"/\":v=__dirname+\"/\",C=function(tt,It){var nr=ii(tt);return nr?It?nr:nr.toString():(N||(N=lot),U||(U=ve(\"path\")),tt=U.normalize(tt),N.readFileSync(tt,It?null:\"utf8\"))},R=function(tt){var It=C(tt,!0);return It.buffer||(It=new Uint8Array(It)),Ee(It.buffer),It},process.argv.length>1&&(p=process.argv[1].replace(/\\\\/g,\"/\")),A=process.argv.slice(2),h=function(We){process.exit(We)},r.inspect=function(){return\"[Emscripten Module object]\"});var J=r.print||console.log.bind(console),te=r.printErr||console.warn.bind(console);for(u in n)n.hasOwnProperty(u)&&(r[u]=n[u]);n=null,r.arguments&&(A=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ae=0,fe=function(We){ae=We},ce;r.wasmBinary&&(ce=r.wasmBinary);var me=r.noExitRuntime||!0;typeof WebAssembly!=\"object\"&&Ti(\"no native wasm support detected\");function he(We,tt,It){switch(tt=tt||\"i8\",tt.charAt(tt.length-1)===\"*\"&&(tt=\"i32\"),tt){case\"i1\":return He[We>>0];case\"i8\":return He[We>>0];case\"i16\":return cp((We>>1)*2);case\"i32\":return Os((We>>2)*4);case\"i64\":return Os((We>>2)*4);case\"float\":return cu((We>>2)*4);case\"double\":return lp((We>>3)*8);default:Ti(\"invalid type for getValue: \"+tt)}return null}var Be,we=!1,g;function Ee(We,tt){We||Ti(\"Assertion failed: \"+tt)}function Pe(We){var tt=r[\"_\"+We];return Ee(tt,\"Cannot call unknown function \"+We+\", make sure it is exported\"),tt}function le(We,tt,It,nr,$){var ye={string:function(es){var bi=0;if(es!=null&&es!==0){var jo=(es.length<<2)+1;bi=Un(jo),At(es,bi,jo)}return bi},array:function(es){var bi=Un(es.length);return Re(es,bi),bi}};function Ne(es){return tt===\"string\"?Ie(es):tt===\"boolean\"?Boolean(es):es}var pt=Pe(We),ht=[],Tt=0;if(nr)for(var er=0;er<nr.length;er++){var $r=ye[It[er]];$r?(Tt===0&&(Tt=ms()),ht[er]=$r(nr[er])):ht[er]=nr[er]}var qi=pt.apply(null,ht);return qi=Ne(qi),Tt!==0&&_s(Tt),qi}function ne(We,tt,It,nr){It=It||[];var $=It.every(function(Ne){return Ne===\"number\"}),ye=tt!==\"string\";return ye&&$&&!nr?Pe(We):function(){return le(We,tt,It,arguments,nr)}}var ee=new TextDecoder(\"utf8\");function Ie(We,tt){if(!We)return\"\";for(var It=We+tt,nr=We;!(nr>=It)&&Te[nr];)++nr;return ee.decode(Te.subarray(We,nr))}function Fe(We,tt,It,nr){if(!(nr>0))return 0;for(var $=It,ye=It+nr-1,Ne=0;Ne<We.length;++Ne){var pt=We.charCodeAt(Ne);if(pt>=55296&&pt<=57343){var ht=We.charCodeAt(++Ne);pt=65536+((pt&1023)<<10)|ht&1023}if(pt<=127){if(It>=ye)break;tt[It++]=pt}else if(pt<=2047){if(It+1>=ye)break;tt[It++]=192|pt>>6,tt[It++]=128|pt&63}else if(pt<=65535){if(It+2>=ye)break;tt[It++]=224|pt>>12,tt[It++]=128|pt>>6&63,tt[It++]=128|pt&63}else{if(It+3>=ye)break;tt[It++]=240|pt>>18,tt[It++]=128|pt>>12&63,tt[It++]=128|pt>>6&63,tt[It++]=128|pt&63}}return tt[It]=0,It-$}function At(We,tt,It){return Fe(We,Te,tt,It)}function H(We){for(var tt=0,It=0;It<We.length;++It){var nr=We.charCodeAt(It);nr>=55296&&nr<=57343&&(nr=65536+((nr&1023)<<10)|We.charCodeAt(++It)&1023),nr<=127?++tt:nr<=2047?tt+=2:nr<=65535?tt+=3:tt+=4}return tt}function at(We){var tt=H(We)+1,It=Ni(tt);return It&&Fe(We,He,It,tt),It}function Re(We,tt){He.set(We,tt)}function ke(We,tt){return We%tt>0&&(We+=tt-We%tt),We}var xe,He,Te,Je,je,b,w,S,y,F;function z(We){xe=We,r.HEAP_DATA_VIEW=F=new DataView(We),r.HEAP8=He=new Int8Array(We),r.HEAP16=Je=new Int16Array(We),r.HEAP32=b=new Int32Array(We),r.HEAPU8=Te=new Uint8Array(We),r.HEAPU16=je=new Uint16Array(We),r.HEAPU32=w=new Uint32Array(We),r.HEAPF32=S=new Float32Array(We),r.HEAPF64=y=new Float64Array(We)}var X=r.INITIAL_MEMORY||16777216,Z,ie=[],be=[],Le=[],ot=!1;function dt(){if(r.preRun)for(typeof r.preRun==\"function\"&&(r.preRun=[r.preRun]);r.preRun.length;)bt(r.preRun.shift());oo(ie)}function qt(){ot=!0,oo(be)}function $t(){if(r.postRun)for(typeof r.postRun==\"function\"&&(r.postRun=[r.postRun]);r.postRun.length;)Qr(r.postRun.shift());oo(Le)}function bt(We){ie.unshift(We)}function an(We){be.unshift(We)}function Qr(We){Le.unshift(We)}var mr=0,br=null,Wr=null;function Kn(We){mr++,r.monitorRunDependencies&&r.monitorRunDependencies(mr)}function Ls(We){if(mr--,r.monitorRunDependencies&&r.monitorRunDependencies(mr),mr==0&&(br!==null&&(clearInterval(br),br=null),Wr)){var tt=Wr;Wr=null,tt()}}r.preloadedImages={},r.preloadedAudios={};function Ti(We){r.onAbort&&r.onAbort(We),We+=\"\",te(We),we=!0,g=1,We=\"abort(\"+We+\"). Build with -s ASSERTIONS=1 for more info.\";var tt=new WebAssembly.RuntimeError(We);throw a(tt),tt}var ps=\"data:application/octet-stream;base64,\";function io(We){return We.startsWith(ps)}var Si=\"data:application/octet-stream;base64,AGFzbQEAAAAB/wEkYAN/f38Bf2ABfwF/YAJ/fwF/YAF/AGAEf39/fwF/YAN/f38AYAV/f39/fwF/YAJ/fwBgBH9/f38AYAABf2AFf39/fn8BfmAEf35/fwF/YAR/f35/AX5gAn9+AX9gA398fwBgA39/fgF/YAF/AX5gBn9/f39/fwF/YAN/fn8Bf2AEf39/fwF+YAV/f35/fwF/YAR/f35/AX9gA39/fgF+YAJ/fgBgAn9/AX5gBX9/f39/AGADf35/AX5gBX5+f35/AX5gA39/fwF+YAZ/fH9/f38Bf2AAAGAHf35/f39+fwF/YAV/fn9/fwF/YAV/f39/fwF+YAJ+fwF/YAJ/fAACJQYBYQFhAAMBYQFiAAEBYQFjAAABYQFkAAEBYQFlAAIBYQFmAAED5wHlAQMAAwEDAwEHDAgDFgcNEgEDDRcFAQ8DEAUQAwIBAhgECxkEAQMBBQsFAwMDARACBAMAAggLBwEAAwADGgQDGwYGABwBBgMTFBEHBwcVCx4ABAgHBAICAgAfAQICAgIGFSAAIQAiAAIBBgIHAg0LEw0FAQUCACMDAQAUAAAGBQECBQUDCwsSAgEDBQIHAQEICAACCQQEAQABCAEBCQoBAwkBAQEBBgEGBgYABAIEBAQGEQQEAAARAAEDCQEJAQAJCQkBAQECCgoAAAMPAQEBAwACAgICBQIABwAKBgwHAAADAgICBQEEBQFwAT8/BQcBAYACgIACBgkBfwFBgInBAgsH+gEzAWcCAAFoAFQBaQDqAQFqALsBAWsAwQEBbACpAQFtAKgBAW4ApwEBbwClAQFwAKMBAXEAoAEBcgCbAQFzAMABAXQAugEBdQC5AQF2AEsBdwDiAQF4AMgBAXkAxwEBegDCAQFBAMkBAUIAuAEBQwAGAUQACQFFAKYBAUYAtwEBRwC2AQFIALUBAUkAtAEBSgCzAQFLALIBAUwAsQEBTQCwAQFOAK8BAU8AvAEBUACuAQFRAK0BAVIArAEBUwAaAVQACwFVAKQBAVYAMgFXAQABWACrAQFZAKoBAVoAxgEBXwDFAQEkAMQBAmFhAL8BAmJhAL4BAmNhAL0BCXgBAEEBCz6iAeMBjgGQAVpbjwFYnwGdAVeeAV1coQFZVlWcAZoBmQGYAZcBlgGVAZQBkwGSAZEB6QHoAecB5gHlAeQB4QHfAeAB3gHdAdwB2gHbAYUB2QHYAdcB1gHVAdQB0wHSAdEB0AHPAc4BzQHMAcsBygE4wwEK1N8G5QHMDAEHfwJAIABFDQAgAEEIayIDIABBBGsoAgAiAUF4cSIAaiEFAkAgAUEBcQ0AIAFBA3FFDQEgAyADKAIAIgFrIgNBxIQBKAIASQ0BIAAgAWohACADQciEASgCAEcEQCABQf8BTQRAIAMoAggiAiABQQN2IgRBA3RB3IQBakYaIAIgAygCDCIBRgRAQbSEAUG0hAEoAgBBfiAEd3E2AgAMAwsgAiABNgIMIAEgAjYCCAwCCyADKAIYIQYCQCADIAMoAgwiAUcEQCADKAIIIgIgATYCDCABIAI2AggMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAQJAIAMgAygCHCICQQJ0QeSGAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiACd3E2AgAMAwsgBkEQQRQgBigCECADRhtqIAE2AgAgAUUNAgsgASAGNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNASABIAI2AhQgAiABNgIYDAELIAUoAgQiAUEDcUEDRw0AQbyEASAANgIAIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIADwsgAyAFTw0AIAUoAgQiAUEBcUUNAAJAIAFBAnFFBEAgBUHMhAEoAgBGBEBBzIQBIAM2AgBBwIQBQcCEASgCACAAaiIANgIAIAMgAEEBcjYCBCADQciEASgCAEcNA0G8hAFBADYCAEHIhAFBADYCAA8LIAVByIQBKAIARgRAQciEASADNgIAQbyEAUG8hAEoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgAUF4cSAAaiEAAkAgAUH/AU0EQCAFKAIIIgIgAUEDdiIEQQN0QdyEAWpGGiACIAUoAgwiAUYEQEG0hAFBtIQBKAIAQX4gBHdxNgIADAILIAIgATYCDCABIAI2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgFHBEAgBSgCCCICQcSEASgCAEkaIAIgATYCDCABIAI2AggMAQsCQCAFQRRqIgIoAgAiBA0AIAVBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCICQQJ0QeSGAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIANByIQBKAIARw0BQbyEASAANgIADwsgBSABQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgALIABB/wFNBEAgAEEDdiIBQQN0QdyEAWohAAJ/QbSEASgCACICQQEgAXQiAXFFBEBBtIQBIAEgAnI2AgAgAAwBCyAAKAIICyECIAAgAzYCCCACIAM2AgwgAyAANgIMIAMgAjYCCA8LQR8hAiADQgA3AhAgAEH///8HTQRAIABBCHYiASABQYD+P2pBEHZBCHEiAXQiAiACQYDgH2pBEHZBBHEiAnQiBCAEQYCAD2pBEHZBAnEiBHRBD3YgASACciAEcmsiAUEBdCAAIAFBFWp2QQFxckEcaiECCyADIAI2AhwgAkECdEHkhgFqIQECQAJAAkBBuIQBKAIAIgRBASACdCIHcUUEQEG4hAEgBCAHcjYCACABIAM2AgAgAyABNgIYDAELIABBAEEZIAJBAXZrIAJBH0YbdCECIAEoAgAhAQNAIAEiBCgCBEF4cSAARg0CIAJBHXYhASACQQF0IQIgBCABQQRxaiIHQRBqKAIAIgENAAsgByADNgIQIAMgBDYCGAsgAyADNgIMIAMgAzYCCAwBCyAEKAIIIgAgAzYCDCAEIAM2AgggA0EANgIYIAMgBDYCDCADIAA2AggLQdSEAUHUhAEoAgBBAWsiAEF/IAAbNgIACwuDBAEDfyACQYAETwRAIAAgASACEAIaIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAEEDcUUEQCAAIQIMAQsgAkEBSARAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALGgAgAARAIAAtAAEEQCAAKAIEEAYLIAAQBgsLoi4BDH8jAEEQayIMJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEG0hAEoAgAiBUEQIABBC2pBeHEgAEELSRsiCEEDdiICdiIBQQNxBEAgAUF/c0EBcSACaiIDQQN0IgFB5IQBaigCACIEQQhqIQACQCAEKAIIIgIgAUHchAFqIgFGBEBBtIQBIAVBfiADd3E2AgAMAQsgAiABNgIMIAEgAjYCCAsgBCADQQN0IgFBA3I2AgQgASAEaiIBIAEoAgRBAXI2AgQMDQsgCEG8hAEoAgAiCk0NASABBEACQEECIAJ0IgBBACAAa3IgASACdHEiAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqIgNBA3QiAEHkhAFqKAIAIgQoAggiASAAQdyEAWoiAEYEQEG0hAEgBUF+IAN3cSIFNgIADAELIAEgADYCDCAAIAE2AggLIARBCGohACAEIAhBA3I2AgQgBCAIaiICIANBA3QiASAIayIDQQFyNgIEIAEgBGogAzYCACAKBEAgCkEDdiIBQQN0QdyEAWohB0HIhAEoAgAhBAJ/IAVBASABdCIBcUUEQEG0hAEgASAFcjYCACAHDAELIAcoAggLIQEgByAENgIIIAEgBDYCDCAEIAc2AgwgBCABNgIIC0HIhAEgAjYCAEG8hAEgAzYCAAwNC0G4hAEoAgAiBkUNASAGQQAgBmtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRB5IYBaigCACIBKAIEQXhxIAhrIQMgASECA0ACQCACKAIQIgBFBEAgAigCFCIARQ0BCyAAKAIEQXhxIAhrIgIgAyACIANJIgIbIQMgACABIAIbIQEgACECDAELCyABIAhqIgkgAU0NAiABKAIYIQsgASABKAIMIgRHBEAgASgCCCIAQcSEASgCAEkaIAAgBDYCDCAEIAA2AggMDAsgAUEUaiICKAIAIgBFBEAgASgCECIARQ0EIAFBEGohAgsDQCACIQcgACIEQRRqIgIoAgAiAA0AIARBEGohAiAEKAIQIgANAAsgB0EANgIADAsLQX8hCCAAQb9/Sw0AIABBC2oiAEF4cSEIQbiEASgCACIJRQ0AQQAgCGshAwJAAkACQAJ/QQAgCEGAAkkNABpBHyAIQf///wdLDQAaIABBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCAIIABBFWp2QQFxckEcagsiBUECdEHkhgFqKAIAIgJFBEBBACEADAELQQAhACAIQQBBGSAFQQF2ayAFQR9GG3QhAQNAAkAgAigCBEF4cSAIayIHIANPDQAgAiEEIAciAw0AQQAhAyACIQAMAwsgACACKAIUIgcgByACIAFBHXZBBHFqKAIQIgJGGyAAIAcbIQAgAUEBdCEBIAINAAsLIAAgBHJFBEBBAiAFdCIAQQAgAGtyIAlxIgBFDQMgAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqQQJ0QeSGAWooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAhrIgEgA0khAiABIAMgAhshAyAAIAQgAhshBCAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAERQ0AIANBvIQBKAIAIAhrTw0AIAQgCGoiBiAETQ0BIAQoAhghBSAEIAQoAgwiAUcEQCAEKAIIIgBBxIQBKAIASRogACABNgIMIAEgADYCCAwKCyAEQRRqIgIoAgAiAEUEQCAEKAIQIgBFDQQgBEEQaiECCwNAIAIhByAAIgFBFGoiAigCACIADQAgAUEQaiECIAEoAhAiAA0ACyAHQQA2AgAMCQsgCEG8hAEoAgAiAk0EQEHIhAEoAgAhAwJAIAIgCGsiAUEQTwRAQbyEASABNgIAQciEASADIAhqIgA2AgAgACABQQFyNgIEIAIgA2ogATYCACADIAhBA3I2AgQMAQtByIQBQQA2AgBBvIQBQQA2AgAgAyACQQNyNgIEIAIgA2oiACAAKAIEQQFyNgIECyADQQhqIQAMCwsgCEHAhAEoAgAiBkkEQEHAhAEgBiAIayIBNgIAQcyEAUHMhAEoAgAiAiAIaiIANgIAIAAgAUEBcjYCBCACIAhBA3I2AgQgAkEIaiEADAsLQQAhACAIQS9qIgkCf0GMiAEoAgAEQEGUiAEoAgAMAQtBmIgBQn83AgBBkIgBQoCggICAgAQ3AgBBjIgBIAxBDGpBcHFB2KrVqgVzNgIAQaCIAUEANgIAQfCHAUEANgIAQYAgCyIBaiIFQQAgAWsiB3EiAiAITQ0KQeyHASgCACIEBEBB5IcBKAIAIgMgAmoiASADTQ0LIAEgBEsNCwtB8IcBLQAAQQRxDQUCQAJAQcyEASgCACIDBEBB9IcBIQADQCADIAAoAgAiAU8EQCABIAAoAgRqIANLDQMLIAAoAggiAA0ACwtBABApIgFBf0YNBiACIQVBkIgBKAIAIgNBAWsiACABcQRAIAIgAWsgACABakEAIANrcWohBQsgBSAITQ0GIAVB/v///wdLDQZB7IcBKAIAIgQEQEHkhwEoAgAiAyAFaiIAIANNDQcgACAESw0HCyAFECkiACABRw0BDAgLIAUgBmsgB3EiBUH+////B0sNBSAFECkiASAAKAIAIAAoAgRqRg0EIAEhAAsCQCAAQX9GDQAgCEEwaiAFTQ0AQZSIASgCACIBIAkgBWtqQQAgAWtxIgFB/v///wdLBEAgACEBDAgLIAEQKUF/RwRAIAEgBWohBSAAIQEMCAtBACAFaxApGgwFCyAAIgFBf0cNBgwECwALQQAhBAwHC0EAIQEMBQsgAUF/Rw0CC0HwhwFB8IcBKAIAQQRyNgIACyACQf7///8HSw0BIAIQKSEBQQAQKSEAIAFBf0YNASAAQX9GDQEgACABTQ0BIAAgAWsiBSAIQShqTQ0BC0HkhwFB5IcBKAIAIAVqIgA2AgBB6IcBKAIAIABJBEBB6IcBIAA2AgALAkACQAJAQcyEASgCACIHBEBB9IcBIQADQCABIAAoAgAiAyAAKAIEIgJqRg0CIAAoAggiAA0ACwwCC0HEhAEoAgAiAEEAIAAgAU0bRQRAQcSEASABNgIAC0EAIQBB+IcBIAU2AgBB9IcBIAE2AgBB1IQBQX82AgBB2IQBQYyIASgCADYCAEGAiAFBADYCAANAIABBA3QiA0HkhAFqIANB3IQBaiICNgIAIANB6IQBaiACNgIAIABBAWoiAEEgRw0AC0HAhAEgBUEoayIDQXggAWtBB3FBACABQQhqQQdxGyIAayICNgIAQcyEASAAIAFqIgA2AgAgACACQQFyNgIEIAEgA2pBKDYCBEHQhAFBnIgBKAIANgIADAILIAAtAAxBCHENACADIAdLDQAgASAHTQ0AIAAgAiAFajYCBEHMhAEgB0F4IAdrQQdxQQAgB0EIakEHcRsiAGoiAjYCAEHAhAFBwIQBKAIAIAVqIgEgAGsiADYCACACIABBAXI2AgQgASAHakEoNgIEQdCEAUGciAEoAgA2AgAMAQtBxIQBKAIAIAFLBEBBxIQBIAE2AgALIAEgBWohAkH0hwEhAAJAAkACQAJAAkACQANAIAIgACgCAEcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAQtB9IcBIQADQCAHIAAoAgAiAk8EQCACIAAoAgRqIgQgB0sNAwsgACgCCCEADAALAAsgACABNgIAIAAgACgCBCAFajYCBCABQXggAWtBB3FBACABQQhqQQdxG2oiCSAIQQNyNgIEIAJBeCACa0EHcUEAIAJBCGpBB3EbaiIFIAggCWoiBmshAiAFIAdGBEBBzIQBIAY2AgBBwIQBQcCEASgCACACaiIANgIAIAYgAEEBcjYCBAwDCyAFQciEASgCAEYEQEHIhAEgBjYCAEG8hAFBvIQBKAIAIAJqIgA2AgAgBiAAQQFyNgIEIAAgBmogADYCAAwDCyAFKAIEIgBBA3FBAUYEQCAAQXhxIQcCQCAAQf8BTQRAIAUoAggiAyAAQQN2IgBBA3RB3IQBakYaIAMgBSgCDCIBRgRAQbSEAUG0hAEoAgBBfiAAd3E2AgAMAgsgAyABNgIMIAEgAzYCCAwBCyAFKAIYIQgCQCAFIAUoAgwiAUcEQCAFKAIIIgAgATYCDCABIAA2AggMAQsCQCAFQRRqIgAoAgAiAw0AIAVBEGoiACgCACIDDQBBACEBDAELA0AgACEEIAMiAUEUaiIAKAIAIgMNACABQRBqIQAgASgCECIDDQALIARBADYCAAsgCEUNAAJAIAUgBSgCHCIDQQJ0QeSGAWoiACgCAEYEQCAAIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiADd3E2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAE2AgAgAUUNAQsgASAINgIYIAUoAhAiAARAIAEgADYCECAAIAE2AhgLIAUoAhQiAEUNACABIAA2AhQgACABNgIYCyAFIAdqIQUgAiAHaiECCyAFIAUoAgRBfnE2AgQgBiACQQFyNgIEIAIgBmogAjYCACACQf8BTQRAIAJBA3YiAEEDdEHchAFqIQICf0G0hAEoAgAiAUEBIAB0IgBxRQRAQbSEASAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAwtBHyEAIAJB////B00EQCACQQh2IgAgAEGA/j9qQRB2QQhxIgN0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgA3IgAHJrIgBBAXQgAiAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QeSGAWohBAJAQbiEASgCACIDQQEgAHQiAXFFBEBBuIQBIAEgA3I2AgAgBCAGNgIAIAYgBDYCGAwBCyACQQBBGSAAQQF2ayAAQR9GG3QhACAEKAIAIQEDQCABIgMoAgRBeHEgAkYNAyAAQR12IQEgAEEBdCEAIAMgAUEEcWoiBCgCECIBDQALIAQgBjYCECAGIAM2AhgLIAYgBjYCDCAGIAY2AggMAgtBwIQBIAVBKGsiA0F4IAFrQQdxQQAgAUEIakEHcRsiAGsiAjYCAEHMhAEgACABaiIANgIAIAAgAkEBcjYCBCABIANqQSg2AgRB0IQBQZyIASgCADYCACAHIARBJyAEa0EHcUEAIARBJ2tBB3EbakEvayIAIAAgB0EQakkbIgJBGzYCBCACQfyHASkCADcCECACQfSHASkCADcCCEH8hwEgAkEIajYCAEH4hwEgBTYCAEH0hwEgATYCAEGAiAFBADYCACACQRhqIQADQCAAQQc2AgQgAEEIaiEBIABBBGohACABIARJDQALIAIgB0YNAyACIAIoAgRBfnE2AgQgByACIAdrIgRBAXI2AgQgAiAENgIAIARB/wFNBEAgBEEDdiIAQQN0QdyEAWohAgJ/QbSEASgCACIBQQEgAHQiAHFFBEBBtIQBIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBzYCCCAAIAc2AgwgByACNgIMIAcgADYCCAwEC0EfIQAgB0IANwIQIARB////B00EQCAEQQh2IgAgAEGA/j9qQRB2QQhxIgJ0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgAnIgAHJrIgBBAXQgBCAAQRVqdkEBcXJBHGohAAsgByAANgIcIABBAnRB5IYBaiEDAkBBuIQBKAIAIgJBASAAdCIBcUUEQEG4hAEgASACcjYCACADIAc2AgAgByADNgIYDAELIARBAEEZIABBAXZrIABBH0YbdCEAIAMoAgAhAQNAIAEiAigCBEF4cSAERg0EIABBHXYhASAAQQF0IQAgAiABQQRxaiIDKAIQIgENAAsgAyAHNgIQIAcgAjYCGAsgByAHNgIMIAcgBzYCCAwDCyADKAIIIgAgBjYCDCADIAY2AgggBkEANgIYIAYgAzYCDCAGIAA2AggLIAlBCGohAAwFCyACKAIIIgAgBzYCDCACIAc2AgggB0EANgIYIAcgAjYCDCAHIAA2AggLQcCEASgCACIAIAhNDQBBwIQBIAAgCGsiATYCAEHMhAFBzIQBKAIAIgIgCGoiADYCACAAIAFBAXI2AgQgAiAIQQNyNgIEIAJBCGohAAwDC0GEhAFBMDYCAEEAIQAMAgsCQCAFRQ0AAkAgBCgCHCICQQJ0QeSGAWoiACgCACAERgRAIAAgATYCACABDQFBuIQBIAlBfiACd3EiCTYCAAwCCyAFQRBBFCAFKAIQIARGG2ogATYCACABRQ0BCyABIAU2AhggBCgCECIABEAgASAANgIQIAAgATYCGAsgBCgCFCIARQ0AIAEgADYCFCAAIAE2AhgLAkAgA0EPTQRAIAQgAyAIaiIAQQNyNgIEIAAgBGoiACAAKAIEQQFyNgIEDAELIAQgCEEDcjYCBCAGIANBAXI2AgQgAyAGaiADNgIAIANB/wFNBEAgA0EDdiIAQQN0QdyEAWohAgJ/QbSEASgCACIBQQEgAHQiAHFFBEBBtIQBIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBjYCCCAAIAY2AgwgBiACNgIMIAYgADYCCAwBC0EfIQAgA0H///8HTQRAIANBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCADIABBFWp2QQFxckEcaiEACyAGIAA2AhwgBkIANwIQIABBAnRB5IYBaiECAkACQCAJQQEgAHQiAXFFBEBBuIQBIAEgCXI2AgAgAiAGNgIAIAYgAjYCGAwBCyADQQBBGSAAQQF2ayAAQR9GG3QhACACKAIAIQgDQCAIIgEoAgRBeHEgA0YNAiAAQR12IQIgAEEBdCEAIAEgAkEEcWoiAigCECIIDQALIAIgBjYCECAGIAE2AhgLIAYgBjYCDCAGIAY2AggMAQsgASgCCCIAIAY2AgwgASAGNgIIIAZBADYCGCAGIAE2AgwgBiAANgIICyAEQQhqIQAMAQsCQCALRQ0AAkAgASgCHCICQQJ0QeSGAWoiACgCACABRgRAIAAgBDYCACAEDQFBuIQBIAZBfiACd3E2AgAMAgsgC0EQQRQgCygCECABRhtqIAQ2AgAgBEUNAQsgBCALNgIYIAEoAhAiAARAIAQgADYCECAAIAQ2AhgLIAEoAhQiAEUNACAEIAA2AhQgACAENgIYCwJAIANBD00EQCABIAMgCGoiAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBAwBCyABIAhBA3I2AgQgCSADQQFyNgIEIAMgCWogAzYCACAKBEAgCkEDdiIAQQN0QdyEAWohBEHIhAEoAgAhAgJ/QQEgAHQiACAFcUUEQEG0hAEgACAFcjYCACAEDAELIAQoAggLIQAgBCACNgIIIAAgAjYCDCACIAQ2AgwgAiAANgIIC0HIhAEgCTYCAEG8hAEgAzYCAAsgAUEIaiEACyAMQRBqJAAgAAuJAQEDfyAAKAIcIgEQMAJAIAAoAhAiAiABKAIQIgMgAiADSRsiAkUNACAAKAIMIAEoAgggAhAHGiAAIAAoAgwgAmo2AgwgASABKAIIIAJqNgIIIAAgACgCFCACajYCFCAAIAAoAhAgAms2AhAgASABKAIQIAJrIgA2AhAgAA0AIAEgASgCBDYCCAsLzgEBBX8CQCAARQ0AIAAoAjAiAQRAIAAgAUEBayIBNgIwIAENAQsgACgCIARAIABBATYCICAAEBoaCyAAKAIkQQFGBEAgABBDCwJAIAAoAiwiAUUNACAALQAoDQACQCABKAJEIgNFDQAgASgCTCEEA0AgACAEIAJBAnRqIgUoAgBHBEAgAyACQQFqIgJHDQEMAgsLIAUgBCADQQFrIgJBAnRqKAIANgIAIAEgAjYCRAsLIABBAEIAQQUQDhogACgCACIBBEAgARALCyAAEAYLC1oCAn4BfwJ/AkACQCAALQAARQ0AIAApAxAiAUJ9Vg0AIAFCAnwiAiAAKQMIWA0BCyAAQQA6AABBAAwBC0EAIAAoAgQiA0UNABogACACNwMQIAMgAadqLwAACwthAgJ+AX8CQAJAIAAtAABFDQAgACkDECICQn1WDQAgAkICfCIDIAApAwhYDQELIABBADoAAA8LIAAoAgQiBEUEQA8LIAAgAzcDECAEIAKnaiIAIAFBCHY6AAEgACABOgAAC8wCAQJ/IwBBEGsiBCQAAkAgACkDGCADrYinQQFxRQRAIABBDGoiAARAIABBADYCBCAAQRw2AgALQn8hAgwBCwJ+IAAoAgAiBUUEQCAAKAIIIAEgAiADIAAoAgQRDAAMAQsgBSAAKAIIIAEgAiADIAAoAgQRCgALIgJCf1UNAAJAIANBBGsOCwEAAAAAAAAAAAABAAsCQAJAIAAtABhBEHFFBEAgAEEMaiIBBEAgAUEANgIEIAFBHDYCAAsMAQsCfiAAKAIAIgFFBEAgACgCCCAEQQhqQghBBCAAKAIEEQwADAELIAEgACgCCCAEQQhqQghBBCAAKAIEEQoAC0J/VQ0BCyAAQQxqIgAEQCAAQQA2AgQgAEEUNgIACwwBCyAEKAIIIQEgBCgCDCEDIABBDGoiAARAIAAgAzYCBCAAIAE2AgALCyAEQRBqJAAgAguTFQIOfwN+AkACQAJAAkACQAJAAkACQAJAAkACQCAAKALwLQRAIAAoAogBQQFIDQEgACgCACIEKAIsQQJHDQQgAC8B5AENAyAALwHoAQ0DIAAvAewBDQMgAC8B8AENAyAALwH0AQ0DIAAvAfgBDQMgAC8B/AENAyAALwGcAg0DIAAvAaACDQMgAC8BpAINAyAALwGoAg0DIAAvAawCDQMgAC8BsAINAyAALwG0Ag0DIAAvAbgCDQMgAC8BvAINAyAALwHAAg0DIAAvAcQCDQMgAC8ByAINAyAALwHUAg0DIAAvAdgCDQMgAC8B3AINAyAALwHgAg0DIAAvAYgCDQIgAC8BjAINAiAALwGYAg0CQSAhBgNAIAAgBkECdCIFai8B5AENAyAAIAVBBHJqLwHkAQ0DIAAgBUEIcmovAeQBDQMgACAFQQxyai8B5AENAyAGQQRqIgZBgAJHDQALDAMLIABBBzYC/C0gAkF8Rw0FIAFFDQUMBgsgAkEFaiIEIQcMAwtBASEHCyAEIAc2AiwLIAAgAEHoFmoQUSAAIABB9BZqEFEgAC8B5gEhBCAAIABB7BZqKAIAIgxBAnRqQf//AzsB6gEgAEGQFmohECAAQZQWaiERIABBjBZqIQdBACEGIAxBAE4EQEEHQYoBIAQbIQ1BBEEDIAQbIQpBfyEJA0AgBCEIIAAgCyIOQQFqIgtBAnRqLwHmASEEAkACQCAGQQFqIgVB//8DcSIPIA1B//8DcU8NACAEIAhHDQAgBSEGDAELAn8gACAIQQJ0akHMFWogCkH//wNxIA9LDQAaIAgEQEEBIQUgByAIIAlGDQEaIAAgCEECdGpBzBVqIgYgBi8BAEEBajsBACAHDAELQQEhBSAQIBEgBkH//wNxQQpJGwsiBiAGLwEAIAVqOwEAQQAhBgJ/IARFBEBBAyEKQYoBDAELQQNBBCAEIAhGIgUbIQpBBkEHIAUbCyENIAghCQsgDCAORw0ACwsgAEHaE2ovAQAhBCAAIABB+BZqKAIAIgxBAnRqQd4TakH//wM7AQBBACEGIAxBAE4EQEEHQYoBIAQbIQ1BBEEDIAQbIQpBfyEJQQAhCwNAIAQhCCAAIAsiDkEBaiILQQJ0akHaE2ovAQAhBAJAAkAgBkEBaiIFQf//A3EiDyANQf//A3FPDQAgBCAIRw0AIAUhBgwBCwJ/IAAgCEECdGpBzBVqIApB//8DcSAPSw0AGiAIBEBBASEFIAcgCCAJRg0BGiAAIAhBAnRqQcwVaiIGIAYvAQBBAWo7AQAgBwwBC0EBIQUgECARIAZB//8DcUEKSRsLIgYgBi8BACAFajsBAEEAIQYCfyAERQRAQQMhCkGKAQwBC0EDQQQgBCAIRiIFGyEKQQZBByAFGwshDSAIIQkLIAwgDkcNAAsLIAAgAEGAF2oQUSAAIAAoAvgtAn9BEiAAQYoWai8BAA0AGkERIABB0hVqLwEADQAaQRAgAEGGFmovAQANABpBDyAAQdYVai8BAA0AGkEOIABBghZqLwEADQAaQQ0gAEHaFWovAQANABpBDCAAQf4Vai8BAA0AGkELIABB3hVqLwEADQAaQQogAEH6FWovAQANABpBCSAAQeIVai8BAA0AGkEIIABB9hVqLwEADQAaQQcgAEHmFWovAQANABpBBiAAQfIVai8BAA0AGkEFIABB6hVqLwEADQAaQQQgAEHuFWovAQANABpBA0ECIABBzhVqLwEAGwsiBkEDbGoiBEERajYC+C0gACgC/C1BCmpBA3YiByAEQRtqQQN2IgRNBEAgByEEDAELIAAoAowBQQRHDQAgByEECyAEIAJBBGpPQQAgARsNASAEIAdHDQQLIANBAmqtIRIgACkDmC4hFCAAKAKgLiIBQQNqIgdBP0sNASASIAGthiAUhCESDAILIAAgASACIAMQOQwDCyABQcAARgRAIAAoAgQgACgCEGogFDcAACAAIAAoAhBBCGo2AhBBAyEHDAELIAAoAgQgACgCEGogEiABrYYgFIQ3AAAgACAAKAIQQQhqNgIQIAFBPWshByASQcAAIAFrrYghEgsgACASNwOYLiAAIAc2AqAuIABBgMEAQYDKABCHAQwBCyADQQRqrSESIAApA5guIRQCQCAAKAKgLiIBQQNqIgRBP00EQCASIAGthiAUhCESDAELIAFBwABGBEAgACgCBCAAKAIQaiAUNwAAIAAgACgCEEEIajYCEEEDIQQMAQsgACgCBCAAKAIQaiASIAGthiAUhDcAACAAIAAoAhBBCGo2AhAgAUE9ayEEIBJBwAAgAWutiCESCyAAIBI3A5guIAAgBDYCoC4gAEHsFmooAgAiC6xCgAJ9IRMgAEH4FmooAgAhCQJAAkACfwJ+AkACfwJ/IARBOk0EQCATIASthiAShCETIARBBWoMAQsgBEHAAEYEQCAAKAIEIAAoAhBqIBI3AAAgACAAKAIQQQhqNgIQIAmsIRJCBSEUQQoMAgsgACgCBCAAKAIQaiATIASthiAShDcAACAAIAAoAhBBCGo2AhAgE0HAACAEa62IIRMgBEE7awshBSAJrCESIAVBOksNASAFrSEUIAVBBWoLIQcgEiAUhiAThAwBCyAFQcAARgRAIAAoAgQgACgCEGogEzcAACAAIAAoAhBBCGo2AhAgBq1CA30hE0IFIRRBCQwCCyAAKAIEIAAoAhBqIBIgBa2GIBOENwAAIAAgACgCEEEIajYCECAFQTtrIQcgEkHAACAFa62ICyESIAatQgN9IRMgB0E7Sw0BIAetIRQgB0EEagshBCATIBSGIBKEIRMMAQsgB0HAAEYEQCAAKAIEIAAoAhBqIBI3AAAgACAAKAIQQQhqNgIQQQQhBAwBCyAAKAIEIAAoAhBqIBMgB62GIBKENwAAIAAgACgCEEEIajYCECAHQTxrIQQgE0HAACAHa62IIRMLQQAhBQNAIAAgBSIBQZDWAGotAABBAnRqQc4VajMBACEUAn8gBEE8TQRAIBQgBK2GIBOEIRMgBEEDagwBCyAEQcAARgRAIAAoAgQgACgCEGogEzcAACAAIAAoAhBBCGo2AhAgFCETQQMMAQsgACgCBCAAKAIQaiAUIASthiAThDcAACAAIAAoAhBBCGo2AhAgFEHAACAEa62IIRMgBEE9awshBCABQQFqIQUgASAGRw0ACyAAIAQ2AqAuIAAgEzcDmC4gACAAQeQBaiICIAsQhgEgACAAQdgTaiIBIAkQhgEgACACIAEQhwELIAAQiAEgAwRAAkAgACgCoC4iBEE5TgRAIAAoAgQgACgCEGogACkDmC43AAAgACAAKAIQQQhqNgIQDAELIARBGU4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgQ2AqAuCyAEQQlOBH8gACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACgCoC5BEGsFIAQLQQFIDQAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiAAKQOYLjwAAAsgAEEANgKgLiAAQgA3A5guCwsZACAABEAgACgCABAGIAAoAgwQBiAAEAYLC6wBAQJ+Qn8hAwJAIAAtACgNAAJAAkAgACgCIEUNACACQgBTDQAgAlANASABDQELIABBDGoiAARAIABBADYCBCAAQRI2AgALQn8PCyAALQA1DQBCACEDIAAtADQNACACUA0AA0AgACABIAOnaiACIAN9QQEQDiIEQn9XBEAgAEEBOgA1Qn8gAyADUBsPCyAEUEUEQCADIAR8IgMgAloNAgwBCwsgAEEBOgA0CyADC3UCAn4BfwJAAkAgAC0AAEUNACAAKQMQIgJCe1YNACACQgR8IgMgACkDCFgNAQsgAEEAOgAADwsgACgCBCIERQRADwsgACADNwMQIAQgAqdqIgAgAUEYdjoAAyAAIAFBEHY6AAIgACABQQh2OgABIAAgAToAAAtUAgF+AX8CQAJAIAAtAABFDQAgASAAKQMQIgF8IgIgAVQNACACIAApAwhYDQELIABBADoAAEEADwsgACgCBCIDRQRAQQAPCyAAIAI3AxAgAyABp2oLdwECfyMAQRBrIgMkAEF/IQQCQCAALQAoDQAgACgCIEEAIAJBA0kbRQRAIABBDGoiAARAIABBADYCBCAAQRI2AgALDAELIAMgAjYCCCADIAE3AwAgACADQhBBBhAOQgBTDQBBACEEIABBADoANAsgA0EQaiQAIAQLVwICfgF/AkACQCAALQAARQ0AIAApAxAiAUJ7Vg0AIAFCBHwiAiAAKQMIWA0BCyAAQQA6AABBAA8LIAAoAgQiA0UEQEEADwsgACACNwMQIAMgAadqKAAAC1UCAX4BfyAABEACQCAAKQMIUA0AQgEhAQNAIAAoAgAgAkEEdGoQPiABIAApAwhaDQEgAachAiABQgF8IQEMAAsACyAAKAIAEAYgACgCKBAQIAAQBgsLZAECfwJAAkACQCAARQRAIAGnEAkiA0UNAkEYEAkiAkUNAQwDCyAAIQNBGBAJIgINAkEADwsgAxAGC0EADwsgAkIANwMQIAIgATcDCCACIAM2AgQgAkEBOgAAIAIgAEU6AAEgAgudAQICfgF/AkACQCAALQAARQ0AIAApAxAiAkJ3Vg0AIAJCCHwiAyAAKQMIWA0BCyAAQQA6AAAPCyAAKAIEIgRFBEAPCyAAIAM3AxAgBCACp2oiACABQjiIPAAHIAAgAUIwiDwABiAAIAFCKIg8AAUgACABQiCIPAAEIAAgAUIYiDwAAyAAIAFCEIg8AAIgACABQgiIPAABIAAgATwAAAvwAgICfwF+AkAgAkUNACAAIAJqIgNBAWsgAToAACAAIAE6AAAgAkEDSQ0AIANBAmsgAToAACAAIAE6AAEgA0EDayABOgAAIAAgAToAAiACQQdJDQAgA0EEayABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiADYCACADIAIgBGtBfHEiAmoiAUEEayAANgIAIAJBCUkNACADIAA2AgggAyAANgIEIAFBCGsgADYCACABQQxrIAA2AgAgAkEZSQ0AIAMgADYCGCADIAA2AhQgAyAANgIQIAMgADYCDCABQRBrIAA2AgAgAUEUayAANgIAIAFBGGsgADYCACABQRxrIAA2AgAgAiADQQRxQRhyIgFrIgJBIEkNACAArUKBgICAEH4hBSABIANqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsLbwEDfyAAQQxqIQICQAJ/IAAoAiAiAUUEQEF/IQFBEgwBCyAAIAFBAWsiAzYCIEEAIQEgAw0BIABBAEIAQQIQDhogACgCACIARQ0BIAAQGkF/Sg0BQRQLIQAgAgRAIAJBADYCBCACIAA2AgALCyABC58BAgF/AX4CfwJAAn4gACgCACIDKAIkQQFGQQAgAkJ/VRtFBEAgA0EMaiIBBEAgAUEANgIEIAFBEjYCAAtCfwwBCyADIAEgAkELEA4LIgRCf1cEQCAAKAIAIQEgAEEIaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAsMAQtBACACIARRDQEaIABBCGoEQCAAQRs2AgwgAEEGNgIICwtBfwsLJAEBfyAABEADQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsLC5gBAgJ+AX8CQAJAIAAtAABFDQAgACkDECIBQndWDQAgAUIIfCICIAApAwhYDQELIABBADoAAEIADwsgACgCBCIDRQRAQgAPCyAAIAI3AxAgAyABp2oiADEABkIwhiAAMQAHQjiGhCAAMQAFQiiGhCAAMQAEQiCGhCAAMQADQhiGhCAAMQACQhCGhCAAMQABQgiGhCAAMQAAfAsjACAAQShGBEAgAhAGDwsgAgRAIAEgAkEEaygCACAAEQcACwsyACAAKAIkQQFHBEAgAEEMaiIABEAgAEEANgIEIABBEjYCAAtCfw8LIABBAEIAQQ0QDgsPACAABEAgABA2IAAQBgsLgAEBAX8gAC0AKAR/QX8FIAFFBEAgAEEMagRAIABBADYCECAAQRI2AgwLQX8PCyABECoCQCAAKAIAIgJFDQAgAiABECFBf0oNACAAKAIAIQEgAEEMaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAtBfw8LIAAgAUI4QQMQDkI/h6cLC38BA38gACEBAkAgAEEDcQRAA0AgAS0AAEUNAiABQQFqIgFBA3ENAAsLA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsL3wIBCH8gAEUEQEEBDwsCQCAAKAIIIgINAEEBIQQgAC8BBCIHRQRAQQEhAgwBCyAAKAIAIQgDQAJAIAMgCGoiBS0AACICQSBPBEAgAkEYdEEYdUF/Sg0BCyACQQ1NQQBBASACdEGAzABxGw0AAn8CfyACQeABcUHAAUYEQEEBIQYgA0EBagwBCyACQfABcUHgAUYEQCADQQJqIQNBACEGQQEMAgsgAkH4AXFB8AFHBEBBBCECDAULQQAhBiADQQNqCyEDQQALIQlBBCECIAMgB08NAiAFLQABQcABcUGAAUcNAkEDIQQgBg0AIAUtAAJBwAFxQYABRw0CIAkNACAFLQADQcABcUGAAUcNAgsgBCECIANBAWoiAyAHSQ0ACwsgACACNgIIAn8CQCABRQ0AAkAgAUECRw0AIAJBA0cNAEECIQIgAEECNgIICyABIAJGDQBBBSACQQFHDQEaCyACCwtIAgJ+An8jAEEQayIEIAE2AgxCASAArYYhAgNAIAQgAUEEaiIANgIMIAIiA0IBIAEoAgAiBa2GhCECIAAhASAFQX9KDQALIAMLhwUBB38CQAJAIABFBEBBxRQhAiABRQ0BIAFBADYCAEHFFA8LIAJBwABxDQEgACgCCEUEQCAAQQAQIxoLIAAoAgghBAJAIAJBgAFxBEAgBEEBa0ECTw0BDAMLIARBBEcNAgsCQCAAKAIMIgINACAAAn8gACgCACEIIABBEGohCUEAIQICQAJAAkACQCAALwEEIgUEQEEBIQQgBUEBcSEHIAVBAUcNAQwCCyAJRQ0CIAlBADYCAEEADAQLIAVBfnEhBgNAIARBAUECQQMgAiAIai0AAEEBdEHQFGovAQAiCkGAEEkbIApBgAFJG2pBAUECQQMgCCACQQFyai0AAEEBdEHQFGovAQAiBEGAEEkbIARBgAFJG2ohBCACQQJqIQIgBkECayIGDQALCwJ/IAcEQCAEQQFBAkEDIAIgCGotAABBAXRB0BRqLwEAIgJBgBBJGyACQYABSRtqIQQLIAQLEAkiB0UNASAFQQEgBUEBSxshCkEAIQVBACEGA0AgBSAHaiEDAn8gBiAIai0AAEEBdEHQFGovAQAiAkH/AE0EQCADIAI6AAAgBUEBagwBCyACQf8PTQRAIAMgAkE/cUGAAXI6AAEgAyACQQZ2QcABcjoAACAFQQJqDAELIAMgAkE/cUGAAXI6AAIgAyACQQx2QeABcjoAACADIAJBBnZBP3FBgAFyOgABIAVBA2oLIQUgBkEBaiIGIApHDQALIAcgBEEBayICakEAOgAAIAlFDQAgCSACNgIACyAHDAELIAMEQCADQQA2AgQgA0EONgIAC0EACyICNgIMIAINAEEADwsgAUUNACABIAAoAhA2AgALIAIPCyABBEAgASAALwEENgIACyAAKAIAC4MBAQR/QRIhBQJAAkAgACkDMCABWA0AIAGnIQYgACgCQCEEIAJBCHEiB0UEQCAEIAZBBHRqKAIEIgINAgsgBCAGQQR0aiIEKAIAIgJFDQAgBC0ADEUNAUEXIQUgBw0BC0EAIQIgAyAAQQhqIAMbIgAEQCAAQQA2AgQgACAFNgIACwsgAgtuAQF/IwBBgAJrIgUkAAJAIARBgMAEcQ0AIAIgA0wNACAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxAZIAFFBEADQCAAIAVBgAIQLiACQYACayICQf8BSw0ACwsgACAFIAIQLgsgBUGAAmokAAuBAQEBfyMAQRBrIgQkACACIANsIQICQCAAQSdGBEAgBEEMaiACEIwBIQBBACAEKAIMIAAbIQAMAQsgAUEBIAJBxABqIAARAAAiAUUEQEEAIQAMAQtBwAAgAUE/cWsiACABakHAAEEAIABBBEkbaiIAQQRrIAE2AAALIARBEGokACAAC1IBAn9BhIEBKAIAIgEgAEEDakF8cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQA0UNAQtBhIEBIAA2AgAgAQ8LQYSEAUEwNgIAQX8LNwAgAEJ/NwMQIABBADYCCCAAQgA3AwAgAEEANgIwIABC/////w83AyggAEIANwMYIABCADcDIAulAQEBf0HYABAJIgFFBEBBAA8LAkAgAARAIAEgAEHYABAHGgwBCyABQgA3AyAgAUEANgIYIAFC/////w83AxAgAUEAOwEMIAFBv4YoNgIIIAFBAToABiABQQA6AAQgAUIANwNIIAFBgIDYjXg2AkQgAUIANwMoIAFCADcDMCABQgA3AzggAUFAa0EAOwEAIAFCADcDUAsgAUEBOgAFIAFBADYCACABC1gCAn4BfwJAAkAgAC0AAEUNACAAKQMQIgMgAq18IgQgA1QNACAEIAApAwhYDQELIABBADoAAA8LIAAoAgQiBUUEQA8LIAAgBDcDECAFIAOnaiABIAIQBxoLlgEBAn8CQAJAIAJFBEAgAacQCSIFRQ0BQRgQCSIEDQIgBRAGDAELIAIhBUEYEAkiBA0BCyADBEAgA0EANgIEIANBDjYCAAtBAA8LIARCADcDECAEIAE3AwggBCAFNgIEIARBAToAACAEIAJFOgABIAAgBSABIAMQZUEASAR/IAQtAAEEQCAEKAIEEAYLIAQQBkEABSAECwubAgEDfyAALQAAQSBxRQRAAkAgASEDAkAgAiAAIgEoAhAiAAR/IAAFAn8gASABLQBKIgBBAWsgAHI6AEogASgCACIAQQhxBEAgASAAQSByNgIAQX8MAQsgAUIANwIEIAEgASgCLCIANgIcIAEgADYCFCABIAAgASgCMGo2AhBBAAsNASABKAIQCyABKAIUIgVrSwRAIAEgAyACIAEoAiQRAAAaDAILAn8gASwAS0F/SgRAIAIhAANAIAIgACIERQ0CGiADIARBAWsiAGotAABBCkcNAAsgASADIAQgASgCJBEAACAESQ0CIAMgBGohAyABKAIUIQUgAiAEawwBCyACCyEAIAUgAyAAEAcaIAEgASgCFCAAajYCFAsLCwvNBQEGfyAAKAIwIgNBhgJrIQYgACgCPCECIAMhAQNAIAAoAkQgAiAAKAJoIgRqayECIAEgBmogBE0EQCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASELIAMhBQsgBkIuEBciA0UEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyAFEBwMAgsgA0GjEkGoEiACQYACcSIHG0EEECwgB0UEQCADIAkEf0EtBSABLwEIC0H//wNxEA0LIAMgCQR/QS0FIAEvAQoLQf//A3EQDSADIAEvAQwQDSADIAsEf0HjAAUgASgCEAtB//8DcRANIAYgASgCFDYCPAJ/IAZBPGoQjQEiCEUEQEEAIQlBIQwBCwJ/IAgoAhQiBEHQAE4EQCAEQQl0DAELIAhB0AA2AhRBgMACCyEEIAgoAgRBBXQgCCgCCEELdGogCCgCAEEBdmohCSAIKAIMIAQgCCgCEEEFdGpqQaDAAWoLIQQgAyAJQf//A3EQDSADIARB//8DcRANIAMCfyALBEBBACABKQMoQhRUDQEaCyABKAIYCxASIAEpAyAhDCADAn8gAwJ/AkAgBwRAIAxC/v///w9YBEAgASkDKEL/////D1QNAgsgA0F/EBJBfwwDC0F/IAxC/v///w9WDQEaCyAMpwsQEiABKQMoIgxC/////w8gDEL/////D1QbpwsQEiADIAEoAjAiBAR/IAQvAQQFQQALQf//A3EQDSADIAEoAjQgAhBsIAVBgAYQbGpB//8DcRANIAdFBEAgAyABKAI4IgQEfyAELwEEBUEAC0H//wNxEA0gAyABLwE8EA0gAyABLwFAEA0gAyABKAJEEBIgAyABKQNIIgxC/////w8gDEL/////D1QbpxASCyADLQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAMQCCAFEBwMAgsgACAGIAMtAAAEfiADKQMQBUIACxAbIQQgAxAIIARBf0wNACABKAIwIgMEQCAAIAMQYUF/TA0BCyAFBEAgACAFQYAGEGtBf0wNAQsgBRAcIAEoAjQiBQRAIAAgBSACEGtBAEgNAgsgBw0CIAEoAjgiAUUNAiAAIAEQYUEATg0CDAELIAUQHAtBfyEKCyAGQUBrJAAgCgtNAQJ/IAEtAAAhAgJAIAAtAAAiA0UNACACIANHDQADQCABLQABIQIgAC0AASIDRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAyACawvcAwICfgF/IAOtIQQgACkDmC4hBQJAIAACfyAAAn4gACgCoC4iBkEDaiIDQT9NBEAgBCAGrYYgBYQMAQsgBkHAAEYEQCAAKAIEIAAoAhBqIAU3AAAgACgCEEEIagwCCyAAKAIEIAAoAhBqIAQgBq2GIAWENwAAIAAgACgCEEEIajYCECAGQT1rIQMgBEHAACAGa62ICyIENwOYLiAAIAM2AqAuIANBOU4EQCAAKAIEIAAoAhBqIAQ3AAAgACAAKAIQQQhqNgIQDAILIANBGU4EQCAAKAIEIAAoAhBqIAQ+AAAgACAAKAIQQQRqNgIQIAAgACkDmC5CIIgiBDcDmC4gACAAKAKgLkEgayIDNgKgLgsgA0EJTgR/IAAoAgQgACgCEGogBD0AACAAIAAoAhBBAmo2AhAgACkDmC5CEIghBCAAKAKgLkEQawUgAwtBAUgNASAAKAIQCyIDQQFqNgIQIAAoAgQgA2ogBDwAAAsgAEEANgKgLiAAQgA3A5guIAAoAgQgACgCEGogAjsAACAAIAAoAhBBAmoiAzYCECAAKAIEIANqIAJBf3M7AAAgACAAKAIQQQJqIgM2AhAgAgRAIAAoAgQgA2ogASACEAcaIAAgACgCECACajYCEAsLrAQCAX8BfgJAIAANACABUA0AIAMEQCADQQA2AgQgA0ESNgIAC0EADwsCQAJAIAAgASACIAMQiQEiBEUNAEEYEAkiAkUEQCADBEAgA0EANgIEIANBDjYCAAsCQCAEKAIoIgBFBEAgBCkDGCEBDAELIABBADYCKCAEKAIoQgA3AyAgBCAEKQMYIgUgBCkDICIBIAEgBVQbIgE3AxgLIAQpAwggAVYEQANAIAQoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAQpAwhUDQALCyAEKAIAEAYgBCgCBBAGIAQQBgwBCyACQQA2AhQgAiAENgIQIAJBABABNgIMIAJBADYCCCACQgA3AgACf0E4EAkiAEUEQCADBEAgA0EANgIEIANBDjYCAAtBAAwBCyAAQQA2AgggAEIANwMAIABCADcDICAAQoCAgIAQNwIsIABBADoAKCAAQQA2AhQgAEIANwIMIABBADsBNCAAIAI2AgggAEEkNgIEIABCPyACQQBCAEEOQSQRDAAiASABQgBTGzcDGCAACyIADQEgAigCECIDBEACQCADKAIoIgBFBEAgAykDGCEBDAELIABBADYCKCADKAIoQgA3AyAgAyADKQMYIgUgAykDICIBIAEgBVQbIgE3AxgLIAMpAwggAVYEQANAIAMoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAMpAwhUDQALCyADKAIAEAYgAygCBBAGIAMQBgsgAhAGC0EAIQALIAALiwwBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQciEASgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RB3IQBakYaIAAoAgwiAyAERw0CQbSEAUG0hAEoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgNHBEAgACgCCCICQcSEASgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAAQRRqIgIoAgAiBA0AIABBEGoiAigCACIEDQBBACEDDAELA0AgAiEHIAQiA0EUaiICKAIAIgQNACADQRBqIQIgAygCECIEDQALIAdBADYCAAsgBkUNAgJAIAAgACgCHCIEQQJ0QeSGAWoiAigCAEYEQCACIAM2AgAgAw0BQbiEAUG4hAEoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAM2AgAgA0UNAwsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNAiADIAI2AhQgAiADNgIYDAILIAUoAgQiAkEDcUEDRw0BQbyEASABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAsCQCAFKAIEIgJBAnFFBEAgBUHMhAEoAgBGBEBBzIQBIAA2AgBBwIQBQcCEASgCACABaiIBNgIAIAAgAUEBcjYCBCAAQciEASgCAEcNA0G8hAFBADYCAEHIhAFBADYCAA8LIAVByIQBKAIARgRAQciEASAANgIAQbyEAUG8hAEoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAkF4cSABaiEBAkAgAkH/AU0EQCAFKAIIIgQgAkEDdiICQQN0QdyEAWpGGiAEIAUoAgwiA0YEQEG0hAFBtIQBKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgNHBEAgBSgCCCICQcSEASgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAFQRRqIgQoAgAiAg0AIAVBEGoiBCgCACICDQBBACEDDAELA0AgBCEHIAIiA0EUaiIEKAIAIgINACADQRBqIQQgAygCECICDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCIEQQJ0QeSGAWoiAigCAEYEQCACIAM2AgAgAw0BQbiEAUG4hAEoAgBBfiAEd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAM2AgAgA0UNAQsgAyAGNgIYIAUoAhAiAgRAIAMgAjYCECACIAM2AhgLIAUoAhQiAkUNACADIAI2AhQgAiADNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABByIQBKAIARw0BQbyEASABNgIADwsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFB/wFNBEAgAUEDdiICQQN0QdyEAWohAQJ/QbSEASgCACIDQQEgAnQiAnFFBEBBtIQBIAIgA3I2AgAgAQwBCyABKAIICyECIAEgADYCCCACIAA2AgwgACABNgIMIAAgAjYCCA8LQR8hAiAAQgA3AhAgAUH///8HTQRAIAFBCHYiAiACQYD+P2pBEHZBCHEiBHQiAiACQYDgH2pBEHZBBHEiA3QiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAEciACcmsiAkEBdCABIAJBFWp2QQFxckEcaiECCyAAIAI2AhwgAkECdEHkhgFqIQcCQAJAQbiEASgCACIEQQEgAnQiA3FFBEBBuIQBIAMgBHI2AgAgByAANgIAIAAgBzYCGAwBCyABQQBBGSACQQF2ayACQR9GG3QhAiAHKAIAIQMDQCADIgQoAgRBeHEgAUYNAiACQR12IQMgAkEBdCECIAQgA0EEcWoiB0EQaigCACIDDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC1gCAX8BfgJAAn9BACAARQ0AGiAArUIChiICpyIBIABBBHJBgIAESQ0AGkF/IAEgAkIgiKcbCyIBEAkiAEUNACAAQQRrLQAAQQNxRQ0AIABBACABEBkLIAALQwEDfwJAIAJFDQADQCAALQAAIgQgAS0AACIFRgRAIAFBAWohASAAQQFqIQAgAkEBayICDQEMAgsLIAQgBWshAwsgAwsUACAAEEAgACgCABAgIAAoAgQQIAutBAIBfgV/IwBBEGsiBCQAIAAgAWshBgJAAkAgAUEBRgRAIAAgBi0AACACEBkMAQsgAUEJTwRAIAAgBikAADcAACAAIAJBAWtBB3FBAWoiBWohACACIAVrIgFFDQIgBSAGaiECA0AgACACKQAANwAAIAJBCGohAiAAQQhqIQAgAUEIayIBDQALDAILAkACQAJAAkAgAUEEaw4FAAICAgECCyAEIAYoAAAiATYCBCAEIAE2AgAMAgsgBCAGKQAANwMADAELQQghByAEQQhqIQgDQCAIIAYgByABIAEgB0sbIgUQByAFaiEIIAcgBWsiBw0ACyAEIAQpAwg3AwALAkAgBQ0AIAJBEEkNACAEKQMAIQMgAkEQayIGQQR2QQFqQQdxIgEEQANAIAAgAzcACCAAIAM3AAAgAkEQayECIABBEGohACABQQFrIgENAAsLIAZB8ABJDQADQCAAIAM3AHggACADNwBwIAAgAzcAaCAAIAM3AGAgACADNwBYIAAgAzcAUCAAIAM3AEggACADNwBAIAAgAzcAOCAAIAM3ADAgACADNwAoIAAgAzcAICAAIAM3ABggACADNwAQIAAgAzcACCAAIAM3AAAgAEGAAWohACACQYABayICQQ9LDQALCyACQQhPBEBBCCAFayEBA0AgACAEKQMANwAAIAAgAWohACACIAFrIgJBB0sNAAsLIAJFDQEgACAEIAIQBxoLIAAgAmohAAsgBEEQaiQAIAALXwECfyAAKAIIIgEEQCABEAsgAEEANgIICwJAIAAoAgQiAUUNACABKAIAIgJBAXFFDQAgASgCEEF+Rw0AIAEgAkF+cSICNgIAIAINACABECAgAEEANgIECyAAQQA6AAwL1wICBH8BfgJAAkAgACgCQCABp0EEdGooAgAiA0UEQCACBEAgAkEANgIEIAJBFDYCAAsMAQsgACgCACADKQNIIgdBABAUIQMgACgCACEAIANBf0wEQCACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAQtCACEBIwBBEGsiBiQAQX8hAwJAIABCGkEBEBRBf0wEQCACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAQsgAEIEIAZBCmogAhAtIgRFDQBBHiEAQQEhBQNAIAQQDCAAaiEAIAVBAkcEQCAFQQFqIQUMAQsLIAQtAAAEfyAEKQMQIAQpAwhRBUEAC0UEQCACBEAgAkEANgIEIAJBFDYCAAsgBBAIDAELIAQQCCAAIQMLIAZBEGokACADIgBBAEgNASAHIACtfCIBQn9VDQEgAgRAIAJBFjYCBCACQQQ2AgALC0IAIQELIAELYAIBfgF/AkAgAEUNACAAQQhqEF8iAEUNACABIAEoAjBBAWo2AjAgACADNgIIIAAgAjYCBCAAIAE2AgAgAEI/IAEgA0EAQgBBDiACEQoAIgQgBEIAUxs3AxggACEFCyAFCyIAIAAoAiRBAWtBAU0EQCAAQQBCAEEKEA4aIABBADYCJAsLbgACQAJAAkAgA0IQVA0AIAJFDQECfgJAAkACQCACKAIIDgMCAAEECyACKQMAIAB8DAILIAIpAwAgAXwMAQsgAikDAAsiA0IAUw0AIAEgA1oNAgsgBARAIARBADYCBCAEQRI2AgALC0J/IQMLIAMLggICAX8CfgJAQQEgAiADGwRAIAIgA2oQCSIFRQRAIAQEQCAEQQA2AgQgBEEONgIAC0EADwsgAq0hBgJAAkAgAARAIAAgBhATIgBFBEAgBARAIARBADYCBCAEQQ42AgALDAULIAUgACACEAcaIAMNAQwCCyABIAUgBhARIgdCf1cEQCAEBEAgBCABKAIMNgIAIAQgASgCEDYCBAsMBAsgBiAHVQRAIAQEQCAEQQA2AgQgBEERNgIACwwECyADRQ0BCyACIAVqIgBBADoAACACQQFIDQAgBSECA0AgAi0AAEUEQCACQSA6AAALIAJBAWoiAiAASQ0ACwsLIAUPCyAFEAZBAAuBAQEBfwJAIAAEQCADQYAGcSEFQQAhAwNAAkAgAC8BCCACRw0AIAUgACgCBHFFDQAgA0EATg0DIANBAWohAwsgACgCACIADQALCyAEBEAgBEEANgIEIARBCTYCAAtBAA8LIAEEQCABIAAvAQo7AQALIAAvAQpFBEBBwBQPCyAAKAIMC1cBAX9BEBAJIgNFBEBBAA8LIAMgATsBCiADIAA7AQggA0GABjYCBCADQQA2AgACQCABBEAgAyACIAEQYyIANgIMIAANASADEAZBAA8LIANBADYCDAsgAwvuBQIEfwV+IwBB4ABrIgQkACAEQQhqIgNCADcDICADQQA2AhggA0L/////DzcDECADQQA7AQwgA0G/hig2AgggA0EBOgAGIANBADsBBCADQQA2AgAgA0IANwNIIANBgIDYjXg2AkQgA0IANwMoIANCADcDMCADQgA3AzggA0FAa0EAOwEAIANCADcDUCABKQMIUCIDRQRAIAEoAgAoAgApA0ghBwsCfgJAIAMEQCAHIQkMAQsgByEJA0AgCqdBBHQiBSABKAIAaigCACIDKQNIIgggCSAIIAlUGyIJIAEpAyBWBEAgAgRAIAJBADYCBCACQRM2AgALQn8MAwsgAygCMCIGBH8gBi8BBAVBAAtB//8Dca0gCCADKQMgfHxCHnwiCCAHIAcgCFQbIgcgASkDIFYEQCACBEAgAkEANgIEIAJBEzYCAAtCfwwDCyAAKAIAIAEoAgAgBWooAgApA0hBABAUIQYgACgCACEDIAZBf0wEQCACBEAgAiADKAIMNgIAIAIgAygCEDYCBAtCfwwDCyAEQQhqIANBAEEBIAIQaEJ/UQRAIARBCGoQNkJ/DAMLAkACQCABKAIAIAVqKAIAIgMvAQogBC8BEkkNACADKAIQIAQoAhhHDQAgAygCFCAEKAIcRw0AIAMoAjAgBCgCOBBiRQ0AAkAgBCgCICIGIAMoAhhHBEAgBCkDKCEIDAELIAMpAyAiCyAEKQMoIghSDQAgCyEIIAMpAyggBCkDMFENAgsgBC0AFEEIcUUNACAGDQAgCEIAUg0AIAQpAzBQDQELIAIEQCACQQA2AgQgAkEVNgIACyAEQQhqEDZCfwwDCyABKAIAIAVqKAIAKAI0IAQoAjwQbyEDIAEoAgAgBWooAgAiBUEBOgAEIAUgAzYCNCAEQQA2AjwgBEEIahA2IApCAXwiCiABKQMIVA0ACwsgByAJfSIHQv///////////wAgB0L///////////8AVBsLIQcgBEHgAGokACAHC8YBAQJ/QdgAEAkiAUUEQCAABEAgAEEANgIEIABBDjYCAAtBAA8LIAECf0EYEAkiAkUEQCAABEAgAEEANgIEIABBDjYCAAtBAAwBCyACQQA2AhAgAkIANwMIIAJBADYCACACCyIANgJQIABFBEAgARAGQQAPCyABQgA3AwAgAUEANgIQIAFCADcCCCABQgA3AhQgAUEANgJUIAFCADcCHCABQgA3ACEgAUIANwMwIAFCADcDOCABQUBrQgA3AwAgAUIANwNIIAELgBMCD38CfiMAQdAAayIFJAAgBSABNgJMIAVBN2ohEyAFQThqIRBBACEBA0ACQCAOQQBIDQBB/////wcgDmsgAUgEQEGEhAFBPTYCAEF/IQ4MAQsgASAOaiEOCyAFKAJMIgchAQJAAkACQAJAAkACQAJAAkAgBQJ/AkAgBy0AACIGBEADQAJAAkAgBkH/AXEiBkUEQCABIQYMAQsgBkElRw0BIAEhBgNAIAEtAAFBJUcNASAFIAFBAmoiCDYCTCAGQQFqIQYgAS0AAiEMIAghASAMQSVGDQALCyAGIAdrIQEgAARAIAAgByABEC4LIAENDSAFKAJMIQEgBSgCTCwAAUEwa0EKTw0DIAEtAAJBJEcNAyABLAABQTBrIQ9BASERIAFBA2oMBAsgBSABQQFqIgg2AkwgAS0AASEGIAghAQwACwALIA4hDSAADQggEUUNAkEBIQEDQCAEIAFBAnRqKAIAIgAEQCADIAFBA3RqIAAgAhB4QQEhDSABQQFqIgFBCkcNAQwKCwtBASENIAFBCk8NCANAIAQgAUECdGooAgANCCABQQFqIgFBCkcNAAsMCAtBfyEPIAFBAWoLIgE2AkxBACEIAkAgASwAACIKQSBrIgZBH0sNAEEBIAZ0IgZBidEEcUUNAANAAkAgBSABQQFqIgg2AkwgASwAASIKQSBrIgFBIE8NAEEBIAF0IgFBidEEcUUNACABIAZyIQYgCCEBDAELCyAIIQEgBiEICwJAIApBKkYEQCAFAn8CQCABLAABQTBrQQpPDQAgBSgCTCIBLQACQSRHDQAgASwAAUECdCAEakHAAWtBCjYCACABLAABQQN0IANqQYADaygCACELQQEhESABQQNqDAELIBENCEEAIRFBACELIAAEQCACIAIoAgAiAUEEajYCACABKAIAIQsLIAUoAkxBAWoLIgE2AkwgC0F/Sg0BQQAgC2shCyAIQYDAAHIhCAwBCyAFQcwAahB3IgtBAEgNBiAFKAJMIQELQX8hCQJAIAEtAABBLkcNACABLQABQSpGBEACQCABLAACQTBrQQpPDQAgBSgCTCIBLQADQSRHDQAgASwAAkECdCAEakHAAWtBCjYCACABLAACQQN0IANqQYADaygCACEJIAUgAUEEaiIBNgJMDAILIBENByAABH8gAiACKAIAIgFBBGo2AgAgASgCAAVBAAshCSAFIAUoAkxBAmoiATYCTAwBCyAFIAFBAWo2AkwgBUHMAGoQdyEJIAUoAkwhAQtBACEGA0AgBiESQX8hDSABLAAAQcEAa0E5Sw0HIAUgAUEBaiIKNgJMIAEsAAAhBiAKIQEgBiASQTpsakGf7ABqLQAAIgZBAWtBCEkNAAsgBkETRg0CIAZFDQYgD0EATgRAIAQgD0ECdGogBjYCACAFIAMgD0EDdGopAwA3A0AMBAsgAA0BC0EAIQ0MBQsgBUFAayAGIAIQeCAFKAJMIQoMAgsgD0F/Sg0DC0EAIQEgAEUNBAsgCEH//3txIgwgCCAIQYDAAHEbIQZBACENQaQIIQ8gECEIAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgCkEBaywAACIBQV9xIAEgAUEPcUEDRhsgASASGyIBQdgAaw4hBBISEhISEhISDhIPBg4ODhIGEhISEgIFAxISCRIBEhIEAAsCQCABQcEAaw4HDhILEg4ODgALIAFB0wBGDQkMEQsgBSkDQCEUQaQIDAULQQAhAQJAAkACQAJAAkACQAJAIBJB/wFxDggAAQIDBBcFBhcLIAUoAkAgDjYCAAwWCyAFKAJAIA42AgAMFQsgBSgCQCAOrDcDAAwUCyAFKAJAIA47AQAMEwsgBSgCQCAOOgAADBILIAUoAkAgDjYCAAwRCyAFKAJAIA6sNwMADBALIAlBCCAJQQhLGyEJIAZBCHIhBkH4ACEBCyAQIQcgAUEgcSEMIAUpA0AiFFBFBEADQCAHQQFrIgcgFKdBD3FBsPAAai0AACAMcjoAACAUQg9WIQogFEIEiCEUIAoNAAsLIAUpA0BQDQMgBkEIcUUNAyABQQR2QaQIaiEPQQIhDQwDCyAQIQEgBSkDQCIUUEUEQANAIAFBAWsiASAUp0EHcUEwcjoAACAUQgdWIQcgFEIDiCEUIAcNAAsLIAEhByAGQQhxRQ0CIAkgECAHayIBQQFqIAEgCUgbIQkMAgsgBSkDQCIUQn9XBEAgBUIAIBR9IhQ3A0BBASENQaQIDAELIAZBgBBxBEBBASENQaUIDAELQaYIQaQIIAZBAXEiDRsLIQ8gECEBAkAgFEKAgICAEFQEQCAUIRUMAQsDQCABQQFrIgEgFCAUQgqAIhVCCn59p0EwcjoAACAUQv////+fAVYhByAVIRQgBw0ACwsgFaciBwRAA0AgAUEBayIBIAcgB0EKbiIMQQpsa0EwcjoAACAHQQlLIQogDCEHIAoNAAsLIAEhBwsgBkH//3txIAYgCUF/ShshBgJAIAUpA0AiFEIAUg0AIAkNAEEAIQkgECEHDAoLIAkgFFAgECAHa2oiASABIAlIGyEJDAkLIAUoAkAiAUGKEiABGyIHQQAgCRB6IgEgByAJaiABGyEIIAwhBiABIAdrIAkgARshCQwICyAJBEAgBSgCQAwCC0EAIQEgAEEgIAtBACAGECcMAgsgBUEANgIMIAUgBSkDQD4CCCAFIAVBCGo2AkBBfyEJIAVBCGoLIQhBACEBAkADQCAIKAIAIgdFDQECQCAFQQRqIAcQeSIHQQBIIgwNACAHIAkgAWtLDQAgCEEEaiEIIAkgASAHaiIBSw0BDAILC0F/IQ0gDA0FCyAAQSAgCyABIAYQJyABRQRAQQAhAQwBC0EAIQggBSgCQCEKA0AgCigCACIHRQ0BIAVBBGogBxB5IgcgCGoiCCABSg0BIAAgBUEEaiAHEC4gCkEEaiEKIAEgCEsNAAsLIABBICALIAEgBkGAwABzECcgCyABIAEgC0gbIQEMBQsgACAFKwNAIAsgCSAGIAFBABEdACEBDAQLIAUgBSkDQDwAN0EBIQkgEyEHIAwhBgwCC0F/IQ0LIAVB0ABqJAAgDQ8LIABBICANIAggB2siDCAJIAkgDEgbIgpqIgggCyAIIAtKGyIBIAggBhAnIAAgDyANEC4gAEEwIAEgCCAGQYCABHMQJyAAQTAgCiAMQQAQJyAAIAcgDBAuIABBICABIAggBkGAwABzECcMAAsAC54DAgR/AX4gAARAIAAoAgAiAQRAIAEQGhogACgCABALCyAAKAIcEAYgACgCIBAQIAAoAiQQECAAKAJQIgMEQCADKAIQIgIEQCADKAIAIgEEfwNAIAIgBEECdGooAgAiAgRAA0AgAigCGCEBIAIQBiABIgINAAsgAygCACEBCyABIARBAWoiBEsEQCADKAIQIQIMAQsLIAMoAhAFIAILEAYLIAMQBgsgACgCQCIBBEAgACkDMFAEfyABBSABED5CAiEFAkAgACkDMEICVA0AQQEhAgNAIAAoAkAgAkEEdGoQPiAFIAApAzBaDQEgBachAiAFQgF8IQUMAAsACyAAKAJACxAGCwJAIAAoAkRFDQBBACECQgEhBQNAIAAoAkwgAkECdGooAgAiAUEBOgAoIAFBDGoiASgCAEUEQCABBEAgAUEANgIEIAFBCDYCAAsLIAUgADUCRFoNASAFpyECIAVCAXwhBQwACwALIAAoAkwQBiAAKAJUIgIEQCACKAIIIgEEQCACKAIMIAERAwALIAIQBgsgAEEIahAxIAAQBgsL6gMCAX4EfwJAIAAEfiABRQRAIAMEQCADQQA2AgQgA0ESNgIAC0J/DwsgAkGDIHEEQAJAIAApAzBQDQBBPEE9IAJBAXEbIQcgAkECcUUEQANAIAAgBCACIAMQUyIFBEAgASAFIAcRAgBFDQYLIARCAXwiBCAAKQMwVA0ADAILAAsDQCAAIAQgAiADEFMiBQRAIAECfyAFECJBAWohBgNAQQAgBkUNARogBSAGQQFrIgZqIggtAABBL0cNAAsgCAsiBkEBaiAFIAYbIAcRAgBFDQULIARCAXwiBCAAKQMwVA0ACwsgAwRAIANBADYCBCADQQk2AgALQn8PC0ESIQYCQAJAIAAoAlAiBUUNACABRQ0AQQkhBiAFKQMIUA0AIAUoAhAgAS0AACIHBH9CpesKIQQgASEAA0AgBCAHrUL/AYN8IQQgAC0AASIHBEAgAEEBaiEAIARC/////w+DQiF+IQQMAQsLIASnBUGFKgsgBSgCAHBBAnRqKAIAIgBFDQADQCABIAAoAgAQOEUEQCACQQhxBEAgACkDCCIEQn9RDQMMBAsgACkDECIEQn9RDQIMAwsgACgCGCIADQALCyADBEAgA0EANgIEIAMgBjYCAAtCfyEECyAEBUJ/Cw8LIAMEQCADQgA3AgALIAQL3AQCB38BfgJAAkAgAEUNACABRQ0AIAJCf1UNAQsgBARAIARBADYCBCAEQRI2AgALQQAPCwJAIAAoAgAiB0UEQEGAAiEHQYACEDwiBkUNASAAKAIQEAYgAEGAAjYCACAAIAY2AhALAkACQCAAKAIQIAEtAAAiBQR/QqXrCiEMIAEhBgNAIAwgBa1C/wGDfCEMIAYtAAEiBQRAIAZBAWohBiAMQv////8Pg0IhfiEMDAELCyAMpwVBhSoLIgYgB3BBAnRqIggoAgAiBQRAA0ACQCAFKAIcIAZHDQAgASAFKAIAEDgNAAJAIANBCHEEQCAFKQMIQn9SDQELIAUpAxBCf1ENBAsgBARAIARBADYCBCAEQQo2AgALQQAPCyAFKAIYIgUNAAsLQSAQCSIFRQ0CIAUgATYCACAFIAgoAgA2AhggCCAFNgIAIAVCfzcDCCAFIAY2AhwgACAAKQMIQgF8Igw3AwggDLogB7hEAAAAAAAA6D+iZEUNACAHQQBIDQAgByAHQQF0IghGDQAgCBA8IgpFDQECQCAMQgAgBxtQBEAgACgCECEJDAELIAAoAhAhCUEAIQQDQCAJIARBAnRqKAIAIgYEQANAIAYoAhghASAGIAogBigCHCAIcEECdGoiCygCADYCGCALIAY2AgAgASIGDQALCyAEQQFqIgQgB0cNAAsLIAkQBiAAIAg2AgAgACAKNgIQCyADQQhxBEAgBSACNwMICyAFIAI3AxBBAQ8LIAQEQCAEQQA2AgQgBEEONgIAC0EADwsgBARAIARBADYCBCAEQQ42AgALQQAL3Q8BF38jAEFAaiIHQgA3AzAgB0IANwM4IAdCADcDICAHQgA3AygCQAJAAkACQAJAIAIEQCACQQNxIQggAkEBa0EDTwRAIAJBfHEhBgNAIAdBIGogASAJQQF0IgxqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBAnJqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBBHJqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBBnJqLwEAQQF0aiIKIAovAQBBAWo7AQAgCUEEaiEJIAZBBGsiBg0ACwsgCARAA0AgB0EgaiABIAlBAXRqLwEAQQF0aiIGIAYvAQBBAWo7AQAgCUEBaiEJIAhBAWsiCA0ACwsgBCgCACEJQQ8hCyAHLwE+IhENAgwBCyAEKAIAIQkLQQ4hC0EAIREgBy8BPA0AQQ0hCyAHLwE6DQBBDCELIAcvATgNAEELIQsgBy8BNg0AQQohCyAHLwE0DQBBCSELIAcvATINAEEIIQsgBy8BMA0AQQchCyAHLwEuDQBBBiELIAcvASwNAEEFIQsgBy8BKg0AQQQhCyAHLwEoDQBBAyELIAcvASYNAEECIQsgBy8BJA0AIAcvASJFBEAgAyADKAIAIgBBBGo2AgAgAEHAAjYBACADIAMoAgAiAEEEajYCACAAQcACNgEAQQEhDQwDCyAJQQBHIRtBASELQQEhCQwBCyALIAkgCSALSxshG0EBIQ5BASEJA0AgB0EgaiAJQQF0ai8BAA0BIAlBAWoiCSALRw0ACyALIQkLQX8hCCAHLwEiIg9BAksNAUEEIAcvASQiECAPQQF0amsiBkEASA0BIAZBAXQgBy8BJiISayIGQQBIDQEgBkEBdCAHLwEoIhNrIgZBAEgNASAGQQF0IAcvASoiFGsiBkEASA0BIAZBAXQgBy8BLCIVayIGQQBIDQEgBkEBdCAHLwEuIhZrIgZBAEgNASAGQQF0IAcvATAiF2siBkEASA0BIAZBAXQgBy8BMiIZayIGQQBIDQEgBkEBdCAHLwE0IhxrIgZBAEgNASAGQQF0IAcvATYiDWsiBkEASA0BIAZBAXQgBy8BOCIYayIGQQBIDQEgBkEBdCAHLwE6IgxrIgZBAEgNASAGQQF0IAcvATwiCmsiBkEASA0BIAZBAXQgEWsiBkEASA0BIAZBACAARSAOchsNASAJIBtLIRpBACEIIAdBADsBAiAHIA87AQQgByAPIBBqIgY7AQYgByAGIBJqIgY7AQggByAGIBNqIgY7AQogByAGIBRqIgY7AQwgByAGIBVqIgY7AQ4gByAGIBZqIgY7ARAgByAGIBdqIgY7ARIgByAGIBlqIgY7ARQgByAGIBxqIgY7ARYgByAGIA1qIgY7ARggByAGIBhqIgY7ARogByAGIAxqIgY7ARwgByAGIApqOwEeAkAgAkUNACACQQFHBEAgAkF+cSEGA0AgASAIQQF0ai8BACIKBEAgByAKQQF0aiIKIAovAQAiCkEBajsBACAFIApBAXRqIAg7AQALIAEgCEEBciIMQQF0ai8BACIKBEAgByAKQQF0aiIKIAovAQAiCkEBajsBACAFIApBAXRqIAw7AQALIAhBAmohCCAGQQJrIgYNAAsLIAJBAXFFDQAgASAIQQF0ai8BACICRQ0AIAcgAkEBdGoiAiACLwEAIgJBAWo7AQAgBSACQQF0aiAIOwEACyAJIBsgGhshDUEUIRBBACEWIAUiCiEYQQAhEgJAAkACQCAADgICAAELQQEhCCANQQpLDQNBgQIhEEHw2QAhGEGw2QAhCkEBIRIMAQsgAEECRiEWQQAhEEHw2gAhGEGw2gAhCiAAQQJHBEAMAQtBASEIIA1BCUsNAgtBASANdCITQQFrIRwgAygCACEUQQAhFSANIQZBACEPQQAhDkF/IQIDQEEBIAZ0IRoCQANAIAkgD2shFwJAIAUgFUEBdGovAQAiCCAQTwRAIAogCCAQa0EBdCIAai8BACERIAAgGGotAAAhAAwBC0EAQeAAIAhBAWogEEkiBhshACAIQQAgBhshEQsgDiAPdiEMQX8gF3QhBiAaIQgDQCAUIAYgCGoiCCAMakECdGoiGSAROwECIBkgFzoAASAZIAA6AAAgCA0AC0EBIAlBAWt0IQYDQCAGIgBBAXYhBiAAIA5xDQALIAdBIGogCUEBdGoiBiAGLwEAQQFrIgY7AQAgAEEBayAOcSAAakEAIAAbIQ4gFUEBaiEVIAZB//8DcUUEQCAJIAtGDQIgASAFIBVBAXRqLwEAQQF0ai8BACEJCyAJIA1NDQAgDiAccSIAIAJGDQALQQEgCSAPIA0gDxsiD2siBnQhAiAJIAtJBEAgCyAPayEMIAkhCAJAA0AgAiAHQSBqIAhBAXRqLwEAayICQQFIDQEgAkEBdCECIAZBAWoiBiAPaiIIIAtJDQALIAwhBgtBASAGdCECC0EBIQggEiACIBNqIhNBtApLcQ0DIBYgE0HQBEtxDQMgAygCACICIABBAnRqIgggDToAASAIIAY6AAAgCCAUIBpBAnRqIhQgAmtBAnY7AQIgACECDAELCyAOBEAgFCAOQQJ0aiIAQQA7AQIgACAXOgABIABBwAA6AAALIAMgAygCACATQQJ0ajYCAAsgBCANNgIAQQAhCAsgCAusAQICfgF/IAFBAmqtIQIgACkDmC4hAwJAIAAoAqAuIgFBA2oiBEE/TQRAIAIgAa2GIAOEIQIMAQsgAUHAAEYEQCAAKAIEIAAoAhBqIAM3AAAgACAAKAIQQQhqNgIQQQMhBAwBCyAAKAIEIAAoAhBqIAIgAa2GIAOENwAAIAAgACgCEEEIajYCECABQT1rIQQgAkHAACABa62IIQILIAAgAjcDmC4gACAENgKgLguXAwICfgN/QYDJADMBACECIAApA5guIQMCQCAAKAKgLiIFQYLJAC8BACIGaiIEQT9NBEAgAiAFrYYgA4QhAgwBCyAFQcAARgRAIAAoAgQgACgCEGogAzcAACAAIAAoAhBBCGo2AhAgBiEEDAELIAAoAgQgACgCEGogAiAFrYYgA4Q3AAAgACAAKAIQQQhqNgIQIARBQGohBCACQcAAIAVrrYghAgsgACACNwOYLiAAIAQ2AqAuIAEEQAJAIARBOU4EQCAAKAIEIAAoAhBqIAI3AAAgACAAKAIQQQhqNgIQDAELIARBGU4EQCAAKAIEIAAoAhBqIAI+AAAgACAAKAIQQQRqNgIQIAAgACkDmC5CIIgiAjcDmC4gACAAKAKgLkEgayIENgKgLgsgBEEJTgR/IAAoAgQgACgCEGogAj0AACAAIAAoAhBBAmo2AhAgACkDmC5CEIghAiAAKAKgLkEQawUgBAtBAUgNACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAI8AAALIABBADYCoC4gAEIANwOYLgsL8hQBEn8gASgCCCICKAIAIQUgAigCDCEHIAEoAgAhCCAAQoCAgIDQxwA3A6ApQQAhAgJAAkAgB0EASgRAQX8hDANAAkAgCCACQQJ0aiIDLwEABEAgACAAKAKgKUEBaiIDNgKgKSAAIANBAnRqQawXaiACNgIAIAAgAmpBqClqQQA6AAAgAiEMDAELIANBADsBAgsgAkEBaiICIAdHDQALIABB/C1qIQ8gAEH4LWohESAAKAKgKSIEQQFKDQIMAQsgAEH8LWohDyAAQfgtaiERQX8hDAsDQCAAIARBAWoiAjYCoCkgACACQQJ0akGsF2ogDEEBaiIDQQAgDEECSCIGGyICNgIAIAggAkECdCIEakEBOwEAIAAgAmpBqClqQQA6AAAgACAAKAL4LUEBazYC+C0gBQRAIA8gDygCACAEIAVqLwECazYCAAsgAyAMIAYbIQwgACgCoCkiBEECSA0ACwsgASAMNgIEIARBAXYhBgNAIAAgBkECdGpBrBdqKAIAIQkCQCAGIgJBAXQiAyAESg0AIAggCUECdGohCiAAIAlqQagpaiENIAYhBQNAAkAgAyAETgRAIAMhAgwBCyAIIABBrBdqIgIgA0EBciIEQQJ0aigCACILQQJ0ai8BACIOIAggAiADQQJ0aigCACIQQQJ0ai8BACICTwRAIAIgDkcEQCADIQIMAgsgAyECIABBqClqIgMgC2otAAAgAyAQai0AAEsNAQsgBCECCyAKLwEAIgQgCCAAIAJBAnRqQawXaigCACIDQQJ0ai8BACILSQRAIAUhAgwCCwJAIAQgC0cNACANLQAAIAAgA2pBqClqLQAASw0AIAUhAgwCCyAAIAVBAnRqQawXaiADNgIAIAIhBSACQQF0IgMgACgCoCkiBEwNAAsLIAAgAkECdGpBrBdqIAk2AgAgBkECTgRAIAZBAWshBiAAKAKgKSEEDAELCyAAKAKgKSEDA0AgByEGIAAgA0EBayIENgKgKSAAKAKwFyEKIAAgACADQQJ0akGsF2ooAgAiCTYCsBdBASECAkAgA0EDSA0AIAggCUECdGohDSAAIAlqQagpaiELQQIhA0EBIQUDQAJAIAMgBE4EQCADIQIMAQsgCCAAQawXaiICIANBAXIiB0ECdGooAgAiBEECdGovAQAiDiAIIAIgA0ECdGooAgAiEEECdGovAQAiAk8EQCACIA5HBEAgAyECDAILIAMhAiAAQagpaiIDIARqLQAAIAMgEGotAABLDQELIAchAgsgDS8BACIHIAggACACQQJ0akGsF2ooAgAiA0ECdGovAQAiBEkEQCAFIQIMAgsCQCAEIAdHDQAgCy0AACAAIANqQagpai0AAEsNACAFIQIMAgsgACAFQQJ0akGsF2ogAzYCACACIQUgAkEBdCIDIAAoAqApIgRMDQALC0ECIQMgAEGsF2oiByACQQJ0aiAJNgIAIAAgACgCpClBAWsiBTYCpCkgACgCsBchAiAHIAVBAnRqIAo2AgAgACAAKAKkKUEBayIFNgKkKSAHIAVBAnRqIAI2AgAgCCAGQQJ0aiINIAggAkECdGoiBS8BACAIIApBAnRqIgQvAQBqOwEAIABBqClqIgkgBmoiCyACIAlqLQAAIgIgCSAKai0AACIKIAIgCksbQQFqOgAAIAUgBjsBAiAEIAY7AQIgACAGNgKwF0EBIQVBASECAkAgACgCoCkiBEECSA0AA0AgDS8BACIKIAggAAJ/IAMgAyAETg0AGiAIIAcgA0EBciICQQJ0aigCACIEQQJ0ai8BACIOIAggByADQQJ0aigCACIQQQJ0ai8BACISTwRAIAMgDiASRw0BGiADIAQgCWotAAAgCSAQai0AAEsNARoLIAILIgJBAnRqQawXaigCACIDQQJ0ai8BACIESQRAIAUhAgwCCwJAIAQgCkcNACALLQAAIAAgA2pBqClqLQAASw0AIAUhAgwCCyAAIAVBAnRqQawXaiADNgIAIAIhBSACQQF0IgMgACgCoCkiBEwNAAsLIAZBAWohByAAIAJBAnRqQawXaiAGNgIAIAAoAqApIgNBAUoNAAsgACAAKAKkKUEBayICNgKkKSAAQawXaiIDIAJBAnRqIAAoArAXNgIAIAEoAgQhCSABKAIIIgIoAhAhBiACKAIIIQogAigCBCEQIAIoAgAhDSABKAIAIQcgAEGkF2pCADcBACAAQZwXakIANwEAIABBlBdqQgA3AQAgAEGMF2oiAUIANwEAQQAhBSAHIAMgACgCpClBAnRqKAIAQQJ0akEAOwECAkAgACgCpCkiAkG7BEoNACACQQFqIQIDQCAHIAAgAkECdGpBrBdqKAIAIgRBAnQiEmoiCyAHIAsvAQJBAnRqLwECIgNBAWogBiADIAZJGyIOOwECIAMgBk8hEwJAIAQgCUoNACAAIA5BAXRqQYwXaiIDIAMvAQBBAWo7AQBBACEDIAQgCk4EQCAQIAQgCmtBAnRqKAIAIQMLIBEgESgCACALLwEAIgQgAyAOamxqNgIAIA1FDQAgDyAPKAIAIAMgDSASai8BAmogBGxqNgIACyAFIBNqIQUgAkEBaiICQb0ERw0ACyAFRQ0AIAAgBkEBdGpBjBdqIQQDQCAGIQIDQCAAIAIiA0EBayICQQF0akGMF2oiDy8BACIKRQ0ACyAPIApBAWs7AQAgACADQQF0akGMF2oiAiACLwEAQQJqOwEAIAQgBC8BAEEBayIDOwEAIAVBAkohAiAFQQJrIQUgAg0ACyAGRQ0AQb0EIQIDQCADQf//A3EiBQRAA0AgACACQQFrIgJBAnRqQawXaigCACIDIAlKDQAgByADQQJ0aiIDLwECIAZHBEAgESARKAIAIAYgAy8BAGxqIgQ2AgAgESAEIAMvAQAgAy8BAmxrNgIAIAMgBjsBAgsgBUEBayIFDQALCyAGQQFrIgZFDQEgACAGQQF0akGMF2ovAQAhAwwACwALIwBBIGsiAiABIgAvAQBBAXQiATsBAiACIAEgAC8BAmpBAXQiATsBBCACIAEgAC8BBGpBAXQiATsBBiACIAEgAC8BBmpBAXQiATsBCCACIAEgAC8BCGpBAXQiATsBCiACIAEgAC8BCmpBAXQiATsBDCACIAEgAC8BDGpBAXQiATsBDiACIAEgAC8BDmpBAXQiATsBECACIAEgAC8BEGpBAXQiATsBEiACIAEgAC8BEmpBAXQiATsBFCACIAEgAC8BFGpBAXQiATsBFiACIAEgAC8BFmpBAXQiATsBGCACIAEgAC8BGGpBAXQiATsBGiACIAEgAC8BGmpBAXQiATsBHCACIAAvARwgAWpBAXQ7AR5BACEAIAxBAE4EQANAIAggAEECdGoiAy8BAiIBBEAgAiABQQF0aiIFIAUvAQAiBUEBajsBACADIAWtQoD+A4NCCIhCgpCAgQh+QpDCiKKIAYNCgYKEiBB+QiCIp0H/AXEgBUH/AXGtQoKQgIEIfkKQwoiiiAGDQoGChIgQfkIYiKdBgP4DcXJBECABa3Y7AQALIAAgDEchASAAQQFqIQAgAQ0ACwsLcgEBfyMAQRBrIgQkAAJ/QQAgAEUNABogAEEIaiEAIAFFBEAgAlBFBEAgAARAIABBADYCBCAAQRI2AgALQQAMAgtBAEIAIAMgABA6DAELIAQgAjcDCCAEIAE2AgAgBEIBIAMgABA6CyEAIARBEGokACAACyIAIAAgASACIAMQJiIARQRAQQAPCyAAKAIwQQAgAiADECULAwABC8gFAQR/IABB//8DcSEDIABBEHYhBEEBIQAgAkEBRgRAIAMgAS0AAGpB8f8DcCIAIARqQfH/A3BBEHQgAHIPCwJAIAEEfyACQRBJDQECQCACQa8rSwRAA0AgAkGwK2shAkG1BSEFIAEhAANAIAMgAC0AAGoiAyAEaiADIAAtAAFqIgNqIAMgAC0AAmoiA2ogAyAALQADaiIDaiADIAAtAARqIgNqIAMgAC0ABWoiA2ogAyAALQAGaiIDaiADIAAtAAdqIgNqIQQgBQRAIABBCGohACAFQQFrIQUMAQsLIARB8f8DcCEEIANB8f8DcCEDIAFBsCtqIQEgAkGvK0sNAAsgAkEISQ0BCwNAIAMgAS0AAGoiACAEaiAAIAEtAAFqIgBqIAAgAS0AAmoiAGogACABLQADaiIAaiAAIAEtAARqIgBqIAAgAS0ABWoiAGogACABLQAGaiIAaiAAIAEtAAdqIgNqIQQgAUEIaiEBIAJBCGsiAkEHSw0ACwsCQCACRQ0AIAJBAWshBiACQQNxIgUEQCABIQADQCACQQFrIQIgAyAALQAAaiIDIARqIQQgAEEBaiIBIQAgBUEBayIFDQALCyAGQQNJDQADQCADIAEtAABqIgAgAS0AAWoiBSABLQACaiIGIAEtAANqIgMgBiAFIAAgBGpqamohBCABQQRqIQEgAkEEayICDQALCyADQfH/A3AgBEHx/wNwQRB0cgVBAQsPCwJAIAJFDQAgAkEBayEGIAJBA3EiBQRAIAEhAANAIAJBAWshAiADIAAtAABqIgMgBGohBCAAQQFqIgEhACAFQQFrIgUNAAsLIAZBA0kNAANAIAMgAS0AAGoiACABLQABaiIFIAEtAAJqIgYgAS0AA2oiAyAGIAUgACAEampqaiEEIAFBBGohASACQQRrIgINAAsLIANB8f8DcCAEQfH/A3BBEHRyCx8AIAAgAiADQcCAASgCABEAACEAIAEgAiADEAcaIAALIwAgACAAKAJAIAIgA0HUgAEoAgARAAA2AkAgASACIAMQBxoLzSoCGH8HfiAAKAIMIgIgACgCECIDaiEQIAMgAWshASAAKAIAIgUgACgCBGohA0F/IAAoAhwiBygCpAF0IQRBfyAHKAKgAXQhCyAHKAI4IQwCf0EAIAcoAiwiEUUNABpBACACIAxJDQAaIAJBhAJqIAwgEWpNCyEWIBBBgwJrIRMgASACaiEXIANBDmshFCAEQX9zIRggC0F/cyESIAcoApwBIRUgBygCmAEhDSAHKAKIASEIIAc1AoQBIR0gBygCNCEOIAcoAjAhGSAQQQFqIQ8DQCAIQThyIQYgBSAIQQN2QQdxayELAn8gAiANIAUpAAAgCK2GIB2EIh2nIBJxQQJ0IgFqIgMtAAAiBA0AGiACIAEgDWoiAS0AAjoAACAGIAEtAAEiAWshBiACQQFqIA0gHSABrYgiHacgEnFBAnQiAWoiAy0AACIEDQAaIAIgASANaiIDLQACOgABIAYgAy0AASIDayEGIA0gHSADrYgiHacgEnFBAnRqIgMtAAAhBCACQQJqCyEBIAtBB2ohBSAGIAMtAAEiAmshCCAdIAKtiCEdAkACQAJAIARB/wFxRQ0AAkACQAJAAkACQANAIARBEHEEQCAVIB0gBK1CD4OIIhqnIBhxQQJ0aiECAn8gCCAEQQ9xIgZrIgRBG0sEQCAEIQggBQwBCyAEQThyIQggBSkAACAErYYgGoQhGiAFIARBA3ZrQQdqCyELIAMzAQIhGyAIIAItAAEiA2shCCAaIAOtiCEaIAItAAAiBEEQcQ0CA0AgBEHAAHFFBEAgCCAVIAIvAQJBAnRqIBqnQX8gBHRBf3NxQQJ0aiICLQABIgNrIQggGiADrYghGiACLQAAIgRBEHFFDQEMBAsLIAdB0f4ANgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==\";io(Si)||(Si=x(Si));function Ns(We){try{if(We==Si&&ce)return new Uint8Array(ce);var tt=ii(We);if(tt)return tt;if(R)return R(We);throw\"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)\"}catch(It){Ti(It)}}function so(We,tt){var It,nr,$;try{$=Ns(We),nr=new WebAssembly.Module($),It=new WebAssembly.Instance(nr,tt)}catch(Ne){var ye=Ne.toString();throw te(\"failed to compile wasm module: \"+ye),(ye.includes(\"imported Memory\")||ye.includes(\"memory import\"))&&te(\"Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time).\"),Ne}return[It,nr]}function cc(){var We={a:Ma};function tt($,ye){var Ne=$.exports;r.asm=Ne,Be=r.asm.g,z(Be.buffer),Z=r.asm.W,an(r.asm.h),Ls(\"wasm-instantiate\")}if(Kn(\"wasm-instantiate\"),r.instantiateWasm)try{var It=r.instantiateWasm(We,tt);return It}catch($){return te(\"Module.instantiateWasm callback failed with error: \"+$),!1}var nr=so(Si,We);return tt(nr[0]),r.asm}function cu(We){return F.getFloat32(We,!0)}function lp(We){return F.getFloat64(We,!0)}function cp(We){return F.getInt16(We,!0)}function Os(We){return F.getInt32(We,!0)}function Dn(We,tt){F.setInt32(We,tt,!0)}function oo(We){for(;We.length>0;){var tt=We.shift();if(typeof tt==\"function\"){tt(r);continue}var It=tt.func;typeof It==\"number\"?tt.arg===void 0?Z.get(It)():Z.get(It)(tt.arg):It(tt.arg===void 0?null:tt.arg)}}function Ms(We,tt){var It=new Date(Os((We>>2)*4)*1e3);Dn((tt>>2)*4,It.getUTCSeconds()),Dn((tt+4>>2)*4,It.getUTCMinutes()),Dn((tt+8>>2)*4,It.getUTCHours()),Dn((tt+12>>2)*4,It.getUTCDate()),Dn((tt+16>>2)*4,It.getUTCMonth()),Dn((tt+20>>2)*4,It.getUTCFullYear()-1900),Dn((tt+24>>2)*4,It.getUTCDay()),Dn((tt+36>>2)*4,0),Dn((tt+32>>2)*4,0);var nr=Date.UTC(It.getUTCFullYear(),0,1,0,0,0,0),$=(It.getTime()-nr)/(1e3*60*60*24)|0;return Dn((tt+28>>2)*4,$),Ms.GMTString||(Ms.GMTString=at(\"GMT\")),Dn((tt+40>>2)*4,Ms.GMTString),tt}function ml(We,tt){return Ms(We,tt)}function yl(We,tt,It){Te.copyWithin(We,tt,tt+It)}function ao(We){try{return Be.grow(We-xe.byteLength+65535>>>16),z(Be.buffer),1}catch{}}function Vn(We){var tt=Te.length;We=We>>>0;var It=2147483648;if(We>It)return!1;for(var nr=1;nr<=4;nr*=2){var $=tt*(1+.2/nr);$=Math.min($,We+100663296);var ye=Math.min(It,ke(Math.max(We,$),65536)),Ne=ao(ye);if(Ne)return!0}return!1}function On(We){fe(We)}function Li(We){var tt=Date.now()/1e3|0;return We&&Dn((We>>2)*4,tt),tt}function Mn(){if(Mn.called)return;Mn.called=!0;var We=new Date().getFullYear(),tt=new Date(We,0,1),It=new Date(We,6,1),nr=tt.getTimezoneOffset(),$=It.getTimezoneOffset(),ye=Math.max(nr,$);Dn((ds()>>2)*4,ye*60),Dn((gs()>>2)*4,Number(nr!=$));function Ne($r){var qi=$r.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return qi?qi[1]:\"GMT\"}var pt=Ne(tt),ht=Ne(It),Tt=at(pt),er=at(ht);$<nr?(Dn((wi()>>2)*4,Tt),Dn((wi()+4>>2)*4,er)):(Dn((wi()>>2)*4,er),Dn((wi()+4>>2)*4,Tt))}function _i(We){Mn();var tt=Date.UTC(Os((We+20>>2)*4)+1900,Os((We+16>>2)*4),Os((We+12>>2)*4),Os((We+8>>2)*4),Os((We+4>>2)*4),Os((We>>2)*4),0),It=new Date(tt);Dn((We+24>>2)*4,It.getUTCDay());var nr=Date.UTC(It.getUTCFullYear(),0,1,0,0,0,0),$=(It.getTime()-nr)/(1e3*60*60*24)|0;return Dn((We+28>>2)*4,$),It.getTime()/1e3|0}var tr=typeof atob==\"function\"?atob:function(We){var tt=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",It=\"\",nr,$,ye,Ne,pt,ht,Tt,er=0;We=We.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do Ne=tt.indexOf(We.charAt(er++)),pt=tt.indexOf(We.charAt(er++)),ht=tt.indexOf(We.charAt(er++)),Tt=tt.indexOf(We.charAt(er++)),nr=Ne<<2|pt>>4,$=(pt&15)<<4|ht>>2,ye=(ht&3)<<6|Tt,It=It+String.fromCharCode(nr),ht!==64&&(It=It+String.fromCharCode($)),Tt!==64&&(It=It+String.fromCharCode(ye));while(er<We.length);return It};function Oe(We){if(typeof I==\"boolean\"&&I){var tt;try{tt=Buffer.from(We,\"base64\")}catch{tt=new Buffer(We,\"base64\")}return new Uint8Array(tt.buffer,tt.byteOffset,tt.byteLength)}try{for(var It=tr(We),nr=new Uint8Array(It.length),$=0;$<It.length;++$)nr[$]=It.charCodeAt($);return nr}catch{throw new Error(\"Converting base64 string to bytes failed.\")}}function ii(We){if(!!io(We))return Oe(We.slice(ps.length))}var Ma={e:ml,c:yl,d:Vn,a:On,b:Li,f:_i},hr=cc(),uc=r.___wasm_call_ctors=hr.h,uu=r._zip_ext_count_symlinks=hr.i,Ac=r._zip_file_get_external_attributes=hr.j,El=r._zipstruct_statS=hr.k,DA=r._zipstruct_stat_size=hr.l,Au=r._zipstruct_stat_mtime=hr.m,Ce=r._zipstruct_stat_crc=hr.n,Rt=r._zipstruct_errorS=hr.o,fc=r._zipstruct_error_code_zip=hr.p,Hi=r._zipstruct_stat_comp_size=hr.q,fu=r._zipstruct_stat_comp_method=hr.r,Yt=r._zip_close=hr.s,Cl=r._zip_delete=hr.t,PA=r._zip_dir_add=hr.u,up=r._zip_discard=hr.v,pc=r._zip_error_init_with_code=hr.w,SA=r._zip_get_error=hr.x,Qn=r._zip_file_get_error=hr.y,hi=r._zip_error_strerror=hr.z,hc=r._zip_fclose=hr.A,bA=r._zip_file_add=hr.B,sa=r._free=hr.C,Ni=r._malloc=hr.D,_o=r._zip_source_error=hr.E,Ze=r._zip_source_seek=hr.F,lo=r._zip_file_set_external_attributes=hr.G,gc=r._zip_file_set_mtime=hr.H,pu=r._zip_fopen_index=hr.I,ji=r._zip_fread=hr.J,hu=r._zip_get_name=hr.K,xA=r._zip_get_num_entries=hr.L,Ua=r._zip_source_read=hr.M,dc=r._zip_name_locate=hr.N,hs=r._zip_open_from_source=hr.O,Ht=r._zip_set_file_compression=hr.P,Fn=r._zip_source_buffer=hr.Q,Ci=r._zip_source_buffer_create=hr.R,oa=r._zip_source_close=hr.S,co=r._zip_source_free=hr.T,Us=r._zip_source_keep=hr.U,aa=r._zip_source_open=hr.V,la=r._zip_source_tell=hr.X,Ho=r._zip_stat_index=hr.Y,wi=r.__get_tzname=hr.Z,gs=r.__get_daylight=hr._,ds=r.__get_timezone=hr.$,ms=r.stackSave=hr.aa,_s=r.stackRestore=hr.ba,Un=r.stackAlloc=hr.ca;r.cwrap=ne,r.getValue=he;var Pn;Wr=function We(){Pn||ys(),Pn||(Wr=We)};function ys(We){if(We=We||A,mr>0||(dt(),mr>0))return;function tt(){Pn||(Pn=!0,r.calledRun=!0,!we&&(qt(),o(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),$t()))}r.setStatus?(r.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){r.setStatus(\"\")},1),tt()},1)):tt()}if(r.run=ys,r.preInit)for(typeof r.preInit==\"function\"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return ys(),e}}();typeof Qb==\"object\"&&typeof tU==\"object\"?tU.exports=eU:typeof define==\"function\"&&define.amd?define([],function(){return eU}):typeof Qb==\"object\"&&(Qb.createModule=eU)});var Of,Tle,Lle,Nle=Et(()=>{Of=[\"number\",\"number\"],Tle=(ee=>(ee[ee.ZIP_ER_OK=0]=\"ZIP_ER_OK\",ee[ee.ZIP_ER_MULTIDISK=1]=\"ZIP_ER_MULTIDISK\",ee[ee.ZIP_ER_RENAME=2]=\"ZIP_ER_RENAME\",ee[ee.ZIP_ER_CLOSE=3]=\"ZIP_ER_CLOSE\",ee[ee.ZIP_ER_SEEK=4]=\"ZIP_ER_SEEK\",ee[ee.ZIP_ER_READ=5]=\"ZIP_ER_READ\",ee[ee.ZIP_ER_WRITE=6]=\"ZIP_ER_WRITE\",ee[ee.ZIP_ER_CRC=7]=\"ZIP_ER_CRC\",ee[ee.ZIP_ER_ZIPCLOSED=8]=\"ZIP_ER_ZIPCLOSED\",ee[ee.ZIP_ER_NOENT=9]=\"ZIP_ER_NOENT\",ee[ee.ZIP_ER_EXISTS=10]=\"ZIP_ER_EXISTS\",ee[ee.ZIP_ER_OPEN=11]=\"ZIP_ER_OPEN\",ee[ee.ZIP_ER_TMPOPEN=12]=\"ZIP_ER_TMPOPEN\",ee[ee.ZIP_ER_ZLIB=13]=\"ZIP_ER_ZLIB\",ee[ee.ZIP_ER_MEMORY=14]=\"ZIP_ER_MEMORY\",ee[ee.ZIP_ER_CHANGED=15]=\"ZIP_ER_CHANGED\",ee[ee.ZIP_ER_COMPNOTSUPP=16]=\"ZIP_ER_COMPNOTSUPP\",ee[ee.ZIP_ER_EOF=17]=\"ZIP_ER_EOF\",ee[ee.ZIP_ER_INVAL=18]=\"ZIP_ER_INVAL\",ee[ee.ZIP_ER_NOZIP=19]=\"ZIP_ER_NOZIP\",ee[ee.ZIP_ER_INTERNAL=20]=\"ZIP_ER_INTERNAL\",ee[ee.ZIP_ER_INCONS=21]=\"ZIP_ER_INCONS\",ee[ee.ZIP_ER_REMOVE=22]=\"ZIP_ER_REMOVE\",ee[ee.ZIP_ER_DELETED=23]=\"ZIP_ER_DELETED\",ee[ee.ZIP_ER_ENCRNOTSUPP=24]=\"ZIP_ER_ENCRNOTSUPP\",ee[ee.ZIP_ER_RDONLY=25]=\"ZIP_ER_RDONLY\",ee[ee.ZIP_ER_NOPASSWD=26]=\"ZIP_ER_NOPASSWD\",ee[ee.ZIP_ER_WRONGPASSWD=27]=\"ZIP_ER_WRONGPASSWD\",ee[ee.ZIP_ER_OPNOTSUPP=28]=\"ZIP_ER_OPNOTSUPP\",ee[ee.ZIP_ER_INUSE=29]=\"ZIP_ER_INUSE\",ee[ee.ZIP_ER_TELL=30]=\"ZIP_ER_TELL\",ee[ee.ZIP_ER_COMPRESSED_DATA=31]=\"ZIP_ER_COMPRESSED_DATA\",ee))(Tle||{}),Lle=t=>({get HEAPU8(){return t.HEAPU8},errors:Tle,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint32S:t._malloc(4),malloc:t._malloc,free:t._free,getValue:t.getValue,openFromSource:t.cwrap(\"zip_open_from_source\",\"number\",[\"number\",\"number\",\"number\"]),close:t.cwrap(\"zip_close\",\"number\",[\"number\"]),discard:t.cwrap(\"zip_discard\",null,[\"number\"]),getError:t.cwrap(\"zip_get_error\",\"number\",[\"number\"]),getName:t.cwrap(\"zip_get_name\",\"string\",[\"number\",\"number\",\"number\"]),getNumEntries:t.cwrap(\"zip_get_num_entries\",\"number\",[\"number\",\"number\"]),delete:t.cwrap(\"zip_delete\",\"number\",[\"number\",\"number\"]),statIndex:t.cwrap(\"zip_stat_index\",\"number\",[\"number\",...Of,\"number\",\"number\"]),fopenIndex:t.cwrap(\"zip_fopen_index\",\"number\",[\"number\",...Of,\"number\"]),fread:t.cwrap(\"zip_fread\",\"number\",[\"number\",\"number\",\"number\",\"number\"]),fclose:t.cwrap(\"zip_fclose\",\"number\",[\"number\"]),dir:{add:t.cwrap(\"zip_dir_add\",\"number\",[\"number\",\"string\"])},file:{add:t.cwrap(\"zip_file_add\",\"number\",[\"number\",\"string\",\"number\",\"number\"]),getError:t.cwrap(\"zip_file_get_error\",\"number\",[\"number\"]),getExternalAttributes:t.cwrap(\"zip_file_get_external_attributes\",\"number\",[\"number\",...Of,\"number\",\"number\",\"number\"]),setExternalAttributes:t.cwrap(\"zip_file_set_external_attributes\",\"number\",[\"number\",...Of,\"number\",\"number\",\"number\"]),setMtime:t.cwrap(\"zip_file_set_mtime\",\"number\",[\"number\",...Of,\"number\",\"number\"]),setCompression:t.cwrap(\"zip_set_file_compression\",\"number\",[\"number\",...Of,\"number\",\"number\"])},ext:{countSymlinks:t.cwrap(\"zip_ext_count_symlinks\",\"number\",[\"number\"])},error:{initWithCode:t.cwrap(\"zip_error_init_with_code\",null,[\"number\",\"number\"]),strerror:t.cwrap(\"zip_error_strerror\",\"string\",[\"number\"])},name:{locate:t.cwrap(\"zip_name_locate\",\"number\",[\"number\",\"string\",\"number\"])},source:{fromUnattachedBuffer:t.cwrap(\"zip_source_buffer_create\",\"number\",[\"number\",...Of,\"number\",\"number\"]),fromBuffer:t.cwrap(\"zip_source_buffer\",\"number\",[\"number\",\"number\",...Of,\"number\"]),free:t.cwrap(\"zip_source_free\",null,[\"number\"]),keep:t.cwrap(\"zip_source_keep\",null,[\"number\"]),open:t.cwrap(\"zip_source_open\",\"number\",[\"number\"]),close:t.cwrap(\"zip_source_close\",\"number\",[\"number\"]),seek:t.cwrap(\"zip_source_seek\",\"number\",[\"number\",...Of,\"number\"]),tell:t.cwrap(\"zip_source_tell\",\"number\",[\"number\"]),read:t.cwrap(\"zip_source_read\",\"number\",[\"number\",\"number\",\"number\"]),error:t.cwrap(\"zip_source_error\",\"number\",[\"number\"])},struct:{statS:t.cwrap(\"zipstruct_statS\",\"number\",[]),statSize:t.cwrap(\"zipstruct_stat_size\",\"number\",[\"number\"]),statCompSize:t.cwrap(\"zipstruct_stat_comp_size\",\"number\",[\"number\"]),statCompMethod:t.cwrap(\"zipstruct_stat_comp_method\",\"number\",[\"number\"]),statMtime:t.cwrap(\"zipstruct_stat_mtime\",\"number\",[\"number\"]),statCrc:t.cwrap(\"zipstruct_stat_crc\",\"number\",[\"number\"]),errorS:t.cwrap(\"zipstruct_errorS\",\"number\",[]),errorCodeZip:t.cwrap(\"zipstruct_error_code_zip\",\"number\",[\"number\"])}})});function rU(t,e){let r=t.indexOf(e);if(r<=0)return null;let o=r;for(;r>=0&&(o=r+e.length,t[o]!==V.sep);){if(t[r-1]===V.sep)return null;r=t.indexOf(e,o)}return t.length>o&&t[o]!==V.sep?null:t.slice(0,o)}var Jl,Ole=Et(()=>{Pt();Pt();nA();Jl=class extends Hp{static async openPromise(e,r){let o=new Jl(r);try{return await e(o)}finally{o.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,o=e.readOnlyArchives,a=typeof r>\"u\"?A=>rU(A,\".zip\"):A=>{for(let p of r){let h=rU(A,p);if(h)return h}return null},n=(A,p)=>new zi(p,{baseFs:A,readOnly:o,stats:A.statSync(p)}),u=async(A,p)=>{let h={baseFs:A,readOnly:o,stats:await A.statPromise(p)};return()=>new zi(p,h)};super({...e,factorySync:n,factoryPromise:u,getMountPoint:a})}}});function cot(t){if(typeof t==\"string\"&&String(+t)===t)return+t;if(typeof t==\"number\"&&Number.isFinite(t))return t<0?Date.now()/1e3:t;if(Mle.types.isDate(t))return t.getTime()/1e3;throw new Error(\"Invalid time\")}function Fb(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var ta,nU,Mle,iU,Ule,Rb,zi,sU=Et(()=>{Pt();Pt();Pt();Pt();Pt();Pt();ta=ve(\"fs\"),nU=ve(\"stream\"),Mle=ve(\"util\"),iU=$e(ve(\"zlib\"));$4();Ule=\"mixed\";Rb=class extends Error{constructor(r,o){super(r);this.name=\"Libzip Error\",this.code=o}},zi=class extends Mu{constructor(r,o={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;let a=o;if(this.level=typeof a.level<\"u\"?a.level:Ule,r??=Fb(),typeof r==\"string\"){let{baseFs:A=new Tn}=a;this.baseFs=A,this.path=r}else this.path=null,this.baseFs=null;if(o.stats)this.stats=o.stats;else if(typeof r==\"string\")try{this.stats=this.baseFs.statSync(r)}catch(A){if(A.code===\"ENOENT\"&&a.create)this.stats=Ea.makeDefaultStats();else throw A}else this.stats=Ea.makeDefaultStats();this.libzip=b1();let n=this.libzip.malloc(4);try{let A=0;o.readOnly&&(A|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof r==\"string\"&&(r=a.create?Fb():this.baseFs.readFileSync(r));let p=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(p,A,n),this.lzSource=p}catch(h){throw this.libzip.source.free(p),h}if(this.zip===0){let h=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(h,this.libzip.getValue(n,\"i32\")),this.makeLibzipError(h)}}finally{this.libzip.free(n)}this.listings.set(Bt.root,new Set);let u=this.libzip.getNumEntries(this.zip,0);for(let A=0;A<u;++A){let p=this.libzip.getName(this.zip,A,0);if(V.isAbsolute(p))continue;let h=V.resolve(Bt.root,p);this.registerEntry(h,A),p.endsWith(\"/\")&&this.registerListing(h)}if(this.symlinkCount=this.libzip.ext.countSymlinks(this.zip),this.symlinkCount===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.ready=!0}makeLibzipError(r){let o=this.libzip.struct.errorCodeZip(r),a=this.libzip.error.strerror(r),n=new Rb(a,this.libzip.errors[o]);if(o===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${n.message}`);return n}getExtractHint(r){for(let o of this.entries.keys()){let a=this.pathUtils.extname(o);if(r.relevantExtensions.has(a))return!0}return!1}getAllFiles(){return Array.from(this.entries.keys())}getRealPath(){if(!this.path)throw new Error(\"ZipFS don't have real paths when loaded from a buffer\");return this.path}prepareClose(){if(!this.ready)throw ar.EBUSY(\"archive closed, close\");Ug(this)}getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return this.discardAndClose(),Fb();try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.source.tell(this.lzSource);if(r===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let o=this.libzip.malloc(r);if(!o)throw new Error(\"Couldn't allocate enough memory\");try{let a=this.libzip.source.read(this.lzSource,o,r);if(a===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(a<r)throw new Error(\"Incomplete read\");if(a>r)throw new Error(\"Overread\");let n=Buffer.from(this.libzip.HEAPU8.subarray(o,o+r));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(n=Buffer.concat([n,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),n}finally{this.libzip.free(o)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}saveAndClose(){if(!this.path||!this.baseFs)throw new Error(\"ZipFS cannot be saved and must be discarded when loaded from a buffer\");if(this.readOnly){this.discardAndClose();return}let r=this.baseFs.existsSync(this.path)||this.stats.mode===Ea.DEFAULT_MODE?void 0:this.stats.mode;this.baseFs.writeFileSync(this.path,this.getBufferAndClose(),{mode:r}),this.ready=!1}resolve(r){return V.resolve(Bt.root,r)}async openPromise(r,o,a){return this.openSync(r,o,a)}openSync(r,o,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(r,o){return this.opendirSync(r,o)}opendirSync(r,o={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`opendir '${r}'`);let n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`opendir '${r}'`);let u=[...n],A=this.openSync(a,\"r\");return SD(this,a,u,{onClose:()=>{this.closeSync(A)}})}async readPromise(r,o,a,n,u){return this.readSync(r,o,a,n,u)}readSync(r,o,a=0,n=o.byteLength,u=-1){let A=this.fds.get(r);if(typeof A>\"u\")throw ar.EBADF(\"read\");let p=u===-1||u===null?A.cursor:u,h=this.readFileSync(A.p);h.copy(o,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(u===-1||u===null)&&(A.cursor+=E),E}async writePromise(r,o,a,n,u){return typeof o==\"string\"?this.writeSync(r,o,u):this.writeSync(r,o,a,n,u)}writeSync(r,o,a,n,u){throw typeof this.fds.get(r)>\"u\"?ar.EBADF(\"read\"):new Error(\"Unimplemented\")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>\"u\")throw ar.EBADF(\"read\");this.fds.delete(r)}createReadStream(r,{encoding:o}={}){if(r===null)throw new Error(\"Unimplemented\");let a=this.openSync(r,\"r\"),n=Object.assign(new nU.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(A,p)=>{clearImmediate(u),this.closeSync(a),p(A)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),u=setImmediate(async()=>{try{let A=await this.readFilePromise(r,o);n.bytesRead=A.length,n.end(A)}catch(A){n.destroy(A)}});return n}createWriteStream(r,{encoding:o}={}){if(this.readOnly)throw ar.EROFS(`open '${r}'`);if(r===null)throw new Error(\"Unimplemented\");let a=[],n=this.openSync(r,\"w\"),u=Object.assign(new nU.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(A,p)=>{try{A?p(A):(this.writeFileSync(r,Buffer.concat(a),o),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){u.destroy()},bytesWritten:0,path:r,pending:!1});return u.on(\"data\",A=>{let p=Buffer.from(A);u.bytesWritten+=p.length,a.push(p)}),u}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let o=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(o)&&!this.listings.has(o))throw ar.ENOENT(`lstat '${r}'`);return o}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw ar.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=V.resolve(Bt.root,r);return this.entries.has(a)||this.listings.has(a)}let o;try{o=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return o===void 0?!1:this.entries.has(o)||this.listings.has(o)}async accessPromise(r,o){return this.accessSync(r,o)}accessSync(r,o=ta.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`access '${r}'`);if(this.readOnly&&o&ta.constants.W_OK)throw ar.EROFS(`access '${r}'`)}async statPromise(r,o={bigint:!1}){return o.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw ar.ENOENT(`stat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,o)}}async fstatPromise(r,o){return this.fstatSync(r,o)}fstatSync(r,o){let a=this.fds.get(r);if(typeof a>\"u\")throw ar.EBADF(\"fstatSync\");let{p:n}=a,u=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(u)&&!this.listings.has(u))throw ar.ENOENT(`stat '${n}'`);if(n[n.length-1]===\"/\"&&!this.listings.has(u))throw ar.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,u,o)}async lstatPromise(r,o={bigint:!1}){return o.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw ar.ENOENT(`lstat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,o)}}statImpl(r,o,a={}){let n=this.entries.get(o);if(typeof n<\"u\"){let u=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,u)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let p=this.stats.uid,h=this.stats.gid,E=this.libzip.struct.statSize(u)>>>0,I=512,v=Math.ceil(E/I),x=(this.libzip.struct.statMtime(u)>>>0)*1e3,C=x,R=x,N=x,U=new Date(C),J=new Date(R),te=new Date(N),ae=new Date(x),fe=this.listings.has(o)?ta.constants.S_IFDIR:this.isSymbolicLink(n)?ta.constants.S_IFLNK:ta.constants.S_IFREG,ce=fe===ta.constants.S_IFDIR?493:420,me=fe|this.getUnixMode(n,ce)&511,he=this.libzip.struct.statCrc(u),Be=Object.assign(new Ea.StatEntry,{uid:p,gid:h,size:E,blksize:I,blocks:v,atime:U,birthtime:J,ctime:te,mtime:ae,atimeMs:C,birthtimeMs:R,ctimeMs:N,mtimeMs:x,mode:me,crc:he});return a.bigint===!0?Ea.convertToBigIntStats(Be):Be}if(this.listings.has(o)){let u=this.stats.uid,A=this.stats.gid,p=0,h=512,E=0,I=this.stats.mtimeMs,v=this.stats.mtimeMs,x=this.stats.mtimeMs,C=this.stats.mtimeMs,R=new Date(I),N=new Date(v),U=new Date(x),J=new Date(C),te=ta.constants.S_IFDIR|493,ae=0,fe=Object.assign(new Ea.StatEntry,{uid:u,gid:A,size:p,blksize:h,blocks:E,atime:R,birthtime:N,ctime:U,mtime:J,atimeMs:I,birthtimeMs:v,ctimeMs:x,mtimeMs:C,mode:te,crc:ae});return a.bigint===!0?Ea.convertToBigIntStats(fe):fe}throw new Error(\"Unreachable\")}getUnixMode(r,o){if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,\"i8\")>>>0!==this.libzip.ZIP_OPSYS_UNIX?o:this.libzip.getValue(this.libzip.uint32S,\"i32\")>>>16}registerListing(r){let o=this.listings.get(r);if(o)return o;this.registerListing(V.dirname(r)).add(V.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,o){this.registerListing(V.dirname(r)).add(V.basename(r)),this.entries.set(r,o)}unregisterListing(r){this.listings.delete(r),this.listings.get(V.dirname(r))?.delete(V.basename(r))}unregisterEntry(r){this.unregisterListing(r);let o=this.entries.get(r);this.entries.delete(r),!(typeof o>\"u\")&&(this.fileSources.delete(o),this.isSymbolicLink(o)&&this.symlinkCount--)}deleteEntry(r,o){if(this.unregisterEntry(r),this.libzip.delete(this.zip,o)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(r,o,a=!0,n=!0){if(!this.ready)throw ar.EBUSY(`archive closed, ${r}`);let u=V.resolve(Bt.root,o);if(u===\"/\")return Bt.root;let A=this.entries.get(u);if(a&&A!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(A)){let p=this.getFileSource(A).toString();return this.resolveFilename(r,V.resolve(V.dirname(u),p),!0,n)}else return u;for(;;){let p=this.resolveFilename(r,V.dirname(u),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw ar.ENOENT(r)}if(!h)throw ar.ENOTDIR(r);if(u=V.resolve(p,V.basename(u)),!a||this.symlinkCount===0)break;let I=this.libzip.name.locate(this.zip,u.slice(1),0);if(I===-1)break;if(this.isSymbolicLink(I)){let v=this.getFileSource(I).toString();u=V.resolve(V.dirname(u),v)}else break}return u}allocateBuffer(r){Buffer.isBuffer(r)||(r=Buffer.from(r));let o=this.libzip.malloc(r.byteLength);if(!o)throw new Error(\"Couldn't allocate enough memory\");return new Uint8Array(this.libzip.HEAPU8.buffer,o,r.byteLength).set(r),{buffer:o,byteLength:r.byteLength}}allocateUnattachedSource(r){let o=this.libzip.struct.errorS(),{buffer:a,byteLength:n}=this.allocateBuffer(r),u=this.libzip.source.fromUnattachedBuffer(a,n,0,1,o);if(u===0)throw this.libzip.free(o),this.makeLibzipError(o);return u}allocateSource(r){let{buffer:o,byteLength:a}=this.allocateBuffer(r),n=this.libzip.source.fromBuffer(this.zip,o,a,0,1);if(n===0)throw this.libzip.free(o),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(r,o){let a=Buffer.isBuffer(o)?o:Buffer.from(o),n=V.relative(Bt.root,r),u=this.allocateSource(o);try{let A=this.libzip.file.add(this.zip,n,u,this.libzip.ZIP_FL_OVERWRITE);if(A===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!==\"mixed\"){let p=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,A,0,p,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(A,a),A}catch(A){throw this.libzip.source.free(u),A}}isSymbolicLink(r){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,\"i8\")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,\"i32\")>>>16&ta.constants.S_IFMT)===ta.constants.S_IFLNK}getFileSource(r,o={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<\"u\")return a;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,r,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let A=this.libzip.struct.statCompSize(n),p=this.libzip.struct.statCompMethod(n),h=this.libzip.malloc(A);try{let E=this.libzip.fopenIndex(this.zip,r,0,this.libzip.ZIP_FL_COMPRESSED);if(E===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let I=this.libzip.fread(E,h,A,0);if(I===-1)throw this.makeLibzipError(this.libzip.file.getError(E));if(I<A)throw new Error(\"Incomplete read\");if(I>A)throw new Error(\"Overread\");let v=this.libzip.HEAPU8.subarray(h,h+A),x=Buffer.from(v);if(p===0)return this.fileSources.set(r,x),x;if(o.asyncDecompress)return new Promise((C,R)=>{iU.default.inflateRaw(x,(N,U)=>{N?R(N):(this.fileSources.set(r,U),C(U))})});{let C=iU.default.inflateRawSync(x);return this.fileSources.set(r,C),C}}finally{this.libzip.fclose(E)}}finally{this.libzip.free(h)}}async fchmodPromise(r,o){return this.chmodPromise(this.fdToPath(r,\"fchmod\"),o)}fchmodSync(r,o){return this.chmodSync(this.fdToPath(r,\"fchmodSync\"),o)}async chmodPromise(r,o){return this.chmodSync(r,o)}chmodSync(r,o){if(this.readOnly)throw ar.EROFS(`chmod '${r}'`);o&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>\"u\")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let A=this.getUnixMode(n,ta.constants.S_IFREG|0)&-512|o;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,A<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async fchownPromise(r,o,a){return this.chownPromise(this.fdToPath(r,\"fchown\"),o,a)}fchownSync(r,o,a){return this.chownSync(this.fdToPath(r,\"fchownSync\"),o,a)}async chownPromise(r,o,a){return this.chownSync(r,o,a)}chownSync(r,o,a){throw new Error(\"Unimplemented\")}async renamePromise(r,o){return this.renameSync(r,o)}renameSync(r,o){throw new Error(\"Unimplemented\")}async copyFilePromise(r,o,a){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}copyFileSync(r,o,a=0){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=this.getFileSource(n),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}prepareCopyFile(r,o,a=0){if(this.readOnly)throw ar.EROFS(`copyfile '${r} -> '${o}'`);if((a&ta.constants.COPYFILE_FICLONE_FORCE)!==0)throw ar.ENOSYS(\"unsupported clone operation\",`copyfile '${r}' -> ${o}'`);let n=this.resolveFilename(`copyfile '${r} -> ${o}'`,r),u=this.entries.get(n);if(typeof u>\"u\")throw ar.EINVAL(`copyfile '${r}' -> '${o}'`);let A=this.resolveFilename(`copyfile '${r}' -> ${o}'`,o),p=this.entries.get(A);if((a&(ta.constants.COPYFILE_EXCL|ta.constants.COPYFILE_FICLONE_FORCE))!==0&&typeof p<\"u\")throw ar.EEXIST(`copyfile '${r}' -> '${o}'`);return{indexSource:u,resolvedDestP:A,indexDest:p}}async appendFilePromise(r,o,a){if(this.readOnly)throw ar.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFilePromise(r,o,a)}appendFileSync(r,o,a={}){if(this.readOnly)throw ar.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFileSync(r,o,a)}fdToPath(r,o){let a=this.fds.get(r)?.p;if(typeof a>\"u\")throw ar.EBADF(o);return a}async writeFilePromise(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(o=Buffer.concat([await this.getFileSource(A,{asyncDecompress:!0}),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&await this.chmodPromise(p,u)}writeFileSync(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(o=Buffer.concat([this.getFileSource(A),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&this.chmodSync(p,u)}prepareWriteFile(r,o){if(typeof r==\"number\"&&(r=this.fdToPath(r,\"read\")),this.readOnly)throw ar.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw ar.EISDIR(`open '${r}'`);let n=null,u=null;typeof o==\"string\"?n=o:typeof o==\"object\"&&({encoding:n=null,mode:u=null}=o);let A=this.entries.get(a);return{encoding:n,mode:u,resolvedP:a,index:A}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw ar.EROFS(`unlink '${r}'`);let o=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(o))throw ar.EISDIR(`unlink '${r}'`);let a=this.entries.get(o);if(typeof a>\"u\")throw ar.EINVAL(`unlink '${r}'`);this.deleteEntry(o,a)}async utimesPromise(r,o,a){return this.utimesSync(r,o,a)}utimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,o,a){return this.lutimesSync(r,o,a)}lutimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,o){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error(\"Unreachable\");if(this.libzip.file.setMtime(this.zip,a,0,cot(o),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(r,o){return this.mkdirSync(r,o)}mkdirSync(r,{mode:o=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:o});if(this.readOnly)throw ar.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw ar.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,o)}async rmdirPromise(r,o){return this.rmdirSync(r,o)}rmdirSync(r,{recursive:o=!1}={}){if(this.readOnly)throw ar.EROFS(`rmdir '${r}'`);if(o){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw ar.ENOTEMPTY(`rmdir '${r}'`);let u=this.entries.get(a);if(typeof u>\"u\")throw ar.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,u)}hydrateDirectory(r){let o=this.libzip.dir.add(this.zip,V.relative(Bt.root,r));if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(r),this.registerEntry(r,o),o}async linkPromise(r,o){return this.linkSync(r,o)}linkSync(r,o){throw ar.EOPNOTSUPP(`link '${r}' -> '${o}'`)}async symlinkPromise(r,o){return this.symlinkSync(r,o)}symlinkSync(r,o){if(this.readOnly)throw ar.EROFS(`symlink '${r}' -> '${o}'`);let a=this.resolveFilename(`symlink '${r}' -> '${o}'`,o);if(this.listings.has(a))throw ar.EISDIR(`symlink '${r}' -> '${o}'`);if(this.entries.has(a))throw ar.EEXIST(`symlink '${r}' -> '${o}'`);let n=this.setFileSource(a,r);if(this.registerEntry(a,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(ta.constants.S_IFLNK|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(r,o){typeof o==\"object\"&&(o=o?o.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return o?a.toString(o):a}readFileSync(r,o){typeof o==\"object\"&&(o=o?o.encoding:void 0);let a=this.readFileBuffer(r);return o?a.toString(o):a}readFileBuffer(r,o={asyncDecompress:!1}){typeof r==\"number\"&&(r=this.fdToPath(r,\"read\"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`open '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw ar.EISDIR(\"read\");let n=this.entries.get(a);if(n===void 0)throw new Error(\"Unreachable\");return this.getFileSource(n,o)}async readdirPromise(r,o){return this.readdirSync(r,o)}readdirSync(r,o){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`scandir '${r}'`);if(o?.recursive)if(o?.withFileTypes){let u=Array.from(n,A=>Object.assign(this.statImpl(\"lstat\",V.join(r,A)),{name:A,path:Bt.dot}));for(let A of u){if(!A.isDirectory())continue;let p=V.join(A.path,A.name),h=this.listings.get(V.join(a,p));for(let E of h)u.push(Object.assign(this.statImpl(\"lstat\",V.join(r,p,E)),{name:E,path:p}))}return u}else{let u=[...n];for(let A of u){let p=this.listings.get(V.join(a,A));if(!(typeof p>\"u\"))for(let h of p)u.push(V.join(A,h))}return u}else return o?.withFileTypes?Array.from(n,u=>Object.assign(this.statImpl(\"lstat\",V.join(r,u)),{name:u,path:void 0})):[...n]}async readlinkPromise(r){let o=this.prepareReadlink(r);return(await this.getFileSource(o,{asyncDecompress:!0})).toString()}readlinkSync(r){let o=this.prepareReadlink(r);return this.getFileSource(o).toString()}prepareReadlink(r){let o=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(o)&&!this.listings.has(o))throw ar.ENOENT(`readlink '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(o))throw ar.ENOTDIR(`open '${r}'`);if(this.listings.has(o))throw ar.EINVAL(`readlink '${r}'`);let a=this.entries.get(o);if(a===void 0)throw new Error(\"Unreachable\");if(!this.isSymbolicLink(a))throw ar.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw ar.EINVAL(`open '${r}'`);let u=await this.getFileSource(n,{asyncDecompress:!0}),A=Buffer.alloc(o,0);return u.copy(A),await this.writeFilePromise(r,A)}truncateSync(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw ar.EINVAL(`open '${r}'`);let u=this.getFileSource(n),A=Buffer.alloc(o,0);return u.copy(A),this.writeFileSync(r,A)}async ftruncatePromise(r,o){return this.truncatePromise(this.fdToPath(r,\"ftruncate\"),o)}ftruncateSync(r,o){return this.truncateSync(this.fdToPath(r,\"ftruncateSync\"),o)}watch(r,o,a){let n;switch(typeof o){case\"function\":case\"string\":case\"undefined\":n=!0;break;default:({persistent:n=!0}=o);break}if(!n)return{on:()=>{},close:()=>{}};let u=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(u)}}}watchFile(r,o,a){let n=V.resolve(Bt.root,r);return ny(this,n,o,a)}unwatchFile(r,o){let a=V.resolve(Bt.root,r);return Mg(this,a,o)}}});function Hle(t,e,r=Buffer.alloc(0),o){let a=new zi(r),n=I=>I===e||I.startsWith(`${e}/`)?I.slice(0,e.length):null,u=async(I,v)=>()=>a,A=(I,v)=>a,p={...t},h=new Tn(p),E=new Hp({baseFs:h,getMountPoint:n,factoryPromise:u,factorySync:A,magicByte:21,maxAge:1/0,typeCheck:o?.typeCheck});return Kw(_le.default,new jp(E)),a}var _le,jle=Et(()=>{Pt();_le=$e(ve(\"fs\"));sU()});var qle=Et(()=>{Ole();sU();jle()});var x1={};Vt(x1,{DEFAULT_COMPRESSION_LEVEL:()=>Ule,LibzipError:()=>Rb,ZipFS:()=>zi,ZipOpenFS:()=>Jl,getArchivePart:()=>rU,getLibzipPromise:()=>Aot,getLibzipSync:()=>uot,makeEmptyArchive:()=>Fb,mountMemoryDrive:()=>Hle});function uot(){return b1()}async function Aot(){return b1()}var Gle,nA=Et(()=>{$4();Gle=$e(Rle());Nle();qle();Fle(()=>{let t=(0,Gle.default)();return Lle(t)})});var RE,Yle=Et(()=>{Pt();jt();k1();RE=class extends nt{constructor(){super(...arguments);this.cwd=ge.String(\"--cwd\",process.cwd(),{description:\"The directory to run the command in\"});this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(\" \")}`:this.commandName;return await TE(r,[],{cwd:ue.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}};RE.usage={description:\"run a command using yarn's portable shell\",details:`\n      This command will run a command using Yarn's portable shell.\n\n      Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell.\n\n      Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell.\n\n      Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used.\n\n      For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md.\n    `,examples:[[\"Run a simple command\",\"$0 echo Hello\"],[\"Run a command with a glob pattern\",\"$0 echo '*.js'\"],[\"Run a command with a redirection\",\"$0 echo Hello World '>' hello.txt\"],[\"Run a command with an escaped glob pattern (The double escape is needed in Unix shells)\",`$0 echo '\"*.js\"'`],[\"Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)\",'$0 \"GREETING=Hello echo $GREETING World\"']]}});var al,Wle=Et(()=>{al=class extends Error{constructor(e){super(e),this.name=\"ShellError\"}}});var Nb={};Vt(Nb,{fastGlobOptions:()=>Jle,isBraceExpansion:()=>oU,isGlobPattern:()=>fot,match:()=>pot,micromatchOptions:()=>Lb});function fot(t){if(!Tb.default.scan(t,Lb).isGlob)return!1;try{Tb.default.parse(t,Lb)}catch{return!1}return!0}function pot(t,{cwd:e,baseFs:r}){return(0,Kle.default)(t,{...Jle,cwd:ue.fromPortablePath(e),fs:FD(Vle.default,new jp(r))})}function oU(t){return Tb.default.scan(t,Lb).isBrace}var Kle,Vle,Tb,Lb,Jle,zle=Et(()=>{Pt();Kle=$e(RS()),Vle=$e(ve(\"fs\")),Tb=$e(Zo()),Lb={strictBrackets:!0},Jle={onlyDirectories:!1,onlyFiles:!1}});function aU(){}function lU(){for(let t of kd)t.kill()}function ece(t,e,r,o){return a=>{let n=a[0]instanceof iA.Transform?\"pipe\":a[0],u=a[1]instanceof iA.Transform?\"pipe\":a[1],A=a[2]instanceof iA.Transform?\"pipe\":a[2],p=(0,Zle.default)(t,e,{...o,stdio:[n,u,A]});return kd.add(p),kd.size===1&&(process.on(\"SIGINT\",aU),process.on(\"SIGTERM\",lU)),a[0]instanceof iA.Transform&&a[0].pipe(p.stdin),a[1]instanceof iA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof iA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on(\"error\",E=>{switch(kd.delete(p),kd.size===0&&(process.off(\"SIGINT\",aU),process.off(\"SIGTERM\",lU)),E.code){case\"ENOENT\":a[2].write(`command not found: ${t}\n`),h(127);break;case\"EACCES\":a[2].write(`permission denied: ${t}\n`),h(128);break;default:a[2].write(`uncaught error: ${E.message}\n`),h(1);break}}),p.on(\"close\",E=>{kd.delete(p),kd.size===0&&(process.off(\"SIGINT\",aU),process.off(\"SIGTERM\",lU)),h(E!==null?E:129)})})}}}function tce(t){return e=>{let r=e[0]===\"pipe\"?new iA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function Ob(t,e){return LE.start(t,e)}function Xle(t,e=null){let r=new iA.PassThrough,o=new $le.StringDecoder,a=\"\";return r.on(\"data\",n=>{let u=o.write(n),A;do if(A=u.indexOf(`\n`),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a=\"\",t(e!==null?`${e} ${p}`:p)}while(A!==-1);a+=u}),r.on(\"end\",()=>{let n=o.end();n!==\"\"&&t(e!==null?`${e} ${n}`:n)}),r}function rce(t,{prefix:e}){return{stdout:Xle(r=>t.stdout.write(`${r}\n`),t.stdout.isTTY?e:null),stderr:Xle(r=>t.stderr.write(`${r}\n`),t.stderr.isTTY?e:null)}}var Zle,iA,$le,kd,zl,cU,LE,uU=Et(()=>{Zle=$e(sT()),iA=ve(\"stream\"),$le=ve(\"string_decoder\"),kd=new Set;zl=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},cU=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error(\"Assertion failed: No stream attached\");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error(\"Assertion failed: No stream attached\");return this.stream}},LE=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:o,stderr:a}){let n=new LE(null,e);return n.stdin=r,n.stdout=o,n.stderr=a,n}pipeTo(e,r=1){let o=new LE(this,e),a=new cU;return o.pipe=a,o.stdout=this.stdout,o.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),o}async exec(){let e=[\"ignore\",\"ignore\",\"ignore\"];if(this.pipe)e[0]=\"pipe\";else{if(this.stdin===null)throw new Error(\"Assertion failed: No input stream registered\");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error(\"Assertion failed: No output stream registered\");r=this.stdout,e[1]=r.get();let o;if(this.stderr===null)throw new Error(\"Assertion failed: No error stream registered\");o=this.stderr,e[2]=o.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),o.close(),n))}async run(){let e=[];for(let o=this;o;o=o.ancestor)e.push(o.exec());return(await Promise.all(e))[0]}}});var T1={};Vt(T1,{EntryCommand:()=>RE,ShellError:()=>al,execute:()=>TE,globUtils:()=>Nb});function nce(t,e,r){let o=new ll.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(o,{end:!1}),(e&2)===2&&r.stdin instanceof ll.Writable&&o.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stderr,{end:!1});break;default:throw new al(`Bad file descriptor: \"${t}\"`)}return o}function Ub(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function got(t,e,r){let o=[],a=new ll.PassThrough;return a.on(\"data\",n=>o.push(n)),await _b(t,e,Ub(r,{stdout:a})),Buffer.concat(o).toString().replace(/[\\r\\n]+$/,\"\")}async function ice(t,e,r){let o=t.map(async n=>{let u=await Qd(n.args,e,r);return{name:n.name,value:u.join(\" \")}});return(await Promise.all(o)).reduce((n,u)=>(n[u.name]=u.value,n),{})}function Mb(t){return t.match(/[^ \\r\\n\\t]+/g)||[]}async function uce(t,e,r,o,a=o){switch(t.name){case\"$\":o(String(process.pid));break;case\"#\":o(String(e.args.length));break;case\"@\":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let u=Mb(n);for(let A=0;A<u.length-1;++A)a(u[A]);o(u[u.length-1])}break;case\"*\":{let n=e.args.join(\" \");if(t.quoted)o(n);else for(let u of Mb(n))a(u)}break;case\"PPID\":o(String(process.ppid));break;case\"RANDOM\":o(String(Math.floor(Math.random()*32768)));break;default:{let n=parseInt(t.name,10),u,A=Number.isFinite(n);if(A?n>=0&&n<e.args.length&&(u=e.args[n]):Object.hasOwn(r.variables,t.name)?u=r.variables[t.name]:Object.hasOwn(r.environment,t.name)&&(u=r.environment[t.name]),typeof u<\"u\"&&t.alternativeValue?u=(await Qd(t.alternativeValue,e,r)).join(\" \"):typeof u>\"u\"&&(t.defaultValue?u=(await Qd(t.defaultValue,e,r)).join(\" \"):t.alternativeValue&&(u=\"\")),typeof u>\"u\")throw A?new al(`Unbound argument #${n}`):new al(`Unbound variable \"${t.name}\"`);if(t.quoted)o(u);else{let p=Mb(u);for(let E=0;E<p.length-1;++E)a(p[E]);let h=p[p.length-1];typeof h<\"u\"&&o(h)}}break}}async function Q1(t,e,r){if(t.type===\"number\"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: \"${t.value}\", only integers are allowed`)}else if(t.type===\"variable\"){let o=[];await uce({...t,quoted:!0},e,r,n=>o.push(n));let a=Number(o.join(\" \"));return Number.isNaN(a)?Q1({type:\"variable\",name:o.join(\" \")},e,r):Q1({type:\"number\",value:a},e,r)}else return dot[t.type](await Q1(t.left,e,r),await Q1(t.right,e,r))}async function Qd(t,e,r){let o=new Map,a=[],n=[],u=E=>{n.push(E)},A=()=>{n.length>0&&a.push(n.join(\"\")),n=[]},p=E=>{u(E),A()},h=(E,I,v)=>{let x=JSON.stringify({type:E,fd:I}),C=o.get(x);typeof C>\"u\"&&o.set(x,C=[]),C.push(v)};for(let E of t){let I=!1;switch(E.type){case\"redirection\":{let v=await Qd(E.args,e,r);for(let x of v)h(E.subtype,E.fd,x)}break;case\"argument\":for(let v of E.segments)switch(v.type){case\"text\":u(v.text);break;case\"glob\":u(v.pattern),I=!0;break;case\"shell\":{let x=await got(v.shell,e,r);if(v.quoted)u(x);else{let C=Mb(x);for(let R=0;R<C.length-1;++R)p(C[R]);u(C[C.length-1])}}break;case\"variable\":await uce(v,e,r,u,p);break;case\"arithmetic\":u(String(await Q1(v.arithmetic,e,r)));break}break}if(A(),I){let v=a.pop();if(typeof v>\"u\")throw new Error(\"Assertion failed: Expected a glob pattern to have been set\");let x=await e.glob.match(v,{cwd:r.cwd,baseFs:e.baseFs});if(x.length===0){let C=oU(v)?\". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22\":\"\";throw new al(`No matches found: \"${v}\"${C}`)}for(let C of x.sort())p(C)}}if(o.size>0){let E=[];for(let[I,v]of o.entries())E.splice(E.length,0,I,String(v.length),...v);a.splice(0,0,\"__ysh_set_redirects\",...E,\"--\")}return a}function F1(t,e,r){e.builtins.has(t[0])||(t=[\"command\",...t]);let o=ue.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<\"u\"&&(a={...a,PWD:o});let[n,...u]=t;if(n===\"command\")return ece(u[0],u.slice(1),e,{cwd:o,env:a});let A=e.builtins.get(n);if(typeof A>\"u\")throw new Error(`Assertion failed: A builtin should exist for \"${n}\"`);return tce(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:I,stdout:v,stderr:x}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await A(u,e,r)}finally{r.stdin=I,r.stdout=v,r.stderr=x}})}function mot(t,e,r){return o=>{let a=new ll.PassThrough,n=_b(t,e,Ub(r,{stdin:a}));return{stdin:a,promise:n}}}function yot(t,e,r){return o=>{let a=new ll.PassThrough,n=_b(t,e,r);return{stdin:a,promise:n}}}function sce(t,e,r,o){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.hasOwn(o.procedures,a));return o.procedures={...o.procedures},o.procedures[a]=t,F1([...e,\"__ysh_run_procedure\",a],r,o)}}async function oce(t,e,r){let o=t,a=null,n=null;for(;o;){let u=o.then?{...r}:r,A;switch(o.type){case\"command\":{let p=await Qd(o.args,e,r),h=await ice(o.envs,e,r);A=o.envs.length?F1(p,e,Ub(u,{environment:h})):F1(p,e,u)}break;case\"subshell\":{let p=await Qd(o.args,e,r),h=mot(o.subshell,e,u);A=sce(h,p,e,u)}break;case\"group\":{let p=await Qd(o.args,e,r),h=yot(o.group,e,u);A=sce(h,p,e,u)}break;case\"envs\":{let p=await ice(o.envs,e,r);u.environment={...u.environment,...p},A=F1([\"true\"],e,u)}break}if(typeof A>\"u\")throw new Error(\"Assertion failed: An action should have been generated\");if(a===null)n=Ob(A,{stdin:new zl(u.stdin),stdout:new zl(u.stdout),stderr:new zl(u.stderr)});else{if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");switch(a){case\"|\":n=n.pipeTo(A,1);break;case\"|&\":n=n.pipeTo(A,3);break}}o.then?(a=o.then.type,o=o.then.chain):o=null}if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");return await n.run()}async function Eot(t,e,r,{background:o=!1}={}){function a(n){let u=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],A=u[n%u.length];return ace.default.hex(A)}if(o){let n=r.nextBackgroundJobIndex++,u=a(n),A=`[${n}]`,p=u(A),{stdout:h,stderr:E}=rce(r,{prefix:p});return r.backgroundJobs.push(oce(t,e,Ub(r,{stdout:h,stderr:E})).catch(I=>E.write(`${I.message}\n`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${u(uy(t))}' has ended\n`)})),0}return await oce(t,e,r)}async function Cot(t,e,r,{background:o=!1}={}){let a,n=A=>{a=A,r.variables[\"?\"]=String(A)},u=async A=>{try{return await Eot(A.chain,e,r,{background:o&&typeof A.then>\"u\"})}catch(p){if(!(p instanceof al))throw p;return r.stderr.write(`${p.message}\n`),1}};for(n(await u(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case\"&&\":a===0&&n(await u(t.then.line));break;case\"||\":a!==0&&n(await u(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: \"${t.then.type}\"`)}t=t.then.line}return a}async function _b(t,e,r){let o=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:u}of t){if(a=await Cot(n,e,r,{background:u===\"&\"}),r.exitCode!==null)return r.exitCode;r.variables[\"?\"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=o,a}function Ace(t){switch(t.type){case\"variable\":return t.name===\"@\"||t.name===\"#\"||t.name===\"*\"||Number.isFinite(parseInt(t.name,10))||\"defaultValue\"in t&&!!t.defaultValue&&t.defaultValue.some(e=>R1(e))||\"alternativeValue\"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>R1(e));case\"arithmetic\":return AU(t.arithmetic);case\"shell\":return fU(t.shell);default:return!1}}function R1(t){switch(t.type){case\"redirection\":return t.args.some(e=>R1(e));case\"argument\":return t.segments.some(e=>Ace(e));default:throw new Error(`Assertion failed: Unsupported argument type: \"${t.type}\"`)}}function AU(t){switch(t.type){case\"variable\":return Ace(t);case\"number\":return!1;default:return AU(t.left)||AU(t.right)}}function fU(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let o;switch(r.type){case\"subshell\":o=fU(r.subshell);break;case\"command\":o=r.envs.some(a=>a.args.some(n=>R1(n)))||r.args.some(a=>R1(a));break}if(o)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function TE(t,e=[],{baseFs:r=new Tn,builtins:o={},cwd:a=ue.toPortablePath(process.cwd()),env:n=process.env,stdin:u=process.stdin,stdout:A=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=Nb}={}){let I={};for(let[C,R]of Object.entries(n))typeof R<\"u\"&&(I[C]=R);let v=new Map(hot);for(let[C,R]of Object.entries(o))v.set(C,R);u===null&&(u=new ll.PassThrough,u.end());let x=LD(t,E);if(!fU(x)&&x.length>0&&e.length>0){let{command:C}=x[x.length-1];for(;C.then;)C=C.then.line;let R=C.chain;for(;R.then;)R=R.then.chain;R.type===\"command\"&&(R.args=R.args.concat(e.map(N=>({type:\"argument\",segments:[{type:\"text\",text:N}]}))))}return await _b(x,{args:e,baseFs:r,builtins:v,initialStdin:u,initialStdout:A,initialStderr:p,glob:E},{cwd:a,environment:I,exitCode:null,procedures:{},stdin:u,stdout:A,stderr:p,variables:Object.assign({},h,{[\"?\"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var ace,lce,ll,cce,hot,dot,k1=Et(()=>{Pt();Ll();ace=$e(IL()),lce=ve(\"os\"),ll=ve(\"stream\"),cce=ve(\"timers/promises\");Yle();Wle();zle();uU();uU();hot=new Map([[\"cd\",async([t=(0,lce.homedir)(),...e],r,o)=>{let a=V.resolve(o.cwd,ue.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(u=>{throw u.code===\"ENOENT\"?new al(`cd: no such file or directory: ${t}`):u})).isDirectory())throw new al(`cd: not a directory: ${t}`);return o.cwd=a,0}],[\"pwd\",async(t,e,r)=>(r.stdout.write(`${ue.fromPortablePath(r.cwd)}\n`),0)],[\":\",async(t,e,r)=>0],[\"true\",async(t,e,r)=>0],[\"false\",async(t,e,r)=>1],[\"exit\",async([t,...e],r,o)=>o.exitCode=parseInt(t??o.variables[\"?\"],10)],[\"echo\",async(t,e,r)=>(r.stdout.write(`${t.join(\" \")}\n`),0)],[\"sleep\",async([t],e,r)=>{if(typeof t>\"u\")throw new al(\"sleep: missing operand\");let o=Number(t);if(Number.isNaN(o))throw new al(`sleep: invalid time interval '${t}'`);return await(0,cce.setTimeout)(1e3*o,0)}],[\"__ysh_run_procedure\",async(t,e,r)=>{let o=r.procedures[t[0]];return await Ob(o,{stdin:new zl(r.stdin),stdout:new zl(r.stdout),stderr:new zl(r.stderr)}).run()}],[\"__ysh_set_redirects\",async(t,e,r)=>{let o=r.stdin,a=r.stdout,n=r.stderr,u=[],A=[],p=[],h=0;for(;t[h]!==\"--\";){let I=t[h++],{type:v,fd:x}=JSON.parse(I),C=J=>{switch(x){case null:case 0:u.push(J);break;default:throw new Error(`Unsupported file descriptor: \"${x}\"`)}},R=J=>{switch(x){case null:case 1:A.push(J);break;case 2:p.push(J);break;default:throw new Error(`Unsupported file descriptor: \"${x}\"`)}},N=Number(t[h++]),U=h+N;for(let J=h;J<U;++h,++J)switch(v){case\"<\":C(()=>e.baseFs.createReadStream(V.resolve(r.cwd,ue.toPortablePath(t[J]))));break;case\"<<<\":C(()=>{let te=new ll.PassThrough;return process.nextTick(()=>{te.write(`${t[J]}\n`),te.end()}),te});break;case\"<&\":C(()=>nce(Number(t[J]),1,r));break;case\">\":case\">>\":{let te=V.resolve(r.cwd,ue.toPortablePath(t[J]));R(te===\"/dev/null\"?new ll.Writable({autoDestroy:!0,emitClose:!0,write(ae,fe,ce){setImmediate(ce)}}):e.baseFs.createWriteStream(te,v===\">>\"?{flags:\"a\"}:void 0))}break;case\">&\":R(nce(Number(t[J]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: \"${v}\"`)}}if(u.length>0){let I=new ll.PassThrough;o=I;let v=x=>{if(x===u.length)I.end();else{let C=u[x]();C.pipe(I,{end:!1}),C.on(\"end\",()=>{v(x+1)})}};v(0)}if(A.length>0){let I=new ll.PassThrough;a=I;for(let v of A)I.pipe(v)}if(p.length>0){let I=new ll.PassThrough;n=I;for(let v of p)I.pipe(v)}let E=await Ob(F1(t.slice(h+1),e,r),{stdin:new zl(o),stdout:new zl(a),stderr:new zl(n)}).run();return await Promise.all(A.map(I=>new Promise((v,x)=>{I.on(\"error\",C=>{x(C)}),I.on(\"close\",()=>{v()}),I.end()}))),await Promise.all(p.map(I=>new Promise((v,x)=>{I.on(\"error\",C=>{x(C)}),I.on(\"close\",()=>{v()}),I.end()}))),E}]]);dot={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var Hb=_((n4t,fce)=>{function wot(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r<o;)a[r]=e(t[r],r,t);return a}fce.exports=wot});var yce=_((i4t,mce)=>{var pce=pd(),Iot=Hb(),Bot=Hl(),vot=pE(),Dot=1/0,hce=pce?pce.prototype:void 0,gce=hce?hce.toString:void 0;function dce(t){if(typeof t==\"string\")return t;if(Bot(t))return Iot(t,dce)+\"\";if(vot(t))return gce?gce.call(t):\"\";var e=t+\"\";return e==\"0\"&&1/t==-Dot?\"-0\":e}mce.exports=dce});var L1=_((s4t,Ece)=>{var Pot=yce();function Sot(t){return t==null?\"\":Pot(t)}Ece.exports=Sot});var pU=_((o4t,Cce)=>{function bot(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var n=Array(a);++o<a;)n[o]=t[o+e];return n}Cce.exports=bot});var Ice=_((a4t,wce)=>{var xot=pU();function kot(t,e,r){var o=t.length;return r=r===void 0?o:r,!e&&r>=o?t:xot(t,e,r)}wce.exports=kot});var hU=_((l4t,Bce)=>{var Qot=\"\\\\ud800-\\\\udfff\",Fot=\"\\\\u0300-\\\\u036f\",Rot=\"\\\\ufe20-\\\\ufe2f\",Tot=\"\\\\u20d0-\\\\u20ff\",Lot=Fot+Rot+Tot,Not=\"\\\\ufe0e\\\\ufe0f\",Oot=\"\\\\u200d\",Mot=RegExp(\"[\"+Oot+Qot+Lot+Not+\"]\");function Uot(t){return Mot.test(t)}Bce.exports=Uot});var Dce=_((c4t,vce)=>{function _ot(t){return t.split(\"\")}vce.exports=_ot});var Rce=_((u4t,Fce)=>{var Pce=\"\\\\ud800-\\\\udfff\",Hot=\"\\\\u0300-\\\\u036f\",jot=\"\\\\ufe20-\\\\ufe2f\",qot=\"\\\\u20d0-\\\\u20ff\",Got=Hot+jot+qot,Yot=\"\\\\ufe0e\\\\ufe0f\",Wot=\"[\"+Pce+\"]\",gU=\"[\"+Got+\"]\",dU=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",Kot=\"(?:\"+gU+\"|\"+dU+\")\",Sce=\"[^\"+Pce+\"]\",bce=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",xce=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",Vot=\"\\\\u200d\",kce=Kot+\"?\",Qce=\"[\"+Yot+\"]?\",Jot=\"(?:\"+Vot+\"(?:\"+[Sce,bce,xce].join(\"|\")+\")\"+Qce+kce+\")*\",zot=Qce+kce+Jot,Xot=\"(?:\"+[Sce+gU+\"?\",gU,bce,xce,Wot].join(\"|\")+\")\",Zot=RegExp(dU+\"(?=\"+dU+\")|\"+Xot+zot,\"g\");function $ot(t){return t.match(Zot)||[]}Fce.exports=$ot});var Lce=_((A4t,Tce)=>{var eat=Dce(),tat=hU(),rat=Rce();function nat(t){return tat(t)?rat(t):eat(t)}Tce.exports=nat});var Oce=_((f4t,Nce)=>{var iat=Ice(),sat=hU(),oat=Lce(),aat=L1();function lat(t){return function(e){e=aat(e);var r=sat(e)?oat(e):void 0,o=r?r[0]:e.charAt(0),a=r?iat(r,1).join(\"\"):e.slice(1);return o[t]()+a}}Nce.exports=lat});var Uce=_((p4t,Mce)=>{var cat=Oce(),uat=cat(\"toUpperCase\");Mce.exports=uat});var mU=_((h4t,_ce)=>{var Aat=L1(),fat=Uce();function pat(t){return fat(Aat(t).toLowerCase())}_ce.exports=pat});var Hce=_((g4t,jb)=>{function hat(){var t=0,e=1,r=2,o=3,a=4,n=5,u=6,A=7,p=8,h=9,E=10,I=11,v=12,x=13,C=14,R=15,N=16,U=17,J=0,te=1,ae=2,fe=3,ce=4;function me(g,Ee){return 55296<=g.charCodeAt(Ee)&&g.charCodeAt(Ee)<=56319&&56320<=g.charCodeAt(Ee+1)&&g.charCodeAt(Ee+1)<=57343}function he(g,Ee){Ee===void 0&&(Ee=0);var Pe=g.charCodeAt(Ee);if(55296<=Pe&&Pe<=56319&&Ee<g.length-1){var le=Pe,ne=g.charCodeAt(Ee+1);return 56320<=ne&&ne<=57343?(le-55296)*1024+(ne-56320)+65536:le}if(56320<=Pe&&Pe<=57343&&Ee>=1){var le=g.charCodeAt(Ee-1),ne=Pe;return 55296<=le&&le<=56319?(le-55296)*1024+(ne-56320)+65536:ne}return Pe}function Be(g,Ee,Pe){var le=[g].concat(Ee).concat([Pe]),ne=le[le.length-2],ee=Pe,Ie=le.lastIndexOf(C);if(Ie>1&&le.slice(1,Ie).every(function(H){return H==o})&&[o,x,U].indexOf(g)==-1)return ae;var Fe=le.lastIndexOf(a);if(Fe>0&&le.slice(1,Fe).every(function(H){return H==a})&&[v,a].indexOf(ne)==-1)return le.filter(function(H){return H==a}).length%2==1?fe:ce;if(ne==t&&ee==e)return J;if(ne==r||ne==t||ne==e)return ee==C&&Ee.every(function(H){return H==o})?ae:te;if(ee==r||ee==t||ee==e)return te;if(ne==u&&(ee==u||ee==A||ee==h||ee==E))return J;if((ne==h||ne==A)&&(ee==A||ee==p))return J;if((ne==E||ne==p)&&ee==p)return J;if(ee==o||ee==R)return J;if(ee==n)return J;if(ne==v)return J;var At=le.indexOf(o)!=-1?le.lastIndexOf(o)-1:le.length-2;return[x,U].indexOf(le[At])!=-1&&le.slice(At+1,-1).every(function(H){return H==o})&&ee==C||ne==R&&[N,U].indexOf(ee)!=-1?J:Ee.indexOf(a)!=-1?ae:ne==a&&ee==a?J:te}this.nextBreak=function(g,Ee){if(Ee===void 0&&(Ee=0),Ee<0)return 0;if(Ee>=g.length-1)return g.length;for(var Pe=we(he(g,Ee)),le=[],ne=Ee+1;ne<g.length;ne++)if(!me(g,ne-1)){var ee=we(he(g,ne));if(Be(Pe,le,ee))return ne;le.push(ee)}return g.length},this.splitGraphemes=function(g){for(var Ee=[],Pe=0,le;(le=this.nextBreak(g,Pe))<g.length;)Ee.push(g.slice(Pe,le)),Pe=le;return Pe<g.length&&Ee.push(g.slice(Pe)),Ee},this.iterateGraphemes=function(g){var Ee=0,Pe={next:function(){var le,ne;return(ne=this.nextBreak(g,Ee))<g.length?(le=g.slice(Ee,ne),Ee=ne,{value:le,done:!1}):Ee<g.length?(le=g.slice(Ee),Ee=g.length,{value:le,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<\"u\"&&Symbol.iterator&&(Pe[Symbol.iterator]=function(){return Pe}),Pe},this.countGraphemes=function(g){for(var Ee=0,Pe=0,le;(le=this.nextBreak(g,Pe))<g.length;)Pe=le,Ee++;return Pe<g.length&&Ee++,Ee};function we(g){return 1536<=g&&g<=1541||g==1757||g==1807||g==2274||g==3406||g==69821||70082<=g&&g<=70083||g==72250||72326<=g&&g<=72329||g==73030?v:g==13?t:g==10?e:0<=g&&g<=9||11<=g&&g<=12||14<=g&&g<=31||127<=g&&g<=159||g==173||g==1564||g==6158||g==8203||8206<=g&&g<=8207||g==8232||g==8233||8234<=g&&g<=8238||8288<=g&&g<=8292||g==8293||8294<=g&&g<=8303||55296<=g&&g<=57343||g==65279||65520<=g&&g<=65528||65529<=g&&g<=65531||113824<=g&&g<=113827||119155<=g&&g<=119162||g==917504||g==917505||917506<=g&&g<=917535||917632<=g&&g<=917759||918e3<=g&&g<=921599?r:768<=g&&g<=879||1155<=g&&g<=1159||1160<=g&&g<=1161||1425<=g&&g<=1469||g==1471||1473<=g&&g<=1474||1476<=g&&g<=1477||g==1479||1552<=g&&g<=1562||1611<=g&&g<=1631||g==1648||1750<=g&&g<=1756||1759<=g&&g<=1764||1767<=g&&g<=1768||1770<=g&&g<=1773||g==1809||1840<=g&&g<=1866||1958<=g&&g<=1968||2027<=g&&g<=2035||2070<=g&&g<=2073||2075<=g&&g<=2083||2085<=g&&g<=2087||2089<=g&&g<=2093||2137<=g&&g<=2139||2260<=g&&g<=2273||2275<=g&&g<=2306||g==2362||g==2364||2369<=g&&g<=2376||g==2381||2385<=g&&g<=2391||2402<=g&&g<=2403||g==2433||g==2492||g==2494||2497<=g&&g<=2500||g==2509||g==2519||2530<=g&&g<=2531||2561<=g&&g<=2562||g==2620||2625<=g&&g<=2626||2631<=g&&g<=2632||2635<=g&&g<=2637||g==2641||2672<=g&&g<=2673||g==2677||2689<=g&&g<=2690||g==2748||2753<=g&&g<=2757||2759<=g&&g<=2760||g==2765||2786<=g&&g<=2787||2810<=g&&g<=2815||g==2817||g==2876||g==2878||g==2879||2881<=g&&g<=2884||g==2893||g==2902||g==2903||2914<=g&&g<=2915||g==2946||g==3006||g==3008||g==3021||g==3031||g==3072||3134<=g&&g<=3136||3142<=g&&g<=3144||3146<=g&&g<=3149||3157<=g&&g<=3158||3170<=g&&g<=3171||g==3201||g==3260||g==3263||g==3266||g==3270||3276<=g&&g<=3277||3285<=g&&g<=3286||3298<=g&&g<=3299||3328<=g&&g<=3329||3387<=g&&g<=3388||g==3390||3393<=g&&g<=3396||g==3405||g==3415||3426<=g&&g<=3427||g==3530||g==3535||3538<=g&&g<=3540||g==3542||g==3551||g==3633||3636<=g&&g<=3642||3655<=g&&g<=3662||g==3761||3764<=g&&g<=3769||3771<=g&&g<=3772||3784<=g&&g<=3789||3864<=g&&g<=3865||g==3893||g==3895||g==3897||3953<=g&&g<=3966||3968<=g&&g<=3972||3974<=g&&g<=3975||3981<=g&&g<=3991||3993<=g&&g<=4028||g==4038||4141<=g&&g<=4144||4146<=g&&g<=4151||4153<=g&&g<=4154||4157<=g&&g<=4158||4184<=g&&g<=4185||4190<=g&&g<=4192||4209<=g&&g<=4212||g==4226||4229<=g&&g<=4230||g==4237||g==4253||4957<=g&&g<=4959||5906<=g&&g<=5908||5938<=g&&g<=5940||5970<=g&&g<=5971||6002<=g&&g<=6003||6068<=g&&g<=6069||6071<=g&&g<=6077||g==6086||6089<=g&&g<=6099||g==6109||6155<=g&&g<=6157||6277<=g&&g<=6278||g==6313||6432<=g&&g<=6434||6439<=g&&g<=6440||g==6450||6457<=g&&g<=6459||6679<=g&&g<=6680||g==6683||g==6742||6744<=g&&g<=6750||g==6752||g==6754||6757<=g&&g<=6764||6771<=g&&g<=6780||g==6783||6832<=g&&g<=6845||g==6846||6912<=g&&g<=6915||g==6964||6966<=g&&g<=6970||g==6972||g==6978||7019<=g&&g<=7027||7040<=g&&g<=7041||7074<=g&&g<=7077||7080<=g&&g<=7081||7083<=g&&g<=7085||g==7142||7144<=g&&g<=7145||g==7149||7151<=g&&g<=7153||7212<=g&&g<=7219||7222<=g&&g<=7223||7376<=g&&g<=7378||7380<=g&&g<=7392||7394<=g&&g<=7400||g==7405||g==7412||7416<=g&&g<=7417||7616<=g&&g<=7673||7675<=g&&g<=7679||g==8204||8400<=g&&g<=8412||8413<=g&&g<=8416||g==8417||8418<=g&&g<=8420||8421<=g&&g<=8432||11503<=g&&g<=11505||g==11647||11744<=g&&g<=11775||12330<=g&&g<=12333||12334<=g&&g<=12335||12441<=g&&g<=12442||g==42607||42608<=g&&g<=42610||42612<=g&&g<=42621||42654<=g&&g<=42655||42736<=g&&g<=42737||g==43010||g==43014||g==43019||43045<=g&&g<=43046||43204<=g&&g<=43205||43232<=g&&g<=43249||43302<=g&&g<=43309||43335<=g&&g<=43345||43392<=g&&g<=43394||g==43443||43446<=g&&g<=43449||g==43452||g==43493||43561<=g&&g<=43566||43569<=g&&g<=43570||43573<=g&&g<=43574||g==43587||g==43596||g==43644||g==43696||43698<=g&&g<=43700||43703<=g&&g<=43704||43710<=g&&g<=43711||g==43713||43756<=g&&g<=43757||g==43766||g==44005||g==44008||g==44013||g==64286||65024<=g&&g<=65039||65056<=g&&g<=65071||65438<=g&&g<=65439||g==66045||g==66272||66422<=g&&g<=66426||68097<=g&&g<=68099||68101<=g&&g<=68102||68108<=g&&g<=68111||68152<=g&&g<=68154||g==68159||68325<=g&&g<=68326||g==69633||69688<=g&&g<=69702||69759<=g&&g<=69761||69811<=g&&g<=69814||69817<=g&&g<=69818||69888<=g&&g<=69890||69927<=g&&g<=69931||69933<=g&&g<=69940||g==70003||70016<=g&&g<=70017||70070<=g&&g<=70078||70090<=g&&g<=70092||70191<=g&&g<=70193||g==70196||70198<=g&&g<=70199||g==70206||g==70367||70371<=g&&g<=70378||70400<=g&&g<=70401||g==70460||g==70462||g==70464||g==70487||70502<=g&&g<=70508||70512<=g&&g<=70516||70712<=g&&g<=70719||70722<=g&&g<=70724||g==70726||g==70832||70835<=g&&g<=70840||g==70842||g==70845||70847<=g&&g<=70848||70850<=g&&g<=70851||g==71087||71090<=g&&g<=71093||71100<=g&&g<=71101||71103<=g&&g<=71104||71132<=g&&g<=71133||71219<=g&&g<=71226||g==71229||71231<=g&&g<=71232||g==71339||g==71341||71344<=g&&g<=71349||g==71351||71453<=g&&g<=71455||71458<=g&&g<=71461||71463<=g&&g<=71467||72193<=g&&g<=72198||72201<=g&&g<=72202||72243<=g&&g<=72248||72251<=g&&g<=72254||g==72263||72273<=g&&g<=72278||72281<=g&&g<=72283||72330<=g&&g<=72342||72344<=g&&g<=72345||72752<=g&&g<=72758||72760<=g&&g<=72765||g==72767||72850<=g&&g<=72871||72874<=g&&g<=72880||72882<=g&&g<=72883||72885<=g&&g<=72886||73009<=g&&g<=73014||g==73018||73020<=g&&g<=73021||73023<=g&&g<=73029||g==73031||92912<=g&&g<=92916||92976<=g&&g<=92982||94095<=g&&g<=94098||113821<=g&&g<=113822||g==119141||119143<=g&&g<=119145||119150<=g&&g<=119154||119163<=g&&g<=119170||119173<=g&&g<=119179||119210<=g&&g<=119213||119362<=g&&g<=119364||121344<=g&&g<=121398||121403<=g&&g<=121452||g==121461||g==121476||121499<=g&&g<=121503||121505<=g&&g<=121519||122880<=g&&g<=122886||122888<=g&&g<=122904||122907<=g&&g<=122913||122915<=g&&g<=122916||122918<=g&&g<=122922||125136<=g&&g<=125142||125252<=g&&g<=125258||917536<=g&&g<=917631||917760<=g&&g<=917999?o:127462<=g&&g<=127487?a:g==2307||g==2363||2366<=g&&g<=2368||2377<=g&&g<=2380||2382<=g&&g<=2383||2434<=g&&g<=2435||2495<=g&&g<=2496||2503<=g&&g<=2504||2507<=g&&g<=2508||g==2563||2622<=g&&g<=2624||g==2691||2750<=g&&g<=2752||g==2761||2763<=g&&g<=2764||2818<=g&&g<=2819||g==2880||2887<=g&&g<=2888||2891<=g&&g<=2892||g==3007||3009<=g&&g<=3010||3014<=g&&g<=3016||3018<=g&&g<=3020||3073<=g&&g<=3075||3137<=g&&g<=3140||3202<=g&&g<=3203||g==3262||3264<=g&&g<=3265||3267<=g&&g<=3268||3271<=g&&g<=3272||3274<=g&&g<=3275||3330<=g&&g<=3331||3391<=g&&g<=3392||3398<=g&&g<=3400||3402<=g&&g<=3404||3458<=g&&g<=3459||3536<=g&&g<=3537||3544<=g&&g<=3550||3570<=g&&g<=3571||g==3635||g==3763||3902<=g&&g<=3903||g==3967||g==4145||4155<=g&&g<=4156||4182<=g&&g<=4183||g==4228||g==6070||6078<=g&&g<=6085||6087<=g&&g<=6088||6435<=g&&g<=6438||6441<=g&&g<=6443||6448<=g&&g<=6449||6451<=g&&g<=6456||6681<=g&&g<=6682||g==6741||g==6743||6765<=g&&g<=6770||g==6916||g==6965||g==6971||6973<=g&&g<=6977||6979<=g&&g<=6980||g==7042||g==7073||7078<=g&&g<=7079||g==7082||g==7143||7146<=g&&g<=7148||g==7150||7154<=g&&g<=7155||7204<=g&&g<=7211||7220<=g&&g<=7221||g==7393||7410<=g&&g<=7411||g==7415||43043<=g&&g<=43044||g==43047||43136<=g&&g<=43137||43188<=g&&g<=43203||43346<=g&&g<=43347||g==43395||43444<=g&&g<=43445||43450<=g&&g<=43451||43453<=g&&g<=43456||43567<=g&&g<=43568||43571<=g&&g<=43572||g==43597||g==43755||43758<=g&&g<=43759||g==43765||44003<=g&&g<=44004||44006<=g&&g<=44007||44009<=g&&g<=44010||g==44012||g==69632||g==69634||g==69762||69808<=g&&g<=69810||69815<=g&&g<=69816||g==69932||g==70018||70067<=g&&g<=70069||70079<=g&&g<=70080||70188<=g&&g<=70190||70194<=g&&g<=70195||g==70197||70368<=g&&g<=70370||70402<=g&&g<=70403||g==70463||70465<=g&&g<=70468||70471<=g&&g<=70472||70475<=g&&g<=70477||70498<=g&&g<=70499||70709<=g&&g<=70711||70720<=g&&g<=70721||g==70725||70833<=g&&g<=70834||g==70841||70843<=g&&g<=70844||g==70846||g==70849||71088<=g&&g<=71089||71096<=g&&g<=71099||g==71102||71216<=g&&g<=71218||71227<=g&&g<=71228||g==71230||g==71340||71342<=g&&g<=71343||g==71350||71456<=g&&g<=71457||g==71462||72199<=g&&g<=72200||g==72249||72279<=g&&g<=72280||g==72343||g==72751||g==72766||g==72873||g==72881||g==72884||94033<=g&&g<=94078||g==119142||g==119149?n:4352<=g&&g<=4447||43360<=g&&g<=43388?u:4448<=g&&g<=4519||55216<=g&&g<=55238?A:4520<=g&&g<=4607||55243<=g&&g<=55291?p:g==44032||g==44060||g==44088||g==44116||g==44144||g==44172||g==44200||g==44228||g==44256||g==44284||g==44312||g==44340||g==44368||g==44396||g==44424||g==44452||g==44480||g==44508||g==44536||g==44564||g==44592||g==44620||g==44648||g==44676||g==44704||g==44732||g==44760||g==44788||g==44816||g==44844||g==44872||g==44900||g==44928||g==44956||g==44984||g==45012||g==45040||g==45068||g==45096||g==45124||g==45152||g==45180||g==45208||g==45236||g==45264||g==45292||g==45320||g==45348||g==45376||g==45404||g==45432||g==45460||g==45488||g==45516||g==45544||g==45572||g==45600||g==45628||g==45656||g==45684||g==45712||g==45740||g==45768||g==45796||g==45824||g==45852||g==45880||g==45908||g==45936||g==45964||g==45992||g==46020||g==46048||g==46076||g==46104||g==46132||g==46160||g==46188||g==46216||g==46244||g==46272||g==46300||g==46328||g==46356||g==46384||g==46412||g==46440||g==46468||g==46496||g==46524||g==46552||g==46580||g==46608||g==46636||g==46664||g==46692||g==46720||g==46748||g==46776||g==46804||g==46832||g==46860||g==46888||g==46916||g==46944||g==46972||g==47e3||g==47028||g==47056||g==47084||g==47112||g==47140||g==47168||g==47196||g==47224||g==47252||g==47280||g==47308||g==47336||g==47364||g==47392||g==47420||g==47448||g==47476||g==47504||g==47532||g==47560||g==47588||g==47616||g==47644||g==47672||g==47700||g==47728||g==47756||g==47784||g==47812||g==47840||g==47868||g==47896||g==47924||g==47952||g==47980||g==48008||g==48036||g==48064||g==48092||g==48120||g==48148||g==48176||g==48204||g==48232||g==48260||g==48288||g==48316||g==48344||g==48372||g==48400||g==48428||g==48456||g==48484||g==48512||g==48540||g==48568||g==48596||g==48624||g==48652||g==48680||g==48708||g==48736||g==48764||g==48792||g==48820||g==48848||g==48876||g==48904||g==48932||g==48960||g==48988||g==49016||g==49044||g==49072||g==49100||g==49128||g==49156||g==49184||g==49212||g==49240||g==49268||g==49296||g==49324||g==49352||g==49380||g==49408||g==49436||g==49464||g==49492||g==49520||g==49548||g==49576||g==49604||g==49632||g==49660||g==49688||g==49716||g==49744||g==49772||g==49800||g==49828||g==49856||g==49884||g==49912||g==49940||g==49968||g==49996||g==50024||g==50052||g==50080||g==50108||g==50136||g==50164||g==50192||g==50220||g==50248||g==50276||g==50304||g==50332||g==50360||g==50388||g==50416||g==50444||g==50472||g==50500||g==50528||g==50556||g==50584||g==50612||g==50640||g==50668||g==50696||g==50724||g==50752||g==50780||g==50808||g==50836||g==50864||g==50892||g==50920||g==50948||g==50976||g==51004||g==51032||g==51060||g==51088||g==51116||g==51144||g==51172||g==51200||g==51228||g==51256||g==51284||g==51312||g==51340||g==51368||g==51396||g==51424||g==51452||g==51480||g==51508||g==51536||g==51564||g==51592||g==51620||g==51648||g==51676||g==51704||g==51732||g==51760||g==51788||g==51816||g==51844||g==51872||g==51900||g==51928||g==51956||g==51984||g==52012||g==52040||g==52068||g==52096||g==52124||g==52152||g==52180||g==52208||g==52236||g==52264||g==52292||g==52320||g==52348||g==52376||g==52404||g==52432||g==52460||g==52488||g==52516||g==52544||g==52572||g==52600||g==52628||g==52656||g==52684||g==52712||g==52740||g==52768||g==52796||g==52824||g==52852||g==52880||g==52908||g==52936||g==52964||g==52992||g==53020||g==53048||g==53076||g==53104||g==53132||g==53160||g==53188||g==53216||g==53244||g==53272||g==53300||g==53328||g==53356||g==53384||g==53412||g==53440||g==53468||g==53496||g==53524||g==53552||g==53580||g==53608||g==53636||g==53664||g==53692||g==53720||g==53748||g==53776||g==53804||g==53832||g==53860||g==53888||g==53916||g==53944||g==53972||g==54e3||g==54028||g==54056||g==54084||g==54112||g==54140||g==54168||g==54196||g==54224||g==54252||g==54280||g==54308||g==54336||g==54364||g==54392||g==54420||g==54448||g==54476||g==54504||g==54532||g==54560||g==54588||g==54616||g==54644||g==54672||g==54700||g==54728||g==54756||g==54784||g==54812||g==54840||g==54868||g==54896||g==54924||g==54952||g==54980||g==55008||g==55036||g==55064||g==55092||g==55120||g==55148||g==55176?h:44033<=g&&g<=44059||44061<=g&&g<=44087||44089<=g&&g<=44115||44117<=g&&g<=44143||44145<=g&&g<=44171||44173<=g&&g<=44199||44201<=g&&g<=44227||44229<=g&&g<=44255||44257<=g&&g<=44283||44285<=g&&g<=44311||44313<=g&&g<=44339||44341<=g&&g<=44367||44369<=g&&g<=44395||44397<=g&&g<=44423||44425<=g&&g<=44451||44453<=g&&g<=44479||44481<=g&&g<=44507||44509<=g&&g<=44535||44537<=g&&g<=44563||44565<=g&&g<=44591||44593<=g&&g<=44619||44621<=g&&g<=44647||44649<=g&&g<=44675||44677<=g&&g<=44703||44705<=g&&g<=44731||44733<=g&&g<=44759||44761<=g&&g<=44787||44789<=g&&g<=44815||44817<=g&&g<=44843||44845<=g&&g<=44871||44873<=g&&g<=44899||44901<=g&&g<=44927||44929<=g&&g<=44955||44957<=g&&g<=44983||44985<=g&&g<=45011||45013<=g&&g<=45039||45041<=g&&g<=45067||45069<=g&&g<=45095||45097<=g&&g<=45123||45125<=g&&g<=45151||45153<=g&&g<=45179||45181<=g&&g<=45207||45209<=g&&g<=45235||45237<=g&&g<=45263||45265<=g&&g<=45291||45293<=g&&g<=45319||45321<=g&&g<=45347||45349<=g&&g<=45375||45377<=g&&g<=45403||45405<=g&&g<=45431||45433<=g&&g<=45459||45461<=g&&g<=45487||45489<=g&&g<=45515||45517<=g&&g<=45543||45545<=g&&g<=45571||45573<=g&&g<=45599||45601<=g&&g<=45627||45629<=g&&g<=45655||45657<=g&&g<=45683||45685<=g&&g<=45711||45713<=g&&g<=45739||45741<=g&&g<=45767||45769<=g&&g<=45795||45797<=g&&g<=45823||45825<=g&&g<=45851||45853<=g&&g<=45879||45881<=g&&g<=45907||45909<=g&&g<=45935||45937<=g&&g<=45963||45965<=g&&g<=45991||45993<=g&&g<=46019||46021<=g&&g<=46047||46049<=g&&g<=46075||46077<=g&&g<=46103||46105<=g&&g<=46131||46133<=g&&g<=46159||46161<=g&&g<=46187||46189<=g&&g<=46215||46217<=g&&g<=46243||46245<=g&&g<=46271||46273<=g&&g<=46299||46301<=g&&g<=46327||46329<=g&&g<=46355||46357<=g&&g<=46383||46385<=g&&g<=46411||46413<=g&&g<=46439||46441<=g&&g<=46467||46469<=g&&g<=46495||46497<=g&&g<=46523||46525<=g&&g<=46551||46553<=g&&g<=46579||46581<=g&&g<=46607||46609<=g&&g<=46635||46637<=g&&g<=46663||46665<=g&&g<=46691||46693<=g&&g<=46719||46721<=g&&g<=46747||46749<=g&&g<=46775||46777<=g&&g<=46803||46805<=g&&g<=46831||46833<=g&&g<=46859||46861<=g&&g<=46887||46889<=g&&g<=46915||46917<=g&&g<=46943||46945<=g&&g<=46971||46973<=g&&g<=46999||47001<=g&&g<=47027||47029<=g&&g<=47055||47057<=g&&g<=47083||47085<=g&&g<=47111||47113<=g&&g<=47139||47141<=g&&g<=47167||47169<=g&&g<=47195||47197<=g&&g<=47223||47225<=g&&g<=47251||47253<=g&&g<=47279||47281<=g&&g<=47307||47309<=g&&g<=47335||47337<=g&&g<=47363||47365<=g&&g<=47391||47393<=g&&g<=47419||47421<=g&&g<=47447||47449<=g&&g<=47475||47477<=g&&g<=47503||47505<=g&&g<=47531||47533<=g&&g<=47559||47561<=g&&g<=47587||47589<=g&&g<=47615||47617<=g&&g<=47643||47645<=g&&g<=47671||47673<=g&&g<=47699||47701<=g&&g<=47727||47729<=g&&g<=47755||47757<=g&&g<=47783||47785<=g&&g<=47811||47813<=g&&g<=47839||47841<=g&&g<=47867||47869<=g&&g<=47895||47897<=g&&g<=47923||47925<=g&&g<=47951||47953<=g&&g<=47979||47981<=g&&g<=48007||48009<=g&&g<=48035||48037<=g&&g<=48063||48065<=g&&g<=48091||48093<=g&&g<=48119||48121<=g&&g<=48147||48149<=g&&g<=48175||48177<=g&&g<=48203||48205<=g&&g<=48231||48233<=g&&g<=48259||48261<=g&&g<=48287||48289<=g&&g<=48315||48317<=g&&g<=48343||48345<=g&&g<=48371||48373<=g&&g<=48399||48401<=g&&g<=48427||48429<=g&&g<=48455||48457<=g&&g<=48483||48485<=g&&g<=48511||48513<=g&&g<=48539||48541<=g&&g<=48567||48569<=g&&g<=48595||48597<=g&&g<=48623||48625<=g&&g<=48651||48653<=g&&g<=48679||48681<=g&&g<=48707||48709<=g&&g<=48735||48737<=g&&g<=48763||48765<=g&&g<=48791||48793<=g&&g<=48819||48821<=g&&g<=48847||48849<=g&&g<=48875||48877<=g&&g<=48903||48905<=g&&g<=48931||48933<=g&&g<=48959||48961<=g&&g<=48987||48989<=g&&g<=49015||49017<=g&&g<=49043||49045<=g&&g<=49071||49073<=g&&g<=49099||49101<=g&&g<=49127||49129<=g&&g<=49155||49157<=g&&g<=49183||49185<=g&&g<=49211||49213<=g&&g<=49239||49241<=g&&g<=49267||49269<=g&&g<=49295||49297<=g&&g<=49323||49325<=g&&g<=49351||49353<=g&&g<=49379||49381<=g&&g<=49407||49409<=g&&g<=49435||49437<=g&&g<=49463||49465<=g&&g<=49491||49493<=g&&g<=49519||49521<=g&&g<=49547||49549<=g&&g<=49575||49577<=g&&g<=49603||49605<=g&&g<=49631||49633<=g&&g<=49659||49661<=g&&g<=49687||49689<=g&&g<=49715||49717<=g&&g<=49743||49745<=g&&g<=49771||49773<=g&&g<=49799||49801<=g&&g<=49827||49829<=g&&g<=49855||49857<=g&&g<=49883||49885<=g&&g<=49911||49913<=g&&g<=49939||49941<=g&&g<=49967||49969<=g&&g<=49995||49997<=g&&g<=50023||50025<=g&&g<=50051||50053<=g&&g<=50079||50081<=g&&g<=50107||50109<=g&&g<=50135||50137<=g&&g<=50163||50165<=g&&g<=50191||50193<=g&&g<=50219||50221<=g&&g<=50247||50249<=g&&g<=50275||50277<=g&&g<=50303||50305<=g&&g<=50331||50333<=g&&g<=50359||50361<=g&&g<=50387||50389<=g&&g<=50415||50417<=g&&g<=50443||50445<=g&&g<=50471||50473<=g&&g<=50499||50501<=g&&g<=50527||50529<=g&&g<=50555||50557<=g&&g<=50583||50585<=g&&g<=50611||50613<=g&&g<=50639||50641<=g&&g<=50667||50669<=g&&g<=50695||50697<=g&&g<=50723||50725<=g&&g<=50751||50753<=g&&g<=50779||50781<=g&&g<=50807||50809<=g&&g<=50835||50837<=g&&g<=50863||50865<=g&&g<=50891||50893<=g&&g<=50919||50921<=g&&g<=50947||50949<=g&&g<=50975||50977<=g&&g<=51003||51005<=g&&g<=51031||51033<=g&&g<=51059||51061<=g&&g<=51087||51089<=g&&g<=51115||51117<=g&&g<=51143||51145<=g&&g<=51171||51173<=g&&g<=51199||51201<=g&&g<=51227||51229<=g&&g<=51255||51257<=g&&g<=51283||51285<=g&&g<=51311||51313<=g&&g<=51339||51341<=g&&g<=51367||51369<=g&&g<=51395||51397<=g&&g<=51423||51425<=g&&g<=51451||51453<=g&&g<=51479||51481<=g&&g<=51507||51509<=g&&g<=51535||51537<=g&&g<=51563||51565<=g&&g<=51591||51593<=g&&g<=51619||51621<=g&&g<=51647||51649<=g&&g<=51675||51677<=g&&g<=51703||51705<=g&&g<=51731||51733<=g&&g<=51759||51761<=g&&g<=51787||51789<=g&&g<=51815||51817<=g&&g<=51843||51845<=g&&g<=51871||51873<=g&&g<=51899||51901<=g&&g<=51927||51929<=g&&g<=51955||51957<=g&&g<=51983||51985<=g&&g<=52011||52013<=g&&g<=52039||52041<=g&&g<=52067||52069<=g&&g<=52095||52097<=g&&g<=52123||52125<=g&&g<=52151||52153<=g&&g<=52179||52181<=g&&g<=52207||52209<=g&&g<=52235||52237<=g&&g<=52263||52265<=g&&g<=52291||52293<=g&&g<=52319||52321<=g&&g<=52347||52349<=g&&g<=52375||52377<=g&&g<=52403||52405<=g&&g<=52431||52433<=g&&g<=52459||52461<=g&&g<=52487||52489<=g&&g<=52515||52517<=g&&g<=52543||52545<=g&&g<=52571||52573<=g&&g<=52599||52601<=g&&g<=52627||52629<=g&&g<=52655||52657<=g&&g<=52683||52685<=g&&g<=52711||52713<=g&&g<=52739||52741<=g&&g<=52767||52769<=g&&g<=52795||52797<=g&&g<=52823||52825<=g&&g<=52851||52853<=g&&g<=52879||52881<=g&&g<=52907||52909<=g&&g<=52935||52937<=g&&g<=52963||52965<=g&&g<=52991||52993<=g&&g<=53019||53021<=g&&g<=53047||53049<=g&&g<=53075||53077<=g&&g<=53103||53105<=g&&g<=53131||53133<=g&&g<=53159||53161<=g&&g<=53187||53189<=g&&g<=53215||53217<=g&&g<=53243||53245<=g&&g<=53271||53273<=g&&g<=53299||53301<=g&&g<=53327||53329<=g&&g<=53355||53357<=g&&g<=53383||53385<=g&&g<=53411||53413<=g&&g<=53439||53441<=g&&g<=53467||53469<=g&&g<=53495||53497<=g&&g<=53523||53525<=g&&g<=53551||53553<=g&&g<=53579||53581<=g&&g<=53607||53609<=g&&g<=53635||53637<=g&&g<=53663||53665<=g&&g<=53691||53693<=g&&g<=53719||53721<=g&&g<=53747||53749<=g&&g<=53775||53777<=g&&g<=53803||53805<=g&&g<=53831||53833<=g&&g<=53859||53861<=g&&g<=53887||53889<=g&&g<=53915||53917<=g&&g<=53943||53945<=g&&g<=53971||53973<=g&&g<=53999||54001<=g&&g<=54027||54029<=g&&g<=54055||54057<=g&&g<=54083||54085<=g&&g<=54111||54113<=g&&g<=54139||54141<=g&&g<=54167||54169<=g&&g<=54195||54197<=g&&g<=54223||54225<=g&&g<=54251||54253<=g&&g<=54279||54281<=g&&g<=54307||54309<=g&&g<=54335||54337<=g&&g<=54363||54365<=g&&g<=54391||54393<=g&&g<=54419||54421<=g&&g<=54447||54449<=g&&g<=54475||54477<=g&&g<=54503||54505<=g&&g<=54531||54533<=g&&g<=54559||54561<=g&&g<=54587||54589<=g&&g<=54615||54617<=g&&g<=54643||54645<=g&&g<=54671||54673<=g&&g<=54699||54701<=g&&g<=54727||54729<=g&&g<=54755||54757<=g&&g<=54783||54785<=g&&g<=54811||54813<=g&&g<=54839||54841<=g&&g<=54867||54869<=g&&g<=54895||54897<=g&&g<=54923||54925<=g&&g<=54951||54953<=g&&g<=54979||54981<=g&&g<=55007||55009<=g&&g<=55035||55037<=g&&g<=55063||55065<=g&&g<=55091||55093<=g&&g<=55119||55121<=g&&g<=55147||55149<=g&&g<=55175||55177<=g&&g<=55203?E:g==9757||g==9977||9994<=g&&g<=9997||g==127877||127938<=g&&g<=127940||g==127943||127946<=g&&g<=127948||128066<=g&&g<=128067||128070<=g&&g<=128080||g==128110||128112<=g&&g<=128120||g==128124||128129<=g&&g<=128131||128133<=g&&g<=128135||g==128170||128372<=g&&g<=128373||g==128378||g==128400||128405<=g&&g<=128406||128581<=g&&g<=128583||128587<=g&&g<=128591||g==128675||128692<=g&&g<=128694||g==128704||g==128716||129304<=g&&g<=129308||129310<=g&&g<=129311||g==129318||129328<=g&&g<=129337||129341<=g&&g<=129342||129489<=g&&g<=129501?x:127995<=g&&g<=127999?C:g==8205?R:g==9792||g==9794||9877<=g&&g<=9878||g==9992||g==10084||g==127752||g==127806||g==127859||g==127891||g==127908||g==127912||g==127979||g==127981||g==128139||128187<=g&&g<=128188||g==128295||g==128300||g==128488||g==128640||g==128658?N:128102<=g&&g<=128105?U:I}return this}typeof jb<\"u\"&&jb.exports&&(jb.exports=hat)});var qce=_((d4t,jce)=>{var gat=/^(.*?)(\\x1b\\[[^m]+m|\\x1b\\]8;;.*?(\\x1b\\\\|\\u0007))/,qb;function dat(){if(qb)return qb;if(typeof Intl.Segmenter<\"u\"){let t=new Intl.Segmenter(\"en\",{granularity:\"grapheme\"});return qb=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=Hce(),e=new t;return qb=r=>e.splitGraphemes(r)}}jce.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError(\"Negative indices aren't supported by this implementation\");let o=r-e,a=\"\",n=0,u=0;for(;t.length>0;){let A=t.match(gat)||[t,t,void 0],p=dat()(A[1]),h=Math.min(e-n,p.length);p=p.slice(h);let E=Math.min(o-u,p.length);a+=p.slice(0,E).join(\"\"),n+=h,u+=E,typeof A[2]<\"u\"&&(a+=A[2]),t=t.slice(A[0].length)}return a}});var rn,N1=Et(()=>{rn=process.env.YARN_IS_TEST_ENV?\"0.0.0\":\"4.2.1\"});function Jce(t,{configuration:e,json:r}){if(!e.get(\"enableMessageNames\"))return\"\";let a=Wu(t===null?0:t);return!r&&t===null?Ut(e,a,\"grey\"):a}function yU(t,{configuration:e,json:r}){let o=Jce(t,{configuration:e,json:r});if(!o||t===null||t===0)return o;let a=wr[t],n=`https://yarnpkg.com/advanced/error-codes#${o}---${a}`.toLowerCase();return Zy(e,o,n)}async function NE({configuration:t,stdout:e,forceError:r},o){let a=await Lt.start({configuration:t,stdout:e,includeFooter:!1},async n=>{let u=!1,A=!1;for(let p of o)typeof p.option<\"u\"&&(p.error||r?(A=!0,n.reportError(50,p.message)):(u=!0,n.reportWarning(50,p.message)),p.callback?.());u&&!A&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var Kce,Gb,mat,Gce,Yce,Ah,Vce,Wce,yat,Eat,Yb,Cat,Lt,O1=Et(()=>{Kce=$e(qce()),Gb=$e(td());fP();Yl();N1();ql();mat=\"\\xB7\",Gce=[\"\\u280B\",\"\\u2819\",\"\\u2839\",\"\\u2838\",\"\\u283C\",\"\\u2834\",\"\\u2826\",\"\\u2827\",\"\\u2807\",\"\\u280F\"],Yce=80,Ah=Gb.default.GITHUB_ACTIONS?{start:t=>`::group::${t}\n`,end:t=>`::endgroup::\n`}:Gb.default.TRAVIS?{start:t=>`travis_fold:start:${t}\n`,end:t=>`travis_fold:end:${t}\n`}:Gb.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\\W+/g,\"_\")}[collapsed=true]\\r\\x1B[0K${t}\n`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\\W+/g,\"_\")}\\r\\x1B[0K`}:null,Vce=Ah!==null,Wce=new Date,yat=[\"iTerm.app\",\"Apple_Terminal\",\"WarpTerminal\",\"vscode\"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,Eat=t=>t,Yb=Eat({patrick:{date:[17,3],chars:[\"\\u{1F340}\",\"\\u{1F331}\"],size:40},simba:{date:[19,7],chars:[\"\\u{1F981}\",\"\\u{1F334}\"],size:40},jack:{date:[31,10],chars:[\"\\u{1F383}\",\"\\u{1F987}\"],size:40},hogsfather:{date:[31,12],chars:[\"\\u{1F389}\",\"\\u{1F384}\"],size:40},default:{chars:[\"=\",\"-\"],size:80}}),Cat=yat&&Object.keys(Yb).find(t=>{let e=Yb[t];return!(e.date&&(e.date[0]!==Wce.getDate()||e.date[1]!==Wce.getMonth()+1))})||\"default\";Lt=class extends Xs{constructor({configuration:r,stdout:o,json:a=!1,forceSectionAlignment:n=!1,includeNames:u=!0,includePrefix:A=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:I=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(XI(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=u,this.includePrefix=A,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=I,this.json=a,this.stdout=o,r.get(\"enableProgressBars\")&&!a&&o.isTTY&&o.columns>22){let v=r.get(\"progressBarStyle\")||Cat;if(!Object.hasOwn(Yb,v))throw new Error(\"Assertion failed: Invalid progress bar style\");this.progressStyle=Yb[v];let x=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*x/80)}}static async start(r,o){let a=new this(r),n=process.emitWarning;process.emitWarning=(u,A)=>{if(typeof u!=\"string\"){let h=u;u=h.message,A=A??h.name}let p=typeof A<\"u\"?`${A}: ${u}`:u;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,yd(r.configuration,`Yarn ${rn}`,2));try{await o(a)}catch(u){a.reportExceptionOnce(u)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let o=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,o-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&o?.(p-A)}}async startSectionPromise({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&o?.(p-A)}}startTimerImpl(r,o,a){return{cb:typeof o==\"function\"?o:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\\u250C ${r}`),this.indent+=1,Ah!==null&&!this.json&&this.includeInfos&&this.stdout.write(Ah.start(r))},reportFooter:A=>{if(this.indent-=1,Ah!==null&&!this.json&&this.includeInfos){this.stdout.write(Ah.end(r));for(let p of this.timerFooter)p()}this.configuration.get(\"enableTimers\")&&A>200?this.reportInfo(null,`\\u2514 Completed in ${Ut(this.configuration,A,yt.DURATION)}`):this.reportInfo(null,\"\\u2514 Completed\"),this.level-=1},skipIfEmpty:(typeof o==\"function\"?{}:o).skipIfEmpty}}startTimerSync(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionSync(u,n)}async startTimerPromise(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionPromise(u,n)}reportSeparator(){this.indent===0?this.writeLine(\"\"):this.reportInfo(null,\"\")}reportInfo(r,o){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\",u=`${this.formatPrefix(n,\"blueBright\")}${o}`;this.json?this.reportJson({type:\"info\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLine(u)}reportWarning(r,o){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"warning\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLine(`${this.formatPrefix(n,\"yellowBright\")}${o}`)}reportError(r,o){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,o)),this.reportErrorImpl(r,o)}reportErrorImpl(r,o){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"error\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLine(`${this.formatPrefix(n,\"redBright\")}${o}`,{truncate:!1})}reportFold(r,o){if(!Ah)return;let a=`${Ah.start(r)}${o}${Ah.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error(\"Unimplemented: Progress bars can't have both progress and titles.\");let o=!1,a=Promise.resolve().then(async()=>{let u={progress:r.hasProgress?0:void 0,title:r.hasTitle?\"\":void 0};this.progress.set(r,{definition:u,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:A,title:p}of r)o||u.progress===A&&u.title===p||(u.progress=A,u.title=p,this.refreshProgress());n()}),n=()=>{o||(o=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r=\"\";this.errorCount>0?r=\"Failed with errors\":this.warningCount>0?r=\"Done with warnings\":r=\"Done\";let o=Ut(this.configuration,Date.now()-this.startTime,yt.DURATION),a=this.configuration.get(\"enableTimers\")?`${r} in ${o}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:o}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:o})}\n`),this.writeProgress()}writeLines(r,{truncate:o}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:o})}\n`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let o of r)o.committed=!0,o.action()}clearProgress({delta:r=0,clear:o=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\\x1B[${this.progress.size+r}A`),(r>0||o)&&this.stdout.write(\"\\x1B[0J\"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>Yce&&(this.progressFrame=(this.progressFrame+1)%Gce.length,this.progressTime=r);let o=Gce[this.progressFrame];for(let a of this.progress.values()){let n=\"\";if(typeof a.lastScaledSize<\"u\"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let u=this.formatName(null),A=u?`${u}: `:\"\",p=a.definition.title?` ${a.definition.title}`:\"\";this.stdout.write(`${Ut(this.configuration,\"\\u27A4\",\"blueBright\")} ${A}${o}${n}${p}\n`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},Yce)}refreshProgress({delta:r=0,force:o=!1}={}){let a=!1,n=!1;if(o||this.progress.size===0)a=!0;else for(let u of this.progress.values()){let A=typeof u.definition.progress<\"u\"?Math.trunc(this.progressMaxScaledSize*u.definition.progress):void 0,p=u.lastScaledSize;u.lastScaledSize=A;let h=u.lastTitle;if(u.lastTitle=u.definition.title,A!==p||(n=h!==u.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:o}={}){return this.progressStyle===null&&(o=!1),typeof o>\"u\"&&(o=this.configuration.get(\"preferTruncatedLines\")),o&&(r=(0,Kce.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?Jce(r,{configuration:this.configuration,json:this.json}):\"\"}formatPrefix(r,o){return this.includePrefix?`${Ut(this.configuration,\"\\u27A4\",o)} ${r}${this.formatIndent()}`:\"\"}formatNameWithHyperlink(r){return this.includeNames?yU(r,{configuration:this.configuration,json:this.json}):\"\"}formatIndent(){return this.level>0||!this.forceSectionAlignment?\"\\u2502 \".repeat(this.indent):`${mat} `}}});var un={};Vt(un,{PackageManager:()=>Zce,detectPackageManager:()=>$ce,executePackageAccessibleBinary:()=>iue,executePackageScript:()=>Wb,executePackageShellcode:()=>EU,executeWorkspaceAccessibleBinary:()=>Sat,executeWorkspaceLifecycleScript:()=>rue,executeWorkspaceScript:()=>tue,getPackageAccessibleBinaries:()=>Kb,getWorkspaceAccessibleBinaries:()=>nue,hasPackageScript:()=>vat,hasWorkspaceScript:()=>CU,isNodeScript:()=>wU,makeScriptEnv:()=>M1,maybeExecuteWorkspaceLifecycleScript:()=>Pat,prepareExternalProject:()=>Bat});async function fh(t,e,r,o=[]){if(process.platform===\"win32\"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @\"${r}\" ${o.map(n=>`\"${n.replace('\"','\"\"')}\"`).join(\" \")} %*`;await oe.writeFilePromise(V.format({dir:t,name:e,ext:\".cmd\"}),a)}await oe.writeFilePromise(V.join(t,e),`#!/bin/sh\nexec \"${r}\" ${o.map(a=>`'${a.replace(/'/g,`'\"'\"'`)}'`).join(\" \")} \"$@\"\n`,{mode:493})}async function $ce(t){let e=await Ot.tryFind(t);if(e?.packageManager){let o=US(e.packageManager);if(o?.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=o.reference.split(\".\");switch(o.name){case\"yarn\":return{packageManagerField:!0,packageManager:Number(n)===1?\"Yarn Classic\":\"Yarn\",reason:a};case\"npm\":return{packageManagerField:!0,packageManager:\"npm\",reason:a};case\"pnpm\":return{packageManagerField:!0,packageManager:\"pnpm\",reason:a}}}}let r;try{r=await oe.readFilePromise(V.join(t,dr.lockfile),\"utf8\")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:\"Yarn\",reason:'\"__metadata\" key found in yarn.lock'}:{packageManager:\"Yarn Classic\",reason:'\"__metadata\" key not found in yarn.lock, must be a Yarn classic lockfile'}:oe.existsSync(V.join(t,\"package-lock.json\"))?{packageManager:\"npm\",reason:`found npm's \"package-lock.json\" lockfile`}:oe.existsSync(V.join(t,\"pnpm-lock.yaml\"))?{packageManager:\"pnpm\",reason:`found pnpm's \"pnpm-lock.yaml\" lockfile`}:null}async function M1({project:t,locator:e,binFolder:r,ignoreCorepack:o,lifecycleScript:a,baseEnv:n=t?.configuration.env??process.env}){let u={};for(let[E,I]of Object.entries(n))typeof I<\"u\"&&(u[E.toLowerCase()!==\"path\"?E:\"PATH\"]=I);let A=ue.fromPortablePath(r);u.BERRY_BIN_FOLDER=ue.fromPortablePath(A);let p=process.env.COREPACK_ROOT&&!o?ue.join(process.env.COREPACK_ROOT,\"dist/yarn.js\"):process.argv[1];if(await Promise.all([fh(r,\"node\",process.execPath),...rn!==null?[fh(r,\"run\",process.execPath,[p,\"run\"]),fh(r,\"yarn\",process.execPath,[p]),fh(r,\"yarnpkg\",process.execPath,[p]),fh(r,\"node-gyp\",process.execPath,[p,\"run\",\"--top-level\",\"node-gyp\"])]:[]]),t&&(u.INIT_CWD=ue.fromPortablePath(t.configuration.startingCwd),u.PROJECT_CWD=ue.fromPortablePath(t.cwd)),u.PATH=u.PATH?`${A}${ue.delimiter}${u.PATH}`:`${A}`,u.npm_execpath=`${A}${ue.sep}yarn`,u.npm_node_execpath=`${A}${ue.sep}node`,e){if(!t)throw new Error(\"Assertion failed: Missing project\");let E=t.tryWorkspaceByLocator(e),I=E?E.manifest.version??\"\":t.storedPackages.get(e.locatorHash).version??\"\";u.npm_package_name=fn(e),u.npm_package_version=I;let v;if(E)v=E.cwd;else{let x=t.storedPackages.get(e.locatorHash);if(!x)throw new Error(`Package for ${jr(t.configuration,e)} not found in the project`);let C=t.configuration.getLinkers(),R={project:t,report:new Lt({stdout:new ph.PassThrough,configuration:t.configuration})},N=C.find(U=>U.supportsPackage(x,R));if(!N)throw new Error(`The package ${jr(t.configuration,x)} isn't supported by any of the available linkers`);v=await N.findPackageLocation(x,R)}u.npm_package_json=ue.fromPortablePath(V.join(v,dr.manifest))}let h=rn!==null?`yarn/${rn}`:`yarn/${Df(\"@yarnpkg/core\").version}-core`;return u.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(u.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(E=>E.setupScriptEnvironment,t,u,async(E,I,v)=>await fh(r,E,I,v)),u}async function Bat(t,e,{configuration:r,report:o,workspace:a=null,locator:n=null}){await Iat(async()=>{await oe.mktempPromise(async u=>{let A=V.join(u,\"pack.log\"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(A,{prefix:ue.fromPortablePath(t),report:o}),I=n&&Hc(n)?r1(n):n,v=I?ba(I):\"an external project\";h.write(`Packing ${v} from sources\n`);let x=await $ce(t),C;x!==null?(h.write(`Using ${x.packageManager} for bootstrap. Reason: ${x.reason}\n\n`),C=x.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn\n\n`),C=\"Yarn\");let R=C===\"Yarn\"&&!x?.packageManagerField;await oe.mktempPromise(async N=>{let U=await M1({binFolder:N,ignoreCorepack:R}),te=new Map([[\"Yarn Classic\",async()=>{let fe=a!==null?[\"workspace\",a]:[],ce=V.join(t,dr.manifest),me=await oe.readFilePromise(ce),he=await Gc(process.execPath,[process.argv[1],\"set\",\"version\",\"classic\",\"--only-if-needed\",\"--yarn-path\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(he.code!==0)return he.code;await oe.writeFilePromise(ce,me),await oe.appendFilePromise(V.join(t,\".npmignore\"),`/.yarn\n`),h.write(`\n`),delete U.NODE_ENV;let Be=await Gc(\"yarn\",[\"install\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Be.code!==0)return Be.code;h.write(`\n`);let we=await Gc(\"yarn\",[...fe,\"pack\",\"--filename\",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return we.code!==0?we.code:0}],[\"Yarn\",async()=>{let fe=a!==null?[\"workspace\",a]:[];U.YARN_ENABLE_INLINE_BUILDS=\"1\";let ce=V.join(t,dr.lockfile);await oe.existsPromise(ce)||await oe.writeFilePromise(ce,\"\");let me=await Gc(\"yarn\",[...fe,\"pack\",\"--install-if-needed\",\"--filename\",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return me.code!==0?me.code:0}],[\"npm\",async()=>{if(a!==null){let Ee=new ph.PassThrough,Pe=Vy(Ee);Ee.pipe(h,{end:!1});let le=await Gc(\"npm\",[\"--version\"],{cwd:t,env:U,stdin:p,stdout:Ee,stderr:E,end:0});if(Ee.end(),le.code!==0)return h.end(),E.end(),le.code;let ne=(await Pe).toString().trim();if(!kf(ne,\">=7.x\")){let ee=eA(null,\"npm\"),Ie=In(ee,ne),Fe=In(ee,\">=7.x\");throw new Error(`Workspaces aren't supported by ${qn(r,Ie)}; please upgrade to ${qn(r,Fe)} (npm has been detected as the primary package manager for ${Ut(r,t,yt.PATH)})`)}}let fe=a!==null?[\"--workspace\",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let ce=await Gc(\"npm\",[\"install\",\"--legacy-peer-deps\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(ce.code!==0)return ce.code;let me=new ph.PassThrough,he=Vy(me);me.pipe(h);let Be=await Gc(\"npm\",[\"pack\",\"--silent\",...fe],{cwd:t,env:U,stdin:p,stdout:me,stderr:E});if(Be.code!==0)return Be.code;let we=(await he).toString().trim().replace(/^.*\\n/s,\"\"),g=V.resolve(t,ue.toPortablePath(we));return await oe.renamePromise(g,e),0}]]).get(C);if(typeof te>\"u\")throw new Error(\"Assertion failed: Unsupported workflow\");let ae=await te();if(!(ae===0||typeof ae>\"u\"))throw oe.detachTemp(u),new zt(58,`Packing the package failed (exit code ${ae}, logs can be found here: ${Ut(r,A,yt.PATH)})`)})})})}async function vat(t,e,{project:r}){let o=r.tryWorkspaceByLocator(t);if(o!==null)return CU(o,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${jr(r.configuration,t)} not found in the project`);return await Jl.openPromise(async n=>{let u=r.configuration,A=r.configuration.getLinkers(),p={project:r,report:new Lt({stdout:new ph.PassThrough,configuration:u})},h=A.find(x=>x.supportsPackage(a,p));if(!h)throw new Error(`The package ${jr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),I=new gn(E,{baseFs:n});return(await Ot.find(Bt.dot,{baseFs:I})).scripts.has(e)})}async function Wb(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{manifest:h,env:E,cwd:I}=await eue(t,{project:a,binFolder:p,cwd:o,lifecycleScript:e}),v=h.scripts.get(e);if(typeof v>\"u\")return 1;let x=async()=>await TE(v,r,{cwd:I,env:E,stdin:n,stdout:u,stderr:A});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,x,a,t,e,{script:v,args:r,cwd:I,env:E,stdin:n,stdout:u,stderr:A}))()})}async function EU(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{env:h,cwd:E}=await eue(t,{project:a,binFolder:p,cwd:o});return await TE(e,r,{cwd:E,env:h,stdin:n,stdout:u,stderr:A})})}async function Dat(t,{binFolder:e,cwd:r,lifecycleScript:o}){let a=await M1({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:o});return await IU(e,await nue(t)),typeof r>\"u\"&&(r=V.dirname(await oe.realpathPromise(V.join(t.cwd,\"package.json\")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function eue(t,{project:e,binFolder:r,cwd:o,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return Dat(n,{binFolder:r,cwd:o,lifecycleScript:a});let u=e.storedPackages.get(t.locatorHash);if(!u)throw new Error(`Package for ${jr(e.configuration,t)} not found in the project`);return await Jl.openPromise(async A=>{let p=e.configuration,h=e.configuration.getLinkers(),E={project:e,report:new Lt({stdout:new ph.PassThrough,configuration:p})},I=h.find(N=>N.supportsPackage(u,E));if(!I)throw new Error(`The package ${jr(e.configuration,u)} isn't supported by any of the available linkers`);let v=await M1({project:e,locator:t,binFolder:r,lifecycleScript:a});await IU(r,await Kb(t,{project:e}));let x=await I.findPackageLocation(u,E),C=new gn(x,{baseFs:A}),R=await Ot.find(Bt.dot,{baseFs:C});return typeof o>\"u\"&&(o=x),{manifest:R,binFolder:r,env:v,cwd:o}})}async function tue(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u}){return await Wb(t.anchoredLocator,e,r,{cwd:o,project:t.project,stdin:a,stdout:n,stderr:u})}function CU(t,e){return t.manifest.scripts.has(e)}async function rue(t,e,{cwd:r,report:o}){let{configuration:a}=t.project,n=null;await oe.mktempPromise(async u=>{let A=V.join(u,`${e}.log`),p=`# This file contains the result of Yarn calling the \"${e}\" lifecycle script inside a workspace (\"${ue.fromPortablePath(t.cwd)}\")\n`,{stdout:h,stderr:E}=a.getSubprocessStreams(A,{report:o,prefix:jr(a,t.anchoredLocator),header:p});o.reportInfo(36,`Calling the \"${e}\" lifecycle script`);let I=await tue(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),I!==0)throw oe.detachTemp(u),new zt(36,`${(0,zce.default)(e)} script failed (exit code ${Ut(a,I,yt.NUMBER)}, logs can be found here: ${Ut(a,A,yt.PATH)}); run ${Ut(a,`yarn ${e}`,yt.CODE)} to investigate`)})}async function Pat(t,e,r){CU(t,e)&&await rue(t,e,r)}function wU(t){let e=V.extname(t);if(e.match(/\\.[cm]?[jt]sx?$/))return!0;if(e===\".exe\"||e===\".bin\")return!1;let r=Buffer.alloc(4),o;try{o=oe.openSync(t,\"r\")}catch{return!0}try{oe.readSync(o,r,0,r.length,0)}finally{oe.closeSync(o)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function Kb(t,{project:e}){let r=e.configuration,o=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${jr(r,t)} not found in the project`);let n=new ph.Writable,u=r.getLinkers(),A={project:e,report:new Lt({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let E of a.dependencies.values()){let I=e.storedResolutions.get(E.descriptorHash);if(!I)throw new Error(`Assertion failed: The resolution (${qn(r,E)}) should have been registered`);p.add(I)}let h=await Promise.all(Array.from(p,async E=>{let I=e.storedPackages.get(E);if(!I)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(I.bin.size===0)return sl.skip;let v=u.find(C=>C.supportsPackage(I,A));if(!v)return sl.skip;let x=null;try{x=await v.findPackageLocation(I,A)}catch(C){if(C.code===\"LOCATOR_NOT_INSTALLED\")return sl.skip;throw C}return{dependency:I,packageLocation:x}}));for(let E of h){if(E===sl.skip)continue;let{dependency:I,packageLocation:v}=E;for(let[x,C]of I.bin){let R=V.resolve(v,C);o.set(x,[I,ue.fromPortablePath(R),wU(R)])}}return o}async function nue(t){return await Kb(t.anchoredLocator,{project:t.project})}async function IU(t,e){await Promise.all(Array.from(e,([r,[,o,a]])=>a?fh(t,r,process.execPath,[o]):fh(t,r,o,[])))}async function iue(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await Kb(t,{project:a});let E=h.get(e);if(!E)throw new Error(`Binary not found (${e}) for ${jr(a.configuration,t)}`);return await oe.mktempPromise(async I=>{let[,v]=E,x=await M1({project:a,locator:t,binFolder:I});await IU(x.BERRY_BIN_FOLDER,h);let C=wU(ue.toPortablePath(v))?Gc(process.execPath,[...p,v,...r],{cwd:o,env:x,stdin:n,stdout:u,stderr:A}):Gc(v,r,{cwd:o,env:x,stdin:n,stdout:u,stderr:A}),R;try{R=await C}finally{await oe.removePromise(x.BERRY_BIN_FOLDER)}return R.code})}async function Sat(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A}){return await iue(t.anchoredLocator,e,r,{project:t.project,cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A})}var zce,Xce,ph,Zce,wat,Iat,BU=Et(()=>{Pt();Pt();nA();k1();zce=$e(mU()),Xce=$e(id()),ph=ve(\"stream\");fE();Yl();O1();N1();Db();ql();jl();Qf();bo();Zce=(a=>(a.Yarn1=\"Yarn Classic\",a.Yarn2=\"Yarn\",a.Npm=\"npm\",a.Pnpm=\"pnpm\",a))(Zce||{});wat=2,Iat=(0,Xce.default)(wat)});var OE=_((O4t,oue)=>{\"use strict\";var sue=new Map([[\"C\",\"cwd\"],[\"f\",\"file\"],[\"z\",\"gzip\"],[\"P\",\"preservePaths\"],[\"U\",\"unlink\"],[\"strip-components\",\"strip\"],[\"stripComponents\",\"strip\"],[\"keep-newer\",\"newer\"],[\"keepNewer\",\"newer\"],[\"keep-newer-files\",\"newer\"],[\"keepNewerFiles\",\"newer\"],[\"k\",\"keep\"],[\"keep-existing\",\"keep\"],[\"keepExisting\",\"keep\"],[\"m\",\"noMtime\"],[\"no-mtime\",\"noMtime\"],[\"p\",\"preserveOwner\"],[\"L\",\"follow\"],[\"h\",\"follow\"]]);oue.exports=t=>t?Object.keys(t).map(e=>[sue.has(e)?sue.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var UE=_((M4t,gue)=>{\"use strict\";var aue=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},bat=ve(\"events\"),lue=ve(\"stream\"),cue=ve(\"string_decoder\").StringDecoder,Mf=Symbol(\"EOF\"),Uf=Symbol(\"maybeEmitEnd\"),hh=Symbol(\"emittedEnd\"),Vb=Symbol(\"emittingEnd\"),U1=Symbol(\"emittedError\"),Jb=Symbol(\"closed\"),uue=Symbol(\"read\"),zb=Symbol(\"flush\"),Aue=Symbol(\"flushChunk\"),ka=Symbol(\"encoding\"),_f=Symbol(\"decoder\"),Xb=Symbol(\"flowing\"),_1=Symbol(\"paused\"),ME=Symbol(\"resume\"),Fs=Symbol(\"bufferLength\"),vU=Symbol(\"bufferPush\"),DU=Symbol(\"bufferShift\"),Fo=Symbol(\"objectMode\"),Ro=Symbol(\"destroyed\"),PU=Symbol(\"emitData\"),fue=Symbol(\"emitEnd\"),SU=Symbol(\"emitEnd2\"),Hf=Symbol(\"async\"),H1=t=>Promise.resolve().then(t),pue=global._MP_NO_ITERATOR_SYMBOLS_!==\"1\",xat=pue&&Symbol.asyncIterator||Symbol(\"asyncIterator not implemented\"),kat=pue&&Symbol.iterator||Symbol(\"iterator not implemented\"),Qat=t=>t===\"end\"||t===\"finish\"||t===\"prefinish\",Fat=t=>t instanceof ArrayBuffer||typeof t==\"object\"&&t.constructor&&t.constructor.name===\"ArrayBuffer\"&&t.byteLength>=0,Rat=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),Zb=class{constructor(e,r,o){this.src=e,this.dest=r,this.opts=o,this.ondrain=()=>e[ME](),r.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},bU=class extends Zb{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(e,r,o){super(e,r,o),this.proxyErrors=a=>r.emit(\"error\",a),e.on(\"error\",this.proxyErrors)}};gue.exports=class hue extends lue{constructor(e){super(),this[Xb]=!1,this[_1]=!1,this.pipes=[],this.buffer=[],this[Fo]=e&&e.objectMode||!1,this[Fo]?this[ka]=null:this[ka]=e&&e.encoding||null,this[ka]===\"buffer\"&&(this[ka]=null),this[Hf]=e&&!!e.async||!1,this[_f]=this[ka]?new cue(this[ka]):null,this[Mf]=!1,this[hh]=!1,this[Vb]=!1,this[Jb]=!1,this[U1]=null,this.writable=!0,this.readable=!0,this[Fs]=0,this[Ro]=!1}get bufferLength(){return this[Fs]}get encoding(){return this[ka]}set encoding(e){if(this[Fo])throw new Error(\"cannot set encoding in objectMode\");if(this[ka]&&e!==this[ka]&&(this[_f]&&this[_f].lastNeed||this[Fs]))throw new Error(\"cannot change encoding\");this[ka]!==e&&(this[_f]=e?new cue(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[_f].write(r)))),this[ka]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Fo]}set objectMode(e){this[Fo]=this[Fo]||!!e}get async(){return this[Hf]}set async(e){this[Hf]=this[Hf]||!!e}write(e,r,o){if(this[Mf])throw new Error(\"write after end\");if(this[Ro])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof r==\"function\"&&(o=r,r=\"utf8\"),r||(r=\"utf8\");let a=this[Hf]?H1:n=>n();return!this[Fo]&&!Buffer.isBuffer(e)&&(Rat(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):Fat(e)?e=Buffer.from(e):typeof e!=\"string\"&&(this.objectMode=!0)),this[Fo]?(this.flowing&&this[Fs]!==0&&this[zb](!0),this.flowing?this.emit(\"data\",e):this[vU](e),this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing):e.length?(typeof e==\"string\"&&!(r===this[ka]&&!this[_f].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ka]&&(e=this[_f].write(e)),this.flowing&&this[Fs]!==0&&this[zb](!0),this.flowing?this.emit(\"data\",e):this[vU](e),this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing):(this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing)}read(e){if(this[Ro])return null;if(this[Fs]===0||e===0||e>this[Fs])return this[Uf](),null;this[Fo]&&(e=null),this.buffer.length>1&&!this[Fo]&&(this.encoding?this.buffer=[this.buffer.join(\"\")]:this.buffer=[Buffer.concat(this.buffer,this[Fs])]);let r=this[uue](e||null,this.buffer[0]);return this[Uf](),r}[uue](e,r){return e===r.length||e===null?this[DU]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Fs]-=e),this.emit(\"data\",r),!this.buffer.length&&!this[Mf]&&this.emit(\"drain\"),r}end(e,r,o){return typeof e==\"function\"&&(o=e,e=null),typeof r==\"function\"&&(o=r,r=\"utf8\"),e&&this.write(e,r),o&&this.once(\"end\",o),this[Mf]=!0,this.writable=!1,(this.flowing||!this[_1])&&this[Uf](),this}[ME](){this[Ro]||(this[_1]=!1,this[Xb]=!0,this.emit(\"resume\"),this.buffer.length?this[zb]():this[Mf]?this[Uf]():this.emit(\"drain\"))}resume(){return this[ME]()}pause(){this[Xb]=!1,this[_1]=!0}get destroyed(){return this[Ro]}get flowing(){return this[Xb]}get paused(){return this[_1]}[vU](e){this[Fo]?this[Fs]+=1:this[Fs]+=e.length,this.buffer.push(e)}[DU](){return this.buffer.length&&(this[Fo]?this[Fs]-=1:this[Fs]-=this.buffer[0].length),this.buffer.shift()}[zb](e){do;while(this[Aue](this[DU]()));!e&&!this.buffer.length&&!this[Mf]&&this.emit(\"drain\")}[Aue](e){return e?(this.emit(\"data\",e),this.flowing):!1}pipe(e,r){if(this[Ro])return;let o=this[hh];return r=r||{},e===aue.stdout||e===aue.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,o?r.end&&e.end():(this.pipes.push(r.proxyErrors?new bU(this,e,r):new Zb(this,e,r)),this[Hf]?H1(()=>this[ME]()):this[ME]()),e}unpipe(e){let r=this.pipes.find(o=>o.dest===e);r&&(this.pipes.splice(this.pipes.indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let o=super.on(e,r);return e===\"data\"&&!this.pipes.length&&!this.flowing?this[ME]():e===\"readable\"&&this[Fs]!==0?super.emit(\"readable\"):Qat(e)&&this[hh]?(super.emit(e),this.removeAllListeners(e)):e===\"error\"&&this[U1]&&(this[Hf]?H1(()=>r.call(this,this[U1])):r.call(this,this[U1])),o}get emittedEnd(){return this[hh]}[Uf](){!this[Vb]&&!this[hh]&&!this[Ro]&&this.buffer.length===0&&this[Mf]&&(this[Vb]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[Jb]&&this.emit(\"close\"),this[Vb]=!1)}emit(e,r,...o){if(e!==\"error\"&&e!==\"close\"&&e!==Ro&&this[Ro])return;if(e===\"data\")return r?this[Hf]?H1(()=>this[PU](r)):this[PU](r):!1;if(e===\"end\")return this[fue]();if(e===\"close\"){if(this[Jb]=!0,!this[hh]&&!this[Ro])return;let n=super.emit(\"close\");return this.removeAllListeners(\"close\"),n}else if(e===\"error\"){this[U1]=r;let n=super.emit(\"error\",r);return this[Uf](),n}else if(e===\"resume\"){let n=super.emit(\"resume\");return this[Uf](),n}else if(e===\"finish\"||e===\"prefinish\"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...o);return this[Uf](),a}[PU](e){for(let o of this.pipes)o.dest.write(e)===!1&&this.pause();let r=super.emit(\"data\",e);return this[Uf](),r}[fue](){this[hh]||(this[hh]=!0,this.readable=!1,this[Hf]?H1(()=>this[SU]()):this[SU]())}[SU](){if(this[_f]){let r=this[_f].end();if(r){for(let o of this.pipes)o.dest.write(r);super.emit(\"data\",r)}}for(let r of this.pipes)r.end();let e=super.emit(\"end\");return this.removeAllListeners(\"end\"),e}collect(){let e=[];this[Fo]||(e.dataLength=0);let r=this.promise();return this.on(\"data\",o=>{e.push(o),this[Fo]||(e.dataLength+=o.length)}),r.then(()=>e)}concat(){return this[Fo]?Promise.reject(new Error(\"cannot concat in objectMode\")):this.collect().then(e=>this[Fo]?Promise.reject(new Error(\"cannot concat in objectMode\")):this[ka]?e.join(\"\"):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Ro,()=>r(new Error(\"stream destroyed\"))),this.on(\"error\",o=>r(o)),this.on(\"end\",()=>e())})}[xat](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Mf])return Promise.resolve({done:!0});let o=null,a=null,n=h=>{this.removeListener(\"data\",u),this.removeListener(\"end\",A),a(h)},u=h=>{this.removeListener(\"error\",n),this.removeListener(\"end\",A),this.pause(),o({value:h,done:!!this[Mf]})},A=()=>{this.removeListener(\"error\",n),this.removeListener(\"data\",u),o({done:!0})},p=()=>n(new Error(\"stream destroyed\"));return new Promise((h,E)=>{a=E,o=h,this.once(Ro,p),this.once(\"error\",n),this.once(\"end\",A),this.once(\"data\",u)})}}}[kat](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Ro]?(e?this.emit(\"error\",e):this.emit(Ro),this):(this[Ro]=!0,this.buffer.length=0,this[Fs]=0,typeof this.close==\"function\"&&!this[Jb]&&this.close(),e?this.emit(\"error\",e):this.emit(Ro),this)}static isStream(e){return!!e&&(e instanceof hue||e instanceof lue||e instanceof bat&&(typeof e.pipe==\"function\"||typeof e.write==\"function\"&&typeof e.end==\"function\"))}}});var mue=_((U4t,due)=>{var Tat=ve(\"zlib\").constants||{ZLIB_VERNUM:4736};due.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Tat))});var GU=_(cl=>{\"use strict\";var RU=ve(\"assert\"),gh=ve(\"buffer\").Buffer,Cue=ve(\"zlib\"),Fd=cl.constants=mue(),Lat=UE(),yue=gh.concat,Rd=Symbol(\"_superWrite\"),HE=class extends Error{constructor(e){super(\"zlib: \"+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code=\"ZLIB_ERROR\"),this.message=\"zlib: \"+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return\"ZlibError\"}},Nat=Symbol(\"opts\"),j1=Symbol(\"flushFlag\"),Eue=Symbol(\"finishFlushFlag\"),qU=Symbol(\"fullFlushFlag\"),ti=Symbol(\"handle\"),$b=Symbol(\"onError\"),_E=Symbol(\"sawError\"),xU=Symbol(\"level\"),kU=Symbol(\"strategy\"),QU=Symbol(\"ended\"),_4t=Symbol(\"_defaultFullFlush\"),ex=class extends Lat{constructor(e,r){if(!e||typeof e!=\"object\")throw new TypeError(\"invalid options for ZlibBase constructor\");super(e),this[_E]=!1,this[QU]=!1,this[Nat]=e,this[j1]=e.flush,this[Eue]=e.finishFlush;try{this[ti]=new Cue[r](e)}catch(o){throw new HE(o)}this[$b]=o=>{this[_E]||(this[_E]=!0,this.close(),this.emit(\"error\",o))},this[ti].on(\"error\",o=>this[$b](new HE(o))),this.once(\"end\",()=>this.close)}close(){this[ti]&&(this[ti].close(),this[ti]=null,this.emit(\"close\"))}reset(){if(!this[_E])return RU(this[ti],\"zlib binding closed\"),this[ti].reset()}flush(e){this.ended||(typeof e!=\"number\"&&(e=this[qU]),this.write(Object.assign(gh.alloc(0),{[j1]:e})))}end(e,r,o){return e&&this.write(e,r),this.flush(this[Eue]),this[QU]=!0,super.end(null,null,o)}get ended(){return this[QU]}write(e,r,o){if(typeof r==\"function\"&&(o=r,r=\"utf8\"),typeof e==\"string\"&&(e=gh.from(e,r)),this[_E])return;RU(this[ti],\"zlib binding closed\");let a=this[ti]._handle,n=a.close;a.close=()=>{};let u=this[ti].close;this[ti].close=()=>{},gh.concat=h=>h;let A;try{let h=typeof e[j1]==\"number\"?e[j1]:this[j1];A=this[ti]._processChunk(e,h),gh.concat=yue}catch(h){gh.concat=yue,this[$b](new HE(h))}finally{this[ti]&&(this[ti]._handle=a,a.close=n,this[ti].close=u,this[ti].removeAllListeners(\"error\"))}this[ti]&&this[ti].on(\"error\",h=>this[$b](new HE(h)));let p;if(A)if(Array.isArray(A)&&A.length>0){p=this[Rd](gh.from(A[0]));for(let h=1;h<A.length;h++)p=this[Rd](A[h])}else p=this[Rd](gh.from(A));return o&&o(),p}[Rd](e){return super.write(e)}},jf=class extends ex{constructor(e,r){e=e||{},e.flush=e.flush||Fd.Z_NO_FLUSH,e.finishFlush=e.finishFlush||Fd.Z_FINISH,super(e,r),this[qU]=Fd.Z_FULL_FLUSH,this[xU]=e.level,this[kU]=e.strategy}params(e,r){if(!this[_E]){if(!this[ti])throw new Error(\"cannot switch params when binding is closed\");if(!this[ti].params)throw new Error(\"not supported in this implementation\");if(this[xU]!==e||this[kU]!==r){this.flush(Fd.Z_SYNC_FLUSH),RU(this[ti],\"zlib binding closed\");let o=this[ti].flush;this[ti].flush=(a,n)=>{this.flush(a),n()};try{this[ti].params(e,r)}finally{this[ti].flush=o}this[ti]&&(this[xU]=e,this[kU]=r)}}}},TU=class extends jf{constructor(e){super(e,\"Deflate\")}},LU=class extends jf{constructor(e){super(e,\"Inflate\")}},FU=Symbol(\"_portable\"),NU=class extends jf{constructor(e){super(e,\"Gzip\"),this[FU]=e&&!!e.portable}[Rd](e){return this[FU]?(this[FU]=!1,e[9]=255,super[Rd](e)):super[Rd](e)}},OU=class extends jf{constructor(e){super(e,\"Gunzip\")}},MU=class extends jf{constructor(e){super(e,\"DeflateRaw\")}},UU=class extends jf{constructor(e){super(e,\"InflateRaw\")}},_U=class extends jf{constructor(e){super(e,\"Unzip\")}},tx=class extends ex{constructor(e,r){e=e||{},e.flush=e.flush||Fd.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Fd.BROTLI_OPERATION_FINISH,super(e,r),this[qU]=Fd.BROTLI_OPERATION_FLUSH}},HU=class extends tx{constructor(e){super(e,\"BrotliCompress\")}},jU=class extends tx{constructor(e){super(e,\"BrotliDecompress\")}};cl.Deflate=TU;cl.Inflate=LU;cl.Gzip=NU;cl.Gunzip=OU;cl.DeflateRaw=MU;cl.InflateRaw=UU;cl.Unzip=_U;typeof Cue.BrotliCompress==\"function\"?(cl.BrotliCompress=HU,cl.BrotliDecompress=jU):cl.BrotliCompress=cl.BrotliDecompress=class{constructor(){throw new Error(\"Brotli is not supported in this version of Node.js\")}}});var jE=_((q4t,wue)=>{var Oat=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;wue.exports=Oat!==\"win32\"?t=>t:t=>t&&t.replace(/\\\\/g,\"/\")});var rx=_((Y4t,Iue)=>{\"use strict\";var Mat=UE(),YU=jE(),WU=Symbol(\"slurp\");Iue.exports=class extends Mat{constructor(e,r,o){switch(super(),this.pause(),this.extended=r,this.globalExtended=o,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case\"File\":case\"OldFile\":case\"Link\":case\"SymbolicLink\":case\"CharacterDevice\":case\"BlockDevice\":case\"Directory\":case\"FIFO\":case\"ContiguousFile\":case\"GNUDumpDir\":break;case\"NextFileHasLongLinkpath\":case\"NextFileHasLongPath\":case\"OldGnuLongPath\":case\"GlobalExtendedHeader\":case\"ExtendedHeader\":case\"OldExtendedHeader\":this.meta=!0;break;default:this.ignore=!0}this.path=YU(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=YU(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[WU](r),o&&this[WU](o,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error(\"writing more to entry than is appropriate\");let o=this.remain,a=this.blockRemain;return this.remain=Math.max(0,o-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:o>=r?super.write(e):super.write(e.slice(0,o))}[WU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o===\"path\")&&(this[o]=o===\"path\"||o===\"linkpath\"?YU(e[o]):e[o])}}});var KU=_(nx=>{\"use strict\";nx.name=new Map([[\"0\",\"File\"],[\"\",\"OldFile\"],[\"1\",\"Link\"],[\"2\",\"SymbolicLink\"],[\"3\",\"CharacterDevice\"],[\"4\",\"BlockDevice\"],[\"5\",\"Directory\"],[\"6\",\"FIFO\"],[\"7\",\"ContiguousFile\"],[\"g\",\"GlobalExtendedHeader\"],[\"x\",\"ExtendedHeader\"],[\"A\",\"SolarisACL\"],[\"D\",\"GNUDumpDir\"],[\"I\",\"Inode\"],[\"K\",\"NextFileHasLongLinkpath\"],[\"L\",\"NextFileHasLongPath\"],[\"M\",\"ContinuationFile\"],[\"N\",\"OldGnuLongPath\"],[\"S\",\"SparseFile\"],[\"V\",\"TapeVolumeHeader\"],[\"X\",\"OldExtendedHeader\"]]);nx.code=new Map(Array.from(nx.name).map(t=>[t[1],t[0]]))});var Pue=_((K4t,Due)=>{\"use strict\";var Uat=(t,e)=>{if(Number.isSafeInteger(t))t<0?Hat(t,e):_at(t,e);else throw Error(\"cannot encode number outside of javascript safe integer range\");return e},_at=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},Hat=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var o=e.length;o>1;o--){var a=t&255;t=Math.floor(t/256),r?e[o-1]=Bue(a):a===0?e[o-1]=0:(r=!0,e[o-1]=vue(a))}},jat=t=>{let e=t[0],r=e===128?Gat(t.slice(1,t.length)):e===255?qat(t):null;if(r===null)throw Error(\"invalid base256 encoding\");if(!Number.isSafeInteger(r))throw Error(\"parsed number outside of javascript safe integer range\");return r},qat=t=>{for(var e=t.length,r=0,o=!1,a=e-1;a>-1;a--){var n=t[a],u;o?u=Bue(n):n===0?u=n:(o=!0,u=vue(n)),u!==0&&(r-=u*Math.pow(256,e-a-1))}return r},Gat=t=>{for(var e=t.length,r=0,o=e-1;o>-1;o--){var a=t[o];a!==0&&(r+=a*Math.pow(256,e-o-1))}return r},Bue=t=>(255^t)&255,vue=t=>(255^t)+1&255;Due.exports={encode:Uat,parse:jat}});var GE=_((V4t,bue)=>{\"use strict\";var VU=KU(),qE=ve(\"path\").posix,Sue=Pue(),JU=Symbol(\"slurp\"),ul=Symbol(\"type\"),ZU=class{constructor(e,r,o,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[ul]=\"0\",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,o,a):e&&this.set(e)}decode(e,r,o,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error(\"need 512 bytes for header\");if(this.path=Td(e,r,100),this.mode=dh(e,r+100,8),this.uid=dh(e,r+108,8),this.gid=dh(e,r+116,8),this.size=dh(e,r+124,12),this.mtime=zU(e,r+136,12),this.cksum=dh(e,r+148,12),this[JU](o),this[JU](a,!0),this[ul]=Td(e,r+156,1),this[ul]===\"\"&&(this[ul]=\"0\"),this[ul]===\"0\"&&this.path.substr(-1)===\"/\"&&(this[ul]=\"5\"),this[ul]===\"5\"&&(this.size=0),this.linkpath=Td(e,r+157,100),e.slice(r+257,r+265).toString()===\"ustar\\x0000\")if(this.uname=Td(e,r+265,32),this.gname=Td(e,r+297,32),this.devmaj=dh(e,r+329,8),this.devmin=dh(e,r+337,8),e[r+475]!==0){let u=Td(e,r+345,155);this.path=u+\"/\"+this.path}else{let u=Td(e,r+345,130);u&&(this.path=u+\"/\"+this.path),this.atime=zU(e,r+476,12),this.ctime=zU(e,r+488,12)}let n=8*32;for(let u=r;u<r+148;u++)n+=e[u];for(let u=r+156;u<r+512;u++)n+=e[u];this.cksumValid=n===this.cksum,this.cksum===null&&n===8*32&&(this.nullBlock=!0)}[JU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o===\"path\")&&(this[o]=e[o])}encode(e,r){if(e||(e=this.block=Buffer.alloc(512),r=0),r||(r=0),!(e.length>=r+512))throw new Error(\"need 512 bytes for header\");let o=this.ctime||this.atime?130:155,a=Yat(this.path||\"\",o),n=a[0],u=a[1];this.needPax=a[2],this.needPax=Ld(e,r,100,n)||this.needPax,this.needPax=mh(e,r+100,8,this.mode)||this.needPax,this.needPax=mh(e,r+108,8,this.uid)||this.needPax,this.needPax=mh(e,r+116,8,this.gid)||this.needPax,this.needPax=mh(e,r+124,12,this.size)||this.needPax,this.needPax=XU(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[ul].charCodeAt(0),this.needPax=Ld(e,r+157,100,this.linkpath)||this.needPax,e.write(\"ustar\\x0000\",r+257,8),this.needPax=Ld(e,r+265,32,this.uname)||this.needPax,this.needPax=Ld(e,r+297,32,this.gname)||this.needPax,this.needPax=mh(e,r+329,8,this.devmaj)||this.needPax,this.needPax=mh(e,r+337,8,this.devmin)||this.needPax,this.needPax=Ld(e,r+345,o,u)||this.needPax,e[r+475]!==0?this.needPax=Ld(e,r+345,155,u)||this.needPax:(this.needPax=Ld(e,r+345,130,u)||this.needPax,this.needPax=XU(e,r+476,12,this.atime)||this.needPax,this.needPax=XU(e,r+488,12,this.ctime)||this.needPax);let A=8*32;for(let p=r;p<r+148;p++)A+=e[p];for(let p=r+156;p<r+512;p++)A+=e[p];return this.cksum=A,mh(e,r+148,8,this.cksum),this.cksumValid=!0,this.needPax}set(e){for(let r in e)e[r]!==null&&e[r]!==void 0&&(this[r]=e[r])}get type(){return VU.name.get(this[ul])||this[ul]}get typeKey(){return this[ul]}set type(e){VU.code.has(e)?this[ul]=VU.code.get(e):this[ul]=e}},Yat=(t,e)=>{let o=t,a=\"\",n,u=qE.parse(t).root||\".\";if(Buffer.byteLength(o)<100)n=[o,a,!1];else{a=qE.dirname(o),o=qE.basename(o);do Buffer.byteLength(o)<=100&&Buffer.byteLength(a)<=e?n=[o,a,!1]:Buffer.byteLength(o)>100&&Buffer.byteLength(a)<=e?n=[o.substr(0,100-1),a,!0]:(o=qE.join(qE.basename(a),o),a=qE.dirname(a));while(a!==u&&!n);n||(n=[t.substr(0,100-1),\"\",!0])}return n},Td=(t,e,r)=>t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*/,\"\"),zU=(t,e,r)=>Wat(dh(t,e,r)),Wat=t=>t===null?null:new Date(t*1e3),dh=(t,e,r)=>t[e]&128?Sue.parse(t.slice(e,e+r)):Vat(t,e,r),Kat=t=>isNaN(t)?null:t,Vat=(t,e,r)=>Kat(parseInt(t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*$/,\"\").trim(),8)),Jat={12:8589934591,8:2097151},mh=(t,e,r,o)=>o===null?!1:o>Jat[r]||o<0?(Sue.encode(o,t.slice(e,e+r)),!0):(zat(t,e,r,o),!1),zat=(t,e,r,o)=>t.write(Xat(o,r),e,r,\"ascii\"),Xat=(t,e)=>Zat(Math.floor(t).toString(8),e),Zat=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join(\"0\")+t+\" \")+\"\\0\",XU=(t,e,r,o)=>o===null?!1:mh(t,e,r,o.getTime()/1e3),$at=new Array(156).join(\"\\0\"),Ld=(t,e,r,o)=>o===null?!1:(t.write(o+$at,e,r,\"utf8\"),o.length!==Buffer.byteLength(o)||o.length>r);bue.exports=ZU});var ix=_((J4t,xue)=>{\"use strict\";var elt=GE(),tlt=ve(\"path\"),q1=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e===\"\")return null;let r=Buffer.byteLength(e),o=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(o);for(let n=0;n<512;n++)a[n]=0;new elt({path:(\"PaxHeader/\"+tlt.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?\"GlobalExtendedHeader\":\"ExtendedHeader\",linkpath:\"\",uname:this.uname||\"\",gname:this.gname||\"\",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(a),a.write(e,512,r,\"utf8\");for(let n=r+512;n<a.length;n++)a[n]=0;return a}encodeBody(){return this.encodeField(\"path\")+this.encodeField(\"ctime\")+this.encodeField(\"atime\")+this.encodeField(\"dev\")+this.encodeField(\"ino\")+this.encodeField(\"nlink\")+this.encodeField(\"charset\")+this.encodeField(\"comment\")+this.encodeField(\"gid\")+this.encodeField(\"gname\")+this.encodeField(\"linkpath\")+this.encodeField(\"mtime\")+this.encodeField(\"size\")+this.encodeField(\"uid\")+this.encodeField(\"uname\")}encodeField(e){if(this[e]===null||this[e]===void 0)return\"\";let r=this[e]instanceof Date?this[e].getTime()/1e3:this[e],o=\" \"+(e===\"dev\"||e===\"ino\"||e===\"nlink\"?\"SCHILY.\":\"\")+e+\"=\"+r+`\n`,a=Buffer.byteLength(o),n=Math.floor(Math.log(a)/Math.log(10))+1;return a+n>=Math.pow(10,n)&&(n+=1),n+a+o}};q1.parse=(t,e,r)=>new q1(rlt(nlt(t),e),r);var rlt=(t,e)=>e?Object.keys(t).reduce((r,o)=>(r[o]=t[o],r),e):t,nlt=t=>t.replace(/\\n$/,\"\").split(`\n`).reduce(ilt,Object.create(null)),ilt=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+\" \").length);let o=e.split(\"=\"),a=o.shift().replace(/^SCHILY\\.(dev|ino|nlink)/,\"$1\");if(!a)return t;let n=o.join(\"=\");return t[a]=/^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};xue.exports=q1});var YE=_((z4t,kue)=>{kue.exports=t=>{let e=t.length-1,r=-1;for(;e>-1&&t.charAt(e)===\"/\";)r=e,e--;return r===-1?t:t.slice(0,r)}});var sx=_((X4t,Que)=>{\"use strict\";Que.exports=t=>class extends t{warn(e,r,o={}){this.file&&(o.file=this.file),this.cwd&&(o.cwd=this.cwd),o.code=r instanceof Error&&r.code||e,o.tarCode=e,!this.strict&&o.recoverable!==!1?(r instanceof Error&&(o=Object.assign(r,o),r=r.message),this.emit(\"warn\",o.tarCode,r,o)):r instanceof Error?this.emit(\"error\",Object.assign(r,o)):this.emit(\"error\",Object.assign(new Error(`${e}: ${r}`),o))}}});var e3=_(($4t,Fue)=>{\"use strict\";var ox=[\"|\",\"<\",\">\",\"?\",\":\"],$U=ox.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),slt=new Map(ox.map((t,e)=>[t,$U[e]])),olt=new Map($U.map((t,e)=>[t,ox[e]]));Fue.exports={encode:t=>ox.reduce((e,r)=>e.split(r).join(slt.get(r)),t),decode:t=>$U.reduce((e,r)=>e.split(r).join(olt.get(r)),t)}});var t3=_((eUt,Tue)=>{var{isAbsolute:alt,parse:Rue}=ve(\"path\").win32;Tue.exports=t=>{let e=\"\",r=Rue(t);for(;alt(t)||r.root;){let o=t.charAt(0)===\"/\"&&t.slice(0,4)!==\"//?/\"?\"/\":r.root;t=t.substr(o.length),e+=o,r=Rue(t)}return[e,t]}});var Nue=_((tUt,Lue)=>{\"use strict\";Lue.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&-19),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var A3=_((iUt,zue)=>{\"use strict\";var que=UE(),Gue=ix(),Yue=GE(),oA=ve(\"fs\"),Oue=ve(\"path\"),sA=jE(),llt=YE(),Wue=(t,e)=>e?(t=sA(t).replace(/^\\.(\\/|$)/,\"\"),llt(e)+\"/\"+t):sA(t),clt=16*1024*1024,Mue=Symbol(\"process\"),Uue=Symbol(\"file\"),_ue=Symbol(\"directory\"),n3=Symbol(\"symlink\"),Hue=Symbol(\"hardlink\"),G1=Symbol(\"header\"),ax=Symbol(\"read\"),i3=Symbol(\"lstat\"),lx=Symbol(\"onlstat\"),s3=Symbol(\"onread\"),o3=Symbol(\"onreadlink\"),a3=Symbol(\"openfile\"),l3=Symbol(\"onopenfile\"),yh=Symbol(\"close\"),cx=Symbol(\"mode\"),c3=Symbol(\"awaitDrain\"),r3=Symbol(\"ondrain\"),aA=Symbol(\"prefix\"),jue=Symbol(\"hadError\"),Kue=sx(),ult=e3(),Vue=t3(),Jue=Nue(),ux=Kue(class extends que{constructor(e,r){if(r=r||{},super(r),typeof e!=\"string\")throw new TypeError(\"path is required\");this.path=sA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||\"\",this.maxReadSize=r.maxReadSize||clt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=sA(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,this.prefix=r.prefix?sA(r.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=Vue(this.path);a&&(this.path=n,o=a)}this.win32=!!r.win32||process.platform===\"win32\",this.win32&&(this.path=ult.decode(this.path.replace(/\\\\/g,\"/\")),e=e.replace(/\\\\/g,\"/\")),this.absolute=sA(r.absolute||Oue.resolve(this.cwd,e)),this.path===\"\"&&(this.path=\"./\"),o&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.statCache.has(this.absolute)?this[lx](this.statCache.get(this.absolute)):this[i3]()}emit(e,...r){return e===\"error\"&&(this[jue]=!0),super.emit(e,...r)}[i3](){oA.lstat(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[lx](r)})}[lx](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=flt(e),this.emit(\"stat\",e),this[Mue]()}[Mue](){switch(this.type){case\"File\":return this[Uue]();case\"Directory\":return this[_ue]();case\"SymbolicLink\":return this[n3]();default:return this.end()}}[cx](e){return Jue(e,this.type===\"Directory\",this.portable)}[aA](e){return Wue(e,this.prefix)}[G1](){this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.header=new Yue({path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,mode:this[cx](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:\"\",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new Gue({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[_ue](){this.path.substr(-1)!==\"/\"&&(this.path+=\"/\"),this.stat.size=0,this[G1](),this.end()}[n3](){oA.readlink(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[o3](r)})}[o3](e){this.linkpath=sA(e),this[G1](),this.end()}[Hue](e){this.type=\"Link\",this.linkpath=sA(Oue.relative(this.cwd,e)),this.stat.size=0,this[G1](),this.end()}[Uue](){if(this.stat.nlink>1){let e=this.stat.dev+\":\"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[Hue](r)}this.linkCache.set(e,this.absolute)}if(this[G1](),this.stat.size===0)return this.end();this[a3]()}[a3](){oA.open(this.absolute,\"r\",(e,r)=>{if(e)return this.emit(\"error\",e);this[l3](r)})}[l3](e){if(this.fd=e,this[jue])return this[yh]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let r=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(r),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[ax]()}[ax](){let{fd:e,buf:r,offset:o,length:a,pos:n}=this;oA.read(e,r,o,a,n,(u,A)=>{if(u)return this[yh](()=>this.emit(\"error\",u));this[s3](A)})}[yh](e){oA.close(this.fd,e)}[s3](e){if(e<=0&&this.remain>0){let a=new Error(\"encountered unexpected EOF\");return a.path=this.absolute,a.syscall=\"read\",a.code=\"EOF\",this[yh](()=>this.emit(\"error\",a))}if(e>this.remain){let a=new Error(\"did not encounter expected EOF\");return a.path=this.absolute,a.syscall=\"read\",a.code=\"EOF\",this[yh](()=>this.emit(\"error\",a))}if(e===this.remain)for(let a=e;a<this.length&&e<this.blockRemain;a++)this.buf[a+this.offset]=0,e++,this.remain++;let r=this.offset===0&&e===this.buf.length?this.buf:this.buf.slice(this.offset,this.offset+e);this.write(r)?this[r3]():this[c3](()=>this[r3]())}[c3](e){this.once(\"drain\",e)}write(e){if(this.blockRemain<e.length){let r=new Error(\"writing more data than expected\");return r.path=this.absolute,this.emit(\"error\",r)}return this.remain-=e.length,this.blockRemain-=e.length,this.pos+=e.length,this.offset+=e.length,super.write(e)}[r3](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[yh](e=>e?this.emit(\"error\",e):this.end());this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[ax]()}}),u3=class extends ux{[i3](){this[lx](oA.lstatSync(this.absolute))}[n3](){this[o3](oA.readlinkSync(this.absolute))}[a3](){this[l3](oA.openSync(this.absolute,\"r\"))}[ax](){let e=!0;try{let{fd:r,buf:o,offset:a,length:n,pos:u}=this,A=oA.readSync(r,o,a,n,u);this[s3](A),e=!1}finally{if(e)try{this[yh](()=>{})}catch{}}}[c3](e){e()}[yh](e){oA.closeSync(this.fd),e()}},Alt=Kue(class extends que{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix||null,this.path=sA(e.path),this.mode=this[cx](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=sA(e.linkpath),typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=Vue(this.path);a&&(this.path=n,o=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new Yue({path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),o&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.header.encode()&&!this.noPax&&super.write(new Gue({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[aA](e){return Wue(e,this.prefix)}[cx](e){return Jue(e,this.type===\"Directory\",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error(\"writing more to entry than is appropriate\");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});ux.Sync=u3;ux.Tar=Alt;var flt=t=>t.isFile()?\"File\":t.isDirectory()?\"Directory\":t.isSymbolicLink()?\"SymbolicLink\":\"Unsupported\";zue.exports=ux});var Ex=_((oUt,nAe)=>{\"use strict\";var mx=class{constructor(e,r){this.path=e||\"./\",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},plt=UE(),hlt=GU(),glt=rx(),C3=A3(),dlt=C3.Sync,mlt=C3.Tar,ylt=IP(),Xue=Buffer.alloc(1024),px=Symbol(\"onStat\"),Ax=Symbol(\"ended\"),lA=Symbol(\"queue\"),WE=Symbol(\"current\"),Nd=Symbol(\"process\"),fx=Symbol(\"processing\"),Zue=Symbol(\"processJob\"),cA=Symbol(\"jobs\"),f3=Symbol(\"jobDone\"),hx=Symbol(\"addFSEntry\"),$ue=Symbol(\"addTarEntry\"),d3=Symbol(\"stat\"),m3=Symbol(\"readdir\"),gx=Symbol(\"onreaddir\"),dx=Symbol(\"pipe\"),eAe=Symbol(\"entry\"),p3=Symbol(\"entryOpt\"),y3=Symbol(\"writeEntryClass\"),rAe=Symbol(\"write\"),h3=Symbol(\"ondrain\"),yx=ve(\"fs\"),tAe=ve(\"path\"),Elt=sx(),g3=jE(),w3=Elt(class extends plt{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||\"\",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=g3(e.prefix||\"\"),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[y3]=C3,typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!=\"object\"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new hlt.Gzip(e.gzip),this.zip.on(\"data\",r=>super.write(r)),this.zip.on(\"end\",r=>super.end()),this.zip.on(\"drain\",r=>this[h3]()),this.on(\"resume\",r=>this.zip.resume())):this.on(\"drain\",this[h3]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter==\"function\"?e.filter:r=>!0,this[lA]=new ylt,this[cA]=0,this.jobs=+e.jobs||4,this[fx]=!1,this[Ax]=!1}[rAe](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[Ax]=!0,this[Nd](),this}write(e){if(this[Ax])throw new Error(\"write after end\");return e instanceof glt?this[$ue](e):this[hx](e),this.flowing}[$ue](e){let r=g3(tAe.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let o=new mx(e.path,r,!1);o.entry=new mlt(e,this[p3](o)),o.entry.on(\"end\",a=>this[f3](o)),this[cA]+=1,this[lA].push(o)}this[Nd]()}[hx](e){let r=g3(tAe.resolve(this.cwd,e));this[lA].push(new mx(e,r)),this[Nd]()}[d3](e){e.pending=!0,this[cA]+=1;let r=this.follow?\"stat\":\"lstat\";yx[r](e.absolute,(o,a)=>{e.pending=!1,this[cA]-=1,o?this.emit(\"error\",o):this[px](e,a)})}[px](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Nd]()}[m3](e){e.pending=!0,this[cA]+=1,yx.readdir(e.absolute,(r,o)=>{if(e.pending=!1,this[cA]-=1,r)return this.emit(\"error\",r);this[gx](e,o)})}[gx](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Nd]()}[Nd](){if(!this[fx]){this[fx]=!0;for(let e=this[lA].head;e!==null&&this[cA]<this.jobs;e=e.next)if(this[Zue](e.value),e.value.ignore){let r=e.next;this[lA].removeNode(e),e.next=r}this[fx]=!1,this[Ax]&&!this[lA].length&&this[cA]===0&&(this.zip?this.zip.end(Xue):(super.write(Xue),super.end()))}}get[WE](){return this[lA]&&this[lA].head&&this[lA].head.value}[f3](e){this[lA].shift(),this[cA]-=1,this[Nd]()}[Zue](e){if(!e.pending){if(e.entry){e===this[WE]&&!e.piped&&this[dx](e);return}if(e.stat||(this.statCache.has(e.absolute)?this[px](e,this.statCache.get(e.absolute)):this[d3](e)),!!e.stat&&!e.ignore&&!(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir&&(this.readdirCache.has(e.absolute)?this[gx](e,this.readdirCache.get(e.absolute)):this[m3](e),!e.readdir))){if(e.entry=this[eAe](e),!e.entry){e.ignore=!0;return}e===this[WE]&&!e.piped&&this[dx](e)}}}[p3](e){return{onwarn:(r,o,a)=>this.warn(r,o,a),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[eAe](e){this[cA]+=1;try{return new this[y3](e.path,this[p3](e)).on(\"end\",()=>this[f3](e)).on(\"error\",r=>this.emit(\"error\",r))}catch(r){this.emit(\"error\",r)}}[h3](){this[WE]&&this[WE].entry&&this[WE].entry.resume()}[dx](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[hx](u+a)});let r=e.entry,o=this.zip;o?r.on(\"data\",a=>{o.write(a)||r.pause()}):r.on(\"data\",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),E3=class extends w3{constructor(e){super(e),this[y3]=dlt}pause(){}resume(){}[d3](e){let r=this.follow?\"statSync\":\"lstatSync\";this[px](e,yx[r](e.absolute))}[m3](e,r){this[gx](e,yx.readdirSync(e.absolute))}[dx](e){let r=e.entry,o=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[hx](u+a)}),o?r.on(\"data\",a=>{o.write(a)}):r.on(\"data\",a=>{super[rAe](a)})}};w3.Sync=E3;nAe.exports=w3});var eC=_(W1=>{\"use strict\";var Clt=UE(),wlt=ve(\"events\").EventEmitter,Qa=ve(\"fs\"),v3=Qa.writev;if(!v3){let t=process.binding(\"fs\"),e=t.FSReqWrap||t.FSReqCallback;v3=(r,o,a,n)=>{let u=(p,h)=>n(p,h,o),A=new e;A.oncomplete=u,t.writeBuffers(r,o,a,A)}}var ZE=Symbol(\"_autoClose\"),Yc=Symbol(\"_close\"),Y1=Symbol(\"_ended\"),Gn=Symbol(\"_fd\"),iAe=Symbol(\"_finished\"),Ch=Symbol(\"_flags\"),I3=Symbol(\"_flush\"),D3=Symbol(\"_handleChunk\"),P3=Symbol(\"_makeBuf\"),vx=Symbol(\"_mode\"),Cx=Symbol(\"_needDrain\"),zE=Symbol(\"_onerror\"),$E=Symbol(\"_onopen\"),B3=Symbol(\"_onread\"),VE=Symbol(\"_onwrite\"),wh=Symbol(\"_open\"),qf=Symbol(\"_path\"),Od=Symbol(\"_pos\"),uA=Symbol(\"_queue\"),JE=Symbol(\"_read\"),sAe=Symbol(\"_readSize\"),Eh=Symbol(\"_reading\"),wx=Symbol(\"_remain\"),oAe=Symbol(\"_size\"),Ix=Symbol(\"_write\"),KE=Symbol(\"_writing\"),Bx=Symbol(\"_defaultFlag\"),XE=Symbol(\"_errored\"),Dx=class extends Clt{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!=\"string\")throw new TypeError(\"path must be a string\");this[XE]=!1,this[Gn]=typeof r.fd==\"number\"?r.fd:null,this[qf]=e,this[sAe]=r.readSize||16*1024*1024,this[Eh]=!1,this[oAe]=typeof r.size==\"number\"?r.size:1/0,this[wx]=this[oAe],this[ZE]=typeof r.autoClose==\"boolean\"?r.autoClose:!0,typeof this[Gn]==\"number\"?this[JE]():this[wh]()}get fd(){return this[Gn]}get path(){return this[qf]}write(){throw new TypeError(\"this is a readable stream\")}end(){throw new TypeError(\"this is a readable stream\")}[wh](){Qa.open(this[qf],\"r\",(e,r)=>this[$E](e,r))}[$E](e,r){e?this[zE](e):(this[Gn]=r,this.emit(\"open\",r),this[JE]())}[P3](){return Buffer.allocUnsafe(Math.min(this[sAe],this[wx]))}[JE](){if(!this[Eh]){this[Eh]=!0;let e=this[P3]();if(e.length===0)return process.nextTick(()=>this[B3](null,0,e));Qa.read(this[Gn],e,0,e.length,null,(r,o,a)=>this[B3](r,o,a))}}[B3](e,r,o){this[Eh]=!1,e?this[zE](e):this[D3](r,o)&&this[JE]()}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}[zE](e){this[Eh]=!0,this[Yc](),this.emit(\"error\",e)}[D3](e,r){let o=!1;return this[wx]-=e,e>0&&(o=super.write(e<r.length?r.slice(0,e):r)),(e===0||this[wx]<=0)&&(o=!1,this[Yc](),super.end()),o}emit(e,r){switch(e){case\"prefinish\":case\"finish\":break;case\"drain\":typeof this[Gn]==\"number\"&&this[JE]();break;case\"error\":return this[XE]?void 0:(this[XE]=!0,super.emit(e,r));default:return super.emit(e,r)}}},S3=class extends Dx{[wh](){let e=!0;try{this[$E](null,Qa.openSync(this[qf],\"r\")),e=!1}finally{e&&this[Yc]()}}[JE](){let e=!0;try{if(!this[Eh]){this[Eh]=!0;do{let r=this[P3](),o=r.length===0?0:Qa.readSync(this[Gn],r,0,r.length,null);if(!this[D3](o,r))break}while(!0);this[Eh]=!1}e=!1}finally{e&&this[Yc]()}}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.closeSync(e),this.emit(\"close\")}}},Px=class extends wlt{constructor(e,r){r=r||{},super(r),this.readable=!1,this.writable=!0,this[XE]=!1,this[KE]=!1,this[Y1]=!1,this[Cx]=!1,this[uA]=[],this[qf]=e,this[Gn]=typeof r.fd==\"number\"?r.fd:null,this[vx]=r.mode===void 0?438:r.mode,this[Od]=typeof r.start==\"number\"?r.start:null,this[ZE]=typeof r.autoClose==\"boolean\"?r.autoClose:!0;let o=this[Od]!==null?\"r+\":\"w\";this[Bx]=r.flags===void 0,this[Ch]=this[Bx]?o:r.flags,this[Gn]===null&&this[wh]()}emit(e,r){if(e===\"error\"){if(this[XE])return;this[XE]=!0}return super.emit(e,r)}get fd(){return this[Gn]}get path(){return this[qf]}[zE](e){this[Yc](),this[KE]=!0,this.emit(\"error\",e)}[wh](){Qa.open(this[qf],this[Ch],this[vx],(e,r)=>this[$E](e,r))}[$E](e,r){this[Bx]&&this[Ch]===\"r+\"&&e&&e.code===\"ENOENT\"?(this[Ch]=\"w\",this[wh]()):e?this[zE](e):(this[Gn]=r,this.emit(\"open\",r),this[I3]())}end(e,r){return e&&this.write(e,r),this[Y1]=!0,!this[KE]&&!this[uA].length&&typeof this[Gn]==\"number\"&&this[VE](null,0),this}write(e,r){return typeof e==\"string\"&&(e=Buffer.from(e,r)),this[Y1]?(this.emit(\"error\",new Error(\"write() after end()\")),!1):this[Gn]===null||this[KE]||this[uA].length?(this[uA].push(e),this[Cx]=!0,!1):(this[KE]=!0,this[Ix](e),!0)}[Ix](e){Qa.write(this[Gn],e,0,e.length,this[Od],(r,o)=>this[VE](r,o))}[VE](e,r){e?this[zE](e):(this[Od]!==null&&(this[Od]+=r),this[uA].length?this[I3]():(this[KE]=!1,this[Y1]&&!this[iAe]?(this[iAe]=!0,this[Yc](),this.emit(\"finish\")):this[Cx]&&(this[Cx]=!1,this.emit(\"drain\"))))}[I3](){if(this[uA].length===0)this[Y1]&&this[VE](null,0);else if(this[uA].length===1)this[Ix](this[uA].pop());else{let e=this[uA];this[uA]=[],v3(this[Gn],e,this[Od],(r,o)=>this[VE](r,o))}}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}},b3=class extends Px{[wh](){let e;if(this[Bx]&&this[Ch]===\"r+\")try{e=Qa.openSync(this[qf],this[Ch],this[vx])}catch(r){if(r.code===\"ENOENT\")return this[Ch]=\"w\",this[wh]();throw r}else e=Qa.openSync(this[qf],this[Ch],this[vx]);this[$E](null,e)}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.closeSync(e),this.emit(\"close\")}}[Ix](e){let r=!0;try{this[VE](null,Qa.writeSync(this[Gn],e,0,e.length,this[Od])),r=!1}finally{if(r)try{this[Yc]()}catch{}}}};W1.ReadStream=Dx;W1.ReadStreamSync=S3;W1.WriteStream=Px;W1.WriteStreamSync=b3});var Rx=_((cUt,pAe)=>{\"use strict\";var Ilt=sx(),Blt=GE(),vlt=ve(\"events\"),Dlt=IP(),Plt=1024*1024,Slt=rx(),aAe=ix(),blt=GU(),x3=Buffer.from([31,139]),Xl=Symbol(\"state\"),Md=Symbol(\"writeEntry\"),Gf=Symbol(\"readEntry\"),k3=Symbol(\"nextEntry\"),lAe=Symbol(\"processEntry\"),Zl=Symbol(\"extendedHeader\"),K1=Symbol(\"globalExtendedHeader\"),Ih=Symbol(\"meta\"),cAe=Symbol(\"emitMeta\"),fi=Symbol(\"buffer\"),Yf=Symbol(\"queue\"),Ud=Symbol(\"ended\"),uAe=Symbol(\"emittedEnd\"),_d=Symbol(\"emit\"),Fa=Symbol(\"unzip\"),Sx=Symbol(\"consumeChunk\"),bx=Symbol(\"consumeChunkSub\"),Q3=Symbol(\"consumeBody\"),AAe=Symbol(\"consumeMeta\"),fAe=Symbol(\"consumeHeader\"),xx=Symbol(\"consuming\"),F3=Symbol(\"bufferConcat\"),R3=Symbol(\"maybeEnd\"),V1=Symbol(\"writing\"),Bh=Symbol(\"aborted\"),kx=Symbol(\"onDone\"),Hd=Symbol(\"sawValidEntry\"),Qx=Symbol(\"sawNullBlock\"),Fx=Symbol(\"sawEOF\"),xlt=t=>!0;pAe.exports=Ilt(class extends vlt{constructor(e){e=e||{},super(e),this.file=e.file||\"\",this[Hd]=null,this.on(kx,r=>{(this[Xl]===\"begin\"||this[Hd]===!1)&&this.warn(\"TAR_BAD_ARCHIVE\",\"Unrecognized archive format\")}),e.ondone?this.on(kx,e.ondone):this.on(kx,r=>{this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||Plt,this.filter=typeof e.filter==\"function\"?e.filter:xlt,this.writable=!0,this.readable=!1,this[Yf]=new Dlt,this[fi]=null,this[Gf]=null,this[Md]=null,this[Xl]=\"begin\",this[Ih]=\"\",this[Zl]=null,this[K1]=null,this[Ud]=!1,this[Fa]=null,this[Bh]=!1,this[Qx]=!1,this[Fx]=!1,typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),typeof e.onentry==\"function\"&&this.on(\"entry\",e.onentry)}[fAe](e,r){this[Hd]===null&&(this[Hd]=!1);let o;try{o=new Blt(e,r,this[Zl],this[K1])}catch(a){return this.warn(\"TAR_ENTRY_INVALID\",a)}if(o.nullBlock)this[Qx]?(this[Fx]=!0,this[Xl]===\"begin\"&&(this[Xl]=\"header\"),this[_d](\"eof\")):(this[Qx]=!0,this[_d](\"nullBlock\"));else if(this[Qx]=!1,!o.cksumValid)this.warn(\"TAR_ENTRY_INVALID\",\"checksum failure\",{header:o});else if(!o.path)this.warn(\"TAR_ENTRY_INVALID\",\"path is required\",{header:o});else{let a=o.type;if(/^(Symbolic)?Link$/.test(a)&&!o.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath required\",{header:o});else if(!/^(Symbolic)?Link$/.test(a)&&o.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath forbidden\",{header:o});else{let n=this[Md]=new Slt(o,this[Zl],this[K1]);if(!this[Hd])if(n.remain){let u=()=>{n.invalid||(this[Hd]=!0)};n.on(\"end\",u)}else this[Hd]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[_d](\"ignoredEntry\",n),this[Xl]=\"ignore\",n.resume()):n.size>0&&(this[Ih]=\"\",n.on(\"data\",u=>this[Ih]+=u),this[Xl]=\"meta\"):(this[Zl]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[_d](\"ignoredEntry\",n),this[Xl]=n.remain?\"ignore\":\"header\",n.resume()):(n.remain?this[Xl]=\"body\":(this[Xl]=\"header\",n.end()),this[Gf]?this[Yf].push(n):(this[Yf].push(n),this[k3]())))}}}[lAe](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Gf]=e,this.emit(\"entry\",e),e.emittedEnd||(e.on(\"end\",o=>this[k3]()),r=!1)):(this[Gf]=null,r=!1),r}[k3](){do;while(this[lAe](this[Yf].shift()));if(!this[Yf].length){let e=this[Gf];!e||e.flowing||e.size===e.remain?this[V1]||this.emit(\"drain\"):e.once(\"drain\",o=>this.emit(\"drain\"))}}[Q3](e,r){let o=this[Md],a=o.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return o.write(n),o.blockRemain||(this[Xl]=\"header\",this[Md]=null,o.end()),n.length}[AAe](e,r){let o=this[Md],a=this[Q3](e,r);return this[Md]||this[cAe](o),a}[_d](e,r,o){!this[Yf].length&&!this[Gf]?this.emit(e,r,o):this[Yf].push([e,r,o])}[cAe](e){switch(this[_d](\"meta\",this[Ih]),e.type){case\"ExtendedHeader\":case\"OldExtendedHeader\":this[Zl]=aAe.parse(this[Ih],this[Zl],!1);break;case\"GlobalExtendedHeader\":this[K1]=aAe.parse(this[Ih],this[K1],!0);break;case\"NextFileHasLongPath\":case\"OldGnuLongPath\":this[Zl]=this[Zl]||Object.create(null),this[Zl].path=this[Ih].replace(/\\0.*/,\"\");break;case\"NextFileHasLongLinkpath\":this[Zl]=this[Zl]||Object.create(null),this[Zl].linkpath=this[Ih].replace(/\\0.*/,\"\");break;default:throw new Error(\"unknown meta: \"+e.type)}}abort(e){this[Bh]=!0,this.emit(\"abort\",e),this.warn(\"TAR_ABORT\",e,{recoverable:!1})}write(e){if(this[Bh])return;if(this[Fa]===null&&e){if(this[fi]&&(e=Buffer.concat([this[fi],e]),this[fi]=null),e.length<x3.length)return this[fi]=e,!0;for(let o=0;this[Fa]===null&&o<x3.length;o++)e[o]!==x3[o]&&(this[Fa]=!1);if(this[Fa]===null){let o=this[Ud];this[Ud]=!1,this[Fa]=new blt.Unzip,this[Fa].on(\"data\",n=>this[Sx](n)),this[Fa].on(\"error\",n=>this.abort(n)),this[Fa].on(\"end\",n=>{this[Ud]=!0,this[Sx]()}),this[V1]=!0;let a=this[Fa][o?\"end\":\"write\"](e);return this[V1]=!1,a}}this[V1]=!0,this[Fa]?this[Fa].write(e):this[Sx](e),this[V1]=!1;let r=this[Yf].length?!1:this[Gf]?this[Gf].flowing:!0;return!r&&!this[Yf].length&&this[Gf].once(\"drain\",o=>this.emit(\"drain\")),r}[F3](e){e&&!this[Bh]&&(this[fi]=this[fi]?Buffer.concat([this[fi],e]):e)}[R3](){if(this[Ud]&&!this[uAe]&&!this[Bh]&&!this[xx]){this[uAe]=!0;let e=this[Md];if(e&&e.blockRemain){let r=this[fi]?this[fi].length:0;this.warn(\"TAR_BAD_ARCHIVE\",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[fi]&&e.write(this[fi]),e.end()}this[_d](kx)}}[Sx](e){if(this[xx])this[F3](e);else if(!e&&!this[fi])this[R3]();else{if(this[xx]=!0,this[fi]){this[F3](e);let r=this[fi];this[fi]=null,this[bx](r)}else this[bx](e);for(;this[fi]&&this[fi].length>=512&&!this[Bh]&&!this[Fx];){let r=this[fi];this[fi]=null,this[bx](r)}this[xx]=!1}(!this[fi]||this[Ud])&&this[R3]()}[bx](e){let r=0,o=e.length;for(;r+512<=o&&!this[Bh]&&!this[Fx];)switch(this[Xl]){case\"begin\":case\"header\":this[fAe](e,r),r+=512;break;case\"ignore\":case\"body\":r+=this[Q3](e,r);break;case\"meta\":r+=this[AAe](e,r);break;default:throw new Error(\"invalid state: \"+this[Xl])}r<o&&(this[fi]?this[fi]=Buffer.concat([e.slice(r),this[fi]]):this[fi]=e.slice(r))}end(e){this[Bh]||(this[Fa]?this[Fa].end(e):(this[Ud]=!0,this.write(e)))}})});var Tx=_((uUt,mAe)=>{\"use strict\";var klt=OE(),gAe=Rx(),tC=ve(\"fs\"),Qlt=eC(),hAe=ve(\"path\"),T3=YE();mAe.exports=(t,e,r)=>{typeof t==\"function\"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e==\"function\"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=klt(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&Rlt(o,e),o.noResume||Flt(o),o.file&&o.sync?Tlt(o):o.file?Llt(o,r):dAe(o)};var Flt=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},Rlt=(t,e)=>{let r=new Map(e.map(n=>[T3(n),!0])),o=t.filter,a=(n,u)=>{let A=u||hAe.parse(n).root||\".\",p=n===A?!1:r.has(n)?r.get(n):a(hAe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(T3(n)):n=>a(T3(n))},Tlt=t=>{let e=dAe(t),r=t.file,o=!0,a;try{let n=tC.statSync(r),u=t.maxReadSize||16*1024*1024;if(n.size<u)e.end(tC.readFileSync(r));else{let A=0,p=Buffer.allocUnsafe(u);for(a=tC.openSync(r,\"r\");A<n.size;){let h=tC.readSync(a,p,0,u,A);A+=h,e.write(p.slice(0,h))}e.end()}o=!1}finally{if(o&&a)try{tC.closeSync(a)}catch{}}},Llt=(t,e)=>{let r=new gAe(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on(\"error\",A),r.on(\"end\",u),tC.stat(a,(p,h)=>{if(p)A(p);else{let E=new Qlt.ReadStream(a,{readSize:o,size:h.size});E.on(\"error\",A),E.pipe(r)}})});return e?n.then(e,e):n},dAe=t=>new gAe(t)});var BAe=_((AUt,IAe)=>{\"use strict\";var Nlt=OE(),Lx=Ex(),yAe=eC(),EAe=Tx(),CAe=ve(\"path\");IAe.exports=(t,e,r)=>{if(typeof e==\"function\"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");e=Array.from(e);let o=Nlt(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return o.file&&o.sync?Olt(o,e):o.file?Mlt(o,e,r):o.sync?Ult(o,e):_lt(o,e)};var Olt=(t,e)=>{let r=new Lx.Sync(t),o=new yAe.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(o),wAe(r,e)},Mlt=(t,e,r)=>{let o=new Lx(t),a=new yAe.WriteStream(t.file,{mode:t.mode||438});o.pipe(a);let n=new Promise((u,A)=>{a.on(\"error\",A),a.on(\"close\",u),o.on(\"error\",A)});return L3(o,e),r?n.then(r,r):n},wAe=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?EAe({file:CAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},L3=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return EAe({file:CAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>L3(t,e));t.add(r)}t.end()},Ult=(t,e)=>{let r=new Lx.Sync(t);return wAe(r,e),r},_lt=(t,e)=>{let r=new Lx(t);return L3(r,e),r}});var N3=_((fUt,kAe)=>{\"use strict\";var Hlt=OE(),vAe=Ex(),Al=ve(\"fs\"),DAe=eC(),PAe=Tx(),SAe=ve(\"path\"),bAe=GE();kAe.exports=(t,e,r)=>{let o=Hlt(t);if(!o.file)throw new TypeError(\"file is required\");if(o.gzip)throw new TypeError(\"cannot append to compressed archives\");if(!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");return e=Array.from(e),o.sync?jlt(o,e):Glt(o,e,r)};var jlt=(t,e)=>{let r=new vAe.Sync(t),o=!0,a,n;try{try{a=Al.openSync(t.file,\"r+\")}catch(p){if(p.code===\"ENOENT\")a=Al.openSync(t.file,\"w+\");else throw p}let u=Al.fstatSync(a),A=Buffer.alloc(512);e:for(n=0;n<u.size;n+=512){for(let E=0,I=0;E<512;E+=I){if(I=Al.readSync(a,A,E,A.length-E,n+E),n===0&&A[0]===31&&A[1]===139)throw new Error(\"cannot append to compressed archives\");if(!I)break e}let p=new bAe(A);if(!p.cksumValid)break;let h=512*Math.ceil(p.size/512);if(n+h+512>u.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}o=!1,qlt(t,r,n,a,e)}finally{if(o)try{Al.closeSync(a)}catch{}}},qlt=(t,e,r,o,a)=>{let n=new DAe.WriteStreamSync(t.file,{fd:o,start:r});e.pipe(n),Ylt(e,a)},Glt=(t,e,r)=>{e=Array.from(e);let o=new vAe(t),a=(u,A,p)=>{let h=(C,R)=>{C?Al.close(u,N=>p(C)):p(null,R)},E=0;if(A===0)return h(null,0);let I=0,v=Buffer.alloc(512),x=(C,R)=>{if(C)return h(C);if(I+=R,I<512&&R)return Al.read(u,v,I,v.length-I,E+I,x);if(E===0&&v[0]===31&&v[1]===139)return h(new Error(\"cannot append to compressed archives\"));if(I<512)return h(null,E);let N=new bAe(v);if(!N.cksumValid)return h(null,E);let U=512*Math.ceil(N.size/512);if(E+U+512>A||(E+=U+512,E>=A))return h(null,E);t.mtimeCache&&t.mtimeCache.set(N.path,N.mtime),I=0,Al.read(u,v,0,512,E,x)};Al.read(u,v,0,512,E,x)},n=new Promise((u,A)=>{o.on(\"error\",A);let p=\"r+\",h=(E,I)=>{if(E&&E.code===\"ENOENT\"&&p===\"r+\")return p=\"w+\",Al.open(t.file,p,h);if(E)return A(E);Al.fstat(I,(v,x)=>{if(v)return Al.close(I,()=>A(v));a(I,x.size,(C,R)=>{if(C)return A(C);let N=new DAe.WriteStream(t.file,{fd:I,start:R});o.pipe(N),N.on(\"error\",A),N.on(\"close\",u),xAe(o,e)})})};Al.open(t.file,p,h)});return r?n.then(r,r):n},Ylt=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?PAe({file:SAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},xAe=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return PAe({file:SAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>xAe(t,e));t.add(r)}t.end()}});var FAe=_((pUt,QAe)=>{\"use strict\";var Wlt=OE(),Klt=N3();QAe.exports=(t,e,r)=>{let o=Wlt(t);if(!o.file)throw new TypeError(\"file is required\");if(o.gzip)throw new TypeError(\"cannot append to compressed archives\");if(!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");return e=Array.from(e),Vlt(o),Klt(o,e,r)};var Vlt=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,o)=>e(r,o)&&!(t.mtimeCache.get(r)>o.mtime):(r,o)=>!(t.mtimeCache.get(r)>o.mtime)}});var LAe=_((hUt,TAe)=>{var{promisify:RAe}=ve(\"util\"),vh=ve(\"fs\"),Jlt=t=>{if(!t)t={mode:511,fs:vh};else if(typeof t==\"object\")t={mode:511,fs:vh,...t};else if(typeof t==\"number\")t={mode:t,fs:vh};else if(typeof t==\"string\")t={mode:parseInt(t,8),fs:vh};else throw new TypeError(\"invalid options argument\");return t.mkdir=t.mkdir||t.fs.mkdir||vh.mkdir,t.mkdirAsync=RAe(t.mkdir),t.stat=t.stat||t.fs.stat||vh.stat,t.statAsync=RAe(t.stat),t.statSync=t.statSync||t.fs.statSync||vh.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||vh.mkdirSync,t};TAe.exports=Jlt});var OAe=_((gUt,NAe)=>{var zlt=process.platform,{resolve:Xlt,parse:Zlt}=ve(\"path\"),$lt=t=>{if(/\\0/.test(t))throw Object.assign(new TypeError(\"path must be a string without null bytes\"),{path:t,code:\"ERR_INVALID_ARG_VALUE\"});if(t=Xlt(t),zlt===\"win32\"){let e=/[*|\"<>?:]/,{root:r}=Zlt(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error(\"Illegal characters in path.\"),{path:t,code:\"EINVAL\"})}return t};NAe.exports=$lt});var jAe=_((dUt,HAe)=>{var{dirname:MAe}=ve(\"path\"),UAe=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(o=>o.isDirectory()?r:void 0,o=>o.code===\"ENOENT\"?UAe(t,MAe(e),e):void 0),_Ae=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(o){return o.code===\"ENOENT\"?_Ae(t,MAe(e),e):void 0}};HAe.exports={findMade:UAe,findMadeSync:_Ae}});var U3=_((mUt,GAe)=>{var{dirname:qAe}=ve(\"path\"),O3=(t,e,r)=>{e.recursive=!1;let o=qAe(t);return o===t?e.mkdirAsync(t,e).catch(a=>{if(a.code!==\"EISDIR\")throw a}):e.mkdirAsync(t,e).then(()=>r||t,a=>{if(a.code===\"ENOENT\")return O3(o,e).then(n=>O3(t,e,n));if(a.code!==\"EEXIST\"&&a.code!==\"EROFS\")throw a;return e.statAsync(t).then(n=>{if(n.isDirectory())return r;throw a},()=>{throw a})})},M3=(t,e,r)=>{let o=qAe(t);if(e.recursive=!1,o===t)try{return e.mkdirSync(t,e)}catch(a){if(a.code!==\"EISDIR\")throw a;return}try{return e.mkdirSync(t,e),r||t}catch(a){if(a.code===\"ENOENT\")return M3(t,e,M3(o,e,r));if(a.code!==\"EEXIST\"&&a.code!==\"EROFS\")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};GAe.exports={mkdirpManual:O3,mkdirpManualSync:M3}});var KAe=_((yUt,WAe)=>{var{dirname:YAe}=ve(\"path\"),{findMade:ect,findMadeSync:tct}=jAe(),{mkdirpManual:rct,mkdirpManualSync:nct}=U3(),ict=(t,e)=>(e.recursive=!0,YAe(t)===t?e.mkdirAsync(t,e):ect(e,t).then(o=>e.mkdirAsync(t,e).then(()=>o).catch(a=>{if(a.code===\"ENOENT\")return rct(t,e);throw a}))),sct=(t,e)=>{if(e.recursive=!0,YAe(t)===t)return e.mkdirSync(t,e);let o=tct(e,t);try{return e.mkdirSync(t,e),o}catch(a){if(a.code===\"ENOENT\")return nct(t,e);throw a}};WAe.exports={mkdirpNative:ict,mkdirpNativeSync:sct}});var XAe=_((EUt,zAe)=>{var VAe=ve(\"fs\"),oct=process.version,_3=oct.replace(/^v/,\"\").split(\".\"),JAe=+_3[0]>10||+_3[0]==10&&+_3[1]>=12,act=JAe?t=>t.mkdir===VAe.mkdir:()=>!1,lct=JAe?t=>t.mkdirSync===VAe.mkdirSync:()=>!1;zAe.exports={useNative:act,useNativeSync:lct}});var nfe=_((CUt,rfe)=>{var rC=LAe(),nC=OAe(),{mkdirpNative:ZAe,mkdirpNativeSync:$Ae}=KAe(),{mkdirpManual:efe,mkdirpManualSync:tfe}=U3(),{useNative:cct,useNativeSync:uct}=XAe(),iC=(t,e)=>(t=nC(t),e=rC(e),cct(e)?ZAe(t,e):efe(t,e)),Act=(t,e)=>(t=nC(t),e=rC(e),uct(e)?$Ae(t,e):tfe(t,e));iC.sync=Act;iC.native=(t,e)=>ZAe(nC(t),rC(e));iC.manual=(t,e)=>efe(nC(t),rC(e));iC.nativeSync=(t,e)=>$Ae(nC(t),rC(e));iC.manualSync=(t,e)=>tfe(nC(t),rC(e));rfe.exports=iC});var ufe=_((wUt,cfe)=>{\"use strict\";var $l=ve(\"fs\"),jd=ve(\"path\"),fct=$l.lchown?\"lchown\":\"chown\",pct=$l.lchownSync?\"lchownSync\":\"chownSync\",sfe=$l.lchown&&!process.version.match(/v1[1-9]+\\./)&&!process.version.match(/v10\\.[6-9]/),ife=(t,e,r)=>{try{return $l[pct](t,e,r)}catch(o){if(o.code!==\"ENOENT\")throw o}},hct=(t,e,r)=>{try{return $l.chownSync(t,e,r)}catch(o){if(o.code!==\"ENOENT\")throw o}},gct=sfe?(t,e,r,o)=>a=>{!a||a.code!==\"EISDIR\"?o(a):$l.chown(t,e,r,o)}:(t,e,r,o)=>o,H3=sfe?(t,e,r)=>{try{return ife(t,e,r)}catch(o){if(o.code!==\"EISDIR\")throw o;hct(t,e,r)}}:(t,e,r)=>ife(t,e,r),dct=process.version,ofe=(t,e,r)=>$l.readdir(t,e,r),mct=(t,e)=>$l.readdirSync(t,e);/^v4\\./.test(dct)&&(ofe=(t,e,r)=>$l.readdir(t,r));var Nx=(t,e,r,o)=>{$l[fct](t,e,r,gct(t,e,r,a=>{o(a&&a.code!==\"ENOENT\"?a:null)}))},afe=(t,e,r,o,a)=>{if(typeof e==\"string\")return $l.lstat(jd.resolve(t,e),(n,u)=>{if(n)return a(n.code!==\"ENOENT\"?n:null);u.name=e,afe(t,u,r,o,a)});if(e.isDirectory())j3(jd.resolve(t,e.name),r,o,n=>{if(n)return a(n);let u=jd.resolve(t,e.name);Nx(u,r,o,a)});else{let n=jd.resolve(t,e.name);Nx(n,r,o,a)}},j3=(t,e,r,o)=>{ofe(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code===\"ENOENT\")return o();if(a.code!==\"ENOTDIR\"&&a.code!==\"ENOTSUP\")return o(a)}if(a||!n.length)return Nx(t,e,r,o);let u=n.length,A=null,p=h=>{if(!A){if(h)return o(A=h);if(--u===0)return Nx(t,e,r,o)}};n.forEach(h=>afe(t,h,e,r,p))})},yct=(t,e,r,o)=>{if(typeof e==\"string\")try{let a=$l.lstatSync(jd.resolve(t,e));a.name=e,e=a}catch(a){if(a.code===\"ENOENT\")return;throw a}e.isDirectory()&&lfe(jd.resolve(t,e.name),r,o),H3(jd.resolve(t,e.name),r,o)},lfe=(t,e,r)=>{let o;try{o=mct(t,{withFileTypes:!0})}catch(a){if(a.code===\"ENOENT\")return;if(a.code===\"ENOTDIR\"||a.code===\"ENOTSUP\")return H3(t,e,r);throw a}return o&&o.length&&o.forEach(a=>yct(t,a,e,r)),H3(t,e,r)};cfe.exports=j3;j3.sync=lfe});var hfe=_((IUt,q3)=>{\"use strict\";var Afe=nfe(),ec=ve(\"fs\"),Ox=ve(\"path\"),ffe=ufe(),Wc=jE(),Mx=class extends Error{constructor(e,r){super(\"Cannot extract through symbolic link\"),this.path=r,this.symlink=e}get name(){return\"SylinkError\"}},Ux=class extends Error{constructor(e,r){super(r+\": Cannot cd into '\"+e+\"'\"),this.path=e,this.code=r}get name(){return\"CwdError\"}},_x=(t,e)=>t.get(Wc(e)),J1=(t,e,r)=>t.set(Wc(e),r),Ect=(t,e)=>{ec.stat(t,(r,o)=>{(r||!o.isDirectory())&&(r=new Ux(t,r&&r.code||\"ENOTDIR\")),e(r)})};q3.exports=(t,e,r)=>{t=Wc(t);let o=e.umask,a=e.mode|448,n=(a&o)!==0,u=e.uid,A=e.gid,p=typeof u==\"number\"&&typeof A==\"number\"&&(u!==e.processUid||A!==e.processGid),h=e.preserve,E=e.unlink,I=e.cache,v=Wc(e.cwd),x=(N,U)=>{N?r(N):(J1(I,t,!0),U&&p?ffe(U,u,A,J=>x(J)):n?ec.chmod(t,a,r):r())};if(I&&_x(I,t)===!0)return x();if(t===v)return Ect(t,x);if(h)return Afe(t,{mode:a}).then(N=>x(null,N),x);let R=Wc(Ox.relative(v,t)).split(\"/\");Hx(v,R,a,I,E,v,null,x)};var Hx=(t,e,r,o,a,n,u,A)=>{if(!e.length)return A(null,u);let p=e.shift(),h=Wc(Ox.resolve(t+\"/\"+p));if(_x(o,h))return Hx(h,e,r,o,a,n,u,A);ec.mkdir(h,r,pfe(h,e,r,o,a,n,u,A))},pfe=(t,e,r,o,a,n,u,A)=>p=>{p?ec.lstat(t,(h,E)=>{if(h)h.path=h.path&&Wc(h.path),A(h);else if(E.isDirectory())Hx(t,e,r,o,a,n,u,A);else if(a)ec.unlink(t,I=>{if(I)return A(I);ec.mkdir(t,r,pfe(t,e,r,o,a,n,u,A))});else{if(E.isSymbolicLink())return A(new Mx(t,t+\"/\"+e.join(\"/\")));A(p)}}):(u=u||t,Hx(t,e,r,o,a,n,u,A))},Cct=t=>{let e=!1,r=\"ENOTDIR\";try{e=ec.statSync(t).isDirectory()}catch(o){r=o.code}finally{if(!e)throw new Ux(t,r)}};q3.exports.sync=(t,e)=>{t=Wc(t);let r=e.umask,o=e.mode|448,a=(o&r)!==0,n=e.uid,u=e.gid,A=typeof n==\"number\"&&typeof u==\"number\"&&(n!==e.processUid||u!==e.processGid),p=e.preserve,h=e.unlink,E=e.cache,I=Wc(e.cwd),v=N=>{J1(E,t,!0),N&&A&&ffe.sync(N,n,u),a&&ec.chmodSync(t,o)};if(E&&_x(E,t)===!0)return v();if(t===I)return Cct(I),v();if(p)return v(Afe.sync(t,o));let C=Wc(Ox.relative(I,t)).split(\"/\"),R=null;for(let N=C.shift(),U=I;N&&(U+=\"/\"+N);N=C.shift())if(U=Wc(Ox.resolve(U)),!_x(E,U))try{ec.mkdirSync(U,o),R=R||U,J1(E,U,!0)}catch{let te=ec.lstatSync(U);if(te.isDirectory()){J1(E,U,!0);continue}else if(h){ec.unlinkSync(U),ec.mkdirSync(U,o),R=R||U,J1(E,U,!0);continue}else if(te.isSymbolicLink())return new Mx(U,U+\"/\"+C.join(\"/\"))}return v(R)}});var Y3=_((BUt,gfe)=>{var G3=Object.create(null),{hasOwnProperty:wct}=Object.prototype;gfe.exports=t=>(wct.call(G3,t)||(G3[t]=t.normalize(\"NFKD\")),G3[t])});var Efe=_((vUt,yfe)=>{var dfe=ve(\"assert\"),Ict=Y3(),Bct=YE(),{join:mfe}=ve(\"path\"),vct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Dct=vct===\"win32\";yfe.exports=()=>{let t=new Map,e=new Map,r=h=>h.split(\"/\").slice(0,-1).reduce((I,v)=>(I.length&&(v=mfe(I[I.length-1],v)),I.push(v||\"/\"),I),[]),o=new Set,a=h=>{let E=e.get(h);if(!E)throw new Error(\"function does not have any path reservations\");return{paths:E.paths.map(I=>t.get(I)),dirs:[...E.dirs].map(I=>t.get(I))}},n=h=>{let{paths:E,dirs:I}=a(h);return E.every(v=>v[0]===h)&&I.every(v=>v[0]instanceof Set&&v[0].has(h))},u=h=>o.has(h)||!n(h)?!1:(o.add(h),h(()=>A(h)),!0),A=h=>{if(!o.has(h))return!1;let{paths:E,dirs:I}=e.get(h),v=new Set;return E.forEach(x=>{let C=t.get(x);dfe.equal(C[0],h),C.length===1?t.delete(x):(C.shift(),typeof C[0]==\"function\"?v.add(C[0]):C[0].forEach(R=>v.add(R)))}),I.forEach(x=>{let C=t.get(x);dfe(C[0]instanceof Set),C[0].size===1&&C.length===1?t.delete(x):C[0].size===1?(C.shift(),v.add(C[0])):C[0].delete(h)}),o.delete(h),v.forEach(x=>u(x)),!0};return{check:n,reserve:(h,E)=>{h=Dct?[\"win32 parallelization disabled\"]:h.map(v=>Ict(Bct(mfe(v))).toLowerCase());let I=new Set(h.map(v=>r(v)).reduce((v,x)=>v.concat(x)));return e.set(E,{dirs:I,paths:h}),h.forEach(v=>{let x=t.get(v);x?x.push(E):t.set(v,[E])}),I.forEach(v=>{let x=t.get(v);x?x[x.length-1]instanceof Set?x[x.length-1].add(E):x.push(new Set([E])):t.set(v,[new Set([E])])}),u(E)}}}});var Ife=_((DUt,wfe)=>{var Pct=process.platform,Sct=Pct===\"win32\",bct=global.__FAKE_TESTING_FS__||ve(\"fs\"),{O_CREAT:xct,O_TRUNC:kct,O_WRONLY:Qct,UV_FS_O_FILEMAP:Cfe=0}=bct.constants,Fct=Sct&&!!Cfe,Rct=512*1024,Tct=Cfe|kct|xct|Qct;wfe.exports=Fct?t=>t<Rct?Tct:\"w\":()=>\"w\"});var e_=_((PUt,Nfe)=>{\"use strict\";var Lct=ve(\"assert\"),Nct=Rx(),vn=ve(\"fs\"),Oct=eC(),Wf=ve(\"path\"),Rfe=hfe(),Bfe=e3(),Mct=Efe(),Uct=t3(),fl=jE(),_ct=YE(),Hct=Y3(),vfe=Symbol(\"onEntry\"),V3=Symbol(\"checkFs\"),Dfe=Symbol(\"checkFs2\"),Gx=Symbol(\"pruneCache\"),J3=Symbol(\"isReusable\"),tc=Symbol(\"makeFs\"),z3=Symbol(\"file\"),X3=Symbol(\"directory\"),Yx=Symbol(\"link\"),Pfe=Symbol(\"symlink\"),Sfe=Symbol(\"hardlink\"),bfe=Symbol(\"unsupported\"),xfe=Symbol(\"checkPath\"),Dh=Symbol(\"mkdir\"),To=Symbol(\"onError\"),jx=Symbol(\"pending\"),kfe=Symbol(\"pend\"),sC=Symbol(\"unpend\"),W3=Symbol(\"ended\"),K3=Symbol(\"maybeClose\"),Z3=Symbol(\"skip\"),z1=Symbol(\"doChown\"),X1=Symbol(\"uid\"),Z1=Symbol(\"gid\"),$1=Symbol(\"checkedCwd\"),Tfe=ve(\"crypto\"),Lfe=Ife(),jct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,e2=jct===\"win32\",qct=(t,e)=>{if(!e2)return vn.unlink(t,e);let r=t+\".DELETE.\"+Tfe.randomBytes(16).toString(\"hex\");vn.rename(t,r,o=>{if(o)return e(o);vn.unlink(r,e)})},Gct=t=>{if(!e2)return vn.unlinkSync(t);let e=t+\".DELETE.\"+Tfe.randomBytes(16).toString(\"hex\");vn.renameSync(t,e),vn.unlinkSync(e)},Qfe=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,Ffe=t=>Hct(_ct(fl(t))).toLowerCase(),Yct=(t,e)=>{e=Ffe(e);for(let r of t.keys()){let o=Ffe(r);(o===e||o.indexOf(e+\"/\")===0)&&t.delete(r)}},Wct=t=>{for(let e of t.keys())t.delete(e)},t2=class extends Nct{constructor(e){if(e||(e={}),e.ondone=r=>{this[W3]=!0,this[K3]()},super(e),this[$1]=!1,this.reservations=Mct(),this.transform=typeof e.transform==\"function\"?e.transform:null,this.writable=!0,this.readable=!1,this[jx]=0,this[W3]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid==\"number\"||typeof e.gid==\"number\"){if(typeof e.uid!=\"number\"||typeof e.gid!=\"number\")throw new TypeError(\"cannot set owner without number uid and gid\");if(e.preserveOwner)throw new TypeError(\"cannot preserve owner in archive and also set owner explicitly\");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!=\"number\"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||e2,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=fl(Wf.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask==\"number\"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on(\"entry\",r=>this[vfe](r))}warn(e,r,o={}){return(e===\"TAR_BAD_ARCHIVE\"||e===\"TAR_ABORT\")&&(o.recoverable=!1),super.warn(e,r,o)}[K3](){this[W3]&&this[jx]===0&&(this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\"))}[xfe](e){if(this.strip){let r=fl(e.path).split(\"/\");if(r.length<this.strip)return!1;if(e.path=r.slice(this.strip).join(\"/\"),e.type===\"Link\"){let o=fl(e.linkpath).split(\"/\");if(o.length>=this.strip)e.linkpath=o.slice(this.strip).join(\"/\");else return!1}}if(!this.preservePaths){let r=fl(e.path),o=r.split(\"/\");if(o.includes(\"..\")||e2&&/^[a-z]:\\.\\.$/i.test(o[0]))return this.warn(\"TAR_ENTRY_ERROR\",\"path contains '..'\",{entry:e,path:r}),!1;let[a,n]=Uct(r);a&&(e.path=n,this.warn(\"TAR_ENTRY_INFO\",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(Wf.isAbsolute(e.path)?e.absolute=fl(Wf.resolve(e.path)):e.absolute=fl(Wf.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+\"/\")!==0&&e.absolute!==this.cwd)return this.warn(\"TAR_ENTRY_ERROR\",\"path escaped extraction target\",{entry:e,path:fl(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!==\"Directory\"&&e.type!==\"GNUDumpDir\")return!1;if(this.win32){let{root:r}=Wf.win32.parse(e.absolute);e.absolute=r+Bfe.encode(e.absolute.substr(r.length));let{root:o}=Wf.win32.parse(e.path);e.path=o+Bfe.encode(e.path.substr(o.length))}return!0}[vfe](e){if(!this[xfe](e))return e.resume();switch(Lct.equal(typeof e.absolute,\"string\"),e.type){case\"Directory\":case\"GNUDumpDir\":e.mode&&(e.mode=e.mode|448);case\"File\":case\"OldFile\":case\"ContiguousFile\":case\"Link\":case\"SymbolicLink\":return this[V3](e);case\"CharacterDevice\":case\"BlockDevice\":case\"FIFO\":default:return this[bfe](e)}}[To](e,r){e.name===\"CwdError\"?this.emit(\"error\",e):(this.warn(\"TAR_ENTRY_ERROR\",e,{entry:r}),this[sC](),r.resume())}[Dh](e,r,o){Rfe(fl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},o)}[z1](e){return this.forceChown||this.preserveOwner&&(typeof e.uid==\"number\"&&e.uid!==this.processUid||typeof e.gid==\"number\"&&e.gid!==this.processGid)||typeof this.uid==\"number\"&&this.uid!==this.processUid||typeof this.gid==\"number\"&&this.gid!==this.processGid}[X1](e){return Qfe(this.uid,e.uid,this.processUid)}[Z1](e){return Qfe(this.gid,e.gid,this.processGid)}[z3](e,r){let o=e.mode&4095||this.fmode,a=new Oct.WriteStream(e.absolute,{flags:Lfe(e.size),mode:o,autoClose:!1});a.on(\"error\",p=>{a.fd&&vn.close(a.fd,()=>{}),a.write=()=>!0,this[To](p,e),r()});let n=1,u=p=>{if(p){a.fd&&vn.close(a.fd,()=>{}),this[To](p,e),r();return}--n===0&&vn.close(a.fd,h=>{h?this[To](h,e):this[sC](),r()})};a.on(\"finish\",p=>{let h=e.absolute,E=a.fd;if(e.mtime&&!this.noMtime){n++;let I=e.atime||new Date,v=e.mtime;vn.futimes(E,I,v,x=>x?vn.utimes(h,I,v,C=>u(C&&x)):u())}if(this[z1](e)){n++;let I=this[X1](e),v=this[Z1](e);vn.fchown(E,I,v,x=>x?vn.chown(h,I,v,C=>u(C&&x)):u())}u()});let A=this.transform&&this.transform(e)||e;A!==e&&(A.on(\"error\",p=>{this[To](p,e),r()}),e.pipe(A)),A.pipe(a)}[X3](e,r){let o=e.mode&4095||this.dmode;this[Dh](e.absolute,o,a=>{if(a){this[To](a,e),r();return}let n=1,u=A=>{--n===0&&(r(),this[sC](),e.resume())};e.mtime&&!this.noMtime&&(n++,vn.utimes(e.absolute,e.atime||new Date,e.mtime,u)),this[z1](e)&&(n++,vn.chown(e.absolute,this[X1](e),this[Z1](e),u)),u()})}[bfe](e){e.unsupported=!0,this.warn(\"TAR_ENTRY_UNSUPPORTED\",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Pfe](e,r){this[Yx](e,e.linkpath,\"symlink\",r)}[Sfe](e,r){let o=fl(Wf.resolve(this.cwd,e.linkpath));this[Yx](e,o,\"link\",r)}[kfe](){this[jx]++}[sC](){this[jx]--,this[K3]()}[Z3](e){this[sC](),e.resume()}[J3](e,r){return e.type===\"File\"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!e2}[V3](e){this[kfe]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,o=>this[Dfe](e,o))}[Gx](e){e.type===\"SymbolicLink\"?Wct(this.dirCache):e.type!==\"Directory\"&&Yct(this.dirCache,e.absolute)}[Dfe](e,r){this[Gx](e);let o=A=>{this[Gx](e),r(A)},a=()=>{this[Dh](this.cwd,this.dmode,A=>{if(A){this[To](A,e),o();return}this[$1]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let A=fl(Wf.dirname(e.absolute));if(A!==this.cwd)return this[Dh](A,this.dmode,p=>{if(p){this[To](p,e),o();return}u()})}u()},u=()=>{vn.lstat(e.absolute,(A,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[Z3](e),o();return}if(A||this[J3](e,p))return this[tc](null,e,o);if(p.isDirectory()){if(e.type===\"Directory\"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,E=I=>this[tc](I,e,o);return h?vn.chmod(e.absolute,e.mode,E):E()}if(e.absolute!==this.cwd)return vn.rmdir(e.absolute,h=>this[tc](h,e,o))}if(e.absolute===this.cwd)return this[tc](null,e,o);qct(e.absolute,h=>this[tc](h,e,o))})};this[$1]?n():a()}[tc](e,r,o){if(e){this[To](e,r),o();return}switch(r.type){case\"File\":case\"OldFile\":case\"ContiguousFile\":return this[z3](r,o);case\"Link\":return this[Sfe](r,o);case\"SymbolicLink\":return this[Pfe](r,o);case\"Directory\":case\"GNUDumpDir\":return this[X3](r,o)}}[Yx](e,r,o,a){vn[o](r,e.absolute,n=>{n?this[To](n,e):(this[sC](),e.resume()),a()})}},qx=t=>{try{return[null,t()]}catch(e){return[e,null]}},$3=class extends t2{[tc](e,r){return super[tc](e,r,()=>{})}[V3](e){if(this[Gx](e),!this[$1]){let n=this[Dh](this.cwd,this.dmode);if(n)return this[To](n,e);this[$1]=!0}if(e.absolute!==this.cwd){let n=fl(Wf.dirname(e.absolute));if(n!==this.cwd){let u=this[Dh](n,this.dmode);if(u)return this[To](u,e)}}let[r,o]=qx(()=>vn.lstatSync(e.absolute));if(o&&(this.keep||this.newer&&o.mtime>e.mtime))return this[Z3](e);if(r||this[J3](e,o))return this[tc](null,e);if(o.isDirectory()){if(e.type===\"Directory\"){let u=!this.noChmod&&e.mode&&(o.mode&4095)!==e.mode,[A]=u?qx(()=>{vn.chmodSync(e.absolute,e.mode)}):[];return this[tc](A,e)}let[n]=qx(()=>vn.rmdirSync(e.absolute));this[tc](n,e)}let[a]=e.absolute===this.cwd?[]:qx(()=>Gct(e.absolute));this[tc](a,e)}[z3](e,r){let o=e.mode&4095||this.fmode,a=A=>{let p;try{vn.closeSync(n)}catch(h){p=h}(A||p)&&this[To](A||p,e),r()},n;try{n=vn.openSync(e.absolute,Lfe(e.size),o)}catch(A){return a(A)}let u=this.transform&&this.transform(e)||e;u!==e&&(u.on(\"error\",A=>this[To](A,e)),e.pipe(u)),u.on(\"data\",A=>{try{vn.writeSync(n,A,0,A.length)}catch(p){a(p)}}),u.on(\"end\",A=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,E=e.mtime;try{vn.futimesSync(n,h,E)}catch(I){try{vn.utimesSync(e.absolute,h,E)}catch{p=I}}}if(this[z1](e)){let h=this[X1](e),E=this[Z1](e);try{vn.fchownSync(n,h,E)}catch(I){try{vn.chownSync(e.absolute,h,E)}catch{p=p||I}}}a(p)})}[X3](e,r){let o=e.mode&4095||this.dmode,a=this[Dh](e.absolute,o);if(a){this[To](a,e),r();return}if(e.mtime&&!this.noMtime)try{vn.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[z1](e))try{vn.chownSync(e.absolute,this[X1](e),this[Z1](e))}catch{}r(),e.resume()}[Dh](e,r){try{return Rfe.sync(fl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(o){return o}}[Yx](e,r,o,a){try{vn[o+\"Sync\"](r,e.absolute),a(),e.resume()}catch(n){return this[To](n,e)}}};t2.Sync=$3;Nfe.exports=t2});var Hfe=_((SUt,_fe)=>{\"use strict\";var Kct=OE(),Wx=e_(),Mfe=ve(\"fs\"),Ufe=eC(),Ofe=ve(\"path\"),t_=YE();_fe.exports=(t,e,r)=>{typeof t==\"function\"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e==\"function\"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=Kct(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&Vct(o,e),o.file&&o.sync?Jct(o):o.file?zct(o,r):o.sync?Xct(o):Zct(o)};var Vct=(t,e)=>{let r=new Map(e.map(n=>[t_(n),!0])),o=t.filter,a=(n,u)=>{let A=u||Ofe.parse(n).root||\".\",p=n===A?!1:r.has(n)?r.get(n):a(Ofe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(t_(n)):n=>a(t_(n))},Jct=t=>{let e=new Wx.Sync(t),r=t.file,o=Mfe.statSync(r),a=t.maxReadSize||16*1024*1024;new Ufe.ReadStreamSync(r,{readSize:a,size:o.size}).pipe(e)},zct=(t,e)=>{let r=new Wx(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on(\"error\",A),r.on(\"close\",u),Mfe.stat(a,(p,h)=>{if(p)A(p);else{let E=new Ufe.ReadStream(a,{readSize:o,size:h.size});E.on(\"error\",A),E.pipe(r)}})});return e?n.then(e,e):n},Xct=t=>new Wx.Sync(t),Zct=t=>new Wx(t)});var jfe=_(us=>{\"use strict\";us.c=us.create=BAe();us.r=us.replace=N3();us.t=us.list=Tx();us.u=us.update=FAe();us.x=us.extract=Hfe();us.Pack=Ex();us.Unpack=e_();us.Parse=Rx();us.ReadEntry=rx();us.WriteEntry=A3();us.Header=GE();us.Pax=ix();us.types=KU()});var r_,qfe,Ph,r2,n2,Gfe=Et(()=>{r_=$e(id()),qfe=ve(\"worker_threads\"),Ph=Symbol(\"kTaskInfo\"),r2=class{constructor(e,r){this.fn=e;this.limit=(0,r_.default)(r.poolSize)}run(e){return this.limit(()=>this.fn(e))}},n2=class{constructor(e,r){this.source=e;this.workers=[];this.limit=(0,r_.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let o=this.workers.pop();o?o.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new qfe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,\"--unhandled-rejections=strict\"]});return e.on(\"message\",r=>{if(!e[Ph])throw new Error(\"Assertion failed: Worker sent a result without having a task assigned\");e[Ph].resolve(r),e[Ph]=null,e.unref(),this.workers.push(e)}),e.on(\"error\",r=>{e[Ph]?.reject(r),e[Ph]=null}),e.on(\"exit\",r=>{r!==0&&e[Ph]?.reject(new Error(`Worker exited with code ${r}`)),e[Ph]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((o,a)=>{r[Ph]={resolve:o,reject:a},r.postMessage(e)})})}}});var Wfe=_((QUt,Yfe)=>{var n_;Yfe.exports.getContent=()=>(typeof n_>\"u\"&&(n_=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"W59AdoE5B0+1lW4yACxzf59sEq1coBzbRXaO1qCovsdV6k+oTNb8UwDVeZtSmwrROTVHVVVTk8qQmYCmFArApvr9/82RFXNUQ6XSwkV9cCfzSZWqU8eqG2EOlQ1lOQZWbHiPlC1abHHQuTEQEPUx98MQsaye6sqb8BAdM/XEROH6EjdeCSMTKRF6Ky9QE0EnP+EoJ1W8IDiGNQjCud4QjVb6s2PneihHqUArxp4y9lu+8JV7Jd95dsF1wY2/Lxh+cn9ht/77pxkNDcL6UGn39+F5kHErJGWPfXPxIkEkw7DsdtzjYyCSY+c3UDWkSokW07JFzh1bP+V1fOLXainl63s4qOijNf4DzTiErNLrQmZ3Dztrfvy5/PrV17THg5A4OsM6qvQOB3pjkohjdnjnmED91NVbtTfyxA9yViyPKX+fpONfVhgl3kMTcWhDhO3fzLR7LicLycwgO5VlPRXZcPy9M51ll9nq8le9UYt6wJd7PPDLV7Wv3wCjwTyGlLRLKemIZuWhJrieUkVTaTAMu4u4qvWZlpa9vrZgEJroriLZYYHGQrYvzPNwzw1RHuhCGl2mdWrYuCQqtsHAbe1S/Vy9VWmZrzf6ZAANTWM4S3u9FwlEB6PkIeMganeOTBaL9OhcOcT4vk5sWgNpEvw4wg1sP4Ury8j5OssUC/7r+/bfRtMP8Yo6+7PoqlMzX3Li2jMYUyg2iIRUj+2525ep9frulVJ/W1rVEAljLhjpQHKSXbXMqjbP583vTe7hQQVHosY8S5RCSvbYgEGkvLeovH71S/PrF1MU6V61yHEPfppiZcvr2DrqyElUWhZGMpEMFDM6HIMfNtcfD79YWjg+CCpZUYcShJuNUGKpozuw3RwNYQJ+gMFyU2se7luBYUsWjFgE/a5h3/EKWn6Wo8yMRhKZla5AvalupPqw5Kso+mYz/3jNyqlHmwnPpHgLRcI3wH+8BaU0Pjw8n+/WcjG/Kh2sy/PS1yZC1Kt2pOwgwBuMUrXjXEBFW1W2wGWO/QSTszpLziLMgh8lzp6Oh93dcQjJZ46vqqtbJasFJdEG+eaIoaQIMDNyIoiFxebz4cMUrbXP2c0mF+DQXAhIf2jrXoiIatsj+vGNreOhg5TW4vHNZ8BBoQakopthDEQbJu5+iYevzNnxMMtGKrm+/pKs32CgASeQG5ikBS6chUxUM37UUOuPh93/g21lIx/fq66GQoDdKCiRb7I8KYgyg2WUtDTwiGr64/CbXNr4AEJ3cGfSR1cQYfopX6b9//fNrG9GB4DMRFerkiN09QhlKcNBIsH6WlhjjmEijribeO/Fi8pAAKgCkJlVmRTdSbJEktXs1uec+wL53gskKxBI9gAgfy2S1ZJf1Rfaq6ruHqWs8ayZb41Unsnu/l9b3/DGMOf/7y21mvH3/R/xIxIJggkQJSVFlYoqK1b16aOqNtuJNFSRMmUsy4zziw3z3Xv/K/z33g8x/o/IYsSPyGFGRKKVBpjKjAS6kZng/5EJKDIBshOkqiYJSX1AluoMZGoOyh6WGUckoJaBdI5ISm2o9qoxxlFT7e3OrcaZs2/jV7WcM6terGez7/VidrNczmo5i+X41d6saMvMLPQQSGPRnmfgoirzv5VrRUjnPV5DK11l9283RjpjLUEHIG8NGjj3rb3aoZ39PwwqyuzsXQhVSbncvGvZ9lUByUpgEiqtsrG22kWejJGF5/t7U/875/6yu7TphneW04x7odKp0WoiENKIBjScCWuIMIK5n+r7zhwgC5Bc1QwSRdSf9GHMsmcA3aouluioI19mZncdUVToIaEkoSWEkiIQCEIIrYYeijTpM16fQLdqggRcWZbvFkJPCCWtQGhVSEQ7CAhHtZUQFqWIuHrzR+9m3yFsJRs57wneKDE8SASaQKBF6qFmlBPT9/UGcFvPP3y640Dk990pSqbAKKkStlFjo0ZJlOQ2BOvuftTi3vkD3uQecz348cGHwkGzPKjgBHfT/57fO7t+Wv8rnCLIKQIGGR5BRgkyxcCbIsUUIw4YdIqAKVKcYosFr/59df7/f6/3SA/P57/BBgUFBdGoIKAgIMAaBVijAI8UYGCNDAwWMAjR5HZlEITNHzC/af895OuZdD//CSa4wQ06uIGCDsTSLAILI4wCYQSuQHgrUCAbBbVQwbGpoILeD/TWxVdbH/Dg4MPCwsDCQCAwEAg8CAQGDq98oJfJtDM5nqr5+QQ8MBn+3fT5l7awDuvzycUKQSxBvOABWiSYBUJbpNR0u/d3240cmaQ7k4+8ZxpU26yxZxGpJZQ87vjAeCF4R7BpHK3etPDERnL1zf6GpUgeGDcsOlO6zvnLRtNb42rSXsVd8rawbWg5SkjPu/5/Lr840yPn1xokzxxuX41SPS3xDQ/0t9utuH+bm3W3My2dctB6d9/2vbqpIOQeUT8G0PW0OTtWtD2VQzI9Tnnb/N7H511q172oEJmeCTPFFJ705ZcBIx4TvkYs7OJ66NOIc/8ULaOnVEGST0WDojvLhH1A/VSB3eZk/w4cCPOa5ItkeKlF5geRufms6n9mH14/vL4ChiSs7CYJ9hEiAzL9Bb3Uzjv805Z1PrshWL+oykNdT4deLPO/RxPjDkAzMfHg/2PCXJnkuSviwa8SZA5iyaBqkmowpfLWgff0miloY4OWiAYsn1D9b+HbM8TGx/XFTIZTLHTPkNW+iM1ET4qh2+1ORrwttM/Q6u+76ExmQfwPYO6cP64jZJglyI9OrAFZq4H/ZqU1KEuu/9oix2Cp5fTfDjP54ErBPJfa5m/FloQ1z8jeXTCeqWquTk/shEq8gvbvdzs5+BEF0if5tSLdrNGLCJngV/qosEy7vMPmGJTJ/dIL0M93SGsbfW8RhN0XUL6Gw/BHwHLCwk48h+1d1tPndMQiWJv8NBZMWc/uw/5wAqkQPS4rk5zlj0AayQDFcygmmvPajPNgsT4GeeNPYyRWUGHY9PbrUkbqKdn0Uza9toRAI/cZCPOKYN5SPIfAkmojg5x95Iw/DW3ZAHYfSoJSfCgckLV6ipyPNdaOvJFRvQwV5naSz6hyJG+3zn86NnvXA2V4wXRG4lgsK/Fr1BOr/31G5rF7b/de8KLKKReWvJolMrrDdMDRRZMufPHnr4R4OHkZSqG06nY66Qke5j1+P2F/qW5pGCfjr2rPCmTsbCCuVyh4aXI+/Cggi/a9U99k2CTycaazVxI1fnPvfmZSebdbRyWdd7+b7MzsLs96h0TjDhJK3ArNGE8xQtoWmE9dH7UY7bE+3sj9MJFuxY0mhq5nYZBxcBsTN1Uo05/HKmV9WHqPyXbuEKHO+zPi+OhtsP5JrHI8GGeUu31Oylwin4GUHjWmubPNI2NJj+pY5/QWFFTEfi/Za0GCCQUqa9GCFQJbGG4ZfYHLs9jCbAuzLc42nX3wCzaYooB7e03eZHJ5vr0DE8podOo34igDQP4AlgVloNmRztVWS8aTITg7Ti0pbySCs5P+SCtqdn1WpcdxXIaMrKdAhTI2vriGLN6fBTW1nnXqcdkn+2TnMxKb0rnPjwni4JmpGo1a23awqn+ZK9c0zPuyckYk+fyorrB6QEcRr2z4kmTlENAWSlSJWpBGm4Wm66xDyDRUTCDcu7TicG8t1mNFt9Jn5XOQIvbMYzU4IIANMabcqLl3uv7hNeP9k6GeUW49rMdbRl+ZqE0W1STw0fLaRB/fRMbZgc+xk4ALN13YmvM4V6eVAhDVIYusMprX1BogqXKQDd6JNtqR1dzIhuIz0kF/RK4fo1wQEAEf41kTEAGRfBLEwDH2Fyst9es98v6xR0Mw2MZ+tPJSeIVk0D7BYhSIASguNcMuNntlpn68UxiM5Ryj0p+hp03NWw5ySGEzb0fm2pJ7joHIarn1UcsJNzUovRcosbV4HEX1bilh/UwoCDYOG4eN8UYclWIBi3Oo+UQ7XXZK/R4n2D/c8GHilt7+MWDSpDrctulhzqmaMWrcyjUXpMakryFz9lVHqtIfXTlZPYzitUBFlbam0qOKiIrnL5EOufrezyoFKTXBFtrsmZdL1yVciwq7U4rlOBSwVKCgNuER9A8Y8yvPtDHr06N9Ss72ee1KZ4H6jSfrPk2Q5ewNCgsJ0Fb2E7RsxUl+tX1m3gonQTJEgITC8bTosmJPJv2X9tIALe+Wgcic/5bsAys5e701PCtY+s+IWOwWGWgTvezEkiVlIo5ST+vQVOihgK/V9SPxlqSnEA0N3Ga617+qm/Wo44sG+3Y9Kj/C+f+zCLynbb/uZ/++3irT8Y3Th1l04NtKLrnWM8mxaxdp+yXxZRZyMyNHuxmhXxi/xRdUUFG3AUefxSX3UZbi9sWETQiecYeSJq2sXQ93PGHSmEZ1JkVf4/24GAN+sVFTTv15H315+6EkLfGoTmDbQxAA+aMXj8qu2SBTe/JlkvMZTVlb8H96uVfAdpcgsG5VPs8BhTYCyLn20e6jz0nq0avsKryYNUWiz1BRANSffEbB0P309RgZV0HcF7mhcWKS82pRGxVGDMzZIcFw/LW3ZTVJj69CfACVElUiq/j1qwNHqFeOdDGG4f1KDEbECB5oZNO4qLvOxb043t+Witj9HYYkp2rVjiKyP45oyI4B1t17zds7TERQvQDRpOKB01zcfuHvtTxa3vX1adTzQTxStL6ifit7yvlATXKnetXYl5m7j1AaaT3WpaLdqR/2scgvfDYaqdcO3+Mm+eInwIZTUbbNuUN7eKEsOuG82++2Cfqj/pxl3FhAYAL80MehOVJlBV3xb9fQHzAW8jYXs5jwMAU/X23IVKT4Stzzx14BHnVGSb9+0wheHmlrhtRQz2K383DrN/HVedy+QEcj/6TICw6PSjvCNfPFc3Z9h4oSzx9LpZYeI9R5LsHwKW6TehAo0zn+vMr3O+Ihg9FTpdQLMcNvy0njMdxYloudysusBa5iKJBMvWV+ONuNF0Eja4Y+iY4NIaWaRt1w1uLFq4/YfzdLWrWEnjrKPMjksEmyt3uBLK6bRrogu2gECh6qguKeSWseJqUapS4YHoTiXkrGX9MvnXYuPY505BRJvTWpsb5bDDbMXMyUz/rM2a1pI4yeOODfLzjJyBIzOmLY5fM3vdTmy1fb9tJlzXerqK3tCccA7u34JzA3Vr8iph8RdztaZV5KVX3KT1PE9fS6R3QcMqXihHJvjzimL404D1BYc63qzYEtM6EIxel0sV8WILdqMAWAEdzNNrLHVY4M5+TbXRNeFBluT6iSWgnH+gGF3a2CSwSUIWPRt1FbFYaCzxlHreegBugCSxasmEUfRVhiIrgmCaOR2wtfHaF1omgB07clHkSSwhO2zdcFR/Dn9Zi2uIFGyrHN44UJumI8Pq/9Qaeef7mUgI5ugdKQ98ThL1ZbMdMue0bEpzk9/1ybhKAf8uzxO1xYCNNyFEUoj4FOymz1TwynidHRHwxRPMN1n8bEw0BheZZDe3o1jaA5QF9n76Np8yf7do7Ait1SznNeZOlgNGbo72d8xjWWXzL123FyjHnyZGktd/6rrC1/0fkKnLVfpPMX26vjAblX+vOzPtf97olppbUzcrkrfWv+lE4ccWDSUs5yEi2rXnvwrpJQSXxYyrs/6MHHeNYEcHb5nZucas7eiyOHoRzNG1Kmd/tRoeAzMw5R6v8TzCZGThUtv9me7/bgyZfP+uzPr15NDku/JYeWRT/k5EsseffP7tIxqNaxkL16zLx9T8XeSvyop0ilGb5SrjjyAGWb2IXsnYenlSBnGfcrEQJUbpSuFhexoBKFj9KeefYlkTB13MvDRcDaU7bOrfqt71sezJ3Xs8m/anLWaFnHLKze1Y7sCEgeb/Pio/CLPl1qC9y0p3H66/SdMT2Nm1vEXvHz7cy+EnMRBhYu1b4rbfi1p5QjkspsBeuq7JTPHpMgX94TmR50Z23utq2q40nF4vU4qGyizRLdjQ4WxZj8vHKc0o0rNtp4vSOBpxYUuCMUQlo3Km1YL92xNYiKlyl+l4ZRrsgbocbt0K7OH5+rHHhLLXin0E9pxn+Aju3VPHrsxvdLIpPVpbE26jygoTD9cCNml5Ha5LG2RniubjdNoqPEsES+aPQiDOqeXckWVv3iNCjf/282x8JDtOZMhAQqD2iwjdg6HVhTrvxfE1zqFVMM8c6uS9A/L0SQVqvmODsJ0/jKUCNqhMQ8psFo9cAsawjMfrDIgGqVAg1tpwnXd/PU2NPHcwRfm5r+qAPrQVFKvf4G9PNOInPCcSTpYOD4jS4uH9RiIIutIuWVJmRFjkmRPm65VUBcLJ0H7xvoa/KeiDAqZdORZRaHF6TdqEzAaeqXqCy+H3mwUehYRSZY4d/UtIq7azVwqfhPu61HPqUPZu5+DnC2X8UkZ4UOEnSd93h5tX8K90PpnIl0Va/dnKiIQRwBuXNzCib5p8TF70CWG2lrLNO5HpnWVtHce5YVY3ut68/CfEZUr+nSwUw8RmvsvkZxQYrNx5Jss2YNK4lZZQCVlulrKbOGPuMQk0O0ImgruewVGlD81R3BZd18XSIy6Borcl61rbGFMWckhxwjFzMX/OXjPOtr8FXpKK3pIqJM9IBYcPA5dWJv7i31QPhVtwyS8swx+pdCwT6hxNpOwyEvL9Q79J5tCckuFZEdWUgV3IBGLb309jloX/tvtc/VNeVd1XngkG1Zg6So1AlluyMpLr7pgDOvgAqS3rh2mSsZIvo+Dwxo0k/hWWPZxODeFuZF/EvrudLabM2OBg8C6I5jJNstTHgXHhZPrH3zEZFfE7k5AugJQy4jexs4J6BKGFkVOqfnbV6hYQ7JzWVusvTI0xBj+cXmO3DdFYkcv3yHpagsMwuR9rBvd9DLpt79Ov57srZoUGWhc6Ps0WhvITY7NtyLgy52JzPaTjvYsycNTc36r5qHbDW+ed9+XExiYnkqUEnZ7oUplPqC4l6ny0xL3YtKp5T01smw7STzqJzUMbyQ9C0ar0R2FKkypKbozbrMpv/ZSDo6ADF5aKWq9jLypedWYh4w06AGW9agsnpdky6pYjiasEEZk1RAVM6lJ3Ea047SI3jnQYhqyyE5VWKdJmKnS5Xd0/Zyp1RNdmJ7ht9HSV9jKuQzQRCB6nAvYt3AjIWfgfRkkeopw2LJH06C2QXFhVOzpGofvcJUshq7+SiR4w5s38AzpcYhtjpvNWpG74CcdYhRAs9lixCvQUrcA3IJj5ytWlvWs61lGpFavTRxX1GKQsuy4xVnzmEczfd109GDbGu7zy/4MuOrAFXvghaMuah0VIkzp8t2nklR6+qOX9ezylploNWrSKjU8BKzpFc0cDYVeLQgmy0TvAkT6uLdP25+JpbzDBUBjOWjtL6rqAHhfvTjlEKGNPXooErU+3X+u/YEpMMCL1C0Nb1eNKrSUYZXjO3HzhwuxZCX29ST45T7PhyAYl11OlS3YYEKQ/dyVXXlgUu88T82s5T3xjpKc7v6yAfCllpIl4rnoFhaduZHyrOhOPHeXbouHOtlq4JXxCPPlCLO04WYx1djoRtFLSAlDqnifZibFw0JY76OjekuWzN4jQOqOefTiLk0Vykq4g8UTly7/1C5sacch2VXuduh0rmAWufl3a7dZlB1txBKP4Zcmd4ddlWkcaxR+FyNbkX9V4FbkSUBk6hg8Iqq3wYQj7N4G4euCc+1WBCDUkyd8O2tFUR1D6htlR4D4+aBVGcIAAYTw/mDvlAuR8N1Ari+7Y4i66ur8A/ihyplw0luN8RAprl7HyADZFu1735kbM8ttd+3Rl+fhI4N45i27cKHtcgDmGg+BeK+DFQRsvzC5uney0WDVX2z2Cm8fHldqSuyC9iXzVfec2qUTbbIfb3l8w5C56LkTAhtTh7GkDtyK9I0BR5rzTl+0iQAiAc2tUnb1I6kDeRdtqsbpxYswRT7Nc+tYQR99phvDQ0IXHdrQ0S1NAp0hDYbbHobwm0ewhrrwxY3Re/WfjxxFdeNpfR6VymXYMSpFdNHtLMWq+5K16eqVV8zp7jGdu8s23UIhuPWRn/pL6PL4f8NBJN9PJsPXJbmoklC/P0InMyhYlpYd2/ppW70Aq4X2B1m3la9spAH1g1OznFpTi74BG50PhtFwq74sgStnQtem/bIGE6PSDkc3tdFJuVaT9GEo+QdKSVlxHNCR+sTkV2hO+lbW6C8eVv8q0rfPf/fzDR3tp+erT0mWZc3MH3F9OIArSnhG3/rg+J1IgDkwQt2MFkLfXGMvgu21JML90wxL7/muF9F4imvP1lGlhHCvGh6KMskDNE7ZDwILBrC0lYe7ciYeun8asqcUQVjZFXFRTJXa/SfEMOLQSLp80yUxcZjnndfZLmPVdKY4WyXPaKAFQPySduUAP/J2w/EtPtj98vsCT/tmJa2FpTv6aE5v9QtWVPOjxSbJV/cY3kX8gfwkXLlY6EFtaLRrdUz1+ZPMOg94QTG7AGe5Rc+nLOo50OX6zcaq2I8H3PA5j2A8ASTBgW/fmYddbGmTpeqruv+r/XglJe5SZ0QzVyaWLD61zvg0CDBBL4HjKxL9PREbv0bSZyPE1YUgq3cCJ+idIBHLphspwbuf95Lv4PB8+oXEuPaqt1bcDZfk5YSYXzlijMG02xryCZkGhSMM994k/uViDVZqKw1HQjqETjUbAMKekO23Fg8wF1r7wuSfFnHQF+Lwz+/1QknV3J15GGA3iwPeleSmUnLzCzD7936Vo/v729anvXt+eqrP26OZ4oWWNJaRpIkRWOjfIAKR++lSk9nzkVfzu7n/xRHnjrkiQnGxDhvNFHc88Vy90Zrm/fDXGwk1LDd5QJzOQxpaVQW83YN+KElXWLWiI5cReWsKYXHln3FB/WFV8stF1x3cvL5Qb+9tzsS9Dr8IF0bhvHQWITbZvzs8TusFOCwSddIVnW4OluXjCzTC5rqZ9VkzZM8kv2LQrpkoYbExJe/vnrf2Hl4/qRuM3x5VifV025PILmYkBVSTavg7iKxpC11X4lLUDBf2NnrDhgFrGuRRUm9gtuwDEnQaOC4s1kMx7cYx+Bu5qaXhpSaa1uDfBW6diCQwVNuQPePcHP3Wsy7N6dlXPS1+VEP+73eXn08S+Maf2KUq9etK1r/pvRfrHjUmSxYnl2Wt5Fz0HtQER4hv9ff1I+Hqxq8XdPLYJZN0n1/mJoDiYBmDzzjmjHK2/Y143W3Fu9TRU3HHzN1ZdImhWXcuWNEtqtMRVpJblCDhmbxRHBkA8qfnA8pm0LPSd/yg7bYM5i8gribm5fYpU+sg/3p6c4yyq4DtRzWtBmfcV96A0N+cKOpIkSamIofMJZLUlgGWttaKMq097X5gUgkwMla07ydJuBkRNQ+rbAVmxqOCsJ5YQv0+W0SPuKSP1b5wdcENfVZc+44Q/Rf6W6sSL+LCkQ2WP2pbJCoVucjzkEXYodCuI8JYwResh9NzuPgqiR5aLgivX6ZH3zNRDRHraQxvAWcE2oedkU3yedJNWxDCGVf/tMZev76pvvcSX6oowV9MdZeKnqcHxSxC/gZ1IvwTTwFOK4ShIwd5Jag2PDrD5+Lllof8hQPVsOsVvfBqoeXn1RAKVxKZ9picDQ6ZpaUt0rhcBNvXSI0NC1TDGotyRMxjfpUiboMqxBv1HVl7E/R+c7yGsL0tuMUii/zuhq83X8igEQhuuaJhuLq6yVvF4JuYKw8x0edrZNZTw97D5R3sLhqv3iCR8EJHJvp0vGGYohFOW0p3TxW9JuIx1fSIeW4RcZoDcrupaj/oOe2HaL2oNEI+TVypYntuWY0Cuy9NqwNEsfgbYq5/DDM8vZ+N0oZaoqapI16XJXbIkVeX75GOWOgV6iDAzf7Gp10aHVYCzJuu6z6NyTFrHyUU9+bPVZ189JWNiRo1Sdas6B1CeKz3Dl9B6kRhFld4vX3eRrDJqZGKZoxrAVLjqi7kNbd38P6Mh4jPdci7HWRaITWGTY1OUrRnHFjuApNNL7XyIf8k/yJ1HixJ3159gOk2d/JGqHuJWAX4PF62i5S3+ZlXd0rE/E6awcrymhVIscuTVCILwlQt014djgxoo95Alvm8zG4NyZcmXylWDIk3XZlfknjMG56+aF/L1YIPjnmvaGW5wrESakUJpl720hoF6SbCySfeUnZsyMdTsq9e03K3r0C5ooDH8dP2zCRniRMjMBGHp02Sps+1mqjglZ4ojUK4smoWRvaaiAlZKuMH8AXBr4IOmucUbWkAmvqDzW73y7gCwMPJilNzLA921HFqJ9irjyKL0LLW1nZiAvkE/T979STeZMAt6i4uMhOtODdirJh9cF5+m4sby4frGG2Ia5B1mewqHGyt2sJLPtK4xMJ23QfVT4526MbrhrKMxMezx9xteRf3ziPHI2Y7kjXY7KffQU83kQ7CVufuUuOVvl5mQd0tyS/NctQyJfMQXZLllt4gHa00EZCn70c+uvsLSlWlrytV1bjpjNPSHAunYEV/YD5/7WYTlWeueMXg56U0Gpg/KzgjLfzMrFs9wFJrAoy7g1D54l7t3rTUTIQkY7RR9YPjQ2FIGoDl21AnPpDQ5BMWAmCH6u83rsCOWD5+nqgRv83+TWxpnPy+7EVkUNm8anL7eokP/MM/YERGr3GSfbG0H9pCYYje+DUmGd+XDijgiffZ1Ouwgp7Ml9HSeM74bLMErOqygZ0VhLq2TJ7dX9DGo7vspySmWne/I9Krtpo4g3Z8QjdgAu9aqrC6VCZBWuq3pfsEaupF1V6LLhAw2r+jtEeBuoPL650ZfQ79xKO7l+W+t682dxxFvCuhDbcW6bgRtkHXi7D4PYITpvbz/Z5Nsr+xdlORSe7cQpltBg1JFFnkvBILeLlRtT3OdemPpm7J9bkj3awCHEST+X/myhfoeAM0QwkEftzDutamCMbUMb6EBmgnjCpY8y3xBG+UptsWAFQA8naA3XfH+N9YoRp+K3CPkY8LhFgjyehyWO1wrz13Hik1W6rJc1Jbcd+t+lXEy3GcgmVg9Se+cXyQiZi08v0qynYp05928QV49LjVDXD/5AevzHoZg5jiCjDmFD68Zm/Zjsb601DV9ofV6G1mx0ErIP7Cv+SrJkkSb+NKt832CknQaxH5KojT7xd+BPk2eIoLFsnUyRob5U24gZ4G3DPZKEqRLhYv7BTGeQwdP2GzwjZPKzZj4AcHrBkAzRer3QVLPNtyDXnsAQ8nPJ72YTTkdrXu8F+pVra01lPJd5ayZ2mKLXVO811pZ6EoF7vxtyk04mNyBrr7cV4QO/MljrXFAlsfYsNAjpgoutHGwusMVBOPY3jSSqrcq8z3/I/kzaUs7xzuuLgSxVydJ09JX3DViXfssrjpta+xbU9X0IY2e3njGAz7LmihM78wK0QjWs/3hoe04qu/RKERCvAdOqBImbbQ1tLNrnYuj4kExgwoeTDQEfIpNdfQ8Revh/egeW20EdrFG9opsArgiaULlEwmI9OmN0jP2BkeYZV3Tw0G7YvFe1E2TB3vZgHY9qmVo/UxTbPaQy/157SmXmk1ihnXQBrdmLw3pn1mbBzkGYfeCpuX2AXemvTODlgrv+1btlObz2dYJfTRbKEosPFlRpaL3E3uP+vkjNzKVPbieuFMOAaFQF112v4mUE7Gk+G/V/WB6QgG6o6W4Bxy/B2/KpYZmCbSOhycnsJNw/HmFqmLHI+c5/U1NpbywepSdXeQondm1LIq6voHoXQhL7Jzcn2YL3dxg4yG0aOmpKwh8DKflJw7sieJJ1vF6E2TLGUpEpiAsXybgpCkhp7jbqHELoR3pK4n7iDKovtv1eCdktP8JTTxMRV0TmmM53HsBF36TmvWZsMsF0BuF5BiwRt6IlWFbRYEE+kzsSsKhcT68QoCJgS8zC05JbeH4wQkrimbA9IrXFgOQk1OQE4uxsgJsG+0jyD1nUxfT+6QxALeMXot2PMcttzcRl7Wi3YSCrDrL8enN8KPpk+u3PqRm36kKTSXvivtI/7qVSh0rc18O6HclF+/mqrCy5PFxr5z0qB8ZbrcNEYcpmCZXlOBG2dp0P6s8p314mjvQ37D2FDx7CbhROS+H20/W4EcIC7EttsbKMbFALRGGLpVJvcYMpEzztaoErN21RZQsS3W88KOhPYrt3ycB/bX7Eh3gb1EdSzdVtJiTjr5Wd3REN/kN9Or6q+n46i8P9KfoUl8M1jbHUk8M1ca8HOp/Nuz6gkdkllTkrBemWnE8t8rmC6H7oVAxlw9mb1GNfv6H71o9hFxfHZsBdFV9sit8qVLMb0l78WBHTNo3vzSEdpVO8xOjlmJ9+cBT1Z/cxS8eBsdswEArGwYNOWwiNkawf+N0OmKHl6NfH9rbmoDGck5vIpxKfIgPxdoNGJ+cRp1ctp6A9n/C7pTTVtuBHkFWxz3bZ8BP01zusZDT37KzNGdiFz/CstKvY9Bh/5FkfA9PTZ4LKaft6JvgilvE5uuz2vjifGtJFlBKjiNYl0NcwuxQT0nsUB3XgrnYP3zJRdA6nFv3egCu+HPJm+bY5jw31JKOokp+eQrD9KMr9O2tP9kp0l1IZPGLCUBErsDizvBhaSYE8XTKZZdb+gYUmdoYwUBhr8DAuazPN3tNL6BS0jaINPtA5BiwXZ0xmT7SS1xo8qspyEmpwAnN0NLKbDC1UvNnmf2kXKMbx/fry8SbtADOB/JGTOfoSmNrQLMUapSXimQ8a3tYS8HWLN3YQm4X5kZLJFTM1Bu0BWsvp0yI72MXTYDoIo2OgjIft3HdbZkYWkZIeMDBYa/Kw+HVLaZ6tGFTba10YdLgdm/iSX+SMg+8E2bfdJvXFaz4bgSgn9oOymJefynDKXbBuo7hZYLKn2PM7IAGjwAwQNwMPcMs9Ww1AyC9bHgk+ySMtjoSqTBetnZevYOWYDDDuygzBui7isaz9kV8T+dkoIXFeCZ/xOKHqpD1Ls6JwKgQE8w1dB37wTZJ9xCONQzCbF7JJaZN9IS4GpDpQm+myyNMw6RQtF5d8YeWx1G4+6LptY3uV7z5tQqbW1qXzV92dLqkVvOjSqgDnwEC/xJFOVrJFZGBw5H5+nPzi+JY96HzKO0e096Npd5B1jRwl8be+/i6EYNVlk7VlgDgLyPstpgulB2t/PP84uDhbLmXoLpP6ELCh5BpBOhk/qFc3kVjawyKaHJS8GjpIk9QG6WULTTD+3OL0tOCIYkEgrAMu3TNolJrRqVEGtK7+LES7h4ZqPwMPCzl4i5361NOo2Z6GygSZytzkK5dq75gOEBhYHg0uVCbSteLaroZ+OsJcz17wzyNIV9J5IcufnUIUpk4lfGE6t/+IG23PMIzdyTVJVQ7Xdcd0/1tKrMXo8Xr4J1IpJTOC7k7benVh9NPSjjqOa3Ptqnm5Aex9XjOX7cPbS3GtimmKbsvX8I7aGkEXDgb8HoTi7vTXy1+dH+6FM/ksAK5fXhLWcr18WefN5HzQfgBwbYByplvv5qGdM1I70AjE/ygbl3KMzyGYZ0WYMlnZlpppcL2ffTDH8sjHkCbG4gZqMSPGk/bphoGVSNB8kmydQ3DX63CE4A0sXoHcbAgcb5XxU248Gs7cc9HHWoD01XrITCMHSYCgzFSLxfkN6cr612uCgcyiKCMR73BvqcbKB2h8FXDigPcC9YaD+rYC/+WBDyMzgMRccs4ZDZwVefBAtpzn+z/5LIVeriE5lVbQ/l9v5GtB3F1K6ed7gRv+4SIWMEW2uSy4qOtDfFlS/cF6/WDeA7kuxnrKm6MM/7Y1VeqzYTr4bIjtaSSDe9WDo5ml5SXfybMOkQWAmXQX63ezu48MipDIg7mvjv2bF3KuRV6OjDj6fPHRjV1qVXLpXxJ7LrX8dXHV9dVAs5/6PpFSvrA8NR70Xxkfmz7fBmNcCXugQvRp3GLSLHxPcdaoGZvxuOQ8HVQcPAtxxFi3Q5LhogZ/qDeYrOniwtaGtT2C/9CEqdh9GEnEqbhr2c3h6iEx+E0cfwTUVq7CryNx5Fc5aYfdz9qPj1N7CSya7dXoD6I7ioUbYTCZUpenp1cQEll049j7odeqJ1K1T9OmC3q9yhI7QwDZu/ulZrHj1tdMzFNVx40+kI3n12KfOta/rsvv9SUplRee/wK1YmgeAQc3OM1PYHbCOc+jsO2e4+I4D4z/hhfa5d26EG1jUgxOA99bstP6Vlb0CpChJurSOZ/RTv8SQOluVhErRHgQuthqKLaz3j7ELQBz2kepCH5Jk1YdNwdW/YYyudyV/MbDrw6U1LWzTFLVHv3ygfRzafIevOJQtmSHcfoa8hOigJfJEy1zfvGHFef9tNq9n0/77/HGp22zBew27poo8HbQGFQRJEwERdJRufYlv5LO5hfJ7SduokcjHLBf3Ht9PKMLIHq4YsteiUrUJJ+UGGtUe5JIAqGu7FkazFHFf6fTSxqmVKb8U07F6jgqrMDZnJHUNf2nfvD15O17SReuaZD+uR7Yd+CGsdxGdF1b5FcSl2uMJpE7upyJSfJ9ZML3APLht5xJ//PIIcrKpj4wpF8EZtHHW3ujLpTpCvQV7TdOgfub9ROpgmiXzFxjrYNMRssnEkRYoQY451tVhdjfmncuJgjJOfELONffLUzQrKUdOJIMzc8DvSChlMZs/1A851gGBxXw8FZ9K5Y0na0Is6CPhmH+wq7+lr6gjzXTbyFJipqJyIXOXj+dPWEZupl88DEF5xsxU8GYsGUUJP16LCmAqAB89b09bCe6r2TUbr80JQ0KQz5tPkoriHZkSe+rwOTx721Iy8Gp9RPwskDI4rQcy6kyUdMPR4z2Oj3tiw/YKM9wz7pGxBn/Z0DHQIFK009v3e0Fm6OneA232204HvBOu7Y55aBhSQ1L1PBNuQiAoLGWi9hcd/+X0cqMWhoyYYatueersaUzKypn+y1yNMl4AGlbCVlfdcSz9f7hnRVnz4izrrzlmz3cpK4SYTMP50pGXj52iyxS6gSuhxyeS8Waf0A7e4wpy9Wc0kwVdaR47lesMs5pu/YLawDYZkrY+69uJKon+2aWZHxpeqjXSOCB8bsjiofT5seL21o0j6usSn0p9riZ6nPGHOsoLzJCE528oloL/EaHBJa3Xhl/v/3fbN6fQF5ROZaN6VIggxdXbNfrqHp2YFseEn2dU/7cL/NOk/B/gFm8gb1OUQMnZpUGgUd8XUWmwpUY94JQ8qJQH+rIMN4tBL6lzoAYaA3Mp5KWbA21f/mlDxdE0yOZoQ9h76y3rqckrx31vnvTum9WEebNDajnYfs9Ey3J18wNSIdWF111f+oGkRyKnUCs1XWHeasRT6bVxarmiDTWzQHP9KuSL4I/UTb6nawpK337S1iRvRj5EX7jIiVu3ny1hyaKsxfC+na7SQm3OTfAYt93kArfSHkIqiwYLXWokmROOHkxYodzd5XGfPBb6YbTXGoYhP3lb8BzZQF8Vonb9emo7tXsKFSufOzkiV2yheJVbnnzDNylzPBy2+e1JHxpdR1hQPa5A0mvKXWla2zpEl2g806CpC2sJsm3xQuK0kqdJf7ODkDpEALU8v52q++Um+4GrlkeLoqLzwdfZGlWMZMjyyFoDsNRdcT5n9zFXkciyDGrIY54T4nx/9hp7T1uzrHqd8b/Z32qBItp4cKs8FKR8l+lGzucE7ZbUSQX9P5EZ/kALPuvRNLyEokUFvRqvU3hQ73DoaLc5n70GpXQmWmlzGfrw1tGiaQRwsYcb2+8IHyRStQXJduPmGw+hAZ2SGEULJ1gtf+i046u6qvhxN5EDxuNYsjF7QC1mk4INqOlnE2Qn8tN+L+1b+eQJ73zeZDaZUoo7GaOZjmZP4llv+arRCYPoMrq8zmhjTX9fsWmMwkqu0Ey1c7HKycU6HPiAUquuneaJe+2XSk2igANJG/p+utwOly+aTXBYIIxCvztX1498wYyAlUcINGdUPBaGejn/NvN3IzFsyvzK1ykPzcn/lubqN5UrDU0jQL3MBDCsBV6O4dS70aQ5aaQpyzkAVJGXXkGjmJO8NZ1zxwdpXa5U7j2nc4seEUZ1eH1ZgONhtKYVv4bMI9Bw1fs3y9UovMm3Rb4/eMsPhdGw0kIsTPLu91ub781VisKr+mvDkZZT6VIF3mcHtJqC1jtfvGIBaenMLsC4H8FLXsRRvxfVjvmoCI8ihK5P1BVp7u56ig0qTDcwxb/OC6V6Dm/KnN0hHxYOPGcD2I05/ZLviJQOAkiC0z8GgwraAcKpXIS4a2+In3xE/hD2gGDzdJbQopSfCjbfHs+K+l25YqAZoLllKtAhJONFBj6OCDTLfecYcdEkmw4hS5v4b6i/5p0kUy0gSbOtg1s//YqwfTblOfbAtpOF27jWXgFX9exa9AM8pxJtKHuGB4n4CBn/PoEWdQufTVlqXONVUrt3qGOq8iSo6eJxrOcTChWbxpNCfrWModajt79qGV1Bb7qwTlEL1hnkI3InH7Dbef98MNidiHBssPRJG2hQ+61eVrOT54CNAeARZDbPSBrddWVNiial7+QpaNwraY3sQSgOTGwIp5pY6x4aGQBM+fj0R2sniqbMybLWzDkxZow4a3yyWYk3w8kxO6q76ghtwq8lSec6jEbv/iaGHcu8cCLd3J3mbYzOwXdP77Yq/JEIz/lhkega4t7P6FZYujxG3MyalLaZf9EfT/Oo3N5fG0WYQO/HKdZ4jVev60a632JZ3PdyFTk0RTmf3XmsxIn66lOm1DsmHRd4tT28GDj1i9esJM50nEcXLdbJA8hv8ym3t5bmFPYXSfS8ZnDwklYZlqHOOYiM6jSiFWCzOYo3pIAWaCBNoVDjs7VWFHYZUdH/3KDf1plQ1RWLoNL+RxrAayRVWmjTB9NZeqSQPw2e6nhpNTKkaiLNmDy0k0eyb0O/3KM1nO2K3C/my20qhbg6iFFRPEVtr6mOEtRcHrDkRw3yM1Tx7OuaIeV3oohTbM0Q1DoPrFf+GLTfnACDqsXd9O4+KhI9KP9+WX+dzRVsx2CrdgUhcuP1Fc08AJhG+Yil+EH8RJiCkrDCkNMoVOa/Bue9V53wpHZrnMyUtDW9yC/2XMNuWBlKdq2/WS9+b2mb+eegFLSSS37H0tjACyYtrQoJ5zybG2/SWaeNVXq+zXVtRX8aXZcaqOyMsJR0+eSmy/qGextMST6SLrokyuq3SaiTH9te+OkepcPqD0avM2HTJGY6AXNQSislLzLPvZb+ONBgQjMtPZgrP9yhcmAEWQlcJvXidjCkhcj9gy3dCQPtxgvnbJrJ+k35kigVZJ2Mh0KzBXj9+TcnV9efvzdX35UrhQBuPHEd83DtibkY+N4QNJvvlOvZuKqZf65kf7x4TuksHZ1sV/GEqbgNGjbwRtMOvhc89/igkSttEGk18OkrlGPMIkC5QqMyKWn/SWI4sqwOkEIhSgeup4y5cVXaoJH6jU2jl55zdi/4Ocfphow78cHWJYTOulHdrtl5gV6MZB1U1Um4PZbs31YxbPu8YdY4zWO4lxZ1dKooyqHgiSXUbAXekqixSDW9RdHjvofjfXZKGUa1aYkdDmIgW9imeIMq+reABIwq4sXYyxtr4Z9qLe44oxq/e9zThRsj/ojZWAbHW+j1cu199UgQwcb8+/EuKCYE1BU5+fSneZc/fGKdi1Ru9J0T3cgN001enFCpRBTpmsXmmqrWhutCw8KaRvTNmld5Xa+/rx03frzNu54dIA1k07mMQ9zzxdQdblLQEIqPaWvHtY9395fGNfrShbr7f50vq5Qkelf2owO2caZlOcO3Er+dKD46KeOzv5GS9vW03Unl0yKKYqftEuqbSoKl7ESPxyNCTg1Io8iW9rDeB8eIMHDTEXsbTc+apM88T2iFus320f2l4dYM+tmeMhaofWPpTg6ucTP7wt5Nm4/2TXcbNpRhLByjasYhKaXk3Ce9YVdK9EfcD/YfHNIjXiEHu7cct9MieeLhQPjvXGzsOrvsqe3fhU9F60p4uSt7lA85KAbLzNQknvpU6d19zvdfLfjF0IZ5gJxp7qPylgRO231JbQHmjXH4uXF8gtiK6X2urzTrfIksjG9JXeppJtsr0DDeo9vtvRTbP177qM9qS/O966c714ZvQQnlwTaF9328TcdNX07x9z/awUYC8XBK2Lqm9O3kRiHHGjBIW9jgVBrqLDd0nMpj37OCR8WcfqIK7q2wuQU7F8g9f/Ee4gv/tU+9XsIqlSdwn5FU44utaGKwRs1r3ZTlTYXafnwcXbSIuwomrhZSEd9u10rWKJrKTbnoVKhUpYTvaj016zEJXn0ngdA4IjmN4lJB0JbxgmKPkO1egKe0ZtFBKM4QkDiaynmM69gd3AivSGD7lFQX1I4B4O13gVT0OOhuOcw82EXF0i4KBlQvz3OEtTGwGZKej4gW3RDJwQU+KGJ9jIXw6GXNG0p6gIn9eCH4WUVfA5A+2puDFkcMv3gGETH6kMhjHUVDWOUZNIbHBvDvwlWkwK2RJOMtHpuVyWbic5Pqm05kHbZN82jL1dHjq5ljcPKfFLcNZfGNjuGznPrvD4atSOpG/s7SVGh3R0HUFL7N7/NNGr4rbFyF1CtoSB17j9LTA8eyhxWYIENSlfRO5y4cGthwQWB5FdXRYH7YSwMvj9VWElwrgz9uiSxaJ+8TLAGZKo5ybCrjImmRFaDOFR5opwaAE0GdrYcMKw0ZVTk7QMaD2lWBqySgEgqpy+PBiUXc539No+kKbsHvQ2cD3q91S9gNsPk3b/2TBpV/bOyF4k3u3GK2taQSiJUhJ+lHhuFiDxmPtHQqVoyxahk3RRurUJPWgZW8qaouAWJj0FxxT4YJJIx1xKy0Y2X+iZmq1a/UG1/lTcKiHosU5g0NR2kecmlrExMdtkVcTDvSTbl+cc8dESdVrii0mjuvh/s2Ox7qySG42zZw+s3fD0yxBsAiWaC1wNYrtH4A56jTTYWVZqtXWfqScQSS1pQ6rjXj47NfEsJGAwQwAXZfBlBaHUVDQEqPT4H85RPR5oOOUNgXgZ8XykqB3X0uYqJk4CaJFQeIggGA93JUw6uiIkliZnV/78AvcktkMOKQITu5ta2s1LhuPbvs/f7HT74/BNUTpYlTTyhU/jLtCfZ9pkyYE6OfLyKLJDMWSHFyQGUTBWERBmAkHdAFfHNfP7EFySvRzCRQnFUuq+8djJ1CVoatembJ/isxvKZG8fohkPwaF50ymJYHKnyd4BoOQT8giWLOFnC1n8uoI6UJzunJexaVzpbumkmGIpiKtGyCeSkAOB7c6a1nIyLxmx4Ao9CAh/aAQ7b6MyQsMtfGOExeZZvLHUnf0UkWFmzOG1jljSYJn8qoZsSdptTSoPvV1N/cs7NidAQCDQal0gQQ/TAEb2B1utGcKAG7f5ktjfzwXlsZ8MVNoCFGko+d5P3GTxxBZgpv9UKWKbvEWtfYc/eSwnX5ioHZNXRZUg4L3ZT30wco6oFqsH1fPb+nWGoZCWfAf54xhsh6n8b5fVMBYqVCmwui3KxJNFI8odUxSWCkXL0mW3K1PEIM7mdxadQ3u+vmuu8wnj/A53XRv9lH80VmQc7p+TH1f39RF47KWUB4qnWU/qWrD9r4Kw0ioFItrxqPWOIsvbD66Vu2ChKb4DJVwL9jqhG3USa9uO304mlt4FN0HXkKruR8ZZk0/xESW2+W+f1w5XlTmn853Zu40TCUaF67mD/UGqtrr6HTC5uuZWJtj/35FRHjwQ48xioJ0r8DrTsc19KV1rPw0DKBixX/A4+45234wcOvpB4n93Wd0coAYLBJKfR9jH//lK5bmb4PLn1Af9FwPcOTZOpGYs3tJP94y9vMUgITcuT9fdq+cPJquFV+RSgVUl+R/ibZVKnu8TuNLzNG2bL1aOoS0J8ywYKqstEb6YBumceU4yvLEWR74YywraaG3f2ZhMw1c6bPG/hWrp3Ke1I4jG1k3UNRET7CRfxUuUtuYhXpCpiLsWYjEccIELALAP6Xp3B78Dt91qWINtbTH/9Lpefg5aAt0XaIJfw93x2HbA2MMGYmehKKmWB7n85I3A3CuthE8unbS8h8mSlcZ7/RQM5dnU0ITZhRFEO+RbiGzIyIahla6/QaxIZhocnT377A7d21nHhVrcoCpNtLioWNnNpryHwW2K5Jl+GP15GYp6VzxMl53flT3jFrMm9YtNFOAPAITKEKPlS8Rj/6NFuUlUa2yKKXvqEEFG9RhUm7nGQ3LzABKekbaucg1cQAXzUHZNssTQigeZEWDWqSwNuVQ/IEjbO5odJEpTvitbMrZ038CNJfUxb0UMuG7VgcVprjVLR1W06Ot9KL132k/z8i++v62rgbXj1e5CVkmNg01uTx4UOLz/6bNgJMWOPoi5fByOepqc34nVv29NEEOf92nu30heMH927aQsv/8cJjnpKqNzTeUGbB3WaUvlGI1/koPyWHpbT+z+PPDkAuPbCRmKf8y/GtHf3PmStmHuSNzUGOMaMnLIn1NHYapJRKKkM7+3S6meDufAFBX8BPLS3LwPjrju3popY/d2GGFEWToMlc4tUjRH7+QKndACF40SjZqwTPkGpZh89CDxQk1BUcGUeAEe2mCv2uvyI6NGNOyERe4W0yodNyHMrhhwg/EQMuiD0l+b9tUUtq/LSE8z+d780cdKwwb5JLbJ8P4awW78HBdQeAwBBZxaFLjjSmzWM//SPfnMSUGw3YxuEtlFoV0bHpiqgPH2tdsH4j4g1GlpftIPAwbFqtFW3u46HtsUF5YmiQ1yHx0N9Ppypj4XyA+FM7pICIqxzr4yWGQa4NYQd+IcNVt6J3q5a88RMJV7ZJu23SnPpX1BXpS1lG22yQBJPLrA49Qc6ktX78FgL0zfnyhUBrA61A3DOYuc44RSfajyN4YER4ZtbUbOfVz3/AFoVxV6/9Xa0QcZRt9WqlXykMu5kirOjaV2KZAUPmDQ2jzqBNZeMVsxpC8gG/jFIxO+frNi1oqLURx7TkslQqVkfpB/C4u/HiMWALHR+WzfmwcaUltOx4zYNqPOivINMvtEvwVBr1iXDiuWtSvu0WXfWCXUrMbLNCro2ebhKiFtfisjDZJ7kZRHBG25xKfQk+I4xUsXniHwpaZVkQbR90dJxO+ewahW31Pe8L15sOnkd62BwKIaWfj3W4h109daZRqycBvWd0KHrv8HhSOnNlYNw1J2VzEj96P6wrzgHorEawP1DjLNSCC661L/xXPOzH+L7q+zMoGByTKdV+MWXai59vOSCYMOjTskTKpCkrkpSSoKeHjWUQtd2fkJ3kEBNKOoQDkKHmBXxfn5NMndONF8BRsqW0G2THK6zrx67U/yvGVh9hEN18D4/wo9RUG40eTwPMxsisv5JXom/2docN0h/sST0uAe+aBrC1OQoEJ4KFH0oY6nULOPlxBaDFBbNJyro9i2Zo7mlCUdR6djebTpHRKG/9VjutrUiGMFiSZ5NSU+uLDHcGGWURaMyQFSxVp5Dp3Fs8P3PLjVK/w3jY/g66R8tHzT1LIrF0uR5ALFYeNFlnnoMOxwOFV+crRqqyiI0BOsyphteiVI2RqsK0LEx+Pot1PGqYADpOWRbg5wB0bWE1Eox24YxZyfDIuJ+7FUA+YQIUxZKGsMpAKHIopktOj9zjhilzBqZPFn3LfEK6w8bIwmbDSmiIhJslAb8m0uptn561Ncuxu1fkHqDHLnXIeSMSHmVJ6UwchWID8QqRZDVFIUCmcqAF7ZVjPuN2gguU0Y9TEfWwch2rG2vjqy8ZNIltq/4qVqGWzdil36nOfMDl+R3esg3yy9XAgN19q9oXOcEf9eN8B/rRj7WCWtpduWaIUpufaYu+TbGGsnx6EoZTTz8HWPZqfJD+p7KyGfFRSzKw+dFN+MNS/PgMm+bMtleiLZtFSQXVNlOKQLhQyCY9NJRDBD+huJ8aIN1xRfBrEGjYvvB0+RAkqVLCkzCnZ+W7Ookrt/c3xWu9GIPLcWhLE53E8RgnLPmHyvw7Gf81nEL5WpwoxfFL1DPgND0dsWN9B8OQIcJQ/uHh0s7u85h2NKgkRRdOe1mHe+KZC8UAyZW2uhH5K9RjY9M1u2H5aantJWVwKZzf+f6LQZO3ONVY4Rp+IyGZ0Om2tECVcO1BfLEYU1FgR4J5GLdgsQ6AECi3GsF1+RdzhdflkfECgA+lLgKLzWO6otNDrb+o/aqFXGqPRPd7t7IzeGt6l6gm9+ezqkhUnTkGXTriocY9NDGymE87ISY4DfBJk06+KOR+S7qJXupmMKAuB1kyzESh8SAejkwgfq7G4e2LGl2VaPbTD9368qFEGPOWv7XeZNuvQZCK7g0LK1nABVd6cSS4750n33mPhL59xGJznhdk51RhJGswlCrEH7bVoBVtflQduPTEQlbN5QHoABCzPuXO8uGNzA0Ap0Ej6WQLf3cHk3pe55lBN/GulLB5QcUgjsiNbmA3deT4fJsoXZL7tgVpUw0MSoJvhJ6nvHnt7eZDzs0Mg2YKlcWOFU5E4T61oZVmxkrCbF6iublgQpMXqohOll7S2We38ZmHis9OxuaFQzF6xqBcK76/zQz1gUjq9xuvMCoe4x4VB7pGdaMaoGlM6b/KO+FJo7jRbtOZvpok5Pr3DnVBKpUYUM8yJmx7/AQ/OmKG1pwxOZj4SvNA06++6BT0W420K2nVlck12r7C2n9aFw9QX123AmZDY85FBDmhrGaYO+Z/I3tfLqOThokLjiElzx7iKEjuwXsdRbKxo8vANkVnpup9iLFYW6UKwwhs6qoahZGCLas/yNbVuFYx6ZIY5C1XS0MwNt0AY9Wp1qjKMTfo0gcGrgdxI5CsZ2+gAzfKQpncI41RPFDgPim0ZSFDS/OrbAiTU6rIuIaf6qwvvN8GZLx9928mo8yycEVdd2McMTk2/JjB61GDpupcAMMAkztS1S3uQXzhDXz67sModD+e7V2ZKITXj8S+anlRzkF6Y3376SJH5byYvhWLkPz0OdwVuLO9wysex8ae3WLbHGVAXABxNRgp77IS96LDIEUpsBRd40saAtnnneZTAcq8UloygyNgDrZPChcLzD1SZuLyKd/QLX/98skZyLikPVrlitVOmOuYKTRes/y1rWSkFH34XbmSawYYQKFs3aD+OvD1C2k7mGkF5tDaA1RpWy/s6ed6ng/dnCFT+cZWPaFVeoegt6PR+MZ+xGKt9XmyqUqYg8eVRZ2oImB2OWbE46AgSrN3y/M0fSJvq8aXaRB6e2A+dcV36Mm4phVXWLrySgcilRuyfpbx9MeLBUX/6CenomFDJai8V8wajvigJOgbpVWSvHndJODdI37jUY/rdieHq5yYOOnwKg34dpgSwmcrfUF8V0miZDbcxUKAOCDjVD6E7w6VO7xCJ1Li8kxd/qRxCbitgPc356IA2qxlXC5KNarkslrzVV39ftBW+iGovdBF3dLgSTSGShJbY3CXw3gfoM3FpZp0JzX46ltE7gTJHPHshS4ySp2E9rbwmooGj4IwF3VPQ2IguKPrUFh/pDNmFR0jwfek9LoLF87TGdEypDNA2bJ9w84JIKZA8HA7HdmmRHnWymtO/rnebFPhZMe5lKFMp1Lp2ZQcw0RznzSw51PjbtUeuPI/abpQVGW56KSiv2NCz5JeYQiDm5HdUepQJJIMhKWTN1xfi1KVV6p2vVWt1O/A2JGI0hE+SPmpmqAMZNOEZ8QoprXZgExjLhlb1NcCd1TRWAj3m64dmyxplyvfuJeRG4xr/GwNjA7N5O0bbP2jcKisHiPgtUKL9dbdb79XVvthv7B8T+mbW9mPNddFLxkfzS/U7PEOX8DLzdZOYipY3d9kyj1ToHBrBe+BEMbn+ohRyMo8pyhovOsHW/8opMAmeiP/Ns3Vr9M889mt9DfMFU6ywCa85jTK0xqJGDqdguFafXOrOdZIo+sAOxqPWhN17jShydxYGnXpSd4Y55hzVzp8T1Dn0sHlNrZjLkDrWtyGKbuiOKRGj0oYz9d8IB5jqHT0qmqMI5zLFe3reQjh5U85Ji31ROO2GWM2+aeRpTD6E+1uBoVDQYM1uY1Nl4qbR93wSp9ttzuwqwLigzQxBrzEyp6ozcYL4dJi+zXdE2282WGIkFnsZfRCwyWDraMbzw+vG4vP8tAwVTQEqZqSeJHNcuNB43FFZXzWBagDIbffgE2jOqz9etjx9YuQXi+xlSF9Rfo1NWlp3C9jo61AxkPbgOso/eea6y8KQkjDFlgovQDnOQ6t0GbQpVsDpYetYMyJCZ8jODG4jQaDYFKU/Je1nMtzExm79vG6X/c1+4bdfCSx8ucT2ei/soj7h3ysg4ZquD+T7DQNXt93lxc4JLP1R6ZAW9UMQdlBD1/zG+XjE3hNa+OBzEN89c5dMnxBpeJeIa6mnvnQnltCi8olB9ND4Yzlx9gEw76MX/88Ql8DtT1fnykRP1oAwVyPkY0wuFwvfdTdSlju9d0rLduk+8r467ByKcCZLgMG1HXg53WjBEOijdAijdOlf0FiS49GfCos3GmTQ+hjdWIvHeXwo760bCKyciO2cLyGdXvtyICPU67T5O4cTA1g1S+dFrt8uMo2amvtyKhGYzg6W1RlGLhDPoBRWVtUwMgIze/uMe+t/bBOBO8zE2hdYofjXGci+7zoRDJocBH0HnZ4xoHfJBOgPJtLuyg14uVyXhIu0VxinwzQw3pTeV8UF5tJmz8GciCeBa3+SlHaf3TwCkm+tCH3Hn3SnWrjMsoB96u4T+UnV3wwC0+4QrWN08Wkt22pqzg8ybJKqznTx6FwUlvq7yNVAmK6Xo9qorJ/O6fa7/6jZTDZNbg3xqbwaUUbb4f5oI8NGOP3NwHtHnCf5+OqUH3imPkWWAPTUqF9C1mGurcnnBWKD8+g5BNkgphJd80Kr0My2sVlp9SQkjpUt7hGb900fU6wjDjaNpUCKL/4wsLMclKCKN5dBUS/vguEhmYYdK5WQja4jFtkUltMnybs4TC0zk2jC5Z5aqZo7P4epeWJejsVq5xDBpNlFORgSOOysoWvCwn3PWAKNH21meqQiOAfHuuT9jFu+nD24TZUAxab3NTePXNP4J59xmteabUq6lZhMO3EFi7r5YFtLlHgoPH12SdLXUf+J70OV7Z+D4Ey5XRQR+SeQbFrmPLDde8whL4+kpTCg8RxRGaOgZqYFJbpClE4lZvY3I2dqypZ85K3vBqIbuuNwvhoRvcB33NLud7TmVRfQtmJRMliQbKlsOVwPdyP59DR9dyleUhY5obrBDM9y9QaLDEt7/itJpW1nB0Tmr0F1nFfJsxhHWvf1C6M4sU5VxN7MasBD+ElmpRunNMNGpZunAHwLQP6jpsJzm5/UrzHlOjU2LiCKUVJVtGxO7gEM1KqVesWcWgKw8RuN4OZmij163zZ2rK1ZX1ZW2YLXgVaWxwkV9fqyv4WrpBO5cAz8zOdNOW87HsEzF7U39JJSlSKo7y2apMq76Gxs7ZuCjtfx+JVnX0K+OBN1+rmiaRgWwLzBm7QKrH/CWN/SlXPr1abHoiBQh/TWwVRPyB4rPXVsbl9S1ukaU7xqcJVJSi9TQfWt2yJJciQGe2q/KgUqFOpgJ14NpiEVpVb99hsMlLNkKZ9GWF6Fpp9hWY10SlMKrxLo0IM4O9SoUZq35Ur4XQ+9ZNMtHBnMpC56RieAttECj2YKsFPgpCdaaDCSP5r2MOmtu9LmQaDNGx+28eEBzg2SuBbRvG7lNrrcN8VfvhOxw5kaTYsY/Ggr8buQzl3UGbdhZpQ3enACYCU5XRVWbaiSt/9g5KboFhM+V0mwEo7aG2+tIPcZI28oCBNaloUUI4ebA0zDz625fSST/kBQGCnFu55buwkHsWPtMQV+DnRo6+8lzkGcnGkPRLkR1PvXShvo3hzBPe0fifitZwgPBQ7vo/Orv9ma7xSPjL77NHKtkNyx8cQ4oAC5UvklTmPjcsMRCWFxuKo3SqEnISP9fda/Cc3prBq4Oj5WTk20U0X/CrZ1PQZho+b6HNuJTs0lbsLxEbI0W6HpnQYBw8y84Y0KJR/nlHudtBQ8FMfqaGVCuoSDlJyUNhP4DH8iNNQl9+BARPNuFaQN5RWq7iBuMCeU40MyFjgeOaEjHjlxLr30XpbTZbDv8iJNVAanlZ36DV2dNyvcuGWfh5pyXcVl8tyyGp5Yr+JMXEG/r0FjCtJw8TCgwy/aFSmc5GJ51kPJvJ2OpiMKwhHZEkXQl0cWCCrhXU4t7FuOkUMbwrYWnoKUQC49aGbnP/EitadSUuHmCj7Q41SafioeaWxXIHkkCpsVQg8AfS/+OerIjA+fzRtzKUXavzlOtTFDgOT26zdBL0c+CUccebnI7jLa5Naze2UoRNzKaKdG6a7oEVVc3lCU62QHUOGtuGJe2mwbbgYX99EuoNfWfyuoB3YdJvvcrDdi9qPL/bjgaRo/35P/UrrbXiLBykWc4cM6K/M7uwHxi+4qahHcOAxHgcMOK14+BerHVADaCvH0Pe3DRAPXC1pMEv++Z1WYZwonsirngbBK10MSYe4tJcZS+a8tnBtMysFLWamqLQVBbPJ0+8x1IYpsrKn6KNmz5GBjofyCV0ZmQ1l7DGK5XckWrYMvE+PW+NXUCmEepnEVY8aci+jf+Zp8cyXus14i+8zFnjxSRikXZBsSC+BtZljo1glSGHxsRBI5yVhkbsfEnOEufFSoenYnawUgXBXQD8upEKhA9mZTXSISc6JY8eINQ/yB62oJaDBOU9EPzXkEobhAhmQeCNEKcpGW4HmgbsGzs4YuUylZMChBaVuALm16ppHFCkfj40yeb6kWQ+z/umzPir9+lLb3d+k+dCDDGfo0red6kZXZH0XKY8lMt/tb5sX/Akx3poK8KxbYLSsJnDV8gbx7vHCORCzv1xPuBFVGBd0WAdDahEwY5aEkqNjz6w7dqf4L2QWJXwgH+VCq9Tz1w3KuLBsP/pl3Ev1h6Sfav5/oFNaR7y9vpRrKZdS7htT4I99oZNEcqctcec7f96zWPiRAD2KKh/DLzF9IrAGUWMrNHUpmySm+QDp/MR4LAQPcyn5i4jvG16PpHdN8dyri3Yz+EbU5Bg3YSzl7MHSaC8eLh+M1reUmCQe4sNqlpLPqCkbUZDb8TTZZjTyJhbqM0qZPavRb+thQ/+0o76qoziZIPLlsQ4xZmEs8m2yujDTKlLuxzPdW1rLs+pezCTYdYySXdr87zdIrX7jGxd26FpxI0D8mOSglOuiR/uXJ2f71b8/1bhU+0HM/ncQXI6vLO2886I+8AobDDRBgh3Kw7/91tUHMjJIP8+kvB5cc/iF0AYp23GwhBZrX2UoCcT1Ag5wghhX3TNqUhB2g62PqMq4kn/2rk2APH6prHHWXGhzjJFkyHye2koTqLFZrBUhPVGG1NLWhbkU8qX0r4LgeunHxAIOB2oWHmFdzX/tCtyKB/kJ+h/lmSgBaJsOg804PrkqnohLph4cdB1U0QMKnt0ryzTIivLfapS1kC+K8UgDHO5fEKeWy9UEoPT0R3tVfm9bNFlIZDdkfIqr9d9w67h8FpIlJMpVtUNQXJbTFT8mWZSAVS7oL/AAPfuaBmujvymnrlHl5MztFcayphk5cQisKHYHLuCM3xkAfpIBVViL/3kCSIJIXHL5nVdSiV8swFNcWrzs42Lv+VGHk1bPLHTwJfczjAr/cUuVe2TcZ61VA08e2VPRig7sqvSwy0PjM0dQqHnjyD53N9FqwX31qlIrHHpbFXl6c5A8/8XqU+dAj0CfT9jt+bpBRyea16+ub+h8mW4eWP24fnn+4A9DuRx9mwutnN90/SSoLU6AzJx+8v0S+Dp1XsD1/QDT5TQJu4Ma3d0+1EbMYkG2bTRk6J5sfo5w2lgIuKXSjzKn0h55vh00mlf4nXY1+iEbCo30HkGuXmmnaZPZEO0xdSp5Ttark10imWtMr0CHAzJMi/WfBjHoPAyCy7UiWo1nF4Jortwr2lzDPjThEq9C+ZfBy+tKMvtiLOogSr4ud6qiY3Wfa3VT43Q0lL2BejlRXrTGR1el3YCXmU29YNEbaqRY6munV9svG3n8INp6gpbj/s/bc//lx3o29LHSPXq4Mh6NYgmns8ea5qb0cOh1da016TdcNdbbx2pDjSoaspK7fIpXOsD4CteZud9t1eanQ0ZalGt+Gf4L5rHi/BMctnPvIANDp2Axf8xZd/mMwS0DHbKD612GyBLvSCvR/n7RDwI1bz9Y+znGLb7QUnGWx2n4EkyMMCFs0O+5QT4ATzIsEpZSGpFg5vgoyA9Tz2bVebEsYs8BGV+7LDk+uWKU5iepEfPJ/yMR2uqT1UU9ULg1FEhvnJ6dHOlFhZKUDT9+s9+m844HolBEfCWmznikKxsKK9FeU0MG3xWAZmLCaZ7PYq5hO6wPz87JGv4lqgGgtypSvzQpHO4eMOnC7qwqeilz9losFNhXkBv4JA715QAGqYpsc8pXVvdnSPF4Ra+Er2iCnMi9SlN31bG6nH0gd54b4oy3s6iCLR5T9DpsmY+ne3Sq5pNYiMTph3hBQmzCXKS+Ng9Y12/ijofV2XI1CQbfwdiFBPEOICGHzwyf+ASuTAMCPcTxXeBYUByWHuD0utm4qFYxhGfYROabtUjSregCDnU66lMr5O0aHypiCH/T6/8gOBj3QIw+7MLRLt0rBSPMLl1JGZ9JXYkxn3hd4cuLaKLsxlOK6akgPXefERrJsr4NNSkk7fiP6FMMHc3vdh2eBVHg1txvlOKEQquB2L5YWqYIC64+JEYD7/NTsWli7qP828RrX5/HmgB9nqZSId9oteHX4llQ9WZi/I+kLVl+OA3kAUsWiz8jZLYGRwfYIgYzVnQpTp1qqGA3Yra3TDVnWmtMGfJISXqT3hrX4iVWTlsxOVQcWYCCLgCI803QAsvtknGabmux9pPRSE7fRCgOo+h4dlrKVoiyIDuaLex4XtpAWxX6PQg8dxjR6UIo/w2Zi0shixReDCq7/S7Ibq/1pt7QTrH3iI82sLNYAYOQ2S3qWMml29QvgV0q5zCVnbmGF0Ul1lYkCQUfdfeCJ07t/vniIdnFw70cNA3SY14qmbFgwZQ+VMKyAMFG1fkFadsr7GQNXxKH9bnF6IqiHTQmq9HkfLsw82/KSSiy7NP7wY4UWCzF4VL2m55y5lFxIHLSTRcM5+KnMIVfeTBHJGrmmusspmoXLToHcyysrCDcbUTep+ItWpY/nyrrzSRudw3gS3KWZIqoCNr/xs6TS4VwnSZiRso+wRXh5oHcZGqaYmf6RWzvbZZ0lLUepv7ZZRgLEjhlvRvcOg9vkk2N6LrtUZP2tRKAa4+Om5HiuUexXxKKw74ndWNfJKDHB7UhCCyIbyNQB/wZkVNV/iAo5QTni+5R2lyzqLFH49qGe7F4SZbAST0JgL0N+oumQo3FspDVfwnNmH0KFVBPiu9ws6S2i1KAN4tw2a3CoR9ba7Fu0X7heaqvb8bipfo2cbGTguwHek9Fw7W/y73EnZPUlut7VBH59lBDRORfKq2Yk1gSm+CBzUYY2bNfz7Q3yo/85ndQMxl+dr1/pWR3+dzwh3m76Mjbh3dYxc57B37b8LBo31zukj2sLH/CBfqDi33wcPuvmTpjPC4AA78QipXn4SuGTqLt0Q0fdkbnrkoeXrk8K/TwEJEf3qac/8juqWGNFIxLhXI6b8tuD7Nw85a7hVCsFD0qrKWALZDgXCMKbZ+amKYSZC+p/AxH6ydX+U3D56J5+0TzhpYRP+NtAV5UgObQYNHfiWLBtfb9FUSixLAF1m1kizPU/DJGFCAuzK52kwPnAZTJsVQb7Ss3vn2zh9t/9sNkptcr1PF82bjMx7uU+tc/+qfsblzr/aEvQ89+kmwd3ddlu7H4No/6W8EfmdZrPlN+/QDrCE9Abq6bVRZeVkysgqTvQ6lnDVaSWiFpc9cmF0vcvDhwgOl5GHTcaVXwpbzVV/jBNx70GOZloRutUG47+2wiHKPy7MvE4j4FQvuiYJVR6f2xUpKryg6ugFBqYcLfURmoD8/QPCBM7P4DMRaI4k+yeGGoUw08v88rosAomFOQFnx3Qc0zHksArHnmKlKn1P6T2Wsm4zDL1bzCHzhTHizZMayU2MIkMvi6f8NnWQlMkSvychvJpV2DHk4lYDeg7QT17EuWe8wTmzql8TaUIxhSOR898B9gO6uKjqijz3zQrGbq8fScdjorgOf0S5UVZNugETBtUFvVWt7eyh3feoFoFOjwvPVw2LnKrCkIGPwdUAriYxMW0gQ5Tr4MDhIjflSyu/Aisy8kR9tjMz5qejn1ZOX85+ayWQlipXGLHsnYB5FIWbzNmKF8YxiiVOzqGJYW8pmaLw+BjsyXBBVshM0wOjeDi+yT5cS5OW89/25+AtfQBcKNz955HLaQvQm7hlcojbAZ6Zpnm8aGICwztErGhbszKBWPdKpbxGKdnTBWi7kldME6ooVSeRiDlxZKqdll21KCbGmqJS+kAlFLjKW4q4VFomYivvKILj+YFxiFSty8aEIWw/UmOZExtyjrZ2BafUHJACP3jwZD0lXBawkr29omw42kFIQSa7/4em91l5oOZMwus1faxe48v7SFaQ3bdK8kwotDKU+Z4eVAr/rc4in2gbk7FT98wsXY4WLK1xO1D7tUD7Xfu0Jk/sT/Ptsl+RJ9SHaJuT3xwOe6vsWBcAjabYjQggvggmODoymUuk3HTP0ofsDA86c1b5gMdbKf1OTXR/4ZtyoS8QyrDpi2AVlURcxkcOaw6IKnF5L5Ftzm+8SAdC8YOf6eAcNmXvvzBn1jr/XdhjWg/AyglX4WuAHfLGx9t2H1azMYYjltTGrgyXlwlNtuZr1vdwflLSV0WuIn5LGl1wXtHhS/oCz2SXpG6duROHeJ35F4cQl0Qzorf15+j545fXBlOChl5HgQDXn4uSl7NzD3UHZsANvTZ58GQNvxQdYn5BYCWSW/KdY4FgtI/O9LniZ6Fbh8f+tfkjeP1yAcRTpJZjmRoF7z7q6OVhA8t937KTu+7g7Nt4QIxRh/vDm9rb+G2jx/jEMNsn16dQzfvaWh5MmUNy0+qrfFJkldY8vFrjPYdrLWDShuqeRYiDhzsUnbYs+lJelEN14h+t2kuL5yvxp26vEeO+xqG/VY4vxvJch460/tcjlzm7rZcl7afcdZDqgdBwo4o42ALNXe6/bSz8/U/TI4gxTSsGvLOS7IztqB99Sovw45K5DBHglGW9gdj+mnDbAYCkSuFprOu46XevHn+5yNZJMvpCpS0MzCq6xDl34ADPHBSsQmhLjuI6VD8dj/6EXma3sl/4JUG3gzTe302XbiroFT3AycY+zON4fDkXKN65srUJeY4qLl2/TYC+hYZvJtGl6Agrs/SAd0uC7veBrqB1VYIZEcwX4w6AVSGCiI2Gbq66XPzG/2zXxPzlv3Hv1+huMjf1lvi6Jw/caoZpxVps9M8ny/vg3qQW6oRrG/pmH4Uttmkf7YNUb9zCzHMWrHEuhugxDVmHO47c1PLMMdtXZPX76fWjRXcubDmbgYVvcqEDjIqbJZlAIdwvRe1jJeEVqurwY8jPSeeDvibZRPChu9TlfE82DEaWkEV4XyCEV9016P3o1KUg8afN+t0eB8+BXQAXvxyI2Xsr4FBzc9U5xIe8i8/8PT12Moflw7OcEDlBYDxkdYzypuhjeWk7Jz6PTL+pBiU//aoCItOSeJkgbaDiufl7Hh9+7buGx1T3qVQjkag7Ne0IzD6sIjow6g65QTMtdBZ9j3FjYsTsLJhTFhdxXfzQQaB1D/geI4DRVi3iCDEgMEUh+6lJ/1G9V4fjtUtJoGD+xc6cOBX5XDm4qibto1swaS4AOZTWLWMJBE9X7L5/ZDKb9ItYES9uFYVFnpbgNI28YQrmrmaH7k2lRtRvBAeW0/hOp+FjmjoNWvLikqpRjF8akeEnNF9vczEBEaXbkNhSw/8ZLvfXTJzJJZXxL6jfwUJZKAtk48s2O6ZZZ8mxHFGwwTAJbqvxjHjhCI9/3+N3ttLkGwqZDQynhBh9sXBC6H92PTOTzlqcjR+n285mqI12hWLbwdc9qs9JhCWmlvZMVlF4uYZjx3U5m/yZ+iWjZm1EpZ3CSnU93pc62TF2lW3PgO0aPqI1aHl5jkbpFPNTgroKNOvMSvPFmeuUZWh6RMqpIxmQajmACOsaViGlRMJComgWNCKc2qV2X07gJ9Dvw/6Brv8btmbY9AmGIvtx9+9CgqlNrQMMFuu4Q+gJgPlfIhj584OE+hzu/KFLID1ApAvKMS+WUYtmWevrlvArOrEEivMNIdt/wLMtvrePzV7qWnU/qupd1OCuKGLSy2QbEToQYN/mAIEkhPcejEAdYSAhtKj+UmRszPPdyk6yAUwx22Bfek6BgiGGu7e+n5cg6MFSJynB55C7nE8c25E7lvDlh0YfP6gpFCEmWNMFM6EomNCtp65121SRAVmZ6Z3Wyns2Y8FmKUftDvxRWUYcFXsu6EohvWxbhdnq3ZxOTn6k2+veE8bhg8A5hFE3t/2XxFuDShqKlfI9VShWa8KPo7lfUJFopUTYcpzyuYDn2f8ksPJp51yEWxPPE1Al8R7suvOX3NlfZg0+keWRgk/JYQood23EWSVXu/mkMRSwjPH6BZqhBVCjueSx+uFU/yPlDfB/Pm6kT3eqEhKp3joCi5gWxPO+5vlN0JWOJbxoGzXeCg5ffWsS4cBkb0CxfdSWzPPTE/vklDI6nU7BgwXFupTSFhYAsKxgXKqshlxyU2yagXiZyN2lThrNM8NRDbdiH9JmdyXZMITLMTGDPS1mSgSQ/JiKSfLVjagH515Dp1bVz+6poOqDroSu/GMLYB/XTgOi5fmwr/GgcYugSbSl1Z6wb0AqaCWqjwUNewTfQlwdW7McyAkmR9+sll9NegvqIHekfo08nBG+MwAXrn8qE3AW3rLCiSky/A+ULarVCdMfHXih2uPegLYjHoC1hzCYQB6him7aoT0CI/LNhDWX1MoZpdntUFKhfsg+wJ+3vNPsmeqJdIZ7/LNi+ioTt9cdp4PsjmGT+wRc+CVjuyuPAE2u3CFo9AHC0WzUGsC96BTqhjs5IEW0nCV+xGD5A6AR9v5nDqdeoT1m2CmSp7lAyukjBujbwC6g20qMJxnZO3o2KM5ncDYhd6J5cs7UQnZhjF4ZhnOCUtwdYSsoz1K7t4naQBbUqhjFbVhHalG39KGtCm5MmcGn8zw3WJGIpExPEcv4U3yhbms9KwAFm9wKJZCsCPQt4vJKCL5AqyzEvYGe2F8yFKy6CmgsJLmayrXdpW1rokINvJgvddOITbe95n4739iAODX/lD9kKwJ/Y+kNt6TksXkYv64cJeqC+lGqVuy5uSb1+Zou2N2eResz+8lFEk8wWhNfS/e9ZrNcLfE4LWWqitHqL4InRuDlAw6ImsJh0x0WCSL0JqP3rUMq3ayLNlcvTwRfw4KFp5Z1EGXjPbfavKNsC7+mEd5v0hq7l/NPiwvVA3Liqr6gCTiyc8an3Aswc6AiP7cqP3ZiXG1edj6NvFbqv7wldny/dqev4Yi7tRtb4sab1z3ide1bQ5U4+PLIFGKWYWPhB0f6e6iOf0EjTXXM87bT2gbLp+SjGY31HDEyfIA6NqkKM21Gy0ZvP2beVqoDM4LcCKFcCO9DrbKppwrZ9e3AXUmih0eA5c0g9DscnIK6645phhGd04u4f/3Oc4h4cy4XABsPwT5sKrMTiyX9zToPyHAjHEEfXArqBI42iOWDM8DZwPYvW2g1cCrhGI27DHDMhYN+TItROq/6wF/EqiLa5NluCDHWj9F4ET9Vv6h424XSBeYu1FdHCPaQKRFgp0i+AKFGt41mnT2FjFG85g3oE7ahTUUpGNMnO2IJgKcCOigtNxPO/kySVmd9EDOG04bnEJbDsLPb0sWi/xwBeU78/SjVlJMHGCPjcXN0+zi11Yy8bf0Q+XQHEj+e4YkbO9cAXKi1DHBbWw8Wsz5PO9oq1hrcAavLO5PC/6AuastzkoD/pg9QHkvRKBJjeVAdEL6Ylq8BnQgM3Am3VTshaX94ED6COr7O2Chn+DQRcsGqlxy12ADBWHqrXI7IfdFJ2/EpDZgc+9mxTLQzemTvTtxNbUtmBerCDKlQ4NAq3V9FGGAu8pqeJXyllKCeUq/8gJckr+i4fqBPMR1h7tKrVEzkXX3YOrZHNyyRCKZgCTOjGGU7Eke2uswdPdk6HK9WZuEQ4HzcS6FpkhbCa4zjGG5+k+iOFmxejpHtlkZS93dStoBtnp7OCpuw6JFoNB0gz2x0q2RXq+05XDBmdbl4V+Fp5sX2jk7Hl3UtfE6IdFPLzs95uEL1lDPcG3LxQGMLyz31XsQ2zU9V7CHMtd0hG9L4/lIWQeTQZAebfeeZbVnixcWXvwqBKebJXV9iyFXJrvAZ6WVb5Mku1wkDu45zIfG9W9/TzYFXgeumPn2cCb0AwkUjv/8NmXf1gJnnRmGdfW5VzpQYRM5FvVUkAYFDGMfdyC6gYKFRJ1TKBxkNrmcvXGod+DCvnuzXlbjFooPg2/GZZbyv8ati1rXNKtYoW3s6SV0rXCKX1Ti3XUszzBbYNeLe2OxEDS7jBaHv52UtQMgn3CBTI0ySLi8whRG4VsCNTwcUfynNl8lmhz9YvRfXa3Psddr4hbYebL1dk1AB0YSj4Zccg26eVBNCiE9RdKsh7GYkvMPiSbviEwBDU9I3LrXVeCpg/hFkRaDhn6fJKkcseYnxJeRZom82vX+6scTNyjRCZJWzpzkIvxKaZF7zHkYizu868bcRxxmHtM3YT4PWZcFJO11YLO/qIhKAfbO1Z1XxsYSX3ttMRc1y4Sat8/YsMCg+v9K4VT1HehLq81WEWTmUoNHsXqkzlNMRZAk70UPbdpz0mLs120/cIR66sI0II+uMvS4PDwCzomVBoVXHzIET6GfpZQbbKaUJ38uDUVLuDcoRRYFrYgFenV8W03jIzlSSq00pu0CisycxpCsB6b6TzX9IGJKrQ/L2/OY3i5+CBVRqVqqR5xILDTRJ6NUCGVhBxiBMAcxztuP8bAcbYrHheIbOlLFKLkjN9HykVn9l6b8aF9l/a4Mvydxq2DbJt5DcqSkVEX8gEyU3Ck2DDHsjQr9S2qPISG7KMNZSRK9HFImVBy4kv6O47yKVIJ8+k5SerQCdP8GwomCuLDuNI7j7WRYX8IuFrwqFDS37t9wcddrVo2/wy7Ya26tvg5Lz3DrtmNcW2RuMuPRnBDhRvRUFHpwRTmOIK3K4Z0rc1+xxLduRvjwsBsm3r2muVBTip3nTi3cmP7oQ2VVCJbeHUgYHDUSqsKP/tI6M5b/j2Mg2XJBAGZpFHRf8yCiwGv/WZsJVtlKeU/Dk2IoKvR2JcSu5OHa/xp2QYj5jeoHre0xOfJxBCM8Rp3LeiJmklCcCxcaFiy2pZCDFZWwUhgtqOri+G6aG9oB0i/t/wM9SbXWXHnMn/ffLLgcOky7DDsB8bP4dF8/BdveOA8FVH7yjcLX5wxM2R7NkdKAPxJEffmLRTM6uTPyS1EhN1g5W0aVHLqOROxT5k70APa2Au5Lx7qOAq9PuzhQFMiyxSEYzqJmKapNwwnukpoj4F9HHq9INlYjALGWWmhnZ71kel3MrsRujcKTnIgOB7M3xEozsogKTGJAkBruCYrSRtsnzCKgmwCzfbDSpqtjkGX+QyKE6mDmAORZcxk8KZav45CaY71APGYL5otIw2FNZY8EAYt2F4JC+Foycf361eKb1MqgMnQuF0jl0aUUV5R0SLi1B8CHHuB8Rj+BIL1ibkITtScp/n+HnOdkNkPJjEVLhQnt2xenLTVqqPDWUbARkPV8LjyWX0EOR4+cG5wc/7nGzb5ya6j7dPGBRH7n/VAi1Izfp/mF5zWH40J8pMcppFhjSMJ+Xu5W/VIoVmv/uuXzUkmC0WXGnMlekCaXhDKSCxW8uoToxGksGSXbUW6fHQ6xGadZUP/aPkJbFhMXin9Y2a89TyPSEBcSUZBN/T6Vofw/GQW/jQHHTDPVDbtkQR/4CD51/HT3EgC6+I19nviUNm8gUYrREmyZ9r/KP/KjvrVKckTzc27JtOVz5cHyMdvK/KSv6xpo03+/y39Mg+ieumYv/xfNq2s7uu30a/UQj+oMi+JlO63WKUbdx3XnjkeJBVCobqY6eWUEGY/jhMaH100e1sA7QdxWshrgMbZT0JH2/ufsXP5MqQ5xqEWGDNMiTJtML9W+1V2Av4v7ZKTfFwYIrmn/MIetkuZ4Td8e3slKO+PosQb97y6S+2XNMvZN+RnK8lARxTUc9axGew6btxgWUHx4VWGUyNaSYOBvqwN/lL2koBQBYt2IuL5GTe7OV4vBp/f59yitvnOL2818Q109rWNhTT/1kPkuVPMCDCeLzb/MD8XoWnlZAbon6ZpRCbaI7NWzRp65QYyVfUiFlo4tUuYO2GDTuwJkXvqgEQ12jXPXHgBXu/PCnZwcG60qaDM8uEE/vEEAVrm4MQ2b8z4xPU5/6ivVrpraqqvtGW0dkLt5GV+gtV+FxOmPxbfTy+AQiXTvmLhyhN9XLi39od+nW4RiGzxu27y06qttVEb70Lbqg+FZd51aeSGBi+d83B6ZJbs60fu8M4v6nZQosCXqt/PS7dkPH/U8dsM3/3VTJbD9iiUdyOXk3cUSLB0qRqPbs2Nz0QnUXPpwK6mIPny6+LSdxVdAduqhI/WMb98IztSYg0Z7yU1VrVqf8JZ+tyeunSOwDCsTIr9u7emT4iH74SClQzz6FaRqXNV55fOhtF+X51M3m3nBnx5xHWNonYwrv2G33n7/ZErMT3G2nmzVJd2Fnp4X3jv3SLW7CFZmpljxszjPeE9Fig5qlT2eK/9ZhlDVWiZJPsBy5ojYo+js2Fn0g+mW5Ufi2mKTG1++/5Bw7wZL4wa7SXFPxLvnRJ8viaKadtYCwK5En9llkXtmJ+z5LgI+NkZ5xNz1reksArmH72t86ohUXqIEr39SNsgRkmJxZ8ZmRfeX9eZ/PSuefdvE7o77AuOPmnZ/3luC8fDiOi8+gAhzQezDJN0xcfKwXIJx7d6i3tceC1n3FU+tBvp5R2FvZYUmcnJ3dtXLyIXLuz5t4faCWy8Ck7F5S9XPy+31uGvV/W4XuDQ1h9pxzmZpPBNYfVfwFPrKHe2LG+6Xryo6QUefvzcf+DunVZOVCG82+W0mSGeDCE/EsGsQLKIz2lU5yFkPzk+xhrsjuurF8UHGVCbTIb6xAMYz0Zj0Dh+tXf4AVjjFxUsKJp10/g8QtruA0Ek+s7lF/1B2CbQYUullfCz6ZwsfjmbClDd+V3DkxwIX5e1rb7lC2v9ptIxV8aRkFovyeMsJvuXKO5i/fX7Ooqj0Ze06l7vr3KCX3H9eLWUHbPNx3pEnx2+vdm15FT7t0rwqcg6D39fnQAGkwm7JxzoJ6Zz+D70qJ5KsrfGb/1vV3U5bcpU+5p1D679dIce+ca+59Pnb/3Pw3zWzGSf7OcMmgniWn+TyQDfNNzfdJ9f7NBPBub/0x3G/1488NAV/Cg4g+ib01r4g7z/9UibUgTHfv4GGI9elskXb10oO9LR9pJQxrwWzPuOtkXDwBUPTBFuV5QeX5PljI+bhx9GOvvc92oBb94t60z01OoXmNkP2+hATbWGKjCRTGx+iib5ZDPoI/rRxweU7z5KO+F7MBaWLtfTWn/apt4938pfR8644aW2FsT5nL0/2f72IdsWzYXhzIuZLKuU54PobxCmv7voA4DbSX/IsezcDUQp+3BLdp296rzl+bV+2gH8cuAklF2SQ3dSzi+RcefONQBITzPz51u3PAHyI4im/GHdUcPs/HGdBvT16hgCqk0tZsBN15glrNzHMX8w+oJDB6T/oIEpYkZgbtMGZB7T6dFvSAoMBbbBymMoYi7L5rc60BLPP1XRqgyoDwPGP6cHgFOtqda4A/ILekfg04EdEvhyVPwdDfe5+v/SGTNgU4tNuwgenB07cbVR0URYGBjFsBlhcuXrSWEZkU4RW2vRgQkZcG/IK7DBJpZs4vce5EnWrmPiivxxx9cVCF4RlOF4RhSGm49LQA0zUCKzDl40vBURVjE4i2AoABIpM2kVnF+2cLWkUsFYGWCnyjCQg5DTUbCdCGMiU0+2B0GFYAmbMoAOkOCUaxhqpwNhzM5mgPwEY8IGhhuTCshjQZYrAAFuTMpCGnusw0+kDTGAzcBkJz7nSGavhC/VhfEXto0AccQpHar9QYx/sJyIhwlTEnoHnxDjCxZGPKzwnpXes7wgxh6LjPDIOCPUuDwixr/oQXhU/AqlY+J7WHwHWfk7h0KMV8hGPA44Z6WPCAyLCXkgiuIXQurhUQyscYx9TSgDLlmp8DKDxYKmIpQFfyFUmnwhxjs0QigbPpPQXp1HjB+xD4lyg98QqsD/iHGBfUAcBP9BqNqwZ6NgHzfYK+FQI1t8gIFewGfE+A37UXAYObvSqw8Oxgt6JbzGEcuQeK1HLFfEazdiGdC9GiFC7vd/E3+u6NPLiMPp9WeOu+9c/sbm44nN7XGu7u3569sTfo1yTL7GseGLlxsclYZcJhyZHtJm5M8Dv3v1gj+VVmnT4g+09Oo3fmfOvHrErqK7tKnxdOQ3rzZ4ShTkKuFJKUD1hHHF39RlGBc21+ucdXHbheV92mQRpGpzDQXFkcIhoqdhVkBEyTSjKOS4Om4DTmkOCxRZqEkGikj4GuNI2dFgt1Coxw/Tjq4WaQtFrwEFcGzHBkbQZjL0JpBRowNpu+ZeCyjyiPpEgVTzO/Oe8LWnpRkd+n7vUEdzsU6osB72vhWUFIyQM0pqJ+TpQa/g6LEtjgLlZr1AHIc9O2zCM+wWOojVTh2CII9onsijRoewhaq6Kda1ixxIoFdwb2GTRIegRfFjaicURbCDoiVOY1JCwCJBicBMEaTBDo5incB6spRTOm+hUE8rMEgL+rEojmQiLBIUjeCJCLUDVmcdVrAUimxoLp0TVk2D9PHW42FMYRPIwOYgCrmCQxED6vtkKGlFZgx/SqwatVBjCRFGKLrLGfCRcmnhiyMh5WY7QsURLe1Bss0MLiSTNxlIEtf2xGpTol/cRVMERej/nGYJzSCh8AXs/abogdYMiuLI8abZ7xw5BAERHuUKnhSMcEjQmiH4xdHg9r4AFGgxt0AtI7xtIIYzVxmBF+yJiX4tkiDfwUneImkjEq5i4JSOAvnzRaj5mRV1XYddGY5wfGakknMDbhrBgWbZUUwsziPkZk0lj1xYh0IW+TyXJ3XOQQ7z1QK7He9ylPSFZgnHycU0D9Lxpng4lb6H6Yg8O7BxR5qOLohr7HXl7I7XqvcPbQSyfyRnMvGOExYoUy3khdgR47qanbA2W0Lv2XJw9GaC+Jfx4RsHuqC+/Y/xffw4xu5NKSkT8DvoZjn2KFrZmr5gl5Q4y5lA+nrPeCcRWpZnfwzA/khLAdHCxytiOEQkj1DVPwvqhb5vkeIZ7HjQnoeOaRIK28Wv9nwp2MgzsIcqz8oCOL727By4ez3Z0QAl5/NLuGm0CEcUrBquMEEh1WKxCGcj3E3kNrVIH6mObp7u3inVG7kNzzgPFzhus8oheB0VhnyOQyji7Te4dAVFy70hgZsJGf9eJrLQUQBFpPjldJ80vh5P+nRIYw6SDeQXXZWP2g2jx3eLzIoaWEj/WKCprt+DjxKqZshiLNK8k1HRB7B+ngZFU+NvcCKIHAU14fHtbKhpE+zf30RYIGcUI2IOhczCJsRaaHdWSP6lvtYdElg1DszEySDV4npI77SgH7xIV93QTUlBpF+kPZbcHERPvIijIw11PDqRg+CDHzEKguAVgoN6E482PlRV/57FwzQhcSHwo1MD+9+FIKG9gbWG3PseCjgSmKEnB+7cDCjqH4uZUwco4m+K+bWPBbBAIRIIy0dkoqoVqEolYPUJ2gCfcdDO9V4AfAecpX1II9oLD2NSYdJawCvbNFI0zoM+gy21lcwiFSBLBwYLOtJkTMlrB7RQqCOZqJx5mXTcs0BbqIYhK6wXFUccmiCKl4UvJCJ7WbinYu6lxRKH5hCr9yl6Lyse0qGfSVx71+Ienp4faUVni+yoEadhLDjkZPRM4bSnSDloYwEk68kQJWsL0msA9jz2t6pFSgwHM0sfQKQfOTkNk96zQ+Sfa6egRwedFQA/ZzBnRb5wRnHvRxdHgXIG2AEFAEGUwe+RtNT/nqQwxw5YmwA0iUGBDgpcABFzwB4qgmEngJEtzSkPGW3CnxCxw7A+BVhRA8sLNacDm4fsrytQJIspb2r3/7MVh0hTFtOkerasaH2l+WnluGgCpWYLPqRb1Twwj3RvRgervizT7mwRrA7iDLNVM6Lprug1HhxsV7AXNHc+uToZVVV8NdNIgsROQoS9sU7vI51cxHvaRWvhh/8eJQYrCwvqwJwEBk4H5kjgYyUzIlDQ+TgIHYZBQRRt3ogrnnndF7LE40nDuA1Q1LNBHN1FsCOj4wRFdIdqHvUf0dUYUNSx6pumBFTefsbKPL6mHs0D2DlojDQTYMW5RAZu+ztzvBHt8rgN0aeEgLgW4EjQ6ANc1KDS8kTvTjIUmOujhNHVUY1ney+I048aBvxQ9sRwqabu0lRCen4k6gXTDehBRwlkIyf4XCREU+FG44xYMbaDEAhCfO2LUWeryKvhKhTCgC/hnY6t46BciUxD4FclqcJ5vFxTjM+mUIjk40ljs5V5xfNd0u563fbKSKSFghkLmphLH2/y9zvx1tO9DV2QuvuMi712V8P0YTEzJGbswOrAW6iJ0xHDUUKcE3QauEy6WFQzzRRtcXsEodXlWWa9PeJmUIEznJp51+k2HsQPDXm02+cwDgbBQON4msXqLqyQIeUkUJUNcYp1UegPZI2DRdzbxemgxUh7Az8gs78wBKxNfA1HYcDeHz+VvoCWGnPiHydE7X3ywo9XFxrAFC5+GjFpTi/SXx1JwHLqQCd2M4K1nzoLf2ys4uR2XzcD4vXrZgAegHExDi5cAR2HroplkuxzRFTUOEAcvE0VE3rR9M6kRLzu3WHAabEuk2Vysp8NCxQFu7uyE7RPkY4XEBj1REdP4lgLEiQdlPrReZlHpM1rQ8QRFvnEg4rjK3nLgaOEaqWms0O+54w7SsD/vXT4y83wcjWlizQzlaaHFvnrAlaHjKPLhuh6Bdo2pxFVK7NhXEa013YWyURlROW5QVQmS4Vng5ck0mmAsf9dXIIpDtTNxNnIA65PgY2MPjJBzlTwyckAY9XVxRhgA2rrxs4m26maFIAx8iNq1DYeDvsO8xMbQHAgHrsAZItZdkLs50qe0anCwjs5gwJ71Fj1Gq4aaPeCCSZ9moegIBUgSEcIxVYpu8hfgVmvj8FgpnYPuwxMwpkh/T81NPgU1RxSS9gyHL2P/KOenW9yqMIRqSeBhrN0h5HhpoJNHYWrijKAQt7GFj2MqrK7JWulXCu4R56LMuuB0oK2OrHhyNH0yPf6IRiO9qjqf9WvYyo+n1fAB21y4lPl6G5z3r377gt35KAhEjxf2Ur3PGu4NKNDulOFYztNcqVtNtxrsNGPUalzgxAT3ds4Hn/DtorjnCSEvQaNQJyyduwvvLWRSwVMi2uIFStqWgRyglh3giHETAEB58ZQsk//bmh3kWa7RLtwsuLFgvBuGqkt9jn1sNgzDaZophtxKxjUpOE5dRw/fOhab89HB8FYhC1PLQUHWvxX/cwb/TnqSUy7NjM+0uAWFG0e2erfEEjvi8rNcMzDBIMKXzCCNwHFeVycVzpLrm4Wi8WCgqWjMk9qCNH2M9ZroQqZgFWiA+x1XUYKF5HtkLi9BrC3UiiuJ8Hi3F7O3E5erqaxBQ8XRlkntq3iovBRJ2D7l5IANc4OF4IRDy94KzVHngGycFxhWdlD0JXEVnGgJUlOA7i2EBdUfsyR+ZEFVPZJoM3afgkio6UveKbatmRSxSuBgl8NfVPNjEh7LOE9E9TK7lynCzgMRPmqOChihvSQdiglTvxYdFkskG+8qkDsT3X1mscOIl2Q25a561WRjs/uXvsYTp2tQ0SqQXSDIgpXRpDzy96akb6Gzl1cz1wx0L4yYS62MOTZxjh+YmhnhVY6RzX9kOSJiZx/g3g/FeBAW4eznGetvposI6QlqXVtd07xeC2bDWelNSnIJYgaLmEho+9cRBuJK+3g6Lt/qTi7Dy7AB3nDrarRoeYdCZXIRgdywx2+QHSGudzEleHpAwk9/HpG9dS1a/rPKT6LA2r4akfeoggnVOGnOD2W75lQHbqe7hY7irRSM0UA1mr5DFuIO2JKOJCGy878+FErM2YdMYw5qpR5FrKIUAsrmJcRv5IDBBaNNpfYRb5Cpav6ClzXpLrQADRM2PNOoAFWywM0rlVyJN81B2J8rdmcmqAW/OO/pg8FHyatmkGgqMklJ9JSfxzSncBdtmPKcRlRcIKnOWLCoYRLhjq2oEc1SeAQHa5EDbJB50LlWroHsIB7wnmcAxZQ6mudhLZRGeijpzViI6ea565HylADcjzybEwR6LE9Eh9PuoMMoikSUxhIZHQwyYE5H/qYRbMgbRUSYvd5kanBhITZwNgukZULWw1gm4eKQNkKKOXGs8XKUejCN5Nf7Kn9R2PFtqIuoxJRTBhgQY7Vivb9nGA1NFWiuJiKXICghcCcZ+W77w0o4AIcoHpCGOuoIjPE54SRhIFBH4586m2xXdjNHSRHCIrnF7Bqd38DSfjrc31OA0WHWmcuw9fkoxyPQw6R/s8kTdL1vUEcV+bo0rMpCY9qKMCK55+3k1LzfU6bZGzA6iygNXsyHB1CI8KAIDLWDGJM6zCxlHTev9yVIQEBDvjYGctDNY8CaJx0oMaGHvLW9HGxXfcr5Htu783YB3NToCFVj1MZip+jxIwz1l1JkBFFscgN4HaKisHWJmijQrwfsjdBRu6S9f5CBXpt+5OSPWtPgRnpm+3RAKd0lM4QFWMS312OpOv/EYw2BFtzejWtKfmF11lbNzcDJ0wK217mKhyzDg3CDVaPiOvTCQSyziEhzaI726kD08aiiYgGaodM62TcpYRBteHyDCzQ/mF6+OnDlJGTgpAqdzMetdDCKhN2pgOEB9bAgCF1AngECp8ex/HuyoE+W4TTGFpvEe2hLpaUeaozrysha3uZ4uBnzE54VCMMTSOBIfAITGzoAikBbBbh7RQhoB7l8HlwlGN2Q5vvALnu1aPjAMx1R0enCJ7lfuZD4qwHKrTwRZH6IF40xkuZIZQFNuPhGRjdg1elPAZDTLezSjo4Apdw3fcZR7/k95jKIgJQErcX1/IR5wMHJUOCrFQUWTRkuAPIILQCC5Rs5PH5HgzprCePEGhGGus2fJn9G7OuHcmRBS2IYv9AsXclSTixFItpoDQnd20aBNoY4AbIr8scmZWxS2OJ34HRO6N2zNBCSIrECJz9owvJOGImNmhTJKaJIPAxVhuF9mcizDfeITd4xRs8XgIz+f9l34bhXMgeAuBd1FhVltUGME4HF1Xb+qA83Afldhwma3PsGGiJCuPNpQKSq8OUnJbqJKVm0wyhWPGCBULlSIdNIMxRYC7wjHnRd++w6d6bh+TRMG2JuMesB+eN23Lk2kHKq8loSqXU8jZGSsUVnv1NZKsOCbKWVJ/UiKehmBplgtsoSO6VhAnv284m27EokSJUyfVURjwKnJO8AY4yOISagbUd3wIFvDFZ08RktQdBP3yGaqzDr3MYhzbowHgPjRlqEPGkQJYy7cReK6ZFk8bUha0C/2G7S3qKiFQ7zrIdoS2m6x/8O9nESd+qxq40NAKWQxOEdc6mSC102k4mpJcbr82XK9FrKOqg20fjzAGFWARljs/tySBCyXodJBolwr2QrtB4NwcuLCnGiTaXiCLnSRTLanLrxUZxLpM7ULHmZueiAdlZO5bBKTBbE96GqhgM58CwLRC+Qt1Fyhluy+xejM9U8uMQT/NFLnhFtK/CtLKomwOsbgTrYSq5NQTDzt3OircV21xfqmwGjRI6/I7zfK7XO0teanR4yxMF7DWTB+zoZsAU3wEiKJwoFDUJE1D9rwg4920UZMP+8dxMAPvLCK0vwIQEql2wNL4eD0FYWL/vviWj1bjVAalnGvdWuWESRpaWVLkgUsQSuVK64xgk3n9H5SBapPqAUfESHh3gMAssXUiSOE2TsAILwhneIZz35bsNbL86G4mS0ZcBAvml9jEr0e/1YiXx9QUSQGQSXyh2gnG7QwQsKreQuYkzLMVrbu+CQtCurq9+Yq/40RUErATb1FGMTNN6fEjmPEdomRYpVMj6O+R5SqBeohhGKj+RdCQtW2rmlwxbzZ01wkG9eFYpgqsejYwdD6asvtKLsnsYO9ku4UCZONJxh0JkSanoN1b9/c6p3D7n7mJVY5hB0vim5zc9cwpGjSUo90Ki1NcUe/YrrwYOeQ9p8Qk0vjoRgyDAb/xZaTXLlIQFc/uzFxafWz5BX7GHX3FCKDkV1pKpYG5/9ML/2yvc/pRK5kK+/beXLAv6G+wUPpl75Y7LOtESE7UztVw9npQQD0kKg9oG2qQ/zVRVIjd0ZtHx7/l//Klkromoer0V615VebMvZKC/gCZC7rYcGJ/hhQscNd72voiCGEdaZbLFUdUd0kWtabFdiJ4rNy9T4nnt/wuUapyPc809oCBa8+1HHfNddB3JF/GHOqCvKpVrhH/f4HnhjatCksZ/56YM2Ju+HNIGAdEnf/1YPBLMSfBByLUaS6X1KAH2bvGWxBLOF3ji803n2MHJrAq4NLvTenCpldSWjkgsspp03X9Hi0U4NNtwJ/hyVodbVwkmWgvOxClYDr2tK1C/uvvQqz6+YUitLhc+Pxv+XlYEjvlTT2KVsyEoXkqrfHLARYSP5Ru/uPkx3SvLKSFChy8LV0E3VuWJCSbETvhHSvFUe79MUvA7r3PBS3qaFKaYqPWl6GJiInzqQutRQElO1KJdBh8IfRo0aCcoP6TpSuCjxMkD47bzK70PItXBZvP/iGA37k379+rrAe2fuewHjPhIZJrm77ROeD+sU6lKh/Ql1TQCL/UMM9oJ03uic2lYnVF84tNhaLdHiCdaYedL2lW8c34YdyW3U08g9gJ7joLRhVEXVjDpgWJquuwp7/bpvq7/H7MP4wkqpVJNwHhUGZ09SnOa7MtiatgeYUQayI3atWuJ6xYwzTqp5QIG6gRVbTHbu0sYfvL6RjTDJX4ZQ4KqDU3A5qGuIinK1OJd714Szvz3C14fyTOwevy4z1MCO6ShS88zGHfvzaQIilMd4JCUxH9J4zoI7Al2wo77TZHuNtj40o7BgdVh3qJb1K5ouXE57mg0D20uF304BbumxvxtU29bcvaB1Py7iJ1yNvy6YmGfZqva94VKXaTz3caNCyy18tLd0v19D+laLFi9nLdQFPnipv6PhhNrsdjQBfWI69d/zU/PUeEYpg49RPFUWdWdoCW8ni82iIOHcJTrMTKwx96a4qSa/5i+8T4oQn+DdBkn8iTSz5HG19LtrI8Wm84ibYDOehfEFo+WNEa0DeDwryW5ZERNoGr6Fm6tBTrvdxaDLQE41j/SPyiifEYiPb1MIxuSNoAinj/2OqouDkaf+6fdro+UjX/xT6AP3gqsjrYgt4GtkRd+PrbSO+aP+7v/9kGdUhD9t1qoOSGnRPKgxKMsoZ5+SHLrMSfeKSIqX50gpmM7W0jDN6eFPjf692Ho86WUPODY/lsmld7NgJJ8bcCDuj7qtXidKR7nxe1z3FxFMV9bl13yq2SU6EudNtcXL1R4gx6XxnDv9CIF95cGvYz4tIYvDwtoxtXvKJsz++3+utiQOiq5mI5XcAKqbkvHfzDUVABDTsf3pl1mFPnfYV1GJtRnkV5woMdl6dAjnrdSFAeil/EyWONayNPEupsVtyTqm9Sv3++hfL8TfC1GNRalK8ipF57b/8Sd+/1S6FH4r2RE3V8+kHRt48QKz/grTkvS7mczMLTueOs/y3G0IadYwO17L1QmQlvWLmPxBjTylxwq+hVmM+MN/qS2UIkrqGtsxYKWLDZ64i2SkL5FL0jjApC9YLX8S0tgLt7SpshN3FskNS6IMdMkHGIgnFdGP9TIfK+adQuy009q/cRRxHL/poUczaGNhOQmtEhkrQRAkuoccsT2sSDpFaxpdE0PH/0rkLdMAYjO2hu1HqlO/fgMrLvSAk/27Wt71vTmbP354fJJdS2Dr7fqrT5vIKlpjvMeHNpQvPOC9bJlT010Nm1Moe99fj3RJqT8Y2Kvj8PusyB8EK9VcGZhsNgXYtw2+D6+F2OA7YZZqlkkvsXwI4/AgFRBPhOrQwStqboJrM2oTstLDVByF4QUmpqJ+vCx8iETlt4MdzsN6IhtbPssTIiDC6zGNVr0gs0CB4itBAFPcLt03UbxJSg5MIeayCq0W2GH+AP0Im/fDgkL2nVStqh3se/H70P+w9Kj41v6XjsabEUTOJayNL07CLqwp1W8zNcBIlxKgbFbyy2HwMPN7ggAjDgbVLzmj719U4b9nDwEjq2DCbQQfK+0eCMlMULYAYN3Y9ufxeH4c2YYNiJxdHFVTn602QEU1+MPAy4DPEagMCGui7fmptiQ2/xxicjDCTXT7VhHv+JjY/dH53Q/X/7Oyu2thRV0Nm0rJC4k1GmsY/60HGhgd1qhnRNz6h9vGJHNgnzFBkrrtCNRhzuRcKCEgv8H6xVWh1E7ZIXCds/euPUY47w/byZtMmFsCMOU+j6GNtj/dmA8rtjeAOJqCYXSgZnOlQjDCf6e8lSe6n1PPMRhSssfRhRIma02zsAKw8jOIdW5BcE2Up1fEJaSKonyYvpWLOGwsejuFJXc8jmhllNCqMUtQ42WzvAueCbV0A50z7oJO1NIuvZC4xpLCYHfH/39iEj8aK2vjtTOTdimcWfTwIevL5+b7ySDdfbgy35Ofg9Ua7NuU5lAfV9+LrcVXwOl0ms2L85wEJ8u53TIJr9Xwhd/54rxfRXsPMd3GdR5vYv9o7Qt3wGui7bUAGOgbwYETPMwQNDgwPXP/LG2imN8cT6dL7U9kFs1bQs8027XX+ZFTLZfMCd+/76gTn/ZW+ICWmc4B+5r1eSqpcPGVHZbxc2uSyYHLZLq9SOHDXO/dM6ECeDQlMJ4DaLyfQpqZSkIsmZMUlroMiR6r2nobqZxPhLB7cV/w4LM/qZIzLRcUQucFShf8eFbLJL3qDjpqjeM0HeMI5KmL6j6vJ1OaR6z2ja4RlG2NjRDOERiimvFxHvKGHHBHX/tNXctY8dUcDIYI7IPgi/GkiFellZQC92JwaHrrjAs8ENE2mXk7tdEr+KLVc9rbytgGGaTIdXVtb58Li5xdt48WB/gn82LPG9HeeL8YEvGdSPec3u3DKU2uKixbn/aVxE/OgJBxgCeXIjfpyliGPogwhIrpjkqEpk+5Sr+1Oe8NHOIJreH2g6bWM9YMuqhDdX3p+F758wBlHs7nFW3YrgJdGJ7voll0GDTOIGsqPRz2oxyvjJqD+Lpa4J2E7AnryG16R54xudPJFZ2Q7cxwmNNaz87fwqn4QIGxBqwX27gmWxwM0u48GSQOA+upysIZmx5drkW4coeoG3CY+gzK/foFvoaRmJVMxCWLnCQd2yS2kliHpVh7DWTkQLJ5TzMfYS6lzm+EP914Mh6DdmnMthl93BseLkmvq4dzLRX93fHNvmYmUcG7Wi1ykOZSDiSSxRbFoGrXtf/Glp1XudyTTtHNr+5XkCjT6Baeb+4CE7rGnZqmYCew9Z9ysA2BzyQ6/upucpGbhM6xBkE+aRAV9sKIiQzSYecVK5VZi8tobbyFVqoYcwDaSnnvM8v6Yn4Ed0d9WMGppCvuHjbqRKW8GHV4w/oWk4F8LaWNtP7ATVDB7hEYkDdNEpLscHa/riGdlTeC9C5CjZqTucdtbo2TiWEjOuJyDFHKMsV+X39/EeaWlU0Yl8XssWHoVl3mHE7BWlTVfRojx0WjfMra9QCinIBavJw17QDFb4QwdKBb8cEiUPlpu1irqErg3Q29hHeLLVDjCod4cJDLbfoTRH2PvCGnIPeOomUiKL1YKM1Saft/MU4VH6I0Rk4ufVV0AP/7XcdtIPCYnnrGMeczpiIu4ISNXRXfR9MSIj6ut64JWflXZcHoiXnIopd/94+dijQhCggJ4pjMZW0anS1cC3mYgrnTD7mIAmVu8x3De7qM66gw6S8j4BEbndE3KpPqpsrDHl4dlDlYuBalyw/yNrBnsarqBOPncpd2cqtVIIDdUaaR+5auyJ4eeW1ggALDotMtmOjHaF0VDML1aIJXs6Cdhon6vdTmrWWEFleDe9UuDS5e7+zEoFsentIJN/1zI0MJl2LlesehnmsAi7t6FhGMZE6B3XRMSseCwpYaOf16jUZKU3wjf8dhMricraoO4HtGMskZmjRI6qyMwuV12WUqlB7JjAn7OBMqA5pFm9r5+urqdUl6m6xapXOS5gHbNd+G+RG1cuxBI9ZKx5E9HY3Ijks64zYXC2u7E1e4Vr4QO4tp+8XelpGgmZeobMHwlUYDCujs+gF7xXVZqStdxgfukJs9ctUdCWBIyzb1cDXlOW+w+jtSKCoGo+p3K7Ucvbu4eyjO1qnCQ+TqMQS5urH41VLsGKhhUyMqacAfZtesFtOscWVlUTHbmRlwwwZNJKrOHRFiqLMITSwQTCnZqZQM6hZUVoUeWwnmQpGV9iuhud1eeR3u3+UEdcuDr38JsZuhTYvpzFUjBm6pIUAcQvqMJmTdUFcH5pzPArLQi2BmcqNXJZCyRW/Jj4J6ozzkiHY7kqykpsDlmLtpTIjm0o5Xs7r3IFfAmNa/5A0axc9cQHlxj1qzv4NYNaNwYi8+aUswA/HLXFkIY+u0GutDhDuWHBlLop+NstfzQMDyWqFNbRIxMurxxkVZyY3gSbEl2j7g2+N8PbIzoQ60ioPjzr0eHvcBgbABmoshyKz2oawggJEpWHYhVFYpNbKS4lho3XJKLJ1arDXsMk9FFIvVgjJk+Niw0HCJqaKW/zorT6MoU/H1Q27UXII7YBfX5vuLaoahNovISWBlf0oRctFXCUc0PRIfLoZdiXRfJzuvN20X6T/q/3oh+0TCfcj1ENLfNYMGUl355uY2frzu95jOQ21J6xa7d3ToT/ejjhND0JcxBk9x49OqL/63h1360pt/1bxfrc2T4pvydqfk7tUkodpbdSCQDdVo+t8+eJKeJtZUQeILvOJS4lHXQs710tQcQ5IfOroxKxSjCgLa9cWy/fRlqIjBJLOoYIRhTXiThOvqx2pgUCevsqjRXvzrG+VoEe3EIbilAjY/oOCSgj73/fQ1YoR866SICdI+PeTBag7nLCIECd9XQLtlLYCSZ3t6OQ75ByOudwPEEex2M5082DR3w3FC2wunQQAyrkOSerD3ky2sHZ+oZSUkIZ49zEunCfGluTvogenAm2qznqkwHFldlonHAr16fpAkh4r6JY4T7NxNt14oG8MdNqHGGBIr4GMyrU7V+E4K5bTMjbsWevC6TnBeHi17RzgTspButr/6Ug5+ZuwndJR5/XHfMC9rFLKD4cTlHyxHmf798PIaAm9NCcdzyBaq8s1uazHHnU7w8ReOQU7C+dO6086iRmxPEaX+ERmTjXVGV7929Z34c4/mxvle104m9tGNB9B/ufSe0YxYNMxBC5A7UegNulr5X6aHGp3oE4VcCJNZmOz4aahelzjDmlOIJfBYZWW9swY5cIw6tNxLHRYVwIDuxliB+iQOIHo01r1VDV28JqZsO5mKCQHuKHook4scprM1qki9GdT9xa+bIjeLR/GSfHGG5aIbgaHzd1bLGjz9OuJBD4owCLO4EvbaURsb/VrT5bG59aZDHB0zNH2LPJOQdc3zT2AK7ykHiY7SjvR01WQDg6HtrPnpq+JPuvZ5Xg27V2kxGi7E6rpWx3H5CdkA0WudhJ7ouLSF71PnyhrmvSBJ1GBdOcLIOpWl03UCzrwLt5vAAYcvHrdntQRYbbacLBG6RCQNduYKD7fDUjM64haG+wKByMzcYqkEqhmRHzwCFoR77JMA8SPFA6x3GPB0t0XAtPVqi5ayEF1EDa3cs5RGbLNnIQQlX/GidhDT0dJC/rqZrCjoeuqlTpw9fQs2mPHWhir2NhBMPI4ZVJhnX2wY7CT4GxTXm2k9DgTkiTJ4F6MHBShdWc2STCfCYUZpJQ033OCQuTxod71tG5pOsVD3p8bQFuHKC16zZvWZ04sbvYQOfSH3QELs66hlqlbNYpwLPIFnriCHrOvuIRZqYXPbmpGAuHWvh93r2X1cNS9V6ipPjiJ/+FedZzP+4KtqveiVRnXfhcD26vPp/qSyis2b+duWl+kKTmIVIzrxt3PDrt8CqBYzQE1nquB4mTkt664G82RFpLZaA49xltPqpfaz+rVcDJNMiGmjuAdDWuEsmhaZYWtKtM8KEGqSCDfmFBWWHgGRmghrzId/MKgLJAFJcX1eI3MBeoES1yvoDRSdibUuNIqHOcU06AkKEaOE43F3zAOtijFOkeLZOFpnTY3MCAEQiwoa2f3GghYiw5ZhdSclIsg6qPB4XoqAKfQbxuQi4EA4O3wBCHX3m+wgZAeKzim0QqTJ9qTBZYbtYd3vxCPvPRaE96QvMMJCWRbHbMZV4Zk+Oh4KOgtVVFvlQYI4nClKUpruOROSQnMEsncl9Y5UKO0rJd1hDddNUdKAkxdUobglOr9a1H0b6bieD3iCa8WRhivBnPbZMIY3kWGW2+nNd3hTFC547BKrtqhhq6OFgK4ezCcTv2EVg0LO1ykURqBNDGgai3uFYkqsdgDwpBLjjrT2xoZ2l0jG26hP1RAZviGHltW4V3VmSj8940stFADMhXRWwEZU/FmfplrnCdVwAeE3Oo2h+8SBvNDPNyWY3D3AOw6glGXBgXN44jYA29XLBNwDoM/3NCrb0caBaY+HZu1A+F/8qgN9Z5rxA1B0GcuBsNIL+wkrA2JIXYSitWpCOtutmxgubEyh9D18roMVBOezaNK85CY8FVhk8KtB7pWy2UhfkVCGp41jzXXuf86LeW2qu4GeT0cCDaNrJqX7T8oKWLOWNwVtLZmCAZN1mNC1Os9DGKMkmfC2vXn2lB16FC2ej2RHJLvfXNmzomqsQNDnIeQVpDXL5oTFMmwnTEv/LS7GcJ/BoKlCxi2zQGIGRZOHaYVbBOw1SJLhf15TSAIfsrAcUjA51aEcUpF3m0UkfoQqFgau5y5VhIOc13BHJ5znb0Gd1OrK5iPfOMaZpENNuyWsCbq6z7HS1q6dW7hv6biH+9PSMQp3UO5hBTfggTCT9MdYXkhUdHXxkB/El9NEtglQrm4QkzT72Q5TpYbOjm0XZunnddewIXm50LLLsgy5+fRfnrjSv8HuxLMUdAOpbP+C6rGWYz5xjdTMiBoLMQcIw0n8GPiAD5ZuvDncV9S6lHnbkcGjEJNRiW2odbQl08rHClkhcpFtHkhQ41SRT3yjjYKXGbWpnlFGkKQBkwLI/erWUPQ62W01VyssLAIL5/R7alOa+bDFH5EeRrAPLH5M1K+ppbg70im0zU7nZ2y5MqsbRyc1Z6UmuGyUt4kFHNv95lhmXxLOhXXNqzA8auDN5VX5dCU+LdnNm1FA+vUGE6qsDttLXQWhOGiiTFMHFuhwdiUt+AHd4+uV/EbdXk28R41vRI1J6y/LuckN7lKFFvyF6VBv8xYYLqGgXpIPxLDYHNxQhoF5Hhi5+opAlPnWsRYSu9tzifFAYDuRtgJZzg1LE89rsagxazu3kagHk0AU9nomAZmdtVWHR1d8eA+Ec2bWX43MivdbO9mMWH1qnfX+jSf/fQEKBOn4x4hmdC+5xeAHtwWR3WCom7QOplRtXspb8OAxiXo+Z1KnKR0/r3lGMcNwTeY8lNreTITsX+zDVUSqAh7Z9k+QbDoc6EXDrgauOmGYjfwQKadG5VBFMhvxPEyKlq0qET4tv6zetXnovqEKkoEl8hnRY9WMPxICvpJDdz0SE/JWA9JZhUrMffFYDGS9vh9UaRSLP5FMf0qeNWYaPwotDUyLIJol5OYXgGqlczSHMvTB7Cejn/PTRLUktAVCMSVb+e0L4CDj5K+w/zFwe6NIM/9iMT5Y+vUsc8mm8Dk4+6KNNqIYR0NwuVIOa/hB++O7olhkVtAwt7+xeKCS0ptzoGdvrPfnv1g+1NeksyD3xN6KLPvV9ZOQVxEfz/rf0SNVdGl/9OTFCM/7dXVO30v3943T3TTq7PX5smizy6NV6FKQA1eTcXA7edQxD23qFlIshzZpP7dVyQ3nyeWiJwmn8Cn3wAXAPI8YbeaKVUKvuLRohrOCIqOWsNnSDfbVjmszlpXcbGfF1aL66LWSJwud8ZYwc3ZIj/zzgTOjUBc+NGpEOPBPcw3VIjVleDeCll9P1W2wYXPN124GV4rOteAi146WLoQcgEwQR0tAweV7GB1E0GWqDljE6lKegn6Q6UCXLDWqxZmImV07a5/jvB6Txe3F4saWkWMT6X47Mmx/9+oagH/1n7dqQC5hapytwwupgYfwyhK710oApUiTLy/WXiAJG7vyoySS7tMgqp8fuctPcYGF2OBglDRbn43zo1bNAVo7IfyXUR9EgUotGB/sEbrvfWX4cST0+pFVQ58yUit2FgHDYyrxdVtouYgfq7GD4IZfIsxQt8qXycOC/qYlhuhHM8Poqb2of1zyJBs2tp7tUcFzqU4Iz1iA7A/Y20+EB0eQ7aE4yC/two7uAtePx08KqDivnZfZUZWQnGzt7y8wjUxAWea7oBBkzW8zxm7vfLtb8BkhWa1+HCjA8QL8hna6LupXuHDmwA7YXLHpmZDC4WNKBT7R8+BnfPerNRKoJ/aOODgmYXmke+iWPWCjxZkriYQSBnWVtzllQ5uC71u49xWKD5wUXZrXsBHY8BGhRss9/bZUHGE726bkkQRNDJx1YVCC6uyiNCSe5rBOvTTvLVSiwiYSSA1rpPfY/AO4NkQvEIh7P1vC529abQx4TVosG8W2nj53uQx2bOH0ETWi4NKbopGlmWxXzMphpd3mXJOocMyvCDXSdsOBDCxLjeCGgr2SXZCirCEQyi7CZkuMBIIZAVo66f/ge0jcE5tCgxwtxIwf+VCAQopH/ImhrKNfBIONtJLAZZcPKksTRBIRoObthRpDjnBxhlL9qcImiCMNTBSrIAYT/Hqi8Gr1wqeq+l7+vxgIZCEADHPJ4qBW14DTESKxBWJKVshcc1xlBJmEV5fNtLfxY7yXV305IPTArRTOLCGDjIoGxEyCaDcZsEvfjBPPh5/GJtNefR49PDjyXRURyGllDDAZIxBksjZso0c8NW8goYrjgmBqBUMMSiLCJMlblnglUh38ur02KOb1/4GYeYKVFiXADaPwsFnpJ1Xro7pbOyGGgCIX4ECRx4qdJRBSBLmoRmGjCswmJjKFFXduWf7JJTvZaSyCC89pwdB1QpUFAAWPjN86+Irl5QW6Nu/IakH/w2Bu8n5dDMSENEmJTNIrwHSEC+FOKrpdPH0Ks1I8oot0NkkVe7ktJhXMIhpEJGOerXZZKcOQ1SIfKQYIohK3nw9muodp7A3MLnGkfp9lmkZwIBEzTn/7FMU/FoIpdZ3mBnnHpoj9deuLOAi+zstpsFpbdV7f4auQvnpmtB7yVJi44A2Hs6m0UUqRhYTWgcciQLrkoFWW7Sajz2bAUhL3WdNxy2yyGldRUAZrmZ8YRgBJgoIJGs8TXpm20xT00ZClArN7MFgbBDTIbM0hki2uGghGAnHk0T9VtbF7AM2oFWVBkv+CdtgnVgQHsTFfV216ChmABJTFVzC55pgF4AC6KamHCJQoAhxVTXA6TlSCEqJ4dtqZYF1jVMpSveQ/Kw7zT3iCr3rDujBSUMP2ZvjG1ckAf0Dro7WIPtfWzcpSK2e2AiRW4qHoUQDSD6bgYMeCiQTCpYGcCyab3znFQ97xJpDCaTvRvPqlZOy2PpxB+L1vcuC9xcmhDGFOU8/xvhiRyTeRDVGJC8ssx9a73YxK+ZU6Ltha75lY9qwpbbA02rQqQij536gUMmWg6cQWDFragVUAExQdRvfCEJRy06Gk6O7ilxkykLgmuDZmBH/M6vxQ6nZK2zwzy1yyaDEVBRKolrDgXXu7xwY8dfN20i06Q2mjH10TCOXo55RHCwXgxmNDOMYqcIjNwgvctOrza02pXR+KCZD9g/Hwp58J4hTB+7XoxLw5YcE8pTKHKgejD+Pqup8YFCDNqSpuclOnWL8ye6sLswjKANZfRgN6yUIqOo2SjnEovNhjDf1QqIeZhsJnpSiKB9L7LsPc3QznJuN1qi84SzJtPKZxD48rO9rplibR+flamP2jB3GY5hIlTBsa7D2v4wiz8iuJihMe294xwTFg88qjPSAUyaMoQwi/jYrVhmED6EDcUXeeqQ+5vPO3EzrSGyKWHYT3yMFxo66TIyZBlZOD6TI7RWO92KqLKaoNWKtJPrXGdZVK0Kx96zBwhxtzZKgQGAI30JhLWXZkLPUzLpE34NC91zbdoClUGvNt2GHKKQ3AFyNBekrc3xphPZHaYnvAJoQs1lAACib6DvDNIMjBSvENNJ1t6iRmq1EVUyYOgaNhHSWwTlyHO2GddqocBtiw6nms0fl8qgRZdKe1pHbuxOhJMMavxGxOdN89EkqW54RPrhOdrdH4nFNjj4KXUOQnQnDuOk+/4OZw5Sg8bCCRHJDQm9R44dziKjhVSlXgxwK8gk/9vTnt0SR57y7kCStEPawBFS1U2z8KJjq2YTIG7F4kliOn1t0fSSt5dP4Z7snVm0pTGAyTusZry2EMSbXkuWqSgm62e+WP13zBuMjp2VUrGqTSkzULEHJirwHtKb24oGzXPOktN0lQY+Lg59tbs2+F26Jw/2WFplLSVoK2sreSaJNiAaeIBwItnHhMLmw9tvHflRn6b7zpF5Z3cUd5mi3nzzWbJ/mPzF/OQTDrCGA/L4d59CrIYx7HGu9psqRAOzwViIkUDvYfFFFgfTuxroa6ssIecdNlbzi3I8UfmWQQ/Iif7LSWDISAU58apzCNuP4dHZCfgyyyR1Rnx2AIMMl3vs6HBY5XZZPaCjYZBwr47aiI03DWftNs4853GsFiF4Pe0ha/h9YVGBeky9GM6/1UIr/SNWN305T7Vtb2fclF9iBVQ75z/I72Y7iIlGU/LaoV8KckQd+5o+mp4aZ4V3w6CctlMcHGDHg4rzdhsp94D90PJSj5GMhdKAJbFukVIa5X6hcuCcF0Dg6Fhk5XJu5BlmGtbgtjMU53WQsQAhMJgxjEdCOS7vr6Bbr5BD7AVthE5FyMdadb5vSoTp73RAzPrTTUQ136fVUsc+eFy+NsXfRci3tdAU7AqdhLgW0ZKXufewe+d3ctBX3nRkSV5w4Xn9rShKUqIPZxsNxAAYe5hwOniyAcEi4cqIWb09pdymun4Q6Ez+OiBnzKqOR123tnkzECOdirToXPEsfXRKrjWZDX3pHy4+p18oFiJRWY4DcEERTVlQb7pHcONaL+laz9QIfkZC1fE6mTfs8zq7IMoHww4ZVI5A2Kl9pGzsh9o/igSLbYdL93hehAtTAaNlfIEC6p7PFNdFzJ4iEq1kWwoQ3SBOYXOuOntOnEz3YYym4HkMCgpprLi0WJQAGpBwRd/ZOdPiGrx/cAMfI66Q8hUcmxmId8xsGkOut4Hl83TmE/JbXyOVWzt12sLZsxO29htCXgYZePDejIV6PB1j28cbiC22CBX+o4xgkSf+ozpiBhGzSgvB+wRdFErkRsSRWGNBg5hlKoNOYEbqpFltz7XcuhkmxEUZQnSQpnsBd7HGN0E7BWuKnWAObaAgkvJ19uJD77hc0NA9CnGSH4LkSdKz1HQ54nou4dSzQLqYMixj7ugY4EZeSHkOJ0+c2VbPd7GLwnOUKl9kytny01RFQySQY5bqMfeOVueMwTT2llN+uxnQYo0S7AV8Rekp5KonRzGR4bJjcMhHP1YKCQyBjGhG0nTbNQDDXLDAk30uUjPvwlY2+LqArCbEZHPIQa36dKZSk0JDUkca/8jXzm6vyiHjBBurFEo0opLo3hjWK06Tftr6oagpyFvsKZAUwsbAg6qOQdH9aDr18/gL60XLRCzUgAw8ZKLPOk648xpHWFgSa/TxtRkVpRXLjZCqCHFT3vMIOmRAimNeBuxhwX4xM6qp9aK+Mn5pAhgk3mleohATy2Y2zlz+uptmFafn9lH9YfCMwt3qoQS10ZVbvk782d4m1KEYc9/VJn9dXgziy3Nkv3bH+hfTJbKRHx35djSTpefozRG+7J1s9vdp/38rN4cOSK4R4MrH+s6SNlpdVUWdLLrDaXxtk+kiHVkzOyBBiUJowwrL5pDSUUhjgVkEdMAlETaTuOLIYOt/V7ds0NaBYhVEfP9E2d8/6X3gKwDZcjXyB3Yc3BA6fkKS4pI++L5oxJmSxMP5pdI0nVcb/uky8MfOryExuRhRrHFn8uJUsKO8wmGdHgIGp9N9HO3pcHGmXkaZn4KRkbUYrXlAxe/wmNkYUlVmlKM66DAs3UCPNjFUEUd1Xijuio6e0+0SmgOZBtNx4JAWN3IUWAesklPc83sD2WLw5TS7kx0DiqvAyfIOMLK6d6jCM/yshLtlflwq4/9SHLD8Ss0KpWNuUrrDjdBEBWrTOKUa6Uk7u+7YePgfaDTYddMswNeQL2qXRvd3A5lC0q8ITpVgjjW+9rDPCtGP3/fnxvXiXRHT+psWmbrdqI50aEYmXEfcPk0w9sEvDoDK+qdH9++S96mk5lGGvL++rCTZGYK4E59ZwWw8PuohB3j4ynZZXdCiBt0tAI+nKu9jivLh4dGhb7wep8yR4MflaERZqfyULOW15hpLZOlW4DPRgrsqG+eF0HQ2KbWSB5KiI5WbDNEr0xjPmFvWKiE2YlIhbxrqTmJtuSXChN6XnJFqJK2wOmG60ENbnr57LYB3RGSp5mgr9pq1IF0IxjzH9eYt+HRL13IFRVWxuL02mGySy8I3gTNOpdJLR4/x0IvCAXXQzYCVcGkgwaDqDAr3uhOjZbG34Ee+XNC3noIo5EhtoTfDM7+ZHwOr6yqDSCgrgnME1dMwrl1pLL8gPRWV3iYTTxvvUEhvoV7mpJLMzxl8z39IGfzR8B8XqkpAEkUD8BGaKYLuGV3isAiUqoGGPTc3yOpr+OEAWpRViWANa8P+izJapMGrB4kH81fT9bOouDUFx2fjZSODOEa8GeGhYMa8cIptBXBhJawfaZJrOgO3hUuhVYekMKEYPhF8/QGOcENBl96sA73cevoyTPJH2qFmCDXYJjctK+WBoLvScKTVykD+n4u0mJ2H+B7Cg8py736cpAtws6IjvUUK8Y6tIn2OxQ3IM9WQ6yzUt6xPeFMOblnrgBNqgFpAZMA9jWgmXeohtCj3E4V7gI9F5FSs/Y4em+chCFlV13fAXc8y50uoaNfgKH7OTnv8yYGY1PpEpVm3QeoeTiVFtM5moyf7wYtFFPDlrHLbiIh7X2I1PN2XBweHRj1w4/CxJ1EdA3I1gof5nRRZIhxuj7ZEyCM+w3+iNt1xbqfaMn6cBb9FXLNYLjEOKVkbEwA1C7CF6Yvk7EpX+pJs2Zpohmzo/jE2qT1v0KKrXH3s4XaT1TtCpjDuFAcejtaxiNXXkSDQ5Zp4y2qmGY9a7uGYTUzggUTeaUpomuaM1LvMikBrQSEAwGLFreK8yUUUz1T8o26VDFN0ItN+zZUFJ9wVFVhdt9AgGG4QO+mVHxLfUH72izVpOf+02wdSQGB7MzVGdh+UC+zw0Ux/axx2BlgyKzjvfeCO1ny8kdEDr+m/mFG9NvPagouWLr2Y3A9TiozJvaXcdV8QOxm73kWayLdOCDIhXpxR3Xy/zaDZW5TmPcTpV9cL5NeTFficiaNdcwhwtbd+ANFhV5Lku0kwJx+WKexiF3IITMFunNZiD38aC7HNNZiSmn8qsTdCUAtacdSncsy305/uHFOvVyYvbnPs9WfjEtiJZMFwAodMcqZwuhEcbrLDpx2T98l7Xn/KOuu0pGVO9YpJOOD7sAju4bZiw5kWJX8chwVJlgeujcXT12vfjNlIW15/YmdzeaUto7XYdVfI98mFak1jCJHGYzr4aRKyHat8KQCb1NNv+ewwJNdjMDtAaWRp5ho02huUY/DEq/rD4Pdz06BhFhBIqKOsQRGP56xTCjfm7vJyd1aA8X5KzeVyY65RJdQQ4GKjYUA92xPs+rB42iAAg6bPLBV2s44QtpTYXsNg0OU6BUDSXEe0yk5T7hPTC4ZbCQYeRfW68v4OjRATAg0CZ8NgGCeKwZUO3aWfe6qxmmULGy3XEaTrz4aefi+11+GRi6PwEn770lK6WO0JhCD1CIFtRayvC208MyXk3dTf6ChnKUw7/ywjOaaTA3E4WyLeiHp/6+quKNvfi28gGJZiLY3OaJA6JBINSZRSHbysO8OMOOdLTgosVR0xWNbdUDUdp6HZeL+RfXcGsOVkxNFFXowQXO75JW/MJO5gGd8/7JihR5LgRjH+wtg4ijdh0jdORm45kelxJotqRQRv61019R/IaO7amSqcefFKt7DpcTEEnBtDUtrwBqqeKVAoF8nfcAcqi6nphDTg3j4FX8n5zVdpIdyF6DWjEHcT1NSsJze1LXUp4cJ8bqLsjEjn/JDmiQMoSpUIweuX9PPjiaHF97F2WDkXknRXaG+OuSH+TgEX02HH1Gn290XtyjpBNwOjYUWN1Hzun8F2IIIGo+D0Yc/aF356dkwP8m8RLcY1JzL49We+/wEzm+u2o+7L99jyyDN+gG/Nvw0963FGfrGWgK3E7jrjb/rXQpQndiWBWb/czMxEzneDmC0yNDfdC9GO6/wGrjQ1eKP3KWz7Pj/ki7/PP+VXu7bYO+WNe8l95zV9z9W344lfIdfkuxE3eB+/v8w3+SQJYRrnZfyLFehwJSvQCy5644uCCbwzZqkRgOwre2dU0uCOwUlxEqNEkb5ey/FafiH0pWh95S9Tup075XH1rM8RhRg+VNn+FjN0qhj/YcvwiCbebgmfMhSYvx2UMWYox+614EJRZi+1UMaljsxrBjAFe/EowWtVTYzUnS2FSqfx9wlRK+rts2JROvKr1wkVvW1Vc5l34vgWYphtiZMTa61Txha5aoaCVPdqjhPsFURv8cg0KrBMTWj0s4x9ArljnQoJam2o37ilZt3iYLWOcfPQo5paoi4Rhkyu3vXfCDlMiAc2u5E4AL7HCGqbUb8c+wBxtHENlmWRcdjJV4OeL1jh5KNwfJ+v1NfR4lToW9n6mKL5mifNhqX5GcpPQPW7KQoPHrxn0OArwHYALduBAWTt/KcxqkEl7D4IafjYU364hopEFI2+qVCU2iGPk1dIYuNtUCJ2A12TlcWoHNinFOIvELV5Kq7IUL6XnyeamdE1ThC+gXDcUnvY0obR9eFV2SbgT7Dycl6kodeE1jSjlqOFuJQ33h6G9YBkFtb54NJ2W9GOYnjK+hIx0URWWfJHz94f0AKU2km0kRZBi4VwkWKPA/HrhY0cXvDVPyQSh2tRUSny5hrgxUmBasAgaHtbdgOYGyTOm08WZY1IcL8Qb5W2ygwvhNx0NdJwG+K3FVYxHUHSOyMOR8p9HuL/xAYEmo4W7okmW89yvHWJga2LOsBDZg0xBeaO4mrMlf+33C8n32gBqO95F5bj2YnJObeIsU76VA8i9HUZ1yVpWsXwIXY3ErR/x9ydsxq13l1pHKcJPmbOF94vZdziCnWYuIpblx8SvQsH9COA6ddAU3qTwzopJsjFTvpUj6UjRJ8OHe8ihhPPma52L6ULjx1tTaI9djzfNwZM3g/IW4vBGUG4j1C3pOiYlvdnptXoDYIYIicdI0dxNbGlux0T8tt5woPknskp/gg2r/YhlCU5vZfWacYXveE8RE1THGhpFbz1sK1v+rjB4uIFV0Awx2jEb8xrYo3eTAEWb/duzX7/vJ9oXjuM73+XlnCLTLfSD79oZJJ4FGU6U8ibJe7jbs8VwQ7VqXsam6bFO+E+8jcYrM06I+diR1i+xDW+wsmPFW+FAD6r/1vpefsbZHEFeqavi3MClk5TM9gI4mnMR3q/S46ZvcStHmlVjXjOupGCSGw9Ma4gi+xpwhrd86F77VaNHAKBKBF/1NROyo0lTl8lxry7f+MHf55VnZBJFrTVEJfwxcBMKRtF4AYqXc9rH+yFtJRg6xp5lgYx3mPnQDgp6QDsIUexARDoUYpoPskbftrS3YC9KzbBgJOrBFdeBu8IpjsAmr2PaqszmBahkYlLArKqNoFezELokqQQqijZ+WhpqTYkwVjWDwG0zMQ6FaKnH3AyaK9D74oby5hmac7amk0RK5FRvA1sSOd1PZFCz2FltbzpOTD7JMctMqi8dVmazqd/G6BANDK/e6mO6i72MQHH7B4qtIhsm/iZ65v0glwklSLh/SD1LVZmQkVYJlz2U667AOsJAE1XnLSEzsxjDgNT6QpmUwtbJ9EXBMruc7Le9CzVlYKiDAqotuBV03Ugko1g2w0N6nI4opK6fsRL4oDnGSD09IrKYSB4hBcyalktjt21bYfLUDVm71AO146LLYpWEVUOQDXib7ftI1/JDyg2D3LVSGksvYb41qvEmL1pH3vxqnKR+R580QGFHYWzQHMxedzg8zEHNXLoKYhO3wxXDUIaxtSKUpa2iKTRhwj01RH2CBslxp3GsUTeVhH07v+ose4G61OU1xfjnSQFFcR4WYkYUArgSKbfNFOkKn6nsz7oWduhT7Bk4tplLlEhvKUYOlfK48uax5XrIi4VUeHgQuWC23LmvpGo3oolb58zE4ta/LJvflNLHgjG16xWJ8x2hnEt9ycmxGnVoi/C+8YGHA6UBkr/NI3LT21UWwxfZKBhAYK6acD0LtUZ8GF7MuyA0BAP25r/vu6Glrf3F32ctXDE8IYvn9F15TwCSHeaRKI1OQ0SvXhEl3k6llj/IZ81hf/aD7lhxWW107bylYqRD117/ILaAE03JRBnmNUjtbDLbXSXyca6uR+07yA9cn7jQamnX6EBWuByUEx3IVm2f2vHyFgVOHWJXBCBspm41Gu5O367Iu/6iPtqh4f5OygwJaZS3+Y2/lG6P6246VlLV1fdC1aScU3yJcEgc2FbY1BqgqvP8kDIxvaO4tKFKiBysyJL4YVrVexnhWimYpmnKGG1ufQQpDuyT4rFXzQ1lKD03HFoe+BqJzrVsgLV8I2W96wueR9oVvGxMzqCV14Dnq7uJ4Qodb7KRrYIUztppBj8b6dDgaL1eP/YgxzzIqiWDycgou+vHjIOpCQlqTpiMebwx5Ui5QKQEhU2v+QksAbK2/H66D7n7UlLap29KudSVcqkrtaVRqS2NSqWUS6WUS11pXOpK41JfmpT60sTtfg78xuAd20f/QXdPMGMPRIxW5NmwYbd+drJZID0Jzi23S4bwr9rDJZ3KBZadczKJvgs8jf+hU+D+YiEYcmf7Bc9CN9preC+qBS7YmV//xiSXdLqIZqLPp030c2biIx033Jmm55Pt+ovf1Ofr0HyfEzPocLDXoO8DHmQMxTkYe6InTxrxzs4Ysr2F92WVkUeMX/j3LWHqkWKvVwwhvQvC9wATlcQg72OeoyhdPV1mRb7o0tnwqKelvSPLDPtwSyB8GOaqwQZyoUfYoLa0jYI2oZzFVd1RhAJ5UywUchXelk68/cHzEqD4wAdUwUlpSQ2d2HcEaS0j6ppN49zh9GPr973AWk6b2TKilt9YchTIBLRPBCMp8la5oIELdv9Md+8X4lX6IAG6CLelrsd296eXcVLu6YqoRpQvbghqS862e7soErYfjAZGJvlbidyq839jltnfWDX0GtD5I59cBuRFEJBPwn8OgwZwPba7P72Upuwxhyyasc25fIe9sFfBy4htcKihSAtBWV+L0qDFQqAHtN5lfjM2h3lcz3GHnHToBYFIUn3Bxl+INmmVTtYGpz+dD9/mPQCi8JOnVeMnxtL3ycIp1fUT51MaKDj6jmDTM4MQCnmI1L/LU8bUqQbKoMJQFdRmzIBdqj+7dJDB97k7dUDP+JqgnBO12R/iCu1QVJyGtd/ez4c0UXj8vH94qDjTE0XbLsjQ1hWznNdQjLmljaRrDNir5cQ43VwjG9I+nICbrqp0z0ngCgs3EAHY+LU9qd+EVRurg7BrIbsTWXxXEtPpAuAO8tDAPQ3yPNDWvsEFZgW1mPyqveFBOxwfrr+Ml+dCAQUjnZBSL/FHvaOlXlNH8Hlic92eOp51K0Rkuf6wIas+NcEDqddGf5cxYq41GiwAaTezpgfL3zJDVzlWdETYI5GMGJ+3jXc4V3CD9srx7V3vAWOZYBOgQ5e2YfsunDHcnhjc3aGoHsYmmEZh5dy0AZd9DXC3fLr/xyi9ulDdPIpFLlELO8xqEPrsb2k+ykg1mUeJFZ4Hdl4l0Hmv03b/4PoaJbrI1hB9GWkMTYlupatXwY8OEi0CNHEEVDZOCPt6KnN5pjQlwYX09qVJ+ChWg+NNhfFk2F8mlSenhDfQyaX6Zpsik47YUXphB6HAubiVaPWkOp3/MequolgxJklbh9rrq2maqENJsCQVO2ZOT8BIF8KWDQBDAvhCeapjyY8zO8LXl3OKxxawXJl/EWUq1ZrRw53Bybk1pxPqlFtYk4xgB6dUwLajQNCnoUvlrUYj57XV7ApqH7oXjGeZ6t594EVlaVliyQtAUkBEvp0Jqy2bMT9WUWTwZ0sRTMXYfmPN1Ghsmm4lL3PBPSQINT1t8Pt9dJU6ED8+DpLFnQseCUqzeL83wX1aup0Glf7qiJXkKa0y5WJh2Jn5vpkjeM1cwBcwVui235+SP6pbNA/3Qeiytun3d4tVl+lGzpT/hnBnKx9lbgsdP9i4/NASZvZED+DqjKeLP9z+Mf3kdijZEznRtzurPNL2QX/Hz4ypitodSfchEYEV1wnWkdHHKdDfuoQA3dzxfEgk/vMHC7XYmAXXzuPlDNLjNV40j8t0ahhTqsViC6uC0XEzrGz16eLGsf23s3EOvhfTpmHvdBn8bPufN/MaL9o1JSIvzoG8FsRLjfPkhbZ69bIYZ9gFs1dMC6TF+o4paxF/TS3SzMKPSUJj4L2Ytq/FtHUAdWmRY9xzpveq8GR0j3X9x1QkE8PLpvtGfrVomjbV9Mc2eNJvwSzeJnuyMj2mIqGdwYY+ZXGUDh818A4k0HcQvoIuha4JSicJVTCGqpbQYZLFa9+5Fjx2jaG4Wr0mjcHpvPITgQKEeSYsjJeCPRa2EMTmTWLhLYqM2xhFqg9xJ7KXi+KHxAU8iJ23E76QhPcm8Sf8A/o00jhZVoSDOFvWDWh80aba827KJmL1mzUhAJC5RruVyeRd0bybU3I9/SQcjxbvBBx4wXO3a1dC4py/8qRAheJ2vIjf+f95fAiv+fR1vZdXxVjNnd5LuRcXfyeDaokwuismr4SU9aGYF2wjwLs4lZtODBdFbT6xz7eBDsd52hT8eRt+GI1Rfkvv81PVX5ZFTu8ADneici4wT0PVckoY40joK7GC2OkMZHl+2wYqNpub5Uzw1VvuHeli4+dHm67JKpKNKgp/jtFo5RXjnw/dA7Nhhw5K05hobTzaOJyPPLlo7C1QqyHYzZ7bUvvniQo+1DjwUAdoIf24TrXIT+vGnQtY++7npPFn91EQJXQ1k1uBKpkXrCjiJ2LwdkLKcincc3HtXYve6wUXWLinYuttiw63RRRJDjGI6EXhC0mM3kk8eU9xZ+iXzdDWYBrmCJ1E0viCd+lu9zI1MoxNm1C886RQOPZB3Ix91fEgcifgwOND2pVoSS+QswJ5RYkU6uLOH7zdDuHNS/N8kyejy6N13kttkd1oL2p/wPm4fCXFn0WD3Z9yPBv2m2m/MRCCI37K1MrcUla1d6jDDtxuoRjuLHRCg37qKRa8jKkTgkDijqNHU0Wb6IIWg3YY8s7TuqIoIc8TUBRDYj4q3g9MsDcc6GGCevcLpSQ1dK1Oq+WdkDvYeXZUkMulezsX/wyJjOdrFAi0kIA94bG/HAG7dfL89nkQFxdjoIUE7AljjAEXhAl4YMCeMMZYnoDy9aRl04jzCvgNKsBvUAH+ShHgeyEtR7GPRpLJrZHx+PvxZTKe9OWO8FTJO+H5SJvlMIhvEHjIegZUkh1Xff0/z9swDthR/RrOeHjsYKxf8KKB5CJh2ww/nDFwTOzMjzwLU90JHq+C67bffmvJt0svSvo5NbF/BxId37AyRu02PCdl4l3/PNL0DxywqzqfijvvTthCEGfvJEI5dK8wz4R6USQvCSmIME/FvrAXUIdYbbsm4TnUEhRVrydofNGpjo/fprwze7Q/5bijFNWLw5ywYv2rK0uHdPRCiSsRYfna6z0poRIWYX7yao8P4vVjVIwfP7YyGp3SoJ9FoER3fnd7NDdIaYGJ1Ce2XvF9vhnzAlV7Xxcz7lzQUE9DZrmzAzXftpmY+/XjlLbnbgQWrROVnh0P9wiRq/tLhCEHd/lfiHSM2k4It2RhBnCYMl6712VENbnicdUolozdYYJcVGmC2D3sWS3XPjmX+IKCoUNCFMtMEqduPkFGLHW4K97GKqAjZ1aMBhLc0pwHK0+gZ7xm7I0LxTFbFDU0iM2xtn06MTtDcW5C5HxKrUVry1WiKPa0SMvcy9tDewbIBDwU1BiZ0RqiMlsTO8yIYxHMEC+dONybK+fTyyeUt4CSA+S8YuJ4b16c0nueON2bv07vvU1c3Zs7Z/aOQsu2M8upoAjI1FKAdpkw9UJ3IcaqTmHhuaRYhvT5ODJGyju8ZVwcV/YEZzGhLE7146+abRBiBLYExo98fzz4CBUrtGEcuGpnDpGllA0NSKEAFZRPhXhSpP0hKsXgDaLaoUvS6ThlEvmzxJK1qtPMw3oFI3AIV5pXSFPHrDgeMN+Kgz2JcsOJK5S3LDe6A3Dah+lpTmmZ6gry0feC+px2mUMHRKRA+5b9OyO5g3B8JkwxwzkYMHqV64Xgy3iqL7u6v8Ghkrtp1gdJNkDc5H0nEGxILiKQWe7OIspxIWQ56PmEi5q+gfGtzLYMSovG8bbjpsYZYBvaBoKbvkmKS29UzBiADfOQicO9uXI+vWJCeQsoOUDOe5443psXp/TeJk735q/Te8eJq3tz58yiczKhIIaOcfhVbIpZMpJWnoz0dQK8KWwT+fjmY7Fzj6abp7SUEyjqyD5jYFrPpbia6MiwhI4MQbD1BS02kAiesdSAISop2ohxRYSGeiqCZw2Vgw9RvCJSwevf5AX8aLlgOpxBGWZJZcmskSANBLgb+H2T1mN7w4zQ1mK+55RgVqtuLxvU4OPTB2aF2QjTVmdB0fPd62j1qSz0h/T5Aa8g61hQfpjuFtzhcfbscC+YsrUuLaJv550mtv2jcOYtkXTwElskOkdG5VP12jpmNfep7E7Haa2YeYCcAV2OUeM7Fl1SgOgb61ANUBvXnPY8K0zBWMYYV2bGfktrVQBlCbbaSMXlVUw+RXQyEQ2RmG8F1RJE2KqptspmfEkG04kuzNOhVgDBtb91m2DZfN/ZHFl5ShOn0eUuTurB34xgEX5ZicFBvwzWamhEs2tohLNhuaGm867E6P6jkwSXPZDdvrlVBDnFlP+mqeULyLZbhJ7lAsSEUvV77kY1YxBPrq4P8U6zR11V5B5fWKYYF8lBliw0ZTma4QtCirThLqd10iIVvscGCAQhA/ghx7gdxq7oNJPJpZZesAYKdyCohXy2qG0i4cPkPLk/bXLRO4wT3eEQDeO8uXOh8paKIWar3HuDTSqdtarIM8k64EJF0VdSBiUDHDuPBtzM2q6kcJ7fz/Caj0ruq0lQn7AQqGI5dN0IFogg+WEITLcqHdtoMd8LuUxfPpzGTaATm8pUm6TPSU6qw1J91dRBCTj3vQzNvlqK71eJxRVrN4eE9r6wyUC0vVbvUGBDyz1V3Qf0NdSjADBTYS4Mw0ZGnynAY5BbwU7wFNA+5TzISruIwaflZXXo0IVGtvf+OwTE68qP7po6b9LpgF/SiXGSjOI6PAhEQPqmkdfpPOoxuRSqWmiDHafQgdBE4Y6GUfxlikqD0S4w4Z5i4y7xvzekfN/4EJh2i0TNiPAdVFVUZ2vj00FlMY3siPFnBvViCWeknvZ6OrWlft/M+Gt5KRcW69UWOMPbptKcjcSkp4ATL5BJETSRha+dtWO7K/S940ZBkVg6vp+mYD8Qm7WKdm7ONHAcUtsTprioYOiWpTe35R2+5hU7xeDbkVQTxmXY4dGdpmMBL3NzZSSh+NofTSpVzhjO895oQWAcUybu2rnIVi6GPDrkAGYfBCLj/RV9cGdg2+9erO1oaKlKuhnbii06aptpxFO4a4eIxxbDVHrx/vSaS95xHJ8bvcA7qkbLDqlrt85UcmERctY+3GhtbbLw0zPaGrSliurPJQEt0eK7iFnwrikQ3YVBLSKnBQIT2pdFXSTTYgt7H1b+kH1CyrKdNCLn1Rt3NzBmztPlEnLxRpAwsuYsxyOJr5HjG4Fga2tkeH8kDsT8xiF1uCmTnTpyoxfkjooT5ajMmZWGMXZeoM39G7RiqWXtiVGSOFjzb2XDycVng5a4+Q4aaQTsNkB4de/m7VcHNyemYGvaIjwYdUZLaJKmqx7Qgv/Tv3rJ5IjdFgbJ2dzHYr6fTDVIhLkZsFLaYdgbQEuvJnV1r3N2dazqo0BSSL3qbmyWelH8U3nyXk5ydBopCjyggMUdo+WHnVIzn0ZfA9gQ4JNRXrW9GH04nqpbLiMFIY9bPNF+v9ACN9f0G1NsXWHk1rW5eho63W5bG0pzI+U5LNQeH7pfQkb7mWdBam7mtfjsPe6penc9T1/jSJQ/6VQaMhWLVL7O4tfxoe1Y0PzXOvya7ij+nL8+HlXvv7zslVnSbdLpw9qT83J1ZZX/Hm/qUitqEt2EMmE3sUxKXAUITIg3CZmQJgUCfNKa/04RISdQ4XAJMji38eIsKWlOIhMVy/wUA6WX2/04sh4RfZri5JPI1HrNr8n0uUaQ4PjTV0DZ5b9t0Tjg8UaLv1/NiM1Dax9P/8/34/vOfn9OcfzdNfzKSvzX0dXj/9aWHMVzruxnDCJzTJSyIlV5XXPXwpp+F/oaEZcci1uRbfPGfgLrr78lafgyBc/2GspIjvazdGUX9rW3yCwnSXRS4U4LW0o87gziLgcn7jUgVMhnQB9HOH3n3QhfwZdXhxpglZwWLhhvQH4spOA94NgEFuivMyX2s64YAOUkCS2pbI/ow3vDSl00S6PnYLaOeQw2OCygHpW9wFC18wPSqQHhoiw0ll/SVlM3dBwX2sWNkxxmhT8DUPDSnigMFVZDbhamPuokUO67yTAiA/S3PuDK76hsa7ZqcYxUxGbDeb6Lxmhz5LPA+hmggP7xaKG7qybcA+fg1FfAeXRQ+jxVZNOUYy9ctKbHa1PCJJy72iqMGAWXahsUUkIZPDMVQ/MaC6Tf9MmLrb+PbGpWSPNvVZK03ygNASystrGzsoD8KMzIFT5WC2pH0i5CND4s+KgJfm+YWPA1UuggG4mFxLa7k0BlKIpHieAhlnp3PLUB3r9syCya2MNmvEF85m2Hc6hYOTkVax6KPUu0YIomqXEGyYxdL7D+D6Jq4pcHLAjpnmtJcEsckw8IYmWwS61IEHmpoP2zPukzwS6RZ8PL+hcVwqm0DhWjNN0sMHSgP3aDiJQZiXtDVoWT8MWMIU4j0jTydjVcMrT3gl6knjWyoFkVlZle74QHoAGQL8yQXvd1kytux4je8uqmtTWB8GrK2wdbCTcNtJPL/wCIiRltp6TD0QI7rb1sJ8y1j9a4pdHbU0JaI6nCig0yYQxlW9wuLd6pR1olsY1jCs3EzFV9mIciXW5n17Fs/2JiJwrsEFcBfHBxwEGAnaKtVlU7hseSHLUvBOkQ3VpJ7iEGsI9xGathaVWQMIF9QKLJa9eQKoD7zIrvOPhssCvWgodvVjZLRiLsfskGttUYpQuUhDLqeF38/jtMFgZrnSYczxD5p6aV4/OnPnpS6/1/ypolSdopQJuVs/TADmmrmbZp44DV5ebuUCIL0pV2cnoMutbo19INDcJl29oj9UIiaOWXkFWEshEQjS81/TA4zssMiE9v+UIjgWOYQSecQXcoLehYKaBUPPGoAE/GIU88KmCMeIQ1/Rd9LhRUIjK2BiAEaHAsu3Th9SSwW1Uscpx+whqgEL70sfPFj7psdMny/LEJeILq7iO55d78FMqihWllv/6wARgzSkLqKv+n4GbwEr2+qUc6ndYSiPaY1ftGfEYNedYT+2SstDe3ebhYbC+JDxMkpJcRmV4uaeENA3rT9cDthCUmwm0uhUVW5dKVjdtkNcZUErEhOMKmp+Rf+oAXdZXTx+CAwzl9PmDnzqTq3USNOx1H6gC90oRjRimAR9Aw+WT8nXhkMYe9NsCYBggNmo9bNGboJcL9xDzl0R2tgzS3lR9LYgCqpSE6sKheWOA9wlkR6/+O+slKwTMW593pGv0NJXuKEhfbp73vfy8ponp8W6iTKpCshlb0EEmqY9TZiS0QLgmJAcZbuT64VjInymZQfCFGtkdEQGWbh20ti/UOkd0hLegmacInHY/R/w+N9VIy8hai2A3xp8v/QdJONzF933Z9gIl6/GfdxueWOC7sazCuH+Og5M6bE8KUIcwhdUt+tm41mK8CfvaIyU4jm+8v6s8dMLsFhxbMl7qJKdb2aDEHjfj2m1/q/bbj3vXyIzwtA2gCfQoDyK4DlQHAMFbL2aa22NYZ2TrdDl1Ja2wYAnIrMDML8jXmzON/2lFlXielZiLXUWGyGAevJXGJUmhhT6EVJs1wQVpmaO1HjBJqW8U/w97PKgm3B+zQsyaA84HMTpPQ7DmppZBM6OJkaDAoB6aENj9Ndt4kr68tQRkTRUilyUrqWBP2vq+NflCC3pUOc0W44/GgRrRaEGhV/wcOvhU9+8WWUmn+hC9URb6TqVHF8h4GCD7gj1KwmGpI8q6HRaq0Y0YOs45Yt+KhK/XVmOgSJhYz9Ua9O9W31ejm9VCEC7ztgeIunu9XVi0DrN2vj+in368Q1BiGZtO2rSZRDjDiweVsypc9w7m+MVP2HyDy+xNtnnsYE5xtBSfMkr6nwj6ApFbRPacPSnszgnKrvQJtEiPrwCrjcuAjhLSXTDV3rZ5SgmD4VmU2wO3OCrhEUiAoXFNYHn4VY5iglO757tatlC9QmDm9yAQxvZ7TE2AKS0tJhQYdpK8rsp8ETAnH8KQ7d4WNfmcdN4UIrt1Eme3eKWPthK0RyDDdu3KA2ZXbyUATHXw0mAICRivMHhR5bIphyCKSNod3hQ8TPaEnGyIjbPppOCNYM/Uw/ndEO4BTdA9zZQ0c8ehSZP3L5jrsSI0J+O9ix2TNR5GryOEuHzfK3XHEwU7j7xSLwPhA4WdIV40qM4Bvn1h7KsWAoSGNDQC3UVeWPlo0FUDNj9JOzanDmiBwZJwAt3hzJFRi8D8Gmj+ujK8jM5+C7k7aCSHCI3ZAt4txI81vYvGOG35dharIZhXOgMBNo5qJudkYaDYdxdb5QIEBFqKfnkI6QvvrducDR2cvMbUpSZ6Cwi3mh25DftZAZLF7LVgZE1aVCV4Gm2+Bx4JTgBEkWhbrsUebJzA/bptb9K3mgwxVwCwsoxLseT9cbjSBvgCZlyrL5XsmLA8xaV7CGAZW4FLYo2wiV8EKmJyIih4Lou/gLzWzjt0ydTTei38BPoWZDznJnWAQwiIMQNPs3+XrZdZNhto5ynSVCISl3HM8G/DsS5MnJqgMrziQNyABUT1PvQBoUawGt65jMneZ0NLcH+fDSCW0/0Uo1hw9iLEtkD4GxCIn6dzjXny0n7447lU9/zdLsrndWweMJV7UYgw8irOMc2AIlkgIO6A4WZ2SJFRjNyywDhOvMs07PfjSyIOpQaBWJdh7ZGSXuOPevuWElvIcweRaW4nMrKgjCTFcpnbgNEpodg7kpjlxv8kNDblSqdmCspHtEI715e5PN3Oq+S7SuaLRaN6ssAHt+cnt3luZn1icywD6mCL9vGU/EOduxCC1YP5b2FmHXbMKc5uiUqmhaaZHSaN2LKCc4yrEvbsTXA5KumOlHO7dSa3gq+F+KeCWFHSD7Bzwd6+BWCruCICqj5ASUGsCCsmJ7ht+hyNkg1xEZKBiPu6/juJWemwb45B7GLUSgq5uejsdvmXL8UdYTlNFivKygMiDbRlaOG3G4PZD5K+MSmFnIjC5fSraE3/gzj7/Mz/d1LoZzCCb0583s8CQNKiq19JGD4XI8zK2KT8JHCCxcEN07i+EDWMfGjs+GCvaGrm+mxfRWmib8FawsKJ4LY9IyHTXhr3JROAOrA6jcBIJzK9xqZCI8AUTrX5TEaORcwRE/VA5lTeyZKAo9sboyY2CdYsSp4mpY5nYBu9dxZuCJjOJTMm5ibo3KfYPk2hpMyZ7Hzdo7XBlX1b9rJ1qhvKaHRxCSnzqvZcmmAHzq2rguqZjEX+eFbqeLgmGfTCvshvFtqL72OR1a/ELtwpgFtciKh2d4VJxKQRPES2wUNrKaMBYqyHx/3Ebas/YmBGC546XZcGVIbEVnZz67p8CjU/UX6S+eUGGkj2bblDJaxhNI09aC4yTFTbKats7qfWbqwy/rfhjXBRMZ/ILeO0lgczV+un5SDXqJp/rSFC8iGIEobwI7aCS1Z67xeU1T7rHpFQWQWlBplMzcZ9TVl0VlAvZEQk6YSB5m4Vlo6Kmb7RYciPB5v5J6lNB8YdEvI61mbi4S2ftZeQXgUM/3fgrUnLYaZPrKdnKmvPVHJhQn8bYPIJzxKLtglxtMai5URZ3WgIxpyOMw3rrqhTpVDLf0RrbPl13mNkkxbyf9oowXAlnWc6/vlfTUkNXuC967z+8KwSLO8E+EtIYtl70UYZYbrXRPSgk1FSBVTW++ZVi+9GbwbS2ghCrWJPKOCqcd4WnydIQROf3zZMf1lVioTZ5pgXImkjMzf54WbLM1WzR7I9+P6JwVhLhuKEyI2UuCn1G+65QYw0wwgfB8EaZq0HvRsTqIaB/5iWP41KtDkbUsWXQUGS+VoZ7LLyPptS6SnAsdo0E7tb6LjNN8OAumnhxFQmmCogYSOnEneZAQHNsf2YNfmnDDADmdIiSGP4mxE4Dmox1MQgUQ6ko/gXDI9w2NYKBqsZlqaqADWfVrjwrP6tC+G4skeOr5m3xXslYI4BUbRGFdJQ7hTKmmyBhqkrXqSlRmgav6ZinEf3E3WSjeLxJ59sFDpt448Y7RIiStaIjghAs6Ju39KHo870ufxFjclJWIWY+EZ8jTpybhplOGMyUAICPUjsWyYxv8rT667tEu6Q+bT0X2FuEoiR/HK2MXAY7sBBOamBlfp1e4QZEAwTkXCejNjT2q7DRAu2TbSJT/SvpmGahPprELxTTJIcJyjcCd7Kc2rGqfU4ArEaAOLsrLN4ns2YGtDTiflIk2hKOGreHvyCw1omFBMapmOVrJADxx0TlnTNQl52VqdKjWgMBAm5gxdnhTSNoi16XI/v0mqTiSRD3Fl9nisNUgofxdUSRHirt1Gqa4ZIjUJcQZzP7mLBX7hN8mZiAYQ3lvfzZ2csb5z6xMPnCjJqNC/GzPXndAJRhjOCXRmRDitq8ljF8ejd8tVVSP1mf7AlYsZ+AUB0+kJIBYwCFdbFlBM+dQPHbGYq/F6wUMhtMQ7K0kcarTYWY44G45hMgypILMsaBwlOesgLMwcxaHDzYtTeM7QVXAzwZyf3NOBpaH1UNnfV9KL0vPFn8KmSpD+tqAwhjS47saKzjZYBa8qBsKjNGGMW4xbOhtb4FTZigkjti/JJ5r8PRf46B302hs3ubvYUA8PmJLyZ34GwXIdbA3CKEHZADBTXQN18vAB3UvLs2pR7jielWkaz6eU07t8Bin2MgpcxfAOPlr80gI/wSw3oahH2gwUNKxQjv/PjaH3nNWsEAxo+hwgJ0nhGCsx7R+pA+ZM6tvfSF/fFUTQOIHezb8rXc/EajjaO+iUn+2I6qPFFQdnh7m5z/8z/1psWd2s1eNuM/pNpi3ahsWnZFxQeegi6JVHYlfogvzR8AilTJ3m085ap9D80+DMbWaije1+JrcGSBFcW2AvcwzwGxOnEdxg8uMt/8ZytGA2Gx6TYSzeYbv373KOkFwDddsLCFKj9s75Ws/oNHRfNRhVrMocZVYvrywN63amrThr/5ezCowBVHmqaTBwb/3Fbc4a/6ugTC4k4e7y60vnT8Nv6MzikwW1PWt8ZK8kEfLaudvxgsDmEJFO96UYD/0FBIL3BakbpZA70tnae2N+fTUJZetha2dlX5DUPwWJut8aaLfTDQOh+GdWo2UxZaKI7v+73vAqBxKxP4C/pjSOQdkR8zW390LkeARNesjC1EMd+i2Hz9L89NEkgsgxWc2V/S/zXtIV9MEJ/btELUsSy7K7lZDNpeJ4+rUaIp3+vJ/iHGuvo3Nsnpak4ppmPIdHzTp9XjY3Zuwk2GSlSx0ycmp8DIMD63btFB7Jitq4mbzBQIOH4JBqAC/HRPu+TR2vhj/rPhT9zeV6vvP3r/UH/ik3stzdNIWV9Qs+yDSVvfZt2LIwGERmwB25deFqeXFDCtBiMlt+AKh9QwFzZXBmZUayEJbsg44FXiSEaSCx8Uwlm0Q46mdWalSihQO26gC5zStgjWDBi7YtNQELFt9Xu9UJ5V5bukLj5wUNKK/nPwsA5Sviv4YUgQ+aTyIG41yfB4tnrI0DGneNkz94sJg9ztQ59s2DpbMKTA2L3/Ht5WF/btC/DRvjhgtzRSnN9wXcwYDr+eOLNcH5osAKx+hzuE3DeOEqPB8UYRAcdc+2qxAcjovF8+WX5ja1u7jlRx/Cp9XN7YMRdePIMdtBvvOHYRbk8+8dJTtjHwg6dBokxIL3qKGKabZ0G31Llkoea09Usy45IdpnbxcJihR6PguvrhUNh9a+vUTo6DW2Ixz/ut7q3iMEpChdjDH7O3DqRqccrhwCnAB3WnfJcjBPmJv3kGOqECpnfhATlpUDqe4wr7oZ23kkH57nk1wzYjHkGXF5C5t5rYFNs3ZAWJakYIwQHCiTTQoPUuU9JeDuOgBfpLWzsivXqgrdUhNElFASdmcSbOvkCplgZawYrpqL3JuiWGc8SSNRmJYBKLOe3C+aAoyEgZ3t/B6Lica8Q4NLQ7J3Y+vqf5YYXVUOOLtCTRcnU45DKJmxMGHfta0iQTGoix+uI146q6KJEbuLTiRjSzt80gmxr85Ga1k05UIXZv5sqvVCAUB4L4HRfn96zFgt5bGl10QJdn59xwhgv68EAwXgeIherSIw3sv3ve/qTSD7KfHGey82s1F00Ga5yD/dtB6fLiKVp/1MpiTe3wSYS8On+XHQ/cfrv1/SgnnyURxhH7nCQ4tDCCQv/4vaCkMZI4zss9/h05SDt2iPshQbRzgXtxSCba9+dlqPHndjbffD1he5yq1bGcYPc/CTPmJJ4c/ZiQIL8vdh6lbjP8e8XKVIcV+buW3Hxj6S0nPzoGh0h8JBm0UXs/Jf6B8VlMiDiAL8ieNd0DylVW4sLfPeb0uk8y2YD9Uk9GazT2pYOg0OmsJ7gCvnAPn0oxw/JyoWSNDbItD9G2by3kSUQoFVZHBSmwqWISB/lgEGLd7n3BG/5zXHa19HUl3FKT23QQst22THHdzgntySnSbhn5MOIKX37Q/ddHOJwIN/57enFtk+Oi7TDKUpK3cV6HJC1tzSHQjtdCsy6IQZkCq88OtU2fg42NveEFBV003oepiNIc8acvw5Ffw3qEnaczU605Vzkw0yqNOSY3d8SwLYEvbh4hGyRIMaaR9HCLSs1FRdctGv5r6Z8PiayGUESV2krbYuMSwnJJNHtyLQuI1Vmk662TGVmxwFcmPXprsHximKkniz+y+idDt/B8bvfmT3QRkcHKiDsW/CCvTGlZE1t6E0GZ4rhN8HRjwzay+gDraSP1TYiwPfxgxny8mg7xsVf2E9JlmwW5i25TjLuTuKLIl9HOcIcn7AGwCmtDcB7xfnap8RbXMjs8wXiWEIYGeyd2ziZqbPwU9jOmFTOpKvP0GY2pdvjDidIn+cDmYFSwKmYIA5qzrENgzXQ1tZyw7UGnQvgAzqk7s8vP1ZECPSIpU9OCTndU5bTAZeso6XsOlZV/q4F9H0nlxyY1MCkFQLU9q+KmpAp7YoZz/cds7WGxzPsxLthCiIdpfbsSxx6z7GdR9UFqNI2kH52QTTDQlY/KuH9pacMdrUmSoVTstmCz62unCadsLZ1K9bcgMD8HOwzAvdgTqGB3fWplDsf0jMviDFx5XZweJ18X8x1evJHVdBKajwEEmgHKvJNQBUAMuUIgzCHHP2ypGSmtfaimwdb0eg7XnAULfnihjGfBIMjcMLlnIsdffJJmMS+mv8r4J2ytv4IqwaJSUlhAFPqqvAOTAdXEVBCWb1JJBpoU4xDyg+onAFd8oZKxWrHvNykpGXdlxWHBQTG7qTh3O22uTjWoWda6OaO6S5WzPFh3YctEhUYtsspD2YwljHB/HkmbJpuqckjSHCVZvErs17J6t22nxiypGwyRY+mggQFGWptb0zaurtI4epp8ydQi3I1SllZvS1osIS6q9sYrT99cJ8ousCuGEDhtQBu38eJeJfvSKdcl7FVTAoOT+fFm2iz8qPy9Dq0lVqu3FeiD8ByENOyaFmRHYVhW+BG+SEG5RQ9NszqED67NtC8e0fS9ICQ5usxswcRe9thcg+TYvH4YzZc0JfMSJQSSXn+hVnfxhVOZZOzO0Diyn3bvEkYtYdMv/cac2d5ZStdXnbR8DMWy+83BDjdKF0xAj1eFBnmzwm7N3/SA01uFH2snIkXcGa1ZVvprx/XO0uhS94JK2S7iKLVTokr7xH50Zz7faSfFqZzN2NQdlZ5Vd0iRTNRGF6ZjUvJmhPU/DWjqUjCH42jCndsNhWmdzeiTuy7g/ciXQH3clxu4AKNS7rh2iv/jribHiW/+cQqsw6TCt3S0g1bEPU04clGsotPOLnzUAkf4t1sLA7XtbCu4lc+5413blqzSLubOat3l8V2Fb+24w+j/OYgv7ixscYixqybfDdmXMe7tThzfg8aXKRY5lm15SstXgn7bTBzuVXHbb4mGO9DX5ftV8FaclhB0f3WtQXK42Z3jhu30d91pbcnq/M3BtZONK5nwrRwQ3NvhkJ2AUYyVvvDlmvM13tZZuFdvh+a6uHJw+Hk5SgUW7927fpN09wYXt3rD24Tfpl3gZ8ANcT3CKfR2QILGbcKCg/yIQwCBSoygOcna4CeMFgvT+fOZuvf3Vzqn38ptJAacpyYNk5OyIGhIElNaHHx40mqmRv27ZzaH0fGpxF7rzuTerQxWqaAagb6JG6COsQU7SbHyq/iEadI+6W0CUeHndtxPjJ1afS7hT4akwtjzlooURH1JrWI7T6VqdD5KVzFMViST3t8IZbGW2CWJ2YPy6xr8ajyVUOUykiYtgPcYCiJ0BY1Wx5Pl6J90gqYEltNr2kU7pHEBMEsWPkrQU/pi55UPaV5wfkXENcJY6hT+3NFBiZSNSwiqko+PrYVMItcJMJs0Ib/jWkjeosCeZ5rJN6JnYriorl4T9yOMOGGmwrd4vE7EKc0OXojG1woMrNaC5qsaVUmeKKp5qc1SJMNIK4e9RHwFJ3ITtRchO7di+Vhyk0y8HGHwhKzCt3bofC/Qto/D5KNkc9crmxBG+IrpKQ7wNxixoyg2oDrodYVRGf9+56qAhFRvb317jfPB92VfzA4pdqsdfzqTUEE9RAN//Ug1GPmhQqf4/rWN043F12rz7mve0PO3qIL4Mhbj/Bk73v+jjrMa29z/6OPcjtWv1eTha80cvhbHZCzG/r9/Wt3/PY0zjZ3uf4hxTmPt/m9+nL/jVGMxzudYuX+tY+2BVahXX6v1r19rzXysv//HOs7DOMNYCktf4NJubpuyDGLuUYyAOCJ2Kv8tOZb9u8BmfvV/XBuHhZy/FVB2N24X9lus2hzvngrPW1r/8ALcNakCWBw3c/7U4JvLXWgAYGbnozIkbGxfi9sOkSUQoSIZhzydA+ErjpyxjQBhvhFsUBBYJyDfRdfjIrhueryZABPvJ2wDtW4Z7lmf4RvUOBjScXqtwmIr0NGENhG9TP4pDUzQ2xtv2yANq1akAYefOoouHmQbUYulpx4reA1ju3PLJjzro+Dff1LMg2aOWpzDl+gl0pYSPkUwKPX2eMt+/0KUsKuWkWEXozkR7tQP9y7qtcu6Mn0Gvof1MiCHfCLEFX0GPfWMMUV6tPN5T4FN5qjBu42MfCJbjsk+2WAHYcFOaD6TfwU0yB5a6PRnHUIITQg/x8iIH7jHS2l8TI+btvQ/M14yA+wCDO/SlKtnHAjQMmiuU3uSrZFxWRKn94mLUlGz4+UIr3h8FPDxMmm9pfoPbOpnmBfxyMyBtKZF6QsmVl8uDdFEYnVnkXSP/Q+D5Ta3vLSGry5ibuJal2zykYfy8s+XaOUojsTxqOzyqwjxdOHunXHzuTmR3LkJtI8XWvsMeeoFfQAMK4NMH85TRGkJzK+TZe4+CK2SJcPDwavBJJDoHpiUTJZe2mLKNPxunXgPKAoWZIzhW8RBhqkmrpTMeV1NH1uZaUthYrtGMH39I4mDMZYuCStTxTvFMfs6GuyoOgdfD6FFsHbKpJFlm1P9BcLzcX4mgKj3SAzbPUA3pbTpMGwrsHKNiSKyv/c3foRLAt7dnf3EUAeQxAEHCCmgU5MrgX/akcB8EeRKU3pb1yt/F9KVN0l9UhtXpSbJXIlIIZYLW4ppLHopIxjOsFICALElBM0XIPJNpb8q4MasOB0DfJwmQ9HTVwA5jBTg1gBf+ZsFnMh/I7y7YCyxxg0YFsYMMdCSzQqglmkvjbcA7L36evgRv7+q3B1P1cXCH6+HdBejvFfNlHvD2zBP29Xr4ztDER1P+NT3PRFY3eFhGgyziTMWFWpLRNPVVHm+AUi6rh8frn99PNMuX2jxP6yaEU0ZpuLQl3QBVmhMBzA6VnA4j9LmXyjhUfYqOHJYi+O/SlgkFGEvYUM3mPD75zKFsI2ImPofIyoylLdRo+77x1s0TJHZRot4229ucccUxjY6pPTrYqQzqncyq0bfI86Kbphgv5moJqS6/5xbCNrNfr1RXVsZWvvHxgfNewdXji6dvNN7a2Dgyl9D5kEBr7K+yPqiaL2PVu//WAT8p+BGqUprktfXI8wJntx0umbH/OAIf35ZDSgycK9f+8AUxBiOIRwWjiYcdURUEaERkUWEBMPBoPDpajKqmqyW5r7yv/j1FmovcjiK5qVnmc/1ZnZF/tQaR/vH29CJ+szRjJpwVR1CIp96FILsPgXmzw6OwYgE/uLAr78akax58J+zDBryKWf2Cc0Df1yy9L9las3UhJ97KcFZn4bWhx3CzaP7U6OaHjBVYt2BEknWCiLaziS3SOTPbTqCj8bIDSGUmCr5/fm7h/XQJU2sTVvQQorT7NlDXaaq9X75wPi6aph6TVjgn6vXxX9DWB0kdMrYcgREGEvNOtSsTU12agJa5+LRnidYIGeOaaTj0pP8ui03j/F73awmi85rGP6L86BYvRmV8S9zIP2oiPswi8x8Q+uO3yhEfcftanB8S7JBsxd1AqdNVrQM+WobvHTcAXnvXOUHbHh7LuhM45UAY9Y4IykbzttFNjhhc8RW7wzkiRuNfUO7DVHHAjB+zo76rsSzGHF9I9I9hksZCaWsxV+ZgId9rud4V0mJxIu+9V0rIbxgt8EmcUomwg0WgNS2jde0BCWlZeuzgSV+uUxDkMOS525JNkGNBMqd7LdHFRazdfn5ii4qZn3yBr/3cs5ROWYFqSUxZjjuH6V1rFCrDa0Acw9WWKzUVqRZn7xevW9YW7IlUCVY2/1Mo8GHoH38kJaKmUOFMQogCLJEAXcBv+RI22SsO5bnt8M6UnPJMygDmcU6I73Y+ySSIljyww11VEHhIkNmrpc3YiTMRRVRO6FDVbH9ykMjAOC5v96jvkzgAzAeMVwdNosC9NZy/ih8UGEDy6Yw55OvgDOjN07/Gws6b8HnIfg4V0WDiJ6Fry3hceUg/DGNLDp/V8Cxf2ges1I7fdw7Mg3cadRW6+8AN2ZUW8Lcecw6JtE4DiIXWBJvv6a58xbhpv1IVLr1rPDa9cj2W/RmkYbVN9LX8t3Mi+xFO2P68yRTUrItbWV7ylL5d76uDGipHf7emIVcMATdl4NazHZUeTOXpE0SzOXSGdAw+/hCpdhrOSOpaZKY6JMtNZrUXoBrWbkyFGPoduIp+ZSBkLHMe5hdYh7LqhTBpVG6I9b8ukXhDouOhM8kyGVabSs5zTQeC9Np3DWXs88mDvqBrqhw43bcvy/pvXDc3InoyYR4FlGfLp4SGPIuUZm9wcNnQdjAj4rBrlJjHaW5Qppc4aSFGug7fys5a6CfLnQ2UKhGdA3CuY2qA3GiZnxh/QoUEzm35V3cT473mGiz+tmvuvzOSnhbSTsV+/jIXDuhSe25fRkZY39M7qYtbpqjeiE7Khpoh49fqF1ioQdWMRx0KwPD24zBO92wJ1AXOUSeRPqE6N9pTVz8jpkExZu2EBtWTHehgUWcDXtRVc2sF4AxbnoZJO+F2axpWGSrMh0kFtuU2RfTqNYSEbVukK6CcjkZkTvnms8UbA715cwG6JstodA7AuFp8zzKvXZrI8USKc9CQJVWEolFCREvrt/ocqsoEKqyKGDTSqkRf5vYJUE9pxp1QtHEDgWB/2gSotfNbym5FTk0WY2S4OWEs6NvgH+nIJDddP59NAxxrA5OpJk9MJEmy6ryrh+yFfuJm3GgXzlb/ToxLmwFu5omHqt2g1erEbjzsfyv86fEZg7DfZnApbMUwes88chSkossTsf0K5hllqYWBVpdACK/e5V2hNcZ/WIRlr8NRatD2/1emeUhJ0CDbHQ7iihTVn/0zHzNQHw1GKwerHOHhZ8ZQcUAXpRwTGzJQoFFp2nJGQFywLuHXUwB2H1P+NC5ZwkaEPte6YZHhyQtEz8nA73BleGMAs7mkGR0rJDgv4WtmNqEK9PeKsMci+aQxHGWjC5ypZ2ctEykpU+BuRmhHg0REVme+pesVKq8ymtE4elpnNtViJASBW0uCXLmtmF/cSjzQyTNct4XHRd1v2qc6t1yurLRcm3PHm9tI4Wgs+npBDXwT4p8IxhIggaHlUhVDrz10uPtMyfrCb0ydV9VIcvrax1v4EbeJGzPi4y6vOCUDOk+kBGmGWDUKuFtfmio5GDosBJV8HHt3admjLPPIJk4mbtrjPwXAmaGgI69ix0BP/1872as3ao1/Wa33WcTESRvieb0OH3/QULuhbaRUF4ksy206K5p6Eqpf2FYK3jhXRrrYi7B+8T18ZECRywzqs/LvEURWXvB4TlaMYJHUuV0m990m9uLLRrpVYC9LZj9WVjc8cDekEURG8EGTlG8a6aOMONcX5v88paktu6CF66/xCSklo/Sy+zCDCPg0hUsy+QoxZyvKB+/9h2NqJy72eKlIMxEa/0tzQSrfWvUYkW7XFcnMG5t6fu3aSi+rY1MkFWo+7IjeWwRXLhrFOopIJNIqx4li0Eq1scMpYfAfC9QK0uJYsgcQ3fnWM6w2He+D5Nxrh3uHtwZ43fvK3RyQGU6JPt5jVpHhTicGCD3trsvlFN+TAeRnvH9H5kKVRw6oxD3ZLnvH2X9BkQRutrtdjt6HgPe4a6oRUa7JWVwckOYQdVsfhzxJxjuw56V2kGYqRA+uzH2VrFBy2sROqbFG4IiHbkpyPkR2+Ej1/umKM2sty/uqcURDW7J5PiABn0eVHiMnKKUEvhjc512stWpaLufGSAVbUVOHwKzlsNQ7o4A25C4S+s7UjeRKMaJXjSUoIGFTZNwvwgui/rO5RJ5wb++m75RXi/EbtHI9UI+NCE6fQx2rG7GA0ubw1BfGBM6/KN0FADOgj288EZAFLIUZ/9e38KtaqZPGoAsadVVoeRDY8bikH2hFVG435Wmd7vCHk+eHKsHgHdHOrnv/V/EPZsx0DD/oYsDouz7kQrqw4eex09KaFbRysvXurzIpPr+dk5Dcd4AsKNs/34dK1F5o9fOKGtByRJMA7H829qcj1qhgzBcoHbRDu37FDDbzBekPuuWu6DZpEfeSgDBn6GQuhRMM2Uopcihoh4UU8w/kLN9jmubBtWGbSvh4dm0K+XDJ+vTKDYI0/RZ4nXkOe7kqb8xkppeFdOcIPePrYj+w0ZCZTOv5Ab2OeWYoTSZqERa1TirXXOihcCAS1HJJxkmlsqLFI2b1CpfNZ+iNcYn/rci66bkw/1zIjIqfn6HkFp8uIrdeI8vukKZlPpK3ubpJYfAcJmfNmXUh/GxuhQTrG7Uv+STWZdv0H3ezkMeXG2kk1bIWdKPPmmIRbdE+ACkYdVk7pKexZ1GFSpkFirlCjaQd0632wTffGX+KT/oYTbPYTKajBq/cZG2MlbDgxYlXBtf87RJeHihJpWC9+D3b5Eg5R19llDe4a+hBLI2nbYsfPt7q/gdKGQes/6KqB36PBSNYVOwdaz5psfKqHZeZaaHQxDspaExne8mzF7fUsvOqVFKCXaxWo6mz6F1flKchCz+Uik345GzoHHJ1c/zPkzTXOjO23BoJQxCmcXOT3NPnFNy5DTKr+D3q3Tc4mYZAysDmcwXb5jtJNHJFtdiIuymYfZQkqU6g6laQrVZvNlopXTbWbD0G1/cbrnrxi9NQlb+iWBqq84b8NZIXK+u3/qEl5mNcgGEhhxbcCdJbZ/PEm2zTnmaKEzvsj4rTouNdR4I9QCku/ogwBqNTn6EXAkdLjRHrO1l2sShEjWbrf2n7C5sjcbV7c5es7HeEffkiFB+XumA02ozZX2UxoxPrufsyc2G0+nfSu4KG3Wv5UBqbHQ62HRu+HS49DUS0mvEWex6IztG62nwHDLbfFXIzamCP4KCmUgXeBz3Th7QohHpa5djmWeCTyrsFGuImcVq/z5gF/C2Ls9alWnHZpBCzNPzoUZByEKvgYNK9n3D/QP63lXNXY8p+6xqDSt+ae+kfzGEi42C9ZbpiwBLJzbaQfGoezhxEEoLyDSlG75IBOm86vAUiYYq4LS/Uq6cJGDeEEwurZFF+5aVaAEbrYMLZ7Iu1JvTlUtadQLpK4umIhePTLSPvP9ntiXHGdUIGm5xQglQ95qdQdzbvCvXf8IrnE82JD2Eo5N4x8MnxS7GQ+wbI6wNUmzZlaQzqA7MpnxF6UYoxA4aeoPkpUawdov7Oqx4r+GxaC+hpVlxjI96EErXNr2ARNNFI3rLNo3vLyIcTZlz3ZhxavqNqHHq9whLnZZKIyR1YJtbG1WhcJZh1sqg7UZjuLKPC4NYfIzA2SAQE+WC0HHHZ2d7cj0pgrbAM0YO7N7gBBtGW9eErnE05XNbIuIVMzqGx1fhun/FBttKLhwDu8PmrcPPmI+PJpcT4YLR/jDBT1Eo20uCKh0nHRZXnCrwJuBGc5BxRF0a9DJBUplpZQPJEVizaM/Hn4WKTAWGMqxZOW4xfAEUYuCqIQ1LPUHFQiMvPhULkLYKhuBuZtZBv5jCTLAlNlWEr5X2DS0kNd7sPypJkqfoj3eLsuWfBYDr579b4zXW5SThJE7+AYnqGXvRMk288enXvl3aEfls0432+gwPWzBKx0lOCvbDp3eGdjbtiDa14coyBR0uiDkzsuk7hU1M3q38sA/65KRRXyoZVegyXKyQRTkUobsjDA0dZbHR11j0hBSzEDr9oHsQSYPu4kGruopxm/He1izsFPR79SgO22xO0+PGjJBLsUCBVcSLiFbLcDdIKF90EBE5ACmTfmpkX/giuBlrtXhrU6tMQ+hjzYEtsMcSO9h1DtybkdPigjEE8v1WQRBM2Unsl3Cvak6inOXovMOusAZnvbct81ohHgQ9AmNmN1C8nMbwm0kWtSJziCyVEzG8c4NxknGaxG1Obb7crQ2I/PPFRHcFdIPCX/hUyQyvzhybV7BPmeXLlYxFHuO/20W+ZXfQkTJUyb9JW9G6gNWLUwrhOUH3vhbXqVFysxLH4xl9ZuyjRK1aITiyZ/rwIeUDG9xgeXNh7GA3gAhWOBO+Yxyyj5KkH/UguBCPj4LtTmxIuSemsd+wJ3YX9yPtaCXOHKUiMu7PTjONhJ1T97qze8esC8uk/oimOYqZ6/LwtM6Slwwpq/Lw6lJugU+Odr0YpKhVXOYcjEK8//biLc38Qfo5QxsIKIawoZvBzaiApO6hvv5hi4zHZ0yWTmEmv/hwKjTsbcUliN/L1tt6WrXqmSkkNZYpSSlz6LDkFQwcJbNcykUvdSePxSQ+mlrOtP9zt4xRF2eZEGaz+Uehr/3j+yJn+PhC55ZCf/exboroi3DqZZxGkUsxFTvbBWq83FDVe9IwBtFvXrep0WAIVg7c0kjNX+UCbsZaFF1ebyKuxshuuil8G1ONpqgemLWuKByYe+onYjpjrd//C9J90XdzTzVoV9sAhCThVq0taY6lthNKsPfzalo4TeZrz5I6DNpvFi4reOkHD79C8g7jkzWshd4qdX20obbIGARP6YyjqcPbl9LCL7Xjv9KgClF78LRBdeYLlP/5iWmyGWNAVLbd2+GzNjAs29s1SkQy7WJ4koCuKC1j2Q9LPQ7wFaU7EXzB7qZLR8uifR8zzbgUT8Ns6upkXE1mkbTf9CeBkETTWup23B1tDQNayNTuOFt/1v2hmwjFjmLxAqdCxqRxZJYKR4ERq1ZBDpgf7/sIdN1FHGvG26Oy/n1I6WHhUcbsYQTul/jZ5OdEqK3p9YcJrbopnMz0PaUYTe3UxT3S3yJl/VwbdlGwJoLMdrYVdi5XlN8o1lI55sQU2RyYIHrbL+yoUSH/bEpvxJ0ARHHfYoG1cuSCyvjeBQTIWL9ahivbrtJxJwrORQFBMiWvb2CyETqvZJa5a37T3o8jNzOnApI1D2U9uXXVTVb1wTLTUJUc4RL6BVx4/Jf21B4ZY4A/7qnxyHJfeQ+lx+9G808bJldj1Eoov5KneeieCgWbbHb7jfJw0oT8PhGaPuMTirILwjg5/Wsk/Nmck8dZw8mhmg+XizS6xWMKxyOj9AtUeQMnK+VWsRsSKBfWrdxObY8vqT9MWCuKyGEyH7r0kvxyVZX5jZa991yIcvK4Jt+8YbXfcmcMmBi0AloqOsIhstCFjI2pXFg30sHCVhej381vuhJlG3pfLxfsvbZp2t3rrn1FcnenEM4XsDZPse59bRNWIbvg8h5C0iNU7WKzG+BxUksRuDRQZR1HxpSCqpXZciWTQ+6O38CjZcRfzW4/qYQsP2DEkV+1kIJIleVZ5hyBZEN1AqZDjPDbGIZbV31GOCCSbQLNTEeegFBFRIwOGA114JbEALVQJy3WInAiQhYV16mgeaARx+P1mZ6svJp3RNeiUQ+f2a1gGKeYJbZ3/woQMD/fl8zcf4tizSUzNSPWO7HX7sfYlnhOCravgPw4Ky+A5eiro3dZKXt5crgkci7UXBPwsXo2tQ4/rKSkwbMwDcTML3YiZKzK6JqgExjtSvCUYkRCq6Eic7kzO4JoIS1fIU8HFY0nCdUiwsSFOlc/BUMwGZLWOel1AnyUmsq5FOJd8K0xSWB9fA3r68gpr/fPxLBsNCEpU1bBGSMvnB0JeuSbkDLm6LucHKOr/Ctp5X3Qleza/nWlTHaFzUnnLIOPKnQwbBR3/BbyKfKEVdXE70BzS89kOI05ivBlbRyu8Ol4mt7bsNz/BOvrbSP4Xxe0EGyt/XuhxRavvVDx9usreMz7avv97it8278H2E5r7LUGCz07Wz1tn3j9LSl9uwQPxS5vvP68V7e08LC6oqSpyMEYSSWw62a9r82JuJltTQNKbaiQQ2WdXx9ABmPCbKZTv/LnW7Nk7UOQ+KUzrsxHFJlSwvVpI9khithPMXG9vV5wiO+fi1m9Ym+uEDrxTSyjlJFUKAyk6STgcSLBSEsbmSTZWcYmCZCfIjM3s2yPSV27Kt9h7FEGJlNHosoyuLCvdweC32DPBKU96Bp6P9oi4sMdSAPie1Y3FCk8DWwYm9qReCVkUErsi2rGzqal71NG56sARp6UdFtViFiUoiTktp2qufqViXkpC0R94gRDqVD77ijSWhPBZJKnezXKhsiqJJZdLGm3Z7UJ1t5udLhKNYCrLwz64U/JoOR8eq513YS8R1JCh1SRXF9limpM1bGqJyPimupIQImIxCk0B3yKjnZz25bI+39qTgUgdDLVjEOWQxTaDR6z4qAFlF7urQOvPuqJMZlcR9wETmIYUosiXBqsHBB+xF86Cp634fjvLU4/XiikoaDnvIi2gBDPVuuYR1lvYne6iTgNJCTFRc8fT1wIxtQwcKr/GPGI4VRU0phGgP+5fKJeE2LE9XerYRxUKosxqSByYY+aolqhRnkhqdB4ItMnINuNhGjheZSEsGIDa19PcyZ8bNEGxUMp1UjwzJ0txRHXsxv3D6NPUWEHAFpb+0K/KSjZVEvmd3uPtSuxWjxtLZqbwQUYQEF3DVX7PiE9+6EYyyWlCAN01lw99/b5LDjNOr8T+GSmGRBadw8qd1yuci24eSNxhfhxyh2jyMgk51hfTbz6Qbctswo5nWxyiyMQe6kJ3bl6Ro9GgeZ+Tqq87IIHfNp7hBO2eCfi6l6VY1vQXhQHvqHQWPbU071ZTk9ccifQxj56/QjaAibRgvLL6/XYm+1lybT6Jm49OA5nmht2N3o5ion4gK0VQ9Rg0gC+5wDoyd1bX2cRtW3gxcKNbBtkF/tabf1hX+NG7mO48SBedZPy2crz/SksCg/GsfNXiypznKi4xmMrBTuzCdh1NKNXb5G8CchSk5ji5gSgfPhFeWA5CxHHVFtEZLKpURlL51M8N8F5ow+nRAJbM8hPSIKZ3fBw2/aCT1lhLLR9aGHERVi+RMxMfkf4P/JLQ061Bub03JrEvMJzY2v5DBs4aVm77W8f59Ho56d2kysb4UY1jLRRm0/e6CwUIem2d3p0m98ZRDvK2BIqKW6JJ9uI0J4ZIuX1qkF8J6RBjIqgrpQbfWDO0p2Y7BhtmLbwV9CHbiP0wVs7IRAmXKQBaSp2PVaeyKOuiGI6xICo8EGNuy9kdHm1UQoPrN474rbBxoIuCYXTZr2ojsyeKdWuEAqwEREsaG568DPi5TFB+0+LrasfglEbQZvewH8dXrzMhvdbr6BLteYvXjxK/TZU+1QyZ9W/it3PAyAkI4U8xvJrsZFQL6c/ubuRqqRFNH/G91gTEdazDUK/zJAfoKr67GcmzwnbEwWKExe+GjVesohpyttrNrkiwRbaGzan+3NfFrslycziuymL+28LX83lMPewtVnW9ZRa9G2Zsy8FDOoEkQw3aCnLGq0w1Jkm9qcmhjuyJXGQH2rJMoKvtky17GmEsi623XnjdVTAK6bFdUqzj1VSVWEYCDBPCabGSk9J28kpJuTMLtxl5ftSoRAgfICsmj59GhO0JDqPkkikzmk0KFF2tQ/1wLetfqTCM1NnGi/UJo+fjD1OgJjR0kuKrVS3Ki3iZ0Dfe/HpINoNcfJBW9vgSTm6RIGHyV4xpmZw/C210rpUS2UcrNTlWHtyT46YS4YtLqULy9RJA0fH6e+AXM+TvmOdSrYKyRNPMD1Z7NVMe6kPetJp9ZyMcGKylcZJZZkAjmT7rG5OXn3mAp0FXoOGWpXd/DUhUlyQcq4qZ6fHmj4qdFKn0jAJ3hFo1TweYbIGVHFKpgcPHb4hiacVJPm1YzTzbyvm8EyV8nERtN0jsgib3NGHjLNXthkaY3xHwIKFQJjVnxCvN5fiwPMGYR7ojEpk08oUarI1YDbpYsf48tGsXGIp6h+xfbCI0nfg5IQbnTmnoQ/OcdkdNctPtdT3vZiO/OS5NXImGpdNyXhG17ADntZb/yJamaGdapl2SaSLoni6ilIzaq9GUTADyC9NGzLSZEr2e9hhGGwqIWmYEDHDF4rIKUgm2twTBKHbnANrVQTNn5SLgBU95B5O0CSlQGeun4IrxyIEntHUNtRJqFhUPd93o1oR0oV+OL2W4JOeqarHCRbU5BOd03CqfbD3hW2Afc8IJu+BCyBTCubuL/rIMrAxI6GAEmI8mtEN8IyDnVlsPL0dLh9yu5RuOKW7OFaUdm4ym9jW/w9yT2zJk/+3Jl5ZlGfBi+IXq7JyL5F5sSQ09KVaKbL7NN+hUrXCZNFsPklMijZQUUjizGv4gTSJm378lxf7MiVc9SeQzLZ+DCURzoNLN4dni0F7tVNsZ5x5uWL6nDfX7VpSMzusDc+MWvBAmyM6q2MvgtimPeRGtiImWGgZlvaOFrYiGpP2MUE5Gr7dSm0MmJmCDSPnOV3Qrs1fHIDdh7VrevjuttKwa8iqBzmDEUPGrJldpxFPOlmbIiU4hkORo4CwiY5/BuYcOhrgN2FbtRtHOenU4u1MhwOuzLtOkxWHluAzBTwu5COWHiDNhJ0usaGnCqA9i3uRXcblZVnPDgcXUGJG8cwKxpCRwuVc1zn7xCbtfBUlKs2KWf+7fr1OpeNfaMbAglAmYoxaxb3L4tsBNoAOS6c1Z9T0+p+pqaqEfWCti25d5ewy88yUgylKhghiToWKrsWVaBkn2xR6riIiESxlgNeoeBITlBJKr+acLEYIlCqC3MOP9eKK0nziSUQbSswHx61Ks34rFfYoBoK3juzf6DriXaUa0VNmqLLT43YGgS3DjFHrkTPvV/zosWk+GhvjvyFQu5UYwSUavMvsBj2K4zmtJV2dAgQNKnlRrREb5atDFx+CB2zltR+MITndz7ytlZDeFzrAEqsZppsI6qZO3tTaIxLvNpOud2GDhSVN6CO/TrF2pLnpBiMXFUkxuhk2SIuCw0skejAhFQ71DaGim2PPSsauF5uRtREOh3LHL8uyNj63Agk1vrn5YtOBtMceuZ7uYxbq52eVe1HxjOyPVN6h+VXHrcjAMuu9ZkweXOcONC5Dapv6WQjUE0+K3fIzV8JFrOTDaeHOSkokQWt4bEKKRA2BmtoFqk1uBXkUYX8reAwaqHenMGLklbbqeb3g+0tVRCrWx3VOoCBqh89X+VpoKCbOBz4BTP+LLRi9XAm3Vus7JvJliiM/SvGwa1gKYpdJKgYHM06+p3VXMAsBtMqiYs90OEzWtXr+45Ch0wDayKqA78wXWkFXjbRdf+ndfRVvROVIlUHInv4pWypTkwOL8crazteHiAnGNGf9q7u+6d4hg12kZg9l6dm6a6H5cJlO7OW9nJaoan8+jHuF08DSKglpaI5fLwjsp0YsM5Bfe9K69JALvh9+HfxA+Oc5v1zkm2A0+ZLvtyGcucqMcOoNb0P6XYkwYHhl2bnnnBDjN8iDAl1475lM2igUVxQmenhkPxSmaLmHmXLBzfdldttfjulPifeOJ12qOjgMRS/kWFOn468m25PlL/3Xd12kbEUCscrpRwEW9O2E401ZZdEdaZ0aO/Y4f/yw5xSGYbBWLYcIbRPffxgVFoUhkPfbyzHF0D6VyAf7mBSdx07Y43ka7LBYFk7Jgy7ZjlKCpgnsF+zkRUG9uj4n2CEQ1y04EpEVqTUuK7lpN9uMAXwMtOlY6O+tiNfXQyKmcZBej0YrZxfb5O59YxVJboPXKaVTbZaniu/pfVkoeiALcJQYYorskK9uqiuDacEktHaX9FqkOvKGIpQ6u+4eSh/xtkZB/jfAeA/xoiFtpBaIKxvLR1pzAU0n+wz7R0M3W9QIWp9DEgfHlJbXytG5jdBm+TAe0ve6HbmNGnLCXyaai++PTt8glGR3DWGxHkWQvGTJU4SE6iRof9En9fDnqXr6Hl7MKbxiyL3323z8ub9gSP2F4gVZJbJIWyIA7RRz/Vcz0qaOT+PkPGFtONJjGfj5hhSa6VWl/cRwKspm7jSdduLE7neOtJmpvJsbaTdtzs8pbIgjVSP0Zu8X0srNo+8pYhDFvsIjkRdqN5DyYL2YykRGMCqVtfbL924AWbQ0nipPEm8TDxxbv+cZDfYQYQL40qMKhcgwdzlgfwfiVg9Eig3ib0F8q+qqSe+PLh23oWy6+kdjzWrqck+yUiVPGb04EuTptlpA7e6Ucy/OV/dSpA3nQ3pTt+GP6XYU2YxNcX8DPraY3gsOBo/kqlEjiygiYRmJt7DgkDTL+b5aCxayxPgq2/CYqrr6fbCOpSxHxiCF2NEPK5Y4803JXpJ+ZPbguimdDeXY22yhK8VXUCLKeObqkM6cg5USCCWP20UcHGEVh0ru7pUnbuWXDTKxsj+gdtoMOK2rn4AxQYRgf7+Tvjw9M883d4ton91cnpQLSa4MTfwCQ+Xu42si6bE9qn1A2B1EBNevnKWEKumxgUHRVqqOczPlRRFm28c6IVsgDfrAW0qXQ/eT1PtvBd05Lc551juoFJCYeKPdPxHALa8WRgJ9bYL0VzfnYm5wB3C5ktu+mgXvRiVaeoADHehwt/RJdaerBxCPD8byRSVtYdcib+KQcsLPtG69hygWF6Pvc1l8hA2p1CR4IWzHkDtU5d6qMn/65+GrzaIELDFITxBVyzs7dOBMqlwPYCOFsVcJi7o/XJVxi5J3HXwN8TyPLNovItRVJ94EPhJ/3WFiTv8XNTebpJVDX/LvmmLKPrCmxwPWJsvdY272gpvEhRHpZJE0a5AW9JtaHsNYh0QVsTDZPLHzZeGTH5ckwUtnte2aIgjGwhFc9o4xeGy42y94WbkzhEw1HCHDguXcQa+PebMkakPgOvhKWuLNi/0Nrvc67gvIZF5MAejsHTEtUoz4NhlCCQkjoEYCFoNoe44xHkqRtxDZVCwuUtk3hnx42RF4tfyJD58KZyjSQhlZtFcVgIaBmhiuQHZWxyvmjlN7qo50djGPXi4YasB0km1+Q8egeK1x9U/v0lC75L+zjeGXeLd1ZBW/viuIFT0lWMEdb0jt6VM0QTsgj22bU+0TaqNkVVFgPDaMBMcirCj56B4jSA2/SpDxAgOtKBVlsuryBzIZxcFcYuLZUoYiPD8e4xSXylApdSnJurtR34ypphYEAeKXTWOCzG1StNS6laBF5MlkONNMjcNQbpvWf/wlV/xlsqr/kFvHLvk+1/gmFUw+mYRP/bdeDolQPbs+wDrh0wfYlL31HUJecDMUn8PbuN29CTlkCk+x6Ked/vbTzfHEyIScINiDvnypVBcddw9U+tMuBOEunKDr7IvQPeOkVMZE27WqwF+E7yI7de2NkA9iiy/O8T26EN1F8rnPPERKGzzW+nc+jUKUm95W2JBDd8p3HR1iR8AaLpP5SSHIUPYI4qALfnlDFJikXCTkZQfBOGP3GeGUywbzO5rXS3FM+X8JVzlptRZ/uubsqzmBN74BQOMs75QIeYvieGksLgGjOUWcUkjlV5SGlHvKqMo36glrBGUzHLI/2RDoEhY7INfYNgpqEbtDkdzBjF/n6RcroGGJOSFpUiTZCCg3z5kKHFvch8r702tpGieVjrlj1gDIvFhOfYGxS/68uUAekviCd8lobZG4r9wvkdY5ADsyi/zy0RXFRA+PUat8tCv+9GiRzEi2AihbQwL5jT81RvCkCZuCGocryWr6Zy64zOHMaF6lHud6x19m9OfqjnC1tOHUUx5gKWucUq3/dSYtWyJysPkn6nuzrmauBVPiM8N//jv/7V9PuS2/DkN3WCGOlDUN/OkGTTVikENLMKwXNuXnQizFH2bxmndqPKcIi1hHfHRwSa6lmys1lTSNAi5jF9iTc7zGedLFyfHVqjmhxY4nPsudLGh9PKWdz70PUnIDodOBnaLDeb8s+V396h70QzAg0WwPM0tSTBNYMuVB1iPpvXJcHwcpPPZNWZaYiomTrRWh0YsD2kzwliQoQyMJGzdcKjsqOaj5NrPL85YfTeC2fMgVyGPaOmXpU3KWcoaXZMI3/6wcldzvS9o8a2lGfedXJf62HXPZ8Gcwlq8cxu0itfkimM8DtEZqZTPXIs0G8qc5ZznA3sgCttv5Znj3H040FOjldDOo0EBS/qhtdnJd4lq9e20e+CTLXAkBPDPKr0MPZFV0lnG6LELZATfLf0z3gfhhIH2Z2o5rdpthwwwi5fJwp2ZSVO/reiekRVe4R9ynIDMbchnnF/PmDaGyRW7D/fEfW4qxSiGbqysqBZFNYua+OJSHSzPG+skWzUS8yTwy5hX+CNHt1AYpL+B55i+OaZXEG/nQbEic6y4P0Csns20WDTZt3kRlIbyJnSvom6q9f73A9sIuWD4fzzIxtIytU3mj+IrIV8TH5I3iD1b4uXryz9dQC944FIfwEzFlyL9zKxMqfc/cpz1l3JMTHF7hQZTDbd7Y3cZoZqyKwb+NEaLig23tOHOqJDbGBJm7k64uGFPaLKnduo9g/+3Psj//mikm/n2+xmld/eC0D6zj17o8zJL8pYnTi7fU46d9YV2h9cUT/vyyVG1NSvBGc/Q8i2LwS7jDVEUFwYrdYsfa3taR9b+QbO53RfN1KOrKLLf3vnh3ONapxElaELD3MUjqWIG9lzHiUcAUFrc6EA2nzjqIGrt4XAOa9w3LAj1FZSVmpAmZK0xOD2xY+D1/54OaHOcmBadFV1sNnMwUdofmX6LIFeGT/LoWbfUXiiOSshgDRYfAMi6K412jvQbdKuuQUPtTOxEjqhq/wyjt8y8dLAX6v+OHnOhDHdtO/XDTiK6b43UWqxPhObEawo8gMjLOqDQIZRHd6bF9p+STZby7iiDRNVGLdROpj/4GfhTD+KVF4cRH5B71F36HzGrWnayY1t0XGpyNYPb/pSDfAXhiguXnXfdCZLSxAmlo7+4fsA8okJKKmm9ym6/6fJ6AYtRPjYaOk4fcqF9mVCVvu1UhqFUeEkuIrPGciZdaqmmBBeeWrxGXjrL1A48I1nC+BCmLiZqNH+5x/WVkQium2SPW6Kp+3pXIc9PXnpm/Jlg0FpooUdaGCbwiCzYIdiOxrep55MciGooaf09pVgbaJsu8+sYv+HDuhQWOTRGvwyxA3qRs1d+diHzyf2XUf75Kc3vcS+pv8PsyR++OU1olc1Edi/KjizRnO/SFGRMBXxpRwXfWGwpJ3M2Rap6FsLkAOuahcOQGz+11d/8TiuShLlhvzUrxX/kJp6yssQHfk3mkdXEeS1asQgbktLy6oJyoQVuv7IVqC7N5SmRbZg+oYIQSyDh+ghkBdIwFe1UkkCWqyfMMuuRdFHNQ7IS2/XzLjhMhtxRwSSPzOvP+Pq4oYhHw8OHNqbPJRIy8OHpKwx/i3uwDLjN5aktJVZGfX4294J2ccfEzuztW4ZVeW+Te9RRkyyJ/qdJjdbHLXcx6qD13v+JmjKX5TY8AtXtcuvQ8bOZDX59EEL7vxgI5e54fOuKKJWXcMUA4/Mif6W6pL/2S8xw9ZS7e9MUOTwLDTqfNc9wa1g5LZoF7nF4WRGHYNFKtBXfTWVGlsemZ2ttCqCpB9AXZQ9A/gQTxU+oqFmEnxE9jeGhcGB92xsRb0WQ9fYl08P1T5p7HEe0qQbFg7RRLxeb67qqz+Ryt5U7FEB96AQN+sq/64U0ENUa1Cx7WSHHQHsx/dthVKrVEwVBqJuRAi1mcTyAlOdinuU9yiqhAYlvxMsL+jPvPJWLTpSnvhgpmixRh1CHq47Slzp2eW8ulo96weYcUt57TDyWjQ8KFF+DSXel7UInQOEPL3zsruql/P3mWPcalYYhIJqC6QL61VLkgjDl4ksmcdUC8AVlVIFbC+ZpqLalk+HL9t4DgUM3c0KBzoolWBIFkfQcYT0w8b5uniuR+lNmpv907b7nA34NlYnvnjm8SmryDoX/9JjhsXgk2r2gw9iBk+9V3LKUEBydlmXX5o433j4z944ZeMMpzsBnvjlF8lGPbhyfD1/7TbjTlVj347xarkU6OKrciFZEETA3TOMwzW28du6hjVUatZsSYbvJ7+NuvmjeMXeZ9Tg9IGm+FyjWFWl3o39fjRrphGgt7XWObmO9y4+EEPZk5UDhOeBdrSGnHXSZSJ7wJLHTJjFnknrkkULq/qHBMFpYOySxfzYogkDL4MURq+k2tBsCb5jBpQVORXVZL3wAOSCvibh/3cJxDzPI62WMBqqNAX7eWRLaATjFA26f3QDzUuhLPgTXGt1Ut/jYHCzUiu2MpSsM76ezby4c7jGKbVaXWXWcz5BWEtR6gKSfMqCZccL1acqOsVKTIT2+NIDf3soMwjmjt0Uy1GbMNzISm2B/R0F+XDvXNdpqQEEsMxy6odWV7WHabpqeyY+4t81+bxc9eQlOtWP5DDTTZ4qROsVbRM3HFtdXWi0/B1pnK7pkwlSyng801RUaRpjdzXlM1R5f5iGkHas2ik6djpByaqX6AsfG+QKwnxRsRZKvmSJ/FxIUnAoiQSAvLNSweJW1zEUlz25CIQkXpWsk3+v9ZXJyhyeoYDbuoe7w3zOlbv/c9vhuQgfJV6YTLmK2sPsvqnmzDRD50PGYp7qkuhoqzHdYw5R3jSjIa1S+3tnOd2meemdJzeU6rhO55n1XMQJ92sge2K9gS6S50diE62V4DiRVNnLXXt5sXLEfebc49rZ+0wbClTmN7N9jo8oHbW9Gkxl5os76sHqiG8jnmNp3Uzm/pHHgN/bj02D0eTjwxjOxVlw5dn4/S6T7D5Vup7uS32KkRIzgWymUcnnz+B9XXzPk7rIGG0nehTd2L1MY21EWVoNEs1Z7rDYH2MJHH+kpy2q0r55b76wUTzKbqfa4evTCPKfdJBAsST9e0OAOI0dWd9F8qm/1Y3Uv28IAzAw2DUzbQtfwiusHxNvASdaCu/THRxaIrjlOy8t+SN8Q4vew/dSsa1nzwD/041VZDOaRTFDmCICab6664kwVDRgrarUen5I0eIQw58+6DIixd0wYoB6SOM7eqgrNslpILx6RN4JNMVS1TPZaCGUr1+kar9Y+tqEAVJPZ+2NSSknInqpUVv4l7/qpKmkyfmziO1EefxzjdQWhLAKLlKe7R0Yf9fX5e786AJymfGd4BrX9SzECV8NG6/g0pexu+M+SXzapw+DXa78ZqXI+PG9rbSbnfJ7ygeGe7MVJX6pXNZz3WYMPrG22WOouuwE6Zybtb7aTrK1sL9EPMRWd0IBLBmup7lt4RkafKJB1t4AX9K/h13fgJhimJsyqa38XJf4noOdaoUxbTnBgZTtqpMaJcfciHJYV0WtuYu3W3N0qmp8k5mhHwEnofWPj6yf+Yc/ometpS4JP4V9xnoiyFGktPHfVbwhn3Thr8C0B1oela540IlxjCvWOQcthgWtbADpNhgKU2+2d7B8wDNdY8UznJ3xd7+TiJi9ECzIwU93v6SX3VuEB+BZmxNAu73Da7lE8nu8d/zvH0BwBdKZ/YOwVeDvSoXrCSr6tNwXznTbnXVEEw2IbhtfgBmWe3OYEnJSzqvVMw/OqccIEfnbK40NElzdkBd08CiI8i3mrZsBBKrzZ6BSPgPYtsZxILTvJELm1UOpdaaAOzVZ9FhyQVn3BM2MKT4u+nU2lyKdyd0q+wP7VwJR9pSIlUXoNh5adVcwpkStSnRLCpuMghS3yUcXvXOcJrMFeCgkVzmxE5yc9bHwB1QlX2+BN3uyIjKwhfye0Qi9elBSK2U/pUEYFa/aN8r2RoSwz/x6adqVw9dSjCLd/pCF/ZTijVCPD//VUtb2zS4a6Y/8iSWSVocvzUinFoF3x2RnBiXtIJ14dsaN0kvgU5CmbJT4/FFgQWqwafSUTXJzp+ZQ7jHZ0j2S1Dr92DQa7zRWAd0RCW7Gsp3kVFZpIvy0Nz5Pvt0mwI6DCw3fIWfbFq0T7BXF/a6aBOhyiZgMgFLp38WBGF4JdQgocq0MnQaHqaJULxAjGtJyV/TWyzHHfX/PZ+/+Axx9JczqSpW9z6HebPVnod9opx+Okao0o4slxPJfwbMIPD3j1h6zy0wln1DUeYxzu8Yyq6NzcG/A77hHhZeDYa0rr3FY//Ov7KetjZ4IasTduIuZ9VrHjgYC3KBg+mZCwn0bl0XiQ1YU5f5MElIZif/Pf8Gg6QQ17U0zaPtTohzI0fslCYqFbtGT3v1yfoeNEXs9mgqKL3cp6skerqdeyIIf3vfWdXcTFAZ/GmC2aYOCRuxf3Wft+zFRatfo1xdzb93KQ4Sw7u/OdXp2CWCc/aamfEx1EojPuQiHkRsmDpK9kqydFA7xzxgefiNCxaMOVzOZsk/tZIEuoY1l0SuCXjSSV04YOVhOJ31aBznGz586GZE6y+XBqGw/f+C4t/a/r5gV2u9qazOS3HaJTjezdJZP8YYj06g9yDaudUgxv3hTwe70h9wXOCy72ru22xo9pnw8u2LL2Swc8ci30BVLnD38WTeu7ibIM1ohGfj3BRk0uvojaPr0cRGfobq8SiGFM+Y5mvrGQODcseMUJk4XDkvyqB2iQxiVY/M5ZV8fwzOaA2qeGdlUafCbZUtdw/OIYhNkuzoku/INBmBvnE3EwUQRIp8NZWKAPdJfgcI5tbepgMSyupnYvJK1TSaU0APG4iTC6wDv+UQZ+mtYG9Y6Kg+5BeY5nb20wt6DOwsS3u9j44v1rfWcdpkqqVXTz7ZeqdTKXGy+ZrJDpamCzZptkG93rkYEnd/orETVGk43qkrOLlrswoIO70amHUU+bj89CwyNY/7DpTJNbecRlbUw0pGleyJeaSw83TO+kkVhPNEnMORejSLYi5W+T6sgOtOGxI2Be1+Guuv3WNM2P0iYj1YCcGZlxKIdnQgGoV5sUCKc+rmHtA6cEmHarcLql5MD1KjfTb4G5qNoM3pU47wzvRWlUrSC1YVIhq/3aq2s885/6Mq3hShzjAT2wIV3R7PussBX/jPFVQTXQ1QfQItb+jpk6d3r5y+eDlPff+yV/uX53Ixd/qMF+vH1LxcNHTC513lg6KbYzHD5JlZ1V/PMBM/OUszZZC8NAQD0k8TEqHX3nyhLuZABLNKPKzm4uiMMNoPp9pseJqCfMHmiZ/P07qv1TOClVE3zULjRDlm+bF2RwqfooCvcRYxCUa0UitL1Hwiu482BTFF9m5Kl5G1EzMxTLzcxC3hnzOnPeid3JmNeOnMUjidPHsMmnFxhmW2bN97Z0/HEBGvcFMQHTxU0+kk+MpS6gnB6dMivLzgvPcW9f6gohAY6t5Iws75yrOuYpzzjmHYNQqzjnnQg3z0E2pWV7gudPyEyNqnZZh4pcpSRDQHo59QxBUlXu1S2ibU4kUi168bHPKPXgN6fnM7JVUfK41jCCFpSVZklCR2GUGCiqKrw7QWueBm3UOfgd/77tOC4q/OU8NbQXP4ir/HOdQKzNwOzSEFepJWI55fGQniMAGK5t8NL7V9ICp9jGY6IZ5pCWO+YoQxTYMeYaCokUnJleBUPMUm4skLCeZ3pYC3zzyY8qxmGQB9Btp44V0tlnHNbFdpviyLV4AzFyIacdSyJ0XaNlXHD4mP16KZttytmrcZLEx8eQlanHpLBOzkNzSKTZZ6LxlaCKkPazs2M52heUwBpGA9F1JFuykrsp5rVqETRY5En4Bt9iZ4MUGuq9RERlpHsT5G8ZdflnCHTwGfuhRRxLvFeN9enncw1WQxgVLmX+KeB7t/kiWf9SRvT8R636FMr4QjxQ8r9D7QgSRfv+sQDTV+pI0/LkAp9AZi8PEEQeWryEFxH63vYWetj5KkG7dsB5fu0f9TWGQPnPkFR3OroXtdxjUPUgbRhAMGYfZvH+fXWy0bx7vgDS2+4ftGPmhV+snW5oj7jbB+0fIsUXCLtd8IvMQSJN4PPMQGzCWI5jR902twonvgR02IvtCGXR25hS8Cl9Yl3D8jpn2RYslxMF1QEeTyZvlQl8MWMLBwyo21u6Q7Vf6R6DIOlyGYwWDEymxivyD5IiksUqwKcnr4Wtu5SRKrx2hngj2MRKvS6Xsiun6FkXyqgQhJTqMHDjwM4qpmuPVSCAoTy0sn4vTYqE17TDWZGUcD9M2dgjOIUSlS2XqtQdDlghvhFkQhFzryOQdpsT3dM7oEuYDH+FQ8zlVtGIQ2IlLOGBzelbT6BMv2ZbsCOOCkEaHpOPZXBwy7eaiyAccqigZfpvZuKZ5uQ9XS9IYh8KiwHxooFyzGhc+izwWS2YDp2HZtm2Mx/wxBPeRQbjcGQv3rj8w9mEmgdnASCOmK4w8w5LQq/udlFyzQ04i3+s5Ei37n/n6EzyQ/7NCN2h4EkRtfvwHdXiHwQ5kZUcfA5JyvMlxLps+uBkZFhnHyXWVcodesZUrP/UBm2BgA6k+/wQ9Ch+jFpnVLHzEwDVXEAmRg3JfNaIcF+T3tD5cR86fEEAS2TYuihoowWW419gYt0hQwVs2MPIF9Yb1nPB/enqC/TsCBm8qy8T/PjcYpoq0N8uslJFOWJ7VRmtD9TY9ZgUpbRrdOITSyyn4ZPSxC6JX+R6j0lqhyY2TBcFi9YGavhP7shjksGEVkMXy6uq8E1erF2VB6MOw3ZaEqs0m8KcplOWxneym209jrPCzbH8vkH7s2qUCto8T2oTSpiNYybxFgp20V3sHpnJOJn1AmXmTVxzXM+VMnBpVzCxDz/DtdMskihJAdCDnhg2JIaOiKx/kXGNMgazS1hioqt7YITlxZHBo2XhS+IE3iLm3Jz8K8jsGgQDkHUVCxCPFpMzmF5zgLZsTThZV+GZDHFYY4kni2hpXzRjF2+KjalKmQ8Hyg6pDkKptfe7tYwbOrTldpox9j1XPmFsdL2JsVNyEZuSp6VrzX1w8J8rlbuqhKtN1LG5rzcVKzKrUlSpl8+b9GgzWjy/734/iwKxGyRBvA/TgcTKNREMhwT1YTCTvOKDlc5eOcHUlrpZ7/E5/bZBokjoWYs+zqhVnIaofuutfKBQR+XZYV59FsqxP+Pu31hfwh2KWkPKfOkPumZJENqkJLVrmx0449RLLepkU8kKJnctBw2WyHzAsSTSlNJPHIu7S9aLYCNWjpS4kCDZu0Atv+SEyJOjX2X4T6kB0BJrPQS/32fZ930stMuTdAX2lCkoubsUnR67C+Pedh66HmkGmszVfzbyCLTgIP+jfff65hRifMJgo6Rg5zWWO1WnMtRtTfs0C6z8hqNbSXjvynp9OpUT7i5heF9NIl06XEDrwfpnrIX0PO3iFaV7hXSeyIqf5HmRpAK29fi29WzKpnVAdz0X9GL9flLR2ZMlm/JA81l5Te4lbJRmgzEXdrGlb7nu4augZKm+5hKI/fGmcoVMkHC1mQFi1nmmJ8XXk8OveHvnRq4/goQE+Hiqg8MIic5NmnWw3mawYQ5ub7PWE9FA6UGqFD0rrQ3a7Dq7E1c2OLt/yLP8SdGXArLtz0QUD2pNuudhYaTrGTZlH0FiXYGppzdgGAmhu9vJJqaH8gmvtS0H/PXxM70li9TF0z7Dh9jm/cdnzJAdCvofUXFxQpfs9ksNOOk5e9htg/ux1YXon6fkrNH5Y61zpgpPKT94dnol2120KcAdwqHcMT3LQp8qjwCBwVTvXbUG5mo4iCPnav6aH/LxRyk51W2BuYpk47nRMy0Q2gUKd2yoTUSgnjOjI0zJdyG9jcjnW/xMiUpW2I/jSkEFBSEL2rzS+u4taiOMFmLhTBY4b2r/V0+ZhJNZuh9a4d+lw5ZjkW3lyGThf5cTXfGDaUfFUrL3YaBuVeabU3FIssy46a3qaoqYoD03RX857bu4ezd+1uQljHwm42uuPj11uP2v/1ngdn2MacyhEfpUYAGCeiz4ywyFkyiJRD7ca4lWbdaiFNRiHWUiYCrV6xpXhQJbNsYsdcayHrGfM5G5Od1CZoNLdXHGwzMnWzz51YCGTKo0Qc2BPTsph0mlsovLd8Ar1p0mzghdQdKcuEJ/U1Y+xfjPzceqJDxJjJS1fyDCPtGCYp4kYKiWRig69X7Ef+wctsMmTxCZCCN/ukRYyrTAKk4BUjWbxogN+LZdXuIwqq/WWYSbIEQ8nYs4uxWLh2aauTnkx16sgtsrOq6YLQj2sdYHGf/KAb9B1c1W8VFZTAjPfAdtyEN657IWApy+7+xoMePCQcTz91F/oqhClxMUR7UC2tYKU9gW7bIooR6kURMnSADm+j8iryQBvbdgOjO1mUOOY3CMKv1r/VIrmZ/d97bVHUpzjuaTle7TVVmX6xHH14WsHyNfKLEl8fVHFHZUA8PfYawqSIeW7Dc5mTCntJp1Lw6TDfTD3RfMO+Rrs3pTpcS58unVljWE6Nyezs6wN1xMBgrRxkZajAUowlkvADEWJJLPVGkvZ47sPOrISSSGftTZ3BHMVsp3cE4nbrFt4nrAz/XY0J1ZOjlaZMsayPE3SxhwmuE6MggLQl/quFhwpkQsK2LCDyJ9eh4gXH6uqkNVuxRq5A1EXOcuqgHF/vJCnv4bT8mMberW4jlRcbz9zS7vaHY7vdikDx5APl0OiNeKHHqOJf5v6I1EKPJo2blnBwfF24KRXijVNt5fFITE/8o+WAvwqF+WgiSmvUDns5Zr+ilb14GilASeeiIfTYYIIkgzEsNn0bCnheyMM5KMH5R/3nKwQINHW/TGRJwH3s+nS5elKPTSVPMWHPy/+lJqOhYvT9ICS8ekuk7zIRycwmutsdqmZBQRn8GrD2pOCwz4V8/1N0+35q0kcyQd8+SlSik6kSvZeeJFdN9niKBRV3QOSxz9wre51GGaaHF1jUKsqzUqPutwGsaHGducxZ22Rc5MDX2ZhtPwgmwI0GPugpT3TSN8ZzdugxWxy2qxSB9nH1ZId0q1PdCRDmnTYpI93TV0wwoBmIgzZyz/XTkylDxMBILLD4xwiq4nv1HcJe8EUz8Q4qk5hMBDuCkOao0FYWkKmht1cxacGWBD6qIp/ts5nw2CXV9RkDsgqWUIyY0+DSwtAmwBeXtPZCdN8wYPF6+n3JdsFM5RM3SyffrXjFA/5NXaJ5V1cfgYXR9N+/Yctb20xjjJI2deYCRop7QzNPciZn6VmTJ9CsaP1xBIajLuTqq7vCtFcvA8vs2MHSjp36AzdDQw/dRMtZcRBbgsPzwh8vkso3fDyepQL8xfsV6CpCI3mxoB61qjXJpf1CVDCFV5BIDVKKzY7wtOosy3A1VFFxuzeNUwcGxettFHKk+fSWlIO0eY73fOxlsFkuFnCj+/Zl8rgUwxFIVHxxm2gDGWhRso0s4178WB4ZOJTpF9CCXywKPdck3uFYQlr35z09NJLYBn4hUCdF+StzeOcJsEI3eJ6jjqNcjFZfA4VIHUDxZIPe/z60yb7VySdsvsbNdWAS4Jkby0sKz0HA/Zjdn7KbbngO9eEVSvvQuu26/E5xpab0vNRWNopDrwmJ38jCp76FvR62vXw9MTVlUnhT7zRMSiPt+m8zdNmLmJsYfAxg/VEXtcqiwu1/RzR1yzfOGMe1Lc0d2XHrH+StANVppQi5Lqki6OliWWZ/F1Q4BDGxSHMXjM6ZoACF1DCZJK87PdEbxKA0jL/LdHwubOeYXKQXgxTLg2oSqtNg71hvTQRD6GOU1e9Jr5zHGOZIdd8LD/h0ec4rvlZ1+dhYL8bCfOXydXfujDENWBL28m2m3McziyAwXdwrKWQGVLP6pWhflLdQ+vr2FEjGCXuajjvXNMqPwJw9yYyJ3ST0j08Nh656vjTZWC/MmFbD1Pb7y1A2ZQbsMC8gG0bzyTz5ZqskyoXjpYdAts5Wb3/w482ouXWjvlAHk92EqbyOAl/At7lSz0xnB4NUCsLq9ATkYgHu85zpvxf3MIE9gZVvpIVpo+HY+ZzbrusLF2EBevCojbkrj2sTG+1/z5e1hHuQtI8RFf6Oy4CfexlWGGuYD5XLmEVL1HX/Vx0hBZNTS3YtMq1cMQyGWgSevRJs9VEResERaTes8AOg52yqZNjYUeMK3qgd8pkmx8rzI+ia2EnJqL4CrxuyQfCoz5pYNTggrhRqP2FQjHAzUA3Ceh4xd49lcVKuijZ30VlEu+C4pzgu3XITYeUOdLExum95k1IU5ZNQ17H7f/RM4TcwTvvG2Q2ApXWBuJFVmEa49JNMaHdBZNlUz9P0KsDb21PYAvc1ne7tsKmEDJ0teXkJZ2djCUXyjgIKpvI3GHrZFUI0r/FoK/adwHJ1O3ekR52mzVdxG1RLDckA1qq4wcVc/EXdZljEVRC1w8m3pYsC51PZdfYCqibri699jW2eGhekbBzG8TbuZDXaX93BN3+Yxubb94lDQ7CsEyTc5OwbxolE35OR27pHogNPwmax3GpnrXVAFLtPszZFjoRRB9JKohosz2kMoPd3j/QF2HgrR3BPdzFHs0i3+DmqMuvfGB9B+SZwCYoETJdien0713JLcuqnVpaK3cN1OB7rYfzLMDjxw2NE+DL8XWjmj25GczSTiECkc5EsDtXfuUwL0Z+GH8/IHK0/ap17wLlIZhmGkNIfE8URq3PlJ9DmV2IR+3MuRY+Coz+rzw1GDfw7JBbOZXz4VK1OkMg1O6qdxY6kLFYmEy8Nv0vRuIOytLk2wWwkrql2UREv35P9FrQ6jlk872nRXg29G7hsf7tZAdm+CEtKgEpBSbxMfJSgkGMYbfzsAcSYLcnuFY5OWnY6HSl7B5YFHYneTfAMDUHnBSPwAPdAjfBbxF3UAx+H/ImpHVC9vfXwLZf6rc9X0DfvLY/iSV0+IFzg2MMwz6AoHbdQpnz7Gt4beKkZ6UOPUfsrpuR3n1nvoDaomX5cTr7O652k7cwpmU9zE2wCMkQ3FgfcHVWBe/Wk2jR5XEKbugvUXuEemi57XfopesvlkC67iLVM9/rNSWDq8iWxHRxG25ikTmjKj0toD2AMk4cBKixyeI4ObgI0Nj32RNAe4Ey8E0zDaOnf10AsTvDNYuwDYeUyoMN+hlZwY7hZRxJ7ifOWfDMblYILB2BezNoqL2q4/VAgTeLOWFDaMR0AJs8Qvs/Hi45Qf/mEDUnaHIpDh/p6fIPxYJQE7yR0J1HfDit2Sm9Flbw9YfMjUMGdPZw8ktFJntTBUa1EY7Cd6X8o4aJZwyqAUofT+GCoBICklbMAgAsU4mZ7+90Li+OSNKd/BdQ8bjCkoxD5C50IGWecqm46xQLkG5p3HRQxomiOzFC/XaTURHyAVjPR2kHqGH5EA1OX3ckgSzZfSBvhqsR0/z31cFZTSyUovykN1Nxv1r0Sp0CSUuE3/o1m29vHPclV9CUYmyV3oZYwfLMPegEA3VJPIkF9fbJ9dn0Tcb5rdAoBRdUTN7EG+yweCrHm2BTJlGm7fAUGKLcr/+/QsFsgEERX7LK79CSO+k0cgQJ42eOVTdufbYYhJHsJB62wHFZbKpwM8gF54gaaTPYyViMmzzZAgjZlU2rudw9FAFeD1vuwWx/PYHy4ReXJxTvC1t/CLM8WnhkVwlb80RQTrCkxy/09JDFc7h0X12Fh1WhEwnlsCpp+Pb3ZINyZtT/0654SYq0419HGSFzpjKDNRf2F4vd1Q1at18/fh/9pxvdarrg452K2S7O2hIElrpswZa/RZVUIMdKk3sRfLj2ABbYKSXOSXMp330D1EFQhk5DKKJCVeEGCh5yEsFTY7iTj/S76YuhmPZuI4WbgUsm4Eyvh7z77k9K36tIP+6xZHm+fz7DDiHqkqNuWGJL88jAjrCPfFGxcRcRN1hIM2CulB7yjVO96NEhZC96dAi5EGNVRwlUTJsdEb1Dg5VvanNopz5GdSkOb20uHD8xaFV7HUh3N89xhW7VibOe/C2pD64Jp11duH0vfJZ3vpTUR8/FNduz5hRL8AFlpZ4HFdIt5fJfmcUH/IYvbr2Jyza8y9nc3dv0Zh/smyGJwF6OYkneL3a9JdcYL04dDZ2gWycrg6ILzb8B0RZ6QFQ6w4++zUEnIVUOKaQSRbC2C9uTLI4bavLe1lO/RCrNDhp73QyWlf5ladFpW1y7qgomcf9laQBMkLRiYCgR+J2vQgB7dfZaP46EKXcRnri/sao7PtXnIT5uJDqwvk6+hjV5LhbVJ62OfBqcTI+TTSnD7bsprKsAw0UiSJHwPsL9ERGlCaqjw2/pvVRkygRbEahORxNkNBvXuwMeV0vNgZ/c+Lgtsbs8e50MW274qopVllU7FNpKM4xo2kR/iN94Fja/UpawLnaCFIHpYVmAVmLm4GKOynUW+Nl6YJffbjDGeilSD/v/oA+1WJ9W459YeuAswlo4/mDx4hTmqu/L2LY8g9XGg3MmPN+GkeZQg1UfbnJyVgn0KJHjhVg4XRCLwQIlw7hQa1uNzkJutlAyBQYpNuAkuuzwkszGPK2zH5Pyp1HeaQcb/oPAdV26nXhaU4x0Qsm4qckY4v9VOf25yshyKmTIHhhEY6NIgv3RbVrbfC+eQs5Tfiw+159cmb/8LCjQGtmgjXqofnWD+Su7hpBEAtW6zXfTb1C/zmVqsPbzNjC0qJmwT6a9Nt83IF5YWDSJZlkl/nNhWvTgOrJ5u8XrXX/+Po0oOMExVfw/HM19H5Jk2ZG4QZR6gkyuiQCNQWs0eZ8m9qedcsi7bkAbith87XLaW//LxaY95Ria91sEBAg3BCfVQBd2Y4xrUu2VSkCoCWcw6Fa1z1el4ndPhVc97xmvzYccMWz0nZ3hM/Zu002nnurqPx2JngaIK++cRPTd0lACgXGCiIp1SCw9dCxLcNFJATESSRMLW/Z2Y2Mj57u/Gpc/ir4g8rPhQpnsqYTWIYtWOKmwfXqkCykbSQ4zFAK1glqUGTzFw/ke8jwE6q94lhCRySRnMoRVhYzQT/iihgX+oLM8OHf5lmQ6jOoZYx7KM3sHDqYK4KodsippZDNwbBne/a0gYvU3oC+40SAYp/+4Y6+G+guV7OEF6HVFWzB+EzB4UjIJjHkCzjSAKA061EWc34Pa5bcEeZB/DrE+ZcC/MDG7nSUQSV6LwqT0dEYuTO4igbaRmwYg1iN6baaBTQZ1telFPosXxuSCZ3ouRqPjH9TYw+BuWwMb0/1L+a8jWByIjlNJSqFjfCKwx49j1mBZHuUC2aZDzn2akfW44D1DuGMRNFZqmNz2tM8VrQilo6UwjUkEQlaOLXdoH+T/MQqAeszaeSXRTXAXcDcQNNk4yVNzbTVPS8A534FRTUtZBw8VmZPqBU8E60XVDsF6y0OjNh4vAkU31kHUBIvLBj/mjw1RvGcMNeW708MCo1BrEMB6LdN3Sw2RnVAMth9JywAhc97ecnCxNoubJOa01K5NhwMgctFDmKDzy0tOcEQLiVuA+22LjEMM7S9iRuBuIIC8iS9wNvvqtQxPhh5Sc2VQfq1ARRgXooktad1wYa5W4koKmX/4NiWdal8S65zSV8n9gKNLASMpfn+rZlJYkYk46uPoUQchn8riOqnOyICAufbs/OWHSBeG33ovQDOMsUuP/8U8MK0A645+KmBIasBIiRRiZKBQ0AE56pGAUlTSSYqXrlGJpBsY0z7MqATDtdH2XYqtI0cy5g/z22Qg5/wQdEvPFN3iEC/C/KHB9cSG8p+d1CEuBkpEes08Yg7JxH9yWHUiZLOZt84ymuCVAAb5a+EL/PZD7oHPpWVUfKkaO/8hVb37b95L3DzojzPhxyfw6b9qHEu0/0D+c80+Xa2Tf8N/1latVBpJ/eeyDRDD3r2ZYXCTGxPITpkzahtJ+HOjQO0zq1WuKND5DT2yKtN+ysZDhmwSG9Or75YHpwqCMy7WX73Lf5EnDAA0wX/1PAowyXYtneeHSCIH/fZYRTmjkIw7jos5ek4ntFFlBzdpfpcre9P/9Afnf1/93mZYDeU/2uhlXSV3cuuChYcmqAQGMo1tzw5otRjSeyo9iVi9Xex+bsNqZkv9Zo+s9KupYFYaPiEtGLDvE3qI4JygjrTF+0W0BEwr8ohU7ewsxzL8RZKWW3A95Ze/aA23LOj2i64Je64U0Ev8fzNFQNFkQh1I5Ueru2HqLFXyl/qQ9mP3gc4XmDLDHY8xrSaRMlVQeL2//PBEGZa4z4I5fILTcNLuhM5R9hg90WTX1+mabzWDNvVxfJWldxoMbPl2cZs1aAwG+hCWGsAUpK88sDwyVJLs21bxi939ZUXoenJ3/OuTbdmv7mJ/rd39xVRZv3YOrouGitKHWHITvr+3FGiYd5Y1A709BWXXRH1tx4fnfdpDLe+fYguA3obR8EhT2i7lPtHcropu9h0ng+fi1PtVfjtwOX5AkaPX3Hdz+f6US3/vzyR8upHe3XGubEFvwZMeWYQp+heVYBPtBvYyMKpTjq+/fNPUfdN8S8TfIupaUdrNWWTu9cTO+mSzvb7hEVqgEp/WqOmqe2ZzQM2xOE8NQW9P4Gk9eaunyp9NtlwGrs65peLehilrI+Wz7x8LwjYhPmX9/H5/31zf4+2f/h3GL5qs4v4tSYJ9LGhaeuGbtqPVzuILB+r/mxJ59MSukrajcY+oxE9uOi8PennkplGn3mQV+AnhHA78mFIElGwscfW977U1bJNwsCtZZyUPh1izYiQX1g2huYjaM1Cr8UnDyw6ygCmG7+d8rFmwIKjDKEB6/snpYZJRcxTMBV8z2yxCY5teRTwZUPcT6TWDo25IbR+Z6JVrJfS467OvhyrPKNlvCRHopcmMp5jnVVRHEAlJj8kTustz0DN1HkVWqHunSx3ktivbDwOYvcqNtBbrzKwxakssu0Z8YsPq/nSfWXbD5wBctaaamOjDeoGHDxb0dgBk7t/Bv2KkedPBc+f9PMQmDHWVHk19nYTt41edpg75h8ZToDGhlpIQKCzCiHs8pef2nJSwo2l1b+hERQlthVq99L/GI5F76vwbl1z/ydKXqSZPrn4ic7yxuqw8ylV/8zT+E82Bfr09mKymXC8sSMvYagWzFa39xcWVxeGhP5Z51wFPpdXzAzbZruclszIi7a/5YrJI03p8ZsfTSIYtDVRyvzGV/GXt9ZvWPhcE9+/nSjaGBdhB/vDnpU124+u2tNI+5m6TfMQaf11RdPBHCVZ76jhQlh0ecketE+W0BK9tx7Qf8FBW/mqB157hR+kc7di2LfHUYW6NaD2lL/jijo0J/xZctolhNTD8VpLntmc7Dwy3Hd60ibNhQ/mnBN/sCdrUPsVjLaDBCEnPWsqrMp53AdBf+620c3/d2a7bLrIW4/xxY6tey1JeXu++wqpTfsq/hVG1Nn1vs1CH9iXWR6jTRffrTry5X+YzZzpI2PxVPkNj+86zKCjCqi2gIBL3Lzz7qh2/wGFgEYNcHcRObY6iOQ3fxNEZP8TSWVoN1bb53xDOw9+GyQVvDAcXq3eGhcvmD5UWpTNuXSkb452rLGk8uG7lzLi6ifLO+M5O+WAa7NayM+28b+XW1HyIcmU6ulVuTEu3WfrXSwHPI+Hj/++v+GYzuVe+2xzcZ3m1WXho5aeZfZQn8+hReWHee8xyYp59auWtOX2O8htJu81nssKqBdZkCwsYhTzDuoBIeYElTJp8wCB8SCqscnyM7VrnEE1OrFuAKTMsGYtzAy3F9csxjsJMQv7CvoAKGeHngsu5o9DcwTkWjMW8O/QHhjiLVRFadGVQmW/z+pApndr8qyOl9/Yh1nulH1a4NFUJ2YWX7hXBrj19rLX4mtWHVGWt/VUfjNKwO9ZnlRn7y9NW6dZuPR0rHdrturmpyFjrZYHKyTackcphH3FdQg0lw2pAjfJJ0sd4L0+wriBDzutmhslO/sSqCnafKWLVBh36wFsP+Kb+BlME9z2kuu4MO8CFMwMGALwsxP9ks0R1SbDIfXW5dEhfCZJ70N0KPhoTYOrHyKuMpc/5zcNQeaiIMm46c/bG7zTOZqJrXQTYD8FwXChvnB0EvSipjnuyoX2v2q6cnBDq0s+k6x7QCHbP0odeLPYbOEty1mY26Ryqe+zA6lfTZLVjRgiQ6JESxKB5cId5pzM/jr0sGHOy4B+ciA+LWZyXUx6Y/5VhxtXBJDCh6YK5LSY2PYBztfucM1cv+mSA/Dsw5E+MOSxQKLb5Mi8iH3U34nkQLyEYE3cbUY4/Nm0hHYBp3WkVyvvDdQqvg7LXHMHmveE0plPYEPgQ55dUa9CPpKTyj3J9qU22F24fHzrTPXOc8kXYWc6Z/GmgtdkEM767JHoLF4DPJhtxHagN2sMITVdZtIEAh7H7rVHHtkv4SyL5aAV1Hz45tTxSVWBjyZ5oUdwzRG1z9k8MKRL9hu2oCwnZ6SVXR8if2lGasRZ4MJaQnB0Da0KFa8Pu5aQ6fabQFy2TYTiRNv5r0zLS4A8AuG2PAbWCPCBKhqMWQHku2mXXktZgPE7sCBWgzCdpM/eza1wd8E/z3pU6qTohvW2Q2ThZwR9lx/hj6NG2Y6T4EqIKJ3S2QeDUl3E4kpAU5lfVPFxC0hLzj1FhKcNnwG3/hsTRkUi+cliVtXcO3Vtgqojt3EwbB4H0/izuvDpzfWcUxcLIPPtvfDGwPeGnU3tLfpThartLWitFL89ZxYhQ2fA4xO5b/hxGHt9yB1miaSU4irJwFQW51Jj3htGOFJPrwPN5kPeWp5MzW2Hlm+TYaSxDREc/pBwbWUBydp7Z6bzK9g7Ai9khbMyqc3F+YS9TBKyvesZJkrAckkBFOrIOiV8WOo/q1XaXwucQvvWok7apqCKhqIxvLS/ZPQC9P/s8c9n5sjWkZ7vpYeHNiSVYQeZJhK/Dkp43C7DyXsTvaZR63Wy/d+PT/WugiRrNS12CNUR54+Hd5yIvN+GUjprYMAIschc15qKPVc1O7hCy3SxWEDRPL9uQHunzORxyRlYRyXOpekzUZB+zZm6ls/m5o61sMxX2n1gEFs4sqvjhw4jNsIGj6xKXpV0aKZIWeyG8elnQqpj3GY8nAA41J9fIcwfQaUnOpQdU3f1o1F4NvdS/mwFNeExXnbclyd4lVKGSlWac0j5ZA4KxP6R0fHTGlcF5iuwswzvAtMEMEcUfeaLKUrTFIj2+LIPmca1nN3grEqaUqFFx4h0/KFevPNG8x7XslC5U3CMkSnQU4h+LbtCAIKitiKqLxsGfVGWiBmCD/b87R7Rn3zVDtf6AyPqTc0Tz5IjhyePfG2N09MCUHnp9XqeDbLWkcDgJacuRO2+trwCO9Nq++XmJpsRoQW+mgxiGYRi3P+c0eZH/2DU/m+6ouk+/BZ2uu8PZs4SBSAUs1yMERyEy/zF7Y8IQ7fKi13fbz/3dSd1zKnWAHdpCpSk1uyVMspwliVbUaTYSSG8ffRmNwIgK+nWKz8dUT8ymkeLahWkoSAmJPXSILEtD971/zR8D684RTjmMJ3HWPNOZOR2QXc0MP8H2Sz7IEMowD73rFQNRYRGjJE0UJxJ678krSeYWBKhjKTBljWZBXZZmsed3TFO4IUfOHgLzLU2CJBfw70RmsOVMaCbN88O5mmH58vHJC/thymTajsAdwoCEPycW1Zm4JJwgHvcepo1n9OLbPGsDwrsvTM9zGXZHRJK48ZgZcvkMcxnc5yBqwe400LoYH2ohK9Xzo/mRBNJtekPZWQs2wMLvNQwZqZeFLTKYoha+X9OWmC/xMIdJs7PnG7p9hrAhTs+Noo8MjtKIrhtmWrluXhB4ZZEcSs0eL1BToqNn1FPTQeb2XZyHswZONwjHZBUf0X0o8NLPquSSDSXFOHdEnb23StJ3xfGdIYzL3mviKE3f+EruVXs/psy/URNK6quc97ECM24lhXvZosjv69Rhp+EUbyTIJ1Sjnr4l3tyP4s2abZDuPCLVpnsiSY+OCXMH9QNZ5K1H3HTbEVrvjt6vp4D55CSMt8yj8zSE5JCshuWAjrXA75HkneXxvQwVnVuFJ9bCJ+BSJWZkuPD2PqOBs6RjzyV0ASDZI21ek40+u9NPDQ+zHCo0Lz4qSvolO9bd+NJ7DrVooCdvC5X4K92nWYdcohIIZH5dsSFg+Ox1E/LO+KJsHXsa4D/bD5pkc5pdzt+Ejg6VxcfN5w5uxGS14MmOiObHlWUielR9GbOIhD1rvT09LJIMkQGdSRLjKexRyoxaoIvOPcRLufA98wMCkbdzp0fi0rpDaf7nIHJZlig2SiYCw4WdOI93NPLDRaHRfqg/IDGieiTp8Tzg8lqOTvY6i4lgI1dO6OeQIIe306hEBkqiSanqOHwBJgkMtPtOlzmtmb/jbD20IAJjxqo2z8sis+jF/WfP+Dd57kHggqdB47v29mwLUvPGGgQ6bIvPo4kVmIILVLJCfhf1AXME0oQQkZ0KinxQk06Gbvsex2czL992RAh20kkIska5GWaCovA788Na/rODgXN2nZ4g0t/t5B25xhnSEYOWczzPVXNuWozhq9nuT+fppYcOXLTDlfYuErK/bzq2ziV6G02fWDAHnBM+uE7cpbFBkgspwtLLH1uwGN/zLrk8N/PBq+Lc/C+8DzN2eSbrm0D6rSHo2OBJ2xOMyCpcF92v+Ypobv1KQLZtmaYlYdTNcpPg54Ze6ELbj4lCPsZJc1BtQvRy4U6YTecjITgj/oRhGIYROwY765fdXWhL0mgBFDOzJqJPFkB47mIOLt0eNlHOBBVNYR6dnVyMoWMCqy19eRXjAUf7q0ickeBfs9p5FtJpTe8ieAH4USQlLFrU+cXsduLQc0V3h2decPaQ37T/8l46q4kpYEARy0vdOPiKoL0DDXhDhmHmILClvBMNmaBcnMm304mqwscQNZoyNZGe7+MnSJJvG7kOOzIGESJXxV31QJWgaiyREDf6+7PA3j8dUEkDsltI1AbI9Qxjz1EeUMkMclO19NtDVfakLme8X2Y/v+ERHp0PkmwTYwmQgTyQCuqhOZFA1giCmg/upboKIRv25JJ0NCUirxYyz7Ts+oMT4Ce3tgypNspKxC2+SA2LuGGYJK747xk22T79E3mvpdW1w9fDzYJ+oYeVaxCHQOrJoLjmTOK+VxipUmJ8sA6G1qoaq6UrbRfsNj1wf/oxl+7E2+yRmBdVcz4LX0jUao2Aa9BrJiY83lp5cOOuXfHFLEAOyjbLfdak9sMpg9JWNyNDnCzff3Pmm3p0/+wziRhXNEl80lDHRYeeC/foJLz94A5zavsMOnZyE4eJbzbCVrF7DG2Fv623ZZBqHl/js/af20vxvvslSoJXqXky72DXMrfnXsHtok24Qlq7me8g37uoDqrPUu46D1HqFxwapZfFG9WoQnvRq5+0GzTwTwdhpYwT+9/P5GqtSDweCvw4Q7wA1nAiXB6iIFmCjRsyY/FQLdMNVUE1DAFHXx7vGfQzWyKHGmIvcitniMpfyDS6TL9z1P4IiR2vappCAlHb+8tC+CY/J9SrOltkxSUv7Bq8NaZFMSf8SMy9XaTSnN6urSyLwr/SSYP2sHKUY+MbvGvMn0Kfy/3MmvazoOV5gWkB4RDsjLoZq9HzBFvNbuTJDehMhx+elOdMeDbjw07sLCAWX9LeCR3a+0VTFoy7aWssq1tsA7jSAT+h71nABGNXO9C9nSROxXJujo91yRUvLqXcMp9T3ddaSA6aFEthgrV1cbtwYmoyO37rL4aB+qPinRT+OAh4ONXYkB7KVbtUF7zwSe5K7TX7QdHrLVDFUVrL+2rNxoxznpvX1mAHcFr+fMeEqsG4+EuZXP7cNGmUFTuinK0nB7955vswL5WPKofpjfNTdBeYBKGFB7yVIot+deLPAE9iF0kUCDxevSNvg3roXHNG+R9nhynQv/RVysNZ0dc0VFBdYUFLYvE1Tq8fQFgyc1ukaNALxEOlpv4Cxtq2uxelsVsSJ6UX+DQbDz0YHTegNeS91wCTog5mtC+d5xrrSdz2o7hGrugHAe4kLnQ+d0GLcVHGCl9/6IdlfZ/K5H4BXmGzavettIZ1rcJEQ8SM80qb8ZMTKrJZNLM4DMMwfHuO+t0gd8BGetleiwQTjY4jMoErEVUz+MB1ZMtruCsCUMKAnf0mgZfPdgw6Kw64//4T99+5yilF3VCDSRJrxgVU+/ukB1p+J9F4sSAvh67WFB0VW4mZVFOLmfm//kf1M+xqfDTiw2TLyV2ahqeGy0fhhoKmotX35QOYf2LorRSXgiXq2g/hahJMMXP+6U2OeYzkH346DhHA3pfpDyW2pYZmrLjmNP1AdPXhUmMdEuiUJ0pmBL5NpxCxD759/YDHthrsVbFh1FsOC57gw2VAMPZjQT0ScDLFsEEel6cKG5QaMYUv16xEbOuuxdd3WilLIK9BBLPUuZINLDMtYVMoCNEUeR1WRh7lFLc7p5NuxXgkhVvC5PjbEsTKWx8hf4VqiJkpOEeSgbIxGB8N5cbF3tSR1ORVY7dohgLbqlFxzzWqU1bLN+mCmyvd0lLPJNmuQO2X7gOmrDe1z8TIIdTMAD/6zpnb9bphSRSD41qMcdypdt9G9Ws3likorZuMvPIB1VuvgwIRRo31Sug7cCQj9nESw8vQIXQCA/RcgRRLWUbpqPOxYM0HJGzvRyGN22vcF8kiTICU+wT27XGyojJKvbp5CqEeN3gbz+ZVWO8PNvNsIDx0qKmxvqyruKQJDmGVxNhLx/vC8ol8+Xz/LkemcrjAN28dkuSWTGOwBdhU6b5PrGMFAtfnwI799+kqxfsQ4dTiosaKS7xY8eEGgOnxG57b+BI2WE/u/z3mr9/hgHdMy/qIkEILGUoEShCpE/EpLMar6y2dQtHW5+xPW51HnF6fx5eyj3QqJH1YaTu6XjqiXvehTVRDiEdTQ12nNm+k71dG5i9o/TjVQnWi2Rt36B9YLSjzCgzUud8QR3pikwiICQi/BYSNMg2HDi/s6FNbbuF2mG6v14KV1Ak0BKnS/h2tksTwrcFYewqMirg5moUGHYTyypaFe/LRlGISYKieqZWgDq7r5AdRkLLw37iboOaym6l6ucxRoFyEQ7OgJ/oEuql6WCNotvBk+asBUoS3DqPoPpnc0Cckpp7Y5OwEWM3eRUFJzja1mzgbPUz6Hco8n4VX7xUghtQDwUtU9y0/jRYF6Jwpvs4nwzdVOv4NASHJTwzHWzv4QC5StgO+6Gm4xH7TOFX2AzQX7I6A4SByUAANOVc2IKOpFT4c9X+QzyQ08fXFfJJxlpv3uwF5ROP5XEJtqefGrnGAxrTQNc4JCuLD2xmqeuGSwdBvfdnYYmXzWX+E5K6GFxjHFYTAZRr6e8uRa2IrsHMle31T48cgxfKKkuK1c5xs190mqL1m56G3Nt5Av1Uj01lxiPSWr1dw7saotHRiKbw+cjAdhg7MR3dnXeBIzFVvclSrAsMwDONQ19RSlWObnhDhq/9/hVJg/7HfjnL+3uyhn6eouC1YednqaRuV1GG0S9DtoZuxXShsFiCsOaYKcmhgulSnoyv+uEfjHMFFKA8Uuu7qGhBF/lvWYF96+Hjw+fj8dQ8P8ruw6Fx2rlR74dyXV6fbotpMFEE+8Z7EYbRpuw/Vy7d8BA440WpnWg3M+GrFECxmZ1memIncmjhi0+v3gpXKyP9xFSIGQE8mVIFxyToRZ3aR9zK4EJUbm5x/FKtUnbyBCv5KbHAPDPlfEE9J7eYpP+E1pxwbiC0bWfWbZSO584CddKZDboLOfsXhCFgpf/QA2zE6raG9og/PrTfJPEhLoRTn1YWZy0/Hm1rwZMH3J+d3ONZV3Qqa6gfsVArL8KaNGalV8mNrCJFN4FUU/7I6cPVZuQQIdDdHSqGEuTBhMyVCu2aSsulPzz43yNy7o4S8FM66HH4voq4AKNco4SaShryLLrZ4t6P8JzYAXQnSXcDTQB4TYyI/zs/Bvz0mjxUC4e+nL08bs4xklcbLVPPE/MkoGulhhYSZcuB6JxrgTEKnsQ/Bhhdiveq4Lp9TaW2D6CTbbp6k3f34ep5KFVxQBJTyjChcFhQv3UPjwWWS/3qzNai0m1OhE/P83acO/tlkHrcPC8d6izuJ6Yr0pKts2UFF4snN+WiuzLjeELJcvd7r285wC63D15NPnyNew0wqvppyRedfLHWxSH++RFYuXhHzoW2d1ytqnEKdlMSTUz9yIJHx2lL31gL8KMbPXxicyAmvI6mNOofFg8sFNRDNcYi2E1DAU4lXg4Z2uN07R/kHpwJPt/Er6DtjtBS+vWAdAdaCYn8/1gZUL5OE9C7cwz2Kwte5dpi5JjNuGvzSaKUCVSUmYiMNWG7Ak3jnnnH29PejSEoHx8QQiUJmQevgAso4bDYkmcA4d/hS2xlMdFMvxrHRjbDZLBcCB4mbXOOi+YNhv1Midex1ziBbX0959JXm+vBZCnLD2lvGPmT2mJK2Kf1QnAukbfbsqw8KQbEf+xwj4ZGYB0D3VkKHHARhMzeqLJeyRiDVOBPSavJieos0MqvNn+TG8gQ7GeGIqvme6sc3MEQna0RuuToHTZv4VU5xOmXH1bQSxYBHD7sQmDNg9on8gZAl3B1+q86VPFgpR3Trxjn4/XJSKqm8omiIAJ/GVqBWOvqTwHsyTmpeWZEV0xhStKU4byhHukzhy3ohEpHNvGxX2B5HxInZ91qZJq7/R4ISHehAMQkqfV/rNVSEP2TTdV5Irtnx1k08QM76fYUYRBWFX8gySx1vmhlyyrO79Tp2m380Lw7J0wY2oabxrdQkBPicS0AqgntMt5Z7rN5lmfQzKC2rtGXuSyK+WU+jLnq8do2l7Rj7hngoDRrDMBGrEpw5aPt14edJFynESHdD2qbgle47aZPCcKSbSTWFMtH9QxpSiBXdZ9JlCoKuN2lMYejoskung1Du6U6aVAYhPtLtunQ+CP6je23SPAjDE100Kb8I5YzuvybFQYgfdPdNuvgiuKd7adJ0EIYruosunR2Eckr3SyO5E2JLd9Wk7V7wQve1SZu9MHyjm5pU90L5TPdXk4a9EC/pHpt0uRdc0D03aTwRhnd0Z006XQrlF93bJpWlELd0t006Xwp+ofvZpHkpDL/RaVKOQil0a0hRhfiX7i6ki1FwRXcIaarC8IFuG9JZFcoj3buQHIR4Q3cd0nYWfKX7FtJmFobvdJuQ6iyUS7q/QxpmIf6m+xTS5SyY6JaQxp0wbOhqSKc7oXylexNS2QnxD937kM53gr/ofoQ074ThBd0QUv4plLd0/4cUCyH+o3sI6eJPwSPdMaRpIQw3dJchnS2E8pruj5DKKMKNNjukqo6li/KJg91aq/NRxPqTNtumahhLF90zB69Zq3kUUZ612btUXY6lC2ccRNYqX0V059rsOlXja4lYn3PwX9YqjiJ812bfUnV6LBHlJwf3WauLVxHrn9psk6pyLBHdNQcvWavpKKJca7O/U3V+LBHecnCx1ursKKJ7pc0+pWo+loj1Kw5+SavsRZi12ZKq3JeI0nNwlbXaTiLWvTarqYqpRHQPHHzNWm0mEeVBm71J1cW+RLjlYMpa1UlEd6HN3qdqmkrE+oKDv7JWwyTCP9rsR6rOphJRTjh4zFpdTiLWJ9psSJV3pYvuPQfPWavxnYjyXpv9n6rtqnThJwdnWavTlYjuf232kKrNqnSx/p+Dt1mrshLhszY7pqquShfljoPbrNX5SsT6TptdpmpYlS66vzj4mbWaVyLKX2L2R1JdrkoXsNeYBSVLZ29kNlHSyt6ema5kSfZOmW2aku7Y+8BsaEqWE/YKs7Ep6cDeR2YllCw79s6ZzaGkga6nNG6FYU2Xq3Q6CuUL3UlKKKGxE0xKU8LIzsTEqoQ9O7pJGZRwys6mmbhTwgd2hmZSlkoo7IzNxEEJH9kpYVJ2SjhnZw4TWyXcsBNpUo5KmNmZ0uQSkkRzxvIPBoK3QiiRbO/JjhX544tj0ndXQze/HpsvvvWlYf93RWux/V2x6yL9P5itnmb+2lo/R37mxQOEjidb80fKkfQ5LqpD3O23M5/7EF+PaPm+8G28+GL4pujmu78r7svzonOz/+kEf229VUMwk/3+XzUCsn7JPojcLe3R9IeqmObuOv+uweQZ3d4kD2VAeSwLyoP9wfdkFgjOHS44ePvPjADYWwFXGMpbA/liREeDAZxKM2fhPB1M3ilOmiavzdk74QCuHdMx4pgzOqo5CQm4vZ7V+xL4tSAyhwul5fFPKaqhlglHdQAX548YcjmS8Y5rpcDMPXCDL10rYG4U0P/oQJLUNfeGMpnMvWdJZUXGcn+1p6pGiQy4xXJQy6JfzfuqGojeNCXpWaXSW6B5K1IVsbnBrIGdUivuVJXUrR0tnzvCAfY7rSUXO/p8+df44ljKZoJLVJXnzZ2AMdZk88w+9dgKiUzvF/7Kcdf9nwe+5JmR1T0+CnqP2HzdAZexiQRQoJFqY0mvY4zsGndu0tZMtTQ40o33DQ8IElK1W9oVHRWaHzmiV2j7lnJ8exCnuxtryBOXFpLpCHH+rXs1hEulGle3ytGcnsXRNr01bu3W8mwe9eyebUcnKTS92Bn7LOorg0EDepodhJHVjTPylhKQk4khZGT1qLy1PWieTiZjSBz8afC/Sz6Kahul2FQ9hsJYWoxFr4MWpbSaWpbReOdaGU18ABPJNGUSm/L3/Pa9qblVJhvulNkm3CsHm/SgpJlHZaEpbALHzc+HEsM+XZfHFZZEbhETo/0Z8g7RwUvrEgwsXV3et5L7pLI/yY1IdXk/rtMr4NNqn/8PtGModa6N2Db0A/WI0PE0IK8Rd4z2FfkeUcIUX74oY3+WRB/oC9QnrkousMzIirhq6BW5IGrD8VDMHWKT6BPqN3blxYhlhbxE3DRjny6QD4gu8bJEDohhxTKi/kYrOWL5iBy7993ZaFynL8h9I9YDjlWpc5fEdkC/p35HSDx1yNaI2zDa98gPjSgHvOyU6COJ/oB+ivqC6/I4YvmBPG3EdaCfIZ8aUb/guFDMJYjNHv2zUeKmPI9YXiLPGzGlsU3vkR8b0e3xckSWRgx3WLaor2glZyy35NyIyzR5/IL83Ij1EsdJGeZtEtsl+i/q/wgneHqHvGnEXbqzh9w1olRT3K+VYe6T6Cv6I2o2reSB5V9kNuJqQC/IHkQdcbwv5tKIzYx+iTo3N+X5iOVv5EUjbgZjmz4g74PoZrw8ISOI4YDlDeqqaSUDyz/IKbROlrpOP5GPQax3OJ4pdV4Hsd2hf0X90Qg7PG2QV0HcHkb7AXkbRFng5apEv1uJfoH+GvVlc10eJyz/Ic+CuD7Q3yKfg6h/4niqmK3EZkT/pOxyTTflacTyjNwmMe2NbTpH3iXRjXj5hrQSwxbLGvXvppWcsFwjN0lc7k0e18hPSayPOH5WhrmuxPaI/hP1v0Z4xdM58jqJu73RfoN8n0SZNJ0y9mMS/YR+gvrcXJVcYXlA1iSulug9ckmi7nH8VcxdEJsV+h3qQ7MrL0csf5GXSdwsjX26Rj4k0a3w8hs5JDG8w/Ie9a8mvaywBHJkF/1o7NMdco9Yw7Eo5q4RW+gN9RAEeIJsiNtqtN8iPyBKw8sHZezfrUTf0Jeoi3BVHiuWA3mKuK7oA/IJUTuOj4q5IDaBvlN2eZJuytMRywJ5jphmY5veIj8iusDLd2RBDA1LRT0NrWTDMiFnxOVs8vgJ+RmxThwvlWHeJLFN9CPqryCseBqRN4i72Wi/Ru46UQZT3H9Rxn5YiX5Af0J9DFclj1juyezE1Q69Q/ZG1MTxq2IuSWwO6FfUr2FXFiOWU+RFJ252xj59Qt43ojvg5QUyGjF8wXKG+jq0kjssn5FTKwLjOj0jHxux3uP4VqnzOontHv0b6s8g3OFpi7xqxO3CaP8GeduIssTLjRL9Pol+if4b9SRcl8cjll/kWSOuF+jvkM+NqCdY6NkJAfCraFkaGD9QCiF8Gwhft00LKIUYbUpovcK01lAKobMU34TABpDaa1kLsTqFSNOdroeWdaD0gOg6gei6bNOkcA5hwjQntIEJDXAaYR5pw8NJm95h9i7YeKQB+1EbB3ASMHvfMHvnbVrCScCIVCJ8wwjv4D8YoXQgKARqIozvqWAkPxATR1IcSVmiPhMoiCgw0gwJhTAlJ4aRkV11mIPGGWbfqGYYCkCIcDxQzcTb8As0RXTWkzbwWhF1g6sVT4yxKYqALMKyivaMCoUykhgpThI5x/adIIgADMQQBwAHecyBAWxwwAoCMpARFAxcA4Y7SGVfgEYLBhsG7hj7fAXvFuzDgV8DMdy5Tge2bEseBCwNe4C13gFogKEAAOm4g6Trl4RGbFKzQ8Uxrx02eXHMnYdVQ5950sN/Auy1h1RLA5OxesIVUC+C8QCi01+HCrt3Re44EExL0NqKVTZY/qeK/ep8ubG1yJ6HA27sxs3KH0HS89fD8c/pyWpLrByL26jbOCtR8J/QcFmet1+yKYxrDW3QYvrzB+bSW4h5p/5LQI74s/1K37rP4+qpRKdBHxdGun82VC5gw8guTA1qP12TLf1/Qd7+X/Lz9bQdoknu52vlouDfFud71pdlsW+ekz48Rd+h2l/fN1/7522Zjkh42STWQNWDzIfpMayaPOLhbVPcvk1ndK/hZ+3zKBs28/7HLpKrx/OpOFeHbz1d361en/JLIpqeA3g13yS9Ql/bqMfRWLB3EwmmAIkCaoCSQyDnnifqsMoI3H/Up/U6B/1USB3H97wJRvBd0kuSlbWlG3+wf10U6ghW9TycsGNVAvrxdFSXbKLOcHHR4XuVwK9kGlKJetDpzC8Rw3vJoLcLFJg/pQ/zAd5nG3UYCxnOuku3ll5RBtjO5iuezNGUzGEJ/f/JwDh/uhZAILpx/T05QzIkIMDQYCXeTzs0dshwhWW+dnfbo5LgEGoeDx8SSMdoE4EALST5RhvvvUMKn3HC712dv//VDPfzMnlp2Paab6jpiZZurC8n5UGm2r3Q9ZlWo35TCAoQyfCUhb3k4PHFImhsdWhpbqRfzv4Bn5RBAoEKpIIfXM1OaBUzzaKu4lXfS0ip3xPdYgrw6/vYT6aeQqoJBU37oSvHa4FKwLlSHdLOemJHvTvONuUCqjBYUYr5p0jaz//RGWmOX/om6jvzdzy5O1l8aEE3dT7LWLQoZBRA9CM9mIpKjuU8GbKJes1+ozyBP3Vd/jXV/ZSvUI/xGRc8J8fD9VIeY2d9FHWS725qYDJQA4qVVpo2fUU2ZfatF2zDFL5MCQyqpdFLEzDJe2YeQYNsFVaJFKScen/1z2PhwPnUfN+L86PVbOM71W0r9svJcC2B++XkLq/XE4kYwtAxjll1c18vXRd3swVGzNJ5ScAxi+ITfHGFCol09WzvwItKWckO78rzB84jksZ25OZh2A8YNW7FsdmNyQ2BIBVB92SB4mEefBPXMumsY5/sU63uqUI0FfTqVQIJJESIB4OX1OthXsl1KB5OLiQR6Mcm7dEzBiFA8VAxOtOkIAo1YENJq2vv5axuUb5+ADKSLOwTWkxJhvfG1loC3w4ebmZlXiLNSqQ9xB2+00caTXOPIps4g1oaHkovKiNW5Z3dpAqVoM5AyXGpJrWoo+4SOR95QH4bHKAfk0glbQEyzFkPqL8SgUVVlF0teyc1K6TostDAcxvDD5eMWPNjebLPkq2faATqKomrqsSdiESFqpdsiMqiRdJkfhRchSCD2YdGBk/oZkIPjnoywz1GU3YFxcwIyk6Rjtk7hbUWM57VEp2DFJrfDK/s/EtTsrPt1pKbveMxzDRNg5482XXr8YlNvk7z5HlI0Jl0lqPlkvHJtC76LHID6cd+0u+uzv5GI9HJBf5e8yFQb7qFmyunH2SyvphROzRe0RiL++6vyAEtuEycv/1IuaJRahOznQj+K1LOSifrW0ChOBOnyT4XEyw1Rh2adOOYC5VWXt3wCi3McJwMzpJ/InLv9Rps+zKUSjFsjLRHQQuZamiaNv9xTZayXrfVbqeRffalLcdKIVWlYXNDuRnHds/6ZCRxFvfzPb2aDdSpmqUlRO2aMB5vQDEH7QL5EYA8bX+8ZYeq1gmbA2XtvAbkBI6z6CHJOZ3TSQf8ZpkBcVqoTAfanWaF8V2CxENfDIV8QNJQT2VpCGfvDA+syAn0r4gDJ9V9cPgPVAOnjD3Qw9v4BNp5EvSgzrUrM+JgSV8Wyl/LUtYzpumTQZZYltKbVL3x/m+c+wqgd6t0hh+W4O3MEJo3oJe3pQhAaXzgQleby1/Kam9gQ5Kdm4phm6w/LeZssy1aUgAnUnPuSn9OCM74q9Oog+rHNxG6yHK+yvOobIbXUr91z0a3ZKYSnSs+chilna7YoN0tex+vkP3s+s/q5WNFMvajNSXVBKWo0T9cMRF0ewhqj+i6OQiYPak3jnunkPSJJY0Y1L+VTLb+WR+AkYTsMmYhTPnTP0PmKZg1BqHEhaKu86GVuwopNuoty9+Q1S0VsvKYlEljsVls+Xhz6cM6y4VC+sOrtK7Epz66GhR5bROSjYdl7JGa05nEwLRlGrRNluoyq8O1tdn+unbZmgidclSwkO8Jc9XI4NolhWI/Gd/vWJmol7eAIKYlcte67DWRwaIJ6v0DMgKTyP+ZimoeLZ0Hz0p8B76F70GZeckL6PADLZRt+N5U/FmKlL6BRdhUI0ZSVF1dNHi911JsPSlpQ7gw+Bk4IsQntoPiE9usgpzKA6794It9oQ8GOz7MWzotwDh+xlI+8nBYIUpt/n5W+1uPPRjJcWmxN0L0UybO2CoNvSfzeCn8i6xL5nFsRtvrST/enyKNq0ca1XFl2HCzPBVzp1jO4OI5pwODZ87TjsdoQJhqXkAr6REGbJ/4qqiu6RfsHpSUtIbjBWwydo9zvH8MYl7Y5vR+o9jbBbwewduQcBC6mVqajpdlCyi8zMIgH6wGKLsX+780DdYDUDe/4+N2+iEzD+kLvKID2w0sPUniJ0QmT/OzdrHWeDgtSLv75BAWZNJdM8BZFaCXaA9V3s5XLYmdI42NhX5MZCQsv03Dyg68a5eCNjsbf6HhrfuVLKnL7P99Wf4Vc5G6qTYv5kR44gcn0N2Vb0MT05qKtB4+5pH/a6sKfjzNn2FiRbzxJ6ipfgzHQ8GlbJV/MCg0GSToV/k3POrm77X6unqbz6QGfeazjZwN6cFpPCa8DL5kKK4fQZWJp3xI+1OQpu6ZgInmmoMzZhNosChmNtoWrgGWE+cSIQjDg5xqLXajN/HAjzxnrf+Obig/u/3m3qHk48yI8nqvCYvRHjckcOaYBxLtZhjf/xvurLC80p72jGbfMlxU37GlmCxRCv0fZlnPL+aW0aIDd4oke47jFvd4hByPXVzuiz+IY2U+noS0Qof+fmPzrpyaf+jHLDc2xv1xXGcV0zmwbQajlnJ8PBQWyTn4kpmXFHyVMfec6+vAJvoEYurng8rncNlCPb8t4SbQZvLZuZSleZe9cNPcrFCsTtnx/W3QvDuOzb08Aypwq7mU13nUfkVXQbUz0rHB+3FF6+3Xwn+Ys/IZ67c/fh6zpNftw+ZhufAvjD397bdl3zuoML/XrjDzvzlNnXstaD/XN+X2PZYpWZB+hNgM1iuCD6n/Io+ZiGRXtmff5qWEc6bHcw5lgfpJUC74IIIz1sXX37mWTe+wmKowVV4aG0pwRB+kGTX3oZJf50bzN/EzGc8F+WJcGVzAV0fcWdMo2GcvM2f+BH/lg6p/BOytTTgIE4d0Fe+bwje5GUICLwLZKm/TIGlR2SzPf6ebBrBoZOxUCRD2vFnt4yFcw4OQWxSi8D0eOX7s39u9j1wCzquuwdggcF4ZxeOzOxYMhDVY4svOAXc+Mm7+HwHgq4OKZadE8yaYBqGXPOVPJBItE6R6ouHhaJGNo5gF0r8LZav5EHPC/anMhYqvshftR+ii/u8SlMBM8bzJHztv4O5C18dvaK5UF+o8W4Dk0msk8OrSOD9yWOdZuYYclVGWPnmzKmF8ptSO86JQh3dYUGx5NaL86MmP9vZlnyiSzkq9M3SgV+uWhzaZPjaAyXSvrv3hibARRoUM61mrRxxxits3grk4Z5odNx0qBihvHV7IBTUIKN/UUNiuG0L4t+1kVaTgefuuabMNQURnp8hOezFmn/L76IsOHbL0zjvAWMh+BXmU1vlDGXFKQhp0Y6b4TkeBEaubUhc+Nqcfbaz0focTB6q07XRqxXm205nqziliGeccEzEF413cWVEkf4XlXqW4vmaGes/zO0zRan3M5JmbD7dZI8ECG2Om+J7w/uSYerRSe/j5+yv9ANYrMBrOAbzfFIxgVlNXOLwnNbynsEn52x2zziVAQ6mMbhE0jN9d4Dc62ofBen3ZlDh2GiwQRDvmMxZDW5bLiXUKMInehSKUnUFqcXAvMMiQmzoPuA+02feHVpHtCsXJNNbPMxulQsn3065Jpjx1nqbV7hm08M+NwwStnRtK/odom+yM6L2jrdmbfxEHoqLPohKVqGTXq8QYqlvert6WKFniUxQnNzpa75jSrXoSfeRPWDmvdQlpYuFpEapI8LSqoo9Him38XuFuuKK4tOqs8yAbf3Tc4u5WiU9RiJyD5/z9+hQScPUCn28ZpPj5xZ8IiAfNA+R19ezKvUdo5OpHsgDKXuEulMgW7iW7+D6AhKrvSFwg997oDvyIkxZVDs8ix5tP57JXWiofB981Gj/u/sI47u+SbJzNj1SOPcy7hw2zP//4t3kMcUL0leLBV1PYYanY5R8POezkxjYcQDGxidmlkI5A79/siu/9yda+Dz6HpOC0UmmOJCQySylO/aEkKwVOugpe7GkH9nENO3Fe4SHaYUK+vXo/VaAv1YAahUZVC2Silr9YLSpRy67llcFUxB3CCO4Uh+eMH9/x8IGZb2Yt8CGFOwrpI7ZgJzmthJlf+Mn6TaWu8VEkMlaQKauEbGN9a/+Apdydvvf2BfCLwGDxBUkYORo/k9hyGwAzb39XCdAbR9yHodMJUoBMg6qg71WEuY2TYHswCf17gCm4Ejtew8DT+OGQRR3E5L7GUJQw8prhxOG7kEIlhZm3zziCMQ3NLvS9PUG58v2AjIaxt0lo07jNZBf63tbxqP39KmEaH3zuWni5rCn0vU5mnbfVqjljr1XULd+mq+5NA/V+q8gTcxCQ8d4qyJJPf5O71QITr2Nxo94W1yoMo4wfLnsBaux6ImGO40LgO5hFtj8XmxhbhTP2GpHzjG1Ypdv1hMCf+bOJrqo3DdLi7tdR0+7DNGcVROCTqUm5rLoz9sSXS+todqbrGWZezZDwmJysltgqqqCI8HrFoTD9PzONumsNhl5HuPg4DZo/0A8rlqJWOv9IYrcLq8h0c+upLxOoNXL4L6HLdacCYI9wJ81Pi+nMOO9HEJtqyWM0ho0vTKiY2QR8Cz40P1KW1WKIz18YpwKWkSTgiRBi0KNkmAbk2U+2WCw5lxoAa+q5OLI8YoN0AgZLXSpOTOXltm4X89QMwuTaWHlFwDtZ/d96qtFSSviF3A3ae+RUPWLG988CByq7DSgvrzbfP96vV4wwAnmlHaC18dUx8Xw3zLu3xn4oWYXyKj+QjGyA8PrYSS/FyMmolJ81xqbiyhYBR/JeGQdgT8EEJPlcWg8v1MxS/5MGSqLKd+hkf+e3CBhnvmMj7jZjdciKacEFgUAESbnDZJWCuYr/Mu4nvswP3hPohdChkbloM2ZwgmLyyahYoiXIiD6MZUAzxkCSJemDgJVE/qAJKvR/t0l2mmpa/z4OB3zPYCSh/PD02DjwBm6UjxFoxUyBL8S5oaRwVQo8gH8R+wWXBGuf4R5j3hdEsrFh4uDTtqYA4+XoxfMDLipZ32SGJ6AipjO5pnF18bjnvHCj7bw3dz9hrD+XTxzPjOQos9XJqEGRZ1QC39j4BCqR38mVqCf4rPiFrernhwrwz7KewAD3TxnuS44CWcykttaNyyxozlxpE1IwjRNOV55Wfk7shCuCL2snEYa/ES//cXlayyob8/VOMhB4b5GsyevyvLeT9otlUebIqc75Hq32XGBZvniogW9cfoo+o7vzJ+6M0VPLz/ii7symgnJzsz6ptSvVPkzELrd74Wg6Gn6mc7aTBBS5bRkq6mSW/a6wOyVnUn0Qee7myZcBCm42f/K+z1rvzTd0yTzXltHMat4D7eYIYsV5gnZzkUZXnHfauAmlWff8DpmfWDdA88F572i3SRjQcYTEzC0IdCjlsTpp8secnKrZFqTurCj4c1BOpR0y4cCT24sXp7KBimdmSY1psGpmrwScwpq+w5mnptq44Y0X05pH5Sktj8F5U+4aeZbNciG8Ormh+nDJP3wS5RfqmhT3WUsAFepEIp2n5rQqpyYG2qtU1Nuu7koW1cupJJCGLBh2IgT6C3EWsLlH4lz48vVAUOiD+ezfGIdq9DL3lH3gLYpkAZbJXfnYxHdZsjaGYJ7UwtCRwz/KIiY4gNQCQGxBkvWtHBINeKSgWLALnfM0CsryFkHKAOcuzuwXZMGgLtf8rhSMQhLNCSChtFjeZUX6vk0v13WRTRLL7duIsHcADInxM3bbF2twOzG/q+BYQBJT0/VxuwACUcVpQ+kCZPbYB2O/q6JGUMdvZS96qYUIBhBAdvdv0dyUYk5q8ol2AlYZFzNhngCTDBjZOCIo1bHQflkmP1ERjMxl7pvDTcgrBUjjPh0kLlaXZ33lQVClQHOagVhsQjZ6INXPZjPWe6Dnc41NUX2yQFHjIO7Guw7WmfS272Iz5ISWm7Me4BkOY46UlhRDuGVgX7o+FXydcP89/ApD3Y/F8il3nSOBqsgGGTGyE+ZTsfQSEAUWCuKq8s35zP4C41ifGTEPEFQMJCqKiMARYhvomNab8bErXIPQ/PzRQsjBWtZvUjOklFAYnPSNuJdBMOoYK4GsVHrJ7kh/OJ0qwX8YCl/5wpxDidXGIZ1wbeIHwrvy0gGSDlYIyGOR1cDQz+DXAWS+mqvqxLK1fB7BuIypNJQ2L+vKev9EEeyQ3Eh3uzD/hupApQ5LNwPdOTiqhvbEG1kk6uB7BO1E4h626ogzJR3G4COLQuSYeU+nurqXK8PdDCtILxUghKUwJXSOzvdThqSB9wGaBzi6FzJnRiJSwmmBGgVCSXdRDmbPfhA5jKpO1X+zpXA5anfeSL+UAAG58LN1EJtXCTC1X10ELcdyFfWPOG8i2mLZicaNlwgkg7RtTIOngi2MLdimikoa2nZLQyJ9OWDWQWfXc/J6rT+Yei8a2vDOz6jVdOQXZWDUH1nJHUP7kS6p6Nye8eIIHDr2EIBvnOxkg+V4rNvIJaBiyQdKpDB6fP98AQAJb8oktTCevHpOGxoapXpNx/ssuoY+Ge/Gf1zEL0Ccdhm5jIkpaK3O51yUQmIGb/mIUB8vJfMhn9ZgPNf/ln/X8kzFS3wEczmQj2A/XJGgENUSo8uMjWjhMAODH/E3DtrApJhQSxsa75I04NPDylzzPGF3QgzHJugMAUYrGCIHgqtNBUrdto4bamASIfq6IjAa87TymMIDfExAH4SXjosqGxOPIAqy5QCRitOsSkOFyeioAXJ4SGeoRiPHhJNSAtLYe8s9rgiyC76PesQpkp6+Bo3yJWpFyaBpGrBlwWjkBPkFWUhQ4CTJkMujh4Ik3/sNkehDpgBidRDdGIoU5tBaJFHqzjTPBCPLnq2jWhrHnCRTzR7XMQqxpM1EhzuciJg9MPgiNSpSNw+WeD4BwT1bZzudtfwAxAZdXoageaOAMNH/mx+pIad1PzDEPPaqmgLHCtBARAc0goWOgpSSso+GK44NV98oqRdJpM8HIqvfQh2SYCDwifl9YvtWPeEolthTHoybormYyAK8+RFR09YVixseTlCq/3dM7BpVnM0H2XCS05s3Nvau/KOK/lHUubR1Er8n+NFxX8Jt1mCYZqTzp3F3kdBAa0CQZDIZzY8jTkFPM28Xk7J5BtoMObbr6asr1GMhVccLCtsnGqeYIXqTrgpYvsQIyZVknFEj8PSm6Lq0aceIosPfee58J+FYEcLZDA5iMG4SNArqFuAVgmSPBDZPGQtuPehLZua6Q8WokgGiNM9DOUjzPu6s2A7CwUTwzdBnE/CuPBg2RBDYUFrlVcGO+GVHA85HcY5CrMVbJDUs6oO077PhPwOi7AGToc/6DtdavKCaUzR48Da6dZXQXGbU1L1+uCE9ORUsc0yE1EKZWqbmMc1g3AzPsiVZgquyL8DHokbq0gQn8H0WJ87iuiikoZv6oCLR+DyMHelnROCzjTqhn8oMWNHgUz0PSiAwNQgK4i5yVDgFifBx4Y20ANFw7DUKro+Ifxd9uuOpKWVvZSyAS/Iab4pk+fb3U5i/0NDiQrFVLxw8yLiksK6rp+9doBZEhD4NYry4Y30KfHfQBVUwj+UMs+McSAgmDFca4tBscMeALAyzN5+mMQtefJjwCtcENxg8I3igA3F6JxsmOJI1MU2AE6TuEBk7pmyqKyO8KeCIwAUIas0a4n9HcaLlYCHptjuy9c865uWdr0pXnQhncO786WoEgyOj0e1nzPKTxHgAi8+vMpB9RxLi/QWL/rrr1D9ErMPBVKPCpsZUDTBXU0MkwVmq41+HqZkLJMSAHU36DEBoQv3rsYVkfhjnhWY9POaaIHISbTOuzsL3Qj7ffPcsBSdQeST1ntk/+Tz+OusrVMgrh0+dRXmLfPc7d42e0X/J5ikYIoOaie81cq4fAY9jmzN3x1++9xegRINnks1N0Qku/x551WvfsXPJuOiKd9p64OiOBz/UfJW6H8GwkTeHwR+DFLfaSY1FZIJYNOiaWZDZZ9NsgZvS+4iMeRLi5kIGKFo6Nmg+H7LprXHty/v8PPOHFJqtd4c45bLn3Fn3XvTT3HUPGuRAsFexWX+7bFgO5Rxq1LwhiM2skL3ALsWOGegFJo2wmuJntLH9/YsBoPj2QVCFFDPTkqcLRSDfi8sIO9YYedkEyBdGgjwaqvFIuZq4a4MJiWYXnAyoL0gcGi942iPASM7uLHPG2Qtk7Ikx0RKab7YPKLjXdILZLx6obxh6DySOcTnkw8Yce5FE+Xs4cNHcaXpw4SA9z1KQpQwWPkE2FFF2G6OtCLxhG6a8eyNkPPpYJw7ZC598/9oq3gwsB1fjNDoptmCbGrxkDVL+9ySO2JptNboncXAAxHDCNef0ouiI4m+Qp6LvQvF39IZ1f6NcKJ74QjHvQgEbkE02cCRs4oHYDy6VTh9nWDn/TvGaM4wN+GbhsRRP+KsG/j+m9Eg6A8/SGXH9xgi6uBZj+rdtv9HxeNyj6GrzmNI+Z7TySO3jV2DC3ckuBG/U5j9Wo6QbPiTzUywD6y1krpiYkwEsJQc4l+xhftIju/iL6S0eQ6ESnUz9QCbm4sPl96UVNQU2Y1SuMII4h8Cf21uWUL/wgrf8uCM/jM+Jk2ugJNa4/zAFr5j7fKiMreY/GZcRhkI0nV9U+t2zQhn9XXEACO5Cw8358AkK4kxSoiqgcGh6JToftdUJe609YOKQ2TvqTl2N78hAz1r56XMW3sEkZw4d+Pq32E+5up8GiAxBpSYuD2pK9+8QlxM8m5uoRiHjbkYB0BSqlCKqiM6ORvNcKWa3rLecWiPzDVprNhjUDctg667l9M/AiacSRsX4M0gPzNjn7RqucV037LpvHK/P15f19ea2Xjata6dP2WHw+rx9mUozPE8RguUtwhVfBhrZOpFAdy9/pYppINfgXOq2Nm+qqsfVjKL9yC95ycaAbnjALK9nSliw9fEPxYvVVyRAl9XwHQL7bEmIn+DGvN/4brD5DSUy/rOAWkPSCieHeFEhqTEPohtwkD42ZCfK9d2yykUK/PGFw68gVP9axAIenzI+bCFaVuRTLI7I3aQ7z8QGASOJqsxGCLtxL2IAb4rw9jHR9ask4XDAXOvGHIt4sv/c8FDZbVgkmeTkhykaKnRfNVatXg9IVYamP0vQ6wS5Hip8iLIhcNY1WBha1nZyxHY1327hIwNjhbHkUukRpk9htg+j2QI663LsMu3xJIeHCXebYnesZbLNJzgqx6XNBVK6tgDSNgAiAMSgKW34pvt+BGhYC1Is26Wn1tlzamSyxxJDZ6YJ82NkcATYcTTEl0oaFvgy8mQdWIG8Iuc5YPKjkdcEdEtlJy/kupeW6ccmqlkLDNVkVClRRLN5PqhCht5Nrthvrm/GVLQXABdqWp8h86xUH0WgUCPyM9gDPuwsq0LsubXHtUQkf7fS3JoKXMO0S/+lmT8G3c5AGWVH2X7K3mtuUdkbr3tFMDfFVOEpTudzsc0u2asOFVF4Rtump8xKSc/Mxowmm2aH7S1RPce1BNrptFwk4Z5E9tpm/oKRACjvNdL6WD+o+KlGyHkoC+NsHo2VoUsYpqo2Xki7QMFpKTlPsOnRB6OlTyIm5vM2yFSvmSHWkSWu3OPLZqhr4QsYGoZ+LKvVnKYp7/6gm+NGEAivHm/lomal571DRCgpkeiU9MENepFrwXL3XdOASKq49C184EbBz7YxSInkNo0/VGnaWztNRSJgPzCpwOzKfN4BEj+zzqF+4g4vlq88UzQDalkxoQDIkJnT7Lm4PTx02RHCll0ClqblnBRbcot2YWu5l7QVmbgZh5Y44Ui/zg8a/sQLBBCtO4jWh/4CGmxAtXKEJmsqHaba8tOIbitBP+IYJ/QN3Zs/y3KfXzyB2r86rxl3DZdmblJP61VdWvkfPNqibiAxOWsafQCAK77XLGFGG3D+5DIczqeWyeGYWB0knxoMBNC9hIKp5yB+gk0yiRMuwwt+eJ2p+2qgSQshwYuFhT58yurj6wxvT8AcDAtOMKRPsLR0UBMlilh0rzm/Jo1CS1Wqk0Z9wW1GcYV2PgeeQDyNOWdxULsV3f5yef8CcIEEqWENQtg1WBh2llEgB83dr7z/YPP87msMg7P+Y+IcO+b78AOyO7//KWr9+zGz8yhkvhBlODAZE7iDYUIKhu2bhzlhzdQ4guE9uQRXD0d4854fKy9sCNlRTGIB+SG3gpUn7zc14OuNXYoGZWXV55WxlhwXRn+4+Oul1p8zXfbyMdoaNjE8KeXW0EwI5xekk7c5mmRZy2lt9fsxHAWgKLYrSWZ8smKthYSDEDtjvJ6gA1btcoMJvhSMflyPph0o/BDGUgAVC8cYBdaNccm0zVKl82YP00iFtd4hbhmjLJcVlfJJqO/VpWuoJ7xLm/WsXXlEi4p1ZnnQzn1OW0LrHWIDBDUMsoTrpbot8ddoBaQo+q311EH14zvSlTucG/+KNHgjpO1POjjnMtPvixJUjpudwp1vbFcRVaZtFC44n1CBjALrDJ6V8RJdB1ok96qhH7fP3t/PsC8pVrj7mnwk4FTnKk+t7HxS+e4PWfxtdeT0T2/pFi0N7/6plUg+OGUGfxBP9bscvHGjc3WLlq/1uBeXs1f1aq1BWqFrEC1sBZ3H9NGuv99o4N190kB9SUMPomlb9Y8Cfqalu5ndNzNjlQE/pamVEUtTiJb1/h1NQ787gi0ELz/S9r3rqAjZvtRAdNnfXBRfbPLLF7Hm84SzKElEh8oTA/oQ6gKD4VpGOwvms8Y2KxhpLEyIMhIGIRZMjtU0vzuhDWnvQFdAy8fKM9SrGHAYtCoNcfoXkwVgkoVTTWRCrRqGUpA8qMS9CBoQbVTq2ryZSMBqR8UCUaz1qdjIhQLTcc9BY0L1hFFJngpscr+Nv9dvRZs5AyZFVwXKzp3h36zjH4vT2j6MvndCva7X75pgmGzbeGcBXbXRjDOFEV3VekwOyjkQ7wWIAUQ5L7l0Njod/QShLCHVZQcNnMjGQS/g3ZDlgQ7JIbfuv80UZdqntVKrBo7MUBzmL5kLIx3Qklbm7VeVglSP89JpCRNDgW4N3kK9Ni5+lV4Igayc7m0DEMWglblsjQTvWZKSXTe/App1XNunsH9Iyu2pyegCaLP7XHBNnLHaaRG9JpoN9iLUBWgWkqbUwaDhGAlgGTu+dWCMOC0MuLBDo932QNMPMTW5McPhZ16v8+9Cw/6ZO3S7XhkR+4jGfqGGxj+OgNtXvaDCvG2BbqwVxoLiRnFmV8L50YAUEG6ovLCHuRcUvMqgHzvIFr7zClksy7BHi+0DhxsB7KhQvCUR8iIpXHZ0QgHDvve8bcexTrcRTP61E5r9vItMJLX48atdb6D7ORo5SENxmRzfOLjToBzIzl7Tj12G96L8yq5vAZpZBKjIIceMQx/Nx3joS4SjaTrb9gZpF0Ec/VFW6isXEu2lM78TBlY+DcBRtU/ZLv+S5K6XYNFdUdRGOjR20m8yuGMI7DSu73Ih02IFgcym1sUPChbwbkxdgGz6xvWLxni3H99vIQn1wLoquqOIIYSfTLaSoj6hdrGVFpfXhUm4/QEycHZs+KQW/POm85zCW4r5NJLvRMYMzhLJQztb2m1Y8nI003gPFBtKJepldArVDlDS1twHr7YfwiPHyInb7kG3P2t/0IRTDO/LTn/+TXwkbq8sXk2xQF46EUgD5x67tMDxTQUyZjavcs12ynXEkWZplo+KP7Wb7/wkLqDqkgJzGjc4Fczk90ioA2eW4uhlU91LMnuNAquPzUEMo2yEDS89bKBRkEWjzi0P0t7KA8bhCbJ4oulJNaI5Z9Y0yFVdLhrRZLR1NiMtVXVQ+MxzBlGMz79/mbgkQQ81Yb2pc8nCgqvPXsRbB1yZk4qEMqv6ch8+iNPQcEMjtH0lBLQ2sOrkLV30DEFf0UDvSjzIFdtRlEcVfoEAEVV5LVILusSLdyyv96/QX/NNaV1TzWcaXQsfHyV2ph8aIbJ65fxPzP6XzUpX4S6Jw1vaQysPMrNNRswMC80QIysrGhuSU4z36Parzw69j15Myx9AzJntwUkxjO0prLs5E8uhQXaMVwmr4ULzefd7xT96pc+xsvbB0oc/6wUW7fesujOfVcGvtAQk4Jhoz41EHlgISfgYMgSP58VBUYP0eOT6vwcAdk9V53xMW6zFQNuxwyDlSejqiyTJm8Pg00fmjBpkxHeaBzi97SvKCt8wc0a4ohjpD3QvneeK+uTA2mb4+bhp2z/lnvLRqxbukm6wkrtG5Uk3aKuwiWz9a1IKCMertJ+8+J5alkTB26+TwTKB/uhlIafKN/0cJxKGn68vXx9OdV1TlBxcHpTeV4gKJlZzNcuqoAoT0GFASA7f8XBiqORewLCRgI/tiyhhin2amr6OXKYdzL7QSfNe8T7xMOVo+QOr/a9OMwlVlKFMsw5D+aFELYqiwV44/SklsVSneebpUscZ63+4QPtnbFZSQBsd8j+pZeZMKvHpckWMXAwDR1f2acoLR82VDDPKkYKhx34Kfq1D6CacIKTiHu7nFBHAijL2gTOYkmPvTjiwqAiv68XaF7SWFRzu3St2vlLGPmXsMxRiMjySiayJxojNJXh4sYPUZ/N2pRP4sr0kEn/Dw7DfZaLyiAfJhPDI/7xFKg8wWVR07lA5NxTw7DrTRaywy28T5Ff4nQqK/ezbKRde/Qitey1K+3LULLszgjcblYXIXzEgdmkPhkUraE7k2otDsLUetsM6KhSFrYuhWGccgrPDo3NyZ67MumJUORIkQykUkTmLK/eGdXGo5nSwTxCyYkI4w4y4dCdRsXtuyoE9Ko1ZDPX6MXkWbVZWwOg4qWEv3doAb+TG1l3fNvVACFfNORTxPkaBrbxHlmhBeVjx8BteuNxmQSf5aqJIdwVcCMUfdrJgH3Vr4SUeUcPZkeghHeIwticPvLGx2mWeXIMwzXPasi3Vi72hIixv6L6FUGpIlE2jUPdsEdJ9Tdlk1uIIx0iUtFpBEQdP2BmldSlJuZjoS/MJVRElqGWRwUGYXo1aKVvbvVXZhkbkmj0kLbt+YvktJa36MFVaqRWQ26jekzSsHYELWeAOqerRMdthb4+NkWbGREy7lj61W/bbE/Td+SxCPC4Ed9smy2xrHJkNy4FaOlNj4rtgiTwmZ9zbXkT3mCKn30nbLUjSurYiEgwLpbrrxtxB6As7SdkekSMlzvgnUqx78bmc4UjoNbPJc4IPSzCLzlOEBXuepMJ2uTc8uD2BagFCxcNzujjCUylmgnx9ptfRkwHTPYzCwPcLJWUM5kDt8IihgOPG/gWxFPZ0E0QxidBsh9WCMr99v0f7qCUCuE42XV0u+gISrSEnbVyTQ/2hqEwgfBJZP1DLhDbrlCqOQfuXeCdH6tbOoFZlcoqdMKzpUeeM8mIru1+F4VloI3RY8eJc44KpFsR19HDWB5xvYWyQk19lk3ESgwoQSuwUTYLFCrSde5RUz5TIfJUY+IUcZFPZB2ArqjVNmTP5kr9EP+4X0PrZ6Kp9rYRe2K2CbfPdoBRTcdLFup5SiTflSzDvLO4CxK721wFQDdEJqyc3jx0mqj1py7ls69yWW8VeBMKrsrv7NgH8AI3UtJY+rgpckbOCG7Ok6p2jx7i/1aWxSzqFaZjiWygI3z87ZItZ39NA7OJvpaTpVzt7BRQcyzUGsTjjZgOU23n84XCpjNbCVbtgPE4DW/Y9YmzJJww8wOqNnPDMM658I97Vwyurp1La+27AS9gL1jRby3mSrJ7LmtMqHb/f6Q09LEuBJSBphkw4YHgTiwwn5ObeA2FOO50cv49qQ2R/6xLSTuIoQo/uXJiL097GW/hy22X6IyK2cxE9caoTDEoOTQ38rGquIV/DPljMs9f3I1RqtHlconVUs5cbIRFaEjKo7KUB4BWMTTV3g3Q5qlwhkUWrH5F1RlVhj3PQ3/eTgRZlMmZKskRHNy6LQxzNKXr05kRe7Mr+hD0XJKDwDA7ZmGXCUtIgBS23o+jTgO1qlnoN/BANBx1QQoB9riP7R1eXKb1fd+3Heii1My6DIVNEQfVBbPIDzlljsbrJHQqOS6Xqcz29JlFpncT9+I2/45OEBG84feepVvUfSIlSe6JVtWPfnfBGou/h27Cww+Ax+dsFqcX51nhUl5pDxbqEPSAqpVU0l7x9xL7wk3nJFCHKWV0/Hk2+vDsrnO6f7YzJVMK1TH7Loq7ECFxKhPfAU5CIl2GQ46QOG8Z4uehpytma4Ji7Sgr9fcC18WfnJXaQB9sBy9tsyxAGKLNeBKnKV6gzxKPE+ZmXxpw5WZTBhyx3L53RfHpOz1xbJPMvekhzTpiiTJ29CRwlz/eETN+D4tGoP1X2oOKhSh2ziOjD+Uq02OE2gLOsC4kcwU7seUAxfpGw5PgEkrHZohT565Nczzmn/J3FXlz8u0R9iFMLrk4M4zrHzf2cMRsiaQ/nMA7aKM2BuKnoGkU/gghbLx41On3wcQML7DtOjR+W6uMhG/B3JmxSQIwANzValGtJKKjejkyIs/iVq5eICpdhrlGp3luNTatyOkuwrcZUeFOizRkDlStOKThyJJEWLSXJpI6kdP+mIKWn27B5HaGauix1/c38SYGsP0Bkq4Yty0Obz9DE5Zsgh7YSCno8os5QBNnsqsZnERDETXwyZEuBgau43iiUwZnCt6AoF9nHyqK+LPmmitKwY9ypJ4YOyuZkItARzxSTawS7iFlDP4jcjOjpuWNLC2DQBsZtG6CsY6xtyoC3oA5ajpXmKRhl3dxMpwWbxmbQgUC+VA/d2WqP2CSN/rKS4YhIwJ0ys0qHgMVMRZmuJ08a9Zeb0Qft7tezwhr333kSgjD37FEwa6PFRSk6ujOujG0bcjJb/fRk8V/iMpxd8SWca9YxCFLFQGHSByYQv6AwllF8T0zaz4CpQs/5hkyeP27f9DGQKevR1Fa0D+CiKXxMy8PEvHIo1VBUPmHpRRdqMuVYUS3x527NNKR4B5Zzv+THQhobpFbJdjXhOeV37m+8EmirGlfKoZufxfk+GdRjyEyGE//ngTTF4jN4wrRvacCGpMOO9zQGeyqMEtLySaR2LPMezKCPJclw/ZrKMHPy1Rj8RdJMFpGva+1JHmXkNFnu1srrWUmBHAzLgItNLBBNp0F6QIPYcgX72trnfSX12QmBnxze8Ai4RnyAr9MBP2PQwRwFnEjkdVQGOmiTor7qaXCOLveWwOQwCVOw62WJgRz+mtJAZAF7bHtaT7mTaRT6kUAEiMTJdibiLjKj9VHDcpb7xR3WuV1YSguYl0Ernu4SA7DMQtPd4rDxjx/WtjOkrmYdr9Jqcje5UXRAz0FGL/1Gcmn7FymzQrYsVrt9wFSQYHEot8wsszr9upIFuQ/y7bes/7rYsKGAZI2sE2zlWWwIPZJZeBOJ+Lv9EBRG7UiPTyM1SJKuIvRiZ3WOQyWHsyelwYVD6uM+aArKvpuvEZquZAcDq82sgvJF2dg3BsujSr+eBkYoWB4vjTDCLQkyyjgSu9mrbVA06U+Dht2vOcycK4o/C5qMclMLpYjZ3vZMeedjKXcL4jxXWBvnTz5NtR/5Xrlj/TvlY5iOFhXPUO9JL/axtb7PR9so7H21GozJARI8imZleVMzCR/dFRjj++EGsRdRkfRWSoHnoY7B6V6NLuL1xa2YMiwIilMqJn4JkCnALfR9+sJsNLuyX19FZh9kmlyAOffIf9JplkNYogzHGq2w/VRLz/1+pYEMuA8io6HSyH+lbCQwHCI06ZZQoCOs7TZ+uHtSwzMnXH/maqzZh3FbCngTH7Z5XXnxOd/87vcyRW4pQwe1XEfl4hKQfjKcdkst10A32tkJg2ac90Y2OFMkLTi4XdYRaQkzaWJ6pP1cYkNek0QIj/xXwYaDfL/CskJUvsT4Sn4gv+OA0hTS5PfYuhDsOHy/zBu0lfzu2piqqCOoyn9pbLReOk3Y0N8hG6RBqGVo9n7Za1NKY6RLU/LDNodiM0UpVujMDrXfTGcfC6x6x9HNZk8c5aeRFt9miZwxebMeFfstovX7vyYOp20upCjDhZelUL2R95Bg4Ju6nJlpC3uAH1uX/GHdoKtgbP7+zEKj+SnLzxlWam29dmMRPt9hdusGXXGy9UYtOsbuf8Y327Wtj9R8hTODZ79WPkU72D89QgGE/x7Gtw4DTuBDumW6RnAoti79HdCh+L15pGZlv/VK4AU+xFvbxmniIkRkVIHmI3X1eSrvcXLQA99O/2Yw+IT3rJKcbBkEmeGlAyg47W6VrvwMYavl66Kdr+pT4pX9VlsqGMswNEWfjvA3Q7E7BQ/DK6zVVwMhGD1zXHUvyCHX5PKJdYOsKZY/KjMDeiGDfw16/utSY/TQioztkH8fz9bFjj59rAWMFMW/cjwXUyNqOjezKzteG994DcvjrSlkU56iOduLM6lSACWRX106vepLm9+WqcT/i/5r8XVb1YDaOBKOqHoo0ohHikpPSySf58C/UqKmv0AKLDBs+2uDaYHkD6It+KjAWxexIQKJrf2XtCp2y6yRRqRHcnLIV3QQwHHiMAzJjnC/+yeksLL232o9HpV6CBoB40I4ECMy372eMYZaTUh9xZguCtEXNT+RAjo2IF1CfUXsJH06YFhXtFth2MSXFHrrKahSyQwOIJpcuFpgJoRgwFvhKqC7I0DrB+A0Ki2pQSaYVRQpLsaQ8xl4vWAKd7gvTS+ZIwdhxxrjLZVGaXEJKCqkk/xyyvO5ocyRotyRAw1XNcMOnpyNj54gPnlrBD5KVnlZJowhfzTwv7eF7xxppktOP2CX5rMlHD4j0kIuTBBVf0hmNuOFSMDeglSaKPE6b4qGOfCvpJ5QoKvE5VyeFDjdwPltlxyXxVLGDIg1mGWKQfVtb640DuddUtML1E87Q69oxBE+K63QEk1ubRXvS2wblMx+lfU9whmVBMgxktnCAtlutAABz/EK5lmXhDV7USykhN0Q2qBIP3Ux+OBB0epHxlIBtj+KPwjneXy5nnSOQZnbToA9F1uDQg/dqVwdah/fcQ51bR9X7N1u0BvsZ2m2JOllnXwVIadhHIlsp2/qnZldPJE0BHgAxQwnuX68i2C2n2vMzD4/lF/ck1YLr3FlA36s9dr7NHk8JvlKLhs0FhgR4R/VgjA9oyWbxsxFW0rq3pZrZUxUGPsvsmpWyRufzRpMV1AC5BeGgRIe7Pw/H8JiLJ5Pjo4fVaH9zHTMELo0aWRSF7i9NzcRM9ziLu0AfYvoXaUZYmmIpPxmm9BuuQOPWRzLgIU6Xf4oZuix0EH6q+px95FDynYbMEP5abaVR2Djkn2Vl7NCA7Sg9T72ttq6ytCmfYDmK7kNkKhSvHUJx9IuqyOzi8ToEEwGuhn7n3KkTt0kJJB5sWkXp2tTN8p/d0GmV9TeFg4ak6zX56s0MWCEuAzQjRlSZd+9Mg/e8QcNxit3wORk7J8sP1U2ffhwOHXEkEAiEoNkGGKgXP7wNmQzB0G205AFtHCRX9Jvxg4ij0s6drgX/GNwPOt1TOkYDX07V2GB7Pra/HDSoyHHpI3y6muxhNl7eIgOQGf2g5h4g35ORs/D3v8PjG3tjmXD2mhhY9ZmNk/jhNlug/MnwdGmxxziqMWiWaoFLsP0+9reYaQJj9CCO6JMMsKHsZh/9/YUwhJUxQr8rzGWklri/62FYcAWPrtAYAc7lijP6fL/5bZUYJzYE2XYvh69icx7YGRCCjOoF/pPxUG1IR3ON58vuUcRiUvqFrOtnAKxq+KmB0OWBW4elCRw+lJg+rJe+vs69EskbxNNNskxcABX38/UbnLNZ8AhNnEqxdEO+AtXEgKiZxidTlXIo7PoZyhRYw7GymIhUM4ahUK03zIwDfIbyvXzg3Z5JJ/cnE9twzGkJR18C1i9dF2VNiSX1tGXCpBq4DfYqJ5QGhvIuBA4zKnvD12TwBLlIgBDfAxYiozkpi9ebX55TQlFysSdry0HzYyCPLjzQEFIK3MgXhhcztoF/j/x7g5cdqW9gi8xjMimXsuKrhOkd626+M3LwoBu5aY63NzNGEdIqqgHHFVviOtFqoZgUjFRoTtH/vz9qT7ZgL/8k9lD2g1NM4nPPhMENKbywlwP/TnrPjwMdGtzqw1iEJOsqx70ZNb9JOcEjynVMtqBV+EB0jlzdy+b5aSzb82JMr1LMHSY3lji/6HPE32QfPEkJb0oDxiIdizwf2K0RjeobG9RWuGD2lLjdeIy5EuSfHmQCh/E+DpsgOtxLeL22HFCceiN4LCNONbUk7vsaz5D01J/00KadvUOXL0QrHoJa1ODLeA0HCewupWnCBIizlvEqvQDdRyDV4oUCsaOxqZ7xq6ro55ruSdb1cLGMBHz59+jL/pEsxtGuKyRsQYAGSU9ohh9G9NqtruHXqQNE0a0popPrB0Nift5SS9lNrKFKiZtzXOis6v4v0ObRkZkUL2boqNd4roz7vprg5JM0hcRngLFSg/KQhMMKqCRMqiGNLODz6BT8soX0EwNvgpNMYNvEc0Zg1l+0GCOlWMusuJ/i7tasra0yWorcVB3fRzBSvhcOOuiqEGz0VCHJ1CLaV1atyu/W53GtqAHEUZBq7ByV96FbeTmHbZXHgl1VAUydu3RVM9UwoQeX8QCE4rT3qlW8lpv2LaCEndco9uvEaOOWgnR40vukBGA3ARelJeQNNWI8rpUZc87UAoCM98G/DAN3GzeaWmHmeIiremLyDfvFToJ8VI5MlWYJmRNTU8K6OEAET/ikWV0zgp+XU22dBT9AT4pyttrMNM48Oe/CCEc9PoKvNOmzH4gJo5gt3IzQxYm/c59qShsKbQVDaT/uIkQt2q0NXByRJQIIjBpeEpv8MWPh0jmR7nm155Qo7u61g6pmnMFEsCoMXUxC/cfZQQ/v/K939zWU61R6jFfUnyWEhlRTXc6sW88dl3RohS9OsOl71K+o0qzyrKZOMJfpYJRDqOg4gRr2tuWR1/5ruxEgPbhjmbjf1NePHQ0Qj4NL8jPaX6t7bTj/dbmSO2WZ/OgjXgq2ctQ3X3YeL/4hbCu58/D/bQzy2F8kvMeR21VN6QSxE4BrdrvNHbbbElxoOCodA2T99NPQebAau+wKkcrppV/+k7y6thiL+dShkaKkdIYheuHEVgE361av6jJbKDgWIpfHQQno4RQWbBJAWYUHPhF0rydGxjEU6iSocSPMXsVPerXq5liAXMTqsTc+bAhunycdXOvUYyenTUaSqtaJ/TadBcaqCWChijS5E5u1cn6nprzUzpko41M/jzJzq/Zf8jK7y2rXogAdnI3Hxl1b0b569UcXUEZuxgAg4sLgG1BLvXkzjaEanYCNpl6zuCwWCZOmf4doRfn0GekCJMz2DIukybDFMLxG8tvmslBXrSyl1K/nEikIhGxYizsH/e/Y/V6vQV9JzJyMVQf0fYTQOQrkdHb+ojmw5oll0MaH7YqA8Bt1t0ayd+q48oFEi++lP6P1QEPEYSU2IJnpGGst6SQ65kjUxWqiN6L7vOGwuqXTb+0kDIaTjBqfFCVfJrAblxMQrpepgilLmY7tcLh+0z2a8HTwpMp7c5rcby/X2TvXCL7cCtaG6I8OFa2HEYVCcm+Q4s056+fDhpWfAtgXwT451PzPbtvspwWEoXBsWHC57Ea+/AhTZq1eV80uv1Q0X4DKxk7RdXIW9NR36KdwYBglVQRGT8Ydk9lSuEcUCkjR3TceiJsVkdWQcSUz557zSdDaT1LlxXVuTWNgT4wSpnSSKeFhS7Bkg/L3v2N0ZmfwxXa1V+Pbz/luimehS4K8ltpaLpidxQASUTLRQTJTTkgcaYW4GxhMSeeON91s/uqA60WYLiMs3lk0DHY4cKe6kFnmU2dGnUtNWhq486hGYgHRGiCwaJDYVYb56bp1l1f4ij9s53tCQH5I5Wkb6iUulEPhGcC5M4p2eGS3wQB9tf0BGJJ1xtGzu6oZ73JFE1qdEeyU8FuIztqA/nDAu5KsublOgWwZ117LZWdvhwkUq5QF7dsOuoaOhB3i3RJ6/Kt8b7Pn+AI/C70TX5pA+c7iNz+ZuCynOlH30wCDx6u/t7A1RtaoBYCRtJYr3KF07uNJLDJig3ktfLlgRiojpJKqgfnF55w8d46uP4ThVOoUqeQ5CDa9ndAIiFeBIKocfba1tcxIlIcjSI59suIJtCZ4PVfzbgIQO5AT0sg7lzJxOBV2iN728X/GDK8Sx5ajY4NWE623Tf3/EZts3IvqkRwd5OnTqLKmjFf8QW633PD85Mc99Jw8mHGt4VpDaiTwymXwGfDPXG5YDmOq1gm3LvZ9Vs0InjJZKTwW2HJimAnCRSYAA+EXpfB2gAMQPkrYprep67Rs6e9jsm9RRMaHVgZOi99u76u88mMwaNaf1gk4XVfgfzjE/4LuN4T4IXx/f7BHy/HR9Gnxqg0PtoTRcLoNV184D/AKVWzPySdYGrNFCAWQWc+QNWOCWZCTy6FiokCmKix+w0DGMn/O9FDdfbR12/SUUqIqWz4pn4mZd/SZvWOQ+oE+2j1aQwqPMhjCUqXrNAh3bLgAQsi6KXMmUT4zmjj0YXEh5y645e/PHDZMb78JGUmK5P04V/0gS4d//e/T8X8UIf4dDbNyqfPy5VsJpcYVE5Q+DsKihz6lUtb+/2lEio1DEoks4U7hWliZU9BWpAG6YfUTXvBl4yYMJCtv3DnBHpnTNk/8kMyCnHN5U9Ksd0ovrG9tKq1Jch+iZsIfgBxIhuNgChBz7mmORxtMNVoqmqHZ5SeOmizSenW9e+ZzQMqVOlPibnbXMb4J1vjkyNRxJZedUJ4QqluGnFWD2bhohnM3dR5jM+wE57ec+bqyXvwZweh8acevZnGamMDqHEW+D+3+xGeNREgAF2cFT7AHKfZS9z0PU3ForcwlEOENLV6nSl/Eyp7/Y55rFDEwYzOy0/HdT8P6IdLSV/XgPpHK/j848CpU61I5W+X9kfuvZxTN5ubHn89GBXRtFhmcl6pQZIOSJ4zAJOobaRndTy6PCuMbT7UTtwgeRtDRZFKsXZ5z/LqbLP3NHpRPFzcqlm2CCYluLDFJ837obXB10n6+rtq+PihsmotMdsIrb3FhnjQq8GmxiGtk6dXaxyx0XC5Ir3VMSQC0uUPunIwTTTY08AYrWwTjpDOWZtzBPPqrQ3eemxn5e96MWuuCfkdZTF5raryxFvPcmHF+ZXXpiLPH5zuX3KpBObVp9lF4tquY7MYy5wWUnBuYGjELRKXAhwVwEhzvTMap7J+lmwVYbj/Nnfj67C8sKcidYw7TlO9tncnoVZypC2CdnBUVdSiDq7mReNS89kkbMfOn18vvifJTvFLjsJac4u4jDoHM7QEqhq+GKWPXH5fVdY4h1sp6dEFEHPD5rv0SYgz2c706QKw2gyGfzFJGkb03h6xhSdmCd1xkxfaYYNo3QmQNg0N3Yau4moAB8DwoJSBj+qKoOkv/8StNmTxiAjDSeJE1YxsPdk0X7pm7Ckt9cUwU89+t1cfCAuR6U9bhufH5Fq0HgF0hFEO5Uxrx6jV4lI04Z0YlOv5x94Q6h1nDIVazgIiLQAyJmvS/rdc9zPsWD+lfDO/8GbdQcvpKicIBrps6L38K5MESAP9RJdep9YBxNXZvaIUlHisHKOI7sWy2guRvgApjQX2kX3EqeTdF5RyZ70/Kb5G5xHy/UuOzuwHscl/l3Sqy0++mblPbTXleVkFFay7m+B/Evs2MXgjKxrD88cxjBOnYHItSOhDDf2hL8sO3C2EZAZ1W4zi1aw7clrVWTazAe9+W+ZuCEGR159AFdqUPUf79kT6fg88NpsTNmfHVVL2PDcfwdUQQ5KblmNrrw2VUrXlJ1Ymi1jnSQAW8WBNmcVqh9vJfa54P0wkxX2uEMHGDBmk86aN0Zg3WRIClZ5dhVspFyW+6H+yrvgAJT1uJ2cEQI/eE8f/yBJmQzskhj+gBJffYYxC5FVD0hHQulEKJXqI32g6cUccc3DY5Ml/FLKMhZUCBT0LwTF1hGZj6/2LtPjF6qennY7mDbAcLz4JExVeJdXmcVikdkN9PSZgxwQrL9FB3B0HkyhR9ZxkPmE/PV9dV4o4Jj/7BffzkfBhDCiXOqDYJzms9DFIX3j+IyR46HnFhOeY/VBasC1FZHyg+c/t68BN3lWrBUJMPgkqngUtf8IVsm2o0uCFuuGzskQqhxt+N3Cy/un3879lVxlC15y8/QxKGzyDhaCM8bZczYbiLSgXGzWYZCvLRiuRyn5yYtrRC6Mv71mLLoTQGunBXCdV++iDOBqJZ+YuC8ILQdXGXShWC//4MZdSiLy/RMGud1ZUrZ8IL8JkzakZHQ74AxOwlgA86IeCl+xSf8UD7Ht9wYShfK8DalIQnKim3TOE902UXNKHNobKf77YwIGHk78HaGK1kPUdfBKVaEXFsYqslaC/35Kywtg4Kqha8owdQ0CrD6H0e3TIP0mxGh6i+MvgGXkkRRYF39e5XLuZPAXGJIuhSVg1KlTym6+FfalInN24TyZUuEcmNfR8IqCFraWpbKHenAN2cx6UBaWaPUYNL3GZkcKaSa0BnoaWzc/lnQVkvTzgGucNAGaNZHrlURrDnfcOTgqx0q1Ucnt71RPLybDxJfS4IHY+3C0JRUHoBjImN5etaa9+oN+1AZqsCpk7CTs0WOxiz/BdROa/x/xrmA2xp7J2jrAbEf6xwnKUzhDDIpc5BYklXaA5qOv3EC35DNg5oYUjOsSfRKUP7hWt/OW4RreinLoY8WNXx0pM3f3L6m4DE86YX/GMaowl0f6hMdZAJNY5Bpwaq3+xuN1tG8X8TSIneZZ5PDUl9auSecJMC4UQh0wxLfBAWYncMdcGZ+dsYk0G9YT15hMyYKD0l09POxQyB4wzT1GbAqyuwuEs1IB+fSBohB+jifCMhkPTLtpZXC83Vco7AqwfQug+kophAprdPBko0lYj/l0qKJKfpa1dvsrEB01Z7dEaUb/WigZeeHtHn/f9T2yClPIsC+1YG9Oj2ibn5nzC9DydtkDLVPPwOyNzeu5OVelO/KTEbU/9fRVKKFCv080gRqxw7sf2tRh9G3mB9iD4M5KRd6fhQ+guA3lUCq2ExuQqYCR1U18UZN67AAImPXuwOisJsHC5PhPqRyXciuPeShiyUNY5A2yzarAVyZ16pXab3fXllUTeJoY6sB9tWfIH2vcRjfYNHVl6mGtxHgC4q3u107xAYHio4JEU31ZRTkur7+iY4eMZQn06LMiwijKoSRByDEEtDIfmm3Xu4jM7D32dZAdhM3WU5etyhjm/52hPycVZDiMzX63ph1IlK4Awd41EyOlE2JUXf59Js0LElNaYjMDrRro419qBwZ3oW044fcKc9gzRlDTSQUdbDyhoVhwz2w2psL03KXtyJrp9zqaZcH7xDLTp25q7GijNA75d0B4hUJ1RC/uiRSE1JGftzLniPIn2g15RUYI0cNE+4SVhg4ZK0pycSelsxwy5PDz7GYhmvTuEUmYdZ7DL9syZksHgKoUNowy2lrEbzslI8wiNNvHCohhwIWyL4SQ93jRibZpS0+SizUsjt8d5gCkhDqwxDsi/zKiicbjN5Bc+SdsnJe90pIzhkTznlFOfYKah46PMiIo5xNUVlCeGaRVfcUiHMKNf5GF9KbBjX8KMn6EbT9HCDKwrGJdalA8RvVUPepa4rpA9cvIvyJ5+bpE113UST0MK6IGxaEwfMdXXOK3vduA9CGPs0ZXrvUaAfT6EgLvt0zDDT3uiU81I/EzbwOENFrrwtxp5O/EENsXg3HV3LvssMb1q5alUN+8HMfUTsBSEmozlPqBcVPpRX9WwePv3Anz0Zt1JoMcq4HaidAHTkbKgWcaFmgERxXxhIrNxjbz4enyebSB/1e0IpYjnflIOHwialFTwE/SvumrTZmG0r452E7dFzlmDW7gXyzf5fJBMjKK++H3zzf7R/sgXvx3hjpzk/g1gYrmaLWJENK9MUEaL2P7N58VUaj+0Bjk8VuBBFGep9KohYMSjDHgxZanIOxt6CaUuxcDhrPRs2nACtGxyJbnWJmNlLvx169ydPKNBPaJdLkabaUYQTy81PESkUeCQdE5DDIgbQeLNFWpc/Y5GyWcPBLvVM0D+wnd6WApf9I5SMEsJyBboHF/43hpefugj6C3BcjoDY6StPYjusmbTDbeqRPBoHiJdMFR2DWKciktYFflZYJMHpaCtkoYGsT87qgp8ajTEYOdhVPqkbPYxyz41N8btof2gYa59tSP4v/w1bw8CcH0dZ7j1ybEIZhvM/AX5EM2ehP2/eNjmB4N5b3xLH3fQaPvh2bf/bbRAsjJot6NbpKE9ugZTQ8Umvtt9URrfVf8G7Zh3K+9uAtTxXdaopSohtjq8pY+URXO9yl8BuYWSLzD0RQZ/Z3D7XNE4+xmswdryFWGcKB0jzOe3QzcL+SzAQjd57SU6IVu0cmsovvXIlra9YxSrslgX2lIt1oX6+BZTn75yii0Jr/Bi1M+nFOrLv9gO6Y+EsbVGFok5pM+stnr5yCUDTx/DMk03vT0OqdXduRFreZMdbsH2tu7Etaol0H4WJlSh1WyL+xoyiXL5Pg3Fmj+ebhqxLdbOFuxci7asobQAcS2mPdrGBknfTrYLsHsdKXfsEcjtgrhJy2OxWw10f5ToO+2rJx9Nx2PWqVorsNZjdzGKKu48dP2ys8yAO3EjkXu46gBX9Iad9T4qjUHIzvWuKYM7x4717qjZxCA2T/2Bb/DEHDyIqSh/Kh5+y5NPKKo+g0t7WLU+3KGpVi0vSbpphcQNUNbYSvmZ+TyrBtYMfVIcnFQbxnUAZWFLliuXn5Qf0TjkpjY2pggGqaQlYE3QVqQIS3yCoQCdg+X+lFejITNR4fO9ZZiONvjodHVafz8pnkja9Tb+gJmbk+YAq8rqqssZf/jYcAEeWD3FcC0dgLKgK6thqOLQ8yH/bMu8+3x0J0+GtrGZeDSvyNNvPoX7fLiWFcyXMKVs5R+kL0FKG6dBJ3quHqhnd8/AznxoVQ5Qg+deYhVoJpJhWlCHCJILnbtbKSMNh8B1TrJJ6YrWx+fJYQGBjzDCmi7GgpFsUhKzLXLVHugxY7QyAI0wfMawdXosWv9qY8QW8N1TcNgh5fNhmIw3arZtAntkdl7tODeuHiRLaf1JhlqXEMpoJz05DxhJlBkMdRMa1BNvKWgI3lo2COplJtL2CPIEdi8Ou3qm2Bo0iapO3MhI+9K011YwKFtz2RJuIG4+byZ3H3PDHpN26LNcj+v3iCKNrOWvNLQ+sBqq1qUFYifInwKxeWVmNWA0RUelDErzrvQywoRIy+b4gnObSFzbJwPYJlz3QACdYoMokGZBNZ2d3r5aSezBHduSnlIJYScruoTyPNYgl2FrxLo0nkAJHluYzwiiXuuvwp8tBGwtXgJG7nMNBO2HUlygkyMc5MvlLpYjbDy1KlqOkWxl6bbpVhVX/elhsXg91NlK2R2n0c44vbhtlzyWejVDQjWMzU6NU5ZtZKFKIU0RW4mN1VILXPxB3lNs0tcbA47skI4U9LmBblJH0kXEEPvaOXRZgPeHkFC4pKMiqd2Cl7Emj9YkNuaTSkBawWtIxUSQy1ivVvwsaivlXLH2YwbT//TCdfuTMXJTX0Zb7Yg78dCRFvDQYR8S2IDIu4qBai3gnz0UIPTe2JxbaYxkVAeVF60E5x2/TEtwmsPmrN/Ig815YMv+gApX1Ht7jN5gyM7luDrn+rMcKgjPI1NLxcF1WCQ6FzGKTc0i5apLKr6yQUB5r7G0Yb/4OuEZhAbknVRBaShVTSr1fsYVunQ8nJPbBIVemyb9+vTnWYyQIC719/gdoe7F4IRNNRdMBvsG4xcCg/3R6MJ9oeajVO85NRO4SdOTBcxW4hEsw0Mj7q6EDxJxklCC9JXL2m9Yv8kYGcbz9S4VMbPstFHaaIlo/YHjGl4+IjPyYPRJgEOUTr3WNJUySHLZmEek+7TOWaRESJ9IdYP3t0MmrIAUN2pYMPxXltg6/Do3FLgfQuTnnLgXQsCqlLMZu8IS3XG14zu6YL1Bi8H2iKygRtONpuD6/OaEjb1sTNnsJ3zhVisgU9mIxpONcIfAKJXZ4qvGefVe5R2reWTomNXrJdj/muLLL8r+WqiyJQWsrZCJr2WIbn/TTaESHa7uIrUQUdMaiaLIEfGxltqFquFGLZnFjkIVxatPPpXEKzDoDDK5LlejPvJY6BF8yPOv8s0RLVrCKsQAnuqOEHNYQWYdt/xoDXRZ5h/+o0ueAJ95BILghqSzvAJQk7GT2WhkvGFv0vE2wyX4R4tn/ZwaGaWmHQjzwbkEIhgx5OC+7DoSY4u7UQYHAePQfHFXggXue8Whc93oYEh4Z9a4XgjZ1B/agaRzRka+9Dg5N/DSNzWg0B2mF632QmorA/FAOhYaEQ5ma9qSfQDNUNFlq23NMDMyLdiZXvW1QjdTZSMoksErPAT0+A7ZHNmA5NM0AX/lJKdTk2KaphM03oSGEUlIaddOUa2z/Y/zA8T38HrekXrZfplhC4CokH0G7DkyLIX6E7ROMe6C5UBNzjBSuSvujxVRP3OUDl0HTxmtMSXUL7axup38/9OypguZxFcdR7H97Z677zi+7jNhaw/Q43Nh8YjRnWm9pOUxpS14ZC1qtd3j6Cm33zGW2opxkzd77n5XlxvYmBmAnJBa60Q4/JitqZ0Bua7SF8/Z3n6WG9jtGidyYral5nVJocUpkL7Dy3TwNfQkWVZf8CJAdI1FtPwiT2KFqrkpO17fbGQ6SrA8lhaUJkk6dTOAEgLcMsAplrHXmGZpdQTFcZzWcvdRDFF8hB4gCQSBOWl2tA8NgBGvPOSvIFOskJ1Xq0kSM93R4Gg0FtUaswpS9rUFyuqK5jO/UTkUVMTR4TOjyGJFe/ME8XGn8qwTevMkgvo95J3gjN++O0ZKlhBo8rjdJnznRIvX9X1I60b9D5ZmUs4Q2KYSsTgEdr/M3MVcetGosWmc5OjKS0ix0v/E9JiICUnwbWUtUGVAke0R/9Fmt5KN0LHYhUy/OI6gaHWwMZKUs8fQEHrzbL8qjLIyBY+TIMi0Y24b87GlH6OdFP1KuWbtd+OerEkBW4fs32jwkj9Xf1bzk7KqukB2byBkFB5JPdBkHD9SlUyCikMEJ9mq8NHWimcYounTWJAc2E61HZ0YyGh6Djk+dzM5rHcwBwMDeYM398CtC/TLdrbY9yEmrvO9UQ3j3jm0ScUEzwRoULtLMdDNNTRYp0qEhoTnc0YuysaJnNoiqtx0Sp1ZubigUy5ZNezCXPSUK5c9TPUCN1uZDtiHFA7gYqGzDOX1a+HD97ij+ELhAQLQYHh0EAruPdsY7pXrk9NLGw/ifd2dFesN486+ahwVk2XweDvdc6a3jN7aDV8AyQFc1zl0QFAYl+X6YlJl0bXwRMavzScPYU5ZYypK8Haal5Cqa9yjEtBkjzByGuwa+/B4OJM30oGtik15aGtLTqX1jqj8uOEALiF1YQRyiMz6MCA4ESIRCy1DDH+7PPygjs4MDMHCQBnpJajTezpVZGBBziMEbK6dyb01+LZAjACe0Hz8wc/nibOcZu5ppAP7eg5wQXWjDDY0g3BTfioCLqNoXUgThQWAclt5Zqj+oIUZeM6J4kfEKvzb9YYXSfZlbeGol8mJc91aK0NbR/oL7H4sVZ2+mA2PGtcPu11PYhwd2gtcVdf7getJ6gm+OmdThu720mrHApIeJiGnW+QX7gGwGWyKEdJ8QzyPBz/Llj3IQ3Gmmksns+FcPhRdajk5VCwT+pOVS0gJdrjATJIgZhCyZ/UYk+9OhzvGz79DCjxPas0sViovmgM+a/ZROJ+ZNVuCXsiYUg24Tw2lmm3Cy1y3uAOrOf0WEQCPShAGMR/2py/Q8Ok5GpbIbpuQLQDyrAEWJ6Gg+0fNwbCSXJmXkyrE1PYnDLnJyklKZVGjEgqFRSaTik0Q43rTxkIMhai6BJn9tU8bUUT4FOZ8m4Xz6N1Du48knJOdAZMUnaD8z4Q3PBxXHjEJtEMOsHHk3Nzd9TD4+UxsmGvX6UeL1KDTJK9qLsPkY3HSmxWfEP9cmjihTPCrVd3CV0fiKinUsmIZezJ7oavM+8dXVWcvBk6Aq9M+gVd4gwuYcZo5eY/MS7z773SgOukRl0xZVvw9m2tQsImtsxVutJpmNJNwAxEEfg5hy10Arag508LlfNHE3QrBDafZZsQ2rnK6YGEkp1U+GdxqB8XqbKgai3u+ifLRQ4k0vhvAq+/SdYo166uShTK/X+KRdoxGmtOCogTwqHQD0FBH8YYvaX/M+mjDNpQ+8rlLEp11cfRxbuixDo6GDkiS6A8itA1qyxEBBn9D6iRJekCboIsL8w/D9noGmgQCXURJGcQHAx7sIalBTOGLA0dETxuRxsQHAIbQb/5VKSxt/hwZXnl4ZKr7IFZSNu4Tm1COGzznReKa7PrJ63trm8vnC6dt8pmYZHUk4m0BjDaEkRWwFAIsiOolEvGQYNQ/tIlIQnqYuxRxRDb2iJOO7JF5Wo89TUlT7ceFnH8DXJoOMrgPk/9S5P2Mgb2sp88Znn0/Y0FKPHKYrdclYtFLW7YIyV9OZ32wFaOKLlHLOuT5Q176P+eCOWMorGERaZi2HAHnl496sEHiR8Oh7X2pnwTKY5wxhYJ0u5aJn+0nbJDv/6Fgyprzli2bdX7hp9eJr/8XjEFkixgGWq3MsVs+kCH4DzifaMrsaO9A6RwOT54gjcF5+oQhFW80HpofF679uLm0i9MTHgtNaWG2wyi4wax+pLSjgtPG7zhFwk4BBTfEJrZHlQFEnvL7sNdrZ+qvZnpeirXAM1g/Qy6nTfOgEQTZx6pJbmHZk59P0MiojriBmOVYLKqX2Wck5gjUyhi28vkANZBIjfyh747KzXouYDPC1YRo5oV9Npm6y84wYYOwPrPh61wO22UdwIAkkfuUz7vICIKPOCqcH1EtTW52NbBT5ATskv7WEgaahlKz6LebIBasV4aXGyyV53WWMU+OqzGLcML9k2HOcdTANPNvZwjCOuk1j1yest/1BRXF3afvXDzhUyr8yi8c5z8+gZ/jnApOY3UuKfmgkzpOhRSZfVj8SGnIAjOxeaouUjDxiD37H9j/iKPmGxkZMsKlpno6mmMegXb0SG+fYURJy9bLBBCTahkGZvpLFS5J/5BDWDHHADBa3mvtAesF+9NMDcgGUM3I1vlmlgO0S3ab3U8pVmodsLrmOH+H46w3gNOEk4mXIQ8b0JUVlAGtXnygzUpt8QpqGCg6tRuCd/LOks7jJcz9+czWJKbkq/w63gswQlrc5+uc4AZXIauCMR0R+t+vPsnVcveuguwCZUDcLcAwdB6J7SefxEGmDVYUklExLBouwTAY03bv79RGFcaS17rvoRwvcRWBUCS9e7VM/KFLYXogPSWdaRU6Txr+2cCyW4gAr1U6m2yNoqsoh4/hG5GN4oS069DlURj1T5ytym1Ladl5ghJJLxuwCnAtuEcaYUAp34zMafiCkcZMArkZBhrejESOLHdxYiwqwTGmIBO9YrR5ti5XC9ovhDa1sW0Hu1hwWm8tSNBifZT2sRL1Ce0BB3D0zu+z+caqxl5TcS1suOsb5Ofk7XuCl2fly7N1OkHKdwBy+pqfNwyP6/Jv8ERuF9snyf35nLjTQDOaOz8T+2iuEwMFoNgu1IUk8K5dF6a04fD0sC+NNaIks1CczQztRfZ1pISrKPrJjrA/ILseeDWaDAcrZwxNGvQBBQeKhp73BqdqQZZfo7VuO7iiQUTe4LvBDTFroyyIc6KFYM1iFxa+aNCtuGFemgP5uza4ma9PnT6bVpS4hrorp5rFf1xHkEx3cMbyUx8keeR1owzsG54cUOaWqGejhDHjvToREUdnuu2jukABuTeGpZg2trTYXufVdr8ydALlQOwHYGZY5opZZqVrATyOkXMqaeGDEXXNANdnL2EZf3CdZDI9RLvXkM80/SFzO5kn6bmpiJ6F1M4GiU3o5KBpz8RNeEEuNLIxbdGZY0GjWs8oOWi3K9qRUwI/ORkN37ethtYptffq7QEHy4Ivi1eZw4yffS91tOyX+xHqI4hP49O6dYYxF4x5cawlCDhEnpeU55RqYegtF8HcsQW8yaRNhL2LRBaEKQCNVRnzhltmrcG9An0NbM2G9mmykynqZN5XraGY14L13YIwc9dAGsaQ5ZKXb9NwA79O3LsDxOHU4gC4vBCB3TX5QsLfmZhjB1FvMQiwC6ZWxzv1MgUBM/kdqByquoKvSfuOVnvaT/GpLHHrEJZItpgLmqQsI7XNp2Gp5lqzUo2E7hCDnglDwX6GuH+JcBTnu9Kcfvh0uPdD/ADNhSBfavUYRqFTBsbEeJDUJPLFipg4P3IZiDKHGkMpN00OZx7N4Z7msBS2P089f9ruT/2jT1AnGA1TRKec6XWUx/BsObtN9uZzHT+hSOhd2bot12DKdqKWfjCfNZbyEhf7otYtx78voaH5s/uIRbymp3ue14LsnQPr1XLI7ROe9/ryVuX7m5+FE4KlX+5A/E5QkG30/JPgye26eW2Z+05O/FZSTOCvEQpZqFTjtnyMAPgE6aAl1UpHGB4Erel9pL4kAu110TYNPu9wN4AXJUQKHXOGhVNOETqgwtQWFHFteJKmwkVWe2ql0B4+jr8N/yHSpvP4MTN1Jyx7o0tgwh2LsetpiyRwubQpg6B4l9R9qV9kmZhNhUafSrLP7fXieeoELQVjkaGRSM7Ys2wWrwuHOUBryBhSSufZh8kd/xDCRw9+O7EsZNALhUVG6YyJHh/KJGHUU3vpsK8NHTchgokTIlgeBXpJaEtOuUk8lHFLb9N5cNvkVjixBQG7jNROeBk7g2Jorj2Cu25M7IxtCt8l2i66g45dfUEiafE/lsYBDUCieIEtNW5fbnu+VYf6TgM8iDl8sJQtZpGIg1EeCOZ8ekvIleO6UcTtweLhbYjz6S9c04iKFFMDugcQTRVtxrDu9Q0186vNM/K2Q06GzbJHmrwlIhZK6PLr+vXOY/FMfsFi9vMenWMm7jA6DQ8bynBhSBA87dUKaDcegN38ULHcpDvhSrkg5cyWnYsRIWB4SXOSfZ8elB/M0MECbSU51lBTzuzFTCuBoZHjNeE75Q6/bgvvRlIVjhf+7YX+ERUbElNGsk9+sqqJJdA6c9aMyNEVKpXA5ny+lDQ3duzuF1mjV0dOjShn6juuS+Q+vCYcpozs8FKA5SGMq+xypsIXYVt4Jcs07XBO7tiCNXbDNdWWaZoUHJuZyOnLNqXAez0uR6e7KpKIT9WCOvL5x4SI/I8g7+Hc/Wm6ZAY8WB970suiy+TDSuVqPLqqhBB0AdC21OQOerFpCSWhK5VMFEt/ZeSPC4pL08DtwzfwptR1NBc7fifmXvC7gL9BaLObwRcbY0b363FkBgpDXrnFnegeCH5Ddpg1lSNRw4zKoiRpalfOlrOJnzFkvwUT8GaDUqfoEvZ7YMumAxcV4FJACdNe7CDsGlHwNYBzpOy7ErVAJuJq1hj2PCgvaoMWZ057RzWDjhTqfiArFURXVL6MgKISPFYsslrQApKqUvOLBCTMcZ/+SZh4McV8wtoATWlENLjHcPiuONeogX8qNltWD7rYhOjCyyOT91QSU/ylrL2JXvjmsfWGN5bW6mAYLdYAi+CeUSrvwZK3cVjli4XgG9j7MROtCBjoHisX7/SIeanPEYdy5Z9t8qTTiszt2/Pg6zaH8OxR1ecGrbi3khTunWXMzczY8KGV0tJTfQSLGKewqcWek3n5pINQroHtgenj8hLHF+YF7Nqt6ORX+kdpzGHUtQu3WKxVESPmc2UdQ4xm5fX07ciuk6et6/KX0rLHy2pmDlPg5VoWVjTBypDyUWF7Bh67ar5IrY3Fh1GqB41Qn+8ra7r7m3lXaxWzBT7rOlYHhzHNAenuhLUBv1I85MrAI8yfd2kD+wSWEFdoYKSsbdgdnrIXLf2ZE/9QWDCwCDc6YMmm57C/G8oUs2sAwVnOajla26QU1rbSxIlc3vxKKvvg5OlWWFNGMn11i32W1nW+1kcakCOZxUi0Wm78Rhd4vKC+Qp1GeRK3Olkpn7G7Ih/XnlzmjXl047qR2b45t26c1NSRx+9y7MFLLXgpsseu9G54X59nycXXpmujsHIuJCsTxrsD7J+gEhFPleovW20DLGmQCSnVISXk72N3D1+vK+2aBrVb7jGRAzY7CFc9kcpNm6jZe8lVdy+GnlDbTeykAAf8TWF/zALcUreI5j74qus8ANZDsMdNcFCJxjFGJ0zFrcnF317hD8630spJaE9fReGsDtfhB4JmJ4YJPJjM3ACLmx7T/jiglBXF7QsNb/XG9Bj7e8cHMhnFI25zWgdceymf05P38xFxoMn0+u+4hP365e6trz9s9DcT5BoGPdUEc/ETMMk0Go+aOZz1MSY1tydfbv0ghbKdOVDkOLo3MY8tY7AGIEY8X8I8yae6SL/xE/vIWxi6ze7xG76d9BHmPN6ynSI5qEf4wsPv6vmKtItgJOcCWRAFI1LBssnyT2KVXIqIBKovtEWUkkgI0bgU63BDrIQggaYGceX8Yk1CLpHdo9E/2CIdhJR236z7Yffpdb8+1UPtCrbtzMlUekGpVMjkk6vfocJlQho0hSHceQY7OvMyXYkJ7VPFLyME6JmF9SUr4ujC7jg0ZfKx55RnbluE+GGmJXECIWSGO3zbh9tfqLWv+9O/dw37JZ9GeWCoBfCIfkolBvjwRcMAauD0twDAfIQeeLvzjJ/AnUc1mWt8k0YRyDcIRu8PWkbqyyx04pTCsDMXILFqQF3mguY08zDQ+HDs7cj4i8Snywt3JBoXbihJZaStB6yppZ0fIjxMcH+fMD2WOym559w6GlQ4dfijDPjXPtwENPx8DGow70Xcvqk3K8dKMjIU9X7VUoH0d9KjbD+Nxd8zgLyEFfnoUziWAtgePEvXDKw6kGx2fBOIadBqR5gojDRLgkjZsSK4N3uGDYFfLYUF9pCDhDxfANlsQjh3bRZ34B+q4C1uFWkAQ7sKGEBzbXVLYeXseh3gjg3FsEn4GhDQIBk7frIl9tTBVFIhx6i3jw6OVRcluRhg7wdRVSI6XCZusYAPOV1h02jRgJ62t6wgatTKgc0uhe/4NKdSRcyc5ClWmmrFbLsZkn4TAUlWsp93K2VBJ9ejklAM/hwVmChLzpALcb/7HL7QF0Q4Lbz0DEGFgPdlMgeGv8KJGmZ9zM0wPe8Nsjvg0TuJRNZrnrXHUkD0K3tvUSXONUsNgmrazk9A8nl/UfoK/jwNkjnaBF2i8B2ePnOGCjfV1hUGDEkTAhVArkfFYhwOXo8vJajN4km8DqAHLpgB1yOedIlj81l8Ty1gi55PrIWc3UdU9y/a2ght2T8kJvQzOpgkTpv0HQe5xKLy+ysnI4w36Ysel2UyMmyigS8Jk5+U4m+R2VWZtUqpQYRP3jCpJgsgq5ZwAolFegGZlnJX5BKUo2hRdHsM7DtVfxk3k+s+CWwUhRjuJIQaMZyIEYLxw7qIZkgBOUwW229wpxxGW++A0BuYHGqd7j2BGk4ihA51gE5mlXi3OmcgHzsFyb7yTriPpwXHx6LYVWrV/R1YTxmgJdPlcEvUA7YcMwDydk4I63YSZQj1wA0NwfY7d7dQg2bQeGJ7PcGt66NPx9edc+So3HXyDXhN9bD4Cb8mFaPPH+NEyXQRlweioFBwArjAcdiM/tpwONPCe29cwZT+eZNM/vrMC26Ier2n5pXWZ+Xsdvx4vLCrAMPiZ7ZMIJdbVyB0Ulh2GaI8My5/UpwYO30nei5LYEpw9TuR1tZ0jVJ1+1kbEo6Ik5Z2B4x841A2OKxoP24nhWbulvk7PM3x7noDY70plquZTF4asthe5lMziQVbRVHPPTBpayfYwn5XpWSR3kBiOZ0ek/iKT4e/vv2YES6s8zRiaqbbjWMND/aJ59xfNr1pWvPRrDelZtLOKxaup9HExte5GsWOvEf7xKkfMf+GwBeJDKn7fRIE4DmXdqO+DQvONb92HuWL8m4RpCFeb5VrByH3chfd5wUAg60s2YanzN7D8lSNpiV5tQgMPzbwidzsDd83oPp4NNHd7S9Ihp5G9kVyb+MSZ6llVequAJul980meX1DkMAg51yyn/n2VjC3zt/nqV8yaTwj5ei4e5UN84OuC9+XPeeqoxe8+/50VCvR4bGQ3kU0CBfr3BCUPjSfPn0vd0OJeyN3JpWSBdmUelcZKe9rSIkHcEeZcbpyZ865vKQDODmjCURCUDp41tTtCp5shgIyDf13U/i0BA37XQggD0HsGwFRw2ksWpMN83qjb/nYVxsSjyo9DbZL40iM3t1C76+6fRXUzgSbJFfFbhQot1M2nlixmq1TnKoBktkd+dbQbSz0HXGf0ItExzt4UKb1r+zMf9SWNxl5pAPGPH+8cufOA55WcPLDmyok7Lmv1XQpPPYKyyAeCCb7kaX8l/9hoxvdCzd18LrTcxdya7mQCq/1xH3dyulBmAld4TYghrmssa5NnYpqXpHi3nhWtAhQ1MvA7xUoLGE+aBOubyecogxhskugxEFzBHLJIcTQbjqVmoVhCaA2r5r9NErHnelr/kXbq8wexHSKx1jC+ts68+R72zJo/CR+KoW9yJ8jdVHree0xkfRGo4UBxmsVp/h9lZhOdz0RPFzBTNgDSVdG8H19PSTzhr/Rk9sW9xvSLHp8VU/2hizn/AQ5Pjq0CNijY7LJHu7rlk+D0qpf5rvBMJFrNPhMwhmM/nmNDDntwi2z4tdPNiriqVnLuGMIw7O8H7vuUUMsVy09M3EFbyOrti528YguvXlXrHHROd2l3PeG6qkLZ4Ku1gGXqN7ZBt/iBOMsoyy0dbx2J4u23s5R0MHn8KLytiqeqpuHWnUAwnlMnkMxwdRWVnu8iMPtHwlO6tG+2RtlxgFrGOKDwDqvYr37smr2ToofsReJzbHkp4/NMnJsVL/K+vJPi6H4RG5+lilR9BH3TdU69cFmgJldg+uSYklcbY63tkjtboHdiE0B1E7ACVkiN2wlqS24yTpJBKXafLjRAwVyvXC3RtYvP5FtD2GB4ZNgNYaO0g91DBijL/IXkCtP3LZEba2qYAyhe42YIURbLoZb42h8TEPpetykNftIbOt1v95uUW7lK21z33y8qW6Y1sdbzZNFY5AYWl2fBqw7tI39X9JAJ+YmeYBVwEvk4qZp47Rh2WwRW+4sjL7WZk6QFblBXElBfeoVKW26CM9l95wK7R70BZK8TC0xvi8h2Z/pOLUoxzltCGu4tB1t/DwgZUiTt7RVvNS7pH1+j8gIXiXSpsPGN+pbEslBw509hiuhMmIR5z2Xh31SQIqtO53u9Rj4OMmN12Mn4Pgz5Ae+J2OC8kfkDvgEyZyeG+j4Q4jpB1KACoeeZlzeSkJw24kAawnkL6c4ef/8wxRNmvVqS6wzejrZZwLYMRxDL9spy79pYyfSw3OGbjGMpviq8EhntXDiKtqPbW6cxphjIMplYVJnHMvOH6I90c0w5jfDHY3vStLOAy4OrVL/PtN9dqbXxFf/4qziwe2YQOZ/DQWOlvnmxUWvnmGEW3K2tC94iUDjifJf9o68C6nCLuds9FFFZRkYjGModnToIR6hTBNnIzXPNB1HlbmV6XvFSk+BXy/m8dKovlFmi0zCPlSfA0AvYHlHDRki33EGjiRmHXdGc+F8zQeNQ1amL0SvR/ZUvgOqBLzOlM5/1Q5L8UgjYXbutbZGGE/v+5UuUJhmJ/sJnzkj/9HlRPGPBowBRr8JuDLNtTeieXA5KbLFraTGI4efLhRve71t7Q8Lrp6pwSqW+sEN0u38Up+irLZUyBXcHSUWyWPFJpLbzH/Tc3vWfvhrXZU+KgTpo3qirB2JHbLwpUPQpCQYTO4IuLtdj6bzEdQ3FnbbSE5bamIu83kf8/s0cpzaUJx277SKe6v01R1QbbDmXPDLMVTHUp4Nba+mRS4k9xkj6Y2ac/KeOjI6vwbCWZLLQSh7jNkNWPUS+WecCfmEbn5hkN98WovUdfTxaMLhYIpourAuOxXxRGHpKvOUfjejJxTk27vmkluCiTn9fK9CYnkqNSbZJDMQfH7oaB6VcHyYv2/olLh71u+yYPJ/sqRox7f/EVSxn2BIX8pV8yzNr0g5hfJbctKGl+lJKyMLWLcw+7BXXdFYqyxvihppH929Mrp7rb57KXFPHZ4OwMatB7gPe9wdqvUtaDsq7r8ezr7MnwWQiehulZNnis2xdUhzM2qSXBLOqUIOi+w+yOYpR84DCeedjWzqLQAmMxjQEnOaLDi/n3Wpef4uaA6yKTMCXdhwQe/+rKSdFK6YQqznkLlJ4GiV+xy+xKY0j+MOPQ/ZT7BBWBK8s+KRHKZt9VhEmawZjdV5gIQAWAiyq5sCWeBgygefC1L7VilTqBADwA/EFEdDwUNQTKDqKck+Snc0zpOo6h9+WoiVNAdV9kIGUURwn0hkXYgQkO0MQHG1kaR1t+kXvgvAA59y2bJAHoQjpCd5tS5KrrdZWLCwvV5fJYmcPwlKHs/p031MqzNN8qtOYHLcLSKOxdRtF2YHSYB6P2YgB1TScFs2Ya4fCHO2X7FG+44fifUcimX/39A0fWrcpfLX+eLjMO6LNOYnDBHGoF6mhcqrrWv0iDqKK3kktnN2pFlQ1stop5lJEHGc48cqMePKQlfuEP7hcCwRnLqq6E3Efv6Uys8aj2MNps7y4hMuZrDLVbc6hPBARM/hWy0KHsTicsqBgFuar0Yfvm+FeTI6UKU3bywsoyyRa8oN8Hs4K4pLrVcvczvVDTjB9wXSpZMwN2Cdh3Utmwn6kEoZl2O9iWCtidjOogeLZhrAFAJ03gNZCjbHmnXNTm1lWUXG8Xt0lF+Hwuho6yusaznzVhRaMAptPggY3GrJScqQkhR34OkRSnJqAwp5OWLe1M2p+Ryzo2bul48CsznEnmPv8uznBRgOiQvI+Zf21dzqpF1tP9Dc8QQ/1J1x3PzOuLxZ5PE1h3UGg7bY5NbsGQ9GB2Mt5iQ00R3lmZ8iaDn2umOS0snGkKz0OWEWpFDhughMW+056I2e7eIuenn/6v369vA92nxP2vpN9pvs+SOPxEVuiY7cNq53hYTxGwKon57sqbqEi3wThftTM80pf52F9KbZycySwp4FcpnZL7sQa9cxF+Sz27PnGhzkayIdHrFIbfpMLLw97uUdnaqitPYLQlKZ3FOJi+JIf+lX1itEkWdClT/L7q18j/63Gfqud+Nu1Z6MAFu/eMqrsKnAVZKPZiFldbyQrFDTY1bBJllC+jhMhcJL0MUHq5eIob4rFyRreQhLHV8fnB2P7slnDBkrzSKmM6Qu6WYXvt+ACP9pgW1j3r+mYTGK90tktZr28DEkFZYQZt0ASeiOcfdpcVRn5gymZxE/rU0rZT483osgQWrrJYjSP5Mwm/3vhzIfOGDr517ir9m9JszZVTrRGq/3w00S3VkjfWwfvvgfxi5g5WGhXHGPwV0TwSdu44YrPzDZ3yRhfkqMVEFuPeAOIWNXIYt7cgsJt1anT6UJEoLuN6s4i+nQmkcsCkoIKzM0PDOKuLBy2oaNpH5C8aPMR03G1zCupR8CrSik4oykfioKBet3v+8fjl+5rxAyBtTFUPZc2EqsTc0drBUqPpuaMkuTu8wxHVDCW9TTYptwfZHTKy+w/P2LAkioYOkFw5Zr2+nIVkL3HKpbLcDypJqZ5Gp4eJyD4yAbwMM6ZDcsWwo2aSeELG3RR9GE+EhjBKNtMRD0uUMa13heYfnKD7rX5E1wHjA5/wTIkDQm5V47gbblfJy1004TOuF9CnFS1i1OMIxKYDI1IRts43vqnCdGSPYMldTluvsKchD6VApSOwy2PGGBaz7Ki1SPaTLlKjFwR5WHHFQ3e1h5aIRipAIju3cmwZ5EWa6kOdxVDRyfZYXc1CmJD6maypR95a8tOG4vchF2KWhqiKufAvWmbTv9dhD4u2vUmBJDm9PgYR6fpViQFdpndwwm1ynv5C/oz3/+LIWEtEqMKeptY8icP8vNLb5co81o7YFaLYPtfOQpotNjHk010i5PeRMMnBsCr9M8Uh1heiyE9IRaY+zALD+0gl+mSiYsHlk3DhUZYcknkq2FJGIc6qrASSIUIM/uCU+4X+sVmlvG2qiz0RPCm8WxrPXcWKQCkodg9wcrxB/nSC+6cd8nb5aOAOCpfexWQrhOGm9hf4ULZOF7NIYu8rB9a+N50/RASBRzalY6wUYdL+u+3eDrruR8rqfXNGBxZxL+MsJwIQzv+cDdr4HrrEVTsG4BlVKmui7D1mORqDQUlfdgw9SCgJCjWQpy/HD8jrT2ytT6W1JrlHLwSOGdtl1rndgD/2w5ZTVxywWguUnIKwM5JTZMaZKK17VmnPoG+WowlyUbcYpMLfyMWIu7JsadFzOpR4GpWLbwsQ/7EIdW5JODA/ikshwQlr8XB6zLAgS2sFQ1RolHyVpjuvdYQrbCFvXoW7vfjMRFEvad7ciUSHKmljSW3pdFkuz/KDnMiI/D0susdO5CIDmh8dkdTd3Jug6tvOq5m2lHaXHuH+FgzaQShIDp4/JvT4yrYWh6SgZCUb/dm18lBLpihclt6ZJFs27co11whwCWXd4K7treNEXBdd5scGVadVUmrQLoMLxWZV8PpnuPPRFgh/DfWBO7u4S6PAVHwwGd9JGZttQC+gyShoGXoOcF0Mjr0aHvzyP13Tn5RlhKf5sTs/BhUgYzZ2txrqBqk6C0Dde4Ba5zJfSepn+aYh5nyCDDmCNyE6+LCjEQ+XD40OKC0+nju6aj6YsnBiB9wwN8d2JJlKl7ZFwe2Mp+C8AW8bKc4t5kgGwHjGY82FhRqPUuV7U9CKXBw8XFWi45U9G5ln6k24WUaJgK+XVvs2Tgusq2RUjXYwNQ+2TnRswQXuah3cxOCYoTd9W83HMeoprlUl/yxONJhrFjVH5USpkrggfN6/KYC7tZEwRoCNdMBSdWS42fT4bvMxXHNVVULNA687PJwEDzurc37bAZmdGL4khm/3HunVzS4qNbJqbEUfGUkVERPcfcI2Wgv2eB6clVmtSuzMNll+9pCpa113U/oydfDz2Pnc9EDmhZdcrA8Q2yRmtvRrCcTeoyBcEsqfhNcKbgfNL9G9EQPnCVWAKQm6OmmojC1XHrik4ZbWqQfbzXPrG6IbR/pqVpAb/lYOBTq+ZQfJPC4wKvKHqEtAZsh9jDd8oXtJlT1vtFRLaexgDgfU4QSWHVIPKS99A3r8IJA+dnEgziRAkHXc2qNQ1nFndspYWHQjSxMHsBkBZZIdXWpIbP9k1Mn7AwuwvzsB2iHS5huvYAIBLMXLO87jf7gJlcbhqUK97rezhEaHCrhgg8vScubLh1UqzCRqMrdGywtGEbwcztA+ohnKhkmEpeGRgkOHWh7gysoOAyYPlOg5k7DMQ1nMzgJehqLDrSHp9lZunJNuzFnXmJ4JMNCtBO1OybxlQucmevodsZ6Pkgz0TS7LV1Z3P3Vry7TmqJBzc7UuZd/VqBaD0nEEc/MCekxvuX4gD0+NUoRolcJGLbiUbVBBrmrVUc3ae8XANdl+VFXEOf2VAxAKqfdQ7uZPuTGYFwkPFJbKPYEJAewF99pL8GAhLgd7zSmDFiAKosYgAwlozIDbeDonX2BHc6PEngMQAfFCALCIDIy0g5HCRHcrZ2ux0WssaMX9twa6b9MHbdPDFn1867ZtclVZEeejATSxB84NYIZJxPJSd58kEGEDIp2nIJpdqSFoRVyOiH8H2SPLjh8udfJg7zs0Yc6tJE/FB8w/j9vwr8iIYMs/eVnJL1SY7mxc16HCG48WPayQRY2vRgdDQr339d7mdru0K0H/8Kr+fRvXXLjRExiWoFq0pGbL5qnV83+POSRz9i3hUwwqP8kE/31hAMuA8IPk6iI/U/BAn+rETmhcaRqOn3TMRb62AMW5aG2gHIHNBTJSshsWlVGnPQxXQtyzoRopsuZctuiSj/8uwct7SXD4tAmw/5+xxccTgLo6KK3v3tO1UwHyn0aiW9hmUemAerC4t4vD5iIbrT2Cpwwyf1pqqCfzTem88TQXPhbWThlDR+S96p4cGsw9yuLCrhsOo28dktV1v2d798HWbMfJ6lm498KJOjqRfHB4anFb2Gx0IHx21X646G2nXL+2feY+NWRS/w5IUAGPQIXPcfS1r6J+EFTsydXFPYfA7b3i3KHw1GxHT4Vsa7X8ulQdXXNE5veDz98kHgdyJi/OHbu24Wj8cd1QVZyqomhlWcswLrk2c6MOXyA+JJvNRhBUkQimeERj/1Lj6IW0g/KB73b9K75T2BRVF/MgHTvJhnaowRvNuN/EfZ1jCtB1tAvjTltOmXflH1tcqb1tI/qNJa0zVo5J9YbW2eyin9ouaw8SFfC2oEgMeYh0jXc8/hwWrxs3hA4nc85OtKUhlfBW9po2fzsf6wHx86+qmT/kkZDY4A08XGrer4a26fLv3g5l1/Udgs4iufcrj654tbNy2JgfMtvPQuincA\",\"base64\")).toString()),n_)});var Xi={};Vt(Xi,{convertToZip:()=>rut,convertToZipWorker:()=>o_,extractArchiveTo:()=>Xfe,getDefaultTaskPool:()=>Jfe,getTaskPoolForConfiguration:()=>zfe,makeArchiveFromDirectory:()=>tut});function $ct(t,e){switch(t){case\"async\":return new r2(o_,{poolSize:e});case\"workers\":return new n2((0,s_.getContent)(),{poolSize:e});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}}function Jfe(){return typeof i_>\"u\"&&(i_=$ct(\"workers\",Ji.availableParallelism())),i_}function zfe(t){return typeof t>\"u\"?Jfe():ol(eut,t,()=>{let e=t.get(\"taskPoolMode\"),r=t.get(\"taskPoolConcurrency\");switch(e){case\"async\":return new r2(o_,{poolSize:r});case\"workers\":return new n2((0,s_.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}})}async function o_(t){let{tmpFile:e,tgz:r,compressionLevel:o,extractBufferOpts:a}=t,n=new zi(e,{create:!0,level:o,stats:Ea.makeDefaultStats()}),u=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await Xfe(u,n,a),n.saveAndClose(),e}async function tut(t,{baseFs:e=new Tn,prefixPath:r=Bt.root,compressionLevel:o,inMemory:a=!1}={}){let n;if(a)n=new zi(null,{level:o});else{let A=await oe.mktempPromise(),p=V.join(A,\"archive.zip\");n=new zi(p,{create:!0,level:o})}let u=V.resolve(Bt.root,r);return await n.copyPromise(u,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function rut(t,e={}){let r=await oe.mktempPromise(),o=V.join(r,\"archive.zip\"),a=e.compressionLevel??e.configuration?.get(\"compressionLevel\")??\"mixed\",n={prefixPath:e.prefixPath,stripComponents:e.stripComponents};return await(e.taskPool??zfe(e.configuration)).run({tmpFile:o,tgz:t,compressionLevel:a,extractBufferOpts:n}),new zi(o,{level:e.compressionLevel})}async function*nut(t){let e=new Vfe.default.Parse,r=new Kfe.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on(\"entry\",o=>{r.write(o)}),e.on(\"error\",o=>{r.destroy(o)}),e.on(\"close\",()=>{r.destroyed||r.end()}),e.end(t);for await(let o of r){let a=o;yield a,a.resume()}}async function Xfe(t,e,{stripComponents:r=0,prefixPath:o=Bt.dot}={}){function a(n){if(n.path[0]===\"/\")return!0;let u=n.path.split(/\\//g);return!!(u.some(A=>A===\"..\")||u.length<=r)}for await(let n of nut(t)){if(a(n))continue;let u=V.normalize(ue.toPortablePath(n.path)).replace(/\\/$/,\"\").split(/\\//g);if(u.length<=r)continue;let A=u.slice(r).join(\"/\"),p=V.join(o,A),h=420;switch((n.type===\"Directory\"||((n.mode??0)&73)!==0)&&(h|=73),n.type){case\"Directory\":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break;case\"OldFile\":case\"File\":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.writeFileSync(p,await Vy(n),{mode:h}),e.utimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break;case\"SymbolicLink\":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break}}return e}var Kfe,Vfe,s_,i_,eut,Zfe=Et(()=>{Ye();Pt();nA();Kfe=ve(\"stream\"),Vfe=$e(jfe());Gfe();jl();s_=$e(Wfe());eut=new WeakMap});var epe=_((a_,$fe)=>{(function(t,e){typeof a_==\"object\"?$fe.exports=e():typeof define==\"function\"&&define.amd?define(e):t.treeify=e()})(a_,function(){function t(a,n){var u=n?\"\\u2514\":\"\\u251C\";return a?u+=\"\\u2500 \":u+=\"\\u2500\\u2500\\u2510\",u}function e(a,n){var u=[];for(var A in a)!a.hasOwnProperty(A)||n&&typeof a[A]==\"function\"||u.push(A);return u}function r(a,n,u,A,p,h,E){var I=\"\",v=0,x,C,R=A.slice(0);if(R.push([n,u])&&A.length>0&&(A.forEach(function(U,J){J>0&&(I+=(U[1]?\" \":\"\\u2502\")+\"  \"),!C&&U[0]===n&&(C=!0)}),I+=t(a,u)+a,p&&(typeof n!=\"object\"||n instanceof Date)&&(I+=\": \"+n),C&&(I+=\" (circular ref.)\"),E(I)),!C&&typeof n==\"object\"){var N=e(n,h);N.forEach(function(U){x=++v===N.length,r(U,n[U],x,R,p,h,E)})}}var o={};return o.asLines=function(a,n,u,A){var p=typeof u!=\"function\"?u:!1;r(\".\",a,!1,[],n,p,A||u)},o.asTree=function(a,n,u){var A=\"\";return r(\".\",a,!1,[],n,u,function(p){A+=p+`\n`}),A},o})});var $s={};Vt($s,{emitList:()=>iut,emitTree:()=>ipe,treeNodeToJson:()=>npe,treeNodeToTreeify:()=>rpe});function rpe(t,{configuration:e}){let r={},o=0,a=(n,u)=>{let A=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of A){if(!h)continue;let{label:E,value:I,children:v}=h,x=[];typeof E<\"u\"&&x.push(yd(e,E,2)),typeof I<\"u\"&&x.push(Ut(e,I[0],I[1])),x.length===0&&x.push(yd(e,`${p}`,2));let C=x.join(\": \").trim(),R=`\\0${o++}\\0`,N=u[`${R}${C}`]={};typeof v<\"u\"&&a(v,N)}};if(typeof t.children>\"u\")throw new Error(\"The root node must only contain children\");return a(t.children,r),r}function npe(t){let e=r=>{if(typeof r.children>\"u\"){if(typeof r.value>\"u\")throw new Error(\"Assertion failed: Expected a value to be set if the children are missing\");return Ed(r.value[0],r.value[1])}let o=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,u]of o)u&&(a[sut(n)]=e(u));return typeof r.value>\"u\"?a:{value:Ed(r.value[0],r.value[1]),children:a}};return e(t)}function iut(t,{configuration:e,stdout:r,json:o}){let a=t.map(n=>({value:n}));ipe({children:a},{configuration:e,stdout:r,json:o})}function ipe(t,{configuration:e,stdout:r,json:o,separators:a=0}){if(o){let u=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let A of u)A&&r.write(`${JSON.stringify(npe(A))}\n`);return}let n=(0,tpe.asTree)(rpe(t,{configuration:e}),!1,!1);if(n=n.replace(/\\0[0-9]+\\0/g,\"\"),a>=1&&(n=n.replace(/^([├└]─)/gm,`\\u2502\n$1`).replace(/^│\\n/,\"\")),a>=2)for(let u=0;u<2;++u)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\\n]+\\n)(([│ ]).{2}[├└].{2}[^\\n]*\\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3  \\u2502 \n$2`).replace(/^│\\n/,\"\");if(a>=3)throw new Error(\"Only the first two levels are accepted by treeUtils.emitTree\");r.write(n)}function sut(t){return typeof t==\"string\"?t.replace(/^\\0[0-9]+\\0/,\"\"):t}var tpe,spe=Et(()=>{tpe=$e(epe());ql()});function i2(t){let e=t.match(out);if(!e?.groups)throw new Error(\"Assertion failed: Expected the checksum to match the requested pattern\");let r=e.groups.cacheVersion?parseInt(e.groups.cacheVersion):null;return{cacheKey:e.groups.cacheKey??null,cacheVersion:r,cacheSpec:e.groups.cacheSpec??null,hash:e.groups.hash}}var ope,l_,c_,Kx,Nr,out,u_=Et(()=>{Ye();Pt();Pt();nA();ope=ve(\"crypto\"),l_=$e(ve(\"fs\"));Yl();nh();jl();bo();c_=Jy(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),Kx=Jy(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Nr=class{constructor(e,{configuration:r,immutable:o=r.get(\"enableImmutableCache\"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,ope.randomBytes)(8).toString(\"hex\")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=o,this.check=a;let{cacheSpec:n,cacheKey:u}=Nr.getCacheKey(r);this.cacheSpec=n,this.cacheKey=u}static async find(e,{immutable:r,check:o}={}){let a=new Nr(e.get(\"cacheFolder\"),{configuration:e,immutable:r,check:o});return await a.setup(),a}static getCacheKey(e){let r=e.get(\"compressionLevel\"),o=r!==\"mixed\"?`c${r}`:\"\";return{cacheKey:[Kx,o].join(\"\"),cacheSpec:o}}get mirrorCwd(){if(!this.configuration.get(\"enableMirror\"))return null;let e=`${this.configuration.get(\"globalFolder\")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${lE(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=i2(r).hash.slice(0,10);return`${lE(e)}-${a}.zip`}isChecksumCompatible(e){if(e===null)return!1;let{cacheVersion:r,cacheSpec:o}=i2(e);if(r===null||r<c_)return!1;let a=this.configuration.get(\"cacheMigrationMode\");return!(r<Kx&&a===\"always\"||o!==this.cacheSpec&&a!==\"required-only\")}getLocatorPath(e,r){return this.mirrorCwd===null?V.resolve(this.cwd,this.getVersionFilename(e)):r===null?V.resolve(this.cwd,this.getVersionFilename(e)):V.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?V.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get(\"enableGlobalCache\"))if(this.immutable){if(!await oe.existsPromise(this.cwd))throw new zt(56,\"Cache path does not exist.\")}else{await oe.mkdirPromise(this.cwd,{recursive:!0});let e=V.resolve(this.cwd,\".gitignore\");await oe.changeFilePromise(e,`/.gitignore\n*.flock\n*.tmp\n`)}(this.mirrorCwd||!this.immutable)&&await oe.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,{onHit:o,onMiss:a,loader:n,...u}){let A=this.getLocatorMirrorPath(e),p=new Tn,h=()=>{let he=new zi,Be=V.join(Bt.root,nM(e));return he.mkdirSync(Be,{recursive:!0}),he.writeJsonSync(V.join(Be,dr.manifest),{name:fn(e),mocked:!0}),he},E=async(he,{isColdHit:Be,controlPath:we=null})=>{if(we===null&&u.unstablePackages?.has(e.locatorHash))return{isValid:!0,hash:null};let g=r&&!Be?i2(r).cacheKey:this.cacheKey,Ee=!u.skipIntegrityCheck||!r?`${g}/${await LS(he)}`:r;if(we!==null){let le=!u.skipIntegrityCheck||!r?`${this.cacheKey}/${await LS(we)}`:r;if(Ee!==le)throw new zt(18,\"The remote archive doesn't match the local checksum - has the local cache been corrupted?\")}let Pe=null;switch(r!==null&&Ee!==r&&(this.check?Pe=\"throw\":i2(r).cacheKey!==i2(Ee).cacheKey?Pe=\"update\":Pe=this.configuration.get(\"checksumBehavior\")),Pe){case null:case\"update\":return{isValid:!0,hash:Ee};case\"ignore\":return{isValid:!0,hash:r};case\"reset\":return{isValid:!1,hash:r};default:case\"throw\":throw new zt(18,\"The remote archive doesn't match the expected checksum\")}},I=async he=>{if(!n)throw new Error(`Cache check required but no loader configured for ${jr(this.configuration,e)}`);let Be=await n(),we=Be.getRealPath();Be.saveAndClose(),await oe.chmodPromise(we,420);let g=await E(he,{controlPath:we,isColdHit:!1});if(!g.isValid)throw new Error(\"Assertion failed: Expected a valid checksum\");return g.hash},v=async()=>{if(A===null||!await oe.existsPromise(A)){let he=await n(),Be=he.getRealPath();return he.saveAndClose(),{source:\"loader\",path:Be}}return{source:\"mirror\",path:A}},x=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${jr(this.configuration,e)}`);if(this.immutable)throw new zt(56,`Cache entry required but missing for ${jr(this.configuration,e)}`);let{path:he,source:Be}=await v(),{hash:we}=await E(he,{isColdHit:!0}),g=this.getLocatorPath(e,we),Ee=[];Be!==\"mirror\"&&A!==null&&Ee.push(async()=>{let le=`${A}${this.cacheId}`;await oe.copyFilePromise(he,le,l_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(le,420),await oe.renamePromise(le,A)}),(!u.mirrorWriteOnly||A===null)&&Ee.push(async()=>{let le=`${g}${this.cacheId}`;await oe.copyFilePromise(he,le,l_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(le,420),await oe.renamePromise(le,g)});let Pe=u.mirrorWriteOnly?A??g:g;return await Promise.all(Ee.map(le=>le())),[!1,Pe,we]},C=async()=>{let Be=(async()=>{let we=u.unstablePackages?.has(e.locatorHash),g=we||!r||this.isChecksumCompatible(r)?this.getLocatorPath(e,r):null,Ee=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,Pe=!!u.mockedPackages?.has(e.locatorHash)&&(!this.check||!Ee),le=Pe||Ee,ne=le?o:a;if(ne&&ne(),le){let ee=null,Ie=g;if(!Pe)if(this.check)ee=await I(Ie);else{let Fe=await E(Ie,{isColdHit:!1});if(Fe.isValid)ee=Fe.hash;else return x()}return[Pe,Ie,ee]}else{if(this.immutable&&we)throw new zt(56,`Cache entry required but missing for ${jr(this.configuration,e)}; consider defining ${de.pretty(this.configuration,\"supportedArchitectures\",de.Type.CODE)} to cache packages for multiple systems`);return x()}})();this.mutexes.set(e.locatorHash,Be);try{return await Be}finally{this.mutexes.delete(e.locatorHash)}};for(let he;he=this.mutexes.get(e.locatorHash);)await he;let[R,N,U]=await C();R||this.markedFiles.add(N);let J,te=R?()=>h():()=>new zi(N,{baseFs:p,readOnly:!0}),ae=new iy(()=>CN(()=>J=te(),he=>`Failed to open the cache entry for ${jr(this.configuration,e)}: ${he}`),V),fe=new Uu(N,{baseFs:ae,pathUtils:V}),ce=()=>{J?.discardAndClose()},me=u.unstablePackages?.has(e.locatorHash)?null:U;return[fe,ce,me]}},out=/^(?:(?<cacheKey>(?<cacheVersion>[0-9]+)(?<cacheSpec>.*))\\/)?(?<hash>.*)$/});var Vx,ape=Et(()=>{Vx=(r=>(r[r.SCRIPT=0]=\"SCRIPT\",r[r.SHELLCODE=1]=\"SHELLCODE\",r))(Vx||{})});var aut,oC,A_=Et(()=>{Pt();Ll();Qf();bo();aut=[[/^(git(?:\\+(?:https|ssh))?:\\/\\/.*(?:\\.git)?)#(.*)$/,(t,e,r,o)=>`${r}#commit=${o}`],[/^https:\\/\\/((?:[^/]+?)@)?codeload\\.github\\.com\\/([^/]+\\/[^/]+)\\/tar\\.gz\\/([0-9a-f]+)$/,(t,e,r=\"\",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https:\\/\\/((?:[^/]+?)@)?github\\.com\\/([^/]+\\/[^/]+?)(?:\\.git)?#([0-9a-f]+)$/,(t,e,r=\"\",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https?:\\/\\/[^/]+\\/(?:[^/]+\\/)*(?:@.+(?:\\/|(?:%2f)))?([^/]+)\\/(?:-|download)\\/\\1-[^/]+\\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\\/\\/npm\\.pkg\\.github\\.com\\/download\\/(?:@[^/]+)\\/(?:[^/]+)\\/(?:[^/]+)\\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\\/\\/npm\\.fontawesome\\.com\\/(?:@[^/]+)\\/([^/]+)\\/-\\/([^/]+)\\/\\1-\\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\\/\\/[^/]+\\/.*\\/(@[^/]+)\\/([^/]+)\\/-\\/\\1\\/\\2-(?:[.\\d\\w-]+)\\.tgz(?:#|$)/,(t,e)=>_S({protocol:\"npm:\",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],oC=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let o=V.join(e.cwd,dr.lockfile);if(!oe.existsSync(o))return;let a=await oe.readFilePromise(o,\"utf8\"),n=Ki(a);if(Object.hasOwn(n,\"__metadata\"))return;let u=this.resolutions=new Map;for(let A of Object.keys(n)){let p=s1(A);if(!p){r.reportWarning(14,`Failed to parse the string \"${A}\" into a proper descriptor`);continue}let h=xa(p.range)?In(p,`npm:${p.range}`):p,{version:E,resolved:I}=n[A];if(!I)continue;let v;for(let[C,R]of aut){let N=I.match(C);if(N){v=R(E,...N);break}}if(!v){r.reportWarning(14,`${qn(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not \"${I}\")`);continue}let x=h;try{let C=Bd(h.range),R=s1(C.selector,!0);R&&(x=R)}catch{}u.set(h.descriptorHash,Qs(x,v))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!this.resolutions)throw new Error(\"Assertion failed: The resolution store should have been setup\");let a=this.resolutions.get(e.descriptorHash);if(!a)throw new Error(\"Assertion failed: The resolution should have been registered\");let n=$O(a),u=o.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(u,r,o)}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}}});var AA,lpe=Et(()=>{Yl();O1();ql();AA=class extends Xs{constructor({configuration:r,stdout:o,suggestInstall:a=!0}){super();this.errorCount=0;XI(this,{configuration:r}),this.configuration=r,this.stdout=o,this.suggestInstall=a}static async start(r,o){let a=new this(r);try{await o(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,o){return o()}async startSectionPromise(r,o){return await o()}startTimerSync(r,o,a){return(typeof o==\"function\"?o:a)()}async startTimerPromise(r,o,a){return await(typeof o==\"function\"?o:a)()}reportSeparator(){}reportInfo(r,o){}reportWarning(r,o){}reportError(r,o){this.errorCount+=1,this.stdout.write(`${Ut(this.configuration,\"\\u27A4\",\"redBright\")} ${this.formatNameWithHyperlink(r)}: ${o}\n`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,o){}async finalize(){this.errorCount>0&&(this.stdout.write(`\n`),this.stdout.write(`${Ut(this.configuration,\"\\u27A4\",\"redBright\")} Errors happened when preparing the environment required to run this command.\n`),this.suggestInstall&&this.stdout.write(`${Ut(this.configuration,\"\\u27A4\",\"redBright\")} This might be caused by packages being missing from the lockfile, in which case running \"yarn install\" might help.\n`))}formatNameWithHyperlink(r){return yU(r,{configuration:this.configuration,json:!1})}}});var aC,f_=Et(()=>{bo();aC=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(OS(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error(\"The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){let a=o.project.storedResolutions.get(e.descriptorHash);if(a){let u=o.project.originalPackages.get(a);if(u)return[u]}let n=o.project.originalPackages.get(OS(e).locatorHash);if(n)return[n];throw new Error(\"Resolution expected from the lockfile data\")}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.originalPackages.get(e.locatorHash);if(!o)throw new Error(\"The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache\");return o}}});function Kf(){}function lut(t,e,r,o,a){for(var n=0,u=e.length,A=0,p=0;n<u;n++){var h=e[n];if(h.removed){if(h.value=t.join(o.slice(p,p+h.count)),p+=h.count,n&&e[n-1].added){var I=e[n-1];e[n-1]=e[n],e[n]=I}}else{if(!h.added&&a){var E=r.slice(A,A+h.count);E=E.map(function(x,C){var R=o[p+C];return R.length>x.length?R:x}),h.value=t.join(E)}else h.value=t.join(r.slice(A,A+h.count));A+=h.count,h.added||(p+=h.count)}}var v=e[u-1];return u>1&&typeof v.value==\"string\"&&(v.added||v.removed)&&t.equals(\"\",v.value)&&(e[u-2].value+=v.value,e.pop()),e}function cut(t){return{newPos:t.newPos,components:t.components.slice(0)}}function uut(t,e){if(typeof t==\"function\")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function Ape(t,e,r){return r=uut(r,{ignoreWhitespace:!0}),m_.diff(t,e,r)}function Aut(t,e,r){return y_.diff(t,e,r)}function Jx(t){return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?Jx=function(e){return typeof e}:Jx=function(e){return e&&typeof Symbol==\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Jx(t)}function p_(t){return hut(t)||gut(t)||dut(t)||mut()}function hut(t){if(Array.isArray(t))return h_(t)}function gut(t){if(typeof Symbol<\"u\"&&Symbol.iterator in Object(t))return Array.from(t)}function dut(t,e){if(!!t){if(typeof t==\"string\")return h_(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r===\"Object\"&&t.constructor&&(r=t.constructor.name),r===\"Map\"||r===\"Set\")return Array.from(t);if(r===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return h_(t,e)}}function h_(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}function mut(){throw new TypeError(`Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function g_(t,e,r,o,a){e=e||[],r=r||[],o&&(t=o(a,t));var n;for(n=0;n<e.length;n+=1)if(e[n]===t)return r[n];var u;if(yut.call(t)===\"[object Array]\"){for(e.push(t),u=new Array(t.length),r.push(u),n=0;n<t.length;n+=1)u[n]=g_(t[n],e,r,o,a);return e.pop(),r.pop(),u}if(t&&t.toJSON&&(t=t.toJSON()),Jx(t)===\"object\"&&t!==null){e.push(t),u={},r.push(u);var A=[],p;for(p in t)t.hasOwnProperty(p)&&A.push(p);for(A.sort(),n=0;n<A.length;n+=1)p=A[n],u[p]=g_(t[p],e,r,o,p);e.pop(),r.pop()}else u=t;return u}function fpe(t,e,r,o,a,n,u){u||(u={}),typeof u.context>\"u\"&&(u.context=4);var A=Aut(r,o,u);if(!A)return;A.push({value:\"\",lines:[]});function p(U){return U.map(function(J){return\" \"+J})}for(var h=[],E=0,I=0,v=[],x=1,C=1,R=function(J){var te=A[J],ae=te.lines||te.value.replace(/\\n$/,\"\").split(`\n`);if(te.lines=ae,te.added||te.removed){var fe;if(!E){var ce=A[J-1];E=x,I=C,ce&&(v=u.context>0?p(ce.lines.slice(-u.context)):[],E-=v.length,I-=v.length)}(fe=v).push.apply(fe,p_(ae.map(function(le){return(te.added?\"+\":\"-\")+le}))),te.added?C+=ae.length:x+=ae.length}else{if(E)if(ae.length<=u.context*2&&J<A.length-2){var me;(me=v).push.apply(me,p_(p(ae)))}else{var he,Be=Math.min(ae.length,u.context);(he=v).push.apply(he,p_(p(ae.slice(0,Be))));var we={oldStart:E,oldLines:x-E+Be,newStart:I,newLines:C-I+Be,lines:v};if(J>=A.length-2&&ae.length<=u.context){var g=/\\n$/.test(r),Ee=/\\n$/.test(o),Pe=ae.length==0&&v.length>we.oldLines;!g&&Pe&&r.length>0&&v.splice(we.oldLines,0,\"\\\\ No newline at end of file\"),(!g&&!Pe||!Ee)&&v.push(\"\\\\ No newline at end of file\")}h.push(we),E=0,I=0,v=[]}x+=ae.length,C+=ae.length}},N=0;N<A.length;N++)R(N);return{oldFileName:t,newFileName:e,oldHeader:a,newHeader:n,hunks:h}}var i3t,cpe,upe,m_,y_,fut,put,yut,s2,d_,E_=Et(()=>{Kf.prototype={diff:function(e,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=o.callback;typeof o==\"function\"&&(a=o,o={}),this.options=o;var n=this;function u(R){return a?(setTimeout(function(){a(void 0,R)},0),!0):R}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var A=r.length,p=e.length,h=1,E=A+p;o.maxEditLength&&(E=Math.min(E,o.maxEditLength));var I=[{newPos:-1,components:[]}],v=this.extractCommon(I[0],r,e,0);if(I[0].newPos+1>=A&&v+1>=p)return u([{value:this.join(r),count:r.length}]);function x(){for(var R=-1*h;R<=h;R+=2){var N=void 0,U=I[R-1],J=I[R+1],te=(J?J.newPos:0)-R;U&&(I[R-1]=void 0);var ae=U&&U.newPos+1<A,fe=J&&0<=te&&te<p;if(!ae&&!fe){I[R]=void 0;continue}if(!ae||fe&&U.newPos<J.newPos?(N=cut(J),n.pushComponent(N.components,void 0,!0)):(N=U,N.newPos++,n.pushComponent(N.components,!0,void 0)),te=n.extractCommon(N,r,e,R),N.newPos+1>=A&&te+1>=p)return u(lut(n,N.components,r,e,n.useLongestToken));I[R]=N}h++}if(a)(function R(){setTimeout(function(){if(h>E)return a();x()||R()},0)})();else for(;h<=E;){var C=x();if(C)return C}},pushComponent:function(e,r,o){var a=e[e.length-1];a&&a.added===r&&a.removed===o?e[e.length-1]={count:a.count+1,added:r,removed:o}:e.push({count:1,added:r,removed:o})},extractCommon:function(e,r,o,a){for(var n=r.length,u=o.length,A=e.newPos,p=A-a,h=0;A+1<n&&p+1<u&&this.equals(r[A+1],o[p+1]);)A++,p++,h++;return h&&e.components.push({count:h}),e.newPos=A,p},equals:function(e,r){return this.options.comparator?this.options.comparator(e,r):e===r||this.options.ignoreCase&&e.toLowerCase()===r.toLowerCase()},removeEmpty:function(e){for(var r=[],o=0;o<e.length;o++)e[o]&&r.push(e[o]);return r},castInput:function(e){return e},tokenize:function(e){return e.split(\"\")},join:function(e){return e.join(\"\")}};i3t=new Kf;cpe=/^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/,upe=/\\S/,m_=new Kf;m_.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!upe.test(t)&&!upe.test(e)};m_.tokenize=function(t){for(var e=t.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/),r=0;r<e.length-1;r++)!e[r+1]&&e[r+2]&&cpe.test(e[r])&&cpe.test(e[r+2])&&(e[r]+=e[r+2],e.splice(r+1,2),r--);return e};y_=new Kf;y_.tokenize=function(t){var e=[],r=t.split(/(\\n|\\r\\n)/);r[r.length-1]||r.pop();for(var o=0;o<r.length;o++){var a=r[o];o%2&&!this.options.newlineIsToken?e[e.length-1]+=a:(this.options.ignoreWhitespace&&(a=a.trim()),e.push(a))}return e};fut=new Kf;fut.tokenize=function(t){return t.split(/(\\S.+?[.!?])(?=\\s+|$)/)};put=new Kf;put.tokenize=function(t){return t.split(/([{}:;,]|\\s+)/)};yut=Object.prototype.toString,s2=new Kf;s2.useLongestToken=!0;s2.tokenize=y_.tokenize;s2.castInput=function(t){var e=this.options,r=e.undefinedReplacement,o=e.stringifyReplacer,a=o===void 0?function(n,u){return typeof u>\"u\"?r:u}:o;return typeof t==\"string\"?t:JSON.stringify(g_(t,null,null,a),a,\"  \")};s2.equals=function(t,e){return Kf.prototype.equals.call(s2,t.replace(/,([\\r\\n])/g,\"$1\"),e.replace(/,([\\r\\n])/g,\"$1\"))};d_=new Kf;d_.tokenize=function(t){return t.slice()};d_.join=d_.removeEmpty=function(t){return t}});var hpe=_((o3t,ppe)=>{var Eut=Hl(),Cut=pE(),wut=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Iut=/^\\w*$/;function But(t,e){if(Eut(t))return!1;var r=typeof t;return r==\"number\"||r==\"symbol\"||r==\"boolean\"||t==null||Cut(t)?!0:Iut.test(t)||!wut.test(t)||e!=null&&t in Object(e)}ppe.exports=But});var mpe=_((a3t,dpe)=>{var gpe=UP(),vut=\"Expected a function\";function C_(t,e){if(typeof t!=\"function\"||e!=null&&typeof e!=\"function\")throw new TypeError(vut);var r=function(){var o=arguments,a=e?e.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var u=t.apply(this,o);return r.cache=n.set(a,u)||n,u};return r.cache=new(C_.Cache||gpe),r}C_.Cache=gpe;dpe.exports=C_});var Epe=_((l3t,ype)=>{var Dut=mpe(),Put=500;function Sut(t){var e=Dut(t,function(o){return r.size===Put&&r.clear(),o}),r=e.cache;return e}ype.exports=Sut});var w_=_((c3t,Cpe)=>{var but=Epe(),xut=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,kut=/\\\\(\\\\)?/g,Qut=but(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(\"\"),t.replace(xut,function(r,o,a,n){e.push(a?n.replace(kut,\"$1\"):o||r)}),e});Cpe.exports=Qut});var qd=_((u3t,wpe)=>{var Fut=Hl(),Rut=hpe(),Tut=w_(),Lut=L1();function Nut(t,e){return Fut(t)?t:Rut(t,e)?[t]:Tut(Lut(t))}wpe.exports=Nut});var lC=_((A3t,Ipe)=>{var Out=pE(),Mut=1/0;function Uut(t){if(typeof t==\"string\"||Out(t))return t;var e=t+\"\";return e==\"0\"&&1/t==-Mut?\"-0\":e}Ipe.exports=Uut});var zx=_((f3t,Bpe)=>{var _ut=qd(),Hut=lC();function jut(t,e){e=_ut(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[Hut(e[r++])];return r&&r==o?t:void 0}Bpe.exports=jut});var I_=_((p3t,Dpe)=>{var qut=tS(),Gut=qd(),Yut=_I(),vpe=il(),Wut=lC();function Kut(t,e,r,o){if(!vpe(t))return t;e=Gut(e,t);for(var a=-1,n=e.length,u=n-1,A=t;A!=null&&++a<n;){var p=Wut(e[a]),h=r;if(p===\"__proto__\"||p===\"constructor\"||p===\"prototype\")return t;if(a!=u){var E=A[p];h=o?o(E,p,A):void 0,h===void 0&&(h=vpe(E)?E:Yut(e[a+1])?[]:{})}qut(A,p,h),A=A[p]}return t}Dpe.exports=Kut});var Spe=_((h3t,Ppe)=>{var Vut=zx(),Jut=I_(),zut=qd();function Xut(t,e,r){for(var o=-1,a=e.length,n={};++o<a;){var u=e[o],A=Vut(t,u);r(A,u)&&Jut(n,zut(u,t),A)}return n}Ppe.exports=Xut});var xpe=_((g3t,bpe)=>{function Zut(t,e){return t!=null&&e in Object(t)}bpe.exports=Zut});var B_=_((d3t,kpe)=>{var $ut=qd(),eAt=OI(),tAt=Hl(),rAt=_I(),nAt=GP(),iAt=lC();function sAt(t,e,r){e=$ut(e,t);for(var o=-1,a=e.length,n=!1;++o<a;){var u=iAt(e[o]);if(!(n=t!=null&&r(t,u)))break;t=t[u]}return n||++o!=a?n:(a=t==null?0:t.length,!!a&&nAt(a)&&rAt(u,a)&&(tAt(t)||eAt(t)))}kpe.exports=sAt});var Fpe=_((m3t,Qpe)=>{var oAt=xpe(),aAt=B_();function lAt(t,e){return t!=null&&aAt(t,e,oAt)}Qpe.exports=lAt});var Tpe=_((y3t,Rpe)=>{var cAt=Spe(),uAt=Fpe();function AAt(t,e){return cAt(t,e,function(r,o){return uAt(t,o)})}Rpe.exports=AAt});var Mpe=_((E3t,Ope)=>{var Lpe=pd(),fAt=OI(),pAt=Hl(),Npe=Lpe?Lpe.isConcatSpreadable:void 0;function hAt(t){return pAt(t)||fAt(t)||!!(Npe&&t&&t[Npe])}Ope.exports=hAt});var Hpe=_((C3t,_pe)=>{var gAt=jP(),dAt=Mpe();function Upe(t,e,r,o,a){var n=-1,u=t.length;for(r||(r=dAt),a||(a=[]);++n<u;){var A=t[n];e>0&&r(A)?e>1?Upe(A,e-1,r,o,a):gAt(a,A):o||(a[a.length]=A)}return a}_pe.exports=Upe});var qpe=_((w3t,jpe)=>{var mAt=Hpe();function yAt(t){var e=t==null?0:t.length;return e?mAt(t,1):[]}jpe.exports=yAt});var v_=_((I3t,Gpe)=>{var EAt=qpe(),CAt=fN(),wAt=pN();function IAt(t){return wAt(CAt(t,void 0,EAt),t+\"\")}Gpe.exports=IAt});var D_=_((B3t,Ype)=>{var BAt=Tpe(),vAt=v_(),DAt=vAt(function(t,e){return t==null?{}:BAt(t,e)});Ype.exports=DAt});var Xx,Wpe=Et(()=>{Yl();Xx=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.resolver.bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){throw new zt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async getSatisfying(e,r,o,a){throw new zt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async resolve(e,r){throw new zt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}}});var Qi,P_=Et(()=>{Yl();Qi=class extends Xs{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,o){return(typeof r==\"function\"?r:o)()}async startTimerPromise(e,r,o){return await(typeof r==\"function\"?r:o)()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}reportFold(e,r){}async finalize(){}}});var Kpe,cC,S_=Et(()=>{Pt();Kpe=$e(RS());fE();vd();ql();nh();Qf();bo();cC=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Ot.tryFind(this.cwd)??new Ot,this.relativeCwd=V.relative(this.project.cwd,this.cwd)||Bt.dot;let e=this.manifest.name?this.manifest.name:eA(null,`${this.computeCandidateName()}-${zs(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=In(e,`${Xn.protocol}${this.relativeCwd}`),this.anchoredLocator=Qs(e,`${Xn.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let o=await(0,Kpe.default)(r,{cwd:ue.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:[\"**/node_modules\",\"**/.git\",\"**/.yarn\"]});o.sort(),await o.reduce(async(a,n)=>{let u=V.resolve(this.cwd,ue.toPortablePath(n)),A=await oe.existsPromise(V.join(u,\"package.json\"));await a,A&&this.workspacesCwds.add(u)},Promise.resolve())}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${a1(this.project.configuration,this)} (${Ut(this.project.configuration,V.join(this.cwd,dr.manifest),yt.PATH)}) to have been resolved. Run \"yarn install\" to update the lockfile`);return e}accepts(e){let r=e.indexOf(\":\"),o=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(o===Xn.protocol&&V.normalize(a)===this.relativeCwd||o===Xn.protocol&&(a===\"*\"||a===\"^\"||a===\"~\"))return!0;let n=xa(a);return n?o===Xn.protocol?n.test(this.manifest.version??\"0.0.0\"):this.project.configuration.get(\"enableTransparentWorkspaces\")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?\"root-workspace\":`${V.basename(this.cwd)}`||\"unnamed-workspace\"}getRecursiveWorkspaceDependencies({dependencies:e=Ot.hardDependencies}={}){let r=new Set,o=a=>{for(let n of e)for(let u of a.manifest[n].values()){let A=this.project.tryWorkspaceByDescriptor(u);A===null||r.has(A)||(r.add(A),o(A))}};return o(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ot.hardDependencies}={}){let r=new Set,o=a=>{for(let n of this.project.workspaces)e.some(A=>[...n.manifest[A].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&i1(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),o(n))};return o(this),r}getRecursiveWorkspaceChildren(){let e=new Set([this]);for(let r of e)for(let o of r.workspacesCwds){let a=this.project.workspacesByCwd.get(o);a&&e.add(a)}return e.delete(this),Array.from(e)}async persistManifest(){let e={};this.manifest.exportTo(e);let r=V.join(this.cwd,Ot.fileName),o=`${JSON.stringify(e,null,this.manifest.indent)}\n`;await oe.changeFilePromise(r,o,{automaticNewlines:!0}),this.manifest.raw=e}}});function QAt({project:t,allDescriptors:e,allResolutions:r,allPackages:o,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:u=new Map,peerWarnings:A=[],volatileDescriptors:p=new Set}){let h=new Map,E=[],I=new Map,v=new Map,x=new Map,C=new Map,R=new Map,N=new Map(t.workspaces.map(ce=>{let me=ce.anchoredLocator.locatorHash,he=o.get(me);if(typeof he>\"u\")throw new Error(\"Assertion failed: The workspace should have an associated package\");return[me,e1(he)]})),U=()=>{let ce=oe.mktempSync(),me=V.join(ce,\"stacktrace.log\"),he=String(E.length+1).length,Be=E.map((we,g)=>`${`${g+1}.`.padStart(he,\" \")} ${ba(we)}\n`).join(\"\");throw oe.writeFileSync(me,Be),oe.detachTemp(ce),new zt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${ue.fromPortablePath(me)}`)},J=ce=>{let me=r.get(ce.descriptorHash);if(typeof me>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let he=o.get(me);if(!he)throw new Error(\"Assertion failed: The package could not be found\");return he},te=(ce,me,he,{top:Be,optional:we})=>{E.length>1e3&&U(),E.push(me);let g=ae(ce,me,he,{top:Be,optional:we});return E.pop(),g},ae=(ce,me,he,{top:Be,optional:we})=>{if(we||n.delete(me.locatorHash),a.has(me.locatorHash))return;a.add(me.locatorHash);let g=o.get(me.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${jr(t.configuration,me)}) should have been registered`);let Ee=[],Pe=[],le=[],ne=[],ee=[];for(let Fe of Array.from(g.dependencies.values())){if(g.peerDependencies.has(Fe.identHash)&&g.locatorHash!==Be)continue;if(bf(Fe))throw new Error(\"Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch\");p.delete(Fe.descriptorHash);let At=we;if(!At){let Te=g.dependenciesMeta.get(fn(Fe));if(typeof Te<\"u\"){let Je=Te.get(null);typeof Je<\"u\"&&Je.optional&&(At=!0)}}let H=r.get(Fe.descriptorHash);if(!H)throw new Error(`Assertion failed: The resolution (${qn(t.configuration,Fe)}) should have been registered`);let at=N.get(H)||o.get(H);if(!at)throw new Error(`Assertion failed: The package (${H}, resolved from ${qn(t.configuration,Fe)}) should have been registered`);if(at.peerDependencies.size===0){te(Fe,at,new Map,{top:Be,optional:At});continue}let Re,ke,xe=new Set,He;Pe.push(()=>{Re=tM(Fe,me.locatorHash),ke=rM(at,me.locatorHash),g.dependencies.delete(Fe.identHash),g.dependencies.set(Re.identHash,Re),r.set(Re.descriptorHash,ke.locatorHash),e.set(Re.descriptorHash,Re),o.set(ke.locatorHash,ke),Ee.push([at,Re,ke])}),le.push(()=>{He=new Map;for(let Te of ke.peerDependencies.values()){let Je=g.dependencies.get(Te.identHash);if(!Je&&n1(me,Te)&&(ce.identHash===me.identHash?Je=ce:(Je=In(me,ce.range),e.set(Je.descriptorHash,Je),r.set(Je.descriptorHash,me.locatorHash),p.delete(Je.descriptorHash))),(!Je||Je.range===\"missing:\")&&ke.dependencies.has(Te.identHash)){ke.peerDependencies.delete(Te.identHash);continue}Je||(Je=In(Te,\"missing:\")),ke.dependencies.set(Je.identHash,Je),bf(Je)&&md(x,Je.descriptorHash).add(ke.locatorHash),I.set(Je.identHash,Je),Je.range===\"missing:\"&&xe.add(Je.identHash),He.set(Te.identHash,he.get(Te.identHash)??ke.locatorHash)}ke.dependencies=new Map(ks(ke.dependencies,([Te,Je])=>fn(Je)))}),ne.push(()=>{if(!o.has(ke.locatorHash))return;let Te=h.get(at.locatorHash);typeof Te==\"number\"&&Te>=2&&U();let Je=h.get(at.locatorHash),je=typeof Je<\"u\"?Je+1:1;h.set(at.locatorHash,je),te(Re,ke,He,{top:Be,optional:At}),h.set(at.locatorHash,je-1)}),ee.push(()=>{let Te=g.dependencies.get(Fe.identHash);if(typeof Te>\"u\")throw new Error(\"Assertion failed: Expected the peer dependency to have been turned into a dependency\");let Je=r.get(Te.descriptorHash);if(typeof Je>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");if(md(R,Je).add(me.locatorHash),!!o.has(ke.locatorHash)){for(let je of ke.peerDependencies.values()){let b=He.get(je.identHash);if(typeof b>\"u\")throw new Error(\"Assertion failed: Expected the peer dependency ident to be registered\");Yy(Wy(C,b),fn(je)).push(ke.locatorHash)}for(let je of xe)ke.dependencies.delete(je)}})}for(let Fe of[...Pe,...le])Fe();let Ie;do{Ie=!0;for(let[Fe,At,H]of Ee){let at=Wy(v,Fe.locatorHash),Re=zs(...[...H.dependencies.values()].map(Te=>{let Je=Te.range!==\"missing:\"?r.get(Te.descriptorHash):\"missing:\";if(typeof Je>\"u\")throw new Error(`Assertion failed: Expected the resolution for ${qn(t.configuration,Te)} to have been registered`);return Je===Be?`${Je} (top)`:Je}),At.identHash),ke=at.get(Re);if(typeof ke>\"u\"){at.set(Re,At);continue}if(ke===At)continue;o.delete(H.locatorHash),e.delete(At.descriptorHash),r.delete(At.descriptorHash),a.delete(H.locatorHash);let xe=x.get(At.descriptorHash)||[],He=[g.locatorHash,...xe];x.delete(At.descriptorHash);for(let Te of He){let Je=o.get(Te);typeof Je>\"u\"||(Je.dependencies.get(At.identHash).descriptorHash!==ke.descriptorHash&&(Ie=!1),Je.dependencies.set(At.identHash,ke))}}}while(!Ie);for(let Fe of[...ne,...ee])Fe()};for(let ce of t.workspaces){let me=ce.anchoredLocator;p.delete(ce.anchoredDescriptor.descriptorHash),te(ce.anchoredDescriptor,me,new Map,{top:me.locatorHash,optional:!1})}let fe=new Map;for(let[ce,me]of R){let he=o.get(ce);if(typeof he>\"u\")throw new Error(\"Assertion failed: Expected the root to be registered\");let Be=C.get(ce);if(!(typeof Be>\"u\"))for(let we of me){let g=o.get(we);if(!(typeof g>\"u\")&&!!t.tryWorkspaceByLocator(g))for(let[Ee,Pe]of Be){let le=Js(Ee);if(g.peerDependencies.has(le.identHash))continue;let ne=`p${zs(we,Ee,ce).slice(0,5)}`;u.set(ne,{subject:we,requested:le,rootRequester:ce,allRequesters:Pe});let ee=he.dependencies.get(le.identHash);if(typeof ee<\"u\"){let Ie=J(ee),Fe=Ie.version??\"0.0.0\",At=new Set;for(let at of Pe){let Re=o.get(at);if(typeof Re>\"u\")throw new Error(\"Assertion failed: Expected the link to be registered\");let ke=Re.peerDependencies.get(le.identHash);if(typeof ke>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");At.add(ke.range)}if(![...At].every(at=>{if(at.startsWith(Xn.protocol)){if(!t.tryWorkspaceByLocator(Ie))return!1;at=at.slice(Xn.protocol.length),(at===\"^\"||at===\"~\")&&(at=\"*\")}return kf(Fe,at)})){let at=ol(fe,Ie.locatorHash,()=>({type:2,requested:le,subject:Ie,dependents:new Map,requesters:new Map,links:new Map,version:Fe,hash:`p${Ie.locatorHash.slice(0,5)}`}));at.dependents.set(g.locatorHash,g),at.requesters.set(he.locatorHash,he);for(let Re of Pe)at.links.set(Re,o.get(Re));A.push({type:1,subject:g,requested:le,requester:he,version:Fe,hash:ne,requirementCount:Pe.length})}}else he.peerDependenciesMeta.get(Ee)?.optional||A.push({type:0,subject:g,requested:le,requester:he,hash:ne})}}}A.push(...fe.values())}function FAt(t,e){let r=IN(t.peerWarnings,\"type\"),o=r[2]?.map(n=>{let u=Array.from(n.links.values(),E=>{let I=t.storedPackages.get(E.locatorHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let v=I.peerDependencies.get(n.requested.identHash);if(typeof v>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");return v.range}),A=n.links.size>1?\"and other dependencies request\":\"requests\",p=sM(u),h=p?cE(t.configuration,p):Ut(t.configuration,\"but they have non-overlapping ranges!\",\"redBright\");return`${cs(t.configuration,n.requested)} is listed by your project with version ${o1(t.configuration,n.version)}, which doesn't satisfy what ${cs(t.configuration,n.requesters.values().next().value)} (${Ut(t.configuration,n.hash,yt.CODE)}) ${A} (${h}).`})??[],a=r[0]?.map(n=>`${jr(t.configuration,n.subject)} doesn't provide ${cs(t.configuration,n.requested)} (${Ut(t.configuration,n.hash,yt.CODE)}), requested by ${cs(t.configuration,n.requester)}.`)??[];e.startSectionSync({reportFooter:()=>{e.reportWarning(86,`Some peer dependencies are incorrectly met; run ${Ut(t.configuration,\"yarn explain peer-requirements <hash>\",yt.CODE)} for details, where ${Ut(t.configuration,\"<hash>\",yt.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of ks(o,u=>Xy.default(u)))e.reportWarning(60,n);for(let n of ks(a,u=>Xy.default(u)))e.reportWarning(2,n)})}var Zx,$x,ek,zpe,k_,x_,Q_,tk,PAt,SAt,Vpe,bAt,xAt,kAt,pl,b_,rk,Jpe,St,Xpe=Et(()=>{Pt();Pt();Ll();jt();Zx=ve(\"crypto\");E_();$x=$e(D_()),ek=$e(id()),zpe=$e(zn()),k_=ve(\"util\"),x_=$e(ve(\"v8\")),Q_=$e(ve(\"zlib\"));u_();P1();A_();f_();fE();uM();Yl();Wpe();O1();P_();vd();S_();WS();ql();nh();jl();vb();BU();Qf();bo();tk=Jy(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),PAt=3,SAt=/ *, */g,Vpe=/\\/$/,bAt=32,xAt=(0,k_.promisify)(Q_.default.gzip),kAt=(0,k_.promisify)(Q_.default.gunzip),pl=(r=>(r.UpdateLockfile=\"update-lockfile\",r.SkipBuild=\"skip-build\",r))(pl||{}),b_={restoreLinkersCustomData:[\"linkersCustomData\"],restoreResolutions:[\"accessibleLocators\",\"conditionalLocators\",\"disabledLocators\",\"optionalBuilds\",\"storedDescriptors\",\"storedResolutions\",\"storedPackages\",\"lockFileChecksum\"],restoreBuildState:[\"skippedBuilds\",\"storedBuildState\"]},rk=(o=>(o[o.NotProvided=0]=\"NotProvided\",o[o.NotCompatible=1]=\"NotCompatible\",o[o.NotCompatibleAggregate=2]=\"NotCompatibleAggregate\",o))(rk||{}),Jpe=t=>zs(`${PAt}`,t),St=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){if(!e.projectCwd)throw new it(`No project found in ${r}`);let o=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,oe.existsSync(V.join(n,dr.manifest))){o=n;break}a=V.dirname(n)}let u=new St(e.projectCwd,{configuration:e});Ke.telemetry?.reportProject(u.cwd),await u.setupResolutions(),await u.setupWorkspaces(),Ke.telemetry?.reportWorkspaceCount(u.workspaces.length),Ke.telemetry?.reportDependencyCount(u.workspaces.reduce((C,R)=>C+R.manifest.dependencies.size+R.manifest.devDependencies.size,0));let A=u.tryWorkspaceByCwd(o);if(A)return{project:u,workspace:A,locator:A.anchoredLocator};let p=await u.findLocatorForLocation(`${o}/`,{strict:!0});if(p)return{project:u,locator:p,workspace:null};let h=Ut(e,u.cwd,yt.PATH),E=Ut(e,V.relative(u.cwd,o),yt.PATH),I=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,v=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,x=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new it(`The nearest package directory (${Ut(e,o,yt.PATH)}) doesn't seem to be part of the project declared in ${Ut(e,u.cwd,yt.PATH)}.\n\n${[I,v,x].join(`\n`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=V.join(this.cwd,dr.lockfile),r=this.configuration.get(\"defaultLanguageName\");if(oe.existsSync(e)){let o=await oe.readFilePromise(e,\"utf8\");this.lockFileChecksum=Jpe(o);let a=Ki(o);if(a.__metadata){let n=a.__metadata.version,u=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n<tk;for(let A of Object.keys(a)){if(A===\"__metadata\")continue;let p=a[A];if(typeof p.resolution>\"u\")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${A})`);let h=xf(p.resolution,!0),E=new Ot;E.load(p,{yamlCompatibilityMode:!0});let I=E.version,v=E.languageName||r,x=p.linkType.toUpperCase(),C=p.conditions??null,R=E.dependencies,N=E.peerDependencies,U=E.dependenciesMeta,J=E.peerDependenciesMeta,te=E.bin;if(p.checksum!=null){let fe=typeof u<\"u\"&&!p.checksum.includes(\"/\")?`${u}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,fe)}let ae={...h,version:I,languageName:v,linkType:x,conditions:C,dependencies:R,peerDependencies:N,dependenciesMeta:U,peerDependenciesMeta:J,bin:te};this.originalPackages.set(ae.locatorHash,ae);for(let fe of A.split(SAt)){let ce=ih(fe);n<=6&&(ce=this.configuration.normalizeDependency(ce),ce=In(ce,ce.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,\"$1npm%3A\"))),this.storedDescriptors.set(ce.descriptorHash,ce),this.storedResolutions.set(ce.descriptorHash,h.locatorHash)}}}else o.includes(\"yarn lockfile v1\")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,r=(0,ek.default)(4),o=async(a,n)=>{if(e.has(n))return a;e.add(n);let u=new cC(n,{project:this});await r(()=>u.setup());let A=a.then(()=>{this.addWorkspace(u)});return Array.from(u.workspacesCwds).reduce(o,A)};await o(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.anchoredLocator.identHash);if(typeof r<\"u\")throw new Error(`Duplicate workspace name ${cs(this.configuration,e.anchoredLocator)}: ${ue.fromPortablePath(e.cwd)} conflicts with ${ue.fromPortablePath(r.cwd)}`);this.workspaces.push(e),this.workspacesByCwd.set(e.cwd,e),this.workspacesByIdent.set(e.anchoredLocator.identHash,e)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){V.isAbsolute(e)||(e=V.resolve(this.cwd,e)),e=V.normalize(e).replace(/\\/+$/,\"\");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let o of this.workspaces)V.relative(o.cwd,e).startsWith(\"../\")||r&&r.cwd.length>=o.cwd.length||(r=o);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>\"u\"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${cs(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(Xn.protocol)){let o=e.range.slice(Xn.protocol.length);if(o!==\"^\"&&o!==\"~\"&&o!==\"*\"&&!xa(o))return this.tryWorkspaceByCwd(o)}let r=this.tryWorkspaceByIdent(e);return r===null||(bf(e)&&(e=t1(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${qn(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Hc(e)&&(e=r1(e)),r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${jr(this.configuration,e)})`);return r}deleteDescriptor(e){this.storedResolutions.delete(e),this.storedDescriptors.delete(e)}deleteLocator(e){this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)}forgetResolution(e){if(\"descriptorHash\"in e){let r=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let o=new Set(this.storedResolutions.values());typeof r<\"u\"&&!o.has(r)&&this.deleteLocator(r)}if(\"locatorHash\"in e){this.deleteLocator(e.locatorHash);for(let[r,o]of this.storedResolutions)o===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[o,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(o)}for(let o of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(o,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(o.locatorHash);let n=r.get(o.locatorHash);if(n){r.delete(o.locatorHash);for(let u of n)this.deleteDescriptor(u)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,o]of e.dependencies)bf(o)&&e.dependencies.set(r,t1(o))}getDependencyMeta(e,r){let o={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(fn(e));if(!n)return o;let u=n.get(null);if(u&&Object.assign(o,u),r===null||!zpe.default.valid(r))return o;for(let[A,p]of n)A!==null&&A===r&&Object.assign(o,p);return o}async findLocatorForLocation(e,{strict:r=!1}={}){let o=new Qi,a=this.configuration.getLinkers(),n={project:this,report:o};for(let u of a){let A=await u.findPackageLocator(e,n);if(A){if(r&&(await u.findPackageLocation(A,n)).replace(Vpe,\"\")!==e.replace(Vpe,\"\"))continue;return A}}return null}async loadUserConfig(){let e=V.join(this.cwd,\".pnp.cjs\");await oe.existsPromise(e)&&Df(e).setup();let r=V.join(this.cwd,\"yarn.config.cjs\");return await oe.existsPromise(r)?Df(r):null}async preparePackage(e,{resolver:r,resolveOptions:o}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(e,{packageExtensions:a});for(let[u,A]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,A,this,n,A,{resolver:r,resolveOptions:o});if(!n1(A,p))throw new Error(\"Assertion failed: The descriptor ident cannot be changed through aliases\");let h=r.bindDescriptor(p,n,o);n.dependencies.set(u,h)}return n}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error(\"Workspaces must have been setup before calling this function\");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),o=[];e.lockfileOnly||this.forgetTransientResolutions();let a=e.resolver||this.configuration.makeResolver(),n=new oC(a);await n.setup(this,{report:e.report});let u=e.lockfileOnly?[new Xx(a)]:[n,a],A=new Dd([new aC(a),...u]),p=new Dd([...u]),h=this.configuration.makeFetcher(),E=e.lockfileOnly?{project:this,report:e.report,resolver:A}:{project:this,report:e.report,resolver:A,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},I=new Map,v=new Map,x=new Map,C=new Map,R=new Map,N=new Map,U=this.topLevelWorkspace.anchoredLocator,J=new Set,te=[],ae=M4(),fe=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Xs.progressViaTitle(),async le=>{let ne=async H=>{let at=await Ky(async()=>await A.resolve(H,E),He=>`${jr(this.configuration,H)}: ${He}`);if(!i1(H,at))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${jr(this.configuration,H)} to ${jr(this.configuration,at)})`);C.set(at.locatorHash,at),!r.delete(at.locatorHash)&&!this.tryWorkspaceByLocator(at)&&o.push(at);let ke=await this.preparePackage(at,{resolver:A,resolveOptions:E}),xe=Uc([...ke.dependencies.values()].map(He=>At(He)));return te.push(xe),xe.catch(()=>{}),v.set(ke.locatorHash,ke),ke},ee=async H=>{let at=R.get(H.locatorHash);if(typeof at<\"u\")return at;let Re=Promise.resolve().then(()=>ne(H));return R.set(H.locatorHash,Re),Re},Ie=async(H,at)=>{let Re=await At(at);return I.set(H.descriptorHash,H),x.set(H.descriptorHash,Re.locatorHash),Re},Fe=async H=>{le.setTitle(qn(this.configuration,H));let at=this.resolutionAliases.get(H.descriptorHash);if(typeof at<\"u\")return Ie(H,this.storedDescriptors.get(at));let Re=A.getResolutionDependencies(H,E),ke=Object.fromEntries(await Uc(Object.entries(Re).map(async([Te,Je])=>{let je=A.bindDescriptor(Je,U,E),b=await At(je);return J.add(b.locatorHash),[Te,b]}))),He=(await Ky(async()=>await A.getCandidates(H,ke,E),Te=>`${qn(this.configuration,H)}: ${Te}`))[0];if(typeof He>\"u\")throw new zt(82,`${qn(this.configuration,H)}: No candidates found`);if(e.checkResolutions){let{locators:Te}=await p.getSatisfying(H,ke,[He],{...E,resolver:p});if(!Te.find(Je=>Je.locatorHash===He.locatorHash))throw new zt(78,`Invalid resolution ${ZI(this.configuration,H,He)}`)}return I.set(H.descriptorHash,H),x.set(H.descriptorHash,He.locatorHash),ee(He)},At=H=>{let at=N.get(H.descriptorHash);if(typeof at<\"u\")return at;I.set(H.descriptorHash,H);let Re=Promise.resolve().then(()=>Fe(H));return N.set(H.descriptorHash,Re),Re};for(let H of this.workspaces){let at=H.anchoredDescriptor;te.push(At(at))}for(;te.length>0;){let H=[...te];te.length=0,await Uc(H)}});let ce=sl(r.values(),le=>this.tryWorkspaceByLocator(le)?sl.skip:le);if(o.length>0||ce.length>0){let le=new Set(this.workspaces.flatMap(H=>{let at=v.get(H.anchoredLocator.locatorHash);if(!at)throw new Error(\"Assertion failed: The workspace should have been resolved\");return Array.from(at.dependencies.values(),Re=>{let ke=x.get(Re.descriptorHash);if(!ke)throw new Error(\"Assertion failed: The resolution should have been registered\");return ke})})),ne=H=>le.has(H.locatorHash)?\"0\":\"1\",ee=H=>ba(H),Ie=ks(o,[ne,ee]),Fe=ks(ce,[ne,ee]),At=e.report.getRecommendedLength();Ie.length>0&&e.report.reportInfo(85,`${Ut(this.configuration,\"+\",yt.ADDED)} ${lS(this.configuration,Ie,At)}`),Fe.length>0&&e.report.reportInfo(85,`${Ut(this.configuration,\"-\",yt.REMOVED)} ${lS(this.configuration,Fe,At)}`)}let me=new Set(this.resolutionAliases.values()),he=new Set(v.keys()),Be=new Set,we=new Map,g=[];QAt({project:this,accessibleLocators:Be,volatileDescriptors:me,optionalBuilds:he,peerRequirements:we,peerWarnings:g,allDescriptors:I,allResolutions:x,allPackages:v});for(let le of J)he.delete(le);for(let le of me)I.delete(le),x.delete(le);let Ee=new Set,Pe=new Set;for(let le of v.values())le.conditions!=null&&(!he.has(le.locatorHash)||(jS(le,fe)||(jS(le,ae)&&e.report.reportWarningOnce(77,`${jr(this.configuration,le)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ut(this.configuration,\"supportedArchitectures\",yt.SETTING)} setting`),Pe.add(le.locatorHash)),Ee.add(le.locatorHash)));this.storedResolutions=x,this.storedDescriptors=I,this.storedPackages=v,this.accessibleLocators=Be,this.conditionalLocators=Ee,this.disabledLocators=Pe,this.originalPackages=C,this.optionalBuilds=he,this.peerRequirements=we,this.peerWarnings=g}async fetchEverything({cache:e,report:r,fetcher:o,mode:a,persistProject:n=!0}){let u={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},A=o||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:e,fetcher:A,report:r,cacheOptions:u},h=Array.from(new Set(ks(this.storedResolutions.values(),[C=>{let R=this.storedPackages.get(C);if(!R)throw new Error(\"Assertion failed: The locator should have been registered\");return ba(R)}])));a===\"update-lockfile\"&&(h=h.filter(C=>!this.storedChecksums.has(C)));let E=!1,I=Xs.progressViaCounter(h.length);await r.reportProgress(I);let v=(0,ek.default)(bAt);if(await Uc(h.map(C=>v(async()=>{let R=this.storedPackages.get(C);if(!R)throw new Error(\"Assertion failed: The locator should have been registered\");if(Hc(R))return;let N;try{N=await A.fetch(R,p)}catch(U){U.message=`${jr(this.configuration,R)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}N.checksum!=null?this.storedChecksums.set(R.locatorHash,N.checksum):this.storedChecksums.delete(R.locatorHash),N.releaseFs&&N.releaseFs()}).finally(()=>{I.tick()}))),E)throw E;let x=n&&a!==\"update-lockfile\"?await this.cacheCleanup({cache:e,report:r}):null;if(r.cacheMisses.size>0||x){let R=(await Promise.all([...r.cacheMisses].map(async ce=>{let me=this.storedPackages.get(ce),he=this.storedChecksums.get(ce)??null,Be=e.getLocatorPath(me,he);return(await oe.statPromise(Be)).size}))).reduce((ce,me)=>ce+me,0)-(x?.size??0),N=r.cacheMisses.size,U=x?.count??0,J=`${rS(N,{zero:\"No new packages\",one:\"A package was\",more:`${Ut(this.configuration,N,yt.NUMBER)} packages were`})} added to the project`,te=`${rS(U,{zero:\"none were\",one:\"one was\",more:`${Ut(this.configuration,U,yt.NUMBER)} were`})} removed`,ae=R!==0?` (${Ut(this.configuration,R,yt.SIZE_DIFF)})`:\"\",fe=U>0?N>0?`${J}, and ${te}${ae}.`:`${J}, but ${te}${ae}.`:`${J}${ae}.`;r.reportInfo(13,fe)}}async linkEverything({cache:e,report:r,fetcher:o,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},u=o||this.configuration.makeFetcher(),A={checksums:this.storedChecksums,project:this,cache:e,fetcher:u,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(le=>{let ne=le.makeInstaller(h),ee=le.getCustomDataKey(),Ie=this.linkersCustomData.get(ee);return typeof Ie<\"u\"&&ne.attachCustomData(Ie),[le,ne]})),I=new Map,v=new Map,x=new Map,C=new Map(await Uc([...this.accessibleLocators].map(async le=>{let ne=this.storedPackages.get(le);if(!ne)throw new Error(\"Assertion failed: The locator should have been registered\");return[le,await u.fetch(ne,A)]}))),R=[],N=new Set,U=[];for(let le of this.accessibleLocators){let ne=this.storedPackages.get(le);if(typeof ne>\"u\")throw new Error(\"Assertion failed: The locator should have been registered\");let ee=C.get(ne.locatorHash);if(typeof ee>\"u\")throw new Error(\"Assertion failed: The fetch result should have been registered\");let Ie=[],Fe=H=>{Ie.push(H)},At=this.tryWorkspaceByLocator(ne);if(At!==null){let H=[],{scripts:at}=At.manifest;for(let ke of[\"preinstall\",\"install\",\"postinstall\"])at.has(ke)&&H.push({type:0,script:ke});try{for(let[ke,xe]of E)if(ke.supportsPackage(ne,h)&&(await xe.installPackage(ne,ee,{holdFetchResult:Fe})).buildRequest!==null)throw new Error(\"Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core\")}finally{Ie.length===0?ee.releaseFs?.():R.push(Uc(Ie).catch(()=>{}).then(()=>{ee.releaseFs?.()}))}let Re=V.join(ee.packageFs.getRealPath(),ee.prefixPath);v.set(ne.locatorHash,Re),!Hc(ne)&&H.length>0&&x.set(ne.locatorHash,{buildDirectives:H,buildLocations:[Re]})}else{let H=p.find(ke=>ke.supportsPackage(ne,h));if(!H)throw new zt(12,`${jr(this.configuration,ne)} isn't supported by any available linker`);let at=E.get(H);if(!at)throw new Error(\"Assertion failed: The installer should have been registered\");let Re;try{Re=await at.installPackage(ne,ee,{holdFetchResult:Fe})}finally{Ie.length===0?ee.releaseFs?.():R.push(Uc(Ie).then(()=>{}).then(()=>{ee.releaseFs?.()}))}I.set(ne.locatorHash,H),v.set(ne.locatorHash,Re.packageLocation),Re.buildRequest&&Re.packageLocation&&(Re.buildRequest.skipped?(N.add(ne.locatorHash),this.skippedBuilds.has(ne.locatorHash)||U.push([ne,Re.buildRequest.explain])):x.set(ne.locatorHash,{buildDirectives:Re.buildRequest.directives,buildLocations:[Re.packageLocation]}))}}let J=new Map;for(let le of this.accessibleLocators){let ne=this.storedPackages.get(le);if(!ne)throw new Error(\"Assertion failed: The locator should have been registered\");let ee=this.tryWorkspaceByLocator(ne)!==null,Ie=async(Fe,At)=>{let H=v.get(ne.locatorHash);if(typeof H>\"u\")throw new Error(`Assertion failed: The package (${jr(this.configuration,ne)}) should have been registered`);let at=[];for(let Re of ne.dependencies.values()){let ke=this.storedResolutions.get(Re.descriptorHash);if(typeof ke>\"u\")throw new Error(`Assertion failed: The resolution (${qn(this.configuration,Re)}, from ${jr(this.configuration,ne)})should have been registered`);let xe=this.storedPackages.get(ke);if(typeof xe>\"u\")throw new Error(`Assertion failed: The package (${ke}, resolved from ${qn(this.configuration,Re)}) should have been registered`);let He=this.tryWorkspaceByLocator(xe)===null?I.get(ke):null;if(typeof He>\"u\")throw new Error(`Assertion failed: The package (${ke}, resolved from ${qn(this.configuration,Re)}) should have been registered`);He===Fe||He===null?v.get(xe.locatorHash)!==null&&at.push([Re,xe]):!ee&&H!==null&&Yy(J,ke).push(H)}H!==null&&await At.attachInternalDependencies(ne,at)};if(ee)for(let[Fe,At]of E)Fe.supportsPackage(ne,h)&&await Ie(Fe,At);else{let Fe=I.get(ne.locatorHash);if(!Fe)throw new Error(\"Assertion failed: The linker should have been found\");let At=E.get(Fe);if(!At)throw new Error(\"Assertion failed: The installer should have been registered\");await Ie(Fe,At)}}for(let[le,ne]of J){let ee=this.storedPackages.get(le);if(!ee)throw new Error(\"Assertion failed: The package should have been registered\");let Ie=I.get(ee.locatorHash);if(!Ie)throw new Error(\"Assertion failed: The linker should have been found\");let Fe=E.get(Ie);if(!Fe)throw new Error(\"Assertion failed: The installer should have been registered\");await Fe.attachExternalDependents(ee,ne)}let te=new Map;for(let[le,ne]of E){let ee=await ne.finalizeInstall();for(let Ie of ee?.records??[])Ie.buildRequest.skipped?(N.add(Ie.locator.locatorHash),this.skippedBuilds.has(Ie.locator.locatorHash)||U.push([Ie.locator,Ie.buildRequest.explain])):x.set(Ie.locator.locatorHash,{buildDirectives:Ie.buildRequest.directives,buildLocations:Ie.buildLocations});typeof ee?.customData<\"u\"&&te.set(le.getCustomDataKey(),ee.customData)}if(this.linkersCustomData=te,await Uc(R),a===\"skip-build\")return;for(let[,le]of ks(U,([ne])=>ba(ne)))le(r);let ae=new Set(this.storedPackages.keys()),fe=new Set(x.keys());for(let le of fe)ae.delete(le);let ce=(0,Zx.createHash)(\"sha512\");ce.update(process.versions.node),await this.configuration.triggerHook(le=>le.globalHashGeneration,this,le=>{ce.update(\"\\0\"),ce.update(le)});let me=ce.digest(\"hex\"),he=new Map,Be=le=>{let ne=he.get(le.locatorHash);if(typeof ne<\"u\")return ne;let ee=this.storedPackages.get(le.locatorHash);if(typeof ee>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let Ie=(0,Zx.createHash)(\"sha512\");Ie.update(le.locatorHash),he.set(le.locatorHash,\"<recursive>\");for(let Fe of ee.dependencies.values()){let At=this.storedResolutions.get(Fe.descriptorHash);if(typeof At>\"u\")throw new Error(`Assertion failed: The resolution (${qn(this.configuration,Fe)}) should have been registered`);let H=this.storedPackages.get(At);if(typeof H>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");Ie.update(Be(H))}return ne=Ie.digest(\"hex\"),he.set(le.locatorHash,ne),ne},we=(le,ne)=>{let ee=(0,Zx.createHash)(\"sha512\");ee.update(me),ee.update(Be(le));for(let Ie of ne)ee.update(Ie);return ee.digest(\"hex\")},g=new Map,Ee=!1,Pe=le=>{let ne=new Set([le.locatorHash]);for(let ee of ne){let Ie=this.storedPackages.get(ee);if(!Ie)throw new Error(\"Assertion failed: The package should have been registered\");for(let Fe of Ie.dependencies.values()){let At=this.storedResolutions.get(Fe.descriptorHash);if(!At)throw new Error(`Assertion failed: The resolution (${qn(this.configuration,Fe)}) should have been registered`);if(At!==le.locatorHash&&fe.has(At))return!1;let H=this.storedPackages.get(At);if(!H)throw new Error(\"Assertion failed: The package should have been registered\");let at=this.tryWorkspaceByLocator(H);if(at){if(at.anchoredLocator.locatorHash!==le.locatorHash&&fe.has(at.anchoredLocator.locatorHash))return!1;ne.add(at.anchoredLocator.locatorHash)}ne.add(At)}}return!0};for(;fe.size>0;){let le=fe.size,ne=[];for(let ee of fe){let Ie=this.storedPackages.get(ee);if(!Ie)throw new Error(\"Assertion failed: The package should have been registered\");if(!Pe(Ie))continue;let Fe=x.get(Ie.locatorHash);if(!Fe)throw new Error(\"Assertion failed: The build directive should have been registered\");let At=we(Ie,Fe.buildLocations);if(this.storedBuildState.get(Ie.locatorHash)===At){g.set(Ie.locatorHash,At),fe.delete(ee);continue}Ee||(await this.persistInstallStateFile(),Ee=!0),this.storedBuildState.has(Ie.locatorHash)?r.reportInfo(8,`${jr(this.configuration,Ie)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${jr(this.configuration,Ie)} must be built because it never has been before or the last one failed`);let H=Fe.buildLocations.map(async at=>{if(!V.isAbsolute(at))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${at})`);for(let Re of Fe.buildDirectives){let ke=`# This file contains the result of Yarn building a package (${ba(Ie)})\n`;switch(Re.type){case 0:ke+=`# Script name: ${Re.script}\n`;break;case 1:ke+=`# Script code: ${Re.script}\n`;break}let xe=null;if(!await oe.mktempPromise(async Te=>{let Je=V.join(Te,\"build.log\"),{stdout:je,stderr:b}=this.configuration.getSubprocessStreams(Je,{header:ke,prefix:jr(this.configuration,Ie),report:r}),w;try{switch(Re.type){case 0:w=await Wb(Ie,Re.script,[],{cwd:at,project:this,stdin:xe,stdout:je,stderr:b});break;case 1:w=await EU(Ie,Re.script,[],{cwd:at,project:this,stdin:xe,stdout:je,stderr:b});break}}catch(F){b.write(F.stack),w=1}if(je.end(),b.end(),w===0)return!0;oe.detachTemp(Te);let S=`${jr(this.configuration,Ie)} couldn't be built successfully (exit code ${Ut(this.configuration,w,yt.NUMBER)}, logs can be found here: ${Ut(this.configuration,Je,yt.PATH)})`,y=this.optionalBuilds.has(Ie.locatorHash);return y?r.reportInfo(9,S):r.reportError(9,S),Vce&&r.reportFold(ue.fromPortablePath(Je),oe.readFileSync(Je,\"utf8\")),y}))return!1}return!0});ne.push(...H,Promise.allSettled(H).then(at=>{fe.delete(ee),at.every(Re=>Re.status===\"fulfilled\"&&Re.value===!0)&&g.set(Ie.locatorHash,At)}))}if(await Uc(ne),le===fe.size){let ee=Array.from(fe).map(Ie=>{let Fe=this.storedPackages.get(Ie);if(!Fe)throw new Error(\"Assertion failed: The package should have been registered\");return jr(this.configuration,Fe)}).join(\", \");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${ee})`);break}}this.storedBuildState=g,this.skippedBuilds=N}async installWithNewReport(e,r){return(await Lt.start({configuration:this.configuration,json:e.json,stdout:e.stdout,forceSectionAlignment:!0,includeLogs:!e.json&&!e.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(e){let r=this.configuration.get(\"nodeLinker\");Ke.telemetry?.reportInstall(r);let o=!1;if(await e.report.startTimerPromise(\"Project validation\",{skipIfEmpty:!0},async()=>{this.configuration.get(\"enableOfflineMode\")&&e.report.reportWarning(90,\"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it\"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,I)=>{e.report.reportWarning(E,I)},reportError:(E,I)=>{e.report.reportError(E,I),o=!0}})}),o)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,I]of E)for(let v of I)v.status=\"inactive\";let n=V.join(this.cwd,dr.lockfile),u=null;if(e.immutable)try{u=await oe.readFilePromise(n,\"utf8\")}catch(E){throw E.code===\"ENOENT\"?new zt(28,\"The lockfile would have been created by this install, which is explicitly forbidden.\"):E}await e.report.startTimerPromise(\"Resolution step\",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise(\"Post-resolution validation\",{skipIfEmpty:!0},async()=>{FAt(this,e.report);for(let[,E]of a)for(let[,I]of E)for(let v of I)if(v.userProvided){let x=Ut(this.configuration,v,yt.PACKAGE_EXTENSION);switch(v.status){case\"inactive\":e.report.reportWarning(68,`${x}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case\"redundant\":e.report.reportWarning(69,`${x}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(u!==null){let E=_g(u,this.generateLockfile());if(E!==u){let I=fpe(n,n,u,E,void 0,void 0,{maxEditLength:100});if(I){e.report.reportSeparator();for(let v of I.hunks){e.report.reportInfo(null,`@@ -${v.oldStart},${v.oldLines} +${v.newStart},${v.newLines} @@`);for(let x of v.lines)x.startsWith(\"+\")?e.report.reportError(28,Ut(this.configuration,x,yt.ADDED)):x.startsWith(\"-\")?e.report.reportError(28,Ut(this.configuration,x,yt.REMOVED)):e.report.reportInfo(null,Ut(this.configuration,x,\"grey\"))}e.report.reportSeparator()}throw new zt(28,\"The lockfile would have been modified by this install, which is explicitly forbidden.\")}}});for(let E of a.values())for(let[,I]of E)for(let v of I)v.userProvided&&v.status===\"active\"&&Ke.telemetry?.reportPackageExtension(Ed(v,yt.PACKAGE_EXTENSION));await e.report.startTimerPromise(\"Fetch step\",async()=>{await this.fetchEverything(e)});let A=e.immutable?[...new Set(this.configuration.get(\"immutablePatterns\"))].sort():[],p=await Promise.all(A.map(async E=>NS(E,{cwd:this.cwd})));(typeof e.persistProject>\"u\"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise(\"Link step\",async()=>{if(e.mode===\"update-lockfile\"){e.report.reportWarning(73,`Skipped due to ${Ut(this.configuration,\"mode=update-lockfile\",yt.CODE)}`);return}await this.linkEverything(e);let E=await Promise.all(A.map(async I=>NS(I,{cwd:this.cwd})));for(let I=0;I<A.length;++I)p[I]!==E[I]&&e.report.reportError(64,`The checksum for ${A[I]} has been modified by this install, which is explicitly forbidden.`)}),await this.persistInstallStateFile();let h=!1;await e.report.startTimerPromise(\"Post-install validation\",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,I)=>{e.report.reportWarning(E,I)},reportError:(E,I)=>{e.report.reportError(E,I),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,u]of this.storedResolutions.entries()){let A=e.get(u);A||e.set(u,A=new Set),A.add(n)}let r={},{cacheKey:o}=Nr.getCacheKey(this.configuration);r.__metadata={version:tk,cacheKey:o};for(let[n,u]of e.entries()){let A=this.originalPackages.get(n);if(!A)continue;let p=[];for(let I of u){let v=this.storedDescriptors.get(I);if(!v)throw new Error(\"Assertion failed: The descriptor should have been registered\");p.push(v)}let h=p.map(I=>Sa(I)).sort().join(\", \"),E=new Ot;E.version=A.linkType===\"HARD\"?A.version:\"0.0.0-use.local\",E.languageName=A.languageName,E.dependencies=new Map(A.dependencies),E.peerDependencies=new Map(A.peerDependencies),E.dependenciesMeta=new Map(A.dependenciesMeta),E.peerDependenciesMeta=new Map(A.peerDependenciesMeta),E.bin=new Map(A.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:A.linkType.toLowerCase(),resolution:ba(A),checksum:this.storedChecksums.get(A.locatorHash),conditions:A.conditions||void 0}}return`${[`# This file is generated by running \"yarn install\" inside your project.\n`,`# Manual changes might be lost - proceed with caution!\n`].join(\"\")}\n`+Ba(r)}async persistLockfile(){let e=V.join(this.cwd,dr.lockfile),r=\"\";try{r=await oe.readFilePromise(e,\"utf8\")}catch{}let o=this.generateLockfile(),a=_g(r,o);a!==r&&(await oe.writeFilePromise(e,a),this.lockFileChecksum=Jpe(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let u of Object.values(b_))e.push(...u);let r=(0,$x.default)(this,e),o=x_.default.serialize(r),a=zs(o);if(this.installStateChecksum===a)return;let n=this.configuration.get(\"installStatePath\");await oe.mkdirPromise(V.dirname(n),{recursive:!0}),await oe.writeFilePromise(n,await xAt(o)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:o=!0}={}){let a=this.configuration.get(\"installStatePath\"),n;try{let u=await kAt(await oe.readFilePromise(a));n=x_.default.deserialize(u),this.installStateChecksum=zs(u)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<\"u\"&&(this.linkersCustomData=n.linkersCustomData),o&&Object.assign(this,(0,$x.default)(n,b_.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,(0,$x.default)(n,b_.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new Qi}),await this.persistInstallStateFile()}async persist(){let e=(0,ek.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>e(()=>r.persistManifest()))])}async cacheCleanup({cache:e,report:r}){if(this.configuration.get(\"enableGlobalCache\"))return null;let o=new Set([\".gitignore\"]);if(!CM(e.cwd,this.cwd)||!await oe.existsPromise(e.cwd))return null;let a=[];for(let u of await oe.readdirPromise(e.cwd)){if(o.has(u))continue;let A=V.resolve(e.cwd,u);e.markedFiles.has(A)||(e.immutable?r.reportError(56,`${Ut(this.configuration,V.basename(A),\"magenta\")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(oe.lstatPromise(A).then(async p=>(await oe.removePromise(A),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((u,A)=>u+A,0)}}}});function RAt(t){let o=Math.floor(t.timeNow/864e5),a=t.updateInterval*864e5,n=t.state.lastUpdate??t.timeNow+a+Math.floor(a*t.randomInitialInterval),u=n+a,A=t.state.lastTips??o*864e5,p=A+864e5+8*36e5-t.timeZone,h=u<=t.timeNow,E=p<=t.timeNow,I=null;return(h||E||!t.state.lastUpdate||!t.state.lastTips)&&(I={},I.lastUpdate=h?t.timeNow:n,I.lastTips=A,I.blocks=h?{}:t.state.blocks,I.displayedTips=t.state.displayedTips),{nextState:I,triggerUpdate:h,triggerTips:E,nextTips:E?o*864e5:A}}var uC,Zpe=Et(()=>{Pt();N1();nh();Ib();jl();Qf();uC=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=e;let o=this.getRegistryPath();this.isNew=!oe.existsSync(o),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(e){let r=new Set(this.displayedTips),o=A=>A&&rn?kf(rn,A):!1,a=e.map((A,p)=>p).filter(A=>e[A]&&o(e[A]?.selector));if(a.length===0)return null;let n=a.filter(A=>!r.has(A));if(n.length===0){let A=Math.floor(a.length*.2);this.displayedTips=A>0?this.displayedTips.slice(-A):[],n=a.filter(p=>!r.has(p))}let u=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(u),this.commitTips(),e[u]}reportVersion(e){this.reportValue(\"version\",e.replace(/-git\\..*/,\"-git\"))}reportCommandName(e){this.reportValue(\"commandName\",e||\"<none>\")}reportPluginName(e){this.reportValue(\"pluginName\",e)}reportProject(e){this.reportEnumerator(\"projectCount\",e)}reportInstall(e){this.reportHit(\"installCount\",e)}reportPackageExtension(e){this.reportValue(\"packageExtension\",e)}reportWorkspaceCount(e){this.reportValue(\"workspaceCount\",String(e))}reportDependencyCount(e){this.reportValue(\"dependencyCount\",String(e))}reportValue(e,r){md(this.values,e).add(r)}reportEnumerator(e,r){md(this.enumerators,e).add(zs(r))}reportHit(e,r=\"*\"){let o=Wy(this.hits,e),a=ol(o,r,()=>0);o.set(r,a+1)}getRegistryPath(){let e=this.configuration.get(\"globalFolder\");return V.join(e,\"telemetry.json\")}sendReport(e){let r=this.getRegistryPath(),o;try{o=oe.readJsonSync(r)}catch{o={}}let{nextState:a,triggerUpdate:n,triggerTips:u,nextTips:A}=RAt({state:o,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get(\"telemetryInterval\")});if(this.nextTips=A,this.displayedTips=o.displayedTips??[],a!==null)try{oe.mkdirSync(V.dirname(r),{recursive:!0}),oe.writeJsonSync(r,a)}catch{return!1}if(u&&this.configuration.get(\"enableTips\")&&(this.shouldShowTips=!0),n){let p=o.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,E=I=>O4(h,I,{configuration:this.configuration}).catch(()=>{});for(let[I,v]of Object.entries(o.blocks??{})){if(Object.keys(v).length===0)continue;let x=v;x.userId=I,x.reportType=\"primary\";for(let N of Object.keys(x.enumerators??{}))x.enumerators[N]=x.enumerators[N].length;E(x);let C=new Map,R=20;for(let[N,U]of Object.entries(x.values))U.length>0&&C.set(N,U.slice(0,R));for(;C.size>0;){let N={};N.userId=I,N.reportType=\"secondary\",N.metrics={};for(let[U,J]of C)N.metrics[U]=J.shift(),J.length===0&&C.delete(U);E(N)}}}}return!0}applyChanges(){let e=this.getRegistryPath(),r;try{r=oe.readJsonSync(e)}catch{r={}}let o=this.configuration.get(\"telemetryUserId\")??\"*\",a=r.blocks=r.blocks??{},n=a[o]=a[o]??{};for(let u of this.hits.keys()){let A=n.hits=n.hits??{},p=A[u]=A[u]??{};for(let[h,E]of this.hits.get(u))p[h]=(p[h]??0)+E}for(let u of[\"values\",\"enumerators\"])for(let A of this[u].keys()){let p=n[u]=n[u]??{};p[A]=[...new Set([...p[A]??[],...this[u].get(A)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),oe.mkdirSync(V.dirname(e),{recursive:!0}),oe.writeJsonSync(e,r)}startBuffer(){process.on(\"exit\",()=>{try{this.applyChanges()}catch{}})}}});var o2={};Vt(o2,{BuildDirectiveType:()=>Vx,CACHE_CHECKPOINT:()=>c_,CACHE_VERSION:()=>Kx,Cache:()=>Nr,Configuration:()=>Ke,DEFAULT_RC_FILENAME:()=>G4,FormatType:()=>kle,InstallMode:()=>pl,LEGACY_PLUGINS:()=>v1,LOCKFILE_VERSION:()=>tk,LegacyMigrationResolver:()=>oC,LightReport:()=>AA,LinkType:()=>zy,LockfileResolver:()=>aC,Manifest:()=>Ot,MessageName:()=>wr,MultiFetcher:()=>hE,PackageExtensionStatus:()=>vN,PackageExtensionType:()=>BN,PeerWarningType:()=>rk,Project:()=>St,Report:()=>Xs,ReportError:()=>zt,SettingsType:()=>D1,StreamReport:()=>Lt,TAG_REGEXP:()=>FE,TelemetryManager:()=>uC,ThrowReport:()=>Qi,VirtualFetcher:()=>gE,WindowsLinkType:()=>xb,Workspace:()=>cC,WorkspaceFetcher:()=>mE,WorkspaceResolver:()=>Xn,YarnVersion:()=>rn,execUtils:()=>Ur,folderUtils:()=>YS,formatUtils:()=>de,hashUtils:()=>wn,httpUtils:()=>nn,miscUtils:()=>_e,nodeUtils:()=>Ji,parseMessageName:()=>AP,reportOptionDeprecations:()=>NE,scriptUtils:()=>un,semverUtils:()=>kr,stringifyMessageName:()=>Wu,structUtils:()=>W,tgzUtils:()=>Xi,treeUtils:()=>$s});var Ye=Et(()=>{Db();WS();ql();nh();Ib();jl();vb();BU();Qf();bo();Zfe();spe();u_();P1();P1();ape();A_();lpe();f_();fE();fP();cM();Xpe();Yl();O1();Zpe();P_();AM();fM();vd();S_();N1();Cne()});var ihe=_((V_t,l2)=>{\"use strict\";var LAt=process.env.TERM_PROGRAM===\"Hyper\",NAt=process.platform===\"win32\",the=process.platform===\"linux\",F_={ballotDisabled:\"\\u2612\",ballotOff:\"\\u2610\",ballotOn:\"\\u2611\",bullet:\"\\u2022\",bulletWhite:\"\\u25E6\",fullBlock:\"\\u2588\",heart:\"\\u2764\",identicalTo:\"\\u2261\",line:\"\\u2500\",mark:\"\\u203B\",middot:\"\\xB7\",minus:\"\\uFF0D\",multiplication:\"\\xD7\",obelus:\"\\xF7\",pencilDownRight:\"\\u270E\",pencilRight:\"\\u270F\",pencilUpRight:\"\\u2710\",percent:\"%\",pilcrow2:\"\\u2761\",pilcrow:\"\\xB6\",plusMinus:\"\\xB1\",section:\"\\xA7\",starsOff:\"\\u2606\",starsOn:\"\\u2605\",upDownArrow:\"\\u2195\"},rhe=Object.assign({},F_,{check:\"\\u221A\",cross:\"\\xD7\",ellipsisLarge:\"...\",ellipsis:\"...\",info:\"i\",question:\"?\",questionSmall:\"?\",pointer:\">\",pointerSmall:\"\\xBB\",radioOff:\"( )\",radioOn:\"(*)\",warning:\"\\u203C\"}),nhe=Object.assign({},F_,{ballotCross:\"\\u2718\",check:\"\\u2714\",cross:\"\\u2716\",ellipsisLarge:\"\\u22EF\",ellipsis:\"\\u2026\",info:\"\\u2139\",question:\"?\",questionFull:\"\\uFF1F\",questionSmall:\"\\uFE56\",pointer:the?\"\\u25B8\":\"\\u276F\",pointerSmall:the?\"\\u2023\":\"\\u203A\",radioOff:\"\\u25EF\",radioOn:\"\\u25C9\",warning:\"\\u26A0\"});l2.exports=NAt&&!LAt?rhe:nhe;Reflect.defineProperty(l2.exports,\"common\",{enumerable:!1,value:F_});Reflect.defineProperty(l2.exports,\"windows\",{enumerable:!1,value:rhe});Reflect.defineProperty(l2.exports,\"other\",{enumerable:!1,value:nhe})});var Kc=_((J_t,R_)=>{\"use strict\";var OAt=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),MAt=/[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,she=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};\"FORCE_COLOR\"in process.env&&(t.enabled=process.env.FORCE_COLOR!==\"0\");let e=n=>{let u=n.open=`\\x1B[${n.codes[0]}m`,A=n.close=`\\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\\\u001b\\\\[${n.codes[1]}m`,\"g\");return n.wrap=(h,E)=>{h.includes(A)&&(h=h.replace(p,A+u));let I=u+h+A;return E?I.replace(/\\r*\\n/g,`${A}$&${u}`):I},n},r=(n,u,A)=>typeof n==\"function\"?n(u):n.wrap(u,A),o=(n,u)=>{if(n===\"\"||n==null)return\"\";if(t.enabled===!1)return n;if(t.visible===!1)return\"\";let A=\"\"+n,p=A.includes(`\n`),h=u.length;for(h>0&&u.includes(\"unstyle\")&&(u=[...new Set([\"unstyle\",...u])].reverse());h-- >0;)A=r(t.styles[u[h]],A,p);return A},a=(n,u,A)=>{t.styles[n]=e({name:n,codes:u}),(t.keys[A]||(t.keys[A]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=E=>o(E,h.stack);return Reflect.setPrototypeOf(h,t),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a(\"reset\",[0,0],\"modifier\"),a(\"bold\",[1,22],\"modifier\"),a(\"dim\",[2,22],\"modifier\"),a(\"italic\",[3,23],\"modifier\"),a(\"underline\",[4,24],\"modifier\"),a(\"inverse\",[7,27],\"modifier\"),a(\"hidden\",[8,28],\"modifier\"),a(\"strikethrough\",[9,29],\"modifier\"),a(\"black\",[30,39],\"color\"),a(\"red\",[31,39],\"color\"),a(\"green\",[32,39],\"color\"),a(\"yellow\",[33,39],\"color\"),a(\"blue\",[34,39],\"color\"),a(\"magenta\",[35,39],\"color\"),a(\"cyan\",[36,39],\"color\"),a(\"white\",[37,39],\"color\"),a(\"gray\",[90,39],\"color\"),a(\"grey\",[90,39],\"color\"),a(\"bgBlack\",[40,49],\"bg\"),a(\"bgRed\",[41,49],\"bg\"),a(\"bgGreen\",[42,49],\"bg\"),a(\"bgYellow\",[43,49],\"bg\"),a(\"bgBlue\",[44,49],\"bg\"),a(\"bgMagenta\",[45,49],\"bg\"),a(\"bgCyan\",[46,49],\"bg\"),a(\"bgWhite\",[47,49],\"bg\"),a(\"blackBright\",[90,39],\"bright\"),a(\"redBright\",[91,39],\"bright\"),a(\"greenBright\",[92,39],\"bright\"),a(\"yellowBright\",[93,39],\"bright\"),a(\"blueBright\",[94,39],\"bright\"),a(\"magentaBright\",[95,39],\"bright\"),a(\"cyanBright\",[96,39],\"bright\"),a(\"whiteBright\",[97,39],\"bright\"),a(\"bgBlackBright\",[100,49],\"bgBright\"),a(\"bgRedBright\",[101,49],\"bgBright\"),a(\"bgGreenBright\",[102,49],\"bgBright\"),a(\"bgYellowBright\",[103,49],\"bgBright\"),a(\"bgBlueBright\",[104,49],\"bgBright\"),a(\"bgMagentaBright\",[105,49],\"bgBright\"),a(\"bgCyanBright\",[106,49],\"bgBright\"),a(\"bgWhiteBright\",[107,49],\"bgBright\"),t.ansiRegex=MAt,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n==\"string\"&&n!==\"\"&&t.ansiRegex.test(n)),t.alias=(n,u)=>{let A=typeof u==\"string\"?t[u]:u;if(typeof A!=\"function\")throw new TypeError(\"Expected alias to be the name of an existing color (string) or a function\");A.stack||(Reflect.defineProperty(A,\"name\",{value:n}),t.styles[n]=A,A.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>o(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(A.stack):A.stack,p}})},t.theme=n=>{if(!OAt(n))throw new TypeError(\"Expected theme to be an object\");for(let u of Object.keys(n))t.alias(u,n[u]);return t},t.alias(\"unstyle\",n=>typeof n==\"string\"&&n!==\"\"?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,\"\")):\"\"),t.alias(\"noop\",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=ihe(),t.define=a,t};R_.exports=she();R_.exports.create=she});var Lo=_(sn=>{\"use strict\";var UAt=Object.prototype.toString,rc=Kc(),ohe=!1,T_=[],ahe={yellow:\"blue\",cyan:\"red\",green:\"magenta\",black:\"white\",blue:\"yellow\",red:\"cyan\",magenta:\"green\",white:\"black\"};sn.longest=(t,e)=>t.reduce((r,o)=>Math.max(r,e?o[e].length:o.length),0);sn.hasColor=t=>!!t&&rc.hasColor(t);var ik=sn.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);sn.nativeType=t=>UAt.call(t).slice(8,-1).toLowerCase().replace(/\\s/g,\"\");sn.isAsyncFn=t=>sn.nativeType(t)===\"asyncfunction\";sn.isPrimitive=t=>t!=null&&typeof t!=\"object\"&&typeof t!=\"function\";sn.resolve=(t,e,...r)=>typeof e==\"function\"?e.call(t,...r):e;sn.scrollDown=(t=[])=>[...t.slice(1),t[0]];sn.scrollUp=(t=[])=>[t.pop(),...t];sn.reorder=(t=[])=>{let e=t.slice();return e.sort((r,o)=>r.index>o.index?1:r.index<o.index?-1:0),e};sn.swap=(t,e,r)=>{let o=t.length,a=r===o?0:r<0?o-1:r,n=t[e];t[e]=t[a],t[a]=n};sn.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize==\"function\"&&(r=t.getWindowSize()[0]),process.platform===\"win32\"?r-1:r};sn.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize==\"function\"&&(r=t.getWindowSize()[1]),r};sn.wordWrap=(t,e={})=>{if(!t)return t;typeof e==\"number\"&&(e={width:e});let{indent:r=\"\",newline:o=`\n`+r,width:a=80}=e,n=(o+r).match(/[^\\S\\n]/g)||[];a-=n.length;let u=`.{1,${a}}([\\\\s\\\\u200B]+|$)|[^\\\\s\\\\u200B]+?([\\\\s\\\\u200B]+|$)`,A=t.trim(),p=new RegExp(u,\"g\"),h=A.match(p)||[];return h=h.map(E=>E.replace(/\\n$/,\"\")),e.padEnd&&(h=h.map(E=>E.padEnd(a,\" \"))),e.padStart&&(h=h.map(E=>E.padStart(a,\" \"))),r+h.join(o)};sn.unmute=t=>{let e=t.stack.find(o=>rc.keys.color.includes(o));return e?rc[e]:t.stack.find(o=>o.slice(2)===\"bg\")?rc[e.slice(2)]:o=>o};sn.pascal=t=>t?t[0].toUpperCase()+t.slice(1):\"\";sn.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>rc.keys.color.includes(o));if(e){let o=rc[\"bg\"+sn.pascal(e)];return o?o.black:t}let r=t.stack.find(o=>o.slice(0,2)===\"bg\");return r?rc[r.slice(2).toLowerCase()]||t:rc.none};sn.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>rc.keys.color.includes(o)),r=t.stack.find(o=>o.slice(0,2)===\"bg\");if(e&&!r)return rc[ahe[e]||e];if(r){let o=r.slice(2).toLowerCase(),a=ahe[o];return a&&rc[\"bg\"+sn.pascal(a)]||t}return rc.none};sn.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),o=e>=12?\"pm\":\"am\";e=e%12;let a=e===0?12:e,n=r<10?\"0\"+r:r;return a+\":\"+n+\" \"+o};sn.set=(t={},e=\"\",r)=>e.split(\".\").reduce((o,a,n,u)=>{let A=u.length-1>n?o[a]||{}:r;return!sn.isObject(A)&&n<u.length-1&&(A={}),o[a]=A},t);sn.get=(t={},e=\"\",r)=>{let o=t[e]==null?e.split(\".\").reduce((a,n)=>a&&a[n],t):t[e];return o??r};sn.mixin=(t,e)=>{if(!ik(t))return e;if(!ik(e))return t;for(let r of Object.keys(e)){let o=Object.getOwnPropertyDescriptor(e,r);if(o.hasOwnProperty(\"value\"))if(t.hasOwnProperty(r)&&ik(o.value)){let a=Object.getOwnPropertyDescriptor(t,r);ik(a.value)?t[r]=sn.merge({},t[r],e[r]):Reflect.defineProperty(t,r,o)}else Reflect.defineProperty(t,r,o);else Reflect.defineProperty(t,r,o)}return t};sn.merge=(...t)=>{let e={};for(let r of t)sn.mixin(e,r);return e};sn.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let o of Object.keys(r)){let a=r[o];typeof a==\"function\"?sn.define(t,o,a.bind(e)):sn.define(t,o,a)}};sn.onExit=t=>{let e=(r,o)=>{ohe||(ohe=!0,T_.forEach(a=>a()),r===!0&&process.exit(128+o))};T_.length===0&&(process.once(\"SIGTERM\",e.bind(null,!0,15)),process.once(\"SIGINT\",e.bind(null,!0,2)),process.once(\"exit\",e)),T_.push(t)};sn.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};sn.defineExport=(t,e,r)=>{let o;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){o=a},get(){return o?o():r()}})}});var lhe=_(hC=>{\"use strict\";hC.ctrl={a:\"first\",b:\"backward\",c:\"cancel\",d:\"deleteForward\",e:\"last\",f:\"forward\",g:\"reset\",i:\"tab\",k:\"cutForward\",l:\"reset\",n:\"newItem\",m:\"cancel\",j:\"submit\",p:\"search\",r:\"remove\",s:\"save\",u:\"undo\",w:\"cutLeft\",x:\"toggleCursor\",v:\"paste\"};hC.shift={up:\"shiftUp\",down:\"shiftDown\",left:\"shiftLeft\",right:\"shiftRight\",tab:\"prev\"};hC.fn={up:\"pageUp\",down:\"pageDown\",left:\"pageLeft\",right:\"pageRight\",delete:\"deleteForward\"};hC.option={b:\"backward\",f:\"forward\",d:\"cutRight\",left:\"cutLeft\",up:\"altUp\",down:\"altDown\"};hC.keys={pageup:\"pageUp\",pagedown:\"pageDown\",home:\"home\",end:\"end\",cancel:\"cancel\",delete:\"deleteForward\",backspace:\"delete\",down:\"down\",enter:\"submit\",escape:\"cancel\",left:\"left\",space:\"space\",number:\"number\",return:\"submit\",right:\"right\",tab:\"next\",up:\"up\"}});var Ahe=_((Z_t,uhe)=>{\"use strict\";var che=ve(\"readline\"),_At=lhe(),HAt=/^(?:\\x1b)([a-zA-Z0-9])$/,jAt=/^(?:\\x1b+)(O|N|\\[|\\[\\[)(?:(\\d+)(?:;(\\d+))?([~^$])|(?:1;)?(\\d+)?([a-zA-Z]))/,qAt={OP:\"f1\",OQ:\"f2\",OR:\"f3\",OS:\"f4\",\"[11~\":\"f1\",\"[12~\":\"f2\",\"[13~\":\"f3\",\"[14~\":\"f4\",\"[[A\":\"f1\",\"[[B\":\"f2\",\"[[C\":\"f3\",\"[[D\":\"f4\",\"[[E\":\"f5\",\"[15~\":\"f5\",\"[17~\":\"f6\",\"[18~\":\"f7\",\"[19~\":\"f8\",\"[20~\":\"f9\",\"[21~\":\"f10\",\"[23~\":\"f11\",\"[24~\":\"f12\",\"[A\":\"up\",\"[B\":\"down\",\"[C\":\"right\",\"[D\":\"left\",\"[E\":\"clear\",\"[F\":\"end\",\"[H\":\"home\",OA:\"up\",OB:\"down\",OC:\"right\",OD:\"left\",OE:\"clear\",OF:\"end\",OH:\"home\",\"[1~\":\"home\",\"[2~\":\"insert\",\"[3~\":\"delete\",\"[4~\":\"end\",\"[5~\":\"pageup\",\"[6~\":\"pagedown\",\"[[5~\":\"pageup\",\"[[6~\":\"pagedown\",\"[7~\":\"home\",\"[8~\":\"end\",\"[a\":\"up\",\"[b\":\"down\",\"[c\":\"right\",\"[d\":\"left\",\"[e\":\"clear\",\"[2$\":\"insert\",\"[3$\":\"delete\",\"[5$\":\"pageup\",\"[6$\":\"pagedown\",\"[7$\":\"home\",\"[8$\":\"end\",Oa:\"up\",Ob:\"down\",Oc:\"right\",Od:\"left\",Oe:\"clear\",\"[2^\":\"insert\",\"[3^\":\"delete\",\"[5^\":\"pageup\",\"[6^\":\"pagedown\",\"[7^\":\"home\",\"[8^\":\"end\",\"[Z\":\"tab\"};function GAt(t){return[\"[a\",\"[b\",\"[c\",\"[d\",\"[e\",\"[2$\",\"[3$\",\"[5$\",\"[6$\",\"[7$\",\"[8$\",\"[Z\"].includes(t)}function YAt(t){return[\"Oa\",\"Ob\",\"Oc\",\"Od\",\"Oe\",\"[2^\",\"[3^\",\"[5^\",\"[6^\",\"[7^\",\"[8^\"].includes(t)}var sk=(t=\"\",e={})=>{let r,o={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=\"\\x1B\"+String(t)):t=String(t):t!==void 0&&typeof t!=\"string\"?t=String(t):t||(t=o.sequence||\"\"),o.sequence=o.sequence||t||o.name,t===\"\\r\")o.raw=void 0,o.name=\"return\";else if(t===`\n`)o.name=\"enter\";else if(t===\"\t\")o.name=\"tab\";else if(t===\"\\b\"||t===\"\\x7F\"||t===\"\\x1B\\x7F\"||t===\"\\x1B\\b\")o.name=\"backspace\",o.meta=t.charAt(0)===\"\\x1B\";else if(t===\"\\x1B\"||t===\"\\x1B\\x1B\")o.name=\"escape\",o.meta=t.length===2;else if(t===\" \"||t===\"\\x1B \")o.name=\"space\",o.meta=t.length===2;else if(t<=\"\u001a\")o.name=String.fromCharCode(t.charCodeAt(0)+\"a\".charCodeAt(0)-1),o.ctrl=!0;else if(t.length===1&&t>=\"0\"&&t<=\"9\")o.name=\"number\";else if(t.length===1&&t>=\"a\"&&t<=\"z\")o.name=t;else if(t.length===1&&t>=\"A\"&&t<=\"Z\")o.name=t.toLowerCase(),o.shift=!0;else if(r=HAt.exec(t))o.meta=!0,o.shift=/^[A-Z]$/.test(r[1]);else if(r=jAt.exec(t)){let a=[...t];a[0]===\"\\x1B\"&&a[1]===\"\\x1B\"&&(o.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(\"\"),u=(r[3]||r[5]||1)-1;o.ctrl=!!(u&4),o.meta=!!(u&10),o.shift=!!(u&1),o.code=n,o.name=qAt[n],o.shift=GAt(n)||o.shift,o.ctrl=YAt(n)||o.ctrl}return o};sk.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error(\"Invalid stream passed\");let o=che.createInterface({terminal:!0,input:r});che.emitKeypressEvents(r,o);let a=(A,p)=>e(A,sk(A,p),o),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on(\"keypress\",a),o.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener(\"keypress\",a),o.pause(),o.close()}};sk.action=(t,e,r)=>{let o={..._At,...r};return e.ctrl?(e.action=o.ctrl[e.name],e):e.option&&o.option?(e.action=o.option[e.name],e):e.shift?(e.action=o.shift[e.name],e):(e.action=o.keys[e.name],e)};uhe.exports=sk});var phe=_(($_t,fhe)=>{\"use strict\";fhe.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let o=e[r];typeof o==\"number\"&&(o={interval:o}),WAt(t,r,o)}};function WAt(t,e,r={}){let o=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;o.frames=r.frames||[],o.loading=!0;let n=setInterval(()=>{o.ms=Date.now()-o.start,o.tick++,t.render()},a);return o.stop=()=>{o.loading=!1,clearInterval(n)},Reflect.defineProperty(o,\"interval\",{value:n}),t.once(\"close\",()=>o.stop()),o.stop}});var ghe=_((e8t,hhe)=>{\"use strict\";var{define:KAt,width:VAt}=Lo(),L_=class{constructor(e){let r=e.options;KAt(this,\"_prompt\",e),this.type=e.type,this.name=e.name,this.message=\"\",this.header=\"\",this.footer=\"\",this.error=\"\",this.hint=\"\",this.input=\"\",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt=\"\",this.buffer=\"\",this.width=VAt(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r==\"function\"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading==\"boolean\"?this._loading:this.loadingChoices?\"choices\":!1}get status(){return this.cancelled?\"cancelled\":this.submitted?\"submitted\":\"pending\"}};hhe.exports=L_});var mhe=_((t8t,dhe)=>{\"use strict\";var N_=Lo(),eo=Kc(),O_={default:eo.noop,noop:eo.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||N_.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||N_.complement(this.primary)},primary:eo.cyan,success:eo.green,danger:eo.magenta,strong:eo.bold,warning:eo.yellow,muted:eo.dim,disabled:eo.gray,dark:eo.dim.gray,underline:eo.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};O_.merge=(t={})=>{t.styles&&typeof t.styles.enabled==\"boolean\"&&(eo.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible==\"boolean\"&&(eo.visible=t.styles.visible);let e=N_.merge({},O_,t.styles);delete e.merge;for(let r of Object.keys(eo))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>eo[r]});for(let r of Object.keys(eo.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>eo[r]});return e};dhe.exports=O_});var Ehe=_((r8t,yhe)=>{\"use strict\";var M_=process.platform===\"win32\",Vf=Kc(),JAt=Lo(),U_={...Vf.symbols,upDownDoubleArrow:\"\\u21D5\",upDownDoubleArrow2:\"\\u2B0D\",upDownArrow:\"\\u2195\",asterisk:\"*\",asterism:\"\\u2042\",bulletWhite:\"\\u25E6\",electricArrow:\"\\u2301\",ellipsisLarge:\"\\u22EF\",ellipsisSmall:\"\\u2026\",fullBlock:\"\\u2588\",identicalTo:\"\\u2261\",indicator:Vf.symbols.check,leftAngle:\"\\u2039\",mark:\"\\u203B\",minus:\"\\u2212\",multiplication:\"\\xD7\",obelus:\"\\xF7\",percent:\"%\",pilcrow:\"\\xB6\",pilcrow2:\"\\u2761\",pencilUpRight:\"\\u2710\",pencilDownRight:\"\\u270E\",pencilRight:\"\\u270F\",plus:\"+\",plusMinus:\"\\xB1\",pointRight:\"\\u261E\",rightAngle:\"\\u203A\",section:\"\\xA7\",hexagon:{off:\"\\u2B21\",on:\"\\u2B22\",disabled:\"\\u2B22\"},ballot:{on:\"\\u2611\",off:\"\\u2610\",disabled:\"\\u2612\"},stars:{on:\"\\u2605\",off:\"\\u2606\",disabled:\"\\u2606\"},folder:{on:\"\\u25BC\",off:\"\\u25B6\",disabled:\"\\u25B6\"},prefix:{pending:Vf.symbols.question,submitted:Vf.symbols.check,cancelled:Vf.symbols.cross},separator:{pending:Vf.symbols.pointerSmall,submitted:Vf.symbols.middot,cancelled:Vf.symbols.middot},radio:{off:M_?\"( )\":\"\\u25EF\",on:M_?\"(*)\":\"\\u25C9\",disabled:M_?\"(|)\":\"\\u24BE\"},numbers:[\"\\u24EA\",\"\\u2460\",\"\\u2461\",\"\\u2462\",\"\\u2463\",\"\\u2464\",\"\\u2465\",\"\\u2466\",\"\\u2467\",\"\\u2468\",\"\\u2469\",\"\\u246A\",\"\\u246B\",\"\\u246C\",\"\\u246D\",\"\\u246E\",\"\\u246F\",\"\\u2470\",\"\\u2471\",\"\\u2472\",\"\\u2473\",\"\\u3251\",\"\\u3252\",\"\\u3253\",\"\\u3254\",\"\\u3255\",\"\\u3256\",\"\\u3257\",\"\\u3258\",\"\\u3259\",\"\\u325A\",\"\\u325B\",\"\\u325C\",\"\\u325D\",\"\\u325E\",\"\\u325F\",\"\\u32B1\",\"\\u32B2\",\"\\u32B3\",\"\\u32B4\",\"\\u32B5\",\"\\u32B6\",\"\\u32B7\",\"\\u32B8\",\"\\u32B9\",\"\\u32BA\",\"\\u32BB\",\"\\u32BC\",\"\\u32BD\",\"\\u32BE\",\"\\u32BF\"]};U_.merge=t=>{let e=JAt.merge({},Vf.symbols,U_,t.symbols);return delete e.merge,e};yhe.exports=U_});var whe=_((n8t,Che)=>{\"use strict\";var zAt=mhe(),XAt=Ehe(),ZAt=Lo();Che.exports=t=>{t.options=ZAt.merge({},t.options.theme,t.options),t.symbols=XAt.merge(t.options),t.styles=zAt.merge(t.options)}});var Phe=_((vhe,Dhe)=>{\"use strict\";var Ihe=process.env.TERM_PROGRAM===\"Apple_Terminal\",$At=Kc(),__=Lo(),Vc=Dhe.exports=vhe,Di=\"\\x1B[\",Bhe=\"\\x07\",H_=!1,Sh=Vc.code={bell:Bhe,beep:Bhe,beginning:`${Di}G`,down:`${Di}J`,esc:Di,getPosition:`${Di}6n`,hide:`${Di}?25l`,line:`${Di}2K`,lineEnd:`${Di}K`,lineStart:`${Di}1K`,restorePosition:Di+(Ihe?\"8\":\"u\"),savePosition:Di+(Ihe?\"7\":\"s\"),screen:`${Di}2J`,show:`${Di}?25h`,up:`${Di}1J`},Gd=Vc.cursor={get hidden(){return H_},hide(){return H_=!0,Sh.hide},show(){return H_=!1,Sh.show},forward:(t=1)=>`${Di}${t}C`,backward:(t=1)=>`${Di}${t}D`,nextLine:(t=1)=>`${Di}E`.repeat(t),prevLine:(t=1)=>`${Di}F`.repeat(t),up:(t=1)=>t?`${Di}${t}A`:\"\",down:(t=1)=>t?`${Di}${t}B`:\"\",right:(t=1)=>t?`${Di}${t}C`:\"\",left:(t=1)=>t?`${Di}${t}D`:\"\",to(t,e){return e?`${Di}${e+1};${t+1}H`:`${Di}${t+1}G`},move(t=0,e=0){let r=\"\";return r+=t<0?Gd.left(-t):t>0?Gd.right(t):\"\",r+=e<0?Gd.up(-e):e>0?Gd.down(e):\"\",r},restore(t={}){let{after:e,cursor:r,initial:o,input:a,prompt:n,size:u,value:A}=t;if(o=__.isPrimitive(o)?String(o):\"\",a=__.isPrimitive(a)?String(a):\"\",A=__.isPrimitive(A)?String(A):\"\",u){let p=Vc.cursor.up(u)+Vc.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Vc.cursor.left(h)),p}if(A||e){let p=!a&&!!o?-o.length:-a.length+r;return e&&(p-=e.length),a===\"\"&&o&&!n.includes(o)&&(p+=o.length),Vc.cursor.move(p)}}},j_=Vc.erase={screen:Sh.screen,up:Sh.up,down:Sh.down,line:Sh.line,lineEnd:Sh.lineEnd,lineStart:Sh.lineStart,lines(t){let e=\"\";for(let r=0;r<t;r++)e+=Vc.erase.line+(r<t-1?Vc.cursor.up(1):\"\");return t&&(e+=Vc.code.beginning),e}};Vc.clear=(t=\"\",e=process.stdout.columns)=>{if(!e)return j_.line+Gd.to(0);let r=n=>[...$At.unstyle(n)].length,o=t.split(/\\r?\\n/),a=0;for(let n of o)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(j_.line+Gd.prevLine()).repeat(a-1)+j_.line+Gd.to(0)}});var gC=_((i8t,bhe)=>{\"use strict\";var eft=ve(\"events\"),She=Kc(),q_=Ahe(),tft=phe(),rft=ghe(),nft=whe(),Ra=Lo(),Yd=Phe(),c2=class extends eft{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,nft(this),tft(this),this.state=new rft(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=sft(this.options.margin),this.setMaxListeners(0),ift(this)}async keypress(e,r={}){this.keypressed=!0;let o=q_.action(e,q_(e,r),this.options.actions);this.state.keypress=o,this.emit(\"keypress\",e,o),this.emit(\"state\",this.state.clone());let a=this.options[o.action]||this[o.action]||this.dispatch;if(typeof a==\"function\")return await a.call(this,e,o);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit(\"alert\"):this.stdout.write(Yd.code.beep)}cursorHide(){this.stdout.write(Yd.cursor.hide()),Ra.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Yd.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer=\"\",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Yd.cursor.down(e)+Yd.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:o}=this.sections(),{cursor:a,initial:n=\"\",input:u=\"\",value:A=\"\"}=this,p=this.state.size=o.length,h={after:r,cursor:a,initial:n,input:u,prompt:e,size:p,value:A},E=Yd.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:e,input:r,prompt:o}=this.state;o=She.unstyle(o);let a=She.unstyle(e),n=a.indexOf(o),u=a.slice(0,n),p=a.slice(n).split(`\n`),h=p[0],E=p[p.length-1],v=(o+(r?\" \"+r:\"\")).length,x=v<h.length?h.slice(v+1):\"\";return{header:u,prompt:h,after:x,rest:p.slice(1),last:E}}async submit(){this.state.submitted=!0,this.state.validating=!0,this.options.onSubmit&&await this.options.onSubmit.call(this,this.name,this.value,this);let e=this.state.error||await this.validate(this.value,this.state);if(e!==!0){let r=`\n`+this.symbols.pointer+\" \";typeof e==\"string\"?r+=e.trim():r+=\"Invalid input\",this.state.error=`\n`+this.styles.danger(r),this.state.submitted=!1,await this.render(),await this.alert(),this.state.validating=!1,this.state.error=void 0;return}this.state.validating=!1,await this.render(),await this.close(),this.value=await this.result(this.value),this.emit(\"submit\",this.value)}async cancel(e){this.state.cancelled=this.state.submitted=!0,await this.render(),await this.close(),typeof this.options.onCancel==\"function\"&&await this.options.onCancel.call(this,this.name,this.value,this),this.emit(\"cancel\",await this.error(e))}async close(){this.state.closed=!0;try{let e=this.sections(),r=Math.ceil(e.prompt.length/this.width);e.rest&&this.write(Yd.cursor.down(e.rest.length)),this.write(`\n`.repeat(r))}catch{}this.emit(\"close\")}start(){!this.stop&&this.options.show!==!1&&(this.stop=q_.listen(this,this.keypress.bind(this)),this.once(\"close\",this.stop))}async skip(){return this.skipped=this.options.skip===!0,typeof this.options.skip==\"function\"&&(this.skipped=await this.options.skip.call(this,this.name,this.value)),this.skipped}async initialize(){let{format:e,options:r,result:o}=this;if(this.format=()=>e.call(this,this.value),this.result=()=>o.call(this,this.value),typeof r.initial==\"function\"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun==\"function\"&&await r.onRun.call(this,this),typeof r.onSubmit==\"function\"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error(\"expected prompt to have a custom render method\")}run(){return new Promise(async(e,r)=>{if(this.once(\"submit\",e),this.once(\"cancel\",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit(\"run\")})}async element(e,r,o){let{options:a,state:n,symbols:u,timers:A}=this,p=A&&A[e];n.timer=p;let h=a[e]||n[e]||u[e],E=r&&r[e]!=null?r[e]:await h;if(E===\"\")return E;let I=await this.resolve(E,n,r,o);return!I&&r&&r[e]?this.resolve(h,n,r,o):I}async prefix(){let e=await this.element(\"prefix\")||this.symbols,r=this.timers&&this.timers.prefix,o=this.state;return o.timer=r,Ra.isObject(e)&&(e=e[o.status]||e.pending),Ra.hasColor(e)?e:(this.styles[o.status]||this.styles.pending)(e)}async message(){let e=await this.element(\"message\");return Ra.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element(\"separator\")||this.symbols,r=this.timers&&this.timers.separator,o=this.state;o.timer=r;let a=e[o.status]||e.pending||o.separator,n=await this.resolve(a,o);return Ra.isObject(n)&&(n=n[o.status]||n.pending),Ra.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let o=await this.element(\"pointer\",e,r);if(typeof o==\"string\"&&Ra.hasColor(o))return o;if(o){let a=this.styles,n=this.index===r,u=n?a.primary:h=>h,A=await this.resolve(o[n?\"on\":\"off\"]||o,this.state),p=Ra.hasColor(A)?A:u(A);return n?p:\" \".repeat(A.length)}}async indicator(e,r){let o=await this.element(\"indicator\",e,r);if(typeof o==\"string\"&&Ra.hasColor(o))return o;if(o){let a=this.styles,n=e.enabled===!0,u=n?a.success:a.dark,A=o[n?\"on\":\"off\"]||o;return Ra.hasColor(A)?A:u(A)}return\"\"}body(){return null}footer(){if(this.state.status===\"pending\")return this.element(\"footer\")}header(){if(this.state.status===\"pending\")return this.element(\"header\")}async hint(){if(this.state.status===\"pending\"&&!this.isValue(this.state.input)){let e=await this.element(\"hint\");return Ra.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?\"\":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==\"\"}resolve(e,...r){return Ra.resolve(this,e,...r)}get base(){return c2.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Ra.height(this.stdout,25)}get width(){return this.options.columns||Ra.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,o=[r,e].find(this.isValue.bind(this));return this.isValue(o)?o:this.initial}static get prompt(){return e=>new this(e).run()}};function ift(t){let e=a=>t[a]===void 0||typeof t[a]==\"function\",r=[\"actions\",\"choices\",\"initial\",\"margin\",\"roles\",\"styles\",\"symbols\",\"theme\",\"timers\",\"value\"],o=[\"body\",\"footer\",\"error\",\"header\",\"hint\",\"indicator\",\"message\",\"prefix\",\"separator\",\"skip\"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n==\"function\"&&e(a)?o.includes(a)||(t[a]=n.bind(t)):typeof t[a]!=\"function\"&&(t[a]=n)}}function sft(t){typeof t==\"number\"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?`\n`:\" \",o=[];for(let a=0;a<4;a++){let n=r(a);e[a]?o.push(n.repeat(e[a])):o.push(\"\")}return o}bhe.exports=c2});var Qhe=_((s8t,khe)=>{\"use strict\";var oft=Lo(),xhe={default(t,e){return e},checkbox(t,e){throw new Error(\"checkbox role is not implemented yet\")},editable(t,e){throw new Error(\"editable role is not implemented yet\")},expandable(t,e){throw new Error(\"expandable role is not implemented yet\")},heading(t,e){return e.disabled=\"\",e.indicator=[e.indicator,\" \"].find(r=>r!=null),e.message=e.message||\"\",e},input(t,e){throw new Error(\"input role is not implemented yet\")},option(t,e){return xhe.default(t,e)},radio(t,e){throw new Error(\"radio role is not implemented yet\")},separator(t,e){return e.disabled=\"\",e.indicator=[e.indicator,\" \"].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};khe.exports=(t,e={})=>{let r=oft.merge({},xhe,e.roles);return r[t]||r.default}});var u2=_((o8t,The)=>{\"use strict\";var aft=Kc(),lft=gC(),cft=Qhe(),ok=Lo(),{reorder:G_,scrollUp:uft,scrollDown:Aft,isObject:Fhe,swap:fft}=ok,Y_=class extends lft{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=\"\"}async initialize(){typeof this.options.initial==\"function\"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:o,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!=\"function\"&&this.selectable.length===0)throw new Error(\"At least one choice must be selectable\");Fhe(r)&&(r=Object.keys(r)),Array.isArray(r)?(o!=null&&(this.index=this.findIndex(o)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(o!=null&&(r=o),typeof r==\"string\"&&(r=this.findIndex(r)),typeof r==\"number\"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let o=[],a=0,n=async(u,A)=>{typeof u==\"function\"&&(u=await u.call(this)),u instanceof Promise&&(u=await u);for(let p=0;p<u.length;p++){let h=u[p]=await this.toChoice(u[p],a++,A);o.push(h),h.choices&&await n(h.choices,h)}return o};return n(e,r).then(u=>(this.state.loadingChoices=!1,u))}async toChoice(e,r,o){if(typeof e==\"function\"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e==\"string\"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let a=e.value;if(e=cft(e.role,this.options)(this,e),typeof e.disabled==\"string\"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint=\"(disabled)\"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||\"\",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input=\"\",e.index=r,e.cursor=0,ok.define(e,\"parent\",o),e.level=o?o.level+1:1,e.indent==null&&(e.indent=o?o.indent+\"  \":e.indent||\"\"),e.path=o?o.path+\".\"+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,aft.unstyle(e.message).length));let u={...e};return e.reset=(A=u.input,p=u.value)=>{for(let h of Object.keys(u))e[h]=u[h];e.input=A,e.value=p},a==null&&typeof e.initial==\"function\"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit(\"choice\",e,r,this),typeof e.onChoice==\"function\"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,o){let a=await this.toChoice(e,r,o);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,o){let a={name:\"New choice name?\",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,o);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input=\"\",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?\"  \".repeat(e.level-1):\"\":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!=\"boolean\"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelected<this.choices.length)return this.alert();let e=this.selectable.every(r=>r.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!=\"boolean\"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(a=>this.toggle(a,r));let o=e.parent;for(;o;){let a=o.choices.filter(n=>this.isDisabled(n));o.enabled=a.every(n=>n.enabled===!0),o=o.parent}return Rhe(this,this.choices),this.emit(\"toggle\",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=o=>{let a=Number(o);if(a>this.choices.length-1)return this.alert();let n=this.focused,u=this.choices.find(A=>a===A.index);if(!u.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(u)===-1){let A=G_(this.choices),p=A.indexOf(u);if(n.index>p){let h=A.slice(p,p+this.limit),E=A.filter(I=>!h.includes(I));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=A.slice(h).concat(A.slice(0,h))}}return this.index=this.choices.indexOf(u),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(o=>{let a=this.choices.length,n=this.num,u=(A=!1,p)=>{clearTimeout(this.numberTimeout),A&&(p=r(n)),this.num=\"\",o(p)};if(n===\"0\"||n.length===1&&Number(n+\"0\")>a)return u(!0);if(Number(n)>a)return u(!1,this.alert());this.numberTimeout=setTimeout(()=>u(!0),this.delay)})}home(){return this.choices=G_(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=G_(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===0?this.alert():e>r&&o===0?this.scrollUp():(this.index=(o-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===r-1?this.alert():e>r&&o===r-1?this.scrollDown():(this.index=(o+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=uft(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=Aft(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){fft(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&[\"disabled\",\"collapsed\",\"hidden\",\"completing\",\"readonly\"].some(o=>e[o]===!0)?!0:e&&e.role===\"heading\"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(o=>!this.isDisabled(o));return e.enabled&&r.every(o=>this.isEnabled(o))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r=\"value\"){return[].concat(e||[]).reduce((o,a)=>(o[a]=this.find(a,r),o),{})}filter(e,r){let a=typeof e==\"function\"?e:(A,p)=>[A.name,p].includes(e),u=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?u.map(A=>A[r]):u}find(e,r){if(Fhe(e))return r?e[r]:e;let a=typeof e==\"function\"?e:(u,A)=>[u.name,A].includes(e),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(u=>u.newChoice))return this.alert();let{reorder:r,sort:o}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&o!==!0&&(n=ok.reorder(n)),this.value=a?n.map(u=>u.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(o=>o.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r==\"string\"||typeof r==\"number\"){let o=this.find(r);o&&(this.initial=o.index,this.focus(o,!0))}}}get choices(){return Rhe(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:o}=this,a=e.limit||this._limit||r.limit||o.length;return Math.min(a,this.height)}set value(e){super.value=e}get value(){return typeof super.value!=\"string\"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function Rhe(t,e){if(e instanceof Promise)return e;if(typeof e==\"function\"){if(ok.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let o=r.choices.filter(a=>!t.isDisabled(a));r.enabled=o.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}The.exports=Y_});var bh=_((a8t,Lhe)=>{\"use strict\";var pft=u2(),W_=Lo(),K_=class extends pft{constructor(e){super(e),this.emptyError=this.options.emptyError||\"No items were selected\"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):\"\"}indicator(e,r){return this.multiple?super.indicator(e,r):\"\"}choiceMessage(e,r){let o=this.resolve(e.message,this.state,e,r);return e.role===\"heading\"&&!W_.hasColor(o)&&(o=this.styles.strong(o)),this.resolve(o,this.state,e,r)}choiceSeparator(){return\":\"}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||\"\"),u=await this.resolve(e.hint,this.state,e,r);u&&!W_.hasColor(u)&&(u=this.styles.muted(u));let A=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],A+a+n,p,this.margin[1],u].filter(Boolean).join(\" \");return e.role===\"heading\"?h():e.disabled?(W_.hasColor(p)||(p=this.styles.disabled(p)),h()):(o&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading===\"choices\")return this.styles.warning(\"Loading choices\");if(this.state.submitted)return\"\";let e=this.visible.map(async(n,u)=>await this.renderChoice(n,u)),r=await Promise.all(e);r.length||r.push(this.styles.danger(\"No matching choices\"));let o=this.margin[0]+r.join(`\n`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,o].filter(Boolean).join(`\n`)}format(){return!this.state.submitted||this.state.cancelled?\"\":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(\", \"):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,o=\"\",a=await this.header(),n=await this.prefix(),u=await this.separator(),A=await this.message();this.options.promptLine!==!1&&(o=[n,A,u,\"\"].join(\" \"),this.state.prompt=o);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),I=await this.footer();p&&(o+=p),h&&!o.includes(h)&&(o+=\" \"+h),e&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,o,E,I].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};Lhe.exports=K_});var Ohe=_((l8t,Nhe)=>{\"use strict\";var hft=bh(),gft=(t,e)=>{let r=t.toLowerCase();return o=>{let n=o.toLowerCase().indexOf(r),u=e(o.slice(n,n+r.length));return n>=0?o.slice(0,n)+u+o.slice(n+r.length):o}},V_=class extends hft{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:o}=this.state;return this.input=o.slice(0,r)+e+o.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest==\"function\")return this.options.suggest.call(this,e,r);let o=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(o))}pointer(){return\"\"}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(\", \");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!==\"pending\")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=gft(this.input,e),o=this.choices;this.choices=o.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=o}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Nhe.exports=V_});var z_=_((c8t,Mhe)=>{\"use strict\";var J_=Lo();Mhe.exports=(t,e={})=>{t.cursorHide();let{input:r=\"\",initial:o=\"\",pos:a,showCursor:n=!0,color:u}=e,A=u||t.styles.placeholder,p=J_.inverse(t.styles.primary),h=R=>p(t.styles.black(R)),E=r,I=\" \",v=h(I);if(t.blink&&t.blink.off===!0&&(h=R=>R,v=\"\"),n&&a===0&&o===\"\"&&r===\"\")return h(I);if(n&&a===0&&(r===o||r===\"\"))return h(o[0])+A(o.slice(1));o=J_.isPrimitive(o)?`${o}`:\"\",r=J_.isPrimitive(r)?`${r}`:\"\";let x=o&&o.startsWith(r)&&o!==r,C=x?h(o[r.length]):v;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),C=\"\"),n===!1&&(C=\"\"),x){let R=t.styles.unstyle(E+C);return E+C+A(o.slice(R.length))}return E+C}});var ak=_((u8t,Uhe)=>{\"use strict\";var dft=Kc(),mft=bh(),yft=z_(),X_=class extends mft{constructor(e){super({...e,multiple:!0}),this.type=\"form\",this.initial=this.options.initial,this.align=[this.options.align,\"right\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:o,input:a}=r;return r.value=r.input=a.slice(0,o)+e+a.slice(o),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:o}=e;return e.value=e.input=o.slice(0,r-1)+o.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:o}=e;if(o[r]===void 0)return this.alert();let a=`${o}`.slice(0,r)+`${o}`.slice(r+1);return e.value=e.input=a,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:o}=e;return r&&r.startsWith(o)&&o!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input=\"\",e.cursor=0,this.render()):this.alert()}separator(){return\"\"}format(e){return this.state.submitted?\"\":super.format(e)}pointer(){return\"\"}indicator(e){return e.input?\"\\u29BF\":\"\\u2299\"}async choiceSeparator(e,r){let o=await this.resolve(e.separator,this.state,e,r)||\":\";return o?\" \"+this.styles.disabled(o):\"\"}async renderChoice(e,r){await this.onChoice(e,r);let{state:o,styles:a}=this,{cursor:n,initial:u=\"\",name:A,hint:p,input:h=\"\"}=e,{muted:E,submitted:I,primary:v,danger:x}=a,C=p,R=this.index===r,N=e.validate||(()=>!0),U=await this.choiceSeparator(e,r),J=e.message;this.align===\"right\"&&(J=J.padStart(this.longest+1,\" \")),this.align===\"left\"&&(J=J.padEnd(this.longest+1,\" \"));let te=this.values[A]=h||u,ae=h?\"success\":\"dark\";await N.call(e,te,this.state)!==!0&&(ae=\"danger\");let fe=a[ae],ce=fe(await this.indicator(e,r))+(e.pad||\"\"),me=this.indent(e),he=()=>[me,ce,J+U,h,C].filter(Boolean).join(\" \");if(o.submitted)return J=dft.unstyle(J),h=I(h),C=\"\",he();if(e.format)h=await e.format.call(this,h,e,r);else{let Be=this.styles.muted;h=yft(this,{input:h,initial:u,pos:n,showCursor:R,color:Be})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[A]=await e.result.call(this,te,e,r)),R&&(J=v(J)),e.error?h+=(h?\" \":\"\")+x(e.error.trim()):e.hint&&(h+=(h?\" \":\"\")+E(e.hint.trim())),he()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Uhe.exports=X_});var Z_=_((A8t,Hhe)=>{\"use strict\";var Eft=ak(),Cft=()=>{throw new Error(\"expected prompt to have a custom authenticate method\")},_he=(t=Cft)=>{class e extends Eft{constructor(o){super(o)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(o){return _he(o)}}return e};Hhe.exports=_he()});var Ghe=_((f8t,qhe)=>{\"use strict\";var wft=Z_();function Ift(t,e){return t.username===this.options.username&&t.password===this.options.password}var jhe=(t=Ift)=>{let e=[{name:\"username\",message:\"username\"},{name:\"password\",message:\"password\",format(o){return this.options.showPassword?o:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(o.length))}}];class r extends wft.create(t){constructor(a){super({...a,choices:e})}static create(a){return jhe(a)}}return r};qhe.exports=jhe()});var lk=_((p8t,Yhe)=>{\"use strict\";var Bft=gC(),{isPrimitive:vft,hasColor:Dft}=Lo(),$_=class extends Bft{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:o}=this;return o.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return vft(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status===\"pending\"){let e=await this.element(\"hint\");return Dft(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=this.styles.muted(this.default),A=[o,n,u,a].filter(Boolean).join(\" \");this.state.prompt=A;let p=await this.header(),h=this.value=this.cast(e),E=await this.format(h),I=await this.error()||await this.hint(),v=await this.footer();I&&!A.includes(I)&&(E+=\" \"+I),A+=\" \"+E,this.clear(r),this.write([p,A,v].filter(Boolean).join(`\n`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};Yhe.exports=$_});var Khe=_((h8t,Whe)=>{\"use strict\";var Pft=lk(),e8=class extends Pft{constructor(e){super(e),this.default=this.options.default||(this.initial?\"(Y/n)\":\"(y/N)\")}};Whe.exports=e8});var Jhe=_((g8t,Vhe)=>{\"use strict\";var Sft=bh(),bft=ak(),dC=bft.prototype,t8=class extends Sft{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,\"left\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}dispatch(e,r){let o=this.focused,a=o.parent||{};return!o.editable&&!a.editable&&(e===\"a\"||e===\"i\")?super[e]():dC.dispatch.call(this,e,r)}append(e,r){return dC.append.call(this,e,r)}delete(e,r){return dC.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?dC.next.call(this):super.next()}prev(){return this.focused.editable?dC.prev.call(this):super.prev()}async indicator(e,r){let o=e.indicator||\"\",a=e.editable?o:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||\"\"}indent(e){return e.role===\"heading\"?\"\":e.editable?\" \":\"  \"}async renderChoice(e,r){return e.indent=\"\",e.editable?dC.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return\"\"}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!=\"function\"||r.role===\"heading\")continue;let o=r.parent?this.value[r.parent.name]:this.value;if(r.editable?o=r.value===r.name?r.initial||\"\":r.value:this.isDisabled(r)||(o=r.enabled===!0),e=await r.validate(o,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e==\"string\"?e:\"Invalid Input\"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role===\"heading\"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||\"\":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};Vhe.exports=t8});var Wd=_((d8t,zhe)=>{\"use strict\";var xft=gC(),kft=z_(),{isPrimitive:Qft}=Lo(),r8=class extends xft{constructor(e){super(e),this.initial=Qft(this.initial)?String(this.initial):\"\",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let o=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name===\"return\"&&(!o||o.name!==\"return\")?this.append(`\n`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value=\"\",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:o}=this.state;this.input=`${o}`.slice(0,r)+e+`${o}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),o=this.input.slice(e),a=r.split(\" \");this.state.clipboard.push(a.pop()),this.input=a.join(\" \"),this.cursor=this.input.length,this.input+=o,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):\"\";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):kft(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),o=await this.separator(),a=await this.message(),n=[r,a,o].filter(Boolean).join(\" \");this.state.prompt=n;let u=await this.header(),A=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!A.includes(p)&&(A+=\" \"+p),n+=\" \"+A,this.clear(e),this.write([u,n,h].filter(Boolean).join(`\n`)),this.restore()}};zhe.exports=r8});var Zhe=_((m8t,Xhe)=>{\"use strict\";var Fft=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),ck=t=>Fft(t).filter(Boolean);Xhe.exports=(t,e={},r=\"\")=>{let{past:o=[],present:a=\"\"}=e,n,u;switch(t){case\"prev\":case\"undo\":return n=o.slice(0,o.length-1),u=o[o.length-1]||\"\",{past:ck([r,...n]),present:u};case\"next\":case\"redo\":return n=o.slice(1),u=o[0]||\"\",{past:ck([...n,r]),present:u};case\"save\":return{past:ck([...o,r]),present:\"\"};case\"remove\":return u=ck(o.filter(A=>A!==r)),a=\"\",u.length&&(a=u.pop()),{past:u,present:a};default:throw new Error(`Invalid action: \"${t}\"`)}}});var i8=_((y8t,e0e)=>{\"use strict\";var Rft=Wd(),$he=Zhe(),n8=class extends Rft{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let o=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get(\"values\")||{past:[],present:o},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=$he(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion(\"prev\")}altDown(){return this.completion(\"next\")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=$he(\"save\",this.data,this.input),this.store.set(\"values\",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};e0e.exports=n8});var r0e=_((E8t,t0e)=>{\"use strict\";var Tft=Wd(),s8=class extends Tft{format(){return\"\"}};t0e.exports=s8});var i0e=_((C8t,n0e)=>{\"use strict\";var Lft=Wd(),o8=class extends Lft{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||\"\"}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(\", \")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};n0e.exports=o8});var o0e=_((w8t,s0e)=>{\"use strict\";var Nft=bh(),a8=class extends Nft{constructor(e){super({...e,multiple:!0})}};s0e.exports=a8});var c8=_((I8t,a0e)=>{\"use strict\";var Oft=Wd(),l8=class extends Oft{constructor(e={}){super({style:\"number\",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:\"\",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e===\".\"&&this.input.includes(\".\")?this.alert(\"invalid number\"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,o=this.toNumber(this.input);return o>this.max+r?this.alert():(this.input=`${o+r}`,this.render())}down(e){let r=e||this.minor,o=this.toNumber(this.input);return o<this.min-r?this.alert():(this.input=`${o-r}`,this.render())}shiftDown(){return this.down(this.major)}shiftUp(){return this.up(this.major)}format(e=this.input){return typeof this.options.format==\"function\"?this.options.format.call(this,e):this.styles.info(e)}toNumber(e=\"\"){return this.float?+e:Math.round(+e)}isValue(e){return/^[-+]?[0-9]+((\\.)|(\\.[0-9]+))?$/.test(e)}submit(){let e=[this.input,this.initial].find(r=>this.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};a0e.exports=l8});var c0e=_((B8t,l0e)=>{l0e.exports=c8()});var A0e=_((v8t,u0e)=>{\"use strict\";var Mft=Wd(),u8=class extends Mft{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):\"\"}};u0e.exports=u8});var h0e=_((D8t,p0e)=>{\"use strict\";var Uft=Kc(),_ft=u2(),f0e=Lo(),A8=class extends _ft{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||\"left\"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||`\n   `;let r=e.startNumber||1;typeof this.scale==\"number\"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((o,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let o=0;o<this.scale.length;o++)r.scale.push({index:o})}this.widths[0]=Math.min(this.widths[0],e+3)}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}heading(e,r,o){return this.styles.strong(e)}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIndex>=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return\"\"}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(\", \"):\"\"}pointer(){return\"\"}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?\"\":[\"\",...this.scale.map(o=>`   ${o.name} - ${o.message}`)].map(o=>this.styles.muted(o)).join(`\n`)}renderScaleHeading(e){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading==\"function\"&&(r=this.options.renderScaleHeading.call(this,e));let o=this.scaleLength-r.join(\"\").length,a=Math.round(o/(r.length-1)),u=r.map(p=>this.styles.strong(p)).join(\" \".repeat(a)),A=\" \".repeat(this.widths[0]);return this.margin[3]+A+this.margin[1]+u}scaleIndicator(e,r,o){if(typeof this.options.scaleIndicator==\"function\")return this.options.scaleIndicator.call(this,e,r,o);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let o=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term===\"Hyper\"?\"\":\" \";return o.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!f0e.hasColor(n)&&(n=this.styles.muted(n));let u=C=>this.margin[3]+C.replace(/\\s+$/,\"\").padEnd(this.widths[0],\" \"),A=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),E=await this.renderScale(e,r),I=this.margin[1]+this.margin[3];this.scaleLength=Uft.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-I.length);let x=f0e.wordWrap(h,{width:this.widths[0],newline:A}).split(`\n`).map(C=>u(C)+this.margin[1]);return o&&(E=this.styles.info(E),x=x.map(C=>this.styles.info(C))),x[0]+=E,this.linebreak&&x.push(\"\"),[p+a,x.join(`\n`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return\"\";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),o=await this.renderScaleHeading();return this.margin[0]+[o,...r.map(a=>a.join(\" \"))].join(`\n`)}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=\"\";this.options.promptLine!==!1&&(u=[o,n,a,\"\"].join(\" \"),this.state.prompt=u);let A=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),I=await this.renderChoices(),v=await this.footer(),x=this.emptyError;p&&(u+=p),E&&!u.includes(E)&&(u+=\" \"+E),e&&!p&&!I.trim()&&this.multiple&&x!=null&&(u+=this.styles.danger(x)),this.clear(r),this.write([A,u,h,I,v].filter(Boolean).join(`\n`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};p0e.exports=A8});var m0e=_((P8t,d0e)=>{\"use strict\";var g0e=Kc(),Hft=(t=\"\")=>typeof t==\"string\"?t.replace(/^['\"]|['\"]$/g,\"\"):\"\",p8=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Hft(e.initial||this.field.initial||\"\"),this.message=e.message||this.name,this.cursor=0,this.input=\"\",this.lines=[]}},jft=async(t={},e={},r=o=>o)=>{let o=new Set,a=t.fields||[],n=t.template,u=[],A=[],p=[],h=1;typeof n==\"function\"&&(n=await n());let E=-1,I=()=>n[++E],v=()=>n[E+1],x=C=>{C.line=h,u.push(C)};for(x({type:\"bos\",value:\"\"});E<n.length-1;){let C=I();if(/^[^\\S\\n ]$/.test(C)){x({type:\"text\",value:C});continue}if(C===`\n`){x({type:\"newline\",value:C}),h++;continue}if(C===\"\\\\\"){C+=I(),x({type:\"text\",value:C});continue}if((C===\"$\"||C===\"#\"||C===\"{\")&&v()===\"{\"){let N=I();C+=N;let U={type:\"template\",open:C,inner:\"\",close:\"\",value:C},J;for(;J=I();){if(J===\"}\"){v()===\"}\"&&(J+=I()),U.value+=J,U.close=J;break}J===\":\"?(U.initial=\"\",U.key=U.inner):U.initial!==void 0&&(U.initial+=J),U.value+=J,U.inner+=J}U.template=U.open+(U.initial||U.inner)+U.close,U.key=U.key||U.inner,e.hasOwnProperty(U.key)&&(U.initial=e[U.key]),U=r(U),x(U),p.push(U.key),o.add(U.key);let te=A.find(ae=>ae.name===U.key);U.field=a.find(ae=>ae.name===U.key),te||(te=new p8(U),A.push(te)),te.lines.push(U.line-1);continue}let R=u[u.length-1];R.type===\"text\"&&R.line===h?R.value+=C:x({type:\"text\",value:C})}return x({type:\"eos\",value:\"\"}),{input:n,tabstops:u,unique:o,keys:p,items:A}};d0e.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),o={...e.values,...e.initial},{tabstops:a,items:n,keys:u}=await jft(e,o),A=f8(\"result\",t,e),p=f8(\"format\",t,e),h=f8(\"validate\",t,e,!0),E=t.isValue.bind(t);return async(I={},v=!1)=>{let x=0;I.required=r,I.items=n,I.keys=u,I.output=\"\";let C=async(J,te,ae,fe)=>{let ce=await h(J,te,ae,fe);return ce===!1?\"Invalid field \"+ae.name:ce};for(let J of a){let te=J.value,ae=J.key;if(J.type!==\"template\"){te&&(I.output+=te);continue}if(J.type===\"template\"){let fe=n.find(we=>we.name===ae);e.required===!0&&I.required.add(fe.name);let ce=[fe.input,I.values[fe.value],fe.value,te].find(E),he=(fe.field||{}).message||J.inner;if(v){let we=await C(I.values[ae],I,fe,x);if(we&&typeof we==\"string\"||we===!1){I.invalid.set(ae,we);continue}I.invalid.delete(ae);let g=await A(I.values[ae],I,fe,x);I.output+=g0e.unstyle(g);continue}fe.placeholder=!1;let Be=te;te=await p(te,I,fe,x),ce!==te?(I.values[ae]=ce,te=t.styles.typing(ce),I.missing.delete(he)):(I.values[ae]=void 0,ce=`<${he}>`,te=t.styles.primary(ce),fe.placeholder=!0,I.required.has(ae)&&I.missing.add(he)),I.missing.has(he)&&I.validating&&(te=t.styles.warning(ce)),I.invalid.has(ae)&&I.validating&&(te=t.styles.danger(ce)),x===I.index&&(Be!==te?te=t.styles.underline(te):te=t.styles.heading(g0e.unstyle(te))),x++}te&&(I.output+=te)}let R=I.output.split(`\n`).map(J=>\" \"+J),N=n.length,U=0;for(let J of n)I.invalid.has(J.name)&&J.lines.forEach(te=>{R[te][0]===\" \"&&(R[te]=I.styles.danger(I.symbols.bullet)+R[te].slice(1))}),t.isValue(I.values[J.name])&&U++;return I.completed=(U/N*100).toFixed(0),I.output=R.join(`\n`),I.output}};function f8(t,e,r,o){return(a,n,u,A)=>typeof u.field[t]==\"function\"?u.field[t].call(e,a,n,u,A):[o,a].find(p=>e.isValue(p))}});var E0e=_((S8t,y0e)=>{\"use strict\";var qft=Kc(),Gft=m0e(),Yft=gC(),h8=class extends Yft{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await Gft(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let o=this.getItem(),a=o.input.slice(0,this.cursor),n=o.input.slice(this.cursor);this.input=o.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),o=e.input.slice(0,this.cursor-1);this.input=e.input=`${o}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:o,size:a}=this.state,n=[this.options.newline,`\n`].find(J=>J!=null),u=await this.prefix(),A=await this.separator(),p=await this.message(),h=[u,p,A].filter(Boolean).join(\" \");this.state.prompt=h;let E=await this.header(),I=await this.error()||\"\",v=await this.hint()||\"\",x=o?\"\":await this.interpolate(this.state),C=this.state.key=r[e]||\"\",R=await this.format(C),N=await this.footer();R&&(h+=\" \"+R),v&&!R&&this.state.completed===0&&(h+=\" \"+v),this.clear(a);let U=[E,h,x,N,I.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:o,index:a}=this.state,n=r.find(u=>u.name===o[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!=\"function\"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:o,values:a}=this.state;if(e.size){let A=\"\";for(let[p,h]of e)A+=`Invalid ${p}: ${h}\n`;return this.state.error=A,super.submit()}if(r.size)return this.state.error=\"Required: \"+[...r.keys()].join(\", \"),super.submit();let u=qft.unstyle(o).split(`\n`).map(A=>A.slice(1)).join(`\n`);return this.value={values:a,result:u},super.submit()}};y0e.exports=h8});var w0e=_((b8t,C0e)=>{\"use strict\";var Wft=\"(Use <shift>+<up/down> to sort)\",Kft=bh(),g8=class extends Kft{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,Wft].find(this.isValue.bind(this))}indicator(){return\"\"}async renderChoice(e,r){let o=await super.renderChoice(e,r),a=this.symbols.identicalTo+\" \",n=this.index===r&&this.sorting?this.styles.muted(a):\"  \";return this.options.drag===!1&&(n=\"\"),this.options.numbered===!0?n+`${r+1} - `+o:n+o}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};C0e.exports=g8});var B0e=_((x8t,I0e)=>{\"use strict\";var Vft=u2(),d8=class extends Vft{constructor(e={}){if(super(e),this.emptyError=e.emptyError||\"No items were selected\",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=[\"\",\"4 - Strongly Agree\",\"3 - Agree\",\"2 - Neutral\",\"1 - Disagree\",\"0 - Strongly Disagree\",\"\"];r=r.map(o=>this.styles.muted(o)),this.state.header=r.join(`\n   `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let o of r)o.scale=Jft(5,this.options),o.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],o=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!o,this.render()}indicator(){return\"\"}pointer(){return\"\"}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return\"   \"}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=this.term===\"Hyper\",n=a?9:8,u=a?\"\":\" \",A=this.symbols.line.repeat(n),p=\" \".repeat(n+(a?0:1)),h=te=>(te?this.styles.success(\"\\u25C9\"):\"\\u25EF\")+u,E=r+1+\".\",I=o?this.styles.heading:this.styles.noop,v=await this.resolve(e.message,this.state,e,r),x=this.indent(e),C=x+e.scale.map((te,ae)=>h(ae===e.scaleIdx)).join(A),R=te=>te===e.scaleIdx?I(te):te,N=x+e.scale.map((te,ae)=>R(ae)).join(p),U=()=>[E,v].filter(Boolean).join(\" \"),J=()=>[U(),C,N,\" \"].filter(Boolean).join(`\n`);return o&&(C=this.styles.cyan(C),N=this.styles.cyan(N)),J()}async renderChoices(){if(this.state.submitted)return\"\";let e=this.visible.map(async(o,a)=>await this.renderChoice(o,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger(\"No matching choices\")),r.join(`\n`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(\", \"):\"\"}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=[o,n,a].filter(Boolean).join(\" \");this.state.prompt=u;let A=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),I=await this.footer();(p||!h)&&(u+=\" \"+p),h&&!u.includes(h)&&(u+=\" \"+h),e&&!p&&!E&&this.multiple&&this.type!==\"form\"&&(u+=this.styles.danger(this.emptyError)),this.clear(r),this.write([u,A,E,I].filter(Boolean).join(`\n`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function Jft(t,e={}){if(Array.isArray(e.scale))return e.scale.map(o=>({...o}));let r=[];for(let o=1;o<t+1;o++)r.push({i:o,selected:!1});return r}I0e.exports=d8});var D0e=_((k8t,v0e)=>{v0e.exports=i8()});var S0e=_((Q8t,P0e)=>{\"use strict\";var zft=lk(),m8=class extends zft{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||\"no\",this.enabled=this.options.enabled||\"yes\",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e=\"\",r){switch(e.toLowerCase()){case\" \":return this.toggle();case\"1\":case\"y\":case\"t\":return this.enable();case\"0\":case\"n\":case\"f\":return this.disable();default:return this.alert()}}format(){let e=o=>this.styles.primary.underline(o);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(\" / \"))}async render(){let{size:e}=this.state,r=await this.header(),o=await this.prefix(),a=await this.separator(),n=await this.message(),u=await this.format(),A=await this.error()||await this.hint(),p=await this.footer(),h=[o,n,a,u].join(\" \");this.state.prompt=h,A&&!h.includes(A)&&(h+=\" \"+A),this.clear(e),this.write([r,h,p].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};P0e.exports=m8});var x0e=_((F8t,b0e)=>{\"use strict\";var Xft=bh(),y8=class extends Xft{constructor(e){if(super(e),typeof this.options.correctChoice!=\"number\"||this.options.correctChoice<0)throw new Error(\"Please specify the index of the correct answer from the list of choices\")}async toChoices(e,r){let o=await super.toChoices(e,r);if(o.length<2)throw new Error(\"Please give at least two choices to the user\");if(this.options.correctChoice>o.length)throw new Error(\"Please specify the index of the correct answer from the list of choices\");return o}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};b0e.exports=y8});var Q0e=_(E8=>{\"use strict\";var k0e=Lo(),As=(t,e)=>{k0e.defineExport(E8,t,e),k0e.defineExport(E8,t.toLowerCase(),e)};As(\"AutoComplete\",()=>Ohe());As(\"BasicAuth\",()=>Ghe());As(\"Confirm\",()=>Khe());As(\"Editable\",()=>Jhe());As(\"Form\",()=>ak());As(\"Input\",()=>i8());As(\"Invisible\",()=>r0e());As(\"List\",()=>i0e());As(\"MultiSelect\",()=>o0e());As(\"Numeral\",()=>c0e());As(\"Password\",()=>A0e());As(\"Scale\",()=>h0e());As(\"Select\",()=>bh());As(\"Snippet\",()=>E0e());As(\"Sort\",()=>w0e());As(\"Survey\",()=>B0e());As(\"Text\",()=>D0e());As(\"Toggle\",()=>S0e());As(\"Quiz\",()=>x0e())});var R0e=_((T8t,F0e)=>{F0e.exports={ArrayPrompt:u2(),AuthPrompt:Z_(),BooleanPrompt:lk(),NumberPrompt:c8(),StringPrompt:Wd()}});var f2=_((L8t,L0e)=>{\"use strict\";var T0e=ve(\"assert\"),w8=ve(\"events\"),xh=Lo(),Jc=class extends w8{constructor(e,r){super(),this.options=xh.merge({},e),this.answers={...r}}register(e,r){if(xh.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}T0e.equal(typeof r,\"function\",\"expected a function\");let o=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[o]=r:this.prompts[o]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r==\"function\"&&(r=await r.call(this)),await this.ask(xh.merge({},this.options,r))}catch(o){return Promise.reject(o)}return this.answers}async ask(e){typeof e==\"function\"&&(e=await e.call(this));let r=xh.merge({},this.options,e),{type:o,name:a}=e,{set:n,get:u}=xh;if(typeof o==\"function\"&&(o=await o.call(this,e,this.answers)),!o)return this.answers[a];T0e(this.prompts[o],`Prompt \"${o}\" is not registered`);let A=new this.prompts[o](r),p=u(this.answers,a);A.state.answers=this.answers,A.enquirer=this,a&&A.on(\"submit\",E=>{this.emit(\"answer\",a,E,A),n(this.answers,a,E)});let h=A.emit.bind(A);return A.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit(\"prompt\",A,this),r.autofill&&p!=null?(A.value=A.input=p,r.autofill===\"show\"&&await A.submit()):p=A.value=await A.run(),p}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||gC()}static get prompts(){return Q0e()}static get types(){return R0e()}static get prompt(){let e=(r,...o)=>{let a=new this(...o),n=a.emit.bind(a);return a.emit=(...u)=>(e.emit(...u),n(...u)),a.prompt(r)};return xh.mixinEmitter(e,new w8),e}};xh.mixinEmitter(Jc,new w8);var C8=Jc.prompts;for(let t of Object.keys(C8)){let e=t.toLowerCase(),r=o=>new C8[t](o).run();Jc.prompt[e]=r,Jc[e]=r,Jc[t]||Reflect.defineProperty(Jc,t,{get:()=>C8[t]})}var A2=t=>{xh.defineExport(Jc,t,()=>Jc.types[t])};A2(\"ArrayPrompt\");A2(\"AuthPrompt\");A2(\"BooleanPrompt\");A2(\"NumberPrompt\");A2(\"StringPrompt\");L0e.exports=Jc});var d2=_((mHt,j0e)=>{var npt=zx();function ipt(t,e,r){var o=t==null?void 0:npt(t,e);return o===void 0?r:o}j0e.exports=ipt});var Y0e=_((BHt,G0e)=>{function spt(t,e){for(var r=-1,o=t==null?0:t.length;++r<o&&e(t[r],r,t)!==!1;);return t}G0e.exports=spt});var K0e=_((vHt,W0e)=>{var opt=dd(),apt=JP();function lpt(t,e){return t&&opt(e,apt(e),t)}W0e.exports=lpt});var J0e=_((DHt,V0e)=>{var cpt=dd(),upt=Gy();function Apt(t,e){return t&&cpt(e,upt(e),t)}V0e.exports=Apt});var X0e=_((PHt,z0e)=>{var fpt=dd(),ppt=qP();function hpt(t,e){return fpt(t,ppt(t),e)}z0e.exports=hpt});var S8=_((SHt,Z0e)=>{var gpt=jP(),dpt=eS(),mpt=qP(),ypt=KL(),Ept=Object.getOwnPropertySymbols,Cpt=Ept?function(t){for(var e=[];t;)gpt(e,mpt(t)),t=dpt(t);return e}:ypt;Z0e.exports=Cpt});var ege=_((bHt,$0e)=>{var wpt=dd(),Ipt=S8();function Bpt(t,e){return wpt(t,Ipt(t),e)}$0e.exports=Bpt});var b8=_((xHt,tge)=>{var vpt=WL(),Dpt=S8(),Ppt=Gy();function Spt(t){return vpt(t,Ppt,Dpt)}tge.exports=Spt});var nge=_((kHt,rge)=>{var bpt=Object.prototype,xpt=bpt.hasOwnProperty;function kpt(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]==\"string\"&&xpt.call(t,\"index\")&&(r.index=t.index,r.input=t.input),r}rge.exports=kpt});var sge=_((QHt,ige)=>{var Qpt=ZP();function Fpt(t,e){var r=e?Qpt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}ige.exports=Fpt});var age=_((FHt,oge)=>{var Rpt=/\\w*$/;function Tpt(t){var e=new t.constructor(t.source,Rpt.exec(t));return e.lastIndex=t.lastIndex,e}oge.exports=Tpt});var fge=_((RHt,Age)=>{var lge=pd(),cge=lge?lge.prototype:void 0,uge=cge?cge.valueOf:void 0;function Lpt(t){return uge?Object(uge.call(t)):{}}Age.exports=Lpt});var hge=_((THt,pge)=>{var Npt=ZP(),Opt=sge(),Mpt=age(),Upt=fge(),_pt=aN(),Hpt=\"[object Boolean]\",jpt=\"[object Date]\",qpt=\"[object Map]\",Gpt=\"[object Number]\",Ypt=\"[object RegExp]\",Wpt=\"[object Set]\",Kpt=\"[object String]\",Vpt=\"[object Symbol]\",Jpt=\"[object ArrayBuffer]\",zpt=\"[object DataView]\",Xpt=\"[object Float32Array]\",Zpt=\"[object Float64Array]\",$pt=\"[object Int8Array]\",eht=\"[object Int16Array]\",tht=\"[object Int32Array]\",rht=\"[object Uint8Array]\",nht=\"[object Uint8ClampedArray]\",iht=\"[object Uint16Array]\",sht=\"[object Uint32Array]\";function oht(t,e,r){var o=t.constructor;switch(e){case Jpt:return Npt(t);case Hpt:case jpt:return new o(+t);case zpt:return Opt(t,r);case Xpt:case Zpt:case $pt:case eht:case tht:case rht:case nht:case iht:case sht:return _pt(t,r);case qpt:return new o;case Gpt:case Kpt:return new o(t);case Ypt:return Mpt(t);case Wpt:return new o;case Vpt:return Upt(t)}}pge.exports=oht});var dge=_((LHt,gge)=>{var aht=GI(),lht=Ju(),cht=\"[object Map]\";function uht(t){return lht(t)&&aht(t)==cht}gge.exports=uht});var Cge=_((NHt,Ege)=>{var Aht=dge(),fht=YP(),mge=WP(),yge=mge&&mge.isMap,pht=yge?fht(yge):Aht;Ege.exports=pht});var Ige=_((OHt,wge)=>{var hht=GI(),ght=Ju(),dht=\"[object Set]\";function mht(t){return ght(t)&&hht(t)==dht}wge.exports=mht});var Pge=_((MHt,Dge)=>{var yht=Ige(),Eht=YP(),Bge=WP(),vge=Bge&&Bge.isSet,Cht=vge?Eht(vge):yht;Dge.exports=Cht});var x8=_((UHt,kge)=>{var wht=_P(),Iht=Y0e(),Bht=tS(),vht=K0e(),Dht=J0e(),Pht=oN(),Sht=$P(),bht=X0e(),xht=ege(),kht=XL(),Qht=b8(),Fht=GI(),Rht=nge(),Tht=hge(),Lht=lN(),Nht=Hl(),Oht=UI(),Mht=Cge(),Uht=il(),_ht=Pge(),Hht=JP(),jht=Gy(),qht=1,Ght=2,Yht=4,Sge=\"[object Arguments]\",Wht=\"[object Array]\",Kht=\"[object Boolean]\",Vht=\"[object Date]\",Jht=\"[object Error]\",bge=\"[object Function]\",zht=\"[object GeneratorFunction]\",Xht=\"[object Map]\",Zht=\"[object Number]\",xge=\"[object Object]\",$ht=\"[object RegExp]\",e0t=\"[object Set]\",t0t=\"[object String]\",r0t=\"[object Symbol]\",n0t=\"[object WeakMap]\",i0t=\"[object ArrayBuffer]\",s0t=\"[object DataView]\",o0t=\"[object Float32Array]\",a0t=\"[object Float64Array]\",l0t=\"[object Int8Array]\",c0t=\"[object Int16Array]\",u0t=\"[object Int32Array]\",A0t=\"[object Uint8Array]\",f0t=\"[object Uint8ClampedArray]\",p0t=\"[object Uint16Array]\",h0t=\"[object Uint32Array]\",ri={};ri[Sge]=ri[Wht]=ri[i0t]=ri[s0t]=ri[Kht]=ri[Vht]=ri[o0t]=ri[a0t]=ri[l0t]=ri[c0t]=ri[u0t]=ri[Xht]=ri[Zht]=ri[xge]=ri[$ht]=ri[e0t]=ri[t0t]=ri[r0t]=ri[A0t]=ri[f0t]=ri[p0t]=ri[h0t]=!0;ri[Jht]=ri[bge]=ri[n0t]=!1;function Ak(t,e,r,o,a,n){var u,A=e&qht,p=e&Ght,h=e&Yht;if(r&&(u=a?r(t,o,a,n):r(t)),u!==void 0)return u;if(!Uht(t))return t;var E=Nht(t);if(E){if(u=Rht(t),!A)return Sht(t,u)}else{var I=Fht(t),v=I==bge||I==zht;if(Oht(t))return Pht(t,A);if(I==xge||I==Sge||v&&!a){if(u=p||v?{}:Lht(t),!A)return p?xht(t,Dht(u,t)):bht(t,vht(u,t))}else{if(!ri[I])return a?t:{};u=Tht(t,I,A)}}n||(n=new wht);var x=n.get(t);if(x)return x;n.set(t,u),_ht(t)?t.forEach(function(N){u.add(Ak(N,e,r,N,t,n))}):Mht(t)&&t.forEach(function(N,U){u.set(U,Ak(N,e,r,U,t,n))});var C=h?p?Qht:kht:p?jht:Hht,R=E?void 0:C(t);return Iht(R||t,function(N,U){R&&(U=N,N=t[U]),Bht(u,U,Ak(N,e,r,U,t,n))}),u}kge.exports=Ak});var k8=_((_Ht,Qge)=>{var g0t=x8(),d0t=1,m0t=4;function y0t(t){return g0t(t,d0t|m0t)}Qge.exports=y0t});var Q8=_((HHt,Fge)=>{var E0t=I_();function C0t(t,e,r){return t==null?t:E0t(t,e,r)}Fge.exports=C0t});var Oge=_((KHt,Nge)=>{var w0t=Object.prototype,I0t=w0t.hasOwnProperty;function B0t(t,e){return t!=null&&I0t.call(t,e)}Nge.exports=B0t});var Uge=_((VHt,Mge)=>{var v0t=Oge(),D0t=B_();function P0t(t,e){return t!=null&&D0t(t,e,v0t)}Mge.exports=P0t});var Hge=_((JHt,_ge)=>{function S0t(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}_ge.exports=S0t});var qge=_((zHt,jge)=>{var b0t=zx(),x0t=pU();function k0t(t,e){return e.length<2?t:b0t(t,x0t(e,0,-1))}jge.exports=k0t});var R8=_((XHt,Gge)=>{var Q0t=qd(),F0t=Hge(),R0t=qge(),T0t=lC();function L0t(t,e){return e=Q0t(e,t),t=R0t(t,e),t==null||delete t[T0t(F0t(e))]}Gge.exports=L0t});var T8=_((ZHt,Yge)=>{var N0t=R8();function O0t(t,e){return t==null?!0:N0t(t,e)}Yge.exports=O0t});var zge=_((S6t,_0t)=>{_0t.exports={name:\"@yarnpkg/cli\",version:\"4.2.1\",license:\"BSD-2-Clause\",main:\"./sources/index.ts\",exports:{\".\":\"./sources/index.ts\",\"./polyfills\":\"./sources/polyfills.ts\",\"./package.json\":\"./package.json\"},dependencies:{\"@yarnpkg/core\":\"workspace:^\",\"@yarnpkg/fslib\":\"workspace:^\",\"@yarnpkg/libzip\":\"workspace:^\",\"@yarnpkg/parsers\":\"workspace:^\",\"@yarnpkg/plugin-compat\":\"workspace:^\",\"@yarnpkg/plugin-constraints\":\"workspace:^\",\"@yarnpkg/plugin-dlx\":\"workspace:^\",\"@yarnpkg/plugin-essentials\":\"workspace:^\",\"@yarnpkg/plugin-exec\":\"workspace:^\",\"@yarnpkg/plugin-file\":\"workspace:^\",\"@yarnpkg/plugin-git\":\"workspace:^\",\"@yarnpkg/plugin-github\":\"workspace:^\",\"@yarnpkg/plugin-http\":\"workspace:^\",\"@yarnpkg/plugin-init\":\"workspace:^\",\"@yarnpkg/plugin-interactive-tools\":\"workspace:^\",\"@yarnpkg/plugin-link\":\"workspace:^\",\"@yarnpkg/plugin-nm\":\"workspace:^\",\"@yarnpkg/plugin-npm\":\"workspace:^\",\"@yarnpkg/plugin-npm-cli\":\"workspace:^\",\"@yarnpkg/plugin-pack\":\"workspace:^\",\"@yarnpkg/plugin-patch\":\"workspace:^\",\"@yarnpkg/plugin-pnp\":\"workspace:^\",\"@yarnpkg/plugin-pnpm\":\"workspace:^\",\"@yarnpkg/plugin-stage\":\"workspace:^\",\"@yarnpkg/plugin-typescript\":\"workspace:^\",\"@yarnpkg/plugin-version\":\"workspace:^\",\"@yarnpkg/plugin-workspace-tools\":\"workspace:^\",\"@yarnpkg/shell\":\"workspace:^\",\"ci-info\":\"^3.2.0\",clipanion:\"^4.0.0-rc.2\",semver:\"^7.1.2\",tslib:\"^2.4.0\",typanion:\"^3.14.0\"},devDependencies:{\"@types/semver\":\"^7.1.0\",\"@yarnpkg/builder\":\"workspace:^\",\"@yarnpkg/monorepo\":\"workspace:^\",\"@yarnpkg/pnpify\":\"workspace:^\"},peerDependencies:{\"@yarnpkg/core\":\"workspace:^\"},scripts:{postpack:\"rm -rf lib\",prepack:'run build:compile \"$(pwd)\"',\"build:cli+hook\":\"run build:pnp:hook && builder build bundle\",\"build:cli\":\"builder build bundle\",\"run:cli\":\"builder run\",\"update-local\":\"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/\"},publishConfig:{main:\"./lib/index.js\",bin:null,exports:{\".\":\"./lib/index.js\",\"./package.json\":\"./package.json\"}},files:[\"/lib/**/*\",\"!/lib/pluginConfiguration.*\",\"!/lib/cli.*\"],\"@yarnpkg/builder\":{bundles:{standard:[\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"]}},repository:{type:\"git\",url:\"ssh://git@github.com/yarnpkg/berry.git\",directory:\"packages/yarnpkg-cli\"},engines:{node:\">=18.12.0\"}}});var q8=_((i9t,lde)=>{\"use strict\";lde.exports=function(e,r){r===!0&&(r=0);var o=\"\";if(typeof e==\"string\")try{o=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(o=e.protocol);var a=o.split(/\\:|\\+/).filter(Boolean);return typeof r==\"number\"?a[r]:a}});var ude=_((s9t,cde)=>{\"use strict\";var sgt=q8();function ogt(t){var e={protocols:[],protocol:null,port:null,resource:\"\",host:\"\",user:\"\",password:\"\",pathname:\"\",hash:\"\",search:\"\",href:t,query:{},parse_failed:!1};try{var r=new URL(t);e.protocols=sgt(r),e.protocol=e.protocols[0],e.port=r.port,e.resource=r.hostname,e.host=r.host,e.user=r.username||\"\",e.password=r.password||\"\",e.pathname=r.pathname,e.hash=r.hash.slice(1),e.search=r.search.slice(1),e.href=r.href,e.query=Object.fromEntries(r.searchParams)}catch{e.protocols=[\"file\"],e.protocol=e.protocols[0],e.port=\"\",e.resource=\"\",e.user=\"\",e.pathname=\"\",e.hash=\"\",e.search=\"\",e.href=t,e.query={},e.parse_failed=!0}return e}cde.exports=ogt});var pde=_((o9t,fde)=>{\"use strict\";var agt=ude();function lgt(t){return t&&typeof t==\"object\"&&\"default\"in t?t:{default:t}}var cgt=lgt(agt),ugt=\"text/plain\",Agt=\"us-ascii\",Ade=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),fgt=(t,{stripHash:e})=>{let r=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:o,data:a,hash:n}=r.groups,u=o.split(\";\");n=e?\"\":n;let A=!1;u[u.length-1]===\"base64\"&&(u.pop(),A=!0);let p=(u.shift()||\"\").toLowerCase(),E=[...u.map(I=>{let[v,x=\"\"]=I.split(\"=\").map(C=>C.trim());return v===\"charset\"&&(x=x.toLowerCase(),x===Agt)?\"\":`${v}${x?`=${x}`:\"\"}`}).filter(Boolean)];return A&&E.push(\"base64\"),(E.length>0||p&&p!==ugt)&&E.unshift(p),`data:${E.join(\";\")},${A?a.trim():a}${n?`#${n}`:\"\"}`};function pgt(t,e){if(e={defaultProtocol:\"http:\",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return fgt(t,e);if(/^view-source:/i.test(t))throw new Error(\"`view-source:` is not supported as it is a non-standard protocol\");let r=t.startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,e.defaultProtocol));let a=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(e.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),e.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),e.stripAuthentication&&(a.username=\"\",a.password=\"\"),e.stripHash?a.hash=\"\":e.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,\"\")),a.pathname){let u=/\\b[a-z][a-z\\d+\\-.]{1,50}:\\/\\//g,A=0,p=\"\";for(;;){let E=u.exec(a.pathname);if(!E)break;let I=E[0],v=E.index,x=a.pathname.slice(A,v);p+=x.replace(/\\/{2,}/g,\"/\"),p+=I,A=v+I.length}let h=a.pathname.slice(A,a.pathname.length);p+=h.replace(/\\/{2,}/g,\"/\"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let u=a.pathname.split(\"/\"),A=u[u.length-1];Ade(A,e.removeDirectoryIndex)&&(u=u.slice(0,-1),a.pathname=u.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.(?!www\\.)[a-z\\-\\d]{1,63}\\.[a-z.\\-\\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(let u of[...a.searchParams.keys()])Ade(u,e.removeQueryParameters)&&a.searchParams.delete(u);if(e.removeQueryParameters===!0&&(a.search=\"\"),e.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\\/$/,\"\"));let n=t;return t=a.toString(),!e.removeSingleSlash&&a.pathname===\"/\"&&!n.endsWith(\"/\")&&a.hash===\"\"&&(t=t.replace(/\\/$/,\"\")),(e.removeTrailingSlash||a.pathname===\"/\")&&a.hash===\"\"&&e.removeSingleSlash&&(t=t.replace(/\\/$/,\"\")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\\/\\//,\"//\")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\\/\\//,\"\")),t}var G8=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\\/\\/)([\\w\\.\\-@]+)[\\/:]([\\~,\\.\\w,\\-,\\_,\\/]+?(?:\\.git|\\/)?)$/,o=n=>{let u=new Error(n);throw u.subject_url=t,u};(typeof t!=\"string\"||!t.trim())&&o(\"Invalid url.\"),t.length>G8.MAX_INPUT_LENGTH&&o(\"Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH.\"),e&&(typeof e!=\"object\"&&(e={stripHash:!1}),t=pgt(t,e));let a=cgt.default(t);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=[\"ssh\"],a.protocol=\"ssh\",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):o(\"URL parsing failed.\")}return a};G8.MAX_INPUT_LENGTH=2048;fde.exports=G8});var dde=_((a9t,gde)=>{\"use strict\";var hgt=q8();function hde(t){if(Array.isArray(t))return t.indexOf(\"ssh\")!==-1||t.indexOf(\"rsync\")!==-1;if(typeof t!=\"string\")return!1;var e=hgt(t);if(t=t.substring(t.indexOf(\"://\")+3),hde(e))return!0;var r=new RegExp(\".([a-zA-Z\\\\d]+):(\\\\d+)/\");return!t.match(r)&&t.indexOf(\"@\")<t.indexOf(\":\")}gde.exports=hde});var Ede=_((l9t,yde)=>{\"use strict\";var ggt=pde(),mde=dde();function dgt(t){var e=ggt(t);return e.token=\"\",e.password===\"x-oauth-basic\"?e.token=e.user:e.user===\"x-token-auth\"&&(e.token=e.password),mde(e.protocols)||e.protocols.length===0&&mde(t)?e.protocol=\"ssh\":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol=\"file\",e.protocols=[\"file\"]),e.href=e.href.replace(/\\/$/,\"\"),e}yde.exports=dgt});var wde=_((c9t,Cde)=>{\"use strict\";var mgt=Ede();function Y8(t){if(typeof t!=\"string\")throw new Error(\"The url must be a string.\");var e=/^([a-z\\d-]{1,39})\\/([-\\.\\w]{1,100})$/i;e.test(t)&&(t=\"https://github.com/\"+t);var r=mgt(t),o=r.resource.split(\".\"),a=null;switch(r.toString=function(N){return Y8.stringify(this,N)},r.source=o.length>2?o.slice(1-o.length).join(\".\"):r.source=r.resource,r.git_suffix=/\\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\\/)|(\\/$)/g,\"\").replace(/\\.git$/,\"\")),r.owner=decodeURIComponent(r.user),r.source){case\"git.cloudforge.com\":r.owner=r.user,r.organization=o[0],r.source=\"cloudforge.com\";break;case\"visualstudio.com\":if(r.resource===\"vs-ssh.visualstudio.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+\"/\"+a[3]);break}else{a=r.name.split(\"/\"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name);break}case\"dev.azure.com\":case\"azure.com\":if(r.resource===\"ssh.dev.azure.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split(\"/\"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\\/+/g,\"\")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,\"\"));break}default:a=r.name.split(\"/\");var n=a.length-1;if(a.length>=2){var u=a.indexOf(\"-\",2),A=a.indexOf(\"blob\",2),p=a.indexOf(\"tree\",2),h=a.indexOf(\"commit\",2),E=a.indexOf(\"src\",2),I=a.indexOf(\"raw\",2),v=a.indexOf(\"edit\",2);n=u>0?u-1:A>0?A-1:p>0?p-1:h>0?h-1:E>0?E-1:I>0?I-1:v>0?v-1:n,r.owner=a.slice(0,n).join(\"/\"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref=\"\",r.filepathtype=\"\",r.filepath=\"\";var x=a.length>n&&a[n+1]===\"-\"?n+1:n;a.length>x+2&&[\"raw\",\"src\",\"blob\",\"tree\",\"edit\"].indexOf(a[x+1])>=0&&(r.filepathtype=a[x+1],r.ref=a[x+2],a.length>x+3&&(r.filepath=a.slice(x+3).join(\"/\"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+=\"/\"),r.full_name+=r.name)),r.owner.startsWith(\"scm/\")&&(r.source=\"bitbucket-server\",r.owner=r.owner.replace(\"scm/\",\"\"),r.organization=r.owner,r.full_name=r.owner+\"/\"+r.name);var C=/(projects|users)\\/(.*?)\\/repos\\/(.*?)((\\/.*$)|$)/,R=C.exec(r.pathname);return R!=null&&(r.source=\"bitbucket-server\",R[1]===\"users\"?r.owner=\"~\"+R[2]:r.owner=R[2],r.organization=r.owner,r.name=R[3],a=R[4].split(\"/\"),a.length>1&&([\"raw\",\"browse\"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join(\"/\"))):a[1]===\"commits\"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+\"/\"+r.name,r.query.at?r.ref=r.query.at:r.ref=\"\"),r}Y8.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join(\"+\"):t.protocol);var r=t.port?\":\"+t.port:\"\",o=t.user||\"git\",a=t.git_suffix?\".git\":\"\";switch(e){case\"ssh\":return r?\"ssh://\"+o+\"@\"+t.resource+r+\"/\"+t.full_name+a:o+\"@\"+t.resource+\":\"+t.full_name+a;case\"git+ssh\":case\"ssh+git\":case\"ftp\":case\"ftps\":return e+\"://\"+o+\"@\"+t.resource+r+\"/\"+t.full_name+a;case\"http\":case\"https\":var n=t.token?ygt(t):t.user&&(t.protocols.includes(\"http\")||t.protocols.includes(\"https\"))?t.user+\"@\":\"\";return e+\"://\"+n+t.resource+r+\"/\"+Egt(t)+a;default:return t.href}};function ygt(t){switch(t.source){case\"bitbucket.org\":return\"x-token-auth:\"+t.token+\"@\";default:return t.token+\"@\"}}function Egt(t){switch(t.source){case\"bitbucket-server\":return\"scm/\"+t.full_name;default:return\"\"+t.full_name}}Cde.exports=Y8});var Ode=_((j5t,Nde)=>{var kgt=Hb(),Qgt=$P(),Fgt=Hl(),Rgt=pE(),Tgt=w_(),Lgt=lC(),Ngt=L1();function Ogt(t){return Fgt(t)?kgt(t,Lgt):Rgt(t)?[t]:Qgt(Tgt(Ngt(t)))}Nde.exports=Ogt});function Hgt(t,e){return e===1&&_gt.has(t[0])}function B2(t){let e=Array.isArray(t)?t:(0,_de.default)(t);return e.map((o,a)=>Mgt.test(o)?`[${o}]`:Ugt.test(o)&&!Hgt(e,a)?`.${o}`:`[${JSON.stringify(o)}]`).join(\"\").replace(/^\\./,\"\")}function jgt(t,e){let r=[];if(e.methodName!==null&&r.push(de.pretty(t,e.methodName,de.Type.CODE)),e.file!==null){let o=[];o.push(de.pretty(t,e.file,de.Type.PATH)),e.line!==null&&(o.push(de.pretty(t,e.line,de.Type.NUMBER)),e.column!==null&&o.push(de.pretty(t,e.column,de.Type.NUMBER))),r.push(`(${o.join(de.pretty(t,\":\",\"grey\"))})`)}return r.join(\" \")}function gk(t,{manifestUpdates:e,reportedErrors:r},{fix:o}={}){let a=new Map,n=new Map,u=[...r.keys()].map(A=>[A,new Map]);for(let[A,p]of[...u,...e]){let h=r.get(A)?.map(x=>({text:x,fixable:!1}))??[],E=!1,I=t.getWorkspaceByCwd(A),v=I.manifest.exportTo({});for(let[x,C]of p){if(C.size>1){let R=[...C].map(([N,U])=>{let J=de.pretty(t.configuration,N,de.Type.INSPECT),te=U.size>0?jgt(t.configuration,U.values().next().value):null;return te!==null?`\n${J} at ${te}`:`\n${J}`}).join(\"\");h.push({text:`Conflict detected in constraint targeting ${de.pretty(t.configuration,x,de.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=C,N=(0,Mde.default)(v,x);if(JSON.stringify(N)===JSON.stringify(R))continue;if(!o){let U=typeof N>\"u\"?`Missing field ${de.pretty(t.configuration,x,de.Type.CODE)}; expected ${de.pretty(t.configuration,R,de.Type.INSPECT)}`:typeof R>\"u\"?`Extraneous field ${de.pretty(t.configuration,x,de.Type.CODE)} currently set to ${de.pretty(t.configuration,N,de.Type.INSPECT)}`:`Invalid field ${de.pretty(t.configuration,x,de.Type.CODE)}; expected ${de.pretty(t.configuration,R,de.Type.INSPECT)}, found ${de.pretty(t.configuration,N,de.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof R>\"u\"?(0,Hde.default)(v,x):(0,Ude.default)(v,x,R),E=!0}E&&a.set(I,v)}h.length>0&&n.set(I,h)}return{changedWorkspaces:a,remainingErrors:n}}function jde(t,{configuration:e}){let r={children:[]};for(let[o,a]of t){let n=[];for(let A of a){let p=A.text.split(/\\n/);A.fixable&&(p[0]=`${de.pretty(e,\"\\u2699\",\"gray\")} ${p[0]}`),n.push({value:de.tuple(de.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:de.tuple(de.Type.NO_HINT,h)}))})}let u={value:de.tuple(de.Type.LOCATOR,o.anchoredLocator),children:_e.sortMap(n,A=>A.value[1])};r.children.push(u)}return r.children=_e.sortMap(r.children,o=>o.value[1]),r}var Mde,Ude,_de,Hde,wC,Mgt,Ugt,_gt,v2=Et(()=>{Ye();Mde=$e(d2()),Ude=$e(Q8()),_de=$e(Ode()),Hde=$e(T8()),wC=class{constructor(e){this.indexedFields=e;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let e of this.indexedFields)this.indexes[e]=new Map}insert(e){this.items.push(e);for(let r of this.indexedFields){let o=Object.hasOwn(e,r)?e[r]:void 0;if(typeof o>\"u\")continue;_e.getArrayWithDefault(this.indexes[r],o).push(e)}return e}find(e){if(typeof e>\"u\")return this.items;let r=Object.entries(e);if(r.length===0)return this.items;let o=[],a;for(let[u,A]of r){let p=u,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>\"u\"){o.push([p,A]);continue}let E=new Set(h.get(A)??[]);if(E.size===0)return[];if(typeof a>\"u\")a=E;else for(let I of a)E.has(I)||a.delete(I);if(a.size===0)break}let n=[...a??[]];return o.length>0&&(n=n.filter(u=>{for(let[A,p]of o)if(!(typeof p<\"u\"?Object.hasOwn(u,A)&&u[A]===p:Object.hasOwn(u,A)===!1))return!1;return!0})),n}},Mgt=/^[0-9]+$/,Ugt=/^[a-zA-Z0-9_]+$/,_gt=new Set([\"scripts\",...Ot.allDependencies])});var qde=_((e7t,sH)=>{var qgt;(function(t){var e=function(){return{\"append/2\":[new t.type.Rule(new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Var(\"L\")]),new t.type.Term(\"foldl\",[new t.type.Term(\"append\",[]),new t.type.Var(\"X\"),new t.type.Term(\"[]\",[]),new t.type.Var(\"L\")]))],\"append/3\":[new t.type.Rule(new t.type.Term(\"append\",[new t.type.Term(\"[]\",[]),new t.type.Var(\"X\"),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"append\",[new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"S\")])]),new t.type.Term(\"append\",[new t.type.Var(\"T\"),new t.type.Var(\"X\"),new t.type.Var(\"S\")]))],\"member/2\":[new t.type.Rule(new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"_\")])]),null),new t.type.Rule(new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"Xs\")])]),new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]))],\"permutation/2\":[new t.type.Rule(new t.type.Term(\"permutation\",[new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"permutation\",[new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"permutation\",[new t.type.Var(\"T\"),new t.type.Var(\"P\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"P\")]),new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"Y\")]),new t.type.Var(\"S\")])])]))],\"maplist/2\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"X\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"Xs\")])]))],\"maplist/3\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\")])]))],\"maplist/4\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\")])]))],\"maplist/5\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\")])]))],\"maplist/6\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\")])]))],\"maplist/7\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")]),new t.type.Term(\".\",[new t.type.Var(\"F\"),new t.type.Var(\"Fs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\"),new t.type.Var(\"F\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\"),new t.type.Var(\"Fs\")])]))],\"maplist/8\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")]),new t.type.Term(\".\",[new t.type.Var(\"F\"),new t.type.Var(\"Fs\")]),new t.type.Term(\".\",[new t.type.Var(\"G\"),new t.type.Var(\"Gs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\"),new t.type.Var(\"F\"),new t.type.Var(\"G\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\"),new t.type.Var(\"Fs\"),new t.type.Var(\"Gs\")])]))],\"include/3\":[new t.type.Rule(new t.type.Term(\"include\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"include\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"A\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"A\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"B\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"F\"),new t.type.Var(\"B\")]),new t.type.Term(\",\",[new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"F\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"S\")])]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"L\"),new t.type.Var(\"S\")])]),new t.type.Term(\"include\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"S\")])])])])]))],\"exclude/3\":[new t.type.Rule(new t.type.Term(\"exclude\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"exclude\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"exclude\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"E\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"Q\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"R\"),new t.type.Var(\"Q\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"R\")]),new t.type.Term(\",\",[new t.type.Term(\"!\",[]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"E\")])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"E\")])])])])])])]))],\"foldl/4\":[new t.type.Rule(new t.type.Term(\"foldl\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Var(\"I\"),new t.type.Var(\"I\")]),null),new t.type.Rule(new t.type.Term(\"foldl\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"I\"),new t.type.Var(\"R\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"I\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])])])]),new t.type.Var(\"L2\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P2\"),new t.type.Var(\"L2\")]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P2\")]),new t.type.Term(\"foldl\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"X\"),new t.type.Var(\"R\")])])])])]))],\"select/3\":[new t.type.Rule(new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"Xs\")]),null),new t.type.Rule(new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Ys\")])]),new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Var(\"Xs\"),new t.type.Var(\"Ys\")]))],\"sum_list/2\":[new t.type.Rule(new t.type.Term(\"sum_list\",[new t.type.Term(\"[]\",[]),new t.type.Num(0,!1)]),null),new t.type.Rule(new t.type.Term(\"sum_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"sum_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\"is\",[new t.type.Var(\"S\"),new t.type.Term(\"+\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")])])]))],\"max_list/2\":[new t.type.Rule(new t.type.Term(\"max_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"max_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"max_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"X\")]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"Y\")])])]))],\"min_list/2\":[new t.type.Rule(new t.type.Term(\"min_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"min_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"min_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"=<\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"X\")]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"Y\")])])]))],\"prod_list/2\":[new t.type.Rule(new t.type.Term(\"prod_list\",[new t.type.Term(\"[]\",[]),new t.type.Num(1,!1)]),null),new t.type.Rule(new t.type.Term(\"prod_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"prod_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\"is\",[new t.type.Var(\"S\"),new t.type.Term(\"*\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")])])]))],\"last/2\":[new t.type.Rule(new t.type.Term(\"last\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"last\",[new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"X\")]),new t.type.Term(\"last\",[new t.type.Var(\"Xs\"),new t.type.Var(\"X\")]))],\"prefix/2\":[new t.type.Rule(new t.type.Term(\"prefix\",[new t.type.Var(\"Part\"),new t.type.Var(\"Whole\")]),new t.type.Term(\"append\",[new t.type.Var(\"Part\"),new t.type.Var(\"_\"),new t.type.Var(\"Whole\")]))],\"nth0/3\":[new t.type.Rule(new t.type.Term(\"nth0\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")])]),new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")]),new t.type.Term(\"!\",[])])])]))],\"nth1/3\":[new t.type.Rule(new t.type.Term(\"nth1\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")])]),new t.type.Term(\",\",[new t.type.Term(\">\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")]),new t.type.Term(\"!\",[])])])]))],\"nth0/4\":[new t.type.Rule(new t.type.Term(\"nth0\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")])]),new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\"!\",[])])])]))],\"nth1/4\":[new t.type.Rule(new t.type.Term(\"nth1\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")])]),new t.type.Term(\",\",[new t.type.Term(\">\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\"!\",[])])])]))],\"nth/5\":[new t.type.Rule(new t.type.Term(\"nth\",[new t.type.Var(\"N\"),new t.type.Var(\"N\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),null),new t.type.Rule(new t.type.Term(\"nth\",[new t.type.Var(\"N\"),new t.type.Var(\"O\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"Y\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Ys\")])]),new t.type.Term(\",\",[new t.type.Term(\"is\",[new t.type.Var(\"M\"),new t.type.Term(\"+\",[new t.type.Var(\"N\"),new t.type.Num(1,!1)])]),new t.type.Term(\"nth\",[new t.type.Var(\"M\"),new t.type.Var(\"O\"),new t.type.Var(\"Xs\"),new t.type.Var(\"Y\"),new t.type.Var(\"Ys\")])]))],\"length/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(!t.type.is_variable(A)&&!t.type.is_integer(A))o.throw_error(t.error.type(\"integer\",A,n.indicator));else if(t.type.is_integer(A)&&A.value<0)o.throw_error(t.error.domain(\"not_less_than_zero\",A,n.indicator));else{var p=new t.type.Term(\"length\",[u,new t.type.Num(0,!1),A]);t.type.is_integer(A)&&(p=new t.type.Term(\",\",[p,new t.type.Term(\"!\",[])])),o.prepend([new t.type.State(a.goal.replace(p),a.substitution,a)])}},\"length/3\":[new t.type.Rule(new t.type.Term(\"length\",[new t.type.Term(\"[]\",[]),new t.type.Var(\"N\"),new t.type.Var(\"N\")]),null),new t.type.Rule(new t.type.Term(\"length\",[new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"X\")]),new t.type.Var(\"A\"),new t.type.Var(\"N\")]),new t.type.Term(\",\",[new t.type.Term(\"succ\",[new t.type.Var(\"A\"),new t.type.Var(\"B\")]),new t.type.Term(\"length\",[new t.type.Var(\"X\"),new t.type.Var(\"B\"),new t.type.Var(\"N\")])]))],\"replicate/3\":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(A))o.throw_error(t.error.type(\"integer\",A,n.indicator));else if(A.value<0)o.throw_error(t.error.domain(\"not_less_than_zero\",A,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=new t.type.Term(\"[]\"),E=0;E<A.value;E++)h=new t.type.Term(\".\",[u,h]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[h,p])),a.substitution,a)])}},\"sort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h=u;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=p.sort(t.compare),I=E.length-1;I>0;I--)E[I].equals(E[I-1])&&E.splice(I,1);for(var v=new t.type.Term(\"[]\"),I=E.length-1;I>=0;I--)v=new t.type.Term(\".\",[E[I],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,A])),a.substitution,a)])}}},\"msort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h=u;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=p.sort(t.compare),I=new t.type.Term(\"[]\"),v=E.length-1;v>=0;v--)I=new t.type.Term(\".\",[E[v],I]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,A])),a.substitution,a)])}}},\"keysort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h,E=u;E.indicator===\"./2\";){if(h=E.args[0],t.type.is_variable(h)){o.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!==\"-/2\"){o.throw_error(t.error.type(\"pair\",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(t.type.is_variable(E))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(E))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var I=p.sort(t.compare),v=new t.type.Term(\"[]\"),x=I.length-1;x>=0;x--)v=new t.type.Term(\".\",[new t.type.Term(\"-\",[I[x],I[x].pair]),v]),delete I[x].pair;o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,A])),a.substitution,a)])}}},\"take/3\":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type(\"integer\",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=u.value,E=[],I=A;h>0&&I.indicator===\"./2\";)E.push(I.args[0]),I=I.args[1],h--;if(h===0){for(var v=new t.type.Term(\"[]\"),h=E.length-1;h>=0;h--)v=new t.type.Term(\".\",[E[h],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,p])),a.substitution,a)])}}},\"drop/3\":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type(\"integer\",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=u.value,E=[],I=A;h>0&&I.indicator===\"./2\";)E.push(I.args[0]),I=I.args[1],h--;h===0&&o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,p])),a.substitution,a)])}},\"reverse/2\":function(o,a,n){var u=n.args[0],A=n.args[1],p=t.type.is_instantiated_list(u),h=t.type.is_instantiated_list(A);if(t.type.is_variable(u)&&t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(u)&&!t.type.is_fully_list(u))o.throw_error(t.error.type(\"list\",u,n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!p&&!h)o.throw_error(t.error.instantiation(n.indicator));else{for(var E=p?u:A,I=new t.type.Term(\"[]\",[]);E.indicator===\"./2\";)I=new t.type.Term(\".\",[E.args[0],I]),E=E.args[1];o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,p?A:u])),a.substitution,a)])}},\"list_to_set/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else{for(var p=u,h=[];p.indicator===\"./2\";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!==\"[]/0\")o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=[],I=new t.type.Term(\"[]\",[]),v,x=0;x<h.length;x++){v=!1;for(var C=0;C<E.length&&!v;C++)v=t.compare(h[x],E[C])===0;v||E.push(h[x])}for(x=E.length-1;x>=0;x--)I=new t.type.Term(\".\",[E[x],I]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[A,I])),a.substitution,a)])}}}}},r=[\"append/2\",\"append/3\",\"member/2\",\"permutation/2\",\"maplist/2\",\"maplist/3\",\"maplist/4\",\"maplist/5\",\"maplist/6\",\"maplist/7\",\"maplist/8\",\"include/3\",\"exclude/3\",\"foldl/4\",\"sum_list/2\",\"max_list/2\",\"min_list/2\",\"prod_list/2\",\"last/2\",\"prefix/2\",\"nth0/3\",\"nth1/3\",\"nth0/4\",\"nth1/4\",\"length/2\",\"replicate/3\",\"select/3\",\"sort/2\",\"msort/2\",\"keysort/2\",\"take/3\",\"drop/3\",\"reverse/2\",\"list_to_set/2\"];typeof sH<\"u\"?sH.exports=function(o){t=o,new t.type.Module(\"lists\",e(),r)}:new t.type.Module(\"lists\",e(),r)})(qgt)});var ime=_(Yr=>{\"use strict\";var $d=process.platform===\"win32\",oH=\"aes-256-cbc\",Ggt=\"sha256\",Wde=\"The current environment doesn't support interactive reading from TTY.\",Yn=ve(\"fs\"),Gde=process.binding(\"tty_wrap\").TTY,lH=ve(\"child_process\"),c0=ve(\"path\"),cH={prompt:\"> \",hideEchoBack:!1,mask:\"*\",limit:[],limitMessage:\"Input another, please.$<( [)limit(])>\",defaultInput:\"\",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:\"utf8\",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},zf=\"none\",Xc,BC,Yde=!1,l0,mk,aH,Ygt=0,hH=\"\",Zd=[],yk,Kde=!1,uH=!1,D2=!1;function Vde(t){function e(r){return r.replace(/[^\\w\\u0080-\\uFFFF]/g,function(o){return\"#\"+o.charCodeAt(0)+\";\"})}return mk.concat(function(r){var o=[];return Object.keys(r).forEach(function(a){r[a]===\"boolean\"?t[a]&&o.push(\"--\"+a):r[a]===\"string\"&&t[a]&&o.push(\"--\"+a,e(t[a]))}),o}({display:\"string\",displayOnly:\"boolean\",keyIn:\"boolean\",hideEchoBack:\"boolean\",mask:\"string\",limit:\"string\",caseSensitive:\"boolean\"}))}function Wgt(t,e){function r(U){var J,te=\"\",ae;for(aH=aH||ve(\"os\").tmpdir();;){J=c0.join(aH,U+te);try{ae=Yn.openSync(J,\"wx\")}catch(fe){if(fe.code===\"EEXIST\"){te++;continue}else throw fe}Yn.closeSync(ae);break}return J}var o,a,n,u={},A,p,h=r(\"readline-sync.stdout\"),E=r(\"readline-sync.stderr\"),I=r(\"readline-sync.exit\"),v=r(\"readline-sync.done\"),x=ve(\"crypto\"),C,R,N;C=x.createHash(Ggt),C.update(\"\"+process.pid+Ygt+++Math.random()),N=C.digest(\"hex\"),R=x.createDecipher(oH,N),o=Vde(t),$d?(a=process.env.ComSpec||\"cmd.exe\",process.env.Q='\"',n=[\"/V:ON\",\"/S\",\"/C\",\"(%Q%\"+a+\"%Q% /V:ON /S /C %Q%%Q%\"+l0+\"%Q%\"+o.map(function(U){return\" %Q%\"+U+\"%Q%\"}).join(\"\")+\" & (echo !ERRORLEVEL!)>%Q%\"+I+\"%Q%%Q%) 2>%Q%\"+E+\"%Q% |%Q%\"+process.execPath+\"%Q% %Q%\"+__dirname+\"\\\\encrypt.js%Q% %Q%\"+oH+\"%Q% %Q%\"+N+\"%Q% >%Q%\"+h+\"%Q% & (echo 1)>%Q%\"+v+\"%Q%\"]):(a=\"/bin/sh\",n=[\"-c\",'(\"'+l0+'\"'+o.map(function(U){return\" '\"+U.replace(/'/g,\"'\\\\''\")+\"'\"}).join(\"\")+'; echo $?>\"'+I+'\") 2>\"'+E+'\" |\"'+process.execPath+'\" \"'+__dirname+'/encrypt.js\" \"'+oH+'\" \"'+N+'\" >\"'+h+'\"; echo 1 >\"'+v+'\"']),D2&&D2(\"_execFileSync\",o);try{lH.spawn(a,n,e)}catch(U){u.error=new Error(U.message),u.error.method=\"_execFileSync - spawn\",u.error.program=a,u.error.args=n}for(;Yn.readFileSync(v,{encoding:t.encoding}).trim()!==\"1\";);return(A=Yn.readFileSync(I,{encoding:t.encoding}).trim())===\"0\"?u.input=R.update(Yn.readFileSync(h,{encoding:\"binary\"}),\"hex\",t.encoding)+R.final(t.encoding):(p=Yn.readFileSync(E,{encoding:t.encoding}).trim(),u.error=new Error(Wde+(p?`\n`+p:\"\")),u.error.method=\"_execFileSync\",u.error.program=a,u.error.args=n,u.error.extMessage=p,u.error.exitCode=+A),Yn.unlinkSync(h),Yn.unlinkSync(E),Yn.unlinkSync(I),Yn.unlinkSync(v),u}function Kgt(t){var e,r={},o,a={env:process.env,encoding:t.encoding};if(l0||($d?process.env.PSModulePath?(l0=\"powershell.exe\",mk=[\"-ExecutionPolicy\",\"Bypass\",\"-File\",__dirname+\"\\\\read.ps1\"]):(l0=\"cscript.exe\",mk=[\"//nologo\",__dirname+\"\\\\read.cs.js\"]):(l0=\"/bin/sh\",mk=[__dirname+\"/read.sh\"])),$d&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),lH.execFileSync){e=Vde(t),D2&&D2(\"execFileSync\",e);try{r.input=lH.execFileSync(l0,e,a)}catch(n){o=n.stderr?(n.stderr+\"\").trim():\"\",r.error=new Error(Wde+(o?`\n`+o:\"\")),r.error.method=\"execFileSync\",r.error.program=l0,r.error.args=e,r.error.extMessage=o,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=Wgt(t,a);return r.error||(r.input=r.input.replace(/^\\s*'|'\\s*$/g,\"\"),t.display=\"\"),r}function AH(t){var e=\"\",r=t.display,o=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=Kgt(t);if(n.error)throw n.error;return n.input}return uH&&uH(t),function(){var n,u,A;function p(){return n||(n=process.binding(\"fs\"),u=process.binding(\"constants\")),n}if(typeof zf==\"string\")if(zf=null,$d){if(A=function(h){var E=h.replace(/^\\D+/,\"\").split(\".\"),I=0;return(E[0]=+E[0])&&(I+=E[0]*1e4),(E[1]=+E[1])&&(I+=E[1]*100),(E[2]=+E[2])&&(I+=E[2]),I}(process.version),!(A>=20302&&A<40204||A>=5e4&&A<50100||A>=50600&&A<60200)&&process.stdin.isTTY)process.stdin.pause(),zf=process.stdin.fd,BC=process.stdin._handle;else try{zf=p().open(\"CONIN$\",u.O_RDWR,parseInt(\"0666\",8)),BC=new Gde(zf,!0)}catch{}if(process.stdout.isTTY)Xc=process.stdout.fd;else{try{Xc=Yn.openSync(\"\\\\\\\\.\\\\CON\",\"w\")}catch{}if(typeof Xc!=\"number\")try{Xc=p().open(\"CONOUT$\",u.O_RDWR,parseInt(\"0666\",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{zf=Yn.openSync(\"/dev/tty\",\"r\"),BC=process.stdin._handle}catch{}}else try{zf=Yn.openSync(\"/dev/tty\",\"r\"),BC=new Gde(zf,!1)}catch{}if(process.stdout.isTTY)Xc=process.stdout.fd;else try{Xc=Yn.openSync(\"/dev/tty\",\"w\")}catch{}}}(),function(){var n,u,A=!t.hideEchoBack&&!t.keyIn,p,h,E,I,v;yk=\"\";function x(C){return C===Yde?!0:BC.setRawMode(C)!==0?!1:(Yde=C,!0)}if(Kde||!BC||typeof Xc!=\"number\"&&(t.display||!A)){e=a();return}if(t.display&&(Yn.writeSync(Xc,t.display),t.display=\"\"),!t.displayOnly){if(!x(!A)){e=a();return}for(h=t.keyIn?1:t.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),t.keyIn&&t.limit&&(u=new RegExp(\"[^\"+t.limit+\"]\",\"g\"+(t.caseSensitive?\"\":\"i\")));;){E=0;try{E=Yn.readSync(zf,p,0,h)}catch(C){if(C.code!==\"EOF\"){x(!1),e+=a();return}}if(E>0?(I=p.toString(t.encoding,0,E),yk+=I):(I=`\n`,yk+=String.fromCharCode(0)),I&&typeof(v=(I.match(/^(.*?)[\\r\\n]/)||[])[1])==\"string\"&&(I=v,n=!0),I&&(I=I.replace(/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/g,\"\")),I&&u&&(I=I.replace(u,\"\")),I&&(A||(t.hideEchoBack?t.mask&&Yn.writeSync(Xc,new Array(I.length+1).join(t.mask)):Yn.writeSync(Xc,I)),e+=I),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!A&&!o&&Yn.writeSync(Xc,`\n`),x(!1)}}(),t.print&&!o&&t.print(r+(t.displayOnly?\"\":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+`\n`),t.encoding),t.displayOnly?\"\":hH=t.keepWhitespace||t.keyIn?e:e.trim()}function Vgt(t,e){var r=[];function o(a){a!=null&&(Array.isArray(a)?a.forEach(o):(!e||e(a))&&r.push(a))}return o(t),r}function gH(t){return t.replace(/[\\x00-\\x7f]/g,function(e){return\"\\\\x\"+(\"00\"+e.charCodeAt().toString(16)).substr(-2)})}function Rs(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]==\"boolean\"&&(r=t.shift(),r&&(e=Object.keys(cH),t.unshift(cH))),t.reduce(function(o,a){return a==null||(a.hasOwnProperty(\"noEchoBack\")&&!a.hasOwnProperty(\"hideEchoBack\")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty(\"noTrim\")&&!a.hasOwnProperty(\"keepWhitespace\")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var u;if(!!a.hasOwnProperty(n))switch(u=a[n],n){case\"mask\":case\"limitMessage\":case\"defaultInput\":case\"encoding\":u=u!=null?u+\"\":\"\",u&&n!==\"limitMessage\"&&(u=u.replace(/[\\r\\n]/g,\"\")),o[n]=u;break;case\"bufferSize\":!isNaN(u=parseInt(u,10))&&typeof u==\"number\"&&(o[n]=u);break;case\"displayOnly\":case\"keyIn\":case\"hideEchoBack\":case\"caseSensitive\":case\"keepWhitespace\":case\"history\":case\"cd\":o[n]=!!u;break;case\"limit\":case\"trueValue\":case\"falseValue\":o[n]=Vgt(u,function(A){var p=typeof A;return p===\"string\"||p===\"number\"||p===\"function\"||A instanceof RegExp}).map(function(A){return typeof A==\"string\"?A.replace(/[\\r\\n]/g,\"\"):A});break;case\"print\":case\"phContent\":case\"preCheck\":o[n]=typeof u==\"function\"?u:void 0;break;case\"prompt\":case\"display\":o[n]=u??\"\";break}})),o},{})}function fH(t,e,r){return e.some(function(o){var a=typeof o;return a===\"string\"?r?t===o:t.toLowerCase()===o.toLowerCase():a===\"number\"?parseFloat(t)===o:a===\"function\"?o(t):o instanceof RegExp?o.test(t):!1})}function dH(t,e){var r=c0.normalize($d?(process.env.HOMEDRIVE||\"\")+(process.env.HOMEPATH||\"\"):process.env.HOME||\"\").replace(/[\\/\\\\]+$/,\"\");return t=c0.normalize(t),e?t.replace(/^~(?=\\/|\\\\|$)/,r):t.replace(new RegExp(\"^\"+gH(r)+\"(?=\\\\/|\\\\\\\\|$)\",$d?\"i\":\"\"),\"~\")}function vC(t,e){var r=\"(?:\\\\(([\\\\s\\\\S]*?)\\\\))?(\\\\w+|.-.)(?:\\\\(([\\\\s\\\\S]*?)\\\\))?\",o=new RegExp(\"(\\\\$)?(\\\\$<\"+r+\">)\",\"g\"),a=new RegExp(\"(\\\\$)?(\\\\$\\\\{\"+r+\"\\\\})\",\"g\");function n(u,A,p,h,E,I){var v;return A||typeof(v=e(E))!=\"string\"?p:v?(h||\"\")+v+(I||\"\"):\"\"}return t.replace(o,n).replace(a,n)}function Jde(t,e,r){var o,a=[],n=-1,u=0,A=\"\",p;function h(E,I){return I.length>3?(E.push(I[0]+\"...\"+I[I.length-1]),p=!0):I.length&&(E=E.concat(I)),E}return o=t.reduce(function(E,I){return E.concat((I+\"\").split(\"\"))},[]).reduce(function(E,I){var v,x;return e||(I=I.toLowerCase()),v=/^\\d$/.test(I)?1:/^[A-Z]$/.test(I)?2:/^[a-z]$/.test(I)?3:0,r&&v===0?A+=I:(x=I.charCodeAt(0),v&&v===n&&x===u+1?a.push(I):(E=h(E,a),a=[I],n=v),u=x),E},[]),o=h(o,a),A&&(o.push(A),p=!0),{values:o,suppressed:p}}function zde(t,e){return t.join(t.length>2?\", \":e?\" / \":\"/\")}function Xde(t,e){var r,o,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!=\"string\")switch(t){case\"hideEchoBack\":case\"mask\":case\"defaultInput\":case\"caseSensitive\":case\"keepWhitespace\":case\"encoding\":case\"bufferSize\":case\"history\":case\"cd\":r=e.hasOwnProperty(t)?typeof e[t]==\"boolean\"?e[t]?\"on\":\"off\":e[t]+\"\":\"\";break;case\"limit\":case\"trueValue\":case\"falseValue\":o=e[e.hasOwnProperty(t+\"Src\")?t+\"Src\":t],e.keyIn?(a=Jde(o,e.caseSensitive),o=a.values):o=o.filter(function(u){var A=typeof u;return A===\"string\"||A===\"number\"}),r=zde(o,a.suppressed);break;case\"limitCount\":case\"limitCountNotZero\":r=e[e.hasOwnProperty(\"limitSrc\")?\"limitSrc\":\"limit\"].length,r=r||t!==\"limitCountNotZero\"?r+\"\":\"\";break;case\"lastInput\":r=hH;break;case\"cwd\":case\"CWD\":case\"cwdHome\":r=process.cwd(),t===\"CWD\"?r=c0.basename(r):t===\"cwdHome\"&&(r=dH(r));break;case\"date\":case\"time\":case\"localeDate\":case\"localeTime\":r=new Date()[\"to\"+t.replace(/^./,function(u){return u.toUpperCase()})+\"String\"]();break;default:typeof(n=(t.match(/^history_m(\\d+)$/)||[])[1])==\"string\"&&(r=Zd[Zd.length-n]||\"\")}return r}function Zde(t){var e=/^(.)-(.)$/.exec(t),r=\"\",o,a,n,u;if(!e)return null;for(o=e[1].charCodeAt(0),a=e[2].charCodeAt(0),u=o<a?1:-1,n=o;n!==a+u;n+=u)r+=String.fromCharCode(n);return r}function pH(t){var e=new RegExp(/(\\s*)(?:(\"|')(.*?)(?:\\2|$)|(\\S+))/g),r,o=\"\",a=[],n;for(t=t.trim();r=e.exec(t);)n=r[3]||r[4]||\"\",r[1]&&(a.push(o),o=\"\"),o+=n;return o&&a.push(o),a}function $de(t,e){return e.trueValue.length&&fH(t,e.trueValue,e.caseSensitive)?!0:e.falseValue.length&&fH(t,e.falseValue,e.caseSensitive)?!1:t}function eme(t){var e,r,o,a,n,u,A;function p(E){return Xde(E,t)}function h(E){t.display+=(/[^\\r\\n]$/.test(t.display)?`\n`:\"\")+E}for(t.limitSrc=t.limit,t.displaySrc=t.display,t.limit=\"\",t.display=vC(t.display+\"\",p);;){if(e=AH(t),r=!1,o=\"\",t.defaultInput&&!e&&(e=t.defaultInput),t.history&&((a=/^\\s*\\!(?:\\!|-1)(:p)?\\s*$/.exec(e))?(n=Zd[0]||\"\",a[1]?r=!0:e=n,h(n+`\n`),r||(t.displayOnly=!0,AH(t),t.displayOnly=!1)):e&&e!==Zd[Zd.length-1]&&(Zd=[e])),!r&&t.cd&&e)switch(u=pH(e),u[0].toLowerCase()){case\"cd\":if(u[1])try{process.chdir(dH(u[1],!0))}catch(E){h(E+\"\")}r=!0;break;case\"pwd\":h(process.cwd()),r=!0;break}if(!r&&t.preCheck&&(A=t.preCheck(e,t),e=A.res,A.forceNext&&(r=!0)),!r){if(!t.limitSrc.length||fH(e,t.limitSrc,t.caseSensitive))break;t.limitMessage&&(o=vC(t.limitMessage,p))}h((o?o+`\n`:\"\")+vC(t.displaySrc+\"\",p))}return $de(e,t)}Yr._DBG_set_useExt=function(t){Kde=t};Yr._DBG_set_checkOptions=function(t){uH=t};Yr._DBG_set_checkMethod=function(t){D2=t};Yr._DBG_clearHistory=function(){hH=\"\",Zd=[]};Yr.setDefaultOptions=function(t){return cH=Rs(!0,t),Rs(!0)};Yr.question=function(t,e){return eme(Rs(Rs(!0,e),{display:t}))};Yr.prompt=function(t){var e=Rs(!0,t);return e.display=e.prompt,eme(e)};Yr.keyIn=function(t,e){var r=Rs(Rs(!0,e),{display:t,keyIn:!0,keepWhitespace:!0});return r.limitSrc=r.limit.filter(function(o){var a=typeof o;return a===\"string\"||a===\"number\"}).map(function(o){return vC(o+\"\",Zde)}),r.limit=gH(r.limitSrc.join(\"\")),[\"trueValue\",\"falseValue\"].forEach(function(o){r[o]=r[o].reduce(function(a,n){var u=typeof n;return u===\"string\"||u===\"number\"?a=a.concat((n+\"\").split(\"\")):a.push(n),a},[])}),r.display=vC(r.display+\"\",function(o){return Xde(o,r)}),$de(AH(r),r)};Yr.questionEMail=function(t,e){return t==null&&(t=\"Input e-mail address: \"),Yr.question(t,Rs({hideEchoBack:!1,limit:/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,limitMessage:\"Input valid e-mail address, please.\",trueValue:null,falseValue:null},e,{keepWhitespace:!1,cd:!1}))};Yr.questionNewPassword=function(t,e){var r,o,a,n=Rs({hideEchoBack:!0,mask:\"*\",limitMessage:`It can include: $<charlist>\nAnd the length must be: $<length>`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(x){return x===\"charlist\"?r.text:x===\"length\"?o+\"...\"+a:null}}),u,A,p,h,E,I,v;for(e=e||{},u=vC(e.charlist?e.charlist+\"\":\"$<!-~>\",Zde),(isNaN(o=parseInt(e.min,10))||typeof o!=\"number\")&&(o=12),(isNaN(a=parseInt(e.max,10))||typeof a!=\"number\")&&(a=24),h=new RegExp(\"^[\"+gH(u)+\"]{\"+o+\",\"+a+\"}$\"),r=Jde([u],n.caseSensitive,!0),r.text=zde(r.values,r.suppressed),A=e.confirmMessage!=null?e.confirmMessage:\"Reinput a same one to confirm it: \",p=e.unmatchMessage!=null?e.unmatchMessage:\"It differs from first one. Hit only the Enter key if you want to retry from first one.\",t==null&&(t=\"Input new password: \"),E=n.limitMessage;!v;)n.limit=h,n.limitMessage=E,I=Yr.question(t,n),n.limit=[I,\"\"],n.limitMessage=p,v=Yr.question(A,n);return I};function tme(t,e,r){var o;function a(n){return o=r(n),!isNaN(o)&&typeof o==\"number\"}return Yr.question(t,Rs({limitMessage:\"Input valid number, please.\"},e,{limit:a,cd:!1})),o}Yr.questionInt=function(t,e){return tme(t,e,function(r){return parseInt(r,10)})};Yr.questionFloat=function(t,e){return tme(t,e,parseFloat)};Yr.questionPath=function(t,e){var r,o=\"\",a=Rs({hideEchoBack:!1,limitMessage:`$<error(\n)>Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var u,A,p;n=dH(n,!0),o=\"\";function h(E){E.split(/\\/|\\\\/).reduce(function(I,v){var x=c0.resolve(I+=v+c0.sep);if(!Yn.existsSync(x))Yn.mkdirSync(x);else if(!Yn.statSync(x).isDirectory())throw new Error(\"Non directory already exists: \"+x);return I},\"\")}try{if(u=Yn.existsSync(n),r=u?Yn.realpathSync(n):c0.resolve(n),!e.hasOwnProperty(\"exists\")&&!u||typeof e.exists==\"boolean\"&&e.exists!==u)return o=(u?\"Already exists\":\"No such file or directory\")+\": \"+r,!1;if(!u&&e.create&&(e.isDirectory?h(r):(h(c0.dirname(r)),Yn.closeSync(Yn.openSync(r,\"w\"))),r=Yn.realpathSync(r)),u&&(e.min||e.max||e.isFile||e.isDirectory)){if(A=Yn.statSync(r),e.isFile&&!A.isFile())return o=\"Not file: \"+r,!1;if(e.isDirectory&&!A.isDirectory())return o=\"Not directory: \"+r,!1;if(e.min&&A.size<+e.min||e.max&&A.size>+e.max)return o=\"Size \"+A.size+\" is out of range: \"+r,!1}if(typeof e.validate==\"function\"&&(p=e.validate(r))!==!0)return typeof p==\"string\"&&(o=p),!1}catch(E){return o=E+\"\",!1}return!0},phContent:function(n){return n===\"error\"?o:n!==\"min\"&&n!==\"max\"?null:e.hasOwnProperty(n)?e[n]+\"\":\"\"}});return e=e||{},t==null&&(t='Input path (you can \"cd\" and \"pwd\"): '),Yr.question(t,a),r};function rme(t,e){var r={},o={};return typeof t==\"object\"?(Object.keys(t).forEach(function(a){typeof t[a]==\"function\"&&(o[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=pH(a),n=r.args[0]||\"\",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!==\"_\"&&o.hasOwnProperty(n)?o[n].apply(a,r.args.slice(1)):o.hasOwnProperty(\"_\")?o._.apply(a,r.args):null,{res:a,forceNext:!1}},o.hasOwnProperty(\"_\")||(r.limit=function(){var a=r.args[0]||\"\";return e.caseSensitive||(a=a.toLowerCase()),o.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=pH(a),r.hRes=typeof t==\"function\"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}Yr.promptCL=function(t,e){var r=Rs({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),o=rme(t,r);return r.limit=o.limit,r.preCheck=o.preCheck,Yr.prompt(r),o.args};Yr.promptLoop=function(t,e){for(var r=Rs({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t(Yr.prompt(r)););};Yr.promptCLLoop=function(t,e){var r=Rs({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),o=rme(t,r);for(r.limit=o.limit,r.preCheck=o.preCheck;Yr.prompt(r),!o.hRes;);};Yr.promptSimShell=function(t){return Yr.prompt(Rs({hideEchoBack:!1,history:!0},t,{prompt:function(){return $d?\"$<cwd>>\":(process.env.USER||\"\")+(process.env.HOSTNAME?\"@\"+process.env.HOSTNAME.replace(/\\..*$/,\"\"):\"\")+\":$<cwdHome>$ \"}()}))};function nme(t,e,r){var o;return t==null&&(t=\"Are you sure? \"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s*:?\\s*$/,\"\")+\" [y/n]: \"),o=Yr.keyIn(t,Rs(e,{hideEchoBack:!1,limit:r,trueValue:\"y\",falseValue:\"n\",caseSensitive:!1})),typeof o==\"boolean\"?o:\"\"}Yr.keyInYN=function(t,e){return nme(t,e)};Yr.keyInYNStrict=function(t,e){return nme(t,e,\"yn\")};Yr.keyInPause=function(t,e){t==null&&(t=\"Continue...\"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s+$/,\"\")+\" (Hit any key)\"),Yr.keyIn(t,Rs({limit:null},e,{hideEchoBack:!0,mask:\"\"}))};Yr.keyInSelect=function(t,e,r){var o=Rs({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p===\"itemsCount\"?t.length+\"\":p===\"firstItem\"?(t[0]+\"\").trim():p===\"lastItem\"?(t[t.length-1]+\"\").trim():null}}),a=\"\",n={},u=49,A=`\n`;if(!Array.isArray(t)||!t.length||t.length>35)throw\"`items` must be Array (max length: 35).\";return t.forEach(function(p,h){var E=String.fromCharCode(u);a+=E,n[E]=h,A+=\"[\"+E+\"] \"+(p+\"\").trim()+`\n`,u=u===57?97:u+1}),(!r||r.cancel!==!1)&&(a+=\"0\",n[0]=-1,A+=\"[0] \"+(r&&r.cancel!=null&&typeof r.cancel!=\"boolean\"?(r.cancel+\"\").trim():\"CANCEL\")+`\n`),o.limit=a,A+=`\n`,e==null&&(e=\"Choose one from list: \"),(e+=\"\")&&((!r||r.guide!==!1)&&(e=e.replace(/\\s*:?\\s*$/,\"\")+\" [$<limit>]: \"),A+=e),n[Yr.keyIn(A,o).toLowerCase()]};Yr.getRawInput=function(){return yk};function P2(t,e){var r;return e.length&&(r={},r[t]=e[0]),Yr.setDefaultOptions(r)[t]}Yr.setPrint=function(){return P2(\"print\",arguments)};Yr.setPrompt=function(){return P2(\"prompt\",arguments)};Yr.setEncoding=function(){return P2(\"encoding\",arguments)};Yr.setMask=function(){return P2(\"mask\",arguments)};Yr.setBufferSize=function(){return P2(\"bufferSize\",arguments)}});var mH=_((r7t,hl)=>{(function(){var t={major:0,minor:2,patch:66,status:\"beta\"};tau_file_system={files:{},open:function(w,S,y){var F=tau_file_system.files[w];if(!F){if(y===\"read\")return null;F={path:w,text:\"\",type:S,get:function(z,X){return X===this.text.length||X>this.text.length?\"end_of_file\":this.text.substring(X,X+z)},put:function(z,X){return X===\"end_of_file\"?(this.text+=z,!0):X===\"past_end_of_file\"?null:(this.text=this.text.substring(0,X)+z+this.text.substring(X+z.length),!0)},get_byte:function(z){if(z===\"end_of_stream\")return-1;var X=Math.floor(z/2);if(this.text.length<=X)return-1;var Z=n(this.text[Math.floor(z/2)],0);return z%2===0?Z&255:Z/256>>>0},put_byte:function(z,X){var Z=X===\"end_of_stream\"?this.text.length:Math.floor(X/2);if(this.text.length<Z)return null;var ie=this.text.length===Z?-1:n(this.text[Math.floor(X/2)],0);return X%2===0?(ie=ie/256>>>0,ie=(ie&255)<<8|z&255):(ie=ie&255,ie=(z&255)<<8|ie&255),this.text.length===Z?this.text+=u(ie):this.text=this.text.substring(0,Z)+u(ie)+this.text.substring(Z+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y===\"write\"&&(F.text=\"\"),F}},tau_user_input={buffer:\"\",get:function(w,S){for(var y;tau_user_input.buffer.length<w;)y=window.prompt(),y&&(tau_user_input.buffer+=y);return y=tau_user_input.buffer.substr(0,w),tau_user_input.buffer=tau_user_input.buffer.substr(w),y}},tau_user_output={put:function(w,S){return console.log(w),!0},flush:function(){return!0}},nodejs_file_system={open:function(w,S,y){var F=ve(\"fs\"),z=F.openSync(w,y[0]);return y===\"read\"&&!F.existsSync(w)?null:{get:function(X,Z){var ie=new Buffer(X);return F.readSync(z,ie,0,X,Z),ie.toString()},put:function(X,Z){var ie=Buffer.from(X);if(Z===\"end_of_file\")F.writeSync(z,ie);else{if(Z===\"past_end_of_file\")return null;F.writeSync(z,ie,0,ie.length,Z)}return!0},get_byte:function(X){return null},put_byte:function(X,Z){return null},flush:function(){return!0},close:function(){return F.closeSync(z),!0}}}},nodejs_user_input={buffer:\"\",get:function(w,S){for(var y,F=ime();nodejs_user_input.buffer.length<w;)nodejs_user_input.buffer+=F.question();return y=nodejs_user_input.buffer.substr(0,w),nodejs_user_input.buffer=nodejs_user_input.buffer.substr(w),y}},nodejs_user_output={put:function(w,S){return process.stdout.write(w),!0},flush:function(){return!0}};var e;Array.prototype.indexOf?e=function(w,S){return w.indexOf(S)}:e=function(w,S){for(var y=w.length,F=0;F<y;F++)if(S===w[F])return F;return-1};var r=function(w,S){if(w.length!==0){for(var y=w[0],F=w.length,z=1;z<F;z++)y=S(y,w[z]);return y}},o;Array.prototype.map?o=function(w,S){return w.map(S)}:o=function(w,S){for(var y=[],F=w.length,z=0;z<F;z++)y.push(S(w[z]));return y};var a;Array.prototype.filter?a=function(w,S){return w.filter(S)}:a=function(w,S){for(var y=[],F=w.length,z=0;z<F;z++)S(w[z])&&y.push(w[z]);return y};var n;String.prototype.codePointAt?n=function(w,S){return w.codePointAt(S)}:n=function(w,S){return w.charCodeAt(S)};var u;String.fromCodePoint?u=function(){return String.fromCodePoint.apply(null,arguments)}:u=function(){return String.fromCharCode.apply(null,arguments)};var A=0,p=1,h=/(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)|\\\\x([0-9a-fA-F]+)\\\\|\\\\([0-7]+)\\\\|(\\\\\\\\)|(\\\\')|('')|(\\\\\")|(\\\\`)|(\\\\.)|(.)/g,E={\"\\\\a\":7,\"\\\\b\":8,\"\\\\f\":12,\"\\\\n\":10,\"\\\\r\":13,\"\\\\t\":9,\"\\\\v\":11};function I(w){var S=[],y=!1;return w.replace(h,function(F,z,X,Z,ie,be,Le,ot,dt,qt,$t,bt,an,Qr,mr,br,Wr){switch(!0){case dt!==void 0:return S.push(parseInt(dt,16)),\"\";case qt!==void 0:return S.push(parseInt(qt,8)),\"\";case $t!==void 0:case bt!==void 0:case an!==void 0:case Qr!==void 0:case mr!==void 0:return S.push(n(F.substr(1),0)),\"\";case Wr!==void 0:return S.push(n(Wr,0)),\"\";case br!==void 0:y=!0;default:return S.push(E[F]),\"\"}}),y?null:S}function v(w,S){var y=\"\";if(w.length<2)return w;try{w=w.replace(/\\\\([0-7]+)\\\\/g,function(Z,ie){return u(parseInt(ie,8))}),w=w.replace(/\\\\x([0-9a-fA-F]+)\\\\/g,function(Z,ie){return u(parseInt(ie,16))})}catch{return null}for(var F=0;F<w.length;F++){var z=w.charAt(F),X=w.charAt(F+1);if(z===S&&X===S)F++,y+=S;else if(z===\"\\\\\")if([\"a\",\"b\",\"f\",\"n\",\"r\",\"t\",\"v\",\"'\",'\"',\"\\\\\",\"a\",\"\\b\",\"\\f\",`\n`,\"\\r\",\"\t\",\"\\v\"].indexOf(X)!==-1)switch(F+=1,X){case\"a\":y+=\"a\";break;case\"b\":y+=\"\\b\";break;case\"f\":y+=\"\\f\";break;case\"n\":y+=`\n`;break;case\"r\":y+=\"\\r\";break;case\"t\":y+=\"\t\";break;case\"v\":y+=\"\\v\";break;case\"'\":y+=\"'\";break;case'\"':y+='\"';break;case\"\\\\\":y+=\"\\\\\";break}else return null;else y+=z}return y}function x(w){for(var S=\"\",y=0;y<w.length;y++)switch(w.charAt(y)){case\"'\":S+=\"\\\\'\";break;case\"\\\\\":S+=\"\\\\\\\\\";break;case\"\\b\":S+=\"\\\\b\";break;case\"\\f\":S+=\"\\\\f\";break;case`\n`:S+=\"\\\\n\";break;case\"\\r\":S+=\"\\\\r\";break;case\"\t\":S+=\"\\\\t\";break;case\"\\v\":S+=\"\\\\v\";break;default:S+=w.charAt(y);break}return S}function C(w){var S=w.substr(2);switch(w.substr(0,2).toLowerCase()){case\"0x\":return parseInt(S,16);case\"0b\":return parseInt(S,2);case\"0o\":return parseInt(S,8);case\"0'\":return I(S)[0];default:return parseFloat(w)}}var R={whitespace:/^\\s*(?:(?:%.*)|(?:\\/\\*(?:\\n|\\r|.)*?\\*\\/)|(?:\\s+))\\s*/,variable:/^(?:[A-Z_][a-zA-Z0-9_]*)/,atom:/^(\\!|,|;|[a-z][0-9a-zA-Z_]*|[#\\$\\&\\*\\+\\-\\.\\/\\:\\<\\=\\>\\?\\@\\^\\~\\\\]+|'(?:[^']*?(?:\\\\(?:x?\\d+)?\\\\)*(?:'')*(?:\\\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\\\[abfnrtv\\\\'\"`]|\\\\x?\\d+\\\\|[^\\\\])|\\d+(?:\\.\\d+(?:[eE][+-]?\\d+)?)?)/,string:/^(?:\"([^\"]|\"\"|\\\\\")*\"|`([^`]|``|\\\\`)*`)/,l_brace:/^(?:\\[)/,r_brace:/^(?:\\])/,l_bracket:/^(?:\\{)/,r_bracket:/^(?:\\})/,bar:/^(?:\\|)/,l_paren:/^(?:\\()/,r_paren:/^(?:\\))/};function N(w,S){return w.get_flag(\"char_conversion\").id===\"on\"?S.replace(/./g,function(y){return w.get_char_conversion(y)}):S}function U(w){this.thread=w,this.text=\"\",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var S,y=0,F=0,z=0,X=[],Z=!1;if(w){var ie=this.tokens[w-1];y=ie.len,S=N(this.thread,this.text.substr(ie.len)),F=ie.line,z=ie.start}else S=this.text;if(/^\\s*$/.test(S))return null;for(;S!==\"\";){var be=[],Le=!1;if(/^\\n/.exec(S)!==null){F++,z=0,y++,S=S.replace(/\\n/,\"\"),Z=!0;continue}for(var ot in R)if(R.hasOwnProperty(ot)){var dt=R[ot].exec(S);dt&&be.push({value:dt[0],name:ot,matches:dt})}if(!be.length)return this.set_last_tokens([{value:S,matches:[],name:\"lexical\",line:F,start:z}]);var ie=r(be,function(Qr,mr){return Qr.value.length>=mr.value.length?Qr:mr});switch(ie.start=z,ie.line=F,S=S.replace(ie.value,\"\"),z+=ie.value.length,y+=ie.value.length,ie.name){case\"atom\":ie.raw=ie.value,ie.value.charAt(0)===\"'\"&&(ie.value=v(ie.value.substr(1,ie.value.length-2),\"'\"),ie.value===null&&(ie.name=\"lexical\",ie.value=\"unknown escape sequence\"));break;case\"number\":ie.float=ie.value.substring(0,2)!==\"0x\"&&ie.value.match(/[.eE]/)!==null&&ie.value!==\"0'.\",ie.value=C(ie.value),ie.blank=Le;break;case\"string\":var qt=ie.value.charAt(0);ie.value=v(ie.value.substr(1,ie.value.length-2),qt),ie.value===null&&(ie.name=\"lexical\",ie.value=\"unknown escape sequence\");break;case\"whitespace\":var $t=X[X.length-1];$t&&($t.space=!0),Le=!0;continue;case\"r_bracket\":X.length>0&&X[X.length-1].name===\"l_bracket\"&&(ie=X.pop(),ie.name=\"atom\",ie.value=\"{}\",ie.raw=\"{}\",ie.space=!1);break;case\"r_brace\":X.length>0&&X[X.length-1].name===\"l_brace\"&&(ie=X.pop(),ie.name=\"atom\",ie.value=\"[]\",ie.raw=\"[]\",ie.space=!1);break}ie.len=y,X.push(ie),Le=!1}var bt=this.set_last_tokens(X);return bt.length===0?null:bt};function J(w,S,y,F,z){if(!S[y])return{type:A,value:b.error.syntax(S[y-1],\"expression expected\",!0)};var X;if(F===\"0\"){var Z=S[y];switch(Z.name){case\"number\":return{type:p,len:y+1,value:new b.type.Num(Z.value,Z.float)};case\"variable\":return{type:p,len:y+1,value:new b.type.Var(Z.value)};case\"string\":var ie;switch(w.get_flag(\"double_quotes\").id){case\"atom\":ie=new H(Z.value,[]);break;case\"codes\":ie=new H(\"[]\",[]);for(var be=Z.value.length-1;be>=0;be--)ie=new H(\".\",[new b.type.Num(n(Z.value,be),!1),ie]);break;case\"chars\":ie=new H(\"[]\",[]);for(var be=Z.value.length-1;be>=0;be--)ie=new H(\".\",[new b.type.Term(Z.value.charAt(be),[]),ie]);break}return{type:p,len:y+1,value:ie};case\"l_paren\":var bt=J(w,S,y+1,w.__get_max_priority(),!0);return bt.type!==p?bt:S[bt.len]&&S[bt.len].name===\"r_paren\"?(bt.len++,bt):{type:A,derived:!0,value:b.error.syntax(S[bt.len]?S[bt.len]:S[bt.len-1],\") or operator expected\",!S[bt.len])};case\"l_bracket\":var bt=J(w,S,y+1,w.__get_max_priority(),!0);return bt.type!==p?bt:S[bt.len]&&S[bt.len].name===\"r_bracket\"?(bt.len++,bt.value=new H(\"{}\",[bt.value]),bt):{type:A,derived:!0,value:b.error.syntax(S[bt.len]?S[bt.len]:S[bt.len-1],\"} or operator expected\",!S[bt.len])}}var Le=te(w,S,y,z);return Le.type===p||Le.derived||(Le=ae(w,S,y),Le.type===p||Le.derived)?Le:{type:A,derived:!1,value:b.error.syntax(S[y],\"unexpected token\")}}var ot=w.__get_max_priority(),dt=w.__get_next_priority(F),qt=y;if(S[y].name===\"atom\"&&S[y+1]&&(S[y].space||S[y+1].name!==\"l_paren\")){var Z=S[y++],$t=w.__lookup_operator_classes(F,Z.value);if($t&&$t.indexOf(\"fy\")>-1){var bt=J(w,S,y,F,z);if(bt.type!==A)return Z.value===\"-\"&&!Z.space&&b.type.is_number(bt.value)?{value:new b.type.Num(-bt.value.value,bt.value.is_float),len:bt.len,type:p}:{value:new b.type.Term(Z.value,[bt.value]),len:bt.len,type:p};X=bt}else if($t&&$t.indexOf(\"fx\")>-1){var bt=J(w,S,y,dt,z);if(bt.type!==A)return{value:new b.type.Term(Z.value,[bt.value]),len:bt.len,type:p};X=bt}}y=qt;var bt=J(w,S,y,dt,z);if(bt.type===p){y=bt.len;var Z=S[y];if(S[y]&&(S[y].name===\"atom\"&&w.__lookup_operator_classes(F,Z.value)||S[y].name===\"bar\"&&w.__lookup_operator_classes(F,\"|\"))){var an=dt,Qr=F,$t=w.__lookup_operator_classes(F,Z.value);if($t.indexOf(\"xf\")>-1)return{value:new b.type.Term(Z.value,[bt.value]),len:++bt.len,type:p};if($t.indexOf(\"xfx\")>-1){var mr=J(w,S,y+1,an,z);return mr.type===p?{value:new b.type.Term(Z.value,[bt.value,mr.value]),len:mr.len,type:p}:(mr.derived=!0,mr)}else if($t.indexOf(\"xfy\")>-1){var mr=J(w,S,y+1,Qr,z);return mr.type===p?{value:new b.type.Term(Z.value,[bt.value,mr.value]),len:mr.len,type:p}:(mr.derived=!0,mr)}else if(bt.type!==A)for(;;){y=bt.len;var Z=S[y];if(Z&&Z.name===\"atom\"&&w.__lookup_operator_classes(F,Z.value)){var $t=w.__lookup_operator_classes(F,Z.value);if($t.indexOf(\"yf\")>-1)bt={value:new b.type.Term(Z.value,[bt.value]),len:++y,type:p};else if($t.indexOf(\"yfx\")>-1){var mr=J(w,S,++y,an,z);if(mr.type===A)return mr.derived=!0,mr;y=mr.len,bt={value:new b.type.Term(Z.value,[bt.value,mr.value]),len:y,type:p}}else break}else break}}else X={type:A,value:b.error.syntax(S[bt.len-1],\"operator expected\")};return bt}return bt}function te(w,S,y,F){if(!S[y]||S[y].name===\"atom\"&&S[y].raw===\".\"&&!F&&(S[y].space||!S[y+1]||S[y+1].name!==\"l_paren\"))return{type:A,derived:!1,value:b.error.syntax(S[y-1],\"unfounded token\")};var z=S[y],X=[];if(S[y].name===\"atom\"&&S[y].raw!==\",\"){if(y++,S[y-1].space)return{type:p,len:y,value:new b.type.Term(z.value,X)};if(S[y]&&S[y].name===\"l_paren\"){if(S[y+1]&&S[y+1].name===\"r_paren\")return{type:A,derived:!0,value:b.error.syntax(S[y+1],\"argument expected\")};var Z=J(w,S,++y,\"999\",!0);if(Z.type===A)return Z.derived?Z:{type:A,derived:!0,value:b.error.syntax(S[y]?S[y]:S[y-1],\"argument expected\",!S[y])};for(X.push(Z.value),y=Z.len;S[y]&&S[y].name===\"atom\"&&S[y].value===\",\";){if(Z=J(w,S,y+1,\"999\",!0),Z.type===A)return Z.derived?Z:{type:A,derived:!0,value:b.error.syntax(S[y+1]?S[y+1]:S[y],\"argument expected\",!S[y+1])};X.push(Z.value),y=Z.len}if(S[y]&&S[y].name===\"r_paren\")y++;else return{type:A,derived:!0,value:b.error.syntax(S[y]?S[y]:S[y-1],\", or ) expected\",!S[y])}}return{type:p,len:y,value:new b.type.Term(z.value,X)}}return{type:A,derived:!1,value:b.error.syntax(S[y],\"term expected\")}}function ae(w,S,y){if(!S[y])return{type:A,derived:!1,value:b.error.syntax(S[y-1],\"[ expected\")};if(S[y]&&S[y].name===\"l_brace\"){var F=J(w,S,++y,\"999\",!0),z=[F.value],X=void 0;if(F.type===A)return S[y]&&S[y].name===\"r_brace\"?{type:p,len:y+1,value:new b.type.Term(\"[]\",[])}:{type:A,derived:!0,value:b.error.syntax(S[y],\"] expected\")};for(y=F.len;S[y]&&S[y].name===\"atom\"&&S[y].value===\",\";){if(F=J(w,S,y+1,\"999\",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:b.error.syntax(S[y+1]?S[y+1]:S[y],\"argument expected\",!S[y+1])};z.push(F.value),y=F.len}var Z=!1;if(S[y]&&S[y].name===\"bar\"){if(Z=!0,F=J(w,S,y+1,\"999\",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:b.error.syntax(S[y+1]?S[y+1]:S[y],\"argument expected\",!S[y+1])};X=F.value,y=F.len}return S[y]&&S[y].name===\"r_brace\"?{type:p,len:y+1,value:g(z,X)}:{type:A,derived:!0,value:b.error.syntax(S[y]?S[y]:S[y-1],Z?\"] expected\":\", or | or ] expected\",!S[y])}}return{type:A,derived:!1,value:b.error.syntax(S[y],\"list expected\")}}function fe(w,S,y){var F=S[y].line,z=J(w,S,y,w.__get_max_priority(),!1),X=null,Z;if(z.type!==A)if(y=z.len,S[y]&&S[y].name===\"atom\"&&S[y].raw===\".\")if(y++,b.type.is_term(z.value)){if(z.value.indicator===\":-/2\"?(X=new b.type.Rule(z.value.args[0],we(z.value.args[1])),Z={value:X,len:y,type:p}):z.value.indicator===\"-->/2\"?(X=he(new b.type.Rule(z.value.args[0],z.value.args[1]),w),X.body=we(X.body),Z={value:X,len:y,type:b.type.is_rule(X)?p:A}):(X=new b.type.Rule(z.value,null),Z={value:X,len:y,type:p}),X){var ie=X.singleton_variables();ie.length>0&&w.throw_warning(b.warning.singleton(ie,X.head.indicator,F))}return Z}else return{type:A,value:b.error.syntax(S[y],\"callable expected\")};else return{type:A,value:b.error.syntax(S[y]?S[y]:S[y-1],\". or operator expected\")};return z}function ce(w,S,y){y=y||{},y.from=y.from?y.from:\"$tau-js\",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},X;F.new_text(S);var Z=0,ie=F.get_tokens(Z);do{if(ie===null||!ie[Z])break;var be=fe(w,ie,Z);if(be.type===A)return new H(\"throw\",[be.value]);if(be.value.body===null&&be.value.head.indicator===\"?-/1\"){var Le=new Je(w.session);Le.add_goal(be.value.head.args[0]),Le.answer(function(dt){b.type.is_error(dt)?w.throw_warning(dt.args[0]):(dt===!1||dt===null)&&w.throw_warning(b.warning.failed_goal(be.value.head.args[0],be.len))}),Z=be.len;var ot=!0}else if(be.value.body===null&&be.value.head.indicator===\":-/1\"){var ot=w.run_directive(be.value.head.args[0]);Z=be.len,be.value.head.args[0].indicator===\"char_conversion/2\"&&(ie=F.get_tokens(Z),Z=0)}else{X=be.value.head.indicator,y.reconsult!==!1&&z[X]!==!0&&!w.is_multifile_predicate(X)&&(w.session.rules[X]=a(w.session.rules[X]||[],function(qt){return qt.dynamic}),z[X]=!0);var ot=w.add_rule(be.value,y);Z=be.len}if(!ot)return ot}while(!0);return!0}function me(w,S){var y=new U(w);y.new_text(S);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var X=J(w,z,0,w.__get_max_priority(),!1);if(X.type!==A){var Z=X.len,ie=Z;if(z[Z]&&z[Z].name===\"atom\"&&z[Z].raw===\".\")w.add_goal(we(X.value));else{var be=z[Z];return new H(\"throw\",[b.error.syntax(be||z[Z-1],\". or operator expected\",!be)])}F=X.len+1}else return new H(\"throw\",[X.value])}while(!0);return!0}function he(w,S){w=w.rename(S);var y=S.next_free_variable(),F=Be(w.body,y,S);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new H(w.head.id,w.head.args),w)}function Be(w,S,y){var F;if(b.type.is_term(w)&&w.indicator===\"!/0\")return{value:w,variable:S,error:!1};if(b.type.is_term(w)&&w.indicator===\",/2\"){var z=Be(w.args[0],S,y);if(z.error)return z;var X=Be(w.args[1],z.variable,y);return X.error?X:{value:new H(\",\",[z.value,X.value]),variable:X.variable,error:!1}}else{if(b.type.is_term(w)&&w.indicator===\"{}/1\")return{value:w.args[0],variable:S,error:!1};if(b.type.is_empty_list(w))return{value:new H(\"true\",[]),variable:S,error:!1};if(b.type.is_list(w)){F=y.next_free_variable();for(var Z=w,ie;Z.indicator===\"./2\";)ie=Z,Z=Z.args[1];return b.type.is_variable(Z)?{value:b.error.instantiation(\"DCG\"),variable:S,error:!0}:b.type.is_empty_list(Z)?(ie.args[1]=F,{value:new H(\"=\",[S,w]),variable:F,error:!1}):{value:b.error.type(\"list\",w,\"DCG\"),variable:S,error:!0}}else return b.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([S,F]),w=new H(w.id,w.args),{value:w,variable:F,error:!1}):{value:b.error.type(\"callable\",w,\"DCG\"),variable:S,error:!0}}}function we(w){return b.type.is_variable(w)?new H(\"call\",[w]):b.type.is_term(w)&&[\",/2\",\";/2\",\"->/2\"].indexOf(w.indicator)!==-1?new H(w.id,[we(w.args[0]),we(w.args[1])]):w}function g(w,S){for(var y=S||new b.type.Term(\"[]\",[]),F=w.length-1;F>=0;F--)y=new b.type.Term(\".\",[w[F],y]);return y}function Ee(w,S){for(var y=w.length-1;y>=0;y--)w[y]===S&&w.splice(y,1)}function Pe(w){for(var S={},y=[],F=0;F<w.length;F++)w[F]in S||(y.push(w[F]),S[w[F]]=!0);return y}function le(w,S,y,F){if(w.session.rules[y]!==null){for(var z=0;z<w.session.rules[y].length;z++)if(w.session.rules[y][z]===F){w.session.rules[y].splice(z,1),w.success(S);break}}}function ne(w){return function(S,y,F){var z=F.args[0],X=F.args.slice(1,w);if(b.type.is_variable(z))S.throw_error(b.error.instantiation(S.level));else if(!b.type.is_callable(z))S.throw_error(b.error.type(\"callable\",z,S.level));else{var Z=new H(z.id,z.args.concat(X));S.prepend([new xe(y.goal.replace(Z),y.substitution,y)])}}}function ee(w){for(var S=w.length-1;S>=0;S--)if(w.charAt(S)===\"/\")return new H(\"/\",[new H(w.substring(0,S)),new Fe(parseInt(w.substring(S+1)),!1)])}function Ie(w){this.id=w}function Fe(w,S){this.is_float=S!==void 0?S:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var At=0;function H(w,S,y){this.ref=y||++At,this.id=w,this.args=S||[],this.indicator=w+\"/\"+this.args.length}var at=0;function Re(w,S,y,F,z,X){this.id=at++,this.stream=w,this.mode=S,this.alias=y,this.type=F!==void 0?F:\"text\",this.reposition=z!==void 0?z:!0,this.eof_action=X!==void 0?X:\"eof_code\",this.position=this.mode===\"append\"?\"end_of_stream\":0,this.output=this.mode===\"write\"||this.mode===\"append\",this.input=this.mode===\"read\"}function ke(w){w=w||{},this.links=w}function xe(w,S,y){S=S||new ke,y=y||null,this.goal=w,this.substitution=S,this.parent=y}function He(w,S,y){this.head=w,this.body=S,this.dynamic=y||!1}function Te(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new Je(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Re(typeof hl<\"u\"&&hl.exports?nodejs_user_input:tau_user_input,\"read\",\"user_input\",\"text\",!1,\"reset\"),user_output:new Re(typeof hl<\"u\"&&hl.exports?nodejs_user_output:tau_user_output,\"write\",\"user_output\",\"text\",!1,\"eof_code\")},this.file_system=typeof hl<\"u\"&&hl.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(S){return S.substitution},this.format_error=function(S){return S.goal},this.flag={bounded:b.flag.bounded.value,max_integer:b.flag.max_integer.value,min_integer:b.flag.min_integer.value,integer_rounding_function:b.flag.integer_rounding_function.value,char_conversion:b.flag.char_conversion.value,debug:b.flag.debug.value,max_arity:b.flag.max_arity.value,unknown:b.flag.unknown.value,double_quotes:b.flag.double_quotes.value,occurs_check:b.flag.occurs_check.value,dialect:b.flag.dialect.value,version_data:b.flag.version_data.value,nodejs:b.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{\":-\":[\"fx\",\"xfx\"],\"-->\":[\"xfx\"],\"?-\":[\"fx\"]},1100:{\";\":[\"xfy\"]},1050:{\"->\":[\"xfy\"]},1e3:{\",\":[\"xfy\"]},900:{\"\\\\+\":[\"fy\"]},700:{\"=\":[\"xfx\"],\"\\\\=\":[\"xfx\"],\"==\":[\"xfx\"],\"\\\\==\":[\"xfx\"],\"@<\":[\"xfx\"],\"@=<\":[\"xfx\"],\"@>\":[\"xfx\"],\"@>=\":[\"xfx\"],\"=..\":[\"xfx\"],is:[\"xfx\"],\"=:=\":[\"xfx\"],\"=\\\\=\":[\"xfx\"],\"<\":[\"xfx\"],\"=<\":[\"xfx\"],\">\":[\"xfx\"],\">=\":[\"xfx\"]},600:{\":\":[\"xfy\"]},500:{\"+\":[\"yfx\"],\"-\":[\"yfx\"],\"/\\\\\":[\"yfx\"],\"\\\\/\":[\"yfx\"]},400:{\"*\":[\"yfx\"],\"/\":[\"yfx\"],\"//\":[\"yfx\"],rem:[\"yfx\"],mod:[\"yfx\"],\"<<\":[\"yfx\"],\">>\":[\"yfx\"]},200:{\"**\":[\"xfx\"],\"^\":[\"xfy\"],\"-\":[\"fy\"],\"+\":[\"fy\"],\"\\\\\":[\"fy\"]}}}function Je(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level=\"top_level/0\",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function je(w,S,y){this.id=w,this.rules=S,this.exports=y,b.module[w]=this}je.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},Ie.prototype.unify=function(w,S){if(S&&e(w.variables(),this.id)!==-1&&!b.type.is_variable(w))return null;var y={};return y[this.id]=w,new ke(y)},Fe.prototype.unify=function(w,S){return b.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new ke:null},H.prototype.unify=function(w,S){if(b.type.is_term(w)&&this.indicator===w.indicator){for(var y=new ke,F=0;F<this.args.length;F++){var z=b.unify(this.args[F].apply(y),w.args[F].apply(y),S);if(z===null)return null;for(var X in z.links)y.links[X]=z.links[X];y=y.apply(z)}return y}return null},Re.prototype.unify=function(w,S){return b.type.is_stream(w)&&this.id===w.id?new ke:null},Ie.prototype.toString=function(w){return this.id},Fe.prototype.toString=function(w){return this.is_float&&e(this.value.toString(),\".\")===-1?this.value+\".0\":this.value.toString()},H.prototype.toString=function(w,S,y){if(w=w||{},w.quoted=w.quoted===void 0?!0:w.quoted,w.ignore_ops=w.ignore_ops===void 0?!1:w.ignore_ops,w.numbervars=w.numbervars===void 0?!1:w.numbervars,S=S===void 0?1200:S,y=y===void 0?\"\":y,w.numbervars&&this.indicator===\"$VAR/1\"&&b.type.is_integer(this.args[0])&&this.args[0].value>=0){var F=this.args[0].value,z=Math.floor(F/26),X=F%26;return\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"[X]+(z!==0?z:\"\")}switch(this.indicator){case\"[]/0\":case\"{}/0\":case\"!/0\":return this.id;case\"{}/1\":return\"{\"+this.args[0].toString(w)+\"}\";case\"./2\":for(var Z=\"[\"+this.args[0].toString(w),ie=this.args[1];ie.indicator===\"./2\";)Z+=\", \"+ie.args[0].toString(w),ie=ie.args[1];return ie.indicator!==\"[]/0\"&&(Z+=\"|\"+ie.toString(w)),Z+=\"]\",Z;case\",/2\":return\"(\"+this.args[0].toString(w)+\", \"+this.args[1].toString(w)+\")\";default:var be=this.id,Le=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Le===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(be)&&be!==\"{}\"&&be!==\"[]\"&&(be=\"'\"+x(be)+\"'\"),be+(this.args.length?\"(\"+o(this.args,function($t){return $t.toString(w)}).join(\", \")+\")\":\"\");var ot=Le.priority>S.priority||Le.priority===S.priority&&(Le.class===\"xfy\"&&this.indicator!==S.indicator||Le.class===\"yfx\"&&this.indicator!==S.indicator||this.indicator===S.indicator&&Le.class===\"yfx\"&&y===\"right\"||this.indicator===S.indicator&&Le.class===\"xfy\"&&y===\"left\");Le.indicator=this.indicator;var dt=ot?\"(\":\"\",qt=ot?\")\":\"\";return this.args.length===0?\"(\"+this.id+\")\":[\"fy\",\"fx\"].indexOf(Le.class)!==-1?dt+be+\" \"+this.args[0].toString(w,Le)+qt:[\"yf\",\"xf\"].indexOf(Le.class)!==-1?dt+this.args[0].toString(w,Le)+\" \"+be+qt:dt+this.args[0].toString(w,Le,\"left\")+\" \"+this.id+\" \"+this.args[1].toString(w,Le,\"right\")+qt}},Re.prototype.toString=function(w){return\"<stream>(\"+this.id+\")\"},ke.prototype.toString=function(w){var S=\"{\";for(var y in this.links)!this.links.hasOwnProperty(y)||(S!==\"{\"&&(S+=\", \"),S+=y+\"/\"+this.links[y].toString(w));return S+=\"}\",S},xe.prototype.toString=function(w){return this.goal===null?\"<\"+this.substitution.toString(w)+\">\":\"<\"+this.goal.toString(w)+\", \"+this.substitution.toString(w)+\">\"},He.prototype.toString=function(w){return this.body?this.head.toString(w)+\" :- \"+this.body.toString(w)+\".\":this.head.toString(w)+\".\"},Te.prototype.toString=function(w){for(var S=\"\",y=0;y<this.modules.length;y++)S+=\":- use_module(library(\"+this.modules[y]+`)).\n`;S+=`\n`;for(key in this.rules)for(y=0;y<this.rules[key].length;y++)S+=this.rules[key][y].toString(w),S+=`\n`;return S},Ie.prototype.clone=function(){return new Ie(this.id)},Fe.prototype.clone=function(){return new Fe(this.value,this.is_float)},H.prototype.clone=function(){return new H(this.id,o(this.args,function(w){return w.clone()}))},Re.prototype.clone=function(){return new Stram(this.stream,this.mode,this.alias,this.type,this.reposition,this.eof_action)},ke.prototype.clone=function(){var w={};for(var S in this.links)!this.links.hasOwnProperty(S)||(w[S]=this.links[S].clone());return new ke(w)},xe.prototype.clone=function(){return new xe(this.goal.clone(),this.substitution.clone(),this.parent)},He.prototype.clone=function(){return new He(this.head.clone(),this.body!==null?this.body.clone():null)},Ie.prototype.equals=function(w){return b.type.is_variable(w)&&this.id===w.id},Fe.prototype.equals=function(w){return b.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float},H.prototype.equals=function(w){if(!b.type.is_term(w)||this.indicator!==w.indicator)return!1;for(var S=0;S<this.args.length;S++)if(!this.args[S].equals(w.args[S]))return!1;return!0},Re.prototype.equals=function(w){return b.type.is_stream(w)&&this.id===w.id},ke.prototype.equals=function(w){var S;if(!b.type.is_substitution(w))return!1;for(S in this.links)if(!!this.links.hasOwnProperty(S)&&(!w.links[S]||!this.links[S].equals(w.links[S])))return!1;for(S in w.links)if(!!w.links.hasOwnProperty(S)&&!this.links[S])return!1;return!0},xe.prototype.equals=function(w){return b.type.is_state(w)&&this.goal.equals(w.goal)&&this.substitution.equals(w.substitution)&&this.parent===w.parent},He.prototype.equals=function(w){return b.type.is_rule(w)&&this.head.equals(w.head)&&(this.body===null&&w.body===null||this.body!==null&&this.body.equals(w.body))},Ie.prototype.rename=function(w){return w.get_free_variable(this)},Fe.prototype.rename=function(w){return this},H.prototype.rename=function(w){return new H(this.id,o(this.args,function(S){return S.rename(w)}))},Re.prototype.rename=function(w){return this},He.prototype.rename=function(w){return new He(this.head.rename(w),this.body!==null?this.body.rename(w):null)},Ie.prototype.variables=function(){return[this.id]},Fe.prototype.variables=function(){return[]},H.prototype.variables=function(){return[].concat.apply([],o(this.args,function(w){return w.variables()}))},Re.prototype.variables=function(){return[]},He.prototype.variables=function(){return this.body===null?this.head.variables():this.head.variables().concat(this.body.variables())},Ie.prototype.apply=function(w){return w.lookup(this.id)?w.lookup(this.id):this},Fe.prototype.apply=function(w){return this},H.prototype.apply=function(w){if(this.indicator===\"./2\"){for(var S=[],y=this;y.indicator===\"./2\";)S.push(y.args[0].apply(w)),y=y.args[1];for(var F=y.apply(w),z=S.length-1;z>=0;z--)F=new H(\".\",[S[z],F]);return F}return new H(this.id,o(this.args,function(X){return X.apply(w)}),this.ref)},Re.prototype.apply=function(w){return this},He.prototype.apply=function(w){return new He(this.head.apply(w),this.body!==null?this.body.apply(w):null)},ke.prototype.apply=function(w){var S,y={};for(S in this.links)!this.links.hasOwnProperty(S)||(y[S]=this.links[S].apply(w));return new ke(y)},H.prototype.select=function(){for(var w=this;w.indicator===\",/2\";)w=w.args[0];return w},H.prototype.replace=function(w){return this.indicator===\",/2\"?this.args[0].indicator===\",/2\"?new H(\",\",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new H(\",\",[w,this.args[1]]):w},H.prototype.search=function(w){if(b.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var S=0;S<this.args.length;S++)if(b.type.is_term(this.args[S])&&this.args[S].search(w))return!0;return!1},Te.prototype.get_current_input=function(){return this.current_input},Je.prototype.get_current_input=function(){return this.session.get_current_input()},Te.prototype.get_current_output=function(){return this.current_output},Je.prototype.get_current_output=function(){return this.session.get_current_output()},Te.prototype.set_current_input=function(w){this.current_input=w},Je.prototype.set_current_input=function(w){return this.session.set_current_input(w)},Te.prototype.set_current_output=function(w){this.current_input=w},Je.prototype.set_current_output=function(w){return this.session.set_current_output(w)},Te.prototype.get_stream_by_alias=function(w){return this.streams[w]},Je.prototype.get_stream_by_alias=function(w){return this.session.get_stream_by_alias(w)},Te.prototype.file_system_open=function(w,S,y){return this.file_system.open(w,S,y)},Je.prototype.file_system_open=function(w,S,y){return this.session.file_system_open(w,S,y)},Te.prototype.get_char_conversion=function(w){return this.__char_conversion[w]||w},Je.prototype.get_char_conversion=function(w){return this.session.get_char_conversion(w)},Te.prototype.parse=function(w){return this.thread.parse(w)},Je.prototype.parse=function(w){var S=new U(this);S.new_text(w);var y=S.get_tokens();if(y===null)return!1;var F=J(this,y,0,this.__get_max_priority(),!1);return F.len!==y.length?!1:{value:F.value,expr:F,tokens:y}},Te.prototype.get_flag=function(w){return this.flag[w]},Je.prototype.get_flag=function(w){return this.session.get_flag(w)},Te.prototype.add_rule=function(w,S){return S=S||{},S.from=S.from?S.from:\"$tau-js\",this.src_predicates[w.head.indicator]=S.from,this.rules[w.head.indicator]||(this.rules[w.head.indicator]=[]),this.rules[w.head.indicator].push(w),this.public_predicates.hasOwnProperty(w.head.indicator)||(this.public_predicates[w.head.indicator]=!1),!0},Je.prototype.add_rule=function(w,S){return this.session.add_rule(w,S)},Te.prototype.run_directive=function(w){this.thread.run_directive(w)},Je.prototype.run_directive=function(w){return b.type.is_directive(w)?(b.directive[w.indicator](this,w),!0):!1},Te.prototype.__get_max_priority=function(){return\"1200\"},Je.prototype.__get_max_priority=function(){return this.session.__get_max_priority()},Te.prototype.__get_next_priority=function(w){var S=0;w=parseInt(w);for(var y in this.__operators)if(!!this.__operators.hasOwnProperty(y)){var F=parseInt(y);F>S&&F<w&&(S=F)}return S.toString()},Je.prototype.__get_next_priority=function(w){return this.session.__get_next_priority(w)},Te.prototype.__lookup_operator_classes=function(w,S){return this.__operators.hasOwnProperty(w)&&this.__operators[w][S]instanceof Array&&this.__operators[w][S]||!1},Je.prototype.__lookup_operator_classes=function(w,S){return this.session.__lookup_operator_classes(w,S)},Te.prototype.lookup_operator=function(w,S){for(var y in this.__operators)if(this.__operators[y][w]){for(var F=0;F<this.__operators[y][w].length;F++)if(S===0||this.__operators[y][w][F].length===S+1)return{priority:y,class:this.__operators[y][w][F]}}return null},Je.prototype.lookup_operator=function(w,S){return this.session.lookup_operator(w,S)},Te.prototype.throw_warning=function(w){this.thread.throw_warning(w)},Je.prototype.throw_warning=function(w){this.warnings.push(w)},Te.prototype.get_warnings=function(){return this.thread.get_warnings()},Je.prototype.get_warnings=function(){return this.warnings},Te.prototype.add_goal=function(w,S){this.thread.add_goal(w,S)},Je.prototype.add_goal=function(w,S,y){y=y||null,S===!0&&(this.points=[]);for(var F=w.variables(),z={},X=0;X<F.length;X++)z[F[X]]=new Ie(F[X]);this.points.push(new xe(w,new ke(z),y))},Te.prototype.consult=function(w,S){return this.thread.consult(w,S)},Je.prototype.consult=function(w,S){var y=\"\";if(typeof w==\"string\"){y=w;var F=y.length;if(y.substring(F-3,F)===\".pl\"&&document.getElementById(y)){var z=document.getElementById(y),X=z.getAttribute(\"type\");X!==null&&X.replace(/ /g,\"\").toLowerCase()===\"text/prolog\"&&(y=z.text)}}else if(w.nodeName)switch(w.nodeName.toLowerCase()){case\"input\":case\"textarea\":y=w.value;break;default:y=w.innerHTML;break}else return!1;return this.warnings=[],ce(this,y,S)},Te.prototype.query=function(w){return this.thread.query(w)},Je.prototype.query=function(w){return this.points=[],this.debugger_points=[],me(this,w)},Te.prototype.head_point=function(){return this.thread.head_point()},Je.prototype.head_point=function(){return this.points[this.points.length-1]},Te.prototype.get_free_variable=function(w){return this.thread.get_free_variable(w)},Je.prototype.get_free_variable=function(w){var S=[];if(w.id===\"_\"||this.session.renamed_variables[w.id]===void 0){for(this.session.rename++,this.points.length>0&&(S=this.head_point().substitution.domain());e(S,b.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id===\"_\")return new Ie(b.format_variable(this.session.rename));this.session.renamed_variables[w.id]=b.format_variable(this.session.rename)}return new Ie(this.session.renamed_variables[w.id])},Te.prototype.next_free_variable=function(){return this.thread.next_free_variable()},Je.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());e(w,b.format_variable(this.session.rename))!==-1;)this.session.rename++;return new Ie(b.format_variable(this.session.rename))},Te.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},Je.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},Te.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},Je.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},Te.prototype.prepend=function(w){return this.thread.prepend(w)},Je.prototype.prepend=function(w){for(var S=w.length-1;S>=0;S--)this.points.push(w[S])},Te.prototype.success=function(w,S){return this.thread.success(w,S)},Je.prototype.success=function(w,y){var y=typeof y>\"u\"?w:y;this.prepend([new xe(w.goal.replace(null),w.substitution,y)])},Te.prototype.throw_error=function(w){return this.thread.throw_error(w)},Je.prototype.throw_error=function(w){this.prepend([new xe(new H(\"throw\",[w]),new ke,null,null)])},Te.prototype.step_rule=function(w,S){return this.thread.step_rule(w,S)},Je.prototype.step_rule=function(w,S){var y=S.indicator;if(w===\"user\"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:e(this.session.modules,w)===-1?[]:[w],z=0;z<F.length;z++){var X=b.module[F[z]];if(X.rules.hasOwnProperty(y)&&(X.rules.hasOwnProperty(this.level)||X.exports_predicate(y)))return b.module[F[z]].rules[y]}return null},Te.prototype.step=function(){return this.thread.step()},Je.prototype.step=function(){if(this.points.length!==0){var w=!1,S=this.points.pop();if(this.debugger&&this.debugger_states.push(S),b.type.is_term(S.goal)){var y=S.goal.select(),F=null,z=[];if(y!==null){this.total_steps++;for(var X=S;X.parent!==null&&X.parent.goal.search(y);)X=X.parent;if(this.level=X.parent===null?\"top_level/0\":X.parent.goal.select().indicator,b.type.is_term(y)&&y.indicator===\":/2\"&&(F=y.args[0].id,y=y.args[1]),F===null&&b.type.is_builtin(y))this.__call_indicator=y.indicator,w=b.predicate[y.indicator](this,S,y);else{var Z=this.step_rule(F,y);if(Z===null)this.session.rules.hasOwnProperty(y.indicator)||(this.get_flag(\"unknown\").id===\"error\"?this.throw_error(b.error.existence(\"procedure\",y.indicator,this.level)):this.get_flag(\"unknown\").id===\"warning\"&&this.throw_warning(\"unknown procedure \"+y.indicator+\" (from \"+this.level+\")\"));else if(Z instanceof Function)w=Z(this,S,y);else{for(var ie in Z)if(!!Z.hasOwnProperty(ie)){var be=Z[ie];this.session.renamed_variables={},be=be.rename(this);var Le=this.get_flag(\"occurs_check\").indicator===\"true/0\",ot=new xe,dt=b.unify(y,be.head,Le);dt!==null&&(ot.goal=S.goal.replace(be.body),ot.goal!==null&&(ot.goal=ot.goal.apply(dt)),ot.substitution=S.substitution.apply(dt),ot.parent=S,z.push(ot))}this.prepend(z)}}}}else b.type.is_variable(S.goal)?this.throw_error(b.error.instantiation(this.level)):this.throw_error(b.error.type(\"callable\",S.goal,this.level));return w}},Te.prototype.answer=function(w){return this.thread.answer(w)},Je.prototype.answer=function(w){w=w||function(S){},this.__calls.push(w),!(this.__calls.length>1)&&this.again()},Te.prototype.answers=function(w,S,y){return this.thread.answers(w,S,y)},Je.prototype.answers=function(w,S,y){var F=S||1e3,z=this;if(S<=0){y&&y();return}this.answer(function(X){w(X),X!==!1?setTimeout(function(){z.answers(w,S-1,y)},1):y&&y()})},Te.prototype.again=function(w){return this.thread.again(w)},Je.prototype.again=function(w){for(var S,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!b.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):b.type.is_error(this.head_point().goal)?(S=this.session.format_error(this.points.pop()),this.points=[],z(S)):(this.debugger&&this.debugger_states.push(this.head_point()),S=this.session.format_success(this.points.pop()),z(S))}},Te.prototype.unfold=function(w){if(w.body===null)return!1;var S=w.head,y=w.body,F=y.select(),z=new Je(this),X=[];z.add_goal(F),z.step();for(var Z=z.points.length-1;Z>=0;Z--){var ie=z.points[Z],be=S.apply(ie.substitution),Le=y.replace(ie.goal);Le!==null&&(Le=Le.apply(ie.substitution)),X.push(new He(be,Le))}var ot=this.rules[S.indicator],dt=e(ot,w);return X.length>0&&dt!==-1?(ot.splice.apply(ot,[dt,1].concat(X)),!0):!1},Je.prototype.unfold=function(w){return this.session.unfold(w)},Ie.prototype.interpret=function(w){return b.error.instantiation(w.level)},Fe.prototype.interpret=function(w){return this},H.prototype.interpret=function(w){return b.type.is_unitary_list(this)?this.args[0].interpret(w):b.operate(w,this)},Ie.prototype.compare=function(w){return this.id<w.id?-1:this.id>w.id?1:0},Fe.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.value<w.value||this.value===w.value&&this.is_float&&!w.is_float)return-1;if(this.value>w.value)return 1},H.prototype.compare=function(w){if(this.args.length<w.args.length||this.args.length===w.args.length&&this.id<w.id)return-1;if(this.args.length>w.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var S=0;S<this.args.length;S++){var y=b.compare(this.args[S],w.args[S]);if(y!==0)return y}return 0},ke.prototype.lookup=function(w){return this.links[w]?this.links[w]:null},ke.prototype.filter=function(w){var S={};for(var y in this.links)if(!!this.links.hasOwnProperty(y)){var F=this.links[y];w(y,F)&&(S[y]=F)}return new ke(S)},ke.prototype.exclude=function(w){var S={};for(var y in this.links)!this.links.hasOwnProperty(y)||e(w,y)===-1&&(S[y]=this.links[y]);return new ke(S)},ke.prototype.add=function(w,S){this.links[w]=S},ke.prototype.domain=function(w){var S=w===!0?function(z){return z}:function(z){return new Ie(z)},y=[];for(var F in this.links)y.push(S(F));return y},Ie.prototype.compile=function(){return'new pl.type.Var(\"'+this.id.toString()+'\")'},Fe.prototype.compile=function(){return\"new pl.type.Num(\"+this.value.toString()+\", \"+this.is_float.toString()+\")\"},H.prototype.compile=function(){return'new pl.type.Term(\"'+this.id.replace(/\"/g,'\\\\\"')+'\", ['+o(this.args,function(w){return w.compile()})+\"])\"},He.prototype.compile=function(){return\"new pl.type.Rule(\"+this.head.compile()+\", \"+(this.body===null?\"null\":this.body.compile())+\")\"},Te.prototype.compile=function(){var w,S=[],y;for(var F in this.rules)if(!!this.rules.hasOwnProperty(F)){var z=this.rules[F];y=[],w='\"'+F+'\": [';for(var X=0;X<z.length;X++)y.push(z[X].compile());w+=y.join(),w+=\"]\",S.push(w)}return\"{\"+S.join()+\"};\"},Ie.prototype.toJavaScript=function(){},Fe.prototype.toJavaScript=function(){return this.value},H.prototype.toJavaScript=function(){if(this.args.length===0&&this.indicator!==\"[]/0\")return this.id;if(b.type.is_list(this)){for(var w=[],S=this,y;S.indicator===\"./2\";){if(y=S.args[0].toJavaScript(),y===void 0)return;w.push(y),S=S.args[1]}if(S.indicator===\"[]/0\")return w}},He.prototype.singleton_variables=function(){var w=this.head.variables(),S={},y=[];this.body!==null&&(w=w.concat(this.body.variables()));for(var F=0;F<w.length;F++)S[w[F]]===void 0&&(S[w[F]]=0),S[w[F]]++;for(var z in S)z!==\"_\"&&S[z]===1&&y.push(z);return y};var b={__env:typeof hl<\"u\"&&hl.exports?global:window,module:{},version:t,parser:{tokenizer:U,expression:J},utils:{str_indicator:ee,codePointAt:n,fromCodePoint:u},statistics:{getCountTerms:function(){return At}},fromJavaScript:{test:{boolean:function(w){return w===!0||w===!1},number:function(w){return typeof w==\"number\"},string:function(w){return typeof w==\"string\"},list:function(w){return w instanceof Array},variable:function(w){return w===void 0},any:function(w){return!0}},conversion:{boolean:function(w){return new H(w?\"true\":\"false\",[])},number:function(w){return new Fe(w,w%1!==0)},string:function(w){return new H(w,[])},list:function(w){for(var S=[],y,F=0;F<w.length;F++){if(y=b.fromJavaScript.apply(w[F]),y===void 0)return;S.push(y)}return g(S)},variable:function(w){return new Ie(\"_\")},any:function(w){}},apply:function(w){for(var S in b.fromJavaScript.test)if(S!==\"any\"&&b.fromJavaScript.test[S](w))return b.fromJavaScript.conversion[S](w);return b.fromJavaScript.conversion.any(w)}},type:{Var:Ie,Num:Fe,Term:H,Rule:He,State:xe,Stream:Re,Module:je,Thread:Je,Session:Te,Substitution:ke,order:[Ie,Fe,H,Re],compare:function(w,S){var y=e(b.type.order,w.constructor),F=e(b.type.order,S.constructor);if(y<F)return-1;if(y>F)return 1;if(w.constructor===Fe){if(w.is_float&&S.is_float)return 0;if(w.is_float)return-1;if(S.is_float)return 1}return 0},is_substitution:function(w){return w instanceof ke},is_state:function(w){return w instanceof xe},is_rule:function(w){return w instanceof He},is_variable:function(w){return w instanceof Ie},is_stream:function(w){return w instanceof Re},is_anonymous_var:function(w){return w instanceof Ie&&w.id===\"_\"},is_callable:function(w){return w instanceof H},is_number:function(w){return w instanceof Fe},is_integer:function(w){return w instanceof Fe&&!w.is_float},is_float:function(w){return w instanceof Fe&&w.is_float},is_term:function(w){return w instanceof H},is_atom:function(w){return w instanceof H&&w.args.length===0},is_ground:function(w){if(w instanceof Ie)return!1;if(w instanceof H){for(var S=0;S<w.args.length;S++)if(!b.type.is_ground(w.args[S]))return!1}return!0},is_atomic:function(w){return w instanceof H&&w.args.length===0||w instanceof Fe},is_compound:function(w){return w instanceof H&&w.args.length>0},is_list:function(w){return w instanceof H&&(w.indicator===\"[]/0\"||w.indicator===\"./2\")},is_empty_list:function(w){return w instanceof H&&w.indicator===\"[]/0\"},is_non_empty_list:function(w){return w instanceof H&&w.indicator===\"./2\"},is_fully_list:function(w){for(;w instanceof H&&w.indicator===\"./2\";)w=w.args[1];return w instanceof Ie||w instanceof H&&w.indicator===\"[]/0\"},is_instantiated_list:function(w){for(;w instanceof H&&w.indicator===\"./2\";)w=w.args[1];return w instanceof H&&w.indicator===\"[]/0\"},is_unitary_list:function(w){return w instanceof H&&w.indicator===\"./2\"&&w.args[1]instanceof H&&w.args[1].indicator===\"[]/0\"},is_character:function(w){return w instanceof H&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof Fe&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Fe&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof H&&b.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof H&&b.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof H&&b.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof H&&w.indicator===\"throw/1\"},is_predicate_indicator:function(w){return w instanceof H&&w.indicator===\"//2\"&&w.args[0]instanceof H&&w.args[0].args.length===0&&w.args[1]instanceof Fe&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof H&&w.args.length===0&&b.flag[w.id]!==void 0},is_value_flag:function(w,S){if(!b.type.is_flag(w))return!1;for(var y in b.flag[w.id].allowed)if(!!b.flag[w.id].allowed.hasOwnProperty(y)&&b.flag[w.id].allowed[y].equals(S))return!0;return!1},is_io_mode:function(w){return b.type.is_atom(w)&&[\"read\",\"write\",\"append\"].indexOf(w.id)!==-1},is_stream_option:function(w){return b.type.is_term(w)&&(w.indicator===\"alias/1\"&&b.type.is_atom(w.args[0])||w.indicator===\"reposition/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"type/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\")||w.indicator===\"eof_action/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))},is_stream_position:function(w){return b.type.is_integer(w)&&w.value>=0||b.type.is_atom(w)&&(w.id===\"end_of_stream\"||w.id===\"past_end_of_stream\")},is_stream_property:function(w){return b.type.is_term(w)&&(w.indicator===\"input/0\"||w.indicator===\"output/0\"||w.indicator===\"alias/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0]))||w.indicator===\"file_name/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0]))||w.indicator===\"position/1\"&&(b.type.is_variable(w.args[0])||b.type.is_stream_position(w.args[0]))||w.indicator===\"reposition/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))||w.indicator===\"type/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\"))||w.indicator===\"mode/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"read\"||w.args[0].id===\"write\"||w.args[0].id===\"append\"))||w.indicator===\"eof_action/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))||w.indicator===\"end_of_stream/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"at\"||w.args[0].id===\"past\"||w.args[0].id===\"not\")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return b.type.is_term(w)&&[\"variables/1\",\"variable_names/1\",\"singletons/1\"].indexOf(w.indicator)!==-1},is_write_option:function(w){return b.type.is_term(w)&&(w.indicator===\"quoted/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"ignore_ops/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"numbervars/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))},is_close_option:function(w){return b.type.is_term(w)&&w.indicator===\"force/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")},is_modifiable_flag:function(w){return b.type.is_flag(w)&&b.flag[w.id].changeable},is_module:function(w){return w instanceof H&&w.indicator===\"library/1\"&&w.args[0]instanceof H&&w.args[0].args.length===0&&b.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{\"e/0\":{type_args:null,type_result:!0,fn:function(w){return Math.E}},\"pi/0\":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},\"tau/0\":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},\"epsilon/0\":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},\"+/1\":{type_args:null,type_result:null,fn:function(w,S){return w}},\"-/1\":{type_args:null,type_result:null,fn:function(w,S){return-w}},\"\\\\/1\":{type_args:!1,type_result:!1,fn:function(w,S){return~w}},\"abs/1\":{type_args:null,type_result:null,fn:function(w,S){return Math.abs(w)}},\"sign/1\":{type_args:null,type_result:null,fn:function(w,S){return Math.sign(w)}},\"float_integer_part/1\":{type_args:!0,type_result:!1,fn:function(w,S){return parseInt(w)}},\"float_fractional_part/1\":{type_args:!0,type_result:!0,fn:function(w,S){return w-parseInt(w)}},\"float/1\":{type_args:null,type_result:!0,fn:function(w,S){return parseFloat(w)}},\"floor/1\":{type_args:!0,type_result:!1,fn:function(w,S){return Math.floor(w)}},\"truncate/1\":{type_args:!0,type_result:!1,fn:function(w,S){return parseInt(w)}},\"round/1\":{type_args:!0,type_result:!1,fn:function(w,S){return Math.round(w)}},\"ceiling/1\":{type_args:!0,type_result:!1,fn:function(w,S){return Math.ceil(w)}},\"sin/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.sin(w)}},\"cos/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.cos(w)}},\"tan/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.tan(w)}},\"asin/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.asin(w)}},\"acos/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.acos(w)}},\"atan/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.atan(w)}},\"atan2/2\":{type_args:null,type_result:!0,fn:function(w,S,y){return Math.atan2(w,S)}},\"exp/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.exp(w)}},\"sqrt/1\":{type_args:null,type_result:!0,fn:function(w,S){return Math.sqrt(w)}},\"log/1\":{type_args:null,type_result:!0,fn:function(w,S){return w>0?Math.log(w):b.error.evaluation(\"undefined\",S.__call_indicator)}},\"+/2\":{type_args:null,type_result:null,fn:function(w,S,y){return w+S}},\"-/2\":{type_args:null,type_result:null,fn:function(w,S,y){return w-S}},\"*/2\":{type_args:null,type_result:null,fn:function(w,S,y){return w*S}},\"//2\":{type_args:null,type_result:!0,fn:function(w,S,y){return S?w/S:b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"///2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return S?parseInt(w/S):b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"**/2\":{type_args:null,type_result:!0,fn:function(w,S,y){return Math.pow(w,S)}},\"^/2\":{type_args:null,type_result:null,fn:function(w,S,y){return Math.pow(w,S)}},\"<</2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return w<<S}},\">>/2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return w>>S}},\"/\\\\/2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return w&S}},\"\\\\//2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return w|S}},\"xor/2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return w^S}},\"rem/2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return S?w%S:b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"mod/2\":{type_args:!1,type_result:!1,fn:function(w,S,y){return S?w-parseInt(w/S)*S:b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"max/2\":{type_args:null,type_result:null,fn:function(w,S,y){return Math.max(w,S)}},\"min/2\":{type_args:null,type_result:null,fn:function(w,S,y){return Math.min(w,S)}}}},directive:{\"dynamic/1\":function(w,S){var y=S.args[0];if(b.type.is_variable(y))w.throw_error(b.error.instantiation(S.indicator));else if(!b.type.is_compound(y)||y.indicator!==\"//2\")w.throw_error(b.error.type(\"predicate_indicator\",y,S.indicator));else if(b.type.is_variable(y.args[0])||b.type.is_variable(y.args[1]))w.throw_error(b.error.instantiation(S.indicator));else if(!b.type.is_atom(y.args[0]))w.throw_error(b.error.type(\"atom\",y.args[0],S.indicator));else if(!b.type.is_integer(y.args[1]))w.throw_error(b.error.type(\"integer\",y.args[1],S.indicator));else{var F=S.args[0].args[0].id+\"/\"+S.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},\"multifile/1\":function(w,S){var y=S.args[0];b.type.is_variable(y)?w.throw_error(b.error.instantiation(S.indicator)):!b.type.is_compound(y)||y.indicator!==\"//2\"?w.throw_error(b.error.type(\"predicate_indicator\",y,S.indicator)):b.type.is_variable(y.args[0])||b.type.is_variable(y.args[1])?w.throw_error(b.error.instantiation(S.indicator)):b.type.is_atom(y.args[0])?b.type.is_integer(y.args[1])?w.session.multifile_predicates[S.args[0].args[0].id+\"/\"+S.args[0].args[1].value]=!0:w.throw_error(b.error.type(\"integer\",y.args[1],S.indicator)):w.throw_error(b.error.type(\"atom\",y.args[0],S.indicator))},\"set_prolog_flag/2\":function(w,S){var y=S.args[0],F=S.args[1];b.type.is_variable(y)||b.type.is_variable(F)?w.throw_error(b.error.instantiation(S.indicator)):b.type.is_atom(y)?b.type.is_flag(y)?b.type.is_value_flag(y,F)?b.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(b.error.permission(\"modify\",\"flag\",y)):w.throw_error(b.error.domain(\"flag_value\",new H(\"+\",[y,F]),S.indicator)):w.throw_error(b.error.domain(\"prolog_flag\",y,S.indicator)):w.throw_error(b.error.type(\"atom\",y,S.indicator))},\"use_module/1\":function(w,S){var y=S.args[0];if(b.type.is_variable(y))w.throw_error(b.error.instantiation(S.indicator));else if(!b.type.is_term(y))w.throw_error(b.error.type(\"term\",y,S.indicator));else if(b.type.is_module(y)){var F=y.args[0].id;e(w.session.modules,F)===-1&&w.session.modules.push(F)}},\"char_conversion/2\":function(w,S){var y=S.args[0],F=S.args[1];b.type.is_variable(y)||b.type.is_variable(F)?w.throw_error(b.error.instantiation(S.indicator)):b.type.is_character(y)?b.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(b.error.type(\"character\",F,S.indicator)):w.throw_error(b.error.type(\"character\",y,S.indicator))},\"op/3\":function(w,S){var y=S.args[0],F=S.args[1],z=S.args[2];if(b.type.is_variable(y)||b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(S.indicator));else if(!b.type.is_integer(y))w.throw_error(b.error.type(\"integer\",y,S.indicator));else if(!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,S.indicator));else if(!b.type.is_atom(z))w.throw_error(b.error.type(\"atom\",z,S.indicator));else if(y.value<0||y.value>1200)w.throw_error(b.error.domain(\"operator_priority\",y,S.indicator));else if(z.id===\",\")w.throw_error(b.error.permission(\"modify\",\"operator\",z,S.indicator));else if(z.id===\"|\"&&(y.value<1001||F.id.length!==3))w.throw_error(b.error.permission(\"modify\",\"operator\",z,S.indicator));else if([\"fy\",\"fx\",\"yf\",\"xf\",\"xfx\",\"yfx\",\"xfy\"].indexOf(F.id)===-1)w.throw_error(b.error.domain(\"operator_specifier\",F,S.indicator));else{var X={prefix:null,infix:null,postfix:null};for(var Z in w.session.__operators)if(!!w.session.__operators.hasOwnProperty(Z)){var ie=w.session.__operators[Z][z.id];ie&&(e(ie,\"fx\")!==-1&&(X.prefix={priority:Z,type:\"fx\"}),e(ie,\"fy\")!==-1&&(X.prefix={priority:Z,type:\"fy\"}),e(ie,\"xf\")!==-1&&(X.postfix={priority:Z,type:\"xf\"}),e(ie,\"yf\")!==-1&&(X.postfix={priority:Z,type:\"yf\"}),e(ie,\"xfx\")!==-1&&(X.infix={priority:Z,type:\"xfx\"}),e(ie,\"xfy\")!==-1&&(X.infix={priority:Z,type:\"xfy\"}),e(ie,\"yfx\")!==-1&&(X.infix={priority:Z,type:\"yfx\"}))}var be;switch(F.id){case\"fy\":case\"fx\":be=\"prefix\";break;case\"yf\":case\"xf\":be=\"postfix\";break;default:be=\"infix\";break}if(((X.prefix&&be===\"prefix\"||X.postfix&&be===\"postfix\"||X.infix&&be===\"infix\")&&X[be].type!==F.id||X.infix&&be===\"postfix\"||X.postfix&&be===\"infix\")&&y.value!==0)w.throw_error(b.error.permission(\"create\",\"operator\",z,S.indicator));else return X[be]&&(Ee(w.session.__operators[X[be].priority][z.id],F.id),w.session.__operators[X[be].priority][z.id].length===0&&delete w.session.__operators[X[be].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{\"op/3\":function(w,S,y){b.directive[\"op/3\"](w,y)&&w.success(S)},\"current_op/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=[];for(var ie in w.session.__operators)for(var be in w.session.__operators[ie])for(var Le=0;Le<w.session.__operators[ie][be].length;Le++)Z.push(new xe(S.goal.replace(new H(\",\",[new H(\"=\",[new Fe(ie,!1),F]),new H(\",\",[new H(\"=\",[new H(w.session.__operators[ie][be][Le],[]),z]),new H(\"=\",[new H(be,[]),X])])])),S.substitution,S));w.prepend(Z)},\";/2\":function(w,S,y){if(b.type.is_term(y.args[0])&&y.args[0].indicator===\"->/2\"){var F=w.points,z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(Le){return Le.substitution},w.session.format_error=function(Le){return Le.goal},w.points=[new xe(y.args[0].args[0],S.substitution,S)];var Z=function(Le){w.points=F,w.session.format_success=z,w.session.format_error=X,Le===!1?w.prepend([new xe(S.goal.replace(y.args[1]),S.substitution,S)]):b.type.is_error(Le)?w.throw_error(Le.args[0]):Le===null?(w.prepend([S]),w.__calls.shift()(null)):w.prepend([new xe(S.goal.replace(y.args[0].args[1]).apply(Le),S.substitution.apply(Le),S)])};w.__calls.unshift(Z)}else{var ie=new xe(S.goal.replace(y.args[0]),S.substitution,S),be=new xe(S.goal.replace(y.args[1]),S.substitution,S);w.prepend([ie,be])}},\"!/0\":function(w,S,y){var F,z,X=[];for(F=S,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var Z=F.goal.select();if(Z&&Z.id===\"call\"&&Z.search(y)){F=z;break}}for(var ie=w.points.length-1;ie>=0;ie--){for(var be=w.points[ie],Le=be.parent;Le!==null&&Le!==F.parent;)Le=Le.parent;Le===null&&Le!==F.parent&&X.push(be)}w.points=X.reverse(),w.success(S)},\"\\\\+/1\":function(w,S,y){var F=y.args[0];b.type.is_variable(F)?w.throw_error(b.error.instantiation(w.level)):b.type.is_callable(F)?w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\",\",[new H(\"call\",[F]),new H(\"!\",[])]),new H(\"fail\",[])])),S.substitution,S),new xe(S.goal.replace(null),S.substitution,S)]):w.throw_error(b.error.type(\"callable\",F,w.level))},\"->/2\":function(w,S,y){var F=S.goal.replace(new H(\",\",[y.args[0],new H(\",\",[new H(\"!\"),y.args[1]])]));w.prepend([new xe(F,S.substitution,S)])},\"fail/0\":function(w,S,y){},\"false/0\":function(w,S,y){},\"true/0\":function(w,S,y){w.success(S)},\"call/1\":ne(1),\"call/2\":ne(2),\"call/3\":ne(3),\"call/4\":ne(4),\"call/5\":ne(5),\"call/6\":ne(6),\"call/7\":ne(7),\"call/8\":ne(8),\"once/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"call\",[F]),new H(\"!\",[])])),S.substitution,S)])},\"forall/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(S.goal.replace(new H(\"\\\\+\",[new H(\",\",[new H(\"call\",[F]),new H(\"\\\\+\",[new H(\"call\",[z])])])])),S.substitution,S)])},\"repeat/0\":function(w,S,y){w.prepend([new xe(S.goal.replace(null),S.substitution,S),S])},\"throw/1\":function(w,S,y){b.type.is_variable(y.args[0])?w.throw_error(b.error.instantiation(w.level)):w.throw_error(y.args[0])},\"catch/3\":function(w,S,y){var F=w.points;w.points=[],w.prepend([new xe(y.args[0],S.substitution,S)]);var z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(ie){return ie.substitution},w.session.format_error=function(ie){return ie.goal};var Z=function(ie){var be=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=X,b.type.is_error(ie)){for(var Le=[],ot=w.points.length-1;ot>=0;ot--){for(var $t=w.points[ot],dt=$t.parent;dt!==null&&dt!==S.parent;)dt=dt.parent;dt===null&&dt!==S.parent&&Le.push($t)}w.points=Le;var qt=w.get_flag(\"occurs_check\").indicator===\"true/0\",$t=new xe,bt=b.unify(ie.args[0],y.args[1],qt);bt!==null?($t.substitution=S.substitution.apply(bt),$t.goal=S.goal.replace(y.args[2]).apply(bt),$t.parent=S,w.prepend([$t])):w.throw_error(ie.args[0])}else if(ie!==!1){for(var an=ie===null?[]:[new xe(S.goal.apply(ie).replace(null),S.substitution.apply(ie),S)],Qr=[],ot=be.length-1;ot>=0;ot--){Qr.push(be[ot]);var mr=be[ot].goal!==null?be[ot].goal.select():null;if(b.type.is_term(mr)&&mr.indicator===\"!/0\")break}var br=o(Qr,function(Wr){return Wr.goal===null&&(Wr.goal=new H(\"true\",[])),Wr=new xe(S.goal.replace(new H(\"catch\",[Wr.goal,y.args[1],y.args[2]])),S.substitution.apply(Wr.substitution),Wr.parent),Wr.exclude=y.args[0].variables(),Wr}).reverse();w.prepend(br),w.prepend(an),ie===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift(Z)},\"=/2\":function(w,S,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=new xe,X=b.unify(y.args[0],y.args[1],F);X!==null&&(z.goal=S.goal.apply(X).replace(null),z.substitution=S.substitution.apply(X),z.parent=S,w.prepend([z]))},\"unify_with_occurs_check/2\":function(w,S,y){var F=new xe,z=b.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=S.goal.apply(z).replace(null),F.substitution=S.substitution.apply(z),F.parent=S,w.prepend([F]))},\"\\\\=/2\":function(w,S,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=b.unify(y.args[0],y.args[1],F);z===null&&w.success(S)},\"subsumes_term/2\":function(w,S,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=b.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(S)},\"findall/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(z))w.throw_error(b.error.type(\"callable\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else{var Z=w.next_free_variable(),ie=new H(\",\",[z,new H(\"=\",[Z,F])]),be=w.points,Le=w.session.limit,ot=w.session.format_success;w.session.format_success=function($t){return $t.substitution},w.add_goal(ie,!0,S);var dt=[],qt=function($t){if($t!==!1&&$t!==null&&!b.type.is_error($t))w.__calls.unshift(qt),dt.push($t.links[Z.id]),w.session.limit=w.current_limit;else if(w.points=be,w.session.limit=Le,w.session.format_success=ot,b.type.is_error($t))w.throw_error($t.args[0]);else if(w.current_limit>0){for(var bt=new H(\"[]\"),an=dt.length-1;an>=0;an--)bt=new H(\".\",[dt[an],bt]);w.prepend([new xe(S.goal.replace(new H(\"=\",[X,bt])),S.substitution,S)])}};w.__calls.unshift(qt)}},\"bagof/3\":function(w,S,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(X))w.throw_error(b.error.type(\"callable\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_list(Z))w.throw_error(b.error.type(\"list\",Z,y.indicator));else{var ie=w.next_free_variable(),be;X.indicator===\"^/2\"?(be=X.args[0].variables(),X=X.args[1]):be=[],be=be.concat(z.variables());for(var Le=X.variables().filter(function(br){return e(be,br)===-1}),ot=new H(\"[]\"),dt=Le.length-1;dt>=0;dt--)ot=new H(\".\",[new Ie(Le[dt]),ot]);var qt=new H(\",\",[X,new H(\"=\",[ie,new H(\",\",[ot,z])])]),$t=w.points,bt=w.session.limit,an=w.session.format_success;w.session.format_success=function(br){return br.substitution},w.add_goal(qt,!0,S);var Qr=[],mr=function(br){if(br!==!1&&br!==null&&!b.type.is_error(br)){w.__calls.unshift(mr);var Wr=!1,Kn=br.links[ie.id].args[0],Ls=br.links[ie.id].args[1];for(var Ti in Qr)if(!!Qr.hasOwnProperty(Ti)){var ps=Qr[Ti];if(ps.variables.equals(Kn)){ps.answers.push(Ls),Wr=!0;break}}Wr||Qr.push({variables:Kn,answers:[Ls]}),w.session.limit=w.current_limit}else if(w.points=$t,w.session.limit=bt,w.session.format_success=an,b.type.is_error(br))w.throw_error(br.args[0]);else if(w.current_limit>0){for(var io=[],Si=0;Si<Qr.length;Si++){br=Qr[Si].answers;for(var Ns=new H(\"[]\"),so=br.length-1;so>=0;so--)Ns=new H(\".\",[br[so],Ns]);io.push(new xe(S.goal.replace(new H(\",\",[new H(\"=\",[ot,Qr[Si].variables]),new H(\"=\",[Z,Ns])])),S.substitution,S))}w.prepend(io)}};w.__calls.unshift(mr)}},\"setof/3\":function(w,S,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(X))w.throw_error(b.error.type(\"callable\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_list(Z))w.throw_error(b.error.type(\"list\",Z,y.indicator));else{var ie=w.next_free_variable(),be;X.indicator===\"^/2\"?(be=X.args[0].variables(),X=X.args[1]):be=[],be=be.concat(z.variables());for(var Le=X.variables().filter(function(br){return e(be,br)===-1}),ot=new H(\"[]\"),dt=Le.length-1;dt>=0;dt--)ot=new H(\".\",[new Ie(Le[dt]),ot]);var qt=new H(\",\",[X,new H(\"=\",[ie,new H(\",\",[ot,z])])]),$t=w.points,bt=w.session.limit,an=w.session.format_success;w.session.format_success=function(br){return br.substitution},w.add_goal(qt,!0,S);var Qr=[],mr=function(br){if(br!==!1&&br!==null&&!b.type.is_error(br)){w.__calls.unshift(mr);var Wr=!1,Kn=br.links[ie.id].args[0],Ls=br.links[ie.id].args[1];for(var Ti in Qr)if(!!Qr.hasOwnProperty(Ti)){var ps=Qr[Ti];if(ps.variables.equals(Kn)){ps.answers.push(Ls),Wr=!0;break}}Wr||Qr.push({variables:Kn,answers:[Ls]}),w.session.limit=w.current_limit}else if(w.points=$t,w.session.limit=bt,w.session.format_success=an,b.type.is_error(br))w.throw_error(br.args[0]);else if(w.current_limit>0){for(var io=[],Si=0;Si<Qr.length;Si++){br=Qr[Si].answers.sort(b.compare);for(var Ns=new H(\"[]\"),so=br.length-1;so>=0;so--)Ns=new H(\".\",[br[so],Ns]);io.push(new xe(S.goal.replace(new H(\",\",[new H(\"=\",[ot,Qr[Si].variables]),new H(\"=\",[Z,Ns])])),S.substitution,S))}w.prepend(io)}};w.__calls.unshift(mr)}},\"functor/3\":function(w,S,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(z)&&(b.type.is_variable(X)||b.type.is_variable(Z)))w.throw_error(b.error.instantiation(\"functor/3\"));else if(!b.type.is_variable(Z)&&!b.type.is_integer(Z))w.throw_error(b.error.type(\"integer\",y.args[2],\"functor/3\"));else if(!b.type.is_variable(X)&&!b.type.is_atomic(X))w.throw_error(b.error.type(\"atomic\",y.args[1],\"functor/3\"));else if(b.type.is_integer(X)&&b.type.is_integer(Z)&&Z.value!==0)w.throw_error(b.error.type(\"atom\",y.args[1],\"functor/3\"));else if(b.type.is_variable(z)){if(y.args[2].value>=0){for(var ie=[],be=0;be<Z.value;be++)ie.push(w.next_free_variable());var Le=b.type.is_integer(X)?X:new H(X.id,ie);w.prepend([new xe(S.goal.replace(new H(\"=\",[z,Le])),S.substitution,S)])}}else{var ot=b.type.is_integer(z)?z:new H(z.id,[]),dt=b.type.is_integer(z)?new Fe(0,!1):new Fe(z.args.length,!1),qt=new H(\",\",[new H(\"=\",[ot,X]),new H(\"=\",[dt,Z])]);w.prepend([new xe(S.goal.replace(qt),S.substitution,S)])}},\"arg/3\":function(w,S,y){if(b.type.is_variable(y.args[0])||b.type.is_variable(y.args[1]))w.throw_error(b.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",y.args[0],y.indicator));else if(!b.type.is_compound(y.args[1]))w.throw_error(b.error.type(\"compound\",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new H(\"=\",[y.args[1].args[F-1],y.args[2]]);w.prepend([new xe(S.goal.replace(z),S.substitution,S)])}}},\"=../2\":function(w,S,y){var F;if(b.type.is_variable(y.args[0])&&(b.type.is_variable(y.args[1])||b.type.is_non_empty_list(y.args[1])&&b.type.is_variable(y.args[1].args[0])))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_fully_list(y.args[1]))w.throw_error(b.error.type(\"list\",y.args[1],y.indicator));else if(b.type.is_variable(y.args[0])){if(!b.type.is_variable(y.args[1])){var X=[];for(F=y.args[1].args[1];F.indicator===\"./2\";)X.push(F.args[0]),F=F.args[1];b.type.is_variable(y.args[0])&&b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):X.length===0&&b.type.is_compound(y.args[1].args[0])?w.throw_error(b.error.type(\"atomic\",y.args[1].args[0],y.indicator)):X.length>0&&(b.type.is_compound(y.args[1].args[0])||b.type.is_number(y.args[1].args[0]))?w.throw_error(b.error.type(\"atom\",y.args[1].args[0],y.indicator)):X.length===0?w.prepend([new xe(S.goal.replace(new H(\"=\",[y.args[1].args[0],y.args[0]],S)),S.substitution,S)]):w.prepend([new xe(S.goal.replace(new H(\"=\",[new H(y.args[1].args[0].id,X),y.args[0]])),S.substitution,S)])}}else{if(b.type.is_atomic(y.args[0]))F=new H(\".\",[y.args[0],new H(\"[]\")]);else{F=new H(\"[]\");for(var z=y.args[0].args.length-1;z>=0;z--)F=new H(\".\",[y.args[0].args[z],F]);F=new H(\".\",[new H(y.args[0].id),F])}w.prepend([new xe(S.goal.replace(new H(\"=\",[F,y.args[1]])),S.substitution,S)])}},\"copy_term/2\":function(w,S,y){var F=y.args[0].rename(w);w.prepend([new xe(S.goal.replace(new H(\"=\",[F,y.args[1]])),S.substitution,S.parent)])},\"term_variables/2\":function(w,S,y){var F=y.args[0],z=y.args[1];if(!b.type.is_fully_list(z))w.throw_error(b.error.type(\"list\",z,y.indicator));else{var X=g(o(Pe(F.variables()),function(Z){return new Ie(Z)}));w.prepend([new xe(S.goal.replace(new H(\"=\",[z,X])),S.substitution,S)])}},\"clause/2\":function(w,S,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type(\"callable\",y.args[0],y.indicator));else if(!b.type.is_variable(y.args[1])&&!b.type.is_callable(y.args[1]))w.throw_error(b.error.type(\"callable\",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(!!w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var X=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},X=X.rename(w),X.body===null&&(X.body=new H(\"true\"));var Z=new H(\",\",[new H(\"=\",[X.head,y.args[0]]),new H(\"=\",[X.body,y.args[1]])]);F.push(new xe(S.goal.replace(Z),S.substitution,S))}w.prepend(F)}else w.throw_error(b.error.permission(\"access\",\"private_procedure\",y.args[0].indicator,y.indicator))},\"current_predicate/1\":function(w,S,y){var F=y.args[0];if(!b.type.is_variable(F)&&(!b.type.is_compound(F)||F.indicator!==\"//2\"))w.throw_error(b.error.type(\"predicate_indicator\",F,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_variable(F.args[0])&&!b.type.is_atom(F.args[0]))w.throw_error(b.error.type(\"atom\",F.args[0],y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_variable(F.args[1])&&!b.type.is_integer(F.args[1]))w.throw_error(b.error.type(\"integer\",F.args[1],y.indicator));else{var z=[];for(var X in w.session.rules)if(!!w.session.rules.hasOwnProperty(X)){var Z=X.lastIndexOf(\"/\"),ie=X.substr(0,Z),be=parseInt(X.substr(Z+1,X.length-(Z+1))),Le=new H(\"/\",[new H(ie),new Fe(be,!1)]),ot=new H(\"=\",[Le,F]);z.push(new xe(S.goal.replace(ot),S.substitution,S))}w.prepend(z)}},\"asserta/1\":function(w,S,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=we(y.args[0].args[1])):(F=y.args[0],z=null),b.type.is_callable(F)?z!==null&&!b.type.is_callable(z)?w.throw_error(b.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new He(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(S)):w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(b.error.type(\"callable\",F,y.indicator))}},\"assertz/1\":function(w,S,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=we(y.args[0].args[1])):(F=y.args[0],z=null),b.type.is_callable(F)?z!==null&&!b.type.is_callable(z)?w.throw_error(b.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new He(F,z,!0)),w.success(S)):w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(b.error.type(\"callable\",F,y.indicator))}},\"retract/1\":function(w,S,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new H(\"true\")),typeof S.retract>\"u\")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var X=[],Z=0;Z<w.session.rules[F.indicator].length;Z++){w.session.renamed_variables={};var ie=w.session.rules[F.indicator][Z],be=ie.rename(w);be.body===null&&(be.body=new H(\"true\",[]));var Le=w.get_flag(\"occurs_check\").indicator===\"true/0\",ot=b.unify(new H(\",\",[F,z]),new H(\",\",[be.head,be.body]),Le);if(ot!==null){var dt=new xe(S.goal.replace(new H(\",\",[new H(\"retract\",[new H(\":-\",[F,z])]),new H(\",\",[new H(\"=\",[F,be.head]),new H(\"=\",[z,be.body])])])),S.substitution,S);dt.retract=ie,X.push(dt)}}w.prepend(X)}}else w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator));else le(w,S,F.indicator,S.retract)}},\"retractall/1\":function(w,S,y){var F=y.args[0];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_callable(F)?w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"retract\",[new b.type.Term(\":-\",[F,new Ie(\"_\")])]),new H(\"fail\",[])])),S.substitution,S),new xe(S.goal.replace(null),S.substitution,S)]):w.throw_error(b.error.type(\"callable\",F,y.indicator))},\"abolish/1\":function(w,S,y){if(b.type.is_variable(y.args[0])||b.type.is_term(y.args[0])&&y.args[0].indicator===\"//2\"&&(b.type.is_variable(y.args[0].args[0])||b.type.is_variable(y.args[0].args[1])))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_term(y.args[0])||y.args[0].indicator!==\"//2\")w.throw_error(b.error.type(\"predicate_indicator\",y.args[0],y.indicator));else if(!b.type.is_atom(y.args[0].args[0]))w.throw_error(b.error.type(\"atom\",y.args[0].args[0],y.indicator));else if(!b.type.is_integer(y.args[0].args[1]))w.throw_error(b.error.type(\"integer\",y.args[0].args[1],y.indicator));else if(y.args[0].args[1].value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",y.args[0].args[1],y.indicator));else if(b.type.is_number(w.get_flag(\"max_arity\"))&&y.args[0].args[1].value>w.get_flag(\"max_arity\").value)w.throw_error(b.error.representation(\"max_arity\",y.indicator));else{var F=y.args[0].args[0].id+\"/\"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(S)):w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F,y.indicator))}},\"atom_length/2\":function(w,S,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_atom(y.args[0]))w.throw_error(b.error.type(\"atom\",y.args[0],y.indicator));else if(!b.type.is_variable(y.args[1])&&!b.type.is_integer(y.args[1]))w.throw_error(b.error.type(\"integer\",y.args[1],y.indicator));else if(b.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",y.args[1],y.indicator));else{var F=new Fe(y.args[0].id.length,!1);w.prepend([new xe(S.goal.replace(new H(\"=\",[F,y.args[1]])),S.substitution,S)])}},\"atom_concat/3\":function(w,S,y){var F,z,X=y.args[0],Z=y.args[1],ie=y.args[2];if(b.type.is_variable(ie)&&(b.type.is_variable(X)||b.type.is_variable(Z)))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_atom(X))w.throw_error(b.error.type(\"atom\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_atom(Z))w.throw_error(b.error.type(\"atom\",Z,y.indicator));else if(!b.type.is_variable(ie)&&!b.type.is_atom(ie))w.throw_error(b.error.type(\"atom\",ie,y.indicator));else{var be=b.type.is_variable(X),Le=b.type.is_variable(Z);if(!be&&!Le)z=new H(\"=\",[ie,new H(X.id+Z.id)]),w.prepend([new xe(S.goal.replace(z),S.substitution,S)]);else if(be&&!Le)F=ie.id.substr(0,ie.id.length-Z.id.length),F+Z.id===ie.id&&(z=new H(\"=\",[X,new H(F)]),w.prepend([new xe(S.goal.replace(z),S.substitution,S)]));else if(Le&&!be)F=ie.id.substr(X.id.length),X.id+F===ie.id&&(z=new H(\"=\",[Z,new H(F)]),w.prepend([new xe(S.goal.replace(z),S.substitution,S)]));else{for(var ot=[],dt=0;dt<=ie.id.length;dt++){var qt=new H(ie.id.substr(0,dt)),$t=new H(ie.id.substr(dt));z=new H(\",\",[new H(\"=\",[qt,X]),new H(\"=\",[$t,Z])]),ot.push(new xe(S.goal.replace(z),S.substitution,S))}w.prepend(ot)}}},\"sub_atom/5\":function(w,S,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2],ie=y.args[3],be=y.args[4];if(b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_integer(X))w.throw_error(b.error.type(\"integer\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_integer(Z))w.throw_error(b.error.type(\"integer\",Z,y.indicator));else if(!b.type.is_variable(ie)&&!b.type.is_integer(ie))w.throw_error(b.error.type(\"integer\",ie,y.indicator));else if(b.type.is_integer(X)&&X.value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",X,y.indicator));else if(b.type.is_integer(Z)&&Z.value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",Z,y.indicator));else if(b.type.is_integer(ie)&&ie.value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",ie,y.indicator));else{var Le=[],ot=[],dt=[];if(b.type.is_variable(X))for(F=0;F<=z.id.length;F++)Le.push(F);else Le.push(X.value);if(b.type.is_variable(Z))for(F=0;F<=z.id.length;F++)ot.push(F);else ot.push(Z.value);if(b.type.is_variable(ie))for(F=0;F<=z.id.length;F++)dt.push(F);else dt.push(ie.value);var qt=[];for(var $t in Le)if(!!Le.hasOwnProperty($t)){F=Le[$t];for(var bt in ot)if(!!ot.hasOwnProperty(bt)){var an=ot[bt],Qr=z.id.length-F-an;if(e(dt,Qr)!==-1&&F+an+Qr===z.id.length){var mr=z.id.substr(F,an);if(z.id===z.id.substr(0,F)+mr+z.id.substr(F+an,Qr)){var br=new H(\"=\",[new H(mr),be]),Wr=new H(\"=\",[X,new Fe(F)]),Kn=new H(\"=\",[Z,new Fe(an)]),Ls=new H(\"=\",[ie,new Fe(Qr)]),Ti=new H(\",\",[new H(\",\",[new H(\",\",[Wr,Kn]),Ls]),br]);qt.push(new xe(S.goal.replace(Ti),S.substitution,S))}}}}w.prepend(qt)}},\"atom_chars/2\":function(w,S,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(b.type.is_variable(F)){for(var ie=z,be=b.type.is_variable(F),Le=\"\";ie.indicator===\"./2\";){if(b.type.is_character(ie.args[0]))Le+=ie.args[0].id;else if(b.type.is_variable(ie.args[0])&&be){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type(\"character\",ie.args[0],y.indicator));return}ie=ie.args[1]}b.type.is_variable(ie)&&be?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)?w.throw_error(b.error.type(\"list\",z,y.indicator)):w.prepend([new xe(S.goal.replace(new H(\"=\",[new H(Le),F])),S.substitution,S)])}else{for(var X=new H(\"[]\"),Z=F.id.length-1;Z>=0;Z--)X=new H(\".\",[new H(F.id.charAt(Z)),X]);w.prepend([new xe(S.goal.replace(new H(\"=\",[z,X])),S.substitution,S)])}},\"atom_codes/2\":function(w,S,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(b.type.is_variable(F)){for(var ie=z,be=b.type.is_variable(F),Le=\"\";ie.indicator===\"./2\";){if(b.type.is_character_code(ie.args[0]))Le+=u(ie.args[0].value);else if(b.type.is_variable(ie.args[0])&&be){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.representation(\"character_code\",y.indicator));return}ie=ie.args[1]}b.type.is_variable(ie)&&be?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)?w.throw_error(b.error.type(\"list\",z,y.indicator)):w.prepend([new xe(S.goal.replace(new H(\"=\",[new H(Le),F])),S.substitution,S)])}else{for(var X=new H(\"[]\"),Z=F.id.length-1;Z>=0;Z--)X=new H(\".\",[new Fe(n(F.id,Z),!1),X]);w.prepend([new xe(S.goal.replace(new H(\"=\",[z,X])),S.substitution,S)])}},\"char_code/2\":function(w,S,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_character(F))w.throw_error(b.error.type(\"character\",F,y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",z,y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_character_code(z))w.throw_error(b.error.representation(\"character_code\",y.indicator));else if(b.type.is_variable(z)){var X=new Fe(n(F.id,0),!1);w.prepend([new xe(S.goal.replace(new H(\"=\",[X,z])),S.substitution,S)])}else{var Z=new H(u(z.value));w.prepend([new xe(S.goal.replace(new H(\"=\",[Z,F])),S.substitution,S)])}},\"number_chars/2\":function(w,S,y){var F,z=y.args[0],X=y.args[1];if(b.type.is_variable(z)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_number(z))w.throw_error(b.error.type(\"number\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else{var Z=b.type.is_variable(z);if(!b.type.is_variable(X)){var ie=X,be=!0;for(F=\"\";ie.indicator===\"./2\";){if(b.type.is_character(ie.args[0]))F+=ie.args[0].id;else if(b.type.is_variable(ie.args[0]))be=!1;else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type(\"character\",ie.args[0],y.indicator));return}ie=ie.args[1]}if(be=be&&b.type.is_empty_list(ie),!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)){w.throw_error(b.error.type(\"list\",X,y.indicator));return}if(!be&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else if(be)if(b.type.is_variable(ie)&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else{var Le=w.parse(F),ot=Le.value;!b.type.is_number(ot)||Le.tokens[Le.tokens.length-1].space?w.throw_error(b.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new xe(S.goal.replace(new H(\"=\",[z,ot])),S.substitution,S)]);return}}if(!Z){F=z.toString();for(var dt=new H(\"[]\"),qt=F.length-1;qt>=0;qt--)dt=new H(\".\",[new H(F.charAt(qt)),dt]);w.prepend([new xe(S.goal.replace(new H(\"=\",[X,dt])),S.substitution,S)])}}},\"number_codes/2\":function(w,S,y){var F,z=y.args[0],X=y.args[1];if(b.type.is_variable(z)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_number(z))w.throw_error(b.error.type(\"number\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else{var Z=b.type.is_variable(z);if(!b.type.is_variable(X)){var ie=X,be=!0;for(F=\"\";ie.indicator===\"./2\";){if(b.type.is_character_code(ie.args[0]))F+=u(ie.args[0].value);else if(b.type.is_variable(ie.args[0]))be=!1;else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type(\"character_code\",ie.args[0],y.indicator));return}ie=ie.args[1]}if(be=be&&b.type.is_empty_list(ie),!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)){w.throw_error(b.error.type(\"list\",X,y.indicator));return}if(!be&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else if(be)if(b.type.is_variable(ie)&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else{var Le=w.parse(F),ot=Le.value;!b.type.is_number(ot)||Le.tokens[Le.tokens.length-1].space?w.throw_error(b.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new xe(S.goal.replace(new H(\"=\",[z,ot])),S.substitution,S)]);return}}if(!Z){F=z.toString();for(var dt=new H(\"[]\"),qt=F.length-1;qt>=0;qt--)dt=new H(\".\",[new Fe(n(F,qt),!1),dt]);w.prepend([new xe(S.goal.replace(new H(\"=\",[X,dt])),S.substitution,S)])}}},\"upcase_atom/2\":function(w,S,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?!b.type.is_variable(z)&&!b.type.is_atom(z)?w.throw_error(b.error.type(\"atom\",z,y.indicator)):w.prepend([new xe(S.goal.replace(new H(\"=\",[z,new H(F.id.toUpperCase(),[])])),S.substitution,S)]):w.throw_error(b.error.type(\"atom\",F,y.indicator))},\"downcase_atom/2\":function(w,S,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?!b.type.is_variable(z)&&!b.type.is_atom(z)?w.throw_error(b.error.type(\"atom\",z,y.indicator)):w.prepend([new xe(S.goal.replace(new H(\"=\",[z,new H(F.id.toLowerCase(),[])])),S.substitution,S)]):w.throw_error(b.error.type(\"atom\",F,y.indicator))},\"atomic_list_concat/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(S.goal.replace(new H(\"atomic_list_concat\",[F,new H(\"\",[]),z])),S.substitution,S)])},\"atomic_list_concat/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(b.type.is_variable(z)||b.type.is_variable(F)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_list(F))w.throw_error(b.error.type(\"list\",F,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_atom(X))w.throw_error(b.error.type(\"atom\",X,y.indicator));else if(b.type.is_variable(X)){for(var ie=\"\",be=F;b.type.is_term(be)&&be.indicator===\"./2\";){if(!b.type.is_atom(be.args[0])&&!b.type.is_number(be.args[0])){w.throw_error(b.error.type(\"atomic\",be.args[0],y.indicator));return}ie!==\"\"&&(ie+=z.id),b.type.is_atom(be.args[0])?ie+=be.args[0].id:ie+=\"\"+be.args[0].value,be=be.args[1]}ie=new H(ie,[]),b.type.is_variable(be)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_term(be)||be.indicator!==\"[]/0\"?w.throw_error(b.error.type(\"list\",F,y.indicator)):w.prepend([new xe(S.goal.replace(new H(\"=\",[ie,X])),S.substitution,S)])}else{var Z=g(o(X.id.split(z.id),function(Le){return new H(Le,[])}));w.prepend([new xe(S.goal.replace(new H(\"=\",[Z,F])),S.substitution,S)])}},\"@=</2\":function(w,S,y){b.compare(y.args[0],y.args[1])<=0&&w.success(S)},\"==/2\":function(w,S,y){b.compare(y.args[0],y.args[1])===0&&w.success(S)},\"\\\\==/2\":function(w,S,y){b.compare(y.args[0],y.args[1])!==0&&w.success(S)},\"@</2\":function(w,S,y){b.compare(y.args[0],y.args[1])<0&&w.success(S)},\"@>/2\":function(w,S,y){b.compare(y.args[0],y.args[1])>0&&w.success(S)},\"@>=/2\":function(w,S,y){b.compare(y.args[0],y.args[1])>=0&&w.success(S)},\"compare/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(b.type.is_atom(F)&&[\"<\",\">\",\"=\"].indexOf(F.id)===-1)w.throw_error(b.type.domain(\"order\",F,y.indicator));else{var Z=b.compare(z,X);Z=Z===0?\"=\":Z===-1?\"<\":\">\",w.prepend([new xe(S.goal.replace(new H(\"=\",[F,new H(Z,[])])),S.substitution,S)])}},\"is/2\":function(w,S,y){var F=y.args[1].interpret(w);b.type.is_number(F)?w.prepend([new xe(S.goal.replace(new H(\"=\",[y.args[0],F],w.level)),S.substitution,S)]):w.throw_error(F)},\"between/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_integer(F))w.throw_error(b.error.type(\"integer\",F,y.indicator));else if(!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_integer(X))w.throw_error(b.error.type(\"integer\",X,y.indicator));else if(b.type.is_variable(X)){var Z=[new xe(S.goal.replace(new H(\"=\",[X,F])),S.substitution,S)];F.value<z.value&&Z.push(new xe(S.goal.replace(new H(\"between\",[new Fe(F.value+1,!1),z,X])),S.substitution,S)),w.prepend(Z)}else F.value<=X.value&&z.value>=X.value&&w.success(S)},\"succ/2\":function(w,S,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)&&b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_variable(F)&&!b.type.is_integer(F)?w.throw_error(b.error.type(\"integer\",F,y.indicator)):!b.type.is_variable(z)&&!b.type.is_integer(z)?w.throw_error(b.error.type(\"integer\",z,y.indicator)):!b.type.is_variable(F)&&F.value<0?w.throw_error(b.error.domain(\"not_less_than_zero\",F,y.indicator)):!b.type.is_variable(z)&&z.value<0?w.throw_error(b.error.domain(\"not_less_than_zero\",z,y.indicator)):(b.type.is_variable(z)||z.value>0)&&(b.type.is_variable(F)?w.prepend([new xe(S.goal.replace(new H(\"=\",[F,new Fe(z.value-1,!1)])),S.substitution,S)]):w.prepend([new xe(S.goal.replace(new H(\"=\",[z,new Fe(F.value+1,!1)])),S.substitution,S)]))},\"=:=/2\":function(w,S,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F===0&&w.success(S)},\"=\\\\=/2\":function(w,S,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F!==0&&w.success(S)},\"</2\":function(w,S,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F<0&&w.success(S)},\"=</2\":function(w,S,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F<=0&&w.success(S)},\">/2\":function(w,S,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F>0&&w.success(S)},\">=/2\":function(w,S,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F>=0&&w.success(S)},\"var/1\":function(w,S,y){b.type.is_variable(y.args[0])&&w.success(S)},\"atom/1\":function(w,S,y){b.type.is_atom(y.args[0])&&w.success(S)},\"atomic/1\":function(w,S,y){b.type.is_atomic(y.args[0])&&w.success(S)},\"compound/1\":function(w,S,y){b.type.is_compound(y.args[0])&&w.success(S)},\"integer/1\":function(w,S,y){b.type.is_integer(y.args[0])&&w.success(S)},\"float/1\":function(w,S,y){b.type.is_float(y.args[0])&&w.success(S)},\"number/1\":function(w,S,y){b.type.is_number(y.args[0])&&w.success(S)},\"nonvar/1\":function(w,S,y){b.type.is_variable(y.args[0])||w.success(S)},\"ground/1\":function(w,S,y){y.variables().length===0&&w.success(S)},\"acyclic_term/1\":function(w,S,y){for(var F=S.substitution.apply(S.substitution),z=y.args[0].variables(),X=0;X<z.length;X++)if(S.substitution.links[z[X]]!==void 0&&!S.substitution.links[z[X]].equals(F.links[z[X]]))return;w.success(S)},\"callable/1\":function(w,S,y){b.type.is_callable(y.args[0])&&w.success(S)},\"is_list/1\":function(w,S,y){for(var F=y.args[0];b.type.is_term(F)&&F.indicator===\"./2\";)F=F.args[1];b.type.is_term(F)&&F.indicator===\"[]/0\"&&w.success(S)},\"current_input/1\":function(w,S,y){var F=y.args[0];!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream\",F,y.indicator)):(b.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new xe(S.goal.replace(new H(\"=\",[F,w.get_current_input()])),S.substitution,S)]))},\"current_output/1\":function(w,S,y){var F=y.args[0];!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):(b.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new xe(S.goal.replace(new H(\"=\",[F,w.get_current_output()])),S.substitution,S)]))},\"set_input/1\":function(w,S,y){var F=y.args[0],z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):b.type.is_stream(z)?z.output===!0?w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator)):(w.set_current_input(z),w.success(S)):w.throw_error(b.error.existence(\"stream\",F,y.indicator))},\"set_output/1\":function(w,S,y){var F=y.args[0],z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):b.type.is_stream(z)?z.input===!0?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):(w.set_current_output(z),w.success(S)):w.throw_error(b.error.existence(\"stream\",F,y.indicator))},\"open/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2];w.prepend([new xe(S.goal.replace(new H(\"open\",[F,z,X,new H(\"[]\",[])])),S.substitution,S)])},\"open/4\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=y.args[3];if(b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_atom(z))w.throw_error(b.error.type(\"atom\",z,y.indicator));else if(!b.type.is_list(Z))w.throw_error(b.error.type(\"list\",Z,y.indicator));else if(!b.type.is_variable(X))w.throw_error(b.error.type(\"variable\",X,y.indicator));else if(!b.type.is_atom(F)&&!b.type.is_streamable(F))w.throw_error(b.error.domain(\"source_sink\",F,y.indicator));else if(!b.type.is_io_mode(z))w.throw_error(b.error.domain(\"io_mode\",z,y.indicator));else{for(var ie={},be=Z,Le;b.type.is_term(be)&&be.indicator===\"./2\";){if(Le=be.args[0],b.type.is_variable(Le)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_stream_option(Le)){w.throw_error(b.error.domain(\"stream_option\",Le,y.indicator));return}ie[Le.id]=Le.args[0].id,be=be.args[1]}if(be.indicator!==\"[]/0\"){b.type.is_variable(be)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",Z,y.indicator));return}else{var ot=ie.alias;if(ot&&w.get_stream_by_alias(ot)){w.throw_error(b.error.permission(\"open\",\"source_sink\",new H(\"alias\",[new H(ot,[])]),y.indicator));return}ie.type||(ie.type=\"text\");var dt;if(b.type.is_atom(F)?dt=w.file_system_open(F.id,ie.type,z.id):dt=F.stream(ie.type,z.id),dt===!1){w.throw_error(b.error.permission(\"open\",\"source_sink\",F,y.indicator));return}else if(dt===null){w.throw_error(b.error.existence(\"source_sink\",F,y.indicator));return}var qt=new Re(dt,z.id,ie.alias,ie.type,ie.reposition===\"true\",ie.eof_action);ot?w.session.streams[ot]=qt:w.session.streams[qt.id]=qt,w.prepend([new xe(S.goal.replace(new H(\"=\",[X,qt])),S.substitution,S)])}}},\"close/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\"close\",[F,new H(\"[]\",[])])),S.substitution,S)])},\"close/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_list(z))w.throw_error(b.error.type(\"list\",z,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else{for(var Z={},ie=z,be;b.type.is_term(ie)&&ie.indicator===\"./2\";){if(be=ie.args[0],b.type.is_variable(be)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_close_option(be)){w.throw_error(b.error.domain(\"close_option\",be,y.indicator));return}Z[be.id]=be.args[0].id===\"true\",ie=ie.args[1]}if(ie.indicator!==\"[]/0\"){b.type.is_variable(ie)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",z,y.indicator));return}else{if(X===w.session.standard_input||X===w.session.standard_output){w.success(S);return}else X===w.session.current_input?w.session.current_input=w.session.standard_input:X===w.session.current_output&&(w.session.current_output=w.session.current_output);X.alias!==null?delete w.session.streams[X.alias]:delete w.session.streams[X.id],X.output&&X.stream.flush();var Le=X.stream.close();X.stream=null,(Z.force===!0||Le===!0)&&w.success(S)}}},\"flush_output/0\":function(w,S,y){w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"flush_output\",[new Ie(\"S\")])])),S.substitution,S)])},\"flush_output/1\":function(w,S,y){var F=y.args[0],z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(z)||z.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):F.input===!0?w.throw_error(b.error.permission(\"output\",\"stream\",output,y.indicator)):(z.stream.flush(),w.success(S))},\"stream_property/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_variable(F)&&(!b.type.is_stream(X)||X.stream===null))w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_stream_property(z))w.throw_error(b.error.domain(\"stream_property\",z,y.indicator));else{var Z=[],ie=[];if(!b.type.is_variable(F))Z.push(X);else for(var be in w.session.streams)Z.push(w.session.streams[be]);for(var Le=0;Le<Z.length;Le++){var ot=[];Z[Le].filename&&ot.push(new H(\"file_name\",[new H(Z[Le].file_name,[])])),ot.push(new H(\"mode\",[new H(Z[Le].mode,[])])),ot.push(new H(Z[Le].input?\"input\":\"output\",[])),Z[Le].alias&&ot.push(new H(\"alias\",[new H(Z[Le].alias,[])])),ot.push(new H(\"position\",[typeof Z[Le].position==\"number\"?new Fe(Z[Le].position,!1):new H(Z[Le].position,[])])),ot.push(new H(\"end_of_stream\",[new H(Z[Le].position===\"end_of_stream\"?\"at\":Z[Le].position===\"past_end_of_stream\"?\"past\":\"not\",[])])),ot.push(new H(\"eof_action\",[new H(Z[Le].eof_action,[])])),ot.push(new H(\"reposition\",[new H(Z[Le].reposition?\"true\":\"false\",[])])),ot.push(new H(\"type\",[new H(Z[Le].type,[])]));for(var dt=0;dt<ot.length;dt++)ie.push(new xe(S.goal.replace(new H(\",\",[new H(\"=\",[b.type.is_variable(F)?F:X,Z[Le]]),new H(\"=\",[z,ot[dt]])])),S.substitution,S))}w.prepend(ie)}},\"at_end_of_stream/0\":function(w,S,y){w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\",\",[new H(\"stream_property\",[new Ie(\"S\"),new H(\"end_of_stream\",[new Ie(\"E\")])]),new H(\",\",[new H(\"!\",[]),new H(\";\",[new H(\"=\",[new Ie(\"E\"),new H(\"at\",[])]),new H(\"=\",[new Ie(\"E\"),new H(\"past\",[])])])])])])),S.substitution,S)])},\"at_end_of_stream/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"stream_property\",[F,new H(\"end_of_stream\",[new Ie(\"E\")])]),new H(\",\",[new H(\"!\",[]),new H(\";\",[new H(\"=\",[new Ie(\"E\"),new H(\"at\",[])]),new H(\"=\",[new Ie(\"E\"),new H(\"past\",[])])])])])),S.substitution,S)])},\"set_stream_position/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):b.type.is_stream_position(z)?X.reposition===!1?w.throw_error(b.error.permission(\"reposition\",\"stream\",F,y.indicator)):(b.type.is_integer(z)?X.position=z.value:X.position=z.id,w.success(S)):w.throw_error(b.error.domain(\"stream_position\",z,y.indicator))},\"get_char/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_char\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"get_char/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_character(z))w.throw_error(b.error.type(\"in_character\",z,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}X.position++}w.prepend([new xe(S.goal.replace(new H(\"=\",[new H(Z,[]),z])),S.substitution,S)])}},\"get_code/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_code\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"get_code/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",char,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=-1,X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}Z=n(Z,0),X.position++}w.prepend([new xe(S.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),S.substitution,S)])}},\"peek_char/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_char\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"peek_char/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_character(z))w.throw_error(b.error.type(\"in_character\",z,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}w.prepend([new xe(S.goal.replace(new H(\"=\",[new H(Z,[]),z])),S.substitution,S)])}},\"peek_code/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_code\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"peek_code/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",char,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=-1,X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}Z=n(Z,0)}w.prepend([new xe(S.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),S.substitution,S)])}},\"put_char/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_char\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"put_char/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_character(z)?!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"binary\"?w.throw_error(b.error.permission(\"output\",\"binary_stream\",F,y.indicator)):X.stream.put(z.id,X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(S)):w.throw_error(b.error.type(\"character\",z,y.indicator))},\"put_code/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_code\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"put_code/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_integer(z)?b.type.is_character_code(z)?!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"binary\"?w.throw_error(b.error.permission(\"output\",\"binary_stream\",F,y.indicator)):X.stream.put_char(u(z.value),X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(S)):w.throw_error(b.error.representation(\"character_code\",y.indicator)):w.throw_error(b.error.type(\"integer\",z,y.indicator))},\"nl/0\":function(w,S,y){w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_char\",[new Ie(\"S\"),new H(`\n`,[])])])),S.substitution,S)])},\"nl/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\"put_char\",[F,new H(`\n`,[])])),S.substitution,S)])},\"get_byte/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_byte\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"get_byte/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_byte(z))w.throw_error(b.error.type(\"in_byte\",char,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"text\")w.throw_error(b.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else{if(Z=X.stream.get_byte(X.position),Z===null){w.throw_error(b.error.representation(\"byte\",y.indicator));return}X.position++}w.prepend([new xe(S.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),S.substitution,S)])}},\"peek_byte/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_byte\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"peek_byte/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_byte(z))w.throw_error(b.error.type(\"in_byte\",char,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"text\")w.throw_error(b.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else if(Z=X.stream.get_byte(X.position),Z===null){w.throw_error(b.error.representation(\"byte\",y.indicator));return}w.prepend([new xe(S.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),S.substitution,S)])}},\"put_byte/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_byte\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"put_byte/2\":function(w,S,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_byte(z)?!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"text\"?w.throw_error(b.error.permission(\"output\",\"text_stream\",F,y.indicator)):X.stream.put_byte(z.value,X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(S)):w.throw_error(b.error.type(\"byte\",z,y.indicator))},\"read/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"read_term\",[new Ie(\"S\"),F,new H(\"[]\",[])])])),S.substitution,S)])},\"read/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(S.goal.replace(new H(\"read_term\",[F,z,new H(\"[]\",[])])),S.substitution,S)])},\"read_term/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"read_term\",[new Ie(\"S\"),F,z])])),S.substitution,S)])},\"read_term/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F)||b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(Z)||Z.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{for(var ie={},be=X,Le;b.type.is_term(be)&&be.indicator===\"./2\";){if(Le=be.args[0],b.type.is_variable(Le)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_read_option(Le)){w.throw_error(b.error.domain(\"read_option\",Le,y.indicator));return}ie[Le.id]=Le.args[0],be=be.args[1]}if(be.indicator!==\"[]/0\"){b.type.is_variable(be)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",X,y.indicator));return}else{for(var ot,dt,qt,$t=\"\",bt=[],an=null;an===null||an.name!==\"atom\"||an.value!==\".\"||qt.type===A&&b.flatten_error(new H(\"throw\",[qt.value])).found===\"token_not_found\";){if(ot=Z.stream.get(1,Z.position),ot===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}if(ot===\"end_of_file\"||ot===\"past_end_of_file\"){qt?w.throw_error(b.error.syntax(bt[qt.len-1],\". or expression expected\",!1)):w.throw_error(b.error.syntax(null,\"token not found\",!0));return}Z.position++,$t+=ot,dt=new U(w),dt.new_text($t),bt=dt.get_tokens(),an=bt!==null&&bt.length>0?bt[bt.length-1]:null,bt!==null&&(qt=J(w,bt,0,w.__get_max_priority(),!1))}if(qt.type===p&&qt.len===bt.length-1&&an.value===\".\"){qt=qt.value.rename(w);var Qr=new H(\"=\",[z,qt]);if(ie.variables){var mr=g(o(Pe(qt.variables()),function(br){return new Ie(br)}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.variables,mr])])}if(ie.variable_names){var mr=g(o(Pe(qt.variables()),function(Wr){var Kn;for(Kn in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(Kn)&&w.session.renamed_variables[Kn]===Wr)break;return new H(\"=\",[new H(Kn,[]),new Ie(Wr)])}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.variable_names,mr])])}if(ie.singletons){var mr=g(o(new He(qt,null).singleton_variables(),function(Wr){var Kn;for(Kn in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(Kn)&&w.session.renamed_variables[Kn]===Wr)break;return new H(\"=\",[new H(Kn,[]),new Ie(Wr)])}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.singletons,mr])])}w.prepend([new xe(S.goal.replace(Qr),S.substitution,S)])}else qt.type===p?w.throw_error(b.error.syntax(bt[qt.len],\"unexpected token\",!1)):w.throw_error(qt.value)}}},\"write/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"write/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(S.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"false\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"false\")]),new H(\".\",[new H(\"numbervars\",[new H(\"true\")]),new H(\"[]\",[])])])])])),S.substitution,S)])},\"writeq/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"writeq\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"writeq/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(S.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"true\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"false\")]),new H(\".\",[new H(\"numbervars\",[new H(\"true\")]),new H(\"[]\",[])])])])])),S.substitution,S)])},\"write_canonical/1\":function(w,S,y){var F=y.args[0];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write_canonical\",[new Ie(\"S\"),F])])),S.substitution,S)])},\"write_canonical/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(S.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"true\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"true\")]),new H(\".\",[new H(\"numbervars\",[new H(\"false\")]),new H(\"[]\",[])])])])])),S.substitution,S)])},\"write_term/2\":function(w,S,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(S.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write_term\",[new Ie(\"S\"),F,z])])),S.substitution,S)])},\"write_term/3\":function(w,S,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F)||b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(Z)||Z.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(Z.input)w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(b.error.permission(\"output\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(b.error.permission(\"output\",\"past_end_of_stream\",F,y.indicator));else{for(var ie={},be=X,Le;b.type.is_term(be)&&be.indicator===\"./2\";){if(Le=be.args[0],b.type.is_variable(Le)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_write_option(Le)){w.throw_error(b.error.domain(\"write_option\",Le,y.indicator));return}ie[Le.id]=Le.args[0].id===\"true\",be=be.args[1]}if(be.indicator!==\"[]/0\"){b.type.is_variable(be)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",X,y.indicator));return}else{ie.session=w.session;var ot=z.toString(ie);Z.stream.put(ot,Z.position),typeof Z.position==\"number\"&&(Z.position+=ot.length),w.success(S)}}},\"halt/0\":function(w,S,y){w.points=[]},\"halt/1\":function(w,S,y){var F=y.args[0];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_integer(F)?w.points=[]:w.throw_error(b.error.type(\"integer\",F,y.indicator))},\"current_prolog_flag/2\":function(w,S,y){var F=y.args[0],z=y.args[1];if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_flag(F))w.throw_error(b.error.domain(\"prolog_flag\",F,y.indicator));else{var X=[];for(var Z in b.flag)if(!!b.flag.hasOwnProperty(Z)){var ie=new H(\",\",[new H(\"=\",[new H(Z),F]),new H(\"=\",[w.get_flag(Z),z])]);X.push(new xe(S.goal.replace(ie),S.substitution,S))}w.prepend(X)}},\"set_prolog_flag/2\":function(w,S,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?b.type.is_flag(F)?b.type.is_value_flag(F,z)?b.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(S)):w.throw_error(b.error.permission(\"modify\",\"flag\",F)):w.throw_error(b.error.domain(\"flag_value\",new H(\"+\",[F,z]),y.indicator)):w.throw_error(b.error.domain(\"prolog_flag\",F,y.indicator)):w.throw_error(b.error.type(\"atom\",F,y.indicator))}},flag:{bounded:{allowed:[new H(\"true\"),new H(\"false\")],value:new H(\"true\"),changeable:!1},max_integer:{allowed:[new Fe(Number.MAX_SAFE_INTEGER)],value:new Fe(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Fe(Number.MIN_SAFE_INTEGER)],value:new Fe(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new H(\"down\"),new H(\"toward_zero\")],value:new H(\"toward_zero\"),changeable:!1},char_conversion:{allowed:[new H(\"on\"),new H(\"off\")],value:new H(\"on\"),changeable:!0},debug:{allowed:[new H(\"on\"),new H(\"off\")],value:new H(\"off\"),changeable:!0},max_arity:{allowed:[new H(\"unbounded\")],value:new H(\"unbounded\"),changeable:!1},unknown:{allowed:[new H(\"error\"),new H(\"fail\"),new H(\"warning\")],value:new H(\"error\"),changeable:!0},double_quotes:{allowed:[new H(\"chars\"),new H(\"codes\"),new H(\"atom\")],value:new H(\"codes\"),changeable:!0},occurs_check:{allowed:[new H(\"false\"),new H(\"true\")],value:new H(\"false\"),changeable:!0},dialect:{allowed:[new H(\"tau\")],value:new H(\"tau\"),changeable:!1},version_data:{allowed:[new H(\"tau\",[new Fe(t.major,!1),new Fe(t.minor,!1),new Fe(t.patch,!1),new H(t.status)])],value:new H(\"tau\",[new Fe(t.major,!1),new Fe(t.minor,!1),new Fe(t.patch,!1),new H(t.status)]),changeable:!1},nodejs:{allowed:[new H(\"yes\"),new H(\"no\")],value:new H(typeof hl<\"u\"&&hl.exports?\"yes\":\"no\"),changeable:!1}},unify:function(w,S,y){y=y===void 0?!1:y;for(var F=[{left:w,right:S}],z={};F.length!==0;){var X=F.pop();if(w=X.left,S=X.right,b.type.is_term(w)&&b.type.is_term(S)){if(w.indicator!==S.indicator)return null;for(var Z=0;Z<w.args.length;Z++)F.push({left:w.args[Z],right:S.args[Z]})}else if(b.type.is_number(w)&&b.type.is_number(S)){if(w.value!==S.value||w.is_float!==S.is_float)return null}else if(b.type.is_variable(w)){if(b.type.is_variable(S)&&w.id===S.id)continue;if(y===!0&&S.variables().indexOf(w.id)!==-1)return null;if(w.id!==\"_\"){var ie=new ke;ie.add(w.id,S);for(var Z=0;Z<F.length;Z++)F[Z].left=F[Z].left.apply(ie),F[Z].right=F[Z].right.apply(ie);for(var Z in z)z[Z]=z[Z].apply(ie);z[w.id]=S}}else if(b.type.is_variable(S))F.push({left:S,right:w});else if(w.unify!==void 0){if(!w.unify(S))return null}else return null}return new ke(z)},compare:function(w,S){var y=b.type.compare(w,S);return y!==0?y:w.compare(S)},arithmetic_compare:function(w,S,y){var F=S.interpret(w);if(b.type.is_number(F)){var z=y.interpret(w);return b.type.is_number(z)?F.value<z.value?-1:F.value>z.value?1:0:z}else return F},operate:function(w,S){if(b.type.is_operator(S)){for(var y=b.type.is_operator(S),F=[],z,X=!1,Z=0;Z<S.args.length;Z++){if(z=S.args[Z].interpret(w),b.type.is_number(z)){if(y.type_args!==null&&z.is_float!==y.type_args)return b.error.type(y.type_args?\"float\":\"integer\",z,w.__call_indicator);F.push(z.value)}else return z;X=X||z.is_float}return F.push(w),z=b.arithmetic.evaluation[S.indicator].fn.apply(this,F),X=y.type_result===null?X:y.type_result,b.type.is_term(z)?z:z===Number.POSITIVE_INFINITY||z===Number.NEGATIVE_INFINITY?b.error.evaluation(\"overflow\",w.__call_indicator):X===!1&&w.get_flag(\"bounded\").id===\"true\"&&(z>w.get_flag(\"max_integer\").value||z<w.get_flag(\"min_integer\").value)?b.error.evaluation(\"int_overflow\",w.__call_indicator):new Fe(z,X)}else return b.error.type(\"evaluable\",S.indicator,w.__call_indicator)},error:{existence:function(w,S,y){return typeof S==\"string\"&&(S=ee(S)),new H(\"error\",[new H(\"existence_error\",[new H(w),S]),ee(y)])},type:function(w,S,y){return new H(\"error\",[new H(\"type_error\",[new H(w),S]),ee(y)])},instantiation:function(w){return new H(\"error\",[new H(\"instantiation_error\"),ee(w)])},domain:function(w,S,y){return new H(\"error\",[new H(\"domain_error\",[new H(w),S]),ee(y)])},representation:function(w,S){return new H(\"error\",[new H(\"representation_error\",[new H(w)]),ee(S)])},permission:function(w,S,y,F){return new H(\"error\",[new H(\"permission_error\",[new H(w),new H(S),y]),ee(F)])},evaluation:function(w,S){return new H(\"error\",[new H(\"evaluation_error\",[new H(w)]),ee(S)])},syntax:function(w,S,y){w=w||{value:\"\",line:0,column:0,matches:[\"\"],start:0};var F=y&&w.matches.length>0?w.start+w.matches[0].length:w.start,z=y?new H(\"token_not_found\"):new H(\"found\",[new H(w.value.toString())]),X=new H(\".\",[new H(\"line\",[new Fe(w.line+1)]),new H(\".\",[new H(\"column\",[new Fe(F+1)]),new H(\".\",[z,new H(\"[]\",[])])])]);return new H(\"error\",[new H(\"syntax_error\",[new H(S)]),X])},syntax_by_predicate:function(w,S){return new H(\"error\",[new H(\"syntax_error\",[new H(w)]),ee(S)])}},warning:{singleton:function(w,S,y){for(var F=new H(\"[]\"),z=w.length-1;z>=0;z--)F=new H(\".\",[new Ie(w[z]),F]);return new H(\"warning\",[new H(\"singleton_variables\",[F,ee(S)]),new H(\".\",[new H(\"line\",[new Fe(y,!1)]),new H(\"[]\")])])},failed_goal:function(w,S){return new H(\"warning\",[new H(\"failed_goal\",[w]),new H(\".\",[new H(\"line\",[new Fe(S,!1)]),new H(\"[]\")])])}},format_variable:function(w){return\"_\"+w},format_answer:function(w,S,F){S instanceof Te&&(S=S.thread);var F=F||{};if(F.session=S?S.session:void 0,b.type.is_error(w))return\"uncaught exception: \"+w.args[0].toString();if(w===!1)return\"false.\";if(w===null)return\"limit exceeded ;\";var z=0,X=\"\";if(b.type.is_substitution(w)){var Z=w.domain(!0);w=w.filter(function(Le,ot){return!b.type.is_variable(ot)||Z.indexOf(ot.id)!==-1&&Le!==ot.id})}for(var ie in w.links)!w.links.hasOwnProperty(ie)||(z++,X!==\"\"&&(X+=\", \"),X+=ie.toString(F)+\" = \"+w.links[ie].toString(F));var be=typeof S>\"u\"||S.points.length>0?\" ;\":\".\";return z===0?\"true\"+be:X+be},flatten_error:function(w){if(!b.type.is_error(w))return null;w=w.args[0];var S={};return S.type=w.args[0].id,S.thrown=S.type===\"syntax_error\"?null:w.args[1].id,S.expected=null,S.found=null,S.representation=null,S.existence=null,S.existence_type=null,S.line=null,S.column=null,S.permission_operation=null,S.permission_type=null,S.evaluation_type=null,S.type===\"type_error\"||S.type===\"domain_error\"?(S.expected=w.args[0].args[0].id,S.found=w.args[0].args[1].toString()):S.type===\"syntax_error\"?w.args[1].indicator===\"./2\"?(S.expected=w.args[0].args[0].id,S.found=w.args[1].args[1].args[1].args[0],S.found=S.found.id===\"token_not_found\"?S.found.id:S.found.args[0].id,S.line=w.args[1].args[0].args[0].value,S.column=w.args[1].args[1].args[0].args[0].value):S.thrown=w.args[1].id:S.type===\"permission_error\"?(S.found=w.args[0].args[2].toString(),S.permission_operation=w.args[0].args[0].id,S.permission_type=w.args[0].args[1].id):S.type===\"evaluation_error\"?S.evaluation_type=w.args[0].args[0].id:S.type===\"representation_error\"?S.representation=w.args[0].args[0].id:S.type===\"existence_error\"&&(S.existence=w.args[0].args[1].toString(),S.existence_type=w.args[0].args[0].id),S},create:function(w){return new b.type.Session(w)}};typeof hl<\"u\"?hl.exports=b:window.pl=b})()});function sme(t,e,r){t.prepend(r.map(o=>new Ta.default.type.State(e.goal.replace(o),e.substitution,e)))}function yH(t){let e=ame.get(t.session);if(e==null)throw new Error(\"Assertion failed: A project should have been registered for the active session\");return e}function lme(t,e){ame.set(t,e),t.consult(`:- use_module(library(${Xgt.id})).`)}var EH,Ta,ome,u0,Jgt,zgt,ame,Xgt,cme=Et(()=>{Ye();EH=$e(d2()),Ta=$e(mH()),ome=$e(ve(\"vm\")),{is_atom:u0,is_variable:Jgt,is_instantiated_list:zgt}=Ta.default.type;ame=new WeakMap;Xgt=new Ta.default.type.Module(\"constraints\",{[\"project_workspaces_by_descriptor/3\"]:(t,e,r)=>{let[o,a,n]=r.args;if(!u0(o)||!u0(a)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let u=W.parseIdent(o.id),A=W.makeDescriptor(u,a.id),h=yH(t).tryWorkspaceByDescriptor(A);Jgt(n)&&h!==null&&sme(t,e,[new Ta.default.type.Term(\"=\",[n,new Ta.default.type.Term(String(h.relativeCwd))])]),u0(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},[\"workspace_field/3\"]:(t,e,r)=>{let[o,a,n]=r.args;if(!u0(o)||!u0(a)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let A=yH(t).tryWorkspaceByCwd(o.id);if(A==null)return;let p=(0,EH.default)(A.manifest.raw,a.id);typeof p>\"u\"||sme(t,e,[new Ta.default.type.Term(\"=\",[n,new Ta.default.type.Term(typeof p==\"object\"?JSON.stringify(p):p)])])},[\"workspace_field_test/3\"]:(t,e,r)=>{let[o,a,n]=r.args;t.prepend([new Ta.default.type.State(e.goal.replace(new Ta.default.type.Term(\"workspace_field_test\",[o,a,n,new Ta.default.type.Term(\"[]\",[])])),e.substitution,e)])},[\"workspace_field_test/4\"]:(t,e,r)=>{let[o,a,n,u]=r.args;if(!u0(o)||!u0(a)||!u0(n)||!zgt(u)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let p=yH(t).tryWorkspaceByCwd(o.id);if(p==null)return;let h=(0,EH.default)(p.manifest.raw,a.id);if(typeof h>\"u\")return;let E={$$:h};for(let[v,x]of u.toJavaScript().entries())E[`$${v}`]=x;ome.default.runInNewContext(n.id,E)&&t.success(e)}},[\"project_workspaces_by_descriptor/3\",\"workspace_field/3\",\"workspace_field_test/3\",\"workspace_field_test/4\"])});var b2={};Vt(b2,{Constraints:()=>S2,DependencyType:()=>pme});function to(t){if(t instanceof DC.default.type.Num)return t.value;if(t instanceof DC.default.type.Term)switch(t.indicator){case\"throw/1\":return to(t.args[0]);case\"error/1\":return to(t.args[0]);case\"error/2\":if(t.args[0]instanceof DC.default.type.Term&&t.args[0].indicator===\"syntax_error/1\")return Object.assign(to(t.args[0]),...to(t.args[1]));{let e=to(t.args[0]);return e.message+=` (in ${to(t.args[1])})`,e}case\"syntax_error/1\":return new zt(43,`Syntax error: ${to(t.args[0])}`);case\"existence_error/2\":return new zt(44,`Existence error: ${to(t.args[0])} ${to(t.args[1])} not found`);case\"instantiation_error/0\":return new zt(75,\"Instantiation error: an argument is variable when an instantiated argument was expected\");case\"line/1\":return{line:to(t.args[0])};case\"column/1\":return{column:to(t.args[0])};case\"found/1\":return{found:to(t.args[0])};case\"./2\":return[to(t.args[0])].concat(to(t.args[1]));case\"//2\":return`${to(t.args[0])}/${to(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function Ame(t){let e;try{e=to(t)}catch(r){throw typeof r==\"string\"?new zt(42,`Unknown error: ${t} (note: ${r})`):r}return typeof e.line<\"u\"&&typeof e.column<\"u\"&&(e.message+=` at line ${e.line}, column ${e.column}`),e}function em(t){return t.id===\"null\"?null:`${t.toJavaScript()}`}function Zgt(t){if(t.id===\"null\")return null;{let e=t.toJavaScript();if(typeof e!=\"string\")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return JSON.stringify(e)}}}function A0(t){return typeof t==\"string\"?`'${t}'`:\"[]\"}var fme,DC,pme,ume,CH,S2,x2=Et(()=>{Ye();Ye();Pt();fme=$e(qde()),DC=$e(mH());v2();cme();(0,fme.default)(DC.default);pme=(o=>(o.Dependencies=\"dependencies\",o.DevDependencies=\"devDependencies\",o.PeerDependencies=\"peerDependencies\",o))(pme||{}),ume=[\"dependencies\",\"devDependencies\",\"peerDependencies\"];CH=class{constructor(e,r){let o=1e3*e.workspaces.length;this.session=DC.default.create(o),lme(this.session,e),this.session.consult(\":- use_module(library(lists)).\"),this.session.consult(r)}fetchNextAnswer(){return new Promise(e=>{this.session.answer(r=>{e(r)})})}async*makeQuery(e){let r=this.session.query(e);if(r!==!0)throw Ame(r);for(;;){let o=await this.fetchNextAnswer();if(o===null)throw new zt(79,\"Resolution limit exceeded\");if(!o)break;if(o.id===\"throw\")throw Ame(o);yield o}}};S2=class{constructor(e){this.source=\"\";this.project=e;let r=e.configuration.get(\"constraintsPath\");oe.existsSync(r)&&(this.source=oe.readFileSync(r,\"utf8\"))}static async find(e){return new S2(e)}getProjectDatabase(){let e=\"\";for(let r of ume)e+=`dependency_type(${r}).\n`;for(let r of this.project.workspacesByCwd.values()){let o=r.relativeCwd;e+=`workspace(${A0(o)}).\n`,e+=`workspace_ident(${A0(o)}, ${A0(W.stringifyIdent(r.anchoredLocator))}).\n`,e+=`workspace_version(${A0(o)}, ${A0(r.manifest.version)}).\n`;for(let a of ume)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${A0(o)}, ${A0(W.stringifyIdent(n))}, ${A0(n.range)}, ${a}).\n`}return e+=`workspace(_) :- false.\n`,e+=`workspace_ident(_, _) :- false.\n`,e+=`workspace_version(_, _) :- false.\n`,e+=`workspace_has_dependency(_, _, _, _) :- false.\n`,e}getDeclarations(){let e=\"\";return e+=`gen_enforced_dependency(_, _, _, _) :- false.\n`,e+=`gen_enforced_field(_, _, _) :- false.\n`,e}get fullSource(){return`${this.getProjectDatabase()}\n${this.source}\n${this.getDeclarations()}`}createSession(){return new CH(this.project,this.fullSource)}async processClassic(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async process(){let{enforcedDependencies:e,enforcedFields:r}=await this.processClassic(),o=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:u,dependencyType:A}of e){let p=B2([A,W.stringifyIdent(n)]),h=_e.getMapWithDefault(o,a.cwd);_e.getMapWithDefault(h,p).set(u??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:u}of r){let A=B2(n),p=_e.getMapWithDefault(o,a.cwd);_e.getMapWithDefault(p,A).set(JSON.parse(u)??void 0,new Set)}return{manifestUpdates:o,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let o of e.makeQuery(\"workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).\")){let a=V.resolve(this.project.cwd,em(o.links.WorkspaceCwd)),n=em(o.links.DependencyIdent),u=em(o.links.DependencyRange),A=em(o.links.DependencyType);if(a===null||n===null)throw new Error(\"Invalid rule\");let p=this.project.getWorkspaceByCwd(a),h=W.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:u,dependencyType:A})}return _e.sortMap(r,[({dependencyRange:o})=>o!==null?\"0\":\"1\",({workspace:o})=>W.stringifyIdent(o.anchoredLocator),({dependencyIdent:o})=>W.stringifyIdent(o)])}async genEnforcedFields(e){let r=[];for await(let o of e.makeQuery(\"workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).\")){let a=V.resolve(this.project.cwd,em(o.links.WorkspaceCwd)),n=em(o.links.FieldPath),u=Zgt(o.links.FieldValue);if(a===null||n===null)throw new Error(\"Invalid rule\");let A=this.project.getWorkspaceByCwd(a);r.push({workspace:A,fieldPath:n,fieldValue:u})}return _e.sortMap(r,[({workspace:o})=>W.stringifyIdent(o.anchoredLocator),({fieldPath:o})=>o])}async*query(e){let r=this.createSession();for await(let o of r.makeQuery(e)){let a={};for(let[n,u]of Object.entries(o.links))n!==\"_\"&&(a[n]=em(u));yield a}}}});var Ime=_(Ik=>{\"use strict\";Object.defineProperty(Ik,\"__esModule\",{value:!0});function G2(t){let e=[...t.caches],r=e.shift();return r===void 0?wme():{get(o,a,n={miss:()=>Promise.resolve()}){return r.get(o,a,n).catch(()=>G2({caches:e}).get(o,a,n))},set(o,a){return r.set(o,a).catch(()=>G2({caches:e}).set(o,a))},delete(o){return r.delete(o).catch(()=>G2({caches:e}).delete(o))},clear(){return r.clear().catch(()=>G2({caches:e}).clear())}}}function wme(){return{get(t,e,r={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}Ik.createFallbackableCache=G2;Ik.createNullCache=wme});var vme=_((FWt,Bme)=>{Bme.exports=Ime()});var Dme=_(TH=>{\"use strict\";Object.defineProperty(TH,\"__esModule\",{value:!0});function mdt(t={serializable:!0}){let e={};return{get(r,o,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let u=o(),A=a&&a.miss||(()=>Promise.resolve());return u.then(p=>A(p)).then(()=>u)},set(r,o){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(o):o,Promise.resolve(o)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}TH.createInMemoryCache=mdt});var Sme=_((TWt,Pme)=>{Pme.exports=Dme()});var xme=_(Zc=>{\"use strict\";Object.defineProperty(Zc,\"__esModule\",{value:!0});function ydt(t,e,r){let o={\"x-algolia-api-key\":r,\"x-algolia-application-id\":e};return{headers(){return t===LH.WithinHeaders?o:{}},queryParameters(){return t===LH.WithinQueryParameters?o:{}}}}function Edt(t){let e=0,r=()=>(e++,new Promise(o=>{setTimeout(()=>{o(t(r))},Math.min(100*e,1e3))}));return t(r)}function bme(t,e=(r,o)=>Promise.resolve()){return Object.assign(t,{wait(r){return bme(t.then(o=>Promise.all([e(o,r),o])).then(o=>o[1]))}})}function Cdt(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),o=t[e];t[e]=t[r],t[r]=o}return t}function wdt(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function Idt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var Bdt=\"4.22.1\",vdt=t=>()=>t.transporter.requester.destroy(),LH={WithinQueryParameters:0,WithinHeaders:1};Zc.AuthMode=LH;Zc.addMethods=wdt;Zc.createAuth=ydt;Zc.createRetryablePromise=Edt;Zc.createWaitablePromise=bme;Zc.destroy=vdt;Zc.encode=Idt;Zc.shuffle=Cdt;Zc.version=Bdt});var Y2=_((NWt,kme)=>{kme.exports=xme()});var Qme=_(NH=>{\"use strict\";Object.defineProperty(NH,\"__esModule\",{value:!0});var Ddt={Delete:\"DELETE\",Get:\"GET\",Post:\"POST\",Put:\"PUT\"};NH.MethodEnum=Ddt});var W2=_((MWt,Fme)=>{Fme.exports=Qme()});var Kme=_(Fi=>{\"use strict\";Object.defineProperty(Fi,\"__esModule\",{value:!0});var Tme=W2();function OH(t,e){let r=t||{},o=r.data||{};return Object.keys(r).forEach(a=>{[\"timeout\",\"headers\",\"queryParameters\",\"data\",\"cacheable\"].indexOf(a)===-1&&(o[a]=r[a])}),{data:Object.entries(o).length>0?o:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var K2={Read:1,Write:2,Any:3},xC={Up:1,Down:2,Timeouted:3},Lme=2*60*1e3;function UH(t,e=xC.Up){return{...t,status:e,lastUpdate:Date.now()}}function Nme(t){return t.status===xC.Up||Date.now()-t.lastUpdate>Lme}function Ome(t){return t.status===xC.Timeouted&&Date.now()-t.lastUpdate<=Lme}function _H(t){return typeof t==\"string\"?{protocol:\"https\",url:t,accept:K2.Any}:{protocol:t.protocol||\"https\",url:t.url,accept:t.accept||K2.Any}}function Pdt(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(UH(r))))).then(r=>{let o=r.filter(A=>Nme(A)),a=r.filter(A=>Ome(A)),n=[...o,...a],u=n.length>0?n.map(A=>_H(A)):e;return{getTimeout(A,p){return(a.length===0&&A===0?1:a.length+3+A)*p},statelessHosts:u}})}var Sdt=({isTimedOut:t,status:e})=>!t&&~~e===0,bdt=t=>{let e=t.status;return t.isTimedOut||Sdt(t)||~~(e/100)!==2&&~~(e/100)!==4},xdt=({status:t})=>~~(t/100)===2,kdt=(t,e)=>bdt(t)?e.onRetry(t):xdt(t)?e.onSuccess(t):e.onFail(t);function Rme(t,e,r,o){let a=[],n=jme(r,o),u=qme(t,o),A=r.method,p=r.method!==Tme.MethodEnum.Get?{}:{...r.data,...o.data},h={\"x-algolia-agent\":t.userAgent.value,...t.queryParameters,...p,...o.queryParameters},E=0,I=(v,x)=>{let C=v.pop();if(C===void 0)throw Wme(MH(a));let R={data:n,headers:u,method:A,url:_me(C,r.path,h),connectTimeout:x(E,t.timeouts.connect),responseTimeout:x(E,o.timeout)},N=J=>{let te={request:R,response:J,host:C,triesLeft:v.length};return a.push(te),te},U={onSuccess:J=>Mme(J),onRetry(J){let te=N(J);return J.isTimedOut&&E++,Promise.all([t.logger.info(\"Retryable failure\",HH(te)),t.hostsCache.set(C,UH(C,J.isTimedOut?xC.Timeouted:xC.Down))]).then(()=>I(v,x))},onFail(J){throw N(J),Ume(J,MH(a))}};return t.requester.send(R).then(J=>kdt(J,U))};return Pdt(t.hostsCache,e).then(v=>I([...v.statelessHosts].reverse(),v.getTimeout))}function Qdt(t){let{hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,hosts:p,queryParameters:h,headers:E}=t,I={hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,headers:E,queryParameters:h,hosts:p.map(v=>_H(v)),read(v,x){let C=OH(x,I.timeouts.read),R=()=>Rme(I,I.hosts.filter(J=>(J.accept&K2.Read)!==0),v,C);if((C.cacheable!==void 0?C.cacheable:v.cacheable)!==!0)return R();let U={request:v,mappedRequestOptions:C,transporter:{queryParameters:I.queryParameters,headers:I.headers}};return I.responsesCache.get(U,()=>I.requestsCache.get(U,()=>I.requestsCache.set(U,R()).then(J=>Promise.all([I.requestsCache.delete(U),J]),J=>Promise.all([I.requestsCache.delete(U),Promise.reject(J)])).then(([J,te])=>te)),{miss:J=>I.responsesCache.set(U,J)})},write(v,x){return Rme(I,I.hosts.filter(C=>(C.accept&K2.Write)!==0),v,OH(x,I.timeouts.write))}};return I}function Fdt(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let o=`; ${r.segment}${r.version!==void 0?` (${r.version})`:\"\"}`;return e.value.indexOf(o)===-1&&(e.value=`${e.value}${o}`),e}};return e}function Mme(t){try{return JSON.parse(t.content)}catch(e){throw Yme(e.message,t)}}function Ume({content:t,status:e},r){let o=t;try{o=JSON.parse(t).message}catch{}return Gme(o,e,r)}function Rdt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function _me(t,e,r){let o=Hme(r),a=`${t.protocol}://${t.url}/${e.charAt(0)===\"/\"?e.substr(1):e}`;return o.length&&(a+=`?${o}`),a}function Hme(t){let e=r=>Object.prototype.toString.call(r)===\"[object Object]\"||Object.prototype.toString.call(r)===\"[object Array]\";return Object.keys(t).map(r=>Rdt(\"%s=%s\",r,e(t[r])?JSON.stringify(t[r]):t[r])).join(\"&\")}function jme(t,e){if(t.method===Tme.MethodEnum.Get||t.data===void 0&&e.data===void 0)return;let r=Array.isArray(t.data)?t.data:{...t.data,...e.data};return JSON.stringify(r)}function qme(t,e){let r={...t.headers,...e.headers},o={};return Object.keys(r).forEach(a=>{let n=r[a];o[a.toLowerCase()]=n}),o}function MH(t){return t.map(e=>HH(e))}function HH(t){let e=t.request.headers[\"x-algolia-api-key\"]?{\"x-algolia-api-key\":\"*****\"}:{};return{...t,request:{...t.request,headers:{...t.request.headers,...e}}}}function Gme(t,e,r){return{name:\"ApiError\",message:t,status:e,transporterStackTrace:r}}function Yme(t,e){return{name:\"DeserializationError\",message:t,response:e}}function Wme(t){return{name:\"RetryError\",message:\"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.\",transporterStackTrace:t}}Fi.CallEnum=K2;Fi.HostStatusEnum=xC;Fi.createApiError=Gme;Fi.createDeserializationError=Yme;Fi.createMappedRequestOptions=OH;Fi.createRetryError=Wme;Fi.createStatefulHost=UH;Fi.createStatelessHost=_H;Fi.createTransporter=Qdt;Fi.createUserAgent=Fdt;Fi.deserializeFailure=Ume;Fi.deserializeSuccess=Mme;Fi.isStatefulHostTimeouted=Ome;Fi.isStatefulHostUp=Nme;Fi.serializeData=jme;Fi.serializeHeaders=qme;Fi.serializeQueryParameters=Hme;Fi.serializeUrl=_me;Fi.stackFrameWithoutCredentials=HH;Fi.stackTraceWithoutCredentials=MH});var V2=_((_Wt,Vme)=>{Vme.exports=Kme()});var Jme=_(m0=>{\"use strict\";Object.defineProperty(m0,\"__esModule\",{value:!0});var kC=Y2(),Tdt=V2(),J2=W2(),Ldt=t=>{let e=t.region||\"us\",r=kC.createAuth(kC.AuthMode.WithinHeaders,t.appId,t.apiKey),o=Tdt.createTransporter({hosts:[{url:`analytics.${e}.algolia.com`}],...t,headers:{...r.headers(),\"content-type\":\"application/json\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a=t.appId;return kC.addMethods({appId:a,transporter:o},t.methods)},Ndt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Post,path:\"2/abtests\",data:e},r),Odt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Delete,path:kC.encode(\"2/abtests/%s\",e)},r),Mdt=t=>(e,r)=>t.transporter.read({method:J2.MethodEnum.Get,path:kC.encode(\"2/abtests/%s\",e)},r),Udt=t=>e=>t.transporter.read({method:J2.MethodEnum.Get,path:\"2/abtests\"},e),_dt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Post,path:kC.encode(\"2/abtests/%s/stop\",e)},r);m0.addABTest=Ndt;m0.createAnalyticsClient=Ldt;m0.deleteABTest=Odt;m0.getABTest=Mdt;m0.getABTests=Udt;m0.stopABTest=_dt});var Xme=_((jWt,zme)=>{zme.exports=Jme()});var $me=_(z2=>{\"use strict\";Object.defineProperty(z2,\"__esModule\",{value:!0});var jH=Y2(),Hdt=V2(),Zme=W2(),jdt=t=>{let e=t.region||\"us\",r=jH.createAuth(jH.AuthMode.WithinHeaders,t.appId,t.apiKey),o=Hdt.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),\"content-type\":\"application/json\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return jH.addMethods({appId:t.appId,transporter:o},t.methods)},qdt=t=>e=>t.transporter.read({method:Zme.MethodEnum.Get,path:\"1/strategies/personalization\"},e),Gdt=t=>(e,r)=>t.transporter.write({method:Zme.MethodEnum.Post,path:\"1/strategies/personalization\",data:e},r);z2.createPersonalizationClient=jdt;z2.getPersonalizationStrategy=qdt;z2.setPersonalizationStrategy=Gdt});var tye=_((GWt,eye)=>{eye.exports=$me()});var gye=_(Ft=>{\"use strict\";Object.defineProperty(Ft,\"__esModule\",{value:!0});var Gt=Y2(),La=V2(),Ir=W2(),Ydt=ve(\"crypto\");function Bk(t){let e=r=>t.request(r).then(o=>{if(t.batch!==void 0&&t.batch(o.hits),!t.shouldStop(o))return o.cursor?e({cursor:o.cursor}):e({page:(r.page||0)+1})});return e({})}var Wdt=t=>{let e=t.appId,r=Gt.createAuth(t.authMode!==void 0?t.authMode:Gt.AuthMode.WithinHeaders,e,t.apiKey),o=La.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:La.CallEnum.Read},{url:`${e}.algolia.net`,accept:La.CallEnum.Write}].concat(Gt.shuffle([{url:`${e}-1.algolianet.com`},{url:`${e}-2.algolianet.com`},{url:`${e}-3.algolianet.com`}])),...t,headers:{...r.headers(),\"content-type\":\"application/x-www-form-urlencoded\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a={transporter:o,appId:e,addAlgoliaAgent(n,u){o.userAgent.add({segment:n,version:u})},clearCache(){return Promise.all([o.requestsCache.clear(),o.responsesCache.clear()]).then(()=>{})}};return Gt.addMethods(a,t.methods)};function rye(){return{name:\"MissingObjectIDError\",message:\"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option.\"}}function nye(){return{name:\"ObjectNotFoundError\",message:\"Object not found.\"}}function iye(){return{name:\"ValidUntilNotFoundError\",message:\"ValidUntil not found in given secured api key.\"}}var Kdt=t=>(e,r)=>{let{queryParameters:o,...a}=r||{},n={acl:e,...o!==void 0?{queryParameters:o}:{}},u=(A,p)=>Gt.createRetryablePromise(h=>X2(t)(A.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/keys\",data:n},a),u)},Vdt=t=>(e,r,o)=>{let a=La.createMappedRequestOptions(o);return a.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping\",data:{cluster:r}},a)},Jdt=t=>(e,r,o)=>t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping/batch\",data:{users:e,cluster:r}},o),zdt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:{action:\"addEntry\",body:[]}}},r),(o,a)=>QC(t)(o.taskID,a)),vk=t=>(e,r,o)=>{let a=(n,u)=>Z2(t)(e,{methods:{waitTask:Zi}}).waitTask(n.taskID,u);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"copy\",destination:r}},o),a)},Xdt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Pk.Rules]}),Zdt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Pk.Settings]}),$dt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Pk.Synonyms]}),emt=t=>(e,r)=>e.method===Ir.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),tmt=t=>(e,r)=>{let o=(a,n)=>Gt.createRetryablePromise(u=>X2(t)(e,n).then(u).catch(A=>{if(A.status!==404)throw A}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/keys/%s\",e)},r),o)},rmt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"deleteEntry\",body:{objectID:n}}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},nmt=()=>(t,e)=>{let r=La.serializeQueryParameters(e),o=Ydt.createHmac(\"sha256\",t).update(r).digest(\"hex\");return Buffer.from(o+r).toString(\"base64\")},X2=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/keys/%s\",e)},r),sye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/task/%s\",e.toString())},r),imt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"/1/dictionaries/*/settings\"},e),smt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/logs\"},e),omt=()=>t=>{let e=Buffer.from(t,\"base64\").toString(\"ascii\"),r=/validUntil=(\\d+)/,o=e.match(r);if(o===null)throw iye();return parseInt(o[1],10)-Math.round(new Date().getTime()/1e3)},amt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping/top\"},e),lmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/clusters/mapping/%s\",e)},r),cmt=t=>e=>{let{retrieveMappings:r,...o}=e||{};return r===!0&&(o.getClusters=!0),t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping/pending\"},o)},Z2=t=>(e,r={})=>{let o={transporter:t.transporter,appId:t.appId,indexName:e};return Gt.addMethods(o,r.methods)},umt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/keys\"},e),Amt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters\"},e),fmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/indexes\"},e),pmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping\"},e),hmt=t=>(e,r,o)=>{let a=(n,u)=>Z2(t)(e,{methods:{waitTask:Zi}}).waitTask(n.taskID,u);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"move\",destination:r}},o),a)},gmt=t=>(e,r)=>{let o=(a,n)=>Promise.all(Object.keys(a.taskID).map(u=>Z2(t)(u,{methods:{waitTask:Zi}}).waitTask(a.taskID[u],n)));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/indexes/*/batch\",data:{requests:e}},r),o)},dmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:e}},r),mmt=t=>(e,r)=>{let o=e.map(a=>({...a,params:La.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/queries\",data:{requests:o},cacheable:!0},r)},ymt=t=>(e,r)=>Promise.all(e.map(o=>{let{facetName:a,facetQuery:n,...u}=o.params;return Z2(t)(o.indexName,{methods:{searchForFacetValues:fye}}).searchForFacetValues(a,n,{...r,...u})})),Emt=t=>(e,r)=>{let o=La.createMappedRequestOptions(r);return o.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:Ir.MethodEnum.Delete,path:\"1/clusters/mapping\"},o)},Cmt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},wmt=t=>(e,r)=>{let o=(a,n)=>Gt.createRetryablePromise(u=>X2(t)(e,n).catch(A=>{if(A.status!==404)throw A;return u()}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/keys/%s/restore\",e)},r),o)},Imt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},Bmt=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/search\",e),data:{query:r},cacheable:!0},o),vmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping/search\",data:{query:e}},r),Dmt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:\"/1/dictionaries/*/settings\",data:e},r),(o,a)=>QC(t)(o.taskID,a)),Pmt=t=>(e,r)=>{let o=Object.assign({},r),{queryParameters:a,...n}=r||{},u=a?{queryParameters:a}:{},A=[\"acl\",\"indexes\",\"referers\",\"restrictSources\",\"queryParameters\",\"description\",\"maxQueriesPerIPPerHour\",\"maxHitsPerQuery\"],p=E=>Object.keys(o).filter(I=>A.indexOf(I)!==-1).every(I=>{if(Array.isArray(E[I])&&Array.isArray(o[I])){let v=E[I];return v.length===o[I].length&&v.every((x,C)=>x===o[I][C])}else return E[I]===o[I]}),h=(E,I)=>Gt.createRetryablePromise(v=>X2(t)(e,I).then(x=>p(x)?Promise.resolve():v()));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:Gt.encode(\"1/keys/%s\",e),data:u},n),h)},QC=t=>(e,r)=>Gt.createRetryablePromise(o=>sye(t)(e,r).then(a=>a.status!==\"published\"?o():void 0)),oye=t=>(e,r)=>{let o=(a,n)=>Zi(t)(a.taskID,n);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/batch\",t.indexName),data:{requests:e}},r),o)},Smt=t=>e=>Bk({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/browse\",t.indexName),data:r},e)}),bmt=t=>e=>{let r={hitsPerPage:1e3,...e};return Bk({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return pye(t)(\"\",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},xmt=t=>e=>{let r={hitsPerPage:1e3,...e};return Bk({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return hye(t)(\"\",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Dk=t=>(e,r,o)=>{let{batchSize:a,...n}=o||{},u={taskIDs:[],objectIDs:[]},A=(p=0)=>{let h=[],E;for(E=p;E<e.length&&(h.push(e[E]),h.length!==(a||1e3));E++);return h.length===0?Promise.resolve(u):oye(t)(h.map(I=>({action:r,body:I})),n).then(I=>(u.objectIDs=u.objectIDs.concat(I.objectIDs),u.taskIDs.push(I.taskID),E++,A(E)))};return Gt.createWaitablePromise(A(),(p,h)=>Promise.all(p.taskIDs.map(E=>Zi(t)(E,h))))},kmt=t=>e=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/clear\",t.indexName)},e),(r,o)=>Zi(t)(r.taskID,o)),Qmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=La.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/clear\",t.indexName)},a),(n,u)=>Zi(t)(n.taskID,u))},Fmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=La.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/clear\",t.indexName)},a),(n,u)=>Zi(t)(n.taskID,u))},Rmt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/deleteByQuery\",t.indexName),data:e},r),(o,a)=>Zi(t)(o.taskID,a)),Tmt=t=>e=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s\",t.indexName)},e),(r,o)=>Zi(t)(r.taskID,o)),Lmt=t=>(e,r)=>Gt.createWaitablePromise(aye(t)([e],r).then(o=>({taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),aye=t=>(e,r)=>{let o=e.map(a=>({objectID:a}));return Dk(t)(o,nm.DeleteObject,r)},Nmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=La.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},n),(u,A)=>Zi(t)(u.taskID,A))},Omt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=La.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},n),(u,A)=>Zi(t)(u.taskID,A))},Mmt=t=>e=>lye(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),Umt=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/answers/%s/prediction\",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},o),_mt=t=>(e,r)=>{let{query:o,paginate:a,...n}=r||{},u=0,A=()=>Aye(t)(o||\"\",{...n,page:u}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(e(E))return{object:E,position:parseInt(h,10),page:u};if(u++,a===!1||u>=p.nbPages)throw nye();return A()});return A()},Hmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/%s\",t.indexName,e)},r),jmt=()=>(t,e)=>{for(let[r,o]of Object.entries(t.hits))if(o.objectID===e)return parseInt(r,10);return-1},qmt=t=>(e,r)=>{let{attributesToRetrieve:o,...a}=r||{},n=e.map(u=>({indexName:t.indexName,objectID:u,...o?{attributesToRetrieve:o}:{}}));return t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:n}},a)},Gmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},r),lye=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/settings\",t.indexName),data:{getVersion:2}},e),Ymt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},r),cye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/task/%s\",t.indexName,e.toString())},r),Wmt=t=>(e,r)=>Gt.createWaitablePromise(uye(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),uye=t=>(e,r)=>{let{createIfNotExists:o,...a}=r||{},n=o?nm.PartialUpdateObject:nm.PartialUpdateObjectNoCreate;return Dk(t)(e,n,a)},Kmt=t=>(e,r)=>{let{safe:o,autoGenerateObjectIDIfNotExist:a,batchSize:n,...u}=r||{},A=(C,R,N,U)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",C),data:{operation:N,destination:R}},U),(J,te)=>Zi(t)(J.taskID,te)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,E=qH({appId:t.appId,transporter:t.transporter,indexName:h}),I=[],v=A(t.indexName,h,\"copy\",{...u,scope:[\"settings\",\"synonyms\",\"rules\"]});I.push(v);let x=(o?v.wait(u):v).then(()=>{let C=E(e,{...u,autoGenerateObjectIDIfNotExist:a,batchSize:n});return I.push(C),o?C.wait(u):C}).then(()=>{let C=A(h,t.indexName,\"move\",u);return I.push(C),o?C.wait(u):C}).then(()=>Promise.all(I)).then(([C,R,N])=>({objectIDs:R.objectIDs,taskIDs:[C.taskID,...R.taskIDs,N.taskID]}));return Gt.createWaitablePromise(x,(C,R)=>Promise.all(I.map(N=>N.wait(R))))},Vmt=t=>(e,r)=>GH(t)(e,{...r,clearExistingRules:!0}),Jmt=t=>(e,r)=>YH(t)(e,{...r,clearExistingSynonyms:!0}),zmt=t=>(e,r)=>Gt.createWaitablePromise(qH(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),qH=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:o,...a}=r||{},n=o?nm.AddObject:nm.UpdateObject;if(n===nm.UpdateObject){for(let u of e)if(u.objectID===void 0)return Gt.createWaitablePromise(Promise.reject(rye()))}return Dk(t)(e,n,a)},Xmt=t=>(e,r)=>GH(t)([e],r),GH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingRules:a,...n}=r||{},u=La.createMappedRequestOptions(n);return o&&(u.queryParameters.forwardToReplicas=1),a&&(u.queryParameters.clearExistingRules=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/batch\",t.indexName),data:e},u),(A,p)=>Zi(t)(A.taskID,p))},Zmt=t=>(e,r)=>YH(t)([e],r),YH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingSynonyms:a,replaceExistingSynonyms:n,...u}=r||{},A=La.createMappedRequestOptions(u);return o&&(A.queryParameters.forwardToReplicas=1),(n||a)&&(A.queryParameters.replaceExistingSynonyms=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/batch\",t.indexName),data:e},A),(p,h)=>Zi(t)(p.taskID,h))},Aye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/query\",t.indexName),data:{query:e},cacheable:!0},r),fye=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/facets/%s/query\",t.indexName,e),data:{facetQuery:r},cacheable:!0},o),pye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/search\",t.indexName),data:{query:e}},r),hye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/search\",t.indexName),data:{query:e}},r),$mt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=La.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:Gt.encode(\"1/indexes/%s/settings\",t.indexName),data:e},n),(u,A)=>Zi(t)(u.taskID,A))},Zi=t=>(e,r)=>Gt.createRetryablePromise(o=>cye(t)(e,r).then(a=>a.status!==\"published\"?o():void 0)),eyt={AddObject:\"addObject\",Analytics:\"analytics\",Browser:\"browse\",DeleteIndex:\"deleteIndex\",DeleteObject:\"deleteObject\",EditSettings:\"editSettings\",Inference:\"inference\",ListIndexes:\"listIndexes\",Logs:\"logs\",Personalization:\"personalization\",Recommendation:\"recommendation\",Search:\"search\",SeeUnretrievableAttributes:\"seeUnretrievableAttributes\",Settings:\"settings\",Usage:\"usage\"},nm={AddObject:\"addObject\",UpdateObject:\"updateObject\",PartialUpdateObject:\"partialUpdateObject\",PartialUpdateObjectNoCreate:\"partialUpdateObjectNoCreate\",DeleteObject:\"deleteObject\",DeleteIndex:\"delete\",ClearIndex:\"clear\"},Pk={Settings:\"settings\",Synonyms:\"synonyms\",Rules:\"rules\"},tyt={None:\"none\",StopIfEnoughMatches:\"stopIfEnoughMatches\"},ryt={Synonym:\"synonym\",OneWaySynonym:\"oneWaySynonym\",AltCorrection1:\"altCorrection1\",AltCorrection2:\"altCorrection2\",Placeholder:\"placeholder\"};Ft.ApiKeyACLEnum=eyt;Ft.BatchActionEnum=nm;Ft.ScopeEnum=Pk;Ft.StrategyEnum=tyt;Ft.SynonymEnum=ryt;Ft.addApiKey=Kdt;Ft.assignUserID=Vdt;Ft.assignUserIDs=Jdt;Ft.batch=oye;Ft.browseObjects=Smt;Ft.browseRules=bmt;Ft.browseSynonyms=xmt;Ft.chunkedBatch=Dk;Ft.clearDictionaryEntries=zdt;Ft.clearObjects=kmt;Ft.clearRules=Qmt;Ft.clearSynonyms=Fmt;Ft.copyIndex=vk;Ft.copyRules=Xdt;Ft.copySettings=Zdt;Ft.copySynonyms=$dt;Ft.createBrowsablePromise=Bk;Ft.createMissingObjectIDError=rye;Ft.createObjectNotFoundError=nye;Ft.createSearchClient=Wdt;Ft.createValidUntilNotFoundError=iye;Ft.customRequest=emt;Ft.deleteApiKey=tmt;Ft.deleteBy=Rmt;Ft.deleteDictionaryEntries=rmt;Ft.deleteIndex=Tmt;Ft.deleteObject=Lmt;Ft.deleteObjects=aye;Ft.deleteRule=Nmt;Ft.deleteSynonym=Omt;Ft.exists=Mmt;Ft.findAnswers=Umt;Ft.findObject=_mt;Ft.generateSecuredApiKey=nmt;Ft.getApiKey=X2;Ft.getAppTask=sye;Ft.getDictionarySettings=imt;Ft.getLogs=smt;Ft.getObject=Hmt;Ft.getObjectPosition=jmt;Ft.getObjects=qmt;Ft.getRule=Gmt;Ft.getSecuredApiKeyRemainingValidity=omt;Ft.getSettings=lye;Ft.getSynonym=Ymt;Ft.getTask=cye;Ft.getTopUserIDs=amt;Ft.getUserID=lmt;Ft.hasPendingMappings=cmt;Ft.initIndex=Z2;Ft.listApiKeys=umt;Ft.listClusters=Amt;Ft.listIndices=fmt;Ft.listUserIDs=pmt;Ft.moveIndex=hmt;Ft.multipleBatch=gmt;Ft.multipleGetObjects=dmt;Ft.multipleQueries=mmt;Ft.multipleSearchForFacetValues=ymt;Ft.partialUpdateObject=Wmt;Ft.partialUpdateObjects=uye;Ft.removeUserID=Emt;Ft.replaceAllObjects=Kmt;Ft.replaceAllRules=Vmt;Ft.replaceAllSynonyms=Jmt;Ft.replaceDictionaryEntries=Cmt;Ft.restoreApiKey=wmt;Ft.saveDictionaryEntries=Imt;Ft.saveObject=zmt;Ft.saveObjects=qH;Ft.saveRule=Xmt;Ft.saveRules=GH;Ft.saveSynonym=Zmt;Ft.saveSynonyms=YH;Ft.search=Aye;Ft.searchDictionaryEntries=Bmt;Ft.searchForFacetValues=fye;Ft.searchRules=pye;Ft.searchSynonyms=hye;Ft.searchUserIDs=vmt;Ft.setDictionarySettings=Dmt;Ft.setSettings=$mt;Ft.updateApiKey=Pmt;Ft.waitAppTask=QC;Ft.waitTask=Zi});var mye=_((WWt,dye)=>{dye.exports=gye()});var yye=_(Sk=>{\"use strict\";Object.defineProperty(Sk,\"__esModule\",{value:!0});function nyt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var iyt={Debug:1,Info:2,Error:3};Sk.LogLevelEnum=iyt;Sk.createNullLogger=nyt});var Cye=_((VWt,Eye)=>{Eye.exports=yye()});var vye=_(WH=>{\"use strict\";Object.defineProperty(WH,\"__esModule\",{value:!0});var wye=ve(\"http\"),Iye=ve(\"https\"),syt=ve(\"url\"),Bye={keepAlive:!0},oyt=new wye.Agent(Bye),ayt=new Iye.Agent(Bye);function lyt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:o={}}={}){let a=e||t||oyt,n=r||t||ayt;return{send(u){return new Promise(A=>{let p=syt.parse(u.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...o,agent:p.protocol===\"https:\"?n:a,hostname:p.hostname,path:h,method:u.method,headers:{...o&&o.headers?o.headers:{},...u.headers},...p.port!==void 0?{port:p.port||\"\"}:{}},I=(p.protocol===\"https:\"?Iye:wye).request(E,R=>{let N=[];R.on(\"data\",U=>{N=N.concat(U)}),R.on(\"end\",()=>{clearTimeout(x),clearTimeout(C),A({status:R.statusCode||0,content:Buffer.concat(N).toString(),isTimedOut:!1})})}),v=(R,N)=>setTimeout(()=>{I.abort(),A({status:0,content:N,isTimedOut:!0})},R*1e3),x=v(u.connectTimeout,\"Connection timeout\"),C;I.on(\"error\",R=>{clearTimeout(x),clearTimeout(C),A({status:0,content:R.message,isTimedOut:!1})}),I.once(\"response\",()=>{clearTimeout(x),C=v(u.responseTimeout,\"Socket timeout\")}),u.data!==void 0&&I.write(u.data),I.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}WH.createNodeHttpRequester=lyt});var Pye=_((zWt,Dye)=>{Dye.exports=vye()});var kye=_((XWt,xye)=>{\"use strict\";var Sye=vme(),cyt=Sme(),FC=Xme(),VH=Y2(),KH=tye(),_t=mye(),uyt=Cye(),Ayt=Pye(),fyt=V2();function bye(t,e,r){let o={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:Ayt.createNodeHttpRequester(),logger:uyt.createNullLogger(),responsesCache:Sye.createNullCache(),requestsCache:Sye.createNullCache(),hostsCache:cyt.createInMemoryCache(),userAgent:fyt.createUserAgent(VH.version).add({segment:\"Node.js\",version:process.versions.node})},a={...o,...r},n=()=>u=>KH.createPersonalizationClient({...o,...u,methods:{getPersonalizationStrategy:KH.getPersonalizationStrategy,setPersonalizationStrategy:KH.setPersonalizationStrategy}});return _t.createSearchClient({...a,methods:{search:_t.multipleQueries,searchForFacetValues:_t.multipleSearchForFacetValues,multipleBatch:_t.multipleBatch,multipleGetObjects:_t.multipleGetObjects,multipleQueries:_t.multipleQueries,copyIndex:_t.copyIndex,copySettings:_t.copySettings,copyRules:_t.copyRules,copySynonyms:_t.copySynonyms,moveIndex:_t.moveIndex,listIndices:_t.listIndices,getLogs:_t.getLogs,listClusters:_t.listClusters,multipleSearchForFacetValues:_t.multipleSearchForFacetValues,getApiKey:_t.getApiKey,addApiKey:_t.addApiKey,listApiKeys:_t.listApiKeys,updateApiKey:_t.updateApiKey,deleteApiKey:_t.deleteApiKey,restoreApiKey:_t.restoreApiKey,assignUserID:_t.assignUserID,assignUserIDs:_t.assignUserIDs,getUserID:_t.getUserID,searchUserIDs:_t.searchUserIDs,listUserIDs:_t.listUserIDs,getTopUserIDs:_t.getTopUserIDs,removeUserID:_t.removeUserID,hasPendingMappings:_t.hasPendingMappings,generateSecuredApiKey:_t.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:_t.getSecuredApiKeyRemainingValidity,destroy:VH.destroy,clearDictionaryEntries:_t.clearDictionaryEntries,deleteDictionaryEntries:_t.deleteDictionaryEntries,getDictionarySettings:_t.getDictionarySettings,getAppTask:_t.getAppTask,replaceDictionaryEntries:_t.replaceDictionaryEntries,saveDictionaryEntries:_t.saveDictionaryEntries,searchDictionaryEntries:_t.searchDictionaryEntries,setDictionarySettings:_t.setDictionarySettings,waitAppTask:_t.waitAppTask,customRequest:_t.customRequest,initIndex:u=>A=>_t.initIndex(u)(A,{methods:{batch:_t.batch,delete:_t.deleteIndex,findAnswers:_t.findAnswers,getObject:_t.getObject,getObjects:_t.getObjects,saveObject:_t.saveObject,saveObjects:_t.saveObjects,search:_t.search,searchForFacetValues:_t.searchForFacetValues,waitTask:_t.waitTask,setSettings:_t.setSettings,getSettings:_t.getSettings,partialUpdateObject:_t.partialUpdateObject,partialUpdateObjects:_t.partialUpdateObjects,deleteObject:_t.deleteObject,deleteObjects:_t.deleteObjects,deleteBy:_t.deleteBy,clearObjects:_t.clearObjects,browseObjects:_t.browseObjects,getObjectPosition:_t.getObjectPosition,findObject:_t.findObject,exists:_t.exists,saveSynonym:_t.saveSynonym,saveSynonyms:_t.saveSynonyms,getSynonym:_t.getSynonym,searchSynonyms:_t.searchSynonyms,browseSynonyms:_t.browseSynonyms,deleteSynonym:_t.deleteSynonym,clearSynonyms:_t.clearSynonyms,replaceAllObjects:_t.replaceAllObjects,replaceAllSynonyms:_t.replaceAllSynonyms,searchRules:_t.searchRules,getRule:_t.getRule,deleteRule:_t.deleteRule,saveRule:_t.saveRule,saveRules:_t.saveRules,replaceAllRules:_t.replaceAllRules,browseRules:_t.browseRules,clearRules:_t.clearRules}}),initAnalytics:()=>u=>FC.createAnalyticsClient({...o,...u,methods:{addABTest:FC.addABTest,getABTest:FC.getABTest,getABTests:FC.getABTests,stopABTest:FC.stopABTest,deleteABTest:FC.deleteABTest}}),initPersonalization:n,initRecommendation:()=>u=>(a.logger.info(\"The `initRecommendation` method is deprecated. Use `initPersonalization` instead.\"),n()(u))}})}bye.version=VH.version;xye.exports=bye});var zH=_((ZWt,JH)=>{var Qye=kye();JH.exports=Qye;JH.exports.default=Qye});var $H=_((eKt,Tye)=>{\"use strict\";var Rye=Object.getOwnPropertySymbols,hyt=Object.prototype.hasOwnProperty,gyt=Object.prototype.propertyIsEnumerable;function dyt(t){if(t==null)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(t)}function myt(){try{if(!Object.assign)return!1;var t=new String(\"abc\");if(t[5]=\"de\",Object.getOwnPropertyNames(t)[0]===\"5\")return!1;for(var e={},r=0;r<10;r++)e[\"_\"+String.fromCharCode(r)]=r;var o=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(o.join(\"\")!==\"0123456789\")return!1;var a={};return\"abcdefghijklmnopqrst\".split(\"\").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join(\"\")===\"abcdefghijklmnopqrst\"}catch{return!1}}Tye.exports=myt()?Object.assign:function(t,e){for(var r,o=dyt(t),a,n=1;n<arguments.length;n++){r=Object(arguments[n]);for(var u in r)hyt.call(r,u)&&(o[u]=r[u]);if(Rye){a=Rye(r);for(var A=0;A<a.length;A++)gyt.call(r,a[A])&&(o[a[A]]=r[a[A]])}}return o}});var Wye=_(Ln=>{\"use strict\";var i6=$H(),$c=typeof Symbol==\"function\"&&Symbol.for,$2=$c?Symbol.for(\"react.element\"):60103,yyt=$c?Symbol.for(\"react.portal\"):60106,Eyt=$c?Symbol.for(\"react.fragment\"):60107,Cyt=$c?Symbol.for(\"react.strict_mode\"):60108,wyt=$c?Symbol.for(\"react.profiler\"):60114,Iyt=$c?Symbol.for(\"react.provider\"):60109,Byt=$c?Symbol.for(\"react.context\"):60110,vyt=$c?Symbol.for(\"react.forward_ref\"):60112,Dyt=$c?Symbol.for(\"react.suspense\"):60113,Pyt=$c?Symbol.for(\"react.memo\"):60115,Syt=$c?Symbol.for(\"react.lazy\"):60116,Lye=typeof Symbol==\"function\"&&Symbol.iterator;function eB(t){for(var e=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+t,r=1;r<arguments.length;r++)e+=\"&args[]=\"+encodeURIComponent(arguments[r]);return\"Minified React error #\"+t+\"; visit \"+e+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var Nye={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Oye={};function RC(t,e,r){this.props=t,this.context=e,this.refs=Oye,this.updater=r||Nye}RC.prototype.isReactComponent={};RC.prototype.setState=function(t,e){if(typeof t!=\"object\"&&typeof t!=\"function\"&&t!=null)throw Error(eB(85));this.updater.enqueueSetState(this,t,e,\"setState\")};RC.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,\"forceUpdate\")};function Mye(){}Mye.prototype=RC.prototype;function s6(t,e,r){this.props=t,this.context=e,this.refs=Oye,this.updater=r||Nye}var o6=s6.prototype=new Mye;o6.constructor=s6;i6(o6,RC.prototype);o6.isPureReactComponent=!0;var a6={current:null},Uye=Object.prototype.hasOwnProperty,_ye={key:!0,ref:!0,__self:!0,__source:!0};function Hye(t,e,r){var o,a={},n=null,u=null;if(e!=null)for(o in e.ref!==void 0&&(u=e.ref),e.key!==void 0&&(n=\"\"+e.key),e)Uye.call(e,o)&&!_ye.hasOwnProperty(o)&&(a[o]=e[o]);var A=arguments.length-2;if(A===1)a.children=r;else if(1<A){for(var p=Array(A),h=0;h<A;h++)p[h]=arguments[h+2];a.children=p}if(t&&t.defaultProps)for(o in A=t.defaultProps,A)a[o]===void 0&&(a[o]=A[o]);return{$$typeof:$2,type:t,key:n,ref:u,props:a,_owner:a6.current}}function byt(t,e){return{$$typeof:$2,type:t.type,key:e,ref:t.ref,props:t.props,_owner:t._owner}}function l6(t){return typeof t==\"object\"&&t!==null&&t.$$typeof===$2}function xyt(t){var e={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+t).replace(/[=:]/g,function(r){return e[r]})}var jye=/\\/+/g,bk=[];function qye(t,e,r,o){if(bk.length){var a=bk.pop();return a.result=t,a.keyPrefix=e,a.func=r,a.context=o,a.count=0,a}return{result:t,keyPrefix:e,func:r,context:o,count:0}}function Gye(t){t.result=null,t.keyPrefix=null,t.func=null,t.context=null,t.count=0,10>bk.length&&bk.push(t)}function t6(t,e,r,o){var a=typeof t;(a===\"undefined\"||a===\"boolean\")&&(t=null);var n=!1;if(t===null)n=!0;else switch(a){case\"string\":case\"number\":n=!0;break;case\"object\":switch(t.$$typeof){case $2:case yyt:n=!0}}if(n)return r(o,t,e===\"\"?\".\"+e6(t,0):e),1;if(n=0,e=e===\"\"?\".\":e+\":\",Array.isArray(t))for(var u=0;u<t.length;u++){a=t[u];var A=e+e6(a,u);n+=t6(a,A,r,o)}else if(t===null||typeof t!=\"object\"?A=null:(A=Lye&&t[Lye]||t[\"@@iterator\"],A=typeof A==\"function\"?A:null),typeof A==\"function\")for(t=A.call(t),u=0;!(a=t.next()).done;)a=a.value,A=e+e6(a,u++),n+=t6(a,A,r,o);else if(a===\"object\")throw r=\"\"+t,Error(eB(31,r===\"[object Object]\"?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":r,\"\"));return n}function r6(t,e,r){return t==null?0:t6(t,\"\",e,r)}function e6(t,e){return typeof t==\"object\"&&t!==null&&t.key!=null?xyt(t.key):e.toString(36)}function kyt(t,e){t.func.call(t.context,e,t.count++)}function Qyt(t,e,r){var o=t.result,a=t.keyPrefix;t=t.func.call(t.context,e,t.count++),Array.isArray(t)?n6(t,o,r,function(n){return n}):t!=null&&(l6(t)&&(t=byt(t,a+(!t.key||e&&e.key===t.key?\"\":(\"\"+t.key).replace(jye,\"$&/\")+\"/\")+r)),o.push(t))}function n6(t,e,r,o,a){var n=\"\";r!=null&&(n=(\"\"+r).replace(jye,\"$&/\")+\"/\"),e=qye(e,n,o,a),r6(t,Qyt,e),Gye(e)}var Yye={current:null};function Xf(){var t=Yye.current;if(t===null)throw Error(eB(321));return t}var Fyt={ReactCurrentDispatcher:Yye,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:a6,IsSomeRendererActing:{current:!1},assign:i6};Ln.Children={map:function(t,e,r){if(t==null)return t;var o=[];return n6(t,o,null,e,r),o},forEach:function(t,e,r){if(t==null)return t;e=qye(null,null,e,r),r6(t,kyt,e),Gye(e)},count:function(t){return r6(t,function(){return null},null)},toArray:function(t){var e=[];return n6(t,e,null,function(r){return r}),e},only:function(t){if(!l6(t))throw Error(eB(143));return t}};Ln.Component=RC;Ln.Fragment=Eyt;Ln.Profiler=wyt;Ln.PureComponent=s6;Ln.StrictMode=Cyt;Ln.Suspense=Dyt;Ln.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Fyt;Ln.cloneElement=function(t,e,r){if(t==null)throw Error(eB(267,t));var o=i6({},t.props),a=t.key,n=t.ref,u=t._owner;if(e!=null){if(e.ref!==void 0&&(n=e.ref,u=a6.current),e.key!==void 0&&(a=\"\"+e.key),t.type&&t.type.defaultProps)var A=t.type.defaultProps;for(p in e)Uye.call(e,p)&&!_ye.hasOwnProperty(p)&&(o[p]=e[p]===void 0&&A!==void 0?A[p]:e[p])}var p=arguments.length-2;if(p===1)o.children=r;else if(1<p){A=Array(p);for(var h=0;h<p;h++)A[h]=arguments[h+2];o.children=A}return{$$typeof:$2,type:t.type,key:a,ref:n,props:o,_owner:u}};Ln.createContext=function(t,e){return e===void 0&&(e=null),t={$$typeof:Byt,_calculateChangedBits:e,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider={$$typeof:Iyt,_context:t},t.Consumer=t};Ln.createElement=Hye;Ln.createFactory=function(t){var e=Hye.bind(null,t);return e.type=t,e};Ln.createRef=function(){return{current:null}};Ln.forwardRef=function(t){return{$$typeof:vyt,render:t}};Ln.isValidElement=l6;Ln.lazy=function(t){return{$$typeof:Syt,_ctor:t,_status:-1,_result:null}};Ln.memo=function(t,e){return{$$typeof:Pyt,type:t,compare:e===void 0?null:e}};Ln.useCallback=function(t,e){return Xf().useCallback(t,e)};Ln.useContext=function(t,e){return Xf().useContext(t,e)};Ln.useDebugValue=function(){};Ln.useEffect=function(t,e){return Xf().useEffect(t,e)};Ln.useImperativeHandle=function(t,e,r){return Xf().useImperativeHandle(t,e,r)};Ln.useLayoutEffect=function(t,e){return Xf().useLayoutEffect(t,e)};Ln.useMemo=function(t,e){return Xf().useMemo(t,e)};Ln.useReducer=function(t,e,r){return Xf().useReducer(t,e,r)};Ln.useRef=function(t){return Xf().useRef(t)};Ln.useState=function(t){return Xf().useState(t)};Ln.version=\"16.13.1\"});var on=_((rKt,Kye)=>{\"use strict\";Kye.exports=Wye()});var u6=_((nKt,c6)=>{\"use strict\";var An=c6.exports;c6.exports.default=An;var Nn=\"\\x1B[\",tB=\"\\x1B]\",TC=\"\\x07\",xk=\";\",Vye=process.env.TERM_PROGRAM===\"Apple_Terminal\";An.cursorTo=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");return typeof e!=\"number\"?Nn+(t+1)+\"G\":Nn+(e+1)+\";\"+(t+1)+\"H\"};An.cursorMove=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");let r=\"\";return t<0?r+=Nn+-t+\"D\":t>0&&(r+=Nn+t+\"C\"),e<0?r+=Nn+-e+\"A\":e>0&&(r+=Nn+e+\"B\"),r};An.cursorUp=(t=1)=>Nn+t+\"A\";An.cursorDown=(t=1)=>Nn+t+\"B\";An.cursorForward=(t=1)=>Nn+t+\"C\";An.cursorBackward=(t=1)=>Nn+t+\"D\";An.cursorLeft=Nn+\"G\";An.cursorSavePosition=Vye?\"\\x1B7\":Nn+\"s\";An.cursorRestorePosition=Vye?\"\\x1B8\":Nn+\"u\";An.cursorGetPosition=Nn+\"6n\";An.cursorNextLine=Nn+\"E\";An.cursorPrevLine=Nn+\"F\";An.cursorHide=Nn+\"?25l\";An.cursorShow=Nn+\"?25h\";An.eraseLines=t=>{let e=\"\";for(let r=0;r<t;r++)e+=An.eraseLine+(r<t-1?An.cursorUp():\"\");return t&&(e+=An.cursorLeft),e};An.eraseEndLine=Nn+\"K\";An.eraseStartLine=Nn+\"1K\";An.eraseLine=Nn+\"2K\";An.eraseDown=Nn+\"J\";An.eraseUp=Nn+\"1J\";An.eraseScreen=Nn+\"2J\";An.scrollUp=Nn+\"S\";An.scrollDown=Nn+\"T\";An.clearScreen=\"\\x1Bc\";An.clearTerminal=process.platform===\"win32\"?`${An.eraseScreen}${Nn}0f`:`${An.eraseScreen}${Nn}3J${Nn}H`;An.beep=TC;An.link=(t,e)=>[tB,\"8\",xk,xk,e,TC,t,tB,\"8\",xk,xk,TC].join(\"\");An.image=(t,e={})=>{let r=`${tB}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=\";preserveAspectRatio=0\"),r+\":\"+t.toString(\"base64\")+TC};An.iTerm={setCwd:(t=process.cwd())=>`${tB}50;CurrentDir=${t}${TC}`,annotation:(t,e={})=>{let r=`${tB}1337;`,o=typeof e.x<\"u\",a=typeof e.y<\"u\";if((o||a)&&!(o&&a&&typeof e.length<\"u\"))throw new Error(\"`x`, `y` and `length` must be defined when `x` or `y` is defined\");return t=t.replace(/\\|/g,\"\"),r+=e.isHidden?\"AddHiddenAnnotation=\":\"AddAnnotation=\",e.length>0?r+=(o?[t,e.length,e.x,e.y]:[e.length,t]).join(\"|\"):r+=t,r+TC}}});var zye=_((iKt,A6)=>{\"use strict\";var Jye=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};A6.exports=Jye;A6.exports.default=Jye});var Zye=_((sKt,Qk)=>{\"use strict\";var Ryt=zye(),kk=new WeakMap,Xye=(t,e={})=>{if(typeof t!=\"function\")throw new TypeError(\"Expected a function\");let r,o=0,a=t.displayName||t.name||\"<anonymous>\",n=function(...u){if(kk.set(n,++o),o===1)r=t.apply(this,u),t=null;else if(e.throw===!0)throw new Error(`Function \\`${a}\\` can only be called once`);return r};return Ryt(n,t),kk.set(n,o),n};Qk.exports=Xye;Qk.exports.default=Xye;Qk.exports.callCount=t=>{if(!kk.has(t))throw new Error(`The given function \\`${t.name}\\` is not wrapped by the \\`onetime\\` package`);return kk.get(t)}});var $ye=_((oKt,Fk)=>{Fk.exports=[\"SIGABRT\",\"SIGALRM\",\"SIGHUP\",\"SIGINT\",\"SIGTERM\"];process.platform!==\"win32\"&&Fk.exports.push(\"SIGVTALRM\",\"SIGXCPU\",\"SIGXFSZ\",\"SIGUSR2\",\"SIGTRAP\",\"SIGSYS\",\"SIGQUIT\",\"SIGIOT\");process.platform===\"linux\"&&Fk.exports.push(\"SIGIO\",\"SIGPOLL\",\"SIGPWR\",\"SIGSTKFLT\",\"SIGUNUSED\")});var h6=_((aKt,OC)=>{var Ei=global.process,im=function(t){return t&&typeof t==\"object\"&&typeof t.removeListener==\"function\"&&typeof t.emit==\"function\"&&typeof t.reallyExit==\"function\"&&typeof t.listeners==\"function\"&&typeof t.kill==\"function\"&&typeof t.pid==\"number\"&&typeof t.on==\"function\"};im(Ei)?(eEe=ve(\"assert\"),LC=$ye(),tEe=/^win/i.test(Ei.platform),rB=ve(\"events\"),typeof rB!=\"function\"&&(rB=rB.EventEmitter),Ei.__signal_exit_emitter__?Ts=Ei.__signal_exit_emitter__:(Ts=Ei.__signal_exit_emitter__=new rB,Ts.count=0,Ts.emitted={}),Ts.infinite||(Ts.setMaxListeners(1/0),Ts.infinite=!0),OC.exports=function(t,e){if(!im(global.process))return function(){};eEe.equal(typeof t,\"function\",\"a callback must be provided for exit handler\"),NC===!1&&f6();var r=\"exit\";e&&e.alwaysLast&&(r=\"afterexit\");var o=function(){Ts.removeListener(r,t),Ts.listeners(\"exit\").length===0&&Ts.listeners(\"afterexit\").length===0&&Rk()};return Ts.on(r,t),o},Rk=function(){!NC||!im(global.process)||(NC=!1,LC.forEach(function(e){try{Ei.removeListener(e,Tk[e])}catch{}}),Ei.emit=Lk,Ei.reallyExit=p6,Ts.count-=1)},OC.exports.unload=Rk,sm=function(e,r,o){Ts.emitted[e]||(Ts.emitted[e]=!0,Ts.emit(e,r,o))},Tk={},LC.forEach(function(t){Tk[t]=function(){if(!!im(global.process)){var r=Ei.listeners(t);r.length===Ts.count&&(Rk(),sm(\"exit\",null,t),sm(\"afterexit\",null,t),tEe&&t===\"SIGHUP\"&&(t=\"SIGINT\"),Ei.kill(Ei.pid,t))}}}),OC.exports.signals=function(){return LC},NC=!1,f6=function(){NC||!im(global.process)||(NC=!0,Ts.count+=1,LC=LC.filter(function(e){try{return Ei.on(e,Tk[e]),!0}catch{return!1}}),Ei.emit=nEe,Ei.reallyExit=rEe)},OC.exports.load=f6,p6=Ei.reallyExit,rEe=function(e){!im(global.process)||(Ei.exitCode=e||0,sm(\"exit\",Ei.exitCode,null),sm(\"afterexit\",Ei.exitCode,null),p6.call(Ei,Ei.exitCode))},Lk=Ei.emit,nEe=function(e,r){if(e===\"exit\"&&im(global.process)){r!==void 0&&(Ei.exitCode=r);var o=Lk.apply(this,arguments);return sm(\"exit\",Ei.exitCode,null),sm(\"afterexit\",Ei.exitCode,null),o}else return Lk.apply(this,arguments)}):OC.exports=function(){return function(){}};var eEe,LC,tEe,rB,Ts,Rk,sm,Tk,NC,f6,p6,rEe,Lk,nEe});var sEe=_((lKt,iEe)=>{\"use strict\";var Tyt=Zye(),Lyt=h6();iEe.exports=Tyt(()=>{Lyt(()=>{process.stderr.write(\"\\x1B[?25h\")},{alwaysLast:!0})})});var g6=_(MC=>{\"use strict\";var Nyt=sEe(),Nk=!1;MC.show=(t=process.stderr)=>{!t.isTTY||(Nk=!1,t.write(\"\\x1B[?25h\"))};MC.hide=(t=process.stderr)=>{!t.isTTY||(Nyt(),Nk=!0,t.write(\"\\x1B[?25l\"))};MC.toggle=(t,e)=>{t!==void 0&&(Nk=t),Nk?MC.show(e):MC.hide(e)}});var cEe=_(nB=>{\"use strict\";var lEe=nB&&nB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nB,\"__esModule\",{value:!0});var oEe=lEe(u6()),aEe=lEe(g6()),Oyt=(t,{showCursor:e=!1}={})=>{let r=0,o=\"\",a=!1,n=u=>{!e&&!a&&(aEe.default.hide(),a=!0);let A=u+`\n`;A!==o&&(o=A,t.write(oEe.default.eraseLines(r)+A),r=A.split(`\n`).length)};return n.clear=()=>{t.write(oEe.default.eraseLines(r)),o=\"\",r=0},n.done=()=>{o=\"\",r=0,e||(aEe.default.show(),a=!1)},n};nB.default={create:Oyt}});var uEe=_((AKt,Myt)=>{Myt.exports=[{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\",pr:\"SYSTEM_PULLREQUEST_PULLREQUESTID\"},{name:\"Bamboo\",constant:\"BAMBOO\",env:\"bamboo_planKey\"},{name:\"Bitbucket Pipelines\",constant:\"BITBUCKET\",env:\"BITBUCKET_COMMIT\",pr:\"BITBUCKET_PR_ID\"},{name:\"Bitrise\",constant:\"BITRISE\",env:\"BITRISE_IO\",pr:\"BITRISE_PULL_REQUEST\"},{name:\"Buddy\",constant:\"BUDDY\",env:\"BUDDY_WORKSPACE_ID\",pr:\"BUDDY_EXECUTION_PULL_REQUEST_ID\"},{name:\"Buildkite\",constant:\"BUILDKITE\",env:\"BUILDKITE\",pr:{env:\"BUILDKITE_PULL_REQUEST\",ne:\"false\"}},{name:\"CircleCI\",constant:\"CIRCLE\",env:\"CIRCLECI\",pr:\"CIRCLE_PULL_REQUEST\"},{name:\"Cirrus CI\",constant:\"CIRRUS\",env:\"CIRRUS_CI\",pr:\"CIRRUS_PR\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY_BUILD_BASE\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Shippable\",constant:\"SHIPPABLE\",env:\"SHIPPABLE\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Solano CI\",constant:\"SOLANO\",env:\"TDDIUM\",pr:\"TDDIUM_PR_ID\"},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}}]});var pEe=_(gl=>{\"use strict\";var fEe=uEe(),pA=process.env;Object.defineProperty(gl,\"_vendors\",{value:fEe.map(function(t){return t.constant})});gl.name=null;gl.isPR=null;fEe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(o){return AEe(o)});if(gl[t.constant]=r,r)switch(gl.name=t.name,typeof t.pr){case\"string\":gl.isPR=!!pA[t.pr];break;case\"object\":\"env\"in t.pr?gl.isPR=t.pr.env in pA&&pA[t.pr.env]!==t.pr.ne:\"any\"in t.pr?gl.isPR=t.pr.any.some(function(o){return!!pA[o]}):gl.isPR=AEe(t.pr);break;default:gl.isPR=null}});gl.isCI=!!(pA.CI||pA.CONTINUOUS_INTEGRATION||pA.BUILD_NUMBER||pA.RUN_ID||gl.name);function AEe(t){return typeof t==\"string\"?!!pA[t]:Object.keys(t).every(function(e){return pA[e]===t[e]})}});var gEe=_((pKt,hEe)=>{\"use strict\";hEe.exports=pEe().isCI});var mEe=_((hKt,dEe)=>{\"use strict\";var Uyt=t=>{let e=new Set;do for(let r of Reflect.ownKeys(t))e.add([t,r]);while((t=Reflect.getPrototypeOf(t))&&t!==Object.prototype);return e};dEe.exports=(t,{include:e,exclude:r}={})=>{let o=a=>{let n=u=>typeof u==\"string\"?a===u:u.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of Uyt(t.constructor.prototype)){if(n===\"constructor\"||!o(n))continue;let u=Reflect.getOwnPropertyDescriptor(a,n);u&&typeof u.value==\"function\"&&(t[n]=t[n].bind(t))}return t}});var vEe=_(kn=>{\"use strict\";Object.defineProperty(kn,\"__esModule\",{value:!0});var _C,oB,Hk,jk,I6;typeof window>\"u\"||typeof MessageChannel!=\"function\"?(UC=null,d6=null,m6=function(){if(UC!==null)try{var t=kn.unstable_now();UC(!0,t),UC=null}catch(e){throw setTimeout(m6,0),e}},yEe=Date.now(),kn.unstable_now=function(){return Date.now()-yEe},_C=function(t){UC!==null?setTimeout(_C,0,t):(UC=t,setTimeout(m6,0))},oB=function(t,e){d6=setTimeout(t,e)},Hk=function(){clearTimeout(d6)},jk=function(){return!1},I6=kn.unstable_forceFrameRate=function(){}):(Ok=window.performance,y6=window.Date,EEe=window.setTimeout,CEe=window.clearTimeout,typeof console<\"u\"&&(wEe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!=\"function\"&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),typeof wEe!=\"function\"&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")),typeof Ok==\"object\"&&typeof Ok.now==\"function\"?kn.unstable_now=function(){return Ok.now()}:(IEe=y6.now(),kn.unstable_now=function(){return y6.now()-IEe}),iB=!1,sB=null,Mk=-1,E6=5,C6=0,jk=function(){return kn.unstable_now()>=C6},I6=function(){},kn.unstable_forceFrameRate=function(t){0>t||125<t?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):E6=0<t?Math.floor(1e3/t):5},w6=new MessageChannel,Uk=w6.port2,w6.port1.onmessage=function(){if(sB!==null){var t=kn.unstable_now();C6=t+E6;try{sB(!0,t)?Uk.postMessage(null):(iB=!1,sB=null)}catch(e){throw Uk.postMessage(null),e}}else iB=!1},_C=function(t){sB=t,iB||(iB=!0,Uk.postMessage(null))},oB=function(t,e){Mk=EEe(function(){t(kn.unstable_now())},e)},Hk=function(){CEe(Mk),Mk=-1});var UC,d6,m6,yEe,Ok,y6,EEe,CEe,wEe,IEe,iB,sB,Mk,E6,C6,w6,Uk;function B6(t,e){var r=t.length;t.push(e);e:for(;;){var o=Math.floor((r-1)/2),a=t[o];if(a!==void 0&&0<_k(a,e))t[o]=e,t[r]=a,r=o;else break e}}function nc(t){return t=t[0],t===void 0?null:t}function qk(t){var e=t[0];if(e!==void 0){var r=t.pop();if(r!==e){t[0]=r;e:for(var o=0,a=t.length;o<a;){var n=2*(o+1)-1,u=t[n],A=n+1,p=t[A];if(u!==void 0&&0>_k(u,r))p!==void 0&&0>_k(p,u)?(t[o]=p,t[A]=r,o=A):(t[o]=u,t[n]=r,o=n);else if(p!==void 0&&0>_k(p,r))t[o]=p,t[A]=r,o=A;else break e}}return e}return null}function _k(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var eu=[],y0=[],_yt=1,na=null,No=3,Gk=!1,om=!1,aB=!1;function Yk(t){for(var e=nc(y0);e!==null;){if(e.callback===null)qk(y0);else if(e.startTime<=t)qk(y0),e.sortIndex=e.expirationTime,B6(eu,e);else break;e=nc(y0)}}function v6(t){if(aB=!1,Yk(t),!om)if(nc(eu)!==null)om=!0,_C(D6);else{var e=nc(y0);e!==null&&oB(v6,e.startTime-t)}}function D6(t,e){om=!1,aB&&(aB=!1,Hk()),Gk=!0;var r=No;try{for(Yk(e),na=nc(eu);na!==null&&(!(na.expirationTime>e)||t&&!jk());){var o=na.callback;if(o!==null){na.callback=null,No=na.priorityLevel;var a=o(na.expirationTime<=e);e=kn.unstable_now(),typeof a==\"function\"?na.callback=a:na===nc(eu)&&qk(eu),Yk(e)}else qk(eu);na=nc(eu)}if(na!==null)var n=!0;else{var u=nc(y0);u!==null&&oB(v6,u.startTime-e),n=!1}return n}finally{na=null,No=r,Gk=!1}}function BEe(t){switch(t){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var Hyt=I6;kn.unstable_ImmediatePriority=1;kn.unstable_UserBlockingPriority=2;kn.unstable_NormalPriority=3;kn.unstable_IdlePriority=5;kn.unstable_LowPriority=4;kn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=No;No=t;try{return e()}finally{No=r}};kn.unstable_next=function(t){switch(No){case 1:case 2:case 3:var e=3;break;default:e=No}var r=No;No=e;try{return t()}finally{No=r}};kn.unstable_scheduleCallback=function(t,e,r){var o=kn.unstable_now();if(typeof r==\"object\"&&r!==null){var a=r.delay;a=typeof a==\"number\"&&0<a?o+a:o,r=typeof r.timeout==\"number\"?r.timeout:BEe(t)}else r=BEe(t),a=o;return r=a+r,t={id:_yt++,callback:e,priorityLevel:t,startTime:a,expirationTime:r,sortIndex:-1},a>o?(t.sortIndex=a,B6(y0,t),nc(eu)===null&&t===nc(y0)&&(aB?Hk():aB=!0,oB(v6,a-o))):(t.sortIndex=r,B6(eu,t),om||Gk||(om=!0,_C(D6))),t};kn.unstable_cancelCallback=function(t){t.callback=null};kn.unstable_wrapCallback=function(t){var e=No;return function(){var r=No;No=e;try{return t.apply(this,arguments)}finally{No=r}}};kn.unstable_getCurrentPriorityLevel=function(){return No};kn.unstable_shouldYield=function(){var t=kn.unstable_now();Yk(t);var e=nc(eu);return e!==na&&na!==null&&e!==null&&e.callback!==null&&e.startTime<=t&&e.expirationTime<na.expirationTime||jk()};kn.unstable_requestPaint=Hyt;kn.unstable_continueExecution=function(){om||Gk||(om=!0,_C(D6))};kn.unstable_pauseExecution=function(){};kn.unstable_getFirstCallbackNode=function(){return nc(eu)};kn.unstable_Profiling=null});var P6=_((dKt,DEe)=>{\"use strict\";DEe.exports=vEe()});var PEe=_((mKt,lB)=>{lB.exports=function t(e){\"use strict\";var r=$H(),o=on(),a=P6();function n(P){for(var D=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+P,T=1;T<arguments.length;T++)D+=\"&args[]=\"+encodeURIComponent(arguments[T]);return\"Minified React error #\"+P+\"; visit \"+D+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var u=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;u.hasOwnProperty(\"ReactCurrentDispatcher\")||(u.ReactCurrentDispatcher={current:null}),u.hasOwnProperty(\"ReactCurrentBatchConfig\")||(u.ReactCurrentBatchConfig={suspense:null});var A=typeof Symbol==\"function\"&&Symbol.for,p=A?Symbol.for(\"react.element\"):60103,h=A?Symbol.for(\"react.portal\"):60106,E=A?Symbol.for(\"react.fragment\"):60107,I=A?Symbol.for(\"react.strict_mode\"):60108,v=A?Symbol.for(\"react.profiler\"):60114,x=A?Symbol.for(\"react.provider\"):60109,C=A?Symbol.for(\"react.context\"):60110,R=A?Symbol.for(\"react.concurrent_mode\"):60111,N=A?Symbol.for(\"react.forward_ref\"):60112,U=A?Symbol.for(\"react.suspense\"):60113,J=A?Symbol.for(\"react.suspense_list\"):60120,te=A?Symbol.for(\"react.memo\"):60115,ae=A?Symbol.for(\"react.lazy\"):60116;A&&Symbol.for(\"react.fundamental\"),A&&Symbol.for(\"react.responder\"),A&&Symbol.for(\"react.scope\");var fe=typeof Symbol==\"function\"&&Symbol.iterator;function ce(P){return P===null||typeof P!=\"object\"?null:(P=fe&&P[fe]||P[\"@@iterator\"],typeof P==\"function\"?P:null)}function me(P){if(P._status===-1){P._status=0;var D=P._ctor;D=D(),P._result=D,D.then(function(T){P._status===0&&(T=T.default,P._status=1,P._result=T)},function(T){P._status===0&&(P._status=2,P._result=T)})}}function he(P){if(P==null)return null;if(typeof P==\"function\")return P.displayName||P.name||null;if(typeof P==\"string\")return P;switch(P){case E:return\"Fragment\";case h:return\"Portal\";case v:return\"Profiler\";case I:return\"StrictMode\";case U:return\"Suspense\";case J:return\"SuspenseList\"}if(typeof P==\"object\")switch(P.$$typeof){case C:return\"Context.Consumer\";case x:return\"Context.Provider\";case N:var D=P.render;return D=D.displayName||D.name||\"\",P.displayName||(D!==\"\"?\"ForwardRef(\"+D+\")\":\"ForwardRef\");case te:return he(P.type);case ae:if(P=P._status===1?P._result:null)return he(P)}return null}function Be(P){var D=P,T=P;if(P.alternate)for(;D.return;)D=D.return;else{P=D;do D=P,(D.effectTag&1026)!==0&&(T=D.return),P=D.return;while(P)}return D.tag===3?T:null}function we(P){if(Be(P)!==P)throw Error(n(188))}function g(P){var D=P.alternate;if(!D){if(D=Be(P),D===null)throw Error(n(188));return D!==P?null:P}for(var T=P,j=D;;){var Y=T.return;if(Y===null)break;var Ae=Y.alternate;if(Ae===null){if(j=Y.return,j!==null){T=j;continue}break}if(Y.child===Ae.child){for(Ae=Y.child;Ae;){if(Ae===T)return we(Y),P;if(Ae===j)return we(Y),D;Ae=Ae.sibling}throw Error(n(188))}if(T.return!==j.return)T=Y,j=Ae;else{for(var De=!1,vt=Y.child;vt;){if(vt===T){De=!0,T=Y,j=Ae;break}if(vt===j){De=!0,j=Y,T=Ae;break}vt=vt.sibling}if(!De){for(vt=Ae.child;vt;){if(vt===T){De=!0,T=Ae,j=Y;break}if(vt===j){De=!0,j=Ae,T=Y;break}vt=vt.sibling}if(!De)throw Error(n(189))}}if(T.alternate!==j)throw Error(n(190))}if(T.tag!==3)throw Error(n(188));return T.stateNode.current===T?P:D}function Ee(P){if(P=g(P),!P)return null;for(var D=P;;){if(D.tag===5||D.tag===6)return D;if(D.child)D.child.return=D,D=D.child;else{if(D===P)break;for(;!D.sibling;){if(!D.return||D.return===P)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function Pe(P){if(P=g(P),!P)return null;for(var D=P;;){if(D.tag===5||D.tag===6)return D;if(D.child&&D.tag!==4)D.child.return=D,D=D.child;else{if(D===P)break;for(;!D.sibling;){if(!D.return||D.return===P)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}var le=e.getPublicInstance,ne=e.getRootHostContext,ee=e.getChildHostContext,Ie=e.prepareForCommit,Fe=e.resetAfterCommit,At=e.createInstance,H=e.appendInitialChild,at=e.finalizeInitialChildren,Re=e.prepareUpdate,ke=e.shouldSetTextContent,xe=e.shouldDeprioritizeSubtree,He=e.createTextInstance,Te=e.setTimeout,Je=e.clearTimeout,je=e.noTimeout,b=e.isPrimaryRenderer,w=e.supportsMutation,S=e.supportsPersistence,y=e.supportsHydration,F=e.appendChild,z=e.appendChildToContainer,X=e.commitTextUpdate,Z=e.commitMount,ie=e.commitUpdate,be=e.insertBefore,Le=e.insertInContainerBefore,ot=e.removeChild,dt=e.removeChildFromContainer,qt=e.resetTextContent,$t=e.hideInstance,bt=e.hideTextInstance,an=e.unhideInstance,Qr=e.unhideTextInstance,mr=e.cloneInstance,br=e.createContainerChildSet,Wr=e.appendChildToContainerChildSet,Kn=e.finalizeContainerChildren,Ls=e.replaceContainerChildren,Ti=e.cloneHiddenInstance,ps=e.cloneHiddenTextInstance,io=e.canHydrateInstance,Si=e.canHydrateTextInstance,Ns=e.isSuspenseInstancePending,so=e.isSuspenseInstanceFallback,cc=e.getNextHydratableSibling,cu=e.getFirstHydratableChild,lp=e.hydrateInstance,cp=e.hydrateTextInstance,Os=e.getNextHydratableInstanceAfterSuspenseInstance,Dn=e.commitHydratedContainer,oo=e.commitHydratedSuspenseInstance,Ms=/^(.*)[\\\\\\/]/;function ml(P){var D=\"\";do{e:switch(P.tag){case 3:case 4:case 6:case 7:case 10:case 9:var T=\"\";break e;default:var j=P._debugOwner,Y=P._debugSource,Ae=he(P.type);T=null,j&&(T=he(j.type)),j=Ae,Ae=\"\",Y?Ae=\" (at \"+Y.fileName.replace(Ms,\"\")+\":\"+Y.lineNumber+\")\":T&&(Ae=\" (created by \"+T+\")\"),T=`\n    in `+(j||\"Unknown\")+Ae}D+=T,P=P.return}while(P);return D}var yl=[],ao=-1;function Vn(P){0>ao||(P.current=yl[ao],yl[ao]=null,ao--)}function On(P,D){ao++,yl[ao]=P.current,P.current=D}var Li={},Mn={current:Li},_i={current:!1},tr=Li;function Oe(P,D){var T=P.type.contextTypes;if(!T)return Li;var j=P.stateNode;if(j&&j.__reactInternalMemoizedUnmaskedChildContext===D)return j.__reactInternalMemoizedMaskedChildContext;var Y={},Ae;for(Ae in T)Y[Ae]=D[Ae];return j&&(P=P.stateNode,P.__reactInternalMemoizedUnmaskedChildContext=D,P.__reactInternalMemoizedMaskedChildContext=Y),Y}function ii(P){return P=P.childContextTypes,P!=null}function Ma(P){Vn(_i,P),Vn(Mn,P)}function hr(P){Vn(_i,P),Vn(Mn,P)}function uc(P,D,T){if(Mn.current!==Li)throw Error(n(168));On(Mn,D,P),On(_i,T,P)}function uu(P,D,T){var j=P.stateNode;if(P=D.childContextTypes,typeof j.getChildContext!=\"function\")return T;j=j.getChildContext();for(var Y in j)if(!(Y in P))throw Error(n(108,he(D)||\"Unknown\",Y));return r({},T,{},j)}function Ac(P){var D=P.stateNode;return D=D&&D.__reactInternalMemoizedMergedChildContext||Li,tr=Mn.current,On(Mn,D,P),On(_i,_i.current,P),!0}function El(P,D,T){var j=P.stateNode;if(!j)throw Error(n(169));T?(D=uu(P,D,tr),j.__reactInternalMemoizedMergedChildContext=D,Vn(_i,P),Vn(Mn,P),On(Mn,D,P)):Vn(_i,P),On(_i,T,P)}var DA=a.unstable_runWithPriority,Au=a.unstable_scheduleCallback,Ce=a.unstable_cancelCallback,Rt=a.unstable_shouldYield,fc=a.unstable_requestPaint,Hi=a.unstable_now,fu=a.unstable_getCurrentPriorityLevel,Yt=a.unstable_ImmediatePriority,Cl=a.unstable_UserBlockingPriority,PA=a.unstable_NormalPriority,up=a.unstable_LowPriority,pc=a.unstable_IdlePriority,SA={},Qn=fc!==void 0?fc:function(){},hi=null,hc=null,bA=!1,sa=Hi(),Ni=1e4>sa?Hi:function(){return Hi()-sa};function _o(){switch(fu()){case Yt:return 99;case Cl:return 98;case PA:return 97;case up:return 96;case pc:return 95;default:throw Error(n(332))}}function Ze(P){switch(P){case 99:return Yt;case 98:return Cl;case 97:return PA;case 96:return up;case 95:return pc;default:throw Error(n(332))}}function lo(P,D){return P=Ze(P),DA(P,D)}function gc(P,D,T){return P=Ze(P),Au(P,D,T)}function pu(P){return hi===null?(hi=[P],hc=Au(Yt,hu)):hi.push(P),SA}function ji(){if(hc!==null){var P=hc;hc=null,Ce(P)}hu()}function hu(){if(!bA&&hi!==null){bA=!0;var P=0;try{var D=hi;lo(99,function(){for(;P<D.length;P++){var T=D[P];do T=T(!0);while(T!==null)}}),hi=null}catch(T){throw hi!==null&&(hi=hi.slice(P+1)),Au(Yt,ji),T}finally{bA=!1}}}var xA=3;function Ua(P,D,T){return T/=10,1073741821-(((1073741821-P+D/10)/T|0)+1)*T}function dc(P,D){return P===D&&(P!==0||1/P===1/D)||P!==P&&D!==D}var hs=typeof Object.is==\"function\"?Object.is:dc,Ht=Object.prototype.hasOwnProperty;function Fn(P,D){if(hs(P,D))return!0;if(typeof P!=\"object\"||P===null||typeof D!=\"object\"||D===null)return!1;var T=Object.keys(P),j=Object.keys(D);if(T.length!==j.length)return!1;for(j=0;j<T.length;j++)if(!Ht.call(D,T[j])||!hs(P[T[j]],D[T[j]]))return!1;return!0}function Ci(P,D){if(P&&P.defaultProps){D=r({},D),P=P.defaultProps;for(var T in P)D[T]===void 0&&(D[T]=P[T])}return D}var oa={current:null},co=null,Us=null,aa=null;function la(){aa=Us=co=null}function Ho(P,D){var T=P.type._context;b?(On(oa,T._currentValue,P),T._currentValue=D):(On(oa,T._currentValue2,P),T._currentValue2=D)}function wi(P){var D=oa.current;Vn(oa,P),P=P.type._context,b?P._currentValue=D:P._currentValue2=D}function gs(P,D){for(;P!==null;){var T=P.alternate;if(P.childExpirationTime<D)P.childExpirationTime=D,T!==null&&T.childExpirationTime<D&&(T.childExpirationTime=D);else if(T!==null&&T.childExpirationTime<D)T.childExpirationTime=D;else break;P=P.return}}function ds(P,D){co=P,aa=Us=null,P=P.dependencies,P!==null&&P.firstContext!==null&&(P.expirationTime>=D&&(qo=!0),P.firstContext=null)}function ms(P,D){if(aa!==P&&D!==!1&&D!==0)if((typeof D!=\"number\"||D===1073741823)&&(aa=P,D=1073741823),D={context:P,observedBits:D,next:null},Us===null){if(co===null)throw Error(n(308));Us=D,co.dependencies={expirationTime:0,firstContext:D,responders:null}}else Us=Us.next=D;return b?P._currentValue:P._currentValue2}var _s=!1;function Un(P){return{baseState:P,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Pn(P){return{baseState:P.baseState,firstUpdate:P.firstUpdate,lastUpdate:P.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function ys(P,D){return{expirationTime:P,suspenseConfig:D,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function We(P,D){P.lastUpdate===null?P.firstUpdate=P.lastUpdate=D:(P.lastUpdate.next=D,P.lastUpdate=D)}function tt(P,D){var T=P.alternate;if(T===null){var j=P.updateQueue,Y=null;j===null&&(j=P.updateQueue=Un(P.memoizedState))}else j=P.updateQueue,Y=T.updateQueue,j===null?Y===null?(j=P.updateQueue=Un(P.memoizedState),Y=T.updateQueue=Un(T.memoizedState)):j=P.updateQueue=Pn(Y):Y===null&&(Y=T.updateQueue=Pn(j));Y===null||j===Y?We(j,D):j.lastUpdate===null||Y.lastUpdate===null?(We(j,D),We(Y,D)):(We(j,D),Y.lastUpdate=D)}function It(P,D){var T=P.updateQueue;T=T===null?P.updateQueue=Un(P.memoizedState):nr(P,T),T.lastCapturedUpdate===null?T.firstCapturedUpdate=T.lastCapturedUpdate=D:(T.lastCapturedUpdate.next=D,T.lastCapturedUpdate=D)}function nr(P,D){var T=P.alternate;return T!==null&&D===T.updateQueue&&(D=P.updateQueue=Pn(D)),D}function $(P,D,T,j,Y,Ae){switch(T.tag){case 1:return P=T.payload,typeof P==\"function\"?P.call(Ae,j,Y):P;case 3:P.effectTag=P.effectTag&-4097|64;case 0:if(P=T.payload,Y=typeof P==\"function\"?P.call(Ae,j,Y):P,Y==null)break;return r({},j,Y);case 2:_s=!0}return j}function ye(P,D,T,j,Y){_s=!1,D=nr(P,D);for(var Ae=D.baseState,De=null,vt=0,wt=D.firstUpdate,xt=Ae;wt!==null;){var _r=wt.expirationTime;_r<Y?(De===null&&(De=wt,Ae=xt),vt<_r&&(vt=_r)):(Sw(_r,wt.suspenseConfig),xt=$(P,D,wt,xt,T,j),wt.callback!==null&&(P.effectTag|=32,wt.nextEffect=null,D.lastEffect===null?D.firstEffect=D.lastEffect=wt:(D.lastEffect.nextEffect=wt,D.lastEffect=wt))),wt=wt.next}for(_r=null,wt=D.firstCapturedUpdate;wt!==null;){var is=wt.expirationTime;is<Y?(_r===null&&(_r=wt,De===null&&(Ae=xt)),vt<is&&(vt=is)):(xt=$(P,D,wt,xt,T,j),wt.callback!==null&&(P.effectTag|=32,wt.nextEffect=null,D.lastCapturedEffect===null?D.firstCapturedEffect=D.lastCapturedEffect=wt:(D.lastCapturedEffect.nextEffect=wt,D.lastCapturedEffect=wt))),wt=wt.next}De===null&&(D.lastUpdate=null),_r===null?D.lastCapturedUpdate=null:P.effectTag|=32,De===null&&_r===null&&(Ae=xt),D.baseState=Ae,D.firstUpdate=De,D.firstCapturedUpdate=_r,Hm(vt),P.expirationTime=vt,P.memoizedState=xt}function Ne(P,D,T){D.firstCapturedUpdate!==null&&(D.lastUpdate!==null&&(D.lastUpdate.next=D.firstCapturedUpdate,D.lastUpdate=D.lastCapturedUpdate),D.firstCapturedUpdate=D.lastCapturedUpdate=null),pt(D.firstEffect,T),D.firstEffect=D.lastEffect=null,pt(D.firstCapturedEffect,T),D.firstCapturedEffect=D.lastCapturedEffect=null}function pt(P,D){for(;P!==null;){var T=P.callback;if(T!==null){P.callback=null;var j=D;if(typeof T!=\"function\")throw Error(n(191,T));T.call(j)}P=P.nextEffect}}var ht=u.ReactCurrentBatchConfig,Tt=new o.Component().refs;function er(P,D,T,j){D=P.memoizedState,T=T(j,D),T=T==null?D:r({},D,T),P.memoizedState=T,j=P.updateQueue,j!==null&&P.expirationTime===0&&(j.baseState=T)}var $r={isMounted:function(P){return(P=P._reactInternalFiber)?Be(P)===P:!1},enqueueSetState:function(P,D,T){P=P._reactInternalFiber;var j=ga(),Y=ht.suspense;j=jA(j,P,Y),Y=ys(j,Y),Y.payload=D,T!=null&&(Y.callback=T),tt(P,Y),Sc(P,j)},enqueueReplaceState:function(P,D,T){P=P._reactInternalFiber;var j=ga(),Y=ht.suspense;j=jA(j,P,Y),Y=ys(j,Y),Y.tag=1,Y.payload=D,T!=null&&(Y.callback=T),tt(P,Y),Sc(P,j)},enqueueForceUpdate:function(P,D){P=P._reactInternalFiber;var T=ga(),j=ht.suspense;T=jA(T,P,j),j=ys(T,j),j.tag=2,D!=null&&(j.callback=D),tt(P,j),Sc(P,T)}};function qi(P,D,T,j,Y,Ae,De){return P=P.stateNode,typeof P.shouldComponentUpdate==\"function\"?P.shouldComponentUpdate(j,Ae,De):D.prototype&&D.prototype.isPureReactComponent?!Fn(T,j)||!Fn(Y,Ae):!0}function es(P,D,T){var j=!1,Y=Li,Ae=D.contextType;return typeof Ae==\"object\"&&Ae!==null?Ae=ms(Ae):(Y=ii(D)?tr:Mn.current,j=D.contextTypes,Ae=(j=j!=null)?Oe(P,Y):Li),D=new D(T,Ae),P.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=$r,P.stateNode=D,D._reactInternalFiber=P,j&&(P=P.stateNode,P.__reactInternalMemoizedUnmaskedChildContext=Y,P.__reactInternalMemoizedMaskedChildContext=Ae),D}function bi(P,D,T,j){P=D.state,typeof D.componentWillReceiveProps==\"function\"&&D.componentWillReceiveProps(T,j),typeof D.UNSAFE_componentWillReceiveProps==\"function\"&&D.UNSAFE_componentWillReceiveProps(T,j),D.state!==P&&$r.enqueueReplaceState(D,D.state,null)}function jo(P,D,T,j){var Y=P.stateNode;Y.props=T,Y.state=P.memoizedState,Y.refs=Tt;var Ae=D.contextType;typeof Ae==\"object\"&&Ae!==null?Y.context=ms(Ae):(Ae=ii(D)?tr:Mn.current,Y.context=Oe(P,Ae)),Ae=P.updateQueue,Ae!==null&&(ye(P,Ae,T,Y,j),Y.state=P.memoizedState),Ae=D.getDerivedStateFromProps,typeof Ae==\"function\"&&(er(P,D,Ae,T),Y.state=P.memoizedState),typeof D.getDerivedStateFromProps==\"function\"||typeof Y.getSnapshotBeforeUpdate==\"function\"||typeof Y.UNSAFE_componentWillMount!=\"function\"&&typeof Y.componentWillMount!=\"function\"||(D=Y.state,typeof Y.componentWillMount==\"function\"&&Y.componentWillMount(),typeof Y.UNSAFE_componentWillMount==\"function\"&&Y.UNSAFE_componentWillMount(),D!==Y.state&&$r.enqueueReplaceState(Y,Y.state,null),Ae=P.updateQueue,Ae!==null&&(ye(P,Ae,T,Y,j),Y.state=P.memoizedState)),typeof Y.componentDidMount==\"function\"&&(P.effectTag|=4)}var kA=Array.isArray;function QA(P,D,T){if(P=T.ref,P!==null&&typeof P!=\"function\"&&typeof P!=\"object\"){if(T._owner){if(T=T._owner,T){if(T.tag!==1)throw Error(n(309));var j=T.stateNode}if(!j)throw Error(n(147,P));var Y=\"\"+P;return D!==null&&D.ref!==null&&typeof D.ref==\"function\"&&D.ref._stringRef===Y?D.ref:(D=function(Ae){var De=j.refs;De===Tt&&(De=j.refs={}),Ae===null?delete De[Y]:De[Y]=Ae},D._stringRef=Y,D)}if(typeof P!=\"string\")throw Error(n(284));if(!T._owner)throw Error(n(290,P))}return P}function Ap(P,D){if(P.type!==\"textarea\")throw Error(n(31,Object.prototype.toString.call(D)===\"[object Object]\"?\"object with keys {\"+Object.keys(D).join(\", \")+\"}\":D,\"\"))}function ig(P){function D(rt,Ve){if(P){var ft=rt.lastEffect;ft!==null?(ft.nextEffect=Ve,rt.lastEffect=Ve):rt.firstEffect=rt.lastEffect=Ve,Ve.nextEffect=null,Ve.effectTag=8}}function T(rt,Ve){if(!P)return null;for(;Ve!==null;)D(rt,Ve),Ve=Ve.sibling;return null}function j(rt,Ve){for(rt=new Map;Ve!==null;)Ve.key!==null?rt.set(Ve.key,Ve):rt.set(Ve.index,Ve),Ve=Ve.sibling;return rt}function Y(rt,Ve,ft){return rt=WA(rt,Ve,ft),rt.index=0,rt.sibling=null,rt}function Ae(rt,Ve,ft){return rt.index=ft,P?(ft=rt.alternate,ft!==null?(ft=ft.index,ft<Ve?(rt.effectTag=2,Ve):ft):(rt.effectTag=2,Ve)):Ve}function De(rt){return P&&rt.alternate===null&&(rt.effectTag=2),rt}function vt(rt,Ve,ft,Wt){return Ve===null||Ve.tag!==6?(Ve=Fw(ft,rt.mode,Wt),Ve.return=rt,Ve):(Ve=Y(Ve,ft,Wt),Ve.return=rt,Ve)}function wt(rt,Ve,ft,Wt){return Ve!==null&&Ve.elementType===ft.type?(Wt=Y(Ve,ft.props,Wt),Wt.ref=QA(rt,Ve,ft),Wt.return=rt,Wt):(Wt=jm(ft.type,ft.key,ft.props,null,rt.mode,Wt),Wt.ref=QA(rt,Ve,ft),Wt.return=rt,Wt)}function xt(rt,Ve,ft,Wt){return Ve===null||Ve.tag!==4||Ve.stateNode.containerInfo!==ft.containerInfo||Ve.stateNode.implementation!==ft.implementation?(Ve=Rw(ft,rt.mode,Wt),Ve.return=rt,Ve):(Ve=Y(Ve,ft.children||[],Wt),Ve.return=rt,Ve)}function _r(rt,Ve,ft,Wt,vr){return Ve===null||Ve.tag!==7?(Ve=bu(ft,rt.mode,Wt,vr),Ve.return=rt,Ve):(Ve=Y(Ve,ft,Wt),Ve.return=rt,Ve)}function is(rt,Ve,ft){if(typeof Ve==\"string\"||typeof Ve==\"number\")return Ve=Fw(\"\"+Ve,rt.mode,ft),Ve.return=rt,Ve;if(typeof Ve==\"object\"&&Ve!==null){switch(Ve.$$typeof){case p:return ft=jm(Ve.type,Ve.key,Ve.props,null,rt.mode,ft),ft.ref=QA(rt,null,Ve),ft.return=rt,ft;case h:return Ve=Rw(Ve,rt.mode,ft),Ve.return=rt,Ve}if(kA(Ve)||ce(Ve))return Ve=bu(Ve,rt.mode,ft,null),Ve.return=rt,Ve;Ap(rt,Ve)}return null}function di(rt,Ve,ft,Wt){var vr=Ve!==null?Ve.key:null;if(typeof ft==\"string\"||typeof ft==\"number\")return vr!==null?null:vt(rt,Ve,\"\"+ft,Wt);if(typeof ft==\"object\"&&ft!==null){switch(ft.$$typeof){case p:return ft.key===vr?ft.type===E?_r(rt,Ve,ft.props.children,Wt,vr):wt(rt,Ve,ft,Wt):null;case h:return ft.key===vr?xt(rt,Ve,ft,Wt):null}if(kA(ft)||ce(ft))return vr!==null?null:_r(rt,Ve,ft,Wt,null);Ap(rt,ft)}return null}function po(rt,Ve,ft,Wt,vr){if(typeof Wt==\"string\"||typeof Wt==\"number\")return rt=rt.get(ft)||null,vt(Ve,rt,\"\"+Wt,vr);if(typeof Wt==\"object\"&&Wt!==null){switch(Wt.$$typeof){case p:return rt=rt.get(Wt.key===null?ft:Wt.key)||null,Wt.type===E?_r(Ve,rt,Wt.props.children,vr,Wt.key):wt(Ve,rt,Wt,vr);case h:return rt=rt.get(Wt.key===null?ft:Wt.key)||null,xt(Ve,rt,Wt,vr)}if(kA(Wt)||ce(Wt))return rt=rt.get(ft)||null,_r(Ve,rt,Wt,vr,null);Ap(Ve,Wt)}return null}function VA(rt,Ve,ft,Wt){for(var vr=null,Sn=null,Fr=Ve,bn=Ve=0,ai=null;Fr!==null&&bn<ft.length;bn++){Fr.index>bn?(ai=Fr,Fr=null):ai=Fr.sibling;var tn=di(rt,Fr,ft[bn],Wt);if(tn===null){Fr===null&&(Fr=ai);break}P&&Fr&&tn.alternate===null&&D(rt,Fr),Ve=Ae(tn,Ve,bn),Sn===null?vr=tn:Sn.sibling=tn,Sn=tn,Fr=ai}if(bn===ft.length)return T(rt,Fr),vr;if(Fr===null){for(;bn<ft.length;bn++)Fr=is(rt,ft[bn],Wt),Fr!==null&&(Ve=Ae(Fr,Ve,bn),Sn===null?vr=Fr:Sn.sibling=Fr,Sn=Fr);return vr}for(Fr=j(rt,Fr);bn<ft.length;bn++)ai=po(Fr,rt,bn,ft[bn],Wt),ai!==null&&(P&&ai.alternate!==null&&Fr.delete(ai.key===null?bn:ai.key),Ve=Ae(ai,Ve,bn),Sn===null?vr=ai:Sn.sibling=ai,Sn=ai);return P&&Fr.forEach(function(ho){return D(rt,ho)}),vr}function Yo(rt,Ve,ft,Wt){var vr=ce(ft);if(typeof vr!=\"function\")throw Error(n(150));if(ft=vr.call(ft),ft==null)throw Error(n(151));for(var Sn=vr=null,Fr=Ve,bn=Ve=0,ai=null,tn=ft.next();Fr!==null&&!tn.done;bn++,tn=ft.next()){Fr.index>bn?(ai=Fr,Fr=null):ai=Fr.sibling;var ho=di(rt,Fr,tn.value,Wt);if(ho===null){Fr===null&&(Fr=ai);break}P&&Fr&&ho.alternate===null&&D(rt,Fr),Ve=Ae(ho,Ve,bn),Sn===null?vr=ho:Sn.sibling=ho,Sn=ho,Fr=ai}if(tn.done)return T(rt,Fr),vr;if(Fr===null){for(;!tn.done;bn++,tn=ft.next())tn=is(rt,tn.value,Wt),tn!==null&&(Ve=Ae(tn,Ve,bn),Sn===null?vr=tn:Sn.sibling=tn,Sn=tn);return vr}for(Fr=j(rt,Fr);!tn.done;bn++,tn=ft.next())tn=po(Fr,rt,bn,tn.value,Wt),tn!==null&&(P&&tn.alternate!==null&&Fr.delete(tn.key===null?bn:tn.key),Ve=Ae(tn,Ve,bn),Sn===null?vr=tn:Sn.sibling=tn,Sn=tn);return P&&Fr.forEach(function(vF){return D(rt,vF)}),vr}return function(rt,Ve,ft,Wt){var vr=typeof ft==\"object\"&&ft!==null&&ft.type===E&&ft.key===null;vr&&(ft=ft.props.children);var Sn=typeof ft==\"object\"&&ft!==null;if(Sn)switch(ft.$$typeof){case p:e:{for(Sn=ft.key,vr=Ve;vr!==null;){if(vr.key===Sn)if(vr.tag===7?ft.type===E:vr.elementType===ft.type){T(rt,vr.sibling),Ve=Y(vr,ft.type===E?ft.props.children:ft.props,Wt),Ve.ref=QA(rt,vr,ft),Ve.return=rt,rt=Ve;break e}else{T(rt,vr);break}else D(rt,vr);vr=vr.sibling}ft.type===E?(Ve=bu(ft.props.children,rt.mode,Wt,ft.key),Ve.return=rt,rt=Ve):(Wt=jm(ft.type,ft.key,ft.props,null,rt.mode,Wt),Wt.ref=QA(rt,Ve,ft),Wt.return=rt,rt=Wt)}return De(rt);case h:e:{for(vr=ft.key;Ve!==null;){if(Ve.key===vr)if(Ve.tag===4&&Ve.stateNode.containerInfo===ft.containerInfo&&Ve.stateNode.implementation===ft.implementation){T(rt,Ve.sibling),Ve=Y(Ve,ft.children||[],Wt),Ve.return=rt,rt=Ve;break e}else{T(rt,Ve);break}else D(rt,Ve);Ve=Ve.sibling}Ve=Rw(ft,rt.mode,Wt),Ve.return=rt,rt=Ve}return De(rt)}if(typeof ft==\"string\"||typeof ft==\"number\")return ft=\"\"+ft,Ve!==null&&Ve.tag===6?(T(rt,Ve.sibling),Ve=Y(Ve,ft,Wt),Ve.return=rt,rt=Ve):(T(rt,Ve),Ve=Fw(ft,rt.mode,Wt),Ve.return=rt,rt=Ve),De(rt);if(kA(ft))return VA(rt,Ve,ft,Wt);if(ce(ft))return Yo(rt,Ve,ft,Wt);if(Sn&&Ap(rt,ft),typeof ft>\"u\"&&!vr)switch(rt.tag){case 1:case 0:throw rt=rt.type,Error(n(152,rt.displayName||rt.name||\"Component\"))}return T(rt,Ve)}}var gu=ig(!0),sg=ig(!1),du={},uo={current:du},FA={current:du},mc={current:du};function ca(P){if(P===du)throw Error(n(174));return P}function og(P,D){On(mc,D,P),On(FA,P,P),On(uo,du,P),D=ne(D),Vn(uo,P),On(uo,D,P)}function yc(P){Vn(uo,P),Vn(FA,P),Vn(mc,P)}function Sm(P){var D=ca(mc.current),T=ca(uo.current);D=ee(T,P.type,D),T!==D&&(On(FA,P,P),On(uo,D,P))}function ag(P){FA.current===P&&(Vn(uo,P),Vn(FA,P))}var ei={current:0};function fp(P){for(var D=P;D!==null;){if(D.tag===13){var T=D.memoizedState;if(T!==null&&(T=T.dehydrated,T===null||Ns(T)||so(T)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if((D.effectTag&64)!==0)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===P)break;for(;D.sibling===null;){if(D.return===null||D.return===P)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}function lg(P,D){return{responder:P,props:D}}var RA=u.ReactCurrentDispatcher,Hs=u.ReactCurrentBatchConfig,mu=0,Ha=null,Gi=null,ua=null,yu=null,Es=null,Ec=null,Cc=0,G=null,Dt=0,wl=!1,xi=null,wc=0;function ct(){throw Error(n(321))}function Eu(P,D){if(D===null)return!1;for(var T=0;T<D.length&&T<P.length;T++)if(!hs(P[T],D[T]))return!1;return!0}function cg(P,D,T,j,Y,Ae){if(mu=Ae,Ha=D,ua=P!==null?P.memoizedState:null,RA.current=ua===null?Ew:km,D=T(j,Y),wl){do wl=!1,wc+=1,ua=P!==null?P.memoizedState:null,Ec=yu,G=Es=Gi=null,RA.current=km,D=T(j,Y);while(wl);xi=null,wc=0}if(RA.current=wu,P=Ha,P.memoizedState=yu,P.expirationTime=Cc,P.updateQueue=G,P.effectTag|=Dt,P=Gi!==null&&Gi.next!==null,mu=0,Ec=Es=yu=ua=Gi=Ha=null,Cc=0,G=null,Dt=0,P)throw Error(n(300));return D}function yw(){RA.current=wu,mu=0,Ec=Es=yu=ua=Gi=Ha=null,Cc=0,G=null,Dt=0,wl=!1,xi=null,wc=0}function TA(){var P={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return Es===null?yu=Es=P:Es=Es.next=P,Es}function pp(){if(Ec!==null)Es=Ec,Ec=Es.next,Gi=ua,ua=Gi!==null?Gi.next:null;else{if(ua===null)throw Error(n(310));Gi=ua;var P={memoizedState:Gi.memoizedState,baseState:Gi.baseState,queue:Gi.queue,baseUpdate:Gi.baseUpdate,next:null};Es=Es===null?yu=P:Es.next=P,ua=Gi.next}return Es}function Br(P,D){return typeof D==\"function\"?D(P):D}function Cs(P){var D=pp(),T=D.queue;if(T===null)throw Error(n(311));if(T.lastRenderedReducer=P,0<wc){var j=T.dispatch;if(xi!==null){var Y=xi.get(T);if(Y!==void 0){xi.delete(T);var Ae=D.memoizedState;do Ae=P(Ae,Y.action),Y=Y.next;while(Y!==null);return hs(Ae,D.memoizedState)||(qo=!0),D.memoizedState=Ae,D.baseUpdate===T.last&&(D.baseState=Ae),T.lastRenderedState=Ae,[Ae,j]}}return[D.memoizedState,j]}j=T.last;var De=D.baseUpdate;if(Ae=D.baseState,De!==null?(j!==null&&(j.next=null),j=De.next):j=j!==null?j.next:null,j!==null){var vt=Y=null,wt=j,xt=!1;do{var _r=wt.expirationTime;_r<mu?(xt||(xt=!0,vt=De,Y=Ae),_r>Cc&&(Cc=_r,Hm(Cc))):(Sw(_r,wt.suspenseConfig),Ae=wt.eagerReducer===P?wt.eagerState:P(Ae,wt.action)),De=wt,wt=wt.next}while(wt!==null&&wt!==j);xt||(vt=De,Y=Ae),hs(Ae,D.memoizedState)||(qo=!0),D.memoizedState=Ae,D.baseUpdate=vt,D.baseState=Y,T.lastRenderedState=Ae}return[D.memoizedState,T.dispatch]}function ug(P){var D=TA();return typeof P==\"function\"&&(P=P()),D.memoizedState=D.baseState=P,P=D.queue={last:null,dispatch:null,lastRenderedReducer:Br,lastRenderedState:P},P=P.dispatch=gg.bind(null,Ha,P),[D.memoizedState,P]}function Ag(P){return Cs(Br,P)}function fg(P,D,T,j){return P={tag:P,create:D,destroy:T,deps:j,next:null},G===null?(G={lastEffect:null},G.lastEffect=P.next=P):(D=G.lastEffect,D===null?G.lastEffect=P.next=P:(T=D.next,D.next=P,P.next=T,G.lastEffect=P)),P}function hp(P,D,T,j){var Y=TA();Dt|=P,Y.memoizedState=fg(D,T,void 0,j===void 0?null:j)}function Ic(P,D,T,j){var Y=pp();j=j===void 0?null:j;var Ae=void 0;if(Gi!==null){var De=Gi.memoizedState;if(Ae=De.destroy,j!==null&&Eu(j,De.deps)){fg(0,T,Ae,j);return}}Dt|=P,Y.memoizedState=fg(D,T,Ae,j)}function Ct(P,D){return hp(516,192,P,D)}function bm(P,D){return Ic(516,192,P,D)}function pg(P,D){if(typeof D==\"function\")return P=P(),D(P),function(){D(null)};if(D!=null)return P=P(),D.current=P,function(){D.current=null}}function hg(){}function Cu(P,D){return TA().memoizedState=[P,D===void 0?null:D],P}function xm(P,D){var T=pp();D=D===void 0?null:D;var j=T.memoizedState;return j!==null&&D!==null&&Eu(D,j[1])?j[0]:(T.memoizedState=[P,D],P)}function gg(P,D,T){if(!(25>wc))throw Error(n(301));var j=P.alternate;if(P===Ha||j!==null&&j===Ha)if(wl=!0,P={expirationTime:mu,suspenseConfig:null,action:T,eagerReducer:null,eagerState:null,next:null},xi===null&&(xi=new Map),T=xi.get(D),T===void 0)xi.set(D,P);else{for(D=T;D.next!==null;)D=D.next;D.next=P}else{var Y=ga(),Ae=ht.suspense;Y=jA(Y,P,Ae),Ae={expirationTime:Y,suspenseConfig:Ae,action:T,eagerReducer:null,eagerState:null,next:null};var De=D.last;if(De===null)Ae.next=Ae;else{var vt=De.next;vt!==null&&(Ae.next=vt),De.next=Ae}if(D.last=Ae,P.expirationTime===0&&(j===null||j.expirationTime===0)&&(j=D.lastRenderedReducer,j!==null))try{var wt=D.lastRenderedState,xt=j(wt,T);if(Ae.eagerReducer=j,Ae.eagerState=xt,hs(xt,wt))return}catch{}finally{}Sc(P,Y)}}var wu={readContext:ms,useCallback:ct,useContext:ct,useEffect:ct,useImperativeHandle:ct,useLayoutEffect:ct,useMemo:ct,useReducer:ct,useRef:ct,useState:ct,useDebugValue:ct,useResponder:ct,useDeferredValue:ct,useTransition:ct},Ew={readContext:ms,useCallback:Cu,useContext:ms,useEffect:Ct,useImperativeHandle:function(P,D,T){return T=T!=null?T.concat([P]):null,hp(4,36,pg.bind(null,D,P),T)},useLayoutEffect:function(P,D){return hp(4,36,P,D)},useMemo:function(P,D){var T=TA();return D=D===void 0?null:D,P=P(),T.memoizedState=[P,D],P},useReducer:function(P,D,T){var j=TA();return D=T!==void 0?T(D):D,j.memoizedState=j.baseState=D,P=j.queue={last:null,dispatch:null,lastRenderedReducer:P,lastRenderedState:D},P=P.dispatch=gg.bind(null,Ha,P),[j.memoizedState,P]},useRef:function(P){var D=TA();return P={current:P},D.memoizedState=P},useState:ug,useDebugValue:hg,useResponder:lg,useDeferredValue:function(P,D){var T=ug(P),j=T[0],Y=T[1];return Ct(function(){a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=D===void 0?null:D;try{Y(P)}finally{Hs.suspense=Ae}})},[P,D]),j},useTransition:function(P){var D=ug(!1),T=D[0],j=D[1];return[Cu(function(Y){j(!0),a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=P===void 0?null:P;try{j(!1),Y()}finally{Hs.suspense=Ae}})},[P,T]),T]}},km={readContext:ms,useCallback:xm,useContext:ms,useEffect:bm,useImperativeHandle:function(P,D,T){return T=T!=null?T.concat([P]):null,Ic(4,36,pg.bind(null,D,P),T)},useLayoutEffect:function(P,D){return Ic(4,36,P,D)},useMemo:function(P,D){var T=pp();D=D===void 0?null:D;var j=T.memoizedState;return j!==null&&D!==null&&Eu(D,j[1])?j[0]:(P=P(),T.memoizedState=[P,D],P)},useReducer:Cs,useRef:function(){return pp().memoizedState},useState:Ag,useDebugValue:hg,useResponder:lg,useDeferredValue:function(P,D){var T=Ag(P),j=T[0],Y=T[1];return bm(function(){a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=D===void 0?null:D;try{Y(P)}finally{Hs.suspense=Ae}})},[P,D]),j},useTransition:function(P){var D=Ag(!1),T=D[0],j=D[1];return[xm(function(Y){j(!0),a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=P===void 0?null:P;try{j(!1),Y()}finally{Hs.suspense=Ae}})},[P,T]),T]}},Aa=null,Bc=null,Il=!1;function Iu(P,D){var T=Dl(5,null,null,0);T.elementType=\"DELETED\",T.type=\"DELETED\",T.stateNode=D,T.return=P,T.effectTag=8,P.lastEffect!==null?(P.lastEffect.nextEffect=T,P.lastEffect=T):P.firstEffect=P.lastEffect=T}function dg(P,D){switch(P.tag){case 5:return D=io(D,P.type,P.pendingProps),D!==null?(P.stateNode=D,!0):!1;case 6:return D=Si(D,P.pendingProps),D!==null?(P.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function LA(P){if(Il){var D=Bc;if(D){var T=D;if(!dg(P,D)){if(D=cc(T),!D||!dg(P,D)){P.effectTag=P.effectTag&-1025|2,Il=!1,Aa=P;return}Iu(Aa,T)}Aa=P,Bc=cu(D)}else P.effectTag=P.effectTag&-1025|2,Il=!1,Aa=P}}function gp(P){for(P=P.return;P!==null&&P.tag!==5&&P.tag!==3&&P.tag!==13;)P=P.return;Aa=P}function ja(P){if(!y||P!==Aa)return!1;if(!Il)return gp(P),Il=!0,!1;var D=P.type;if(P.tag!==5||D!==\"head\"&&D!==\"body\"&&!ke(D,P.memoizedProps))for(D=Bc;D;)Iu(P,D),D=cc(D);if(gp(P),P.tag===13){if(!y)throw Error(n(316));if(P=P.memoizedState,P=P!==null?P.dehydrated:null,!P)throw Error(n(317));Bc=Os(P)}else Bc=Aa?cc(P.stateNode):null;return!0}function mg(){y&&(Bc=Aa=null,Il=!1)}var dp=u.ReactCurrentOwner,qo=!1;function ws(P,D,T,j){D.child=P===null?sg(D,null,T,j):gu(D,P.child,T,j)}function Ii(P,D,T,j,Y){T=T.render;var Ae=D.ref;return ds(D,Y),j=cg(P,D,T,j,Ae,Y),P!==null&&!qo?(D.updateQueue=P.updateQueue,D.effectTag&=-517,P.expirationTime<=Y&&(P.expirationTime=0),si(P,D,Y)):(D.effectTag|=1,ws(P,D,j,Y),D.child)}function Qm(P,D,T,j,Y,Ae){if(P===null){var De=T.type;return typeof De==\"function\"&&!Qw(De)&&De.defaultProps===void 0&&T.compare===null&&T.defaultProps===void 0?(D.tag=15,D.type=De,Fm(P,D,De,j,Y,Ae)):(P=jm(T.type,null,j,null,D.mode,Ae),P.ref=D.ref,P.return=D,D.child=P)}return De=P.child,Y<Ae&&(Y=De.memoizedProps,T=T.compare,T=T!==null?T:Fn,T(Y,j)&&P.ref===D.ref)?si(P,D,Ae):(D.effectTag|=1,P=WA(De,j,Ae),P.ref=D.ref,P.return=D,D.child=P)}function Fm(P,D,T,j,Y,Ae){return P!==null&&Fn(P.memoizedProps,j)&&P.ref===D.ref&&(qo=!1,Y<Ae)?si(P,D,Ae):NA(P,D,T,j,Ae)}function Go(P,D){var T=D.ref;(P===null&&T!==null||P!==null&&P.ref!==T)&&(D.effectTag|=128)}function NA(P,D,T,j,Y){var Ae=ii(T)?tr:Mn.current;return Ae=Oe(D,Ae),ds(D,Y),T=cg(P,D,T,j,Ae,Y),P!==null&&!qo?(D.updateQueue=P.updateQueue,D.effectTag&=-517,P.expirationTime<=Y&&(P.expirationTime=0),si(P,D,Y)):(D.effectTag|=1,ws(P,D,T,Y),D.child)}function mp(P,D,T,j,Y){if(ii(T)){var Ae=!0;Ac(D)}else Ae=!1;if(ds(D,Y),D.stateNode===null)P!==null&&(P.alternate=null,D.alternate=null,D.effectTag|=2),es(D,T,j,Y),jo(D,T,j,Y),j=!0;else if(P===null){var De=D.stateNode,vt=D.memoizedProps;De.props=vt;var wt=De.context,xt=T.contextType;typeof xt==\"object\"&&xt!==null?xt=ms(xt):(xt=ii(T)?tr:Mn.current,xt=Oe(D,xt));var _r=T.getDerivedStateFromProps,is=typeof _r==\"function\"||typeof De.getSnapshotBeforeUpdate==\"function\";is||typeof De.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof De.componentWillReceiveProps!=\"function\"||(vt!==j||wt!==xt)&&bi(D,De,j,xt),_s=!1;var di=D.memoizedState;wt=De.state=di;var po=D.updateQueue;po!==null&&(ye(D,po,j,De,Y),wt=D.memoizedState),vt!==j||di!==wt||_i.current||_s?(typeof _r==\"function\"&&(er(D,T,_r,j),wt=D.memoizedState),(vt=_s||qi(D,T,vt,j,di,wt,xt))?(is||typeof De.UNSAFE_componentWillMount!=\"function\"&&typeof De.componentWillMount!=\"function\"||(typeof De.componentWillMount==\"function\"&&De.componentWillMount(),typeof De.UNSAFE_componentWillMount==\"function\"&&De.UNSAFE_componentWillMount()),typeof De.componentDidMount==\"function\"&&(D.effectTag|=4)):(typeof De.componentDidMount==\"function\"&&(D.effectTag|=4),D.memoizedProps=j,D.memoizedState=wt),De.props=j,De.state=wt,De.context=xt,j=vt):(typeof De.componentDidMount==\"function\"&&(D.effectTag|=4),j=!1)}else De=D.stateNode,vt=D.memoizedProps,De.props=D.type===D.elementType?vt:Ci(D.type,vt),wt=De.context,xt=T.contextType,typeof xt==\"object\"&&xt!==null?xt=ms(xt):(xt=ii(T)?tr:Mn.current,xt=Oe(D,xt)),_r=T.getDerivedStateFromProps,(is=typeof _r==\"function\"||typeof De.getSnapshotBeforeUpdate==\"function\")||typeof De.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof De.componentWillReceiveProps!=\"function\"||(vt!==j||wt!==xt)&&bi(D,De,j,xt),_s=!1,wt=D.memoizedState,di=De.state=wt,po=D.updateQueue,po!==null&&(ye(D,po,j,De,Y),di=D.memoizedState),vt!==j||wt!==di||_i.current||_s?(typeof _r==\"function\"&&(er(D,T,_r,j),di=D.memoizedState),(_r=_s||qi(D,T,vt,j,wt,di,xt))?(is||typeof De.UNSAFE_componentWillUpdate!=\"function\"&&typeof De.componentWillUpdate!=\"function\"||(typeof De.componentWillUpdate==\"function\"&&De.componentWillUpdate(j,di,xt),typeof De.UNSAFE_componentWillUpdate==\"function\"&&De.UNSAFE_componentWillUpdate(j,di,xt)),typeof De.componentDidUpdate==\"function\"&&(D.effectTag|=4),typeof De.getSnapshotBeforeUpdate==\"function\"&&(D.effectTag|=256)):(typeof De.componentDidUpdate!=\"function\"||vt===P.memoizedProps&&wt===P.memoizedState||(D.effectTag|=4),typeof De.getSnapshotBeforeUpdate!=\"function\"||vt===P.memoizedProps&&wt===P.memoizedState||(D.effectTag|=256),D.memoizedProps=j,D.memoizedState=di),De.props=j,De.state=di,De.context=xt,j=_r):(typeof De.componentDidUpdate!=\"function\"||vt===P.memoizedProps&&wt===P.memoizedState||(D.effectTag|=4),typeof De.getSnapshotBeforeUpdate!=\"function\"||vt===P.memoizedProps&&wt===P.memoizedState||(D.effectTag|=256),j=!1);return yp(P,D,T,j,Ae,Y)}function yp(P,D,T,j,Y,Ae){Go(P,D);var De=(D.effectTag&64)!==0;if(!j&&!De)return Y&&El(D,T,!1),si(P,D,Ae);j=D.stateNode,dp.current=D;var vt=De&&typeof T.getDerivedStateFromError!=\"function\"?null:j.render();return D.effectTag|=1,P!==null&&De?(D.child=gu(D,P.child,null,Ae),D.child=gu(D,null,vt,Ae)):ws(P,D,vt,Ae),D.memoizedState=j.state,Y&&El(D,T,!0),D.child}function yg(P){var D=P.stateNode;D.pendingContext?uc(P,D.pendingContext,D.pendingContext!==D.context):D.context&&uc(P,D.context,!1),og(P,D.containerInfo)}var fa={dehydrated:null,retryTime:0};function ln(P,D,T){var j=D.mode,Y=D.pendingProps,Ae=ei.current,De=!1,vt;if((vt=(D.effectTag&64)!==0)||(vt=(Ae&2)!==0&&(P===null||P.memoizedState!==null)),vt?(De=!0,D.effectTag&=-65):P!==null&&P.memoizedState===null||Y.fallback===void 0||Y.unstable_avoidThisFallback===!0||(Ae|=1),On(ei,Ae&1,D),P===null){if(Y.fallback!==void 0&&LA(D),De){if(De=Y.fallback,Y=bu(null,j,0,null),Y.return=D,(D.mode&2)===0)for(P=D.memoizedState!==null?D.child.child:D.child,Y.child=P;P!==null;)P.return=Y,P=P.sibling;return T=bu(De,j,T,null),T.return=D,Y.sibling=T,D.memoizedState=fa,D.child=Y,T}return j=Y.children,D.memoizedState=null,D.child=sg(D,null,j,T)}if(P.memoizedState!==null){if(P=P.child,j=P.sibling,De){if(Y=Y.fallback,T=WA(P,P.pendingProps,0),T.return=D,(D.mode&2)===0&&(De=D.memoizedState!==null?D.child.child:D.child,De!==P.child))for(T.child=De;De!==null;)De.return=T,De=De.sibling;return j=WA(j,Y,j.expirationTime),j.return=D,T.sibling=j,T.childExpirationTime=0,D.memoizedState=fa,D.child=T,j}return T=gu(D,P.child,Y.children,T),D.memoizedState=null,D.child=T}if(P=P.child,De){if(De=Y.fallback,Y=bu(null,j,0,null),Y.return=D,Y.child=P,P!==null&&(P.return=Y),(D.mode&2)===0)for(P=D.memoizedState!==null?D.child.child:D.child,Y.child=P;P!==null;)P.return=Y,P=P.sibling;return T=bu(De,j,T,null),T.return=D,Y.sibling=T,T.effectTag|=2,Y.childExpirationTime=0,D.memoizedState=fa,D.child=Y,T}return D.memoizedState=null,D.child=gu(D,P,Y.children,T)}function Ao(P,D){P.expirationTime<D&&(P.expirationTime=D);var T=P.alternate;T!==null&&T.expirationTime<D&&(T.expirationTime=D),gs(P.return,D)}function OA(P,D,T,j,Y,Ae){var De=P.memoizedState;De===null?P.memoizedState={isBackwards:D,rendering:null,last:j,tail:T,tailExpiration:0,tailMode:Y,lastEffect:Ae}:(De.isBackwards=D,De.rendering=null,De.last=j,De.tail=T,De.tailExpiration=0,De.tailMode=Y,De.lastEffect=Ae)}function qa(P,D,T){var j=D.pendingProps,Y=j.revealOrder,Ae=j.tail;if(ws(P,D,j.children,T),j=ei.current,(j&2)!==0)j=j&1|2,D.effectTag|=64;else{if(P!==null&&(P.effectTag&64)!==0)e:for(P=D.child;P!==null;){if(P.tag===13)P.memoizedState!==null&&Ao(P,T);else if(P.tag===19)Ao(P,T);else if(P.child!==null){P.child.return=P,P=P.child;continue}if(P===D)break e;for(;P.sibling===null;){if(P.return===null||P.return===D)break e;P=P.return}P.sibling.return=P.return,P=P.sibling}j&=1}if(On(ei,j,D),(D.mode&2)===0)D.memoizedState=null;else switch(Y){case\"forwards\":for(T=D.child,Y=null;T!==null;)P=T.alternate,P!==null&&fp(P)===null&&(Y=T),T=T.sibling;T=Y,T===null?(Y=D.child,D.child=null):(Y=T.sibling,T.sibling=null),OA(D,!1,Y,T,Ae,D.lastEffect);break;case\"backwards\":for(T=null,Y=D.child,D.child=null;Y!==null;){if(P=Y.alternate,P!==null&&fp(P)===null){D.child=Y;break}P=Y.sibling,Y.sibling=T,T=Y,Y=P}OA(D,!0,T,null,Ae,D.lastEffect);break;case\"together\":OA(D,!1,null,null,void 0,D.lastEffect);break;default:D.memoizedState=null}return D.child}function si(P,D,T){P!==null&&(D.dependencies=P.dependencies);var j=D.expirationTime;if(j!==0&&Hm(j),D.childExpirationTime<T)return null;if(P!==null&&D.child!==P.child)throw Error(n(153));if(D.child!==null){for(P=D.child,T=WA(P,P.pendingProps,P.expirationTime),D.child=T,T.return=D;P.sibling!==null;)P=P.sibling,T=T.sibling=WA(P,P.pendingProps,P.expirationTime),T.return=D;T.sibling=null}return D.child}function pa(P){P.effectTag|=4}var vc,Bl,ts,Gr;if(w)vc=function(P,D){for(var T=D.child;T!==null;){if(T.tag===5||T.tag===6)H(P,T.stateNode);else if(T.tag!==4&&T.child!==null){T.child.return=T,T=T.child;continue}if(T===D)break;for(;T.sibling===null;){if(T.return===null||T.return===D)return;T=T.return}T.sibling.return=T.return,T=T.sibling}},Bl=function(){},ts=function(P,D,T,j,Y){if(P=P.memoizedProps,P!==j){var Ae=D.stateNode,De=ca(uo.current);T=Re(Ae,T,P,j,Y,De),(D.updateQueue=T)&&pa(D)}},Gr=function(P,D,T,j){T!==j&&pa(D)};else if(S){vc=function(P,D,T,j){for(var Y=D.child;Y!==null;){if(Y.tag===5){var Ae=Y.stateNode;T&&j&&(Ae=Ti(Ae,Y.type,Y.memoizedProps,Y)),H(P,Ae)}else if(Y.tag===6)Ae=Y.stateNode,T&&j&&(Ae=ps(Ae,Y.memoizedProps,Y)),H(P,Ae);else if(Y.tag!==4){if(Y.tag===13&&(Y.effectTag&4)!==0&&(Ae=Y.memoizedState!==null)){var De=Y.child;if(De!==null&&(De.child!==null&&(De.child.return=De,vc(P,De,!0,Ae)),Ae=De.sibling,Ae!==null)){Ae.return=Y,Y=Ae;continue}}if(Y.child!==null){Y.child.return=Y,Y=Y.child;continue}}if(Y===D)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===D)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}};var Ep=function(P,D,T,j){for(var Y=D.child;Y!==null;){if(Y.tag===5){var Ae=Y.stateNode;T&&j&&(Ae=Ti(Ae,Y.type,Y.memoizedProps,Y)),Wr(P,Ae)}else if(Y.tag===6)Ae=Y.stateNode,T&&j&&(Ae=ps(Ae,Y.memoizedProps,Y)),Wr(P,Ae);else if(Y.tag!==4){if(Y.tag===13&&(Y.effectTag&4)!==0&&(Ae=Y.memoizedState!==null)){var De=Y.child;if(De!==null&&(De.child!==null&&(De.child.return=De,Ep(P,De,!0,Ae)),Ae=De.sibling,Ae!==null)){Ae.return=Y,Y=Ae;continue}}if(Y.child!==null){Y.child.return=Y,Y=Y.child;continue}}if(Y===D)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===D)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}};Bl=function(P){var D=P.stateNode;if(P.firstEffect!==null){var T=D.containerInfo,j=br(T);Ep(j,P,!1,!1),D.pendingChildren=j,pa(P),Kn(T,j)}},ts=function(P,D,T,j,Y){var Ae=P.stateNode,De=P.memoizedProps;if((P=D.firstEffect===null)&&De===j)D.stateNode=Ae;else{var vt=D.stateNode,wt=ca(uo.current),xt=null;De!==j&&(xt=Re(vt,T,De,j,Y,wt)),P&&xt===null?D.stateNode=Ae:(Ae=mr(Ae,xt,T,De,j,D,P,vt),at(Ae,T,j,Y,wt)&&pa(D),D.stateNode=Ae,P?pa(D):vc(Ae,D,!1,!1))}},Gr=function(P,D,T,j){T!==j&&(P=ca(mc.current),T=ca(uo.current),D.stateNode=He(j,P,T,D),pa(D))}}else Bl=function(){},ts=function(){},Gr=function(){};function Dc(P,D){switch(P.tailMode){case\"hidden\":D=P.tail;for(var T=null;D!==null;)D.alternate!==null&&(T=D),D=D.sibling;T===null?P.tail=null:T.sibling=null;break;case\"collapsed\":T=P.tail;for(var j=null;T!==null;)T.alternate!==null&&(j=T),T=T.sibling;j===null?D||P.tail===null?P.tail=null:P.tail.sibling=null:j.sibling=null}}function Cw(P){switch(P.tag){case 1:ii(P.type)&&Ma(P);var D=P.effectTag;return D&4096?(P.effectTag=D&-4097|64,P):null;case 3:if(yc(P),hr(P),D=P.effectTag,(D&64)!==0)throw Error(n(285));return P.effectTag=D&-4097|64,P;case 5:return ag(P),null;case 13:return Vn(ei,P),D=P.effectTag,D&4096?(P.effectTag=D&-4097|64,P):null;case 19:return Vn(ei,P),null;case 4:return yc(P),null;case 10:return wi(P),null;default:return null}}function Eg(P,D){return{value:P,source:D,stack:ml(D)}}var Cg=typeof WeakSet==\"function\"?WeakSet:Set;function Ga(P,D){var T=D.source,j=D.stack;j===null&&T!==null&&(j=ml(T)),T!==null&&he(T.type),D=D.value,P!==null&&P.tag===1&&he(P.type);try{console.error(D)}catch(Y){setTimeout(function(){throw Y})}}function Rm(P,D){try{D.props=P.memoizedProps,D.state=P.memoizedState,D.componentWillUnmount()}catch(T){YA(P,T)}}function wg(P){var D=P.ref;if(D!==null)if(typeof D==\"function\")try{D(null)}catch(T){YA(P,T)}else D.current=null}function Qt(P,D){switch(D.tag){case 0:case 11:case 15:L(2,0,D);break;case 1:if(D.effectTag&256&&P!==null){var T=P.memoizedProps,j=P.memoizedState;P=D.stateNode,D=P.getSnapshotBeforeUpdate(D.elementType===D.type?T:Ci(D.type,T),j),P.__reactInternalSnapshotBeforeUpdate=D}break;case 3:case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}function L(P,D,T){if(T=T.updateQueue,T=T!==null?T.lastEffect:null,T!==null){var j=T=T.next;do{if((j.tag&P)!==0){var Y=j.destroy;j.destroy=void 0,Y!==void 0&&Y()}(j.tag&D)!==0&&(Y=j.create,j.destroy=Y()),j=j.next}while(j!==T)}}function K(P,D,T){switch(typeof kw==\"function\"&&kw(D),D.tag){case 0:case 11:case 14:case 15:if(P=D.updateQueue,P!==null&&(P=P.lastEffect,P!==null)){var j=P.next;lo(97<T?97:T,function(){var Y=j;do{var Ae=Y.destroy;if(Ae!==void 0){var De=D;try{Ae()}catch(vt){YA(De,vt)}}Y=Y.next}while(Y!==j)})}break;case 1:wg(D),T=D.stateNode,typeof T.componentWillUnmount==\"function\"&&Rm(D,T);break;case 5:wg(D);break;case 4:w?Cr(P,D,T):S&&ze(D)}}function re(P,D,T){for(var j=D;;)if(K(P,j,T),j.child===null||w&&j.tag===4){if(j===D)break;for(;j.sibling===null;){if(j.return===null||j.return===D)return;j=j.return}j.sibling.return=j.return,j=j.sibling}else j.child.return=j,j=j.child}function pe(P){var D=P.alternate;P.return=null,P.child=null,P.memoizedState=null,P.updateQueue=null,P.dependencies=null,P.alternate=null,P.firstEffect=null,P.lastEffect=null,P.pendingProps=null,P.memoizedProps=null,D!==null&&pe(D)}function ze(P){if(S){P=P.stateNode.containerInfo;var D=br(P);Ls(P,D)}}function mt(P){return P.tag===5||P.tag===3||P.tag===4}function fr(P){if(w){e:{for(var D=P.return;D!==null;){if(mt(D)){var T=D;break e}D=D.return}throw Error(n(160))}switch(D=T.stateNode,T.tag){case 5:var j=!1;break;case 3:D=D.containerInfo,j=!0;break;case 4:D=D.containerInfo,j=!0;break;default:throw Error(n(161))}T.effectTag&16&&(qt(D),T.effectTag&=-17);e:t:for(T=P;;){for(;T.sibling===null;){if(T.return===null||mt(T.return)){T=null;break e}T=T.return}for(T.sibling.return=T.return,T=T.sibling;T.tag!==5&&T.tag!==6&&T.tag!==18;){if(T.effectTag&2||T.child===null||T.tag===4)continue t;T.child.return=T,T=T.child}if(!(T.effectTag&2)){T=T.stateNode;break e}}for(var Y=P;;){var Ae=Y.tag===5||Y.tag===6;if(Ae)Ae=Ae?Y.stateNode:Y.stateNode.instance,T?j?Le(D,Ae,T):be(D,Ae,T):j?z(D,Ae):F(D,Ae);else if(Y.tag!==4&&Y.child!==null){Y.child.return=Y,Y=Y.child;continue}if(Y===P)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===P)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}}}function Cr(P,D,T){for(var j=D,Y=!1,Ae,De;;){if(!Y){Y=j.return;e:for(;;){if(Y===null)throw Error(n(160));switch(Ae=Y.stateNode,Y.tag){case 5:De=!1;break e;case 3:Ae=Ae.containerInfo,De=!0;break e;case 4:Ae=Ae.containerInfo,De=!0;break e}Y=Y.return}Y=!0}if(j.tag===5||j.tag===6)re(P,j,T),De?dt(Ae,j.stateNode):ot(Ae,j.stateNode);else if(j.tag===4){if(j.child!==null){Ae=j.stateNode.containerInfo,De=!0,j.child.return=j,j=j.child;continue}}else if(K(P,j,T),j.child!==null){j.child.return=j,j=j.child;continue}if(j===D)break;for(;j.sibling===null;){if(j.return===null||j.return===D)return;j=j.return,j.tag===4&&(Y=!1)}j.sibling.return=j.return,j=j.sibling}}function yn(P,D){if(w)switch(D.tag){case 0:case 11:case 14:case 15:L(4,8,D);break;case 1:break;case 5:var T=D.stateNode;if(T!=null){var j=D.memoizedProps;P=P!==null?P.memoizedProps:j;var Y=D.type,Ae=D.updateQueue;D.updateQueue=null,Ae!==null&&ie(T,Ae,Y,P,j,D)}break;case 6:if(D.stateNode===null)throw Error(n(162));T=D.memoizedProps,X(D.stateNode,P!==null?P.memoizedProps:T,T);break;case 3:y&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,Dn(D.containerInfo)));break;case 12:break;case 13:oi(D),Oi(D);break;case 19:Oi(D);break;case 17:break;case 20:break;case 21:break;default:throw Error(n(163))}else{switch(D.tag){case 0:case 11:case 14:case 15:L(4,8,D);return;case 12:return;case 13:oi(D),Oi(D);return;case 19:Oi(D);return;case 3:y&&(T=D.stateNode,T.hydrate&&(T.hydrate=!1,Dn(T.containerInfo)))}e:if(S)switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,Ls(D.containerInfo,D.pendingChildren);break e;default:throw Error(n(163))}}}function oi(P){var D=P;if(P.memoizedState===null)var T=!1;else T=!0,D=P.child,Bw=Ni();if(w&&D!==null){e:if(P=D,w)for(D=P;;){if(D.tag===5){var j=D.stateNode;T?$t(j):an(D.stateNode,D.memoizedProps)}else if(D.tag===6)j=D.stateNode,T?bt(j):Qr(j,D.memoizedProps);else if(D.tag===13&&D.memoizedState!==null&&D.memoizedState.dehydrated===null){j=D.child.sibling,j.return=D,D=j;continue}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===P)break e;for(;D.sibling===null;){if(D.return===null||D.return===P)break e;D=D.return}D.sibling.return=D.return,D=D.sibling}}}function Oi(P){var D=P.updateQueue;if(D!==null){P.updateQueue=null;var T=P.stateNode;T===null&&(T=P.stateNode=new Cg),D.forEach(function(j){var Y=yF.bind(null,P,j);T.has(j)||(T.add(j),j.then(Y,Y))})}}var Ig=typeof WeakMap==\"function\"?WeakMap:Map;function Gv(P,D,T){T=ys(T,null),T.tag=3,T.payload={element:null};var j=D.value;return T.callback=function(){vu||(vu=!0,Mm=j),Ga(P,D)},T}function Yv(P,D,T){T=ys(T,null),T.tag=3;var j=P.type.getDerivedStateFromError;if(typeof j==\"function\"){var Y=D.value;T.payload=function(){return Ga(P,D),j(Y)}}var Ae=P.stateNode;return Ae!==null&&typeof Ae.componentDidCatch==\"function\"&&(T.callback=function(){typeof j!=\"function\"&&(Du===null?Du=new Set([this]):Du.add(this),Ga(P,D));var De=D.stack;this.componentDidCatch(D.value,{componentStack:De!==null?De:\"\"})}),T}var ww=Math.ceil,Cp=u.ReactCurrentDispatcher,Iw=u.ReactCurrentOwner,En=0,Tm=8,rs=16,js=32,Bu=0,Lm=1,Bi=2,ha=3,vl=4,Pc=5,yr=En,gi=null,Or=null,ns=0,Yi=Bu,Nm=null,Ya=1073741823,MA=1073741823,Om=null,wp=0,UA=!1,Bw=0,vw=500,sr=null,vu=!1,Mm=null,Du=null,Ip=!1,Bg=null,_A=90,HA=null,vg=0,Dw=null,Um=0;function ga(){return(yr&(rs|js))!==En?1073741821-(Ni()/10|0):Um!==0?Um:Um=1073741821-(Ni()/10|0)}function jA(P,D,T){if(D=D.mode,(D&2)===0)return 1073741823;var j=_o();if((D&4)===0)return j===99?1073741823:1073741822;if((yr&rs)!==En)return ns;if(T!==null)P=Ua(P,T.timeoutMs|0||5e3,250);else switch(j){case 99:P=1073741823;break;case 98:P=Ua(P,150,100);break;case 97:case 96:P=Ua(P,5e3,250);break;case 95:P=2;break;default:throw Error(n(326))}return gi!==null&&P===ns&&--P,P}function Sc(P,D){if(50<vg)throw vg=0,Dw=null,Error(n(185));if(P=Dg(P,D),P!==null){var T=_o();D===1073741823?(yr&Tm)!==En&&(yr&(rs|js))===En?Pw(P):(fo(P),yr===En&&ji()):fo(P),(yr&4)===En||T!==98&&T!==99||(HA===null?HA=new Map([[P,D]]):(T=HA.get(P),(T===void 0||T>D)&&HA.set(P,D)))}}function Dg(P,D){P.expirationTime<D&&(P.expirationTime=D);var T=P.alternate;T!==null&&T.expirationTime<D&&(T.expirationTime=D);var j=P.return,Y=null;if(j===null&&P.tag===3)Y=P.stateNode;else for(;j!==null;){if(T=j.alternate,j.childExpirationTime<D&&(j.childExpirationTime=D),T!==null&&T.childExpirationTime<D&&(T.childExpirationTime=D),j.return===null&&j.tag===3){Y=j.stateNode;break}j=j.return}return Y!==null&&(gi===Y&&(Hm(D),Yi===vl&&KA(Y,ns)),eD(Y,D)),Y}function _m(P){var D=P.lastExpiredTime;return D!==0||(D=P.firstPendingTime,!$v(P,D))?D:(D=P.lastPingedTime,P=P.nextKnownPendingLevel,D>P?D:P)}function fo(P){if(P.lastExpiredTime!==0)P.callbackExpirationTime=1073741823,P.callbackPriority=99,P.callbackNode=pu(Pw.bind(null,P));else{var D=_m(P),T=P.callbackNode;if(D===0)T!==null&&(P.callbackNode=null,P.callbackExpirationTime=0,P.callbackPriority=90);else{var j=ga();if(D===1073741823?j=99:D===1||D===2?j=95:(j=10*(1073741821-D)-10*(1073741821-j),j=0>=j?99:250>=j?98:5250>=j?97:95),T!==null){var Y=P.callbackPriority;if(P.callbackExpirationTime===D&&Y>=j)return;T!==SA&&Ce(T)}P.callbackExpirationTime=D,P.callbackPriority=j,D=D===1073741823?pu(Pw.bind(null,P)):gc(j,Wv.bind(null,P),{timeout:10*(1073741821-D)-Ni()}),P.callbackNode=D}}}function Wv(P,D){if(Um=0,D)return D=ga(),qm(P,D),fo(P),null;var T=_m(P);if(T!==0){if(D=P.callbackNode,(yr&(rs|js))!==En)throw Error(n(327));if(Bp(),P===gi&&T===ns||Pu(P,T),Or!==null){var j=yr;yr|=rs;var Y=GA(P);do try{pF();break}catch(vt){qA(P,vt)}while(1);if(la(),yr=j,Cp.current=Y,Yi===Lm)throw D=Nm,Pu(P,T),KA(P,T),fo(P),D;if(Or===null)switch(Y=P.finishedWork=P.current.alternate,P.finishedExpirationTime=T,j=Yi,gi=null,j){case Bu:case Lm:throw Error(n(345));case Bi:qm(P,2<T?2:T);break;case ha:if(KA(P,T),j=P.lastSuspendedTime,T===j&&(P.nextKnownPendingLevel=bw(Y)),Ya===1073741823&&(Y=Bw+vw-Ni(),10<Y)){if(UA){var Ae=P.lastPingedTime;if(Ae===0||Ae>=T){P.lastPingedTime=T,Pu(P,T);break}}if(Ae=_m(P),Ae!==0&&Ae!==T)break;if(j!==0&&j!==T){P.lastPingedTime=j;break}P.timeoutHandle=Te(Su.bind(null,P),Y);break}Su(P);break;case vl:if(KA(P,T),j=P.lastSuspendedTime,T===j&&(P.nextKnownPendingLevel=bw(Y)),UA&&(Y=P.lastPingedTime,Y===0||Y>=T)){P.lastPingedTime=T,Pu(P,T);break}if(Y=_m(P),Y!==0&&Y!==T)break;if(j!==0&&j!==T){P.lastPingedTime=j;break}if(MA!==1073741823?j=10*(1073741821-MA)-Ni():Ya===1073741823?j=0:(j=10*(1073741821-Ya)-5e3,Y=Ni(),T=10*(1073741821-T)-Y,j=Y-j,0>j&&(j=0),j=(120>j?120:480>j?480:1080>j?1080:1920>j?1920:3e3>j?3e3:4320>j?4320:1960*ww(j/1960))-j,T<j&&(j=T)),10<j){P.timeoutHandle=Te(Su.bind(null,P),j);break}Su(P);break;case Pc:if(Ya!==1073741823&&Om!==null){Ae=Ya;var De=Om;if(j=De.busyMinDurationMs|0,0>=j?j=0:(Y=De.busyDelayMs|0,Ae=Ni()-(10*(1073741821-Ae)-(De.timeoutMs|0||5e3)),j=Ae<=Y?0:Y+j-Ae),10<j){KA(P,T),P.timeoutHandle=Te(Su.bind(null,P),j);break}}Su(P);break;default:throw Error(n(329))}if(fo(P),P.callbackNode===D)return Wv.bind(null,P)}}return null}function Pw(P){var D=P.lastExpiredTime;if(D=D!==0?D:1073741823,P.finishedExpirationTime===D)Su(P);else{if((yr&(rs|js))!==En)throw Error(n(327));if(Bp(),P===gi&&D===ns||Pu(P,D),Or!==null){var T=yr;yr|=rs;var j=GA(P);do try{fF();break}catch(Y){qA(P,Y)}while(1);if(la(),yr=T,Cp.current=j,Yi===Lm)throw T=Nm,Pu(P,D),KA(P,D),fo(P),T;if(Or!==null)throw Error(n(261));P.finishedWork=P.current.alternate,P.finishedExpirationTime=D,gi=null,Su(P),fo(P)}}return null}function Kv(P,D){qm(P,D),fo(P),(yr&(rs|js))===En&&ji()}function AF(){if(HA!==null){var P=HA;HA=null,P.forEach(function(D,T){qm(T,D),fo(T)}),ji()}}function Vv(P,D){if((yr&(rs|js))!==En)throw Error(n(187));var T=yr;yr|=1;try{return lo(99,P.bind(null,D))}finally{yr=T,ji()}}function Pu(P,D){P.finishedWork=null,P.finishedExpirationTime=0;var T=P.timeoutHandle;if(T!==je&&(P.timeoutHandle=je,Je(T)),Or!==null)for(T=Or.return;T!==null;){var j=T;switch(j.tag){case 1:var Y=j.type.childContextTypes;Y!=null&&Ma(j);break;case 3:yc(j),hr(j);break;case 5:ag(j);break;case 4:yc(j);break;case 13:Vn(ei,j);break;case 19:Vn(ei,j);break;case 10:wi(j)}T=T.return}gi=P,Or=WA(P.current,null,D),ns=D,Yi=Bu,Nm=null,MA=Ya=1073741823,Om=null,wp=0,UA=!1}function qA(P,D){do{try{if(la(),yw(),Or===null||Or.return===null)return Yi=Lm,Nm=D,null;e:{var T=P,j=Or.return,Y=Or,Ae=D;if(D=ns,Y.effectTag|=2048,Y.firstEffect=Y.lastEffect=null,Ae!==null&&typeof Ae==\"object\"&&typeof Ae.then==\"function\"){var De=Ae,vt=(ei.current&1)!==0,wt=j;do{var xt;if(xt=wt.tag===13){var _r=wt.memoizedState;if(_r!==null)xt=_r.dehydrated!==null;else{var is=wt.memoizedProps;xt=is.fallback===void 0?!1:is.unstable_avoidThisFallback!==!0?!0:!vt}}if(xt){var di=wt.updateQueue;if(di===null){var po=new Set;po.add(De),wt.updateQueue=po}else di.add(De);if((wt.mode&2)===0){if(wt.effectTag|=64,Y.effectTag&=-2981,Y.tag===1)if(Y.alternate===null)Y.tag=17;else{var VA=ys(1073741823,null);VA.tag=2,tt(Y,VA)}Y.expirationTime=1073741823;break e}Ae=void 0,Y=D;var Yo=T.pingCache;if(Yo===null?(Yo=T.pingCache=new Ig,Ae=new Set,Yo.set(De,Ae)):(Ae=Yo.get(De),Ae===void 0&&(Ae=new Set,Yo.set(De,Ae))),!Ae.has(Y)){Ae.add(Y);var rt=mF.bind(null,T,De,Y);De.then(rt,rt)}wt.effectTag|=4096,wt.expirationTime=D;break e}wt=wt.return}while(wt!==null);Ae=Error((he(Y.type)||\"A React component\")+` suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.`+ml(Y))}Yi!==Pc&&(Yi=Bi),Ae=Eg(Ae,Y),wt=j;do{switch(wt.tag){case 3:De=Ae,wt.effectTag|=4096,wt.expirationTime=D;var Ve=Gv(wt,De,D);It(wt,Ve);break e;case 1:De=Ae;var ft=wt.type,Wt=wt.stateNode;if((wt.effectTag&64)===0&&(typeof ft.getDerivedStateFromError==\"function\"||Wt!==null&&typeof Wt.componentDidCatch==\"function\"&&(Du===null||!Du.has(Wt)))){wt.effectTag|=4096,wt.expirationTime=D;var vr=Yv(wt,De,D);It(wt,vr);break e}}wt=wt.return}while(wt!==null)}Or=zv(Or)}catch(Sn){D=Sn;continue}break}while(1)}function GA(){var P=Cp.current;return Cp.current=wu,P===null?wu:P}function Sw(P,D){P<Ya&&2<P&&(Ya=P),D!==null&&P<MA&&2<P&&(MA=P,Om=D)}function Hm(P){P>wp&&(wp=P)}function fF(){for(;Or!==null;)Or=Jv(Or)}function pF(){for(;Or!==null&&!Rt();)Or=Jv(Or)}function Jv(P){var D=Zv(P.alternate,P,ns);return P.memoizedProps=P.pendingProps,D===null&&(D=zv(P)),Iw.current=null,D}function zv(P){Or=P;do{var D=Or.alternate;if(P=Or.return,(Or.effectTag&2048)===0){e:{var T=D;D=Or;var j=ns,Y=D.pendingProps;switch(D.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:ii(D.type)&&Ma(D);break;case 3:yc(D),hr(D),Y=D.stateNode,Y.pendingContext&&(Y.context=Y.pendingContext,Y.pendingContext=null),(T===null||T.child===null)&&ja(D)&&pa(D),Bl(D);break;case 5:ag(D);var Ae=ca(mc.current);if(j=D.type,T!==null&&D.stateNode!=null)ts(T,D,j,Y,Ae),T.ref!==D.ref&&(D.effectTag|=128);else if(Y){if(T=ca(uo.current),ja(D)){if(Y=D,!y)throw Error(n(175));T=lp(Y.stateNode,Y.type,Y.memoizedProps,Ae,T,Y),Y.updateQueue=T,T=T!==null,T&&pa(D)}else{var De=At(j,Y,Ae,T,D);vc(De,D,!1,!1),D.stateNode=De,at(De,j,Y,Ae,T)&&pa(D)}D.ref!==null&&(D.effectTag|=128)}else if(D.stateNode===null)throw Error(n(166));break;case 6:if(T&&D.stateNode!=null)Gr(T,D,T.memoizedProps,Y);else{if(typeof Y!=\"string\"&&D.stateNode===null)throw Error(n(166));if(T=ca(mc.current),Ae=ca(uo.current),ja(D)){if(T=D,!y)throw Error(n(176));(T=cp(T.stateNode,T.memoizedProps,T))&&pa(D)}else D.stateNode=He(Y,T,Ae,D)}break;case 11:break;case 13:if(Vn(ei,D),Y=D.memoizedState,(D.effectTag&64)!==0){D.expirationTime=j;break e}Y=Y!==null,Ae=!1,T===null?D.memoizedProps.fallback!==void 0&&ja(D):(j=T.memoizedState,Ae=j!==null,Y||j===null||(j=T.child.sibling,j!==null&&(De=D.firstEffect,De!==null?(D.firstEffect=j,j.nextEffect=De):(D.firstEffect=D.lastEffect=j,j.nextEffect=null),j.effectTag=8))),Y&&!Ae&&(D.mode&2)!==0&&(T===null&&D.memoizedProps.unstable_avoidThisFallback!==!0||(ei.current&1)!==0?Yi===Bu&&(Yi=ha):((Yi===Bu||Yi===ha)&&(Yi=vl),wp!==0&&gi!==null&&(KA(gi,ns),eD(gi,wp)))),S&&Y&&(D.effectTag|=4),w&&(Y||Ae)&&(D.effectTag|=4);break;case 7:break;case 8:break;case 12:break;case 4:yc(D),Bl(D);break;case 10:wi(D);break;case 9:break;case 14:break;case 17:ii(D.type)&&Ma(D);break;case 19:if(Vn(ei,D),Y=D.memoizedState,Y===null)break;if(Ae=(D.effectTag&64)!==0,De=Y.rendering,De===null){if(Ae)Dc(Y,!1);else if(Yi!==Bu||T!==null&&(T.effectTag&64)!==0)for(T=D.child;T!==null;){if(De=fp(T),De!==null){for(D.effectTag|=64,Dc(Y,!1),T=De.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),Y.lastEffect===null&&(D.firstEffect=null),D.lastEffect=Y.lastEffect,T=j,Y=D.child;Y!==null;)Ae=Y,j=T,Ae.effectTag&=2,Ae.nextEffect=null,Ae.firstEffect=null,Ae.lastEffect=null,De=Ae.alternate,De===null?(Ae.childExpirationTime=0,Ae.expirationTime=j,Ae.child=null,Ae.memoizedProps=null,Ae.memoizedState=null,Ae.updateQueue=null,Ae.dependencies=null):(Ae.childExpirationTime=De.childExpirationTime,Ae.expirationTime=De.expirationTime,Ae.child=De.child,Ae.memoizedProps=De.memoizedProps,Ae.memoizedState=De.memoizedState,Ae.updateQueue=De.updateQueue,j=De.dependencies,Ae.dependencies=j===null?null:{expirationTime:j.expirationTime,firstContext:j.firstContext,responders:j.responders}),Y=Y.sibling;On(ei,ei.current&1|2,D),D=D.child;break e}T=T.sibling}}else{if(!Ae)if(T=fp(De),T!==null){if(D.effectTag|=64,Ae=!0,T=T.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),Dc(Y,!0),Y.tail===null&&Y.tailMode===\"hidden\"&&!De.alternate){D=D.lastEffect=Y.lastEffect,D!==null&&(D.nextEffect=null);break}}else Ni()>Y.tailExpiration&&1<j&&(D.effectTag|=64,Ae=!0,Dc(Y,!1),D.expirationTime=D.childExpirationTime=j-1);Y.isBackwards?(De.sibling=D.child,D.child=De):(T=Y.last,T!==null?T.sibling=De:D.child=De,Y.last=De)}if(Y.tail!==null){Y.tailExpiration===0&&(Y.tailExpiration=Ni()+500),T=Y.tail,Y.rendering=T,Y.tail=T.sibling,Y.lastEffect=D.lastEffect,T.sibling=null,Y=ei.current,Y=Ae?Y&1|2:Y&1,On(ei,Y,D),D=T;break e}break;case 20:break;case 21:break;default:throw Error(n(156,D.tag))}D=null}if(T=Or,ns===1||T.childExpirationTime!==1){for(Y=0,Ae=T.child;Ae!==null;)j=Ae.expirationTime,De=Ae.childExpirationTime,j>Y&&(Y=j),De>Y&&(Y=De),Ae=Ae.sibling;T.childExpirationTime=Y}if(D!==null)return D;P!==null&&(P.effectTag&2048)===0&&(P.firstEffect===null&&(P.firstEffect=Or.firstEffect),Or.lastEffect!==null&&(P.lastEffect!==null&&(P.lastEffect.nextEffect=Or.firstEffect),P.lastEffect=Or.lastEffect),1<Or.effectTag&&(P.lastEffect!==null?P.lastEffect.nextEffect=Or:P.firstEffect=Or,P.lastEffect=Or))}else{if(D=Cw(Or,ns),D!==null)return D.effectTag&=2047,D;P!==null&&(P.firstEffect=P.lastEffect=null,P.effectTag|=2048)}if(D=Or.sibling,D!==null)return D;Or=P}while(Or!==null);return Yi===Bu&&(Yi=Pc),null}function bw(P){var D=P.expirationTime;return P=P.childExpirationTime,D>P?D:P}function Su(P){var D=_o();return lo(99,hF.bind(null,P,D)),null}function hF(P,D){do Bp();while(Bg!==null);if((yr&(rs|js))!==En)throw Error(n(327));var T=P.finishedWork,j=P.finishedExpirationTime;if(T===null)return null;if(P.finishedWork=null,P.finishedExpirationTime=0,T===P.current)throw Error(n(177));P.callbackNode=null,P.callbackExpirationTime=0,P.callbackPriority=90,P.nextKnownPendingLevel=0;var Y=bw(T);if(P.firstPendingTime=Y,j<=P.lastSuspendedTime?P.firstSuspendedTime=P.lastSuspendedTime=P.nextKnownPendingLevel=0:j<=P.firstSuspendedTime&&(P.firstSuspendedTime=j-1),j<=P.lastPingedTime&&(P.lastPingedTime=0),j<=P.lastExpiredTime&&(P.lastExpiredTime=0),P===gi&&(Or=gi=null,ns=0),1<T.effectTag?T.lastEffect!==null?(T.lastEffect.nextEffect=T,Y=T.firstEffect):Y=T:Y=T.firstEffect,Y!==null){var Ae=yr;yr|=js,Iw.current=null,Ie(P.containerInfo),sr=Y;do try{gF()}catch(ho){if(sr===null)throw Error(n(330));YA(sr,ho),sr=sr.nextEffect}while(sr!==null);sr=Y;do try{for(var De=P,vt=D;sr!==null;){var wt=sr.effectTag;if(wt&16&&w&&qt(sr.stateNode),wt&128){var xt=sr.alternate;if(xt!==null){var _r=xt.ref;_r!==null&&(typeof _r==\"function\"?_r(null):_r.current=null)}}switch(wt&1038){case 2:fr(sr),sr.effectTag&=-3;break;case 6:fr(sr),sr.effectTag&=-3,yn(sr.alternate,sr);break;case 1024:sr.effectTag&=-1025;break;case 1028:sr.effectTag&=-1025,yn(sr.alternate,sr);break;case 4:yn(sr.alternate,sr);break;case 8:var is=De,di=sr,po=vt;w?Cr(is,di,po):re(is,di,po),pe(di)}sr=sr.nextEffect}}catch(ho){if(sr===null)throw Error(n(330));YA(sr,ho),sr=sr.nextEffect}while(sr!==null);Fe(P.containerInfo),P.current=T,sr=Y;do try{for(wt=j;sr!==null;){var VA=sr.effectTag;if(VA&36){var Yo=sr.alternate;switch(xt=sr,_r=wt,xt.tag){case 0:case 11:case 15:L(16,32,xt);break;case 1:var rt=xt.stateNode;if(xt.effectTag&4)if(Yo===null)rt.componentDidMount();else{var Ve=xt.elementType===xt.type?Yo.memoizedProps:Ci(xt.type,Yo.memoizedProps);rt.componentDidUpdate(Ve,Yo.memoizedState,rt.__reactInternalSnapshotBeforeUpdate)}var ft=xt.updateQueue;ft!==null&&Ne(xt,ft,rt,_r);break;case 3:var Wt=xt.updateQueue;if(Wt!==null){if(De=null,xt.child!==null)switch(xt.child.tag){case 5:De=le(xt.child.stateNode);break;case 1:De=xt.child.stateNode}Ne(xt,Wt,De,_r)}break;case 5:var vr=xt.stateNode;Yo===null&&xt.effectTag&4&&Z(vr,xt.type,xt.memoizedProps,xt);break;case 6:break;case 4:break;case 12:break;case 13:if(y&&xt.memoizedState===null){var Sn=xt.alternate;if(Sn!==null){var Fr=Sn.memoizedState;if(Fr!==null){var bn=Fr.dehydrated;bn!==null&&oo(bn)}}}break;case 19:case 17:case 20:case 21:break;default:throw Error(n(163))}}if(VA&128){xt=void 0;var ai=sr.ref;if(ai!==null){var tn=sr.stateNode;switch(sr.tag){case 5:xt=le(tn);break;default:xt=tn}typeof ai==\"function\"?ai(xt):ai.current=xt}}sr=sr.nextEffect}}catch(ho){if(sr===null)throw Error(n(330));YA(sr,ho),sr=sr.nextEffect}while(sr!==null);sr=null,Qn(),yr=Ae}else P.current=T;if(Ip)Ip=!1,Bg=P,_A=D;else for(sr=Y;sr!==null;)D=sr.nextEffect,sr.nextEffect=null,sr=D;if(D=P.firstPendingTime,D===0&&(Du=null),D===1073741823?P===Dw?vg++:(vg=0,Dw=P):vg=0,typeof xw==\"function\"&&xw(T.stateNode,j),fo(P),vu)throw vu=!1,P=Mm,Mm=null,P;return(yr&Tm)!==En||ji(),null}function gF(){for(;sr!==null;){var P=sr.effectTag;(P&256)!==0&&Qt(sr.alternate,sr),(P&512)===0||Ip||(Ip=!0,gc(97,function(){return Bp(),null})),sr=sr.nextEffect}}function Bp(){if(_A!==90){var P=97<_A?97:_A;return _A=90,lo(P,dF)}}function dF(){if(Bg===null)return!1;var P=Bg;if(Bg=null,(yr&(rs|js))!==En)throw Error(n(331));var D=yr;for(yr|=js,P=P.current.firstEffect;P!==null;){try{var T=P;if((T.effectTag&512)!==0)switch(T.tag){case 0:case 11:case 15:L(128,0,T),L(0,64,T)}}catch(j){if(P===null)throw Error(n(330));YA(P,j)}T=P.nextEffect,P.nextEffect=null,P=T}return yr=D,ji(),!0}function Xv(P,D,T){D=Eg(T,D),D=Gv(P,D,1073741823),tt(P,D),P=Dg(P,1073741823),P!==null&&fo(P)}function YA(P,D){if(P.tag===3)Xv(P,P,D);else for(var T=P.return;T!==null;){if(T.tag===3){Xv(T,P,D);break}else if(T.tag===1){var j=T.stateNode;if(typeof T.type.getDerivedStateFromError==\"function\"||typeof j.componentDidCatch==\"function\"&&(Du===null||!Du.has(j))){P=Eg(D,P),P=Yv(T,P,1073741823),tt(T,P),T=Dg(T,1073741823),T!==null&&fo(T);break}}T=T.return}}function mF(P,D,T){var j=P.pingCache;j!==null&&j.delete(D),gi===P&&ns===T?Yi===vl||Yi===ha&&Ya===1073741823&&Ni()-Bw<vw?Pu(P,ns):UA=!0:$v(P,T)&&(D=P.lastPingedTime,D!==0&&D<T||(P.lastPingedTime=T,P.finishedExpirationTime===T&&(P.finishedExpirationTime=0,P.finishedWork=null),fo(P)))}function yF(P,D){var T=P.stateNode;T!==null&&T.delete(D),D=0,D===0&&(D=ga(),D=jA(D,P,null)),P=Dg(P,D),P!==null&&fo(P)}var Zv;Zv=function(P,D,T){var j=D.expirationTime;if(P!==null){var Y=D.pendingProps;if(P.memoizedProps!==Y||_i.current)qo=!0;else{if(j<T){switch(qo=!1,D.tag){case 3:yg(D),mg();break;case 5:if(Sm(D),D.mode&4&&T!==1&&xe(D.type,Y))return D.expirationTime=D.childExpirationTime=1,null;break;case 1:ii(D.type)&&Ac(D);break;case 4:og(D,D.stateNode.containerInfo);break;case 10:Ho(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return j=D.child.childExpirationTime,j!==0&&j>=T?ln(P,D,T):(On(ei,ei.current&1,D),D=si(P,D,T),D!==null?D.sibling:null);On(ei,ei.current&1,D);break;case 19:if(j=D.childExpirationTime>=T,(P.effectTag&64)!==0){if(j)return qa(P,D,T);D.effectTag|=64}if(Y=D.memoizedState,Y!==null&&(Y.rendering=null,Y.tail=null),On(ei,ei.current,D),!j)return null}return si(P,D,T)}qo=!1}}else qo=!1;switch(D.expirationTime=0,D.tag){case 2:if(j=D.type,P!==null&&(P.alternate=null,D.alternate=null,D.effectTag|=2),P=D.pendingProps,Y=Oe(D,Mn.current),ds(D,T),Y=cg(null,D,j,P,Y,T),D.effectTag|=1,typeof Y==\"object\"&&Y!==null&&typeof Y.render==\"function\"&&Y.$$typeof===void 0){if(D.tag=1,yw(),ii(j)){var Ae=!0;Ac(D)}else Ae=!1;D.memoizedState=Y.state!==null&&Y.state!==void 0?Y.state:null;var De=j.getDerivedStateFromProps;typeof De==\"function\"&&er(D,j,De,P),Y.updater=$r,D.stateNode=Y,Y._reactInternalFiber=D,jo(D,j,P,T),D=yp(null,D,j,!0,Ae,T)}else D.tag=0,ws(null,D,Y,T),D=D.child;return D;case 16:if(Y=D.elementType,P!==null&&(P.alternate=null,D.alternate=null,D.effectTag|=2),P=D.pendingProps,me(Y),Y._status!==1)throw Y._result;switch(Y=Y._result,D.type=Y,Ae=D.tag=wF(Y),P=Ci(Y,P),Ae){case 0:D=NA(null,D,Y,P,T);break;case 1:D=mp(null,D,Y,P,T);break;case 11:D=Ii(null,D,Y,P,T);break;case 14:D=Qm(null,D,Y,Ci(Y.type,P),j,T);break;default:throw Error(n(306,Y,\"\"))}return D;case 0:return j=D.type,Y=D.pendingProps,Y=D.elementType===j?Y:Ci(j,Y),NA(P,D,j,Y,T);case 1:return j=D.type,Y=D.pendingProps,Y=D.elementType===j?Y:Ci(j,Y),mp(P,D,j,Y,T);case 3:if(yg(D),j=D.updateQueue,j===null)throw Error(n(282));if(Y=D.memoizedState,Y=Y!==null?Y.element:null,ye(D,j,D.pendingProps,null,T),j=D.memoizedState.element,j===Y)mg(),D=si(P,D,T);else{if((Y=D.stateNode.hydrate)&&(y?(Bc=cu(D.stateNode.containerInfo),Aa=D,Y=Il=!0):Y=!1),Y)for(T=sg(D,null,j,T),D.child=T;T;)T.effectTag=T.effectTag&-3|1024,T=T.sibling;else ws(P,D,j,T),mg();D=D.child}return D;case 5:return Sm(D),P===null&&LA(D),j=D.type,Y=D.pendingProps,Ae=P!==null?P.memoizedProps:null,De=Y.children,ke(j,Y)?De=null:Ae!==null&&ke(j,Ae)&&(D.effectTag|=16),Go(P,D),D.mode&4&&T!==1&&xe(j,Y)?(D.expirationTime=D.childExpirationTime=1,D=null):(ws(P,D,De,T),D=D.child),D;case 6:return P===null&&LA(D),null;case 13:return ln(P,D,T);case 4:return og(D,D.stateNode.containerInfo),j=D.pendingProps,P===null?D.child=gu(D,null,j,T):ws(P,D,j,T),D.child;case 11:return j=D.type,Y=D.pendingProps,Y=D.elementType===j?Y:Ci(j,Y),Ii(P,D,j,Y,T);case 7:return ws(P,D,D.pendingProps,T),D.child;case 8:return ws(P,D,D.pendingProps.children,T),D.child;case 12:return ws(P,D,D.pendingProps.children,T),D.child;case 10:e:{if(j=D.type._context,Y=D.pendingProps,De=D.memoizedProps,Ae=Y.value,Ho(D,Ae),De!==null){var vt=De.value;if(Ae=hs(vt,Ae)?0:(typeof j._calculateChangedBits==\"function\"?j._calculateChangedBits(vt,Ae):1073741823)|0,Ae===0){if(De.children===Y.children&&!_i.current){D=si(P,D,T);break e}}else for(vt=D.child,vt!==null&&(vt.return=D);vt!==null;){var wt=vt.dependencies;if(wt!==null){De=vt.child;for(var xt=wt.firstContext;xt!==null;){if(xt.context===j&&(xt.observedBits&Ae)!==0){vt.tag===1&&(xt=ys(T,null),xt.tag=2,tt(vt,xt)),vt.expirationTime<T&&(vt.expirationTime=T),xt=vt.alternate,xt!==null&&xt.expirationTime<T&&(xt.expirationTime=T),gs(vt.return,T),wt.expirationTime<T&&(wt.expirationTime=T);break}xt=xt.next}}else De=vt.tag===10&&vt.type===D.type?null:vt.child;if(De!==null)De.return=vt;else for(De=vt;De!==null;){if(De===D){De=null;break}if(vt=De.sibling,vt!==null){vt.return=De.return,De=vt;break}De=De.return}vt=De}}ws(P,D,Y.children,T),D=D.child}return D;case 9:return Y=D.type,Ae=D.pendingProps,j=Ae.children,ds(D,T),Y=ms(Y,Ae.unstable_observedBits),j=j(Y),D.effectTag|=1,ws(P,D,j,T),D.child;case 14:return Y=D.type,Ae=Ci(Y,D.pendingProps),Ae=Ci(Y.type,Ae),Qm(P,D,Y,Ae,j,T);case 15:return Fm(P,D,D.type,D.pendingProps,j,T);case 17:return j=D.type,Y=D.pendingProps,Y=D.elementType===j?Y:Ci(j,Y),P!==null&&(P.alternate=null,D.alternate=null,D.effectTag|=2),D.tag=1,ii(j)?(P=!0,Ac(D)):P=!1,ds(D,T),es(D,j,Y,T),jo(D,j,Y,T),yp(null,D,j,!0,P,T);case 19:return qa(P,D,T)}throw Error(n(156,D.tag))};var xw=null,kw=null;function EF(P){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\")return!1;var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(D.isDisabled||!D.supportsFiber)return!0;try{var T=D.inject(P);xw=function(j){try{D.onCommitFiberRoot(T,j,void 0,(j.current.effectTag&64)===64)}catch{}},kw=function(j){try{D.onCommitFiberUnmount(T,j)}catch{}}}catch{}return!0}function CF(P,D,T,j){this.tag=P,this.key=T,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=D,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=j,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Dl(P,D,T,j){return new CF(P,D,T,j)}function Qw(P){return P=P.prototype,!(!P||!P.isReactComponent)}function wF(P){if(typeof P==\"function\")return Qw(P)?1:0;if(P!=null){if(P=P.$$typeof,P===N)return 11;if(P===te)return 14}return 2}function WA(P,D){var T=P.alternate;return T===null?(T=Dl(P.tag,D,P.key,P.mode),T.elementType=P.elementType,T.type=P.type,T.stateNode=P.stateNode,T.alternate=P,P.alternate=T):(T.pendingProps=D,T.effectTag=0,T.nextEffect=null,T.firstEffect=null,T.lastEffect=null),T.childExpirationTime=P.childExpirationTime,T.expirationTime=P.expirationTime,T.child=P.child,T.memoizedProps=P.memoizedProps,T.memoizedState=P.memoizedState,T.updateQueue=P.updateQueue,D=P.dependencies,T.dependencies=D===null?null:{expirationTime:D.expirationTime,firstContext:D.firstContext,responders:D.responders},T.sibling=P.sibling,T.index=P.index,T.ref=P.ref,T}function jm(P,D,T,j,Y,Ae){var De=2;if(j=P,typeof P==\"function\")Qw(P)&&(De=1);else if(typeof P==\"string\")De=5;else e:switch(P){case E:return bu(T.children,Y,Ae,D);case R:De=8,Y|=7;break;case I:De=8,Y|=1;break;case v:return P=Dl(12,T,D,Y|8),P.elementType=v,P.type=v,P.expirationTime=Ae,P;case U:return P=Dl(13,T,D,Y),P.type=U,P.elementType=U,P.expirationTime=Ae,P;case J:return P=Dl(19,T,D,Y),P.elementType=J,P.expirationTime=Ae,P;default:if(typeof P==\"object\"&&P!==null)switch(P.$$typeof){case x:De=10;break e;case C:De=9;break e;case N:De=11;break e;case te:De=14;break e;case ae:De=16,j=null;break e}throw Error(n(130,P==null?P:typeof P,\"\"))}return D=Dl(De,T,D,Y),D.elementType=P,D.type=j,D.expirationTime=Ae,D}function bu(P,D,T,j){return P=Dl(7,P,j,D),P.expirationTime=T,P}function Fw(P,D,T){return P=Dl(6,P,null,D),P.expirationTime=T,P}function Rw(P,D,T){return D=Dl(4,P.children!==null?P.children:[],P.key,D),D.expirationTime=T,D.stateNode={containerInfo:P.containerInfo,pendingChildren:null,implementation:P.implementation},D}function IF(P,D,T){this.tag=D,this.current=null,this.containerInfo=P,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=je,this.pendingContext=this.context=null,this.hydrate=T,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function $v(P,D){var T=P.firstSuspendedTime;return P=P.lastSuspendedTime,T!==0&&T>=D&&P<=D}function KA(P,D){var T=P.firstSuspendedTime,j=P.lastSuspendedTime;T<D&&(P.firstSuspendedTime=D),(j>D||T===0)&&(P.lastSuspendedTime=D),D<=P.lastPingedTime&&(P.lastPingedTime=0),D<=P.lastExpiredTime&&(P.lastExpiredTime=0)}function eD(P,D){D>P.firstPendingTime&&(P.firstPendingTime=D);var T=P.firstSuspendedTime;T!==0&&(D>=T?P.firstSuspendedTime=P.lastSuspendedTime=P.nextKnownPendingLevel=0:D>=P.lastSuspendedTime&&(P.lastSuspendedTime=D+1),D>P.nextKnownPendingLevel&&(P.nextKnownPendingLevel=D))}function qm(P,D){var T=P.lastExpiredTime;(T===0||T>D)&&(P.lastExpiredTime=D)}function tD(P){var D=P._reactInternalFiber;if(D===void 0)throw typeof P.render==\"function\"?Error(n(188)):Error(n(268,Object.keys(P)));return P=Ee(D),P===null?null:P.stateNode}function rD(P,D){P=P.memoizedState,P!==null&&P.dehydrated!==null&&P.retryTime<D&&(P.retryTime=D)}function Gm(P,D){rD(P,D),(P=P.alternate)&&rD(P,D)}var nD={createContainer:function(P,D,T){return P=new IF(P,D,T),D=Dl(3,null,null,D===2?7:D===1?3:0),P.current=D,D.stateNode=P},updateContainer:function(P,D,T,j){var Y=D.current,Ae=ga(),De=ht.suspense;Ae=jA(Ae,Y,De);e:if(T){T=T._reactInternalFiber;t:{if(Be(T)!==T||T.tag!==1)throw Error(n(170));var vt=T;do{switch(vt.tag){case 3:vt=vt.stateNode.context;break t;case 1:if(ii(vt.type)){vt=vt.stateNode.__reactInternalMemoizedMergedChildContext;break t}}vt=vt.return}while(vt!==null);throw Error(n(171))}if(T.tag===1){var wt=T.type;if(ii(wt)){T=uu(T,wt,vt);break e}}T=vt}else T=Li;return D.context===null?D.context=T:D.pendingContext=T,D=ys(Ae,De),D.payload={element:P},j=j===void 0?null:j,j!==null&&(D.callback=j),tt(Y,D),Sc(Y,Ae),Ae},batchedEventUpdates:function(P,D){var T=yr;yr|=2;try{return P(D)}finally{yr=T,yr===En&&ji()}},batchedUpdates:function(P,D){var T=yr;yr|=1;try{return P(D)}finally{yr=T,yr===En&&ji()}},unbatchedUpdates:function(P,D){var T=yr;yr&=-2,yr|=Tm;try{return P(D)}finally{yr=T,yr===En&&ji()}},deferredUpdates:function(P){return lo(97,P)},syncUpdates:function(P,D,T,j){return lo(99,P.bind(null,D,T,j))},discreteUpdates:function(P,D,T,j){var Y=yr;yr|=4;try{return lo(98,P.bind(null,D,T,j))}finally{yr=Y,yr===En&&ji()}},flushDiscreteUpdates:function(){(yr&(1|rs|js))===En&&(AF(),Bp())},flushControlled:function(P){var D=yr;yr|=1;try{lo(99,P)}finally{yr=D,yr===En&&ji()}},flushSync:Vv,flushPassiveEffects:Bp,IsThisRendererActing:{current:!1},getPublicRootInstance:function(P){if(P=P.current,!P.child)return null;switch(P.child.tag){case 5:return le(P.child.stateNode);default:return P.child.stateNode}},attemptSynchronousHydration:function(P){switch(P.tag){case 3:var D=P.stateNode;D.hydrate&&Kv(D,D.firstPendingTime);break;case 13:Vv(function(){return Sc(P,1073741823)}),D=Ua(ga(),150,100),Gm(P,D)}},attemptUserBlockingHydration:function(P){if(P.tag===13){var D=Ua(ga(),150,100);Sc(P,D),Gm(P,D)}},attemptContinuousHydration:function(P){if(P.tag===13){ga();var D=xA++;Sc(P,D),Gm(P,D)}},attemptHydrationAtCurrentPriority:function(P){if(P.tag===13){var D=ga();D=jA(D,P,null),Sc(P,D),Gm(P,D)}},findHostInstance:tD,findHostInstanceWithWarning:function(P){return tD(P)},findHostInstanceWithNoPortals:function(P){return P=Pe(P),P===null?null:P.tag===20?P.stateNode.instance:P.stateNode},shouldSuspend:function(){return!1},injectIntoDevTools:function(P){var D=P.findFiberByHostInstance;return EF(r({},P,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:u.ReactCurrentDispatcher,findHostInstanceByFiber:function(T){return T=Ee(T),T===null?null:T.stateNode},findFiberByHostInstance:function(T){return D?D(T):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}};lB.exports=nD.default||nD;var BF=lB.exports;return lB.exports=t,BF}});var bEe=_((yKt,SEe)=>{\"use strict\";SEe.exports=PEe()});var kEe=_((EKt,xEe)=>{\"use strict\";var jyt={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};xEe.exports=jyt});var TEe=_((CKt,REe)=>{\"use strict\";var qyt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(t[o]=r[o])}return t},Wk=function(){function t(e,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(e,r,o){return r&&t(e.prototype,r),o&&t(e,o),e}}();function S6(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function b6(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var tu=kEe(),Gyt=function(){function t(e,r,o,a,n,u){b6(this,t),this.left=e,this.right=r,this.top=o,this.bottom=a,this.width=n,this.height=u}return Wk(t,[{key:\"fromJS\",value:function(r){r(this.left,this.right,this.top,this.bottom,this.width,this.height)}},{key:\"toString\",value:function(){return\"<Layout#\"+this.left+\":\"+this.right+\";\"+this.top+\":\"+this.bottom+\";\"+this.width+\":\"+this.height+\">\"}}]),t}(),QEe=function(){Wk(t,null,[{key:\"fromJS\",value:function(r){var o=r.width,a=r.height;return new t(o,a)}}]);function t(e,r){b6(this,t),this.width=e,this.height=r}return Wk(t,[{key:\"fromJS\",value:function(r){r(this.width,this.height)}},{key:\"toString\",value:function(){return\"<Size#\"+this.width+\"x\"+this.height+\">\"}}]),t}(),FEe=function(){function t(e,r){b6(this,t),this.unit=e,this.value=r}return Wk(t,[{key:\"fromJS\",value:function(r){r(this.unit,this.value)}},{key:\"toString\",value:function(){switch(this.unit){case tu.UNIT_POINT:return String(this.value);case tu.UNIT_PERCENT:return this.value+\"%\";case tu.UNIT_AUTO:return\"auto\";default:return this.value+\"?\"}}},{key:\"valueOf\",value:function(){return this.value}}]),t}();REe.exports=function(t,e){function r(u,A,p){var h=u[A];u[A]=function(){for(var E=arguments.length,I=Array(E),v=0;v<E;v++)I[v]=arguments[v];return p.call.apply(p,[this,h].concat(I))}}for(var o=[\"setPosition\",\"setMargin\",\"setFlexBasis\",\"setWidth\",\"setHeight\",\"setMinWidth\",\"setMinHeight\",\"setMaxWidth\",\"setMaxHeight\",\"setPadding\"],a=function(){var A,p=o[n],h=(A={},S6(A,tu.UNIT_POINT,e.Node.prototype[p]),S6(A,tu.UNIT_PERCENT,e.Node.prototype[p+\"Percent\"]),S6(A,tu.UNIT_AUTO,e.Node.prototype[p+\"Auto\"]),A);r(e.Node.prototype,p,function(E){for(var I=arguments.length,v=Array(I>1?I-1:0),x=1;x<I;x++)v[x-1]=arguments[x];var C=v.pop(),R=void 0,N=void 0;if(C===\"auto\")R=tu.UNIT_AUTO,N=void 0;else if(C instanceof FEe)R=C.unit,N=C.valueOf();else if(R=typeof C==\"string\"&&C.endsWith(\"%\")?tu.UNIT_PERCENT:tu.UNIT_POINT,N=parseFloat(C),!Number.isNaN(C)&&Number.isNaN(N))throw new Error(\"Invalid value \"+C+\" for \"+p);if(!h[R])throw new Error('Failed to execute \"'+p+`\": Unsupported unit '`+C+\"'\");if(N!==void 0){var U;return(U=h[R]).call.apply(U,[this].concat(v,[N]))}else{var J;return(J=h[R]).call.apply(J,[this].concat(v))}})},n=0;n<o.length;n++)a();return r(e.Config.prototype,\"free\",function(){e.Config.destroy(this)}),r(e.Node,\"create\",function(u,A){return A?e.Node.createWithConfig(A):e.Node.createDefault()}),r(e.Node.prototype,\"free\",function(){e.Node.destroy(this)}),r(e.Node.prototype,\"freeRecursive\",function(){for(var u=0,A=this.getChildCount();u<A;++u)this.getChild(0).freeRecursive();this.free()}),r(e.Node.prototype,\"setMeasureFunc\",function(u,A){return A?u.call(this,function(){return QEe.fromJS(A.apply(void 0,arguments))}):this.unsetMeasureFunc()}),r(e.Node.prototype,\"calculateLayout\",function(u){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:tu.DIRECTION_LTR;return u.call(this,A,p,h)}),qyt({Config:e.Config,Node:e.Node,Layout:t(\"Layout\",Gyt),Size:t(\"Size\",QEe),Value:t(\"Value\",FEe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},tu)}});var LEe=_((exports,module)=>{(function(t,e){typeof define==\"function\"&&define.amd?define([],function(){return e}):typeof module==\"object\"&&module.exports?module.exports=e:(t.nbind=t.nbind||{}).init=e})(exports,function(Module,cb){typeof Module==\"function\"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(t,e){return function(){t&&t.apply(this,arguments);try{Module.ccall(\"nbind_init\")}catch(r){e(r);return}e(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<\"u\"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT===\"WEB\")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT===\"WORKER\")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT===\"NODE\")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT===\"SHELL\")ENVIRONMENT_IS_SHELL=!0;else throw new Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\");else ENVIRONMENT_IS_WEB=typeof window==\"object\",ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\",ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof ve==\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(e,r){nodeFS||(nodeFS={}(\"\")),nodePath||(nodePath={}(\"\")),e=nodePath.normalize(e);var o=nodeFS.readFileSync(e);return r?o:o.toString()},Module.readBinary=function(e){var r=Module.read(e,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\\\/g,\"/\"):Module.thisProgram=\"unknown-program\"),Module.arguments=process.argv.slice(2),typeof module<\"u\"&&(module.exports=Module),Module.inspect=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<\"u\"&&(Module.printErr=printErr),typeof read<\"u\"?Module.read=read:Module.read=function(){throw\"no read() available\"},Module.readBinary=function(e){if(typeof readbuffer==\"function\")return new Uint8Array(readbuffer(e));var r=read(e,\"binary\");return assert(typeof r==\"object\"),r},typeof scriptArgs<\"u\"?Module.arguments=scriptArgs:typeof arguments<\"u\"&&(Module.arguments=arguments),typeof quit==\"function\"&&(Module.quit=function(t,e){quit(t)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.responseType=\"arraybuffer\",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,o){var a=new XMLHttpRequest;a.open(\"GET\",e,!0),a.responseType=\"arraybuffer\",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):o()},a.onerror=o,a.send(null)},typeof arguments<\"u\"&&(Module.arguments=arguments),typeof console<\"u\")Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<\"u\"?function(t){dump(t)}:function(t){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>\"u\"&&(Module.setWindowTitle=function(t){document.title=t})}else throw\"Unknown runtime environment. Where are we?\";function globalEval(t){eval.call(null,t)}!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram=\"./this.program\"),Module.quit||(Module.quit=function(t,e){throw e}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(t){return tempRet0=t,t},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(t){STACKTOP=t},getNativeTypeSize:function(t){switch(t){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(t[t.length-1]===\"*\")return Runtime.QUANTUM_SIZE;if(t[0]===\"i\"){var e=parseInt(t.substr(1));return assert(e%8===0),e/8}else return 0}}},getNativeFieldSize:function(t){return Math.max(Runtime.getNativeTypeSize(t),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(t,e){return e===\"double\"||e===\"i64\"?t&7&&(assert((t&7)===4),t+=4):assert((t&3)===0),t},getAlignSize:function(t,e,r){return!r&&(t==\"i64\"||t==\"double\")?8:t?Math.min(e||(t?Runtime.getNativeFieldSize(t):0),Runtime.QUANTUM_SIZE):Math.min(e,8)},dynCall:function(t,e,r){return r&&r.length?Module[\"dynCall_\"+t].apply(null,[e].concat(r)):Module[\"dynCall_\"+t].call(null,e)},functionPointers:[],addFunction:function(t){for(var e=0;e<Runtime.functionPointers.length;e++)if(!Runtime.functionPointers[e])return Runtime.functionPointers[e]=t,2*(1+e);throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\"},removeFunction:function(t){Runtime.functionPointers[(t-2)/2]=null},warnOnce:function(t){Runtime.warnOnce.shown||(Runtime.warnOnce.shown={}),Runtime.warnOnce.shown[t]||(Runtime.warnOnce.shown[t]=1,Module.printErr(t))},funcWrappers:{},getFuncWrapper:function(t,e){if(!!t){assert(e),Runtime.funcWrappers[e]||(Runtime.funcWrappers[e]={});var r=Runtime.funcWrappers[e];return r[t]||(e.length===1?r[t]=function(){return Runtime.dynCall(e,t)}:e.length===2?r[t]=function(a){return Runtime.dynCall(e,t,[a])}:r[t]=function(){return Runtime.dynCall(e,t,Array.prototype.slice.call(arguments))}),r[t]}},getCompilerSetting:function(t){throw\"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\"},stackAlloc:function(t){var e=STACKTOP;return STACKTOP=STACKTOP+t|0,STACKTOP=STACKTOP+15&-16,e},staticAlloc:function(t){var e=STATICTOP;return STATICTOP=STATICTOP+t|0,STATICTOP=STATICTOP+15&-16,e},dynamicAlloc:function(t){var e=HEAP32[DYNAMICTOP_PTR>>2],r=(e+t+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var o=enlargeMemory();if(!o)return HEAP32[DYNAMICTOP_PTR>>2]=e,0}return e},alignMemory:function(t,e){var r=t=Math.ceil(t/(e||16))*(e||16);return r},makeBigInt:function(t,e,r){var o=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return o},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(t,e){t||abort(\"Assertion failed: \"+e)}function getCFunc(ident){var func=Module[\"_\"+ident];if(!func)try{func=eval(\"_\"+ident)}catch(t){}return assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(t){var e=Runtime.stackAlloc(t.length);return writeArrayToMemory(t,e),e},stringToC:function(t){var e=0;if(t!=null&&t!==0){var r=(t.length<<2)+1;e=Runtime.stackAlloc(r),stringToUTF8(t,e,r)}return e}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,o,a,n){var u=getCFunc(e),A=[],p=0;if(a)for(var h=0;h<a.length;h++){var E=toC[o[h]];E?(p===0&&(p=Runtime.stackSave()),A[h]=E(a[h])):A[h]=a[h]}var I=u.apply(null,A);if(r===\"string\"&&(I=Pointer_stringify(I)),p!==0){if(n&&n.async){EmterpreterAsync.asyncFinalizers.push(function(){Runtime.stackRestore(p)});return}Runtime.stackRestore(p)}return I};var sourceRegex=/^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/;function parseJSFunc(t){var e=t.toString().match(sourceRegex).slice(1);return{arguments:e[0],body:e[1],returnValue:e[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource){JSsource={};for(var t in JSfuncs)JSfuncs.hasOwnProperty(t)&&(JSsource[t]=parseJSFunc(JSfuncs[t]))}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident),numericArgs=argTypes.every(function(t){return t===\"number\"}),numericRet=returnType!==\"string\";if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map(function(t,e){return\"$\"+e}),funcstr=\"(function(\"+argNames.join(\",\")+\") {\",nargs=argTypes.length;if(!numericArgs){ensureJSsource(),funcstr+=\"var stack = \"+JSsource.stackSave.body+\";\";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type!==\"number\"){var convertCode=JSsource[type+\"ToC\"];funcstr+=\"var \"+convertCode.arguments+\" = \"+arg+\";\",funcstr+=convertCode.body+\";\",funcstr+=arg+\"=(\"+convertCode.returnValue+\");\"}}}var cfuncname=parseJSFunc(function(){return cfunc}).returnValue;if(funcstr+=\"var ret = \"+cfuncname+\"(\"+argNames.join(\",\")+\");\",!numericRet){var strgfy=parseJSFunc(function(){return Pointer_stringify}).returnValue;funcstr+=\"ret = \"+strgfy+\"(ret);\"}return numericArgs||(ensureJSsource(),funcstr+=JSsource.stackRestore.body.replace(\"()\",\"(stack)\")+\";\"),funcstr+=\"return ret})\",eval(funcstr)}})(),Module.ccall=ccall,Module.cwrap=cwrap;function setValue(t,e,r,o){switch(r=r||\"i8\",r.charAt(r.length-1)===\"*\"&&(r=\"i32\"),r){case\"i1\":HEAP8[t>>0]=e;break;case\"i8\":HEAP8[t>>0]=e;break;case\"i16\":HEAP16[t>>1]=e;break;case\"i32\":HEAP32[t>>2]=e;break;case\"i64\":tempI64=[e>>>0,(tempDouble=e,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1];break;case\"float\":HEAPF32[t>>2]=e;break;case\"double\":HEAPF64[t>>3]=e;break;default:abort(\"invalid type for setValue: \"+r)}}Module.setValue=setValue;function getValue(t,e,r){switch(e=e||\"i8\",e.charAt(e.length-1)===\"*\"&&(e=\"i32\"),e){case\"i1\":return HEAP8[t>>0];case\"i8\":return HEAP8[t>>0];case\"i16\":return HEAP16[t>>1];case\"i32\":return HEAP32[t>>2];case\"i64\":return HEAP32[t>>2];case\"float\":return HEAPF32[t>>2];case\"double\":return HEAPF64[t>>3];default:abort(\"invalid type for setValue: \"+e)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(t,e,r,o){var a,n;typeof t==\"number\"?(a=!0,n=t):(a=!1,n=t.length);var u=typeof e==\"string\"?e:null,A;if(r==ALLOC_NONE?A=o:A=[typeof _malloc==\"function\"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,u?1:e.length)),a){var o=A,p;for(assert((A&3)==0),p=A+(n&-4);o<p;o+=4)HEAP32[o>>2]=0;for(p=A+n;o<p;)HEAP8[o++>>0]=0;return A}if(u===\"i8\")return t.subarray||t.slice?HEAPU8.set(t,A):HEAPU8.set(new Uint8Array(t),A),A;for(var h=0,E,I,v;h<n;){var x=t[h];if(typeof x==\"function\"&&(x=Runtime.getFunctionIndex(x)),E=u||e[h],E===0){h++;continue}E==\"i64\"&&(E=\"i32\"),setValue(A+h,x,E),v!==E&&(I=Runtime.getNativeTypeSize(E),v=E),h+=I}return A}Module.allocate=allocate;function getMemory(t){return staticSealed?runtimeInitialized?_malloc(t):Runtime.dynamicAlloc(t):Runtime.staticAlloc(t)}Module.getMemory=getMemory;function Pointer_stringify(t,e){if(e===0||!t)return\"\";for(var r=0,o,a=0;o=HEAPU8[t+a>>0],r|=o,!(o==0&&!e||(a++,e&&a==e)););e||(e=a);var n=\"\";if(r<128){for(var u=1024,A;e>0;)A=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,u))),n=n?n+A:A,t+=u,e-=u;return n}return Module.UTF8ToString(t)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(t){for(var e=\"\";;){var r=HEAP8[t++>>0];if(!r)return e;e+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(t,e){return writeAsciiToMemory(t,e,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0;function UTF8ArrayToString(t,e){for(var r=e;t[r];)++r;if(r-e>16&&t.subarray&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var o,a,n,u,A,p,h=\"\";;){if(o=t[e++],!o)return h;if(!(o&128)){h+=String.fromCharCode(o);continue}if(a=t[e++]&63,(o&224)==192){h+=String.fromCharCode((o&31)<<6|a);continue}if(n=t[e++]&63,(o&240)==224?o=(o&15)<<12|a<<6|n:(u=t[e++]&63,(o&248)==240?o=(o&7)<<18|a<<12|n<<6|u:(A=t[e++]&63,(o&252)==248?o=(o&3)<<24|a<<18|n<<12|u<<6|A:(p=t[e++]&63,o=(o&1)<<30|a<<24|n<<18|u<<12|A<<6|p))),o<65536)h+=String.fromCharCode(o);else{var E=o-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(t){return UTF8ArrayToString(HEAPU8,t)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(t,e,r,o){if(!(o>0))return 0;for(var a=r,n=r+o-1,u=0;u<t.length;++u){var A=t.charCodeAt(u);if(A>=55296&&A<=57343&&(A=65536+((A&1023)<<10)|t.charCodeAt(++u)&1023),A<=127){if(r>=n)break;e[r++]=A}else if(A<=2047){if(r+1>=n)break;e[r++]=192|A>>6,e[r++]=128|A&63}else if(A<=65535){if(r+2>=n)break;e[r++]=224|A>>12,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=2097151){if(r+3>=n)break;e[r++]=240|A>>18,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=67108863){if(r+4>=n)break;e[r++]=248|A>>24,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else{if(r+5>=n)break;e[r++]=252|A>>30,e[r++]=128|A>>24&63,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}}return e[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(t,e,r){return stringToUTF8Array(t,HEAPU8,e,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(t){for(var e=0,r=0;r<t.length;++r){var o=t.charCodeAt(r);o>=55296&&o<=57343&&(o=65536+((o&1023)<<10)|t.charCodeAt(++r)&1023),o<=127?++e:o<=2047?e+=2:o<=65535?e+=3:o<=2097151?e+=4:o<=67108863?e+=5:e+=6}return e}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0;function demangle(t){var e=Module.___cxa_demangle||Module.__cxa_demangle;if(e){try{var r=t.substr(1),o=lengthBytesUTF8(r)+1,a=_malloc(o);stringToUTF8(r,a,o);var n=_malloc(4),u=e(a,0,0,n);if(getValue(n,\"i32\")===0&&u)return Pointer_stringify(u)}catch{}finally{a&&_free(a),n&&_free(n),u&&_free(u)}return t}return Runtime.warnOnce(\"warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling\"),t}function demangleAll(t){var e=/__Z[\\w\\d_]+/g;return t.replace(e,function(r){var o=demangle(r);return r===o?r:r+\" [\"+o+\"]\"})}function jsStackTrace(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return\"(no stack trace available)\"}return t.stack.toString()}function stackTrace(){var t=jsStackTrace();return Module.extraStackTrace&&(t+=`\n`+Module.extraStackTrace()),demangleAll(t)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY<TOTAL_STACK&&Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\"),Module.buffer?buffer=Module.buffer:buffer=new ArrayBuffer(TOTAL_MEMORY),updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}if(HEAP32[0]=1668509029,HEAP16[1]=25459,HEAPU8[2]!==115||HEAPU8[3]!==99)throw\"Runtime error: expected the system to be little-endian!\";Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;function callRuntimeCallbacks(t){for(;t.length>0;){var e=t.shift();if(typeof e==\"function\"){e();continue}var r=e.func;typeof r==\"number\"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun==\"function\"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun==\"function\"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var o=r>0?r:lengthBytesUTF8(t)+1,a=new Array(o),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r<t.length;r++){var o=t[r];o>255&&(o&=255),e.push(String.fromCharCode(o))}return e.join(\"\")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");var o,a;r&&(a=e+lengthBytesUTF8(t),o=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=o)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var o=0;o<t.length;++o)HEAP8[e++>>0]=t.charCodeAt(o);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var o=e>>>16,a=e&65535,n=r>>>16,u=r&65535;return a*u+(o*u+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}function addRunDependency(t){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(t,e,r,o,a,n,u,A){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,o,a,n,u,A){return ASM_CONSTS[t](e,r,o,a,n,u,A)}function _emscripten_asm_const_iiiii(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiidddddd(t,e,r,o,a,n,u,A,p){return ASM_CONSTS[t](e,r,o,a,n,u,A,p)}function _emscripten_asm_const_iiididi(t,e,r,o,a,n,u){return ASM_CONSTS[t](e,r,o,a,n,u)}function _emscripten_asm_const_iiii(t,e,r,o){return ASM_CONSTS[t](e,r,o)}function _emscripten_asm_const_iiiid(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiiiii(t,e,r,o,a,n){return ASM_CONSTS[t](e,r,o,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(t,e){__ATEXIT__.unshift({func:t,arg:e})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr(\"missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj\"),abort(-1)}function __decorate(t,e,r,o){var a=arguments.length,n=a<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,r):o,u;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")n=Reflect.decorate(t,e,r,o);else for(var A=t.length-1;A>=0;A--)(u=t[A])&&(n=(a<3?u(n):a>3?u(e,r,n):u(e,r))||n);return a>3&&n&&Object.defineProperty(e,r,n),n}function _defineHidden(t){return function(e,r){Object.defineProperty(e,r,{configurable:!1,enumerable:!1,value:t,writable:!0})}}var _nbind={};function __nbind_free_external(t){_nbind.externalList[t].dereference(t)}function __nbind_reference_external(t){_nbind.externalList[t].reference()}function _llvm_stackrestore(t){var e=_llvm_stacksave,r=e.LLVM_SAVEDSTACKS[t];e.LLVM_SAVEDSTACKS.splice(t,1),Runtime.stackRestore(r)}function __nbind_register_pool(t,e,r,o){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=o/4,HEAP32[e/4]=16909060,HEAP8[e]==1&&(_nbind.bigEndian=!0),HEAP32[e/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,\"cbFunction &\":_nbind.CallbackType,\"const cbFunction &\":_nbind.CallbackType,\"const std::string &\":_nbind.StringType,\"std::string\":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:\"\"});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(t,e){if(Browser.mainLoop.timingMode=t,Browser.mainLoop.timingValue=e,!Browser.mainLoop.func)return 1;if(t==0)Browser.mainLoop.scheduler=function(){var u=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,u)},Browser.mainLoop.method=\"timeout\";else if(t==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method=\"rAF\";else if(t==2){if(!window.setImmediate){let n=function(u){u.source===window&&u.data===o&&(u.stopPropagation(),r.shift()())};var a=n,r=[],o=\"setimmediate\";window.addEventListener(\"message\",n,!0),window.setImmediate=function(A){r.push(A),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(A),window.postMessage({target:o})):window.postMessage(o,\"*\")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method=\"immediate\"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(t,e,r,o,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,\"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\"),Browser.mainLoop.func=t,Browser.mainLoop.arg=o;var n;typeof o<\"u\"?n=function(){Module.dynCall_vi(t,o)}:n=function(){Module.dynCall_v(t)};var u=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,I=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=I:(I=I+.5,Browser.mainLoop.remainingBlockers=(8*E+I)/9)}if(console.log('main loop blocker \"'+h.name+'\" took '+(Date.now()-p)+\" ms\"),Browser.mainLoop.updateStatus(),u<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(!(u<Browser.mainLoop.currentlyRunningMainloop)){if(Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0,Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method===\"timeout\"&&Module.ctx&&(Module.printErr(\"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\"),Browser.mainLoop.method=\"\"),Browser.mainLoop.runIter(n),!(u<Browser.mainLoop.currentlyRunningMainloop)&&(typeof SDL==\"object\"&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Browser.mainLoop.scheduler())}}},a||(e&&e>0?_emscripten_set_main_loop_timing(0,1e3/e):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw\"SimulateInfiniteLoop\"}var Browser={mainLoop:{scheduler:null,method:\"\",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var t=Browser.mainLoop.timingMode,e=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(t,e),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var t=Module.statusMessage||\"Please wait...\",e=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;e?e<r?Module.setStatus(t+\" (\"+(r-e)+\"/\"+r+\")\"):Module.setStatus(t):Module.setStatus(\"\")}},runIter:function(t){if(!ABORT){if(Module.preMainLoop){var e=Module.preMainLoop();if(e===!1)return}try{t()}catch(r){if(r instanceof ExitStatus)return;throw r&&typeof r==\"object\"&&r.stack&&Module.printErr(\"exception thrown: \"+[r,r.stack]),r}Module.postMainLoop&&Module.postMainLoop()}}},isFullscreen:!1,pointerLock:!1,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(Module.preloadPlugins||(Module.preloadPlugins=[]),Browser.initted)return;Browser.initted=!0;try{new Blob,Browser.hasBlobConstructor=!0}catch{Browser.hasBlobConstructor=!1,console.log(\"warning: no blob constructor, cannot create blobs with mimetypes\")}Browser.BlobBuilder=typeof MozBlobBuilder<\"u\"?MozBlobBuilder:typeof WebKitBlobBuilder<\"u\"?WebKitBlobBuilder:Browser.hasBlobConstructor?null:console.log(\"warning: no BlobBuilder\"),Browser.URLObject=typeof window<\"u\"?window.URL?window.URL:window.webkitURL:void 0,!Module.noImageDecoding&&typeof Browser.URLObject>\"u\"&&(console.log(\"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\"),Module.noImageDecoding=!0);var t={};t.canHandle=function(n){return!Module.noImageDecoding&&/\\.(jpg|jpeg|png|bmp)$/i.test(n)},t.handle=function(n,u,A,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(u)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(u)}))}catch(x){Runtime.warnOnce(\"Blob constructor present but fails: \"+x+\"; falling back to blob builder\")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var I=Browser.URLObject.createObjectURL(h),v=new Image;v.onload=function(){assert(v.complete,\"Image \"+u+\" could not be decoded\");var C=document.createElement(\"canvas\");C.width=v.width,C.height=v.height;var R=C.getContext(\"2d\");R.drawImage(v,0,0),Module.preloadedImages[u]=C,Browser.URLObject.revokeObjectURL(I),A&&A(n)},v.onerror=function(C){console.log(\"Image \"+I+\" could not be decoded\"),p&&p()},v.src=I},Module.preloadPlugins.push(t);var e={};e.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{\".ogg\":1,\".wav\":1,\".mp3\":1}},e.handle=function(n,u,A,p){var h=!1;function E(R){h||(h=!0,Module.preloadedAudios[u]=R,A&&A(n))}function I(){h||(h=!0,Module.preloadedAudios[u]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var v=new Blob([n],{type:Browser.getMimetype(u)})}catch{return I()}var x=Browser.URLObject.createObjectURL(v),C=new Audio;C.addEventListener(\"canplaythrough\",function(){E(C)},!1),C.onerror=function(N){if(h)return;console.log(\"warning: browser could not fully decode audio \"+u+\", trying slower base64 approach\");function U(J){for(var te=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",ae=\"=\",fe=\"\",ce=0,me=0,he=0;he<J.length;he++)for(ce=ce<<8|J[he],me+=8;me>=6;){var Be=ce>>me-6&63;me-=6,fe+=te[Be]}return me==2?(fe+=te[(ce&3)<<4],fe+=ae+ae):me==4&&(fe+=te[(ce&15)<<2],fe+=ae),fe}C.src=\"data:audio/x-\"+u.substr(-3)+\";base64,\"+U(n),E(C)},C.src=x,Browser.safeSetTimeout(function(){E(C)},1e4)}else return I()},Module.preloadPlugins.push(e);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var o=Module.canvas;o&&(o.requestPointerLock=o.requestPointerLock||o.mozRequestPointerLock||o.webkitRequestPointerLock||o.msRequestPointerLock||function(){},o.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},o.exitPointerLock=o.exitPointerLock.bind(document),document.addEventListener(\"pointerlockchange\",r,!1),document.addEventListener(\"mozpointerlockchange\",r,!1),document.addEventListener(\"webkitpointerlockchange\",r,!1),document.addEventListener(\"mspointerlockchange\",r,!1),Module.elementPointerLock&&o.addEventListener(\"click\",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,o){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var u={antialias:!1,alpha:!1};if(o)for(var A in o)u[A]=o[A];n=GL.createContext(t,u),n&&(a=GL.getContext(n).GLctx)}else a=t.getContext(\"2d\");return a?(r&&(e||assert(typeof GLctx>\"u\",\"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\"),Module.ctx=a,e&&GL.makeContextCurrent(n),Module.useWebGL=e,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(t,e,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(t,e,r){Browser.lockPointer=t,Browser.resizeCanvas=e,Browser.vrDevice=r,typeof Browser.lockPointer>\"u\"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>\"u\"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>\"u\"&&(Browser.vrDevice=null);var o=Module.canvas;function a(){Browser.isFullscreen=!1;var u=o.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===u?(o.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},o.exitFullscreen=o.exitFullscreen.bind(document),Browser.lockPointer&&o.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(u.parentNode.insertBefore(o,u),u.parentNode.removeChild(u),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(o)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener(\"fullscreenchange\",a,!1),document.addEventListener(\"mozfullscreenchange\",a,!1),document.addEventListener(\"webkitfullscreenchange\",a,!1),document.addEventListener(\"MSFullscreenChange\",a,!1));var n=document.createElement(\"div\");o.parentNode.insertBefore(n,o),n.appendChild(o),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(t,e,r){return Module.printErr(\"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\"),Browser.requestFullScreen=function(o,a,n){return Browser.requestFullscreen(o,a,n)},Browser.requestFullscreen(t,e,r)},nextRAF:0,fakeRequestAnimationFrame:function(t){var e=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=e+1e3/60;else for(;e+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-e,0);setTimeout(t,r)},requestAnimationFrame:function t(e){typeof window>\"u\"?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(t){return function(){if(!ABORT)return t.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var t=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],t.forEach(function(e){e()})}},safeRequestAnimationFrame:function(t){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))})},safeSetTimeout:function(t,e){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))},e)},safeSetInterval:function(t,e){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&t()},e)},getMimetype:function(t){return{jpg:\"image/jpeg\",jpeg:\"image/jpeg\",png:\"image/png\",bmp:\"image/bmp\",ogg:\"audio/ogg\",wav:\"audio/wav\",mp3:\"audio/mpeg\"}[t.substr(t.lastIndexOf(\".\")+1)]},getUserMedia:function(t){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(t)},getMovementX:function(t){return t.movementX||t.mozMovementX||t.webkitMovementX||0},getMovementY:function(t){return t.movementY||t.mozMovementY||t.webkitMovementY||0},getMouseWheelDelta:function(t){var e=0;switch(t.type){case\"DOMMouseScroll\":e=t.detail;break;case\"mousewheel\":e=t.wheelDelta;break;case\"wheel\":e=t.deltaY;break;default:throw\"unrecognized mouse wheel event: \"+t.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(t){if(Browser.pointerLock)t.type!=\"mousemove\"&&\"mozMovementX\"in t?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(t),Browser.mouseMovementY=Browser.getMovementY(t)),typeof SDL<\"u\"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var e=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,o=Module.canvas.height,a=typeof window.scrollX<\"u\"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<\"u\"?window.scrollY:window.pageYOffset;if(t.type===\"touchstart\"||t.type===\"touchend\"||t.type===\"touchmove\"){var u=t.touch;if(u===void 0)return;var A=u.pageX-(a+e.left),p=u.pageY-(n+e.top);A=A*(r/e.width),p=p*(o/e.height);var h={x:A,y:p};if(t.type===\"touchstart\")Browser.lastTouches[u.identifier]=h,Browser.touches[u.identifier]=h;else if(t.type===\"touchend\"||t.type===\"touchmove\"){var E=Browser.touches[u.identifier];E||(E=h),Browser.lastTouches[u.identifier]=E,Browser.touches[u.identifier]=h}return}var I=t.pageX-(a+e.left),v=t.pageY-(n+e.top);I=I*(r/e.width),v=v*(o/e.height),Browser.mouseMovementX=I-Browser.mouseX,Browser.mouseMovementY=v-Browser.mouseY,Browser.mouseX=I,Browser.mouseY=v}},asyncLoad:function(t,e,r,o){var a=o?\"\":\"al \"+t;Module.readAsync(t,function(n){assert(n,'Loading data file \"'+t+'\" failed (no arrayBuffer).'),e(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file \"'+t+'\" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var t=Module.canvas;Browser.resizeListeners.forEach(function(e){e(t.width,t.height)})},setCanvasSize:function(t,e,r){var o=Module.canvas;Browser.updateCanvasDimensions(o,t,e),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<\"u\"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<\"u\"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},updateCanvasDimensions:function(t,e,r){e&&r?(t.widthNative=e,t.heightNative=r):(e=t.widthNative,r=t.heightNative);var o=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(o/a<Module.forcedAspectRatio?o=Math.round(a*Module.forcedAspectRatio):a=Math.round(o/Module.forcedAspectRatio)),(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===t.parentNode&&typeof screen<\"u\"){var n=Math.min(screen.width/o,screen.height/a);o=Math.round(o*n),a=Math.round(a*n)}Browser.resizeCanvas?(t.width!=o&&(t.width=o),t.height!=a&&(t.height=a),typeof t.style<\"u\"&&(t.style.removeProperty(\"width\"),t.style.removeProperty(\"height\"))):(t.width!=e&&(t.width=e),t.height!=r&&(t.height=r),typeof t.style<\"u\"&&(o!=e||a!=r?(t.style.setProperty(\"width\",o+\"px\",\"important\"),t.style.setProperty(\"height\",a+\"px\",\"important\")):(t.style.removeProperty(\"width\"),t.style.removeProperty(\"height\"))))},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var t=Browser.nextWgetRequestHandle;return Browser.nextWgetRequestHandle++,t}},SYSCALLS={varargs:0,get:function(t){SYSCALLS.varargs+=4;var e=HEAP32[SYSCALLS.varargs-4>>2];return e},getStr:function(){var t=Pointer_stringify(SYSCALLS.get());return t},get64:function(){var t=SYSCALLS.get(),e=SYSCALLS.get();return t>=0?assert(e===0):assert(e===-1),t},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(o){return(typeof FS>\"u\"||!(o instanceof FS.ErrnoError))&&abort(o),-o.errno}}function ___syscall54(t,e){SYSCALLS.varargs=e;try{return 0}catch(r){return(typeof FS>\"u\"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(t){var e=[[0,1,\"X\"],[1,1,\"const X\"],[128,1,\"X *\"],[256,1,\"X &\"],[384,1,\"X &&\"],[512,1,\"std::shared_ptr<X>\"],[640,1,\"std::unique_ptr<X>\"],[5120,1,\"std::vector<X>\"],[6144,2,\"std::array<X, Y>\"],[9216,-1,\"std::function<X (Y)>\"]];function r(p,h,E,I,v,x){if(h==1){var C=I&896;(C==128||C==256||C==384)&&(p=\"X const\")}var R;return x?R=E.replace(\"X\",p).replace(\"Y\",v):R=p.replace(\"X\",E).replace(\"Y\",v),R.replace(/([*&]) (?=[*&])/g,\"$1\")}function o(p,h,E,I,v){throw new Error(p+\" type \"+E.replace(\"X\",h+\"?\")+(I?\" with flag \"+I:\"\")+\" in \"+v)}function a(p,h,E,I,v,x,C,R){x===void 0&&(x=\"X\"),R===void 0&&(R=1);var N=E(p);if(N)return N;var U=I(p),J=U.placeholderFlag,te=e[J];C&&te&&(x=r(C[2],C[0],x,te[0],\"?\",!0));var ae;J==0&&(ae=\"Unbound\"),J>=10&&(ae=\"Corrupt\"),R>20&&(ae=\"Deeply nested\"),ae&&o(ae,p,x,J,v||\"?\");var fe=U.paramList[0],ce=a(fe,h,E,I,v,x,te,R+1),me,he={flags:te[0],id:p,name:\"\",paramList:[ce]},Be=[],we=\"?\";switch(U.placeholderFlag){case 1:me=ce.spec;break;case 2:if((ce.flags&15360)==1024&&ce.spec.ptrSize==1){he.flags=7168;break}case 3:case 6:case 5:me=ce.spec,ce.flags&15360;break;case 8:we=\"\"+U.paramList[1],he.paramList.push(U.paramList[1]);break;case 9:for(var g=0,Ee=U.paramList[1];g<Ee.length;g++){var Pe=Ee[g],le=a(Pe,h,E,I,v,x,te,R+1);Be.push(le.name),he.paramList.push(le)}we=Be.join(\", \");break;default:break}if(he.name=r(te[2],te[0],ce.name,ce.flags,we),me){for(var ne=0,ee=Object.keys(me);ne<ee.length;ne++){var Ie=ee[ne];he[Ie]=he[Ie]||me[Ie]}he.flags|=me.flags}return n(h,he)}function n(p,h){var E=h.flags,I=E&896,v=E&15360;return!h.name&&v==1024&&(h.ptrSize==1?h.name=(E&16?\"\":(E&8?\"un\":\"\")+\"signed \")+\"char\":h.name=(E&8?\"u\":\"\")+(E&32?\"float\":\"int\")+(h.ptrSize*8+\"_t\")),h.ptrSize==8&&!(E&32)&&(v=64),v==2048&&(I==512||I==640?v=4096:I&&(v=3072)),p(v,h)}var u=function(){function p(h){this.id=h.id,this.name=h.name,this.flags=h.flags,this.spec=h}return p.prototype.toString=function(){return this.name},p}(),A={Type:u,getComplexType:a,makeType:n,structureList:e};return t.output=A,t.output||A}function __nbind_register_type(t,e){var r=_nbind.readAsciiString(e),o={flags:10240,id:t,name:r};_nbind.makeType(_nbind.constructType,o)}function __nbind_register_callback_signature(t,e){var r=_nbind.readTypeIdList(t,e),o=_nbind.callbackSignatureList.length;return _nbind.callbackSignatureList[o]=_nbind.makeJSCaller(r),o}function __extends(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);function o(){this.constructor=t}o.prototype=e.prototype,t.prototype=new o}function __nbind_register_class(t,e,r,o,a,n,u){var A=_nbind.readAsciiString(u),p=_nbind.readPolicyList(e),h=HEAPU32.subarray(t/4,t/4+2),E={flags:2048|(p.Value?2:0),id:h[0],name:A},I=_nbind.makeType(_nbind.constructType,E);I.ptrType=_nbind.getComplexType(h[1],_nbind.constructType,_nbind.getType,_nbind.queryType),I.destroy=_nbind.makeMethodCaller(I.ptrType,{boundID:E.id,flags:0,name:\"destroy\",num:0,ptr:n,title:I.name+\".free\",typeList:[\"void\",\"uint32_t\",\"uint32_t\"]}),a&&(I.superIdList=Array.prototype.slice.call(HEAPU32.subarray(r/4,r/4+a)),I.upcastList=Array.prototype.slice.call(HEAPU32.subarray(o/4,o/4+a))),Module[I.name]=I.makeBound(p),_nbind.BindClass.list.push(I)}function _removeAccessorPrefix(t){var e=/^[Gg]et_?([A-Z]?([A-Z]?))/;return t.replace(e,function(r,o,a){return a?o:o.toLowerCase()})}function __nbind_register_function(t,e,r,o,a,n,u,A,p,h){var E=_nbind.getType(t),I=_nbind.readPolicyList(e),v=_nbind.readTypeIdList(r,o),x;if(u==5)x=[{direct:a,name:\"__nbindConstructor\",ptr:0,title:E.name+\" constructor\",typeList:[\"uint32_t\"].concat(v.slice(1))},{direct:n,name:\"__nbindValueConstructor\",ptr:0,title:E.name+\" value constructor\",typeList:[\"void\",\"uint32_t\"].concat(v.slice(1))}];else{var C=_nbind.readAsciiString(A),R=(E.name&&E.name+\".\")+C;(u==3||u==4)&&(C=_removeAccessorPrefix(C)),x=[{boundID:t,direct:n,name:C,ptr:a,title:R,typeList:v}]}for(var N=0,U=x;N<U.length;N++){var J=U[N];J.signatureType=u,J.policyTbl=I,J.num=p,J.flags=h,E.addMethod(J)}}function _nbind_value(t,e){_nbind.typeNameTbl[t]||_nbind.throwError(\"Unknown value type \"+t),Module.NBind.bind_value(t,e),_defineHidden(_nbind.typeNameTbl[t].proto.prototype.__nbindValueConstructor)(e.prototype,\"__nbindValueConstructor\")}Module._nbind_value=_nbind_value;function __nbind_get_value_object(t,e){var r=_nbind.popValue(t);if(!r.fromJS)throw new Error(\"Object \"+r+\" has no fromJS function\");r.fromJS(function(){r.__nbindValueConstructor.apply(this,Array.prototype.concat.apply([e],arguments))})}function _emscripten_memcpy_big(t,e,r){return HEAPU8.set(HEAPU8.subarray(e,e+r),t),t}function __nbind_register_primitive(t,e,r){var o={flags:1024|r,id:t,ptrSize:e};_nbind.makeType(_nbind.constructType,o)}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);function ___setErrNo(t){return Module.___errno_location&&(HEAP32[Module.___errno_location()>>2]=t),t}function _llvm_stacksave(){var t=_llvm_stacksave;return t.LLVM_SAVEDSTACKS||(t.LLVM_SAVEDSTACKS=[]),t.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),t.LLVM_SAVEDSTACKS.length-1}function ___syscall140(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),u=SYSCALLS.get(),A=a;return FS.llseek(r,A,u),HEAP32[n>>2]=r.position,r.getdents&&A===0&&u===0&&(r.getdents=null),0}catch(p){return(typeof FS>\"u\"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.get(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,I){var v=___syscall146.buffers[E];assert(v),I===0||I===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(v,0)),v.length=0):v.push(I)});for(var u=0;u<a;u++){for(var A=HEAP32[o+u*8>>2],p=HEAP32[o+(u*8+4)>>2],h=0;h<p;h++)___syscall146.printChar(r,HEAPU8[A+h]);n+=p}return n}catch(E){return(typeof FS>\"u\"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var t=0,e=_nbind.BindClass.list;t<e.length;t++){var r=e[t];r.finish()}}var ___dso_handle=STATICTOP;STATICTOP+=16,function(_nbind){var typeIdTbl={};_nbind.typeNameTbl={};var Pool=function(){function t(){}return t.lalloc=function(e){e=e+7&-8;var r=HEAPU32[t.usedPtr];if(e>t.pageSize/2||e>t.pageSize-r){var o=_nbind.typeNameTbl.NBind.proto;return o.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var o=HEAPU32[t.pagePtr];if(o){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(e,r)}else HEAPU32[t.usedPtr]=e},t}();_nbind.Pool=Pool;function constructType(t,e){var r=t==10240?_nbind.makeTypeNameTbl[e.name]||_nbind.BindType:_nbind.makeTypeKindTbl[t],o=new r(e);return typeIdTbl[e.id]=o,_nbind.typeNameTbl[e.name]=o,o}_nbind.constructType=constructType;function getType(t){return typeIdTbl[t]}_nbind.getType=getType;function queryType(t){var e=HEAPU8[t],r=_nbind.structureList[e][1];t/=4,r<0&&(++t,r=HEAPU32[t]+1);var o=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(o=[o[0],o.slice(1)]),{paramList:o,placeholderFlag:e}}_nbind.queryType=queryType;function getTypes(t,e){return t.map(function(r){return typeof r==\"number\"?_nbind.getComplexType(r,constructType,getType,queryType,e):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(t,e){return Array.prototype.slice.call(HEAPU32,t/4,t/4+e)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(t){for(var e=t;HEAPU8[e++];);return String.fromCharCode.apply(\"\",HEAPU8.subarray(t,e-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(t){var e={};if(t)for(;;){var r=HEAPU32[t/4];if(!r)break;e[readAsciiString(r)]=!0,t+=4}return e}_nbind.readPolicyList=readPolicyList;function getDynCall(t,e){var r={float32_t:\"d\",float64_t:\"d\",int64_t:\"d\",uint64_t:\"d\",void:\"v\"},o=t.map(function(n){return r[n.name]||\"i\"}).join(\"\"),a=Module[\"dynCall_\"+o];if(!a)throw new Error(\"dynCall_\"+o+\" not found for \"+e+\"(\"+t.map(function(n){return n.name}).join(\", \")+\")\");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,o){var a=t[e];t.hasOwnProperty(e)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),t[e]=a),a.addMethod(r,o)):(r.arity=o,t[e]=r)}_nbind.addMethod=addMethod;function throwError(t){throw new Error(t)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return e.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},e.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},e}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return o.heap=a[r.ptrSize*8],o.ptrSize=r.ptrSize,o}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a==\"number\")return a;throw new Error(\"Type mismatch\")}},e}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(t,e){if(t==null){if(e&&e.Nullable)return 0;throw new Error(\"Type mismatch\")}if(e&&e.Strict){if(typeof t!=\"string\")throw new Error(\"Type mismatch\")}else t=t.toString();var r=Module.lengthBytesUTF8(t)+1,o=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,o,r),o}_nbind.pushCString=pushCString;function popCString(t){return t===0?null:Module.Pointer_stringify(t)}_nbind.popCString=popCString;var CStringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushCString(a,o)}},e}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=function(o){return!!o},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return\"!!(\"+r+\")\"},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a==\"boolean\")return a;throw new Error(\"Type mismatch\")}||r},e}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function t(){}return t.prototype.persist=function(){this.__nbindState|=1},t}();_nbind.Wrapper=Wrapper;function makeBound(t,e){var r=function(o){__extends(a,o);function a(n,u,A,p){var h=o.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=u,I=A,v=p;if(n!==_nbind.ptrMarker){var x=h.__nbindConstructor.apply(h,arguments);E=4608,v=HEAPU32[x/4],I=HEAPU32[x/4+1]}var C={configurable:!0,enumerable:!1,value:null,writable:!1},R={__nbindFlags:E,__nbindPtr:I};v&&(R.__nbindShared=v,_nbind.mark(h));for(var N=0,U=Object.keys(R);N<U.length;N++){var J=U[N];C.value=R[J],Object.defineProperty(h,J,C)}return _defineHidden(0)(h,\"__nbindState\"),h}return a.prototype.free=function(){e.destroy.call(this,this.__nbindShared,this.__nbindFlags),this.__nbindState|=2,disableMember(this,\"__nbindShared\"),disableMember(this,\"__nbindPtr\")},a}(Wrapper);return __decorate([_defineHidden()],r.prototype,\"__nbindConstructor\",void 0),__decorate([_defineHidden()],r.prototype,\"__nbindValueConstructor\",void 0),__decorate([_defineHidden(t)],r.prototype,\"__nbindPolicies\",void 0),r}_nbind.makeBound=makeBound;function disableMember(t,e){function r(){throw new Error(\"Accessing deleted object\")}Object.defineProperty(t,e,{configurable:!1,enumerable:!1,get:r,set:r})}_nbind.ptrMarker={};var BindClass=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;return o.wireRead=function(a){return _nbind.popValue(a,o.ptrType)},o.wireWrite=function(a){return pushPointer(a,o.ptrType,!0)},o.pendingSuperCount=0,o.ready=!1,o.methodTbl={},r.paramList?(o.classType=r.paramList[0].classType,o.proto=o.classType.proto):o.classType=o,o}return e.prototype.makeBound=function(r){var o=_nbind.makeBound(r,this);return this.proto=o,this.ptrType.proto=o,o},e.prototype.addMethod=function(r){var o=this.methodTbl[r.name]||[];o.push(r),this.methodTbl[r.name]=o},e.prototype.registerMethods=function(r,o){for(var a,n=0,u=Object.keys(r.methodTbl);n<u.length;n++)for(var A=u[n],p=r.methodTbl[A],h=0,E=p;h<E.length;h++){var I=E[h],v=void 0,x=void 0;if(v=this.proto.prototype,!(o&&I.signatureType!=1))switch(I.signatureType){case 1:v=this.proto;case 5:x=_nbind.makeCaller(I),_nbind.addMethod(v,I.name,x,I.typeList.length-1);break;case 4:a=_nbind.makeMethodCaller(r.ptrType,I);break;case 3:Object.defineProperty(v,I.name,{configurable:!0,enumerable:!1,get:_nbind.makeMethodCaller(r.ptrType,I),set:a});break;case 2:x=_nbind.makeMethodCaller(r.ptrType,I),_nbind.addMethod(v,I.name,x,I.typeList.length-1);break;default:break}}},e.prototype.registerSuperMethods=function(r,o,a){if(!a[r.name]){a[r.name]=!0;for(var n=0,u,A=0,p=r.superIdList||[];A<p.length;A++){var h=p[A],E=_nbind.getType(h);n++<o||o<0?u=-1:u=0,this.registerSuperMethods(E,u,a)}this.registerMethods(r,o<0)}},e.prototype.finish=function(){if(this.ready)return this;this.ready=!0,this.superList=(this.superIdList||[]).map(function(a){return _nbind.getType(a).finish()});var r=this.proto;if(this.superList.length){var o=function(){this.constructor=r};o.prototype=this.superList[0].proto.prototype,r.prototype=new o}return r!=Module&&(r.prototype.__nbindType=this),this.registerSuperMethods(this,1,{}),this},e.prototype.upcastStep=function(r,o){if(r==this)return o;for(var a=0;a<this.superList.length;++a){var n=this.superList[a].upcastStep(r,_nbind.callUpcast(this.upcastList[a],o));if(n)return n}return 0},e}(_nbind.BindType);BindClass.list=[],_nbind.BindClass=BindClass;function popPointer(t,e){return t?new e.proto(_nbind.ptrMarker,e.flags,t):null}_nbind.popPointer=popPointer;function pushPointer(t,e,r){if(!(t instanceof _nbind.Wrapper)){if(r)return _nbind.pushValue(t);throw new Error(\"Type mismatch\")}var o=t.__nbindPtr,a=t.__nbindType.classType,n=e.classType;if(t instanceof e.proto)for(;a!=n;)o=_nbind.callUpcast(a.upcastList[0],o),a=a.superList[0];else if(o=a.upcastStep(n,o),!o)throw new Error(\"Type mismatch\");return o}_nbind.pushPointer=pushPointer;function pushMutablePointer(t,e){var r=pushPointer(t,e);if(t.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return r}var BindClassPtr=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=(o.flags&896)==256&&r.flags&2,u=a?pushPointer:pushMutablePointer,A=n?_nbind.popValue:popPointer;return o.makeWireWrite=function(p,h){return h.Nullable?function(E){return E?u(E,o):0}:function(E){return u(E,o)}},o.wireRead=function(p){return A(p,o)},o.wireWrite=function(p){return u(p,o)},o}return e}(_nbind.BindType);_nbind.BindClassPtr=BindClassPtr;function popShared(t,e){var r=HEAPU32[t/4],o=HEAPU32[t/4+1];return o?new e.proto(_nbind.ptrMarker,e.flags,o,r):null}_nbind.popShared=popShared;function pushShared(t,e){if(!(t instanceof e.proto))throw new Error(\"Type mismatch\");return t.__nbindShared}function pushMutableShared(t,e){if(!(t instanceof e.proto))throw new Error(\"Type mismatch\");if(t.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return t.__nbindShared}var SharedClassPtr=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;o.readResources=[_nbind.resources.pool],o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=a?pushShared:pushMutableShared;return o.wireRead=function(u){return popShared(u,o)},o.wireWrite=function(u){return n(u,o)},o}return e}(_nbind.BindType);_nbind.SharedClassPtr=SharedClassPtr,_nbind.externalList=[0];var firstFreeExternal=0,External=function(){function t(e){this.refCount=1,this.data=e}return t.prototype.register=function(){var e=firstFreeExternal;return e?firstFreeExternal=_nbind.externalList[e]:e=_nbind.externalList.length,_nbind.externalList[e]=this,e},t.prototype.reference=function(){++this.refCount},t.prototype.dereference=function(e){--this.refCount==0&&(this.free&&this.free(),_nbind.externalList[e]=firstFreeExternal,firstFreeExternal=e)},t}();_nbind.External=External;function popExternal(t){var e=_nbind.externalList[t];return e.dereference(t),e.data}function pushExternal(t){var e=new External(t);return e.reference(),e.register()}var ExternalType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popExternal,r.wireWrite=pushExternal,r}return e}(_nbind.BindType);_nbind.ExternalType=ExternalType,_nbind.callbackSignatureList=[];var CallbackType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=function(o){return typeof o!=\"function\"&&_nbind.throwError(\"Type mismatch\"),new _nbind.External(o).register()},r}return e}(_nbind.BindType);_nbind.CallbackType=CallbackType,_nbind.valueList=[0];var firstFreeValue=0;function pushValue(t){var e=firstFreeValue;return e?firstFreeValue=_nbind.valueList[e]:e=_nbind.valueList.length,_nbind.valueList[e]=t,e*2+1}_nbind.pushValue=pushValue;function popValue(t,e){if(t||_nbind.throwError(\"Value type JavaScript class is missing or not registered\"),t&1){t>>=1;var r=_nbind.valueList[t];return _nbind.valueList[t]=firstFreeValue,firstFreeValue=t,r}else{if(e)return _nbind.popShared(t,e);throw new Error(\"Invalid value slot \"+t)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(t){return typeof t==\"number\"?t:pushValue(t)*4096+valueBase}function pop64(t){return t<valueBase?t:popValue((t-valueBase)/4096)}var CreateValueType=function(t){__extends(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.makeWireWrite=function(r){return\"(_nbind.pushValue(new \"+r+\"))\"},e}(_nbind.BindType);_nbind.CreateValueType=CreateValueType;var Int64Type=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=push64,r.wireRead=pop64,r}return e}(_nbind.BindType);_nbind.Int64Type=Int64Type;function pushArray(t,e){if(!t)return 0;var r=t.length;if((e.size||e.size===0)&&r<e.size)throw new Error(\"Type mismatch\");var o=e.memberType.ptrSize,a=_nbind.Pool.lalloc(4+r*o);HEAPU32[a/4]=r;var n=e.memberType.heap,u=(a+4)/o,A=e.memberType.wireWrite,p=0;if(A)for(;p<r;)n[u++]=A(t[p++]);else for(;p<r;)n[u++]=t[p++];return a}_nbind.pushArray=pushArray;function popArray(t,e){if(t===0)return null;var r=HEAPU32[t/4],o=new Array(r),a=e.memberType.heap;t=(t+4)/e.memberType.ptrSize;var n=e.memberType.wireRead,u=0;if(n)for(;u<r;)o[u++]=n(a[t++]);else for(;u<r;)o[u++]=a[t++];return o}_nbind.popArray=popArray;var ArrayType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;return o.wireRead=function(a){return popArray(a,o)},o.wireWrite=function(a){return pushArray(a,o)},o.readResources=[_nbind.resources.pool],o.writeResources=[_nbind.resources.pool],o.memberType=r.paramList[0],r.paramList[1]&&(o.size=r.paramList[1]),o}return e}(_nbind.BindType);_nbind.ArrayType=ArrayType;function pushString(t,e){if(t==null)if(e&&e.Nullable)t=\"\";else throw new Error(\"Type mismatch\");if(e&&e.Strict){if(typeof t!=\"string\")throw new Error(\"Type mismatch\")}else t=t.toString();var r=Module.lengthBytesUTF8(t),o=_nbind.Pool.lalloc(4+r+1);return HEAPU32[o/4]=r,Module.stringToUTF8Array(t,HEAPU8,o+4,r+1),o}_nbind.pushString=pushString;function popString(t){if(t===0)return null;var e=HEAPU32[t/4];return Module.Pointer_stringify(t+4,e)}_nbind.popString=popString;var StringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popString,r.wireWrite=pushString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushString(a,o)}},e}(_nbind.BindType);_nbind.StringType=StringType;function makeArgList(t){return Array.apply(null,Array(t)).map(function(e,r){return\"a\"+(r+1)})}function anyNeedsWireWrite(t,e){return t.reduce(function(r,o){return r||o.needsWireWrite(e)},!1)}function anyNeedsWireRead(t,e){return t.reduce(function(r,o){return r||!!o.needsWireRead(e)},!1)}function makeWireRead(t,e,r,o){var a=t.length;return r.makeWireRead?r.makeWireRead(o,t,a):r.wireRead?(t[a]=r.wireRead,\"(convertParamList[\"+a+\"](\"+o+\"))\"):o}function makeWireWrite(t,e,r,o){var a,n=t.length;return r.makeWireWrite?a=r.makeWireWrite(o,e,t,n):a=r.wireWrite,a?typeof a==\"string\"?a:(t[n]=a,\"(convertParamList[\"+n+\"](\"+o+\"))\"):o}function buildCallerFunction(dynCall,ptrType,ptr,num,policyTbl,needsWireWrite,prefix,returnType,argTypeList,mask,err){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireRead(convertParamList,policyTbl,returnType,\"dynCall(\"+[prefix].concat(argList.map(function(t,e){return makeWireWrite(convertParamList,policyTbl,argTypeList[e],t)})).join(\",\")+\")\"),resourceSet=_nbind.listResources([returnType],argTypeList),sourceCode=\"function(\"+argList.join(\",\")+\"){\"+(mask?\"this.__nbindFlags&mask&&err();\":\"\")+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}function buildJSCallerFunction(returnType,argTypeList){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireWrite(convertParamList,null,returnType,\"_nbind.externalList[num].data(\"+argList.map(function(t,e){return makeWireRead(convertParamList,null,argTypeList[e],t)}).join(\",\")+\")\"),resourceSet=_nbind.listResources(argTypeList,[returnType]);resourceSet.remove(_nbind.resources.pool);var sourceCode=\"function(\"+[\"dummy\",\"num\"].concat(argList).join(\",\")+\"){\"+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}_nbind.buildJSCallerFunction=buildJSCallerFunction;function makeJSCaller(t){var e=t.length-1,r=_nbind.getTypes(t,\"callback\"),o=r[0],a=r.slice(1),n=anyNeedsWireRead(a,null),u=o.needsWireWrite(null);if(!u&&!n)switch(e){case 0:return function(A,p){return _nbind.externalList[p].data()};case 1:return function(A,p,h){return _nbind.externalList[p].data(h)};case 2:return function(A,p,h,E){return _nbind.externalList[p].data(h,E)};case 3:return function(A,p,h,E,I){return _nbind.externalList[p].data(h,E,I)};default:break}return buildJSCallerFunction(o,a)}_nbind.makeJSCaller=makeJSCaller;function makeMethodCaller(t,e){var r=e.typeList.length-1,o=e.typeList.slice(0);o.splice(1,0,\"uint32_t\",e.boundID);var a=_nbind.getTypes(o,e.title),n=a[0],u=a.slice(3),A=n.needsWireRead(e.policyTbl),p=anyNeedsWireWrite(u,e.policyTbl),h=e.ptr,E=e.num,I=_nbind.getDynCall(a,e.title),v=~e.flags&1;function x(){throw new Error(\"Calling a non-const method on a const object\")}if(!A&&!p)switch(r){case 0:return function(){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t))};case 1:return function(C){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t),C)};case 2:return function(C,R){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t),C,R)};case 3:return function(C,R,N){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t),C,R,N)};default:break}return buildCallerFunction(I,t,h,E,e.policyTbl,p,\"ptr,num,pushPointer(this,ptrType)\",n,u,v,x)}_nbind.makeMethodCaller=makeMethodCaller;function makeCaller(t){var e=t.typeList.length-1,r=_nbind.getTypes(t.typeList,t.title),o=r[0],a=r.slice(1),n=o.needsWireRead(t.policyTbl),u=anyNeedsWireWrite(a,t.policyTbl),A=t.direct,p=t.ptr;if(t.direct&&!n&&!u){var h=_nbind.getDynCall(r,t.title);switch(e){case 0:return function(){return h(A)};case 1:return function(x){return h(A,x)};case 2:return function(x,C){return h(A,x,C)};case 3:return function(x,C,R){return h(A,x,C,R)};default:break}p=0}var E;if(p){var I=t.typeList.slice(0);I.splice(1,0,\"uint32_t\"),r=_nbind.getTypes(I,t.title),E=\"ptr,num\"}else p=A,E=\"ptr\";var v=_nbind.getDynCall(r,t.title);return buildCallerFunction(v,null,p,t.num,t.policyTbl,u,E,o,a)}_nbind.makeCaller=makeCaller;function makeOverloader(t,e){var r=[];function o(){return r[arguments.length].apply(this,arguments)}return o.addMethod=function(a,n){r[n]=a},o.addMethod(t,e),o}_nbind.makeOverloader=makeOverloader;var Resource=function(){function t(e,r){var o=this;this.makeOpen=function(){return Object.keys(o.openTbl).join(\"\")},this.makeClose=function(){return Object.keys(o.closeTbl).join(\"\")},this.openTbl={},this.closeTbl={},e&&(this.openTbl[e]=!0),r&&(this.closeTbl[r]=!0)}return t.prototype.add=function(e){for(var r=0,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];this.openTbl[a]=!0}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];this.closeTbl[a]=!0}},t.prototype.remove=function(e){for(var r=0,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];delete this.openTbl[a]}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];delete this.closeTbl[a]}},t}();_nbind.Resource=Resource;function listResources(t,e){for(var r=new Resource,o=0,a=t;o<a.length;o++)for(var n=a[o],u=0,A=n.readResources||[];u<A.length;u++){var p=A[u];r.add(p)}for(var h=0,E=e;h<E.length;h++)for(var n=E[h],I=0,v=n.writeResources||[];I<v.length;I++){var p=v[I];r.add(p)}return r}_nbind.listResources=listResources,_nbind.resources={pool:new Resource(\"var used=HEAPU32[_nbind.Pool.usedPtr],page=HEAPU32[_nbind.Pool.pagePtr];\",\"_nbind.Pool.lreset(used,page);\")};var ExternalBuffer=function(t){__extends(e,t);function e(r,o){var a=t.call(this,r)||this;return a.ptr=o,a}return e.prototype.free=function(){_free(this.ptr)},e}(_nbind.External);function getBuffer(t){return t instanceof ArrayBuffer?new Uint8Array(t):t instanceof DataView?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function pushBuffer(t,e){if(t==null&&e&&e.Nullable&&(t=[]),typeof t!=\"object\")throw new Error(\"Type mismatch\");var r=t,o=r.byteLength||r.length;if(!o&&o!==0&&r.byteLength!==0)throw new Error(\"Type mismatch\");var a=_nbind.Pool.lalloc(8),n=_malloc(o),u=a/4;return HEAPU32[u++]=o,HEAPU32[u++]=n,HEAPU32[u++]=new ExternalBuffer(t,n).register(),HEAPU8.set(getBuffer(t),n),a}var BufferType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=pushBuffer,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushBuffer(a,o)}},e}(_nbind.BindType);_nbind.BufferType=BufferType;function commitBuffer(t,e,r){var o=_nbind.externalList[t].data,a=Buffer;if(typeof Buffer!=\"function\"&&(a=function(){}),!(o instanceof Array)){var n=HEAPU8.subarray(e,e+r);if(o instanceof a){var u=void 0;typeof Buffer.from==\"function\"&&Buffer.from.length>=3?u=Buffer.from(n):u=new Buffer(n),u.copy(o)}else getBuffer(o).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var t=0,e=dirtyList;t<e.length;t++){var r=e[t];r.__nbindState&3||r.free()}dirtyList=[],gcTimer=0}_nbind.mark=function(t){};function toggleLightGC(t){t?_nbind.mark=function(e){dirtyList.push(e),gcTimer||(gcTimer=setTimeout(sweep,0))}:_nbind.mark=function(e){}}_nbind.toggleLightGC=toggleLightGC}(_nbind),Module.requestFullScreen=function t(e,r,o){Module.printErr(\"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\"),Module.requestFullScreen=Module.requestFullscreen,Browser.requestFullScreen(e,r,o)},Module.requestFullscreen=function t(e,r,o){Browser.requestFullscreen(e,r,o)},Module.requestAnimationFrame=function t(e){Browser.requestAnimationFrame(e)},Module.setCanvasSize=function t(e,r,o){Browser.setCanvasSize(e,r,o)},Module.pauseMainLoop=function t(){Browser.mainLoop.pause()},Module.resumeMainLoop=function t(){Browser.mainLoop.resume()},Module.getUserMedia=function t(){Browser.getUserMedia()},Module.createContext=function t(e,r,o,a){return Browser.createContext(e,r,o,a)},ENVIRONMENT_IS_NODE?_emscripten_get_now=function(){var e=process.hrtime();return e[0]*1e3+e[1]/1e6}:typeof dateNow<\"u\"?_emscripten_get_now=dateNow:typeof self==\"object\"&&self.performance&&typeof self.performance.now==\"function\"?_emscripten_get_now=function(){return self.performance.now()}:typeof performance==\"object\"&&typeof performance.now==\"function\"?_emscripten_get_now=function(){return performance.now()}:_emscripten_get_now=Date.now,__ATEXIT__.push(function(){var t=Module._fflush;t&&t(0);var e=___syscall146.printChar;if(!!e){var r=___syscall146.buffers;r[1].length&&e(1,10),r[2].length&&e(2,10)}}),DYNAMICTOP_PTR=allocate(1,\"i32\",ALLOC_STATIC),STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(t,e,r,o,a,n){try{Module.dynCall_viiiii(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,o){try{return Module.dynCall_fiff(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_vi(t,e){try{Module.dynCall_vi(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_vii(t,e,r){try{Module.dynCall_vii(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_ii(t,e){try{return Module.dynCall_ii(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_viddi(t,e,r,o,a){try{Module.dynCall_viddi(t,e,r,o,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,o){try{Module.dynCall_vidd(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,o){try{return Module.dynCall_iiii(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,o){try{return Module.dynCall_diii(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_di(t,e){try{return Module.dynCall_di(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_iid(t,e,r){try{return Module.dynCall_iid(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,o,a,n){try{Module.dynCall_viiddi(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,o,a,n,u){try{Module.dynCall_viiiiii(t,e,r,o,a,n,u)}catch(A){if(typeof A!=\"number\"&&A!==\"longjmp\")throw A;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_i(t){try{return Module.dynCall_i(t)}catch(e){if(typeof e!=\"number\"&&e!==\"longjmp\")throw e;Module.setThrew(1,0)}}function invoke_iiiiii(t,e,r,o,a,n){try{return Module.dynCall_iiiiii(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,o,a){try{Module.dynCall_viiid(t,e,r,o,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,o,a,n,u){try{Module.dynCall_viififi(t,e,r,o,a,n,u)}catch(A){if(typeof A!=\"number\"&&A!==\"longjmp\")throw A;Module.setThrew(1,0)}}function invoke_viii(t,e,r,o){try{Module.dynCall_viii(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_v(t){try{Module.dynCall_v(t)}catch(e){if(typeof e!=\"number\"&&e!==\"longjmp\")throw e;Module.setThrew(1,0)}}function invoke_viid(t,e,r,o){try{Module.dynCall_viid(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_idd(t,e,r){try{return Module.dynCall_idd(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,o,a){try{Module.dynCall_viiii(t,e,r,o,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(t,e,r){var o=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),u=new t.Uint8Array(r),A=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),E=new t.Float64Array(r),I=e.DYNAMICTOP_PTR|0,v=e.tempDoublePtr|0,x=e.ABORT|0,C=e.STACKTOP|0,R=e.STACK_MAX|0,N=e.cttz_i8|0,U=e.___dso_handle|0,J=0,te=0,ae=0,fe=0,ce=t.NaN,me=t.Infinity,he=0,Be=0,we=0,g=0,Ee=0,Pe=0,le=t.Math.floor,ne=t.Math.abs,ee=t.Math.sqrt,Ie=t.Math.pow,Fe=t.Math.cos,At=t.Math.sin,H=t.Math.tan,at=t.Math.acos,Re=t.Math.asin,ke=t.Math.atan,xe=t.Math.atan2,He=t.Math.exp,Te=t.Math.log,Je=t.Math.ceil,je=t.Math.imul,b=t.Math.min,w=t.Math.max,S=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,X=e.enlargeMemory,Z=e.getTotalMemory,ie=e.abortOnCannotGrowMemory,be=e.invoke_viiiii,Le=e.invoke_vif,ot=e.invoke_vid,dt=e.invoke_fiff,qt=e.invoke_vi,$t=e.invoke_vii,bt=e.invoke_ii,an=e.invoke_viddi,Qr=e.invoke_vidd,mr=e.invoke_iiii,br=e.invoke_diii,Wr=e.invoke_di,Kn=e.invoke_iid,Ls=e.invoke_iii,Ti=e.invoke_viiddi,ps=e.invoke_viiiiii,io=e.invoke_dii,Si=e.invoke_i,Ns=e.invoke_iiiiii,so=e.invoke_viiid,cc=e.invoke_viififi,cu=e.invoke_viii,lp=e.invoke_v,cp=e.invoke_viid,Os=e.invoke_idd,Dn=e.invoke_viiii,oo=e._emscripten_asm_const_iiiii,Ms=e._emscripten_asm_const_iiidddddd,ml=e._emscripten_asm_const_iiiid,yl=e.__nbind_reference_external,ao=e._emscripten_asm_const_iiiiiiii,Vn=e._removeAccessorPrefix,On=e._typeModule,Li=e.__nbind_register_pool,Mn=e.__decorate,_i=e._llvm_stackrestore,tr=e.___cxa_atexit,Oe=e.__extends,ii=e.__nbind_get_value_object,Ma=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,hr=e._emscripten_set_main_loop_timing,uc=e.__nbind_register_primitive,uu=e.__nbind_register_type,Ac=e._emscripten_memcpy_big,El=e.__nbind_register_function,DA=e.___setErrNo,Au=e.__nbind_register_class,Ce=e.__nbind_finish,Rt=e._abort,fc=e._nbind_value,Hi=e._llvm_stacksave,fu=e.___syscall54,Yt=e._defineHidden,Cl=e._emscripten_set_main_loop,PA=e._emscripten_get_now,up=e.__nbind_register_callback_signature,pc=e._emscripten_asm_const_iiiiii,SA=e.__nbind_free_external,Qn=e._emscripten_asm_const_iiii,hi=e._emscripten_asm_const_iiididi,hc=e.___syscall6,bA=e._atexit,sa=e.___syscall140,Ni=e.___syscall146,_o=y(0);let Ze=y(0);function lo(s){s=s|0;var l=0;return l=C,C=C+s|0,C=C+15&-16,l|0}function gc(){return C|0}function pu(s){s=s|0,C=s}function ji(s,l){s=s|0,l=l|0,C=s,R=l}function hu(s,l){s=s|0,l=l|0,J||(J=s,te=l)}function xA(s){s=s|0,Pe=s}function Ua(){return Pe|0}function dc(){var s=0,l=0;Dr(8104,8,400)|0,Dr(8504,408,540)|0,s=9044,l=s+44|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));o[9088]=0,o[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,tr(17,8104,U|0)|0}function hs(s){s=s|0,pt(s+948|0)}function Ht(s){return s=y(s),((Du(s)|0)&2147483647)>>>0>2139095040|0}function Fn(s,l,c){s=s|0,l=l|0,c=c|0;e:do if(n[s+(l<<3)+4>>2]|0)s=s+(l<<3)|0;else{if((l|2|0)==3&&n[s+60>>2]|0){s=s+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[s+52>>2]|0){s=s+48|0;break e}break}default:}if(n[s+68>>2]|0){s=s+64|0;break}else{s=(l|1|0)==5?948:c;break}}while(0);return s|0}function Ci(s){s=s|0;var l=0;return l=pD(1e3)|0,oa(s,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Dr(l|0,8104,1e3)|0,o[s+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=s,l|0}function oa(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=C,C=C+16|0,f=d,l||(n[f>>2]=c,Eg(s,5,3197,f)),C=d}function co(){return Ci(956)|0}function Us(s){s=s|0;var l=0;return l=Kt(1e3)|0,aa(l,s),oa(n[s+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function aa(s,l){s=s|0,l=l|0;var c=0;Dr(s|0,l|0,948)|0,Rm(s+948|0,l+948|0),c=s+960|0,s=l+960|0,l=c+40|0;do n[c>>2]=n[s>>2],c=c+4|0,s=s+4|0;while((c|0)<(l|0))}function la(s){s=s|0;var l=0,c=0,f=0,d=0;if(l=s+944|0,c=n[l>>2]|0,c|0&&(Ho(c+948|0,s)|0,n[l>>2]=0),c=wi(s)|0,c|0){l=0;do n[(gs(s,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(c|0))}c=s+948|0,f=n[c>>2]|0,d=s+952|0,l=n[d>>2]|0,(l|0)!=(f|0)&&(n[d>>2]=l+(~((l+-4-f|0)>>>2)<<2)),ds(c),hD(s),n[2276]=(n[2276]|0)+-1}function Ho(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0;f=n[s>>2]|0,k=s+4|0,c=n[k>>2]|0,m=c;e:do if((f|0)==(c|0))d=f,B=4;else for(s=f;;){if((n[s>>2]|0)==(l|0)){d=s,B=4;break e}if(s=s+4|0,(s|0)==(c|0)){s=0;break}}while(0);return(B|0)==4&&((d|0)!=(c|0)?(f=d+4|0,s=m-f|0,l=s>>2,l&&(Mw(d|0,f|0,s|0)|0,c=n[k>>2]|0),s=d+(l<<2)|0,(c|0)==(s|0)||(n[k>>2]=c+(~((c+-4-s|0)>>>2)<<2)),s=1):s=0),s|0}function wi(s){return s=s|0,(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2|0}function gs(s,l){s=s|0,l=l|0;var c=0;return c=n[s+948>>2]|0,(n[s+952>>2]|0)-c>>2>>>0>l>>>0?s=n[c+(l<<2)>>2]|0:s=0,s|0}function ds(s){s=s|0;var l=0,c=0,f=0,d=0;f=C,C=C+32|0,l=f,d=n[s>>2]|0,c=(n[s+4>>2]|0)-d|0,((n[s+8>>2]|0)-d|0)>>>0>c>>>0&&(d=c>>2,Ip(l,d,d,s+8|0),Bg(s,l),_A(l)),C=f}function ms(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;M=wi(s)|0;do if(M|0){if((n[(gs(s,0)|0)+944>>2]|0)==(s|0)){if(!(Ho(s+948|0,l)|0))break;Dr(l+400|0,8504,540)|0,n[l+944>>2]=0,Ne(s);break}B=n[(n[s+976>>2]|0)+12>>2]|0,k=s+948|0,Q=(B|0)==0,c=0,m=0;do f=n[(n[k>>2]|0)+(m<<2)>>2]|0,(f|0)==(l|0)?Ne(s):(d=Us(f)|0,n[(n[k>>2]|0)+(c<<2)>>2]=d,n[d+944>>2]=s,Q||TR[B&15](f,d,s,c),c=c+1|0),m=m+1|0;while((m|0)!=(M|0));if(c>>>0<M>>>0){Q=s+948|0,k=s+952|0,B=c,c=n[k>>2]|0;do m=(n[Q>>2]|0)+(B<<2)|0,f=m+4|0,d=c-f|0,l=d>>2,l&&(Mw(m|0,f|0,d|0)|0,c=n[k>>2]|0),d=c,f=m+(l<<2)|0,(d|0)!=(f|0)&&(c=d+(~((d+-4-f|0)>>>2)<<2)|0,n[k>>2]=c),B=B+1|0;while((B|0)!=(M|0))}}while(0)}function _s(s){s=s|0;var l=0,c=0,f=0,d=0;Un(s,(wi(s)|0)==0,2491),Un(s,(n[s+944>>2]|0)==0,2545),l=s+948|0,c=n[l>>2]|0,f=s+952|0,d=n[f>>2]|0,(d|0)!=(c|0)&&(n[f>>2]=d+(~((d+-4-c|0)>>>2)<<2)),ds(l),l=s+976|0,c=n[l>>2]|0,Dr(s|0,8104,1e3)|0,o[c+2>>0]|0&&(n[s+4>>2]=2,n[s+12>>2]=4),n[l>>2]=c}function Un(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=C,C=C+16|0,f=d,l||(n[f>>2]=c,Ao(s,5,3197,f)),C=d}function Pn(){return n[2276]|0}function ys(){var s=0;return s=pD(20)|0,We((s|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[s>>2]=n[239],n[s+4>>2]=n[240],n[s+8>>2]=n[241],n[s+12>>2]=n[242],n[s+16>>2]=n[243],s|0}function We(s,l){s=s|0,l=l|0;var c=0,f=0;f=C,C=C+16|0,c=f,s||(n[c>>2]=l,Ao(0,5,3197,c)),C=f}function tt(s){s=s|0,hD(s),n[2277]=(n[2277]|0)+-1}function It(s,l){s=s|0,l=l|0;var c=0;l?(Un(s,(wi(s)|0)==0,2629),c=1):(c=0,l=0),n[s+964>>2]=l,n[s+988>>2]=c}function nr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,m=f+8|0,d=f+4|0,B=f,n[d>>2]=l,Un(s,(n[l+944>>2]|0)==0,2709),Un(s,(n[s+964>>2]|0)==0,2763),$(s),l=s+948|0,n[B>>2]=(n[l>>2]|0)+(c<<2),n[m>>2]=n[B>>2],ye(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=s,Ne(s),C=f}function $(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;if(c=wi(s)|0,c|0&&(n[(gs(s,0)|0)+944>>2]|0)!=(s|0)){f=n[(n[s+976>>2]|0)+12>>2]|0,d=s+948|0,m=(f|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=Us(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=s,m||TR[f&15](B,k,s,l),l=l+1|0;while((l|0)!=(c|0))}}function ye(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0;et=C,C=C+64|0,q=et+52|0,k=et+48|0,se=et+28|0,Ge=et+24|0,Me=et+20|0,Qe=et,f=n[s>>2]|0,m=f,l=f+((n[l>>2]|0)-m>>2<<2)|0,f=s+4|0,d=n[f>>2]|0,B=s+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[c>>2],n[f>>2]=(n[f>>2]|0)+4;break}HA(s,l,d,l+4|0),l>>>0<=c>>>0&&(c=(n[f>>2]|0)>>>0>c>>>0?c+4|0:c),n[l>>2]=n[c>>2]}else{f=(d-m>>2)+1|0,d=L(s)|0,d>>>0<f>>>0&&zr(s),O=n[s>>2]|0,M=(n[B>>2]|0)-O|0,m=M>>1,Ip(Qe,M>>2>>>0<d>>>1>>>0?m>>>0<f>>>0?f:m:d,l-O>>2,s+8|0),O=Qe+8|0,f=n[O>>2]|0,m=Qe+12|0,M=n[m>>2]|0,B=M,Q=f;do if((f|0)==(M|0)){if(M=Qe+4|0,f=n[M>>2]|0,Xe=n[Qe>>2]|0,d=Xe,f>>>0<=Xe>>>0){f=B-d>>1,f=(f|0)==0?1:f,Ip(se,f,f>>>2,n[Qe+16>>2]|0),n[Ge>>2]=n[M>>2],n[Me>>2]=n[O>>2],n[k>>2]=n[Ge>>2],n[q>>2]=n[Me>>2],Dw(se,k,q),f=n[Qe>>2]|0,n[Qe>>2]=n[se>>2],n[se>>2]=f,f=se+4|0,Xe=n[M>>2]|0,n[M>>2]=n[f>>2],n[f>>2]=Xe,f=se+8|0,Xe=n[O>>2]|0,n[O>>2]=n[f>>2],n[f>>2]=Xe,f=se+12|0,Xe=n[m>>2]|0,n[m>>2]=n[f>>2],n[f>>2]=Xe,_A(se),f=n[O>>2]|0;break}m=f,B=((m-d>>2)+1|0)/-2|0,k=f+(B<<2)|0,d=Q-m|0,m=d>>2,m&&(Mw(k|0,f|0,d|0)|0,f=n[M>>2]|0),Xe=k+(m<<2)|0,n[O>>2]=Xe,n[M>>2]=f+(B<<2),f=Xe}while(0);n[f>>2]=n[c>>2],n[O>>2]=(n[O>>2]|0)+4,l=vg(s,Qe,l)|0,_A(Qe)}while(0);return C=et,l|0}function Ne(s){s=s|0;var l=0;do{if(l=s+984|0,o[l>>0]|0)break;o[l>>0]=1,h[s+504>>2]=y(ce),s=n[s+944>>2]|0}while((s|0)!=0)}function pt(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function ht(s){return s=s|0,n[s+944>>2]|0}function Tt(s){s=s|0,Un(s,(n[s+964>>2]|0)!=0,2832),Ne(s)}function er(s){return s=s|0,(o[s+984>>0]|0)!=0|0}function $r(s,l){s=s|0,l=l|0,FUe(s,l,400)|0&&(Dr(s|0,l|0,400)|0,Ne(s))}function qi(s){s=s|0;var l=Ze;return l=y(h[s+44>>2]),s=Ht(l)|0,y(s?y(0):l)}function es(s){s=s|0;var l=Ze;return l=y(h[s+48>>2]),Ht(l)|0&&(l=o[(n[s+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function bi(s,l){s=s|0,l=l|0,n[s+980>>2]=l}function jo(s){return s=s|0,n[s+980>>2]|0}function kA(s,l){s=s|0,l=l|0;var c=0;c=s+4|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Ne(s))}function QA(s){return s=s|0,n[s+4>>2]|0}function Ap(s,l){s=s|0,l=l|0;var c=0;c=s+8|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Ne(s))}function ig(s){return s=s|0,n[s+8>>2]|0}function gu(s,l){s=s|0,l=l|0;var c=0;c=s+12|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Ne(s))}function sg(s){return s=s|0,n[s+12>>2]|0}function du(s,l){s=s|0,l=l|0;var c=0;c=s+16|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Ne(s))}function uo(s){return s=s|0,n[s+16>>2]|0}function FA(s,l){s=s|0,l=l|0;var c=0;c=s+20|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Ne(s))}function mc(s){return s=s|0,n[s+20>>2]|0}function ca(s,l){s=s|0,l=l|0;var c=0;c=s+24|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Ne(s))}function og(s){return s=s|0,n[s+24>>2]|0}function yc(s,l){s=s|0,l=l|0;var c=0;c=s+28|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Ne(s))}function Sm(s){return s=s|0,n[s+28>>2]|0}function ag(s,l){s=s|0,l=l|0;var c=0;c=s+32|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Ne(s))}function ei(s){return s=s|0,n[s+32>>2]|0}function fp(s,l){s=s|0,l=l|0;var c=0;c=s+36|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Ne(s))}function lg(s){return s=s|0,n[s+36>>2]|0}function RA(s,l){s=s|0,l=y(l);var c=0;c=s+40|0,y(h[c>>2])!=l&&(h[c>>2]=l,Ne(s))}function Hs(s,l){s=s|0,l=y(l);var c=0;c=s+44|0,y(h[c>>2])!=l&&(h[c>>2]=l,Ne(s))}function mu(s,l){s=s|0,l=y(l);var c=0;c=s+48|0,y(h[c>>2])!=l&&(h[c>>2]=l,Ne(s))}function Ha(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ht(l)|0,c=(m^1)&1,f=s+52|0,d=s+56|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Ne(s))}function Gi(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+52|0,c=s+56|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=Ht(l)|0,n[c>>2]=f?3:2,Ne(s))}function ua(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+52|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function yu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ht(c)|0,f=(m^1)&1,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Ne(s))}function Es(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ht(c)|0,f=m?0:2,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Ne(s))}function Ec(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+132+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Cc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ht(c)|0,f=(m^1)&1,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Ne(s))}function G(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ht(c)|0,f=m?0:2,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Ne(s))}function Dt(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+60+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function wl(s,l){s=s|0,l=l|0;var c=0;c=s+60+(l<<3)+4|0,(n[c>>2]|0)!=3&&(h[s+60+(l<<3)>>2]=y(ce),n[c>>2]=3,Ne(s))}function xi(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ht(c)|0,f=(m^1)&1,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Ne(s))}function wc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ht(c)|0,f=m?0:2,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Ne(s))}function ct(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+204+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Eu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ht(c)|0,f=(m^1)&1,d=s+276+(l<<3)|0,l=s+276+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Ne(s))}function cg(s,l){return s=s|0,l=l|0,y(h[s+276+(l<<3)>>2])}function yw(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ht(l)|0,c=(m^1)&1,f=s+348|0,d=s+352|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Ne(s))}function TA(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+348|0,c=s+352|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=Ht(l)|0,n[c>>2]=f?3:2,Ne(s))}function pp(s){s=s|0;var l=0;l=s+352|0,(n[l>>2]|0)!=3&&(h[s+348>>2]=y(ce),n[l>>2]=3,Ne(s))}function Br(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+348|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Cs(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ht(l)|0,c=(m^1)&1,f=s+356|0,d=s+360|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Ne(s))}function ug(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+356|0,c=s+360|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=Ht(l)|0,n[c>>2]=f?3:2,Ne(s))}function Ag(s){s=s|0;var l=0;l=s+360|0,(n[l>>2]|0)!=3&&(h[s+356>>2]=y(ce),n[l>>2]=3,Ne(s))}function fg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+356|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function hp(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ht(l)|0,c=(m^1)&1,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Ne(s))}function Ic(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ht(l)|0,c=m?0:2,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Ne(s))}function Ct(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+364|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function bm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ht(l)|0,c=(m^1)&1,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Ne(s))}function pg(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ht(l)|0,c=m?0:2,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Ne(s))}function hg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+372|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Cu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ht(l)|0,c=(m^1)&1,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Ne(s))}function xm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ht(l)|0,c=m?0:2,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Ne(s))}function gg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+380|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function wu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ht(l)|0,c=(m^1)&1,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Ne(s))}function Ew(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ht(l)|0,c=m?0:2,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Ne(s))}function km(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+388|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Aa(s,l){s=s|0,l=y(l);var c=0;c=s+396|0,y(h[c>>2])!=l&&(h[c>>2]=l,Ne(s))}function Bc(s){return s=s|0,y(h[s+396>>2])}function Il(s){return s=s|0,y(h[s+400>>2])}function Iu(s){return s=s|0,y(h[s+404>>2])}function dg(s){return s=s|0,y(h[s+408>>2])}function LA(s){return s=s|0,y(h[s+412>>2])}function gp(s){return s=s|0,y(h[s+416>>2])}function ja(s){return s=s|0,y(h[s+420>>2])}function mg(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+424+(l<<2)>>2])}function dp(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+448+(l<<2)>>2])}function qo(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+472+(l<<2)>>2])}function ws(s,l){s=s|0,l=l|0;var c=0,f=Ze;return c=n[s+4>>2]|0,(c|0)==(n[l+4>>2]|0)?c?(f=y(h[s>>2]),s=y(ne(y(f-y(h[l>>2]))))<y(999999974e-13)):s=1:s=0,s|0}function Ii(s,l){s=y(s),l=y(l);var c=0;return Ht(s)|0?c=Ht(l)|0:c=y(ne(y(s-l)))<y(999999974e-13),c|0}function Qm(s,l){s=s|0,l=l|0,Fm(s,l)}function Fm(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c+4|0,n[f>>2]=0,n[f+4>>2]=0,n[f+8>>2]=0,Ma(f|0,s|0,l|0,0),Ao(s,3,(o[f+11>>0]|0)<0?n[f>>2]|0:f,c),t3e(f),C=c}function Go(s,l,c,f){s=y(s),l=y(l),c=c|0,f=f|0;var d=Ze;s=y(s*l),d=y(bR(s,y(1)));do if(Ii(d,y(0))|0)s=y(s-d);else{if(s=y(s-d),Ii(d,y(1))|0){s=y(s+y(1));break}if(c){s=y(s+y(1));break}f||(d>y(.5)?d=y(1):(f=Ii(d,y(.5))|0,d=y(f?1:0)),s=y(s+d))}while(0);return y(s/l)}function NA(s,l,c,f,d,m,B,k,Q,M,O,q,se){s=s|0,l=y(l),c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,k=y(k),Q=y(Q),M=y(M),O=y(O),q=y(q),se=se|0;var Ge=0,Me=Ze,Qe=Ze,et=Ze,Xe=Ze,lt=Ze,Ue=Ze;return Q<y(0)|M<y(0)?se=0:((se|0)!=0&&(Me=y(h[se+4>>2]),Me!=y(0))?(et=y(Go(l,Me,0,0)),Xe=y(Go(f,Me,0,0)),Qe=y(Go(m,Me,0,0)),Me=y(Go(k,Me,0,0))):(Qe=m,et=l,Me=k,Xe=f),(d|0)==(s|0)?Ge=Ii(Qe,et)|0:Ge=0,(B|0)==(c|0)?se=Ii(Me,Xe)|0:se=0,!Ge&&(lt=y(l-O),!(mp(s,lt,Q)|0))&&!(yp(s,lt,d,Q)|0)?Ge=yg(s,lt,d,m,Q)|0:Ge=1,!se&&(Ue=y(f-q),!(mp(c,Ue,M)|0))&&!(yp(c,Ue,B,M)|0)?se=yg(c,Ue,B,k,M)|0:se=1,se=Ge&se),se|0}function mp(s,l,c){return s=s|0,l=y(l),c=y(c),(s|0)==1?s=Ii(l,c)|0:s=0,s|0}function yp(s,l,c,f){return s=s|0,l=y(l),c=c|0,f=y(f),(s|0)==2&(c|0)==0?l>=f?s=1:s=Ii(l,f)|0:s=0,s|0}function yg(s,l,c,f,d){return s=s|0,l=y(l),c=c|0,f=y(f),d=y(d),(s|0)==2&(c|0)==2&f>l?d<=l?s=1:s=Ii(l,d)|0:s=0,s|0}function fa(s,l,c,f,d,m,B,k,Q,M,O){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),k=y(k),Q=Q|0,M=M|0,O=O|0;var q=0,se=0,Ge=0,Me=0,Qe=Ze,et=Ze,Xe=0,lt=0,Ue=0,qe=0,Nt=0,Mr=0,or=0,Xt=0,Pr=0,Lr=0,ir=0,xn=Ze,go=Ze,mo=Ze,yo=0,ya=0;ir=C,C=C+160|0,Xt=ir+152|0,or=ir+120|0,Mr=ir+104|0,Ue=ir+72|0,Me=ir+56|0,Nt=ir+8|0,lt=ir,qe=(n[2279]|0)+1|0,n[2279]=qe,Pr=s+984|0,(o[Pr>>0]|0)!=0&&(n[s+512>>2]|0)!=(n[2278]|0)?Xe=4:(n[s+516>>2]|0)==(f|0)?Lr=0:Xe=4,(Xe|0)==4&&(n[s+520>>2]=0,n[s+924>>2]=-1,n[s+928>>2]=-1,h[s+932>>2]=y(-1),h[s+936>>2]=y(-1),Lr=1);e:do if(n[s+964>>2]|0)if(Qe=y(ln(s,2,B)),et=y(ln(s,0,B)),q=s+916|0,mo=y(h[q>>2]),go=y(h[s+920>>2]),xn=y(h[s+932>>2]),NA(d,l,m,c,n[s+924>>2]|0,mo,n[s+928>>2]|0,go,xn,y(h[s+936>>2]),Qe,et,O)|0)Xe=22;else if(Ge=n[s+520>>2]|0,!Ge)Xe=21;else for(se=0;;){if(q=s+524+(se*24|0)|0,xn=y(h[q>>2]),go=y(h[s+524+(se*24|0)+4>>2]),mo=y(h[s+524+(se*24|0)+16>>2]),NA(d,l,m,c,n[s+524+(se*24|0)+8>>2]|0,xn,n[s+524+(se*24|0)+12>>2]|0,go,mo,y(h[s+524+(se*24|0)+20>>2]),Qe,et,O)|0){Xe=22;break e}if(se=se+1|0,se>>>0>=Ge>>>0){Xe=21;break}}else{if(Q){if(q=s+916|0,!(Ii(y(h[q>>2]),l)|0)){Xe=21;break}if(!(Ii(y(h[s+920>>2]),c)|0)){Xe=21;break}if((n[s+924>>2]|0)!=(d|0)){Xe=21;break}q=(n[s+928>>2]|0)==(m|0)?q:0,Xe=22;break}if(Ge=n[s+520>>2]|0,!Ge)Xe=21;else for(se=0;;){if(q=s+524+(se*24|0)|0,Ii(y(h[q>>2]),l)|0&&Ii(y(h[s+524+(se*24|0)+4>>2]),c)|0&&(n[s+524+(se*24|0)+8>>2]|0)==(d|0)&&(n[s+524+(se*24|0)+12>>2]|0)==(m|0)){Xe=22;break e}if(se=se+1|0,se>>>0>=Ge>>>0){Xe=21;break}}}while(0);do if((Xe|0)==21)o[11697]|0?(q=0,Xe=28):(q=0,Xe=31);else if((Xe|0)==22){if(se=(o[11697]|0)!=0,!((q|0)!=0&(Lr^1)))if(se){Xe=28;break}else{Xe=31;break}Me=q+16|0,n[s+908>>2]=n[Me>>2],Ge=q+20|0,n[s+912>>2]=n[Ge>>2],(o[11698]|0)==0|se^1||(n[lt>>2]=OA(qe)|0,n[lt+4>>2]=qe,Ao(s,4,2972,lt),se=n[s+972>>2]|0,se|0&&tf[se&127](s),d=qa(d,Q)|0,m=qa(m,Q)|0,ya=+y(h[Me>>2]),yo=+y(h[Ge>>2]),n[Nt>>2]=d,n[Nt+4>>2]=m,E[Nt+8>>3]=+l,E[Nt+16>>3]=+c,E[Nt+24>>3]=ya,E[Nt+32>>3]=yo,n[Nt+40>>2]=M,Ao(s,4,2989,Nt))}while(0);return(Xe|0)==28&&(se=OA(qe)|0,n[Me>>2]=se,n[Me+4>>2]=qe,n[Me+8>>2]=Lr?3047:11699,Ao(s,4,3038,Me),se=n[s+972>>2]|0,se|0&&tf[se&127](s),Nt=qa(d,Q)|0,Xe=qa(m,Q)|0,n[Ue>>2]=Nt,n[Ue+4>>2]=Xe,E[Ue+8>>3]=+l,E[Ue+16>>3]=+c,n[Ue+24>>2]=M,Ao(s,4,3049,Ue),Xe=31),(Xe|0)==31&&(si(s,l,c,f,d,m,B,k,Q,O),o[11697]|0&&(se=n[2279]|0,Nt=OA(se)|0,n[Mr>>2]=Nt,n[Mr+4>>2]=se,n[Mr+8>>2]=Lr?3047:11699,Ao(s,4,3083,Mr),se=n[s+972>>2]|0,se|0&&tf[se&127](s),Nt=qa(d,Q)|0,Mr=qa(m,Q)|0,yo=+y(h[s+908>>2]),ya=+y(h[s+912>>2]),n[or>>2]=Nt,n[or+4>>2]=Mr,E[or+8>>3]=yo,E[or+16>>3]=ya,n[or+24>>2]=M,Ao(s,4,3092,or)),n[s+516>>2]=f,q||(se=s+520|0,q=n[se>>2]|0,(q|0)==16&&(o[11697]|0&&Ao(s,4,3124,Xt),n[se>>2]=0,q=0),Q?q=s+916|0:(n[se>>2]=q+1,q=s+524+(q*24|0)|0),h[q>>2]=l,h[q+4>>2]=c,n[q+8>>2]=d,n[q+12>>2]=m,n[q+16>>2]=n[s+908>>2],n[q+20>>2]=n[s+912>>2],q=0)),Q&&(n[s+416>>2]=n[s+908>>2],n[s+420>>2]=n[s+912>>2],o[s+985>>0]=1,o[Pr>>0]=0),n[2279]=(n[2279]|0)+-1,n[s+512>>2]=n[2278],C=ir,Lr|(q|0)==0|0}function ln(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(K(s,l,c)),y(f+y(re(s,l,c)))}function Ao(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=C,C=C+16|0,d=m,n[d>>2]=f,s?f=n[s+976>>2]|0:f=0,Cg(f,s,l,c,d),C=m}function OA(s){return s=s|0,(s>>>0>60?3201:3201+(60-s)|0)|0}function qa(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+32|0,c=d+12|0,f=d,n[c>>2]=n[254],n[c+4>>2]=n[255],n[c+8>>2]=n[256],n[f>>2]=n[257],n[f+4>>2]=n[258],n[f+8>>2]=n[259],(s|0)>2?s=11699:s=n[(l?f:c)+(s<<2)>>2]|0,C=d,s|0}function si(s,l,c,f,d,m,B,k,Q,M){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),k=y(k),Q=Q|0,M=M|0;var O=0,q=0,se=0,Ge=0,Me=Ze,Qe=Ze,et=Ze,Xe=Ze,lt=Ze,Ue=Ze,qe=Ze,Nt=0,Mr=0,or=0,Xt=Ze,Pr=Ze,Lr=0,ir=Ze,xn=0,go=0,mo=0,yo=0,ya=0,Fp=0,Rp=0,bl=0,Tp=0,Fu=0,Ru=0,Lp=0,Np=0,Op=0,Xr=0,xl=0,Mp=0,xc=0,Up=Ze,_p=Ze,Tu=Ze,Lu=Ze,kc=Ze,qs=0,za=0,Wo=0,kl=0,nf=0,sf=Ze,Nu=Ze,of=Ze,af=Ze,Gs=Ze,vs=Ze,Ql=0,Rn=Ze,lf=Ze,Eo=Ze,Qc=Ze,Co=Ze,Fc=Ze,cf=0,uf=0,Rc=Ze,Ys=Ze,Fl=0,Af=0,ff=0,pf=0,xr=Ze,Jn=0,Ds=0,wo=0,Ws=0,Rr=0,ur=0,Rl=0,Jt=Ze,hf=0,li=0;Rl=C,C=C+16|0,qs=Rl+12|0,za=Rl+8|0,Wo=Rl+4|0,kl=Rl,Un(s,(d|0)==0|(Ht(l)|0)^1,3326),Un(s,(m|0)==0|(Ht(c)|0)^1,3406),Ds=mt(s,f)|0,n[s+496>>2]=Ds,Rr=fr(2,Ds)|0,ur=fr(0,Ds)|0,h[s+440>>2]=y(K(s,Rr,B)),h[s+444>>2]=y(re(s,Rr,B)),h[s+428>>2]=y(K(s,ur,B)),h[s+436>>2]=y(re(s,ur,B)),h[s+464>>2]=y(Cr(s,Rr)),h[s+468>>2]=y(yn(s,Rr)),h[s+452>>2]=y(Cr(s,ur)),h[s+460>>2]=y(yn(s,ur)),h[s+488>>2]=y(oi(s,Rr,B)),h[s+492>>2]=y(Oi(s,Rr,B)),h[s+476>>2]=y(oi(s,ur,B)),h[s+484>>2]=y(Oi(s,ur,B));do if(n[s+964>>2]|0)Ig(s,l,c,d,m,B,k);else{if(wo=s+948|0,Ws=(n[s+952>>2]|0)-(n[wo>>2]|0)>>2,!Ws){Gv(s,l,c,d,m,B,k);break}if(!Q&&Yv(s,l,c,d,m,B,k)|0)break;$(s),xl=s+508|0,o[xl>>0]=0,Rr=fr(n[s+4>>2]|0,Ds)|0,ur=ww(Rr,Ds)|0,Jn=pe(Rr)|0,Mp=n[s+8>>2]|0,Af=s+28|0,xc=(n[Af>>2]|0)!=0,Co=Jn?B:k,Rc=Jn?k:B,Up=y(Cp(s,Rr,B)),_p=y(Iw(s,Rr,B)),Me=y(Cp(s,ur,B)),Fc=y(En(s,Rr,B)),Ys=y(En(s,ur,B)),or=Jn?d:m,Fl=Jn?m:d,xr=Jn?Fc:Ys,lt=Jn?Ys:Fc,Qc=y(ln(s,2,B)),Xe=y(ln(s,0,B)),Qe=y(y(Gr(s+364|0,B))-xr),et=y(y(Gr(s+380|0,B))-xr),Ue=y(y(Gr(s+372|0,k))-lt),qe=y(y(Gr(s+388|0,k))-lt),Tu=Jn?Qe:Ue,Lu=Jn?et:qe,Qc=y(l-Qc),l=y(Qc-xr),Ht(l)|0?xr=l:xr=y(_n(y(Tg(l,et)),Qe)),lf=y(c-Xe),l=y(lf-lt),Ht(l)|0?Eo=l:Eo=y(_n(y(Tg(l,qe)),Ue)),Qe=Jn?xr:Eo,Rn=Jn?Eo:xr;e:do if((or|0)==1)for(f=0,q=0;;){if(O=gs(s,q)|0,!f)y(rs(O))>y(0)&&y(js(O))>y(0)?f=O:f=0;else if(Tm(O)|0){Ge=0;break e}if(q=q+1|0,q>>>0>=Ws>>>0){Ge=f;break}}else Ge=0;while(0);Nt=Ge+500|0,Mr=Ge+504|0,f=0,O=0,l=y(0),se=0;do{if(q=n[(n[wo>>2]|0)+(se<<2)>>2]|0,(n[q+36>>2]|0)==1)Bu(q),o[q+985>>0]=1,o[q+984>>0]=0;else{Bl(q),Q&&Ep(q,mt(q,Ds)|0,Qe,Rn,xr);do if((n[q+24>>2]|0)!=1)if((q|0)==(Ge|0)){n[Nt>>2]=n[2278],h[Mr>>2]=y(0);break}else{Lm(s,q,xr,d,Eo,xr,Eo,m,Ds,M);break}else O|0&&(n[O+960>>2]=q),n[q+960>>2]=0,O=q,f=(f|0)==0?q:f;while(0);vs=y(h[q+504>>2]),l=y(l+y(vs+y(ln(q,Rr,xr))))}se=se+1|0}while((se|0)!=(Ws|0));for(mo=l>Qe,Ql=xc&((or|0)==2&mo)?1:or,xn=(Fl|0)==1,ya=xn&(Q^1),Fp=(Ql|0)==1,Rp=(Ql|0)==2,bl=976+(Rr<<2)|0,Tp=(Fl|2|0)==2,Op=xn&(xc^1),Fu=1040+(ur<<2)|0,Ru=1040+(Rr<<2)|0,Lp=976+(ur<<2)|0,Np=(Fl|0)!=1,mo=xc&((or|0)!=0&mo),go=s+976|0,xn=xn^1,l=Qe,Lr=0,yo=0,vs=y(0),kc=y(0);;){e:do if(Lr>>>0<Ws>>>0)for(Mr=n[wo>>2]|0,se=0,qe=y(0),Ue=y(0),et=y(0),Qe=y(0),q=0,O=0,Ge=Lr;;){if(Nt=n[Mr+(Ge<<2)>>2]|0,(n[Nt+36>>2]|0)!=1&&(n[Nt+940>>2]=yo,(n[Nt+24>>2]|0)!=1)){if(Xe=y(ln(Nt,Rr,xr)),Xr=n[bl>>2]|0,c=y(Gr(Nt+380+(Xr<<3)|0,Co)),lt=y(h[Nt+504>>2]),c=y(Tg(c,lt)),c=y(_n(y(Gr(Nt+364+(Xr<<3)|0,Co)),c)),xc&(se|0)!=0&y(Xe+y(Ue+c))>l){m=se,Xe=qe,or=Ge;break e}Xe=y(Xe+c),c=y(Ue+Xe),Xe=y(qe+Xe),Tm(Nt)|0&&(et=y(et+y(rs(Nt))),Qe=y(Qe-y(lt*y(js(Nt))))),O|0&&(n[O+960>>2]=Nt),n[Nt+960>>2]=0,se=se+1|0,O=Nt,q=(q|0)==0?Nt:q}else Xe=qe,c=Ue;if(Ge=Ge+1|0,Ge>>>0<Ws>>>0)qe=Xe,Ue=c;else{m=se,or=Ge;break}}else m=0,Xe=y(0),et=y(0),Qe=y(0),q=0,or=Lr;while(0);Xr=et>y(0)&et<y(1),Xt=Xr?y(1):et,Xr=Qe>y(0)&Qe<y(1),qe=Xr?y(1):Qe;do if(Fp)Xr=51;else if(Xe<Tu&((Ht(Tu)|0)^1))l=Tu,Xr=51;else if(Xe>Lu&((Ht(Lu)|0)^1))l=Lu,Xr=51;else if(o[(n[go>>2]|0)+3>>0]|0)Xr=51;else{if(Xt!=y(0)&&y(rs(s))!=y(0)){Xr=53;break}l=Xe,Xr=53}while(0);if((Xr|0)==51&&(Xr=0,Ht(l)|0?Xr=53:(Pr=y(l-Xe),ir=l)),(Xr|0)==53&&(Xr=0,Xe<y(0)?(Pr=y(-Xe),ir=l):(Pr=y(0),ir=l)),!ya&&(nf=(q|0)==0,!nf)){se=n[bl>>2]|0,Ge=Pr<y(0),lt=y(Pr/qe),Nt=Pr>y(0),Ue=y(Pr/Xt),et=y(0),Xe=y(0),l=y(0),O=q;do c=y(Gr(O+380+(se<<3)|0,Co)),Qe=y(Gr(O+364+(se<<3)|0,Co)),Qe=y(Tg(c,y(_n(Qe,y(h[O+504>>2]))))),Ge?(c=y(Qe*y(js(O))),c!=y(-0)&&(Jt=y(Qe-y(lt*c)),sf=y(Bi(O,Rr,Jt,ir,xr)),Jt!=sf)&&(et=y(et-y(sf-Qe)),l=y(l+c))):Nt&&(Nu=y(rs(O)),Nu!=y(0))&&(Jt=y(Qe+y(Ue*Nu)),of=y(Bi(O,Rr,Jt,ir,xr)),Jt!=of)&&(et=y(et-y(of-Qe)),Xe=y(Xe-Nu)),O=n[O+960>>2]|0;while((O|0)!=0);if(l=y(qe+l),Qe=y(Pr+et),nf)l=y(0);else{lt=y(Xt+Xe),Ge=n[bl>>2]|0,Nt=Qe<y(0),Mr=l==y(0),Ue=y(Qe/l),se=Qe>y(0),lt=y(Qe/lt),l=y(0);do{Jt=y(Gr(q+380+(Ge<<3)|0,Co)),et=y(Gr(q+364+(Ge<<3)|0,Co)),et=y(Tg(Jt,y(_n(et,y(h[q+504>>2]))))),Nt?(Jt=y(et*y(js(q))),Qe=y(-Jt),Jt!=y(-0)?(Jt=y(Ue*Qe),Qe=y(Bi(q,Rr,y(et+(Mr?Qe:Jt)),ir,xr))):Qe=et):se&&(af=y(rs(q)),af!=y(0))?Qe=y(Bi(q,Rr,y(et+y(lt*af)),ir,xr)):Qe=et,l=y(l-y(Qe-et)),Xe=y(ln(q,Rr,xr)),c=y(ln(q,ur,xr)),Qe=y(Qe+Xe),h[za>>2]=Qe,n[kl>>2]=1,et=y(h[q+396>>2]);e:do if(Ht(et)|0){O=Ht(Rn)|0;do if(!O){if(mo|(ts(q,ur,Rn)|0|xn)||(ha(s,q)|0)!=4||(n[(vl(q,ur)|0)+4>>2]|0)==3||(n[(Pc(q,ur)|0)+4>>2]|0)==3)break;h[qs>>2]=Rn,n[Wo>>2]=1;break e}while(0);if(ts(q,ur,Rn)|0){O=n[q+992+(n[Lp>>2]<<2)>>2]|0,Jt=y(c+y(Gr(O,Rn))),h[qs>>2]=Jt,O=Np&(n[O+4>>2]|0)==2,n[Wo>>2]=((Ht(Jt)|0|O)^1)&1;break}else{h[qs>>2]=Rn,n[Wo>>2]=O?0:2;break}}else Jt=y(Qe-Xe),Xt=y(Jt/et),Jt=y(et*Jt),n[Wo>>2]=1,h[qs>>2]=y(c+(Jn?Xt:Jt));while(0);yr(q,Rr,ir,xr,kl,za),yr(q,ur,Rn,xr,Wo,qs);do if(!(ts(q,ur,Rn)|0)&&(ha(s,q)|0)==4){if((n[(vl(q,ur)|0)+4>>2]|0)==3){O=0;break}O=(n[(Pc(q,ur)|0)+4>>2]|0)!=3}else O=0;while(0);Jt=y(h[za>>2]),Xt=y(h[qs>>2]),hf=n[kl>>2]|0,li=n[Wo>>2]|0,fa(q,Jn?Jt:Xt,Jn?Xt:Jt,Ds,Jn?hf:li,Jn?li:hf,xr,Eo,Q&(O^1),3488,M)|0,o[xl>>0]=o[xl>>0]|o[q+508>>0],q=n[q+960>>2]|0}while((q|0)!=0)}}else l=y(0);if(l=y(Pr+l),li=l<y(0)&1,o[xl>>0]=li|u[xl>>0],Rp&l>y(0)?(O=n[bl>>2]|0,(n[s+364+(O<<3)+4>>2]|0)!=0&&(Gs=y(Gr(s+364+(O<<3)|0,Co)),Gs>=y(0))?Qe=y(_n(y(0),y(Gs-y(ir-l)))):Qe=y(0)):Qe=l,Nt=Lr>>>0<or>>>0,Nt){Ge=n[wo>>2]|0,se=Lr,O=0;do q=n[Ge+(se<<2)>>2]|0,n[q+24>>2]|0||(O=((n[(vl(q,Rr)|0)+4>>2]|0)==3&1)+O|0,O=O+((n[(Pc(q,Rr)|0)+4>>2]|0)==3&1)|0),se=se+1|0;while((se|0)!=(or|0));O?(Xe=y(0),c=y(0)):Xr=101}else Xr=101;e:do if((Xr|0)==101)switch(Xr=0,Mp|0){case 1:{O=0,Xe=y(Qe*y(.5)),c=y(0);break e}case 2:{O=0,Xe=Qe,c=y(0);break e}case 3:{if(m>>>0<=1){O=0,Xe=y(0),c=y(0);break e}c=y((m+-1|0)>>>0),O=0,Xe=y(0),c=y(y(_n(Qe,y(0)))/c);break e}case 5:{c=y(Qe/y((m+1|0)>>>0)),O=0,Xe=c;break e}case 4:{c=y(Qe/y(m>>>0)),O=0,Xe=y(c*y(.5));break e}default:{O=0,Xe=y(0),c=y(0);break e}}while(0);if(l=y(Up+Xe),Nt){et=y(Qe/y(O|0)),se=n[wo>>2]|0,q=Lr,Qe=y(0);do{O=n[se+(q<<2)>>2]|0;e:do if((n[O+36>>2]|0)!=1){switch(n[O+24>>2]|0){case 1:{if(gi(O,Rr)|0){if(!Q)break e;Jt=y(Or(O,Rr,ir)),Jt=y(Jt+y(Cr(s,Rr))),Jt=y(Jt+y(K(O,Rr,xr))),h[O+400+(n[Ru>>2]<<2)>>2]=Jt;break e}break}case 0:if(li=(n[(vl(O,Rr)|0)+4>>2]|0)==3,Jt=y(et+l),l=li?Jt:l,Q&&(li=O+400+(n[Ru>>2]<<2)|0,h[li>>2]=y(l+y(h[li>>2]))),li=(n[(Pc(O,Rr)|0)+4>>2]|0)==3,Jt=y(et+l),l=li?Jt:l,ya){Jt=y(c+y(ln(O,Rr,xr))),Qe=Rn,l=y(l+y(Jt+y(h[O+504>>2])));break e}else{l=y(l+y(c+y(ns(O,Rr,xr)))),Qe=y(_n(Qe,y(ns(O,ur,xr))));break e}default:}Q&&(Jt=y(Xe+y(Cr(s,Rr))),li=O+400+(n[Ru>>2]<<2)|0,h[li>>2]=y(Jt+y(h[li>>2])))}while(0);q=q+1|0}while((q|0)!=(or|0))}else Qe=y(0);if(c=y(_p+l),Tp?Xe=y(y(Bi(s,ur,y(Ys+Qe),Rc,B))-Ys):Xe=Rn,et=y(y(Bi(s,ur,y(Ys+(Op?Rn:Qe)),Rc,B))-Ys),Nt&Q){q=Lr;do{se=n[(n[wo>>2]|0)+(q<<2)>>2]|0;do if((n[se+36>>2]|0)!=1){if((n[se+24>>2]|0)==1){if(gi(se,ur)|0){if(Jt=y(Or(se,ur,Rn)),Jt=y(Jt+y(Cr(s,ur))),Jt=y(Jt+y(K(se,ur,xr))),O=n[Fu>>2]|0,h[se+400+(O<<2)>>2]=Jt,!(Ht(Jt)|0))break}else O=n[Fu>>2]|0;Jt=y(Cr(s,ur)),h[se+400+(O<<2)>>2]=y(Jt+y(K(se,ur,xr)));break}O=ha(s,se)|0;do if((O|0)==4){if((n[(vl(se,ur)|0)+4>>2]|0)==3){Xr=139;break}if((n[(Pc(se,ur)|0)+4>>2]|0)==3){Xr=139;break}if(ts(se,ur,Rn)|0){l=Me;break}hf=n[se+908+(n[bl>>2]<<2)>>2]|0,n[qs>>2]=hf,l=y(h[se+396>>2]),li=Ht(l)|0,Qe=(n[v>>2]=hf,y(h[v>>2])),li?l=et:(Pr=y(ln(se,ur,xr)),Jt=y(Qe/l),l=y(l*Qe),l=y(Pr+(Jn?Jt:l))),h[za>>2]=l,h[qs>>2]=y(y(ln(se,Rr,xr))+Qe),n[Wo>>2]=1,n[kl>>2]=1,yr(se,Rr,ir,xr,Wo,qs),yr(se,ur,Rn,xr,kl,za),l=y(h[qs>>2]),Pr=y(h[za>>2]),Jt=Jn?l:Pr,l=Jn?Pr:l,li=((Ht(Jt)|0)^1)&1,fa(se,Jt,l,Ds,li,((Ht(l)|0)^1)&1,xr,Eo,1,3493,M)|0,l=Me}else Xr=139;while(0);e:do if((Xr|0)==139){Xr=0,l=y(Xe-y(ns(se,ur,xr)));do if((n[(vl(se,ur)|0)+4>>2]|0)==3){if((n[(Pc(se,ur)|0)+4>>2]|0)!=3)break;l=y(Me+y(_n(y(0),y(l*y(.5)))));break e}while(0);if((n[(Pc(se,ur)|0)+4>>2]|0)==3){l=Me;break}if((n[(vl(se,ur)|0)+4>>2]|0)==3){l=y(Me+y(_n(y(0),l)));break}switch(O|0){case 1:{l=Me;break e}case 2:{l=y(Me+y(l*y(.5)));break e}default:{l=y(Me+l);break e}}}while(0);Jt=y(vs+l),li=se+400+(n[Fu>>2]<<2)|0,h[li>>2]=y(Jt+y(h[li>>2]))}while(0);q=q+1|0}while((q|0)!=(or|0))}if(vs=y(vs+et),kc=y(_n(kc,c)),m=yo+1|0,or>>>0>=Ws>>>0)break;l=ir,Lr=or,yo=m}do if(Q){if(O=m>>>0>1,!O&&!(Yi(s)|0))break;if(!(Ht(Rn)|0)){l=y(Rn-vs);e:do switch(n[s+12>>2]|0){case 3:{Me=y(Me+l),Ue=y(0);break}case 2:{Me=y(Me+y(l*y(.5))),Ue=y(0);break}case 4:{Rn>vs?Ue=y(l/y(m>>>0)):Ue=y(0);break}case 7:if(Rn>vs){Me=y(Me+y(l/y(m<<1>>>0))),Ue=y(l/y(m>>>0)),Ue=O?Ue:y(0);break e}else{Me=y(Me+y(l*y(.5))),Ue=y(0);break e}case 6:{Ue=y(l/y(yo>>>0)),Ue=Rn>vs&O?Ue:y(0);break}default:Ue=y(0)}while(0);if(m|0)for(Nt=1040+(ur<<2)|0,Mr=976+(ur<<2)|0,Ge=0,q=0;;){e:do if(q>>>0<Ws>>>0)for(Qe=y(0),et=y(0),l=y(0),se=q;;){O=n[(n[wo>>2]|0)+(se<<2)>>2]|0;do if((n[O+36>>2]|0)!=1&&(n[O+24>>2]|0)==0){if((n[O+940>>2]|0)!=(Ge|0))break e;if(Nm(O,ur)|0&&(Jt=y(h[O+908+(n[Mr>>2]<<2)>>2]),l=y(_n(l,y(Jt+y(ln(O,ur,xr)))))),(ha(s,O)|0)!=5)break;Gs=y(Ya(O)),Gs=y(Gs+y(K(O,0,xr))),Jt=y(h[O+912>>2]),Jt=y(y(Jt+y(ln(O,0,xr)))-Gs),Gs=y(_n(et,Gs)),Jt=y(_n(Qe,Jt)),Qe=Jt,et=Gs,l=y(_n(l,y(Gs+Jt)))}while(0);if(O=se+1|0,O>>>0<Ws>>>0)se=O;else{se=O;break}}else et=y(0),l=y(0),se=q;while(0);if(lt=y(Ue+l),c=Me,Me=y(Me+lt),q>>>0<se>>>0){Xe=y(c+et),O=q;do{q=n[(n[wo>>2]|0)+(O<<2)>>2]|0;e:do if((n[q+36>>2]|0)!=1&&(n[q+24>>2]|0)==0)switch(ha(s,q)|0){case 1:{Jt=y(c+y(K(q,ur,xr))),h[q+400+(n[Nt>>2]<<2)>>2]=Jt;break e}case 3:{Jt=y(y(Me-y(re(q,ur,xr)))-y(h[q+908+(n[Mr>>2]<<2)>>2])),h[q+400+(n[Nt>>2]<<2)>>2]=Jt;break e}case 2:{Jt=y(c+y(y(lt-y(h[q+908+(n[Mr>>2]<<2)>>2]))*y(.5))),h[q+400+(n[Nt>>2]<<2)>>2]=Jt;break e}case 4:{if(Jt=y(c+y(K(q,ur,xr))),h[q+400+(n[Nt>>2]<<2)>>2]=Jt,ts(q,ur,Rn)|0||(Jn?(Qe=y(h[q+908>>2]),l=y(Qe+y(ln(q,Rr,xr))),et=lt):(et=y(h[q+912>>2]),et=y(et+y(ln(q,ur,xr))),l=lt,Qe=y(h[q+908>>2])),Ii(l,Qe)|0&&Ii(et,y(h[q+912>>2]))|0))break e;fa(q,l,et,Ds,1,1,xr,Eo,1,3501,M)|0;break e}case 5:{h[q+404>>2]=y(y(Xe-y(Ya(q)))+y(Or(q,0,Rn)));break e}default:break e}while(0);O=O+1|0}while((O|0)!=(se|0))}if(Ge=Ge+1|0,(Ge|0)==(m|0))break;q=se}}}while(0);if(h[s+908>>2]=y(Bi(s,2,Qc,B,B)),h[s+912>>2]=y(Bi(s,0,lf,k,B)),(Ql|0)!=0&&(cf=n[s+32>>2]|0,uf=(Ql|0)==2,!(uf&(cf|0)!=2))?uf&(cf|0)==2&&(l=y(Fc+ir),l=y(_n(y(Tg(l,y(MA(s,Rr,kc,Co)))),Fc)),Xr=198):(l=y(Bi(s,Rr,kc,Co,B)),Xr=198),(Xr|0)==198&&(h[s+908+(n[976+(Rr<<2)>>2]<<2)>>2]=l),(Fl|0)!=0&&(ff=n[s+32>>2]|0,pf=(Fl|0)==2,!(pf&(ff|0)!=2))?pf&(ff|0)==2&&(l=y(Ys+Rn),l=y(_n(y(Tg(l,y(MA(s,ur,y(Ys+vs),Rc)))),Ys)),Xr=204):(l=y(Bi(s,ur,y(Ys+vs),Rc,B)),Xr=204),(Xr|0)==204&&(h[s+908+(n[976+(ur<<2)>>2]<<2)>>2]=l),Q){if((n[Af>>2]|0)==2){q=976+(ur<<2)|0,se=1040+(ur<<2)|0,O=0;do Ge=gs(s,O)|0,n[Ge+24>>2]|0||(hf=n[q>>2]|0,Jt=y(h[s+908+(hf<<2)>>2]),li=Ge+400+(n[se>>2]<<2)|0,Jt=y(Jt-y(h[li>>2])),h[li>>2]=y(Jt-y(h[Ge+908+(hf<<2)>>2]))),O=O+1|0;while((O|0)!=(Ws|0))}if(f|0){O=Jn?Ql:d;do Om(s,f,xr,O,Eo,Ds,M),f=n[f+960>>2]|0;while((f|0)!=0)}if(O=(Rr|2|0)==3,q=(ur|2|0)==3,O|q){f=0;do se=n[(n[wo>>2]|0)+(f<<2)>>2]|0,(n[se+36>>2]|0)!=1&&(O&&wp(s,se,Rr),q&&wp(s,se,ur)),f=f+1|0;while((f|0)!=(Ws|0))}}}while(0);C=Rl}function pa(s,l){s=s|0,l=y(l);var c=0;oa(s,l>=y(0),3147),c=l==y(0),h[s+4>>2]=c?y(0):l}function vc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=f|0;var d=Ze,m=Ze,B=0,k=0,Q=0;n[2278]=(n[2278]|0)+1,Bl(s),ts(s,2,l)|0?(d=y(Gr(n[s+992>>2]|0,l)),Q=1,d=y(d+y(ln(s,2,l)))):(d=y(Gr(s+380|0,l)),d>=y(0)?Q=2:(Q=((Ht(l)|0)^1)&1,d=l)),ts(s,0,c)|0?(m=y(Gr(n[s+996>>2]|0,c)),k=1,m=y(m+y(ln(s,0,l)))):(m=y(Gr(s+388|0,c)),m>=y(0)?k=2:(k=((Ht(c)|0)^1)&1,m=c)),B=s+976|0,fa(s,d,m,f,Q,k,l,c,1,3189,n[B>>2]|0)|0&&(Ep(s,n[s+496>>2]|0,l,c,l),Dc(s,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),o[11696]|0)&&Qm(s,7)}function Bl(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;k=C,C=C+32|0,B=k+24|0,m=k+16|0,f=k+8|0,d=k,c=0;do l=s+380+(c<<3)|0,(n[s+380+(c<<3)+4>>2]|0)!=0&&(Q=l,M=n[Q+4>>2]|0,O=f,n[O>>2]=n[Q>>2],n[O+4>>2]=M,O=s+364+(c<<3)|0,M=n[O+4>>2]|0,Q=d,n[Q>>2]=n[O>>2],n[Q+4>>2]=M,n[m>>2]=n[f>>2],n[m+4>>2]=n[f+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],ws(m,B)|0)||(l=s+348+(c<<3)|0),n[s+992+(c<<2)>>2]=l,c=c+1|0;while((c|0)!=2);C=k}function ts(s,l,c){s=s|0,l=l|0,c=y(c);var f=0;switch(s=n[s+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[s+4>>2]|0){case 0:case 3:{s=0;break}case 1:{y(h[s>>2])<y(0)?s=0:f=5;break}case 2:{y(h[s>>2])<y(0)?s=0:s=(Ht(c)|0)^1;break}default:f=5}return(f|0)==5&&(s=1),s|0}function Gr(s,l){switch(s=s|0,l=y(l),n[s+4>>2]|0){case 2:{l=y(y(y(h[s>>2])*l)/y(100));break}case 1:{l=y(h[s>>2]);break}default:l=y(ce)}return y(l)}function Ep(s,l,c,f,d){s=s|0,l=l|0,c=y(c),f=y(f),d=y(d);var m=0,B=Ze;l=n[s+944>>2]|0?l:1,m=fr(n[s+4>>2]|0,l)|0,l=ww(m,l)|0,c=y(Mm(s,m,c)),f=y(Mm(s,l,f)),B=y(c+y(K(s,m,d))),h[s+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,c=y(c+y(re(s,m,d))),h[s+400+(n[1e3+(m<<2)>>2]<<2)>>2]=c,c=y(f+y(K(s,l,d))),h[s+400+(n[1040+(l<<2)>>2]<<2)>>2]=c,d=y(f+y(re(s,l,d))),h[s+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function Dc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=y(f);var d=0,m=0,B=Ze,k=Ze,Q=0,M=0,O=Ze,q=0,se=Ze,Ge=Ze,Me=Ze,Qe=Ze;if(l!=y(0)&&(d=s+400|0,Qe=y(h[d>>2]),m=s+404|0,Me=y(h[m>>2]),q=s+416|0,Ge=y(h[q>>2]),M=s+420|0,B=y(h[M>>2]),se=y(Qe+c),O=y(Me+f),f=y(se+Ge),k=y(O+B),Q=(n[s+988>>2]|0)==1,h[d>>2]=y(Go(Qe,l,0,Q)),h[m>>2]=y(Go(Me,l,0,Q)),c=y(bR(y(Ge*l),y(1))),Ii(c,y(0))|0?m=0:m=(Ii(c,y(1))|0)^1,c=y(bR(y(B*l),y(1))),Ii(c,y(0))|0?d=0:d=(Ii(c,y(1))|0)^1,Qe=y(Go(f,l,Q&m,Q&(m^1))),h[q>>2]=y(Qe-y(Go(se,l,0,Q))),Qe=y(Go(k,l,Q&d,Q&(d^1))),h[M>>2]=y(Qe-y(Go(O,l,0,Q))),m=(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2,m|0)){d=0;do Dc(gs(s,d)|0,l,se,O),d=d+1|0;while((d|0)!=(m|0))}}function Cw(s,l,c,f,d){switch(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,c|0){case 5:case 0:{s=i7(n[489]|0,f,d)|0;break}default:s=XUe(f,d)|0}return s|0}function Eg(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;d=C,C=C+16|0,m=d,n[m>>2]=f,Cg(s,0,l,c,m),C=d}function Cg(s,l,c,f,d){if(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,s=s|0?s:956,D7[n[s+8>>2]&1](s,l,c,f,d)|0,(c|0)==5)Rt();else return}function Ga(s,l,c){s=s|0,l=l|0,c=c|0,o[s+l>>0]=c&1}function Rm(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(wg(s,f),Qt(s,n[l>>2]|0,n[c>>2]|0,f))}function wg(s,l){s=s|0,l=l|0;var c=0;if((L(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function Qt(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function L(s){return s=s|0,1073741823}function K(s,l,c){return s=s|0,l=l|0,c=y(c),pe(l)|0&&(n[s+96>>2]|0)!=0?s=s+92|0:s=Fn(s+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function re(s,l,c){return s=s|0,l=l|0,c=y(c),pe(l)|0&&(n[s+104>>2]|0)!=0?s=s+100|0:s=Fn(s+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function pe(s){return s=s|0,(s|1|0)==3|0}function ze(s,l){return s=s|0,l=y(l),(n[s+4>>2]|0)==3?l=y(0):l=y(Gr(s,l)),y(l)}function mt(s,l){return s=s|0,l=l|0,s=n[s>>2]|0,((s|0)==0?(l|0)>1?l:1:s)|0}function fr(s,l){s=s|0,l=l|0;var c=0;e:do if((l|0)==2){switch(s|0){case 2:{s=3;break e}case 3:break;default:{c=4;break e}}s=2}else c=4;while(0);return s|0}function Cr(s,l){s=s|0,l=l|0;var c=Ze;return pe(l)|0&&(n[s+312>>2]|0)!=0&&(c=y(h[s+308>>2]),c>=y(0))||(c=y(_n(y(h[(Fn(s+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function yn(s,l){s=s|0,l=l|0;var c=Ze;return pe(l)|0&&(n[s+320>>2]|0)!=0&&(c=y(h[s+316>>2]),c>=y(0))||(c=y(_n(y(h[(Fn(s+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function oi(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return pe(l)|0&&(n[s+240>>2]|0)!=0&&(f=y(Gr(s+236|0,c)),f>=y(0))||(f=y(_n(y(Gr(Fn(s+204|0,n[1040+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Oi(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return pe(l)|0&&(n[s+248>>2]|0)!=0&&(f=y(Gr(s+244|0,c)),f>=y(0))||(f=y(_n(y(Gr(Fn(s+204|0,n[1e3+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Ig(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=Ze,Q=Ze,M=Ze,O=Ze,q=Ze,se=Ze,Ge=0,Me=0,Qe=0;Qe=C,C=C+16|0,Ge=Qe,Me=s+964|0,Un(s,(n[Me>>2]|0)!=0,3519),k=y(En(s,2,l)),Q=y(En(s,0,l)),M=y(ln(s,2,l)),O=y(ln(s,0,l)),Ht(l)|0?q=l:q=y(_n(y(0),y(y(l-M)-k))),Ht(c)|0?se=c:se=y(_n(y(0),y(y(c-O)-Q))),(f|0)==1&(d|0)==1?(h[s+908>>2]=y(Bi(s,2,y(l-M),m,m)),l=y(Bi(s,0,y(c-O),B,m))):(P7[n[Me>>2]&1](Ge,s,q,f,se,d),q=y(k+y(h[Ge>>2])),se=y(l-M),h[s+908>>2]=y(Bi(s,2,(f|2|0)==2?q:se,m,m)),se=y(Q+y(h[Ge+4>>2])),l=y(c-O),l=y(Bi(s,0,(d|2|0)==2?se:l,B,m))),h[s+912>>2]=l,C=Qe}function Gv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=Ze,Q=Ze,M=Ze,O=Ze;M=y(En(s,2,m)),k=y(En(s,0,m)),O=y(ln(s,2,m)),Q=y(ln(s,0,m)),l=y(l-O),h[s+908>>2]=y(Bi(s,2,(f|2|0)==2?M:l,m,m)),c=y(c-Q),h[s+912>>2]=y(Bi(s,0,(d|2|0)==2?k:c,B,m))}function Yv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=0,Q=Ze,M=Ze;return k=(f|0)==2,!(l<=y(0)&k)&&!(c<=y(0)&(d|0)==2)&&!((f|0)==1&(d|0)==1)?s=0:(Q=y(ln(s,0,m)),M=y(ln(s,2,m)),k=l<y(0)&k|(Ht(l)|0),l=y(l-M),h[s+908>>2]=y(Bi(s,2,k?y(0):l,m,m)),l=y(c-Q),k=c<y(0)&(d|0)==2|(Ht(c)|0),h[s+912>>2]=y(Bi(s,0,k?y(0):l,B,m)),s=1),s|0}function ww(s,l){return s=s|0,l=l|0,UA(s)|0?s=fr(2,l)|0:s=0,s|0}function Cp(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(oi(s,l,c)),y(c+y(Cr(s,l)))}function Iw(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(Oi(s,l,c)),y(c+y(yn(s,l)))}function En(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(Cp(s,l,c)),y(f+y(Iw(s,l,c)))}function Tm(s){return s=s|0,n[s+24>>2]|0?s=0:y(rs(s))!=y(0)?s=1:s=y(js(s))!=y(0),s|0}function rs(s){s=s|0;var l=Ze;if(n[s+944>>2]|0){if(l=y(h[s+44>>2]),Ht(l)|0)return l=y(h[s+40>>2]),s=l>y(0)&((Ht(l)|0)^1),y(s?l:y(0))}else l=y(0);return y(l)}function js(s){s=s|0;var l=Ze,c=0,f=Ze;do if(n[s+944>>2]|0){if(l=y(h[s+48>>2]),Ht(l)|0){if(c=o[(n[s+976>>2]|0)+2>>0]|0,c<<24>>24==0&&(f=y(h[s+40>>2]),f<y(0)&((Ht(f)|0)^1))){l=y(-f);break}l=c<<24>>24?y(1):y(0)}}else l=y(0);while(0);return y(l)}function Bu(s){s=s|0;var l=0,c=0;if(Xm(s+400|0,0,540)|0,o[s+985>>0]=1,$(s),c=wi(s)|0,c|0){l=s+948|0,s=0;do Bu(n[(n[l>>2]|0)+(s<<2)>>2]|0),s=s+1|0;while((s|0)!=(c|0))}}function Lm(s,l,c,f,d,m,B,k,Q,M){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=y(m),B=y(B),k=k|0,Q=Q|0,M=M|0;var O=0,q=Ze,se=0,Ge=0,Me=Ze,Qe=Ze,et=0,Xe=Ze,lt=0,Ue=Ze,qe=0,Nt=0,Mr=0,or=0,Xt=0,Pr=0,Lr=0,ir=0,xn=0,go=0;xn=C,C=C+16|0,Mr=xn+12|0,or=xn+8|0,Xt=xn+4|0,Pr=xn,ir=fr(n[s+4>>2]|0,Q)|0,qe=pe(ir)|0,q=y(Gr(Bw(l)|0,qe?m:B)),Nt=ts(l,2,m)|0,Lr=ts(l,0,B)|0;do if(!(Ht(q)|0)&&!(Ht(qe?c:d)|0)){if(O=l+504|0,!(Ht(y(h[O>>2]))|0)&&(!(vw(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[O>>2]=y(_n(q,y(En(l,ir,m))))}else se=7;while(0);do if((se|0)==7){if(lt=qe^1,!(lt|Nt^1)){B=y(Gr(n[l+992>>2]|0,m)),h[l+504>>2]=y(_n(B,y(En(l,2,m))));break}if(!(qe|Lr^1)){B=y(Gr(n[l+996>>2]|0,B)),h[l+504>>2]=y(_n(B,y(En(l,0,m))));break}h[Mr>>2]=y(ce),h[or>>2]=y(ce),n[Xt>>2]=0,n[Pr>>2]=0,Xe=y(ln(l,2,m)),Ue=y(ln(l,0,m)),Nt?(Me=y(Xe+y(Gr(n[l+992>>2]|0,m))),h[Mr>>2]=Me,n[Xt>>2]=1,Ge=1):(Ge=0,Me=y(ce)),Lr?(q=y(Ue+y(Gr(n[l+996>>2]|0,B))),h[or>>2]=q,n[Pr>>2]=1,O=1):(O=0,q=y(ce)),se=n[s+32>>2]|0,qe&(se|0)==2?se=2:Ht(Me)|0&&!(Ht(c)|0)&&(h[Mr>>2]=c,n[Xt>>2]=2,Ge=2,Me=c),!((se|0)==2&lt)&&Ht(q)|0&&!(Ht(d)|0)&&(h[or>>2]=d,n[Pr>>2]=2,O=2,q=d),Qe=y(h[l+396>>2]),et=Ht(Qe)|0;do if(et)se=Ge;else{if((Ge|0)==1&lt){h[or>>2]=y(y(Me-Xe)/Qe),n[Pr>>2]=1,O=1,se=1;break}qe&(O|0)==1?(h[Mr>>2]=y(Qe*y(q-Ue)),n[Xt>>2]=1,O=1,se=1):se=Ge}while(0);go=Ht(c)|0,Ge=(ha(s,l)|0)!=4,!(qe|Nt|((f|0)!=1|go)|(Ge|(se|0)==1))&&(h[Mr>>2]=c,n[Xt>>2]=1,!et)&&(h[or>>2]=y(y(c-Xe)/Qe),n[Pr>>2]=1,O=1),!(Lr|lt|((k|0)!=1|(Ht(d)|0))|(Ge|(O|0)==1))&&(h[or>>2]=d,n[Pr>>2]=1,!et)&&(h[Mr>>2]=y(Qe*y(d-Ue)),n[Xt>>2]=1),yr(l,2,m,m,Xt,Mr),yr(l,0,B,m,Pr,or),c=y(h[Mr>>2]),d=y(h[or>>2]),fa(l,c,d,Q,n[Xt>>2]|0,n[Pr>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(ir<<2)>>2]<<2)>>2]),h[l+504>>2]=y(_n(B,y(En(l,ir,m))))}while(0);n[l+500>>2]=n[2278],C=xn}function Bi(s,l,c,f,d){return s=s|0,l=l|0,c=y(c),f=y(f),d=y(d),f=y(MA(s,l,c,f)),y(_n(f,y(En(s,l,d))))}function ha(s,l){return s=s|0,l=l|0,l=l+20|0,l=n[((n[l>>2]|0)==0?s+16|0:l)>>2]|0,(l|0)==5&&UA(n[s+4>>2]|0)|0&&(l=1),l|0}function vl(s,l){return s=s|0,l=l|0,pe(l)|0&&(n[s+96>>2]|0)!=0?l=4:l=n[1040+(l<<2)>>2]|0,s+60+(l<<3)|0}function Pc(s,l){return s=s|0,l=l|0,pe(l)|0&&(n[s+104>>2]|0)!=0?l=5:l=n[1e3+(l<<2)>>2]|0,s+60+(l<<3)|0}function yr(s,l,c,f,d,m){switch(s=s|0,l=l|0,c=y(c),f=y(f),d=d|0,m=m|0,c=y(Gr(s+380+(n[976+(l<<2)>>2]<<3)|0,c)),c=y(c+y(ln(s,l,f))),n[d>>2]|0){case 2:case 1:{d=Ht(c)|0,f=y(h[m>>2]),h[m>>2]=d|f<c?f:c;break}case 0:{Ht(c)|0||(n[d>>2]=2,h[m>>2]=c);break}default:}}function gi(s,l){return s=s|0,l=l|0,s=s+132|0,pe(l)|0&&(n[(Fn(s,4,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Fn(s,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function Or(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,pe(l)|0&&(f=Fn(s,4,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Fn(s,n[1040+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Gr(f,c))),y(c)}function ns(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),f=y(f+y(K(s,l,c))),y(f+y(re(s,l,c)))}function Yi(s){s=s|0;var l=0,c=0,f=0;e:do if(UA(n[s+4>>2]|0)|0)l=0;else if((n[s+16>>2]|0)!=5)if(c=wi(s)|0,!c)l=0;else for(l=0;;){if(f=gs(s,l)|0,(n[f+24>>2]|0)==0&&(n[f+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=c>>>0){l=0;break}}else l=1;while(0);return l|0}function Nm(s,l){s=s|0,l=l|0;var c=Ze;return c=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),c>=y(0)&((Ht(c)|0)^1)|0}function Ya(s){s=s|0;var l=Ze,c=0,f=0,d=0,m=0,B=0,k=0,Q=Ze;if(c=n[s+968>>2]|0,c)Q=y(h[s+908>>2]),l=y(h[s+912>>2]),l=y(w7[c&0](s,Q,l)),Un(s,(Ht(l)|0)^1,3573);else{m=wi(s)|0;do if(m|0){for(c=0,d=0;;){if(f=gs(s,d)|0,n[f+940>>2]|0){B=8;break}if((n[f+24>>2]|0)!=1)if(k=(ha(s,f)|0)==5,k){c=f;break}else c=(c|0)==0?f:c;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!c)break;return l=y(Ya(c)),y(l+y(h[c+404>>2]))}while(0);l=y(h[s+912>>2])}return y(l)}function MA(s,l,c,f){s=s|0,l=l|0,c=y(c),f=y(f);var d=Ze,m=0;return UA(l)|0?(l=1,m=3):pe(l)|0?(l=0,m=3):(f=y(ce),d=y(ce)),(m|0)==3&&(d=y(Gr(s+364+(l<<3)|0,f)),f=y(Gr(s+380+(l<<3)|0,f))),m=f<c&(f>=y(0)&((Ht(f)|0)^1)),c=m?f:c,m=d>=y(0)&((Ht(d)|0)^1)&c<d,y(m?d:c)}function Om(s,l,c,f,d,m,B){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,B=B|0;var k=Ze,Q=Ze,M=0,O=0,q=Ze,se=Ze,Ge=Ze,Me=0,Qe=0,et=0,Xe=0,lt=Ze,Ue=0;et=fr(n[s+4>>2]|0,m)|0,Me=ww(et,m)|0,Qe=pe(et)|0,q=y(ln(l,2,c)),se=y(ln(l,0,c)),ts(l,2,c)|0?k=y(q+y(Gr(n[l+992>>2]|0,c))):gi(l,2)|0&&sr(l,2)|0?(k=y(h[s+908>>2]),Q=y(Cr(s,2)),Q=y(k-y(Q+y(yn(s,2)))),k=y(Or(l,2,c)),k=y(Bi(l,2,y(Q-y(k+y(vu(l,2,c)))),c,c))):k=y(ce),ts(l,0,d)|0?Q=y(se+y(Gr(n[l+996>>2]|0,d))):gi(l,0)|0&&sr(l,0)|0?(Q=y(h[s+912>>2]),lt=y(Cr(s,0)),lt=y(Q-y(lt+y(yn(s,0)))),Q=y(Or(l,0,d)),Q=y(Bi(l,0,y(lt-y(Q+y(vu(l,0,d)))),d,c))):Q=y(ce),M=Ht(k)|0,O=Ht(Q)|0;do if(M^O&&(Ge=y(h[l+396>>2]),!(Ht(Ge)|0)))if(M){k=y(q+y(y(Q-se)*Ge));break}else{lt=y(se+y(y(k-q)/Ge)),Q=O?lt:Q;break}while(0);O=Ht(k)|0,M=Ht(Q)|0,O|M&&(Ue=(O^1)&1,f=c>y(0)&((f|0)!=0&O),k=Qe?k:f?c:k,fa(l,k,Q,m,Qe?Ue:f?2:Ue,O&(M^1)&1,k,Q,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(ln(l,2,c))),Q=y(h[l+912>>2]),Q=y(Q+y(ln(l,0,c)))),fa(l,k,Q,m,1,1,k,Q,1,3635,B)|0,sr(l,et)|0&&!(gi(l,et)|0)?(Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),lt=y(lt-y(yn(s,et))),lt=y(lt-y(re(l,et,c))),lt=y(lt-y(vu(l,et,Qe?c:d))),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt):Xe=21;do if((Xe|0)==21){if(!(gi(l,et)|0)&&(n[s+8>>2]|0)==1){Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(y(lt-y(h[l+908+(Ue<<2)>>2]))*y(.5)),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt;break}!(gi(l,et)|0)&&(n[s+8>>2]|0)==2&&(Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt)}while(0);sr(l,Me)|0&&!(gi(l,Me)|0)?(Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),lt=y(lt-y(yn(s,Me))),lt=y(lt-y(re(l,Me,c))),lt=y(lt-y(vu(l,Me,Qe?d:c))),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt):Xe=30;do if((Xe|0)==30&&!(gi(l,Me)|0)){if((ha(s,l)|0)==2){Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(y(lt-y(h[l+908+(Ue<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt;break}Ue=(ha(s,l)|0)==3,Ue^(n[s+28>>2]|0)==2&&(Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt)}while(0)}function wp(s,l,c){s=s|0,l=l|0,c=c|0;var f=Ze,d=0;d=n[976+(c<<2)>>2]|0,f=y(h[l+908+(d<<2)>>2]),f=y(y(h[s+908+(d<<2)>>2])-f),f=y(f-y(h[l+400+(n[1040+(c<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(c<<2)>>2]<<2)>>2]=f}function UA(s){return s=s|0,(s|1|0)==1|0}function Bw(s){s=s|0;var l=Ze;switch(n[s+56>>2]|0){case 0:case 3:{l=y(h[s+40>>2]),l>y(0)&((Ht(l)|0)^1)?s=o[(n[s+976>>2]|0)+2>>0]|0?1056:992:s=1056;break}default:s=s+52|0}return s|0}function vw(s,l){return s=s|0,l=l|0,(o[s+l>>0]|0)!=0|0}function sr(s,l){return s=s|0,l=l|0,s=s+132|0,pe(l)|0&&(n[(Fn(s,5,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Fn(s,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function vu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,pe(l)|0&&(f=Fn(s,5,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Fn(s,n[1e3+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Gr(f,c))),y(c)}function Mm(s,l,c){return s=s|0,l=l|0,c=y(c),gi(s,l)|0?c=y(Or(s,l,c)):c=y(-y(vu(s,l,c))),y(c)}function Du(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function Ip(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function Bg(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function _A(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function HA(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;if(B=s+4|0,k=n[B>>2]|0,d=k-f|0,m=d>>2,s=l+(m<<2)|0,s>>>0<c>>>0){f=k;do n[f>>2]=n[s>>2],s=s+4|0,f=(n[B>>2]|0)+4|0,n[B>>2]=f;while(s>>>0<c>>>0)}m|0&&Mw(k+(0-m<<2)|0,l|0,d|0)|0}function vg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0;return k=l+4|0,Q=n[k>>2]|0,d=n[s>>2]|0,B=c,m=B-d|0,f=Q+(0-(m>>2)<<2)|0,n[k>>2]=f,(m|0)>0&&Dr(f|0,d|0,m|0)|0,d=s+4|0,m=l+8|0,f=(n[d>>2]|0)-B|0,(f|0)>0&&(Dr(n[m>>2]|0,c|0,f|0)|0,n[m>>2]=(n[m>>2]|0)+(f>>>2<<2)),B=n[s>>2]|0,n[s>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=s+8|0,c=l+12|0,s=n[B>>2]|0,n[B>>2]=n[c>>2],n[c>>2]=s,n[l>>2]=n[k>>2],Q|0}function Dw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[c>>2]|0,(B|0)!=(m|0)){d=s+8|0,c=((m+-4-B|0)>>>2)+1|0,s=B,f=n[d>>2]|0;do n[f>>2]=n[s>>2],f=(n[d>>2]|0)+4|0,n[d>>2]=f,s=s+4|0;while((s|0)!=(m|0));n[l>>2]=B+(c<<2)}}function Um(){dc()}function ga(){var s=0;return s=Kt(4)|0,jA(s),s|0}function jA(s){s=s|0,n[s>>2]=ys()|0}function Sc(s){s=s|0,s|0&&(Dg(s),gt(s))}function Dg(s){s=s|0,tt(n[s>>2]|0)}function _m(s,l,c){s=s|0,l=l|0,c=c|0,Ga(n[s>>2]|0,l,c)}function fo(s,l){s=s|0,l=y(l),pa(n[s>>2]|0,l)}function Wv(s,l){return s=s|0,l=l|0,vw(n[s>>2]|0,l)|0}function Pw(){var s=0;return s=Kt(8)|0,Kv(s,0),s|0}function Kv(s,l){s=s|0,l=l|0,l?l=Ci(n[l>>2]|0)|0:l=co()|0,n[s>>2]=l,n[s+4>>2]=0,bi(l,s)}function AF(s){s=s|0;var l=0;return l=Kt(8)|0,Kv(l,s),l|0}function Vv(s){s=s|0,s|0&&(Pu(s),gt(s))}function Pu(s){s=s|0;var l=0;la(n[s>>2]|0),l=s+4|0,s=n[l>>2]|0,n[l>>2]=0,s|0&&(qA(s),gt(s))}function qA(s){s=s|0,GA(s)}function GA(s){s=s|0,s=n[s>>2]|0,s|0&&SA(s|0)}function Sw(s){return s=s|0,jo(s)|0}function Hm(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(qA(l),gt(l)),_s(n[s>>2]|0)}function fF(s,l){s=s|0,l=l|0,$r(n[s>>2]|0,n[l>>2]|0)}function pF(s,l){s=s|0,l=l|0,ca(n[s>>2]|0,l)}function Jv(s,l,c){s=s|0,l=l|0,c=+c,yu(n[s>>2]|0,l,y(c))}function zv(s,l,c){s=s|0,l=l|0,c=+c,Es(n[s>>2]|0,l,y(c))}function bw(s,l){s=s|0,l=l|0,gu(n[s>>2]|0,l)}function Su(s,l){s=s|0,l=l|0,du(n[s>>2]|0,l)}function hF(s,l){s=s|0,l=l|0,FA(n[s>>2]|0,l)}function gF(s,l){s=s|0,l=l|0,kA(n[s>>2]|0,l)}function Bp(s,l){s=s|0,l=l|0,yc(n[s>>2]|0,l)}function dF(s,l){s=s|0,l=l|0,Ap(n[s>>2]|0,l)}function Xv(s,l,c){s=s|0,l=l|0,c=+c,Cc(n[s>>2]|0,l,y(c))}function YA(s,l,c){s=s|0,l=l|0,c=+c,G(n[s>>2]|0,l,y(c))}function mF(s,l){s=s|0,l=l|0,wl(n[s>>2]|0,l)}function yF(s,l){s=s|0,l=l|0,ag(n[s>>2]|0,l)}function Zv(s,l){s=s|0,l=l|0,fp(n[s>>2]|0,l)}function xw(s,l){s=s|0,l=+l,RA(n[s>>2]|0,y(l))}function kw(s,l){s=s|0,l=+l,Ha(n[s>>2]|0,y(l))}function EF(s,l){s=s|0,l=+l,Gi(n[s>>2]|0,y(l))}function CF(s,l){s=s|0,l=+l,Hs(n[s>>2]|0,y(l))}function Dl(s,l){s=s|0,l=+l,mu(n[s>>2]|0,y(l))}function Qw(s,l){s=s|0,l=+l,yw(n[s>>2]|0,y(l))}function wF(s,l){s=s|0,l=+l,TA(n[s>>2]|0,y(l))}function WA(s){s=s|0,pp(n[s>>2]|0)}function jm(s,l){s=s|0,l=+l,Cs(n[s>>2]|0,y(l))}function bu(s,l){s=s|0,l=+l,ug(n[s>>2]|0,y(l))}function Fw(s){s=s|0,Ag(n[s>>2]|0)}function Rw(s,l){s=s|0,l=+l,hp(n[s>>2]|0,y(l))}function IF(s,l){s=s|0,l=+l,Ic(n[s>>2]|0,y(l))}function $v(s,l){s=s|0,l=+l,bm(n[s>>2]|0,y(l))}function KA(s,l){s=s|0,l=+l,pg(n[s>>2]|0,y(l))}function eD(s,l){s=s|0,l=+l,Cu(n[s>>2]|0,y(l))}function qm(s,l){s=s|0,l=+l,xm(n[s>>2]|0,y(l))}function tD(s,l){s=s|0,l=+l,wu(n[s>>2]|0,y(l))}function rD(s,l){s=s|0,l=+l,Ew(n[s>>2]|0,y(l))}function Gm(s,l){s=s|0,l=+l,Aa(n[s>>2]|0,y(l))}function nD(s,l,c){s=s|0,l=l|0,c=+c,Eu(n[s>>2]|0,l,y(c))}function BF(s,l,c){s=s|0,l=l|0,c=+c,xi(n[s>>2]|0,l,y(c))}function P(s,l,c){s=s|0,l=l|0,c=+c,wc(n[s>>2]|0,l,y(c))}function D(s){return s=s|0,og(n[s>>2]|0)|0}function T(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Ec(d,n[l>>2]|0,c),j(s,d),C=f}function j(s,l){s=s|0,l=l|0,Y(s,n[l+4>>2]|0,+y(h[l>>2]))}function Y(s,l,c){s=s|0,l=l|0,c=+c,n[s>>2]=l,E[s+8>>3]=c}function Ae(s){return s=s|0,sg(n[s>>2]|0)|0}function De(s){return s=s|0,uo(n[s>>2]|0)|0}function vt(s){return s=s|0,mc(n[s>>2]|0)|0}function wt(s){return s=s|0,QA(n[s>>2]|0)|0}function xt(s){return s=s|0,Sm(n[s>>2]|0)|0}function _r(s){return s=s|0,ig(n[s>>2]|0)|0}function is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Dt(d,n[l>>2]|0,c),j(s,d),C=f}function di(s){return s=s|0,ei(n[s>>2]|0)|0}function po(s){return s=s|0,lg(n[s>>2]|0)|0}function VA(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,ua(f,n[l>>2]|0),j(s,f),C=c}function Yo(s){return s=s|0,+ +y(qi(n[s>>2]|0))}function rt(s){return s=s|0,+ +y(es(n[s>>2]|0))}function Ve(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Br(f,n[l>>2]|0),j(s,f),C=c}function ft(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,fg(f,n[l>>2]|0),j(s,f),C=c}function Wt(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Ct(f,n[l>>2]|0),j(s,f),C=c}function vr(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,hg(f,n[l>>2]|0),j(s,f),C=c}function Sn(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,gg(f,n[l>>2]|0),j(s,f),C=c}function Fr(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,km(f,n[l>>2]|0),j(s,f),C=c}function bn(s){return s=s|0,+ +y(Bc(n[s>>2]|0))}function ai(s,l){return s=s|0,l=l|0,+ +y(cg(n[s>>2]|0,l))}function tn(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,ct(d,n[l>>2]|0,c),j(s,d),C=f}function ho(s,l,c){s=s|0,l=l|0,c=c|0,nr(n[s>>2]|0,n[l>>2]|0,c)}function vF(s,l){s=s|0,l=l|0,ms(n[s>>2]|0,n[l>>2]|0)}function tve(s){return s=s|0,wi(n[s>>2]|0)|0}function rve(s){return s=s|0,s=ht(n[s>>2]|0)|0,s?s=Sw(s)|0:s=0,s|0}function nve(s,l){return s=s|0,l=l|0,s=gs(n[s>>2]|0,l)|0,s?s=Sw(s)|0:s=0,s|0}function ive(s,l){s=s|0,l=l|0;var c=0,f=0;f=Kt(4)|0,zG(f,l),c=s+4|0,l=n[c>>2]|0,n[c>>2]=f,l|0&&(qA(l),gt(l)),It(n[s>>2]|0,1)}function zG(s,l){s=s|0,l=l|0,dve(s,l)}function sve(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0;var B=0,k=0;B=C,C=C+16|0,k=B,ove(k,jo(l)|0,+c,f,+d,m),h[s>>2]=y(+E[k>>3]),h[s+4>>2]=y(+E[k+8>>3]),C=B}function ove(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0,k=0,Q=0,M=0,O=0;B=C,C=C+32|0,O=B+8|0,M=B+20|0,Q=B,k=B+16|0,E[O>>3]=c,n[M>>2]=f,E[Q>>3]=d,n[k>>2]=m,ave(s,n[l+4>>2]|0,O,M,Q,k),C=B}function ave(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0;B=C,C=C+16|0,k=B,Ka(k),l=da(l)|0,lve(s,l,+E[c>>3],n[f>>2]|0,+E[d>>3],n[m>>2]|0),Va(k),C=B}function da(s){return s=s|0,n[s>>2]|0}function lve(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0;B=Pl(cve()|0)|0,c=+JA(c),f=DF(f)|0,d=+JA(d),uve(s,hi(0,B|0,l|0,+c,f|0,+d,DF(m)|0)|0)}function cve(){var s=0;return o[7608]|0||(hve(9120),s=7608,n[s>>2]=1,n[s+4>>2]=0),9120}function Pl(s){return s=s|0,n[s+8>>2]|0}function JA(s){return s=+s,+ +PF(s)}function DF(s){return s=s|0,ZG(s)|0}function uve(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+32|0,c=d,f=l,f&1?(Ave(c,0),ii(f|0,c|0)|0,fve(s,c),pve(c)):(n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]),C=d}function Ave(s,l){s=s|0,l=l|0,XG(s,l),n[s+8>>2]=0,o[s+24>>0]=0}function fve(s,l){s=s|0,l=l|0,l=l+8|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]}function pve(s){s=s|0,o[s+24>>0]=0}function XG(s,l){s=s|0,l=l|0,n[s>>2]=l}function ZG(s){return s=s|0,s|0}function PF(s){return s=+s,+s}function hve(s){s=s|0,Sl(s,gve()|0,4)}function gve(){return 1064}function Sl(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=up(l|0,c+1|0)|0}function dve(s,l){s=s|0,l=l|0,l=n[l>>2]|0,n[s>>2]=l,yl(l|0)}function mve(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(qA(l),gt(l)),It(n[s>>2]|0,0)}function yve(s){s=s|0,Tt(n[s>>2]|0)}function Eve(s){return s=s|0,er(n[s>>2]|0)|0}function Cve(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,vc(n[s>>2]|0,y(l),y(c),f)}function wve(s){return s=s|0,+ +y(Il(n[s>>2]|0))}function Ive(s){return s=s|0,+ +y(dg(n[s>>2]|0))}function Bve(s){return s=s|0,+ +y(Iu(n[s>>2]|0))}function vve(s){return s=s|0,+ +y(LA(n[s>>2]|0))}function Dve(s){return s=s|0,+ +y(gp(n[s>>2]|0))}function Pve(s){return s=s|0,+ +y(ja(n[s>>2]|0))}function Sve(s,l){s=s|0,l=l|0,E[s>>3]=+y(Il(n[l>>2]|0)),E[s+8>>3]=+y(dg(n[l>>2]|0)),E[s+16>>3]=+y(Iu(n[l>>2]|0)),E[s+24>>3]=+y(LA(n[l>>2]|0)),E[s+32>>3]=+y(gp(n[l>>2]|0)),E[s+40>>3]=+y(ja(n[l>>2]|0))}function bve(s,l){return s=s|0,l=l|0,+ +y(mg(n[s>>2]|0,l))}function xve(s,l){return s=s|0,l=l|0,+ +y(dp(n[s>>2]|0,l))}function kve(s,l){return s=s|0,l=l|0,+ +y(qo(n[s>>2]|0,l))}function Qve(){return Pn()|0}function Fve(){Rve(),Tve(),Lve(),Nve(),Ove(),Mve()}function Rve(){OLe(11713,4938,1)}function Tve(){rLe(10448)}function Lve(){OTe(10408)}function Nve(){oTe(10324)}function Ove(){hFe(10096)}function Mve(){Uve(9132)}function Uve(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,qe=0,Nt=0,Mr=0,or=0,Xt=0,Pr=0,Lr=0,ir=0,xn=0,go=0,mo=0,yo=0,ya=0,Fp=0,Rp=0,bl=0,Tp=0,Fu=0,Ru=0,Lp=0,Np=0,Op=0,Xr=0,xl=0,Mp=0,xc=0,Up=0,_p=0,Tu=0,Lu=0,kc=0,qs=0,za=0,Wo=0,kl=0,nf=0,sf=0,Nu=0,of=0,af=0,Gs=0,vs=0,Ql=0,Rn=0,lf=0,Eo=0,Qc=0,Co=0,Fc=0,cf=0,uf=0,Rc=0,Ys=0,Fl=0,Af=0,ff=0,pf=0,xr=0,Jn=0,Ds=0,wo=0,Ws=0,Rr=0,ur=0,Rl=0;l=C,C=C+672|0,c=l+656|0,Rl=l+648|0,ur=l+640|0,Rr=l+632|0,Ws=l+624|0,wo=l+616|0,Ds=l+608|0,Jn=l+600|0,xr=l+592|0,pf=l+584|0,ff=l+576|0,Af=l+568|0,Fl=l+560|0,Ys=l+552|0,Rc=l+544|0,uf=l+536|0,cf=l+528|0,Fc=l+520|0,Co=l+512|0,Qc=l+504|0,Eo=l+496|0,lf=l+488|0,Rn=l+480|0,Ql=l+472|0,vs=l+464|0,Gs=l+456|0,af=l+448|0,of=l+440|0,Nu=l+432|0,sf=l+424|0,nf=l+416|0,kl=l+408|0,Wo=l+400|0,za=l+392|0,qs=l+384|0,kc=l+376|0,Lu=l+368|0,Tu=l+360|0,_p=l+352|0,Up=l+344|0,xc=l+336|0,Mp=l+328|0,xl=l+320|0,Xr=l+312|0,Op=l+304|0,Np=l+296|0,Lp=l+288|0,Ru=l+280|0,Fu=l+272|0,Tp=l+264|0,bl=l+256|0,Rp=l+248|0,Fp=l+240|0,ya=l+232|0,yo=l+224|0,mo=l+216|0,go=l+208|0,xn=l+200|0,ir=l+192|0,Lr=l+184|0,Pr=l+176|0,Xt=l+168|0,or=l+160|0,Mr=l+152|0,Nt=l+144|0,qe=l+136|0,Ue=l+128|0,lt=l+120|0,Xe=l+112|0,et=l+104|0,Qe=l+96|0,Me=l+88|0,Ge=l+80|0,se=l+72|0,q=l+64|0,O=l+56|0,M=l+48|0,Q=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,f=l,_ve(s,3646),Hve(s,3651,2)|0,jve(s,3665,2)|0,qve(s,3682,18)|0,n[Rl>>2]=19,n[Rl+4>>2]=0,n[c>>2]=n[Rl>>2],n[c+4>>2]=n[Rl+4>>2],Tw(s,3690,c)|0,n[ur>>2]=1,n[ur+4>>2]=0,n[c>>2]=n[ur>>2],n[c+4>>2]=n[ur+4>>2],Gve(s,3696,c)|0,n[Rr>>2]=2,n[Rr+4>>2]=0,n[c>>2]=n[Rr>>2],n[c+4>>2]=n[Rr+4>>2],xu(s,3706,c)|0,n[Ws>>2]=1,n[Ws+4>>2]=0,n[c>>2]=n[Ws>>2],n[c+4>>2]=n[Ws+4>>2],Pg(s,3722,c)|0,n[wo>>2]=2,n[wo+4>>2]=0,n[c>>2]=n[wo>>2],n[c+4>>2]=n[wo+4>>2],Pg(s,3734,c)|0,n[Ds>>2]=3,n[Ds+4>>2]=0,n[c>>2]=n[Ds>>2],n[c+4>>2]=n[Ds+4>>2],xu(s,3753,c)|0,n[Jn>>2]=4,n[Jn+4>>2]=0,n[c>>2]=n[Jn>>2],n[c+4>>2]=n[Jn+4>>2],xu(s,3769,c)|0,n[xr>>2]=5,n[xr+4>>2]=0,n[c>>2]=n[xr>>2],n[c+4>>2]=n[xr+4>>2],xu(s,3783,c)|0,n[pf>>2]=6,n[pf+4>>2]=0,n[c>>2]=n[pf>>2],n[c+4>>2]=n[pf+4>>2],xu(s,3796,c)|0,n[ff>>2]=7,n[ff+4>>2]=0,n[c>>2]=n[ff>>2],n[c+4>>2]=n[ff+4>>2],xu(s,3813,c)|0,n[Af>>2]=8,n[Af+4>>2]=0,n[c>>2]=n[Af>>2],n[c+4>>2]=n[Af+4>>2],xu(s,3825,c)|0,n[Fl>>2]=3,n[Fl+4>>2]=0,n[c>>2]=n[Fl>>2],n[c+4>>2]=n[Fl+4>>2],Pg(s,3843,c)|0,n[Ys>>2]=4,n[Ys+4>>2]=0,n[c>>2]=n[Ys>>2],n[c+4>>2]=n[Ys+4>>2],Pg(s,3853,c)|0,n[Rc>>2]=9,n[Rc+4>>2]=0,n[c>>2]=n[Rc>>2],n[c+4>>2]=n[Rc+4>>2],xu(s,3870,c)|0,n[uf>>2]=10,n[uf+4>>2]=0,n[c>>2]=n[uf>>2],n[c+4>>2]=n[uf+4>>2],xu(s,3884,c)|0,n[cf>>2]=11,n[cf+4>>2]=0,n[c>>2]=n[cf>>2],n[c+4>>2]=n[cf+4>>2],xu(s,3896,c)|0,n[Fc>>2]=1,n[Fc+4>>2]=0,n[c>>2]=n[Fc>>2],n[c+4>>2]=n[Fc+4>>2],Is(s,3907,c)|0,n[Co>>2]=2,n[Co+4>>2]=0,n[c>>2]=n[Co>>2],n[c+4>>2]=n[Co+4>>2],Is(s,3915,c)|0,n[Qc>>2]=3,n[Qc+4>>2]=0,n[c>>2]=n[Qc>>2],n[c+4>>2]=n[Qc+4>>2],Is(s,3928,c)|0,n[Eo>>2]=4,n[Eo+4>>2]=0,n[c>>2]=n[Eo>>2],n[c+4>>2]=n[Eo+4>>2],Is(s,3948,c)|0,n[lf>>2]=5,n[lf+4>>2]=0,n[c>>2]=n[lf>>2],n[c+4>>2]=n[lf+4>>2],Is(s,3960,c)|0,n[Rn>>2]=6,n[Rn+4>>2]=0,n[c>>2]=n[Rn>>2],n[c+4>>2]=n[Rn+4>>2],Is(s,3974,c)|0,n[Ql>>2]=7,n[Ql+4>>2]=0,n[c>>2]=n[Ql>>2],n[c+4>>2]=n[Ql+4>>2],Is(s,3983,c)|0,n[vs>>2]=20,n[vs+4>>2]=0,n[c>>2]=n[vs>>2],n[c+4>>2]=n[vs+4>>2],Tw(s,3999,c)|0,n[Gs>>2]=8,n[Gs+4>>2]=0,n[c>>2]=n[Gs>>2],n[c+4>>2]=n[Gs+4>>2],Is(s,4012,c)|0,n[af>>2]=9,n[af+4>>2]=0,n[c>>2]=n[af>>2],n[c+4>>2]=n[af+4>>2],Is(s,4022,c)|0,n[of>>2]=21,n[of+4>>2]=0,n[c>>2]=n[of>>2],n[c+4>>2]=n[of+4>>2],Tw(s,4039,c)|0,n[Nu>>2]=10,n[Nu+4>>2]=0,n[c>>2]=n[Nu>>2],n[c+4>>2]=n[Nu+4>>2],Is(s,4053,c)|0,n[sf>>2]=11,n[sf+4>>2]=0,n[c>>2]=n[sf>>2],n[c+4>>2]=n[sf+4>>2],Is(s,4065,c)|0,n[nf>>2]=12,n[nf+4>>2]=0,n[c>>2]=n[nf>>2],n[c+4>>2]=n[nf+4>>2],Is(s,4084,c)|0,n[kl>>2]=13,n[kl+4>>2]=0,n[c>>2]=n[kl>>2],n[c+4>>2]=n[kl+4>>2],Is(s,4097,c)|0,n[Wo>>2]=14,n[Wo+4>>2]=0,n[c>>2]=n[Wo>>2],n[c+4>>2]=n[Wo+4>>2],Is(s,4117,c)|0,n[za>>2]=15,n[za+4>>2]=0,n[c>>2]=n[za>>2],n[c+4>>2]=n[za+4>>2],Is(s,4129,c)|0,n[qs>>2]=16,n[qs+4>>2]=0,n[c>>2]=n[qs>>2],n[c+4>>2]=n[qs+4>>2],Is(s,4148,c)|0,n[kc>>2]=17,n[kc+4>>2]=0,n[c>>2]=n[kc>>2],n[c+4>>2]=n[kc+4>>2],Is(s,4161,c)|0,n[Lu>>2]=18,n[Lu+4>>2]=0,n[c>>2]=n[Lu>>2],n[c+4>>2]=n[Lu+4>>2],Is(s,4181,c)|0,n[Tu>>2]=5,n[Tu+4>>2]=0,n[c>>2]=n[Tu>>2],n[c+4>>2]=n[Tu+4>>2],Pg(s,4196,c)|0,n[_p>>2]=6,n[_p+4>>2]=0,n[c>>2]=n[_p>>2],n[c+4>>2]=n[_p+4>>2],Pg(s,4206,c)|0,n[Up>>2]=7,n[Up+4>>2]=0,n[c>>2]=n[Up>>2],n[c+4>>2]=n[Up+4>>2],Pg(s,4217,c)|0,n[xc>>2]=3,n[xc+4>>2]=0,n[c>>2]=n[xc>>2],n[c+4>>2]=n[xc+4>>2],zA(s,4235,c)|0,n[Mp>>2]=1,n[Mp+4>>2]=0,n[c>>2]=n[Mp>>2],n[c+4>>2]=n[Mp+4>>2],SF(s,4251,c)|0,n[xl>>2]=4,n[xl+4>>2]=0,n[c>>2]=n[xl>>2],n[c+4>>2]=n[xl+4>>2],zA(s,4263,c)|0,n[Xr>>2]=5,n[Xr+4>>2]=0,n[c>>2]=n[Xr>>2],n[c+4>>2]=n[Xr+4>>2],zA(s,4279,c)|0,n[Op>>2]=6,n[Op+4>>2]=0,n[c>>2]=n[Op>>2],n[c+4>>2]=n[Op+4>>2],zA(s,4293,c)|0,n[Np>>2]=7,n[Np+4>>2]=0,n[c>>2]=n[Np>>2],n[c+4>>2]=n[Np+4>>2],zA(s,4306,c)|0,n[Lp>>2]=8,n[Lp+4>>2]=0,n[c>>2]=n[Lp>>2],n[c+4>>2]=n[Lp+4>>2],zA(s,4323,c)|0,n[Ru>>2]=9,n[Ru+4>>2]=0,n[c>>2]=n[Ru>>2],n[c+4>>2]=n[Ru+4>>2],zA(s,4335,c)|0,n[Fu>>2]=2,n[Fu+4>>2]=0,n[c>>2]=n[Fu>>2],n[c+4>>2]=n[Fu+4>>2],SF(s,4353,c)|0,n[Tp>>2]=12,n[Tp+4>>2]=0,n[c>>2]=n[Tp>>2],n[c+4>>2]=n[Tp+4>>2],Sg(s,4363,c)|0,n[bl>>2]=1,n[bl+4>>2]=0,n[c>>2]=n[bl>>2],n[c+4>>2]=n[bl+4>>2],XA(s,4376,c)|0,n[Rp>>2]=2,n[Rp+4>>2]=0,n[c>>2]=n[Rp>>2],n[c+4>>2]=n[Rp+4>>2],XA(s,4388,c)|0,n[Fp>>2]=13,n[Fp+4>>2]=0,n[c>>2]=n[Fp>>2],n[c+4>>2]=n[Fp+4>>2],Sg(s,4402,c)|0,n[ya>>2]=14,n[ya+4>>2]=0,n[c>>2]=n[ya>>2],n[c+4>>2]=n[ya+4>>2],Sg(s,4411,c)|0,n[yo>>2]=15,n[yo+4>>2]=0,n[c>>2]=n[yo>>2],n[c+4>>2]=n[yo+4>>2],Sg(s,4421,c)|0,n[mo>>2]=16,n[mo+4>>2]=0,n[c>>2]=n[mo>>2],n[c+4>>2]=n[mo+4>>2],Sg(s,4433,c)|0,n[go>>2]=17,n[go+4>>2]=0,n[c>>2]=n[go>>2],n[c+4>>2]=n[go+4>>2],Sg(s,4446,c)|0,n[xn>>2]=18,n[xn+4>>2]=0,n[c>>2]=n[xn>>2],n[c+4>>2]=n[xn+4>>2],Sg(s,4458,c)|0,n[ir>>2]=3,n[ir+4>>2]=0,n[c>>2]=n[ir>>2],n[c+4>>2]=n[ir+4>>2],XA(s,4471,c)|0,n[Lr>>2]=1,n[Lr+4>>2]=0,n[c>>2]=n[Lr>>2],n[c+4>>2]=n[Lr+4>>2],iD(s,4486,c)|0,n[Pr>>2]=10,n[Pr+4>>2]=0,n[c>>2]=n[Pr>>2],n[c+4>>2]=n[Pr+4>>2],zA(s,4496,c)|0,n[Xt>>2]=11,n[Xt+4>>2]=0,n[c>>2]=n[Xt>>2],n[c+4>>2]=n[Xt+4>>2],zA(s,4508,c)|0,n[or>>2]=3,n[or+4>>2]=0,n[c>>2]=n[or>>2],n[c+4>>2]=n[or+4>>2],SF(s,4519,c)|0,n[Mr>>2]=4,n[Mr+4>>2]=0,n[c>>2]=n[Mr>>2],n[c+4>>2]=n[Mr+4>>2],Yve(s,4530,c)|0,n[Nt>>2]=19,n[Nt+4>>2]=0,n[c>>2]=n[Nt>>2],n[c+4>>2]=n[Nt+4>>2],Wve(s,4542,c)|0,n[qe>>2]=12,n[qe+4>>2]=0,n[c>>2]=n[qe>>2],n[c+4>>2]=n[qe+4>>2],Kve(s,4554,c)|0,n[Ue>>2]=13,n[Ue+4>>2]=0,n[c>>2]=n[Ue>>2],n[c+4>>2]=n[Ue+4>>2],Vve(s,4568,c)|0,n[lt>>2]=2,n[lt+4>>2]=0,n[c>>2]=n[lt>>2],n[c+4>>2]=n[lt+4>>2],Jve(s,4578,c)|0,n[Xe>>2]=20,n[Xe+4>>2]=0,n[c>>2]=n[Xe>>2],n[c+4>>2]=n[Xe+4>>2],zve(s,4587,c)|0,n[et>>2]=22,n[et+4>>2]=0,n[c>>2]=n[et>>2],n[c+4>>2]=n[et+4>>2],Tw(s,4602,c)|0,n[Qe>>2]=23,n[Qe+4>>2]=0,n[c>>2]=n[Qe>>2],n[c+4>>2]=n[Qe+4>>2],Tw(s,4619,c)|0,n[Me>>2]=14,n[Me+4>>2]=0,n[c>>2]=n[Me>>2],n[c+4>>2]=n[Me+4>>2],Xve(s,4629,c)|0,n[Ge>>2]=1,n[Ge+4>>2]=0,n[c>>2]=n[Ge>>2],n[c+4>>2]=n[Ge+4>>2],Zve(s,4637,c)|0,n[se>>2]=4,n[se+4>>2]=0,n[c>>2]=n[se>>2],n[c+4>>2]=n[se+4>>2],XA(s,4653,c)|0,n[q>>2]=5,n[q+4>>2]=0,n[c>>2]=n[q>>2],n[c+4>>2]=n[q+4>>2],XA(s,4669,c)|0,n[O>>2]=6,n[O+4>>2]=0,n[c>>2]=n[O>>2],n[c+4>>2]=n[O+4>>2],XA(s,4686,c)|0,n[M>>2]=7,n[M+4>>2]=0,n[c>>2]=n[M>>2],n[c+4>>2]=n[M+4>>2],XA(s,4701,c)|0,n[Q>>2]=8,n[Q+4>>2]=0,n[c>>2]=n[Q>>2],n[c+4>>2]=n[Q+4>>2],XA(s,4719,c)|0,n[k>>2]=9,n[k+4>>2]=0,n[c>>2]=n[k>>2],n[c+4>>2]=n[k+4>>2],XA(s,4736,c)|0,n[B>>2]=21,n[B+4>>2]=0,n[c>>2]=n[B>>2],n[c+4>>2]=n[B+4>>2],$ve(s,4754,c)|0,n[m>>2]=2,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],iD(s,4772,c)|0,n[d>>2]=3,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],iD(s,4790,c)|0,n[f>>2]=4,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],iD(s,4808,c)|0,C=l}function _ve(s,l){s=s|0,l=l|0;var c=0;c=sFe()|0,n[s>>2]=c,oFe(c,l),xp(n[s>>2]|0)}function Hve(s,l,c){return s=s|0,l=l|0,c=c|0,YQe(s,pn(l)|0,c,0),s|0}function jve(s,l,c){return s=s|0,l=l|0,c=c|0,xQe(s,pn(l)|0,c,0),s|0}function qve(s,l,c){return s=s|0,l=l|0,c=c|0,gQe(s,pn(l)|0,c,0),s|0}function Tw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],$ke(s,l,d),C=f,s|0}function Gve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Tke(s,l,d),C=f,s|0}function xu(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yke(s,l,d),C=f,s|0}function Pg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rke(s,l,d),C=f,s|0}function Is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_xe(s,l,d),C=f,s|0}function zA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vxe(s,l,d),C=f,s|0}function SF(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lxe(s,l,d),C=f,s|0}function Sg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Tbe(s,l,d),C=f,s|0}function XA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ybe(s,l,d),C=f,s|0}function iD(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rbe(s,l,d),C=f,s|0}function Yve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_Se(s,l,d),C=f,s|0}function Wve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vSe(s,l,d),C=f,s|0}function Kve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],cSe(s,l,d),C=f,s|0}function Vve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],VPe(s,l,d),C=f,s|0}function Jve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],QPe(s,l,d),C=f,s|0}function zve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hPe(s,l,d),C=f,s|0}function Xve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZDe(s,l,d),C=f,s|0}function Zve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TDe(s,l,d),C=f,s|0}function $ve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eDe(s,l,d),C=f,s|0}function eDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tDe(s,c,d,1),C=f}function pn(s){return s=s|0,s|0}function tDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=bF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=rDe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,nDe(m,f)|0,f),C=d}function bF(){var s=0,l=0;if(o[7616]|0||(t9(9136),tr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9136)|0)){s=9136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));t9(9136)}return 9136}function rDe(s){return s=s|0,0}function nDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=bF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],e9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(oDe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function hn(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0;B=C,C=C+32|0,se=B+24|0,q=B+20|0,Q=B+16|0,O=B+12|0,M=B+8|0,k=B+4|0,Ge=B,n[q>>2]=l,n[Q>>2]=c,n[O>>2]=f,n[M>>2]=d,n[k>>2]=m,m=s+28|0,n[Ge>>2]=n[m>>2],n[se>>2]=n[Ge>>2],iDe(s+24|0,se,q,O,M,Q,k)|0,n[m>>2]=n[n[m>>2]>>2],C=B}function iDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,s=sDe(l)|0,l=Kt(24)|0,$G(l+4|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[s>>2],n[s>>2]=l,l|0}function sDe(s){return s=s|0,n[s>>2]|0}function $G(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function gr(s,l){return s=s|0,l=l|0,l|s|0}function e9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function oDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=aDe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,lDe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],e9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,cDe(s,k),uDe(k),C=M;return}}function aDe(s){return s=s|0,357913941}function lDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function cDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function uDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function t9(s){s=s|0,pDe(s)}function ADe(s){s=s|0,fDe(s+24|0)}function Tr(s){return s=s|0,n[s>>2]|0}function fDe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function pDe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,3,l,hDe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Kr(){return 9228}function hDe(){return 1140}function gDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=dDe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=mDe(l,f)|0,C=c,l|0}function Vr(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function dDe(s){return s=s|0,(n[(bF()|0)+24>>2]|0)+(s*12|0)|0}function mDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+48|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),rf[c&31](f,s),f=yDe(f)|0,C=d,f|0}function yDe(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(r9()|0)|0,f?(kF(l,f),QF(c,l),EDe(s,c),s=FF(l)|0):s=CDe(s)|0,C=d,s|0}function r9(){var s=0;return o[7632]|0||(kDe(9184),tr(25,9184,U|0)|0,s=7632,n[s>>2]=1,n[s+4>>2]=0),9184}function xF(s){return s=s|0,n[s+36>>2]|0}function kF(s,l){s=s|0,l=l|0,n[s>>2]=l,n[s+4>>2]=s,n[s+8>>2]=0}function QF(s,l){s=s|0,l=l|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=0}function EDe(s,l){s=s|0,l=l|0,vDe(l,s,s+8|0,s+16|0,s+24|0,s+32|0,s+40|0)|0}function FF(s){return s=s|0,n[(n[s+4>>2]|0)+8>>2]|0}function CDe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0;Q=C,C=C+16|0,c=Q+4|0,f=Q,d=Wa(8)|0,m=d,B=Kt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[s>>2],k=k+4|0,s=s+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Kt(8)|0,B=n[l>>2]|0,n[f>>2]=0,n[c>>2]=n[f>>2],n9(k,B,c),n[d>>2]=k,C=Q,m|0}function n9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1092,n[c+12>>2]=l,n[s+4>>2]=c}function wDe(s){s=s|0,zm(s),gt(s)}function IDe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function BDe(s){s=s|0,gt(s)}function vDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,m=DDe(n[s>>2]|0,l,c,f,d,m,B)|0,B=s+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function DDe(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0;var k=0,Q=0;return k=C,C=C+16|0,Q=k,Ka(Q),s=da(s)|0,B=PDe(s,+E[l>>3],+E[c>>3],+E[f>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Va(Q),C=k,B|0}function PDe(s,l,c,f,d,m,B){s=s|0,l=+l,c=+c,f=+f,d=+d,m=+m,B=+B;var k=0;return k=Pl(SDe()|0)|0,l=+JA(l),c=+JA(c),f=+JA(f),d=+JA(d),m=+JA(m),Ms(0,k|0,s|0,+l,+c,+f,+d,+m,+ +JA(B))|0}function SDe(){var s=0;return o[7624]|0||(bDe(9172),s=7624,n[s>>2]=1,n[s+4>>2]=0),9172}function bDe(s){s=s|0,Sl(s,xDe()|0,6)}function xDe(){return 1112}function kDe(s){s=s|0,vp(s)}function QDe(s){s=s|0,i9(s+24|0),s9(s+16|0)}function i9(s){s=s|0,RDe(s)}function s9(s){s=s|0,FDe(s)}function FDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function RDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function vp(s){s=s|0;var l=0;n[s+16>>2]=0,n[s+20>>2]=0,l=s+24|0,n[l>>2]=0,n[s+28>>2]=l,n[s+36>>2]=0,o[s+40>>0]=0,o[s+41>>0]=0}function TDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],LDe(s,c,d,0),C=f}function LDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=RF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=NDe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,ODe(m,f)|0,f),C=d}function RF(){var s=0,l=0;if(o[7640]|0||(a9(9232),tr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9232)|0)){s=9232,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));a9(9232)}return 9232}function NDe(s){return s=s|0,0}function ODe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=RF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],o9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(MDe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function o9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function MDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=UDe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,_De(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],o9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,HDe(s,k),jDe(k),C=M;return}}function UDe(s){return s=s|0,357913941}function _De(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function HDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function jDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function a9(s){s=s|0,YDe(s)}function qDe(s){s=s|0,GDe(s+24|0)}function GDe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function YDe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,WDe()|0,3),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function WDe(){return 1144}function KDe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+16|0,B=m+8|0,k=m,Q=VDe(s)|0,s=n[Q+4>>2]|0,n[k>>2]=n[Q>>2],n[k+4>>2]=s,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],JDe(l,B,c,f,d),C=m}function VDe(s){return s=s|0,(n[(RF()|0)+24>>2]|0)+(s*12|0)|0}function JDe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,k=0,Q=0,M=0;M=C,C=C+16|0,B=M+2|0,k=M+1|0,Q=M,m=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(m=n[(n[s>>2]|0)+m>>2]|0),ku(B,c),c=+Qu(B,c),ku(k,f),f=+Qu(k,f),ZA(Q,d),Q=$A(Q,d)|0,I7[m&1](s,c,f,Q),C=M}function ku(s,l){s=s|0,l=+l}function Qu(s,l){return s=s|0,l=+l,+ +XDe(l)}function ZA(s,l){s=s|0,l=l|0}function $A(s,l){return s=s|0,l=l|0,zDe(l)|0}function zDe(s){return s=s|0,s|0}function XDe(s){return s=+s,+s}function ZDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],$De(s,c,d,1),C=f}function $De(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=TF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=ePe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,tPe(m,f)|0,f),C=d}function TF(){var s=0,l=0;if(o[7648]|0||(c9(9268),tr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9268)|0)){s=9268,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));c9(9268)}return 9268}function ePe(s){return s=s|0,0}function tPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=TF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],l9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(rPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function l9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function rPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=nPe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,iPe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],l9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,sPe(s,k),oPe(k),C=M;return}}function nPe(s){return s=s|0,357913941}function iPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function sPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function oPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function c9(s){s=s|0,cPe(s)}function aPe(s){s=s|0,lPe(s+24|0)}function lPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function cPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,4,l,uPe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function uPe(){return 1160}function APe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=fPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=pPe(l,f)|0,C=c,l|0}function fPe(s){return s=s|0,(n[(TF()|0)+24>>2]|0)+(s*12|0)|0}function pPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),u9(Ng[c&31](s)|0)|0}function u9(s){return s=s|0,s&1|0}function hPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],gPe(s,c,d,0),C=f}function gPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=LF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=dPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,mPe(m,f)|0,f),C=d}function LF(){var s=0,l=0;if(o[7656]|0||(f9(9304),tr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9304)|0)){s=9304,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));f9(9304)}return 9304}function dPe(s){return s=s|0,0}function mPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=LF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],A9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(yPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function A9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function yPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=EPe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,CPe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],A9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,wPe(s,k),IPe(k),C=M;return}}function EPe(s){return s=s|0,357913941}function CPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function wPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function IPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function f9(s){s=s|0,DPe(s)}function BPe(s){s=s|0,vPe(s+24|0)}function vPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function DPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,PPe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function PPe(){return 1164}function SPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=bPe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xPe(l,d,c),C=f}function bPe(s){return s=s|0,(n[(LF()|0)+24>>2]|0)+(s*12|0)|0}function xPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Dp(d,c),c=Pp(d,c)|0,rf[f&31](s,c),Sp(d),C=m}function Dp(s,l){s=s|0,l=l|0,kPe(s,l)}function Pp(s,l){return s=s|0,l=l|0,s|0}function Sp(s){s=s|0,qA(s)}function kPe(s,l){s=s|0,l=l|0,NF(s,l)}function NF(s,l){s=s|0,l=l|0,n[s>>2]=l}function QPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],FPe(s,c,d,0),C=f}function FPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=OF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=RPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,TPe(m,f)|0,f),C=d}function OF(){var s=0,l=0;if(o[7664]|0||(h9(9340),tr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9340)|0)){s=9340,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));h9(9340)}return 9340}function RPe(s){return s=s|0,0}function TPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=OF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],p9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(LPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function p9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function LPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=NPe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,OPe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],p9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,MPe(s,k),UPe(k),C=M;return}}function NPe(s){return s=s|0,357913941}function OPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function MPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function UPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function h9(s){s=s|0,jPe(s)}function _Pe(s){s=s|0,HPe(s+24|0)}function HPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function jPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,4,l,qPe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function qPe(){return 1180}function GPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=YPe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=WPe(l,d,c)|0,C=f,c|0}function YPe(s){return s=s|0,(n[(OF()|0)+24>>2]|0)+(s*12|0)|0}function WPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),bg(d,c),d=xg(d,c)|0,d=sD(RR[f&15](s,d)|0)|0,C=m,d|0}function bg(s,l){s=s|0,l=l|0}function xg(s,l){return s=s|0,l=l|0,KPe(l)|0}function sD(s){return s=s|0,s|0}function KPe(s){return s=s|0,s|0}function VPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JPe(s,c,d,0),C=f}function JPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=MF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=zPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,XPe(m,f)|0,f),C=d}function MF(){var s=0,l=0;if(o[7672]|0||(d9(9376),tr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9376)|0)){s=9376,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));d9(9376)}return 9376}function zPe(s){return s=s|0,0}function XPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=MF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],g9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(ZPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function g9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function ZPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=$Pe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,eSe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],g9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,tSe(s,k),rSe(k),C=M;return}}function $Pe(s){return s=s|0,357913941}function eSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function tSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function rSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function d9(s){s=s|0,sSe(s)}function nSe(s){s=s|0,iSe(s+24|0)}function iSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function sSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,m9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function m9(){return 1196}function oSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=aSe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=lSe(l,f)|0,C=c,l|0}function aSe(s){return s=s|0,(n[(MF()|0)+24>>2]|0)+(s*12|0)|0}function lSe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),sD(Ng[c&31](s)|0)|0}function cSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uSe(s,c,d,1),C=f}function uSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=UF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=ASe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,fSe(m,f)|0,f),C=d}function UF(){var s=0,l=0;if(o[7680]|0||(E9(9412),tr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9412)|0)){s=9412,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));E9(9412)}return 9412}function ASe(s){return s=s|0,0}function fSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=UF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],y9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(pSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function y9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function pSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=hSe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,gSe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],y9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,dSe(s,k),mSe(k),C=M;return}}function hSe(s){return s=s|0,357913941}function gSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function dSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function mSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function E9(s){s=s|0,CSe(s)}function ySe(s){s=s|0,ESe(s+24|0)}function ESe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function CSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,C9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function C9(){return 1200}function wSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=ISe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=BSe(l,f)|0,C=c,l|0}function ISe(s){return s=s|0,(n[(UF()|0)+24>>2]|0)+(s*12|0)|0}function BSe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),oD(Ng[c&31](s)|0)|0}function oD(s){return s=s|0,s|0}function vSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],DSe(s,c,d,0),C=f}function DSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=_F()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=PSe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,SSe(m,f)|0,f),C=d}function _F(){var s=0,l=0;if(o[7688]|0||(I9(9448),tr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9448)|0)){s=9448,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));I9(9448)}return 9448}function PSe(s){return s=s|0,0}function SSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=_F()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],w9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(bSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function w9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function bSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=xSe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,kSe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],w9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,QSe(s,k),FSe(k),C=M;return}}function xSe(s){return s=s|0,357913941}function kSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function QSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function FSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function I9(s){s=s|0,LSe(s)}function RSe(s){s=s|0,TSe(s+24|0)}function TSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function LSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,B9()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function B9(){return 1204}function NSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=OSe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],MSe(l,d,c),C=f}function OSe(s){return s=s|0,(n[(_F()|0)+24>>2]|0)+(s*12|0)|0}function MSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),HF(d,c),d=jF(d,c)|0,rf[f&31](s,d),C=m}function HF(s,l){s=s|0,l=l|0}function jF(s,l){return s=s|0,l=l|0,USe(l)|0}function USe(s){return s=s|0,s|0}function _Se(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],HSe(s,c,d,0),C=f}function HSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=qF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=jSe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,qSe(m,f)|0,f),C=d}function qF(){var s=0,l=0;if(o[7696]|0||(D9(9484),tr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9484)|0)){s=9484,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));D9(9484)}return 9484}function jSe(s){return s=s|0,0}function qSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=qF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],v9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(GSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function v9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function GSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=YSe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,WSe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],v9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,KSe(s,k),VSe(k),C=M;return}}function YSe(s){return s=s|0,357913941}function WSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function KSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function VSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function D9(s){s=s|0,XSe(s)}function JSe(s){s=s|0,zSe(s+24|0)}function zSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function XSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,ZSe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function ZSe(){return 1212}function $Se(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=ebe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],tbe(l,m,c,f),C=d}function ebe(s){return s=s|0,(n[(qF()|0)+24>>2]|0)+(s*12|0)|0}function tbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),HF(m,c),m=jF(m,c)|0,bg(B,f),B=xg(B,f)|0,Hw[d&15](s,m,B),C=k}function rbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nbe(s,c,d,1),C=f}function nbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=GF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=ibe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,sbe(m,f)|0,f),C=d}function GF(){var s=0,l=0;if(o[7704]|0||(S9(9520),tr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9520)|0)){s=9520,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));S9(9520)}return 9520}function ibe(s){return s=s|0,0}function sbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=GF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],P9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(obe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function P9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function obe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=abe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,lbe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],P9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,cbe(s,k),ube(k),C=M;return}}function abe(s){return s=s|0,357913941}function lbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function cbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function ube(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function S9(s){s=s|0,pbe(s)}function Abe(s){s=s|0,fbe(s+24|0)}function fbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function pbe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,hbe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function hbe(){return 1224}function gbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;return d=C,C=C+16|0,m=d+8|0,B=d,k=dbe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],f=+mbe(l,m,c),C=d,+f}function dbe(s){return s=s|0,(n[(GF()|0)+24>>2]|0)+(s*12|0)|0}function mbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,B=+PF(+v7[f&7](s,d)),C=m,+B}function ybe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Ebe(s,c,d,1),C=f}function Ebe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=YF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Cbe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,wbe(m,f)|0,f),C=d}function YF(){var s=0,l=0;if(o[7712]|0||(x9(9556),tr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9556)|0)){s=9556,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));x9(9556)}return 9556}function Cbe(s){return s=s|0,0}function wbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=YF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],b9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Ibe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function b9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Ibe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Bbe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,vbe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],b9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Dbe(s,k),Pbe(k),C=M;return}}function Bbe(s){return s=s|0,357913941}function vbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Dbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Pbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function x9(s){s=s|0,xbe(s)}function Sbe(s){s=s|0,bbe(s+24|0)}function bbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function xbe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,kbe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function kbe(){return 1232}function Qbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=Fbe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=+Rbe(l,d),C=f,+c}function Fbe(s){return s=s|0,(n[(YF()|0)+24>>2]|0)+(s*12|0)|0}function Rbe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),+ +PF(+B7[c&15](s))}function Tbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Lbe(s,c,d,1),C=f}function Lbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=WF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Nbe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Obe(m,f)|0,f),C=d}function WF(){var s=0,l=0;if(o[7720]|0||(Q9(9592),tr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9592)|0)){s=9592,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Q9(9592)}return 9592}function Nbe(s){return s=s|0,0}function Obe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=WF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],k9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Mbe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function k9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Mbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Ube(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,_be(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],k9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Hbe(s,k),jbe(k),C=M;return}}function Ube(s){return s=s|0,357913941}function _be(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Hbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function jbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function Q9(s){s=s|0,Ybe(s)}function qbe(s){s=s|0,Gbe(s+24|0)}function Gbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Ybe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,7,l,Wbe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Wbe(){return 1276}function Kbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=Vbe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=Jbe(l,f)|0,C=c,l|0}function Vbe(s){return s=s|0,(n[(WF()|0)+24>>2]|0)+(s*12|0)|0}function Jbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+16|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),rf[c&31](f,s),f=F9(f)|0,C=d,f|0}function F9(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(R9()|0)|0,f?(kF(l,f),QF(c,l),zbe(s,c),s=FF(l)|0):s=Xbe(s)|0,C=d,s|0}function R9(){var s=0;return o[7736]|0||(axe(9640),tr(25,9640,U|0)|0,s=7736,n[s>>2]=1,n[s+4>>2]=0),9640}function zbe(s,l){s=s|0,l=l|0,txe(l,s,s+8|0)|0}function Xbe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(16)|0,n[k>>2]=n[s>>2],n[k+4>>2]=n[s+4>>2],n[k+8>>2]=n[s+8>>2],n[k+12>>2]=n[s+12>>2],m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],KF(s,m,d),n[f>>2]=s,C=c,l|0}function KF(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1244,n[c+12>>2]=l,n[s+4>>2]=c}function Zbe(s){s=s|0,zm(s),gt(s)}function $be(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function exe(s){s=s|0,gt(s)}function txe(s,l,c){return s=s|0,l=l|0,c=c|0,l=rxe(n[s>>2]|0,l,c)|0,c=s+4|0,n[(n[c>>2]|0)+8>>2]=l,n[(n[c>>2]|0)+8>>2]|0}function rxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return f=C,C=C+16|0,d=f,Ka(d),s=da(s)|0,c=nxe(s,n[l>>2]|0,+E[c>>3])|0,Va(d),C=f,c|0}function nxe(s,l,c){s=s|0,l=l|0,c=+c;var f=0;return f=Pl(ixe()|0)|0,l=DF(l)|0,ml(0,f|0,s|0,l|0,+ +JA(c))|0}function ixe(){var s=0;return o[7728]|0||(sxe(9628),s=7728,n[s>>2]=1,n[s+4>>2]=0),9628}function sxe(s){s=s|0,Sl(s,oxe()|0,2)}function oxe(){return 1264}function axe(s){s=s|0,vp(s)}function lxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],cxe(s,c,d,1),C=f}function cxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=VF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=uxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Axe(m,f)|0,f),C=d}function VF(){var s=0,l=0;if(o[7744]|0||(L9(9684),tr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9684)|0)){s=9684,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));L9(9684)}return 9684}function uxe(s){return s=s|0,0}function Axe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=VF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],T9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(fxe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function T9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function fxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=pxe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,hxe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],T9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,gxe(s,k),dxe(k),C=M;return}}function pxe(s){return s=s|0,357913941}function hxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function gxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function dxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function L9(s){s=s|0,Exe(s)}function mxe(s){s=s|0,yxe(s+24|0)}function yxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Exe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,Cxe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Cxe(){return 1280}function wxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=Ixe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=Bxe(l,d,c)|0,C=f,c|0}function Ixe(s){return s=s|0,(n[(VF()|0)+24>>2]|0)+(s*12|0)|0}function Bxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return B=C,C=C+32|0,d=B,m=B+16|0,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(m,c),m=$A(m,c)|0,Hw[f&15](d,s,m),m=F9(d)|0,C=B,m|0}function vxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Dxe(s,c,d,1),C=f}function Dxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=JF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Pxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Sxe(m,f)|0,f),C=d}function JF(){var s=0,l=0;if(o[7752]|0||(O9(9720),tr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9720)|0)){s=9720,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));O9(9720)}return 9720}function Pxe(s){return s=s|0,0}function Sxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=JF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],N9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(bxe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function N9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function bxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=xxe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,kxe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],N9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Qxe(s,k),Fxe(k),C=M;return}}function xxe(s){return s=s|0,357913941}function kxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Qxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Fxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function O9(s){s=s|0,Lxe(s)}function Rxe(s){s=s|0,Txe(s+24|0)}function Txe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Lxe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Nxe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Nxe(){return 1288}function Oxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=Mxe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=Uxe(l,f)|0,C=c,l|0}function Mxe(s){return s=s|0,(n[(JF()|0)+24>>2]|0)+(s*12|0)|0}function Uxe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),ZG(Ng[c&31](s)|0)|0}function _xe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Hxe(s,c,d,0),C=f}function Hxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=zF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=jxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,qxe(m,f)|0,f),C=d}function zF(){var s=0,l=0;if(o[7760]|0||(U9(9756),tr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9756)|0)){s=9756,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));U9(9756)}return 9756}function jxe(s){return s=s|0,0}function qxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=zF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],M9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Gxe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function M9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Gxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Yxe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,Wxe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],M9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Kxe(s,k),Vxe(k),C=M;return}}function Yxe(s){return s=s|0,357913941}function Wxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Kxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Vxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function U9(s){s=s|0,Xxe(s)}function Jxe(s){s=s|0,zxe(s+24|0)}function zxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Xxe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Zxe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Zxe(){return 1292}function $xe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=eke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tke(l,d,c),C=f}function eke(s){return s=s|0,(n[(zF()|0)+24>>2]|0)+(s*12|0)|0}function tke(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ku(d,c),c=+Qu(d,c),C7[f&31](s,c),C=m}function rke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nke(s,c,d,0),C=f}function nke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=XF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=ike(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,ske(m,f)|0,f),C=d}function XF(){var s=0,l=0;if(o[7768]|0||(H9(9792),tr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9792)|0)){s=9792,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));H9(9792)}return 9792}function ike(s){return s=s|0,0}function ske(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=XF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],_9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(oke(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function _9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function oke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ake(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,lke(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],_9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,cke(s,k),uke(k),C=M;return}}function ake(s){return s=s|0,357913941}function lke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function cke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function uke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function H9(s){s=s|0,pke(s)}function Ake(s){s=s|0,fke(s+24|0)}function fke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function pke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,hke()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function hke(){return 1300}function gke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=dke(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],mke(l,m,c,f),C=d}function dke(s){return s=s|0,(n[(XF()|0)+24>>2]|0)+(s*12|0)|0}function mke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),ZA(m,c),m=$A(m,c)|0,ku(B,f),f=+Qu(B,f),b7[d&15](s,m,f),C=k}function yke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Eke(s,c,d,0),C=f}function Eke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=ZF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Cke(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,wke(m,f)|0,f),C=d}function ZF(){var s=0,l=0;if(o[7776]|0||(q9(9828),tr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9828)|0)){s=9828,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));q9(9828)}return 9828}function Cke(s){return s=s|0,0}function wke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=ZF()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],j9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Ike(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function j9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Ike(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Bke(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,vke(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],j9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Dke(s,k),Pke(k),C=M;return}}function Bke(s){return s=s|0,357913941}function vke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Dke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Pke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function q9(s){s=s|0,xke(s)}function Ske(s){s=s|0,bke(s+24|0)}function bke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function xke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,7,l,kke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function kke(){return 1312}function Qke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=Fke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Rke(l,d,c),C=f}function Fke(s){return s=s|0,(n[(ZF()|0)+24>>2]|0)+(s*12|0)|0}function Rke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,rf[f&31](s,d),C=m}function Tke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Lke(s,c,d,0),C=f}function Lke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=$F()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Nke(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Oke(m,f)|0,f),C=d}function $F(){var s=0,l=0;if(o[7784]|0||(Y9(9864),tr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9864)|0)){s=9864,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Y9(9864)}return 9864}function Nke(s){return s=s|0,0}function Oke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=$F()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],G9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Mke(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function G9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Mke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Uke(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,_ke(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],G9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Hke(s,k),jke(k),C=M;return}}function Uke(s){return s=s|0,357913941}function _ke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Hke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function jke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function Y9(s){s=s|0,Yke(s)}function qke(s){s=s|0,Gke(s+24|0)}function Gke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Yke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Wke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Wke(){return 1320}function Kke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=Vke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Jke(l,d,c),C=f}function Vke(s){return s=s|0,(n[($F()|0)+24>>2]|0)+(s*12|0)|0}function Jke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),zke(d,c),d=Xke(d,c)|0,rf[f&31](s,d),C=m}function zke(s,l){s=s|0,l=l|0}function Xke(s,l){return s=s|0,l=l|0,Zke(l)|0}function Zke(s){return s=s|0,s|0}function $ke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eQe(s,c,d,0),C=f}function eQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=eR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=tQe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,rQe(m,f)|0,f),C=d}function eR(){var s=0,l=0;if(o[7792]|0||(K9(9900),tr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9900)|0)){s=9900,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));K9(9900)}return 9900}function tQe(s){return s=s|0,0}function rQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=eR()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],W9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(nQe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function W9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function nQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=iQe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,sQe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],W9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,oQe(s,k),aQe(k),C=M;return}}function iQe(s){return s=s|0,357913941}function sQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function oQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function aQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function K9(s){s=s|0,uQe(s)}function lQe(s){s=s|0,cQe(s+24|0)}function cQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function uQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,22,l,AQe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function AQe(){return 1344}function fQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;c=C,C=C+16|0,f=c+8|0,d=c,m=pQe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],hQe(l,f),C=c}function pQe(s){return s=s|0,(n[(eR()|0)+24>>2]|0)+(s*12|0)|0}function hQe(s,l){s=s|0,l=l|0;var c=0;c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),tf[c&127](s)}function gQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=tR()|0,s=dQe(c)|0,hn(m,l,d,s,mQe(c,f)|0,f)}function tR(){var s=0,l=0;if(o[7800]|0||(J9(9936),tr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9936)|0)){s=9936,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));J9(9936)}return 9936}function dQe(s){return s=s|0,s|0}function mQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=tR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(V9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(yQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function V9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function yQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=EQe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,CQe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,V9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,wQe(s,d),IQe(d),C=k;return}}function EQe(s){return s=s|0,536870911}function CQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function wQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function IQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function J9(s){s=s|0,DQe(s)}function BQe(s){s=s|0,vQe(s+24|0)}function vQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function DQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,23,l,B9()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function PQe(s,l){s=s|0,l=l|0,bQe(n[(SQe(s)|0)>>2]|0,l)}function SQe(s){return s=s|0,(n[(tR()|0)+24>>2]|0)+(s<<3)|0}function bQe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,HF(f,l),l=jF(f,l)|0,tf[s&127](l),C=c}function xQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=rR()|0,s=kQe(c)|0,hn(m,l,d,s,QQe(c,f)|0,f)}function rR(){var s=0,l=0;if(o[7808]|0||(X9(9972),tr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9972)|0)){s=9972,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));X9(9972)}return 9972}function kQe(s){return s=s|0,s|0}function QQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=rR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(z9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(FQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function z9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function FQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=RQe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,TQe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,z9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,LQe(s,d),NQe(d),C=k;return}}function RQe(s){return s=s|0,536870911}function TQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function LQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function NQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function X9(s){s=s|0,UQe(s)}function OQe(s){s=s|0,MQe(s+24|0)}function MQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function UQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,9,l,_Qe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function _Qe(){return 1348}function HQe(s,l){return s=s|0,l=l|0,qQe(n[(jQe(s)|0)>>2]|0,l)|0}function jQe(s){return s=s|0,(n[(rR()|0)+24>>2]|0)+(s<<3)|0}function qQe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,Z9(f,l),l=$9(f,l)|0,l=sD(Ng[s&31](l)|0)|0,C=c,l|0}function Z9(s,l){s=s|0,l=l|0}function $9(s,l){return s=s|0,l=l|0,GQe(l)|0}function GQe(s){return s=s|0,s|0}function YQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=nR()|0,s=WQe(c)|0,hn(m,l,d,s,KQe(c,f)|0,f)}function nR(){var s=0,l=0;if(o[7816]|0||(t5(10008),tr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10008)|0)){s=10008,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));t5(10008)}return 10008}function WQe(s){return s=s|0,s|0}function KQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=nR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(e5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(VQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function e5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function VQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=JQe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,zQe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,e5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,XQe(s,d),ZQe(d),C=k;return}}function JQe(s){return s=s|0,536870911}function zQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function XQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function ZQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function t5(s){s=s|0,tFe(s)}function $Qe(s){s=s|0,eFe(s+24|0)}function eFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function tFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,15,l,m9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function rFe(s){return s=s|0,iFe(n[(nFe(s)|0)>>2]|0)|0}function nFe(s){return s=s|0,(n[(nR()|0)+24>>2]|0)+(s<<3)|0}function iFe(s){return s=s|0,sD(CD[s&7]()|0)|0}function sFe(){var s=0;return o[7832]|0||(pFe(10052),tr(25,10052,U|0)|0,s=7832,n[s>>2]=1,n[s+4>>2]=0),10052}function oFe(s,l){s=s|0,l=l|0,n[s>>2]=aFe()|0,n[s+4>>2]=lFe()|0,n[s+12>>2]=l,n[s+8>>2]=cFe()|0,n[s+32>>2]=2}function aFe(){return 11709}function lFe(){return 1188}function cFe(){return aD()|0}function uFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(AFe(c),gt(c)):l|0&&(Pu(l),gt(l))}function bp(s,l){return s=s|0,l=l|0,l&s|0}function AFe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function aD(){var s=0;return o[7824]|0||(n[2511]=fFe()|0,n[2512]=0,s=7824,n[s>>2]=1,n[s+4>>2]=0),10044}function fFe(){return 0}function pFe(s){s=s|0,vp(s)}function hFe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0;l=C,C=C+32|0,c=l+24|0,m=l+16|0,d=l+8|0,f=l,gFe(s,4827),dFe(s,4834,3)|0,mFe(s,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],yFe(s,4841,c)|0,n[d>>2]=1,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],EFe(s,4871,c)|0,n[f>>2]=10,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],CFe(s,4891,c)|0,C=l}function gFe(s,l){s=s|0,l=l|0;var c=0;c=ZRe()|0,n[s>>2]=c,$Re(c,l),xp(n[s>>2]|0)}function dFe(s,l,c){return s=s|0,l=l|0,c=c|0,NRe(s,pn(l)|0,c,0),s|0}function mFe(s,l,c){return s=s|0,l=l|0,c=c|0,wRe(s,pn(l)|0,c,0),s|0}function yFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rRe(s,l,d),C=f,s|0}function EFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],OFe(s,l,d),C=f,s|0}function CFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],wFe(s,l,d),C=f,s|0}function wFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],IFe(s,c,d,1),C=f}function IFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=iR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=BFe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,vFe(m,f)|0,f),C=d}function iR(){var s=0,l=0;if(o[7840]|0||(n5(10100),tr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10100)|0)){s=10100,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));n5(10100)}return 10100}function BFe(s){return s=s|0,0}function vFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=iR()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],r5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(DFe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function r5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function DFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=PFe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,SFe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],r5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,bFe(s,k),xFe(k),C=M;return}}function PFe(s){return s=s|0,357913941}function SFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function bFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function xFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function n5(s){s=s|0,FFe(s)}function kFe(s){s=s|0,QFe(s+24|0)}function QFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function FFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,RFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function RFe(){return 1364}function TFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=LFe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=NFe(l,d,c)|0,C=f,c|0}function LFe(s){return s=s|0,(n[(iR()|0)+24>>2]|0)+(s*12|0)|0}function NFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,d=u9(RR[f&15](s,d)|0)|0,C=m,d|0}function OFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],MFe(s,c,d,0),C=f}function MFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=sR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=UFe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,_Fe(m,f)|0,f),C=d}function sR(){var s=0,l=0;if(o[7848]|0||(s5(10136),tr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10136)|0)){s=10136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));s5(10136)}return 10136}function UFe(s){return s=s|0,0}function _Fe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=sR()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],i5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(HFe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function i5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function HFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=jFe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,qFe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],i5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,GFe(s,k),YFe(k),C=M;return}}function jFe(s){return s=s|0,357913941}function qFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function GFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function YFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function s5(s){s=s|0,VFe(s)}function WFe(s){s=s|0,KFe(s+24|0)}function KFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function VFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,9,l,JFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function JFe(){return 1372}function zFe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=XFe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZFe(l,d,c),C=f}function XFe(s){return s=s|0,(n[(sR()|0)+24>>2]|0)+(s*12|0)|0}function ZFe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=Ze;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),$Fe(d,c),B=y(eRe(d,c)),E7[f&1](s,B),C=m}function $Fe(s,l){s=s|0,l=+l}function eRe(s,l){return s=s|0,l=+l,y(tRe(l))}function tRe(s){return s=+s,y(s)}function rRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nRe(s,c,d,0),C=f}function nRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=oR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=iRe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,sRe(m,f)|0,f),C=d}function oR(){var s=0,l=0;if(o[7856]|0||(a5(10172),tr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10172)|0)){s=10172,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));a5(10172)}return 10172}function iRe(s){return s=s|0,0}function sRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,q=oR()|0,M=q+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=q+28|0,c=n[l>>2]|0,c>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],o5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(oRe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function o5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function oRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=aRe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,q=se<<1,lRe(k,se>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],o5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,cRe(s,k),uRe(k),C=M;return}}function aRe(s){return s=s|0,357913941}function lRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function cRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function uRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function a5(s){s=s|0,pRe(s)}function ARe(s){s=s|0,fRe(s+24|0)}function fRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function pRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,3,l,hRe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function hRe(){return 1380}function gRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=dRe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],mRe(l,m,c,f),C=d}function dRe(s){return s=s|0,(n[(oR()|0)+24>>2]|0)+(s*12|0)|0}function mRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),ZA(m,c),m=$A(m,c)|0,yRe(B,f),B=ERe(B,f)|0,Hw[d&15](s,m,B),C=k}function yRe(s,l){s=s|0,l=l|0}function ERe(s,l){return s=s|0,l=l|0,CRe(l)|0}function CRe(s){return s=s|0,(s|0)!=0|0}function wRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=aR()|0,s=IRe(c)|0,hn(m,l,d,s,BRe(c,f)|0,f)}function aR(){var s=0,l=0;if(o[7864]|0||(c5(10208),tr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10208)|0)){s=10208,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));c5(10208)}return 10208}function IRe(s){return s=s|0,s|0}function BRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=aR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(l5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(vRe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function l5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function vRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=DRe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,PRe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,l5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,SRe(s,d),bRe(d),C=k;return}}function DRe(s){return s=s|0,536870911}function PRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function SRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function bRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function c5(s){s=s|0,QRe(s)}function xRe(s){s=s|0,kRe(s+24|0)}function kRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function QRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,24,l,FRe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function FRe(){return 1392}function RRe(s,l){s=s|0,l=l|0,LRe(n[(TRe(s)|0)>>2]|0,l)}function TRe(s){return s=s|0,(n[(aR()|0)+24>>2]|0)+(s<<3)|0}function LRe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Z9(f,l),l=$9(f,l)|0,tf[s&127](l),C=c}function NRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=lR()|0,s=ORe(c)|0,hn(m,l,d,s,MRe(c,f)|0,f)}function lR(){var s=0,l=0;if(o[7872]|0||(A5(10244),tr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10244)|0)){s=10244,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));A5(10244)}return 10244}function ORe(s){return s=s|0,s|0}function MRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=lR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(u5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(URe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function u5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function URe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=_Re(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,HRe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,u5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,jRe(s,d),qRe(d),C=k;return}}function _Re(s){return s=s|0,536870911}function HRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function jRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function qRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function A5(s){s=s|0,WRe(s)}function GRe(s){s=s|0,YRe(s+24|0)}function YRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function WRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,16,l,KRe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function KRe(){return 1400}function VRe(s){return s=s|0,zRe(n[(JRe(s)|0)>>2]|0)|0}function JRe(s){return s=s|0,(n[(lR()|0)+24>>2]|0)+(s<<3)|0}function zRe(s){return s=s|0,XRe(CD[s&7]()|0)|0}function XRe(s){return s=s|0,s|0}function ZRe(){var s=0;return o[7880]|0||(sTe(10280),tr(25,10280,U|0)|0,s=7880,n[s>>2]=1,n[s+4>>2]=0),10280}function $Re(s,l){s=s|0,l=l|0,n[s>>2]=eTe()|0,n[s+4>>2]=tTe()|0,n[s+12>>2]=l,n[s+8>>2]=rTe()|0,n[s+32>>2]=4}function eTe(){return 11711}function tTe(){return 1356}function rTe(){return aD()|0}function nTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(iTe(c),gt(c)):l|0&&(Dg(l),gt(l))}function iTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function sTe(s){s=s|0,vp(s)}function oTe(s){s=s|0,aTe(s,4920),lTe(s)|0,cTe(s)|0}function aTe(s,l){s=s|0,l=l|0;var c=0;c=R9()|0,n[s>>2]=c,kTe(c,l),xp(n[s>>2]|0)}function lTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,CTe()|0),s|0}function cTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,uTe()|0),s|0}function uTe(){var s=0;return o[7888]|0||(f5(10328),tr(53,10328,U|0)|0,s=7888,n[s>>2]=1,n[s+4>>2]=0),Tr(10328)|0||f5(10328),10328}function kg(s,l){s=s|0,l=l|0,hn(s,0,l,0,0,0)}function f5(s){s=s|0,pTe(s),Qg(s,10)}function ATe(s){s=s|0,fTe(s+24|0)}function fTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function pTe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,1,l,mTe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function hTe(s,l,c){s=s|0,l=l|0,c=+c,gTe(s,l,c)}function Qg(s,l){s=s|0,l=l|0,n[s+20>>2]=l}function gTe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,m=f+8|0,k=f+13|0,d=f,B=f+12|0,ZA(k,l),n[m>>2]=$A(k,l)|0,ku(B,c),E[d>>3]=+Qu(B,c),dTe(s,m,d),C=f}function dTe(s,l,c){s=s|0,l=l|0,c=c|0,Y(s+8|0,n[l>>2]|0,+E[c>>3]),o[s+24>>0]=1}function mTe(){return 1404}function yTe(s,l){return s=s|0,l=+l,ETe(s,l)|0}function ETe(s,l){s=s|0,l=+l;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+16|0,m=f+4|0,B=f+8|0,k=f,d=Wa(8)|0,c=d,Q=Kt(16)|0,ZA(m,s),s=$A(m,s)|0,ku(B,l),Y(Q,s,+Qu(B,l)),B=c+4|0,n[B>>2]=Q,s=Kt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],KF(s,B,m),n[d>>2]=s,C=f,c|0}function CTe(){var s=0;return o[7896]|0||(p5(10364),tr(54,10364,U|0)|0,s=7896,n[s>>2]=1,n[s+4>>2]=0),Tr(10364)|0||p5(10364),10364}function p5(s){s=s|0,BTe(s),Qg(s,55)}function wTe(s){s=s|0,ITe(s+24|0)}function ITe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function BTe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,4,l,STe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function vTe(s){s=s|0,DTe(s)}function DTe(s){s=s|0,PTe(s)}function PTe(s){s=s|0,h5(s+8|0),o[s+24>>0]=1}function h5(s){s=s|0,n[s>>2]=0,E[s+8>>3]=0}function STe(){return 1424}function bTe(){return xTe()|0}function xTe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,f=Kt(16)|0,h5(f),m=s+4|0,n[m>>2]=f,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],KF(f,m,d),n[c>>2]=f,C=l,s|0}function kTe(s,l){s=s|0,l=l|0,n[s>>2]=QTe()|0,n[s+4>>2]=FTe()|0,n[s+12>>2]=l,n[s+8>>2]=RTe()|0,n[s+32>>2]=5}function QTe(){return 11710}function FTe(){return 1416}function RTe(){return lD()|0}function TTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(LTe(c),gt(c)):l|0&&gt(l)}function LTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function lD(){var s=0;return o[7904]|0||(n[2600]=NTe()|0,n[2601]=0,s=7904,n[s>>2]=1,n[s+4>>2]=0),10400}function NTe(){return n[357]|0}function OTe(s){s=s|0,MTe(s,4926),UTe(s)|0}function MTe(s,l){s=s|0,l=l|0;var c=0;c=r9()|0,n[s>>2]=c,zTe(c,l),xp(n[s>>2]|0)}function UTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,_Te()|0),s|0}function _Te(){var s=0;return o[7912]|0||(g5(10412),tr(56,10412,U|0)|0,s=7912,n[s>>2]=1,n[s+4>>2]=0),Tr(10412)|0||g5(10412),10412}function g5(s){s=s|0,qTe(s),Qg(s,57)}function HTe(s){s=s|0,jTe(s+24|0)}function jTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function qTe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,5,l,KTe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function GTe(s){s=s|0,YTe(s)}function YTe(s){s=s|0,WTe(s)}function WTe(s){s=s|0;var l=0,c=0;l=s+8|0,c=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(c|0));o[s+56>>0]=1}function KTe(){return 1432}function VTe(){return JTe()|0}function JTe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,k=0;B=C,C=C+16|0,s=B+4|0,l=B,c=Wa(8)|0,f=c,d=Kt(48)|0,m=d,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=f+4|0,n[m>>2]=d,k=Kt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[s>>2]=n[l>>2],n9(k,m,s),n[c>>2]=k,C=B,f|0}function zTe(s,l){s=s|0,l=l|0,n[s>>2]=XTe()|0,n[s+4>>2]=ZTe()|0,n[s+12>>2]=l,n[s+8>>2]=$Te()|0,n[s+32>>2]=6}function XTe(){return 11704}function ZTe(){return 1436}function $Te(){return lD()|0}function eLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(tLe(c),gt(c)):l|0&&gt(l)}function tLe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function rLe(s){s=s|0,nLe(s,4933),iLe(s)|0,sLe(s)|0}function nLe(s,l){s=s|0,l=l|0;var c=0;c=xLe()|0,n[s>>2]=c,kLe(c,l),xp(n[s>>2]|0)}function iLe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,ELe()|0),s|0}function sLe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,oLe()|0),s|0}function oLe(){var s=0;return o[7920]|0||(d5(10452),tr(58,10452,U|0)|0,s=7920,n[s>>2]=1,n[s+4>>2]=0),Tr(10452)|0||d5(10452),10452}function d5(s){s=s|0,cLe(s),Qg(s,1)}function aLe(s){s=s|0,lLe(s+24|0)}function lLe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function cLe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,1,l,pLe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function uLe(s,l,c){s=s|0,l=+l,c=+c,ALe(s,l,c)}function ALe(s,l,c){s=s|0,l=+l,c=+c;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,m=f+8|0,k=f+17|0,d=f,B=f+16|0,ku(k,l),E[m>>3]=+Qu(k,l),ku(B,c),E[d>>3]=+Qu(B,c),fLe(s,m,d),C=f}function fLe(s,l,c){s=s|0,l=l|0,c=c|0,m5(s+8|0,+E[l>>3],+E[c>>3]),o[s+24>>0]=1}function m5(s,l,c){s=s|0,l=+l,c=+c,E[s>>3]=l,E[s+8>>3]=c}function pLe(){return 1472}function hLe(s,l){return s=+s,l=+l,gLe(s,l)|0}function gLe(s,l){s=+s,l=+l;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+16|0,B=f+4|0,k=f+8|0,Q=f,d=Wa(8)|0,c=d,m=Kt(16)|0,ku(B,s),s=+Qu(B,s),ku(k,l),m5(m,s,+Qu(k,l)),k=c+4|0,n[k>>2]=m,m=Kt(8)|0,k=n[k>>2]|0,n[Q>>2]=0,n[B>>2]=n[Q>>2],y5(m,k,B),n[d>>2]=m,C=f,c|0}function y5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1452,n[c+12>>2]=l,n[s+4>>2]=c}function dLe(s){s=s|0,zm(s),gt(s)}function mLe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function yLe(s){s=s|0,gt(s)}function ELe(){var s=0;return o[7928]|0||(E5(10488),tr(59,10488,U|0)|0,s=7928,n[s>>2]=1,n[s+4>>2]=0),Tr(10488)|0||E5(10488),10488}function E5(s){s=s|0,ILe(s),Qg(s,60)}function CLe(s){s=s|0,wLe(s+24|0)}function wLe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function ILe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,6,l,PLe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function BLe(s){s=s|0,vLe(s)}function vLe(s){s=s|0,DLe(s)}function DLe(s){s=s|0,C5(s+8|0),o[s+24>>0]=1}function C5(s){s=s|0,n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,n[s+12>>2]=0}function PLe(){return 1492}function SLe(){return bLe()|0}function bLe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,f=Kt(16)|0,C5(f),m=s+4|0,n[m>>2]=f,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],y5(f,m,d),n[c>>2]=f,C=l,s|0}function xLe(){var s=0;return o[7936]|0||(NLe(10524),tr(25,10524,U|0)|0,s=7936,n[s>>2]=1,n[s+4>>2]=0),10524}function kLe(s,l){s=s|0,l=l|0,n[s>>2]=QLe()|0,n[s+4>>2]=FLe()|0,n[s+12>>2]=l,n[s+8>>2]=RLe()|0,n[s+32>>2]=7}function QLe(){return 11700}function FLe(){return 1484}function RLe(){return lD()|0}function TLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(LLe(c),gt(c)):l|0&&gt(l)}function LLe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function NLe(s){s=s|0,vp(s)}function OLe(s,l,c){s=s|0,l=l|0,c=c|0,s=pn(l)|0,l=MLe(c)|0,c=ULe(c,0)|0,gNe(s,l,c,cR()|0,0)}function MLe(s){return s=s|0,s|0}function ULe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=cR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(I5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(WLe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function cR(){var s=0,l=0;if(o[7944]|0||(w5(10568),tr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10568)|0)){s=10568,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));w5(10568)}return 10568}function w5(s){s=s|0,jLe(s)}function _Le(s){s=s|0,HLe(s+24|0)}function HLe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function jLe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,17,l,C9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function qLe(s){return s=s|0,YLe(n[(GLe(s)|0)>>2]|0)|0}function GLe(s){return s=s|0,(n[(cR()|0)+24>>2]|0)+(s<<3)|0}function YLe(s){return s=s|0,oD(CD[s&7]()|0)|0}function I5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function WLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=KLe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,VLe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,I5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,JLe(s,d),zLe(d),C=k;return}}function KLe(s){return s=s|0,536870911}function VLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function JLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function zLe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function XLe(){ZLe()}function ZLe(){$Le(10604)}function $Le(s){s=s|0,eNe(s,4955)}function eNe(s,l){s=s|0,l=l|0;var c=0;c=tNe()|0,n[s>>2]=c,rNe(c,l),xp(n[s>>2]|0)}function tNe(){var s=0;return o[7952]|0||(ANe(10612),tr(25,10612,U|0)|0,s=7952,n[s>>2]=1,n[s+4>>2]=0),10612}function rNe(s,l){s=s|0,l=l|0,n[s>>2]=oNe()|0,n[s+4>>2]=aNe()|0,n[s+12>>2]=l,n[s+8>>2]=lNe()|0,n[s+32>>2]=8}function xp(s){s=s|0;var l=0,c=0;l=C,C=C+16|0,c=l,Ym()|0,n[c>>2]=s,nNe(10608,c),C=l}function Ym(){return o[11714]|0||(n[2652]=0,tr(62,10608,U|0)|0,o[11714]=1),10608}function nNe(s,l){s=s|0,l=l|0;var c=0;c=Kt(8)|0,n[c+4>>2]=n[l>>2],n[c>>2]=n[s>>2],n[s>>2]=c}function iNe(s){s=s|0,sNe(s)}function sNe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function oNe(){return 11715}function aNe(){return 1496}function lNe(){return aD()|0}function cNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(uNe(c),gt(c)):l|0&&gt(l)}function uNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function ANe(s){s=s|0,vp(s)}function fNe(s,l){s=s|0,l=l|0;var c=0,f=0;Ym()|0,c=n[2652]|0;e:do if(c|0){for(;f=n[c+4>>2]|0,!(f|0&&(n7(uR(f)|0,s)|0)==0);)if(c=n[c>>2]|0,!c)break e;pNe(f,l)}while(0)}function uR(s){return s=s|0,n[s+12>>2]|0}function pNe(s,l){s=s|0,l=l|0;var c=0;s=s+36|0,c=n[s>>2]|0,c|0&&(qA(c),gt(c)),c=Kt(4)|0,zG(c,l),n[s>>2]=c}function AR(){return o[11716]|0||(n[2664]=0,tr(63,10656,U|0)|0,o[11716]=1),10656}function B5(){var s=0;return o[11717]|0?s=n[2665]|0:(hNe(),n[2665]=1504,o[11717]=1,s=1504),s|0}function hNe(){o[11740]|0||(o[11718]=gr(gr(8,0)|0,0)|0,o[11719]=gr(gr(0,0)|0,0)|0,o[11720]=gr(gr(0,16)|0,0)|0,o[11721]=gr(gr(8,0)|0,0)|0,o[11722]=gr(gr(0,0)|0,0)|0,o[11723]=gr(gr(8,0)|0,0)|0,o[11724]=gr(gr(0,0)|0,0)|0,o[11725]=gr(gr(8,0)|0,0)|0,o[11726]=gr(gr(0,0)|0,0)|0,o[11727]=gr(gr(8,0)|0,0)|0,o[11728]=gr(gr(0,0)|0,0)|0,o[11729]=gr(gr(0,0)|0,32)|0,o[11730]=gr(gr(0,0)|0,32)|0,o[11740]=1)}function v5(){return 1572}function gNe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0;m=C,C=C+32|0,O=m+16|0,M=m+12|0,Q=m+8|0,k=m+4|0,B=m,n[O>>2]=s,n[M>>2]=l,n[Q>>2]=c,n[k>>2]=f,n[B>>2]=d,AR()|0,dNe(10656,O,M,Q,k,B),C=m}function dNe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0;B=Kt(24)|0,$G(B+4|0,n[l>>2]|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[s>>2],n[s>>2]=B}function D5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0;if(lt=C,C=C+32|0,Me=lt+20|0,Qe=lt+8|0,et=lt+4|0,Xe=lt,l=n[l>>2]|0,l|0){Ge=Me+4|0,Q=Me+8|0,M=Qe+4|0,O=Qe+8|0,q=Qe+8|0,se=Me+8|0;do{if(B=l+4|0,k=fR(B)|0,k|0){if(d=Lw(k)|0,n[Me>>2]=0,n[Ge>>2]=0,n[Q>>2]=0,f=(Nw(k)|0)+1|0,mNe(Me,f),f|0)for(;f=f+-1|0,bc(Qe,n[d>>2]|0),m=n[Ge>>2]|0,m>>>0<(n[se>>2]|0)>>>0?(n[m>>2]=n[Qe>>2],n[Ge>>2]=(n[Ge>>2]|0)+4):pR(Me,Qe),f;)d=d+4|0;f=Ow(k)|0,n[Qe>>2]=0,n[M>>2]=0,n[O>>2]=0;e:do if(n[f>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?yNe(Qe,f):(n[d>>2]=n[f>>2],n[M>>2]=(n[M>>2]|0)+4),f=f+4|0,!(n[f>>2]|0))break e;d=n[M>>2]|0,m=n[q>>2]|0}while(0);n[et>>2]=cD(B)|0,n[Xe>>2]=Tr(k)|0,ENe(c,s,et,Xe,Me,Qe),hR(Qe),ef(Me)}l=n[l>>2]|0}while((l|0)!=0)}C=lt}function fR(s){return s=s|0,n[s+12>>2]|0}function Lw(s){return s=s|0,n[s+12>>2]|0}function Nw(s){return s=s|0,n[s+16>>2]|0}function mNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+32|0,c=d,f=n[s>>2]|0,(n[s+8>>2]|0)-f>>2>>>0<l>>>0&&(R5(c,l,(n[s+4>>2]|0)-f>>2,s+8|0),T5(s,c),L5(c)),C=d}function pR(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;if(B=C,C=C+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=F5(s)|0,m>>>0<d>>>0)zr(s);else{k=n[s>>2]|0,M=(n[s+8>>2]|0)-k|0,Q=M>>1,R5(c,M>>2>>>0<m>>>1>>>0?Q>>>0<d>>>0?d:Q:m,(n[f>>2]|0)-k>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,T5(s,c),L5(c),C=B;return}}function Ow(s){return s=s|0,n[s+8>>2]|0}function yNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;if(B=C,C=C+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=Q5(s)|0,m>>>0<d>>>0)zr(s);else{k=n[s>>2]|0,M=(n[s+8>>2]|0)-k|0,Q=M>>1,MNe(c,M>>2>>>0<m>>>1>>>0?Q>>>0<d>>>0?d:Q:m,(n[f>>2]|0)-k>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,UNe(s,c),_Ne(c),C=B;return}}function cD(s){return s=s|0,n[s>>2]|0}function ENe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,CNe(s,l,c,f,d,m)}function hR(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function ef(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function CNe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,q=0;B=C,C=C+48|0,O=B+40|0,k=B+32|0,q=B+24|0,Q=B+12|0,M=B,Ka(k),s=da(s)|0,n[q>>2]=n[l>>2],c=n[c>>2]|0,f=n[f>>2]|0,gR(Q,d),wNe(M,m),n[O>>2]=n[q>>2],INe(s,O,c,f,Q,M),hR(M),ef(Q),Va(k),C=B}function gR(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(NNe(s,f),ONe(s,n[l>>2]|0,n[c>>2]|0,f))}function wNe(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(TNe(s,f),LNe(s,n[l>>2]|0,n[c>>2]|0,f))}function INe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,q=0;B=C,C=C+32|0,O=B+28|0,q=B+24|0,k=B+12|0,Q=B,M=Pl(BNe()|0)|0,n[q>>2]=n[l>>2],n[O>>2]=n[q>>2],l=Fg(O)|0,c=P5(c)|0,f=dR(f)|0,n[k>>2]=n[d>>2],O=d+4|0,n[k+4>>2]=n[O>>2],q=d+8|0,n[k+8>>2]=n[q>>2],n[q>>2]=0,n[O>>2]=0,n[d>>2]=0,d=mR(k)|0,n[Q>>2]=n[m>>2],O=m+4|0,n[Q+4>>2]=n[O>>2],q=m+8|0,n[Q+8>>2]=n[q>>2],n[q>>2]=0,n[O>>2]=0,n[m>>2]=0,ao(0,M|0,s|0,l|0,c|0,f|0,d|0,vNe(Q)|0)|0,hR(Q),ef(k),C=B}function BNe(){var s=0;return o[7968]|0||(FNe(10708),s=7968,n[s>>2]=1,n[s+4>>2]=0),10708}function Fg(s){return s=s|0,b5(s)|0}function P5(s){return s=s|0,S5(s)|0}function dR(s){return s=s|0,oD(s)|0}function mR(s){return s=s|0,PNe(s)|0}function vNe(s){return s=s|0,DNe(s)|0}function DNe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Wa(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=S5(n[(n[s>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function S5(s){return s=s|0,s|0}function PNe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Wa(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=b5((n[s>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function b5(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(x5()|0)|0,f?(kF(l,f),QF(c,l),lUe(s,c),s=FF(l)|0):s=SNe(s)|0,C=d,s|0}function x5(){var s=0;return o[7960]|0||(QNe(10664),tr(25,10664,U|0)|0,s=7960,n[s>>2]=1,n[s+4>>2]=0),10664}function SNe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(4)|0,n[k>>2]=n[s>>2],m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],k5(s,m,d),n[f>>2]=s,C=c,l|0}function k5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1656,n[c+12>>2]=l,n[s+4>>2]=c}function bNe(s){s=s|0,zm(s),gt(s)}function xNe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function kNe(s){s=s|0,gt(s)}function QNe(s){s=s|0,vp(s)}function FNe(s){s=s|0,Sl(s,RNe()|0,5)}function RNe(){return 1676}function TNe(s,l){s=s|0,l=l|0;var c=0;if((Q5(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function LNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function Q5(s){return s=s|0,1073741823}function NNe(s,l){s=s|0,l=l|0;var c=0;if((F5(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function ONe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function F5(s){return s=s|0,1073741823}function MNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function UNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function _Ne(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function R5(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function T5(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function L5(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function HNe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0,Me=0,Qe=0;if(Qe=C,C=C+32|0,O=Qe+20|0,q=Qe+12|0,M=Qe+16|0,se=Qe+4|0,Ge=Qe,Me=Qe+8|0,k=B5()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(Q=n[k+8>>2]|0,k=n[k+4>>2]|0;bc(O,B),jNe(s,O,k,Q),m=m+4|0,B=n[m>>2]|0,B;)Q=Q+1|0,k=k+1|0;if(m=v5()|0,B=n[m>>2]|0,B|0)do bc(O,B),n[q>>2]=n[m+4>>2],qNe(l,O,q),m=m+8|0,B=n[m>>2]|0;while((B|0)!=0);if(m=n[(Ym()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,bc(O,n[(Wm(l)|0)>>2]|0),n[q>>2]=uR(l)|0,GNe(c,O,q),m=n[m>>2]|0;while((m|0)!=0);if(bc(M,0),m=AR()|0,n[O>>2]=n[M>>2],D5(O,m,d),m=n[(Ym()|0)>>2]|0,m|0){s=O+4|0,l=O+8|0,c=O+8|0;do{if(Q=n[m+4>>2]|0,bc(q,n[(Wm(Q)|0)>>2]|0),YNe(se,N5(Q)|0),B=n[se>>2]|0,B|0){n[O>>2]=0,n[s>>2]=0,n[l>>2]=0;do bc(Ge,n[(Wm(n[B+4>>2]|0)|0)>>2]|0),k=n[s>>2]|0,k>>>0<(n[c>>2]|0)>>>0?(n[k>>2]=n[Ge>>2],n[s>>2]=(n[s>>2]|0)+4):pR(O,Ge),B=n[B>>2]|0;while((B|0)!=0);WNe(f,q,O),ef(O)}n[Me>>2]=n[q>>2],M=O5(Q)|0,n[O>>2]=n[Me>>2],D5(O,M,d),s9(se),m=n[m>>2]|0}while((m|0)!=0)}C=Qe}function jNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,iOe(s,l,c,f)}function qNe(s,l,c){s=s|0,l=l|0,c=c|0,nOe(s,l,c)}function Wm(s){return s=s|0,s|0}function GNe(s,l,c){s=s|0,l=l|0,c=c|0,$Ne(s,l,c)}function N5(s){return s=s|0,s+16|0}function YNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;if(m=C,C=C+16|0,d=m+8|0,c=m,n[s>>2]=0,f=n[l>>2]|0,n[d>>2]=f,n[c>>2]=s,c=ZNe(c)|0,f|0){if(f=Kt(12)|0,B=(M5(d)|0)+4|0,s=n[B+4>>2]|0,l=f+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=s,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)s=f;else for(l=f;s=Kt(12)|0,Q=(M5(d)|0)+4|0,k=n[Q+4>>2]|0,B=s+4|0,n[B>>2]=n[Q>>2],n[B+4>>2]=k,n[l>>2]=s,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=s;n[s>>2]=n[c>>2],n[c>>2]=f}C=m}function WNe(s,l,c){s=s|0,l=l|0,c=c|0,KNe(s,l,c)}function O5(s){return s=s|0,s+24|0}function KNe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,B=f+24|0,d=f+16|0,k=f+12|0,m=f,Ka(d),s=da(s)|0,n[k>>2]=n[l>>2],gR(m,c),n[B>>2]=n[k>>2],VNe(s,B,m),ef(m),Va(d),C=f}function VNe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,B=f+16|0,k=f+12|0,d=f,m=Pl(JNe()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Fg(B)|0,n[d>>2]=n[c>>2],B=c+4|0,n[d+4>>2]=n[B>>2],k=c+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[c>>2]=0,oo(0,m|0,s|0,l|0,mR(d)|0)|0,ef(d),C=f}function JNe(){var s=0;return o[7976]|0||(zNe(10720),s=7976,n[s>>2]=1,n[s+4>>2]=0),10720}function zNe(s){s=s|0,Sl(s,XNe()|0,2)}function XNe(){return 1732}function ZNe(s){return s=s|0,n[s>>2]|0}function M5(s){return s=s|0,n[s>>2]|0}function $Ne(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+32|0,m=f+16|0,d=f+8|0,B=f,Ka(d),s=da(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],U5(s,m,c),Va(d),C=f}function U5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,m=f+4|0,B=f,d=Pl(eOe()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=Fg(m)|0,oo(0,d|0,s|0,l|0,P5(c)|0)|0,C=f}function eOe(){var s=0;return o[7984]|0||(tOe(10732),s=7984,n[s>>2]=1,n[s+4>>2]=0),10732}function tOe(s){s=s|0,Sl(s,rOe()|0,2)}function rOe(){return 1744}function nOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+32|0,m=f+16|0,d=f+8|0,B=f,Ka(d),s=da(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],U5(s,m,c),Va(d),C=f}function iOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+32|0,B=d+16|0,m=d+8|0,k=d,Ka(m),s=da(s)|0,n[k>>2]=n[l>>2],c=o[c>>0]|0,f=o[f>>0]|0,n[B>>2]=n[k>>2],sOe(s,B,c,f),Va(m),C=d}function sOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,B=d+4|0,k=d,m=Pl(oOe()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Fg(B)|0,c=Km(c)|0,pc(0,m|0,s|0,l|0,c|0,Km(f)|0)|0,C=d}function oOe(){var s=0;return o[7992]|0||(lOe(10744),s=7992,n[s>>2]=1,n[s+4>>2]=0),10744}function Km(s){return s=s|0,aOe(s)|0}function aOe(s){return s=s|0,s&255|0}function lOe(s){s=s|0,Sl(s,cOe()|0,3)}function cOe(){return 1756}function uOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;switch(se=C,C=C+32|0,k=se+8|0,Q=se+4|0,M=se+20|0,O=se,NF(s,0),f=aUe(l)|0,n[k>>2]=0,q=k+4|0,n[q>>2]=0,n[k+8>>2]=0,f<<24>>24){case 0:{o[M>>0]=0,AOe(Q,c,M),uD(s,Q)|0,GA(Q);break}case 8:{q=BR(l)|0,o[M>>0]=8,bc(O,n[q+4>>2]|0),fOe(Q,c,M,O,q+8|0),uD(s,Q)|0,GA(Q);break}case 9:{if(m=BR(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,bc(Q,n[d>>2]|0),f=n[q>>2]|0,f>>>0<(n[B>>2]|0)>>>0?(n[f>>2]=n[Q>>2],n[q>>2]=(n[q>>2]|0)+4):pR(k,Q),l;)d=d+4|0;o[M>>0]=9,bc(O,n[m+8>>2]|0),pOe(Q,c,M,O,k),uD(s,Q)|0,GA(Q);break}default:q=BR(l)|0,o[M>>0]=f,bc(O,n[q+4>>2]|0),hOe(Q,c,M,O),uD(s,Q)|0,GA(Q)}ef(k),C=se}function AOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Ka(d),l=da(l)|0,SOe(s,l,o[c>>0]|0),Va(d),C=f}function uD(s,l){s=s|0,l=l|0;var c=0;return c=n[s>>2]|0,c|0&&SA(c|0),n[s>>2]=n[l>>2],n[l>>2]=0,s|0}function fOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+32|0,k=m+16|0,B=m+8|0,Q=m,Ka(B),l=da(l)|0,c=o[c>>0]|0,n[Q>>2]=n[f>>2],d=n[d>>2]|0,n[k>>2]=n[Q>>2],BOe(s,l,c,k,d),Va(B),C=m}function pOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0;m=C,C=C+32|0,Q=m+24|0,B=m+16|0,M=m+12|0,k=m,Ka(B),l=da(l)|0,c=o[c>>0]|0,n[M>>2]=n[f>>2],gR(k,d),n[Q>>2]=n[M>>2],EOe(s,l,c,Q,k),ef(k),Va(B),C=m}function hOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+32|0,B=d+16|0,m=d+8|0,k=d,Ka(m),l=da(l)|0,c=o[c>>0]|0,n[k>>2]=n[f>>2],n[B>>2]=n[k>>2],gOe(s,l,c,B),Va(m),C=d}function gOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+4|0,k=d,B=Pl(dOe()|0)|0,c=Km(c)|0,n[k>>2]=n[f>>2],n[m>>2]=n[k>>2],AD(s,oo(0,B|0,l|0,c|0,Fg(m)|0)|0),C=d}function dOe(){var s=0;return o[8e3]|0||(mOe(10756),s=8e3,n[s>>2]=1,n[s+4>>2]=0),10756}function AD(s,l){s=s|0,l=l|0,NF(s,l)}function mOe(s){s=s|0,Sl(s,yOe()|0,2)}function yOe(){return 1772}function EOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0;m=C,C=C+32|0,Q=m+16|0,M=m+12|0,B=m,k=Pl(COe()|0)|0,c=Km(c)|0,n[M>>2]=n[f>>2],n[Q>>2]=n[M>>2],f=Fg(Q)|0,n[B>>2]=n[d>>2],Q=d+4|0,n[B+4>>2]=n[Q>>2],M=d+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[Q>>2]=0,n[d>>2]=0,AD(s,pc(0,k|0,l|0,c|0,f|0,mR(B)|0)|0),ef(B),C=m}function COe(){var s=0;return o[8008]|0||(wOe(10768),s=8008,n[s>>2]=1,n[s+4>>2]=0),10768}function wOe(s){s=s|0,Sl(s,IOe()|0,3)}function IOe(){return 1784}function BOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+16|0,k=m+4|0,Q=m,B=Pl(vOe()|0)|0,c=Km(c)|0,n[Q>>2]=n[f>>2],n[k>>2]=n[Q>>2],f=Fg(k)|0,AD(s,pc(0,B|0,l|0,c|0,f|0,dR(d)|0)|0),C=m}function vOe(){var s=0;return o[8016]|0||(DOe(10780),s=8016,n[s>>2]=1,n[s+4>>2]=0),10780}function DOe(s){s=s|0,Sl(s,POe()|0,3)}function POe(){return 1800}function SOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=Pl(bOe()|0)|0,AD(s,Qn(0,f|0,l|0,Km(c)|0)|0)}function bOe(){var s=0;return o[8024]|0||(xOe(10792),s=8024,n[s>>2]=1,n[s+4>>2]=0),10792}function xOe(s){s=s|0,Sl(s,kOe()|0,1)}function kOe(){return 1816}function QOe(){FOe(),ROe(),TOe()}function FOe(){n[2702]=p7(65536)|0}function ROe(){eMe(10856)}function TOe(){LOe(10816)}function LOe(s){s=s|0,NOe(s,5044),OOe(s)|0}function NOe(s,l){s=s|0,l=l|0;var c=0;c=x5()|0,n[s>>2]=c,VOe(c,l),xp(n[s>>2]|0)}function OOe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,MOe()|0),s|0}function MOe(){var s=0;return o[8032]|0||(_5(10820),tr(64,10820,U|0)|0,s=8032,n[s>>2]=1,n[s+4>>2]=0),Tr(10820)|0||_5(10820),10820}function _5(s){s=s|0,HOe(s),Qg(s,25)}function UOe(s){s=s|0,_Oe(s+24|0)}function _Oe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function HOe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,18,l,YOe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function jOe(s,l){s=s|0,l=l|0,qOe(s,l)}function qOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;c=C,C=C+16|0,f=c,d=c+4|0,bg(d,l),n[f>>2]=xg(d,l)|0,GOe(s,f),C=c}function GOe(s,l){s=s|0,l=l|0,H5(s+4|0,n[l>>2]|0),o[s+8>>0]=1}function H5(s,l){s=s|0,l=l|0,n[s>>2]=l}function YOe(){return 1824}function WOe(s){return s=s|0,KOe(s)|0}function KOe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(4)|0,bg(d,s),H5(k,xg(d,s)|0),m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],k5(s,m,d),n[f>>2]=s,C=c,l|0}function Wa(s){s=s|0;var l=0,c=0;return s=s+7&-8,s>>>0<=32768&&(l=n[2701]|0,s>>>0<=(65536-l|0)>>>0)?(c=(n[2702]|0)+l|0,n[2701]=l+s,s=c):(s=p7(s+8|0)|0,n[s>>2]=n[2703],n[2703]=s,s=s+8|0),s|0}function VOe(s,l){s=s|0,l=l|0,n[s>>2]=JOe()|0,n[s+4>>2]=zOe()|0,n[s+12>>2]=l,n[s+8>>2]=XOe()|0,n[s+32>>2]=9}function JOe(){return 11744}function zOe(){return 1832}function XOe(){return lD()|0}function ZOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&($Oe(c),gt(c)):l|0&&gt(l)}function $Oe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function eMe(s){s=s|0,tMe(s,5052),rMe(s)|0,nMe(s,5058,26)|0,iMe(s,5069,1)|0,sMe(s,5077,10)|0,oMe(s,5087,19)|0,aMe(s,5094,27)|0}function tMe(s,l){s=s|0,l=l|0;var c=0;c=$4e()|0,n[s>>2]=c,eUe(c,l),xp(n[s>>2]|0)}function rMe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,U4e()|0),s|0}function nMe(s,l,c){return s=s|0,l=l|0,c=c|0,w4e(s,pn(l)|0,c,0),s|0}function iMe(s,l,c){return s=s|0,l=l|0,c=c|0,o4e(s,pn(l)|0,c,0),s|0}function sMe(s,l,c){return s=s|0,l=l|0,c=c|0,MMe(s,pn(l)|0,c,0),s|0}function oMe(s,l,c){return s=s|0,l=l|0,c=c|0,BMe(s,pn(l)|0,c,0),s|0}function j5(s,l){s=s|0,l=l|0;var c=0,f=0;e:for(;;){for(c=n[2703]|0;;){if((c|0)==(l|0))break e;if(f=n[c>>2]|0,n[2703]=f,!c)c=f;else break}gt(c)}n[2701]=s}function aMe(s,l,c){return s=s|0,l=l|0,c=c|0,lMe(s,pn(l)|0,c,0),s|0}function lMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=yR()|0,s=cMe(c)|0,hn(m,l,d,s,uMe(c,f)|0,f)}function yR(){var s=0,l=0;if(o[8040]|0||(G5(10860),tr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10860)|0)){s=10860,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));G5(10860)}return 10860}function cMe(s){return s=s|0,s|0}function uMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=yR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(q5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(AMe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function q5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function AMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=fMe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,pMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,q5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,hMe(s,d),gMe(d),C=k;return}}function fMe(s){return s=s|0,536870911}function pMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function hMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function gMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function G5(s){s=s|0,yMe(s)}function dMe(s){s=s|0,mMe(s+24|0)}function mMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function yMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,11,l,EMe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function EMe(){return 1840}function CMe(s,l,c){s=s|0,l=l|0,c=c|0,IMe(n[(wMe(s)|0)>>2]|0,l,c)}function wMe(s){return s=s|0,(n[(yR()|0)+24>>2]|0)+(s<<3)|0}function IMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=C,C=C+16|0,m=f+1|0,d=f,bg(m,l),l=xg(m,l)|0,bg(d,c),c=xg(d,c)|0,rf[s&31](l,c),C=f}function BMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=ER()|0,s=vMe(c)|0,hn(m,l,d,s,DMe(c,f)|0,f)}function ER(){var s=0,l=0;if(o[8048]|0||(W5(10896),tr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10896)|0)){s=10896,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));W5(10896)}return 10896}function vMe(s){return s=s|0,s|0}function DMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=ER()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(Y5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(PMe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function Y5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function PMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=SMe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,bMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,Y5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,xMe(s,d),kMe(d),C=k;return}}function SMe(s){return s=s|0,536870911}function bMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function xMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function kMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function W5(s){s=s|0,RMe(s)}function QMe(s){s=s|0,FMe(s+24|0)}function FMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function RMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,11,l,TMe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function TMe(){return 1852}function LMe(s,l){return s=s|0,l=l|0,OMe(n[(NMe(s)|0)>>2]|0,l)|0}function NMe(s){return s=s|0,(n[(ER()|0)+24>>2]|0)+(s<<3)|0}function OMe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,bg(f,l),l=xg(f,l)|0,l=oD(Ng[s&31](l)|0)|0,C=c,l|0}function MMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=CR()|0,s=UMe(c)|0,hn(m,l,d,s,_Me(c,f)|0,f)}function CR(){var s=0,l=0;if(o[8056]|0||(V5(10932),tr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10932)|0)){s=10932,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));V5(10932)}return 10932}function UMe(s){return s=s|0,s|0}function _Me(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=CR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(K5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(HMe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function K5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function HMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=jMe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,qMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,K5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,GMe(s,d),YMe(d),C=k;return}}function jMe(s){return s=s|0,536870911}function qMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function GMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function YMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function V5(s){s=s|0,VMe(s)}function WMe(s){s=s|0,KMe(s+24|0)}function KMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function VMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,7,l,JMe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function JMe(){return 1860}function zMe(s,l,c){return s=s|0,l=l|0,c=c|0,ZMe(n[(XMe(s)|0)>>2]|0,l,c)|0}function XMe(s){return s=s|0,(n[(CR()|0)+24>>2]|0)+(s<<3)|0}function ZMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+32|0,B=f+12|0,m=f+8|0,k=f,Q=f+16|0,d=f+4|0,$Me(Q,l),e4e(k,Q,l),Dp(d,c),c=Pp(d,c)|0,n[B>>2]=n[k>>2],Hw[s&15](m,B,c),c=t4e(m)|0,GA(m),Sp(d),C=f,c|0}function $Me(s,l){s=s|0,l=l|0}function e4e(s,l,c){s=s|0,l=l|0,c=c|0,r4e(s,c)}function t4e(s){return s=s|0,da(s)|0}function r4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+16|0,c=d,f=l,f&1?(n4e(c,0),ii(f|0,c|0)|0,i4e(s,c),s4e(c)):n[s>>2]=n[l>>2],C=d}function n4e(s,l){s=s|0,l=l|0,XG(s,l),n[s+4>>2]=0,o[s+8>>0]=0}function i4e(s,l){s=s|0,l=l|0,n[s>>2]=n[l+4>>2]}function s4e(s){s=s|0,o[s+8>>0]=0}function o4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=wR()|0,s=a4e(c)|0,hn(m,l,d,s,l4e(c,f)|0,f)}function wR(){var s=0,l=0;if(o[8064]|0||(z5(10968),tr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10968)|0)){s=10968,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));z5(10968)}return 10968}function a4e(s){return s=s|0,s|0}function l4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=wR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(J5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(c4e(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function J5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function c4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=u4e(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,A4e(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,J5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,f4e(s,d),p4e(d),C=k;return}}function u4e(s){return s=s|0,536870911}function A4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function f4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function p4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function z5(s){s=s|0,d4e(s)}function h4e(s){s=s|0,g4e(s+24|0)}function g4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function d4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,1,l,m4e()|0,5),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function m4e(){return 1872}function y4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,C4e(n[(E4e(s)|0)>>2]|0,l,c,f,d,m)}function E4e(s){return s=s|0,(n[(wR()|0)+24>>2]|0)+(s<<3)|0}function C4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,q=0;B=C,C=C+32|0,k=B+16|0,Q=B+12|0,M=B+8|0,O=B+4|0,q=B,Dp(k,l),l=Pp(k,l)|0,Dp(Q,c),c=Pp(Q,c)|0,Dp(M,f),f=Pp(M,f)|0,Dp(O,d),d=Pp(O,d)|0,Dp(q,m),m=Pp(q,m)|0,y7[s&1](l,c,f,d,m),Sp(q),Sp(O),Sp(M),Sp(Q),Sp(k),C=B}function w4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=IR()|0,s=I4e(c)|0,hn(m,l,d,s,B4e(c,f)|0,f)}function IR(){var s=0,l=0;if(o[8072]|0||(Z5(11004),tr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(Tr(11004)|0)){s=11004,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Z5(11004)}return 11004}function I4e(s){return s=s|0,s|0}function B4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=IR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(X5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(v4e(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function X5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function v4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=D4e(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,P4e(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,X5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,S4e(s,d),b4e(d),C=k;return}}function D4e(s){return s=s|0,536870911}function P4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function S4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function b4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function Z5(s){s=s|0,Q4e(s)}function x4e(s){s=s|0,k4e(s+24|0)}function k4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function Q4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,12,l,F4e()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function F4e(){return 1896}function R4e(s,l,c){s=s|0,l=l|0,c=c|0,L4e(n[(T4e(s)|0)>>2]|0,l,c)}function T4e(s){return s=s|0,(n[(IR()|0)+24>>2]|0)+(s<<3)|0}function L4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=C,C=C+16|0,m=f+4|0,d=f,N4e(m,l),l=O4e(m,l)|0,Dp(d,c),c=Pp(d,c)|0,rf[s&31](l,c),Sp(d),C=f}function N4e(s,l){s=s|0,l=l|0}function O4e(s,l){return s=s|0,l=l|0,M4e(l)|0}function M4e(s){return s=s|0,s|0}function U4e(){var s=0;return o[8080]|0||($5(11040),tr(70,11040,U|0)|0,s=8080,n[s>>2]=1,n[s+4>>2]=0),Tr(11040)|0||$5(11040),11040}function $5(s){s=s|0,j4e(s),Qg(s,71)}function _4e(s){s=s|0,H4e(s+24|0)}function H4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function j4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,7,l,W4e()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function q4e(s){s=s|0,G4e(s)}function G4e(s){s=s|0,Y4e(s)}function Y4e(s){s=s|0,o[s+8>>0]=1}function W4e(){return 1936}function K4e(){return V4e()|0}function V4e(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,m=s+4|0,n[m>>2]=Kt(1)|0,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],J4e(f,m,d),n[c>>2]=f,C=l,s|0}function J4e(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1916,n[c+12>>2]=l,n[s+4>>2]=c}function z4e(s){s=s|0,zm(s),gt(s)}function X4e(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function Z4e(s){s=s|0,gt(s)}function $4e(){var s=0;return o[8088]|0||(oUe(11076),tr(25,11076,U|0)|0,s=8088,n[s>>2]=1,n[s+4>>2]=0),11076}function eUe(s,l){s=s|0,l=l|0,n[s>>2]=tUe()|0,n[s+4>>2]=rUe()|0,n[s+12>>2]=l,n[s+8>>2]=nUe()|0,n[s+32>>2]=10}function tUe(){return 11745}function rUe(){return 1940}function nUe(){return aD()|0}function iUe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(sUe(c),gt(c)):l|0&&gt(l)}function sUe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function oUe(s){s=s|0,vp(s)}function bc(s,l){s=s|0,l=l|0,n[s>>2]=l}function BR(s){return s=s|0,n[s>>2]|0}function aUe(s){return s=s|0,o[n[s>>2]>>0]|0}function lUe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,n[f>>2]=n[s>>2],cUe(l,f)|0,C=c}function cUe(s,l){s=s|0,l=l|0;var c=0;return c=uUe(n[s>>2]|0,l)|0,l=s+4|0,n[(n[l>>2]|0)+8>>2]=c,n[(n[l>>2]|0)+8>>2]|0}function uUe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,Ka(f),s=da(s)|0,l=AUe(s,n[l>>2]|0)|0,Va(f),C=c,l|0}function Ka(s){s=s|0,n[s>>2]=n[2701],n[s+4>>2]=n[2703]}function AUe(s,l){s=s|0,l=l|0;var c=0;return c=Pl(fUe()|0)|0,Qn(0,c|0,s|0,dR(l)|0)|0}function Va(s){s=s|0,j5(n[s>>2]|0,n[s+4>>2]|0)}function fUe(){var s=0;return o[8096]|0||(pUe(11120),s=8096,n[s>>2]=1,n[s+4>>2]=0),11120}function pUe(s){s=s|0,Sl(s,hUe()|0,1)}function hUe(){return 1948}function gUe(){dUe()}function dUe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0,Me=0,Qe=0;if(Me=C,C=C+16|0,O=Me+4|0,q=Me,Li(65536,10804,n[2702]|0,10812),c=B5()|0,l=n[c>>2]|0,s=n[l>>2]|0,s|0)for(f=n[c+8>>2]|0,c=n[c+4>>2]|0;uc(s|0,u[c>>0]|0|0,o[f>>0]|0),l=l+4|0,s=n[l>>2]|0,s;)f=f+1|0,c=c+1|0;if(s=v5()|0,l=n[s>>2]|0,l|0)do uu(l|0,n[s+4>>2]|0),s=s+8|0,l=n[s>>2]|0;while((l|0)!=0);uu(mUe()|0,5167),M=Ym()|0,s=n[M>>2]|0;e:do if(s|0){do yUe(n[s+4>>2]|0),s=n[s>>2]|0;while((s|0)!=0);if(s=n[M>>2]|0,s|0){Q=M;do{for(;d=s,s=n[s>>2]|0,d=n[d+4>>2]|0,!!(EUe(d)|0);)if(n[q>>2]=Q,n[O>>2]=n[q>>2],CUe(M,O)|0,!s)break e;if(wUe(d),Q=n[Q>>2]|0,l=e7(d)|0,m=Hi()|0,B=C,C=C+((1*(l<<2)|0)+15&-16)|0,k=C,C=C+((1*(l<<2)|0)+15&-16)|0,l=n[(N5(d)|0)>>2]|0,l|0)for(c=B,f=k;n[c>>2]=n[(Wm(n[l+4>>2]|0)|0)>>2],n[f>>2]=n[l+8>>2],l=n[l>>2]|0,l;)c=c+4|0,f=f+4|0;Qe=Wm(d)|0,l=IUe(d)|0,c=e7(d)|0,f=BUe(d)|0,Au(Qe|0,l|0,B|0,k|0,c|0,f|0,uR(d)|0),_i(m|0)}while((s|0)!=0)}}while(0);if(s=n[(AR()|0)>>2]|0,s|0)do Qe=s+4|0,M=fR(Qe)|0,d=Ow(M)|0,m=Lw(M)|0,B=(Nw(M)|0)+1|0,k=fD(M)|0,Q=t7(Qe)|0,M=Tr(M)|0,O=cD(Qe)|0,q=vR(Qe)|0,El(0,d|0,m|0,B|0,k|0,Q|0,M|0,O|0,q|0,DR(Qe)|0),s=n[s>>2]|0;while((s|0)!=0);s=n[(Ym()|0)>>2]|0;e:do if(s|0){t:for(;;){if(l=n[s+4>>2]|0,l|0&&(se=n[(Wm(l)|0)>>2]|0,Ge=n[(O5(l)|0)>>2]|0,Ge|0)){c=Ge;do{l=c+4|0,f=fR(l)|0;r:do if(f|0)switch(Tr(f)|0){case 0:break t;case 4:case 3:case 2:{k=Ow(f)|0,Q=Lw(f)|0,M=(Nw(f)|0)+1|0,O=fD(f)|0,q=Tr(f)|0,Qe=cD(l)|0,El(se|0,k|0,Q|0,M|0,O|0,0,q|0,Qe|0,vR(l)|0,DR(l)|0);break r}case 1:{B=Ow(f)|0,k=Lw(f)|0,Q=(Nw(f)|0)+1|0,M=fD(f)|0,O=t7(l)|0,q=Tr(f)|0,Qe=cD(l)|0,El(se|0,B|0,k|0,Q|0,M|0,O|0,q|0,Qe|0,vR(l)|0,DR(l)|0);break r}case 5:{M=Ow(f)|0,O=Lw(f)|0,q=(Nw(f)|0)+1|0,Qe=fD(f)|0,El(se|0,M|0,O|0,q|0,Qe|0,vUe(f)|0,Tr(f)|0,0,0,0);break r}default:break r}while(0);c=n[c>>2]|0}while((c|0)!=0)}if(s=n[s>>2]|0,!s)break e}Rt()}while(0);Ce(),C=Me}function mUe(){return 11703}function yUe(s){s=s|0,o[s+40>>0]=0}function EUe(s){return s=s|0,(o[s+40>>0]|0)!=0|0}function CUe(s,l){return s=s|0,l=l|0,l=DUe(l)|0,s=n[l>>2]|0,n[l>>2]=n[s>>2],gt(s),n[l>>2]|0}function wUe(s){s=s|0,o[s+40>>0]=1}function e7(s){return s=s|0,n[s+20>>2]|0}function IUe(s){return s=s|0,n[s+8>>2]|0}function BUe(s){return s=s|0,n[s+32>>2]|0}function fD(s){return s=s|0,n[s+4>>2]|0}function t7(s){return s=s|0,n[s+4>>2]|0}function vR(s){return s=s|0,n[s+8>>2]|0}function DR(s){return s=s|0,n[s+16>>2]|0}function vUe(s){return s=s|0,n[s+20>>2]|0}function DUe(s){return s=s|0,n[s>>2]|0}function pD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,qe=0,Nt=0;Nt=C,C=C+16|0,se=Nt;do if(s>>>0<245){if(M=s>>>0<11?16:s+11&-8,s=M>>>3,q=n[2783]|0,c=q>>>s,c&3|0)return l=(c&1^1)+s|0,s=11172+(l<<1<<2)|0,c=s+8|0,f=n[c>>2]|0,d=f+8|0,m=n[d>>2]|0,(s|0)==(m|0)?n[2783]=q&~(1<<l):(n[m+12>>2]=s,n[c>>2]=m),qe=l<<3,n[f+4>>2]=qe|3,qe=f+qe+4|0,n[qe>>2]=n[qe>>2]|1,qe=d,C=Nt,qe|0;if(O=n[2785]|0,M>>>0>O>>>0){if(c|0)return l=2<<s,l=c<<s&(l|0-l),l=(l&0-l)+-1|0,B=l>>>12&16,l=l>>>B,c=l>>>5&8,l=l>>>c,d=l>>>2&4,l=l>>>d,s=l>>>1&2,l=l>>>s,f=l>>>1&1,f=(c|B|d|s|f)+(l>>>f)|0,l=11172+(f<<1<<2)|0,s=l+8|0,d=n[s>>2]|0,B=d+8|0,c=n[B>>2]|0,(l|0)==(c|0)?(s=q&~(1<<f),n[2783]=s):(n[c+12>>2]=l,n[s>>2]=c,s=q),m=(f<<3)-M|0,n[d+4>>2]=M|3,f=d+M|0,n[f+4>>2]=m|1,n[f+m>>2]=m,O|0&&(d=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=c),n[2785]=m,n[2788]=f,qe=B,C=Nt,qe|0;if(k=n[2784]|0,k){if(c=(k&0-k)+-1|0,B=c>>>12&16,c=c>>>B,m=c>>>5&8,c=c>>>m,Q=c>>>2&4,c=c>>>Q,f=c>>>1&2,c=c>>>f,s=c>>>1&1,s=n[11436+((m|B|Q|f|s)+(c>>>s)<<2)>>2]|0,c=(n[s+4>>2]&-8)-M|0,f=n[s+16+(((n[s+16>>2]|0)==0&1)<<2)>>2]|0,!f)Q=s,m=c;else{do B=(n[f+4>>2]&-8)-M|0,Q=B>>>0<c>>>0,c=Q?B:c,s=Q?f:s,f=n[f+16+(((n[f+16>>2]|0)==0&1)<<2)>>2]|0;while((f|0)!=0);Q=s,m=c}if(B=Q+M|0,Q>>>0<B>>>0){d=n[Q+24>>2]|0,l=n[Q+12>>2]|0;do if((l|0)==(Q|0)){if(s=Q+20|0,l=n[s>>2]|0,!l&&(s=Q+16|0,l=n[s>>2]|0,!l)){c=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0,c=l}else c=n[Q+8>>2]|0,n[c+12>>2]=l,n[l+8>>2]=c,c=l;while(0);do if(d|0){if(l=n[Q+28>>2]|0,s=11436+(l<<2)|0,(Q|0)==(n[s>>2]|0)){if(n[s>>2]=c,!c){n[2784]=k&~(1<<l);break}}else if(n[d+16+(((n[d+16>>2]|0)!=(Q|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=d,l=n[Q+16>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),l=n[Q+20>>2]|0,l|0&&(n[c+20>>2]=l,n[l+24>>2]=c)}while(0);return m>>>0<16?(qe=m+M|0,n[Q+4>>2]=qe|3,qe=Q+qe+4|0,n[qe>>2]=n[qe>>2]|1):(n[Q+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,O|0&&(f=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<<l,q&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=q|l,l=c,s=c+8|0),n[s>>2]=f,n[l+12>>2]=f,n[f+8>>2]=l,n[f+12>>2]=c),n[2785]=m,n[2788]=B),qe=Q+8|0,C=Nt,qe|0}else q=M}else q=M}else q=M}else if(s>>>0<=4294967231)if(s=s+11|0,M=s&-8,Q=n[2784]|0,Q){f=0-M|0,s=s>>>8,s?M>>>0>16777215?k=31:(q=(s+1048320|0)>>>16&8,Ue=s<<q,O=(Ue+520192|0)>>>16&4,Ue=Ue<<O,k=(Ue+245760|0)>>>16&2,k=14-(O|q|k)+(Ue<<k>>>15)|0,k=M>>>(k+7|0)&1|k<<1):k=0,c=n[11436+(k<<2)>>2]|0;e:do if(!c)c=0,s=0,Ue=57;else for(s=0,B=M<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[c+4>>2]&-8)-M|0,d>>>0<f>>>0)if(d)s=c,f=d;else{s=c,f=0,d=c,Ue=61;break e}if(d=n[c+20>>2]|0,c=n[c+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(c|0)?m:d,d=(c|0)==0,d){c=m,Ue=57;break}else B=B<<((d^1)&1)}while(0);if((Ue|0)==57){if((c|0)==0&(s|0)==0){if(s=2<<k,s=Q&(s|0-s),!s){q=M;break}q=(s&0-s)+-1|0,B=q>>>12&16,q=q>>>B,m=q>>>5&8,q=q>>>m,k=q>>>2&4,q=q>>>k,O=q>>>1&2,q=q>>>O,c=q>>>1&1,s=0,c=n[11436+((m|B|k|O|c)+(q>>>c)<<2)>>2]|0}c?(d=c,Ue=61):(k=s,B=f)}if((Ue|0)==61)for(;;)if(Ue=0,c=(n[d+4>>2]&-8)-M|0,q=c>>>0<f>>>0,c=q?c:f,s=q?d:s,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)f=c,Ue=61;else{k=s,B=c;break}if((k|0)!=0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=k+M|0,k>>>0>=m>>>0)return qe=0,C=Nt,qe|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(s=k+20|0,l=n[s>>2]|0,!l&&(s=k+16|0,l=n[s>>2]|0,!l)){l=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0}else qe=n[k+8>>2]|0,n[qe+12>>2]=l,n[l+8>>2]=qe;while(0);do if(d){if(s=n[k+28>>2]|0,c=11436+(s<<2)|0,(k|0)==(n[c>>2]|0)){if(n[c>>2]=l,!l){f=Q&~(1<<s),n[2784]=f;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){f=Q;break}n[l+24>>2]=d,s=n[k+16>>2]|0,s|0&&(n[l+16>>2]=s,n[s+24>>2]=l),s=n[k+20>>2]|0,s&&(n[l+20>>2]=s,n[s+24>>2]=l),f=Q}else f=Q;while(0);do if(B>>>0>=16){if(n[k+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=c;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(Ue=(l+1048320|0)>>>16&8,qe=l<<Ue,lt=(qe+520192|0)>>>16&4,qe=qe<<lt,l=(qe+245760|0)>>>16&2,l=14-(lt|Ue|l)+(qe<<l>>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,c=11436+(l<<2)|0,n[m+28>>2]=l,s=m+16|0,n[s+4>>2]=0,n[s>>2]=0,s=1<<l,!(f&s)){n[2784]=f|s,n[c>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}for(s=B<<((l|0)==31?0:25-(l>>>1)|0),c=n[c>>2]|0;;){if((n[c+4>>2]&-8|0)==(B|0)){Ue=97;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=96;break}}if((Ue|0)==96){n[f>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((Ue|0)==97){Ue=c+8|0,qe=n[Ue>>2]|0,n[qe+12>>2]=m,n[Ue>>2]=m,n[m+8>>2]=qe,n[m+12>>2]=c,n[m+24>>2]=0;break}}else qe=B+M|0,n[k+4>>2]=qe|3,qe=k+qe+4|0,n[qe>>2]=n[qe>>2]|1;while(0);return qe=k+8|0,C=Nt,qe|0}else q=M}else q=M;else q=-1;while(0);if(c=n[2785]|0,c>>>0>=q>>>0)return l=c-q|0,s=n[2788]|0,l>>>0>15?(qe=s+q|0,n[2788]=qe,n[2785]=l,n[qe+4>>2]=l|1,n[qe+l>>2]=l,n[s+4>>2]=q|3):(n[2785]=0,n[2788]=0,n[s+4>>2]=c|3,qe=s+c+4|0,n[qe>>2]=n[qe>>2]|1),qe=s+8|0,C=Nt,qe|0;if(B=n[2786]|0,B>>>0>q>>>0)return lt=B-q|0,n[2786]=lt,qe=n[2789]|0,Ue=qe+q|0,n[2789]=Ue,n[Ue+4>>2]=lt|1,n[qe+4>>2]=q|3,qe=qe+8|0,C=Nt,qe|0;if(n[2901]|0?s=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,s=se&-16^1431655768,n[se>>2]=s,n[2901]=s,s=4096),k=q+48|0,Q=q+47|0,m=s+Q|0,d=0-s|0,M=m&d,M>>>0<=q>>>0||(s=n[2893]|0,s|0&&(O=n[2891]|0,se=O+M|0,se>>>0<=O>>>0|se>>>0>s>>>0)))return qe=0,C=Nt,qe|0;e:do if(n[2894]&4)l=0,Ue=133;else{c=n[2789]|0;t:do if(c){for(f=11580;s=n[f>>2]|0,!(s>>>0<=c>>>0&&(Qe=f+4|0,(s+(n[Qe>>2]|0)|0)>>>0>c>>>0));)if(s=n[f+8>>2]|0,s)f=s;else{Ue=118;break t}if(l=m-B&d,l>>>0<2147483647)if(s=Qp(l|0)|0,(s|0)==((n[f>>2]|0)+(n[Qe>>2]|0)|0)){if((s|0)!=-1){B=l,m=s,Ue=135;break e}}else f=s,Ue=126;else l=0}else Ue=118;while(0);do if((Ue|0)==118)if(c=Qp(0)|0,(c|0)!=-1&&(l=c,Ge=n[2902]|0,Me=Ge+-1|0,l=((Me&l|0)==0?0:(Me+l&0-Ge)-l|0)+M|0,Ge=n[2891]|0,Me=l+Ge|0,l>>>0>q>>>0&l>>>0<2147483647)){if(Qe=n[2893]|0,Qe|0&&Me>>>0<=Ge>>>0|Me>>>0>Qe>>>0){l=0;break}if(s=Qp(l|0)|0,(s|0)==(c|0)){B=l,m=c,Ue=135;break e}else f=s,Ue=126}else l=0;while(0);do if((Ue|0)==126){if(c=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(f|0)!=-1)))if((f|0)==-1){l=0;break}else{B=l,m=f,Ue=135;break e}if(s=n[2903]|0,s=Q-l+s&0-s,s>>>0>=2147483647){B=l,m=f,Ue=135;break e}if((Qp(s|0)|0)==-1){Qp(c|0)|0,l=0;break}else{B=s+l|0,m=f,Ue=135;break e}}while(0);n[2894]=n[2894]|4,Ue=133}while(0);if((Ue|0)==133&&M>>>0<2147483647&&(lt=Qp(M|0)|0,Qe=Qp(0)|0,et=Qe-lt|0,Xe=et>>>0>(q+40|0)>>>0,!((lt|0)==-1|Xe^1|lt>>>0<Qe>>>0&((lt|0)!=-1&(Qe|0)!=-1)^1))&&(B=Xe?et:l,m=lt,Ue=135),(Ue|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),Q=n[2789]|0;do if(Q){for(l=11580;;){if(s=n[l>>2]|0,c=l+4|0,f=n[c>>2]|0,(m|0)==(s+f|0)){Ue=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((Ue|0)==145&&(n[l+12>>2]&8|0)==0&&Q>>>0<m>>>0&Q>>>0>=s>>>0){n[c>>2]=f+B,qe=Q+8|0,qe=(qe&7|0)==0?0:0-qe&7,Ue=Q+qe|0,qe=(n[2786]|0)+(B-qe)|0,n[2789]=Ue,n[2786]=qe,n[Ue+4>>2]=qe|1,n[Ue+qe+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),c=m+B|0,l=11580;;){if((n[l>>2]|0)==(c|0)){Ue=153;break}if(s=n[l+8>>2]|0,s)l=s;else break}if((Ue|0)==153&&(n[l+12>>2]&8|0)==0){n[l>>2]=m,O=l+4|0,n[O>>2]=(n[O>>2]|0)+B,O=m+8|0,O=m+((O&7|0)==0?0:0-O&7)|0,l=c+8|0,l=c+((l&7|0)==0?0:0-l&7)|0,M=O+q|0,k=l-O-q|0,n[O+4>>2]=q|3;do if((l|0)!=(Q|0)){if((l|0)==(n[2788]|0)){qe=(n[2785]|0)+k|0,n[2785]=qe,n[2788]=M,n[M+4>>2]=qe|1,n[M+qe>>2]=qe;break}if(s=n[l+4>>2]|0,(s&3|0)==1){B=s&-8,f=s>>>3;e:do if(s>>>0<256)if(s=n[l+8>>2]|0,c=n[l+12>>2]|0,(c|0)==(s|0)){n[2783]=n[2783]&~(1<<f);break}else{n[s+12>>2]=c,n[c+8>>2]=s;break}else{m=n[l+24>>2]|0,s=n[l+12>>2]|0;do if((s|0)==(l|0)){if(f=l+16|0,c=f+4|0,s=n[c>>2]|0,!s)if(s=n[f>>2]|0,s)c=f;else{s=0;break}for(;;){if(f=s+20|0,d=n[f>>2]|0,d|0){s=d,c=f;continue}if(f=s+16|0,d=n[f>>2]|0,d)s=d,c=f;else break}n[c>>2]=0}else qe=n[l+8>>2]|0,n[qe+12>>2]=s,n[s+8>>2]=qe;while(0);if(!m)break;c=n[l+28>>2]|0,f=11436+(c<<2)|0;do if((l|0)!=(n[f>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=s,!s)break e}else{if(n[f>>2]=s,s|0)break;n[2784]=n[2784]&~(1<<c);break e}while(0);if(n[s+24>>2]=m,c=l+16|0,f=n[c>>2]|0,f|0&&(n[s+16>>2]=f,n[f+24>>2]=s),c=n[c+4>>2]|0,!c)break;n[s+20>>2]=c,n[c+24>>2]=s}while(0);l=l+B|0,d=B+k|0}else d=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=d|1,n[M+d>>2]=d,l=d>>>3,d>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=c;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}Ue=(l+1048320|0)>>>16&8,qe=l<<Ue,lt=(qe+520192|0)>>>16&4,qe=qe<<lt,l=(qe+245760|0)>>>16&2,l=14-(lt|Ue|l)+(qe<<l>>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(0);if(f=11436+(l<<2)|0,n[M+28>>2]=l,s=M+16|0,n[s+4>>2]=0,n[s>>2]=0,s=n[2784]|0,c=1<<l,!(s&c)){n[2784]=s|c,n[f>>2]=M,n[M+24>>2]=f,n[M+12>>2]=M,n[M+8>>2]=M;break}for(s=d<<((l|0)==31?0:25-(l>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){Ue=194;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=193;break}}if((Ue|0)==193){n[f>>2]=M,n[M+24>>2]=c,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((Ue|0)==194){Ue=c+8|0,qe=n[Ue>>2]|0,n[qe+12>>2]=M,n[Ue>>2]=M,n[M+8>>2]=qe,n[M+12>>2]=c,n[M+24>>2]=0;break}}else qe=(n[2786]|0)+k|0,n[2786]=qe,n[2789]=M,n[M+4>>2]=qe|1;while(0);return qe=O+8|0,C=Nt,qe|0}for(l=11580;s=n[l>>2]|0,!(s>>>0<=Q>>>0&&(qe=s+(n[l+4>>2]|0)|0,qe>>>0>Q>>>0));)l=n[l+8>>2]|0;d=qe+-47|0,s=d+8|0,s=d+((s&7|0)==0?0:0-s&7)|0,d=Q+16|0,s=s>>>0<d>>>0?Q:s,l=s+8|0,c=m+8|0,c=(c&7|0)==0?0:0-c&7,Ue=m+c|0,c=B+-40-c|0,n[2789]=Ue,n[2786]=c,n[Ue+4>>2]=c|1,n[Ue+c+4>>2]=40,n[2790]=n[2905],c=s+4|0,n[c>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=s+24|0;do Ue=l,l=l+4|0,n[l>>2]=7;while((Ue+8|0)>>>0<qe>>>0);if((s|0)!=(Q|0)){if(m=s-Q|0,n[c>>2]=n[c>>2]&-2,n[Q+4>>2]=m|1,n[s>>2]=m,l=m>>>3,m>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=Q,n[l+12>>2]=Q,n[Q+8>>2]=l,n[Q+12>>2]=c;break}if(l=m>>>8,l?m>>>0>16777215?c=31:(Ue=(l+1048320|0)>>>16&8,qe=l<<Ue,lt=(qe+520192|0)>>>16&4,qe=qe<<lt,c=(qe+245760|0)>>>16&2,c=14-(lt|Ue|c)+(qe<<c>>>15)|0,c=m>>>(c+7|0)&1|c<<1):c=0,f=11436+(c<<2)|0,n[Q+28>>2]=c,n[Q+20>>2]=0,n[d>>2]=0,l=n[2784]|0,s=1<<c,!(l&s)){n[2784]=l|s,n[f>>2]=Q,n[Q+24>>2]=f,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}for(s=m<<((c|0)==31?0:25-(c>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(m|0)){Ue=216;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=215;break}}if((Ue|0)==215){n[f>>2]=Q,n[Q+24>>2]=c,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}else if((Ue|0)==216){Ue=c+8|0,qe=n[Ue>>2]|0,n[qe+12>>2]=Q,n[Ue>>2]=Q,n[Q+8>>2]=qe,n[Q+12>>2]=c,n[Q+24>>2]=0;break}}}else{qe=n[2787]|0,(qe|0)==0|m>>>0<qe>>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do qe=11172+(l<<1<<2)|0,n[qe+12>>2]=qe,n[qe+8>>2]=qe,l=l+1|0;while((l|0)!=32);qe=m+8|0,qe=(qe&7|0)==0?0:0-qe&7,Ue=m+qe|0,qe=B+-40-qe|0,n[2789]=Ue,n[2786]=qe,n[Ue+4>>2]=qe|1,n[Ue+qe+4>>2]=40,n[2790]=n[2905]}while(0);if(l=n[2786]|0,l>>>0>q>>>0)return lt=l-q|0,n[2786]=lt,qe=n[2789]|0,Ue=qe+q|0,n[2789]=Ue,n[Ue+4>>2]=lt|1,n[qe+4>>2]=q|3,qe=qe+8|0,C=Nt,qe|0}return n[(Vm()|0)>>2]=12,qe=0,C=Nt,qe|0}function hD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0;if(!!s){c=s+-8|0,d=n[2787]|0,s=n[s+-4>>2]|0,l=s&-8,Q=c+l|0;do if(s&1)k=c,B=c;else{if(f=n[c>>2]|0,!(s&3)||(B=c+(0-f)|0,m=f+l|0,B>>>0<d>>>0))return;if((B|0)==(n[2788]|0)){if(s=Q+4|0,l=n[s>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[s>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(c=f>>>3,f>>>0<256)if(s=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(s|0)){n[2783]=n[2783]&~(1<<c),k=B,l=m;break}else{n[s+12>>2]=l,n[l+8>>2]=s,k=B,l=m;break}d=n[B+24>>2]|0,s=n[B+12>>2]|0;do if((s|0)==(B|0)){if(c=B+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{s=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=s,n[s+8>>2]=k;while(0);if(d){if(l=n[B+28>>2]|0,c=11436+(l<<2)|0,(B|0)==(n[c>>2]|0)){if(n[c>>2]=s,!s){n[2784]=n[2784]&~(1<<l),k=B,l=m;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(B|0)&1)<<2)>>2]=s,!s){k=B,l=m;break}n[s+24>>2]=d,l=B+16|0,c=n[l>>2]|0,c|0&&(n[s+16>>2]=c,n[c+24>>2]=s),l=n[l+4>>2]|0,l?(n[s+20>>2]=l,n[l+24>>2]=s,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(0);if(!(B>>>0>=Q>>>0)&&(s=Q+4|0,f=n[s>>2]|0,!!(f&1))){if(f&2)n[s>>2]=f&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(s=n[2788]|0,(Q|0)==(n[2789]|0)){if(Q=(n[2786]|0)+l|0,n[2786]=Q,n[2789]=k,n[k+4>>2]=Q|1,(k|0)!=(s|0))return;n[2788]=0,n[2785]=0;return}if((Q|0)==(s|0)){Q=(n[2785]|0)+l|0,n[2785]=Q,n[2788]=B,n[k+4>>2]=Q|1,n[B+Q>>2]=Q;return}d=(f&-8)+l|0,c=f>>>3;do if(f>>>0<256)if(l=n[Q+8>>2]|0,s=n[Q+12>>2]|0,(s|0)==(l|0)){n[2783]=n[2783]&~(1<<c);break}else{n[l+12>>2]=s,n[s+8>>2]=l;break}else{m=n[Q+24>>2]|0,s=n[Q+12>>2]|0;do if((s|0)==(Q|0)){if(c=Q+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{c=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0,c=s}else c=n[Q+8>>2]|0,n[c+12>>2]=s,n[s+8>>2]=c,c=s;while(0);if(m|0){if(s=n[Q+28>>2]|0,l=11436+(s<<2)|0,(Q|0)==(n[l>>2]|0)){if(n[l>>2]=c,!c){n[2784]=n[2784]&~(1<<s);break}}else if(n[m+16+(((n[m+16>>2]|0)!=(Q|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=m,s=Q+16|0,l=n[s>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),s=n[s+4>>2]|0,s|0&&(n[c+20>>2]=s,n[s+24>>2]=c)}}while(0);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(s=d>>>3,d>>>0<256){c=11172+(s<<1<<2)|0,l=n[2783]|0,s=1<<s,l&s?(l=c+8|0,s=n[l>>2]|0):(n[2783]=l|s,s=c,l=c+8|0),n[l>>2]=k,n[s+12>>2]=k,n[k+8>>2]=s,n[k+12>>2]=c;return}s=d>>>8,s?d>>>0>16777215?s=31:(B=(s+1048320|0)>>>16&8,Q=s<<B,m=(Q+520192|0)>>>16&4,Q=Q<<m,s=(Q+245760|0)>>>16&2,s=14-(m|B|s)+(Q<<s>>>15)|0,s=d>>>(s+7|0)&1|s<<1):s=0,f=11436+(s<<2)|0,n[k+28>>2]=s,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,c=1<<s;do if(l&c){for(l=d<<((s|0)==31?0:25-(s>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){s=73;break}if(f=c+16+(l>>>31<<2)|0,s=n[f>>2]|0,s)l=l<<1,c=s;else{s=72;break}}if((s|0)==72){n[f>>2]=k,n[k+24>>2]=c,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((s|0)==73){B=c+8|0,Q=n[B>>2]|0,n[Q+12>>2]=k,n[B>>2]=k,n[k+8>>2]=Q,n[k+12>>2]=c,n[k+24>>2]=0;break}}else n[2784]=l|c,n[f>>2]=k,n[k+24>>2]=f,n[k+12>>2]=k,n[k+8>>2]=k;while(0);if(Q=(n[2791]|0)+-1|0,n[2791]=Q,!Q)s=11588;else return;for(;s=n[s>>2]|0,s;)s=s+8|0;n[2791]=-1}}}function PUe(){return 11628}function SUe(s){s=s|0;var l=0,c=0;return l=C,C=C+16|0,c=l,n[c>>2]=kUe(n[s+60>>2]|0)|0,s=gD(hc(6,c|0)|0)|0,C=l,s|0}function r7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0;q=C,C=C+48|0,M=q+16|0,m=q,d=q+32|0,k=s+28|0,f=n[k>>2]|0,n[d>>2]=f,Q=s+20|0,f=(n[Q>>2]|0)-f|0,n[d+4>>2]=f,n[d+8>>2]=l,n[d+12>>2]=c,f=f+c|0,B=s+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=gD(Ni(146,m|0)|0)|0;e:do if((f|0)!=(m|0)){for(l=2;!((m|0)<0);)if(f=f-m|0,Ge=n[d+4>>2]|0,se=m>>>0>Ge>>>0,d=se?d+8|0:d,l=(se<<31>>31)+l|0,Ge=m-(se?Ge:0)|0,n[d>>2]=(n[d>>2]|0)+Ge,se=d+4|0,n[se>>2]=(n[se>>2]|0)-Ge,n[M>>2]=n[B>>2],n[M+4>>2]=d,n[M+8>>2]=l,m=gD(Ni(146,M|0)|0)|0,(f|0)==(m|0)){O=3;break e}n[s+16>>2]=0,n[k>>2]=0,n[Q>>2]=0,n[s>>2]=n[s>>2]|32,(l|0)==2?c=0:c=c-(n[d+4>>2]|0)|0}else O=3;while(0);return(O|0)==3&&(Ge=n[s+44>>2]|0,n[s+16>>2]=Ge+(n[s+48>>2]|0),n[k>>2]=Ge,n[Q>>2]=Ge),C=q,c|0}function bUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return d=C,C=C+32|0,m=d,f=d+20|0,n[m>>2]=n[s+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=f,n[m+16>>2]=c,(gD(sa(140,m|0)|0)|0)<0?(n[f>>2]=-1,s=-1):s=n[f>>2]|0,C=d,s|0}function gD(s){return s=s|0,s>>>0>4294963200&&(n[(Vm()|0)>>2]=0-s,s=-1),s|0}function Vm(){return(xUe()|0)+64|0}function xUe(){return PR()|0}function PR(){return 2084}function kUe(s){return s=s|0,s|0}function QUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return d=C,C=C+32|0,f=d,n[s+36>>2]=1,(n[s>>2]&64|0)==0&&(n[f>>2]=n[s+60>>2],n[f+4>>2]=21523,n[f+8>>2]=d+16,fu(54,f|0)|0)&&(o[s+75>>0]=-1),f=r7(s,l,c)|0,C=d,f|0}function n7(s,l){s=s|0,l=l|0;var c=0,f=0;if(c=o[s>>0]|0,f=o[l>>0]|0,c<<24>>24==0||c<<24>>24!=f<<24>>24)s=f;else{do s=s+1|0,l=l+1|0,c=o[s>>0]|0,f=o[l>>0]|0;while(!(c<<24>>24==0||c<<24>>24!=f<<24>>24));s=f}return(c&255)-(s&255)|0}function FUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;e:do if(!c)s=0;else{for(;f=o[s>>0]|0,d=o[l>>0]|0,f<<24>>24==d<<24>>24;)if(c=c+-1|0,c)s=s+1|0,l=l+1|0;else{s=0;break e}s=(f&255)-(d&255)|0}while(0);return s|0}function i7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0,Me=0,Qe=0;Qe=C,C=C+224|0,O=Qe+120|0,q=Qe+80|0,Ge=Qe,Me=Qe+136|0,f=q,d=f+40|0;do n[f>>2]=0,f=f+4|0;while((f|0)<(d|0));return n[O>>2]=n[c>>2],(SR(0,l,O,Ge,q)|0)<0?c=-1:((n[s+76>>2]|0)>-1?se=RUe(s)|0:se=0,c=n[s>>2]|0,M=c&32,(o[s+74>>0]|0)<1&&(n[s>>2]=c&-33),f=s+48|0,n[f>>2]|0?c=SR(s,l,O,Ge,q)|0:(d=s+44|0,m=n[d>>2]|0,n[d>>2]=Me,B=s+28|0,n[B>>2]=Me,k=s+20|0,n[k>>2]=Me,n[f>>2]=80,Q=s+16|0,n[Q>>2]=Me+80,c=SR(s,l,O,Ge,q)|0,m&&(ED[n[s+36>>2]&7](s,0,0)|0,c=(n[k>>2]|0)==0?-1:c,n[d>>2]=m,n[f>>2]=0,n[Q>>2]=0,n[B>>2]=0,n[k>>2]=0)),f=n[s>>2]|0,n[s>>2]=f|M,se|0&&TUe(s),c=(f&32|0)==0?c:-1),C=Qe,c|0}function SR(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,qe=0,Nt=0,Mr=0,or=0,Xt=0,Pr=0,Lr=0,ir=0;ir=C,C=C+64|0,or=ir+16|0,Xt=ir,Nt=ir+24|0,Pr=ir+8|0,Lr=ir+20|0,n[or>>2]=l,lt=(s|0)!=0,Ue=Nt+40|0,qe=Ue,Nt=Nt+39|0,Mr=Pr+4|0,B=0,m=0,O=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(Vm()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(0);if(B=o[l>>0]|0,B<<24>>24)k=l;else{Xe=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Xe=9;break t}case 0:{B=k;break t}default:}et=k+1|0,n[or>>2]=et,B=o[et>>0]|0,k=et}t:do if((Xe|0)==9)for(;;){if(Xe=0,(o[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[or>>2]=k,(o[k>>0]|0)==37)Xe=9;else break}while(0);if(B=B-l|0,lt&&ss(s,l,B),B|0){l=k;continue}Q=k+1|0,B=(o[Q>>0]|0)+-48|0,B>>>0<10?(et=(o[k+2>>0]|0)==36,Qe=et?B:-1,O=et?1:O,Q=et?k+3|0:Q):Qe=-1,n[or>>2]=Q,B=o[Q>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(M=0,q=B;;){if(B=1<<k,!(B&75913)){B=q;break t}if(M=B|M,Q=Q+1|0,n[or>>2]=Q,B=o[Q>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;q=B}else M=0;while(0);if(B<<24>>24==42){if(k=Q+1|0,B=(o[k>>0]|0)+-48|0,B>>>0<10&&(o[Q+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[f+((o[k>>0]|0)+-48<<3)>>2]|0,O=1,Q=Q+3|0;else{if(O|0){m=-1;break}lt?(O=(n[c>>2]|0)+(4-1)&~(4-1),B=n[O>>2]|0,n[c>>2]=O+4,O=0,Q=k):(B=0,O=0,Q=k)}n[or>>2]=Q,et=(B|0)<0,B=et?0-B|0:B,M=et?M|8192:M}else{if(B=s7(or)|0,(B|0)<0){m=-1;break}Q=n[or>>2]|0}do if((o[Q>>0]|0)==46){if((o[Q+1>>0]|0)!=42){n[or>>2]=Q+1,k=s7(or)|0,Q=n[or>>2]|0;break}if(q=Q+2|0,k=(o[q>>0]|0)+-48|0,k>>>0<10&&(o[Q+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[f+((o[q>>0]|0)+-48<<3)>>2]|0,Q=Q+4|0,n[or>>2]=Q;break}if(O|0){m=-1;break e}lt?(et=(n[c>>2]|0)+(4-1)&~(4-1),k=n[et>>2]|0,n[c>>2]=et+4):k=0,n[or>>2]=q,Q=q}else k=-1;while(0);for(Me=0;;){if(((o[Q>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(et=Q+1|0,n[or>>2]=et,q=o[(o[Q>>0]|0)+-65+(5178+(Me*58|0))>>0]|0,se=q&255,(se+-1|0)>>>0<8)Me=se,Q=et;else break}if(!(q<<24>>24)){m=-1;break}Ge=(Qe|0)>-1;do if(q<<24>>24==19)if(Ge){m=-1;break e}else Xe=49;else{if(Ge){n[d+(Qe<<2)>>2]=se,Ge=f+(Qe<<3)|0,Qe=n[Ge+4>>2]|0,Xe=Xt,n[Xe>>2]=n[Ge>>2],n[Xe+4>>2]=Qe,Xe=49;break}if(!lt){m=0;break e}o7(Xt,se,c)}while(0);if((Xe|0)==49&&(Xe=0,!lt)){B=0,l=et;continue}Q=o[Q>>0]|0,Q=(Me|0)!=0&(Q&15|0)==3?Q&-33:Q,Ge=M&-65537,Qe=(M&8192|0)==0?M:Ge;t:do switch(Q|0){case 110:switch((Me&255)<<24>>24){case 0:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 1:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 2:{B=n[Xt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}case 3:{a[n[Xt>>2]>>1]=m,B=0,l=et;continue e}case 4:{o[n[Xt>>2]>>0]=m,B=0,l=et;continue e}case 6:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 7:{B=n[Xt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}default:{B=0,l=et;continue e}}case 112:{Q=120,k=k>>>0>8?k:8,l=Qe|8,Xe=61;break}case 88:case 120:{l=Qe,Xe=61;break}case 111:{Q=Xt,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,se=NUe(l,Q,Ue)|0,Ge=qe-se|0,M=0,q=5642,k=(Qe&8|0)==0|(k|0)>(Ge|0)?k:Ge+1|0,Ge=Qe,Xe=67;break}case 105:case 100:if(Q=Xt,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,(Q|0)<0){l=dD(0,0,l|0,Q|0)|0,Q=Pe,M=Xt,n[M>>2]=l,n[M+4>>2]=Q,M=1,q=5642,Xe=66;break t}else{M=(Qe&2049|0)!=0&1,q=(Qe&2048|0)==0?(Qe&1|0)==0?5642:5644:5643,Xe=66;break t}case 117:{Q=Xt,M=0,q=5642,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,Xe=66;break}case 99:{o[Nt>>0]=n[Xt>>2],l=Nt,M=0,q=5642,se=Ue,Q=1,k=Ge;break}case 109:{Q=OUe(n[(Vm()|0)>>2]|0)|0,Xe=71;break}case 115:{Q=n[Xt>>2]|0,Q=Q|0?Q:5652,Xe=71;break}case 67:{n[Pr>>2]=n[Xt>>2],n[Mr>>2]=0,n[Xt>>2]=Pr,se=-1,Q=Pr,Xe=75;break}case 83:{l=n[Xt>>2]|0,k?(se=k,Q=l,Xe=75):(Bs(s,32,B,0,Qe),l=0,Xe=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=UUe(s,+E[Xt>>3],B,k,Qe,Q)|0,l=et;continue e}default:M=0,q=5642,se=Ue,Q=k,k=Qe}while(0);t:do if((Xe|0)==61)Qe=Xt,Me=n[Qe>>2]|0,Qe=n[Qe+4>>2]|0,se=LUe(Me,Qe,Ue,Q&32)|0,q=(l&8|0)==0|(Me|0)==0&(Qe|0)==0,M=q?0:2,q=q?5642:5642+(Q>>4)|0,Ge=l,l=Me,Q=Qe,Xe=67;else if((Xe|0)==66)se=Jm(l,Q,Ue)|0,Ge=Qe,Xe=67;else if((Xe|0)==71)Xe=0,Qe=MUe(Q,0,k)|0,Me=(Qe|0)==0,l=Q,M=0,q=5642,se=Me?Q+k|0:Qe,Q=Me?k:Qe-Q|0,k=Ge;else if((Xe|0)==75){for(Xe=0,q=Q,l=0,k=0;M=n[q>>2]|0,!(!M||(k=a7(Lr,M)|0,(k|0)<0|k>>>0>(se-l|0)>>>0));)if(l=k+l|0,se>>>0>l>>>0)q=q+4|0;else break;if((k|0)<0){m=-1;break e}if(Bs(s,32,B,l,Qe),!l)l=0,Xe=84;else for(M=0;;){if(k=n[Q>>2]|0,!k){Xe=84;break t}if(k=a7(Lr,k)|0,M=k+M|0,(M|0)>(l|0)){Xe=84;break t}if(ss(s,Lr,k),M>>>0>=l>>>0){Xe=84;break}else Q=Q+4|0}}while(0);if((Xe|0)==67)Xe=0,Q=(l|0)!=0|(Q|0)!=0,Qe=(k|0)!=0|Q,Q=((Q^1)&1)+(qe-se)|0,l=Qe?se:Ue,se=Ue,Q=Qe?(k|0)>(Q|0)?k:Q:k,k=(k|0)>-1?Ge&-65537:Ge;else if((Xe|0)==84){Xe=0,Bs(s,32,B,l,Qe^8192),B=(B|0)>(l|0)?B:l,l=et;continue}Me=se-l|0,Ge=(Q|0)<(Me|0)?Me:Q,Qe=Ge+M|0,B=(B|0)<(Qe|0)?Qe:B,Bs(s,32,B,Qe,k),ss(s,q,M),Bs(s,48,B,Qe,k^65536),Bs(s,48,Ge,Me,0),ss(s,l,Me),Bs(s,32,B,Qe,k^8192),l=et}e:do if((Xe|0)==87&&!s)if(!O)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(o7(f+(m<<3)|0,l,c),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(0);return C=ir,m|0}function RUe(s){return s=s|0,0}function TUe(s){s=s|0}function ss(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]&32||VUe(l,c,s)|0}function s7(s){s=s|0;var l=0,c=0,f=0;if(c=n[s>>2]|0,f=(o[c>>0]|0)+-48|0,f>>>0<10){l=0;do l=f+(l*10|0)|0,c=c+1|0,n[s>>2]=c,f=(o[c>>0]|0)+-48|0;while(f>>>0<10)}else l=0;return l|0}function o7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,n[s>>2]=l;break e}case 10:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=0;break e}case 12:{f=(n[c>>2]|0)+(8-1)&~(8-1),l=f,d=n[l>>2]|0,l=n[l+4>>2]|0,n[c>>2]=f+8,f=s,n[f>>2]=d,n[f+4>>2]=l;break e}case 13:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&65535)<<16>>16,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 14:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&65535,n[d+4>>2]=0;break e}case 15:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&255)<<24>>24,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 16:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&255,n[d+4>>2]=0;break e}case 17:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[c>>2]=d+8,E[s>>3]=m;break e}case 18:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[c>>2]=d+8,E[s>>3]=m;break e}default:break e}while(0);while(0)}function LUe(s,l,c,f){if(s=s|0,l=l|0,c=c|0,f=f|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=u[5694+(s&15)>>0]|0|f,s=mD(s|0,l|0,4)|0,l=Pe;while(!((s|0)==0&(l|0)==0));return c|0}function NUe(s,l,c){if(s=s|0,l=l|0,c=c|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=s&7|48,s=mD(s|0,l|0,3)|0,l=Pe;while(!((s|0)==0&(l|0)==0));return c|0}function Jm(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if(l>>>0>0|(l|0)==0&s>>>0>4294967295){for(;f=QR(s|0,l|0,10,0)|0,c=c+-1|0,o[c>>0]=f&255|48,f=s,s=kR(s|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&f>>>0>4294967295;)l=Pe;l=s}else l=s;if(l)for(;c=c+-1|0,o[c>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return c|0}function OUe(s){return s=s|0,GUe(s,n[(qUe()|0)+188>>2]|0)|0}function MUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;m=l&255,f=(c|0)!=0;e:do if(f&(s&3|0)!=0)for(d=l&255;;){if((o[s>>0]|0)==d<<24>>24){B=6;break e}if(s=s+1|0,c=c+-1|0,f=(c|0)!=0,!(f&(s&3|0)!=0)){B=5;break}}else B=5;while(0);(B|0)==5&&(f?B=6:c=0);e:do if((B|0)==6&&(d=l&255,(o[s>>0]|0)!=d<<24>>24)){f=je(m,16843009)|0;t:do if(c>>>0>3){for(;m=n[s>>2]^f,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(s=s+4|0,c=c+-4|0,c>>>0<=3){B=11;break t}}else B=11;while(0);if((B|0)==11&&!c){c=0;break}for(;;){if((o[s>>0]|0)==d<<24>>24)break e;if(s=s+1|0,c=c+-1|0,!c){c=0;break}}}while(0);return(c|0?s:0)|0}function Bs(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0;if(B=C,C=C+256|0,m=B,(c|0)>(f|0)&(d&73728|0)==0){if(d=c-f|0,Xm(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=c-f|0;do ss(s,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}ss(s,m,d)}C=B}function a7(s,l){return s=s|0,l=l|0,s?s=HUe(s,l,0)|0:s=0,s|0}function UUe(s,l,c,f,d,m){s=s|0,l=+l,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,qe=0,Nt=0,Mr=0,or=0,Xt=0,Pr=0,Lr=0,ir=0,xn=0;xn=C,C=C+560|0,Q=xn+8|0,et=xn,ir=xn+524|0,Lr=ir,M=xn+512|0,n[et>>2]=0,Pr=M+12|0,l7(l)|0,(Pe|0)<0?(l=-l,or=1,Mr=5659):(or=(d&2049|0)!=0&1,Mr=(d&2048|0)==0?(d&1|0)==0?5660:5665:5662),l7(l)|0,Xt=Pe&2146435072;do if(Xt>>>0<2146435072|(Xt|0)==2146435072&0<0){if(Ge=+_Ue(l,et)*2,B=Ge!=0,B&&(n[et>>2]=(n[et>>2]|0)+-1),lt=m|32,(lt|0)==97){Me=m&32,se=(Me|0)==0?Mr:Mr+9|0,q=or|2,B=12-f|0;do if(f>>>0>11|(B|0)==0)l=Ge;else{l=8;do B=B+-1|0,l=l*16;while((B|0)!=0);if((o[se>>0]|0)==45){l=-(l+(-Ge-l));break}else{l=Ge+l-l;break}}while(0);k=n[et>>2]|0,B=(k|0)<0?0-k|0:k,B=Jm(B,((B|0)<0)<<31>>31,Pr)|0,(B|0)==(Pr|0)&&(B=M+11|0,o[B>>0]=48),o[B+-1>>0]=(k>>31&2)+43,O=B+-2|0,o[O>>0]=m+15,M=(f|0)<1,Q=(d&8|0)==0,B=ir;do Xt=~~l,k=B+1|0,o[B>>0]=u[5694+Xt>>0]|Me,l=(l-+(Xt|0))*16,(k-Lr|0)==1&&!(Q&(M&l==0))?(o[k>>0]=46,B=B+2|0):B=k;while(l!=0);Xt=B-Lr|0,Lr=Pr-O|0,Pr=(f|0)!=0&(Xt+-2|0)<(f|0)?f+2|0:Xt,B=Lr+q+Pr|0,Bs(s,32,c,B,d),ss(s,se,q),Bs(s,48,c,B,d^65536),ss(s,ir,Xt),Bs(s,48,Pr-Xt|0,0,0),ss(s,O,Lr),Bs(s,32,c,B,d^8192);break}k=(f|0)<0?6:f,B?(B=(n[et>>2]|0)+-28|0,n[et>>2]=B,l=Ge*268435456):(l=Ge,B=n[et>>2]|0),Xt=(B|0)<0?Q:Q+288|0,Q=Xt;do qe=~~l>>>0,n[Q>>2]=qe,Q=Q+4|0,l=(l-+(qe>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=Xt,q=Q;;){if(O=(B|0)<29?B:29,B=q+-4|0,B>>>0>=M>>>0){Q=0;do Ue=h7(n[B>>2]|0,0,O|0)|0,Ue=xR(Ue|0,Pe|0,Q|0,0)|0,qe=Pe,Xe=QR(Ue|0,qe|0,1e9,0)|0,n[B>>2]=Xe,Q=kR(Ue|0,qe|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);Q&&(M=M+-4|0,n[M>>2]=Q)}for(Q=q;!(Q>>>0<=M>>>0);)if(B=Q+-4|0,!(n[B>>2]|0))Q=B;else break;if(B=(n[et>>2]|0)-O|0,n[et>>2]=B,(B|0)>0)q=Q;else break}else M=Xt;if((B|0)<0){f=((k+25|0)/9|0)+1|0,Qe=(lt|0)==102;do{if(Me=0-B|0,Me=(Me|0)<9?Me:9,M>>>0<Q>>>0){O=(1<<Me)+-1|0,q=1e9>>>Me,se=0,B=M;do qe=n[B>>2]|0,n[B>>2]=(qe>>>Me)+se,se=je(qe&O,q)|0,B=B+4|0;while(B>>>0<Q>>>0);B=(n[M>>2]|0)==0?M+4|0:M,se?(n[Q>>2]=se,M=B,B=Q+4|0):(M=B,B=Q)}else M=(n[M>>2]|0)==0?M+4|0:M,B=Q;Q=Qe?Xt:M,Q=(B-Q>>2|0)>(f|0)?Q+(f<<2)|0:B,B=(n[et>>2]|0)+Me|0,n[et>>2]=B}while((B|0)<0);B=M,f=Q}else B=M,f=Q;if(qe=Xt,B>>>0<f>>>0){if(Q=(qe-B>>2)*9|0,O=n[B>>2]|0,O>>>0>=10){M=10;do M=M*10|0,Q=Q+1|0;while(O>>>0>=M>>>0)}}else Q=0;if(Qe=(lt|0)==103,Xe=(k|0)!=0,M=k-((lt|0)!=102?Q:0)+((Xe&Qe)<<31>>31)|0,(M|0)<(((f-qe>>2)*9|0)+-9|0)){if(M=M+9216|0,Me=Xt+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){O=10;do O=O*10|0,M=M+1|0;while((M|0)!=9)}else O=10;if(q=n[Me>>2]|0,se=(q>>>0)%(O>>>0)|0,M=(Me+4|0)==(f|0),M&(se|0)==0)M=Me;else if(Ge=(((q>>>0)/(O>>>0)|0)&1|0)==0?9007199254740992:9007199254740994,Ue=(O|0)/2|0,l=se>>>0<Ue>>>0?.5:M&(se|0)==(Ue|0)?1:1.5,or&&(Ue=(o[Mr>>0]|0)==45,l=Ue?-l:l,Ge=Ue?-Ge:Ge),M=q-se|0,n[Me>>2]=M,Ge+l!=Ge){if(Ue=M+O|0,n[Me>>2]=Ue,Ue>>>0>999999999)for(Q=Me;M=Q+-4|0,n[Q>>2]=0,M>>>0<B>>>0&&(B=B+-4|0,n[B>>2]=0),Ue=(n[M>>2]|0)+1|0,n[M>>2]=Ue,Ue>>>0>999999999;)Q=M;else M=Me;if(Q=(qe-B>>2)*9|0,q=n[B>>2]|0,q>>>0>=10){O=10;do O=O*10|0,Q=Q+1|0;while(q>>>0>=O>>>0)}}else M=Me;M=M+4|0,M=f>>>0>M>>>0?M:f,Ue=B}else M=f,Ue=B;for(lt=M;;){if(lt>>>0<=Ue>>>0){et=0;break}if(B=lt+-4|0,!(n[B>>2]|0))lt=B;else{et=1;break}}f=0-Q|0;do if(Qe)if(B=((Xe^1)&1)+k|0,(B|0)>(Q|0)&(Q|0)>-5?(O=m+-1|0,k=B+-1-Q|0):(O=m+-2|0,k=B+-1|0),B=d&8,B)Me=B;else{if(et&&(Nt=n[lt+-4>>2]|0,(Nt|0)!=0))if((Nt>>>0)%10|0)M=0;else{M=0,B=10;do B=B*10|0,M=M+1|0;while(!((Nt>>>0)%(B>>>0)|0|0))}else M=9;if(B=((lt-qe>>2)*9|0)+-9|0,(O|32|0)==102){Me=B-M|0,Me=(Me|0)>0?Me:0,k=(k|0)<(Me|0)?k:Me,Me=0;break}else{Me=B+Q-M|0,Me=(Me|0)>0?Me:0,k=(k|0)<(Me|0)?k:Me,Me=0;break}}else O=m,Me=d&8;while(0);if(Qe=k|Me,q=(Qe|0)!=0&1,se=(O|32|0)==102,se)Xe=0,B=(Q|0)>0?Q:0;else{if(B=(Q|0)<0?f:Q,B=Jm(B,((B|0)<0)<<31>>31,Pr)|0,M=Pr,(M-B|0)<2)do B=B+-1|0,o[B>>0]=48;while((M-B|0)<2);o[B+-1>>0]=(Q>>31&2)+43,B=B+-2|0,o[B>>0]=O,Xe=B,B=M-B|0}if(B=or+1+k+q+B|0,Bs(s,32,c,B,d),ss(s,Mr,or),Bs(s,48,c,B,d^65536),se){O=Ue>>>0>Xt>>>0?Xt:Ue,Me=ir+9|0,q=Me,se=ir+8|0,M=O;do{if(Q=Jm(n[M>>2]|0,0,Me)|0,(M|0)==(O|0))(Q|0)==(Me|0)&&(o[se>>0]=48,Q=se);else if(Q>>>0>ir>>>0){Xm(ir|0,48,Q-Lr|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}ss(s,Q,q-Q|0),M=M+4|0}while(M>>>0<=Xt>>>0);if(Qe|0&&ss(s,5710,1),M>>>0<lt>>>0&(k|0)>0)for(;;){if(Q=Jm(n[M>>2]|0,0,Me)|0,Q>>>0>ir>>>0){Xm(ir|0,48,Q-Lr|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}if(ss(s,Q,(k|0)<9?k:9),M=M+4|0,Q=k+-9|0,M>>>0<lt>>>0&(k|0)>9)k=Q;else{k=Q;break}}Bs(s,48,k+9|0,9,0)}else{if(Qe=et?lt:Ue+4|0,(k|0)>-1){et=ir+9|0,Me=(Me|0)==0,f=et,q=0-Lr|0,se=ir+8|0,O=Ue;do{Q=Jm(n[O>>2]|0,0,et)|0,(Q|0)==(et|0)&&(o[se>>0]=48,Q=se);do if((O|0)==(Ue|0)){if(M=Q+1|0,ss(s,Q,1),Me&(k|0)<1){Q=M;break}ss(s,5710,1),Q=M}else{if(Q>>>0<=ir>>>0)break;Xm(ir|0,48,Q+q|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}while(0);Lr=f-Q|0,ss(s,Q,(k|0)>(Lr|0)?Lr:k),k=k-Lr|0,O=O+4|0}while(O>>>0<Qe>>>0&(k|0)>-1)}Bs(s,48,k+18|0,18,0),ss(s,Xe,Pr-Xe|0)}Bs(s,32,c,B,d^8192)}else ir=(m&32|0)!=0,B=or+3|0,Bs(s,32,c,B,d&-65537),ss(s,Mr,or),ss(s,l!=l|!1?ir?5686:5690:ir?5678:5682,3),Bs(s,32,c,B,d^8192);while(0);return C=xn,((B|0)<(c|0)?c:B)|0}function l7(s){s=+s;var l=0;return E[v>>3]=s,l=n[v>>2]|0,Pe=n[v+4>>2]|0,l|0}function _Ue(s,l){return s=+s,l=l|0,+ +c7(s,l)}function c7(s,l){s=+s,l=l|0;var c=0,f=0,d=0;switch(E[v>>3]=s,c=n[v>>2]|0,f=n[v+4>>2]|0,d=mD(c|0,f|0,52)|0,d&2047){case 0:{s!=0?(s=+c7(s*18446744073709552e3,l),c=(n[l>>2]|0)+-64|0):c=0,n[l>>2]=c;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[v>>2]=c,n[v+4>>2]=f&-2146435073|1071644672,s=+E[v>>3]}return+s}function HUe(s,l,c){s=s|0,l=l|0,c=c|0;do if(s){if(l>>>0<128){o[s>>0]=l,s=1;break}if(!(n[n[(jUe()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){o[s>>0]=l,s=1;break}else{n[(Vm()|0)>>2]=84,s=-1;break}if(l>>>0<2048){o[s>>0]=l>>>6|192,o[s+1>>0]=l&63|128,s=2;break}if(l>>>0<55296|(l&-8192|0)==57344){o[s>>0]=l>>>12|224,o[s+1>>0]=l>>>6&63|128,o[s+2>>0]=l&63|128,s=3;break}if((l+-65536|0)>>>0<1048576){o[s>>0]=l>>>18|240,o[s+1>>0]=l>>>12&63|128,o[s+2>>0]=l>>>6&63|128,o[s+3>>0]=l&63|128,s=4;break}else{n[(Vm()|0)>>2]=84,s=-1;break}}else s=1;while(0);return s|0}function jUe(){return PR()|0}function qUe(){return PR()|0}function GUe(s,l){s=s|0,l=l|0;var c=0,f=0;for(f=0;;){if((u[5712+f>>0]|0)==(s|0)){s=2;break}if(c=f+1|0,(c|0)==87){c=5800,f=87,s=5;break}else f=c}if((s|0)==2&&(f?(c=5800,s=5):c=5800),(s|0)==5)for(;;){do s=c,c=c+1|0;while((o[s>>0]|0)!=0);if(f=f+-1|0,f)s=5;else break}return YUe(c,n[l+20>>2]|0)|0}function YUe(s,l){return s=s|0,l=l|0,WUe(s,l)|0}function WUe(s,l){return s=s|0,l=l|0,l?l=KUe(n[l>>2]|0,n[l+4>>2]|0,s)|0:l=0,(l|0?l:s)|0}function KUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0;se=(n[s>>2]|0)+1794895138|0,m=Rg(n[s+8>>2]|0,se)|0,f=Rg(n[s+12>>2]|0,se)|0,d=Rg(n[s+16>>2]|0,se)|0;e:do if(m>>>0<l>>>2>>>0&&(q=l-(m<<2)|0,f>>>0<q>>>0&d>>>0<q>>>0)&&((d|f)&3|0)==0){for(q=f>>>2,O=d>>>2,M=0;;){if(k=m>>>1,Q=M+k|0,B=Q<<1,d=B+q|0,f=Rg(n[s+(d<<2)>>2]|0,se)|0,d=Rg(n[s+(d+1<<2)>>2]|0,se)|0,!(d>>>0<l>>>0&f>>>0<(l-d|0)>>>0)){f=0;break e}if(o[s+(d+f)>>0]|0){f=0;break e}if(f=n7(c,s+d|0)|0,!f)break;if(f=(f|0)<0,(m|0)==1){f=0;break e}else M=f?M:Q,m=f?k:m-k|0}f=B+O|0,d=Rg(n[s+(f<<2)>>2]|0,se)|0,f=Rg(n[s+(f+1<<2)>>2]|0,se)|0,f>>>0<l>>>0&d>>>0<(l-f|0)>>>0?f=(o[s+(f+d)>>0]|0)==0?s+f|0:0:f=0}else f=0;while(0);return f|0}function Rg(s,l){s=s|0,l=l|0;var c=0;return c=m7(s|0)|0,((l|0)==0?s:c)|0}function VUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=c+16|0,d=n[f>>2]|0,d?m=5:JUe(c)|0?f=0:(d=n[f>>2]|0,m=5);e:do if((m|0)==5){if(k=c+20|0,B=n[k>>2]|0,f=B,(d-B|0)>>>0<l>>>0){f=ED[n[c+36>>2]&7](c,s,l)|0;break}t:do if((o[c+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=s;break t}if(d=B+-1|0,(o[s+d>>0]|0)==10)break;B=d}if(f=ED[n[c+36>>2]&7](c,s,B)|0,f>>>0<B>>>0)break e;m=B,d=s+B|0,l=l-B|0,f=n[k>>2]|0}else m=0,d=s;while(0);Dr(f|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,f=m+l|0}while(0);return f|0}function JUe(s){s=s|0;var l=0,c=0;return l=s+74|0,c=o[l>>0]|0,o[l>>0]=c+255|c,l=n[s>>2]|0,l&8?(n[s>>2]=l|32,s=-1):(n[s+8>>2]=0,n[s+4>>2]=0,c=n[s+44>>2]|0,n[s+28>>2]=c,n[s+20>>2]=c,n[s+16>>2]=c+(n[s+48>>2]|0),s=0),s|0}function _n(s,l){s=y(s),l=y(l);var c=0,f=0;c=u7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=u7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?l:s;break}else{s=s<l?l:s;break}}else s=l;while(0);return y(s)}function u7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function Tg(s,l){s=y(s),l=y(l);var c=0,f=0;c=A7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=A7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?s:l;break}else{s=s<l?s:l;break}}else s=l;while(0);return y(s)}function A7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function bR(s,l){s=y(s),l=y(l);var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;m=(h[v>>2]=s,n[v>>2]|0),k=(h[v>>2]=l,n[v>>2]|0),c=m>>>23&255,B=k>>>23&255,Q=m&-2147483648,d=k<<1;e:do if((d|0)!=0&&!((c|0)==255|((zUe(l)|0)&2147483647)>>>0>2139095040)){if(f=m<<1,f>>>0<=d>>>0)return l=y(s*y(0)),y((f|0)==(d|0)?l:s);if(c)f=m&8388607|8388608;else{if(c=m<<9,(c|0)>-1){f=c,c=0;do c=c+-1|0,f=f<<1;while((f|0)>-1)}else c=0;f=m<<1-c}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,k=k<<1-d}d=f-k|0,m=(d|0)>-1;t:do if((c|0)>(B|0)){for(;;){if(m)if(d)f=d;else break;if(f=f<<1,c=c+-1|0,d=f-k|0,m=(d|0)>-1,(c|0)<=(B|0))break t}l=y(s*y(0));break e}while(0);if(m)if(d)f=d;else{l=y(s*y(0));break}if(f>>>0<8388608)do f=f<<1,c=c+-1|0;while(f>>>0<8388608);(c|0)>0?c=f+-8388608|c<<23:c=f>>>(1-c|0),l=(n[v>>2]=c|Q,y(h[v>>2]))}else M=3;while(0);return(M|0)==3&&(l=y(s*l),l=y(l/l)),y(l)}function zUe(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function XUe(s,l){return s=s|0,l=l|0,i7(n[582]|0,s,l)|0}function zr(s){s=s|0,Rt()}function zm(s){s=s|0}function ZUe(s,l){return s=s|0,l=l|0,0}function $Ue(s){return s=s|0,(f7(s+4|0)|0)==-1?(tf[n[(n[s>>2]|0)+8>>2]&127](s),s=1):s=0,s|0}function f7(s){s=s|0;var l=0;return l=n[s>>2]|0,n[s>>2]=l+-1,l+-1|0}function kp(s){s=s|0,$Ue(s)|0&&e3e(s)}function e3e(s){s=s|0;var l=0;l=s+8|0,(n[l>>2]|0)!=0&&(f7(l)|0)!=-1||tf[n[(n[s>>2]|0)+16>>2]&127](s)}function Kt(s){s=s|0;var l=0;for(l=(s|0)==0?1:s;s=pD(l)|0,!(s|0);){if(s=r3e()|0,!s){s=0;break}S7[s&0]()}return s|0}function p7(s){return s=s|0,Kt(s)|0}function gt(s){s=s|0,hD(s)}function t3e(s){s=s|0,(o[s+11>>0]|0)<0&&gt(n[s>>2]|0)}function r3e(){var s=0;return s=n[2923]|0,n[2923]=s+0,s|0}function n3e(){}function dD(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,f=l-f-(c>>>0>s>>>0|0)>>>0,Pe=f,s-c>>>0|0|0}function xR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,c=s+c>>>0,Pe=l+f+(c>>>0<s>>>0|0)>>>0,c|0|0}function Xm(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(m=s+c|0,l=l&255,(c|0)>=67){for(;s&3;)o[s>>0]=l,s=s+1|0;for(f=m&-4|0,d=f-64|0,B=l|l<<8|l<<16|l<<24;(s|0)<=(d|0);)n[s>>2]=B,n[s+4>>2]=B,n[s+8>>2]=B,n[s+12>>2]=B,n[s+16>>2]=B,n[s+20>>2]=B,n[s+24>>2]=B,n[s+28>>2]=B,n[s+32>>2]=B,n[s+36>>2]=B,n[s+40>>2]=B,n[s+44>>2]=B,n[s+48>>2]=B,n[s+52>>2]=B,n[s+56>>2]=B,n[s+60>>2]=B,s=s+64|0;for(;(s|0)<(f|0);)n[s>>2]=B,s=s+4|0}for(;(s|0)<(m|0);)o[s>>0]=l,s=s+1|0;return m-c|0}function h7(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(Pe=l<<c|(s&(1<<c)-1<<32-c)>>>32-c,s<<c):(Pe=s<<c-32,0)}function mD(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(Pe=l>>>c,s>>>c|(l&(1<<c)-1)<<32-c):(Pe=0,l>>>c-32|0)}function Dr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;if((c|0)>=8192)return Ac(s|0,l|0,c|0)|0;if(m=s|0,d=s+c|0,(s&3)==(l&3)){for(;s&3;){if(!c)return m|0;o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0,c=c-1|0}for(c=d&-4|0,f=c-64|0;(s|0)<=(f|0);)n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2],n[s+16>>2]=n[l+16>>2],n[s+20>>2]=n[l+20>>2],n[s+24>>2]=n[l+24>>2],n[s+28>>2]=n[l+28>>2],n[s+32>>2]=n[l+32>>2],n[s+36>>2]=n[l+36>>2],n[s+40>>2]=n[l+40>>2],n[s+44>>2]=n[l+44>>2],n[s+48>>2]=n[l+48>>2],n[s+52>>2]=n[l+52>>2],n[s+56>>2]=n[l+56>>2],n[s+60>>2]=n[l+60>>2],s=s+64|0,l=l+64|0;for(;(s|0)<(c|0);)n[s>>2]=n[l>>2],s=s+4|0,l=l+4|0}else for(c=d-4|0;(s|0)<(c|0);)o[s>>0]=o[l>>0]|0,o[s+1>>0]=o[l+1>>0]|0,o[s+2>>0]=o[l+2>>0]|0,o[s+3>>0]=o[l+3>>0]|0,s=s+4|0,l=l+4|0;for(;(s|0)<(d|0);)o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0;return m|0}function g7(s){s=s|0;var l=0;return l=o[N+(s&255)>>0]|0,(l|0)<8?l|0:(l=o[N+(s>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=o[N+(s>>16&255)>>0]|0,(l|0)<8?l+16|0:(o[N+(s>>>24)>>0]|0)+24|0))}function d7(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,q=0,se=0,Ge=0,Me=0;if(O=s,Q=l,M=Q,B=c,se=f,k=se,!M)return m=(d|0)!=0,k?m?(n[d>>2]=s|0,n[d+4>>2]=l&0,se=0,d=0,Pe=se,d|0):(se=0,d=0,Pe=se,d|0):(m&&(n[d>>2]=(O>>>0)%(B>>>0),n[d+4>>2]=0),se=0,d=(O>>>0)/(B>>>0)>>>0,Pe=se,d|0);m=(k|0)==0;do if(B){if(!m){if(m=(S(k|0)|0)-(S(M|0)|0)|0,m>>>0<=31){q=m+1|0,k=31-m|0,l=m-31>>31,B=q,s=O>>>(q>>>0)&l|M<<k,l=M>>>(q>>>0)&l,m=0,k=O<<k;break}return d?(n[d>>2]=s|0,n[d+4>>2]=Q|l&0,se=0,d=0,Pe=se,d|0):(se=0,d=0,Pe=se,d|0)}if(m=B-1|0,m&B|0){k=(S(B|0)|0)+33-(S(M|0)|0)|0,Me=64-k|0,q=32-k|0,Q=q>>31,Ge=k-32|0,l=Ge>>31,B=k,s=q-1>>31&M>>>(Ge>>>0)|(M<<q|O>>>(k>>>0))&l,l=l&M>>>(k>>>0),m=O<<Me&Q,k=(M<<Me|O>>>(Ge>>>0))&Q|O<<q&k-33>>31;break}return d|0&&(n[d>>2]=m&O,n[d+4>>2]=0),(B|0)==1?(Ge=Q|l&0,Me=s|0|0,Pe=Ge,Me|0):(Me=g7(B|0)|0,Ge=M>>>(Me>>>0)|0,Me=M<<32-Me|O>>>(Me>>>0)|0,Pe=Ge,Me|0)}else{if(m)return d|0&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),Ge=0,Me=(M>>>0)/(B>>>0)>>>0,Pe=Ge,Me|0;if(!O)return d|0&&(n[d>>2]=0,n[d+4>>2]=(M>>>0)%(k>>>0)),Ge=0,Me=(M>>>0)/(k>>>0)>>>0,Pe=Ge,Me|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=s|0,n[d+4>>2]=m&M|l&0),Ge=0,Me=M>>>((g7(k|0)|0)>>>0),Pe=Ge,Me|0;if(m=(S(k|0)|0)-(S(M|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,s=M<<k|O>>>(l>>>0),l=M>>>(l>>>0),m=0,k=O<<k;break}return d?(n[d>>2]=s|0,n[d+4>>2]=Q|l&0,Ge=0,Me=0,Pe=Ge,Me|0):(Ge=0,Me=0,Pe=Ge,Me|0)}while(0);if(!B)M=k,Q=0,k=0;else{q=c|0|0,O=se|f&0,M=xR(q|0,O|0,-1,-1)|0,c=Pe,Q=k,k=0;do f=Q,Q=m>>>31|Q<<1,m=k|m<<1,f=s<<1|f>>>31|0,se=s>>>31|l<<1|0,dD(M|0,c|0,f|0,se|0)|0,Me=Pe,Ge=Me>>31|((Me|0)<0?-1:0)<<1,k=Ge&1,s=dD(f|0,se|0,Ge&q|0,(((Me|0)<0?-1:0)>>31|((Me|0)<0?-1:0)<<1)&O|0)|0,l=Pe,B=B-1|0;while((B|0)!=0);M=Q,Q=0}return B=0,d|0&&(n[d>>2]=s,n[d+4>>2]=l),Ge=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|Q,Me=(m<<1|0>>>31)&-2|k,Pe=Ge,Me|0}function kR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,d7(s,l,c,f,0)|0}function Qp(s){s=s|0;var l=0,c=0;return c=s+15&-16|0,l=n[I>>2]|0,s=l+c|0,(c|0)>0&(s|0)<(l|0)|(s|0)<0?(ie()|0,DA(12),-1):(n[I>>2]=s,(s|0)>(Z()|0)&&(X()|0)==0?(n[I>>2]=l,DA(12),-1):l|0)}function Mw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if((l|0)<(s|0)&(s|0)<(l+c|0)){for(f=s,l=l+c|0,s=s+c|0;(c|0)>0;)s=s-1|0,l=l-1|0,c=c-1|0,o[s>>0]=o[l>>0]|0;s=f}else Dr(s,l,c)|0;return s|0}function QR(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;return m=C,C=C+16|0,d=m|0,d7(s,l,c,f,d)|0,C=m,Pe=n[d+4>>2]|0,n[d>>2]|0|0}function m7(s){return s=s|0,(s&255)<<24|(s>>8&255)<<16|(s>>16&255)<<8|s>>>24|0}function i3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,y7[s&1](l|0,c|0,f|0,d|0,m|0)}function s3e(s,l,c){s=s|0,l=l|0,c=y(c),E7[s&1](l|0,y(c))}function o3e(s,l,c){s=s|0,l=l|0,c=+c,C7[s&31](l|0,+c)}function a3e(s,l,c,f){return s=s|0,l=l|0,c=y(c),f=y(f),y(w7[s&0](l|0,y(c),y(f)))}function l3e(s,l){s=s|0,l=l|0,tf[s&127](l|0)}function c3e(s,l,c){s=s|0,l=l|0,c=c|0,rf[s&31](l|0,c|0)}function u3e(s,l){return s=s|0,l=l|0,Ng[s&31](l|0)|0}function A3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,I7[s&1](l|0,+c,+f,d|0)}function f3e(s,l,c,f){s=s|0,l=l|0,c=+c,f=+f,W3e[s&1](l|0,+c,+f)}function p3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,ED[s&7](l|0,c|0,f|0)|0}function h3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,+K3e[s&1](l|0,c|0,f|0)}function g3e(s,l){return s=s|0,l=l|0,+B7[s&15](l|0)}function d3e(s,l,c){return s=s|0,l=l|0,c=+c,V3e[s&1](l|0,+c)|0}function m3e(s,l,c){return s=s|0,l=l|0,c=c|0,RR[s&15](l|0,c|0)|0}function y3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=+f,d=+d,m=m|0,J3e[s&1](l|0,c|0,+f,+d,m|0)}function E3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,z3e[s&1](l|0,c|0,f|0,d|0,m|0,B|0)}function C3e(s,l,c){return s=s|0,l=l|0,c=c|0,+v7[s&7](l|0,c|0)}function w3e(s){return s=s|0,CD[s&7]()|0}function I3e(s,l,c,f,d,m){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,D7[s&1](l|0,c|0,f|0,d|0,m|0)|0}function B3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=+d,X3e[s&1](l|0,c|0,f|0,+d)}function v3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,P7[s&1](l|0,c|0,y(f),d|0,y(m),B|0)}function D3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,Hw[s&15](l|0,c|0,f|0)}function P3e(s){s=s|0,S7[s&0]()}function S3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,b7[s&15](l|0,c|0,+f)}function b3e(s,l,c){return s=s|0,l=+l,c=+c,Z3e[s&1](+l,+c)|0}function x3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,TR[s&15](l|0,c|0,f|0,d|0)}function k3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(0)}function Q3e(s,l){s=s|0,l=y(l),F(1)}function ma(s,l){s=s|0,l=+l,F(2)}function F3e(s,l,c){return s=s|0,l=y(l),c=y(c),F(3),Ze}function Er(s){s=s|0,F(4)}function Uw(s,l){s=s|0,l=l|0,F(5)}function Ja(s){return s=s|0,F(6),0}function R3e(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,F(7)}function T3e(s,l,c){s=s|0,l=+l,c=+c,F(8)}function L3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(9),0}function N3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(10),0}function Lg(s){return s=s|0,F(11),0}function O3e(s,l){return s=s|0,l=+l,F(12),0}function _w(s,l){return s=s|0,l=l|0,F(13),0}function M3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,F(14)}function U3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,F(15)}function FR(s,l){return s=s|0,l=l|0,F(16),0}function _3e(){return F(17),0}function H3e(s,l,c,f,d){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(18),0}function j3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,F(19)}function q3e(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,F(20)}function yD(s,l,c){s=s|0,l=l|0,c=c|0,F(21)}function G3e(){F(22)}function Zm(s,l,c){s=s|0,l=l|0,c=+c,F(23)}function Y3e(s,l){return s=+s,l=+l,F(24),0}function $m(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,F(25)}var y7=[k3e,HNe],E7=[Q3e,fo],C7=[ma,xw,kw,EF,CF,Dl,Qw,wF,jm,bu,Rw,IF,$v,KA,eD,qm,tD,rD,Gm,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma],w7=[F3e],tf=[Er,zm,wDe,IDe,BDe,Zbe,$be,exe,dLe,mLe,yLe,bNe,xNe,kNe,z4e,X4e,Z4e,hs,Vv,Hm,WA,Fw,mve,yve,ADe,QDe,qDe,aPe,BPe,_Pe,nSe,ySe,RSe,JSe,Abe,Sbe,qbe,mxe,Rxe,Jxe,Ake,Ske,qke,lQe,BQe,OQe,$Qe,Sc,kFe,WFe,ARe,xRe,GRe,ATe,wTe,vTe,HTe,GTe,aLe,CLe,BLe,_Le,iNe,i9,UOe,dMe,QMe,WMe,h4e,x4e,_4e,q4e,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er],rf=[Uw,fF,pF,bw,Su,hF,gF,Bp,dF,mF,yF,Zv,VA,Ve,ft,Wt,vr,Sn,Fr,vF,ive,Sve,fQe,PQe,RRe,jOe,fNe,j5,Uw,Uw,Uw,Uw],Ng=[Ja,SUe,AF,D,Ae,De,vt,wt,xt,_r,di,po,tve,rve,Eve,rFe,VRe,qLe,WOe,Wa,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja],I7=[R3e,Cve],W3e=[T3e,uLe],ED=[L3e,r7,bUe,QUe,GPe,wxe,TFe,zMe],K3e=[N3e,gbe],B7=[Lg,Yo,rt,bn,wve,Ive,Bve,vve,Dve,Pve,Lg,Lg,Lg,Lg,Lg,Lg],V3e=[O3e,yTe],RR=[_w,ZUe,nve,gDe,APe,oSe,wSe,Kbe,Oxe,HQe,Wv,LMe,_w,_w,_w,_w],J3e=[M3e,KDe],z3e=[U3e,y4e],v7=[FR,ai,bve,xve,kve,Qbe,FR,FR],CD=[_3e,Qve,Pw,ga,bTe,VTe,SLe,K4e],D7=[H3e,Cw],X3e=[j3e,gke],P7=[q3e,sve],Hw=[yD,T,is,tn,ho,SPe,NSe,Qke,Kke,_m,uOe,CMe,R4e,yD,yD,yD],S7=[G3e],b7=[Zm,Jv,zv,Xv,YA,nD,BF,P,$xe,zFe,hTe,Zm,Zm,Zm,Zm,Zm],Z3e=[Y3e,hLe],TR=[$m,$Se,uFe,gRe,nTe,TTe,eLe,TLe,cNe,ZOe,iUe,$m,$m,$m,$m,$m];return{_llvm_bswap_i32:m7,dynCall_idd:b3e,dynCall_i:w3e,_i64Subtract:dD,___udivdi3:kR,dynCall_vif:s3e,setThrew:hu,dynCall_viii:D3e,_bitshift64Lshr:mD,_bitshift64Shl:h7,dynCall_vi:l3e,dynCall_viiddi:y3e,dynCall_diii:h3e,dynCall_iii:m3e,_memset:Xm,_sbrk:Qp,_memcpy:Dr,__GLOBAL__sub_I_Yoga_cpp:Um,dynCall_vii:c3e,___uremdi3:QR,dynCall_vid:o3e,stackAlloc:lo,_nbind_init:gUe,getTempRet0:Ua,dynCall_di:g3e,dynCall_iid:d3e,setTempRet0:xA,_i64Add:xR,dynCall_fiff:a3e,dynCall_iiii:p3e,_emscripten_get_global_libc:PUe,dynCall_viid:S3e,dynCall_viiid:B3e,dynCall_viififi:v3e,dynCall_ii:u3e,__GLOBAL__sub_I_Binding_cc:QOe,dynCall_viiii:x3e,dynCall_iiiiii:I3e,stackSave:gc,dynCall_viiiii:i3e,__GLOBAL__sub_I_nbind_cc:Fve,dynCall_vidd:f3e,_free:hD,runPostSets:n3e,dynCall_viiiiii:E3e,establishStackSpace:ji,_memmove:Mw,stackRestore:pu,_malloc:pD,__GLOBAL__sub_I_common_cc:XLe,dynCall_viddi:A3e,dynCall_dii:C3e,dynCall_v:P3e}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(t){this.name=\"ExitStatus\",this.message=\"Program terminated with exit(\"+t+\")\",this.status=t}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function t(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=t)},Module.callMain=Module.callMain=function t(e){e=e||[],ensureInitRuntime();var r=e.length+1;function o(){for(var p=0;p<4-1;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),\"i8\",ALLOC_NORMAL)];o();for(var n=0;n<r-1;n=n+1)a.push(allocate(intArrayFromString(e[n]),\"i8\",ALLOC_NORMAL)),o();a.push(0),a=allocate(a,\"i32\",ALLOC_NORMAL);try{var u=Module._main(r,a,0);exit(u,!0)}catch(p){if(p instanceof ExitStatus)return;if(p==\"SimulateInfiniteLoop\"){Module.noExitRuntime=!0;return}else{var A=p;p&&typeof p==\"object\"&&p.stack&&(A=[p,p.stack]),Module.printErr(\"exception thrown: \"+A),Module.quit(1,p)}}finally{calledMain=!0}};function run(t){if(t=t||Module.arguments,preloadStartTime===null&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0)||Module.calledRun)return;function e(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(t),postRun()))}Module.setStatus?(Module.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){Module.setStatus(\"\")},1),e()},1)):e()}Module.run=Module.run=run;function exit(t,e){e&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=t,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(t)),ENVIRONMENT_IS_NODE&&process.exit(t),Module.quit(t,new ExitStatus(t)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(t){Module.onAbort&&Module.onAbort(t),t!==void 0?(Module.print(t),Module.printErr(t),t=JSON.stringify(t)):t=\"\",ABORT=!0,EXITSTATUS=1;var e=`\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r=\"abort(\"+t+\") at \"+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(o){r=o(r,t)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit==\"function\"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var am=_((IKt,NEe)=>{\"use strict\";var Yyt=TEe(),Wyt=LEe(),x6=!1,k6=null;Wyt({},function(t,e){if(!x6){if(x6=!0,t)throw t;k6=e}});if(!x6)throw new Error(\"Failed to load the yoga module - it needed to be loaded synchronously, but didn't\");NEe.exports=Yyt(k6.bind,k6.lib)});var F6=_((BKt,Q6)=>{\"use strict\";var OEe=t=>Number.isNaN(t)?!1:t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141);Q6.exports=OEe;Q6.exports.default=OEe});var UEe=_((vKt,MEe)=>{\"use strict\";MEe.exports=function(){return/\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g}});var Kk=_((DKt,R6)=>{\"use strict\";var Kyt=NP(),Vyt=F6(),Jyt=UEe(),_Ee=t=>{if(typeof t!=\"string\"||t.length===0||(t=Kyt(t),t.length===0))return 0;t=t.replace(Jyt(),\"  \");let e=0;for(let r=0;r<t.length;r++){let o=t.codePointAt(r);o<=31||o>=127&&o<=159||o>=768&&o<=879||(o>65535&&r++,e+=Vyt(o)?2:1)}return e};R6.exports=_Ee;R6.exports.default=_Ee});var L6=_((PKt,T6)=>{\"use strict\";var zyt=Kk(),HEe=t=>{let e=0;for(let r of t.split(`\n`))e=Math.max(e,zyt(r));return e};T6.exports=HEe;T6.exports.default=HEe});var jEe=_(cB=>{\"use strict\";var Xyt=cB&&cB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(cB,\"__esModule\",{value:!0});var Zyt=Xyt(L6()),N6={};cB.default=t=>{if(t.length===0)return{width:0,height:0};if(N6[t])return N6[t];let e=Zyt.default(t),r=t.split(`\n`).length;return N6[t]={width:e,height:r},{width:e,height:r}}});var qEe=_(uB=>{\"use strict\";var $yt=uB&&uB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uB,\"__esModule\",{value:!0});var dn=$yt(am()),eEt=(t,e)=>{\"position\"in e&&t.setPositionType(e.position===\"absolute\"?dn.default.POSITION_TYPE_ABSOLUTE:dn.default.POSITION_TYPE_RELATIVE)},tEt=(t,e)=>{\"marginLeft\"in e&&t.setMargin(dn.default.EDGE_START,e.marginLeft||0),\"marginRight\"in e&&t.setMargin(dn.default.EDGE_END,e.marginRight||0),\"marginTop\"in e&&t.setMargin(dn.default.EDGE_TOP,e.marginTop||0),\"marginBottom\"in e&&t.setMargin(dn.default.EDGE_BOTTOM,e.marginBottom||0)},rEt=(t,e)=>{\"paddingLeft\"in e&&t.setPadding(dn.default.EDGE_LEFT,e.paddingLeft||0),\"paddingRight\"in e&&t.setPadding(dn.default.EDGE_RIGHT,e.paddingRight||0),\"paddingTop\"in e&&t.setPadding(dn.default.EDGE_TOP,e.paddingTop||0),\"paddingBottom\"in e&&t.setPadding(dn.default.EDGE_BOTTOM,e.paddingBottom||0)},nEt=(t,e)=>{var r;\"flexGrow\"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),\"flexShrink\"in e&&t.setFlexShrink(typeof e.flexShrink==\"number\"?e.flexShrink:1),\"flexDirection\"in e&&(e.flexDirection===\"row\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_ROW),e.flexDirection===\"row-reverse\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection===\"column\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_COLUMN),e.flexDirection===\"column-reverse\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_COLUMN_REVERSE)),\"flexBasis\"in e&&(typeof e.flexBasis==\"number\"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis==\"string\"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),\"alignItems\"in e&&((e.alignItems===\"stretch\"||!e.alignItems)&&t.setAlignItems(dn.default.ALIGN_STRETCH),e.alignItems===\"flex-start\"&&t.setAlignItems(dn.default.ALIGN_FLEX_START),e.alignItems===\"center\"&&t.setAlignItems(dn.default.ALIGN_CENTER),e.alignItems===\"flex-end\"&&t.setAlignItems(dn.default.ALIGN_FLEX_END)),\"alignSelf\"in e&&((e.alignSelf===\"auto\"||!e.alignSelf)&&t.setAlignSelf(dn.default.ALIGN_AUTO),e.alignSelf===\"flex-start\"&&t.setAlignSelf(dn.default.ALIGN_FLEX_START),e.alignSelf===\"center\"&&t.setAlignSelf(dn.default.ALIGN_CENTER),e.alignSelf===\"flex-end\"&&t.setAlignSelf(dn.default.ALIGN_FLEX_END)),\"justifyContent\"in e&&((e.justifyContent===\"flex-start\"||!e.justifyContent)&&t.setJustifyContent(dn.default.JUSTIFY_FLEX_START),e.justifyContent===\"center\"&&t.setJustifyContent(dn.default.JUSTIFY_CENTER),e.justifyContent===\"flex-end\"&&t.setJustifyContent(dn.default.JUSTIFY_FLEX_END),e.justifyContent===\"space-between\"&&t.setJustifyContent(dn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent===\"space-around\"&&t.setJustifyContent(dn.default.JUSTIFY_SPACE_AROUND))},iEt=(t,e)=>{var r,o;\"width\"in e&&(typeof e.width==\"number\"?t.setWidth(e.width):typeof e.width==\"string\"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),\"height\"in e&&(typeof e.height==\"number\"?t.setHeight(e.height):typeof e.height==\"string\"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),\"minWidth\"in e&&(typeof e.minWidth==\"string\"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),\"minHeight\"in e&&(typeof e.minHeight==\"string\"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((o=e.minHeight)!==null&&o!==void 0?o:0))},sEt=(t,e)=>{\"display\"in e&&t.setDisplay(e.display===\"flex\"?dn.default.DISPLAY_FLEX:dn.default.DISPLAY_NONE)},oEt=(t,e)=>{if(\"borderStyle\"in e){let r=typeof e.borderStyle==\"string\"?1:0;t.setBorder(dn.default.EDGE_TOP,r),t.setBorder(dn.default.EDGE_BOTTOM,r),t.setBorder(dn.default.EDGE_LEFT,r),t.setBorder(dn.default.EDGE_RIGHT,r)}};uB.default=(t,e={})=>{eEt(t,e),tEt(t,e),rEt(t,e),nEt(t,e),iEt(t,e),sEt(t,e),oEt(t,e)}});var WEe=_((xKt,YEe)=>{\"use strict\";var AB=Kk(),aEt=NP(),lEt=DI(),M6=new Set([\"\\x1B\",\"\\x9B\"]),cEt=39,GEe=t=>`${M6.values().next().value}[${t}m`,uEt=t=>t.split(\" \").map(e=>AB(e)),O6=(t,e,r)=>{let o=[...e],a=!1,n=AB(aEt(t[t.length-1]));for(let[u,A]of o.entries()){let p=AB(A);if(n+p<=r?t[t.length-1]+=A:(t.push(A),n=0),M6.has(A))a=!0;else if(a&&A===\"m\"){a=!1;continue}a||(n+=p,n===r&&u<o.length-1&&(t.push(\"\"),n=0))}!n&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},AEt=t=>{let e=t.split(\" \"),r=e.length;for(;r>0&&!(AB(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(\" \")+e.slice(r).join(\"\")},fEt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()===\"\")return\"\";let o=\"\",a=\"\",n,u=uEt(t),A=[\"\"];for(let[p,h]of t.split(\" \").entries()){r.trim!==!1&&(A[A.length-1]=A[A.length-1].trimLeft());let E=AB(A[A.length-1]);if(p!==0&&(E>=e&&(r.wordWrap===!1||r.trim===!1)&&(A.push(\"\"),E=0),(E>0||r.trim===!1)&&(A[A.length-1]+=\" \",E++)),r.hard&&u[p]>e){let I=e-E,v=1+Math.floor((u[p]-I-1)/e);Math.floor((u[p]-1)/e)<v&&A.push(\"\"),O6(A,h,e);continue}if(E+u[p]>e&&E>0&&u[p]>0){if(r.wordWrap===!1&&E<e){O6(A,h,e);continue}A.push(\"\")}if(E+u[p]>e&&r.wordWrap===!1){O6(A,h,e);continue}A[A.length-1]+=h}r.trim!==!1&&(A=A.map(AEt)),o=A.join(`\n`);for(let[p,h]of[...o].entries()){if(a+=h,M6.has(h)){let I=parseFloat(/\\d[^m]*/.exec(o.slice(p,p+4)));n=I===cEt?null:I}let E=lEt.codes.get(Number(n));n&&E&&(o[p+1]===`\n`?a+=GEe(E):h===`\n`&&(a+=GEe(n)))}return a};YEe.exports=(t,e,r)=>String(t).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(o=>fEt(o,e,r)).join(`\n`)});var JEe=_((kKt,VEe)=>{\"use strict\";var KEe=\"[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\",pEt=t=>t&&t.exact?new RegExp(`^${KEe}$`):new RegExp(KEe,\"g\");VEe.exports=pEt});var U6=_((QKt,$Ee)=>{\"use strict\";var hEt=F6(),gEt=JEe(),zEe=DI(),ZEe=[\"\\x1B\",\"\\x9B\"],Vk=t=>`${ZEe[0]}[${t}m`,XEe=(t,e,r)=>{let o=[];t=[...t];for(let a of t){let n=a;a.match(\";\")&&(a=a.split(\";\")[0][0]+\"0\");let u=zEe.codes.get(parseInt(a,10));if(u){let A=t.indexOf(u.toString());A>=0?t.splice(A,1):o.push(Vk(e?u:n))}else if(e){o.push(Vk(0));break}else o.push(Vk(n))}if(e&&(o=o.filter((a,n)=>o.indexOf(a)===n),r!==void 0)){let a=Vk(zEe.codes.get(parseInt(r,10)));o=o.reduce((n,u)=>u===a?[u,...n]:[...n,u],[])}return o.join(\"\")};$Ee.exports=(t,e,r)=>{let o=[...t.normalize()],a=[];r=typeof r==\"number\"?r:o.length;let n=!1,u,A=0,p=\"\";for(let[h,E]of o.entries()){let I=!1;if(ZEe.includes(E)){let v=/\\d[^m]*/.exec(t.slice(h,h+18));u=v&&v.length>0?v[0]:void 0,A<r&&(n=!0,u!==void 0&&a.push(u))}else n&&E===\"m\"&&(n=!1,I=!0);if(!n&&!I&&++A,!gEt({exact:!0}).test(E)&&hEt(E.codePointAt())&&++A,A>e&&A<=r)p+=E;else if(A===e&&!n&&u!==void 0)p=XEe(a);else if(A>=r){p+=XEe(a,!0,u);break}}return p}});var tCe=_((FKt,eCe)=>{\"use strict\";var E0=U6(),dEt=Kk();function Jk(t,e,r){if(t.charAt(e)===\" \")return e;for(let o=1;o<=3;o++)if(r){if(t.charAt(e+o)===\" \")return e+o}else if(t.charAt(e-o)===\" \")return e-o;return e}eCe.exports=(t,e,r)=>{r={position:\"end\",preferTruncationOnSpace:!1,...r};let{position:o,space:a,preferTruncationOnSpace:n}=r,u=\"\\u2026\",A=1;if(typeof t!=\"string\")throw new TypeError(`Expected \\`input\\` to be a string, got ${typeof t}`);if(typeof e!=\"number\")throw new TypeError(`Expected \\`columns\\` to be a number, got ${typeof e}`);if(e<1)return\"\";if(e===1)return u;let p=dEt(t);if(p<=e)return t;if(o===\"start\"){if(n){let h=Jk(t,p-e+1,!0);return u+E0(t,h,p).trim()}return a===!0&&(u+=\" \",A=2),u+E0(t,p-e+A,p)}if(o===\"middle\"){a===!0&&(u=\" \"+u+\" \",A=3);let h=Math.floor(e/2);if(n){let E=Jk(t,h),I=Jk(t,p-(e-h)+1,!0);return E0(t,0,E)+u+E0(t,I,p).trim()}return E0(t,0,h)+u+E0(t,p-(e-h)+A,p)}if(o===\"end\"){if(n){let h=Jk(t,e-1);return E0(t,0,h)+u}return a===!0&&(u=\" \"+u,A=2),E0(t,0,e-A)+u}throw new Error(`Expected \\`options.position\\` to be either \\`start\\`, \\`middle\\` or \\`end\\`, got ${o}`)}});var H6=_(fB=>{\"use strict\";var rCe=fB&&fB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fB,\"__esModule\",{value:!0});var mEt=rCe(WEe()),yEt=rCe(tCe()),_6={};fB.default=(t,e,r)=>{let o=t+String(e)+String(r);if(_6[o])return _6[o];let a=t;if(r===\"wrap\"&&(a=mEt.default(t,e,{trim:!1,hard:!0})),r.startsWith(\"truncate\")){let n=\"end\";r===\"truncate-middle\"&&(n=\"middle\"),r===\"truncate-start\"&&(n=\"start\"),a=yEt.default(t,e,{position:n})}return _6[o]=a,a}});var q6=_(j6=>{\"use strict\";Object.defineProperty(j6,\"__esModule\",{value:!0});var nCe=t=>{let e=\"\";if(t.childNodes.length>0)for(let r of t.childNodes){let o=\"\";r.nodeName===\"#text\"?o=r.nodeValue:((r.nodeName===\"ink-text\"||r.nodeName===\"ink-virtual-text\")&&(o=nCe(r)),o.length>0&&typeof r.internal_transform==\"function\"&&(o=r.internal_transform(o))),e+=o}return e};j6.default=nCe});var G6=_(pi=>{\"use strict\";var pB=pi&&pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pi,\"__esModule\",{value:!0});pi.setTextNodeValue=pi.createTextNode=pi.setStyle=pi.setAttribute=pi.removeChildNode=pi.insertBeforeNode=pi.appendChildNode=pi.createNode=pi.TEXT_NAME=void 0;var EEt=pB(am()),iCe=pB(jEe()),CEt=pB(qEe()),wEt=pB(H6()),IEt=pB(q6());pi.TEXT_NAME=\"#text\";pi.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t===\"ink-virtual-text\"?void 0:EEt.default.Node.create()};return t===\"ink-text\"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(BEt.bind(null,r))),r};pi.appendChildNode=(t,e)=>{var r;e.parentNode&&pi.removeChildNode(e.parentNode,e),e.parentNode=t,t.childNodes.push(e),e.yogaNode&&((r=t.yogaNode)===null||r===void 0||r.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&zk(t)};pi.insertBeforeNode=(t,e,r)=>{var o,a;e.parentNode&&pi.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((o=t.yogaNode)===null||o===void 0||o.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&zk(t)};pi.removeChildNode=(t,e)=>{var r,o;e.yogaNode&&((o=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||o===void 0||o.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&zk(t)};pi.setAttribute=(t,e,r)=>{t.attributes[e]=r};pi.setStyle=(t,e)=>{t.style=e,t.yogaNode&&CEt.default(t.yogaNode,e)};pi.createTextNode=t=>{let e={nodeName:\"#text\",nodeValue:t,yogaNode:void 0,parentNode:null,style:{}};return pi.setTextNodeValue(e,t),e};var BEt=function(t,e){var r,o;let a=t.nodeName===\"#text\"?t.nodeValue:IEt.default(t),n=iCe.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let u=(o=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&o!==void 0?o:\"wrap\",A=wEt.default(a,e,u);return iCe.default(A)},sCe=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:sCe(t.parentNode)},zk=t=>{let e=sCe(t);e?.markDirty()};pi.setTextNodeValue=(t,e)=>{typeof e!=\"string\"&&(e=String(e)),t.nodeValue=e,zk(t)}});var uCe=_(hB=>{\"use strict\";var cCe=hB&&hB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hB,\"__esModule\",{value:!0});var oCe=P6(),vEt=cCe(bEe()),aCe=cCe(am()),Oo=G6(),lCe=t=>{t?.unsetMeasureFunc(),t?.freeRecursive()};hB.default=vEt.default({schedulePassiveEffects:oCe.unstable_scheduleCallback,cancelPassiveEffects:oCe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>{},resetAfterCommit:t=>{if(t.isStaticDirty){t.isStaticDirty=!1,typeof t.onImmediateRender==\"function\"&&t.onImmediateRender();return}typeof t.onRender==\"function\"&&t.onRender()},getChildHostContext:(t,e)=>{let r=t.isInsideText,o=e===\"ink-text\"||e===\"ink-virtual-text\";return r===o?t:{isInsideText:o}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,o)=>{if(o.isInsideText&&t===\"ink-box\")throw new Error(\"<Box> can\\u2019t be nested inside <Text> component\");let a=t===\"ink-text\"&&o.isInsideText?\"ink-virtual-text\":t,n=Oo.createNode(a);for(let[u,A]of Object.entries(e))u!==\"children\"&&(u===\"style\"?Oo.setStyle(n,A):u===\"internal_transform\"?n.internal_transform=A:u===\"internal_static\"?n.internal_static=!0:Oo.setAttribute(n,u,A));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string \"${t}\" must be rendered inside <Text> component`);return Oo.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{Oo.setTextNodeValue(t,\"\")},unhideTextInstance:(t,e)=>{Oo.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(aCe.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(aCe.default.DISPLAY_FLEX)},appendInitialChild:Oo.appendChildNode,appendChild:Oo.appendChildNode,insertBefore:Oo.insertBeforeNode,finalizeInitialChildren:(t,e,r,o)=>(t.internal_static&&(o.isStaticDirty=!0,o.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:Oo.appendChildNode,insertInContainerBefore:Oo.insertBeforeNode,removeChildFromContainer:(t,e)=>{Oo.removeChildNode(t,e),lCe(e.yogaNode)},prepareUpdate:(t,e,r,o,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},u=Object.keys(o);for(let A of u)if(o[A]!==r[A]){if(A===\"style\"&&typeof o.style==\"object\"&&typeof r.style==\"object\"){let h=o.style,E=r.style,I=Object.keys(h);for(let v of I){if(v===\"borderStyle\"||v===\"borderColor\"){if(typeof n.style!=\"object\"){let x={};n.style=x}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[v]!==E[v]){if(typeof n.style!=\"object\"){let x={};n.style=x}n.style[v]=h[v]}}continue}n[A]=o[A]}return n},commitUpdate:(t,e)=>{for(let[r,o]of Object.entries(e))r!==\"children\"&&(r===\"style\"?Oo.setStyle(t,o):r===\"internal_transform\"?t.internal_transform=o:r===\"internal_static\"?t.internal_static=!0:Oo.setAttribute(t,r,o))},commitTextUpdate:(t,e,r)=>{Oo.setTextNodeValue(t,r)},removeChild:(t,e)=>{Oo.removeChildNode(t,e),lCe(e.yogaNode)}})});var fCe=_((OKt,ACe)=>{\"use strict\";ACe.exports=(t,e=1,r)=>{if(r={indent:\" \",includeEmptyLines:!1,...r},typeof t!=\"string\")throw new TypeError(`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof t}\\``);if(typeof e!=\"number\")throw new TypeError(`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof e}\\``);if(typeof r.indent!=\"string\")throw new TypeError(`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof r.indent}\\``);if(e===0)return t;let o=r.includeEmptyLines?/^/gm:/^(?!\\s*$)/gm;return t.replace(o,r.indent.repeat(e))}});var pCe=_(gB=>{\"use strict\";var DEt=gB&&gB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(gB,\"__esModule\",{value:!0});var Xk=DEt(am());gB.default=t=>t.getComputedWidth()-t.getComputedPadding(Xk.default.EDGE_LEFT)-t.getComputedPadding(Xk.default.EDGE_RIGHT)-t.getComputedBorder(Xk.default.EDGE_LEFT)-t.getComputedBorder(Xk.default.EDGE_RIGHT)});var hCe=_((UKt,PEt)=>{PEt.exports={single:{topLeft:\"\\u250C\",topRight:\"\\u2510\",bottomRight:\"\\u2518\",bottomLeft:\"\\u2514\",vertical:\"\\u2502\",horizontal:\"\\u2500\"},double:{topLeft:\"\\u2554\",topRight:\"\\u2557\",bottomRight:\"\\u255D\",bottomLeft:\"\\u255A\",vertical:\"\\u2551\",horizontal:\"\\u2550\"},round:{topLeft:\"\\u256D\",topRight:\"\\u256E\",bottomRight:\"\\u256F\",bottomLeft:\"\\u2570\",vertical:\"\\u2502\",horizontal:\"\\u2500\"},bold:{topLeft:\"\\u250F\",topRight:\"\\u2513\",bottomRight:\"\\u251B\",bottomLeft:\"\\u2517\",vertical:\"\\u2503\",horizontal:\"\\u2501\"},singleDouble:{topLeft:\"\\u2553\",topRight:\"\\u2556\",bottomRight:\"\\u255C\",bottomLeft:\"\\u2559\",vertical:\"\\u2551\",horizontal:\"\\u2500\"},doubleSingle:{topLeft:\"\\u2552\",topRight:\"\\u2555\",bottomRight:\"\\u255B\",bottomLeft:\"\\u2558\",vertical:\"\\u2502\",horizontal:\"\\u2550\"},classic:{topLeft:\"+\",topRight:\"+\",bottomRight:\"+\",bottomLeft:\"+\",vertical:\"|\",horizontal:\"-\"}}});var dCe=_((_Kt,Y6)=>{\"use strict\";var gCe=hCe();Y6.exports=gCe;Y6.exports.default=gCe});var yCe=_((HKt,mCe)=>{\"use strict\";var SEt=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u=\"\";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},bEt=(t,e,r,o)=>{let a=0,n=\"\";do{let u=t[o-1]===\"\\r\";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\\r\n`:`\n`)+r,a=o+1,o=t.indexOf(`\n`,a)}while(o!==-1);return n+=t.substr(a),n};mCe.exports={stringReplaceAll:SEt,stringEncaseCRLFWithFirstIndex:bEt}});var BCe=_((jKt,ICe)=>{\"use strict\";var xEt=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,ECe=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,kEt=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,QEt=/\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi,FEt=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function wCe(t){let e=t[0]===\"u\",r=t[1]===\"{\";return e&&!r&&t.length===5||t[0]===\"x\"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):FEt.get(t)||t}function REt(t,e){let r=[],o=e.trim().split(/\\s*,\\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(kEt))r.push(a[2].replace(QEt,(A,p,h)=>p?wCe(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function TEt(t){ECe.lastIndex=0;let e=[],r;for(;(r=ECe.exec(t))!==null;){let o=r[1];if(r[2]){let a=REt(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function CCe(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}ICe.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(xEt,(n,u,A,p,h,E)=>{if(u)a.push(wCe(u));else if(p){let I=a.join(\"\");a=[],o.push(r.length===0?I:CCe(t,r)(I)),r.push({inverse:A,styles:TEt(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");o.push(CCe(t,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),o.push(a.join(\"\")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?\"\":\"s\"} (\\`}\\`)`;throw new Error(n)}return o.join(\"\")}});var rQ=_((qKt,xCe)=>{\"use strict\";var dB=DI(),{stdout:K6,stderr:V6}=dL(),{stringReplaceAll:LEt,stringEncaseCRLFWithFirstIndex:NEt}=yCe(),{isArray:Zk}=Array,DCe=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],HC=Object.create(null),OEt=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error(\"The `level` option should be an integer from 0 to 3\");let r=K6?K6.level:0;t.level=e.level===void 0?r:e.level},J6=class{constructor(e){return PCe(e)}},PCe=t=>{let e={};return OEt(e,t),e.template=(...r)=>bCe(e.template,...r),Object.setPrototypeOf(e,$k.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},e.template.Instance=J6,e.template};function $k(t){return PCe(t)}for(let[t,e]of Object.entries(dB))HC[t]={get(){let r=eQ(this,z6(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};HC.visible={get(){let t=eQ(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:t}),t}};var SCe=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let t of SCe)HC[t]={get(){let{level:e}=this;return function(...r){let o=z6(dB.color[DCe[e]][t](...r),dB.color.close,this._styler);return eQ(this,o,this._isEmpty)}}};for(let t of SCe){let e=\"bg\"+t[0].toUpperCase()+t.slice(1);HC[e]={get(){let{level:r}=this;return function(...o){let a=z6(dB.bgColor[DCe[r]][t](...o),dB.bgColor.close,this._styler);return eQ(this,a,this._isEmpty)}}}}var MEt=Object.defineProperties(()=>{},{...HC,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),z6=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},eQ=(t,e,r)=>{let o=(...a)=>Zk(a[0])&&Zk(a[0].raw)?vCe(o,bCe(o,...a)):vCe(o,a.length===1?\"\"+a[0]:a.join(\" \"));return Object.setPrototypeOf(o,MEt),o._generator=t,o._styler=e,o._isEmpty=r,o},vCe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?\"\":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)e=LEt(e,r.close,r.open),r=r.parent;let n=e.indexOf(`\n`);return n!==-1&&(e=NEt(e,a,o,n)),o+e+a},W6,bCe=(t,...e)=>{let[r]=e;if(!Zk(r)||!Zk(r.raw))return e.join(\" \");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return W6===void 0&&(W6=BCe()),W6(t,a.join(\"\"))};Object.defineProperties($k.prototype,HC);var tQ=$k();tQ.supportsColor=K6;tQ.stderr=$k({level:V6?V6.level:0});tQ.stderr.supportsColor=V6;xCe.exports=tQ});var X6=_(yB=>{\"use strict\";var UEt=yB&&yB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(yB,\"__esModule\",{value:!0});var mB=UEt(rQ()),_Et=/^(rgb|hsl|hsv|hwb)\\(\\s?(\\d+),\\s?(\\d+),\\s?(\\d+)\\s?\\)$/,HEt=/^(ansi|ansi256)\\(\\s?(\\d+)\\s?\\)$/,nQ=(t,e)=>e===\"foreground\"?t:\"bg\"+t[0].toUpperCase()+t.slice(1);yB.default=(t,e,r)=>{if(!e)return t;if(e in mB.default){let a=nQ(e,r);return mB.default[a](t)}if(e.startsWith(\"#\")){let a=nQ(\"hex\",r);return mB.default[a](e)(t)}if(e.startsWith(\"ansi\")){let a=HEt.exec(e);if(!a)return t;let n=nQ(a[1],r),u=Number(a[2]);return mB.default[n](u)(t)}if(e.startsWith(\"rgb\")||e.startsWith(\"hsl\")||e.startsWith(\"hsv\")||e.startsWith(\"hwb\")){let a=_Et.exec(e);if(!a)return t;let n=nQ(a[1],r),u=Number(a[2]),A=Number(a[3]),p=Number(a[4]);return mB.default[n](u,A,p)(t)}return t}});var QCe=_(EB=>{\"use strict\";var kCe=EB&&EB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(EB,\"__esModule\",{value:!0});var jEt=kCe(dCe()),Z6=kCe(X6());EB.default=(t,e,r,o)=>{if(typeof r.style.borderStyle==\"string\"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),u=r.style.borderColor,A=jEt.default[r.style.borderStyle],p=Z6.default(A.topLeft+A.horizontal.repeat(a-2)+A.topRight,u,\"foreground\"),h=(Z6.default(A.vertical,u,\"foreground\")+`\n`).repeat(n-2),E=Z6.default(A.bottomLeft+A.horizontal.repeat(a-2)+A.bottomRight,u,\"foreground\");o.write(t,e,p,{transformers:[]}),o.write(t,e+1,h,{transformers:[]}),o.write(t+a-1,e+1,h,{transformers:[]}),o.write(t,e+n-1,E,{transformers:[]})}}});var RCe=_(CB=>{\"use strict\";var lm=CB&&CB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(CB,\"__esModule\",{value:!0});var qEt=lm(am()),GEt=lm(L6()),YEt=lm(fCe()),WEt=lm(H6()),KEt=lm(pCe()),VEt=lm(q6()),JEt=lm(QCe()),zEt=(t,e)=>{var r;let o=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(o){let a=o.getComputedLeft(),n=o.getComputedTop();e=`\n`.repeat(n)+YEt.default(e,a)}return e},FCe=(t,e,r)=>{var o;let{offsetX:a=0,offsetY:n=0,transformers:u=[],skipStaticElements:A}=r;if(A&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===qEt.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),I=u;if(typeof t.internal_transform==\"function\"&&(I=[t.internal_transform,...u]),t.nodeName===\"ink-text\"){let v=VEt.default(t);if(v.length>0){let x=GEt.default(v),C=KEt.default(p);if(x>C){let R=(o=t.style.textWrap)!==null&&o!==void 0?o:\"wrap\";v=WEt.default(v,C,R)}v=zEt(t,v),e.write(h,E,v,{transformers:I})}return}if(t.nodeName===\"ink-box\"&&JEt.default(h,E,t,e),t.nodeName===\"ink-root\"||t.nodeName===\"ink-box\")for(let v of t.childNodes)FCe(v,e,{offsetX:h,offsetY:E,transformers:I,skipStaticElements:A})}};CB.default=FCe});var LCe=_((KKt,TCe)=>{\"use strict\";TCe.exports=t=>{t=Object.assign({onlyFirst:!1},t);let e=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:[a-zA-Z\\\\d]*(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\"].join(\"|\");return new RegExp(e,t.onlyFirst?void 0:\"g\")}});var OCe=_((VKt,$6)=>{\"use strict\";var XEt=LCe(),NCe=t=>typeof t==\"string\"?t.replace(XEt(),\"\"):t;$6.exports=NCe;$6.exports.default=NCe});var _Ce=_((JKt,UCe)=>{\"use strict\";var MCe=\"[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\";UCe.exports=t=>t&&t.exact?new RegExp(`^${MCe}$`):new RegExp(MCe,\"g\")});var jCe=_((zKt,ej)=>{\"use strict\";var ZEt=OCe(),$Et=_Ce(),HCe=t=>ZEt(t).replace($Et(),\" \").length;ej.exports=HCe;ej.exports.default=HCe});var YCe=_(wB=>{\"use strict\";var GCe=wB&&wB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(wB,\"__esModule\",{value:!0});var qCe=GCe(U6()),eCt=GCe(jCe()),tj=class{constructor(e){this.writes=[];let{width:r,height:o}=e;this.width=r,this.height=o}write(e,r,o,a){let{transformers:n}=a;!o||this.writes.push({x:e,y:r,text:o,transformers:n})}get(){let e=[];for(let o=0;o<this.height;o++)e.push(\" \".repeat(this.width));for(let o of this.writes){let{x:a,y:n,text:u,transformers:A}=o,p=u.split(`\n`),h=0;for(let E of p){let I=e[n+h];if(!I)continue;let v=eCt.default(E);for(let x of A)E=x(E);e[n+h]=qCe.default(I,0,a)+E+qCe.default(I,a+v),h++}}return{output:e.map(o=>o.trimRight()).join(`\n`),height:e.length}}};wB.default=tj});var VCe=_(IB=>{\"use strict\";var rj=IB&&IB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(IB,\"__esModule\",{value:!0});var tCt=rj(am()),WCe=rj(RCe()),KCe=rj(YCe());IB.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,tCt.default.DIRECTION_LTR);let o=new KCe.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});WCe.default(t,o,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new KCe.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),WCe.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:u}=o.get();return{output:n,outputHeight:u,staticOutput:a?`${a.get().output}\n`:\"\"}}return{output:\"\",outputHeight:0,staticOutput:\"\"}}});var ZCe=_(($Kt,XCe)=>{\"use strict\";var JCe=ve(\"stream\"),zCe=[\"assert\",\"count\",\"countReset\",\"debug\",\"dir\",\"dirxml\",\"error\",\"group\",\"groupCollapsed\",\"groupEnd\",\"info\",\"log\",\"table\",\"time\",\"timeEnd\",\"timeLog\",\"trace\",\"warn\"],nj={},rCt=t=>{let e=new JCe.PassThrough,r=new JCe.PassThrough;e.write=a=>t(\"stdout\",a),r.write=a=>t(\"stderr\",a);let o=new console.Console(e,r);for(let a of zCe)nj[a]=console[a],console[a]=o[a];return()=>{for(let a of zCe)console[a]=nj[a];nj={}}};XCe.exports=rCt});var sj=_(ij=>{\"use strict\";Object.defineProperty(ij,\"__esModule\",{value:!0});ij.default=new WeakMap});var aj=_(oj=>{\"use strict\";Object.defineProperty(oj,\"__esModule\",{value:!0});var nCt=on(),$Ce=nCt.createContext({exit:()=>{}});$Ce.displayName=\"InternalAppContext\";oj.default=$Ce});var cj=_(lj=>{\"use strict\";Object.defineProperty(lj,\"__esModule\",{value:!0});var iCt=on(),ewe=iCt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});ewe.displayName=\"InternalStdinContext\";lj.default=ewe});var Aj=_(uj=>{\"use strict\";Object.defineProperty(uj,\"__esModule\",{value:!0});var sCt=on(),twe=sCt.createContext({stdout:void 0,write:()=>{}});twe.displayName=\"InternalStdoutContext\";uj.default=twe});var pj=_(fj=>{\"use strict\";Object.defineProperty(fj,\"__esModule\",{value:!0});var oCt=on(),rwe=oCt.createContext({stderr:void 0,write:()=>{}});rwe.displayName=\"InternalStderrContext\";fj.default=rwe});var iQ=_(hj=>{\"use strict\";Object.defineProperty(hj,\"__esModule\",{value:!0});var aCt=on(),nwe=aCt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});nwe.displayName=\"InternalFocusContext\";hj.default=nwe});var swe=_((oVt,iwe)=>{\"use strict\";var lCt=/[|\\\\{}()[\\]^$+*?.-]/g;iwe.exports=t=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return t.replace(lCt,\"\\\\$&\")}});var cwe=_((aVt,lwe)=>{\"use strict\";var cCt=swe(),uCt=typeof process==\"object\"&&process&&typeof process.cwd==\"function\"?process.cwd():\".\",awe=[].concat(ve(\"module\").builtinModules,\"bootstrap_node\",\"node\").map(t=>new RegExp(`(?:\\\\((?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+\\\\)$|^\\\\s*at (?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+$)`));awe.push(/\\((?:node:)?internal\\/[^:]+:\\d+:\\d+\\)$/,/\\s*at (?:node:)?internal\\/[^:]+:\\d+:\\d+$/,/\\/\\.node-spawn-wrap-\\w+-\\w+\\/node:\\d+:\\d+\\)?$/);var BB=class{constructor(e){e={ignoredPackages:[],...e},\"internals\"in e||(e.internals=BB.nodeInternals()),\"cwd\"in e||(e.cwd=uCt),this._cwd=e.cwd.replace(/\\\\/g,\"/\"),this._internals=[].concat(e.internals,ACt(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...awe]}clean(e,r=0){r=\" \".repeat(r),Array.isArray(e)||(e=e.split(`\n`)),!/^\\s*at /.test(e[0])&&/^\\s*at /.test(e[1])&&(e=e.slice(1));let o=!1,a=null,n=[];return e.forEach(u=>{if(u=u.replace(/\\\\/g,\"/\"),this._internals.some(p=>p.test(u)))return;let A=/^\\s*at /.test(u);o?u=u.trimEnd().replace(/^(\\s+)at /,\"$1\"):(u=u.trim(),A&&(u=u.slice(3))),u=u.replace(`${this._cwd}/`,\"\"),u&&(A?(a&&(n.push(a),a=null),n.push(u)):(o=!0,a=u))}),n.map(u=>`${r}${u}\n`).join(\"\")}captureString(e,r=this.captureString){typeof e==\"function\"&&(r=e,e=1/0);let{stackTraceLimit:o}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=o,this.clean(n)}capture(e,r=this.capture){typeof e==\"function\"&&(r=e,e=1/0);let{prepareStackTrace:o,stackTraceLimit:a}=Error;Error.prepareStackTrace=(A,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:u}=n;return Object.assign(Error,{prepareStackTrace:o,stackTraceLimit:a}),u}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let o={line:r.getLineNumber(),column:r.getColumnNumber()};owe(o,r.getFileName(),this._cwd),r.isConstructor()&&(o.constructor=!0),r.isEval()&&(o.evalOrigin=r.getEvalOrigin()),r.isNative()&&(o.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!==\"Object\"&&a!==\"[object Object]\"&&(o.type=a);let n=r.getFunctionName();n&&(o.function=n);let u=r.getMethodName();return u&&n!==u&&(o.method=u),o}parseLine(e){let r=e&&e.match(fCt);if(!r)return null;let o=r[1]===\"new\",a=r[2],n=r[3],u=r[4],A=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],I=r[9],v=r[10]===\"native\",x=r[11]===\")\",C,R={};if(E&&(R.line=Number(E)),I&&(R.column=Number(I)),x&&h){let N=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===\")\")N++;else if(h.charAt(U)===\"(\"&&h.charAt(U-1)===\" \"&&(N--,N===-1&&h.charAt(U-1)===\" \")){let J=h.slice(0,U-1);h=h.slice(U+1),a+=` (${J}`;break}}if(a){let N=a.match(pCt);N&&(a=N[1],C=N[2])}return owe(R,h,this._cwd),o&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=A,R.evalColumn=p,R.evalFile=u&&u.replace(/\\\\/g,\"/\")),v&&(R.native=!0),a&&(R.function=a),C&&a!==C&&(R.method=C),R}};function owe(t,e,r){e&&(e=e.replace(/\\\\/g,\"/\"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function ACt(t){if(t.length===0)return[];let e=t.map(r=>cCt(r));return new RegExp(`[/\\\\\\\\]node_modules[/\\\\\\\\](?:${e.join(\"|\")})[/\\\\\\\\][^:]+:\\\\d+:\\\\d+`)}var fCt=new RegExp(\"^(?:\\\\s*at )?(?:(new) )?(?:(.*?) \\\\()?(?:eval at ([^ ]+) \\\\((.+?):(\\\\d+):(\\\\d+)\\\\), )?(?:(.+?):(\\\\d+):(\\\\d+)|(native))(\\\\)?)$\"),pCt=/^(.*?) \\[as (.*?)\\]$/;lwe.exports=BB});var Awe=_((lVt,uwe)=>{\"use strict\";uwe.exports=(t,e)=>t.replace(/^\\t+/gm,r=>\" \".repeat(r.length*(e||2)))});var pwe=_((cVt,fwe)=>{\"use strict\";var hCt=Awe(),gCt=(t,e)=>{let r=[],o=t-e,a=t+e;for(let n=o;n<=a;n++)r.push(n);return r};fwe.exports=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(\"Source code is missing.\");if(!e||e<1)throw new TypeError(\"Line number must start from `1`.\");if(t=hCt(t).split(/\\r?\\n/),!(e>t.length))return r={around:3,...r},gCt(e,r.around).filter(o=>t[o-1]!==void 0).map(o=>({line:o,value:t[o-1]}))}});var sQ=_(ru=>{\"use strict\";var dCt=ru&&ru.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),mCt=ru&&ru.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),yCt=ru&&ru.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&dCt(e,t,r);return mCt(e,t),e},ECt=ru&&ru.__rest||function(t,e){var r={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var a=0,o=Object.getOwnPropertySymbols(t);a<o.length;a++)e.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(t,o[a])&&(r[o[a]]=t[o[a]]);return r};Object.defineProperty(ru,\"__esModule\",{value:!0});var hwe=yCt(on()),gj=hwe.forwardRef((t,e)=>{var{children:r}=t,o=ECt(t,[\"children\"]);let a=Object.assign(Object.assign({},o),{marginLeft:o.marginLeft||o.marginX||o.margin||0,marginRight:o.marginRight||o.marginX||o.margin||0,marginTop:o.marginTop||o.marginY||o.margin||0,marginBottom:o.marginBottom||o.marginY||o.margin||0,paddingLeft:o.paddingLeft||o.paddingX||o.padding||0,paddingRight:o.paddingRight||o.paddingX||o.padding||0,paddingTop:o.paddingTop||o.paddingY||o.padding||0,paddingBottom:o.paddingBottom||o.paddingY||o.padding||0});return hwe.default.createElement(\"ink-box\",{ref:e,style:a},r)});gj.displayName=\"Box\";gj.defaultProps={flexDirection:\"row\",flexGrow:0,flexShrink:1};ru.default=gj});var yj=_(vB=>{\"use strict\";var dj=vB&&vB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vB,\"__esModule\",{value:!0});var CCt=dj(on()),jC=dj(rQ()),gwe=dj(X6()),mj=({color:t,backgroundColor:e,dimColor:r,bold:o,italic:a,underline:n,strikethrough:u,inverse:A,wrap:p,children:h})=>{if(h==null)return null;let E=I=>(r&&(I=jC.default.dim(I)),t&&(I=gwe.default(I,t,\"foreground\")),e&&(I=gwe.default(I,e,\"background\")),o&&(I=jC.default.bold(I)),a&&(I=jC.default.italic(I)),n&&(I=jC.default.underline(I)),u&&(I=jC.default.strikethrough(I)),A&&(I=jC.default.inverse(I)),I);return CCt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\",textWrap:p},internal_transform:E},h)};mj.displayName=\"Text\";mj.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:\"wrap\"};vB.default=mj});var Ewe=_(nu=>{\"use strict\";var wCt=nu&&nu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),ICt=nu&&nu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),BCt=nu&&nu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&wCt(e,t,r);return ICt(e,t),e},DB=nu&&nu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nu,\"__esModule\",{value:!0});var dwe=BCt(ve(\"fs\")),fs=DB(on()),mwe=DB(cwe()),vCt=DB(pwe()),Zf=DB(sQ()),hA=DB(yj()),ywe=new mwe.default({cwd:process.cwd(),internals:mwe.default.nodeInternals()}),DCt=({error:t})=>{let e=t.stack?t.stack.split(`\n`).slice(1):void 0,r=e?ywe.parseLine(e[0]):void 0,o,a=0;if(r?.file&&r?.line&&dwe.existsSync(r.file)){let n=dwe.readFileSync(r.file,\"utf8\");if(o=vCt.default(n,r.line),o)for(let{line:u}of o)a=Math.max(a,String(u).length)}return fs.default.createElement(Zf.default,{flexDirection:\"column\",padding:1},fs.default.createElement(Zf.default,null,fs.default.createElement(hA.default,{backgroundColor:\"red\",color:\"white\"},\" \",\"ERROR\",\" \"),fs.default.createElement(hA.default,null,\" \",t.message)),r&&fs.default.createElement(Zf.default,{marginTop:1},fs.default.createElement(hA.default,{dimColor:!0},r.file,\":\",r.line,\":\",r.column)),r&&o&&fs.default.createElement(Zf.default,{marginTop:1,flexDirection:\"column\"},o.map(({line:n,value:u})=>fs.default.createElement(Zf.default,{key:n},fs.default.createElement(Zf.default,{width:a+1},fs.default.createElement(hA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},String(n).padStart(a,\" \"),\":\")),fs.default.createElement(hA.default,{key:n,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},\" \"+u)))),t.stack&&fs.default.createElement(Zf.default,{marginTop:1,flexDirection:\"column\"},t.stack.split(`\n`).slice(1).map(n=>{let u=ywe.parseLine(n);return u?fs.default.createElement(Zf.default,{key:n},fs.default.createElement(hA.default,{dimColor:!0},\"- \"),fs.default.createElement(hA.default,{dimColor:!0,bold:!0},u.function),fs.default.createElement(hA.default,{dimColor:!0,color:\"gray\"},\" \",\"(\",u.file,\":\",u.line,\":\",u.column,\")\")):fs.default.createElement(Zf.default,{key:n},fs.default.createElement(hA.default,{dimColor:!0},\"- \"),fs.default.createElement(hA.default,{dimColor:!0,bold:!0},n))})))};nu.default=DCt});var wwe=_(iu=>{\"use strict\";var PCt=iu&&iu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),SCt=iu&&iu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),bCt=iu&&iu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&PCt(e,t,r);return SCt(e,t),e},um=iu&&iu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(iu,\"__esModule\",{value:!0});var cm=bCt(on()),Cwe=um(g6()),xCt=um(aj()),kCt=um(cj()),QCt=um(Aj()),FCt=um(pj()),RCt=um(iQ()),TCt=um(Ewe()),LCt=\"\t\",NCt=\"\\x1B[Z\",OCt=\"\\x1B\",oQ=class extends cm.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding(\"utf8\"),e){this.rawModeEnabledCount===0&&(r.addListener(\"data\",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener(\"data\",this.handleInput),r.pause())},this.handleInput=e=>{e===\"\u0003\"&&this.props.exitOnCtrlC&&this.handleExit(),e===OCt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===LCt&&this.focusNext(),e===NCt&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focusNext=()=>{this.setState(e=>{let r=e.focusables[0].id;return{activeFocusId:this.findNextFocusable(e)||r}})},this.focusPrevious=()=>{this.setState(e=>{let r=e.focusables[e.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(e)||r}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(o=>{let a=o.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...o.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(o=>o.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r+1;o<e.focusables.length;o++)if(e.focusables[o].isActive)return e.focusables[o].id},this.findPreviousFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r-1;o>=0;o--)if(e.focusables[o].isActive)return e.focusables[o].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return cm.default.createElement(xCt.default.Provider,{value:{exit:this.handleExit}},cm.default.createElement(kCt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},cm.default.createElement(QCt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},cm.default.createElement(FCt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},cm.default.createElement(RCt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious}},this.state.error?cm.default.createElement(TCt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){Cwe.default.hide(this.props.stdout)}componentWillUnmount(){Cwe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};iu.default=oQ;oQ.displayName=\"InternalApp\"});var vwe=_(su=>{\"use strict\";var MCt=su&&su.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),UCt=su&&su.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),_Ct=su&&su.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&MCt(e,t,r);return UCt(e,t),e},ou=su&&su.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(su,\"__esModule\",{value:!0});var HCt=ou(on()),Iwe=lM(),jCt=ou(cEe()),qCt=ou(u6()),GCt=ou(gEe()),YCt=ou(mEe()),Ej=ou(uCe()),WCt=ou(VCe()),KCt=ou(h6()),VCt=ou(ZCe()),JCt=_Ct(G6()),zCt=ou(sj()),XCt=ou(wwe()),qC=process.env.CI===\"false\"?!1:GCt.default,Bwe=()=>{},Cj=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:o,staticOutput:a}=WCt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==`\n`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(qC){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),o>=this.options.stdout.rows){this.options.stdout.write(qCt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},YCt.default(this),this.options=e,this.rootNode=JCt.createNode(\"ink-root\"),this.rootNode.onRender=e.debug?this.onRender:Iwe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=jCt.default.create(e.stdout),this.throttledLog=e.debug?this.log:Iwe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput=\"\",this.fullStaticOutput=\"\",this.container=Ej.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=KCt.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),qC||(e.stdout.on(\"resize\",this.onRender),this.unsubscribeResize=()=>{e.stdout.off(\"resize\",this.onRender)})}render(e){let r=HCt.default.createElement(XCt.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);Ej.default.updateContainer(r,this.container,null,Bwe)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(qC){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(qC){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole==\"function\"&&this.restoreConsole(),typeof this.unsubscribeResize==\"function\"&&this.unsubscribeResize(),qC?this.options.stdout.write(this.lastOutput+`\n`):this.options.debug||this.log.done(),this.isUnmounted=!0,Ej.default.updateContainer(null,this.container,null,Bwe),zCt.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,r)=>{this.resolveExitPromise=e,this.rejectExitPromise=r})),this.exitPromise}clear(){!qC&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=VCt.default((e,r)=>{e===\"stdout\"&&this.writeToStdout(r),e===\"stderr\"&&(r.startsWith(\"The above error occurred\")||this.writeToStderr(r))}))}};su.default=Cj});var Pwe=_(PB=>{\"use strict\";var Dwe=PB&&PB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(PB,\"__esModule\",{value:!0});var ZCt=Dwe(vwe()),aQ=Dwe(sj()),$Ct=ve(\"stream\"),ewt=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},twt(e)),o=rwt(r.stdout,()=>new ZCt.default(r));return o.render(t),{rerender:o.render,unmount:()=>o.unmount(),waitUntilExit:o.waitUntilExit,cleanup:()=>aQ.default.delete(r.stdout),clear:o.clear}};PB.default=ewt;var twt=(t={})=>t instanceof $Ct.Stream?{stdout:t,stdin:process.stdin}:t,rwt=(t,e)=>{let r;return aQ.default.has(t)?r=aQ.default.get(t):(r=e(),aQ.default.set(t,r)),r}});var bwe=_($f=>{\"use strict\";var nwt=$f&&$f.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),iwt=$f&&$f.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),swt=$f&&$f.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&nwt(e,t,r);return iwt(e,t),e};Object.defineProperty($f,\"__esModule\",{value:!0});var SB=swt(on()),Swe=t=>{let{items:e,children:r,style:o}=t,[a,n]=SB.useState(0),u=SB.useMemo(()=>e.slice(a),[e,a]);SB.useLayoutEffect(()=>{n(e.length)},[e.length]);let A=u.map((h,E)=>r(h,a+E)),p=SB.useMemo(()=>Object.assign({position:\"absolute\",flexDirection:\"column\"},o),[o]);return SB.default.createElement(\"ink-box\",{internal_static:!0,style:p},A)};Swe.displayName=\"Static\";$f.default=Swe});var kwe=_(bB=>{\"use strict\";var owt=bB&&bB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bB,\"__esModule\",{value:!0});var awt=owt(on()),xwe=({children:t,transform:e})=>t==null?null:awt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\"},internal_transform:e},t);xwe.displayName=\"Transform\";bB.default=xwe});var Fwe=_(xB=>{\"use strict\";var lwt=xB&&xB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xB,\"__esModule\",{value:!0});var cwt=lwt(on()),Qwe=({count:t=1})=>cwt.default.createElement(\"ink-text\",null,`\n`.repeat(t));Qwe.displayName=\"Newline\";xB.default=Qwe});var Lwe=_(kB=>{\"use strict\";var Rwe=kB&&kB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kB,\"__esModule\",{value:!0});var uwt=Rwe(on()),Awt=Rwe(sQ()),Twe=()=>uwt.default.createElement(Awt.default,{flexGrow:1});Twe.displayName=\"Spacer\";kB.default=Twe});var lQ=_(QB=>{\"use strict\";var fwt=QB&&QB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(QB,\"__esModule\",{value:!0});var pwt=on(),hwt=fwt(cj()),gwt=()=>pwt.useContext(hwt.default);QB.default=gwt});var Owe=_(FB=>{\"use strict\";var dwt=FB&&FB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(FB,\"__esModule\",{value:!0});var Nwe=on(),mwt=dwt(lQ()),ywt=(t,e={})=>{let{stdin:r,setRawMode:o,internal_exitOnCtrlC:a}=mwt.default();Nwe.useEffect(()=>{if(e.isActive!==!1)return o(!0),()=>{o(!1)}},[e.isActive,o]),Nwe.useEffect(()=>{if(e.isActive===!1)return;let n=u=>{let A=String(u),p={upArrow:A===\"\\x1B[A\",downArrow:A===\"\\x1B[B\",leftArrow:A===\"\\x1B[D\",rightArrow:A===\"\\x1B[C\",pageDown:A===\"\\x1B[6~\",pageUp:A===\"\\x1B[5~\",return:A===\"\\r\",escape:A===\"\\x1B\",ctrl:!1,shift:!1,tab:A===\"\t\"||A===\"\\x1B[Z\",backspace:A===\"\\b\",delete:A===\"\\x7F\"||A===\"\\x1B[3~\",meta:!1};A<=\"\u001a\"&&!p.return&&(A=String.fromCharCode(A.charCodeAt(0)+\"a\".charCodeAt(0)-1),p.ctrl=!0),A.startsWith(\"\\x1B\")&&(A=A.slice(1),p.meta=!0);let h=A>=\"A\"&&A<=\"Z\",E=A>=\"\\u0410\"&&A<=\"\\u042F\";A.length===1&&(h||E)&&(p.shift=!0),p.tab&&A===\"[Z\"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(A=\"\"),(!(A===\"c\"&&p.ctrl)||!a)&&t(A,p)};return r?.on(\"data\",n),()=>{r?.off(\"data\",n)}},[e.isActive,r,a,t])};FB.default=ywt});var Mwe=_(RB=>{\"use strict\";var Ewt=RB&&RB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(RB,\"__esModule\",{value:!0});var Cwt=on(),wwt=Ewt(aj()),Iwt=()=>Cwt.useContext(wwt.default);RB.default=Iwt});var Uwe=_(TB=>{\"use strict\";var Bwt=TB&&TB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(TB,\"__esModule\",{value:!0});var vwt=on(),Dwt=Bwt(Aj()),Pwt=()=>vwt.useContext(Dwt.default);TB.default=Pwt});var _we=_(LB=>{\"use strict\";var Swt=LB&&LB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(LB,\"__esModule\",{value:!0});var bwt=on(),xwt=Swt(pj()),kwt=()=>bwt.useContext(xwt.default);LB.default=kwt});var jwe=_(OB=>{\"use strict\";var Hwe=OB&&OB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(OB,\"__esModule\",{value:!0});var NB=on(),Qwt=Hwe(iQ()),Fwt=Hwe(lQ()),Rwt=({isActive:t=!0,autoFocus:e=!1}={})=>{let{isRawModeSupported:r,setRawMode:o}=Fwt.default(),{activeId:a,add:n,remove:u,activate:A,deactivate:p}=NB.useContext(Qwt.default),h=NB.useMemo(()=>Math.random().toString().slice(2,7),[]);return NB.useEffect(()=>(n(h,{autoFocus:e}),()=>{u(h)}),[h,e]),NB.useEffect(()=>{t?A(h):p(h)},[t,h]),NB.useEffect(()=>{if(!(!r||!t))return o(!0),()=>{o(!1)}},[t]),{isFocused:Boolean(h)&&a===h}};OB.default=Rwt});var qwe=_(MB=>{\"use strict\";var Twt=MB&&MB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(MB,\"__esModule\",{value:!0});var Lwt=on(),Nwt=Twt(iQ()),Owt=()=>{let t=Lwt.useContext(Nwt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious}};MB.default=Owt});var Gwe=_(wj=>{\"use strict\";Object.defineProperty(wj,\"__esModule\",{value:!0});wj.default=t=>{var e,r,o,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(o=t.yogaNode)===null||o===void 0?void 0:o.getComputedHeight())!==null&&a!==void 0?a:0}}});var ic=_(ro=>{\"use strict\";Object.defineProperty(ro,\"__esModule\",{value:!0});var Mwt=Pwe();Object.defineProperty(ro,\"render\",{enumerable:!0,get:function(){return Mwt.default}});var Uwt=sQ();Object.defineProperty(ro,\"Box\",{enumerable:!0,get:function(){return Uwt.default}});var _wt=yj();Object.defineProperty(ro,\"Text\",{enumerable:!0,get:function(){return _wt.default}});var Hwt=bwe();Object.defineProperty(ro,\"Static\",{enumerable:!0,get:function(){return Hwt.default}});var jwt=kwe();Object.defineProperty(ro,\"Transform\",{enumerable:!0,get:function(){return jwt.default}});var qwt=Fwe();Object.defineProperty(ro,\"Newline\",{enumerable:!0,get:function(){return qwt.default}});var Gwt=Lwe();Object.defineProperty(ro,\"Spacer\",{enumerable:!0,get:function(){return Gwt.default}});var Ywt=Owe();Object.defineProperty(ro,\"useInput\",{enumerable:!0,get:function(){return Ywt.default}});var Wwt=Mwe();Object.defineProperty(ro,\"useApp\",{enumerable:!0,get:function(){return Wwt.default}});var Kwt=lQ();Object.defineProperty(ro,\"useStdin\",{enumerable:!0,get:function(){return Kwt.default}});var Vwt=Uwe();Object.defineProperty(ro,\"useStdout\",{enumerable:!0,get:function(){return Vwt.default}});var Jwt=_we();Object.defineProperty(ro,\"useStderr\",{enumerable:!0,get:function(){return Jwt.default}});var zwt=jwe();Object.defineProperty(ro,\"useFocus\",{enumerable:!0,get:function(){return zwt.default}});var Xwt=qwe();Object.defineProperty(ro,\"useFocusManager\",{enumerable:!0,get:function(){return Xwt.default}});var Zwt=Gwe();Object.defineProperty(ro,\"measureElement\",{enumerable:!0,get:function(){return Zwt.default}})});var Bj={};Vt(Bj,{Gem:()=>Ij});var Ywe,Am,Ij,cQ=Et(()=>{Ywe=$e(ic()),Am=$e(on()),Ij=(0,Am.memo)(({active:t})=>{let e=(0,Am.useMemo)(()=>t?\"\\u25C9\":\"\\u25EF\",[t]),r=(0,Am.useMemo)(()=>t?\"green\":\"yellow\",[t]);return Am.default.createElement(Ywe.Text,{color:r},e)})});var Kwe={};Vt(Kwe,{useKeypress:()=>fm});function fm({active:t},e,r){let{stdin:o}=(0,Wwe.useStdin)(),a=(0,uQ.useCallback)((n,u)=>e(n,u),r);(0,uQ.useEffect)(()=>{if(!(!t||!o))return o.on(\"keypress\",a),()=>{o.off(\"keypress\",a)}},[t,a,o])}var Wwe,uQ,UB=Et(()=>{Wwe=$e(ic()),uQ=$e(on())});var Jwe={};Vt(Jwe,{FocusRequest:()=>Vwe,useFocusRequest:()=>vj});var Vwe,vj,Dj=Et(()=>{UB();Vwe=(r=>(r.BEFORE=\"before\",r.AFTER=\"after\",r))(Vwe||{}),vj=function({active:t},e,r){fm({active:t},(o,a)=>{a.name===\"tab\"&&(a.shift?e(\"before\"):e(\"after\"))},r)}});var zwe={};Vt(zwe,{useListInput:()=>_B});var _B,AQ=Et(()=>{UB();_B=function(t,e,{active:r,minus:o,plus:a,set:n,loop:u=!0}){fm({active:r},(A,p)=>{let h=e.indexOf(t);switch(p.name){case o:{let E=h-1;if(u){n(e[(e.length+E)%e.length]);return}if(E<0)return;n(e[E])}break;case a:{let E=h+1;if(u){n(e[E%e.length]);return}if(E>=e.length)return;n(e[E])}break}},[e,t,a,n,u])}});var fQ={};Vt(fQ,{ScrollableItems:()=>$wt});var C0,Na,$wt,pQ=Et(()=>{C0=$e(ic()),Na=$e(on());Dj();AQ();$wt=({active:t=!0,children:e=[],radius:r=10,size:o=1,loop:a=!0,onFocusRequest:n,willReachEnd:u})=>{let A=N=>{if(N.key===null)throw new Error(\"Expected all children to have a key\");return N.key},p=Na.default.Children.map(e,N=>A(N)),h=p[0],[E,I]=(0,Na.useState)(h),v=p.indexOf(E);(0,Na.useEffect)(()=>{p.includes(E)||I(h)},[e]),(0,Na.useEffect)(()=>{u&&v>=p.length-2&&u()},[v]),vj({active:t&&!!n},N=>{n?.(N)},[n]),_B(E,p,{active:t,minus:\"up\",plus:\"down\",set:I,loop:a});let x=v-r,C=v+r;C>p.length&&(x-=C-p.length,C=p.length),x<0&&(C+=-x,x=0),C>=p.length&&(C=p.length-1);let R=[];for(let N=x;N<=C;++N){let U=p[N],J=t&&U===E;R.push(Na.default.createElement(C0.Box,{key:U,height:o},Na.default.createElement(C0.Box,{marginLeft:1,marginRight:1},Na.default.createElement(C0.Text,null,J?Na.default.createElement(C0.Text,{color:\"cyan\",bold:!0},\">\"):\" \")),Na.default.createElement(C0.Box,null,Na.default.cloneElement(e[N],{active:J}))))}return Na.default.createElement(C0.Box,{flexDirection:\"column\",width:\"100%\"},R)}});var Xwe,ep,Zwe,Pj,$we,Sj=Et(()=>{Xwe=$e(ic()),ep=$e(on()),Zwe=ve(\"readline\"),Pj=ep.default.createContext(null),$we=({children:t})=>{let{stdin:e,setRawMode:r}=(0,Xwe.useStdin)();(0,ep.useEffect)(()=>{r&&r(!0),e&&(0,Zwe.emitKeypressEvents)(e)},[e,r]);let[o,a]=(0,ep.useState)(new Map),n=(0,ep.useMemo)(()=>({getAll:()=>o,get:u=>o.get(u),set:(u,A)=>a(new Map([...o,[u,A]]))}),[o,a]);return ep.default.createElement(Pj.Provider,{value:n,children:t})}});var bj={};Vt(bj,{useMinistore:()=>eIt});function eIt(t,e){let r=(0,hQ.useContext)(Pj);if(r===null)throw new Error(\"Expected this hook to run with a ministore context attached\");if(typeof t>\"u\")return r.getAll();let o=(0,hQ.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>\"u\"&&(a=e),[a,o]}var hQ,xj=Et(()=>{hQ=$e(on());Sj()});var dQ={};Vt(dQ,{renderForm:()=>tIt});async function tIt(t,e,{stdin:r,stdout:o,stderr:a}){let n,u=p=>{let{exit:h}=(0,gQ.useApp)();fm({active:!0},(E,I)=>{I.name===\"return\"&&(n=p,h())},[h,p])},{waitUntilExit:A}=(0,gQ.render)(kj.default.createElement($we,null,kj.default.createElement(t,{...e,useSubmit:u})),{stdin:r,stdout:o,stderr:a});return await A(),n}var gQ,kj,mQ=Et(()=>{gQ=$e(ic()),kj=$e(on());Sj();UB()});var nIe=_(HB=>{\"use strict\";Object.defineProperty(HB,\"__esModule\",{value:!0});HB.UncontrolledTextInput=void 0;var tIe=on(),Qj=on(),eIe=ic(),pm=rQ(),rIe=({value:t,placeholder:e=\"\",focus:r=!0,mask:o,highlightPastedText:a=!1,showCursor:n=!0,onChange:u,onSubmit:A})=>{let[{cursorOffset:p,cursorWidth:h},E]=Qj.useState({cursorOffset:(t||\"\").length,cursorWidth:0});Qj.useEffect(()=>{E(R=>{if(!r||!n)return R;let N=t||\"\";return R.cursorOffset>N.length-1?{cursorOffset:N.length,cursorWidth:0}:R})},[t,r,n]);let I=a?h:0,v=o?o.repeat(t.length):t,x=v,C=e?pm.grey(e):void 0;if(n&&r){C=e.length>0?pm.inverse(e[0])+pm.grey(e.slice(1)):pm.inverse(\" \"),x=v.length>0?\"\":pm.inverse(\" \");let R=0;for(let N of v)R>=p-I&&R<=p?x+=pm.inverse(N):x+=N,R++;v.length>0&&p===v.length&&(x+=pm.inverse(\" \"))}return eIe.useInput((R,N)=>{if(N.upArrow||N.downArrow||N.ctrl&&R===\"c\"||N.tab||N.shift&&N.tab)return;if(N.return){A&&A(t);return}let U=p,J=t,te=0;N.leftArrow?n&&U--:N.rightArrow?n&&U++:N.backspace||N.delete?p>0&&(J=t.slice(0,p-1)+t.slice(p,t.length),U--):(J=t.slice(0,p)+R+t.slice(p,t.length),U+=R.length,R.length>1&&(te=R.length)),p<0&&(U=0),p>t.length&&(U=t.length),E({cursorOffset:U,cursorWidth:te}),J!==t&&u(J)},{isActive:r}),tIe.createElement(eIe.Text,null,e?v.length>0?x:C:x)};HB.default=rIe;HB.UncontrolledTextInput=t=>{let[e,r]=Qj.useState(\"\");return tIe.createElement(rIe,Object.assign({},t,{value:e,onChange:r}))}});var oIe={};Vt(oIe,{Pad:()=>Fj});var iIe,sIe,Fj,Rj=Et(()=>{iIe=$e(ic()),sIe=$e(on()),Fj=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${\"-\".repeat(t-1)}`:\" \";return sIe.default.createElement(iIe.Text,{dimColor:!e},r)}});var aIe={};Vt(aIe,{ItemOptions:()=>rIt});var qB,I0,rIt,lIe=Et(()=>{qB=$e(ic()),I0=$e(on());AQ();cQ();Rj();rIt=function({active:t,skewer:e,options:r,value:o,onChange:a,sizes:n=[]}){let u=r.filter(({label:p})=>!!p).map(({value:p})=>p),A=r.findIndex(p=>p.value===o&&p.label!=\"\");return _B(o,u,{active:t,minus:\"left\",plus:\"right\",set:a}),I0.default.createElement(I0.default.Fragment,null,r.map(({label:p},h)=>{let E=h===A,I=n[h]-1||0,v=p.replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,\"\"),x=Math.max(0,I-v.length-2);return p?I0.default.createElement(qB.Box,{key:p,width:I,marginLeft:1},I0.default.createElement(qB.Text,{wrap:\"truncate\"},I0.default.createElement(Ij,{active:E}),\" \",p),e?I0.default.createElement(Fj,{active:t,length:x}):null):I0.default.createElement(qB.Box,{key:`spacer-${h}`,width:I,marginLeft:1})}))}});var vIe=_((XJt,BIe)=>{var jj;BIe.exports=()=>(typeof jj>\"u\"&&(jj=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),jj)});var YIe=_((Izt,GIe)=>{var Xj=Symbol(\"arg flag\"),Oa=class extends Error{constructor(e,r){super(e),this.name=\"ArgError\",this.code=r,Object.setPrototypeOf(this,Oa.prototype)}};function sv(t,{argv:e=process.argv.slice(2),permissive:r=!1,stopAtPositional:o=!1}={}){if(!t)throw new Oa(\"argument specification object is required\",\"ARG_CONFIG_NO_SPEC\");let a={_:[]},n={},u={};for(let A of Object.keys(t)){if(!A)throw new Oa(\"argument key cannot be an empty string\",\"ARG_CONFIG_EMPTY_KEY\");if(A[0]!==\"-\")throw new Oa(`argument key must start with '-' but found: '${A}'`,\"ARG_CONFIG_NONOPT_KEY\");if(A.length===1)throw new Oa(`argument key must have a name; singular '-' keys are not allowed: ${A}`,\"ARG_CONFIG_NONAME_KEY\");if(typeof t[A]==\"string\"){n[A]=t[A];continue}let p=t[A],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]==\"function\"){let[E]=p;p=(I,v,x=[])=>(x.push(E(I,v,x[x.length-1])),x),h=E===Boolean||E[Xj]===!0}else if(typeof p==\"function\")h=p===Boolean||p[Xj]===!0;else throw new Oa(`type missing or not a function or valid array type: ${A}`,\"ARG_CONFIG_VAD_TYPE\");if(A[1]!==\"-\"&&A.length>2)throw new Oa(`short argument keys (with a single hyphen) must have only one character: ${A}`,\"ARG_CONFIG_SHORTOPT_TOOLONG\");u[A]=[p,h]}for(let A=0,p=e.length;A<p;A++){let h=e[A];if(o&&a._.length>0){a._=a._.concat(e.slice(A));break}if(h===\"--\"){a._=a._.concat(e.slice(A+1));break}if(h.length>1&&h[0]===\"-\"){let E=h[1]===\"-\"||h.length===2?[h]:h.slice(1).split(\"\").map(I=>`-${I}`);for(let I=0;I<E.length;I++){let v=E[I],[x,C]=v[1]===\"-\"?v.split(/=(.*)/,2):[v,void 0],R=x;for(;R in n;)R=n[R];if(!(R in u))if(r){a._.push(v);continue}else throw new Oa(`unknown or unexpected option: ${x}`,\"ARG_UNKNOWN_OPTION\");let[N,U]=u[R];if(!U&&I+1<E.length)throw new Oa(`option requires argument (but was followed by another short argument): ${x}`,\"ARG_MISSING_REQUIRED_SHORTARG\");if(U)a[R]=N(!0,R,a[R]);else if(C===void 0){if(e.length<A+2||e[A+1].length>1&&e[A+1][0]===\"-\"&&!(e[A+1].match(/^-?\\d*(\\.(?=\\d))?\\d*$/)&&(N===Number||typeof BigInt<\"u\"&&N===BigInt))){let J=x===R?\"\":` (alias for ${R})`;throw new Oa(`option requires argument: ${x}${J}`,\"ARG_MISSING_REQUIRED_LONGARG\")}a[R]=N(e[A+1],R,a[R]),++A}else a[R]=N(C,R,a[R])}}else a._.push(h)}return a}sv.flag=t=>(t[Xj]=!0,t);sv.COUNT=sv.flag((t,e,r)=>(r||0)+1);sv.ArgError=Oa;GIe.exports=sv});var $Ie=_((zzt,ZIe)=>{var tq;ZIe.exports=()=>(typeof tq>\"u\"&&(tq=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),tq)});var i1e=_((aq,lq)=>{(function(t){aq&&typeof aq==\"object\"&&typeof lq<\"u\"?lq.exports=t():typeof define==\"function\"&&define.amd?define([],t):typeof window<\"u\"?window.isWindows=t():typeof global<\"u\"?global.isWindows=t():typeof self<\"u\"?self.isWindows=t():this.isWindows=t()})(function(){\"use strict\";return function(){return process&&(process.platform===\"win32\"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var l1e=_((VXt,a1e)=>{\"use strict\";cq.ifExists=$It;var YC=ve(\"util\"),sc=ve(\"path\"),s1e=i1e(),zIt=/^#!\\s*(?:\\/usr\\/bin\\/env)?\\s*([^ \\t]+)(.*)$/,XIt={createPwshFile:!0,createCmdFile:s1e(),fs:ve(\"fs\")},ZIt=new Map([[\".js\",\"node\"],[\".cjs\",\"node\"],[\".mjs\",\"node\"],[\".cmd\",\"cmd\"],[\".bat\",\"cmd\"],[\".ps1\",\"pwsh\"],[\".sh\",\"sh\"]]);function o1e(t){let e={...XIt,...t},r=e.fs;return e.fs_={chmod:r.chmod?YC.promisify(r.chmod):async()=>{},mkdir:YC.promisify(r.mkdir),readFile:YC.promisify(r.readFile),stat:YC.promisify(r.stat),unlink:YC.promisify(r.unlink),writeFile:YC.promisify(r.writeFile)},e}async function cq(t,e,r){let o=o1e(r);await o.fs_.stat(t),await t1t(t,e,o)}function $It(t,e,r){return cq(t,e,r).catch(()=>{})}function e1t(t,e){return e.fs_.unlink(t).catch(()=>{})}async function t1t(t,e,r){let o=await o1t(t,r);return await r1t(e,r),n1t(t,e,o,r)}function r1t(t,e){return e.fs_.mkdir(sc.dirname(t),{recursive:!0})}function n1t(t,e,r,o){let a=o1e(o),n=[{generator:c1t,extension:\"\"}];return a.createCmdFile&&n.push({generator:l1t,extension:\".cmd\"}),a.createPwshFile&&n.push({generator:u1t,extension:\".ps1\"}),Promise.all(n.map(u=>a1t(t,e+u.extension,r,u.generator,a)))}function i1t(t,e){return e1t(t,e)}function s1t(t,e){return A1t(t,e)}async function o1t(t,e){let a=(await e.fs_.readFile(t,\"utf8\")).trim().split(/\\r*\\n/)[0].match(zIt);if(!a){let n=sc.extname(t).toLowerCase();return{program:ZIt.get(n)||null,additionalArgs:\"\"}}return{program:a[1],additionalArgs:a[2]}}async function a1t(t,e,r,o,a){let n=a.preserveSymlinks?\"--preserve-symlinks\":\"\",u=[r.additionalArgs,n].filter(A=>A).join(\" \");return a=Object.assign({},a,{prog:r.program,args:u}),await i1t(e,a),await a.fs_.writeFile(e,o(t,e,a),\"utf8\"),s1t(e,a)}function l1t(t,e,r){let a=sc.relative(sc.dirname(e),t).split(\"/\").join(\"\\\\\"),n=sc.isAbsolute(a)?`\"${a}\"`:`\"%~dp0\\\\${a}\"`,u,A=r.prog,p=r.args||\"\",h=uq(r.nodePath).win32;A?(u=`\"%~dp0\\\\${A}.exe\"`,a=n):(A=n,p=\"\",a=\"\");let E=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",I=h?`@SET NODE_PATH=${h}\\r\n`:\"\";return u?I+=`@IF EXIST ${u} (\\r\n  ${u} ${p} ${a} ${E}%*\\r\n) ELSE (\\r\n  @SETLOCAL\\r\n  @SET PATHEXT=%PATHEXT:;.JS;=;%\\r\n  ${A} ${p} ${a} ${E}%*\\r\n)\\r\n`:I+=`@${A} ${p} ${a} ${E}%*\\r\n`,I}function c1t(t,e,r){let o=sc.relative(sc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n;o=o.split(\"\\\\\").join(\"/\");let u=sc.isAbsolute(o)?`\"${o}\"`:`\"$basedir/${o}\"`,A=r.args||\"\",p=uq(r.nodePath).posix;a?(n=`\"$basedir/${r.prog}\"`,o=u):(a=u,A=\"\",o=\"\");let h=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",E=`#!/bin/sh\nbasedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\\\\\,/,g')\")\n\ncase \\`uname\\` in\n    *CYGWIN*) basedir=\\`cygpath -w \"$basedir\"\\`;;\nesac\n\n`,I=r.nodePath?`export NODE_PATH=\"${p}\"\n`:\"\";return n?E+=`${I}if [ -x ${n} ]; then\n  exec ${n} ${A} ${o} ${h}\"$@\"\nelse\n  exec ${a} ${A} ${o} ${h}\"$@\"\nfi\n`:E+=`${I}${a} ${A} ${o} ${h}\"$@\"\nexit $?\n`,E}function u1t(t,e,r){let o=sc.relative(sc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n=a&&`\"${a}$exe\"`,u;o=o.split(\"\\\\\").join(\"/\");let A=sc.isAbsolute(o)?`\"${o}\"`:`\"$basedir/${o}\"`,p=r.args||\"\",h=uq(r.nodePath),E=h.win32,I=h.posix;n?(u=`\"$basedir/${r.prog}$exe\"`,o=A):(n=A,p=\"\",o=\"\");let v=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",x=`#!/usr/bin/env pwsh\n$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n\n$exe=\"\"\n${r.nodePath?`$env_node_path=$env:NODE_PATH\n$env:NODE_PATH=\"${E}\"\n`:\"\"}if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n  # Fix case when both the Windows and Linux builds of Node\n  # are installed in the same directory\n  $exe=\".exe\"\n}`;return r.nodePath&&(x+=` else {\n  $env:NODE_PATH=\"${I}\"\n}`),u?x+=`\n$ret=0\nif (Test-Path ${u}) {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${u} ${p} ${o} ${v}$args\n  } else {\n    & ${u} ${p} ${o} ${v}$args\n  }\n  $ret=$LASTEXITCODE\n} else {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${n} ${p} ${o} ${v}$args\n  } else {\n    & ${n} ${p} ${o} ${v}$args\n  }\n  $ret=$LASTEXITCODE\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $ret\n`:x+=`\n# Support pipeline input\nif ($MyInvocation.ExpectingInput) {\n  $input | & ${n} ${p} ${o} ${v}$args\n} else {\n  & ${n} ${p} ${o} ${v}$args\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $LASTEXITCODE\n`,x}function A1t(t,e){return e.fs_.chmod(t,493)}function uq(t){if(!t)return{win32:\"\",posix:\"\"};let e=typeof t==\"string\"?t.split(sc.delimiter):Array.from(t),r={};for(let o=0;o<e.length;o++){let a=e[o].split(\"/\").join(\"\\\\\"),n=s1e()?e[o].split(\"\\\\\").join(\"/\").replace(/^([^:\\\\/]*):/,(u,A)=>`/mnt/${A.toLowerCase()}`):e[o];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[o]={win32:a,posix:n}}return r}a1e.exports=cq});var vq=_((g$t,x1e)=>{x1e.exports=ve(\"stream\")});var R1e=_((d$t,F1e)=>{\"use strict\";function k1e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function M1t(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?k1e(Object(r),!0).forEach(function(o){U1t(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):k1e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function U1t(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _1t(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function Q1e(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function H1t(t,e,r){return e&&Q1e(t.prototype,e),r&&Q1e(t,r),t}var j1t=ve(\"buffer\"),xQ=j1t.Buffer,q1t=ve(\"util\"),Dq=q1t.inspect,G1t=Dq&&Dq.custom||\"inspect\";function Y1t(t,e,r){xQ.prototype.copy.call(t,e,r)}F1e.exports=function(){function t(){_1t(this,t),this.head=null,this.tail=null,this.length=0}return H1t(t,[{key:\"push\",value:function(r){var o={data:r,next:null};this.length>0?this.tail.next=o:this.head=o,this.tail=o,++this.length}},{key:\"unshift\",value:function(r){var o={data:r,next:this.head};this.length===0&&(this.tail=o),this.head=o,++this.length}},{key:\"shift\",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(r){if(this.length===0)return\"\";for(var o=this.head,a=\"\"+o.data;o=o.next;)a+=r+o.data;return a}},{key:\"concat\",value:function(r){if(this.length===0)return xQ.alloc(0);for(var o=xQ.allocUnsafe(r>>>0),a=this.head,n=0;a;)Y1t(a.data,o,n),n+=a.data.length,a=a.next;return o}},{key:\"consume\",value:function(r,o){var a;return r<this.head.data.length?(a=this.head.data.slice(0,r),this.head.data=this.head.data.slice(r)):r===this.head.data.length?a=this.shift():a=o?this._getString(r):this._getBuffer(r),a}},{key:\"first\",value:function(){return this.head.data}},{key:\"_getString\",value:function(r){var o=this.head,a=1,n=o.data;for(r-=n.length;o=o.next;){var u=o.data,A=r>u.length?u.length:r;if(A===u.length?n+=u:n+=u.slice(0,r),r-=A,r===0){A===u.length?(++a,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=u.slice(A));break}++a}return this.length-=a,n}},{key:\"_getBuffer\",value:function(r){var o=xQ.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(o),r-=a.data.length;a=a.next;){var u=a.data,A=r>u.length?u.length:r;if(u.copy(o,o.length-r,0,A),r-=A,r===0){A===u.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=u.slice(A));break}++n}return this.length-=n,o}},{key:G1t,value:function(r,o){return Dq(this,M1t({},o,{depth:0,customInspect:!1}))}}]),t}()});var Sq=_((m$t,L1e)=>{\"use strict\";function W1t(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(Pq,this,t)):process.nextTick(Pq,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(n){!e&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(kQ,r):(r._writableState.errorEmitted=!0,process.nextTick(T1e,r,n)):process.nextTick(T1e,r,n):e?(process.nextTick(kQ,r),e(n)):process.nextTick(kQ,r)}),this)}function T1e(t,e){Pq(t,e),kQ(t)}function kQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit(\"close\")}function K1t(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Pq(t,e){t.emit(\"error\",e)}function V1t(t,e){var r=t._readableState,o=t._writableState;r&&r.autoDestroy||o&&o.autoDestroy?t.destroy(e):t.emit(\"error\",e)}L1e.exports={destroy:W1t,undestroy:K1t,errorOrDestroy:V1t}});var Q0=_((y$t,M1e)=>{\"use strict\";var O1e={};function ac(t,e,r){r||(r=Error);function o(n,u,A){return typeof e==\"string\"?e:e(n,u,A)}class a extends r{constructor(u,A,p){super(o(u,A,p))}}a.prototype.name=r.name,a.prototype.code=t,O1e[t]=a}function N1e(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(o=>String(o)),r>2?`one of ${e} ${t.slice(0,r-1).join(\", \")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function J1t(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function z1t(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function X1t(t,e,r){return typeof r!=\"number\"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}ac(\"ERR_INVALID_OPT_VALUE\",function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'},TypeError);ac(\"ERR_INVALID_ARG_TYPE\",function(t,e,r){let o;typeof e==\"string\"&&J1t(e,\"not \")?(o=\"must not be\",e=e.replace(/^not /,\"\")):o=\"must be\";let a;if(z1t(t,\" argument\"))a=`The ${t} ${o} ${N1e(e,\"type\")}`;else{let n=X1t(t,\".\")?\"property\":\"argument\";a=`The \"${t}\" ${n} ${o} ${N1e(e,\"type\")}`}return a+=`. Received type ${typeof r}`,a},TypeError);ac(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\");ac(\"ERR_METHOD_NOT_IMPLEMENTED\",function(t){return\"The \"+t+\" method is not implemented\"});ac(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\");ac(\"ERR_STREAM_DESTROYED\",function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"});ac(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\");ac(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\");ac(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\");ac(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError);ac(\"ERR_UNKNOWN_ENCODING\",function(t){return\"Unknown encoding: \"+t},TypeError);ac(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\");M1e.exports.codes=O1e});var bq=_((E$t,U1e)=>{\"use strict\";var Z1t=Q0().codes.ERR_INVALID_OPT_VALUE;function $1t(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function e2t(t,e,r,o){var a=$1t(e,o,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=o?r:\"highWaterMark\";throw new Z1t(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}U1e.exports={getHighWaterMark:e2t}});var _1e=_((C$t,xq)=>{typeof Object.create==\"function\"?xq.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:xq.exports=function(e,r){if(r){e.super_=r;var o=function(){};o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e}}});var F0=_((w$t,Qq)=>{try{if(kq=ve(\"util\"),typeof kq.inherits!=\"function\")throw\"\";Qq.exports=kq.inherits}catch{Qq.exports=_1e()}var kq});var j1e=_((I$t,H1e)=>{H1e.exports=ve(\"util\").deprecate});var Tq=_((B$t,V1e)=>{\"use strict\";V1e.exports=Ri;function G1e(t){var e=this;this.next=null,this.entry=null,this.finish=function(){S2t(e,t)}}var zC;Ri.WritableState=mv;var t2t={deprecate:j1e()},Y1e=vq(),FQ=ve(\"buffer\").Buffer,r2t=global.Uint8Array||function(){};function n2t(t){return FQ.from(t)}function i2t(t){return FQ.isBuffer(t)||t instanceof r2t}var Rq=Sq(),s2t=bq(),o2t=s2t.getHighWaterMark,R0=Q0().codes,a2t=R0.ERR_INVALID_ARG_TYPE,l2t=R0.ERR_METHOD_NOT_IMPLEMENTED,c2t=R0.ERR_MULTIPLE_CALLBACK,u2t=R0.ERR_STREAM_CANNOT_PIPE,A2t=R0.ERR_STREAM_DESTROYED,f2t=R0.ERR_STREAM_NULL_VALUES,p2t=R0.ERR_STREAM_WRITE_AFTER_END,h2t=R0.ERR_UNKNOWN_ENCODING,XC=Rq.errorOrDestroy;F0()(Ri,Y1e);function g2t(){}function mv(t,e,r){zC=zC||Cm(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof zC),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=o2t(this,t,\"writableHighWaterMark\",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=t.decodeStrings===!1;this.decodeStrings=!o,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){I2t(e,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new G1e(this)}mv.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(mv.prototype,\"buffer\",{get:t2t.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch{}})();var QQ;typeof Symbol==\"function\"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==\"function\"?(QQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Ri,Symbol.hasInstance,{value:function(e){return QQ.call(this,e)?!0:this!==Ri?!1:e&&e._writableState instanceof mv}})):QQ=function(e){return e instanceof this};function Ri(t){zC=zC||Cm();var e=this instanceof zC;if(!e&&!QQ.call(Ri,this))return new Ri(t);this._writableState=new mv(t,this,e),this.writable=!0,t&&(typeof t.write==\"function\"&&(this._write=t.write),typeof t.writev==\"function\"&&(this._writev=t.writev),typeof t.destroy==\"function\"&&(this._destroy=t.destroy),typeof t.final==\"function\"&&(this._final=t.final)),Y1e.call(this)}Ri.prototype.pipe=function(){XC(this,new u2t)};function d2t(t,e){var r=new p2t;XC(t,r),process.nextTick(e,r)}function m2t(t,e,r,o){var a;return r===null?a=new f2t:typeof r!=\"string\"&&!e.objectMode&&(a=new a2t(\"chunk\",[\"string\",\"Buffer\"],r)),a?(XC(t,a),process.nextTick(o,a),!1):!0}Ri.prototype.write=function(t,e,r){var o=this._writableState,a=!1,n=!o.objectMode&&i2t(t);return n&&!FQ.isBuffer(t)&&(t=n2t(t)),typeof e==\"function\"&&(r=e,e=null),n?e=\"buffer\":e||(e=o.defaultEncoding),typeof r!=\"function\"&&(r=g2t),o.ending?d2t(this,r):(n||m2t(this,o,t,r))&&(o.pendingcb++,a=E2t(this,o,n,t,e,r)),a};Ri.prototype.cork=function(){this._writableState.corked++};Ri.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&W1e(this,t))};Ri.prototype.setDefaultEncoding=function(e){if(typeof e==\"string\"&&(e=e.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((e+\"\").toLowerCase())>-1))throw new h2t(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Ri.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function y2t(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e==\"string\"&&(e=FQ.from(e,r)),e}Object.defineProperty(Ri.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function E2t(t,e,r,o,a,n){if(!r){var u=y2t(e,o,a);o!==u&&(r=!0,a=\"buffer\",o=u)}var A=e.objectMode?1:o.length;e.length+=A;var p=e.length<e.highWaterMark;if(p||(e.needDrain=!0),e.writing||e.corked){var h=e.lastBufferedRequest;e.lastBufferedRequest={chunk:o,encoding:a,isBuf:r,callback:n,next:null},h?h.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else Fq(t,e,!1,A,o,a,n);return p}function Fq(t,e,r,o,a,n,u){e.writelen=o,e.writecb=u,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new A2t(\"write\")):r?t._writev(a,e.onwrite):t._write(a,n,e.onwrite),e.sync=!1}function C2t(t,e,r,o,a){--e.pendingcb,r?(process.nextTick(a,o),process.nextTick(dv,t,e),t._writableState.errorEmitted=!0,XC(t,o)):(a(o),t._writableState.errorEmitted=!0,XC(t,o),dv(t,e))}function w2t(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function I2t(t,e){var r=t._writableState,o=r.sync,a=r.writecb;if(typeof a!=\"function\")throw new c2t;if(w2t(r),e)C2t(t,r,o,e,a);else{var n=K1e(r)||t.destroyed;!n&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&W1e(t,r),o?process.nextTick(q1e,t,r,n,a):q1e(t,r,n,a)}}function q1e(t,e,r,o){r||B2t(t,e),e.pendingcb--,o(),dv(t,e)}function B2t(t,e){e.length===0&&e.needDrain&&(e.needDrain=!1,t.emit(\"drain\"))}function W1e(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var o=e.bufferedRequestCount,a=new Array(o),n=e.corkedRequestsFree;n.entry=r;for(var u=0,A=!0;r;)a[u]=r,r.isBuf||(A=!1),r=r.next,u+=1;a.allBuffers=A,Fq(t,e,!0,e.length,a,\"\",n.finish),e.pendingcb++,e.lastBufferedRequest=null,n.next?(e.corkedRequestsFree=n.next,n.next=null):e.corkedRequestsFree=new G1e(e),e.bufferedRequestCount=0}else{for(;r;){var p=r.chunk,h=r.encoding,E=r.callback,I=e.objectMode?1:p.length;if(Fq(t,e,!1,I,p,h,E),r=r.next,e.bufferedRequestCount--,e.writing)break}r===null&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}Ri.prototype._write=function(t,e,r){r(new l2t(\"_write()\"))};Ri.prototype._writev=null;Ri.prototype.end=function(t,e,r){var o=this._writableState;return typeof t==\"function\"?(r=t,t=null,e=null):typeof e==\"function\"&&(r=e,e=null),t!=null&&this.write(t,e),o.corked&&(o.corked=1,this.uncork()),o.ending||P2t(this,o,r),this};Object.defineProperty(Ri.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function K1e(t){return t.ending&&t.length===0&&t.bufferedRequest===null&&!t.finished&&!t.writing}function v2t(t,e){t._final(function(r){e.pendingcb--,r&&XC(t,r),e.prefinished=!0,t.emit(\"prefinish\"),dv(t,e)})}function D2t(t,e){!e.prefinished&&!e.finalCalled&&(typeof t._final==\"function\"&&!e.destroyed?(e.pendingcb++,e.finalCalled=!0,process.nextTick(v2t,t,e)):(e.prefinished=!0,t.emit(\"prefinish\")))}function dv(t,e){var r=K1e(e);if(r&&(D2t(t,e),e.pendingcb===0&&(e.finished=!0,t.emit(\"finish\"),e.autoDestroy))){var o=t._readableState;(!o||o.autoDestroy&&o.endEmitted)&&t.destroy()}return r}function P2t(t,e,r){e.ending=!0,dv(t,e),r&&(e.finished?process.nextTick(r):t.once(\"finish\",r)),e.ended=!0,t.writable=!1}function S2t(t,e,r){var o=t.entry;for(t.entry=null;o;){var a=o.callback;e.pendingcb--,a(r),o=o.next}e.corkedRequestsFree.next=t}Object.defineProperty(Ri.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(e){!this._writableState||(this._writableState.destroyed=e)}});Ri.prototype.destroy=Rq.destroy;Ri.prototype._undestroy=Rq.undestroy;Ri.prototype._destroy=function(t,e){e(t)}});var Cm=_((v$t,z1e)=>{\"use strict\";var b2t=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};z1e.exports=EA;var J1e=Oq(),Nq=Tq();F0()(EA,J1e);for(Lq=b2t(Nq.prototype),RQ=0;RQ<Lq.length;RQ++)TQ=Lq[RQ],EA.prototype[TQ]||(EA.prototype[TQ]=Nq.prototype[TQ]);var Lq,TQ,RQ;function EA(t){if(!(this instanceof EA))return new EA(t);J1e.call(this,t),Nq.call(this,t),this.allowHalfOpen=!0,t&&(t.readable===!1&&(this.readable=!1),t.writable===!1&&(this.writable=!1),t.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once(\"end\",x2t)))}Object.defineProperty(EA.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});Object.defineProperty(EA.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(EA.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function x2t(){this._writableState.ended||process.nextTick(k2t,this)}function k2t(t){t.end()}Object.defineProperty(EA.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(e){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=e,this._writableState.destroyed=e)}})});var $1e=_((Mq,Z1e)=>{var LQ=ve(\"buffer\"),ip=LQ.Buffer;function X1e(t,e){for(var r in t)e[r]=t[r]}ip.from&&ip.alloc&&ip.allocUnsafe&&ip.allocUnsafeSlow?Z1e.exports=LQ:(X1e(LQ,Mq),Mq.Buffer=ZC);function ZC(t,e,r){return ip(t,e,r)}X1e(ip,ZC);ZC.from=function(t,e,r){if(typeof t==\"number\")throw new TypeError(\"Argument must not be a number\");return ip(t,e,r)};ZC.alloc=function(t,e,r){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");var o=ip(t);return e!==void 0?typeof r==\"string\"?o.fill(e,r):o.fill(e):o.fill(0),o};ZC.allocUnsafe=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return ip(t)};ZC.allocUnsafeSlow=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return LQ.SlowBuffer(t)}});var Hq=_(t2e=>{\"use strict\";var _q=$1e().Buffer,e2e=_q.isEncoding||function(t){switch(t=\"\"+t,t&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function Q2t(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}function F2t(t){var e=Q2t(t);if(typeof e!=\"string\"&&(_q.isEncoding===e2e||!e2e(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}t2e.StringDecoder=yv;function yv(t){this.encoding=F2t(t);var e;switch(this.encoding){case\"utf16le\":this.text=M2t,this.end=U2t,e=4;break;case\"utf8\":this.fillLast=L2t,e=4;break;case\"base64\":this.text=_2t,this.end=H2t,e=3;break;default:this.write=j2t,this.end=q2t;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=_q.allocUnsafe(e)}yv.prototype.write=function(t){if(t.length===0)return\"\";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||\"\"};yv.prototype.end=O2t;yv.prototype.text=N2t;yv.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length};function Uq(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function R2t(t,e,r){var o=e.length-1;if(o<r)return 0;var a=Uq(e[o]);return a>=0?(a>0&&(t.lastNeed=a-1),a):--o<r||a===-2?0:(a=Uq(e[o]),a>=0?(a>0&&(t.lastNeed=a-2),a):--o<r||a===-2?0:(a=Uq(e[o]),a>=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function T2t(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,\"\\uFFFD\";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,\"\\uFFFD\";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,\"\\uFFFD\"}}function L2t(t){var e=this.lastTotal-this.lastNeed,r=T2t(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function N2t(t,e){var r=R2t(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var o=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,o),t.toString(\"utf8\",e,o)}function O2t(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+\"\\uFFFD\":e}function M2t(t,e){if((t.length-e)%2===0){var r=t.toString(\"utf16le\",e);if(r){var o=r.charCodeAt(r.length-1);if(o>=55296&&o<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function U2t(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function _2t(t,e){var r=(t.length-e)%3;return r===0?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function H2t(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function j2t(t){return t.toString(this.encoding)}function q2t(t){return t&&t.length?this.write(t):\"\"}});var NQ=_((P$t,i2e)=>{\"use strict\";var r2e=Q0().codes.ERR_STREAM_PREMATURE_CLOSE;function G2t(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];t.apply(this,o)}}}function Y2t(){}function W2t(t){return t.setHeader&&typeof t.abort==\"function\"}function n2e(t,e,r){if(typeof e==\"function\")return n2e(t,null,e);e||(e={}),r=G2t(r||Y2t);var o=e.readable||e.readable!==!1&&t.readable,a=e.writable||e.writable!==!1&&t.writable,n=function(){t.writable||A()},u=t._writableState&&t._writableState.finished,A=function(){a=!1,u=!0,o||r.call(t)},p=t._readableState&&t._readableState.endEmitted,h=function(){o=!1,p=!0,a||r.call(t)},E=function(C){r.call(t,C)},I=function(){var C;if(o&&!p)return(!t._readableState||!t._readableState.ended)&&(C=new r2e),r.call(t,C);if(a&&!u)return(!t._writableState||!t._writableState.ended)&&(C=new r2e),r.call(t,C)},v=function(){t.req.on(\"finish\",A)};return W2t(t)?(t.on(\"complete\",A),t.on(\"abort\",I),t.req?v():t.on(\"request\",v)):a&&!t._writableState&&(t.on(\"end\",n),t.on(\"close\",n)),t.on(\"end\",h),t.on(\"finish\",A),e.error!==!1&&t.on(\"error\",E),t.on(\"close\",I),function(){t.removeListener(\"complete\",A),t.removeListener(\"abort\",I),t.removeListener(\"request\",v),t.req&&t.req.removeListener(\"finish\",A),t.removeListener(\"end\",n),t.removeListener(\"close\",n),t.removeListener(\"finish\",A),t.removeListener(\"end\",h),t.removeListener(\"error\",E),t.removeListener(\"close\",I)}}i2e.exports=n2e});var o2e=_((S$t,s2e)=>{\"use strict\";var OQ;function T0(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var K2t=NQ(),L0=Symbol(\"lastResolve\"),wm=Symbol(\"lastReject\"),Ev=Symbol(\"error\"),MQ=Symbol(\"ended\"),Im=Symbol(\"lastPromise\"),jq=Symbol(\"handlePromise\"),Bm=Symbol(\"stream\");function N0(t,e){return{value:t,done:e}}function V2t(t){var e=t[L0];if(e!==null){var r=t[Bm].read();r!==null&&(t[Im]=null,t[L0]=null,t[wm]=null,e(N0(r,!1)))}}function J2t(t){process.nextTick(V2t,t)}function z2t(t,e){return function(r,o){t.then(function(){if(e[MQ]){r(N0(void 0,!0));return}e[jq](r,o)},o)}}var X2t=Object.getPrototypeOf(function(){}),Z2t=Object.setPrototypeOf((OQ={get stream(){return this[Bm]},next:function(){var e=this,r=this[Ev];if(r!==null)return Promise.reject(r);if(this[MQ])return Promise.resolve(N0(void 0,!0));if(this[Bm].destroyed)return new Promise(function(u,A){process.nextTick(function(){e[Ev]?A(e[Ev]):u(N0(void 0,!0))})});var o=this[Im],a;if(o)a=new Promise(z2t(o,this));else{var n=this[Bm].read();if(n!==null)return Promise.resolve(N0(n,!1));a=new Promise(this[jq])}return this[Im]=a,a}},T0(OQ,Symbol.asyncIterator,function(){return this}),T0(OQ,\"return\",function(){var e=this;return new Promise(function(r,o){e[Bm].destroy(null,function(a){if(a){o(a);return}r(N0(void 0,!0))})})}),OQ),X2t),$2t=function(e){var r,o=Object.create(Z2t,(r={},T0(r,Bm,{value:e,writable:!0}),T0(r,L0,{value:null,writable:!0}),T0(r,wm,{value:null,writable:!0}),T0(r,Ev,{value:null,writable:!0}),T0(r,MQ,{value:e._readableState.endEmitted,writable:!0}),T0(r,jq,{value:function(n,u){var A=o[Bm].read();A?(o[Im]=null,o[L0]=null,o[wm]=null,n(N0(A,!1))):(o[L0]=n,o[wm]=u)},writable:!0}),r));return o[Im]=null,K2t(e,function(a){if(a&&a.code!==\"ERR_STREAM_PREMATURE_CLOSE\"){var n=o[wm];n!==null&&(o[Im]=null,o[L0]=null,o[wm]=null,n(a)),o[Ev]=a;return}var u=o[L0];u!==null&&(o[Im]=null,o[L0]=null,o[wm]=null,u(N0(void 0,!0))),o[MQ]=!0}),e.on(\"readable\",J2t.bind(null,o)),o};s2e.exports=$2t});var u2e=_((b$t,c2e)=>{\"use strict\";function a2e(t,e,r,o,a,n,u){try{var A=t[n](u),p=A.value}catch(h){r(h);return}A.done?e(p):Promise.resolve(p).then(o,a)}function eBt(t){return function(){var e=this,r=arguments;return new Promise(function(o,a){var n=t.apply(e,r);function u(p){a2e(n,o,a,u,A,\"next\",p)}function A(p){a2e(n,o,a,u,A,\"throw\",p)}u(void 0)})}}function l2e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function tBt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?l2e(Object(r),!0).forEach(function(o){rBt(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):l2e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function rBt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var nBt=Q0().codes.ERR_INVALID_ARG_TYPE;function iBt(t,e,r){var o;if(e&&typeof e.next==\"function\")o=e;else if(e&&e[Symbol.asyncIterator])o=e[Symbol.asyncIterator]();else if(e&&e[Symbol.iterator])o=e[Symbol.iterator]();else throw new nBt(\"iterable\",[\"Iterable\"],e);var a=new t(tBt({objectMode:!0},r)),n=!1;a._read=function(){n||(n=!0,u())};function u(){return A.apply(this,arguments)}function A(){return A=eBt(function*(){try{var p=yield o.next(),h=p.value,E=p.done;E?a.push(null):a.push(yield h)?u():n=!1}catch(I){a.destroy(I)}}),A.apply(this,arguments)}return a}c2e.exports=iBt});var Oq=_((k$t,C2e)=>{\"use strict\";C2e.exports=mn;var $C;mn.ReadableState=h2e;var x$t=ve(\"events\").EventEmitter,p2e=function(e,r){return e.listeners(r).length},wv=vq(),UQ=ve(\"buffer\").Buffer,sBt=global.Uint8Array||function(){};function oBt(t){return UQ.from(t)}function aBt(t){return UQ.isBuffer(t)||t instanceof sBt}var qq=ve(\"util\"),en;qq&&qq.debuglog?en=qq.debuglog(\"stream\"):en=function(){};var lBt=R1e(),zq=Sq(),cBt=bq(),uBt=cBt.getHighWaterMark,_Q=Q0().codes,ABt=_Q.ERR_INVALID_ARG_TYPE,fBt=_Q.ERR_STREAM_PUSH_AFTER_EOF,pBt=_Q.ERR_METHOD_NOT_IMPLEMENTED,hBt=_Q.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,ew,Gq,Yq;F0()(mn,wv);var Cv=zq.errorOrDestroy,Wq=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function gBt(t,e,r){if(typeof t.prependListener==\"function\")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function h2e(t,e,r){$C=$C||Cm(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof $C),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=uBt(this,t,\"readableHighWaterMark\",r),this.buffer=new lBt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(ew||(ew=Hq().StringDecoder),this.decoder=new ew(t.encoding),this.encoding=t.encoding)}function mn(t){if($C=$C||Cm(),!(this instanceof mn))return new mn(t);var e=this instanceof $C;this._readableState=new h2e(t,this,e),this.readable=!0,t&&(typeof t.read==\"function\"&&(this._read=t.read),typeof t.destroy==\"function\"&&(this._destroy=t.destroy)),wv.call(this)}Object.defineProperty(mn.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});mn.prototype.destroy=zq.destroy;mn.prototype._undestroy=zq.undestroy;mn.prototype._destroy=function(t,e){e(t)};mn.prototype.push=function(t,e){var r=this._readableState,o;return r.objectMode?o=!0:typeof t==\"string\"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=UQ.from(t,e),e=\"\"),o=!0),g2e(this,t,e,!1,o)};mn.prototype.unshift=function(t){return g2e(this,t,null,!0,!1)};function g2e(t,e,r,o,a){en(\"readableAddChunk\",e);var n=t._readableState;if(e===null)n.reading=!1,yBt(t,n);else{var u;if(a||(u=dBt(n,e)),u)Cv(t,u);else if(n.objectMode||e&&e.length>0)if(typeof e!=\"string\"&&!n.objectMode&&Object.getPrototypeOf(e)!==UQ.prototype&&(e=oBt(e)),o)n.endEmitted?Cv(t,new hBt):Kq(t,n,e,!0);else if(n.ended)Cv(t,new fBt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?Kq(t,n,e,!1):Jq(t,n)):Kq(t,n,e,!1)}else o||(n.reading=!1,Jq(t,n))}return!n.ended&&(n.length<n.highWaterMark||n.length===0)}function Kq(t,e,r,o){e.flowing&&e.length===0&&!e.sync?(e.awaitDrain=0,t.emit(\"data\",r)):(e.length+=e.objectMode?1:r.length,o?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&HQ(t)),Jq(t,e)}function dBt(t,e){var r;return!aBt(e)&&typeof e!=\"string\"&&e!==void 0&&!t.objectMode&&(r=new ABt(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],e)),r}mn.prototype.isPaused=function(){return this._readableState.flowing===!1};mn.prototype.setEncoding=function(t){ew||(ew=Hq().StringDecoder);var e=new ew(t);this._readableState.decoder=e,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,o=\"\";r!==null;)o+=e.write(r.data),r=r.next;return this._readableState.buffer.clear(),o!==\"\"&&this._readableState.buffer.push(o),this._readableState.length=o.length,this};var A2e=1073741824;function mBt(t){return t>=A2e?t=A2e:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function f2e(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=mBt(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}mn.prototype.read=function(t){en(\"read\",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return en(\"read: emitReadable\",e.length,e.ended),e.length===0&&e.ended?Vq(this):HQ(this),null;if(t=f2e(t,e),t===0&&e.ended)return e.length===0&&Vq(this),null;var o=e.needReadable;en(\"need readable\",o),(e.length===0||e.length-t<e.highWaterMark)&&(o=!0,en(\"length less than watermark\",o)),e.ended||e.reading?(o=!1,en(\"reading or ended\",o)):o&&(en(\"do read\"),e.reading=!0,e.sync=!0,e.length===0&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=f2e(r,e)));var a;return t>0?a=y2e(t,e):a=null,a===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&Vq(this)),a!==null&&this.emit(\"data\",a),a};function yBt(t,e){if(en(\"onEofChunk\"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?HQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,d2e(t)))}}function HQ(t){var e=t._readableState;en(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(en(\"emitReadable\",e.flowing),e.emittedReadable=!0,process.nextTick(d2e,t))}function d2e(t){var e=t._readableState;en(\"emitReadable_\",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit(\"readable\"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,Xq(t)}function Jq(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(EBt,t,e))}function EBt(t,e){for(;!e.reading&&!e.ended&&(e.length<e.highWaterMark||e.flowing&&e.length===0);){var r=e.length;if(en(\"maybeReadMore read 0\"),t.read(0),r===e.length)break}e.readingMore=!1}mn.prototype._read=function(t){Cv(this,new pBt(\"_read()\"))};mn.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t);break}o.pipesCount+=1,en(\"pipe count=%d opts=%j\",o.pipesCount,e);var a=(!e||e.end!==!1)&&t!==process.stdout&&t!==process.stderr,n=a?A:R;o.endEmitted?process.nextTick(n):r.once(\"end\",n),t.on(\"unpipe\",u);function u(N,U){en(\"onunpipe\"),N===r&&U&&U.hasUnpiped===!1&&(U.hasUnpiped=!0,E())}function A(){en(\"onend\"),t.end()}var p=CBt(r);t.on(\"drain\",p);var h=!1;function E(){en(\"cleanup\"),t.removeListener(\"close\",x),t.removeListener(\"finish\",C),t.removeListener(\"drain\",p),t.removeListener(\"error\",v),t.removeListener(\"unpipe\",u),r.removeListener(\"end\",A),r.removeListener(\"end\",R),r.removeListener(\"data\",I),h=!0,o.awaitDrain&&(!t._writableState||t._writableState.needDrain)&&p()}r.on(\"data\",I);function I(N){en(\"ondata\");var U=t.write(N);en(\"dest.write\",U),U===!1&&((o.pipesCount===1&&o.pipes===t||o.pipesCount>1&&E2e(o.pipes,t)!==-1)&&!h&&(en(\"false write response, pause\",o.awaitDrain),o.awaitDrain++),r.pause())}function v(N){en(\"onerror\",N),R(),t.removeListener(\"error\",v),p2e(t,\"error\")===0&&Cv(t,N)}gBt(t,\"error\",v);function x(){t.removeListener(\"finish\",C),R()}t.once(\"close\",x);function C(){en(\"onfinish\"),t.removeListener(\"close\",x),R()}t.once(\"finish\",C);function R(){en(\"unpipe\"),r.unpipe(t)}return t.emit(\"pipe\",r),o.flowing||(en(\"pipe resume\"),r.resume()),t};function CBt(t){return function(){var r=t._readableState;en(\"pipeOnDrain\",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&p2e(t,\"data\")&&(r.flowing=!0,Xq(t))}}mn.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r),this);if(!t){var o=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n<a;n++)o[n].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var u=E2e(e.pipes,t);return u===-1?this:(e.pipes.splice(u,1),e.pipesCount-=1,e.pipesCount===1&&(e.pipes=e.pipes[0]),t.emit(\"unpipe\",this,r),this)};mn.prototype.on=function(t,e){var r=wv.prototype.on.call(this,t,e),o=this._readableState;return t===\"data\"?(o.readableListening=this.listenerCount(\"readable\")>0,o.flowing!==!1&&this.resume()):t===\"readable\"&&!o.endEmitted&&!o.readableListening&&(o.readableListening=o.needReadable=!0,o.flowing=!1,o.emittedReadable=!1,en(\"on readable\",o.length,o.reading),o.length?HQ(this):o.reading||process.nextTick(wBt,this)),r};mn.prototype.addListener=mn.prototype.on;mn.prototype.removeListener=function(t,e){var r=wv.prototype.removeListener.call(this,t,e);return t===\"readable\"&&process.nextTick(m2e,this),r};mn.prototype.removeAllListeners=function(t){var e=wv.prototype.removeAllListeners.apply(this,arguments);return(t===\"readable\"||t===void 0)&&process.nextTick(m2e,this),e};function m2e(t){var e=t._readableState;e.readableListening=t.listenerCount(\"readable\")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount(\"data\")>0&&t.resume()}function wBt(t){en(\"readable nexttick read 0\"),t.read(0)}mn.prototype.resume=function(){var t=this._readableState;return t.flowing||(en(\"resume\"),t.flowing=!t.readableListening,IBt(this,t)),t.paused=!1,this};function IBt(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(BBt,t,e))}function BBt(t,e){en(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),Xq(t),e.flowing&&!e.reading&&t.read(0)}mn.prototype.pause=function(){return en(\"call pause flowing=%j\",this._readableState.flowing),this._readableState.flowing!==!1&&(en(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this};function Xq(t){var e=t._readableState;for(en(\"flow\",e.flowing);e.flowing&&t.read()!==null;);}mn.prototype.wrap=function(t){var e=this,r=this._readableState,o=!1;t.on(\"end\",function(){if(en(\"wrapped end\"),r.decoder&&!r.ended){var u=r.decoder.end();u&&u.length&&e.push(u)}e.push(null)}),t.on(\"data\",function(u){if(en(\"wrapped data\"),r.decoder&&(u=r.decoder.write(u)),!(r.objectMode&&u==null)&&!(!r.objectMode&&(!u||!u.length))){var A=e.push(u);A||(o=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]==\"function\"&&(this[a]=function(A){return function(){return t[A].apply(t,arguments)}}(a));for(var n=0;n<Wq.length;n++)t.on(Wq[n],this.emit.bind(this,Wq[n]));return this._read=function(u){en(\"wrapped _read\",u),o&&(o=!1,t.resume())},this};typeof Symbol==\"function\"&&(mn.prototype[Symbol.asyncIterator]=function(){return Gq===void 0&&(Gq=o2e()),Gq(this)});Object.defineProperty(mn.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(mn.prototype,\"readableBuffer\",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(mn.prototype,\"readableFlowing\",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});mn._fromList=y2e;Object.defineProperty(mn.prototype,\"readableLength\",{enumerable:!1,get:function(){return this._readableState.length}});function y2e(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(\"\"):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function Vq(t){var e=t._readableState;en(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(vBt,e,t))}function vBt(t,e){if(en(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol==\"function\"&&(mn.from=function(t,e){return Yq===void 0&&(Yq=u2e()),Yq(mn,t,e)});function E2e(t,e){for(var r=0,o=t.length;r<o;r++)if(t[r]===e)return r;return-1}});var Zq=_((Q$t,I2e)=>{\"use strict\";I2e.exports=sp;var jQ=Q0().codes,DBt=jQ.ERR_METHOD_NOT_IMPLEMENTED,PBt=jQ.ERR_MULTIPLE_CALLBACK,SBt=jQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,bBt=jQ.ERR_TRANSFORM_WITH_LENGTH_0,qQ=Cm();F0()(sp,qQ);function xBt(t,e){var r=this._transformState;r.transforming=!1;var o=r.writecb;if(o===null)return this.emit(\"error\",new PBt);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),o(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function sp(t){if(!(this instanceof sp))return new sp(t);qQ.call(this,t),this._transformState={afterTransform:xBt.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&(typeof t.transform==\"function\"&&(this._transform=t.transform),typeof t.flush==\"function\"&&(this._flush=t.flush)),this.on(\"prefinish\",kBt)}function kBt(){var t=this;typeof this._flush==\"function\"&&!this._readableState.destroyed?this._flush(function(e,r){w2e(t,e,r)}):w2e(this,null,null)}sp.prototype.push=function(t,e){return this._transformState.needTransform=!1,qQ.prototype.push.call(this,t,e)};sp.prototype._transform=function(t,e,r){r(new DBt(\"_transform()\"))};sp.prototype._write=function(t,e,r){var o=this._transformState;if(o.writecb=r,o.writechunk=t,o.writeencoding=e,!o.transforming){var a=this._readableState;(o.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};sp.prototype._read=function(t){var e=this._transformState;e.writechunk!==null&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0};sp.prototype._destroy=function(t,e){qQ.prototype._destroy.call(this,t,function(r){e(r)})};function w2e(t,e,r){if(e)return t.emit(\"error\",e);if(r!=null&&t.push(r),t._writableState.length)throw new bBt;if(t._transformState.transforming)throw new SBt;return t.push(null)}});var D2e=_((F$t,v2e)=>{\"use strict\";v2e.exports=Iv;var B2e=Zq();F0()(Iv,B2e);function Iv(t){if(!(this instanceof Iv))return new Iv(t);B2e.call(this,t)}Iv.prototype._transform=function(t,e,r){r(null,t)}});var k2e=_((R$t,x2e)=>{\"use strict\";var $q;function QBt(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var b2e=Q0().codes,FBt=b2e.ERR_MISSING_ARGS,RBt=b2e.ERR_STREAM_DESTROYED;function P2e(t){if(t)throw t}function TBt(t){return t.setHeader&&typeof t.abort==\"function\"}function LBt(t,e,r,o){o=QBt(o);var a=!1;t.on(\"close\",function(){a=!0}),$q===void 0&&($q=NQ()),$q(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,TBt(t))return t.abort();if(typeof t.destroy==\"function\")return t.destroy();o(u||new RBt(\"pipe\"))}}}function S2e(t){t()}function NBt(t,e){return t.pipe(e)}function OBt(t){return!t.length||typeof t[t.length-1]!=\"function\"?P2e:t.pop()}function MBt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];var o=OBt(e);if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new FBt(\"streams\");var a,n=e.map(function(u,A){var p=A<e.length-1,h=A>0;return LBt(u,p,h,function(E){a||(a=E),E&&n.forEach(S2e),!p&&(n.forEach(S2e),o(a))})});return e.reduce(NBt)}x2e.exports=MBt});var tw=_((lc,vv)=>{var Bv=ve(\"stream\");process.env.READABLE_STREAM===\"disable\"&&Bv?(vv.exports=Bv.Readable,Object.assign(vv.exports,Bv),vv.exports.Stream=Bv):(lc=vv.exports=Oq(),lc.Stream=Bv||lc,lc.Readable=lc,lc.Writable=Tq(),lc.Duplex=Cm(),lc.Transform=Zq(),lc.PassThrough=D2e(),lc.finished=NQ(),lc.pipeline=k2e())});var R2e=_((T$t,F2e)=>{\"use strict\";var{Buffer:lu}=ve(\"buffer\"),Q2e=Symbol.for(\"BufferList\");function ni(t){if(!(this instanceof ni))return new ni(t);ni._init.call(this,t)}ni._init=function(e){Object.defineProperty(this,Q2e,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};ni.prototype._new=function(e){return new ni(e)};ni.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let o=0;o<this._bufs.length;o++){let a=r+this._bufs[o].length;if(e<a||o===this._bufs.length-1)return[o,e-r];r=a}};ni.prototype._reverseOffset=function(t){let e=t[0],r=t[1];for(let o=0;o<e;o++)r+=this._bufs[o].length;return r};ni.prototype.get=function(e){if(e>this.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};ni.prototype.slice=function(e,r){return typeof e==\"number\"&&e<0&&(e+=this.length),typeof r==\"number\"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};ni.prototype.copy=function(e,r,o,a){if((typeof o!=\"number\"||o<0)&&(o=0),(typeof a!=\"number\"||a>this.length)&&(a=this.length),o>=this.length||a<=0)return e||lu.alloc(0);let n=!!e,u=this._offset(o),A=a-o,p=A,h=n&&r||0,E=u[1];if(o===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:lu.concat(this._bufs,this.length);for(let I=0;I<this._bufs.length;I++)this._bufs[I].copy(e,h),h+=this._bufs[I].length;return e}if(p<=this._bufs[u[0]].length-E)return n?this._bufs[u[0]].copy(e,r,E,E+p):this._bufs[u[0]].slice(E,E+p);n||(e=lu.allocUnsafe(A));for(let I=u[0];I<this._bufs.length;I++){let v=this._bufs[I].length-E;if(p>v)this._bufs[I].copy(e,h,E),h+=v;else{this._bufs[I].copy(e,h,E,E+p),h+=v;break}p-=v,E&&(E=0)}return e.length>h?e.slice(0,h):e};ni.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!=\"number\"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let o=this._offset(e),a=this._offset(r),n=this._bufs.slice(o[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),o[1]!==0&&(n[0]=n[0].slice(o[1])),this._new(n)};ni.prototype.toString=function(e,r,o){return this.slice(r,o).toString(e)};ni.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};ni.prototype.duplicate=function(){let e=this._new();for(let r=0;r<this._bufs.length;r++)e.append(this._bufs[r]);return e};ni.prototype.append=function(e){if(e==null)return this;if(e.buffer)this._appendBuffer(lu.from(e.buffer,e.byteOffset,e.byteLength));else if(Array.isArray(e))for(let r=0;r<e.length;r++)this.append(e[r]);else if(this._isBufferList(e))for(let r=0;r<e._bufs.length;r++)this.append(e._bufs[r]);else typeof e==\"number\"&&(e=e.toString()),this._appendBuffer(lu.from(e));return this};ni.prototype._appendBuffer=function(e){this._bufs.push(e),this.length+=e.length};ni.prototype.indexOf=function(t,e,r){if(r===void 0&&typeof e==\"string\"&&(r=e,e=void 0),typeof t==\"function\"||Array.isArray(t))throw new TypeError('The \"value\" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof t==\"number\"?t=lu.from([t]):typeof t==\"string\"?t=lu.from(t,r):this._isBufferList(t)?t=t.slice():Array.isArray(t.buffer)?t=lu.from(t.buffer,t.byteOffset,t.byteLength):lu.isBuffer(t)||(t=lu.from(t)),e=Number(e||0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=this._offset(e),a=o[0],n=o[1];for(;a<this._bufs.length;a++){let u=this._bufs[a];for(;n<u.length;)if(u.length-n>=t.length){let p=u.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=u.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};ni.prototype._match=function(t,e){if(this.length-t<e.length)return!1;for(let r=0;r<e.length;r++)if(this.get(t+r)!==e[r])return!1;return!0};(function(){let t={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let e in t)(function(r){t[r]===null?ni.prototype[r]=function(o,a){return this.slice(o,o+a)[r](0,a)}:ni.prototype[r]=function(o=0){return this.slice(o,o+t[r])[r](0)}})(e)})();ni.prototype._isBufferList=function(e){return e instanceof ni||ni.isBufferList(e)};ni.isBufferList=function(e){return e!=null&&e[Q2e]};F2e.exports=ni});var T2e=_((L$t,GQ)=>{\"use strict\";var eG=tw().Duplex,UBt=F0(),Dv=R2e();function Uo(t){if(!(this instanceof Uo))return new Uo(t);if(typeof t==\"function\"){this._callback=t;let e=function(o){this._callback&&(this._callback(o),this._callback=null)}.bind(this);this.on(\"pipe\",function(o){o.on(\"error\",e)}),this.on(\"unpipe\",function(o){o.removeListener(\"error\",e)}),t=null}Dv._init.call(this,t),eG.call(this)}UBt(Uo,eG);Object.assign(Uo.prototype,Dv.prototype);Uo.prototype._new=function(e){return new Uo(e)};Uo.prototype._write=function(e,r,o){this._appendBuffer(e),typeof o==\"function\"&&o()};Uo.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Uo.prototype.end=function(e){eG.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Uo.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Uo.prototype._isBufferList=function(e){return e instanceof Uo||e instanceof Dv||Uo.isBufferList(e)};Uo.isBufferList=Dv.isBufferList;GQ.exports=Uo;GQ.exports.BufferListStream=Uo;GQ.exports.BufferList=Dv});var nG=_(nw=>{var _Bt=Buffer.alloc,HBt=\"0000000000000000000\",jBt=\"7777777777777777777\",L2e=\"0\".charCodeAt(0),N2e=Buffer.from(\"ustar\\0\",\"binary\"),qBt=Buffer.from(\"00\",\"binary\"),GBt=Buffer.from(\"ustar \",\"binary\"),YBt=Buffer.from(\" \\0\",\"binary\"),WBt=parseInt(\"7777\",8),Pv=257,rG=263,KBt=function(t,e,r){return typeof t!=\"number\"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},VBt=function(t){switch(t){case 0:return\"file\";case 1:return\"link\";case 2:return\"symlink\";case 3:return\"character-device\";case 4:return\"block-device\";case 5:return\"directory\";case 6:return\"fifo\";case 7:return\"contiguous-file\";case 72:return\"pax-header\";case 55:return\"pax-global-header\";case 27:return\"gnu-long-link-path\";case 28:case 30:return\"gnu-long-path\"}return null},JBt=function(t){switch(t){case\"file\":return 0;case\"link\":return 1;case\"symlink\":return 2;case\"character-device\":return 3;case\"block-device\":return 4;case\"directory\":return 5;case\"fifo\":return 6;case\"contiguous-file\":return 7;case\"pax-header\":return 72}return 0},O2e=function(t,e,r,o){for(;r<o;r++)if(t[r]===e)return r;return o},M2e=function(t){for(var e=256,r=0;r<148;r++)e+=t[r];for(var o=156;o<512;o++)e+=t[o];return e},O0=function(t,e){return t=t.toString(8),t.length>e?jBt.slice(0,e)+\" \":HBt.slice(0,e-t.length)+t+\" \"};function zBt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],o=t.length-1;o>0;o--){var a=t[o];e?r.push(a):r.push(255-a)}var n=0,u=r.length;for(o=0;o<u;o++)n+=r[o]*Math.pow(256,o);return e?n:-1*n}var M0=function(t,e,r){if(t=t.slice(e,e+r),e=0,t[e]&128)return zBt(t);for(;e<t.length&&t[e]===32;)e++;for(var o=KBt(O2e(t,32,e,t.length),t.length,t.length);e<o&&t[e]===0;)e++;return o===e?0:parseInt(t.slice(e,o).toString(),8)},rw=function(t,e,r,o){return t.slice(e,O2e(t,0,e,e+r)).toString(o)},tG=function(t){var e=Buffer.byteLength(t),r=Math.floor(Math.log(e)/Math.log(10))+1;return e+r>=Math.pow(10,r)&&r++,e+r+t};nw.decodeLongPath=function(t,e){return rw(t,0,t.length,e)};nw.encodePax=function(t){var e=\"\";t.name&&(e+=tG(\" path=\"+t.name+`\n`)),t.linkname&&(e+=tG(\" linkpath=\"+t.linkname+`\n`));var r=t.pax;if(r)for(var o in r)e+=tG(\" \"+o+\"=\"+r[o]+`\n`);return Buffer.from(e)};nw.decodePax=function(t){for(var e={};t.length;){for(var r=0;r<t.length&&t[r]!==32;)r++;var o=parseInt(t.slice(0,r).toString(),10);if(!o)return e;var a=t.slice(r+1,o-1).toString(),n=a.indexOf(\"=\");if(n===-1)return e;e[a.slice(0,n)]=a.slice(n+1),t=t.slice(o)}return e};nw.encode=function(t){var e=_Bt(512),r=t.name,o=\"\";if(t.typeflag===5&&r[r.length-1]!==\"/\"&&(r+=\"/\"),Buffer.byteLength(r)!==r.length)return null;for(;Buffer.byteLength(r)>100;){var a=r.indexOf(\"/\");if(a===-1)return null;o+=o?\"/\"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(o)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(O0(t.mode&WBt,6),100),e.write(O0(t.uid,6),108),e.write(O0(t.gid,6),116),e.write(O0(t.size,11),124),e.write(O0(t.mtime.getTime()/1e3|0,11),136),e[156]=L2e+JBt(t.type),t.linkname&&e.write(t.linkname,157),N2e.copy(e,Pv),qBt.copy(e,rG),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(O0(t.devmajor||0,6),329),e.write(O0(t.devminor||0,6),337),o&&e.write(o,345),e.write(O0(M2e(e),6),148),e)};nw.decode=function(t,e,r){var o=t[156]===0?0:t[156]-L2e,a=rw(t,0,100,e),n=M0(t,100,8),u=M0(t,108,8),A=M0(t,116,8),p=M0(t,124,12),h=M0(t,136,12),E=VBt(o),I=t[157]===0?null:rw(t,157,100,e),v=rw(t,265,32),x=rw(t,297,32),C=M0(t,329,8),R=M0(t,337,8),N=M2e(t);if(N===8*32)return null;if(N!==M0(t,148,8))throw new Error(\"Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?\");if(N2e.compare(t,Pv,Pv+6)===0)t[345]&&(a=rw(t,345,155,e)+\"/\"+a);else if(!(GBt.compare(t,Pv,Pv+6)===0&&YBt.compare(t,rG,rG+2)===0)){if(!r)throw new Error(\"Invalid tar header: unknown format.\")}return o===0&&a&&a[a.length-1]===\"/\"&&(o=5),{name:a,mode:n,uid:u,gid:A,size:p,mtime:new Date(1e3*h),type:E,linkname:I,uname:v,gname:x,devmajor:C,devminor:R}}});var Y2e=_((O$t,G2e)=>{var _2e=ve(\"util\"),XBt=T2e(),Sv=nG(),H2e=tw().Writable,j2e=tw().PassThrough,q2e=function(){},U2e=function(t){return t&=511,t&&512-t},ZBt=function(t,e){var r=new YQ(t,e);return r.end(),r},$Bt=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},YQ=function(t,e){this._parent=t,this.offset=e,j2e.call(this,{autoDestroy:!1})};_2e.inherits(YQ,j2e);YQ.prototype.destroy=function(t){this._parent.destroy(t)};var op=function(t){if(!(this instanceof op))return new op(t);H2e.call(this,t),t=t||{},this._offset=0,this._buffer=XBt(),this._missing=0,this._partial=!1,this._onparse=q2e,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,o=function(){e._continue()},a=function(v){if(e._locked=!1,v)return e.destroy(v);e._stream||o()},n=function(){e._stream=null;var v=U2e(e._header.size);v?e._parse(v,u):e._parse(512,I),e._locked||o()},u=function(){e._buffer.consume(U2e(e._header.size)),e._parse(512,I),o()},A=function(){var v=e._header.size;e._paxGlobal=Sv.decodePax(r.slice(0,v)),r.consume(v),n()},p=function(){var v=e._header.size;e._pax=Sv.decodePax(r.slice(0,v)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(v),n()},h=function(){var v=e._header.size;this._gnuLongPath=Sv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},E=function(){var v=e._header.size;this._gnuLongLinkPath=Sv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},I=function(){var v=e._offset,x;try{x=e._header=Sv.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(C){e.emit(\"error\",C)}if(r.consume(512),!x){e._parse(512,I),o();return}if(x.type===\"gnu-long-path\"){e._parse(x.size,h),o();return}if(x.type===\"gnu-long-link-path\"){e._parse(x.size,E),o();return}if(x.type===\"pax-global-header\"){e._parse(x.size,A),o();return}if(x.type===\"pax-header\"){e._parse(x.size,p),o();return}if(e._gnuLongPath&&(x.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(x.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=x=$Bt(x,e._pax),e._pax=null),e._locked=!0,!x.size||x.type===\"directory\"){e._parse(512,I),e.emit(\"entry\",x,ZBt(e,v),a);return}e._stream=new YQ(e,v),e.emit(\"entry\",x,e._stream,a),e._parse(x.size,n),o()};this._onheader=I,this._parse(512,I)};_2e.inherits(op,H2e);op.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit(\"error\",t),this.emit(\"close\"),this._stream&&this._stream.emit(\"close\"))};op.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};op.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=q2e,this._overflow?this._write(this._overflow,void 0,t):t()}};op.prototype._write=function(t,e,r){if(!this._destroyed){var o=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.length<n)return this._missing-=t.length,this._overflow=null,o?o.write(t,r):(a.append(t),r());this._cb=r,this._missing=0;var u=null;t.length>n&&(u=t.slice(n),t=t.slice(0,n)),o?o.end(t):a.append(t),this._overflow=u,this._onparse()}};op.prototype._final=function(t){if(this._partial)return this.destroy(new Error(\"Unexpected end of data\"));t()};G2e.exports=op});var K2e=_((M$t,W2e)=>{W2e.exports=ve(\"fs\").constants||ve(\"constants\")});var Z2e=_((U$t,X2e)=>{var iw=K2e(),V2e=NM(),KQ=F0(),evt=Buffer.alloc,J2e=tw().Readable,sw=tw().Writable,tvt=ve(\"string_decoder\").StringDecoder,WQ=nG(),rvt=parseInt(\"755\",8),nvt=parseInt(\"644\",8),z2e=evt(1024),sG=function(){},iG=function(t,e){e&=511,e&&t.push(z2e.slice(0,512-e))};function ivt(t){switch(t&iw.S_IFMT){case iw.S_IFBLK:return\"block-device\";case iw.S_IFCHR:return\"character-device\";case iw.S_IFDIR:return\"directory\";case iw.S_IFIFO:return\"fifo\";case iw.S_IFLNK:return\"symlink\"}return\"file\"}var VQ=function(t){sw.call(this),this.written=0,this._to=t,this._destroyed=!1};KQ(VQ,sw);VQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};VQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var JQ=function(){sw.call(this),this.linkname=\"\",this._decoder=new tvt(\"utf-8\"),this._destroyed=!1};KQ(JQ,sw);JQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};JQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var bv=function(){sw.call(this),this._destroyed=!1};KQ(bv,sw);bv.prototype._write=function(t,e,r){r(new Error(\"No body allowed for this entry\"))};bv.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var CA=function(t){if(!(this instanceof CA))return new CA(t);J2e.call(this,t),this._drain=sG,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};KQ(CA,J2e);CA.prototype.entry=function(t,e,r){if(this._stream)throw new Error(\"already piping an entry\");if(!(this._finalized||this._destroyed)){typeof e==\"function\"&&(r=e,e=null),r||(r=sG);var o=this;if((!t.size||t.type===\"symlink\")&&(t.size=0),t.type||(t.type=ivt(t.mode)),t.mode||(t.mode=t.type===\"directory\"?rvt:nvt),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e==\"string\"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var a=this.push(e);return iG(o,t.size),a?process.nextTick(r):this._drain=r,new bv}if(t.type===\"symlink\"&&!t.linkname){var n=new JQ;return V2e(n,function(A){if(A)return o.destroy(),r(A);t.linkname=n.linkname,o._encode(t),r()}),n}if(this._encode(t),t.type!==\"file\"&&t.type!==\"contiguous-file\")return process.nextTick(r),new bv;var u=new VQ(this);return this._stream=u,V2e(u,function(A){if(o._stream=null,A)return o.destroy(),r(A);if(u.written!==t.size)return o.destroy(),r(new Error(\"size mismatch\"));iG(o,t.size),o._finalizing&&o.finalize(),r()}),u}};CA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(z2e),this.push(null))};CA.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit(\"error\",t),this.emit(\"close\"),this._stream&&this._stream.destroy&&this._stream.destroy())};CA.prototype._encode=function(t){if(!t.pax){var e=WQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};CA.prototype._encodePax=function(t){var e=WQ.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:\"PaxHeader\",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:\"pax-header\",linkname:t.linkname&&\"PaxHeader\",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(WQ.encode(r)),this.push(e),iG(this,e.length),r.size=t.size,r.type=t.type,this.push(WQ.encode(r))};CA.prototype._read=function(t){var e=this._drain;this._drain=sG,e()};X2e.exports=CA});var $2e=_(oG=>{oG.extract=Y2e();oG.pack=Z2e()});var ABe=_((ser,uBe)=>{\"use strict\";var vm=class{constructor(e,r,o){this.__specs=e||{},Object.keys(this.__specs).forEach(a=>{if(typeof this.__specs[a]==\"string\"){let n=this.__specs[a],u=this.__specs[n];if(u){let A=u.aliases||[];A.push(a,n),u.aliases=[...new Set(A)],this.__specs[a]=u}else throw new Error(`Alias refers to invalid key: ${n} -> ${a}`)}}),this.__opts=r||{},this.__providers=lBe(o.filter(a=>a!=null&&typeof a==\"object\")),this.__isFiggyPudding=!0}get(e){return fG(this,e,!0)}get[Symbol.toStringTag](){return\"FiggyPudding\"}forEach(e,r=this){for(let[o,a]of this.entries())e.call(r,a,o,this)}toJSON(){let e={};return this.forEach((r,o)=>{e[o]=r}),e}*entries(e){for(let o of Object.keys(this.__specs))yield[o,this.get(o)];let r=e||this.__opts.other;if(r){let o=new Set;for(let a of this.__providers){let n=a.entries?a.entries(r):Evt(a);for(let[u,A]of n)r(u)&&!o.has(u)&&(o.add(u),yield[u,A])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new vm(this.__specs,this.__opts,lBe(this.__providers).concat(e)),cBe)}};try{let t=ve(\"util\");vm.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+\" \"+t.inspect(this.toJSON(),r)}}catch{}function mvt(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:\"EBADKEY\"})}function fG(t,e,r){let o=t.__specs[e];if(r&&!o&&(!t.__opts.other||!t.__opts.other(e)))mvt(e);else{o||(o={});let a;for(let n of t.__providers){if(a=aBe(e,n),a===void 0&&o.aliases&&o.aliases.length){for(let u of o.aliases)if(u!==e&&(a=aBe(u,n),a!==void 0))break}if(a!==void 0)break}return a===void 0&&o.default!==void 0?typeof o.default==\"function\"?o.default(t):o.default:a}}function aBe(t,e){let r;return e.__isFiggyPudding?r=fG(e,t,!1):typeof e.get==\"function\"?r=e.get(t):r=e[t],r}var cBe={has(t,e){return e in t.__specs&&fG(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e==\"symbol\"||e.slice(0,2)===\"__\"||e in vm.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e==\"symbol\"||e.slice(0,2)===\"__\")return t[e]=r,!0;throw new Error(\"figgyPudding options cannot be modified. Use .concat() instead.\")},deleteProperty(){throw new Error(\"figgyPudding options cannot be deleted. Use .concat() and shadow them instead.\")}};uBe.exports=yvt;function yvt(t,e){function r(...o){return new Proxy(new vm(t,e,o),cBe)}return r}function lBe(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function Evt(t){return Object.keys(t).map(e=>[e,t[e]])}});var hBe=_((oer,BA)=>{\"use strict\";var kv=ve(\"crypto\"),Cvt=ABe(),wvt=ve(\"stream\").Transform,fBe=[\"sha256\",\"sha384\",\"sha512\"],Ivt=/^[a-z0-9+/]+(?:=?=?)$/i,Bvt=/^([^-]+)-([^?]+)([?\\S*]*)$/,vvt=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\\?[\\x21-\\x7E]*)*$/,Dvt=/^[\\x21-\\x7E]+$/,ia=Cvt({algorithms:{default:[\"sha512\"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>Rvt},Promise:{default:()=>Promise},sep:{default:\" \"},single:{default:!1},size:{},strict:{default:!1}}),_0=class{get isHash(){return!0}constructor(e,r){r=ia(r);let o=!!r.strict;this.source=e.trim();let a=this.source.match(o?vvt:Bvt);if(!a||o&&!fBe.some(u=>u===a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];this.options=n?n.slice(1).split(\"?\"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,\"base64\").toString(\"hex\")}toJSON(){return this.toString()}toString(e){if(e=ia(e),e.strict&&!(fBe.some(o=>o===this.algorithm)&&this.digest.match(Ivt)&&(this.options||[]).every(o=>o.match(Dvt))))return\"\";let r=this.options&&this.options.length?`?${this.options.join(\"?\")}`:\"\";return`${this.algorithm}-${this.digest}${r}`}},Dm=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=ia(e);let r=e.sep||\" \";return e.strict&&(r=r.replace(/\\S+/g,\" \")),Object.keys(this).map(o=>this[o].map(a=>_0.prototype.toString.call(a,e)).filter(a=>a.length).join(r)).filter(o=>o.length).join(r)}concat(e,r){r=ia(r);let o=typeof e==\"string\"?e:xv(e,r);return IA(`${this.toString(r)} ${o}`,r)}hexDigest(){return IA(this,{single:!0}).hexDigest()}match(e,r){r=ia(r);let o=IA(e,r),a=o.pickAlgorithm(r);return this[a]&&o[a]&&this[a].find(n=>o[a].find(u=>n.digest===u.digest))||!1}pickAlgorithm(e){e=ia(e);let r=e.pickAlgorithm,o=Object.keys(this);if(!o.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return o.reduce((a,n)=>r(a,n)||a)}};BA.exports.parse=IA;function IA(t,e){if(e=ia(e),typeof t==\"string\")return pG(t,e);if(t.algorithm&&t.digest){let r=new Dm;return r[t.algorithm]=[t],pG(xv(r,e),e)}else return pG(xv(t,e),e)}function pG(t,e){return e.single?new _0(t,e):t.trim().split(/\\s+/).reduce((r,o)=>{let a=new _0(o,e);if(a.algorithm&&a.digest){let n=a.algorithm;r[n]||(r[n]=[]),r[n].push(a)}return r},new Dm)}BA.exports.stringify=xv;function xv(t,e){return e=ia(e),t.algorithm&&t.digest?_0.prototype.toString.call(t,e):typeof t==\"string\"?xv(IA(t,e),e):Dm.prototype.toString.call(t,e)}BA.exports.fromHex=Pvt;function Pvt(t,e,r){r=ia(r);let o=r.options&&r.options.length?`?${r.options.join(\"?\")}`:\"\";return IA(`${e}-${Buffer.from(t,\"hex\").toString(\"base64\")}${o}`,r)}BA.exports.fromData=Svt;function Svt(t,e){e=ia(e);let r=e.algorithms,o=e.options&&e.options.length?`?${e.options.join(\"?\")}`:\"\";return r.reduce((a,n)=>{let u=kv.createHash(n).update(t).digest(\"base64\"),A=new _0(`${n}-${u}${o}`,e);if(A.algorithm&&A.digest){let p=A.algorithm;a[p]||(a[p]=[]),a[p].push(A)}return a},new Dm)}BA.exports.fromStream=bvt;function bvt(t,e){e=ia(e);let r=e.Promise||Promise,o=hG(e);return new r((a,n)=>{t.pipe(o),t.on(\"error\",n),o.on(\"error\",n);let u;o.on(\"integrity\",A=>{u=A}),o.on(\"end\",()=>a(u)),o.on(\"data\",()=>{})})}BA.exports.checkData=xvt;function xvt(t,e,r){if(r=ia(r),e=IA(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error(\"No valid integrity hashes to check against\"),{code:\"EINTEGRITY\"});return!1}let o=e.pickAlgorithm(r),a=kv.createHash(o).update(t).digest(\"base64\"),n=IA({algorithm:o,digest:a}),u=n.match(e,r);if(u||!r.error)return u;if(typeof r.size==\"number\"&&t.length!==r.size){let A=new Error(`data size mismatch when checking ${e}.\n  Wanted: ${r.size}\n  Found: ${t.length}`);throw A.code=\"EBADSIZE\",A.found=t.length,A.expected=r.size,A.sri=e,A}else{let A=new Error(`Integrity checksum failed when using ${o}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw A.code=\"EINTEGRITY\",A.found=n,A.expected=e,A.algorithm=o,A.sri=e,A}}BA.exports.checkStream=kvt;function kvt(t,e,r){r=ia(r);let o=r.Promise||Promise,a=hG(r.concat({integrity:e}));return new o((n,u)=>{t.pipe(a),t.on(\"error\",u),a.on(\"error\",u);let A;a.on(\"verified\",p=>{A=p}),a.on(\"end\",()=>n(A)),a.on(\"data\",()=>{})})}BA.exports.integrityStream=hG;function hG(t){t=ia(t);let e=t.integrity&&IA(t.integrity,t),r=e&&Object.keys(e).length,o=r&&e.pickAlgorithm(t),a=r&&e[o],n=Array.from(new Set(t.algorithms.concat(o?[o]:[]))),u=n.map(kv.createHash),A=0,p=new wvt({transform(h,E,I){A+=h.length,u.forEach(v=>v.update(h,E)),I(null,h,E)}}).on(\"end\",()=>{let h=t.options&&t.options.length?`?${t.options.join(\"?\")}`:\"\",E=IA(u.map((v,x)=>`${n[x]}-${v.digest(\"base64\")}${h}`).join(\" \"),t),I=r&&E.match(e,t);if(typeof t.size==\"number\"&&A!==t.size){let v=new Error(`stream size mismatch when checking ${e}.\n  Wanted: ${t.size}\n  Found: ${A}`);v.code=\"EBADSIZE\",v.found=A,v.expected=t.size,v.sri=e,p.emit(\"error\",v)}else if(t.integrity&&!I){let v=new Error(`${e} integrity checksum failed when using ${o}: wanted ${a} but got ${E}. (${A} bytes)`);v.code=\"EINTEGRITY\",v.found=E,v.expected=a,v.algorithm=o,v.sri=e,p.emit(\"error\",v)}else p.emit(\"size\",A),p.emit(\"integrity\",E),I&&p.emit(\"verified\",I)});return p}BA.exports.create=Qvt;function Qvt(t){t=ia(t);let e=t.algorithms,r=t.options.length?`?${t.options.join(\"?\")}`:\"\",o=e.map(kv.createHash);return{update:function(a,n){return o.forEach(u=>u.update(a,n)),this},digest:function(a){return e.reduce((u,A)=>{let p=o.shift().digest(\"base64\"),h=new _0(`${A}-${p}${r}`,t);if(h.algorithm&&h.digest){let E=h.algorithm;u[E]||(u[E]=[]),u[E].push(h)}return u},new Dm)}}}var Fvt=new Set(kv.getHashes()),pBe=[\"md5\",\"whirlpool\",\"sha1\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"sha3\",\"sha3-256\",\"sha3-384\",\"sha3-512\",\"sha3_256\",\"sha3_384\",\"sha3_512\"].filter(t=>Fvt.has(t));function Rvt(t,e){return pBe.indexOf(t.toLowerCase())>=pBe.indexOf(e.toLowerCase())?t:e}});var qBe=_((cir,jBe)=>{var RDt=cN();function TDt(t){return RDt(t)?void 0:t}jBe.exports=TDt});var YBe=_((uir,GBe)=>{var LDt=Hb(),NDt=x8(),ODt=R8(),MDt=qd(),UDt=dd(),_Dt=qBe(),HDt=v_(),jDt=b8(),qDt=1,GDt=2,YDt=4,WDt=HDt(function(t,e){var r={};if(t==null)return r;var o=!1;e=LDt(e,function(n){return n=MDt(n,t),o||(o=n.length>1),n}),UDt(t,jDt(t),r),o&&(r=NDt(r,qDt|GDt|YDt,_Dt));for(var a=e.length;a--;)ODt(r,e[a]);return r});GBe.exports=WDt});Pt();Ye();Pt();var zBe=ve(\"child_process\"),XBe=$e(td());jt();var AC=new Map([]);var a2={};Vt(a2,{BaseCommand:()=>ut,WorkspaceRequiredError:()=>rr,getCli:()=>ehe,getDynamicLibs:()=>$pe,getPluginConfiguration:()=>pC,openWorkspace:()=>fC,pluginCommands:()=>AC,runExit:()=>nk});jt();var ut=class extends nt{constructor(){super(...arguments);this.cwd=ge.String(\"--cwd\",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<\"u\")throw new it(\"The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path\");return super.validateAndExecute()}};Ye();Pt();jt();var rr=class extends it{constructor(e,r){let o=V.relative(e,r),a=V.join(e,Ot.fileName);super(`This command can only be run from within a workspace of your project (${o} isn't a workspace of ${a}).`)}};Ye();Pt();nA();Ll();k1();jt();var TAt=$e(zn());Za();var $pe=()=>new Map([[\"@yarnpkg/cli\",a2],[\"@yarnpkg/core\",o2],[\"@yarnpkg/fslib\",Vw],[\"@yarnpkg/libzip\",x1],[\"@yarnpkg/parsers\",rI],[\"@yarnpkg/shell\",T1],[\"clipanion\",hI],[\"semver\",TAt],[\"typanion\",Vo]]);Ye();async function fC(t,e){let{project:r,workspace:o}=await St.find(t,e);if(!o)throw new rr(r.cwd,e);return o}Ye();Pt();nA();Ll();k1();jt();var tPt=$e(zn());Za();var $8={};Vt($8,{AddCommand:()=>kh,BinCommand:()=>Qh,CacheCleanCommand:()=>Fh,ClipanionCommand:()=>Kd,ConfigCommand:()=>Nh,ConfigGetCommand:()=>Rh,ConfigSetCommand:()=>Th,ConfigUnsetCommand:()=>Lh,DedupeCommand:()=>Oh,EntryCommand:()=>mC,ExecCommand:()=>Mh,ExplainCommand:()=>Hh,ExplainPeerRequirementsCommand:()=>Uh,HelpCommand:()=>Vd,InfoCommand:()=>jh,LinkCommand:()=>Gh,NodeCommand:()=>Yh,PluginCheckCommand:()=>Wh,PluginImportCommand:()=>Jh,PluginImportSourcesCommand:()=>zh,PluginListCommand:()=>Kh,PluginRemoveCommand:()=>Xh,PluginRuntimeCommand:()=>Zh,RebuildCommand:()=>$h,RemoveCommand:()=>e0,RunCommand:()=>t0,RunIndexCommand:()=>Xd,SetResolutionCommand:()=>r0,SetVersionCommand:()=>_h,SetVersionSourcesCommand:()=>Vh,UnlinkCommand:()=>n0,UpCommand:()=>Jf,VersionCommand:()=>Jd,WhyCommand:()=>i0,WorkspaceCommand:()=>a0,WorkspacesListCommand:()=>o0,YarnCommand:()=>qh,dedupeUtils:()=>pk,default:()=>Sgt,suggestUtils:()=>zc});var Qde=$e(td());Ye();Ye();Ye();jt();var H0e=$e(f2());Za();var zc={};Vt(zc,{Modifier:()=>B8,Strategy:()=>uk,Target:()=>p2,WorkspaceModifier:()=>N0e,applyModifier:()=>ept,extractDescriptorFromPath:()=>v8,extractRangeModifier:()=>O0e,fetchDescriptorFrom:()=>D8,findProjectDescriptors:()=>_0e,getModifier:()=>h2,getSuggestedDescriptors:()=>g2,makeWorkspaceDescriptor:()=>U0e,toWorkspaceModifier:()=>M0e});Ye();Ye();Pt();var I8=$e(zn()),Zft=\"workspace:\",p2=(o=>(o.REGULAR=\"dependencies\",o.DEVELOPMENT=\"devDependencies\",o.PEER=\"peerDependencies\",o))(p2||{}),B8=(o=>(o.CARET=\"^\",o.TILDE=\"~\",o.EXACT=\"\",o))(B8||{}),N0e=(o=>(o.CARET=\"^\",o.TILDE=\"~\",o.EXACT=\"*\",o))(N0e||{}),uk=(n=>(n.KEEP=\"keep\",n.REUSE=\"reuse\",n.PROJECT=\"project\",n.LATEST=\"latest\",n.CACHE=\"cache\",n))(uk||{});function h2(t,e){return t.exact?\"\":t.caret?\"^\":t.tilde?\"~\":e.configuration.get(\"defaultSemverRangePrefix\")}var $ft=/^([\\^~]?)[0-9]+(?:\\.[0-9]+){0,2}(?:-\\S+)?$/;function O0e(t,{project:e}){let r=t.match($ft);return r?r[1]:e.configuration.get(\"defaultSemverRangePrefix\")}function ept(t,e){let{protocol:r,source:o,params:a,selector:n}=W.parseRange(t.range);return I8.default.valid(n)&&(n=`${e}${t.range}`),W.makeDescriptor(t,W.makeRange({protocol:r,source:o,params:a,selector:n}))}function M0e(t){switch(t){case\"^\":return\"^\";case\"~\":return\"~\";case\"\":return\"*\";default:throw new Error(`Assertion failed: Unknown modifier: \"${t}\"`)}}function U0e(t,e){return W.makeDescriptor(t.anchoredDescriptor,`${Zft}${M0e(e)}`)}async function _0e(t,{project:e,target:r}){let o=new Map,a=n=>{let u=o.get(n.descriptorHash);return u||o.set(n.descriptorHash,u={descriptor:n,locators:[]}),u};for(let n of e.workspaces)if(r===\"peerDependencies\"){let u=n.manifest.peerDependencies.get(t.identHash);u!==void 0&&a(u).locators.push(n.anchoredLocator)}else{let u=n.manifest.dependencies.get(t.identHash),A=n.manifest.devDependencies.get(t.identHash);r===\"devDependencies\"?A!==void 0?a(A).locators.push(n.anchoredLocator):u!==void 0&&a(u).locators.push(n.anchoredLocator):u!==void 0?a(u).locators.push(n.anchoredLocator):A!==void 0&&a(A).locators.push(n.anchoredLocator)}return o}async function v8(t,{cwd:e,workspace:r}){return await tpt(async o=>{V.isAbsolute(t)||(t=V.relative(r.cwd,V.resolve(e,t)),t.match(/^\\.{0,2}\\//)||(t=`./${t}`));let{project:a}=r,n=await D8(W.makeIdent(null,\"archive\"),t,{project:r.project,cache:o,workspace:r});if(!n)throw new Error(\"Assertion failed: The descriptor should have been found\");let u=new Qi,A=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:o,fetcher:p,report:u,resolver:A},E=A.bindDescriptor(n,r.anchoredLocator,h),I=W.convertDescriptorToLocator(E),v=await p.fetch(I,h),x=await Ot.find(v.prefixPath,{baseFs:v.packageFs});if(!x.name)throw new Error(\"Target path doesn't have a name\");return W.makeDescriptor(x.name,t)})}async function g2(t,{project:e,workspace:r,cache:o,target:a,fixed:n,modifier:u,strategies:A,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let[h,E]=t.range!==\"unknown\"?n||kr.validRange(t.range)||!t.range.match(/^[a-z0-9._-]+$/i)?[t.range,\"latest\"]:[\"unknown\",t.range]:[\"unknown\",\"latest\"];if(h!==\"unknown\")return{suggestions:[{descriptor:t,name:`Use ${W.prettyDescriptor(e.configuration,t)}`,reason:\"(unambiguous explicit request)\"}],rejections:[]};let I=typeof r<\"u\"&&r!==null&&r.manifest[a].get(t.identHash)||null,v=[],x=[],C=async R=>{try{await R()}catch(N){x.push(N)}};for(let R of A){if(v.length>=p)break;switch(R){case\"keep\":await C(async()=>{I&&v.push({descriptor:I,name:`Keep ${W.prettyDescriptor(e.configuration,I)}`,reason:\"(no changes)\"})});break;case\"reuse\":await C(async()=>{for(let{descriptor:N,locators:U}of(await _0e(t,{project:e,target:a})).values()){if(U.length===1&&U[0].locatorHash===r.anchoredLocator.locatorHash&&A.includes(\"keep\"))continue;let J=`(originally used by ${W.prettyLocator(e.configuration,U[0])}`;J+=U.length>1?` and ${U.length-1} other${U.length>2?\"s\":\"\"})`:\")\",v.push({descriptor:N,name:`Reuse ${W.prettyDescriptor(e.configuration,N)}`,reason:J})}});break;case\"cache\":await C(async()=>{for(let N of e.storedDescriptors.values())N.identHash===t.identHash&&v.push({descriptor:N,name:`Reuse ${W.prettyDescriptor(e.configuration,N)}`,reason:\"(already used somewhere in the lockfile)\"})});break;case\"project\":await C(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let N=e.tryWorkspaceByIdent(t);if(N===null)return;let U=U0e(N,u);v.push({descriptor:U,name:`Attach ${W.prettyDescriptor(e.configuration,U)}`,reason:`(local workspace at ${de.pretty(e.configuration,N.relativeCwd,de.Type.PATH)})`})});break;case\"latest\":{let N=e.configuration.get(\"enableNetwork\"),U=e.configuration.get(\"enableOfflineMode\");await C(async()=>{if(a===\"peerDependencies\")v.push({descriptor:W.makeDescriptor(t,\"*\"),name:\"Use *\",reason:\"(catch-all peer dependency pattern)\"});else if(!N&&!U)v.push({descriptor:null,name:\"Resolve from latest\",reason:de.pretty(e.configuration,\"(unavailable because enableNetwork is toggled off)\",\"grey\")});else{let J=await D8(t,E,{project:e,cache:o,workspace:r,modifier:u});J&&v.push({descriptor:J,name:`Use ${W.prettyDescriptor(e.configuration,J)}`,reason:`(resolved from ${U?\"the cache\":\"latest\"})`})}})}break}}return{suggestions:v.slice(0,p),rejections:x.slice(0,p)}}async function D8(t,e,{project:r,cache:o,workspace:a,preserveModifier:n=!0,modifier:u}){let A=r.configuration.normalizeDependency(W.makeDescriptor(t,e)),p=new Qi,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),I={project:r,fetcher:h,cache:o,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},v={...I,resolver:E,fetchOptions:I},x=E.bindDescriptor(A,a.anchoredLocator,v),C=await E.getCandidates(x,{},v);if(C.length===0)return null;let R=C[0],{protocol:N,source:U,params:J,selector:te}=W.parseRange(W.convertToManifestRange(R.reference));if(N===r.configuration.get(\"defaultProtocol\")&&(N=null),I8.default.valid(te)){let ae=te;if(typeof u<\"u\")te=u+te;else if(n!==!1){let me=typeof n==\"string\"?n:A.range;te=O0e(me,{project:r})+te}let fe=W.makeDescriptor(R,W.makeRange({protocol:N,source:U,params:J,selector:te}));(await E.getCandidates(r.configuration.normalizeDependency(fe),{},v)).length!==1&&(te=ae)}return W.makeDescriptor(R,W.makeRange({protocol:N,source:U,params:J,selector:te}))}async function tpt(t){return await oe.mktempPromise(async e=>{let r=Ke.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Nr(e,{configuration:r,check:!1,immutable:!1}))})}var kh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.fixed=ge.Boolean(\"-F,--fixed\",!1,{description:\"Store dependency tags as-is instead of resolving them\"});this.exact=ge.Boolean(\"-E,--exact\",!1,{description:\"Don't use any semver modifier on the resolved range\"});this.tilde=ge.Boolean(\"-T,--tilde\",!1,{description:\"Use the `~` semver modifier on the resolved range\"});this.caret=ge.Boolean(\"-C,--caret\",!1,{description:\"Use the `^` semver modifier on the resolved range\"});this.dev=ge.Boolean(\"-D,--dev\",!1,{description:\"Add a package as a dev dependency\"});this.peer=ge.Boolean(\"-P,--peer\",!1,{description:\"Add a package as a peer dependency\"});this.optional=ge.Boolean(\"-O,--optional\",!1,{description:\"Add / upgrade a package to an optional regular / peer dependency\"});this.preferDev=ge.Boolean(\"--prefer-dev\",!1,{description:\"Add / upgrade a package to a dev dependency\"});this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Reuse the specified package from other workspaces in the project\"});this.cached=ge.Boolean(\"--cached\",!1,{description:\"Reuse the highest version already used somewhere within the project\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ks(pl)});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.packages=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get(\"preferInteractive\"),p=A||r.get(\"preferReuse\"),h=h2(this,o),E=[p?\"reuse\":void 0,\"project\",this.cached?\"cache\":void 0,\"latest\"].filter(U=>typeof U<\"u\"),I=A?1/0:1,v=await Promise.all(this.packages.map(async U=>{let J=U.match(/^\\.{0,2}\\//)?await v8(U,{cwd:this.context.cwd,workspace:a}):W.tryParseDescriptor(U),te=U.match(/^(https?:|git@github)/);if(te)throw new it(`It seems you are trying to add a package using a ${de.pretty(r,`${te[0]}...`,de.Type.RANGE)} url; we now require package names to be explicitly specified.\nTry running the command again with the package name prefixed: ${de.pretty(r,\"yarn add\",de.Type.CODE)} ${de.pretty(r,W.makeDescriptor(W.makeIdent(null,\"my-package\"),`${te[0]}...`),de.Type.DESCRIPTOR)}`);if(!J)throw new it(`The ${de.pretty(r,U,de.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ae=rpt(a,J,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ae.map(async ce=>{let me=await g2(J,{project:o,workspace:a,cache:n,fixed:u,target:ce,modifier:h,strategies:E,maxResults:I});return{request:J,suggestedDescriptors:me,target:ce}}))})).then(U=>U.flat()),x=await AA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async U=>{for(let{request:J,suggestedDescriptors:{suggestions:te,rejections:ae}}of v)if(te.filter(ce=>ce.descriptor!==null).length===0){let[ce]=ae;if(typeof ce>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");o.configuration.get(\"enableNetwork\")?U.reportError(27,`${W.prettyDescriptor(r,J)} can't be resolved to a satisfying range`):U.reportError(27,`${W.prettyDescriptor(r,J)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),U.reportSeparator(),U.reportExceptionOnce(ce)}});if(x.hasErrors())return x.exitCode();let C=!1,R=[],N=[];for(let{suggestedDescriptors:{suggestions:U},target:J}of v){let te,ae=U.filter(he=>he.descriptor!==null),fe=ae[0].descriptor,ce=ae.every(he=>W.areDescriptorsEqual(he.descriptor,fe));ae.length===1||ce?te=fe:(C=!0,{answer:te}=await(0,H0e.prompt)({type:\"select\",name:\"answer\",message:\"Which range do you want to use?\",choices:U.map(({descriptor:he,name:Be,reason:we})=>he?{name:Be,hint:we,descriptor:he}:{name:Be,hint:we,disabled:!0}),onCancel:()=>process.exit(130),result(he){return this.find(he,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=a.manifest[J].get(te.identHash);(typeof me>\"u\"||me.descriptorHash!==te.descriptorHash)&&(a.manifest[J].set(te.identHash,te),this.optional&&(J===\"dependencies\"?a.manifest.ensureDependencyMeta({...te,range:\"unknown\"}).optional=!0:J===\"peerDependencies\"&&(a.manifest.ensurePeerDependencyMeta({...te,range:\"unknown\"}).optional=!0)),typeof me>\"u\"?R.push([a,J,te,E]):N.push([a,J,me,te]))}return await r.triggerMultipleHooks(U=>U.afterWorkspaceDependencyAddition,R),await r.triggerMultipleHooks(U=>U.afterWorkspaceDependencyReplacement,N),C&&this.context.stdout.write(`\n`),await o.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};kh.paths=[[\"add\"]],kh.usage=nt.Usage({description:\"add dependencies to the project\",details:\"\\n      This command adds a package to the package.json for the nearest workspace.\\n\\n      - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\\n\\n      - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\\n\\n      - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\\n\\n      - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\\\"peerDependenciesMeta\\\": { \\\"<package>\\\": { \\\"optional\\\": true } }`\\n\\n      - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\\n\\n      - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\\n\\n      If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\\n\\n      If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\\n    \",examples:[[\"Add a regular package to the current workspace\",\"$0 add lodash\"],[\"Add a specific version for a package to the current workspace\",\"$0 add lodash@1.2.3\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using a URL\",\"$0 add lodash@https://github.com/lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol\",\"$0 add lodash@github:lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash@lodash/lodash\"],[\"Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash-es@lodash/lodash#es\"]]});function rpt(t,e,{dev:r,peer:o,preferDev:a,optional:n}){let u=t.manifest[\"dependencies\"].has(e.identHash),A=t.manifest[\"devDependencies\"].has(e.identHash),p=t.manifest[\"peerDependencies\"].has(e.identHash);if((r||o)&&u)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!o&&p)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&A)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!o&&p)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return o&&h.push(\"peerDependencies\"),(r||a)&&h.push(\"devDependencies\"),n&&h.push(\"dependencies\"),h.length>0?h:A?[\"devDependencies\"]:p?[\"peerDependencies\"]:[\"dependencies\"]}Ye();Ye();jt();var Qh=class extends ut{constructor(){super(...arguments);this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Print both the binary name and the locator of the package that provides the binary\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.name=ge.String({required:!1})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await St.find(r,this.context.cwd);if(await o.restoreInstallState(),this.name){let A=(await un.getPackageAccessibleBinaries(a,{project:o})).get(this.name);if(!A)throw new it(`Couldn't find a binary named \"${this.name}\" for package \"${W.prettyLocator(r,a)}\"`);let[,p]=A;return this.context.stdout.write(`${p}\n`),0}return(await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout},async u=>{let A=await un.getPackageAccessibleBinaries(a,{project:o}),h=Array.from(A.keys()).reduce((E,I)=>Math.max(E,I.length),0);for(let[E,[I,v]]of A)u.reportJson({name:E,source:W.stringifyIdent(I),path:v});if(this.verbose)for(let[E,[I]]of A)u.reportInfo(null,`${E.padEnd(h,\" \")}   ${W.prettyLocator(r,I)}`);else for(let E of A.keys())u.reportInfo(null,E)})).exitCode()}};Qh.paths=[[\"bin\"]],Qh.usage=nt.Usage({description:\"get the path to a binary script\",details:`\n      When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \\`-v,--verbose\\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary.\n\n      When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive.\n    `,examples:[[\"List all the available binaries\",\"$0 bin\"],[\"Print the path to a specific binary\",\"$0 bin eslint\"]]});Ye();Pt();jt();var Fh=class extends ut{constructor(){super(...arguments);this.mirror=ge.Boolean(\"--mirror\",!1,{description:\"Remove the global cache files instead of the local cache files\"});this.all=ge.Boolean(\"--all\",!1,{description:\"Remove both the global cache files and the local cache files of the current project\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await Nr.find(r);return(await Lt.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&o.mirrorCwd!==null,u=!this.mirror;n&&(await oe.removePromise(o.mirrorCwd),await r.triggerHook(A=>A.cleanGlobalArtifacts,r)),u&&await oe.removePromise(o.cwd)})).exitCode()}};Fh.paths=[[\"cache\",\"clean\"],[\"cache\",\"clear\"]],Fh.usage=nt.Usage({description:\"remove the shared cache files\",details:`\n      This command will remove all the files from the cache.\n    `,examples:[[\"Remove all the local archives\",\"$0 cache clean\"],[\"Remove all the archives stored in the ~/.yarn directory\",\"$0 cache clean --mirror\"]]});Ye();jt();var q0e=$e(d2()),P8=ve(\"util\"),Rh=class extends ut{constructor(){super(...arguments);this.why=ge.Boolean(\"--why\",!1,{description:\"Print the explanation for why a setting has its value\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.unsafe=ge.Boolean(\"--no-redacted\",!1,{description:\"Don't redact secrets (such as tokens) from the output\"});this.name=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=this.name.replace(/[.[].*$/,\"\"),a=this.name.replace(/^[^.[]*/,\"\");if(typeof r.settings.get(o)>\"u\")throw new it(`Couldn't find a configuration settings named \"${o}\"`);let u=r.getSpecial(o,{hideSecrets:!this.unsafe,getNativePaths:!0}),A=_e.convertMapsToIndexableObjects(u),p=a?(0,q0e.default)(A,a):A,h=await Lt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p==\"string\")return this.context.stdout.write(`${p}\n`),h.exitCode();P8.inspect.styles.name=\"cyan\",this.context.stdout.write(`${(0,P8.inspect)(p,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}\n`)}return h.exitCode()}};Rh.paths=[[\"config\",\"get\"]],Rh.usage=nt.Usage({description:\"read a configuration settings\",details:`\n      This command will print a configuration setting.\n\n      Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \\`--no-redacted\\` to get the untransformed value.\n    `,examples:[[\"Print a simple configuration setting\",\"yarn config get yarnPath\"],[\"Print a complex configuration setting\",\"yarn config get packageExtensions\"],[\"Print a nested field from the configuration\",`yarn config get 'npmScopes[\"my-company\"].npmRegistryServer'`],[\"Print a token from the configuration\",\"yarn config get npmAuthToken --no-redacted\"],[\"Print a configuration setting as JSON\",\"yarn config get packageExtensions --json\"]]});Ye();jt();var Rge=$e(k8()),Tge=$e(d2()),Lge=$e(Q8()),F8=ve(\"util\"),Th=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Set complex configuration settings to JSON values\"});this.home=ge.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=ge.String();this.value=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new it(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new it(`Couldn't find a configuration settings named \"${a}\"`);if(a===\"enableStrictSettings\")throw new it(\"This setting only affects the file it's in, and thus cannot be set from the CLI\");let A=this.json?JSON.parse(this.value):this.value;await(this.home?C=>Ke.updateHomeConfiguration(C):C=>Ke.updateConfiguration(o(),C))(C=>{if(n){let R=(0,Rge.default)(C);return(0,Lge.default)(R,this.name,A),R}else return{...C,[a]:A}});let E=(await Ke.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),I=_e.convertMapsToIndexableObjects(E),v=n?(0,Tge.default)(I,n):I;return(await Lt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async C=>{F8.inspect.styles.name=\"cyan\",C.reportInfo(0,`Successfully set ${this.name} to ${(0,F8.inspect)(v,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}`)})).exitCode()}};Th.paths=[[\"config\",\"set\"]],Th.usage=nt.Usage({description:\"change a configuration settings\",details:`\n      This command will set a configuration setting.\n\n      When used without the \\`--json\\` flag, it can only set a simple configuration setting (a string, a number, or a boolean).\n\n      When used with the \\`--json\\` flag, it can set both simple and complex configuration settings, including Arrays and Objects.\n    `,examples:[[\"Set a simple configuration setting (a string, a number, or a boolean)\",\"yarn config set initScope myScope\"],[\"Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag\",'yarn config set initScope --json \\\\\"myScope\\\\\"'],[\"Set a complex configuration setting (an Array) using the `--json` flag\",`yarn config set unsafeHttpWhitelist --json '[\"*.example.com\", \"example.com\"]'`],[\"Set a complex configuration setting (an Object) using the `--json` flag\",`yarn config set packageExtensions --json '{ \"@babel/parser@*\": { \"dependencies\": { \"@babel/types\": \"*\" } } }'`],[\"Set a nested configuration setting\",'yarn config set npmScopes.company.npmRegistryServer \"https://npm.example.com\"'],[\"Set a nested configuration setting using indexed access for non-simple keys\",`yarn config set 'npmRegistries[\"//npm.example.com\"].npmAuthToken' \"ffffffff-ffff-ffff-ffff-ffffffffffff\"`]]});Ye();jt();var Wge=$e(k8()),Kge=$e(Uge()),Vge=$e(T8()),Lh=class extends ut{constructor(){super(...arguments);this.home=ge.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new it(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new it(`Couldn't find a configuration settings named \"${a}\"`);let A=this.home?h=>Ke.updateHomeConfiguration(h):h=>Ke.updateConfiguration(o(),h);return(await Lt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await A(I=>{if(!(0,Kge.default)(I,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,I;let v=n?(0,Wge.default)(I):{...I};return(0,Vge.default)(v,this.name),v}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};Lh.paths=[[\"config\",\"unset\"]],Lh.usage=nt.Usage({description:\"unset a configuration setting\",details:`\n      This command will unset a configuration setting.\n    `,examples:[[\"Unset a simple configuration setting\",\"yarn config unset initScope\"],[\"Unset a complex configuration setting\",\"yarn config unset packageExtensions\"],[\"Unset a nested configuration setting\",\"yarn config unset npmScopes.company.npmRegistryServer\"]]});Ye();Pt();jt();var fk=ve(\"util\"),Nh=class extends ut{constructor(){super(...arguments);this.noDefaults=ge.Boolean(\"--no-defaults\",!1,{description:\"Omit the default values from the display\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.verbose=ge.Boolean(\"-v,--verbose\",{hidden:!0});this.why=ge.Boolean(\"--why\",{hidden:!0});this.names=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins,{strict:!1}),o=await NE({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:\"The --verbose option is deprecated, the settings' descriptions are now always displayed\"},{option:this.why,message:\"The --why option is deprecated, the settings' sources are now always displayed\"}]);if(o!==null)return o;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,u=await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async A=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)A.reportError(34,`Invalid configuration key \"${p}\" in ${h}`);A.reportSeparator()}if(this.json)for(let p of a){let h=r.settings.get(p);typeof h>\"u\"&&A.reportError(34,`No configuration key named \"${p}\"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),I=r.sources.get(p)??\"<default>\",v=I&&I[0]!==\"<\"?ue.fromPortablePath(I):I;A.reportJson({key:p,effective:E,source:v,...h})}else{let p={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},h={},E={children:h};for(let I of a){if(this.noDefaults&&!r.sources.has(I))continue;let v=r.settings.get(I),x=r.sources.get(I)??\"<default>\",C=r.getSpecial(I,{hideSecrets:!0,getNativePaths:!0}),R={Description:{label:\"Description\",value:de.tuple(de.Type.MARKDOWN,{text:v.description,format:this.cli.format(),paragraphs:!1})},Source:{label:\"Source\",value:de.tuple(x[0]===\"<\"?de.Type.CODE:de.Type.PATH,x)}};h[I]={value:de.tuple(de.Type.CODE,I),children:R};let N=(U,J)=>{for(let[te,ae]of J)if(ae instanceof Map){let fe={};U[te]={children:fe},N(fe,ae)}else U[te]={label:te,value:de.tuple(de.Type.NO_HINT,(0,fk.inspect)(ae,p))}};C instanceof Map?N(R,C):R.Value={label:\"Value\",value:de.tuple(de.Type.NO_HINT,(0,fk.inspect)(C,p))}}a.length!==1&&(n=void 0),$s.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<\"u\"){let A=a[0],p=(0,fk.inspect)(r.getSpecial(A,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get(\"enableColors\")});this.context.stdout.write(`\n`),this.context.stdout.write(`${p}\n`)}return u.exitCode()}};Nh.paths=[[\"config\"]],Nh.usage=nt.Usage({description:\"display the current configuration\",details:`\n      This command prints the current active configuration settings.\n    `,examples:[[\"Print the active configuration settings\",\"$0 config\"]]});Ye();jt();Za();var pk={};Vt(pk,{Strategy:()=>m2,acceptedStrategies:()=>M0t,dedupe:()=>L8});Ye();Ye();var Jge=$e(Zo()),m2=(e=>(e.HIGHEST=\"highest\",e))(m2||{}),M0t=new Set(Object.values(m2)),U0t={highest:async(t,e,{resolver:r,fetcher:o,resolveOptions:a,fetchOptions:n})=>{let u=new Map;for(let[p,h]of t.storedResolutions){let E=t.storedDescriptors.get(p);if(typeof E>\"u\")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);_e.getSetWithDefault(u,E.identHash).add(h)}let A=new Map(_e.mapAndFilter(t.storedDescriptors.values(),p=>W.isVirtualDescriptor(p)?_e.mapAndFilter.skip:[p.descriptorHash,_e.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=A.get(p.descriptorHash);if(typeof h>\"u\")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=t.storedResolutions.get(p.descriptorHash);if(typeof E>\"u\")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let I=t.originalPackages.get(E);if(typeof I>\"u\")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let v=r.getResolutionDependencies(p,a),x=Object.fromEntries(await _e.allSettledSafe(Object.entries(v).map(async([te,ae])=>{let fe=A.get(ae.descriptorHash);if(typeof fe>\"u\")throw new Error(`Assertion failed: The descriptor (${ae.descriptorHash}) should have been registered`);let ce=await fe.promise;if(!ce)throw new Error(\"Assertion failed: Expected the dependency to have been through the dedupe process itself\");return[te,ce.updatedPackage]})));if(e.length&&!Jge.default.isMatch(W.stringifyIdent(p),e)||!r.shouldPersistResolution(I,a))return I;let C=u.get(p.identHash);if(typeof C>\"u\")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(C.size===1)return I;let R=[...C].map(te=>{let ae=t.originalPackages.get(te);if(typeof ae>\"u\")throw new Error(`Assertion failed: The package (${te}) should have been registered`);return ae}),N=await r.getSatisfying(p,x,R,a),U=N.locators?.[0];if(typeof U>\"u\"||!N.sorted)return I;let J=t.originalPackages.get(U.locatorHash);if(typeof J>\"u\")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return J}).then(async v=>{let x=await t.preparePackage(v,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:I,updatedPackage:v,resolvedPackage:x})}).catch(v=>{h.reject(v)})}return[...A.values()].map(p=>p.promise)}};async function L8(t,{strategy:e,patterns:r,cache:o,report:a}){let{configuration:n}=t,u=new Qi,A=n.makeResolver(),p=n.makeFetcher(),h={cache:o,checksums:t.storedChecksums,fetcher:p,project:t,report:u,cacheOptions:{skipIntegrityCheck:!0}},E={project:t,resolver:A,report:u,fetchOptions:h};return await a.startTimerPromise(\"Deduplication step\",async()=>{let I=U0t[e],v=await I(t,r,{resolver:A,resolveOptions:E,fetcher:p,fetchOptions:h}),x=Xs.progressViaCounter(v.length);await a.reportProgress(x);let C=0;await Promise.all(v.map(U=>U.then(J=>{if(J===null||J.currentPackage.locatorHash===J.updatedPackage.locatorHash)return;C++;let{descriptor:te,currentPackage:ae,updatedPackage:fe}=J;a.reportInfo(0,`${W.prettyDescriptor(n,te)} can be deduped from ${W.prettyLocator(n,ae)} to ${W.prettyLocator(n,fe)}`),a.reportJson({descriptor:W.stringifyDescriptor(te),currentResolution:W.stringifyLocator(ae),updatedResolution:W.stringifyLocator(fe)}),t.storedResolutions.set(te.descriptorHash,fe.locatorHash)}).finally(()=>x.tick())));let R;switch(C){case 0:R=\"No packages\";break;case 1:R=\"One package\";break;default:R=`${C} packages`}let N=de.pretty(n,e,de.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${N} strategy`),C})}var Oh=class extends ut{constructor(){super(...arguments);this.strategy=ge.String(\"-s,--strategy\",\"highest\",{description:\"The strategy to use when deduping dependencies\",validator:Ks(m2)});this.check=ge.Boolean(\"-c,--check\",!1,{description:\"Exit with exit code 1 when duplicates are found, without persisting the dependency tree\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ks(pl)});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),a=await Nr.find(r);await o.restoreInstallState({restoreResolutions:!1});let n=0,u=await Lt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async A=>{n=await L8(o,{strategy:this.strategy,patterns:this.patterns,cache:a,report:A})});return u.hasErrors()?u.exitCode():this.check?n?1:0:await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};Oh.paths=[[\"dedupe\"]],Oh.usage=nt.Usage({description:\"deduplicate dependencies with overlapping ranges\",details:\"\\n      Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\\n\\n      This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\\n\\n      - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\\n\\n      **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\\n\\n      If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      ### In-depth explanation:\\n\\n      Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\\n\\n      Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\\n    \",examples:[[\"Dedupe all packages\",\"$0 dedupe\"],[\"Dedupe all packages using a specific strategy\",\"$0 dedupe --strategy highest\"],[\"Dedupe a specific package\",\"$0 dedupe lodash\"],[\"Dedupe all packages with the `@babel/*` scope\",\"$0 dedupe '@babel/*'\"],[\"Check for duplicates (can be used as a CI step)\",\"$0 dedupe --check\"]]});Ye();jt();var Kd=class extends ut{async execute(){let{plugins:e}=await Ke.find(this.context.cwd,this.context.plugins),r=[];for(let u of e){let{commands:A}=u[1];if(A){let h=as.from(A).definitions();r.push([u[0],h])}}let o=this.cli.definitions(),a=(u,A)=>u.split(\" \").slice(1).join()===A.split(\" \").slice(1).join(),n=zge()[\"@yarnpkg/builder\"].bundles.standard;for(let u of r){let A=u[1];for(let p of A)o.find(h=>a(h.path,p.path)).plugin={name:u[0],isDefault:n.includes(u[0])}}this.context.stdout.write(`${JSON.stringify(o,null,2)}\n`)}};Kd.paths=[[\"--clipanion=definitions\"]];var Vd=class extends ut{async execute(){this.context.stdout.write(this.cli.usage(null))}};Vd.paths=[[\"help\"],[\"--help\"],[\"-h\"]];Ye();Pt();jt();var mC=class extends ut{constructor(){super(...arguments);this.leadingArgument=ge.String();this.args=ge.Proxy()}async execute(){if(this.leadingArgument.match(/[\\\\/]/)&&!W.tryParseIdent(this.leadingArgument)){let r=V.resolve(this.context.cwd,ue.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run([\"run\",this.leadingArgument,...this.args])}};Ye();var Jd=class extends ut{async execute(){this.context.stdout.write(`${rn||\"<unknown>\"}\n`)}};Jd.paths=[[\"-v\"],[\"--version\"]];Ye();Ye();jt();var Mh=class extends ut{constructor(){super(...arguments);this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await St.find(r,this.context.cwd);return await o.restoreInstallState(),await un.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:o})}};Mh.paths=[[\"exec\"]],Mh.usage=nt.Usage({description:\"execute a shell script\",details:`\n      This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell.\n\n      It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n    `,examples:[[\"Execute a single shell command\",\"$0 exec echo Hello World\"],[\"Execute a shell script\",'$0 exec \"tsc & babel src --out-dir lib\"']]});Ye();jt();Za();var Uh=class extends ut{constructor(){super(...arguments);this.hash=ge.String({validator:oP(Cy(),[oI(/^p[0-9a-f]{5}$/)])})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd);return await o.restoreInstallState({restoreResolutions:!1}),await o.applyLightResolution(),await H0t(this.hash,o,{stdout:this.context.stdout})}};Uh.paths=[[\"explain\",\"peer-requirements\"]],Uh.usage=nt.Usage({description:\"explain a set of peer requirements\",details:`\n      A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants.\n\n      When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not.\n\n      When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set.\n\n      **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\\`yarn explain peer-requirements\\`).\n    `,examples:[[\"Explain the corresponding set of peer requirements for a hash\",\"$0 explain peer-requirements p1a4ed\"],[\"List all sets of peer requirements\",\"$0 explain peer-requirements\"]]});async function H0t(t,e,r){let o=e.peerWarnings.find(n=>n.hash===t);if(typeof o>\"u\")throw new Error(`No peerDependency requirements found for hash: \"${t}\"`);return(await Lt.start({configuration:e.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async n=>{let u=de.mark(e.configuration);switch(o.type){case 2:{n.reportInfo(0,`We have a problem with ${de.pretty(e.configuration,o.requested,de.Type.IDENT)}, which is provided with version ${W.prettyReference(e.configuration,o.version)}.`),n.reportInfo(0,\"It is needed by the following direct dependencies of workspaces in your project:\"),n.reportSeparator();for(let h of o.requesters.values()){let E=e.storedPackages.get(h.locatorHash);if(!E)throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E?.peerDependencies.get(o.requested.identHash);if(!I)throw new Error(\"Assertion failed: Expected the package to list the peer dependency\");let v=kr.satisfiesWithPrereleases(o.version,I.range)?u.Check:u.Cross;n.reportInfo(null,`  ${v} ${W.prettyLocator(e.configuration,h)} (via ${W.prettyRange(e.configuration,I.range)})`)}let A=[...o.links.values()].filter(h=>!o.requesters.has(h.locatorHash));if(A.length>0){n.reportSeparator(),n.reportInfo(0,`However, those packages themselves have more dependencies listing ${W.prettyIdent(e.configuration,o.requested)} as peer dependency:`),n.reportSeparator();for(let h of A){let E=e.storedPackages.get(h.locatorHash);if(!E)throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E?.peerDependencies.get(o.requested.identHash);if(!I)throw new Error(\"Assertion failed: Expected the package to list the peer dependency\");let v=kr.satisfiesWithPrereleases(o.version,I.range)?u.Check:u.Cross;n.reportInfo(null,`  ${v} ${W.prettyLocator(e.configuration,h)} (via ${W.prettyRange(e.configuration,I.range)})`)}}let p=Array.from(o.links.values(),h=>{let E=e.storedPackages.get(h.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E.peerDependencies.get(o.requested.identHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");return I.range});if(p.length>1){let h=kr.simplifyRanges(p);n.reportSeparator(),h===null?(n.reportInfo(0,\"Unfortunately, put together, we found no single range that can satisfy all those peer requirements.\"),n.reportInfo(0,`Your best option may be to try to upgrade some dependencies with ${de.pretty(e.configuration,\"yarn up\",de.Type.CODE)}, or silence the warning via ${de.pretty(e.configuration,\"logFilters\",de.Type.CODE)}.`)):n.reportInfo(0,`Put together, the final range we computed is ${de.pretty(e.configuration,h,de.Type.RANGE)}`)}}break;default:n.reportInfo(0,`The ${de.pretty(e.configuration,\"yarn explain peer-requirements\",de.Type.CODE)} command doesn't support this warning type yet.`);break}})).exitCode()}Ye();jt();Za();Ye();Ye();Pt();jt();var Xge=$e(zn()),_h=class extends ut{constructor(){super(...arguments);this.useYarnPath=ge.Boolean(\"--yarn-path\",{description:\"Set the yarnPath setting even if the version can be accessed by Corepack\"});this.onlyIfNeeded=ge.Boolean(\"--only-if-needed\",!1,{description:\"Only lock the Yarn version if it isn't already locked\"});this.version=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get(\"yarnPath\")){let A=r.sources.get(\"yarnPath\");if(!A)throw new Error(\"Assertion failed: Expected 'yarnPath' to have a source\");let p=r.projectCwd??r.startingCwd;if(V.contains(p,A))return 0}let o=()=>{if(typeof rn>\"u\")throw new it(\"The --install flag can only be used without explicit version specifier from the Yarn CLI\");return`file://${process.argv[1]}`},a,n=(A,p)=>({version:p,url:A.replace(/\\{\\}/g,p)});if(this.version===\"self\")a={url:o(),version:rn??\"self\"};else if(this.version===\"latest\"||this.version===\"berry\"||this.version===\"stable\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await y2(r,\"stable\"));else if(this.version===\"canary\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await y2(r,\"canary\"));else if(this.version===\"classic\")a={url:\"https://classic.yarnpkg.com/latest.js\",version:\"classic\"};else if(this.version.match(/^https?:/))a={url:this.version,version:\"remote\"};else if(this.version.match(/^\\.{0,2}[\\\\/]/)||ue.isAbsolute(this.version))a={url:`file://${V.resolve(ue.toPortablePath(this.version))}`,version:\"file\"};else if(kr.satisfiesWithPrereleases(this.version,\">=2.0.0\"))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",this.version);else if(kr.satisfiesWithPrereleases(this.version,\"^0.x || ^1.x\"))a=n(\"https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js\",this.version);else if(kr.validRange(this.version))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await j0t(r,this.version));else throw new it(`Invalid version descriptor \"${this.version}\"`);return(await Lt.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async A=>{let p=async()=>{let h=\"file://\";return a.url.startsWith(h)?(A.reportInfo(0,`Retrieving ${de.pretty(r,a.url,de.Type.PATH)}`),await oe.readFilePromise(a.url.slice(h.length))):(A.reportInfo(0,`Downloading ${de.pretty(r,a.url,de.Type.URL)}`),await nn.get(a.url,{configuration:r}))};await N8(r,a.version,p,{report:A,useYarnPath:this.useYarnPath})})).exitCode()}};_h.paths=[[\"set\",\"version\"]],_h.usage=nt.Usage({description:\"lock the Yarn version used by the project\",details:\"\\n      This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\\n\\n      By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\\n\\n      A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\\n\\n      The version specifier can be:\\n\\n      - a tag:\\n        - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\\n        - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\\n        - `classic` -> the most recent classic (`^0.x || ^1.x`) release\\n\\n      - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\\n\\n      - a semver version (e.g. `2.4.1`, `1.22.1`)\\n\\n      - a local file referenced through either a relative or absolute path\\n\\n      - `self` -> the version used to invoke the command\\n    \",examples:[[\"Download the latest release from the Yarn repository\",\"$0 set version latest\"],[\"Download the latest canary release from the Yarn repository\",\"$0 set version canary\"],[\"Download the latest classic release from the Yarn repository\",\"$0 set version classic\"],[\"Download the most recent Yarn 3 build\",\"$0 set version 3.x\"],[\"Download a specific Yarn 2 build\",\"$0 set version 2.0.0-rc.30\"],[\"Switch back to a specific Yarn 1 release\",\"$0 set version 1.22.1\"],[\"Use a release from the local filesystem\",\"$0 set version ./yarn.cjs\"],[\"Use a release from a URL\",\"$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js\"],[\"Download the version used to invoke the command\",\"$0 set version self\"]]});async function j0t(t,e){let o=(await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0})).tags.filter(a=>kr.satisfiesWithPrereleases(a,e));if(o.length===0)throw new it(`No matching release found for range ${de.pretty(t,e,de.Type.RANGE)}.`);return o[0]}async function y2(t,e){let r=await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new it(`Tag ${de.pretty(t,e,de.Type.RANGE)} not found`);return r.latest[e]}async function N8(t,e,r,{report:o,useYarnPath:a}){let n,u=async()=>(typeof n>\"u\"&&(n=await r()),n);if(e===null){let te=await u();await oe.mktempPromise(async ae=>{let fe=V.join(ae,\"yarn.cjs\");await oe.writeFilePromise(fe,te);let{stdout:ce}=await Ur.execvp(process.execPath,[ue.fromPortablePath(fe),\"--version\"],{cwd:ae,env:{...t.env,YARN_IGNORE_PATH:\"1\"}});if(e=ce.trim(),!Xge.default.valid(e))throw new Error(`Invalid semver version. ${de.pretty(t,\"yarn --version\",de.Type.CODE)} returned:\n${e}`)})}let A=t.projectCwd??t.startingCwd,p=V.resolve(A,\".yarn/releases\"),h=V.resolve(p,`yarn-${e}.cjs`),E=V.relative(t.startingCwd,h),I=_e.isTaggedYarnVersion(e),v=t.get(\"yarnPath\"),x=!I,C=x||!!v||!!a;if(a===!1){if(x)throw new zt(0,\"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack\");C=!1}else!C&&!process.env.COREPACK_ROOT&&(o.reportWarning(0,`You don't seem to have ${de.applyHyperlink(t,\"Corepack\",\"https://nodejs.org/api/corepack.html\")} enabled; we'll have to rely on ${de.applyHyperlink(t,\"yarnPath\",\"https://yarnpkg.com/configuration/yarnrc#yarnPath\")} instead`),C=!0);if(C){let te=await u();o.reportInfo(0,`Saving the new release in ${de.pretty(t,E,\"magenta\")}`),await oe.removePromise(V.dirname(h)),await oe.mkdirPromise(V.dirname(h),{recursive:!0}),await oe.writeFilePromise(h,te,{mode:493}),await Ke.updateConfiguration(A,{yarnPath:V.relative(A,h)})}else await oe.removePromise(V.dirname(h)),await Ke.updateConfiguration(A,{yarnPath:Ke.deleteProperty});let R=await Ot.tryFind(A)||new Ot;R.packageManager=`yarn@${I?e:await y2(t,\"stable\")}`;let N={};R.exportTo(N);let U=V.join(A,Ot.fileName),J=`${JSON.stringify(N,null,R.indent)}\n`;return await oe.changeFilePromise(U,J,{automaticNewlines:!0}),{bundleVersion:e}}function Zge(t){return wr[AP(t)]}var q0t=/## (?<code>YN[0-9]{4}) - `(?<name>[A-Z_]+)`\\n\\n(?<details>(?:.(?!##))+)/gs;async function G0t(t){let r=`https://repo.yarnpkg.com/${_e.isTaggedYarnVersion(rn)?rn:await y2(t,\"canary\")}/packages/gatsby/content/advanced/error-codes.md`,o=await nn.get(r,{configuration:t});return new Map(Array.from(o.toString().matchAll(q0t),({groups:a})=>{if(!a)throw new Error(\"Assertion failed: Expected the match to have been successful\");let n=Zge(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected \"${a.name}\" to be named \"${n}\"`);return[a.code,a.details]}))}var Hh=class extends ut{constructor(){super(...arguments);this.code=ge.String({required:!1,validator:aI(Cy(),[oI(/^YN[0-9]{4}$/)])});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);if(typeof this.code<\"u\"){let o=Zge(this.code),a=de.pretty(r,o,de.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),A=(await G0t(r)).get(this.code),p=typeof A<\"u\"?de.jsonOrPretty(this.json,r,de.tuple(de.Type.MARKDOWN,{text:A,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description.\n\nYou can help us by editing this page on GitHub \\u{1F642}:\n${de.jsonOrPretty(this.json,r,de.tuple(de.Type.URL,\"https://github.com/yarnpkg/berry/blob/master/packages/gatsby/content/advanced/error-codes.md\"))}\n`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:o,details:p})}\n`):this.context.stdout.write(`${n}\n\n${p}\n`)}else{let o={children:_e.mapAndFilter(Object.entries(wr),([a,n])=>Number.isNaN(Number(a))?_e.mapAndFilter.skip:{label:Wu(Number(a)),value:de.tuple(de.Type.CODE,n)})};$s.emitTree(o,{configuration:r,stdout:this.context.stdout,json:this.json})}}};Hh.paths=[[\"explain\"]],Hh.usage=nt.Usage({description:\"explain an error code\",details:`\n      When the code argument is specified, this command prints its name and its details.\n\n      When used without arguments, this command lists all error codes and their names.\n    `,examples:[[\"Explain an error code\",\"$0 explain YN0006\"],[\"List all error codes\",\"$0 explain\"]]});Ye();Pt();jt();var $ge=$e(Zo()),jh=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Print versions of a package from the whole project\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Print information for all packages, including transitive dependencies\"});this.extra=ge.Array(\"-X,--extra\",[],{description:\"An array of requests of extra data provided by plugins\"});this.cache=ge.Boolean(\"--cache\",!1,{description:\"Print information about the cache entry of a package (path, size, checksum)\"});this.dependents=ge.Boolean(\"--dependents\",!1,{description:\"Print all dependents for each matching package\"});this.manifest=ge.Boolean(\"--manifest\",!1,{description:\"Print data obtained by looking at the package archive (license, homepage, ...)\"});this.nameOnly=ge.Boolean(\"--name-only\",!1,{description:\"Only print the name for the matching packages\"});this.virtuals=ge.Boolean(\"--virtuals\",!1,{description:\"Print each instance of the virtual packages\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(!a&&!this.all)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let u=new Set(this.extra);this.cache&&u.add(\"cache\"),this.dependents&&u.add(\"dependents\"),this.manifest&&u.add(\"manifest\");let A=(ae,{recursive:fe})=>{let ce=ae.anchoredLocator.locatorHash,me=new Map,he=[ce];for(;he.length>0;){let Be=he.shift();if(me.has(Be))continue;let we=o.storedPackages.get(Be);if(typeof we>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");if(me.set(Be,we),W.isVirtualLocator(we)&&he.push(W.devirtualizeLocator(we).locatorHash),!(!fe&&Be!==ce))for(let g of we.dependencies.values()){let Ee=o.storedResolutions.get(g.descriptorHash);if(typeof Ee>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");he.push(Ee)}}return me.values()},p=({recursive:ae})=>{let fe=new Map;for(let ce of o.workspaces)for(let me of A(ce,{recursive:ae}))fe.set(me.locatorHash,me);return fe.values()},h=({all:ae,recursive:fe})=>ae&&fe?o.storedPackages.values():ae?p({recursive:fe}):A(a,{recursive:fe}),E=({all:ae,recursive:fe})=>{let ce=h({all:ae,recursive:fe}),me=this.patterns.map(we=>{let g=W.parseLocator(we),Ee=$ge.default.makeRe(W.stringifyIdent(g)),Pe=W.isVirtualLocator(g),le=Pe?W.devirtualizeLocator(g):g;return ne=>{let ee=W.stringifyIdent(ne);if(!Ee.test(ee))return!1;if(g.reference===\"unknown\")return!0;let Ie=W.isVirtualLocator(ne),Fe=Ie?W.devirtualizeLocator(ne):ne;return!(Pe&&Ie&&g.reference!==ne.reference||le.reference!==Fe.reference)}}),he=_e.sortMap([...ce],we=>W.stringifyLocator(we));return{selection:he.filter(we=>me.length===0||me.some(g=>g(we))),sortedLookup:he}},{selection:I,sortedLookup:v}=E({all:this.all,recursive:this.recursive});if(I.length===0)throw new it(\"No package matched your request\");let x=new Map;if(this.dependents)for(let ae of v)for(let fe of ae.dependencies.values()){let ce=o.storedResolutions.get(fe.descriptorHash);if(typeof ce>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");_e.getArrayWithDefault(x,ce).push(ae)}let C=new Map;for(let ae of v){if(!W.isVirtualLocator(ae))continue;let fe=W.devirtualizeLocator(ae);_e.getArrayWithDefault(C,fe.locatorHash).push(ae)}let R={},N={children:R},U=r.makeFetcher(),J={project:o,fetcher:U,cache:n,checksums:o.storedChecksums,report:new Qi,cacheOptions:{skipIntegrityCheck:!0}},te=[async(ae,fe,ce)=>{if(!fe.has(\"manifest\"))return;let me=await U.fetch(ae,J),he;try{he=await Ot.find(me.prefixPath,{baseFs:me.packageFs})}finally{me.releaseFs?.()}ce(\"Manifest\",{License:de.tuple(de.Type.NO_HINT,he.license),Homepage:de.tuple(de.Type.URL,he.raw.homepage??null)})},async(ae,fe,ce)=>{if(!fe.has(\"cache\"))return;let me=o.storedChecksums.get(ae.locatorHash)??null,he=n.getLocatorPath(ae,me),Be;if(he!==null)try{Be=await oe.statPromise(he)}catch{}let we=typeof Be<\"u\"?[Be.size,de.Type.SIZE]:void 0;ce(\"Cache\",{Checksum:de.tuple(de.Type.NO_HINT,me),Path:de.tuple(de.Type.PATH,he),Size:we})}];for(let ae of I){let fe=W.isVirtualLocator(ae);if(!this.virtuals&&fe)continue;let ce={},me={value:[ae,de.Type.LOCATOR],children:ce};if(R[W.stringifyLocator(ae)]=me,this.nameOnly){delete me.children;continue}let he=C.get(ae.locatorHash);typeof he<\"u\"&&(ce.Instances={label:\"Instances\",value:de.tuple(de.Type.NUMBER,he.length)}),ce.Version={label:\"Version\",value:de.tuple(de.Type.NO_HINT,ae.version)};let Be=(g,Ee)=>{let Pe={};if(ce[g]=Pe,Array.isArray(Ee))Pe.children=Ee.map(le=>({value:le}));else{let le={};Pe.children=le;for(let[ne,ee]of Object.entries(Ee))typeof ee>\"u\"||(le[ne]={label:ne,value:ee})}};if(!fe){for(let g of te)await g(ae,u,Be);await r.triggerHook(g=>g.fetchPackageInfo,ae,u,Be)}ae.bin.size>0&&!fe&&Be(\"Exported Binaries\",[...ae.bin.keys()].map(g=>de.tuple(de.Type.PATH,g)));let we=x.get(ae.locatorHash);typeof we<\"u\"&&we.length>0&&Be(\"Dependents\",we.map(g=>de.tuple(de.Type.LOCATOR,g))),ae.dependencies.size>0&&!fe&&Be(\"Dependencies\",[...ae.dependencies.values()].map(g=>{let Ee=o.storedResolutions.get(g.descriptorHash),Pe=typeof Ee<\"u\"?o.storedPackages.get(Ee)??null:null;return de.tuple(de.Type.RESOLUTION,{descriptor:g,locator:Pe})})),ae.peerDependencies.size>0&&fe&&Be(\"Peer dependencies\",[...ae.peerDependencies.values()].map(g=>{let Ee=ae.dependencies.get(g.identHash),Pe=typeof Ee<\"u\"?o.storedResolutions.get(Ee.descriptorHash)??null:null,le=Pe!==null?o.storedPackages.get(Pe)??null:null;return de.tuple(de.Type.RESOLUTION,{descriptor:g,locator:le})}))}$s.emitTree(N,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};jh.paths=[[\"info\"]],jh.usage=nt.Usage({description:\"see information related to packages\",details:\"\\n      This command prints various information related to the specified packages, accepting glob patterns.\\n\\n      By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\\n\\n      Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\\n\\n      Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\\n    \",examples:[[\"Show information about Lodash\",\"$0 info lodash\"]]});Ye();Pt();Ll();var hk=$e(td());jt();var O8=$e(zn());Za();var Y0t=[{selector:t=>t===-1,name:\"nodeLinker\",value:\"node-modules\"},{selector:t=>t!==-1&&t<8,name:\"enableGlobalCache\",value:!1},{selector:t=>t!==-1&&t<8,name:\"compressionLevel\",value:\"mixed\"}],qh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.immutable=ge.Boolean(\"--immutable\",{description:\"Abort with an error exit code if the lockfile was to be modified\"});this.immutableCache=ge.Boolean(\"--immutable-cache\",{description:\"Abort with an error exit code if the cache folder was to be modified\"});this.refreshLockfile=ge.Boolean(\"--refresh-lockfile\",{description:\"Refresh the package metadata stored in the lockfile\"});this.checkCache=ge.Boolean(\"--check-cache\",{description:\"Always refetch the packages and ensure that their checksums are consistent\"});this.checkResolutions=ge.Boolean(\"--check-resolutions\",{description:\"Validates that the package resolutions are coherent\"});this.inlineBuilds=ge.Boolean(\"--inline-builds\",{description:\"Verbosely print the output of the build steps of dependencies\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ks(pl)});this.cacheFolder=ge.String(\"--cache-folder\",{hidden:!0});this.frozenLockfile=ge.Boolean(\"--frozen-lockfile\",{hidden:!0});this.ignoreEngines=ge.Boolean(\"--ignore-engines\",{hidden:!0});this.nonInteractive=ge.Boolean(\"--non-interactive\",{hidden:!0});this.preferOffline=ge.Boolean(\"--prefer-offline\",{hidden:!0});this.production=ge.Boolean(\"--production\",{hidden:!0});this.registry=ge.String(\"--registry\",{hidden:!0});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.networkTimeout=ge.String(\"--network-timeout\",{hidden:!0})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<\"u\"&&r.useWithSource(\"<cli>\",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let o=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await NE({configuration:r,stdout:this.context.stdout},[{option:this.ignoreEngines,message:\"The --ignore-engines option is deprecated; engine checking isn't a core feature anymore\",error:!hk.default.VERCEL},{option:this.registry,message:\"The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file\"},{option:this.preferOffline,message:\"The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead\",error:!hk.default.VERCEL},{option:this.production,message:\"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead\",error:!0},{option:this.nonInteractive,message:\"The --non-interactive option is deprecated\",error:!o},{option:this.frozenLockfile,message:\"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead\",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:\"The cache-folder option has been deprecated; use rc settings instead\",error:!hk.default.NETLIFY}]);if(a!==null)return a;let n=this.mode===\"update-lockfile\";if(n&&(this.immutable||this.immutableCache))throw new it(`${de.pretty(r,\"--immutable\",de.Type.CODE)} and ${de.pretty(r,\"--immutable-cache\",de.Type.CODE)} cannot be used with ${de.pretty(r,\"--mode=update-lockfile\",de.Type.CODE)}`);let u=(this.immutable??r.get(\"enableImmutableInstalls\"))&&!n,A=this.immutableCache&&!n;if(r.projectCwd!==null){let R=await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U=!1;await V0t(r,u)&&(N.reportInfo(48,\"Automatically removed core plugins that are now builtins \\u{1F44D}\"),U=!0),await K0t(r,u)&&(N.reportInfo(48,\"Automatically fixed merge conflicts \\u{1F44D}\"),U=!0),U&&N.reportSeparator()});if(R.hasErrors())return R.exitCode()}if(r.projectCwd!==null){let R=await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{if(Ke.telemetry?.isNew)Ke.telemetry.commitTips(),N.reportInfo(65,\"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry\"),N.reportInfo(65,`Run ${de.pretty(r,\"yarn config set --home enableTelemetry 0\",de.Type.CODE)} to disable`),N.reportSeparator();else if(Ke.telemetry?.shouldShowTips){let U=await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let J=null;if(rn!==null){let ae=O8.default.prerelease(rn)?\"canary\":\"stable\",fe=U.latest[ae];O8.default.gt(fe,rn)&&(J=[ae,fe])}if(J)Ke.telemetry.commitTips(),N.reportInfo(88,`${de.applyStyle(r,`A new ${J[0]} version of Yarn is available:`,de.Style.BOLD)} ${W.prettyReference(r,J[1])}!`),N.reportInfo(88,`Upgrade now by running ${de.pretty(r,`yarn set version ${J[1]}`,de.Type.CODE)}`),N.reportSeparator();else{let te=Ke.telemetry.selectTip(U.tips);te&&(N.reportInfo(89,de.pretty(r,te.message,de.Type.MARKDOWN_INLINE)),te.url&&N.reportInfo(89,`Learn more at ${te.url}`),N.reportSeparator())}}}});if(R.hasErrors())return R.exitCode()}let{project:p,workspace:h}=await St.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let R=await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U={};for(let J of Y0t)J.selector(E)&&typeof r.sources.get(J.name)>\"u\"&&(r.use(\"<compat>\",{[J.name]:J.value},p.cwd,{overwrite:!0}),U[J.name]=J.value);Object.keys(U).length>0&&(await Ke.updateConfiguration(p.cwd,U),N.reportInfo(87,\"Migrated your project to the latest Yarn version \\u{1F680}\"),N.reportSeparator())});if(R.hasErrors())return R.exitCode()}let I=await Nr.find(r,{immutable:A,check:this.checkCache});if(!h)throw new rr(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let v=r.get(\"enableHardenedMode\");v&&typeof r.sources.get(\"enableHardenedMode\")>\"u\"&&await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{R.reportWarning(0,\"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled.\"),R.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${de.applyHyperlink(r,\"documentation\",\"https://yarnpkg.com/features/security#hardened-mode\")} for more details.`),R.reportSeparator()}),(this.refreshLockfile??v)&&(p.lockfileNeedsRefresh=!0);let x=this.checkResolutions??v;return(await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async R=>{await p.install({cache:I,report:R,immutable:u,checkResolutions:x,mode:this.mode})})).exitCode()}};qh.paths=[[\"install\"],nt.Default],qh.usage=nt.Usage({description:\"install the project dependencies\",details:\"\\n      This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\\n\\n      - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\\n\\n      - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\\n\\n      - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the `.pnp.cjs` file you might know).\\n\\n      - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\\n\\n      Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your `.pnp.cjs` file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\\n\\n      If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\\n\\n      If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\\n\\n      If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\\n\\n      If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\\n\\n      If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n    \",examples:[[\"Install the project\",\"$0 install\"],[\"Validate a project when using Zero-Installs\",\"$0 install --immutable --immutable-cache\"],[\"Validate a project when using Zero-Installs (slightly safer if you accept external PRs)\",\"$0 install --immutable --immutable-cache --check-cache\"]]});var W0t=\"<<<<<<<\";async function K0t(t,e){if(!t.projectCwd)return!1;let r=V.join(t.projectCwd,dr.lockfile);if(!await oe.existsPromise(r)||!(await oe.readFilePromise(r,\"utf8\")).includes(W0t))return!1;if(e)throw new zt(47,\"Cannot autofix a lockfile when running an immutable install\");let a=await Ur.execvp(\"git\",[\"rev-parse\",\"MERGE_HEAD\",\"HEAD\"],{cwd:t.projectCwd});if(a.code!==0&&(a=await Ur.execvp(\"git\",[\"rev-parse\",\"REBASE_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0&&(a=await Ur.execvp(\"git\",[\"rev-parse\",\"CHERRY_PICK_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0)throw new zt(83,\"Git returned an error when trying to find the commits pertaining to the conflict\");let n=await Promise.all(a.stdout.trim().split(/\\n/).map(async A=>{let p=await Ur.execvp(\"git\",[\"show\",`${A}:./${dr.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new zt(83,`Git returned an error when trying to access the lockfile content in ${A}`);try{return Ki(p.stdout)}catch{throw new zt(46,\"A variant of the conflicting lockfile failed to parse\")}}));n=n.filter(A=>!!A.__metadata);for(let A of n){if(A.__metadata.version<7)for(let p of Object.keys(A)){if(p===\"__metadata\")continue;let h=W.parseDescriptor(p,!0),E=t.normalizeDependency(h),I=W.stringifyDescriptor(E);I!==p&&(A[I]=A[p],delete A[p])}for(let p of Object.keys(A)){if(p===\"__metadata\")continue;let h=A[p].checksum;typeof h==\"string\"&&h.includes(\"/\")||(A[p].checksum=`${A.__metadata.cacheKey}/${h}`)}}let u=Object.assign({},...n);u.__metadata.version=`${Math.min(...n.map(A=>parseInt(A.__metadata.version??0)))}`,u.__metadata.cacheKey=\"merged\";for(let[A,p]of Object.entries(u))typeof p==\"string\"&&delete u[A];return await oe.changeFilePromise(r,Ba(u),{automaticNewlines:!0}),!0}async function V0t(t,e){if(!t.projectCwd)return!1;let r=[],o=V.join(t.projectCwd,\".yarn/plugins/@yarnpkg\");return await Ke.updateConfiguration(t.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let u=n.filter(A=>{if(!A.path)return!0;let p=V.resolve(t.projectCwd,A.path),h=v1.has(A.spec)&&V.contains(o,p);return h&&r.push(p),!h});return u.length===0?Ke.deleteProperty:u.length===n.length?n:u}},{immutable:e})?(await Promise.all(r.map(async n=>{await oe.removePromise(n)})),!0):!1}Ye();Pt();jt();var Gh=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Link all workspaces belonging to the target projects to the current one\"});this.private=ge.Boolean(\"-p,--private\",!1,{description:\"Also link private workspaces belonging to the target projects to the current one\"});this.relative=ge.Boolean(\"-r,--relative\",!1,{description:\"Link workspaces using relative paths instead of absolute paths\"});this.destinations=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=o.topLevelWorkspace,A=[];for(let p of this.destinations){let h=V.resolve(this.context.cwd,ue.toPortablePath(p)),E=await Ke.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:I,workspace:v}=await St.find(E,h);if(o.cwd===I.cwd)throw new it(`Invalid destination '${p}'; Can't link the project to itself`);if(!v)throw new rr(I.cwd,h);if(this.all){let x=!1;for(let C of I.workspaces)C.manifest.name&&(!C.manifest.private||this.private)&&(A.push(C),x=!0);if(!x)throw new it(`No workspace found to be linked in the target project: ${p}`)}else{if(!v.manifest.name)throw new it(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(v.manifest.private&&!this.private)throw new it(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);A.push(v)}}for(let p of A){let h=W.stringifyIdent(p.anchoredLocator),E=this.relative?V.relative(o.cwd,p.cwd):p.cwd;u.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await o.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Gh.paths=[[\"link\"]],Gh.usage=nt.Usage({description:\"connect the local project to another one\",details:\"\\n      This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\\n    \",examples:[[\"Register one or more remote workspaces for use in the current project\",\"$0 link ~/ts-loader ~/jest\"],[\"Register all workspaces from a remote project for use in the current project\",\"$0 link ~/jest --all\"]]});jt();var Yh=class extends ut{constructor(){super(...arguments);this.args=ge.Proxy()}async execute(){return this.cli.run([\"exec\",\"node\",...this.args])}};Yh.paths=[[\"node\"]],Yh.usage=nt.Usage({description:\"run node with the hook already setup\",details:`\n      This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n\n      The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version.\n    `,examples:[[\"Run a Node script\",\"$0 node ./my-script.js\"]]});Ye();jt();var Wh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await Ke.findRcFiles(this.context.cwd);return(await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let u of o)if(!!u.data?.plugins)for(let A of u.data.plugins){if(!A.checksum||!A.spec.match(/^https?:/))continue;let p=await nn.get(A.spec,{configuration:r}),h=wn.makeHash(p);if(A.checksum===h)continue;let E=de.pretty(r,A.path,de.Type.PATH),I=de.pretty(r,A.spec,de.Type.URL),v=`${E} is different from the file provided by ${I}`;n.reportJson({...A,newChecksum:h}),n.reportError(0,v)}})).exitCode()}};Wh.paths=[[\"plugin\",\"check\"]],Wh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"find all third-party plugins that differ from their own spec\",details:`\n      Check only the plugins from https.\n\n      If this command detects any plugin differences in the CI environment, it will throw an error.\n    `,examples:[[\"find all third-party plugins that differ from their own spec\",\"$0 plugin check\"]]});Ye();Ye();Pt();jt();var ide=ve(\"os\");Ye();Pt();jt();var ede=ve(\"os\");Ye();Ll();jt();var J0t=\"https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml\";async function zd(t,e){let r=await nn.get(J0t,{configuration:t}),o=Ki(r.toString());return Object.fromEntries(Object.entries(o).filter(([a,n])=>!e||kr.satisfiesWithPrereleases(e,n.range??\"<4.0.0-rc.1\")))}var Kh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await zd(r,rn);for(let[u,{experimental:A,...p}]of Object.entries(n)){let h=u;A&&(h+=\" [experimental]\"),a.reportJson({name:u,experimental:A,...p}),a.reportInfo(null,h)}})).exitCode()}};Kh.paths=[[\"plugin\",\"list\"]],Kh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"list the available official plugins\",details:\"\\n      This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\\n    \",examples:[[\"List the official plugins\",\"$0 plugin list\"]]});var z0t=/^[0-9]+$/,X0t=process.platform===\"win32\";function tde(t){return z0t.test(t)?`pull/${t}/head`:t}var Z0t=({repository:t,branch:e},r)=>[[\"git\",\"init\",ue.fromPortablePath(r)],[\"git\",\"remote\",\"add\",\"origin\",t],[\"git\",\"fetch\",\"origin\",\"--depth=1\",tde(e)],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"]],$0t=({branch:t})=>[[\"git\",\"fetch\",\"origin\",\"--depth=1\",tde(t),\"--force\"],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"],[\"git\",\"clean\",\"-dfx\",\"-e\",\"packages/yarnpkg-cli/bundles\"]],egt=({plugins:t,noMinify:e},r,o)=>[[\"yarn\",\"build:cli\",...new Array().concat(...t.map(a=>[\"--plugin\",V.resolve(o,a)])),...e?[\"--no-minify\"]:[],\"|\"],[X0t?\"move\":\"mv\",\"packages/yarnpkg-cli/bundles/yarn.js\",ue.fromPortablePath(r),\"|\"]],Vh=class extends ut{constructor(){super(...arguments);this.installPath=ge.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=ge.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=ge.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.plugins=ge.Array(\"--plugin\",[],{description:\"An array of additional plugins that should be included in the bundle\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"If set, the bundle will be built but not added to the project\"});this.noMinify=ge.Boolean(\"--no-minify\",!1,{description:\"Build a bundle for development (debugging) - non-minified and non-mangled\"});this.force=ge.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.skipPlugins=ge.Boolean(\"--skip-plugins\",!1,{description:\"Skip updating the contrib plugins\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),a=typeof this.installPath<\"u\"?V.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):V.resolve(ue.toPortablePath((0,ede.tmpdir)()),\"yarnpkg-sources\",wn.makeHash(this.repository).slice(0,6));return(await Lt.start({configuration:r,stdout:this.context.stdout},async u=>{await M8(this,{configuration:r,report:u,target:a}),u.reportSeparator(),u.reportInfo(0,\"Building a fresh bundle\"),u.reportSeparator();let A=await Ur.execvp(\"git\",[\"rev-parse\",\"--short\",\"HEAD\"],{cwd:a,strict:!0}),p=V.join(a,`packages/yarnpkg-cli/bundles/yarn-${A.stdout.trim()}.js`);oe.existsSync(p)||(await E2(egt(this,p,a),{configuration:r,context:this.context,target:a}),u.reportSeparator());let h=await oe.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await N8(r,null,async()=>h,{report:u});this.skipPlugins||await tgt(this,E,{project:o,report:u,target:a})}})).exitCode()}};Vh.paths=[[\"set\",\"version\",\"from\",\"sources\"]],Vh.usage=nt.Usage({description:\"build Yarn from master\",details:`\n      This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project.\n\n      By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \\`--skip-plugins\\` flag.\n    `,examples:[[\"Build Yarn from master\",\"$0 set version from sources\"]]});async function E2(t,{configuration:e,context:r,target:o}){for(let[a,...n]of t){let u=n[n.length-1]===\"|\";if(u&&n.pop(),u)await Ur.pipevp(a,n,{cwd:o,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${de.pretty(e,`  $ ${[a,...n].join(\" \")}`,\"grey\")}\n`);try{await Ur.execvp(a,n,{cwd:o,strict:!0})}catch(A){throw r.stdout.write(A.stdout||A.stack),A}}}}async function M8(t,{configuration:e,report:r,target:o}){let a=!1;if(!t.force&&oe.existsSync(V.join(o,\".git\"))){r.reportInfo(0,\"Fetching the latest commits\"),r.reportSeparator();try{await E2($0t(t),{configuration:e,context:t.context,target:o}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,\"Repository update failed; we'll try to regenerate it\")}}a||(r.reportInfo(0,\"Cloning the remote repository\"),r.reportSeparator(),await oe.removePromise(o),await oe.mkdirPromise(o,{recursive:!0}),await E2(Z0t(t,o),{configuration:e,context:t.context,target:o}))}async function tgt(t,e,{project:r,report:o,target:a}){let n=await zd(r.configuration,e),u=new Set(Object.keys(n));for(let A of r.configuration.plugins.keys())!u.has(A)||await U8(A,t,{project:r,report:o,target:a})}Ye();Ye();Pt();jt();var rde=$e(zn()),nde=ve(\"vm\");var Jh=class extends ut{constructor(){super(...arguments);this.name=ge.String();this.checksum=ge.Boolean(\"--checksum\",!0,{description:\"Whether to care if this plugin is modified\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Lt.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await St.find(r,this.context.cwd),u,A;if(this.name.match(/^\\.{0,2}[\\\\/]/)||ue.isAbsolute(this.name)){let p=V.resolve(this.context.cwd,ue.toPortablePath(this.name));a.reportInfo(0,`Reading ${de.pretty(r,p,de.Type.PATH)}`),u=V.relative(n.cwd,p),A=await oe.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new zt(52,`Plugin specifier \"${this.name}\" is neither a plugin name nor a valid url`)}u=this.name,p=this.name}else{let h=W.parseLocator(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\"));if(h.reference!==\"unknown\"&&!rde.default.valid(h.reference))throw new zt(0,\"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.\");let E=W.stringifyIdent(h),I=await zd(r,rn);if(!Object.hasOwn(I,E)){let v=`Couldn't find a plugin named ${W.prettyIdent(r,h)} on the remote registry.\n`;throw r.plugins.has(E)?v+=`A plugin named ${W.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:v+=`Note that only the plugins referenced on our website (${de.pretty(r,\"https://github.com/yarnpkg/berry/blob/master/plugins.yml\",de.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${de.pretty(r,\"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js\",de.Type.URL)}).`,new zt(51,v)}u=E,p=I[E].url,h.reference!==\"unknown\"?p=p.replace(/\\/master\\//,`/${E}/${h.reference}/`):rn!==null&&(p=p.replace(/\\/master\\//,`/@yarnpkg/cli/${rn}/`))}a.reportInfo(0,`Downloading ${de.pretty(r,p,\"green\")}`),A=await nn.get(p,{configuration:r})}await _8(u,A,{checksum:this.checksum,project:n,report:a})})).exitCode()}};Jh.paths=[[\"plugin\",\"import\"]],Jh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"download a plugin\",details:`\n      This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations.\n\n      Three types of plugin references are accepted:\n\n      - If the plugin is stored within the Yarn repository, it can be referenced by name.\n      - Third-party plugins can be referenced directly through their public urls.\n      - Local plugins can be referenced by their path on the disk.\n\n      If the \\`--no-checksum\\` option is set, Yarn will no longer care if the plugin is modified.\n\n      Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \\`@yarnpkg/builder\\` package).\n    `,examples:[['Download and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import @yarnpkg/plugin-exec\"],['Download and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import exec\"],[\"Download and activate a community plugin\",\"$0 plugin import https://example.org/path/to/plugin.js\"],[\"Activate a local plugin\",\"$0 plugin import ./path/to/plugin.js\"]]});async function _8(t,e,{checksum:r=!0,project:o,report:a}){let{configuration:n}=o,u={},A={exports:u};(0,nde.runInNewContext)(e.toString(),{module:A,exports:u});let h=`.yarn/plugins/${A.exports.name}.cjs`,E=V.resolve(o.cwd,h);a.reportInfo(0,`Saving the new plugin in ${de.pretty(n,h,\"magenta\")}`),await oe.mkdirPromise(V.dirname(E),{recursive:!0}),await oe.writeFilePromise(E,e);let I={path:h,spec:t};r&&(I.checksum=wn.makeHash(e)),await Ke.addPlugin(o.cwd,[I])}var rgt=({pluginName:t,noMinify:e},r)=>[[\"yarn\",`build:${t}`,...e?[\"--no-minify\"]:[],\"|\"]],zh=class extends ut{constructor(){super(...arguments);this.installPath=ge.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=ge.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=ge.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.noMinify=ge.Boolean(\"--no-minify\",!1,{description:\"Build a plugin for development (debugging) - non-minified and non-mangled\"});this.force=ge.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.name=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=typeof this.installPath<\"u\"?V.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):V.resolve(ue.toPortablePath((0,ide.tmpdir)()),\"yarnpkg-sources\",wn.makeHash(this.repository).slice(0,6));return(await Lt.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:u}=await St.find(r,this.context.cwd),A=W.parseIdent(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\")),p=W.stringifyIdent(A),h=await zd(r,rn);if(!Object.hasOwn(h,p))throw new zt(51,`Couldn't find a plugin named \"${p}\" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=p;await M8(this,{configuration:r,report:n,target:o}),await U8(E,this,{project:u,report:n,target:o})})).exitCode()}};zh.paths=[[\"plugin\",\"import\",\"from\",\"sources\"]],zh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"build a plugin from sources\",details:`\n      This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations.\n\n      The plugins can be referenced by their short name if sourced from the official Yarn repository.\n    `,examples:[['Build and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import from sources @yarnpkg/plugin-exec\"],['Build and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import from sources exec\"]]});async function U8(t,{context:e,noMinify:r},{project:o,report:a,target:n}){let u=t.replace(/@yarnpkg\\//,\"\"),{configuration:A}=o;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${u}`),a.reportSeparator(),await E2(rgt({pluginName:u,noMinify:r},n),{configuration:A,context:e,target:n}),a.reportSeparator();let p=V.resolve(n,`packages/${u}/bundles/${t}.js`),h=await oe.readFilePromise(p);await _8(t,h,{project:o,report:a})}Ye();Pt();jt();var Xh=class extends ut{constructor(){super(...arguments);this.name=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd);return(await Lt.start({configuration:r,stdout:this.context.stdout},async n=>{let u=this.name,A=W.parseIdent(u);if(!r.plugins.has(u))throw new it(`${W.prettyIdent(r,A)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${u}.cjs`,h=V.resolve(o.cwd,p);oe.existsSync(h)&&(n.reportInfo(0,`Removing ${de.pretty(r,p,de.Type.PATH)}...`),await oe.removePromise(h)),n.reportInfo(0,\"Updating the configuration...\"),await Ke.updateConfiguration(o.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let I=E.filter(v=>v.path!==p);return I.length===0?Ke.deleteProperty:I.length===E.length?E:I}})})).exitCode()}};Xh.paths=[[\"plugin\",\"remove\"]],Xh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"remove a plugin\",details:`\n      This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration.\n\n      **Note:** The plugins have to be referenced by their name property, which can be obtained using the \\`yarn plugin runtime\\` command. Shorthands are not allowed.\n   `,examples:[[\"Remove a plugin imported from the Yarn repository\",\"$0 plugin remove @yarnpkg/plugin-typescript\"],[\"Remove a plugin imported from a local file\",\"$0 plugin remove my-local-plugin\"]]});Ye();jt();var Zh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let u=this.context.plugins.plugins.has(n),A=n;u&&(A+=\" [builtin]\"),a.reportJson({name:n,builtin:u}),a.reportInfo(null,`${A}`)}})).exitCode()}};Zh.paths=[[\"plugin\",\"runtime\"]],Zh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"list the active plugins\",details:`\n      This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins.\n    `,examples:[[\"List the currently active plugins\",\"$0 plugin runtime\"]]});Ye();Ye();jt();var $h=class extends ut{constructor(){super(...arguments);this.idents=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);let u=new Set;for(let A of this.idents)u.add(W.parseIdent(A).identHash);if(await o.restoreInstallState({restoreResolutions:!1}),await o.resolveEverything({cache:n,report:new Qi}),u.size>0)for(let A of o.storedPackages.values())u.has(A.identHash)&&(o.storedBuildState.delete(A.locatorHash),o.skippedBuilds.delete(A.locatorHash));else o.storedBuildState.clear(),o.skippedBuilds.clear();return await o.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};$h.paths=[[\"rebuild\"]],$h.usage=nt.Usage({description:\"rebuild the project's native packages\",details:`\n      This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again.\n\n      Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future).\n\n      By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory.\n    `,examples:[[\"Rebuild all packages\",\"$0 rebuild\"],[\"Rebuild fsevents only\",\"$0 rebuild fsevents\"]]});Ye();Ye();Ye();jt();var H8=$e(Zo());Za();var e0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Apply the operation to all workspaces from the current project\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ks(pl)});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.all?o.workspaces:[a],A=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],p=[],h=!1,E=[];for(let C of this.patterns){let R=!1,N=W.parseIdent(C);for(let U of u){let J=[...U.manifest.peerDependenciesMeta.keys()];for(let te of(0,H8.default)(J,C))U.manifest.peerDependenciesMeta.delete(te),h=!0,R=!0;for(let te of A){let ae=U.manifest.getForScope(te),fe=[...ae.values()].map(ce=>W.stringifyIdent(ce));for(let ce of(0,H8.default)(fe,W.stringifyIdent(N))){let{identHash:me}=W.parseIdent(ce),he=ae.get(me);if(typeof he>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");U.manifest[te].delete(me),E.push([U,te,he]),h=!0,R=!0}}}R||p.push(C)}let I=p.length>1?\"Patterns\":\"Pattern\",v=p.length>1?\"don't\":\"doesn't\",x=this.all?\"any\":\"this\";if(p.length>0)throw new it(`${I} ${de.prettyList(r,p,de.Type.CODE)} ${v} match any packages referenced by ${x} workspace`);return h?(await r.triggerMultipleHooks(C=>C.afterWorkspaceDependencyRemoval,E),await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};e0.paths=[[\"remove\"]],e0.usage=nt.Usage({description:\"remove dependencies from the project\",details:`\n      This command will remove the packages matching the specified patterns from the current workspace.\n\n      If the \\`--mode=<mode>\\` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n      - \\`skip-build\\` will not run the build scripts at all. Note that this is different from setting \\`enableScripts\\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n      - \\`update-lockfile\\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n    `,examples:[[\"Remove a dependency from the current project\",\"$0 remove lodash\"],[\"Remove a dependency from all workspaces at once\",\"$0 remove lodash --all\"],[\"Remove all dependencies starting with `eslint-`\",\"$0 remove 'eslint-*'\"],[\"Remove all dependencies with the `@babel` scope\",\"$0 remove '@babel/*'\"],[\"Remove all dependencies matching `react-dom` or `react-helmet`\",\"$0 remove 'react-{dom,helmet}'\"]]});Ye();Ye();jt();var sde=ve(\"util\"),Xd=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);return(await Lt.start({configuration:r,stdout:this.context.stdout,json:this.json},async u=>{let A=a.manifest.scripts,p=_e.sortMap(A.keys(),I=>I),h={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},E=p.reduce((I,v)=>Math.max(I,v.length),0);for(let[I,v]of A.entries())u.reportInfo(null,`${I.padEnd(E,\" \")}   ${(0,sde.inspect)(v,h)}`),u.reportJson({name:I,script:v})})).exitCode()}};Xd.paths=[[\"run\"]];Ye();Ye();jt();var t0=class extends ut{constructor(){super(...arguments);this.inspect=ge.String(\"--inspect\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.inspectBrk=ge.String(\"--inspect-brk\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.topLevel=ge.Boolean(\"-T,--top-level\",!1,{description:\"Check the root workspace for scripts and/or binaries instead of the current one\"});this.binariesOnly=ge.Boolean(\"-B,--binaries-only\",!1,{description:\"Ignore any user defined scripts and only check for binaries\"});this.require=ge.String(\"--require\",{description:\"Forwarded to the underlying Node process when executing a binary\"});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.scriptName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a,locator:n}=await St.find(r,this.context.cwd);await o.restoreInstallState();let u=this.topLevel?o.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await un.hasPackageScript(u,this.scriptName,{project:o}))return await un.executePackageScript(u,this.scriptName,this.args,{project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let A=await un.getPackageAccessibleBinaries(u,{project:o});if(A.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect==\"string\"?h.push(`--inspect=${this.inspect}`):h.push(\"--inspect\")),this.inspectBrk&&(typeof this.inspectBrk==\"string\"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push(\"--inspect-brk\")),this.require&&h.push(`--require=${this.require}`),await un.executePackageAccessibleBinary(u,this.scriptName,this.args,{cwd:this.context.cwd,project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:A})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(\":\")){let E=(await Promise.all(o.workspaces.map(async I=>I.manifest.scripts.has(this.scriptName)?I:null))).filter(I=>I!==null);if(E.length===1)return await un.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName===\"node-gyp\"?new it(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${W.prettyLocator(r,n)}). This typically happens because some package depends on \"node-gyp\" to build itself, but didn't list it in their dependencies. To fix that, please run \"yarn add node-gyp\" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new it(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${W.prettyLocator(r,n)}).`);{if(this.scriptName===\"global\")throw new it(\"The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead\");let h=[this.scriptName].concat(this.args);for(let[E,I]of AC)for(let v of I)if(h.length>=v.length&&JSON.stringify(h.slice(0,v.length))===JSON.stringify(v))throw new it(`Couldn't find a script named \"${this.scriptName}\", but a matching command can be found in the ${E} plugin. You can install it with \"yarn plugin import ${E}\".`);throw new it(`Couldn't find a script named \"${this.scriptName}\".`)}}};t0.paths=[[\"run\"]],t0.usage=nt.Usage({description:\"run a script defined in the package.json\",details:`\n      This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace:\n\n      - If the \\`scripts\\` field from your local package.json contains a matching script name, its definition will get executed.\n\n      - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed.\n\n      - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed.\n\n      Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax).\n    `,examples:[[\"Run the tests from the local workspace\",\"$0 run test\"],['Same thing, but without the \"run\" keyword',\"$0 test\"],[\"Inspect Webpack while running\",\"$0 run --inspect-brk webpack\"]]});Ye();Ye();jt();var r0=class extends ut{constructor(){super(...arguments);this.descriptor=ge.String();this.resolution=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(await o.restoreInstallState({restoreResolutions:!1}),!a)throw new rr(o.cwd,this.context.cwd);let u=W.parseDescriptor(this.descriptor,!0),A=W.makeDescriptor(u,this.resolution);return o.storedDescriptors.set(u.descriptorHash,u),o.storedDescriptors.set(A.descriptorHash,A),o.resolutionAliases.set(u.descriptorHash,A.descriptorHash),await o.installWithNewReport({stdout:this.context.stdout},{cache:n})}};r0.paths=[[\"set\",\"resolution\"]],r0.usage=nt.Usage({description:\"enforce a package resolution\",details:'\\n      This command updates the resolution table so that `descriptor` is resolved by `resolution`.\\n\\n      Note that by default this command only affect the current resolution table - meaning that this \"manual override\" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\\n\\n      Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\\n    ',examples:[[\"Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0\",\"$0 set resolution lodash@npm:^1.2.3 1.5.0\"]]});Ye();Pt();jt();var ode=$e(Zo()),n0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Unlink all workspaces belonging to the target project from the current one\"});this.leadingArguments=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);let u=o.topLevelWorkspace,A=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of u.manifest.resolutions)h.startsWith(\"portal:\")&&A.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=V.resolve(this.context.cwd,ue.toPortablePath(p));if(_e.isPathLike(p)){let E=await Ke.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:I,workspace:v}=await St.find(E,h);if(!v)throw new rr(I.cwd,h);if(this.all){for(let x of I.workspaces)x.manifest.name&&A.add(W.stringifyIdent(x.anchoredLocator));if(A.size===0)throw new it(\"No workspace found to be unlinked in the target project\")}else{if(!v.manifest.name)throw new it(\"The target workspace doesn't have a name and thus cannot be unlinked\");A.add(W.stringifyIdent(v.anchoredLocator))}}else{let E=[...u.manifest.resolutions.map(({pattern:I})=>I.descriptor.fullName)];for(let I of(0,ode.default)(E,p))A.add(I)}}return u.manifest.resolutions=u.manifest.resolutions.filter(({pattern:p})=>!A.has(p.descriptor.fullName)),await o.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};n0.paths=[[\"unlink\"]],n0.usage=nt.Usage({description:\"disconnect the local project from another one\",details:`\n      This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments.\n    `,examples:[[\"Unregister a remote workspace in the current project\",\"$0 unlink ~/ts-loader\"],[\"Unregister all workspaces from a remote project in the current project\",\"$0 unlink ~/jest --all\"],[\"Unregister all previously linked workspaces\",\"$0 unlink --all\"],[\"Unregister all workspaces matching a glob\",\"$0 unlink '@babel/*' 'pkg-{a,b}'\"]]});Ye();Ye();Ye();jt();var ade=$e(f2()),j8=$e(Zo());Za();var Jf=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Offer various choices, depending on the detected upgrade paths\"});this.fixed=ge.Boolean(\"-F,--fixed\",!1,{description:\"Store dependency tags as-is instead of resolving them\"});this.exact=ge.Boolean(\"-E,--exact\",!1,{description:\"Don't use any semver modifier on the resolved range\"});this.tilde=ge.Boolean(\"-T,--tilde\",!1,{description:\"Use the `~` semver modifier on the resolved range\"});this.caret=ge.Boolean(\"-C,--caret\",!1,{description:\"Use the `^` semver modifier on the resolved range\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Resolve again ALL resolutions for those packages\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ks(pl)});this.patterns=ge.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=[...o.storedDescriptors.values()],A=u.map(E=>W.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(W.parseDescriptor(E).range!==\"unknown\")throw new it(\"Ranges aren't allowed when using --recursive\");for(let I of(0,j8.default)(A,E)){let v=W.parseIdent(I);p.add(v.identHash)}}let h=u.filter(E=>p.has(E.identHash));for(let E of h)o.storedDescriptors.delete(E.descriptorHash),o.storedResolutions.delete(E.descriptorHash);return await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get(\"preferInteractive\"),p=h2(this,o),h=A?[\"keep\",\"reuse\",\"project\",\"latest\"]:[\"project\",\"latest\"],E=[],I=[];for(let N of this.patterns){let U=!1,J=W.parseDescriptor(N),te=W.stringifyIdent(J);for(let ae of o.workspaces)for(let fe of[\"dependencies\",\"devDependencies\"]){let me=[...ae.manifest.getForScope(fe).values()].map(Be=>W.stringifyIdent(Be)),he=te===\"*\"?me:(0,j8.default)(me,te);for(let Be of he){let we=W.parseIdent(Be),g=ae.manifest[fe].get(we.identHash);if(typeof g>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let Ee=W.makeDescriptor(we,J.range);E.push(Promise.resolve().then(async()=>[ae,fe,g,await g2(Ee,{project:o,workspace:ae,cache:n,target:fe,fixed:u,modifier:p,strategies:h})])),U=!0}}U||I.push(N)}if(I.length>1)throw new it(`Patterns ${de.prettyList(r,I,de.Type.CODE)} don't match any packages referenced by any workspace`);if(I.length>0)throw new it(`Pattern ${de.prettyList(r,I,de.Type.CODE)} doesn't match any packages referenced by any workspace`);let v=await Promise.all(E),x=await AA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async N=>{for(let[,,U,{suggestions:J,rejections:te}]of v){let ae=J.filter(fe=>fe.descriptor!==null);if(ae.length===0){let[fe]=te;if(typeof fe>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");let ce=this.cli.error(fe);o.configuration.get(\"enableNetwork\")?N.reportError(27,`${W.prettyDescriptor(r,U)} can't be resolved to a satisfying range\n\n${ce}`):N.reportError(27,`${W.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled)\n\n${ce}`)}else ae.length>1&&!A&&N.reportError(27,`${W.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(x.hasErrors())return x.exitCode();let C=!1,R=[];for(let[N,U,,{suggestions:J}]of v){let te,ae=J.filter(he=>he.descriptor!==null),fe=ae[0].descriptor,ce=ae.every(he=>W.areDescriptorsEqual(he.descriptor,fe));ae.length===1||ce?te=fe:(C=!0,{answer:te}=await(0,ade.prompt)({type:\"select\",name:\"answer\",message:`Which range do you want to use in ${W.prettyWorkspace(r,N)} \\u276F ${U}?`,choices:J.map(({descriptor:he,name:Be,reason:we})=>he?{name:Be,hint:we,descriptor:he}:{name:Be,hint:we,disabled:!0}),onCancel:()=>process.exit(130),result(he){return this.find(he,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=N.manifest[U].get(te.identHash);if(typeof me>\"u\")throw new Error(\"Assertion failed: This descriptor should have a matching entry\");if(me.descriptorHash!==te.descriptorHash)N.manifest[U].set(te.identHash,te),R.push([N,U,me,te]);else{let he=r.makeResolver(),Be={project:o,resolver:he},we=r.normalizeDependency(me),g=he.bindDescriptor(we,N.anchoredLocator,Be);o.forgetResolution(g)}}return await r.triggerMultipleHooks(N=>N.afterWorkspaceDependencyReplacement,R),C&&this.context.stdout.write(`\n`),await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};Jf.paths=[[\"up\"]],Jf.usage=nt.Usage({description:\"upgrade dependencies across the project\",details:\"\\n      This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\\n\\n      If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\\n\\n      If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\\n\\n      The, `-C,--caret`, `-E,--exact` and  `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\\n\\n      This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\\n    \",examples:[[\"Upgrade all instances of lodash to the latest release\",\"$0 up lodash\"],[\"Upgrade all instances of lodash to the latest release, but ask confirmation for each\",\"$0 up lodash -i\"],[\"Upgrade all instances of lodash to 1.2.3\",\"$0 up lodash@1.2.3\"],[\"Upgrade all instances of packages with the `@babel` scope to the latest release\",\"$0 up '@babel/*'\"],[\"Upgrade all instances of packages containing the word `jest` to the latest release\",\"$0 up '*jest*'\"],[\"Upgrade all instances of packages with the `@babel` scope to 7.0.0\",\"$0 up '@babel/*@7.0.0'\"]]}),Jf.schema=[cI(\"recursive\",Gu.Forbids,[\"interactive\",\"exact\",\"tilde\",\"caret\"],{ignore:[void 0,!1]})];Ye();Ye();Ye();jt();var i0=class extends ut{constructor(){super(...arguments);this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"List, for each workspace, what are all the paths that lead to the dependency\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.peers=ge.Boolean(\"--peers\",!1,{description:\"Also print the peer dependencies that match the specified name\"});this.package=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=W.parseIdent(this.package).identHash,u=this.recursive?igt(o,n,{configuration:r,peers:this.peers}):ngt(o,n,{configuration:r,peers:this.peers});$s.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};i0.paths=[[\"why\"]],i0.usage=nt.Usage({description:\"display the reason why a package is needed\",details:`\n      This command prints the exact reasons why a package appears in the dependency tree.\n\n      If \\`-R,--recursive\\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named \"Foo\" when looking for \"Bar\", it means that \"Foo\" already got printed higher in the tree.\n    `,examples:[[\"Explain why lodash is used in your project\",\"$0 why lodash\"]]});function ngt(t,e,{configuration:r,peers:o}){let a=_e.sortMap(t.storedPackages.values(),A=>W.stringifyLocator(A)),n={},u={children:n};for(let A of a){let p={};for(let E of A.dependencies.values()){if(!o&&A.peerDependencies.has(E.identHash))continue;let I=t.storedResolutions.get(E.descriptorHash);if(!I)throw new Error(\"Assertion failed: The resolution should have been registered\");let v=t.storedPackages.get(I);if(!v)throw new Error(\"Assertion failed: The package should have been registered\");if(v.identHash!==e)continue;{let C=W.stringifyLocator(A);n[C]={value:[A,de.Type.LOCATOR],children:p}}let x=W.stringifyLocator(v);p[x]={value:[{descriptor:E,locator:v},de.Type.DEPENDENT]}}}return u}function igt(t,e,{configuration:r,peers:o}){let a=_e.sortMap(t.workspaces,v=>W.stringifyLocator(v.anchoredLocator)),n=new Set,u=new Set,A=v=>{if(n.has(v.locatorHash))return u.has(v.locatorHash);if(n.add(v.locatorHash),v.identHash===e)return u.add(v.locatorHash),!0;let x=!1;v.identHash===e&&(x=!0);for(let C of v.dependencies.values()){if(!o&&v.peerDependencies.has(C.identHash))continue;let R=t.storedResolutions.get(C.descriptorHash);if(!R)throw new Error(\"Assertion failed: The resolution should have been registered\");let N=t.storedPackages.get(R);if(!N)throw new Error(\"Assertion failed: The package should have been registered\");A(N)&&(x=!0)}return x&&u.add(v.locatorHash),x};for(let v of a)A(v.anchoredPackage);let p=new Set,h={},E={children:h},I=(v,x,C)=>{if(!u.has(v.locatorHash))return;let R=C!==null?de.tuple(de.Type.DEPENDENT,{locator:v,descriptor:C}):de.tuple(de.Type.LOCATOR,v),N={},U={value:R,children:N},J=W.stringifyLocator(v);if(x[J]=U,!p.has(v.locatorHash)&&(p.add(v.locatorHash),!(C!==null&&t.tryWorkspaceByLocator(v))))for(let te of v.dependencies.values()){if(!o&&v.peerDependencies.has(te.identHash))continue;let ae=t.storedResolutions.get(te.descriptorHash);if(!ae)throw new Error(\"Assertion failed: The resolution should have been registered\");let fe=t.storedPackages.get(ae);if(!fe)throw new Error(\"Assertion failed: The package should have been registered\");I(fe,N,te)}};for(let v of a)I(v.anchoredPackage,h,null);return E}Ye();var Z8={};Vt(Z8,{GitFetcher:()=>w2,GitResolver:()=>I2,default:()=>Dgt,gitUtils:()=>ra});Ye();Pt();var ra={};Vt(ra,{TreeishProtocols:()=>C2,clone:()=>X8,fetchBase:()=>xde,fetchChangedFiles:()=>kde,fetchChangedWorkspaces:()=>Bgt,fetchRoot:()=>bde,isGitUrl:()=>CC,lsRemote:()=>Sde,normalizeLocator:()=>Igt,normalizeRepoUrl:()=>yC,resolveUrl:()=>z8,splitRepoUrl:()=>s0,validateRepoUrl:()=>J8});Ye();Pt();jt();var vde=$e(wde()),Dde=$e(mU()),EC=$e(ve(\"querystring\")),K8=$e(zn());function W8(t,e,r){let o=t.indexOf(r);return t.lastIndexOf(e,o>-1?o:1/0)}function Ide(t){try{return new URL(t)}catch{return}}function Cgt(t){let e=W8(t,\"@\",\"#\"),r=W8(t,\":\",\"#\");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),W8(t,\":\",\"#\")===-1&&t.indexOf(\"//\")===-1&&(t=`ssh://${t}`),t}function Bde(t){return Ide(t)||Ide(Cgt(t))}function yC(t,{git:e=!1}={}){if(t=t.replace(/^git\\+https:/,\"https:\"),t=t.replace(/^(?:github:|https:\\/\\/github\\.com\\/|git:\\/\\/github\\.com\\/)?(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\\.git)?(#.*)?$/,\"https://github.com/$1/$2.git$3\"),t=t.replace(/^https:\\/\\/github\\.com\\/(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\\/tarball\\/(.+)?$/,\"https://github.com/$1/$2.git#$3\"),e){let r=Bde(t);r&&(t=r.href),t=t.replace(/^git\\+([^:]+):/,\"$1:\")}return t}function Pde(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||\"ssh\"} -o BatchMode=yes`}}var wgt=[/^ssh:/,/^git(?:\\+[^:]+)?:/,/^(?:git\\+)?https?:[^#]+\\/[^#]+(?:\\.git)(?:#.*)?$/,/^git@[^#]+\\/[^#]+\\.git(?:#.*)?$/,/^(?:github:|https:\\/\\/github\\.com\\/)?(?!\\.{1,2}\\/)([a-zA-Z._0-9-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\\.git)?(?:#.*)?$/,/^https:\\/\\/github\\.com\\/(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\\/tarball\\/(.+)?$/],C2=(a=>(a.Commit=\"commit\",a.Head=\"head\",a.Tag=\"tag\",a.Semver=\"semver\",a))(C2||{});function CC(t){return t?wgt.some(e=>!!t.match(e)):!1}function s0(t){t=yC(t);let e=t.indexOf(\"#\");if(e===-1)return{repo:t,treeish:{protocol:\"head\",request:\"HEAD\"},extra:{}};let r=t.slice(0,e),o=t.slice(e+1);if(o.match(/^[a-z]+=/)){let a=EC.default.parse(o);for(let[p,h]of Object.entries(a))if(typeof h!=\"string\")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(C2).find(p=>Object.hasOwn(a,p)),[u,A]=typeof n<\"u\"?[n,a[n]]:[\"head\",\"HEAD\"];for(let p of Object.values(C2))delete a[p];return{repo:r,treeish:{protocol:u,request:A},extra:a}}else{let a=o.indexOf(\":\"),[n,u]=a===-1?[null,o]:[o.slice(0,a),o.slice(a+1)];return{repo:r,treeish:{protocol:n,request:u},extra:{}}}}function Igt(t){return W.makeLocator(t,yC(t.reference))}function J8(t,{configuration:e}){let r=yC(t,{git:!0});if(!nn.getNetworkSettings(`https://${(0,vde.default)(r).resource}`,{configuration:e}).enableNetwork)throw new zt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function Sde(t,e){let r=J8(t,{configuration:e}),o=await V8(\"listing refs\",[\"ls-remote\",r],{cwd:e.startingCwd,env:Pde()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\\t([^\\n]+)/gm,u;for(;(u=n.exec(o.stdout))!==null;)a.set(u[2],u[1]);return a}async function z8(t,e){let{repo:r,treeish:{protocol:o,request:a},extra:n}=s0(t),u=await Sde(r,e),A=(h,E)=>{switch(h){case\"commit\":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error(\"Invalid commit hash\");return EC.default.stringify({...n,commit:E})}case\"head\":{let I=u.get(E===\"HEAD\"?E:`refs/heads/${E}`);if(typeof I>\"u\")throw new Error(`Unknown head (\"${E}\")`);return EC.default.stringify({...n,commit:I})}case\"tag\":{let I=u.get(`refs/tags/${E}`);if(typeof I>\"u\")throw new Error(`Unknown tag (\"${E}\")`);return EC.default.stringify({...n,commit:I})}case\"semver\":{let I=kr.validRange(E);if(!I)throw new Error(`Invalid range (\"${E}\")`);let v=new Map([...u.entries()].filter(([C])=>C.startsWith(\"refs/tags/\")).map(([C,R])=>[K8.default.parse(C.slice(10)),R]).filter(C=>C[0]!==null)),x=K8.default.maxSatisfying([...v.keys()],I);if(x===null)throw new Error(`No matching range (\"${E}\")`);return EC.default.stringify({...n,commit:v.get(x)})}case null:{let I;if((I=p(\"commit\",E))!==null||(I=p(\"tag\",E))!==null||(I=p(\"head\",E))!==null)return I;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol (\"${h}\")`)}},p=(h,E)=>{try{return A(h,E)}catch{return null}};return yC(`${r}#${A(o,a)}`)}async function X8(t,e){return await e.getLimit(\"cloneConcurrency\")(async()=>{let{repo:r,treeish:{protocol:o,request:a}}=s0(t);if(o!==\"commit\")throw new Error(\"Invalid treeish protocol when cloning\");let n=J8(r,{configuration:e}),u=await oe.mktempPromise(),A={cwd:u,env:Pde()};return await V8(\"cloning the repository\",[\"clone\",\"-c core.autocrlf=false\",n,ue.fromPortablePath(u)],A,{configuration:e,normalizedRepoUrl:n}),await V8(\"switching branch\",[\"checkout\",`${a}`],A,{configuration:e,normalizedRepoUrl:n}),u})}async function bde(t){let e,r=t;do{if(e=r,await oe.existsPromise(V.join(e,\".git\")))return e;r=V.dirname(e)}while(r!==e);return null}async function xde(t,{baseRefs:e}){if(e.length===0)throw new it(\"Can't run this command with zero base refs specified.\");let r=[];for(let A of e){let{code:p}=await Ur.execvp(\"git\",[\"merge-base\",A,\"HEAD\"],{cwd:t});p===0&&r.push(A)}if(r.length===0)throw new it(`No ancestor could be found between any of HEAD and ${e.join(\", \")}`);let{stdout:o}=await Ur.execvp(\"git\",[\"merge-base\",\"HEAD\",...r],{cwd:t,strict:!0}),a=o.trim(),{stdout:n}=await Ur.execvp(\"git\",[\"show\",\"--quiet\",\"--pretty=format:%s\",a],{cwd:t,strict:!0}),u=n.trim();return{hash:a,title:u}}async function kde(t,{base:e,project:r}){let o=_e.buildIgnorePattern(r.configuration.get(\"changesetIgnorePatterns\")),{stdout:a}=await Ur.execvp(\"git\",[\"diff\",\"--name-only\",`${e}`],{cwd:t,strict:!0}),n=a.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>V.resolve(t,ue.toPortablePath(h))),{stdout:u}=await Ur.execvp(\"git\",[\"ls-files\",\"--others\",\"--exclude-standard\"],{cwd:t,strict:!0}),A=u.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>V.resolve(t,ue.toPortablePath(h))),p=[...new Set([...n,...A].sort())];return o?p.filter(h=>!V.relative(r.cwd,h).match(o)):p}async function Bgt({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new it(\"This command can only be run from within a Yarn project\");let r=[V.resolve(e.cwd,dr.lockfile),V.resolve(e.cwd,e.configuration.get(\"cacheFolder\")),V.resolve(e.cwd,e.configuration.get(\"installStatePath\")),V.resolve(e.cwd,e.configuration.get(\"virtualFolder\"))];await e.configuration.triggerHook(u=>u.populateYarnPaths,e,u=>{u!=null&&r.push(u)});let o=await bde(e.configuration.projectCwd);if(o==null)throw new it(\"This command can only be run on Git repositories\");let a=await xde(o,{baseRefs:typeof t==\"string\"?[t]:e.configuration.get(\"changesetBaseRefs\")}),n=await kde(o,{base:a.hash,project:e});return new Set(_e.mapAndFilter(n,u=>{let A=e.tryWorkspaceByFilePath(u);return A===null?_e.mapAndFilter.skip:r.some(p=>u.startsWith(p))?_e.mapAndFilter.skip:A}))}async function V8(t,e,r,{configuration:o,normalizedRepoUrl:a}){try{return await Ur.execvp(\"git\",e,{...r,strict:!0})}catch(n){if(!(n instanceof Ur.ExecError))throw n;let u=n.reportExtra,A=n.stderr.toString();throw new zt(1,`Failed ${t}`,p=>{p.reportError(1,`  ${de.prettyField(o,{label:\"Repository URL\",value:de.tuple(de.Type.URL,a)})}`);for(let h of A.matchAll(/^(.+?): (.*)$/gm)){let[,E,I]=h;E=E.toLowerCase();let v=E===\"error\"?\"Error\":`${(0,Dde.default)(E)} Error`;p.reportError(1,`  ${de.prettyField(o,{label:v,value:de.tuple(de.Type.NO_HINT,I)})}`)}u?.(p)})}}var w2=class{supports(e,r){return CC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,a=new Map(r.checksums);a.set(e.locatorHash,o);let n={...r,checksums:a},u=await this.downloadHosted(e,n);if(u!==null)return u;let[A,p,h]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(e,n),...r.cacheOptions});return{packageFs:A,releaseFs:p,prefixPath:W.getIdentVendorPath(e),checksum:h}}async downloadHosted(e,r){return r.project.configuration.reduceHook(o=>o.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let o=await X8(e.reference,r.project.configuration),a=s0(e.reference),n=V.join(o,\"package.tgz\");await un.prepareExternalProject(o,n,{configuration:r.project.configuration,report:r.report,workspace:a.extra.workspace,locator:e});let u=await oe.readFilePromise(n);return await _e.releaseAfterUseAsync(async()=>await Xi.convertToZip(u,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1}))}};Ye();Ye();var I2=class{supportsDescriptor(e,r){return CC(e.range)}supportsLocator(e,r){return CC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=await z8(e.range,o.project.configuration);return[W.makeLocator(e,a)]}async getSatisfying(e,r,o,a){let n=s0(e.range);return{locators:o.filter(A=>{if(A.identHash!==e.identHash)return!1;let p=s0(A.reference);return!(n.repo!==p.repo||n.treeish.protocol===\"commit\"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var vgt={configuration:{changesetBaseRefs:{description:\"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.\",type:\"STRING\",isArray:!0,isNullable:!1,default:[\"master\",\"origin/master\",\"upstream/master\",\"main\",\"origin/main\",\"upstream/main\"]},changesetIgnorePatterns:{description:\"Array of glob patterns; files matching them will be ignored when fetching the changed files\",type:\"STRING\",default:[],isArray:!0},cloneConcurrency:{description:\"Maximal number of concurrent clones\",type:\"NUMBER\",default:2}},fetchers:[w2],resolvers:[I2]};var Dgt=vgt;jt();var o0=class extends ut{constructor(){super(...arguments);this.since=ge.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Find packages via dependencies/devDependencies instead of using the workspaces field\"});this.noPrivate=ge.Boolean(\"--no-private\",{description:\"Exclude workspaces that have the private field set to true\"});this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Also return the cross-dependencies between workspaces\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd);return(await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let u=this.since?await ra.fetchChangedWorkspaces({ref:this.since,project:o}):o.workspaces,A=new Set(u);if(this.recursive)for(let p of[...u].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)A.add(h);for(let p of A){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let I=new Set,v=new Set;for(let x of Ot.hardDependencies)for(let[C,R]of h.getForScope(x)){let N=o.tryWorkspaceByDescriptor(R);N===null?o.workspacesByIdent.has(C)&&v.add(R):I.add(N)}E={workspaceDependencies:Array.from(I).map(x=>x.relativeCwd),mismatchedWorkspaceDependencies:Array.from(v).map(x=>W.stringifyDescriptor(x))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?W.stringifyIdent(h.name):null,...E})}})).exitCode()}};o0.paths=[[\"workspaces\",\"list\"]],o0.usage=nt.Usage({category:\"Workspace-related commands\",description:\"list all available workspaces\",details:\"\\n      This command will print the list of all workspaces in the project.\\n\\n      - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\\n\\n      - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\\n    \"});Ye();Ye();jt();var a0=class extends ut{constructor(){super(...arguments);this.workspaceName=ge.String();this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=o.workspaces,u=new Map(n.map(p=>[W.stringifyIdent(p.anchoredLocator),p])),A=u.get(this.workspaceName);if(A===void 0){let p=Array.from(u.keys()).sort();throw new it(`Workspace '${this.workspaceName}' not found. Did you mean any of the following:\n  - ${p.join(`\n  - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:A.cwd})}};a0.paths=[[\"workspace\"]],a0.usage=nt.Usage({category:\"Workspace-related commands\",description:\"run a command within the specified workspace\",details:`\n      This command will run a given sub-command on a single workspace.\n    `,examples:[[\"Add a package to a single workspace\",\"yarn workspace components add -D react\"],[\"Run build script on a single workspace\",\"yarn workspace components run build\"]]});var Pgt={configuration:{enableImmutableInstalls:{description:\"If true (the default on CI), prevents the install command from modifying the lockfile\",type:\"BOOLEAN\",default:Qde.isCI},defaultSemverRangePrefix:{description:\"The default save prefix: '^', '~' or ''\",type:\"STRING\",values:[\"^\",\"~\",\"\"],default:\"^\"},preferReuse:{description:\"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.\",type:\"BOOLEAN\",default:!1}},commands:[Fh,Rh,Th,Lh,r0,Vh,_h,o0,Kd,Vd,mC,Jd,kh,Qh,Nh,Oh,Mh,Uh,Hh,jh,qh,Gh,n0,Yh,Wh,zh,Jh,Xh,Kh,Zh,$h,e0,Xd,t0,Jf,i0,a0]},Sgt=Pgt;var iH={};Vt(iH,{default:()=>xgt});Ye();var kt={optional:!0},eH=[[\"@tailwindcss/aspect-ratio@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@tailwindcss/line-clamp@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0\",{peerDependencies:{postcss:\"^8.0.0\"}}],[\"@samverschueren/stream-to-observable@<0.3.1\",{peerDependenciesMeta:{rxjs:kt,zenObservable:kt}}],[\"any-observable@<0.5.1\",{peerDependenciesMeta:{rxjs:kt,zenObservable:kt}}],[\"@pm2/agent@<1.0.4\",{dependencies:{debug:\"*\"}}],[\"debug@<4.2.0\",{peerDependenciesMeta:{[\"supports-color\"]:kt}}],[\"got@<11\",{dependencies:{[\"@types/responselike\"]:\"^1.0.0\",[\"@types/keyv\"]:\"^3.1.1\"}}],[\"cacheable-lookup@<4.1.2\",{dependencies:{[\"@types/keyv\"]:\"^3.1.1\"}}],[\"http-link-dataloader@*\",{peerDependencies:{graphql:\"^0.13.1 || ^14.0.0\"}}],[\"typescript-language-server@*\",{dependencies:{[\"vscode-jsonrpc\"]:\"^5.0.1\",[\"vscode-languageserver-protocol\"]:\"^3.15.0\"}}],[\"postcss-syntax@*\",{peerDependenciesMeta:{[\"postcss-html\"]:kt,[\"postcss-jsx\"]:kt,[\"postcss-less\"]:kt,[\"postcss-markdown\"]:kt,[\"postcss-scss\"]:kt}}],[\"jss-plugin-rule-value-function@<=10.1.1\",{dependencies:{[\"tiny-warning\"]:\"^1.0.2\"}}],[\"ink-select-input@<4.1.0\",{peerDependencies:{react:\"^16.8.2\"}}],[\"license-webpack-plugin@<2.3.18\",{peerDependenciesMeta:{webpack:kt}}],[\"snowpack@>=3.3.0\",{dependencies:{[\"node-gyp\"]:\"^7.1.0\"}}],[\"promise-inflight@*\",{peerDependenciesMeta:{bluebird:kt}}],[\"reactcss@*\",{peerDependencies:{react:\"*\"}}],[\"react-color@<=2.19.0\",{peerDependencies:{react:\"*\"}}],[\"gatsby-plugin-i18n@*\",{dependencies:{ramda:\"^0.24.1\"}}],[\"useragent@^2.0.0\",{dependencies:{request:\"^2.88.0\",yamlparser:\"0.0.x\",semver:\"5.5.x\"}}],[\"@apollographql/apollo-tools@<=0.5.2\",{peerDependencies:{graphql:\"^14.2.1 || ^15.0.0\"}}],[\"material-table@^2.0.0\",{dependencies:{\"@babel/runtime\":\"^7.11.2\"}}],[\"@babel/parser@*\",{dependencies:{\"@babel/types\":\"^7.8.3\"}}],[\"fork-ts-checker-webpack-plugin@<=6.3.4\",{peerDependencies:{eslint:\">= 6\",typescript:\">= 2.7\",webpack:\">= 4\",\"vue-template-compiler\":\"*\"},peerDependenciesMeta:{eslint:kt,\"vue-template-compiler\":kt}}],[\"rc-animate@<=3.1.1\",{peerDependencies:{react:\">=16.9.0\",\"react-dom\":\">=16.9.0\"}}],[\"react-bootstrap-table2-paginator@*\",{dependencies:{classnames:\"^2.2.6\"}}],[\"react-draggable@<=4.4.3\",{peerDependencies:{react:\">= 16.3.0\",\"react-dom\":\">= 16.3.0\"}}],[\"apollo-upload-client@<14\",{peerDependencies:{graphql:\"14 - 15\"}}],[\"react-instantsearch-core@<=6.7.0\",{peerDependencies:{algoliasearch:\">= 3.1 < 5\"}}],[\"react-instantsearch-dom@<=6.7.0\",{dependencies:{\"react-fast-compare\":\"^3.0.0\"}}],[\"ws@<7.2.1\",{peerDependencies:{bufferutil:\"^4.0.1\",\"utf-8-validate\":\"^5.0.2\"},peerDependenciesMeta:{bufferutil:kt,\"utf-8-validate\":kt}}],[\"react-portal@<4.2.2\",{peerDependencies:{\"react-dom\":\"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0\"}}],[\"react-scripts@<=4.0.1\",{peerDependencies:{react:\"*\"}}],[\"testcafe@<=1.10.1\",{dependencies:{\"@babel/plugin-transform-for-of\":\"^7.12.1\",\"@babel/runtime\":\"^7.12.5\"}}],[\"testcafe-legacy-api@<=4.2.0\",{dependencies:{\"testcafe-hammerhead\":\"^17.0.1\",\"read-file-relative\":\"^1.2.0\"}}],[\"@google-cloud/firestore@<=4.9.3\",{dependencies:{protobufjs:\"^6.8.6\"}}],[\"gatsby-source-apiserver@*\",{dependencies:{[\"babel-polyfill\"]:\"^6.26.0\"}}],[\"@webpack-cli/package-utils@<=1.0.1-alpha.4\",{dependencies:{[\"cross-spawn\"]:\"^7.0.3\"}}],[\"gatsby-remark-prismjs@<3.3.28\",{dependencies:{lodash:\"^4\"}}],[\"gatsby-plugin-favicon@*\",{peerDependencies:{webpack:\"*\"}}],[\"gatsby-plugin-sharp@<=4.6.0-next.3\",{dependencies:{debug:\"^4.3.1\"}}],[\"gatsby-react-router-scroll@<=5.6.0-next.0\",{dependencies:{[\"prop-types\"]:\"^15.7.2\"}}],[\"@rebass/forms@*\",{dependencies:{[\"@styled-system/should-forward-prop\"]:\"^5.0.0\"},peerDependencies:{react:\"^16.8.6\"}}],[\"rebass@*\",{peerDependencies:{react:\"^16.8.6\"}}],[\"@ant-design/react-slick@<=0.28.3\",{peerDependencies:{react:\">=16.0.0\"}}],[\"mqtt@<4.2.7\",{dependencies:{duplexify:\"^4.1.1\"}}],[\"vue-cli-plugin-vuetify@<=2.0.3\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":kt,\"vuetify-loader\":kt}}],[\"vue-cli-plugin-vuetify@<=2.0.4\",{dependencies:{\"null-loader\":\"^3.0.0\"}}],[\"vue-cli-plugin-vuetify@>=2.4.3\",{peerDependencies:{vue:\"*\"}}],[\"@vuetify/cli-plugin-utils@<=0.0.4\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":kt}}],[\"@vue/cli-plugin-typescript@<=5.0.0-alpha.0\",{dependencies:{\"babel-loader\":\"^8.1.0\"}}],[\"@vue/cli-plugin-typescript@<=5.0.0-beta.0\",{dependencies:{\"@babel/core\":\"^7.12.16\"},peerDependencies:{\"vue-template-compiler\":\"^2.0.0\"},peerDependenciesMeta:{\"vue-template-compiler\":kt}}],[\"cordova-ios@<=6.3.0\",{dependencies:{underscore:\"^1.9.2\"}}],[\"cordova-lib@<=10.0.1\",{dependencies:{underscore:\"^1.9.2\"}}],[\"git-node-fs@*\",{peerDependencies:{\"js-git\":\"^0.7.8\"},peerDependenciesMeta:{\"js-git\":kt}}],[\"consolidate@<0.16.0\",{peerDependencies:{mustache:\"^3.0.0\"},peerDependenciesMeta:{mustache:kt}}],[\"consolidate@<=0.16.0\",{peerDependencies:{velocityjs:\"^2.0.1\",tinyliquid:\"^0.2.34\",\"liquid-node\":\"^3.0.1\",jade:\"^1.11.0\",\"then-jade\":\"*\",dust:\"^0.3.0\",\"dustjs-helpers\":\"^1.7.4\",\"dustjs-linkedin\":\"^2.7.5\",swig:\"^1.4.2\",\"swig-templates\":\"^2.0.3\",\"razor-tmpl\":\"^1.3.1\",atpl:\">=0.7.6\",liquor:\"^0.0.5\",twig:\"^1.15.2\",ejs:\"^3.1.5\",eco:\"^1.1.0-rc-3\",jazz:\"^0.0.18\",jqtpl:\"~1.1.0\",hamljs:\"^0.6.2\",hamlet:\"^0.3.3\",whiskers:\"^0.4.0\",\"haml-coffee\":\"^1.14.1\",\"hogan.js\":\"^3.0.2\",templayed:\">=0.2.3\",handlebars:\"^4.7.6\",underscore:\"^1.11.0\",lodash:\"^4.17.20\",pug:\"^3.0.0\",\"then-pug\":\"*\",qejs:\"^3.0.5\",walrus:\"^0.10.1\",mustache:\"^4.0.1\",just:\"^0.1.8\",ect:\"^0.5.9\",mote:\"^0.2.0\",toffee:\"^0.3.6\",dot:\"^1.1.3\",\"bracket-template\":\"^1.1.5\",ractive:\"^1.3.12\",nunjucks:\"^3.2.2\",htmling:\"^0.0.8\",\"babel-core\":\"^6.26.3\",plates:\"~0.4.11\",\"react-dom\":\"^16.13.1\",react:\"^16.13.1\",\"arc-templates\":\"^0.5.3\",vash:\"^0.13.0\",slm:\"^2.0.0\",marko:\"^3.14.4\",teacup:\"^2.0.0\",\"coffee-script\":\"^1.12.7\",squirrelly:\"^5.1.0\",twing:\"^5.0.2\"},peerDependenciesMeta:{velocityjs:kt,tinyliquid:kt,\"liquid-node\":kt,jade:kt,\"then-jade\":kt,dust:kt,\"dustjs-helpers\":kt,\"dustjs-linkedin\":kt,swig:kt,\"swig-templates\":kt,\"razor-tmpl\":kt,atpl:kt,liquor:kt,twig:kt,ejs:kt,eco:kt,jazz:kt,jqtpl:kt,hamljs:kt,hamlet:kt,whiskers:kt,\"haml-coffee\":kt,\"hogan.js\":kt,templayed:kt,handlebars:kt,underscore:kt,lodash:kt,pug:kt,\"then-pug\":kt,qejs:kt,walrus:kt,mustache:kt,just:kt,ect:kt,mote:kt,toffee:kt,dot:kt,\"bracket-template\":kt,ractive:kt,nunjucks:kt,htmling:kt,\"babel-core\":kt,plates:kt,\"react-dom\":kt,react:kt,\"arc-templates\":kt,vash:kt,slm:kt,marko:kt,teacup:kt,\"coffee-script\":kt,squirrelly:kt,twing:kt}}],[\"vue-loader@<=16.3.3\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",webpack:\"^4.1.0 || ^5.0.0-0\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":kt}}],[\"vue-loader@^16.7.0\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",vue:\"^3.2.13\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":kt,vue:kt}}],[\"scss-parser@<=1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"query-ast@<1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"redux-thunk@<=2.3.0\",{peerDependencies:{redux:\"^4.0.0\"}}],[\"skypack@<=0.3.2\",{dependencies:{tar:\"^6.1.0\"}}],[\"@npmcli/metavuln-calculator@<2.0.0\",{dependencies:{\"json-parse-even-better-errors\":\"^2.3.1\"}}],[\"bin-links@<2.3.0\",{dependencies:{\"mkdirp-infer-owner\":\"^1.0.2\"}}],[\"rollup-plugin-polyfill-node@<=0.8.0\",{peerDependencies:{rollup:\"^1.20.0 || ^2.0.0\"}}],[\"snowpack@<3.8.6\",{dependencies:{\"magic-string\":\"^0.25.7\"}}],[\"elm-webpack-loader@*\",{dependencies:{temp:\"^0.9.4\"}}],[\"winston-transport@<=4.4.0\",{dependencies:{logform:\"^2.2.0\"}}],[\"jest-vue-preprocessor@*\",{dependencies:{\"@babel/core\":\"7.8.7\",\"@babel/template\":\"7.8.6\"},peerDependencies:{pug:\"^2.0.4\"},peerDependenciesMeta:{pug:kt}}],[\"redux-persist@*\",{peerDependencies:{react:\">=16\"},peerDependenciesMeta:{react:kt}}],[\"sodium@>=3\",{dependencies:{\"node-gyp\":\"^3.8.0\"}}],[\"babel-plugin-graphql-tag@<=3.1.0\",{peerDependencies:{graphql:\"^14.0.0 || ^15.0.0\"}}],[\"@playwright/test@<=1.14.1\",{dependencies:{\"jest-matcher-utils\":\"^26.4.2\"}}],...[\"babel-plugin-remove-graphql-queries@<3.14.0-next.1\",\"babel-preset-gatsby-package@<1.14.0-next.1\",\"create-gatsby@<1.14.0-next.1\",\"gatsby-admin@<0.24.0-next.1\",\"gatsby-cli@<3.14.0-next.1\",\"gatsby-core-utils@<2.14.0-next.1\",\"gatsby-design-tokens@<3.14.0-next.1\",\"gatsby-legacy-polyfills@<1.14.0-next.1\",\"gatsby-plugin-benchmark-reporting@<1.14.0-next.1\",\"gatsby-plugin-graphql-config@<0.23.0-next.1\",\"gatsby-plugin-image@<1.14.0-next.1\",\"gatsby-plugin-mdx@<2.14.0-next.1\",\"gatsby-plugin-netlify-cms@<5.14.0-next.1\",\"gatsby-plugin-no-sourcemaps@<3.14.0-next.1\",\"gatsby-plugin-page-creator@<3.14.0-next.1\",\"gatsby-plugin-preact@<5.14.0-next.1\",\"gatsby-plugin-preload-fonts@<2.14.0-next.1\",\"gatsby-plugin-schema-snapshot@<2.14.0-next.1\",\"gatsby-plugin-styletron@<6.14.0-next.1\",\"gatsby-plugin-subfont@<3.14.0-next.1\",\"gatsby-plugin-utils@<1.14.0-next.1\",\"gatsby-recipes@<0.25.0-next.1\",\"gatsby-source-shopify@<5.6.0-next.1\",\"gatsby-source-wikipedia@<3.14.0-next.1\",\"gatsby-transformer-screenshot@<3.14.0-next.1\",\"gatsby-worker@<0.5.0-next.1\"].map(t=>[t,{dependencies:{\"@babel/runtime\":\"^7.14.8\"}}]),[\"gatsby-core-utils@<2.14.0-next.1\",{dependencies:{got:\"8.3.2\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.1.0-next.0\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.2.0-next.1\",{peerDependencies:{webpack:\"*\"}}],[\"babel-plugin-remove-graphql-queries@<=3.14.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.8.0-next.1\"}}],[\"gatsby-plugin-netlify@3.13.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"clipanion-v3-codemod@<=0.2.0\",{peerDependencies:{jscodeshift:\"^0.11.0\"}}],[\"react-live@*\",{peerDependencies:{\"react-dom\":\"*\",react:\"*\"}}],[\"webpack@<4.44.1\",{peerDependenciesMeta:{\"webpack-cli\":kt,\"webpack-command\":kt}}],[\"webpack@<5.0.0-beta.23\",{peerDependenciesMeta:{\"webpack-cli\":kt}}],[\"webpack-dev-server@<3.10.2\",{peerDependenciesMeta:{\"webpack-cli\":kt}}],[\"@docusaurus/responsive-loader@<1.5.0\",{peerDependenciesMeta:{sharp:kt,jimp:kt}}],[\"eslint-module-utils@*\",{peerDependenciesMeta:{\"eslint-import-resolver-node\":kt,\"eslint-import-resolver-typescript\":kt,\"eslint-import-resolver-webpack\":kt,\"@typescript-eslint/parser\":kt}}],[\"eslint-plugin-import@*\",{peerDependenciesMeta:{\"@typescript-eslint/parser\":kt}}],[\"critters-webpack-plugin@<3.0.2\",{peerDependenciesMeta:{\"html-webpack-plugin\":kt}}],[\"terser@<=5.10.0\",{dependencies:{acorn:\"^8.5.0\"}}],[\"babel-preset-react-app@10.0.x <10.0.2\",{dependencies:{\"@babel/plugin-proposal-private-property-in-object\":\"^7.16.7\"}}],[\"eslint-config-react-app@*\",{peerDependenciesMeta:{typescript:kt}}],[\"@vue/eslint-config-typescript@<11.0.0\",{peerDependenciesMeta:{typescript:kt}}],[\"unplugin-vue2-script-setup@<0.9.1\",{peerDependencies:{\"@vue/composition-api\":\"^1.4.3\",\"@vue/runtime-dom\":\"^3.2.26\"}}],[\"@cypress/snapshot@*\",{dependencies:{debug:\"^3.2.7\"}}],[\"auto-relay@<=0.14.0\",{peerDependencies:{\"reflect-metadata\":\"^0.1.13\"}}],[\"vue-template-babel-compiler@<1.2.0\",{peerDependencies:{[\"vue-template-compiler\"]:\"^2.6.0\"}}],[\"@parcel/transformer-image@<2.5.0\",{peerDependencies:{[\"@parcel/core\"]:\"*\"}}],[\"@parcel/transformer-js@<2.5.0\",{peerDependencies:{[\"@parcel/core\"]:\"*\"}}],[\"parcel@*\",{peerDependenciesMeta:{[\"@parcel/core\"]:kt}}],[\"react-scripts@*\",{peerDependencies:{eslint:\"*\"}}],[\"focus-trap-react@^8.0.0\",{dependencies:{tabbable:\"^5.3.2\"}}],[\"react-rnd@<10.3.7\",{peerDependencies:{react:\">=16.3.0\",\"react-dom\":\">=16.3.0\"}}],[\"connect-mongo@<5.0.0\",{peerDependencies:{\"express-session\":\"^1.17.1\"}}],[\"vue-i18n@<9\",{peerDependencies:{vue:\"^2\"}}],[\"vue-router@<4\",{peerDependencies:{vue:\"^2\"}}],[\"unified@<10\",{dependencies:{\"@types/unist\":\"^2.0.0\"}}],[\"react-github-btn@<=1.3.0\",{peerDependencies:{react:\">=16.3.0\"}}],[\"react-dev-utils@*\",{peerDependencies:{typescript:\">=2.7\",webpack:\">=4\"},peerDependenciesMeta:{typescript:kt}}],[\"@asyncapi/react-component@<=1.0.0-next.39\",{peerDependencies:{react:\">=16.8.0\",\"react-dom\":\">=16.8.0\"}}],[\"xo@*\",{peerDependencies:{webpack:\">=1.11.0\"},peerDependenciesMeta:{webpack:kt}}],[\"babel-plugin-remove-graphql-queries@<=4.20.0-next.0\",{dependencies:{\"@babel/types\":\"^7.15.4\"}}],[\"gatsby-plugin-page-creator@<=4.20.0-next.1\",{dependencies:{\"fs-extra\":\"^10.1.0\"}}],[\"gatsby-plugin-utils@<=3.14.0-next.1\",{dependencies:{fastq:\"^1.13.0\"},peerDependencies:{graphql:\"^15.0.0\"}}],[\"gatsby-plugin-mdx@<3.1.0-next.1\",{dependencies:{mkdirp:\"^1.0.4\"}}],[\"gatsby-plugin-mdx@^2\",{peerDependencies:{gatsby:\"^3.0.0-next\"}}],[\"fdir@<=5.2.0\",{peerDependencies:{picomatch:\"2.x\"},peerDependenciesMeta:{picomatch:kt}}],[\"babel-plugin-transform-typescript-metadata@<=0.3.2\",{peerDependencies:{\"@babel/core\":\"^7\",\"@babel/traverse\":\"^7\"},peerDependenciesMeta:{\"@babel/traverse\":kt}}],[\"graphql-compose@>=9.0.10\",{peerDependencies:{graphql:\"^14.2.0 || ^15.0.0 || ^16.0.0\"}}],[\"vite-plugin-vuetify@<=1.0.2\",{peerDependencies:{vue:\"^3.0.0\"}}],[\"webpack-plugin-vuetify@<=2.0.1\",{peerDependencies:{vue:\"^3.2.6\"}}],[\"eslint-import-resolver-vite@<2.0.1\",{dependencies:{debug:\"^4.3.4\",resolve:\"^1.22.8\"}}]];var tH;function Fde(){return typeof tH>\"u\"&&(tH=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==\",\"base64\")).toString()),tH}var rH;function Rde(){return typeof rH>\"u\"&&(rH=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=\",\"base64\")).toString()),rH}var nH;function Tde(){return typeof nH>\"u\"&&(nH=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),nH}var Lde=new Map([[W.makeIdent(null,\"fsevents\").identHash,Fde],[W.makeIdent(null,\"resolve\").identHash,Rde],[W.makeIdent(null,\"typescript\").identHash,Tde]]),bgt={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,o]of eH)e(W.parseDescriptor(r,!0),o)},getBuiltinPatch:async(t,e)=>{let r=\"compat/\";if(!e.startsWith(r))return;let o=W.parseIdent(e.slice(r.length)),a=Lde.get(o.identHash)?.();return typeof a<\"u\"?a:null},reduceDependency:async(t,e,r,o)=>typeof Lde.get(t.identHash)>\"u\"?t:W.makeDescriptor(t,W.makeRange({protocol:\"patch:\",source:W.stringifyDescriptor(t),selector:`optional!builtin<compat/${W.stringifyIdent(t)}>`,params:null}))}},xgt=bgt;var wH={};Vt(wH,{ConstraintsCheckCommand:()=>h0,ConstraintsQueryCommand:()=>f0,ConstraintsSourceCommand:()=>p0,default:()=>rdt});Ye();Ye();v2();var IC=class{constructor(e){this.project=e}createEnvironment(){let e=new wC([\"cwd\",\"ident\"]),r=new wC([\"workspace\",\"type\",\"ident\"]),o=new wC([\"ident\"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,u=new Map;for(let A of this.project.storedPackages.values()){let p=Array.from(A.peerDependencies.values(),h=>[W.stringifyIdent(h),h.range]);n.set(A.locatorHash,{workspace:null,ident:W.stringifyIdent(A),version:A.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>A.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>A.peerDependenciesMeta.get(h)?.optional===!0))})}for(let A of this.project.storedPackages.values()){let p=n.get(A.locatorHash);p.dependencies=new Map(Array.from(A.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let I=n.get(E);if(typeof I>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");return[W.stringifyIdent(h),I]})),p.dependencies.delete(p.ident)}for(let A of this.project.workspaces){let p=W.stringifyIdent(A.anchoredLocator),h=A.manifest.exportTo({}),E=n.get(A.anchoredLocator.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let I=(R,N,{caller:U=Ji.getCaller()}={})=>{let J=B2(R),te=_e.getMapWithDefault(a.manifestUpdates,A.cwd),ae=_e.getMapWithDefault(te,J),fe=_e.getSetWithDefault(ae,N);U!==null&&fe.add(U)},v=R=>I(R,void 0,{caller:Ji.getCaller()}),x=R=>{_e.getArrayWithDefault(a.reportedErrors,A.cwd).push(R)},C=e.insert({cwd:A.relativeCwd,ident:p,manifest:h,pkg:E,set:I,unset:v,error:x});u.set(A,C);for(let R of Ot.allDependencies)for(let N of A.manifest[R].values()){let U=W.stringifyIdent(N),J=()=>{I([R,U],void 0,{caller:Ji.getCaller()})},te=fe=>{I([R,U],fe,{caller:Ji.getCaller()})},ae=null;if(R!==\"peerDependencies\"&&(R!==\"dependencies\"||!A.manifest.devDependencies.has(N.identHash))){let fe=A.anchoredPackage.dependencies.get(N.identHash);if(fe){if(typeof fe>\"u\")throw new Error(\"Assertion failed: The dependency should have been registered\");let ce=this.project.storedResolutions.get(fe.descriptorHash);if(typeof ce>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let me=n.get(ce);if(typeof me>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");ae=me}}r.insert({workspace:C,ident:U,range:N.range,type:R,resolution:ae,update:te,delete:J,error:x})}}for(let A of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(A);if(!p)continue;let h=u.get(p);if(typeof h>\"u\")throw new Error(\"Assertion failed: The workspace should have been registered\");let E=n.get(A.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");E.workspace=h}return{workspaces:e,dependencies:r,packages:o,result:a}}async process(){let e=this.createEnvironment(),r={Yarn:{workspace:a=>e.workspaces.find(a)[0]??null,workspaces:a=>e.workspaces.find(a),dependency:a=>e.dependencies.find(a)[0]??null,dependencies:a=>e.dependencies.find(a),package:a=>e.packages.find(a)[0]??null,packages:a=>e.packages.find(a)}},o=await this.project.loadUserConfig();return o?.constraints?(await o.constraints(r),e.result):null}};Ye();Ye();jt();var f0=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.query=ge.String()}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(x2(),b2)),o=await Ke.find(this.context.cwd,this.context.plugins),{project:a}=await St.find(o,this.context.cwd),n=await r.find(a),u=this.query;return u.endsWith(\".\")||(u=`${u}.`),(await Lt.start({configuration:o,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(u)){let E=Array.from(Object.entries(h)),I=E.length,v=E.reduce((x,[C])=>Math.max(x,C.length),0);for(let x=0;x<I;x++){let[C,R]=E[x];p.reportInfo(null,`${edt(x,I)}${C.padEnd(v,\" \")} = ${$gt(R)}`)}p.reportJson(h)}})).exitCode()}};f0.paths=[[\"constraints\",\"query\"]],f0.usage=nt.Usage({category:\"Constraints-related commands\",description:\"query the constraints fact database\",details:`\n      This command will output all matches to the given prolog query.\n    `,examples:[[\"List all dependencies throughout the workspace\",\"yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'\"]]});function $gt(t){return typeof t!=\"string\"?`${t}`:t.match(/^[a-zA-Z][a-zA-Z0-9_]+$/)?t:`'${t}'`}function edt(t,e){let r=t===0,o=t===e-1;return r&&o?\"\":r?\"\\u250C \":o?\"\\u2514 \":\"\\u2502 \"}Ye();jt();var p0=class extends ut{constructor(){super(...arguments);this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Also print the fact database automatically compiled from the workspace manifests\"})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(x2(),b2)),o=await Ke.find(this.context.cwd,this.context.plugins),{project:a}=await St.find(o,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};p0.paths=[[\"constraints\",\"source\"]],p0.usage=nt.Usage({category:\"Constraints-related commands\",description:\"print the source code for the constraints\",details:\"\\n      This command will print the Prolog source code used by the constraints engine. Adding the `-v,--verbose` flag will print the *full* source code, including the fact database automatically compiled from the workspace manifests.\\n    \",examples:[[\"Prints the source code\",\"yarn constraints source\"],[\"Print the source code and the fact database\",\"yarn constraints source -v\"]]});Ye();Ye();jt();v2();var h0=class extends ut{constructor(){super(...arguments);this.fix=ge.Boolean(\"--fix\",!1,{description:\"Attempt to automatically fix unambiguous issues, following a multi-pass process\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd);await o.restoreInstallState();let a=await o.loadUserConfig(),n;if(a?.constraints)n=new IC(o);else{let{Constraints:h}=await Promise.resolve().then(()=>(x2(),b2));n=await h.find(o)}let u,A=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:I,remainingErrors:v}=gk(o,E,{fix:this.fix}),x=[];for(let[C,R]of I){let N=C.manifest.indent;C.manifest=new Ot,C.manifest.indent=N,C.manifest.load(R),x.push(C.persistManifest())}if(await Promise.all(x),!(I.size>0&&h>1)){u=jde(v,{configuration:r}),A=!1,p=!0;for(let[,C]of v)for(let R of C)R.fixable?A=!0:p=!1}}if(u.children.length===0)return 0;if(A){let h=p?`Those errors can all be fixed by running ${de.pretty(r,\"yarn constraints --fix\",de.Type.CODE)}`:`Errors prefixed by '\\u2699' can be fixed by running ${de.pretty(r,\"yarn constraints --fix\",de.Type.CODE)}`;await Lt.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return u.children=_e.sortMap(u.children,h=>h.value[1]),$s.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};h0.paths=[[\"constraints\"]],h0.usage=nt.Usage({category:\"Constraints-related commands\",description:\"check that the project constraints are met\",details:`\n      This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code.\n\n      If the \\`--fix\\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution.\n\n      For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints.\n    `,examples:[[\"Check that all constraints are satisfied\",\"yarn constraints\"],[\"Autofix all unmet constraints\",\"yarn constraints --fix\"]]});v2();var tdt={configuration:{enableConstraintsChecks:{description:\"If true, constraints will run during installs\",type:\"BOOLEAN\",default:!1},constraintsPath:{description:\"The path of the constraints file.\",type:\"ABSOLUTE_PATH\",default:\"./constraints.pro\"}},commands:[f0,p0,h0],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get(\"enableConstraintsChecks\"))return;let r=await t.loadUserConfig(),o;if(r?.constraints)o=new IC(t);else{let{Constraints:u}=await Promise.resolve().then(()=>(x2(),b2));o=await u.find(t)}let a=await o.process();if(!a)return;let{remainingErrors:n}=gk(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[u,A]of n)for(let p of A)e(84,`${de.pretty(t.configuration,u.anchoredLocator,de.Type.IDENT)}: ${p.text}`);else e(84,`Constraint check failed; run ${de.pretty(t.configuration,\"yarn constraints\",de.Type.CODE)} for more details`)}}},rdt=tdt;var IH={};Vt(IH,{CreateCommand:()=>tm,DlxCommand:()=>g0,default:()=>idt});Ye();jt();var tm=class extends ut{constructor(){super(...arguments);this.pkg=ge.String(\"-p,--package\",{description:\"The package to run the provided command from\"});this.quiet=ge.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=ge.String();this.args=ge.Proxy()}async execute(){let r=[];this.pkg&&r.push(\"--package\",this.pkg),this.quiet&&r.push(\"--quiet\");let o=this.command.replace(/^(@[^@/]+)(@|$)/,\"$1/create$2\"),a=W.parseDescriptor(o),n=a.name.match(/^create(-|$)/)?a:a.scope?W.makeIdent(a.scope,`create-${a.name}`):W.makeIdent(null,`create-${a.name}`),u=W.stringifyIdent(n);return a.range!==\"unknown\"&&(u+=`@${a.range}`),this.cli.run([\"dlx\",...r,u,...this.args])}};tm.paths=[[\"create\"]];Ye();Ye();Pt();jt();var g0=class extends ut{constructor(){super(...arguments);this.packages=ge.Array(\"-p,--package\",{description:\"The package(s) to install before running the command\"});this.quiet=ge.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=ge.String();this.args=ge.Proxy()}async execute(){return Ke.telemetry=null,await oe.mktempPromise(async r=>{let o=V.join(r,`dlx-${process.pid}`);await oe.mkdirPromise(o),await oe.writeFilePromise(V.join(o,\"package.json\"),`{}\n`),await oe.writeFilePromise(V.join(o,\"yarn.lock\"),\"\");let a=V.join(o,\".yarnrc.yml\"),n=await Ke.findProjectCwd(this.context.cwd),A={enableGlobalCache:!(await Ke.find(this.context.cwd,null,{strict:!1})).get(\"enableGlobalCache\"),enableTelemetry:!1,logFilters:[{code:Wu(68),level:de.LogLevel.Discard}]},p=n!==null?V.join(n,\".yarnrc.yml\"):null;p!==null&&oe.existsSync(p)?(await oe.copyFilePromise(p,a),await Ke.updateConfiguration(o,N=>{let U=_e.toMerged(N,A);return Array.isArray(N.plugins)&&(U.plugins=N.plugins.map(J=>{let te=typeof J==\"string\"?J:J.path,ae=ue.isAbsolute(te)?te:ue.resolve(ue.fromPortablePath(n),te);return typeof J==\"string\"?ae:{path:ae,spec:J.spec}})),U})):await oe.writeJsonPromise(a,A);let h=this.packages??[this.command],E=W.parseDescriptor(this.command).name,I=await this.cli.run([\"add\",\"--fixed\",\"--\",...h],{cwd:o,quiet:this.quiet});if(I!==0)return I;this.quiet||this.context.stdout.write(`\n`);let v=await Ke.find(o,this.context.plugins),{project:x,workspace:C}=await St.find(v,o);if(C===null)throw new rr(x.cwd,o);await x.restoreInstallState();let R=await un.getWorkspaceAccessibleBinaries(C);return R.has(E)===!1&&R.size===1&&typeof this.packages>\"u\"&&(E=Array.from(R)[0][0]),await un.executeWorkspaceAccessibleBinary(C,E,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};g0.paths=[[\"dlx\"]],g0.usage=nt.Usage({description:\"run a package in a temporary environment\",details:\"\\n      This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\\n\\n      By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\\n\\n      Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\\n    \",examples:[[\"Use create-react-app to create a new React app\",\"yarn dlx create-react-app ./my-app\"],[\"Install multiple packages for a single command\",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e \"console.log('hello!')\"`]]});var ndt={commands:[tm,g0]},idt=ndt;var DH={};Vt(DH,{ExecFetcher:()=>Q2,ExecResolver:()=>F2,default:()=>adt,execUtils:()=>Ek});Ye();Ye();Pt();var fA=\"exec:\";var Ek={};Vt(Ek,{loadGeneratorFile:()=>k2,makeLocator:()=>vH,makeSpec:()=>hme,parseSpec:()=>BH});Ye();Pt();function BH(t){let{params:e,selector:r}=W.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?W.parseLocator(e.locator):null,path:o}}function hme({parentLocator:t,path:e,generatorHash:r,protocol:o}){let a=t!==null?{locator:W.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return W.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function vH(t,{parentLocator:e,path:r,generatorHash:o,protocol:a}){return W.makeLocator(t,hme({parentLocator:e,path:r,generatorHash:o,protocol:a}))}async function k2(t,e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(t,{protocol:e}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath)}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.join(u.prefixPath,a);return await A.readFilePromise(p,\"utf8\")}var Q2=class{supports(e,r){return!!e.reference.startsWith(fA)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:fA});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){let o=await k2(e.reference,fA,r);return oe.mktempPromise(async a=>{let n=V.join(a,\"generator.js\");return await oe.writeFilePromise(n,o),oe.mktempPromise(async u=>{if(await this.generatePackage(u,e,n,r),!oe.existsSync(V.join(u,\"build\")))throw new Error(\"The script should have generated a build directory\");return await Xi.makeArchiveFromDirectory(V.join(u,\"build\"),{prefixPath:W.getIdentVendorPath(e),compressionLevel:r.project.configuration.get(\"compressionLevel\")})})})}async generatePackage(e,r,o,a){return await oe.mktempPromise(async n=>{let u=await un.makeScriptEnv({project:a.project,binFolder:n}),A=V.join(e,\"runtime.js\");return await oe.mktempPromise(async p=>{let h=V.join(p,\"buildfile.log\"),E=V.join(e,\"generator\"),I=V.join(e,\"build\");await oe.mkdirPromise(E),await oe.mkdirPromise(I);let v={tempDir:ue.fromPortablePath(E),buildDir:ue.fromPortablePath(I),locator:W.stringifyLocator(r)};await oe.writeFilePromise(A,`\n          // Expose 'Module' as a global variable\n          Object.defineProperty(global, 'Module', {\n            get: () => require('module'),\n            configurable: true,\n            enumerable: false,\n          });\n\n          // Expose non-hidden built-in modules as global variables\n          for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) {\n            Object.defineProperty(global, name, {\n              get: () => require(name),\n              configurable: true,\n              enumerable: false,\n            });\n          }\n\n          // Expose the 'execEnv' global variable\n          Object.defineProperty(global, 'execEnv', {\n            value: {\n              ...${JSON.stringify(v)},\n            },\n            enumerable: true,\n          });\n        `);let x=u.NODE_OPTIONS||\"\",C=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g;x=x.replace(C,\" \").trim(),u.NODE_OPTIONS=x;let{stdout:R,stderr:N}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${W.stringifyLocator(r)})\n`,prefix:W.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await Ur.pipevp(process.execPath,[\"--require\",ue.fromPortablePath(A),ue.fromPortablePath(o),W.stringifyIdent(r)],{cwd:e,env:u,stdin:null,stdout:R,stderr:N});if(U!==0)throw oe.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${de.pretty(a.project.configuration,h,de.Type.PATH)})`)})})}};Ye();Ye();var sdt=2,F2=class{supportsDescriptor(e,r){return!!e.range.startsWith(fA)}supportsLocator(e,r){return!!e.reference.startsWith(fA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=BH(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=await k2(W.makeRange({protocol:fA,source:a,selector:a,params:{locator:W.stringifyLocator(n)}}),fA,o.fetchOptions),A=wn.makeHash(`${sdt}`,u).slice(0,6);return[vH(e,{parentLocator:n,path:a,generatorHash:A,protocol:fA})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var odt={fetchers:[Q2],resolvers:[F2]},adt=odt;var SH={};Vt(SH,{FileFetcher:()=>N2,FileResolver:()=>O2,TarballFileFetcher:()=>M2,TarballFileResolver:()=>U2,default:()=>udt,fileUtils:()=>rm});Ye();Pt();var PC=/^(?:[a-zA-Z]:[\\\\/]|\\.{0,2}\\/)/,R2=/^[^?]*\\.(?:tar\\.gz|tgz)(?:::.*)?$/,Ui=\"file:\";var rm={};Vt(rm,{fetchArchiveFromLocator:()=>L2,makeArchiveFromLocator:()=>Ck,makeBufferFromLocator:()=>PH,makeLocator:()=>SC,makeSpec:()=>gme,parseSpec:()=>T2});Ye();Pt();function T2(t){let{params:e,selector:r}=W.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?W.parseLocator(e.locator):null,path:o}}function gme({parentLocator:t,path:e,hash:r,protocol:o}){let a=t!==null?{locator:W.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return W.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function SC(t,{parentLocator:e,path:r,hash:o,protocol:a}){return W.makeLocator(t,gme({parentLocator:e,path:r,hash:o,protocol:a}))}async function L2(t,e){let{parentLocator:r,path:o}=W.parseFileStyleRange(t.reference,{protocol:Ui}),a=V.isAbsolute(o)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let u=n.packageFs,A=V.join(n.prefixPath,o);return await _e.releaseAfterUseAsync(async()=>await u.readFilePromise(A),n.releaseFs)}async function Ck(t,{protocol:e,fetchOptions:r,inMemory:o=!1}){let{parentLocator:a,path:n}=W.parseFileStyleRange(t.reference,{protocol:e}),u=V.isAbsolute(n)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(a,r),A=u.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,u.localPath)}:u;u!==A&&u.releaseFs&&u.releaseFs();let p=A.packageFs,h=V.join(A.prefixPath,n);return await _e.releaseAfterUseAsync(async()=>await Xi.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:W.getIdentVendorPath(t),compressionLevel:r.project.configuration.get(\"compressionLevel\"),inMemory:o}),A.releaseFs)}async function PH(t,{protocol:e,fetchOptions:r}){return(await Ck(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var N2=class{supports(e,r){return!!e.reference.startsWith(Ui)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:Ui});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){return Ck(e,{protocol:Ui,fetchOptions:r})}};Ye();Ye();var ldt=2,O2=class{supportsDescriptor(e,r){return e.range.match(PC)?!0:!!e.range.startsWith(Ui)}supportsLocator(e,r){return!!e.reference.startsWith(Ui)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return PC.test(e.range)&&(e=W.makeDescriptor(e,`${Ui}${e.range}`)),W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=T2(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=await PH(W.makeLocator(e,W.makeRange({protocol:Ui,source:a,selector:a,params:{locator:W.stringifyLocator(n)}})),{protocol:Ui,fetchOptions:o.fetchOptions}),A=wn.makeHash(`${ldt}`,u).slice(0,6);return[SC(e,{parentLocator:n,path:a,hash:A,protocol:Ui})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};Ye();var M2=class{supports(e,r){return R2.test(e.reference)?!!e.reference.startsWith(Ui):!1}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromDisk(e,r){let o=await L2(e,r);return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();Ye();Ye();var U2=class{supportsDescriptor(e,r){return R2.test(e.range)?!!(e.range.startsWith(Ui)||PC.test(e.range)):!1}supportsLocator(e,r){return R2.test(e.reference)?!!e.reference.startsWith(Ui):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return PC.test(e.range)&&(e=W.makeDescriptor(e,`${Ui}${e.range}`)),W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=T2(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=SC(e,{parentLocator:n,path:a,hash:\"\",protocol:Ui}),A=await L2(u,o.fetchOptions),p=wn.makeHash(A).slice(0,6);return[SC(e,{parentLocator:n,path:a,hash:p,protocol:Ui})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var cdt={fetchers:[M2,N2],resolvers:[U2,O2]},udt=cdt;var kH={};Vt(kH,{GithubFetcher:()=>_2,default:()=>fdt,githubUtils:()=>wk});Ye();Pt();var wk={};Vt(wk,{invalidGithubUrlMessage:()=>yme,isGithubUrl:()=>bH,parseGithubUrl:()=>xH});var dme=$e(ve(\"querystring\")),mme=[/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+)\\/tarball\\/([^/#]+)(?:#(.*))?$/,/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+?)(?:\\.git)?(?:#(.*))?$/];function bH(t){return t?mme.some(e=>!!t.match(e)):!1}function xH(t){let e;for(let A of mme)if(e=t.match(A),e)break;if(!e)throw new Error(yme(t));let[,r,o,a,n=\"master\"]=e,{commit:u}=dme.default.parse(n);return n=u||n.replace(/[^:]*:/,\"\"),{auth:r,username:o,reponame:a,treeish:n}}function yme(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var _2=class{supports(e,r){return!!bH(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await nn.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await oe.mktempPromise(async a=>{let n=new gn(a);await Xi.extractArchiveTo(o,n,{stripComponents:1});let u=ra.splitRepoUrl(e.reference),A=V.join(a,\"package.tgz\");await un.prepareExternalProject(a,A,{configuration:r.project.configuration,report:r.report,workspace:u.extra.workspace,locator:e});let p=await oe.readFilePromise(A);return await Xi.convertToZip(p,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:o,username:a,reponame:n,treeish:u}=xH(e.reference);return`https://${o?`${o}@`:\"\"}github.com/${a}/${n}/archive/${u}.tar.gz`}};var Adt={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let o=new _2;if(!o.supports(e,r))return null;try{return await o.fetch(e,r)}catch{return null}}}},fdt=Adt;var QH={};Vt(QH,{TarballHttpFetcher:()=>j2,TarballHttpResolver:()=>q2,default:()=>hdt});Ye();function H2(t){let e;try{e=new URL(t)}catch{return!1}return!(e.protocol!==\"http:\"&&e.protocol!==\"https:\"||!e.pathname.match(/(\\.tar\\.gz|\\.tgz|\\/[^.]+)$/))}var j2=class{supports(e,r){return H2(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await nn.get(e.reference,{configuration:r.project.configuration});return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();Ye();var q2=class{supportsDescriptor(e,r){return H2(e.range)}supportsLocator(e,r){return H2(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[W.convertDescriptorToLocator(e)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var pdt={fetchers:[j2],resolvers:[q2]},hdt=pdt;var FH={};Vt(FH,{InitCommand:()=>d0,default:()=>ddt});Ye();Ye();Pt();jt();var d0=class extends ut{constructor(){super(...arguments);this.private=ge.Boolean(\"-p,--private\",!1,{description:\"Initialize a private package\"});this.workspace=ge.Boolean(\"-w,--workspace\",!1,{description:\"Initialize a workspace root with a `packages/` directory\"});this.install=ge.String(\"-i,--install\",!1,{tolerateBoolean:!0,description:\"Initialize a package with a specific bundle that will be locked in the project\"});this.name=ge.String(\"-n,--name\",{description:\"Initialize a package with the given name\"});this.usev2=ge.Boolean(\"-2\",!1,{hidden:!0});this.yes=ge.Boolean(\"-y,--yes\",{hidden:!0})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=typeof this.install==\"string\"?this.install:this.usev2||this.install===!0?\"latest\":null;return o!==null?await this.executeProxy(r,o):await this.executeRegular(r)}async executeProxy(r,o){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new it(\"Cannot use the --install flag from within a project subdirectory\");oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=V.join(this.context.cwd,dr.lockfile);oe.existsSync(a)||await oe.writeFilePromise(a,\"\");let n=await this.cli.run([\"set\",\"version\",o],{quiet:!0});if(n!==0)return n;let u=[];return this.private&&u.push(\"-p\"),this.workspace&&u.push(\"-w\"),this.name&&u.push(`-n=${this.name}`),this.yes&&u.push(\"-y\"),await oe.mktempPromise(async A=>{let{code:p}=await Ur.pipevp(\"yarn\",[\"init\",...u],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await un.makeScriptEnv({binFolder:A})});return p})}async executeRegular(r){let o=null;try{o=(await St.find(r,this.context.cwd)).project}catch{o=null}oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Ot.tryFind(this.context.cwd),n=a??new Ot,u=Object.fromEntries(r.get(\"initFields\").entries());n.load(u),n.name=n.name??W.makeIdent(r.get(\"initScope\"),this.name??V.basename(this.context.cwd)),n.packageManager=rn&&_e.isTaggedYarnVersion(rn)?`yarn@${rn}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await oe.mkdirPromise(V.join(this.context.cwd,\"packages\"),{recursive:!0}),n.workspaceDefinitions=[{pattern:\"packages/*\"}]);let A={};n.exportTo(A);let p=V.join(this.context.cwd,Ot.fileName);await oe.changeFilePromise(p,`${JSON.stringify(A,null,2)}\n`,{automaticNewlines:!0});let h=[p],E=V.join(this.context.cwd,\"README.md\");if(oe.existsSync(E)||(await oe.writeFilePromise(E,`# ${W.stringifyIdent(n.name)}\n`),h.push(E)),!o||o.cwd===this.context.cwd){let I=V.join(this.context.cwd,dr.lockfile);oe.existsSync(I)||(await oe.writeFilePromise(I,\"\"),h.push(I));let x=[\".yarn/*\",\"!.yarn/patches\",\"!.yarn/plugins\",\"!.yarn/releases\",\"!.yarn/sdks\",\"!.yarn/versions\",\"\",\"# Swap the comments on the following lines if you wish to use zero-installs\",\"# In that case, don't forget to run `yarn config set enableGlobalCache false`!\",\"# Documentation here: https://yarnpkg.com/features/caching#zero-installs\",\"\",\"#!.yarn/cache\",\".pnp.*\"].map(fe=>`${fe}\n`).join(\"\"),C=V.join(this.context.cwd,\".gitignore\");oe.existsSync(C)||(await oe.writeFilePromise(C,x),h.push(C));let N=[\"/.yarn/**            linguist-vendored\",\"/.yarn/releases/*    binary\",\"/.yarn/plugins/**/*  binary\",\"/.pnp.*              binary linguist-generated\"].map(fe=>`${fe}\n`).join(\"\"),U=V.join(this.context.cwd,\".gitattributes\");oe.existsSync(U)||(await oe.writeFilePromise(U,N),h.push(U));let J={[\"*\"]:{endOfLine:\"lf\",insertFinalNewline:!0},[\"*.{js,json,yml}\"]:{charset:\"utf-8\",indentStyle:\"space\",indentSize:2}};_e.mergeIntoTarget(J,r.get(\"initEditorConfig\"));let te=`root = true\n`;for(let[fe,ce]of Object.entries(J)){te+=`\n[${fe}]\n`;for(let[me,he]of Object.entries(ce)){let Be=me.replace(/[A-Z]/g,we=>`_${we.toLowerCase()}`);te+=`${Be} = ${he}\n`}}let ae=V.join(this.context.cwd,\".editorconfig\");oe.existsSync(ae)||(await oe.writeFilePromise(ae,te),h.push(ae)),await this.cli.run([\"install\"],{quiet:!0}),oe.existsSync(V.join(this.context.cwd,\".git\"))||(await Ur.execvp(\"git\",[\"init\"],{cwd:this.context.cwd}),await Ur.execvp(\"git\",[\"add\",\"--\",...h],{cwd:this.context.cwd}),await Ur.execvp(\"git\",[\"commit\",\"--allow-empty\",\"-m\",\"First commit\"],{cwd:this.context.cwd}))}}};d0.paths=[[\"init\"]],d0.usage=nt.Usage({description:\"create a new package\",details:\"\\n      This command will setup a new package in your local directory.\\n\\n      If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\\n\\n      If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\\n\\n      If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\\n\\n      The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\\n    \",examples:[[\"Create a new package in the local directory\",\"yarn init\"],[\"Create a new private package in the local directory\",\"yarn init -p\"],[\"Create a new package and store the Yarn release inside\",\"yarn init -i=latest\"],[\"Create a new private package and defines it as a workspace root\",\"yarn init -w\"]]});var gdt={configuration:{initScope:{description:\"Scope used when creating packages via the init command\",type:\"STRING\",default:null},initFields:{description:\"Additional fields to set when creating packages via the init command\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}},initEditorConfig:{description:\"Extra rules to define in the generator editorconfig\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}}},commands:[d0]},ddt=gdt;var Tj={};Vt(Tj,{SearchCommand:()=>w0,UpgradeInteractiveCommand:()=>B0,default:()=>iIt});Ye();var Cme=$e(ve(\"os\"));function bC({stdout:t}){if(Cme.default.endianness()===\"BE\")throw new Error(\"Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures\");if(!t.isTTY)throw new Error(\"Interactive commands can only be used inside a TTY environment\")}jt();var Fye=$e(zH()),XH={appId:\"OFCNCOG2CU\",apiKey:\"6fe4476ee5a1832882e326b506d14126\",indexName:\"npm-search\"},pyt=(0,Fye.default)(XH.appId,XH.apiKey).initIndex(XH.indexName),ZH=async(t,e=0)=>await pyt.search(t,{analyticsTags:[\"yarn-plugin-interactive-tools\"],attributesToRetrieve:[\"name\",\"version\",\"owner\",\"repository\",\"humanDownloadsLast30Days\"],page:e,hitsPerPage:10});var jB=[\"regular\",\"dev\",\"peer\"],w0=class extends ut{async execute(){bC(this.context);let{Gem:e}=await Promise.resolve().then(()=>(cQ(),Bj)),{ScrollableItems:r}=await Promise.resolve().then(()=>(pQ(),fQ)),{useKeypress:o}=await Promise.resolve().then(()=>(UB(),Kwe)),{useMinistore:a}=await Promise.resolve().then(()=>(xj(),bj)),{renderForm:n}=await Promise.resolve().then(()=>(mQ(),dQ)),{default:u}=await Promise.resolve().then(()=>$e(nIe())),{Box:A,Text:p}=await Promise.resolve().then(()=>$e(ic())),{default:h,useEffect:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),x=()=>h.createElement(A,{flexDirection:\"row\"},h.createElement(A,{flexDirection:\"column\",width:48},h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to move between packages.\")),h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" to select a package.\")),h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" again to change the target.\"))),h.createElement(A,{flexDirection:\"column\"},h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install the selected packages.\")),h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),C=()=>h.createElement(h.Fragment,null,h.createElement(A,{width:15},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Owner\")),h.createElement(A,{width:11},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Version\")),h.createElement(A,{width:10},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Downloads\"))),R=()=>h.createElement(A,{width:17},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Target\")),N=({hit:he,active:Be})=>{let[we,g]=a(he.name,null);o({active:Be},(le,ne)=>{if(ne.name!==\"space\")return;if(!we){g(jB[0]);return}let ee=jB.indexOf(we)+1;ee===jB.length?g(null):g(jB[ee])},[we,g]);let Ee=W.parseIdent(he.name),Pe=W.prettyIdent(v,Ee);return h.createElement(A,null,h.createElement(A,{width:45},h.createElement(p,{bold:!0,wrap:\"wrap\"},Pe)),h.createElement(A,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:\"truncate\"},he.owner.name)),h.createElement(A,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:\"truncate\"},he.version)),h.createElement(A,{width:16,marginLeft:1},h.createElement(p,null,he.humanDownloadsLast30Days)))},U=({name:he,active:Be})=>{let[we]=a(he,null),g=W.parseIdent(he);return h.createElement(A,null,h.createElement(A,{width:47},h.createElement(p,{bold:!0},\" - \",W.prettyIdent(v,g))),jB.map(Ee=>h.createElement(A,{key:Ee,width:14,marginLeft:1},h.createElement(p,null,\" \",h.createElement(e,{active:we===Ee}),\" \",h.createElement(p,{bold:!0},Ee)))))},J=()=>h.createElement(A,{marginTop:1},h.createElement(p,null,\"Powered by Algolia.\")),ae=await n(({useSubmit:he})=>{let Be=a();he(Be);let we=Array.from(Be.keys()).filter(H=>Be.get(H)!==null),[g,Ee]=I(\"\"),[Pe,le]=I(0),[ne,ee]=I([]),Ie=H=>{H.match(/\\t| /)||Ee(H)},Fe=async()=>{le(0);let H=await ZH(g);H.query===g&&ee(H.hits)},At=async()=>{let H=await ZH(g,Pe+1);H.query===g&&H.page-1===Pe&&(le(H.page),ee([...ne,...H.hits]))};return E(()=>{g?Fe():ee([])},[g]),h.createElement(A,{flexDirection:\"column\"},h.createElement(x,null),h.createElement(A,{flexDirection:\"row\",marginTop:1},h.createElement(p,{bold:!0},\"Search: \"),h.createElement(A,{width:41},h.createElement(u,{value:g,onChange:Ie,placeholder:\"i.e. babel, webpack, react...\",showCursor:!1})),h.createElement(C,null)),ne.length?h.createElement(r,{radius:2,loop:!1,children:ne.map(H=>h.createElement(N,{key:H.name,hit:H,active:!1})),willReachEnd:At}):h.createElement(p,{color:\"gray\"},\"Start typing...\"),h.createElement(A,{flexDirection:\"row\",marginTop:1},h.createElement(A,{width:49},h.createElement(p,{bold:!0},\"Selected:\")),h.createElement(R,null)),we.length?we.map(H=>h.createElement(U,{key:H,name:H,active:!1})):h.createElement(p,{color:\"gray\"},\"No selected packages...\"),h.createElement(J,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ae>\"u\")return 1;let fe=Array.from(ae.keys()).filter(he=>ae.get(he)===\"regular\"),ce=Array.from(ae.keys()).filter(he=>ae.get(he)===\"dev\"),me=Array.from(ae.keys()).filter(he=>ae.get(he)===\"peer\");return fe.length&&await this.cli.run([\"add\",...fe]),ce.length&&await this.cli.run([\"add\",\"--dev\",...ce]),me&&await this.cli.run([\"add\",\"--peer\",...me]),0}};w0.paths=[[\"search\"]],w0.usage=nt.Usage({category:\"Interactive commands\",description:\"open the search interface\",details:`\n    This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry.\n    `,examples:[[\"Open the search window\",\"yarn search\"]]});Ye();jt();E_();var uIe=$e(zn()),cIe=/^((?:[\\^~]|>=?)?)([0-9]+)(\\.[0-9]+)(\\.[0-9]+)((?:-\\S+)?)$/,AIe=(t,e)=>t.length>0?[t.slice(0,e)].concat(AIe(t.slice(e),e)):[],B0=class extends ut{async execute(){bC(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(lIe(),aIe)),{Pad:r}=await Promise.resolve().then(()=>(Rj(),oIe)),{ScrollableItems:o}=await Promise.resolve().then(()=>(pQ(),fQ)),{useMinistore:a}=await Promise.resolve().then(()=>(xj(),bj)),{renderForm:n}=await Promise.resolve().then(()=>(mQ(),dQ)),{Box:u,Text:A}=await Promise.resolve().then(()=>$e(ic())),{default:p,useEffect:h,useRef:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),{project:x,workspace:C}=await St.find(v,this.context.cwd),R=await Nr.find(v);if(!C)throw new rr(x.cwd,this.context.cwd);await x.restoreInstallState({restoreResolutions:!1});let N=this.context.stdout.rows-7,U=(Ee,Pe)=>{let le=Ape(Ee,Pe),ne=\"\";for(let ee of le)ee.added?ne+=de.pretty(v,ee.value,\"green\"):ee.removed||(ne+=ee.value);return ne},J=(Ee,Pe)=>{if(Ee===Pe)return Pe;let le=W.parseRange(Ee),ne=W.parseRange(Pe),ee=le.selector.match(cIe),Ie=ne.selector.match(cIe);if(!ee||!Ie)return U(Ee,Pe);let Fe=[\"gray\",\"red\",\"yellow\",\"green\",\"magenta\"],At=null,H=\"\";for(let at=1;at<Fe.length;++at)At!==null||ee[at]!==Ie[at]?(At===null&&(At=Fe[at-1]),H+=de.pretty(v,Ie[at],At)):H+=Ie[at];return H},te=async(Ee,Pe,le)=>{let ne=await zc.fetchDescriptorFrom(Ee,le,{project:x,cache:R,preserveModifier:Pe,workspace:C});return ne!==null?ne.range:Ee.range},ae=async Ee=>{let Pe=uIe.default.valid(Ee.range)?`^${Ee.range}`:Ee.range,[le,ne]=await Promise.all([te(Ee,Ee.range,Pe).catch(()=>null),te(Ee,Ee.range,\"latest\").catch(()=>null)]),ee=[{value:null,label:Ee.range}];return le&&le!==Ee.range?ee.push({value:le,label:J(Ee.range,le)}):ee.push({value:null,label:\"\"}),ne&&ne!==le&&ne!==Ee.range?ee.push({value:ne,label:J(Ee.range,ne)}):ee.push({value:null,label:\"\"}),ee},fe=()=>p.createElement(u,{flexDirection:\"row\"},p.createElement(u,{flexDirection:\"column\",width:49},p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select packages.\")),p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select versions.\"))),p.createElement(u,{flexDirection:\"column\"},p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install.\")),p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),ce=()=>p.createElement(u,{flexDirection:\"row\",paddingTop:1,paddingBottom:1},p.createElement(u,{width:50},p.createElement(A,{bold:!0},p.createElement(A,{color:\"greenBright\"},\"?\"),\" Pick the packages you want to upgrade.\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Current\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Range\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Latest\"))),me=({active:Ee,descriptor:Pe,suggestions:le})=>{let[ne,ee]=a(Pe.descriptorHash,null),Ie=W.stringifyIdent(Pe),Fe=Math.max(0,45-Ie.length);return p.createElement(p.Fragment,null,p.createElement(u,null,p.createElement(u,{width:45},p.createElement(A,{bold:!0},W.prettyIdent(v,Pe)),p.createElement(r,{active:Ee,length:Fe})),p.createElement(e,{active:Ee,options:le,value:ne,skewer:!0,onChange:ee,sizes:[17,17,17]})))},he=({dependencies:Ee})=>{let[Pe,le]=I(Ee.map(()=>null)),ne=E(!0),ee=async Ie=>{let Fe=await ae(Ie);return Fe.filter(At=>At.label!==\"\").length<=1?null:{descriptor:Ie,suggestions:Fe}};return h(()=>()=>{ne.current=!1},[]),h(()=>{let Ie=Math.trunc(N*1.75),Fe=Ee.slice(0,Ie),At=Ee.slice(Ie),H=AIe(At,N),at=Fe.map(ee).reduce(async(Re,ke)=>{await Re;let xe=await ke;xe!==null&&(!ne.current||le(He=>{let Te=He.findIndex(je=>je===null),Je=[...He];return Je[Te]=xe,Je}))},Promise.resolve());H.reduce((Re,ke)=>Promise.all(ke.map(xe=>Promise.resolve().then(()=>ee(xe)))).then(async xe=>{xe=xe.filter(He=>He!==null),await Re,ne.current&&le(He=>{let Te=He.findIndex(Je=>Je===null);return He.slice(0,Te).concat(xe).concat(He.slice(Te+xe.length))})}),at).then(()=>{ne.current&&le(Re=>Re.filter(ke=>ke!==null))})},[]),Pe.length?p.createElement(o,{radius:N>>1,children:Pe.map((Ie,Fe)=>Ie!==null?p.createElement(me,{key:Fe,active:!1,descriptor:Ie.descriptor,suggestions:Ie.suggestions}):p.createElement(A,{key:Fe},\"Loading...\"))}):p.createElement(A,null,\"No upgrades found\")},we=await n(({useSubmit:Ee})=>{Ee(a());let Pe=new Map;for(let ne of x.workspaces)for(let ee of[\"dependencies\",\"devDependencies\"])for(let Ie of ne.manifest[ee].values())x.tryWorkspaceByDescriptor(Ie)===null&&(Ie.range.startsWith(\"link:\")||Pe.set(Ie.descriptorHash,Ie));let le=_e.sortMap(Pe.values(),ne=>W.stringifyDescriptor(ne));return p.createElement(u,{flexDirection:\"column\"},p.createElement(fe,null),p.createElement(ce,null),p.createElement(he,{dependencies:le}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof we>\"u\")return 1;let g=!1;for(let Ee of x.workspaces)for(let Pe of[\"dependencies\",\"devDependencies\"]){let le=Ee.manifest[Pe];for(let ne of le.values()){let ee=we.get(ne.descriptorHash);typeof ee<\"u\"&&ee!==null&&(le.set(ne.identHash,W.makeDescriptor(ne,ee)),g=!0)}}return g?await x.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:R}):0}};B0.paths=[[\"upgrade-interactive\"]],B0.usage=nt.Usage({category:\"Interactive commands\",description:\"open the upgrade interface\",details:`\n      This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.\n    `,examples:[[\"Open the upgrade window\",\"yarn upgrade-interactive\"]]});var nIt={commands:[w0,B0]},iIt=nIt;var Lj={};Vt(Lj,{LinkFetcher:()=>GB,LinkResolver:()=>YB,PortalFetcher:()=>WB,PortalResolver:()=>KB,default:()=>oIt});Ye();Pt();var tp=\"portal:\",rp=\"link:\";var GB=class{supports(e,r){return!!e.reference.startsWith(rp)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:rp});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:rp}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new gn(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new _u(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0}}};Ye();Pt();var YB=class{supportsDescriptor(e,r){return!!e.range.startsWith(rp)}supportsLocator(e,r){return!!e.reference.startsWith(rp)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(rp.length);return[W.makeLocator(e,`${rp}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){return{...e,version:\"0.0.0\",languageName:r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};Ye();Pt();var WB=class{supports(e,r){return!!e.reference.startsWith(tp)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:tp});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:tp}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new gn(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,localPath:p}:{packageFs:new _u(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot}}};Ye();Ye();Pt();var KB=class{supportsDescriptor(e,r){return!!e.range.startsWith(tp)}supportsLocator(e,r){return!!e.reference.startsWith(tp)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(tp.length);return[W.makeLocator(e,`${tp}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var sIt={fetchers:[GB,WB],resolvers:[YB,KB]},oIt=sIt;var yq={};Vt(yq,{NodeModulesLinker:()=>lv,NodeModulesMode:()=>hq,PnpLooseLinker:()=>cv,default:()=>I1t});Pt();Ye();Pt();Pt();var Oj=(t,e)=>`${t}@${e}`,fIe=(t,e)=>{let r=e.indexOf(\"#\"),o=r>=0?e.substring(r+1):e;return Oj(t,o)};var gIe=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),o=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:o,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},u;n.debugLevel>=0&&(u=Date.now());let A=pIt(t,n),p=!1,h=0;do p=Mj(A,[A],new Set([A.locator]),new Map,n).anotherRoundNeeded,n.fastLookupPossible=!1,h++;while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-u}ms, rounds: ${h}`),n.debugLevel>=1){let E=VB(A);if(Mj(A,[A],new Set([A.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree:\n${E}, next tree:\n${VB(A)}`);let v=dIe(A);if(v)throw new Error(`${v}, after hoisting finished:\n${VB(A)}`)}return n.debugLevel>=2&&console.log(VB(A)),hIt(A)},aIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=n=>{if(!o.has(n)){o.add(n);for(let u of n.hoistedDependencies.values())r.set(u.name,u);for(let u of n.dependencies.values())n.peerNames.has(u.name)||a(u)}};return a(e),r},lIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=new Set,n=(u,A)=>{if(o.has(u))return;o.add(u);for(let h of u.hoistedDependencies.values())if(!A.has(h.name)){let E;for(let I of t)E=I.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of u.dependencies.values())p.add(h.name);for(let h of u.dependencies.values())u.peerNames.has(h.name)||n(h,p)};return n(e,a),r},pIe=(t,e)=>{if(e.decoupled)return e;let{name:r,references:o,ident:a,locator:n,dependencies:u,originalDependencies:A,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:I,hoistPriority:v,dependencyKind:x,hoistedFrom:C,hoistedTo:R}=e,N={name:r,references:new Set(o),ident:a,locator:n,dependencies:new Map(u),originalDependencies:new Map(A),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:I,hoistPriority:v,dependencyKind:x,hoistedFrom:new Map(C),hoistedTo:new Map(R)},U=N.dependencies.get(r);return U&&U.ident==N.ident&&N.dependencies.set(r,N),t.dependencies.set(N.name,N),N},cIt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let o=Array.from(e.keys());o.sort((a,n)=>{let u=e.get(a),A=e.get(n);return A.hoistPriority!==u.hoistPriority?A.hoistPriority-u.hoistPriority:A.peerDependents.size!==u.peerDependents.size?A.peerDependents.size-u.peerDependents.size:A.dependents.size-u.dependents.size});for(let a of o){let n=a.substring(0,a.indexOf(\"@\",1)),u=a.substring(n.length+1);if(!t.peerNames.has(n)){let A=r.get(n);A||(A=[],r.set(n,A)),A.indexOf(u)<0&&A.push(u)}}return r},Nj=t=>{let e=new Set,r=(o,a=new Set)=>{if(!a.has(o)){a.add(o);for(let n of o.peerNames)if(!t.peerNames.has(n)){let u=t.dependencies.get(n);u&&!e.has(u)&&r(u,a)}e.add(o)}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||r(o);return e},Mj=(t,e,r,o,a,n=new Set)=>{let u=e[e.length-1];if(n.has(u))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(u);let A=gIt(u),p=cIt(u,A),h=t==u?new Map:a.fastLookupPossible?aIt(e):lIt(e),E,I=!1,v=!1,x=new Map(Array.from(p.entries()).map(([R,N])=>[R,N[0]])),C=new Map;do{let R=fIt(t,e,r,h,x,p,o,C,a);R.isGraphChanged&&(v=!0),R.anotherRoundNeeded&&(I=!0),E=!1;for(let[N,U]of p)U.length>1&&!u.dependencies.has(N)&&(x.delete(N),U.shift(),x.set(N,U[0]),E=!0)}while(E);for(let R of u.dependencies.values())if(!u.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let N=Mj(t,[...e,R],r,C,a);N.isGraphChanged&&(v=!0),N.anotherRoundNeeded&&(I=!0),r.delete(R.locator)}return{anotherRoundNeeded:I,isGraphChanged:v}},uIt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},AIt=(t,e,r,o,a,n,u,A,{outputReason:p,fastLookupPossible:h})=>{let E,I=null,v=new Set;p&&(E=`${Array.from(e).map(N=>no(N)).join(\"\\u2192\")}`);let x=r[r.length-1],R=!(o.ident===x.ident);if(p&&!R&&(I=\"- self-reference\"),R&&(R=o.dependencyKind!==1,p&&!R&&(I=\"- workspace\")),R&&o.dependencyKind===2&&(R=!uIt(o),p&&!R&&(I=\"- external soft link with unhoisted dependencies\")),R&&(R=x.dependencyKind!==1||x.hoistedFrom.has(o.name)||e.size===1,p&&!R&&(I=x.reasons.get(o.name))),R&&(R=!t.peerNames.has(o.name),p&&!R&&(I=`- cannot shadow peer: ${no(t.originalDependencies.get(o.name).locator)} at ${E}`)),R){let N=!1,U=a.get(o.name);if(N=!U||U.ident===o.ident,p&&!N&&(I=`- filled by: ${no(U.locator)} at ${E}`),N)for(let J=r.length-1;J>=1;J--){let ae=r[J].dependencies.get(o.name);if(ae&&ae.ident!==o.ident){N=!1;let fe=A.get(x);fe||(fe=new Set,A.set(x,fe)),fe.add(o.name),p&&(I=`- filled by ${no(ae.locator)} at ${r.slice(0,J).map(ce=>no(ce.locator)).join(\"\\u2192\")}`);break}}R=N}if(R&&(R=n.get(o.name)===o.ident,p&&!R&&(I=`- filled by: ${no(u.get(o.name)[0])} at ${E}`)),R){let N=!0,U=new Set(o.peerNames);for(let J=r.length-1;J>=1;J--){let te=r[J];for(let ae of U){if(te.peerNames.has(ae)&&te.originalDependencies.has(ae))continue;let fe=te.dependencies.get(ae);fe&&t.dependencies.get(ae)!==fe&&(J===r.length-1?v.add(fe):(v=null,N=!1,p&&(I=`- peer dependency ${no(fe.locator)} from parent ${no(te.locator)} was not hoisted to ${E}`))),U.delete(ae)}if(!N)break}R=N}if(R&&!h)for(let N of o.hoistedDependencies.values()){let U=a.get(N.name)||t.dependencies.get(N.name);if(!U||N.ident!==U.ident){R=!1,p&&(I=`- previously hoisted dependency mismatch, needed: ${no(N.locator)}, available: ${no(U?.locator)}`);break}}return v!==null&&v.size>0?{isHoistable:2,dependsOn:v,reason:I}:{isHoistable:R?0:1,reason:I}},yQ=t=>`${t.name}@${t.locator}`,fIt=(t,e,r,o,a,n,u,A,p)=>{let h=e[e.length-1],E=new Set,I=!1,v=!1,x=(U,J,te,ae,fe)=>{if(E.has(ae))return;let ce=[...J,yQ(ae)],me=[...te,yQ(ae)],he=new Map,Be=new Map;for(let le of Nj(ae)){let ne=AIt(h,r,[h,...U,ae],le,o,a,n,A,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Be.set(le,ne),ne.isHoistable===2)for(let ee of ne.dependsOn){let Ie=he.get(ee.name)||new Set;Ie.add(le.name),he.set(ee.name,Ie)}}let we=new Set,g=(le,ne,ee)=>{if(!we.has(le)){we.add(le),Be.set(le,{isHoistable:1,reason:ee});for(let Ie of he.get(le.name)||[])g(ae.dependencies.get(Ie),ne,p.debugLevel>=2?`- peer dependency ${no(le.locator)} from parent ${no(ae.locator)} was not hoisted`:\"\")}};for(let[le,ne]of Be)ne.isHoistable===1&&g(le,ne,ne.reason);let Ee=!1;for(let le of Be.keys())if(!we.has(le)){v=!0;let ne=u.get(ae);ne&&ne.has(le.name)&&(I=!0),Ee=!0,ae.dependencies.delete(le.name),ae.hoistedDependencies.set(le.name,le),ae.reasons.delete(le.name);let ee=h.dependencies.get(le.name);if(p.debugLevel>=2){let Ie=Array.from(J).concat([ae.locator]).map(At=>no(At)).join(\"\\u2192\"),Fe=h.hoistedFrom.get(le.name);Fe||(Fe=[],h.hoistedFrom.set(le.name,Fe)),Fe.push(Ie),ae.hoistedTo.set(le.name,Array.from(e).map(At=>no(At.locator)).join(\"\\u2192\"))}if(!ee)h.ident!==le.ident&&(h.dependencies.set(le.name,le),fe.add(le));else for(let Ie of le.references)ee.references.add(Ie)}if(ae.dependencyKind===2&&Ee&&(I=!0),p.check){let le=dIe(t);if(le)throw new Error(`${le}, after hoisting dependencies of ${[h,...U,ae].map(ne=>no(ne.locator)).join(\"\\u2192\")}:\n${VB(t)}`)}let Pe=Nj(ae);for(let le of Pe)if(we.has(le)){let ne=Be.get(le);if((a.get(le.name)===le.ident||!ae.reasons.has(le.name))&&ne.isHoistable!==0&&ae.reasons.set(le.name,ne.reason),!le.isHoistBorder&&me.indexOf(yQ(le))<0){E.add(ae);let Ie=pIe(ae,le);x([...U,ae],ce,me,Ie,R),E.delete(ae)}}},C,R=new Set(Nj(h)),N=Array.from(e).map(U=>yQ(U));do{C=R,R=new Set;for(let U of C){if(U.locator===h.locator||U.isHoistBorder)continue;let J=pIe(h,U);x([],Array.from(r),N,J,R)}}while(R.size>0);return{anotherRoundNeeded:I,isGraphChanged:v}},dIe=t=>{let e=[],r=new Set,o=new Set,a=(n,u,A)=>{if(r.has(n)||(r.add(n),o.has(n)))return;let p=new Map(u);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),I=()=>`${Array.from(o).concat([n]).map(v=>no(v.locator)).join(\"\\u2192\")}`;if(n.peerNames.has(h.name)){let v=u.get(h.name);(v!==E||!v||v.ident!==h.ident)&&e.push(`${I()} - broken peer promise: expected ${h.ident} but found ${v&&v.ident}`)}else{let v=A.hoistedFrom.get(n.name),x=n.hoistedTo.get(h.name),C=`${v?` hoisted from ${v.join(\", \")}`:\"\"}`,R=`${x?` hoisted to ${x}`:\"\"}`,N=`${I()}${C}`;E?E.ident!==h.ident&&e.push(`${N} - broken require promise for ${h.name}${R}: expected ${h.ident}, but found: ${E.ident}`):e.push(`${N} - broken require promise: no required dependency ${h.name}${R} found`)}}o.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);o.delete(n)};return a(t,t.dependencies,t),e.join(`\n`)},pIt=(t,e)=>{let{identName:r,name:o,reference:a,peerNames:n}=t,u={name:o,references:new Set([a]),locator:Oj(r,a),ident:fIe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},A=new Map([[t,u]]),p=(h,E)=>{let I=A.get(h),v=!!I;if(!I){let{name:x,identName:C,reference:R,peerNames:N,hoistPriority:U,dependencyKind:J}=h,te=e.hoistingLimits.get(E.locator);I={name:x,references:new Set([R]),locator:Oj(C,R),ident:fIe(C,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(N),reasons:new Map,decoupled:!0,isHoistBorder:te?te.has(x):!1,hoistPriority:U||0,dependencyKind:J||0,hoistedFrom:new Map,hoistedTo:new Map},A.set(h,I)}if(E.dependencies.set(h.name,I),E.originalDependencies.set(h.name,I),v){let x=new Set,C=R=>{if(!x.has(R)){x.add(R),R.decoupled=!1;for(let N of R.dependencies.values())R.peerNames.has(N.name)||C(N)}};C(I)}else for(let x of h.dependencies)p(x,I)};for(let h of t.dependencies)p(h,u);return u},Uj=t=>t.substring(0,t.indexOf(\"@\",1)),hIt=t=>{let e={name:t.name,identName:Uj(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),o=(a,n,u)=>{let A=r.has(a),p;if(n===a)p=u;else{let{name:h,references:E,locator:I}=a;p={name:h,identName:Uj(I),references:E,dependencies:new Set}}if(u.dependencies.add(p),!A){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||o(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())o(a,t,e);return e},gIt=t=>{let e=new Map,r=new Set([t]),o=u=>`${u.name}@${u.ident}`,a=u=>{let A=o(u),p=e.get(A);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(A,p)),p},n=(u,A)=>{let p=!!r.has(A);if(a(A).dependents.add(u.ident),!p){r.add(A);for(let E of A.dependencies.values()){let I=a(E);I.hoistPriority=Math.max(I.hoistPriority,E.hoistPriority),A.peerNames.has(E.name)?I.peerDependents.add(A.ident):n(A,E)}}};for(let u of t.dependencies.values())t.peerNames.has(u.name)||n(t,u);return e},no=t=>{if(!t)return\"none\";let e=t.indexOf(\"@\",1),r=t.substring(0,e);r.endsWith(\"$wsroot$\")&&(r=`wh:${r.replace(\"$wsroot$\",\"\")}`);let o=t.substring(e+1);if(o===\"workspace:.\")return\".\";if(o){let a=(o.indexOf(\"#\")>0?o.split(\"#\")[1]:o).replace(\"npm:\",\"\");return o.startsWith(\"virtual\")&&(r=`v:${r}`),a.startsWith(\"workspace\")&&(r=`w:${r}`,a=\"\"),`${r}${a?`@${a}`:\"\"}`}else return`${r}`},hIe=5e4,VB=t=>{let e=0,r=(a,n,u=\"\")=>{if(e>hIe||n.has(a))return\"\";e++;let A=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p=\"\";n.add(a);for(let h=0;h<A.length;h++){let E=A[h];if(!a.peerNames.has(E.name)&&E!==a){let I=a.reasons.get(E.name),v=Uj(E.locator);p+=`${u}${h<A.length-1?\"\\u251C\\u2500\":\"\\u2514\\u2500\"}${(n.has(E)?\">\":\"\")+(v!==E.name?`a:${E.name}:`:\"\")+no(E.locator)+(I?` ${I}`:\"\")}\n`,p+=r(E,n,`${u}${h<A.length-1?\"\\u2502 \":\"  \"}`)}}return n.delete(a),p};return r(t,new Set)+(e>hIe?`\nTree is too large, part of the tree has been dunped\n`:\"\")};var JB=(o=>(o.WORKSPACES=\"workspaces\",o.DEPENDENCIES=\"dependencies\",o.NONE=\"none\",o))(JB||{}),mIe=\"node_modules\",v0=\"$wsroot$\";var zB=(t,e)=>{let{packageTree:r,hoistingLimits:o,errors:a,preserveSymlinksRequired:n}=mIt(t,e),u=null;if(a.length===0){let A=gIe(r,{hoistingLimits:o});u=EIt(t,A,e)}return{tree:u,errors:a,preserveSymlinksRequired:n}},gA=t=>`${t.name}@${t.reference}`,Hj=t=>{let e=new Map;for(let[r,o]of t.entries())if(!o.dirList){let a=e.get(o.locator);a||(a={target:o.target,linkType:o.linkType,locations:[],aliases:o.aliases},e.set(o.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((o,a)=>{let n=o.split(V.delimiter).length,u=a.split(V.delimiter).length;return a===o?0:n!==u?u-n:a>o?1:-1});return e},yIe=(t,e)=>{let r=W.isVirtualLocator(t)?W.devirtualizeLocator(t):t,o=W.isVirtualLocator(e)?W.devirtualizeLocator(e):e;return W.areLocatorsEqual(r,o)},_j=(t,e,r,o)=>{if(t.linkType!==\"SOFT\")return!1;let a=ue.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith(\"virtual:\")?r.resolveVirtual(t.packageLocation):t.packageLocation);return V.contains(o,a)===null},dIt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");if(t.findPackageLocator(e.packageLocation)===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let o=ue.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},u=t.getDependencyTreeRoots(),A=new Map,p=new Set,h=(v,x)=>{let C=gA(v);if(p.has(C))return;p.add(C);let R=t.getPackageInformation(v);if(R){let N=x?gA(x):\"\";if(gA(v)!==N&&R.linkType===\"SOFT\"&&!v.reference.startsWith(\"link:\")&&!_j(R,v,t,o)){let U=EIe(R,v,t);(!A.get(U)||v.reference.startsWith(\"workspace:\"))&&A.set(U,v)}for(let[U,J]of R.packageDependencies)J!==null&&(R.packagePeers.has(U)||h(t.getLocator(U,J),v))}};for(let v of u)h(v,null);let E=o.split(V.sep);for(let v of A.values()){let x=t.getPackageInformation(v),R=ue.toPortablePath(x.packageLocation.slice(0,-1)).split(V.sep).slice(E.length),N=n;for(let U of R){let J=N.children.get(U);J||(J={children:new Map},N.children.set(U,J)),N=J}N.workspaceLocator=v}let I=(v,x)=>{if(v.workspaceLocator){let C=gA(x),R=a.get(C);R||(R=new Set,a.set(C,R)),R.add(v.workspaceLocator)}for(let C of v.children.values())I(C,v.workspaceLocator||x)};for(let v of n.children.values())I(v,n.workspaceLocator);return a},mIt=(t,e)=>{let r=[],o=!1,a=new Map,n=dIt(t),u=t.getPackageInformation(t.topLevel);if(u===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");let A=t.findPackageLocator(u.packageLocation);if(A===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let p=ue.toPortablePath(u.packageLocation.slice(0,-1)),h={name:A.name,identName:A.name,reference:A.reference,peerNames:u.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,I=(x,C)=>`${gA(C)}:${x}`,v=(x,C,R,N,U,J,te,ae)=>{let fe=I(x,R),ce=E.get(fe),me=!!ce;!me&&R.name===A.name&&R.reference===A.reference&&(ce=h,E.set(fe,h));let he=_j(C,R,t,p);if(!ce){let le=0;he?le=2:C.linkType===\"SOFT\"&&R.name.endsWith(v0)&&(le=1),ce={name:x,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:le===1?new Set:C.packagePeers,dependencyKind:le},E.set(fe,ce)}let Be;if(he?Be=2:U.linkType===\"SOFT\"?Be=1:Be=0,ce.hoistPriority=Math.max(ce.hoistPriority||0,Be),ae&&!he){let le=gA({name:N.identName,reference:N.reference}),ne=a.get(le)||new Set;a.set(le,ne),ne.add(ce.name)}let we=new Map(C.packageDependencies);if(e.project){let le=e.project.workspacesByCwd.get(ue.toPortablePath(C.packageLocation.slice(0,-1)));if(le){let ne=new Set([...Array.from(le.manifest.peerDependencies.values(),ee=>W.stringifyIdent(ee)),...Array.from(le.manifest.peerDependenciesMeta.keys())]);for(let ee of ne)we.has(ee)||(we.set(ee,J.get(ee)||null),ce.peerNames.add(ee))}}let g=gA({name:R.name.replace(v0,\"\"),reference:R.reference}),Ee=n.get(g);if(Ee)for(let le of Ee)we.set(`${le.name}${v0}`,le.reference);(C!==U||C.linkType!==\"SOFT\"||!he&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(te)))&&N.dependencies.add(ce);let Pe=R!==A&&C.linkType===\"SOFT\"&&!R.name.endsWith(v0)&&!he;if(!me&&!Pe){let le=new Map;for(let[ne,ee]of we)if(ee!==null){let Ie=t.getLocator(ne,ee),Fe=t.getLocator(ne.replace(v0,\"\"),ee),At=t.getPackageInformation(Fe);if(At===null)throw new Error(\"Assertion failed: Expected the package to have been registered\");let H=_j(At,Ie,t,p);if(e.validateExternalSoftLinks&&e.project&&H){At.packageDependencies.size>0&&(o=!0);for(let[He,Te]of At.packageDependencies)if(Te!==null){let Je=W.parseLocator(Array.isArray(Te)?`${Te[0]}@${Te[1]}`:`${He}@${Te}`);if(gA(Je)!==gA(Ie)){let je=we.get(He);if(je){let b=W.parseLocator(Array.isArray(je)?`${je[0]}@${je[1]}`:`${He}@${je}`);yIe(b,Je)||r.push({messageName:71,text:`Cannot link ${W.prettyIdent(e.project.configuration,W.parseIdent(Ie.name))} into ${W.prettyLocator(e.project.configuration,W.parseLocator(`${R.name}@${R.reference}`))} dependency ${W.prettyLocator(e.project.configuration,Je)} conflicts with parent dependency ${W.prettyLocator(e.project.configuration,b)}`})}else{let b=le.get(He);if(b){let w=b.target,S=W.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${He}@${w}`);yIe(S,Je)||r.push({messageName:71,text:`Cannot link ${W.prettyIdent(e.project.configuration,W.parseIdent(Ie.name))} into ${W.prettyLocator(e.project.configuration,W.parseLocator(`${R.name}@${R.reference}`))} dependency ${W.prettyLocator(e.project.configuration,Je)} conflicts with dependency ${W.prettyLocator(e.project.configuration,S)} from sibling portal ${W.prettyIdent(e.project.configuration,W.parseIdent(b.portal.name))}`})}else le.set(He,{target:Je.reference,portal:Ie})}}}}let at=e.hoistingLimitsByCwd?.get(te),Re=H?te:V.relative(p,ue.toPortablePath(At.packageLocation))||Bt.dot,ke=e.hoistingLimitsByCwd?.get(Re);v(ne,At,Ie,ce,C,we,Re,at===\"dependencies\"||ke===\"dependencies\"||ke===\"workspaces\")}}};return v(A.name,u,A,h,u,u.packageDependencies,Bt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:o}};function EIe(t,e,r){let o=r.resolveVirtual&&e.reference&&e.reference.startsWith(\"virtual:\")?r.resolveVirtual(t.packageLocation):t.packageLocation;return ue.toPortablePath(o||t.packageLocation)}function yIt(t,e,r){let o=e.getLocator(t.name.replace(v0,\"\"),t.reference),a=e.getPackageInformation(o);if(a===null)throw new Error(\"Assertion failed: Expected the package to be registered\");return r.pnpifyFs?{linkType:\"SOFT\",target:ue.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:EIe(a,t,e)}}var EIt=(t,e,r)=>{let o=new Map,a=(E,I,v)=>{let{linkType:x,target:C}=yIt(E,t,r);return{locator:gA(E),nodePath:I,target:C,linkType:x,aliases:v}},n=E=>{let[I,v]=E.split(\"/\");return v?{scope:I,name:v}:{scope:null,name:I}},u=new Set,A=(E,I,v)=>{if(u.has(E))return;u.add(E);let x=Array.from(E.references).sort().join(\"#\");for(let C of E.dependencies){let R=Array.from(C.references).sort().join(\"#\");if(C.identName===E.identName.replace(v0,\"\")&&R===x)continue;let N=Array.from(C.references).sort(),U={name:C.identName,reference:N[0]},{name:J,scope:te}=n(C.name),ae=te?[te,J]:[J],fe=V.join(I,mIe),ce=V.join(fe,...ae),me=`${v}/${U.name}`,he=a(U,v,N.slice(1)),Be=!1;if(he.linkType===\"SOFT\"&&r.project){let we=r.project.workspacesByCwd.get(he.target.slice(0,-1));Be=!!(we&&!we.manifest.name)}if(!C.name.endsWith(v0)&&!Be){let we=o.get(ce);if(we){if(we.dirList)throw new Error(`Assertion failed: ${ce} cannot merge dir node with leaf node`);{let Pe=W.parseLocator(we.locator),le=W.parseLocator(he.locator);if(we.linkType!==he.linkType)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different link types ${we.nodePath}/${W.stringifyLocator(Pe)} and ${v}/${W.stringifyLocator(le)}`);if(Pe.identHash!==le.identHash)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different idents ${we.nodePath}/${W.stringifyLocator(Pe)} and ${v}/s${W.stringifyLocator(le)}`);he.aliases=[...he.aliases,...we.aliases,W.parseLocator(we.locator).reference]}}o.set(ce,he);let g=ce.split(\"/\"),Ee=g.indexOf(mIe);for(let Pe=g.length-1;Ee>=0&&Pe>Ee;Pe--){let le=ue.toPortablePath(g.slice(0,Pe).join(V.sep)),ne=g[Pe],ee=o.get(le);if(!ee)o.set(le,{dirList:new Set([ne])});else if(ee.dirList){if(ee.dirList.has(ne))break;ee.dirList.add(ne)}}}A(C,he.linkType===\"SOFT\"?he.target:ce,me)}},p=a({name:e.name,reference:Array.from(e.references)[0]},\"\",[]),h=p.target;return o.set(h,p),A(e,h,\"\"),o};Ye();Ye();Pt();Pt();nA();Ll();var oq={};Vt(oq,{PnpInstaller:()=>mm,PnpLinker:()=>S0,UnplugCommand:()=>x0,default:()=>JIt,getPnpPath:()=>b0,jsInstallUtils:()=>yA,pnpUtils:()=>av,quotePathIfNeeded:()=>n1e});Pt();var r1e=ve(\"url\");Ye();Ye();Pt();Pt();var CIe={[\"DEFAULT\"]:{collapsed:!1,next:{[\"*\"]:\"DEFAULT\"}},[\"TOP_LEVEL\"]:{collapsed:!1,next:{fallbackExclusionList:\"FALLBACK_EXCLUSION_LIST\",packageRegistryData:\"PACKAGE_REGISTRY_DATA\",[\"*\"]:\"DEFAULT\"}},[\"FALLBACK_EXCLUSION_LIST\"]:{collapsed:!1,next:{[\"*\"]:\"FALLBACK_EXCLUSION_ENTRIES\"}},[\"FALLBACK_EXCLUSION_ENTRIES\"]:{collapsed:!0,next:{[\"*\"]:\"FALLBACK_EXCLUSION_DATA\"}},[\"FALLBACK_EXCLUSION_DATA\"]:{collapsed:!0,next:{[\"*\"]:\"DEFAULT\"}},[\"PACKAGE_REGISTRY_DATA\"]:{collapsed:!1,next:{[\"*\"]:\"PACKAGE_REGISTRY_ENTRIES\"}},[\"PACKAGE_REGISTRY_ENTRIES\"]:{collapsed:!0,next:{[\"*\"]:\"PACKAGE_STORE_DATA\"}},[\"PACKAGE_STORE_DATA\"]:{collapsed:!1,next:{[\"*\"]:\"PACKAGE_STORE_ENTRIES\"}},[\"PACKAGE_STORE_ENTRIES\"]:{collapsed:!0,next:{[\"*\"]:\"PACKAGE_INFORMATION_DATA\"}},[\"PACKAGE_INFORMATION_DATA\"]:{collapsed:!1,next:{packageDependencies:\"PACKAGE_DEPENDENCIES\",[\"*\"]:\"DEFAULT\"}},[\"PACKAGE_DEPENDENCIES\"]:{collapsed:!1,next:{[\"*\"]:\"PACKAGE_DEPENDENCY\"}},[\"PACKAGE_DEPENDENCY\"]:{collapsed:!0,next:{[\"*\"]:\"DEFAULT\"}}};function CIt(t,e,r){let o=\"\";o+=\"[\";for(let a=0,n=t.length;a<n;++a)o+=EQ(String(a),t[a],e,r).replace(/^ +/g,\"\"),a+1<n&&(o+=\", \");return o+=\"]\",o}function wIt(t,e,r){let o=`${r}  `,a=\"\";a+=r,a+=`[\n`;for(let n=0,u=t.length;n<u;++n)a+=o+EQ(String(n),t[n],e,o).replace(/^ +/,\"\"),n+1<u&&(a+=\",\"),a+=`\n`;return a+=r,a+=\"]\",a}function IIt(t,e,r){let o=Object.keys(t),a=\"\";a+=\"{\";for(let n=0,u=o.length,A=0;n<u;++n){let p=o[n],h=t[p];typeof h>\"u\"||(A!==0&&(a+=\", \"),a+=JSON.stringify(p),a+=\": \",a+=EQ(p,h,e,r).replace(/^ +/g,\"\"),A+=1)}return a+=\"}\",a}function BIt(t,e,r){let o=Object.keys(t),a=`${r}  `,n=\"\";n+=r,n+=`{\n`;let u=0;for(let A=0,p=o.length;A<p;++A){let h=o[A],E=t[h];typeof E>\"u\"||(u!==0&&(n+=\",\",n+=`\n`),n+=a,n+=JSON.stringify(h),n+=\": \",n+=EQ(h,E,e,a).replace(/^ +/g,\"\"),u+=1)}return u!==0&&(n+=`\n`),n+=r,n+=\"}\",n}function EQ(t,e,r,o){let{next:a}=CIe[r],n=a[t]||a[\"*\"];return wIe(e,n,o)}function wIe(t,e,r){let{collapsed:o}=CIe[e];return Array.isArray(t)?o?CIt(t,e,r):wIt(t,e,r):typeof t==\"object\"&&t!==null?o?IIt(t,e,r):BIt(t,e,r):JSON.stringify(t)}function IIe(t){return wIe(t,\"TOP_LEVEL\",\"\")}function XB(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function vIt(t){let e=new Map,r=XB(t.fallbackExclusionList||[],[({name:o,reference:a})=>o,({name:o,reference:a})=>a]);for(let{name:o,reference:a}of r){let n=e.get(o);typeof n>\"u\"&&e.set(o,n=new Set),n.add(a)}return Array.from(e).map(([o,a])=>[o,Array.from(a)])}function DIt(t){return XB(t.fallbackPool||[],([e])=>e)}function PIt(t){let e=[];for(let[r,o]of XB(t.packageRegistry,([a])=>a===null?\"0\":`1${a}`)){let a=[];e.push([r,a]);for(let[n,{packageLocation:u,packageDependencies:A,packagePeers:p,linkType:h,discardFromLookup:E}]of XB(o,([I])=>I===null?\"0\":`1${I}`)){let I=[];r!==null&&n!==null&&!A.has(r)&&I.push([r,n]);for(let[C,R]of XB(A.entries(),([N])=>N))I.push([C,R]);let v=p&&p.size>0?Array.from(p):void 0,x=E||void 0;a.push([n,{packageLocation:u,packageDependencies:I,packagePeers:v,linkType:h,discardFromLookup:x}])}}return e}function ZB(t){return{__info:[\"This file is automatically generated. Do not touch it, or risk\",\"your modifications being lost.\"],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:vIt(t),fallbackPool:DIt(t),packageRegistryData:PIt(t)}}var DIe=$e(vIe());function PIe(t,e){return[t?`${t}\n`:\"\",`/* eslint-disable */\n`,`// @ts-nocheck\n`,`\"use strict\";\n`,`\n`,e,`\n`,(0,DIe.default)()].join(\"\")}function SIt(t){return JSON.stringify(t,null,2)}function bIt(t){return`'${t.replace(/\\\\/g,\"\\\\\\\\\").replace(/'/g,\"\\\\'\").replace(/\\n/g,`\\\\\n`)}'`}function xIt(t){return[`const RAW_RUNTIME_STATE =\n`,`${bIt(IIe(t))};\n\n`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function kIt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  const fs = require('fs');\n`,`  const path = require('path');\n`,`  const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(dr.pnpData)});\n`,`  return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function SIe(t){let e=ZB(t),r=xIt(e);return PIe(t.shebang,r)}function bIe(t){let e=ZB(t),r=kIt(),o=PIe(t.shebang,r);return{dataFile:SIt(e),loaderFile:o}}Pt();function qj(t,{basePath:e}){let r=ue.toPortablePath(e),o=V.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,u=new Map(t.packageRegistryData.map(([I,v])=>[I,new Map(v.map(([x,C])=>{if(I===null!=(x===null))throw new Error(\"Assertion failed: The name and reference should be null, or neither should\");let R=C.discardFromLookup??!1,N={name:I,reference:x},U=n.get(C.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&R,R||(U.locator=N)):n.set(C.packageLocation,{locator:N,discardFromLookup:R});let J=null;return[x,{packageDependencies:new Map(C.packageDependencies),packagePeers:new Set(C.packagePeers),linkType:C.linkType,discardFromLookup:R,get packageLocation(){return J||(J=V.join(o,C.packageLocation))}}]}))])),A=new Map(t.fallbackExclusionList.map(([I,v])=>[I,new Set(v)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,E=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:A,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:u}}Pt();Pt();var np=ve(\"module\"),dm=ve(\"url\"),$j=ve(\"util\");var Mo=ve(\"url\");var FIe=$e(ve(\"assert\"));var Gj=Array.isArray,$B=JSON.stringify,ev=Object.getOwnPropertyNames,hm=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Yj=(t,e)=>RegExp.prototype.exec.call(t,e),Wj=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),D0=(t,...e)=>String.prototype.endsWith.apply(t,e),Kj=(t,...e)=>String.prototype.includes.apply(t,e),Vj=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),tv=(t,...e)=>String.prototype.indexOf.apply(t,e),xIe=(t,...e)=>String.prototype.replace.apply(t,e),P0=(t,...e)=>String.prototype.slice.apply(t,e),dA=(t,...e)=>String.prototype.startsWith.apply(t,e),kIe=Map,QIe=JSON.parse;function rv(t,e,r){return class extends r{constructor(...o){super(e(...o)),this.code=t,this.name=`${r.name} [${t}]`}}}var RIe=rv(\"ERR_PACKAGE_IMPORT_NOT_DEFINED\",(t,e,r)=>`Package import specifier \"${t}\" is not defined${e?` in package ${e}package.json`:\"\"} imported from ${r}`,TypeError),Jj=rv(\"ERR_INVALID_MODULE_SPECIFIER\",(t,e,r=void 0)=>`Invalid module \"${t}\" ${e}${r?` imported from ${r}`:\"\"}`,TypeError),TIe=rv(\"ERR_INVALID_PACKAGE_TARGET\",(t,e,r,o=!1,a=void 0)=>{let n=typeof r==\"string\"&&!o&&r.length&&!dA(r,\"./\");return e===\".\"?((0,FIe.default)(o===!1),`Invalid \"exports\" main target ${$B(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`):`Invalid \"${o?\"imports\":\"exports\"}\" target ${$B(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`},Error),nv=rv(\"ERR_INVALID_PACKAGE_CONFIG\",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:\"\"}${r?`. ${r}`:\"\"}`,Error),LIe=rv(\"ERR_PACKAGE_PATH_NOT_EXPORTED\",(t,e,r=void 0)=>e===\".\"?`No \"exports\" main defined in ${t}package.json${r?` imported from ${r}`:\"\"}`:`Package subpath '${e}' is not defined by \"exports\" in ${t}package.json${r?` imported from ${r}`:\"\"}`,Error);var wQ=ve(\"url\");function NIe(t,e){let r=Object.create(null);for(let o=0;o<e.length;o++){let a=e[o];hm(t,a)&&(r[a]=t[a])}return r}var CQ=new kIe;function QIt(t,e,r,o){let a=CQ.get(t);if(a!==void 0)return a;let n=o(t);if(n===void 0){let x={pjsonPath:t,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return CQ.set(t,x),x}let u;try{u=QIe(n)}catch(x){throw new nv(t,(r?`\"${e}\" from `:\"\")+(0,wQ.fileURLToPath)(r||e),x.message)}let{imports:A,main:p,name:h,type:E}=NIe(u,[\"imports\",\"main\",\"name\",\"type\"]),I=hm(u,\"exports\")?u.exports:void 0;(typeof A!=\"object\"||A===null)&&(A=void 0),typeof p!=\"string\"&&(p=void 0),typeof h!=\"string\"&&(h=void 0),E!==\"module\"&&E!==\"commonjs\"&&(E=\"none\");let v={pjsonPath:t,exists:!0,main:p,name:h,type:E,exports:I,imports:A};return CQ.set(t,v),v}function OIe(t,e){let r=new URL(\"./package.json\",t);for(;;){let n=r.pathname;if(D0(n,\"node_modules/package.json\"))break;let u=QIt((0,wQ.fileURLToPath)(r),t,void 0,e);if(u.exists)return u;let A=r;if(r=new URL(\"../package.json\",r),r.pathname===A.pathname)break}let o=(0,wQ.fileURLToPath)(r),a={pjsonPath:o,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return CQ.set(o,a),a}function FIt(t,e,r){throw new RIe(t,e&&(0,Mo.fileURLToPath)(new URL(\".\",e)),(0,Mo.fileURLToPath)(r))}function RIt(t,e,r,o){let a=`request is not a valid subpath for the \"${r?\"imports\":\"exports\"}\" resolution of ${(0,Mo.fileURLToPath)(e)}`;throw new Jj(t,a,o&&(0,Mo.fileURLToPath)(o))}function iv(t,e,r,o,a){throw typeof e==\"object\"&&e!==null?e=$B(e,null,\"\"):e=`${e}`,new TIe((0,Mo.fileURLToPath)(new URL(\".\",r)),t,e,o,a&&(0,Mo.fileURLToPath)(a))}var MIe=/(^|\\\\|\\/)((\\.|%2e)(\\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\\\|\\/|$)/i,UIe=/\\*/g;function TIt(t,e,r,o,a,n,u,A){if(e!==\"\"&&!n&&t[t.length-1]!==\"/\"&&iv(r,t,o,u,a),!dA(t,\"./\")){if(u&&!dA(t,\"../\")&&!dA(t,\"/\")){let I=!1;try{new URL(t),I=!0}catch{}if(!I)return n?Wj(UIe,t,()=>e):t+e}iv(r,t,o,u,a)}Yj(MIe,P0(t,2))!==null&&iv(r,t,o,u,a);let p=new URL(t,o),h=p.pathname,E=new URL(\".\",o).pathname;if(dA(h,E)||iv(r,t,o,u,a),e===\"\")return p;if(Yj(MIe,e)!==null){let I=n?xIe(r,\"*\",()=>e):r+e;RIt(I,o,u,a)}return n?new URL(Wj(UIe,p.href,()=>e)):new URL(e,p)}function LIt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function GC(t,e,r,o,a,n,u,A){if(typeof e==\"string\")return TIt(e,r,o,t,a,n,u,A);if(Gj(e)){if(e.length===0)return null;let p;for(let h=0;h<e.length;h++){let E=e[h],I;try{I=GC(t,E,r,o,a,n,u,A)}catch(v){if(p=v,v.code===\"ERR_INVALID_PACKAGE_TARGET\")continue;throw v}if(I!==void 0){if(I===null){p=null;continue}return I}}if(p==null)return p;throw p}else if(typeof e==\"object\"&&e!==null){let p=ev(e);for(let h=0;h<p.length;h++){let E=p[h];if(LIt(E))throw new nv((0,Mo.fileURLToPath)(t),a,'\"exports\" cannot contain numeric property keys.')}for(let h=0;h<p.length;h++){let E=p[h];if(E===\"default\"||A.has(E)){let I=e[E],v=GC(t,I,r,o,a,n,u,A);if(v===void 0)continue;return v}}return}else if(e===null)return null;iv(o,e,t,u,a)}function HIe(t,e){let r=tv(t,\"*\"),o=tv(e,\"*\"),a=r===-1?t.length:r+1,n=o===-1?e.length:o+1;return a>n?-1:n>a||r===-1?1:o===-1||t.length>e.length?-1:e.length>t.length?1:0}function NIt(t,e,r){if(typeof t==\"string\"||Gj(t))return!0;if(typeof t!=\"object\"||t===null)return!1;let o=ev(t),a=!1,n=0;for(let u=0;u<o.length;u++){let A=o[u],p=A===\"\"||A[0]!==\".\";if(n++===0)a=p;else if(a!==p)throw new nv((0,Mo.fileURLToPath)(e),r,`\"exports\" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`)}return a}function zj(t,e,r){throw new LIe((0,Mo.fileURLToPath)(new URL(\".\",e)),t,r&&(0,Mo.fileURLToPath)(r))}var _Ie=new Set;function OIt(t,e,r){let o=(0,Mo.fileURLToPath)(e);_Ie.has(o+\"|\"+t)||(_Ie.add(o+\"|\"+t),process.emitWarning(`Use of deprecated trailing slash pattern mapping \"${t}\" in the \"exports\" field module resolution of the package at ${o}${r?` imported from ${(0,Mo.fileURLToPath)(r)}`:\"\"}. Mapping specifiers ending in \"/\" is no longer supported.`,\"DeprecationWarning\",\"DEP0155\"))}function jIe({packageJSONUrl:t,packageSubpath:e,exports:r,base:o,conditions:a}){if(NIt(r,t,o)&&(r={\".\":r}),hm(r,e)&&!Kj(e,\"*\")&&!D0(e,\"/\")){let p=r[e],h=GC(t,p,\"\",e,o,!1,!1,a);return h==null&&zj(e,t,o),h}let n=\"\",u,A=ev(r);for(let p=0;p<A.length;p++){let h=A[p],E=tv(h,\"*\");if(E!==-1&&dA(e,P0(h,0,E))){D0(e,\"/\")&&OIt(e,t,o);let I=P0(h,E+1);e.length>=h.length&&D0(e,I)&&HIe(n,h)===1&&Vj(h,\"*\")===E&&(n=h,u=P0(e,E,e.length-I.length))}}if(n){let p=r[n],h=GC(t,p,u,n,o,!0,!1,a);return h==null&&zj(e,t,o),h}zj(e,t,o)}function qIe({name:t,base:e,conditions:r,readFileSyncFn:o}){if(t===\"#\"||dA(t,\"#/\")||D0(t,\"/\")){let u=\"is not a valid internal imports specifier name\";throw new Jj(t,u,(0,Mo.fileURLToPath)(e))}let a,n=OIe(e,o);if(n.exists){a=(0,Mo.pathToFileURL)(n.pjsonPath);let u=n.imports;if(u)if(hm(u,t)&&!Kj(t,\"*\")){let A=GC(a,u[t],\"\",t,e,!1,!0,r);if(A!=null)return A}else{let A=\"\",p,h=ev(u);for(let E=0;E<h.length;E++){let I=h[E],v=tv(I,\"*\");if(v!==-1&&dA(t,P0(I,0,v))){let x=P0(I,v+1);t.length>=I.length&&D0(t,x)&&HIe(A,I)===1&&Vj(I,\"*\")===v&&(A=I,p=P0(t,v,t.length-x.length))}}if(A){let E=u[A],I=GC(a,E,p,A,e,!0,!0,r);if(I!=null)return I}}}FIt(t,a,e)}Pt();var MIt=new Set([\"BUILTIN_NODE_RESOLUTION_FAILED\",\"MISSING_DEPENDENCY\",\"MISSING_PEER_DEPENDENCY\",\"QUALIFIED_PATH_RESOLUTION_FAILED\",\"UNDECLARED_DEPENDENCY\"]);function $i(t,e,r={},o){o??=MIt.has(t)?\"MODULE_NOT_FOUND\":t;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:o},pnpCode:{...a,value:t},data:{...a,value:r}})}function au(t){return ue.normalize(ue.fromPortablePath(t))}var KIe=$e(YIe());function VIe(t){return UIt(),Zj[t]}var Zj;function UIt(){Zj||(Zj={\"--conditions\":[],...WIe(_It()),...WIe(process.execArgv)})}function WIe(t){return(0,KIe.default)({\"--conditions\":[String],\"-C\":\"--conditions\"},{argv:t,permissive:!0})}function _It(){let t=[],e=HIt(process.env.NODE_OPTIONS||\"\",t);return t.length,e}function HIt(t,e){let r=[],o=!1,a=!0;for(let n=0;n<t.length;++n){let u=t[n];if(u===\"\\\\\"&&o){if(n+1===t.length)return e.push(`invalid value for NODE_OPTIONS (invalid escape)\n`),r;u=t[++n]}else if(u===\" \"&&!o){a=!0;continue}else if(u==='\"'){o=!o;continue}a?(r.push(u),a=!1):r[r.length-1]+=u}return o&&e.push(`invalid value for NODE_OPTIONS (unterminated string)\n`),r}Pt();var[mA,gm]=process.versions.node.split(\".\").map(t=>parseInt(t,10)),JIe=mA>19||mA===19&&gm>=2||mA===18&&gm>=13,vzt=mA===20&&gm<6||mA===19&&gm>=3,Dzt=mA>19||mA===19&&gm>=6,Pzt=mA>=21||mA===20&&gm>=10||mA===18&&gm>=19;function zIe(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>ue.fromPortablePath(mi.resolveVirtual(ue.toPortablePath(e)))),JIe)process.send({\"watch:require\":t});else for(let e of t)process.send({\"watch:require\":e})}function eq(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,o=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\\\/]|\\\\\\\\|\\.{0,2}(?:\\/|$))((?:node:)?(?:@[^/]+\\/)?[^/]+)\\/*(.*|)$/,n=/^(\\/|\\.{1,2}(\\/|$))/,u=/\\/$/,A=/^\\.{0,2}\\//,p={name:null,reference:null},h=[],E=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Re of[\"react-scripts\",\"gatsby\"]){let ke=t.packageRegistry.get(Re);if(ke)for(let xe of ke.keys()){if(xe===null)throw new Error(\"Assertion failed: This reference shouldn't be null\");h.push({name:Re,reference:xe})}}let{ignorePattern:I,packageRegistry:v,packageLocatorsByLocations:x}=t;function C(Re,ke){return{fn:Re,args:ke,error:null,result:null}}function R(Re){let ke=process.stderr?.hasColors?.()??process.stdout.isTTY,xe=(Je,je)=>`\\x1B[${Je}m${je}\\x1B[0m`,He=Re.error;console.error(He?xe(\"31;1\",`\\u2716 ${Re.error?.message.replace(/\\n.*/s,\"\")}`):xe(\"33;1\",\"\\u203C Resolution\")),Re.args.length>0&&console.error();for(let Je of Re.args)console.error(`  ${xe(\"37;1\",\"In \\u2190\")} ${(0,$j.inspect)(Je,{colors:ke,compact:!0})}`);Re.result&&(console.error(),console.error(`  ${xe(\"37;1\",\"Out \\u2192\")} ${(0,$j.inspect)(Re.result,{colors:ke,compact:!0})}`));let Te=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(Te.length>0){console.error();for(let Je of Te)console.error(`  ${xe(\"38;5;244\",Je)}`)}console.error()}function N(Re,ke){if(e.allowDebug===!1)return ke;if(Number.isFinite(o)){if(o>=2)return(...xe)=>{let He=C(Re,xe);try{return He.result=ke(...xe)}catch(Te){throw He.error=Te}finally{R(He)}};if(o>=1)return(...xe)=>{try{return ke(...xe)}catch(He){let Te=C(Re,xe);throw Te.error=He,R(Te),He}}}return ke}function U(Re){let ke=g(Re);if(!ke)throw $i(\"INTERNAL\",\"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)\");return ke}function J(Re){if(Re.name===null)return!0;for(let ke of t.dependencyTreeRoots)if(ke.name===Re.name&&ke.reference===Re.reference)return!0;return!1}let te=new Set([\"node\",\"require\",...VIe(\"--conditions\")]);function ae(Re,ke=te,xe){let He=le(V.join(Re,\"internal.js\"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(He===null)throw $i(\"INTERNAL\",`The locator that owns the \"${Re}\" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:Te}=U(He),Je=V.join(Te,dr.manifest);if(!e.fakeFs.existsSync(Je))return null;let je=JSON.parse(e.fakeFs.readFileSync(Je,\"utf8\"));if(je.exports==null)return null;let b=V.contains(Te,Re);if(b===null)throw $i(\"INTERNAL\",\"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)\");b!==\".\"&&!A.test(b)&&(b=`./${b}`);try{let w=jIe({packageJSONUrl:(0,dm.pathToFileURL)(ue.fromPortablePath(Je)),packageSubpath:b,exports:je.exports,base:xe?(0,dm.pathToFileURL)(ue.fromPortablePath(xe)):null,conditions:ke});return ue.toPortablePath((0,dm.fileURLToPath)(w))}catch(w){throw $i(\"EXPORTS_RESOLUTION_FAILED\",w.message,{unqualifiedPath:au(Re),locator:He,pkgJson:je,subpath:au(b),conditions:ke},w.code)}}function fe(Re,ke,{extensions:xe}){let He;try{ke.push(Re),He=e.fakeFs.statSync(Re)}catch{}if(He&&!He.isDirectory())return e.fakeFs.realpathSync(Re);if(He&&He.isDirectory()){let Te;try{Te=JSON.parse(e.fakeFs.readFileSync(V.join(Re,dr.manifest),\"utf8\"))}catch{}let Je;if(Te&&Te.main&&(Je=V.resolve(Re,Te.main)),Je&&Je!==Re){let je=fe(Je,ke,{extensions:xe});if(je!==null)return je}}for(let Te=0,Je=xe.length;Te<Je;Te++){let je=`${Re}${xe[Te]}`;if(ke.push(je),e.fakeFs.existsSync(je))return je}if(He&&He.isDirectory())for(let Te=0,Je=xe.length;Te<Je;Te++){let je=V.format({dir:Re,name:\"index\",ext:xe[Te]});if(ke.push(je),e.fakeFs.existsSync(je))return je}return null}function ce(Re){let ke=new np.Module(Re,null);return ke.filename=Re,ke.paths=np.Module._nodeModulePaths(Re),ke}function me(Re,ke){return ke.endsWith(\"/\")&&(ke=V.join(ke,\"internal.js\")),np.Module._resolveFilename(ue.fromPortablePath(Re),ce(ue.fromPortablePath(ke)),!1,{plugnplay:!1})}function he(Re){if(I===null)return!1;let ke=V.contains(t.basePath,Re);return ke===null?!1:!!I.test(ke.replace(/\\/$/,\"\"))}let Be={std:3,resolveVirtual:1,getAllLocators:1},we=p;function g({name:Re,reference:ke}){let xe=v.get(Re);if(!xe)return null;let He=xe.get(ke);return He||null}function Ee({name:Re,reference:ke}){let xe=[];for(let[He,Te]of v)if(He!==null)for(let[Je,je]of Te)Je===null||je.packageDependencies.get(Re)!==ke||He===Re&&Je===ke||xe.push({name:He,reference:Je});return xe}function Pe(Re,ke){let xe=new Map,He=new Set,Te=je=>{let b=JSON.stringify(je.name);if(He.has(b))return;He.add(b);let w=Ee(je);for(let S of w)if(U(S).packagePeers.has(Re))Te(S);else{let F=xe.get(S.name);typeof F>\"u\"&&xe.set(S.name,F=new Set),F.add(S.reference)}};Te(ke);let Je=[];for(let je of[...xe.keys()].sort())for(let b of[...xe.get(je)].sort())Je.push({name:je,reference:b});return Je}function le(Re,{resolveIgnored:ke=!1,includeDiscardFromLookup:xe=!1}={}){if(he(Re)&&!ke)return null;let He=V.relative(t.basePath,Re);He.match(n)||(He=`./${He}`),He.endsWith(\"/\")||(He=`${He}/`);do{let Te=x.get(He);if(typeof Te>\"u\"||Te.discardFromLookup&&!xe){He=He.substring(0,He.lastIndexOf(\"/\",He.length-2)+1);continue}return Te.locator}while(He!==\"\");return null}function ne(Re){try{return e.fakeFs.readFileSync(ue.toPortablePath(Re),\"utf8\")}catch(ke){if(ke.code===\"ENOENT\")return;throw ke}}function ee(Re,ke,{considerBuiltins:xe=!0}={}){if(Re.startsWith(\"#\"))throw new Error(\"resolveToUnqualified can not handle private import mappings\");if(Re===\"pnpapi\")return ue.toPortablePath(e.pnpapiResolution);if(xe&&(0,np.isBuiltin)(Re))return null;let He=au(Re),Te=ke&&au(ke);if(ke&&he(ke)&&(!V.isAbsolute(Re)||le(Re)===null)){let b=me(Re,ke);if(b===!1)throw $i(\"BUILTIN_NODE_RESOLUTION_FAILED\",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp)\n\nRequire request: \"${He}\"\nRequired by: ${Te}\n`,{request:He,issuer:Te});return ue.toPortablePath(b)}let Je,je=Re.match(a);if(je){if(!ke)throw $i(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:He,issuer:Te});let[,b,w]=je,S=le(ke);if(!S){let Le=me(Re,ke);if(Le===!1)throw $i(\"BUILTIN_NODE_RESOLUTION_FAILED\",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree).\n\nRequire path: \"${He}\"\nRequired by: ${Te}\n`,{request:He,issuer:Te});return ue.toPortablePath(Le)}let F=U(S).packageDependencies.get(b),z=null;if(F==null&&S.name!==null){let Le=t.fallbackExclusionList.get(S.name);if(!Le||!Le.has(S.reference)){for(let dt=0,qt=h.length;dt<qt;++dt){let bt=U(h[dt]).packageDependencies.get(b);if(bt!=null){r?z=bt:F=bt;break}}if(t.enableTopLevelFallback&&F==null&&z===null){let dt=t.fallbackPool.get(b);dt!=null&&(z=dt)}}}let X=null;if(F===null)if(J(S))X=$i(\"MISSING_PEER_DEPENDENCY\",`Your application tried to access ${b} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,dependencyName:b});else{let Le=Pe(b,S);Le.every(ot=>J(ot))?X=$i(\"MISSING_PEER_DEPENDENCY\",`${S.name} tried to access ${b} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${S.name}@${S.reference} (via ${Te})\n${Le.map(ot=>`Ancestor breaking the chain: ${ot.name}@${ot.reference}\n`).join(\"\")}\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},S),dependencyName:b,brokenAncestors:Le}):X=$i(\"MISSING_PEER_DEPENDENCY\",`${S.name} tried to access ${b} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${S.name}@${S.reference} (via ${Te})\n\n${Le.map(ot=>`Ancestor breaking the chain: ${ot.name}@${ot.reference}\n`).join(\"\")}\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},S),dependencyName:b,brokenAncestors:Le})}else F===void 0&&(!xe&&(0,np.isBuiltin)(Re)?J(S)?X=$i(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${b}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${b} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,dependencyName:b}):X=$i(\"UNDECLARED_DEPENDENCY\",`${S.name} tried to access ${b}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${b} isn't otherwise declared in ${S.name}'s dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},S),dependencyName:b}):J(S)?X=$i(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${b}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,dependencyName:b}):X=$i(\"UNDECLARED_DEPENDENCY\",`${S.name} tried to access ${b}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${S.name}@${S.reference} (via ${Te})\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},S),dependencyName:b}));if(F==null){if(z===null||X===null)throw X||new Error(\"Assertion failed: Expected an error to have been set\");F=z;let Le=X.message.replace(/\\n.*/g,\"\");X.message=Le,!E.has(Le)&&o!==0&&(E.add(Le),process.emitWarning(X))}let Z=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:b,reference:F},ie=U(Z);if(!ie.packageLocation)throw $i(\"MISSING_DEPENDENCY\",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.\n\nRequired package: ${Z.name}@${Z.reference}${Z.name!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${S.name}@${S.reference} (via ${Te})\n`,{request:He,issuer:Te,dependencyLocator:Object.assign({},Z)});let be=ie.packageLocation;w?Je=V.join(be,w):Je=be}else if(V.isAbsolute(Re))Je=V.normalize(Re);else{if(!ke)throw $i(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:He,issuer:Te});let b=V.resolve(ke);ke.match(u)?Je=V.normalize(V.join(b,Re)):Je=V.normalize(V.join(V.dirname(b),Re))}return V.normalize(Je)}function Ie(Re,ke,xe=te,He){if(n.test(Re))return ke;let Te=ae(ke,xe,He);return Te?V.normalize(Te):ke}function Fe(Re,{extensions:ke=Object.keys(np.Module._extensions)}={}){let xe=[],He=fe(Re,xe,{extensions:ke});if(He)return V.normalize(He);{zIe(xe.map(je=>ue.fromPortablePath(je)));let Te=au(Re),Je=le(Re);if(Je){let{packageLocation:je}=U(Je),b=!0;try{e.fakeFs.accessSync(je)}catch(w){if(w?.code===\"ENOENT\")b=!1;else{let S=(w?.message??w??\"empty exception thrown\").replace(/^[A-Z]/,y=>y.toLowerCase());throw $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Required package exists but could not be accessed (${S}).\n\nMissing package: ${Je.name}@${Je.reference}\nExpected package location: ${au(je)}\n`,{unqualifiedPath:Te,extensions:ke})}}if(!b){let w=je.includes(\"/unplugged/\")?\"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).\":\"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.\";throw $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`${w}\n\nMissing package: ${Je.name}@${Je.reference}\nExpected package location: ${au(je)}\n`,{unqualifiedPath:Te,extensions:ke})}}throw $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Qualified path resolution failed: we looked for the following paths, but none could be accessed.\n\nSource path: ${Te}\n${xe.map(je=>`Not found: ${au(je)}\n`).join(\"\")}`,{unqualifiedPath:Te,extensions:ke})}}function At(Re,ke,xe){if(!ke)throw new Error(\"Assertion failed: An issuer is required to resolve private import mappings\");let He=qIe({name:Re,base:(0,dm.pathToFileURL)(ue.fromPortablePath(ke)),conditions:xe.conditions??te,readFileSyncFn:ne});if(He instanceof URL)return Fe(ue.toPortablePath((0,dm.fileURLToPath)(He)),{extensions:xe.extensions});if(He.startsWith(\"#\"))throw new Error(\"Mapping from one private import to another isn't allowed\");return H(He,ke,xe)}function H(Re,ke,xe={}){try{if(Re.startsWith(\"#\"))return At(Re,ke,xe);let{considerBuiltins:He,extensions:Te,conditions:Je}=xe,je=ee(Re,ke,{considerBuiltins:He});if(Re===\"pnpapi\")return je;if(je===null)return null;let b=()=>ke!==null?he(ke):!1,w=(!He||!(0,np.isBuiltin)(Re))&&!b()?Ie(Re,je,Je,ke):je;return Fe(w,{extensions:Te})}catch(He){throw Object.hasOwn(He,\"pnpCode\")&&Object.assign(He.data,{request:au(Re),issuer:ke&&au(ke)}),He}}function at(Re){let ke=V.normalize(Re),xe=mi.resolveVirtual(ke);return xe!==ke?xe:null}return{VERSIONS:Be,topLevel:we,getLocator:(Re,ke)=>Array.isArray(ke)?{name:ke[0],reference:ke[1]}:{name:Re,reference:ke},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Re=[];for(let[ke,xe]of v)for(let He of xe.keys())ke!==null&&He!==null&&Re.push({name:ke,reference:He});return Re},getPackageInformation:Re=>{let ke=g(Re);if(ke===null)return null;let xe=ue.fromPortablePath(ke.packageLocation);return{...ke,packageLocation:xe}},findPackageLocator:Re=>le(ue.toPortablePath(Re)),resolveToUnqualified:N(\"resolveToUnqualified\",(Re,ke,xe)=>{let He=ke!==null?ue.toPortablePath(ke):null,Te=ee(ue.toPortablePath(Re),He,xe);return Te===null?null:ue.fromPortablePath(Te)}),resolveUnqualified:N(\"resolveUnqualified\",(Re,ke)=>ue.fromPortablePath(Fe(ue.toPortablePath(Re),ke))),resolveRequest:N(\"resolveRequest\",(Re,ke,xe)=>{let He=ke!==null?ue.toPortablePath(ke):null,Te=H(ue.toPortablePath(Re),He,xe);return Te===null?null:ue.fromPortablePath(Te)}),resolveVirtual:N(\"resolveVirtual\",Re=>{let ke=at(ue.toPortablePath(Re));return ke!==null?ue.fromPortablePath(ke):null})}}Pt();var XIe=(t,e,r)=>{let o=ZB(t),a=qj(o,{basePath:e}),n=ue.join(e,dr.pnpCjs);return eq(a,{fakeFs:r,pnpapiResolution:n})};var rq=$e($Ie());jt();var yA={};Vt(yA,{checkManifestCompatibility:()=>e1e,extractBuildRequest:()=>IQ,getExtractHint:()=>nq,hasBindingGyp:()=>iq});Ye();Pt();function e1e(t){return W.isPackageCompatible(t,Ji.getArchitectureSet())}function IQ(t,e,r,{configuration:o}){let a=[];for(let n of[\"preinstall\",\"install\",\"postinstall\"])e.manifest.scripts.has(n)&&a.push({type:0,script:n});return!e.manifest.scripts.has(\"install\")&&e.misc.hasBindingGyp&&a.push({type:1,script:\"node-gyp rebuild\"}),a.length===0?null:t.linkType!==\"HARD\"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${W.prettyLocator(o,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${W.prettyLocator(o,t)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!o.get(\"enableScripts\")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${W.prettyLocator(o,t)} lists build scripts, but all build scripts have been disabled.`)}:e1e(t)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${W.prettyLocator(o,t)} The ${Ji.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var qIt=new Set([\".exe\",\".bin\",\".h\",\".hh\",\".hpp\",\".c\",\".cc\",\".cpp\",\".java\",\".jar\",\".node\"]);function nq(t){return t.packageFs.getExtractHint({relevantExtensions:qIt})}function iq(t){let e=V.join(t.prefixPath,\"binding.gyp\");return t.packageFs.existsSync(e)}var av={};Vt(av,{getUnpluggedPath:()=>ov});Ye();Pt();function ov(t,{configuration:e}){return V.resolve(e.get(\"pnpUnpluggedFolder\"),W.slugifyLocator(t))}var GIt=new Set([W.makeIdent(null,\"open\").identHash,W.makeIdent(null,\"opn\").identHash]),S0=class{constructor(){this.mode=\"strict\";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"PnpLinker\",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the PnP linker to be enabled\");let o=b0(r.project).cjs;if(!oe.existsSync(o))throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=_e.getFactoryWithDefault(this.pnpCache,o,()=>_e.dynamicRequire(o,{cachingStrategy:_e.CachingStrategy.FsTime})),n={name:W.stringifyIdent(e),reference:e.reference},u=a.getPackageInformation(n);if(!u)throw new it(`Couldn't find ${W.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return ue.toPortablePath(u.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=b0(r.project).cjs;if(!oe.existsSync(o))return null;let n=_e.getFactoryWithDefault(this.pnpCache,o,()=>_e.dynamicRequire(o,{cachingStrategy:_e.CachingStrategy.FsTime})).findPackageLocator(ue.fromPortablePath(e));return n?W.makeLocator(W.parseIdent(n.name),n.reference):null}makeInstaller(e){return new mm(e)}isEnabled(e){return!(e.project.configuration.get(\"nodeLinker\")!==\"pnp\"||e.project.configuration.get(\"pnpMode\")!==this.mode)}},mm=class{constructor(e){this.opts=e;this.mode=\"strict\";this.asyncActions=new _e.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}attachCustomData(e){this.customData=e}async installPackage(e,r,o){let a=W.stringifyIdent(e),n=e.reference,u=!!this.opts.project.tryWorkspaceByLocator(e),A=W.isVirtualLocator(e),p=e.peerDependencies.size>0&&!A,h=!p&&!u,E=!p&&e.linkType!==\"SOFT\",I,v;if(h||E){let te=A?W.devirtualizeLocator(e):e;I=this.customData.store.get(te.locatorHash),typeof I>\"u\"&&(I=await YIt(r),e.linkType===\"HARD\"&&this.customData.store.set(te.locatorHash,I)),I.manifest.type===\"module\"&&(this.isESMLoaderRequired=!0),v=this.opts.project.getDependencyMeta(te,e.version)}let x=h?IQ(e,I,v,{configuration:this.opts.project.configuration}):null,C=E?await this.unplugPackageIfNeeded(e,I,r,v,o):r.packageFs;if(V.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let R=V.resolve(C.getRealPath(),r.prefixPath),N=sq(this.opts.project.cwd,R),U=new Map,J=new Set;if(A){for(let te of e.peerDependencies.values())U.set(W.stringifyIdent(te),null),J.add(W.stringifyIdent(te));if(!u){let te=W.devirtualizeLocator(e);this.virtualTemplates.set(te.locatorHash,{location:sq(this.opts.project.cwd,mi.resolveVirtual(R)),locator:te})}}return _e.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:N,packageDependencies:U,packagePeers:J,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:R,buildRequest:x}}async attachInternalDependencies(e,r){let o=this.getPackageInformation(e);for(let[a,n]of r){let u=W.areIdentsEqual(a,n)?n.reference:[W.stringifyIdent(n),n.reference];o.packageDependencies.set(W.stringifyIdent(a),u)}}async attachExternalDependents(e,r){for(let o of r)this.getDiskInformation(o).packageDependencies.set(W.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get(\"pnpMode\")!==this.mode)return;let e=b0(this.opts.project);if(this.isEsmEnabled()||await oe.removePromise(e.esmLoader),this.opts.project.configuration.get(\"nodeLinker\")!==\"pnp\"){await oe.removePromise(e.cjs),await oe.removePromise(e.data),await oe.removePromise(e.esmLoader),await oe.removePromise(this.opts.project.configuration.get(\"pnpUnpluggedFolder\"));return}for(let{locator:E,location:I}of this.virtualTemplates.values())_e.getMapWithDefault(this.packageRegistry,W.stringifyIdent(E)).set(E.reference,{packageLocation:I,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get(\"pnpFallbackMode\"),o=this.opts.project.workspaces.map(({anchoredLocator:E})=>({name:W.stringifyIdent(E),reference:E.reference})),a=r!==\"none\",n=[],u=new Map,A=_e.buildIgnorePattern([\".yarn/sdks/**\",...this.opts.project.configuration.get(\"pnpIgnorePatterns\")]),p=this.packageRegistry,h=this.opts.project.configuration.get(\"pnpShebang\");if(r===\"dependencies-only\")for(let E of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(E)&&n.push({name:W.stringifyIdent(E),reference:E.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:o,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:u,ignorePattern:A,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has(\"pnpEnableEsmLoader\"))return this.opts.project.configuration.get(\"pnpEnableEsmLoader\");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type===\"module\")return!0;return!1}async finalizeInstallWithPnp(e){let r=b0(this.opts.project),o=await this.locateNodeModules(e.ignorePattern);if(o.length>0){this.opts.report.reportWarning(31,\"One or more node_modules have been detected and will be removed. This operation may take some time.\");for(let n of o)await oe.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get(\"pnpEnableInlining\")){let n=SIe(e);await oe.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await oe.removePromise(r.data)}else{let{dataFile:n,loaderFile:u}=bIe(e);await oe.changeFilePromise(r.cjs,u,{automaticNewlines:!0,mode:493}),await oe.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,\"ESM support for PnP uses the experimental loader API and is therefore experimental\"),await oe.changeFilePromise(r.esmLoader,(0,rq.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get(\"pnpUnpluggedFolder\");if(this.unpluggedPaths.size===0)await oe.removePromise(a);else for(let n of await oe.readdirPromise(a)){let u=V.resolve(a,n);this.unpluggedPaths.has(u)||await oe.removePromise(u)}}async locateNodeModules(e){let r=[],o=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=V.join(a.cwd,\"node_modules\");if(o&&o.test(V.relative(this.opts.project.cwd,a.cwd))||!oe.existsSync(n))continue;let u=await oe.readdirPromise(n,{withFileTypes:!0}),A=u.filter(p=>!p.isDirectory()||p.name===\".bin\"||!p.name.startsWith(\".\"));if(A.length===u.length)r.push(n);else for(let p of A)r.push(V.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,o,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,o,n):o.packageFs}shouldBeUnplugged(e,r,o){return typeof o.unplugged<\"u\"?o.unplugged:GIt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(IQ(e,r,o,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(e,r,o){let a=ov(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new Uu(a,{baseFs:r.packageFs,pathUtils:V}):(this.unpluggedPaths.add(a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=V.join(a,r.prefixPath,\".ready\");await oe.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await oe.mkdirPromise(a,{recursive:!0}),await oe.copyPromise(a,Bt.dot,{baseFs:r.packageFs,overwrite:!1}),await oe.writeFilePromise(n,\"\"))})),new gn(a))}getPackageInformation(e){let r=W.stringifyIdent(e),o=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${W.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(o);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${W.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=_e.getMapWithDefault(this.packageRegistry,\"@@disk\"),o=sq(this.opts.project.cwd,e);return _e.getFactoryWithDefault(r,o,()=>({packageLocation:o,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1}))}};function sq(t,e){let r=V.relative(t,e);return r.match(/^\\.{0,2}\\//)||(r=`./${r}`),r.replace(/\\/?$/,\"/\")}async function YIt(t){let e=await Ot.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Ot,r=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let o of e.scripts.keys())r.has(o)||e.scripts.delete(o);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:nq(t),hasBindingGyp:iq(t)}}}Ye();Ye();jt();var t1e=$e(Zo());var x0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Unplug direct dependencies from the entire project\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Unplug both direct and transitive dependencies\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);if(r.get(\"nodeLinker\")!==\"pnp\")throw new it(\"This command can only be used if the `nodeLinker` option is set to `pnp`\");await o.restoreInstallState();let u=new Set(this.patterns),A=this.patterns.map(x=>{let C=W.parseDescriptor(x),R=C.range!==\"unknown\"?C:W.makeDescriptor(C,\"*\");if(!kr.validRange(R.range))throw new it(`The range of the descriptor patterns must be a valid semver range (${W.prettyDescriptor(r,R)})`);return N=>{let U=W.stringifyIdent(N);return!t1e.default.isMatch(U,W.stringifyIdent(R))||N.version&&!kr.satisfiesWithPrereleases(N.version,R.range)?!1:(u.delete(x),!0)}}),p=()=>{let x=[];for(let C of o.storedPackages.values())!o.tryWorkspaceByLocator(C)&&!W.isVirtualLocator(C)&&A.some(R=>R(C))&&x.push(C);return x},h=x=>{let C=new Set,R=[],N=(U,J)=>{if(C.has(U.locatorHash))return;let te=!!o.tryWorkspaceByLocator(U);if(!(J>0&&!this.recursive&&te)&&(C.add(U.locatorHash),!o.tryWorkspaceByLocator(U)&&A.some(ae=>ae(U))&&R.push(U),!(J>0&&!this.recursive)))for(let ae of U.dependencies.values()){let fe=o.storedResolutions.get(ae.descriptorHash);if(!fe)throw new Error(\"Assertion failed: The resolution should have been registered\");let ce=o.storedPackages.get(fe);if(!ce)throw new Error(\"Assertion failed: The package should have been registered\");N(ce,J+1)}};for(let U of x)N(U.anchoredPackage,0);return R},E,I;if(this.all&&this.recursive?(E=p(),I=\"the project\"):this.all?(E=h(o.workspaces),I=\"any workspace\"):(E=h([a]),I=\"this workspace\"),u.size>1)throw new it(`Patterns ${de.prettyList(r,u,de.Type.CODE)} don't match any packages referenced by ${I}`);if(u.size>0)throw new it(`Pattern ${de.prettyList(r,u,de.Type.CODE)} doesn't match any packages referenced by ${I}`);E=_e.sortMap(E,x=>W.stringifyLocator(x));let v=await Lt.start({configuration:r,stdout:this.context.stdout,json:this.json},async x=>{for(let C of E){let R=C.version??\"unknown\",N=o.topLevelWorkspace.manifest.ensureDependencyMeta(W.makeDescriptor(C,R));N.unplugged=!0,x.reportInfo(0,`Will unpack ${W.prettyLocator(r,C)} to ${de.pretty(r,ov(C,{configuration:r}),de.Type.PATH)}`),x.reportJson({locator:W.stringifyLocator(C),version:R})}await o.topLevelWorkspace.persistManifest(),this.json||x.reportSeparator()});return v.hasErrors()?v.exitCode():await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};x0.paths=[[\"unplug\"]],x0.usage=nt.Usage({description:\"force the unpacking of a list of packages\",details:\"\\n      This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\\n\\n      A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\\n\\n      Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\\n\\n      By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\\n\\n      This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\\n    \",examples:[[\"Unplug the lodash dependency from the active workspace\",\"yarn unplug lodash\"],[\"Unplug all instances of lodash referenced by any workspace\",\"yarn unplug lodash -A\"],[\"Unplug all instances of lodash referenced by the active workspace and its dependencies\",\"yarn unplug lodash -R\"],[\"Unplug all instances of lodash, anywhere\",\"yarn unplug lodash -AR\"],[\"Unplug one specific version of lodash\",\"yarn unplug lodash@1.2.3\"],[\"Unplug all packages with the `@babel` scope\",\"yarn unplug '@babel/*'\"],[\"Unplug all packages (only for testing, not recommended)\",\"yarn unplug -R '*'\"]]});var b0=t=>({cjs:V.join(t.cwd,dr.pnpCjs),data:V.join(t.cwd,dr.pnpData),esmLoader:V.join(t.cwd,dr.pnpEsmLoader)}),n1e=t=>/\\s/.test(t)?JSON.stringify(t):t;async function WIt(t,e,r){let o=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g,a=/\\s*--experimental-loader\\s+\\S*\\.pnp\\.loader\\.mjs\\s*/,n=(e.NODE_OPTIONS??\"\").replace(o,\" \").replace(a,\" \").trim();if(t.configuration.get(\"nodeLinker\")!==\"pnp\"){e.NODE_OPTIONS=n;return}let u=b0(t),A=`--require ${n1e(ue.fromPortablePath(u.cjs))}`;oe.existsSync(u.esmLoader)&&(A=`${A} --experimental-loader ${(0,r1e.pathToFileURL)(ue.fromPortablePath(u.esmLoader)).href}`),oe.existsSync(u.cjs)&&(e.NODE_OPTIONS=n?`${A} ${n}`:A)}async function KIt(t,e){let r=b0(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get(\"pnpUnpluggedFolder\"))}var VIt={hooks:{populateYarnPaths:KIt,setupScriptEnvironment:WIt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: \"pnp\", \"pnpm\", or \"node-modules\"',type:\"STRING\",default:\"pnp\"},winLinkType:{description:\"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.\",type:\"STRING\",values:[\"junctions\",\"symlinks\"],default:\"junctions\"},pnpMode:{description:\"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.\",type:\"STRING\",default:\"strict\"},pnpShebang:{description:\"String to prepend to the generated PnP script\",type:\"STRING\",default:\"#!/usr/bin/env node\"},pnpIgnorePatterns:{description:\"Array of glob patterns; files matching them will use the classic resolution\",type:\"STRING\",default:[],isArray:!0},pnpEnableEsmLoader:{description:\"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.\",type:\"BOOLEAN\",default:!1},pnpEnableInlining:{description:\"If true, the PnP data will be inlined along with the generated loader\",type:\"BOOLEAN\",default:!0},pnpFallbackMode:{description:\"If true, the generated PnP loader will follow the top-level fallback rule\",type:\"STRING\",default:\"dependencies-only\"},pnpUnpluggedFolder:{description:\"Folder where the unplugged packages must be stored\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/unplugged\"}},linkers:[S0],commands:[x0]},JIt=VIt;var A1e=$e(l1e());jt();var pq=$e(ve(\"crypto\")),f1e=$e(ve(\"fs\")),p1e=1,Pi=\"node_modules\",BQ=\".bin\",h1e=\".yarn-state.yml\",f1t=1e3,hq=(o=>(o.CLASSIC=\"classic\",o.HARDLINKS_LOCAL=\"hardlinks-local\",o.HARDLINKS_GLOBAL=\"hardlinks-global\",o))(hq||{}),lv=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"NodeModulesLinker\",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the node-modules linker to be enabled\");let o=r.project.tryWorkspaceByLocator(e);if(o)return o.cwd;let a=await _e.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await fq(r.project,{unrollAliases:!0}));if(a===null)throw new it(\"Couldn't find the node_modules state file - running an install might help (findPackageLocation)\");let n=a.locatorMap.get(W.stringifyLocator(e));if(!n){let p=new it(`Couldn't find ${W.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw p.code=\"LOCATOR_NOT_INSTALLED\",p}let u=n.locations.sort((p,h)=>p.split(V.sep).length-h.split(V.sep).length),A=V.join(r.project.configuration.startingCwd,Pi);return u.find(p=>V.contains(A,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=await _e.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await fq(r.project,{unrollAliases:!0}));if(o===null)return null;let{locationRoot:a,segments:n}=vQ(V.resolve(e),{skipPrefix:r.project.cwd}),u=o.locationTree.get(a);if(!u)return null;let A=u.locator;for(let p of n){if(u=u.children.get(p),!u)break;A=u.locator||A}return W.parseLocator(A)}makeInstaller(e){return new Aq(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"node-modules\"}},Aq=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(e){this.customData=e}async installPackage(e,r){let o=V.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>\"u\"&&(a=await p1t(e,r),e.linkType===\"HARD\"&&this.customData.store.set(e.locatorHash,a)),!W.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,u=new Set;n.has(W.stringifyIdent(e))||n.set(W.stringifyIdent(e),e.reference);let A=e;if(W.isVirtualLocator(e)){A=W.devirtualizeLocator(e);for(let E of e.peerDependencies.values())n.set(W.stringifyIdent(E),null),u.add(W.stringifyIdent(E))}let p={packageLocation:`${ue.fromPortablePath(o)}/`,packageDependencies:n,packagePeers:u,linkType:e.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf(\"/\")+1):null;return this.realLocatorChecksums.set(A.locatorHash,h),{packageLocation:o,buildRequest:null}}async attachInternalDependencies(e,r){let o=this.localStore.get(e.locatorHash);if(typeof o>\"u\")throw new Error(\"Assertion failed: Expected information object to have been registered\");for(let[a,n]of r){let u=W.areIdentsEqual(a,n)?n.reference:[W.stringifyIdent(n),n.reference];o.pnpNode.packageDependencies.set(W.stringifyIdent(a),u)}}async attachExternalDependents(e,r){throw new Error(\"External dependencies haven't been implemented for the node-modules linker\")}async finalizeInstall(){if(this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\")return;let e=new mi({baseFs:new Jl({maxOpenFiles:80,readOnlyArchives:!0})}),r=await fq(this.opts.project),o=this.opts.project.configuration.get(\"nmMode\");(r===null||o!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:o,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(v=>{let x=this.opts.project.configuration.get(\"nmHoistingLimits\");try{x=_e.validateEnum(JB,v.manifest.installConfig?.hoistingLimits??x)}catch{let R=W.prettyWorkspace(this.opts.project.configuration,v);this.opts.report.reportWarning(57,`${R}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(JB).join(\", \")}, using default: \"${x}\"`)}return[v.relativeCwd,x]})),n=new Map(this.opts.project.workspaces.map(v=>{let x=this.opts.project.configuration.get(\"nmSelfReferences\");return x=v.manifest.installConfig?.selfReferences??x,[v.relativeCwd,x]})),u={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(v,x)=>Array.isArray(x)?{name:x[0],reference:x[1]}:{name:v,reference:x},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(v=>{let x=v.anchoredLocator;return{name:W.stringifyIdent(x),reference:x.reference}}),getPackageInformation:v=>{let x=v.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:W.makeLocator(W.parseIdent(v.name),v.reference),C=this.localStore.get(x.locatorHash);if(typeof C>\"u\")throw new Error(\"Assertion failed: Expected the package reference to have been registered\");return C.pnpNode},findPackageLocator:v=>{let x=this.opts.project.tryWorkspaceByCwd(ue.toPortablePath(v));if(x!==null){let C=x.anchoredLocator;return{name:W.stringifyIdent(C),reference:C.reference}}throw new Error(\"Assertion failed: Unimplemented\")},resolveToUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveRequest:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveVirtual:v=>ue.fromPortablePath(mi.resolveVirtual(ue.toPortablePath(v)))},{tree:A,errors:p,preserveSymlinksRequired:h}=zB(u,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!A){for(let{messageName:v,text:x}of p)this.opts.report.reportError(v,x);return}let E=Hj(A);await E1t(r,E,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async v=>{let x=W.parseLocator(v),C=this.localStore.get(x.locatorHash);if(typeof C>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");return C.customPackageData.manifest}});let I=[];for(let[v,x]of E.entries()){if(y1e(v))continue;let C=W.parseLocator(v),R=this.localStore.get(C.locatorHash);if(typeof R>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");if(this.opts.project.tryWorkspaceByLocator(R.pkg))continue;let N=yA.extractBuildRequest(R.pkg,R.customPackageData,R.dependencyMeta,{configuration:this.opts.project.configuration});!N||I.push({buildLocations:x.locations,locator:C,buildRequest:N})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${de.pretty(this.opts.project.configuration,\"--preserve-symlinks\",de.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:I}}};async function p1t(t,e){let r=await Ot.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Ot,o=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let a of r.scripts.keys())o.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:yA.hasBindingGyp(e)}}}async function h1t(t,e,r,o,{installChangedByUser:a}){let n=\"\";n+=`# Warning: This file is automatically generated. Removing it is fine, but will\n`,n+=`# cause your node_modules installation to become invalidated.\n`,n+=`\n`,n+=`__metadata:\n`,n+=`  version: ${p1e}\n`,n+=`  nmMode: ${o.value}\n`;let u=Array.from(e.keys()).sort(),A=W.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let E of u){let I=e.get(E);n+=`\n`,n+=`${JSON.stringify(E)}:\n`,n+=`  locations:\n`;for(let v of I.locations){let x=V.contains(t.cwd,v);if(x===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=`    - ${JSON.stringify(x)}\n`}if(I.aliases.length>0){n+=`  aliases:\n`;for(let v of I.aliases)n+=`    - ${JSON.stringify(v)}\n`}if(E===A&&r.size>0){n+=`  bin:\n`;for(let[v,x]of r){let C=V.contains(t.cwd,v);if(C===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=`    ${JSON.stringify(C)}:\n`;for(let[R,N]of x){let U=V.relative(V.join(v,Pi),N);n+=`      ${JSON.stringify(R)}: ${JSON.stringify(U)}\n`}}}}let p=t.cwd,h=V.join(p,Pi,h1e);a&&await oe.removePromise(h),await oe.changeFilePromise(h,n,{automaticNewlines:!0})}async function fq(t,{unrollAliases:e=!1}={}){let r=t.cwd,o=V.join(r,Pi,h1e),a;try{a=await oe.statPromise(o)}catch{}if(!a)return null;let n=Ki(await oe.readFilePromise(o,\"utf8\"));if(n.__metadata.version>p1e)return null;let u=n.__metadata.nmMode||\"classic\",A=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let I=E.locations.map(x=>V.join(r,x)),v=E.bin;if(v)for(let[x,C]of Object.entries(v)){let R=V.join(r,ue.toPortablePath(x)),N=_e.getMapWithDefault(p,R);for(let[U,J]of Object.entries(C))N.set(U,ue.toPortablePath([R,Pi,J].join(V.sep)))}if(A.set(h,{target:Bt.dot,linkType:\"HARD\",locations:I,aliases:E.aliases||[]}),e&&E.aliases)for(let x of E.aliases){let{scope:C,name:R}=W.parseLocator(h),N=W.makeLocator(W.makeIdent(C,R),x),U=W.stringifyLocator(N);A.set(U,{target:Bt.dot,linkType:\"HARD\",locations:I,aliases:[]})}}return{locatorMap:A,binSymlinks:p,locationTree:g1e(A,{skipPrefix:t.cwd}),nmMode:u,mtimeMs:a.mtimeMs}}var WC=async(t,e)=>{if(t.split(V.sep).indexOf(Pi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop){let o=e.allowSymlink?await oe.statPromise(t):await oe.lstatPromise(t);if(e.allowSymlink&&!o.isDirectory()||!e.allowSymlink&&o.isSymbolicLink()){await oe.unlinkPromise(t);return}}let r=await oe.readdirPromise(t,{withFileTypes:!0});for(let o of r){let a=V.join(t,o.name);o.isDirectory()?(o.name!==Pi||e&&e.innerLoop)&&await WC(a,{innerLoop:!0,contentsOnly:!1}):await oe.unlinkPromise(a)}e.contentsOnly||await oe.rmdirPromise(t)}catch(r){if(r.code!==\"ENOENT\"&&r.code!==\"ENOTEMPTY\")throw r}},c1e=4,vQ=(t,{skipPrefix:e})=>{let r=V.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let o=r.split(V.sep).filter(p=>p!==\"\"),a=o.indexOf(Pi),n=o.slice(0,a).join(V.sep),u=V.join(e,n),A=o.slice(a);return{locationRoot:u,segments:A}},g1e=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let o=()=>({children:new Map,linkType:\"HARD\"});for(let[a,n]of t.entries()){if(n.linkType===\"SOFT\"&&V.contains(e,n.target)!==null){let A=_e.getFactoryWithDefault(r,n.target,o);A.locator=a,A.linkType=n.linkType}for(let u of n.locations){let{locationRoot:A,segments:p}=vQ(u,{skipPrefix:e}),h=_e.getFactoryWithDefault(r,A,o);for(let E=0;E<p.length;++E){let I=p[E];if(I!==\".\"){let v=_e.getFactoryWithDefault(h.children,I,o);h.children.set(I,v),h=v}E===p.length-1&&(h.locator=a,h.linkType=n.linkType)}}}return r},gq=async(t,e,r)=>{if(process.platform===\"win32\"&&r===\"junctions\"){let o;try{o=await oe.lstatPromise(t)}catch{}if(!o||o.isDirectory()){await oe.symlinkPromise(t,e,\"junction\");return}}await oe.symlinkPromise(V.relative(V.dirname(e),t),e)};async function d1e(t,e,r){let o=V.join(t,`${pq.default.randomBytes(16).toString(\"hex\")}.tmp`);try{await oe.writeFilePromise(o,r);try{await oe.linkPromise(o,e)}catch{}}finally{await oe.unlinkPromise(o)}}async function g1t({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:o,baseFs:a,nmMode:n}){if(r.kind===m1e.FILE){if(n.value===\"hardlinks-global\"&&o&&r.digest){let A=V.join(o,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await oe.statPromise(A);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs<r.mtimeMs-f1t))if(await wn.checksumFile(A,{baseFs:oe,algorithm:\"sha1\"})!==r.digest){let I=V.join(o,`${pq.default.randomBytes(16).toString(\"hex\")}.tmp`);await oe.renamePromise(A,I);let v=await a.readFilePromise(t);await oe.writeFilePromise(I,v);try{await oe.linkPromise(I,A),r.mtimeMs=new Date().getTime(),await oe.unlinkPromise(I)}catch{}}else r.mtimeMs||(r.mtimeMs=Math.ceil(h.mtimeMs));await oe.linkPromise(A,e),p=!0}catch{p=!1}if(!p){let h=await a.readFilePromise(t);await d1e(o,A,h),r.mtimeMs=new Date().getTime();try{await oe.linkPromise(A,e)}catch(E){E&&E.code&&E.code==\"EXDEV\"&&(n.value=\"hardlinks-local\",await a.copyFilePromise(t,e))}}}else await a.copyFilePromise(t,e);let u=r.mode&511;u!==420&&await oe.chmodPromise(e,u)}}var m1e=(o=>(o.FILE=\"file\",o.DIRECTORY=\"directory\",o.SYMLINK=\"symlink\",o))(m1e||{}),d1t=async(t,e,{baseFs:r,globalHardlinksStore:o,nmMode:a,windowsLinkType:n,packageChecksum:u})=>{await oe.mkdirPromise(t,{recursive:!0});let A=async(E=Bt.dot)=>{let I=V.join(e,E),v=await r.readdirPromise(I,{withFileTypes:!0}),x=new Map;for(let C of v){let R=V.join(E,C.name),N,U=V.join(I,C.name);if(C.isFile()){if(N={kind:\"file\",mode:(await r.lstatPromise(U)).mode},a.value===\"hardlinks-global\"){let J=await wn.checksumFile(U,{baseFs:r,algorithm:\"sha1\"});N.digest=J}}else if(C.isDirectory())N={kind:\"directory\"};else if(C.isSymbolicLink())N={kind:\"symlink\",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,\"0\")})`);if(x.set(R,N),C.isDirectory()&&R!==Pi){let J=await A(R);for(let[te,ae]of J)x.set(te,ae)}}return x},p;if(a.value===\"hardlinks-global\"&&o&&u){let E=V.join(o,u.substring(0,2),`${u.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await oe.readFilePromise(E,\"utf8\"))))}catch{p=await A()}}else p=await A();let h=!1;for(let[E,I]of p){let v=V.join(e,E),x=V.join(t,E);if(I.kind===\"directory\")await oe.mkdirPromise(x,{recursive:!0});else if(I.kind===\"file\"){let C=I.mtimeMs;await g1t({srcPath:v,dstPath:x,entry:I,nmMode:a,baseFs:r,globalHardlinksStore:o}),I.mtimeMs!==C&&(h=!0)}else I.kind===\"symlink\"&&await gq(V.resolve(V.dirname(x),I.symlinkTo),x,n)}if(a.value===\"hardlinks-global\"&&o&&h&&u){let E=V.join(o,u.substring(0,2),`${u.substring(2)}.json`);await oe.removePromise(E),await d1e(o,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function m1t(t,e,r,o){let a=new Map,n=new Map,u=new Map,A=!1,p=(h,E,I,v,x)=>{let C=!0,R=V.join(h,E),N=new Set;if(E===Pi||E.startsWith(\"@\")){let J;try{J=oe.statSync(R)}catch{}C=!!J,J?J.mtimeMs>r?(A=!0,N=new Set(oe.readdirSync(R))):N=new Set(I.children.get(E).children.keys()):A=!0;let te=e.get(h);if(te){let ae=V.join(h,Pi,BQ),fe;try{fe=oe.statSync(ae)}catch{}if(!fe)A=!0;else if(fe.mtimeMs>r){A=!0;let ce=new Set(oe.readdirSync(ae)),me=new Map;n.set(h,me);for(let[he,Be]of te)ce.has(he)&&me.set(he,Be)}else n.set(h,te)}}else C=x.has(E);let U=I.children.get(E);if(C){let{linkType:J,locator:te}=U,ae={children:new Map,linkType:J,locator:te};if(v.children.set(E,ae),te){let fe=_e.getSetWithDefault(u,te);fe.add(R),u.set(te,fe)}for(let fe of U.children.keys())p(R,fe,U,ae,N)}else U.locator&&o.storedBuildState.delete(W.parseLocator(U.locator).locatorHash)};for(let[h,E]of t){let{linkType:I,locator:v}=E,x={children:new Map,linkType:I,locator:v};if(a.set(h,x),v){let C=_e.getSetWithDefault(u,E.locator);C.add(h),u.set(E.locator,C)}E.children.has(Pi)&&p(h,Pi,E,x,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:u,installChangedByUser:A}}function y1e(t){let e=W.parseDescriptor(t);return W.isVirtualDescriptor(e)&&(e=W.devirtualizeDescriptor(e)),e.range.startsWith(\"link:\")}async function y1t(t,e,r,{loadManifest:o}){let a=new Map;for(let[A,{locations:p}]of t){let h=y1e(A)?null:await o(A,p[0]),E=new Map;if(h)for(let[I,v]of h.bin){let x=V.join(p[0],v);v!==\"\"&&oe.existsSync(x)&&E.set(I,v)}a.set(A,E)}let n=new Map,u=(A,p,h)=>{let E=new Map,I=V.contains(r,A);if(h.locator&&I!==null){let v=a.get(h.locator);for(let[x,C]of v){let R=V.join(A,ue.toPortablePath(C));E.set(x,R)}for(let[x,C]of h.children){let R=V.join(A,x),N=u(R,R,C);N.size>0&&n.set(A,new Map([...n.get(A)||new Map,...N]))}}else for(let[v,x]of h.children){let C=u(V.join(A,v),p,x);for(let[R,N]of C)E.set(R,N)}return E};for(let[A,p]of e){let h=u(A,A,p);h.size>0&&n.set(A,new Map([...n.get(A)||new Map,...h]))}return n}var u1e=(t,e)=>{if(!t||!e)return t===e;let r=W.parseLocator(t);W.isVirtualLocator(r)&&(r=W.devirtualizeLocator(r));let o=W.parseLocator(e);return W.isVirtualLocator(o)&&(o=W.devirtualizeLocator(o)),W.areLocatorsEqual(r,o)};function dq(t){return V.join(t.get(\"globalFolder\"),\"store\")}async function E1t(t,e,{baseFs:r,project:o,report:a,loadManifest:n,realLocatorChecksums:u}){let A=V.join(o.cwd,Pi),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:I}=m1t(t.locationTree,t.binSymlinks,t.mtimeMs,o),v=g1e(e,{skipPrefix:o.cwd}),x=[],C=async({srcDir:Be,dstDir:we,linkType:g,globalHardlinksStore:Ee,nmMode:Pe,windowsLinkType:le,packageChecksum:ne})=>{let ee=(async()=>{try{g===\"SOFT\"?(await oe.mkdirPromise(V.dirname(we),{recursive:!0}),await gq(V.resolve(Be),we,le)):await d1t(we,Be,{baseFs:r,globalHardlinksStore:Ee,nmMode:Pe,windowsLinkType:le,packageChecksum:ne})}catch(Ie){throw Ie.message=`While persisting ${Be} -> ${we} ${Ie.message}`,Ie}finally{ae.tick()}})().then(()=>x.splice(x.indexOf(ee),1));x.push(ee),x.length>c1e&&await Promise.race(x)},R=async(Be,we,g)=>{let Ee=(async()=>{let Pe=async(le,ne,ee)=>{try{ee.innerLoop||await oe.mkdirPromise(ne,{recursive:!0});let Ie=await oe.readdirPromise(le,{withFileTypes:!0});for(let Fe of Ie){if(!ee.innerLoop&&Fe.name===BQ)continue;let At=V.join(le,Fe.name),H=V.join(ne,Fe.name);Fe.isDirectory()?(Fe.name!==Pi||ee&&ee.innerLoop)&&(await oe.mkdirPromise(H,{recursive:!0}),await Pe(At,H,{...ee,innerLoop:!0})):me.value===\"hardlinks-local\"||me.value===\"hardlinks-global\"?await oe.linkPromise(At,H):await oe.copyFilePromise(At,H,f1e.default.constants.COPYFILE_FICLONE)}}catch(Ie){throw ee.innerLoop||(Ie.message=`While cloning ${le} -> ${ne} ${Ie.message}`),Ie}finally{ee.innerLoop||ae.tick()}};await Pe(Be,we,g)})().then(()=>x.splice(x.indexOf(Ee),1));x.push(Ee),x.length>c1e&&await Promise.race(x)},N=async(Be,we,g)=>{if(g)for(let[Ee,Pe]of we.children){let le=g.children.get(Ee);await N(V.join(Be,Ee),Pe,le)}else{we.children.has(Pi)&&await WC(V.join(Be,Pi),{contentsOnly:!1});let Ee=V.basename(Be)===Pi&&v.has(V.join(V.dirname(Be),V.sep));await WC(Be,{contentsOnly:Be===A,allowSymlink:Ee})}};for(let[Be,we]of p){let g=v.get(Be);for(let[Ee,Pe]of we.children){if(Ee===\".\")continue;let le=g&&g.children.get(Ee),ne=V.join(Be,Ee);await N(ne,Pe,le)}}let U=async(Be,we,g)=>{if(g){u1e(we.locator,g.locator)||await WC(Be,{contentsOnly:we.linkType===\"HARD\"});for(let[Ee,Pe]of we.children){let le=g.children.get(Ee);await U(V.join(Be,Ee),Pe,le)}}else{we.children.has(Pi)&&await WC(V.join(Be,Pi),{contentsOnly:!0});let Ee=V.basename(Be)===Pi&&v.has(V.join(V.dirname(Be),V.sep));await WC(Be,{contentsOnly:we.linkType===\"HARD\",allowSymlink:Ee})}};for(let[Be,we]of v){let g=p.get(Be);for(let[Ee,Pe]of we.children){if(Ee===\".\")continue;let le=g&&g.children.get(Ee);await U(V.join(Be,Ee),Pe,le)}}let J=new Map,te=[];for(let[Be,we]of E)for(let g of we){let{locationRoot:Ee,segments:Pe}=vQ(g,{skipPrefix:o.cwd}),le=v.get(Ee),ne=Ee;if(le){for(let ee of Pe)if(ne=V.join(ne,ee),le=le.children.get(ee),!le)break;if(le){let ee=u1e(le.locator,Be),Ie=e.get(le.locator),Fe=Ie.target,At=ne,H=Ie.linkType;if(ee)J.has(Fe)||J.set(Fe,At);else if(Fe!==At){let at=W.parseLocator(le.locator);W.isVirtualLocator(at)&&(at=W.devirtualizeLocator(at)),te.push({srcDir:Fe,dstDir:At,linkType:H,realLocatorHash:at.locatorHash})}}}}for(let[Be,{locations:we}]of e.entries())for(let g of we){let{locationRoot:Ee,segments:Pe}=vQ(g,{skipPrefix:o.cwd}),le=p.get(Ee),ne=v.get(Ee),ee=Ee,Ie=e.get(Be),Fe=W.parseLocator(Be);W.isVirtualLocator(Fe)&&(Fe=W.devirtualizeLocator(Fe));let At=Fe.locatorHash,H=Ie.target,at=g;if(H===at)continue;let Re=Ie.linkType;for(let ke of Pe)ne=ne.children.get(ke);if(!le)te.push({srcDir:H,dstDir:at,linkType:Re,realLocatorHash:At});else for(let ke of Pe)if(ee=V.join(ee,ke),le=le.children.get(ke),!le){te.push({srcDir:H,dstDir:at,linkType:Re,realLocatorHash:At});break}}let ae=Xs.progressViaCounter(te.length),fe=a.reportProgress(ae),ce=o.configuration.get(\"nmMode\"),me={value:ce},he=o.configuration.get(\"winLinkType\");try{let Be=me.value===\"hardlinks-global\"?`${dq(o.configuration)}/v1`:null;if(Be&&!await oe.existsPromise(Be)){await oe.mkdirpPromise(Be);for(let g=0;g<256;g++)await oe.mkdirPromise(V.join(Be,g.toString(16).padStart(2,\"0\")))}for(let g of te)(g.linkType===\"SOFT\"||!J.has(g.srcDir))&&(J.set(g.srcDir,g.dstDir),await C({...g,globalHardlinksStore:Be,nmMode:me,windowsLinkType:he,packageChecksum:u.get(g.realLocatorHash)||null}));await Promise.all(x),x.length=0;for(let g of te){let Ee=J.get(g.srcDir);g.linkType!==\"SOFT\"&&g.dstDir!==Ee&&await R(Ee,g.dstDir,{nmMode:me})}await Promise.all(x),await oe.mkdirPromise(A,{recursive:!0});let we=await y1t(e,v,o.cwd,{loadManifest:n});await C1t(h,we,o.cwd,he),await h1t(o,e,we,me,{installChangedByUser:I}),ce==\"hardlinks-global\"&&me.value==\"hardlinks-local\"&&a.reportWarningOnce(74,\"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices\")}finally{fe.stop()}}async function C1t(t,e,r,o){for(let a of t.keys()){if(V.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!e.has(a)){let n=V.join(a,Pi,BQ);await oe.removePromise(n)}}for(let[a,n]of e){if(V.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let u=V.join(a,Pi,BQ),A=t.get(a)||new Map;await oe.mkdirPromise(u,{recursive:!0});for(let p of A.keys())n.has(p)||(await oe.removePromise(V.join(u,p)),process.platform===\"win32\"&&await oe.removePromise(V.join(u,`${p}.cmd`)));for(let[p,h]of n){let E=A.get(p),I=V.join(u,p);E!==h&&(process.platform===\"win32\"?await(0,A1e.default)(ue.fromPortablePath(h),ue.fromPortablePath(I),{createPwshFile:!1}):(await oe.removePromise(I),await gq(h,I,o),V.contains(r,await oe.realpathPromise(h))!==null&&await oe.chmodPromise(h,493)))}}}Ye();Pt();nA();var cv=class extends S0{constructor(){super(...arguments);this.mode=\"loose\"}makeInstaller(r){return new mq(r)}},mq=class extends mm{constructor(){super(...arguments);this.mode=\"loose\"}async transformPnpSettings(r){let o=new mi({baseFs:new Jl({maxOpenFiles:80,readOnlyArchives:!0})}),a=XIe(r,this.opts.project.cwd,o),{tree:n,errors:u}=zB(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:I,text:v}of u)this.opts.report.reportError(I,v);return}let A=new Map;r.fallbackPool=A;let p=(I,v)=>{let x=W.parseLocator(v.locator),C=W.stringifyIdent(x);C===I?A.set(I,x.reference):A.set(I,[C,x.reference])},h=V.join(this.opts.project.cwd,dr.nodeModules),E=n.get(h);if(!(typeof E>\"u\")){if(\"target\"in E)throw new Error(\"Assertion failed: Expected the root junction point to be a directory\");for(let I of E.dirList){let v=V.join(h,I),x=n.get(v);if(typeof x>\"u\")throw new Error(\"Assertion failed: Expected the child to have been registered\");if(\"target\"in x)p(I,x);else for(let C of x.dirList){let R=V.join(v,C),N=n.get(R);if(typeof N>\"u\")throw new Error(\"Assertion failed: Expected the subchild to have been registered\");if(\"target\"in N)p(`${I}/${C}`,N);else throw new Error(\"Assertion failed: Expected the leaf junction to be a package\")}}}}};var w1t={hooks:{cleanGlobalArtifacts:async t=>{let e=dq(t);await oe.removePromise(e)}},configuration:{nmHoistingLimits:{description:\"Prevents packages to be hoisted past specific levels\",type:\"STRING\",values:[\"workspaces\",\"dependencies\",\"none\"],default:\"none\"},nmMode:{description:\"Defines in which measure Yarn must use hardlinks and symlinks when generated `node_modules` directories.\",type:\"STRING\",values:[\"classic\",\"hardlinks-local\",\"hardlinks-global\"],default:\"classic\"},nmSelfReferences:{description:\"Defines whether the linker should generate self-referencing symlinks for workspaces.\",type:\"BOOLEAN\",default:!0}},linkers:[lv,cv]},I1t=w1t;var dG={};Vt(dG,{NpmHttpFetcher:()=>fv,NpmRemapResolver:()=>pv,NpmSemverFetcher:()=>dl,NpmSemverResolver:()=>hv,NpmTagResolver:()=>gv,default:()=>Ovt,npmConfigUtils:()=>$n,npmHttpUtils:()=>Zr,npmPublishUtils:()=>ow});Ye();var P1e=$e(zn());var Wn=\"npm:\";var Zr={};Vt(Zr,{AuthType:()=>B1e,customPackageError:()=>ym,del:()=>T1t,get:()=>Em,getIdentUrl:()=>DQ,getPackageMetadata:()=>JC,handleInvalidAuthenticationError:()=>k0,post:()=>F1t,put:()=>R1t});Ye();Ye();Pt();var wq=$e(f2()),w1e=$e(D_()),I1e=$e(zn());var $n={};Vt($n,{RegistryType:()=>E1e,getAuditRegistry:()=>B1t,getAuthConfiguration:()=>Cq,getDefaultRegistry:()=>uv,getPublishRegistry:()=>v1t,getRegistryConfiguration:()=>C1e,getScopeConfiguration:()=>Eq,getScopeRegistry:()=>KC,normalizeRegistry:()=>oc});var E1e=(o=>(o.AUDIT_REGISTRY=\"npmAuditRegistry\",o.FETCH_REGISTRY=\"npmRegistryServer\",o.PUBLISH_REGISTRY=\"npmPublishRegistry\",o))(E1e||{});function oc(t){return t.replace(/\\/$/,\"\")}function B1t({configuration:t}){return uv({configuration:t,type:\"npmAuditRegistry\"})}function v1t(t,{configuration:e}){return t.publishConfig?.registry?oc(t.publishConfig.registry):t.name?KC(t.name.scope,{configuration:e,type:\"npmPublishRegistry\"}):uv({configuration:e,type:\"npmPublishRegistry\"})}function KC(t,{configuration:e,type:r=\"npmRegistryServer\"}){let o=Eq(t,{configuration:e});if(o===null)return uv({configuration:e,type:r});let a=o.get(r);return a===null?uv({configuration:e,type:r}):oc(a)}function uv({configuration:t,type:e=\"npmRegistryServer\"}){let r=t.get(e);return oc(r!==null?r:t.get(\"npmRegistryServer\"))}function C1e(t,{configuration:e}){let r=e.get(\"npmRegistries\"),o=oc(t),a=r.get(o);if(typeof a<\"u\")return a;let n=r.get(o.replace(/^[a-z]+:/,\"\"));return typeof n<\"u\"?n:null}function Eq(t,{configuration:e}){if(t===null)return null;let o=e.get(\"npmScopes\").get(t);return o||null}function Cq(t,{configuration:e,ident:r}){let o=r&&Eq(r.scope,{configuration:e});return o?.get(\"npmAuthIdent\")||o?.get(\"npmAuthToken\")?o:C1e(t,{configuration:e})||e}var B1e=(a=>(a[a.NO_AUTH=0]=\"NO_AUTH\",a[a.BEST_EFFORT=1]=\"BEST_EFFORT\",a[a.CONFIGURATION=2]=\"CONFIGURATION\",a[a.ALWAYS_AUTH=3]=\"ALWAYS_AUTH\",a))(B1e||{});async function k0(t,{attemptedAs:e,registry:r,headers:o,configuration:a}){if(SQ(t))throw new zt(41,\"Invalid OTP token\");if(t.originalError?.name===\"HTTPError\"&&t.originalError?.response.statusCode===401)throw new zt(41,`Invalid authentication (${typeof e!=\"string\"?`as ${await N1t(r,o,{configuration:a})}`:`attempted as ${e}`})`)}function ym(t,e){let r=t.response?.statusCode;return r?r===404?\"Package not found\":r>=500&&r<600?`The registry appears to be down (using a ${de.applyHyperlink(e,\"local cache\",\"https://yarnpkg.com/advanced/lexicon#local-cache\")} might have protected you against such outages)`:null:null}function DQ(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}var v1e=new Map,D1t=new Map;async function P1t(t){return await _e.getFactoryWithDefault(v1e,t,async()=>{let e=null;try{e=await oe.readJsonPromise(t)}catch{}return e})}async function S1t(t,e,{configuration:r,cached:o,registry:a,headers:n,version:u,...A}){return await _e.getFactoryWithDefault(D1t,t,async()=>await Em(DQ(e),{...A,customErrorMessage:ym,configuration:r,registry:a,ident:e,headers:{...n,[\"If-None-Match\"]:o?.etag,[\"If-Modified-Since\"]:o?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(o===null)throw new Error(\"Assertion failed: cachedMetadata should not be null\");return{...h,body:o.metadata}}let E=b1t(JSON.parse(h.body.toString())),I={metadata:E,etag:h.headers.etag,lastModified:h.headers[\"last-modified\"]};return v1e.set(t,Promise.resolve(I)),Promise.resolve().then(async()=>{let v=`${t}-${process.pid}.tmp`;await oe.mkdirPromise(V.dirname(v),{recursive:!0}),await oe.writeJsonPromise(v,I,{compact:!0}),await oe.renamePromise(v,t)}).catch(()=>{}),{...h,body:E}}}))}async function JC(t,{cache:e,project:r,registry:o,headers:a,version:n,...u}){let{configuration:A}=r;o=Av(A,{ident:t,registry:o});let p=k1t(A,o),h=V.join(p,`${W.slugifyIdent(t)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await P1t(h),E)){if(typeof n<\"u\"&&typeof E.metadata.versions[n]<\"u\")return E.metadata;if(A.get(\"enableOfflineMode\")){let I=structuredClone(E.metadata),v=new Set;if(e){for(let C of Object.keys(I.versions)){let R=W.makeLocator(t,`npm:${C}`),N=e.getLocatorMirrorPath(R);(!N||!oe.existsSync(N))&&(delete I.versions[C],v.add(C))}let x=I[\"dist-tags\"].latest;if(v.has(x)){let C=Object.keys(E.metadata.versions).sort(I1e.default.compare),R=C.indexOf(x);for(;v.has(C[R])&&R>=0;)R-=1;R>=0?I[\"dist-tags\"].latest=C[R]:delete I[\"dist-tags\"].latest}}return I}}return await S1t(h,t,{...u,configuration:A,cached:E,registry:o,headers:a,version:n})}var D1e=[\"name\",\"dist.tarball\",\"bin\",\"scripts\",\"os\",\"cpu\",\"libc\",\"dependencies\",\"dependenciesMeta\",\"optionalDependencies\",\"peerDependencies\",\"peerDependenciesMeta\",\"deprecated\"];function b1t(t){return{\"dist-tags\":t[\"dist-tags\"],versions:Object.fromEntries(Object.entries(t.versions).map(([e,r])=>[e,(0,w1e.default)(r,D1e)]))}}var x1t=wn.makeHash(...D1e).slice(0,6);function k1t(t,e){let r=Q1t(t),o=new URL(e);return V.join(r,x1t,o.hostname)}function Q1t(t){return V.join(t.get(\"globalFolder\"),\"metadata/npm\")}async function Em(t,{configuration:e,headers:r,ident:o,authType:a,registry:n,...u}){n=Av(e,{ident:o,registry:n}),o&&o.scope&&typeof a>\"u\"&&(a=1);let A=await PQ(n,{authType:a,configuration:e,ident:o});A&&(r={...r,authorization:A});try{return await nn.get(t.charAt(0)===\"/\"?`${n}${t}`:t,{configuration:e,headers:r,...u})}catch(p){throw await k0(p,{registry:n,configuration:e,headers:r}),p}}async function F1t(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){A=Av(o,{ident:n,registry:A});let E=await PQ(A,{authType:u,configuration:o,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...VC(p)});try{return await nn.post(A+t,e,{configuration:o,headers:a,...h})}catch(I){if(!SQ(I)||p)throw await k0(I,{attemptedAs:r,registry:A,configuration:o,headers:a}),I;p=await Iq(I,{configuration:o});let v={...a,...VC(p)};try{return await nn.post(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(x){throw await k0(x,{attemptedAs:r,registry:A,configuration:o,headers:a}),x}}}async function R1t(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){A=Av(o,{ident:n,registry:A});let E=await PQ(A,{authType:u,configuration:o,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...VC(p)});try{return await nn.put(A+t,e,{configuration:o,headers:a,...h})}catch(I){if(!SQ(I))throw await k0(I,{attemptedAs:r,registry:A,configuration:o,headers:a}),I;p=await Iq(I,{configuration:o});let v={...a,...VC(p)};try{return await nn.put(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(x){throw await k0(x,{attemptedAs:r,registry:A,configuration:o,headers:a}),x}}}async function T1t(t,{attemptedAs:e,configuration:r,headers:o,ident:a,authType:n=3,registry:u,otp:A,...p}){u=Av(r,{ident:a,registry:u});let h=await PQ(u,{authType:n,configuration:r,ident:a});h&&(o={...o,authorization:h}),A&&(o={...o,...VC(A)});try{return await nn.del(u+t,{configuration:r,headers:o,...p})}catch(E){if(!SQ(E)||A)throw await k0(E,{attemptedAs:e,registry:u,configuration:r,headers:o}),E;A=await Iq(E,{configuration:r});let I={...o,...VC(A)};try{return await nn.del(`${u}${t}`,{configuration:r,headers:I,...p})}catch(v){throw await k0(v,{attemptedAs:e,registry:u,configuration:r,headers:o}),v}}}function Av(t,{ident:e,registry:r}){if(typeof r>\"u\"&&e)return KC(e.scope,{configuration:t});if(typeof r!=\"string\")throw new Error(\"Assertion failed: The registry should be a string\");return oc(r)}async function PQ(t,{authType:e=2,configuration:r,ident:o}){let a=Cq(t,{configuration:r,ident:o}),n=L1t(a,e);if(!n)return null;let u=await r.reduceHook(A=>A.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:o});if(u)return u;if(a.get(\"npmAuthToken\"))return`Bearer ${a.get(\"npmAuthToken\")}`;if(a.get(\"npmAuthIdent\")){let A=a.get(\"npmAuthIdent\");return A.includes(\":\")?`Basic ${Buffer.from(A).toString(\"base64\")}`:`Basic ${A}`}if(n&&e!==1)throw new zt(33,\"No authentication configured for request\");return null}function L1t(t,e){switch(e){case 2:return t.get(\"npmAlwaysAuth\");case 1:case 3:return!0;case 0:return!1;default:throw new Error(\"Unreachable\")}}async function N1t(t,e,{configuration:r}){if(typeof e>\"u\"||typeof e.authorization>\"u\")return\"an anonymous user\";try{return(await nn.get(new URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??\"an unknown user\"}catch{return\"an unknown user\"}}async function Iq(t,{configuration:e}){let r=t.originalError?.response.headers[\"npm-notice\"];if(r&&(await Lt.start({configuration:e,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\\/\\/\\S+)/g,de.pretty(e,\"$1\",de.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\\/\\/\\S+)/i);if(n&&Ji.openUrl){let{openNow:u}=await(0,wq.prompt)({type:\"confirm\",name:\"openNow\",message:\"Do you want to try to open this url now?\",required:!0,initial:!0,onCancel:()=>process.exit(130)});u&&(await Ji.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,\"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.\")))}}}),process.stdout.write(`\n`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||\"\";let{otp:o}=await(0,wq.prompt)({type:\"password\",name:\"otp\",message:\"One-time password:\",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(`\n`),o}function SQ(t){if(t.originalError?.name!==\"HTTPError\")return!1;try{return(t.originalError?.response.headers[\"www-authenticate\"].split(/,\\s*/).map(r=>r.toLowerCase())).includes(\"otp\")}catch{return!1}}function VC(t){return{[\"npm-otp\"]:t}}var fv=class{supports(e,r){if(!e.reference.startsWith(Wn))return!1;let{selector:o,params:a}=W.parseRange(e.reference);return!(!P1e.default.valid(o)||a===null||typeof a.__archiveUrl!=\"string\")}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let{params:o}=W.parseRange(e.reference);if(o===null||typeof o.__archiveUrl!=\"string\")throw new Error(\"Assertion failed: The archiveUrl querystring parameter should have been available\");let a=await Em(o.__archiveUrl,{customErrorMessage:ym,configuration:r.project.configuration,ident:e});return await Xi.convertToZip(a,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();var pv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Wn)||!W.tryParseDescriptor(e.range.slice(Wn.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){let o=r.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return r.resolver.getResolutionDependencies(o,r)}async getCandidates(e,r,o){let a=o.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return await o.resolver.getCandidates(a,r,o)}async getSatisfying(e,r,o,a){let n=a.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return a.resolver.getSatisfying(n,r,o,a)}resolve(e,r){throw new Error(\"Unreachable\")}};Ye();Ye();var S1e=$e(zn());var dl=class{supports(e,r){if(!e.reference.startsWith(Wn))return!1;let o=new URL(e.reference);return!(!S1e.default.valid(o.pathname)||o.searchParams.has(\"__archiveUrl\"))}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o;try{o=await Em(dl.getLocatorUrl(e),{customErrorMessage:ym,configuration:r.project.configuration,ident:e})}catch{o=await Em(dl.getLocatorUrl(e).replace(/%2f/g,\"/\"),{customErrorMessage:ym,configuration:r.project.configuration,ident:e})}return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:o}){let a=KC(e.scope,{configuration:o}),n=dl.getLocatorUrl(e);return r=r.replace(/^https?:(\\/\\/(?:[^/]+\\.)?npmjs.org(?:$|\\/))/,\"https:$1\"),a=a.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r=r.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r===a+n||r===a+n.replace(/%2f/g,\"/\")}static getLocatorUrl(e){let r=kr.clean(e.reference.slice(Wn.length));if(r===null)throw new zt(10,\"The npm semver resolver got selected, but the version isn't semver\");return`${DQ(e)}/-/${e.name}-${r}.tgz`}};Ye();Ye();Ye();var Bq=$e(zn());var bQ=W.makeIdent(null,\"node-gyp\"),O1t=/\\b(node-gyp|prebuild-install)\\b/,hv=class{supportsDescriptor(e,r){return e.range.startsWith(Wn)?!!kr.validRange(e.range.slice(Wn.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(Wn))return!1;let{selector:o}=W.parseRange(e.reference);return!!Bq.default.valid(o)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=kr.validRange(e.range.slice(Wn.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(Wn.length)}`);let n=await JC(e,{cache:o.fetchOptions?.cache,project:o.project,version:Bq.default.valid(a.raw)?a.raw:void 0}),u=_e.mapAndFilter(Object.keys(n.versions),h=>{try{let E=new kr.SemVer(h);if(a.test(E))return E}catch{}return _e.mapAndFilter.skip}),A=u.filter(h=>!n.versions[h.raw].deprecated),p=A.length>0?A:u;return p.sort((h,E)=>-h.compare(E)),p.map(h=>{let E=W.makeLocator(e,`${Wn}${h.raw}`),I=n.versions[h.raw].dist.tarball;return dl.isConventionalTarballUrl(E,I,{configuration:o.project.configuration})?E:W.bindLocator(E,{__archiveUrl:I})})}async getSatisfying(e,r,o,a){let n=kr.validRange(e.range.slice(Wn.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(Wn.length)}`);return{locators:_e.mapAndFilter(o,p=>{if(p.identHash!==e.identHash)return _e.mapAndFilter.skip;let h=W.tryParseRange(p.reference,{requireProtocol:Wn});if(!h)return _e.mapAndFilter.skip;let E=new kr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:_e.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:o}=W.parseRange(e.reference),a=kr.clean(o);if(a===null)throw new zt(10,\"The npm semver resolver got selected, but the version isn't semver\");let n=await JC(e,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,\"versions\"))throw new zt(15,'Registry returned invalid data for - missing \"versions\" field');if(!Object.hasOwn(n.versions,a))throw new zt(16,`Registry failed to return reference \"${a}\"`);let u=new Ot;if(u.load(n.versions[a]),!u.dependencies.has(bQ.identHash)&&!u.peerDependencies.has(bQ.identHash)){for(let A of u.scripts.values())if(A.match(O1t)){u.dependencies.set(bQ.identHash,W.makeDescriptor(bQ,\"latest\"));break}}return{...e,version:a,languageName:\"node\",linkType:\"HARD\",conditions:u.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(u.dependencies),peerDependencies:u.peerDependencies,dependenciesMeta:u.dependenciesMeta,peerDependenciesMeta:u.peerDependenciesMeta,bin:u.bin}}};Ye();Ye();var b1e=$e(zn());var gv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Wn)||!FE.test(e.range.slice(Wn.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(Wn.length),n=await JC(e,{cache:o.fetchOptions?.cache,project:o.project});if(!Object.hasOwn(n,\"dist-tags\"))throw new zt(15,'Registry returned invalid data - missing \"dist-tags\" field');let u=n[\"dist-tags\"];if(!Object.hasOwn(u,a))throw new zt(16,`Registry failed to return tag \"${a}\"`);let A=u[a],p=W.makeLocator(e,`${Wn}${A}`),h=n.versions[A].dist.tarball;return dl.isConventionalTarballUrl(p,h,{configuration:o.project.configuration})?[p]:[W.bindLocator(p,{__archiveUrl:h})]}async getSatisfying(e,r,o,a){let n=[];for(let u of o){if(u.identHash!==e.identHash)continue;let A=W.tryParseRange(u.reference,{requireProtocol:Wn});if(!(!A||!b1e.default.valid(A.selector))){if(A.params?.__archiveUrl){let p=W.makeRange({protocol:Wn,selector:A.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(W.makeDescriptor(e,p),r,a);if(u.reference!==h.reference)continue}n.push(u)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error(\"Unreachable\")}};var ow={};Vt(ow,{getGitHead:()=>Lvt,getPublishAccess:()=>mBe,getReadmeContent:()=>yBe,makePublishBody:()=>Tvt});Ye();Ye();Pt();var AG={};Vt(AG,{PackCommand:()=>U0,default:()=>dvt,packUtils:()=>wA});Ye();Ye();Ye();Pt();jt();var wA={};Vt(wA,{genPackList:()=>XQ,genPackStream:()=>uG,genPackageManifest:()=>sBe,hasPackScripts:()=>lG,prepareForPack:()=>cG});Ye();Pt();var aG=$e(Zo()),nBe=$e($2e()),iBe=ve(\"zlib\"),svt=[\"/package.json\",\"/readme\",\"/readme.*\",\"/license\",\"/license.*\",\"/licence\",\"/licence.*\",\"/changelog\",\"/changelog.*\"],ovt=[\"/package.tgz\",\".github\",\".git\",\".hg\",\"node_modules\",\".npmignore\",\".gitignore\",\".#*\",\".DS_Store\"];async function lG(t){return!!(un.hasWorkspaceScript(t,\"prepack\")||un.hasWorkspaceScript(t,\"postpack\"))}async function cG(t,{report:e},r){await un.maybeExecuteWorkspaceLifecycleScript(t,\"prepack\",{report:e});try{let o=V.join(t.cwd,Ot.fileName);await oe.existsPromise(o)&&await t.manifest.loadFile(o,{baseFs:oe}),await r()}finally{await un.maybeExecuteWorkspaceLifecycleScript(t,\"postpack\",{report:e})}}async function uG(t,e){typeof e>\"u\"&&(e=await XQ(t));let r=new Set;for(let n of t.manifest.publishConfig?.executableFiles??new Set)r.add(V.normalize(n));for(let n of t.manifest.bin.values())r.add(V.normalize(n));let o=nBe.default.pack();process.nextTick(async()=>{for(let n of e){let u=V.normalize(n),A=V.resolve(t.cwd,u),p=V.join(\"package\",u),h=await oe.lstatPromise(A),E={name:p,mtime:new Date(vi.SAFE_TIME*1e3)},I=r.has(u)?493:420,v,x,C=new Promise((N,U)=>{v=N,x=U}),R=N=>{N?x(N):v()};if(h.isFile()){let N;u===\"package.json\"?N=Buffer.from(JSON.stringify(await sBe(t),null,2)):N=await oe.readFilePromise(A),o.entry({...E,mode:I,type:\"file\"},N,R)}else h.isSymbolicLink()?o.entry({...E,mode:I,type:\"symlink\",linkname:await oe.readlinkPromise(A)},R):R(new Error(`Unsupported file type ${h.mode} for ${ue.fromPortablePath(u)}`));await C}o.finalize()});let a=(0,iBe.createGzip)();return o.pipe(a),a}async function sBe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function XQ(t){let e=t.project,r=e.configuration,o={accept:[],reject:[]};for(let I of ovt)o.reject.push(I);for(let I of svt)o.accept.push(I);o.reject.push(r.get(\"rcFilename\"));let a=I=>{if(I===null||!I.startsWith(`${t.cwd}/`))return;let v=V.relative(t.cwd,I),x=V.resolve(Bt.root,v);o.reject.push(x)};a(V.resolve(e.cwd,dr.lockfile)),a(r.get(\"cacheFolder\")),a(r.get(\"globalFolder\")),a(r.get(\"installStatePath\")),a(r.get(\"virtualFolder\")),a(r.get(\"yarnPath\")),await r.triggerHook(I=>I.populateYarnPaths,e,I=>{a(I)});for(let I of e.workspaces){let v=V.relative(t.cwd,I.cwd);v!==\"\"&&!v.match(/^(\\.\\.)?\\//)&&o.reject.push(`/${v}`)}let n={accept:[],reject:[]},u=t.manifest.publishConfig?.main??t.manifest.main,A=t.manifest.publishConfig?.module??t.manifest.module,p=t.manifest.publishConfig?.browser??t.manifest.browser,h=t.manifest.publishConfig?.bin??t.manifest.bin;u!=null&&n.accept.push(V.resolve(Bt.root,u)),A!=null&&n.accept.push(V.resolve(Bt.root,A)),typeof p==\"string\"&&n.accept.push(V.resolve(Bt.root,p));for(let I of h.values())n.accept.push(V.resolve(Bt.root,I));if(p instanceof Map)for(let[I,v]of p.entries())n.accept.push(V.resolve(Bt.root,I)),typeof v==\"string\"&&n.accept.push(V.resolve(Bt.root,v));let E=t.manifest.files!==null;if(E){n.reject.push(\"/*\");for(let I of t.manifest.files)oBe(n.accept,I,{cwd:Bt.root})}return await avt(t.cwd,{hasExplicitFileList:E,globalList:o,ignoreList:n})}async function avt(t,{hasExplicitFileList:e,globalList:r,ignoreList:o}){let a=[],n=new _u(t),u=[[Bt.root,[o]]];for(;u.length>0;){let[A,p]=u.pop(),h=await n.lstatPromise(A);if(!tBe(A,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(A),I=!1,v=!1;if(!e||A!==Bt.root)for(let R of E)I=I||R===\".gitignore\",v=v||R===\".npmignore\";let x=v?await eBe(n,A,\".npmignore\"):I?await eBe(n,A,\".gitignore\"):null,C=x!==null?[x].concat(p):p;tBe(A,{globalList:r,ignoreLists:p})&&(C=[...p,{accept:[],reject:[\"**/*\"]}]);for(let R of E)u.push([V.resolve(A,R),C])}else(h.isFile()||h.isSymbolicLink())&&a.push(V.relative(Bt.root,A))}return a.sort()}async function eBe(t,e,r){let o={accept:[],reject:[]},a=await t.readFilePromise(V.join(e,r),\"utf8\");for(let n of a.split(/\\n/g))oBe(o.reject,n,{cwd:e});return o}function lvt(t,{cwd:e}){let r=t[0]===\"!\";return r&&(t=t.slice(1)),t.match(/\\.{0,1}\\//)&&(t=V.resolve(e,t)),r&&(t=`!${t}`),t}function oBe(t,e,{cwd:r}){let o=e.trim();o===\"\"||o[0]===\"#\"||t.push(lvt(o,{cwd:r}))}function tBe(t,{globalList:e,ignoreLists:r}){let o=zQ(t,e.accept);if(o!==0)return o===2;let a=zQ(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let u=zQ(t,n.accept);if(u!==0)return u===2;let A=zQ(t,n.reject);if(A!==0)return A===1}return!1}function zQ(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a][0]!==\"!\"?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a].slice(1)));return rBe(t,o)?2:rBe(t,r)?1:0}function rBe(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a].includes(\"/\")?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a]));return!!(aG.default.isMatch(t,r,{dot:!0,nocase:!0})||aG.default.isMatch(t,o,{dot:!0,basename:!0,nocase:!0}))}var U0=class extends ut{constructor(){super(...arguments);this.installIfNeeded=ge.Boolean(\"--install-if-needed\",!1,{description:\"Run a preliminary `yarn install` if the package contains build scripts\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"Print the file paths without actually generating the package archive\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.out=ge.String(\"-o,--out\",{description:\"Create the archive at the specified path\"});this.filename=ge.String(\"--filename\",{hidden:!0})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await lG(a)&&(this.installIfNeeded?await o.install({cache:await Nr.find(r),report:new Qi}):await o.restoreInstallState());let n=this.out??this.filename,u=typeof n<\"u\"?V.resolve(this.context.cwd,cvt(n,{workspace:a})):V.resolve(a.cwd,\"package.tgz\");return(await Lt.start({configuration:r,stdout:this.context.stdout,json:this.json},async p=>{await cG(a,{report:p},async()=>{p.reportJson({base:ue.fromPortablePath(a.cwd)});let h=await XQ(a);for(let E of h)p.reportInfo(null,ue.fromPortablePath(E)),p.reportJson({location:ue.fromPortablePath(E)});if(!this.dryRun){let E=await uG(a,h),I=oe.createWriteStream(u);E.pipe(I),await new Promise(v=>{I.on(\"finish\",v)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${de.pretty(r,u,de.Type.PATH)}`),p.reportJson({output:ue.fromPortablePath(u)}))})).exitCode()}};U0.paths=[[\"pack\"]],U0.usage=nt.Usage({description:\"generate a tarball from the active workspace\",details:\"\\n      This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\\n\\n      If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\\n    \",examples:[[\"Create an archive from the active workspace\",\"yarn pack\"],[\"List the files that would be made part of the workspace's archive\",\"yarn pack --dry-run\"],[\"Name and output the archive in a dedicated folder\",\"yarn pack --out /artifacts/%s-%v.tgz\"]]});function cvt(t,{workspace:e}){let r=t.replace(\"%s\",uvt(e)).replace(\"%v\",Avt(e));return ue.toPortablePath(r)}function uvt(t){return t.manifest.name!==null?W.slugifyIdent(t.manifest.name):\"package\"}function Avt(t){return t.manifest.version!==null?t.manifest.version:\"unknown\"}var fvt=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],pvt=\"workspace:\",hvt=(t,e)=>{e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.imports&&(e.imports=e.publishConfig.imports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let o of fvt)for(let a of t.manifest.getForScope(o).values()){let n=r.tryWorkspaceByDescriptor(a),u=W.parseRange(a.range);if(u.protocol===pvt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new zt(21,`${W.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let A;W.areDescriptorsEqual(a,n.anchoredDescriptor)||u.selector===\"*\"?A=n.manifest.version??\"0.0.0\":u.selector===\"~\"||u.selector===\"^\"?A=`${u.selector}${n.manifest.version??\"0.0.0\"}`:A=u.selector;let p=o===\"dependencies\"?W.makeDescriptor(a,\"unknown\"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?\"optionalDependencies\":o;e[h][W.stringifyIdent(a)]=A}}},gvt={hooks:{beforeWorkspacePacking:hvt},commands:[U0]},dvt=gvt;var gBe=ve(\"crypto\"),dBe=$e(hBe());async function Tvt(t,e,{access:r,tag:o,registry:a,gitHead:n}){let u=t.manifest.name,A=t.manifest.version,p=W.stringifyIdent(u),h=(0,gBe.createHash)(\"sha1\").update(e).digest(\"hex\"),E=dBe.default.fromData(e).toString(),I=r??mBe(t,u),v=await yBe(t),x=await wA.genPackageManifest(t),C=`${p}-${A}.tgz`,R=new URL(`${oc(a)}/${p}/-/${C}`);return{_id:p,_attachments:{[C]:{content_type:\"application/octet-stream\",data:e.toString(\"base64\"),length:e.length}},name:p,access:I,[\"dist-tags\"]:{[o]:A},versions:{[A]:{...x,_id:`${p}@${A}`,name:p,version:A,gitHead:n,dist:{shasum:h,integrity:E,tarball:R.toString()}}},readme:v}}async function Lvt(t){try{let{stdout:e}=await Ur.execvp(\"git\",[\"rev-parse\",\"--revs-only\",\"HEAD\"],{cwd:t});return e.trim()===\"\"?void 0:e.trim()}catch{return}}function mBe(t,e){let r=t.project.configuration;return t.manifest.publishConfig&&typeof t.manifest.publishConfig.access==\"string\"?t.manifest.publishConfig.access:r.get(\"npmPublishAccess\")!==null?r.get(\"npmPublishAccess\"):e.scope?\"restricted\":\"public\"}async function yBe(t){let e=ue.toPortablePath(`${t.cwd}/README.md`),r=t.manifest.name,a=`# ${W.stringifyIdent(r)}\n`;try{a=await oe.readFilePromise(e,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return a;throw n}return a}var gG={npmAlwaysAuth:{description:\"URL of the selected npm registry (note: npm enterprise isn't supported)\",type:\"BOOLEAN\",default:!1},npmAuthIdent:{description:\"Authentication identity for the npm registry (_auth in npm and yarn v1)\",type:\"SECRET\",default:null},npmAuthToken:{description:\"Authentication token for the npm registry (_authToken in npm and yarn v1)\",type:\"SECRET\",default:null}},EBe={npmAuditRegistry:{description:\"Registry to query for audit reports\",type:\"STRING\",default:null},npmPublishRegistry:{description:\"Registry to push packages to\",type:\"STRING\",default:null},npmRegistryServer:{description:\"URL of the selected npm registry (note: npm enterprise isn't supported)\",type:\"STRING\",default:\"https://registry.yarnpkg.com\"}},Nvt={configuration:{...gG,...EBe,npmScopes:{description:\"Settings per package scope\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...gG,...EBe}}},npmRegistries:{description:\"Settings per registry\",type:\"MAP\",normalizeKeys:oc,valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...gG}}}},fetchers:[fv,dl],resolvers:[pv,hv,gv]},Ovt=Nvt;var DG={};Vt(DG,{NpmAuditCommand:()=>H0,NpmInfoCommand:()=>j0,NpmLoginCommand:()=>q0,NpmLogoutCommand:()=>G0,NpmPublishCommand:()=>Y0,NpmTagAddCommand:()=>K0,NpmTagListCommand:()=>W0,NpmTagRemoveCommand:()=>V0,NpmWhoamiCommand:()=>J0,default:()=>Gvt,npmAuditTypes:()=>Rv,npmAuditUtils:()=>ZQ});Ye();Ye();jt();var wG=$e(Zo());Za();var Rv={};Vt(Rv,{Environment:()=>Qv,Severity:()=>Fv});var Qv=(o=>(o.All=\"all\",o.Production=\"production\",o.Development=\"development\",o))(Qv||{}),Fv=(n=>(n.Info=\"info\",n.Low=\"low\",n.Moderate=\"moderate\",n.High=\"high\",n.Critical=\"critical\",n))(Fv||{});var ZQ={};Vt(ZQ,{allSeverities:()=>aw,getPackages:()=>CG,getReportTree:()=>yG,getSeverityInclusions:()=>mG,getTopLevelDependencies:()=>EG});Ye();var CBe=$e(zn());var aw=[\"info\",\"low\",\"moderate\",\"high\",\"critical\"];function mG(t){if(typeof t>\"u\")return new Set(aw);let e=aw.indexOf(t),r=aw.slice(e);return new Set(r)}function yG(t){let e={},r={children:e};for(let[o,a]of _e.sortMap(Object.entries(t),n=>n[0]))for(let n of _e.sortMap(a,u=>`${u.id}`))e[`${o}/${n.id}`]={value:de.tuple(de.Type.IDENT,W.parseIdent(o)),children:{ID:typeof n.id<\"u\"&&{label:\"ID\",value:de.tuple(de.Type.ID,n.id)},Issue:{label:\"Issue\",value:de.tuple(de.Type.NO_HINT,n.title)},URL:typeof n.url<\"u\"&&{label:\"URL\",value:de.tuple(de.Type.URL,n.url)},Severity:{label:\"Severity\",value:de.tuple(de.Type.NO_HINT,n.severity)},[\"Vulnerable Versions\"]:{label:\"Vulnerable Versions\",value:de.tuple(de.Type.RANGE,n.vulnerable_versions)},[\"Tree Versions\"]:{label:\"Tree Versions\",children:[...n.versions].sort(CBe.default.compare).map(u=>({value:de.tuple(de.Type.REFERENCE,u)}))},Dependents:{label:\"Dependents\",children:_e.sortMap(n.dependents,u=>W.stringifyLocator(u)).map(u=>({value:de.tuple(de.Type.LOCATOR,u)}))}}};return r}function EG(t,e,{all:r,environment:o}){let a=[],n=r?t.workspaces:[e],u=[\"all\",\"production\"].includes(o),A=[\"all\",\"development\"].includes(o);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!A:!u)||a.push({workspace:p,dependency:h});return a}function CG(t,e,{recursive:r}){let o=new Map,a=new Set,n=[],u=(A,p)=>{let h=t.storedResolutions.get(p.descriptorHash);if(typeof h>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");if(!a.has(h))a.add(h);else return;let E=t.storedPackages.get(h);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");if(W.ensureDevirtualizedLocator(E).reference.startsWith(\"npm:\")&&E.version!==null){let v=W.stringifyIdent(E),x=_e.getMapWithDefault(o,v);_e.getArrayWithDefault(x,E.version).push(A)}if(r)for(let v of E.dependencies.values())n.push([E,v])};for(let{workspace:A,dependency:p}of e)n.push([A.anchoredLocator,p]);for(;n.length>0;){let[A,p]=n.shift();u(A,p)}return o}var H0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Audit dependencies from all workspaces\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Audit transitive dependencies as well\"});this.environment=ge.String(\"--environment\",\"all\",{description:\"Which environments to cover\",validator:Ks(Qv)});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.noDeprecations=ge.Boolean(\"--no-deprecations\",!1,{description:\"Don't warn about deprecated packages\"});this.severity=ge.String(\"--severity\",\"info\",{description:\"Minimal severity requested for packages to be displayed\",validator:Ks(Fv)});this.excludes=ge.Array(\"--exclude\",[],{description:\"Array of glob patterns of packages to exclude from audit\"});this.ignores=ge.Array(\"--ignore\",[],{description:\"Array of glob patterns of advisory ID's to ignore in the audit report\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=EG(o,a,{all:this.all,environment:this.environment}),u=CG(o,n,{recursive:this.recursive}),A=Array.from(new Set([...r.get(\"npmAuditExcludePackages\"),...this.excludes])),p=Object.create(null);for(let[N,U]of u)A.some(J=>wG.default.isMatch(N,J))||(p[N]=[...U.keys()]);let h=$n.getAuditRegistry({configuration:r}),E,I=await AA.start({configuration:r,stdout:this.context.stdout},async()=>{let N=Zr.post(\"/-/npm/v1/security/advisories/bulk\",p,{authType:Zr.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([te,ae])=>{let fe=await Zr.getPackageMetadata(W.parseIdent(te),{project:o});return _e.mapAndFilter(ae,ce=>{let{deprecated:me}=fe.versions[ce];return me?[te,ce,me]:_e.mapAndFilter.skip})})),J=await N;for(let[te,ae,fe]of U.flat(1))Object.hasOwn(J,te)&&J[te].some(ce=>kr.satisfiesWithPrereleases(ae,ce.vulnerable_versions))||(J[te]??=[],J[te].push({id:`${te} (deprecation)`,title:fe.trim()||\"This package has been deprecated.\",severity:\"moderate\",vulnerable_versions:ae}));E=J});if(I.hasErrors())return I.exitCode();let v=mG(this.severity),x=Array.from(new Set([...r.get(\"npmAuditIgnoreAdvisories\"),...this.ignores])),C=Object.create(null);for(let[N,U]of Object.entries(E)){let J=U.filter(te=>!wG.default.isMatch(`${te.id}`,x)&&v.has(te.severity));J.length>0&&(C[N]=J.map(te=>{let ae=u.get(N);if(typeof ae>\"u\")throw new Error(\"Assertion failed: Expected the registry to only return packages that were requested\");let fe=[...ae.keys()].filter(me=>kr.satisfiesWithPrereleases(me,te.vulnerable_versions)),ce=new Map;for(let me of fe)for(let he of ae.get(me))ce.set(he.locatorHash,he);return{...te,versions:fe,dependents:[...ce.values()]}}))}let R=Object.keys(C).length>0;return R?($s.emitTree(yG(C),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Lt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async N=>{N.reportInfo(1,\"No audit suggestions\")}),R?1:0)}};H0.paths=[[\"npm\",\"audit\"]],H0.usage=nt.Usage({description:\"perform a vulnerability audit against the installed packages\",details:`\n      This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths).\n\n      For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \\`-A,--all\\`. To extend this search to both direct and transitive dependencies, use \\`-R,--recursive\\`.\n\n      Applying the \\`--severity\\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${aw.map(r=>`\\`${r}\\``).join(\", \")}.\n\n      If the \\`--json\\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages.\n\n      If certain packages produce false positives for a particular environment, the \\`--exclude\\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \\`npmAuditExcludePackages\\` option.\n\n      If particular advisories are needed to be ignored, the \\`--ignore\\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \\`npmAuditIgnoreAdvisories\\` option.\n\n      To understand the dependency tree requiring vulnerable packages, check the raw report with the \\`--json\\` flag or use \\`yarn why package\\` to get more information as to who depends on them.\n    `,examples:[[\"Checks for known security issues with the installed packages. The output is a list of known issues.\",\"yarn npm audit\"],[\"Audit dependencies in all workspaces\",\"yarn npm audit --all\"],[\"Limit auditing to `dependencies` (excludes `devDependencies`)\",\"yarn npm audit --environment production\"],[\"Show audit report as valid JSON\",\"yarn npm audit --json\"],[\"Audit all direct and transitive dependencies\",\"yarn npm audit --recursive\"],[\"Output moderate (or more severe) vulnerabilities\",\"yarn npm audit --severity moderate\"],[\"Exclude certain packages\",\"yarn npm audit --exclude package1 --exclude package2\"],[\"Ignore specific advisories\",\"yarn npm audit --ignore 1234567 --ignore 7654321\"]]});Ye();Ye();Pt();jt();var IG=$e(zn()),BG=ve(\"util\"),j0=class extends ut{constructor(){super(...arguments);this.fields=ge.String(\"-f,--fields\",{description:\"A comma-separated list of manifest fields that should be displayed\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.packages=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),a=typeof this.fields<\"u\"?new Set([\"name\",...this.fields.split(/\\s*,\\s*/)]):null,n=[],u=!1,A=await Lt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h===\".\"){let ae=o.topLevelWorkspace;if(!ae.manifest.name)throw new it(`Missing ${de.pretty(r,\"name\",de.Type.CODE)} field in ${ue.fromPortablePath(V.join(ae.cwd,dr.manifest))}`);E=W.makeDescriptor(ae.manifest.name,\"unknown\")}else E=W.parseDescriptor(h);let I=Zr.getIdentUrl(E),v=vG(await Zr.get(I,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:Zr.customPackageError})),x=Object.keys(v.versions).sort(IG.default.compareLoose),R=v[\"dist-tags\"].latest||x[x.length-1],N=kr.validRange(E.range);if(N){let ae=IG.default.maxSatisfying(x,N);ae!==null?R=ae:(p.reportWarning(0,`Unmet range ${W.prettyRange(r,E.range)}; falling back to the latest version`),u=!0)}else Object.hasOwn(v[\"dist-tags\"],E.range)?R=v[\"dist-tags\"][E.range]:E.range!==\"unknown\"&&(p.reportWarning(0,`Unknown tag ${W.prettyRange(r,E.range)}; falling back to the latest version`),u=!0);let U=v.versions[R],J={...v,...U,version:R,versions:x},te;if(a!==null){te={};for(let ae of a){let fe=J[ae];if(typeof fe<\"u\")te[ae]=fe;else{p.reportWarning(1,`The ${de.pretty(r,ae,de.Type.CODE)} field doesn't exist inside ${W.prettyIdent(r,E)}'s information`),u=!0;continue}}}else this.json||(delete J.dist,delete J.readme,delete J.users),te=J;p.reportJson(te),this.json||n.push(te)}});BG.inspect.styles.name=\"cyan\";for(let p of n)(p!==n[0]||u)&&this.context.stdout.write(`\n`),this.context.stdout.write(`${(0,BG.inspect)(p,{depth:1/0,colors:!0,compact:!1})}\n`);return A.exitCode()}};j0.paths=[[\"npm\",\"info\"]],j0.usage=nt.Usage({category:\"Npm-related commands\",description:\"show information about a package\",details:\"\\n      This command fetches information about a package from the npm registry and prints it in a tree format.\\n\\n      The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\\n\\n      Append `@<range>` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\\n\\n      If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\\n\\n      By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\\n    \",examples:[[\"Show all available information about react (except the `dist`, `readme`, and `users` fields)\",\"yarn npm info react\"],[\"Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)\",\"yarn npm info react --json\"],[\"Show all available information about react@16.12.0\",\"yarn npm info react@16.12.0\"],[\"Show all available information about react@next\",\"yarn npm info react@next\"],[\"Show the description of react\",\"yarn npm info react --fields description\"],[\"Show all available versions of react\",\"yarn npm info react --fields versions\"],[\"Show the readme of react\",\"yarn npm info react --fields readme\"],[\"Show a few fields of react\",\"yarn npm info react --fields homepage,repository\"]]});function vG(t){if(Array.isArray(t)){let e=[];for(let r of t)r=vG(r),r&&e.push(r);return e}else if(typeof t==\"object\"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith(\"_\"))continue;let o=vG(t[r]);o&&(e[r]=o)}return e}else return t||null}Ye();Ye();jt();var wBe=$e(f2()),q0=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Login to the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Login to the publish registry\"});this.alwaysAuth=ge.Boolean(\"--always-auth\",{description:\"Set the npmAlwaysAuth configuration\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Lt.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let u=await _vt({configuration:r,registry:o,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),A=await Mvt(o,u,r);return await Uvt(o,A,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,\"Successfully logged in\")})).exitCode()}};q0.paths=[[\"npm\",\"login\"]],q0.usage=nt.Usage({category:\"Npm-related commands\",description:\"store new login info to access the npm registry\",details:\"\\n      This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\\n\\n      Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n    \",examples:[[\"Login to the default registry\",\"yarn npm login\"],[\"Login to the registry linked to the @my-scope registry\",\"yarn npm login --scope my-scope\"],[\"Login to the publish registry for the current package\",\"yarn npm login --publish\"]]});async function $Q({scope:t,publish:e,configuration:r,cwd:o}){return t&&e?$n.getScopeRegistry(t,{configuration:r,type:$n.RegistryType.PUBLISH_REGISTRY}):t?$n.getScopeRegistry(t,{configuration:r}):e?$n.getPublishRegistry((await fC(r,o)).manifest,{configuration:r}):$n.getDefaultRegistry({configuration:r})}async function Mvt(t,e,r){let o=`/-/user/org.couchdb.user:${encodeURIComponent(e.name)}`,a={_id:`org.couchdb.user:${e.name}`,name:e.name,password:e.password,type:\"user\",roles:[],date:new Date().toISOString()},n={attemptedAs:e.name,configuration:r,registry:t,jsonResponse:!0,authType:Zr.AuthType.NO_AUTH};try{return(await Zr.put(o,a,n)).token}catch(E){if(!(E.originalError?.name===\"HTTPError\"&&E.originalError?.response.statusCode===409))throw E}let u={...n,authType:Zr.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${e.name}:${e.password}`).toString(\"base64\")}`}},A=await Zr.get(o,u);for(let[E,I]of Object.entries(A))(!a[E]||E===\"roles\")&&(a[E]=I);let p=`${o}/-rev/${a._rev}`;return(await Zr.put(p,a,u)).token}async function Uvt(t,e,{alwaysAuth:r,scope:o}){let a=u=>A=>{let p=_e.isIndexableObject(A)?A:{},h=p[u],E=_e.isIndexableObject(h)?h:{};return{...p,[u]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:e}}},n=o?{npmScopes:a(o)}:{npmRegistries:a(t)};return await Ke.updateHomeConfiguration(n)}async function _vt({configuration:t,registry:e,report:r,stdin:o,stdout:a}){r.reportInfo(0,`Logging in to ${de.pretty(t,e,de.Type.URL)}`);let n=!1;if(e.match(/^https:\\/\\/npm\\.pkg\\.github\\.com(\\/|$)/)&&(r.reportInfo(0,\"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions.\"),n=!0),r.reportSeparator(),t.env.YARN_IS_TEST_ENV)return{name:t.env.YARN_INJECT_NPM_USER||\"\",password:t.env.YARN_INJECT_NPM_PASSWORD||\"\"};let u=await(0,wBe.prompt)([{type:\"input\",name:\"name\",message:\"Username:\",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a},{type:\"password\",name:\"password\",message:n?\"Token:\":\"Password:\",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a}]);return r.reportSeparator(),u}Ye();Ye();jt();var lw=new Set([\"npmAuthIdent\",\"npmAuthToken\"]),G0=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Logout of the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Logout of the publish registry\"});this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Logout of all registries\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=async()=>{let n=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),u=await Ke.find(this.context.cwd,this.context.plugins),A=W.makeIdent(this.scope??null,\"pkg\");return!$n.getAuthConfiguration(n,{configuration:u,ident:A}).get(\"npmAuthToken\")};return(await Lt.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await jvt(),n.reportInfo(0,\"Successfully logged out from everything\")),this.scope){await IBe(\"npmScopes\",this.scope),await o()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,\"Scope authentication settings removed, but some other ones settings still apply to it\");return}let u=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish});await IBe(\"npmRegistries\",u),await o()?n.reportInfo(0,`Successfully logged out from ${u}`):n.reportWarning(0,\"Registry authentication settings removed, but some other ones settings still apply to it\")})).exitCode()}};G0.paths=[[\"npm\",\"logout\"]],G0.usage=nt.Usage({category:\"Npm-related commands\",description:\"logout of the npm registry\",details:\"\\n      This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\\n\\n      Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n\\n      Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\\n    \",examples:[[\"Logout of the default registry\",\"yarn npm logout\"],[\"Logout of the @my-scope scope\",\"yarn npm logout --scope my-scope\"],[\"Logout of the publish registry for the current package\",\"yarn npm logout --publish\"],[\"Logout of all registries\",\"yarn npm logout --all\"]]});function Hvt(t,e){let r=t[e];if(!_e.isIndexableObject(r))return!1;let o=new Set(Object.keys(r));if([...lw].every(n=>!o.has(n)))return!1;for(let n of lw)o.delete(n);if(o.size===0)return t[e]=void 0,!0;let a={...r};for(let n of lw)delete a[n];return t[e]=a,!0}async function jvt(){let t=e=>{let r=!1,o=_e.isIndexableObject(e)?{...e}:{};o.npmAuthToken&&(delete o.npmAuthToken,r=!0);for(let a of Object.keys(o))Hvt(o,a)&&(r=!0);if(Object.keys(o).length!==0)return r?o:e};return await Ke.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function IBe(t,e){return await Ke.updateHomeConfiguration({[t]:r=>{let o=_e.isIndexableObject(r)?r:{};if(!Object.hasOwn(o,e))return r;let a=o[e],n=_e.isIndexableObject(a)?a:{},u=new Set(Object.keys(n));if([...lw].every(p=>!u.has(p)))return r;for(let p of lw)u.delete(p);if(u.size===0)return Object.keys(o).length===1?void 0:{...o,[e]:void 0};let A={};for(let p of lw)A[p]=void 0;return{...o,[e]:{...n,...A}}}})}Ye();jt();var Y0=class extends ut{constructor(){super(...arguments);this.access=ge.String(\"--access\",{description:\"The access for the published package (public or restricted)\"});this.tag=ge.String(\"--tag\",\"latest\",{description:\"The tag on the registry that the package should be attached to\"});this.tolerateRepublish=ge.Boolean(\"--tolerate-republish\",!1,{description:\"Warn and exit when republishing an already existing version of a package\"});this.otp=ge.String(\"--otp\",{description:\"The OTP token to use with the command\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);if(a.manifest.private)throw new it(\"Private workspaces cannot be published\");if(a.manifest.name===null||a.manifest.version===null)throw new it(\"Workspaces must have valid names and versions to be published on an external registry\");await o.restoreInstallState();let n=a.manifest.name,u=a.manifest.version,A=$n.getPublishRegistry(a.manifest,{configuration:r});return(await Lt.start({configuration:r,stdout:this.context.stdout},async h=>{if(this.tolerateRepublish)try{let E=await Zr.get(Zr.getIdentUrl(n),{configuration:r,registry:A,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,\"versions\"))throw new zt(15,'Registry returned invalid data for - missing \"versions\" field');if(Object.hasOwn(E.versions,u)){h.reportWarning(0,`Registry already knows about version ${u}; skipping.`);return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await un.maybeExecuteWorkspaceLifecycleScript(a,\"prepublish\",{report:h}),await wA.prepareForPack(a,{report:h},async()=>{let E=await wA.genPackList(a);for(let R of E)h.reportInfo(null,R);let I=await wA.genPackStream(a,E),v=await _e.bufferStream(I),x=await ow.getGitHead(a.cwd),C=await ow.makePublishBody(a,v,{access:this.access,tag:this.tag,registry:A,gitHead:x});await Zr.put(Zr.getIdentUrl(n),C,{configuration:r,registry:A,ident:n,otp:this.otp,jsonResponse:!0})}),h.reportInfo(0,\"Package archive published\")})).exitCode()}};Y0.paths=[[\"npm\",\"publish\"]],Y0.usage=nt.Usage({category:\"Npm-related commands\",description:\"publish the active workspace to the npm registry\",details:'\\n      This command will pack the active workspace into a fresh archive and upload it to the npm registry.\\n\\n      The package will by default be attached to the `latest` tag on the registry, but this behavior can be overridden by using the `--tag` option.\\n\\n      Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka \"private packages\"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\\n    ',examples:[[\"Publish the active workspace\",\"yarn npm publish\"]]});Ye();jt();var BBe=$e(zn());Ye();Pt();jt();var W0=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=ge.String({required:!1})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n;if(typeof this.package<\"u\")n=W.parseIdent(this.package);else{if(!a)throw new rr(o.cwd,this.context.cwd);if(!a.manifest.name)throw new it(`Missing 'name' field in ${ue.fromPortablePath(V.join(a.cwd,dr.manifest))}`);n=a.manifest.name}let u=await Tv(n,r),p={children:_e.sortMap(Object.entries(u),([h])=>h).map(([h,E])=>({value:de.tuple(de.Type.RESOLUTION,{descriptor:W.makeDescriptor(n,h),locator:W.makeLocator(n,E)})}))};return $s.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};W0.paths=[[\"npm\",\"tag\",\"list\"]],W0.usage=nt.Usage({category:\"Npm-related commands\",description:\"list all dist-tags of a package\",details:`\n      This command will list all tags of a package from the npm registry.\n\n      If the package is not specified, Yarn will default to the current workspace.\n    `,examples:[[\"List all tags of package `my-pkg`\",\"yarn npm tag list my-pkg\"]]});async function Tv(t,e){let r=`/-/package${Zr.getIdentUrl(t)}/dist-tags`;return Zr.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Zr.customPackageError})}var K0=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=W.parseDescriptor(this.package,!0),u=n.range;if(!BBe.default.valid(u))throw new it(`The range ${de.pretty(r,n.range,de.Type.RANGE)} must be a valid semver version`);let A=$n.getPublishRegistry(a.manifest,{configuration:r}),p=de.pretty(r,n,de.Type.IDENT),h=de.pretty(r,u,de.Type.RANGE),E=de.pretty(r,this.tag,de.Type.CODE);return(await Lt.start({configuration:r,stdout:this.context.stdout},async v=>{let x=await Tv(n,r);Object.hasOwn(x,this.tag)&&x[this.tag]===u&&v.reportWarning(0,`Tag ${E} is already set to version ${h}`);let C=`/-/package${Zr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Zr.put(C,u,{configuration:r,registry:A,ident:n,jsonRequest:!0,jsonResponse:!0}),v.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};K0.paths=[[\"npm\",\"tag\",\"add\"]],K0.usage=nt.Usage({category:\"Npm-related commands\",description:\"add a tag for a specific version of a package\",details:`\n      This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten.\n    `,examples:[[\"Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`\",\"yarn npm tag add my-pkg@2.3.4-beta.4 beta\"]]});Ye();jt();var V0=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}async execute(){if(this.tag===\"latest\")throw new it(\"The 'latest' tag cannot be removed.\");let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=W.parseIdent(this.package),u=$n.getPublishRegistry(a.manifest,{configuration:r}),A=de.pretty(r,this.tag,de.Type.CODE),p=de.pretty(r,n,de.Type.IDENT),h=await Tv(n,r);if(!Object.hasOwn(h,this.tag))throw new it(`${A} is not a tag of package ${p}`);return(await Lt.start({configuration:r,stdout:this.context.stdout},async I=>{let v=`/-/package${Zr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Zr.del(v,{configuration:r,registry:u,ident:n,jsonResponse:!0}),I.reportInfo(0,`Tag ${A} removed from package ${p}`)})).exitCode()}};V0.paths=[[\"npm\",\"tag\",\"remove\"]],V0.usage=nt.Usage({category:\"Npm-related commands\",description:\"remove a tag from a package\",details:`\n      This command will remove a tag from a package from the npm registry.\n    `,examples:[[\"Remove the `beta` tag from package `my-pkg`\",\"yarn npm tag remove my-pkg beta\"]]});Ye();Ye();jt();var J0=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Print username for the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Print username for the publish registry\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o;return this.scope&&this.publish?o=$n.getScopeRegistry(this.scope,{configuration:r,type:$n.RegistryType.PUBLISH_REGISTRY}):this.scope?o=$n.getScopeRegistry(this.scope,{configuration:r}):this.publish?o=$n.getPublishRegistry((await fC(r,this.context.cwd)).manifest,{configuration:r}):o=$n.getDefaultRegistry({configuration:r}),(await Lt.start({configuration:r,stdout:this.context.stdout},async n=>{let u;try{u=await Zr.get(\"/-/whoami\",{configuration:r,registry:o,authType:Zr.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?W.makeIdent(this.scope,\"\"):void 0})}catch(A){if(A.response?.statusCode===401||A.response?.statusCode===403){n.reportError(41,\"Authentication failed - your credentials may have expired\");return}else throw A}n.reportInfo(0,u.username)})).exitCode()}};J0.paths=[[\"npm\",\"whoami\"]],J0.usage=nt.Usage({category:\"Npm-related commands\",description:\"display the name of the authenticated user\",details:\"\\n      Print the username associated with the current authentication settings to the standard output.\\n\\n      When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\\n\\n      When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\\n    \",examples:[[\"Print username for the default registry\",\"yarn npm whoami\"],[\"Print username for the registry on a given scope\",\"yarn npm whoami --scope company\"]]});var qvt={configuration:{npmPublishAccess:{description:\"Default access of the published packages\",type:\"STRING\",default:null},npmAuditExcludePackages:{description:\"Array of glob patterns of packages to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:\"Array of glob patterns of advisory IDs to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0}},commands:[H0,j0,q0,G0,Y0,K0,W0,V0,J0]},Gvt=qvt;var FG={};Vt(FG,{PatchCommand:()=>Z0,PatchCommitCommand:()=>X0,PatchFetcher:()=>Uv,PatchResolver:()=>_v,default:()=>lDt,patchUtils:()=>Pm});Ye();Ye();Pt();nA();var Pm={};Vt(Pm,{applyPatchFile:()=>tF,diffFolders:()=>kG,ensureUnpatchedDescriptor:()=>PG,ensureUnpatchedLocator:()=>nF,extractPackageToDisk:()=>xG,extractPatchFlags:()=>kBe,isParentRequired:()=>bG,isPatchDescriptor:()=>rF,isPatchLocator:()=>z0,loadPatchFiles:()=>Mv,makeDescriptor:()=>iF,makeLocator:()=>SG,makePatchHash:()=>QG,parseDescriptor:()=>Nv,parseLocator:()=>Ov,parsePatchFile:()=>Lv,unpatchDescriptor:()=>sDt,unpatchLocator:()=>oDt});Ye();Pt();Ye();Pt();var Yvt=/^@@ -(\\d+)(,(\\d+))? \\+(\\d+)(,(\\d+))? @@.*/;function cw(t){return V.relative(Bt.root,V.resolve(Bt.root,ue.toPortablePath(t)))}function Wvt(t){let e=t.trim().match(Yvt);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var Kvt=420,Vvt=493;var vBe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),Jvt=t=>({header:Wvt(t),parts:[]}),zvt={[\"@\"]:\"header\",[\"-\"]:\"deletion\",[\"+\"]:\"insertion\",[\" \"]:\"context\",[\"\\\\\"]:\"pragma\",undefined:\"context\"};function Xvt(t){let e=[],r=vBe(),o=\"parsing header\",a=null,n=null;function u(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function A(){u(),e.push(r),r=vBe()}for(let p=0;p<t.length;p++){let h=t[p];if(o===\"parsing header\")if(h.startsWith(\"@@\"))o=\"parsing hunks\",r.hunks=[],p-=1;else if(h.startsWith(\"diff --git \")){r&&r.diffLineFromPath&&A();let E=h.match(/^diff --git a\\/(.*?) b\\/(.*?)\\s*$/);if(!E)throw new Error(`Bad diff line: ${h}`);r.diffLineFromPath=E[1],r.diffLineToPath=E[2]}else if(h.startsWith(\"old mode \"))r.oldMode=h.slice(9).trim();else if(h.startsWith(\"new mode \"))r.newMode=h.slice(9).trim();else if(h.startsWith(\"deleted file mode \"))r.deletedFileMode=h.slice(18).trim();else if(h.startsWith(\"new file mode \"))r.newFileMode=h.slice(14).trim();else if(h.startsWith(\"rename from \"))r.renameFrom=h.slice(12).trim();else if(h.startsWith(\"rename to \"))r.renameTo=h.slice(10).trim();else if(h.startsWith(\"index \")){let E=h.match(/(\\w+)\\.\\.(\\w+)/);if(!E)continue;r.beforeHash=E[1],r.afterHash=E[2]}else h.startsWith(\"semver exclusivity \")?r.semverExclusivity=h.slice(19).trim():h.startsWith(\"--- \")?r.fromPath=h.slice(6).trim():h.startsWith(\"+++ \")&&(r.toPath=h.slice(6).trim());else{let E=zvt[h[0]]||null;switch(E){case\"header\":u(),a=Jvt(h);break;case null:o=\"parsing header\",A(),p-=1;break;case\"pragma\":{if(!h.startsWith(\"\\\\ No newline at end of file\"))throw new Error(`Unrecognized pragma in patch file: ${h}`);if(!n)throw new Error(\"Bad parser state: No newline at EOF pragma encountered without context\");n.noNewlineAtEndOfFile=!0}break;case\"context\":case\"deletion\":case\"insertion\":{if(!a)throw new Error(\"Bad parser state: Hunk lines encountered before hunk header\");n&&n.type!==E&&(a.parts.push(n),n=null),n||(n={type:E,lines:[],noNewlineAtEndOfFile:!1}),n.lines.push(h.slice(1))}break;default:_e.assertNever(E);break}}}A();for(let{hunks:p}of e)if(p)for(let h of p)$vt(h);return e}function Zvt(t){let e=[];for(let r of t){let{semverExclusivity:o,diffLineFromPath:a,diffLineToPath:n,oldMode:u,newMode:A,deletedFileMode:p,newFileMode:h,renameFrom:E,renameTo:I,beforeHash:v,afterHash:x,fromPath:C,toPath:R,hunks:N}=r,U=E?\"rename\":p?\"file deletion\":h?\"file creation\":N&&N.length>0?\"patch\":\"mode change\",J=null;switch(U){case\"rename\":{if(!E||!I)throw new Error(\"Bad parser state: rename from & to not given\");e.push({type:\"rename\",semverExclusivity:o,fromPath:cw(E),toPath:cw(I)}),J=I}break;case\"file deletion\":{let te=a||C;if(!te)throw new Error(\"Bad parse state: no path given for file deletion\");e.push({type:\"file deletion\",semverExclusivity:o,hunk:N&&N[0]||null,path:cw(te),mode:eF(p),hash:v})}break;case\"file creation\":{let te=n||R;if(!te)throw new Error(\"Bad parse state: no path given for file creation\");e.push({type:\"file creation\",semverExclusivity:o,hunk:N&&N[0]||null,path:cw(te),mode:eF(h),hash:x})}break;case\"patch\":case\"mode change\":J=R||n;break;default:_e.assertNever(U);break}J&&u&&A&&u!==A&&e.push({type:\"mode change\",semverExclusivity:o,path:cw(J),oldMode:eF(u),newMode:eF(A)}),J&&N&&N.length&&e.push({type:\"patch\",semverExclusivity:o,path:cw(J),hunks:N,beforeHash:v,afterHash:x})}if(e.length===0)throw new Error(\"Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string\");return e}function eF(t){let e=parseInt(t,8)&511;if(e!==Kvt&&e!==Vvt)throw new Error(`Unexpected file mode string: ${t}`);return e}function Lv(t){let e=t.split(/\\n/g);return e[e.length-1]===\"\"&&e.pop(),Zvt(Xvt(e))}function $vt(t){let e=0,r=0;for(let{type:o,lines:a}of t.parts)switch(o){case\"context\":r+=a.length,e+=a.length;break;case\"deletion\":e+=a.length;break;case\"insertion\":r+=a.length;break;default:_e.assertNever(o);break}if(e!==t.header.original.length||r!==t.header.patched.length){let o=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${o(t.header.original.length)} ${o(t.header.patched.length)} @@, got @@ ${o(e)} ${o(r)} @@)`)}}Ye();Pt();var uw=class extends Error{constructor(r,o){super(`Cannot apply hunk #${r+1}`);this.hunk=o}};async function Aw(t,e,r){let o=await t.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await t.lutimesPromise(e,o.atime,o.mtime)}async function tF(t,{baseFs:e=new Tn,dryRun:r=!1,version:o=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&o!==null&&!kr.satisfiesWithPrereleases(o,a.semverExclusivity)))switch(a.type){case\"file deletion\":if(r){if(!e.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await Aw(e,V.dirname(a.path),async()=>{await e.unlinkPromise(a.path)});break;case\"rename\":if(r){if(!e.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await Aw(e,V.dirname(a.fromPath),async()=>{await Aw(e,V.dirname(a.toPath),async()=>{await Aw(e,a.fromPath,async()=>(await e.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case\"file creation\":if(r){if(e.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(`\n`)+(a.hunk.parts[0].noNewlineAtEndOfFile?\"\":`\n`):\"\";await e.mkdirpPromise(V.dirname(a.path),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,vi.SAFE_TIME,vi.SAFE_TIME)}break;case\"patch\":await Aw(e,a.path,async()=>{await rDt(a,{baseFs:e,dryRun:r})});break;case\"mode change\":{let u=(await e.statPromise(a.path)).mode;if(DBe(a.newMode)!==DBe(u))continue;await Aw(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:_e.assertNever(a);break}}function DBe(t){return(t&64)>0}function PBe(t){return t.replace(/\\s+$/,\"\")}function tDt(t,e){return PBe(t)===PBe(e)}async function rDt({hunks:t,path:e},{baseFs:r,dryRun:o=!1}){let a=await r.statSync(e).mode,u=(await r.readFileSync(e,\"utf8\")).split(/\\n/),A=[],p=0,h=0;for(let I of t){let v=Math.max(h,I.header.patched.start+p),x=Math.max(0,v-h),C=Math.max(0,u.length-v-I.header.original.length),R=Math.max(x,C),N=0,U=0,J=null;for(;N<=R;){if(N<=x&&(U=v-N,J=SBe(I,u,U),J!==null)){N=-N;break}if(N<=C&&(U=v+N,J=SBe(I,u,U),J!==null))break;N+=1}if(J===null)throw new uw(t.indexOf(I),I);A.push(J),p+=N,h=U+I.header.original.length}if(o)return;let E=0;for(let I of A)for(let v of I)switch(v.type){case\"splice\":{let x=v.index+E;u.splice(x,v.numToDelete,...v.linesToInsert),E+=v.linesToInsert.length-v.numToDelete}break;case\"pop\":u.pop();break;case\"push\":u.push(v.line);break;default:_e.assertNever(v);break}await r.writeFilePromise(e,u.join(`\n`),{mode:a})}function SBe(t,e,r){let o=[];for(let a of t.parts)switch(a.type){case\"context\":case\"deletion\":{for(let n of a.lines){let u=e[r];if(u==null||!tDt(u,n))return null;r+=1}a.type===\"deletion\"&&(o.push({type:\"splice\",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&o.push({type:\"push\",line:\"\"}))}break;case\"insertion\":o.push({type:\"splice\",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&o.push({type:\"pop\"});break;default:_e.assertNever(a.type);break}return o}var iDt=/^builtin<([^>]+)>$/;function fw(t,e){let{protocol:r,source:o,selector:a,params:n}=W.parseRange(t);if(r!==\"patch:\")throw new Error(\"Invalid patch range\");if(o===null)throw new Error(\"Patch locators must explicitly define their source\");let u=a?a.split(/&/).map(E=>ue.toPortablePath(E)):[],A=n&&typeof n.locator==\"string\"?W.parseLocator(n.locator):null,p=n&&typeof n.version==\"string\"?n.version:null,h=e(o);return{parentLocator:A,sourceItem:h,patchPaths:u,sourceVersion:p}}function rF(t){return t.range.startsWith(\"patch:\")}function z0(t){return t.reference.startsWith(\"patch:\")}function Nv(t){let{sourceItem:e,...r}=fw(t.range,W.parseDescriptor);return{...r,sourceDescriptor:e}}function Ov(t){let{sourceItem:e,...r}=fw(t.reference,W.parseLocator);return{...r,sourceLocator:e}}function sDt(t){let{sourceItem:e}=fw(t.range,W.parseDescriptor);return e}function oDt(t){let{sourceItem:e}=fw(t.reference,W.parseLocator);return e}function PG(t){if(!rF(t))return t;let{sourceItem:e}=fw(t.range,W.parseDescriptor);return e}function nF(t){if(!z0(t))return t;let{sourceItem:e}=fw(t.reference,W.parseLocator);return e}function bBe({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:o,patchHash:a},n){let u=t!==null?{locator:W.stringifyLocator(t)}:{},A=typeof o<\"u\"?{version:o}:{},p=typeof a<\"u\"?{hash:a}:{};return W.makeRange({protocol:\"patch:\",source:n(e),selector:r.join(\"&\"),params:{...A,...p,...u}})}function iF(t,{parentLocator:e,sourceDescriptor:r,patchPaths:o}){return W.makeDescriptor(t,bBe({parentLocator:e,sourceItem:r,patchPaths:o},W.stringifyDescriptor))}function SG(t,{parentLocator:e,sourcePackage:r,patchPaths:o,patchHash:a}){return W.makeLocator(t,bBe({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:o,patchHash:a},W.stringifyLocator))}function xBe({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:o},a){let n=a.lastIndexOf(\"!\");n!==-1&&(a=a.slice(n+1));let u=a.match(iDt);return u!==null?o(u[1]):a.startsWith(\"~/\")?r(a.slice(2)):V.isAbsolute(a)?t(a):e(a)}function kBe(t){let e=t.lastIndexOf(\"!\");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has(\"optional\")}}function bG(t){return xBe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function Mv(t,e,r){let o=t!==null?await r.fetcher.fetch(t,r):null,a=o&&o.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,o.localPath)}:o;o&&o!==a&&o.releaseFs&&o.releaseFs();let n=await _e.releaseAfterUseAsync(async()=>await Promise.all(e.map(async u=>{let A=kBe(u),p=await xBe({onAbsolute:async h=>await oe.readFilePromise(h,\"utf8\"),onRelative:async h=>{if(a===null)throw new Error(\"Assertion failed: The parent locator should have been fetched\");return await a.packageFs.readFilePromise(V.join(a.prefixPath,h),\"utf8\")},onProject:async h=>await oe.readFilePromise(V.join(r.project.cwd,h),\"utf8\"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},u);return{...A,source:p}})));for(let u of n)typeof u.source==\"string\"&&(u.source=u.source.replace(/\\r\\n?/g,`\n`));return n}async function xG(t,{cache:e,project:r}){let o=r.storedPackages.get(t.locatorHash);if(typeof o>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let a=nF(t),n=r.storedChecksums,u=new Qi,A=await oe.mktempPromise(),p=V.join(A,\"source\"),h=V.join(A,\"user\"),E=V.join(A,\".yarn-patch.json\"),I=r.configuration.makeFetcher(),v=[];try{let x,C;if(t.locatorHash===a.locatorHash){let R=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u});v.push(()=>R.releaseFs?.()),x=R,C=R}else x=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u}),v.push(()=>x.releaseFs?.()),C=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u}),v.push(()=>C.releaseFs?.());await Promise.all([oe.copyPromise(p,x.prefixPath,{baseFs:x.packageFs}),oe.copyPromise(h,C.prefixPath,{baseFs:C.packageFs}),oe.writeJsonPromise(E,{locator:W.stringifyLocator(t),version:o.version})])}finally{for(let x of v)x()}return oe.detachTemp(A),h}async function kG(t,e){let r=ue.fromPortablePath(t).replace(/\\\\/g,\"/\"),o=ue.fromPortablePath(e).replace(/\\\\/g,\"/\"),{stdout:a,stderr:n}=await Ur.execvp(\"git\",[\"-c\",\"core.safecrlf=false\",\"diff\",\"--src-prefix=a/\",\"--dst-prefix=b/\",\"--ignore-cr-at-eol\",\"--full-index\",\"--no-index\",\"--no-renames\",\"--text\",r,o],{cwd:ue.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:\"1\",HOME:\"\",XDG_CONFIG_HOME:\"\",USERPROFILE:\"\"}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH.\nThe following error was reported by 'git':\n${n}`);let u=r.startsWith(\"/\")?A=>A.slice(1):A=>A;return a.replace(new RegExp(`(a|b)(${_e.escapeRegExp(`/${u(r)}/`)})`,\"g\"),\"$1/\").replace(new RegExp(`(a|b)${_e.escapeRegExp(`/${u(o)}/`)}`,\"g\"),\"$1/\").replace(new RegExp(_e.escapeRegExp(`${r}/`),\"g\"),\"\").replace(new RegExp(_e.escapeRegExp(`${o}/`),\"g\"),\"\")}function QG(t,e){let r=[];for(let{source:o}of t){if(o===null)continue;let a=Lv(o);for(let n of a){let{semverExclusivity:u,...A}=n;u!==null&&e!==null&&!kr.satisfiesWithPrereleases(e,u)||r.push(JSON.stringify(A))}}return wn.makeHash(`${3}`,...r).slice(0,6)}Ye();function QBe(t,{configuration:e,report:r}){for(let o of t.parts)for(let a of o.lines)switch(o.type){case\"context\":r.reportInfo(null,`  ${de.pretty(e,a,\"grey\")}`);break;case\"deletion\":r.reportError(28,`- ${de.pretty(e,a,de.Type.REMOVED)}`);break;case\"insertion\":r.reportError(28,`+ ${de.pretty(e,a,de.Type.ADDED)}`);break;default:_e.assertNever(o.type)}}var Uv=class{supports(e,r){return!!z0(e)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async patchPackage(e,r){let{parentLocator:o,sourceLocator:a,sourceVersion:n,patchPaths:u}=Ov(e),A=await Mv(o,u,r),p=await oe.mktempPromise(),h=V.join(p,\"current.zip\"),E=await r.fetcher.fetch(a,r),I=W.getIdentVendorPath(e),v=new zi(h,{create:!0,level:r.project.configuration.get(\"compressionLevel\")});await _e.releaseAfterUseAsync(async()=>{await v.copyPromise(I,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),v.saveAndClose();for(let{source:x,optional:C}of A){if(x===null)continue;let R=new zi(h,{level:r.project.configuration.get(\"compressionLevel\")}),N=new gn(V.resolve(Bt.root,I),{baseFs:R});try{await tF(Lv(x),{baseFs:N,version:n})}catch(U){if(!(U instanceof uw))throw U;let J=r.project.configuration.get(\"enableInlineHunks\"),te=!J&&!C?\" (set enableInlineHunks for details)\":\"\",ae=`${W.prettyLocator(r.project.configuration,e)}: ${U.message}${te}`,fe=ce=>{!J||QBe(U.hunk,{configuration:r.project.configuration,report:ce})};if(R.discardAndClose(),C){r.report.reportWarningOnce(66,ae,{reportExtra:fe});continue}else throw new zt(66,ae,fe)}R.saveAndClose()}return new zi(h,{level:r.project.configuration.get(\"compressionLevel\")})}};Ye();var _v=class{supportsDescriptor(e,r){return!!rF(e)}supportsLocator(e,r){return!!z0(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){let{patchPaths:a}=Nv(e);return a.every(n=>!bG(n))?e:W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:o}=Nv(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(o)}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{parentLocator:a,patchPaths:n}=Nv(e),u=await Mv(a,n,o.fetchOptions),A=r.sourceDescriptor;if(typeof A>\"u\")throw new Error(\"Assertion failed: The dependency should have been resolved\");let p=QG(u,A.version);return[SG(e,{parentLocator:a,sourcePackage:A,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:o}=Ov(e);return{...await r.resolver.resolve(o,r),...e}}};Ye();Pt();jt();var X0=class extends ut{constructor(){super(...arguments);this.save=ge.Boolean(\"-s,--save\",!1,{description:\"Add the patch to your resolution entries\"});this.patchFolder=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=V.resolve(this.context.cwd,ue.toPortablePath(this.patchFolder)),u=V.join(n,\"../source\"),A=V.join(n,\"../.yarn-patch.json\");if(!oe.existsSync(u))throw new it(\"The argument folder didn't get created by 'yarn patch'\");let p=await kG(u,n),h=await oe.readJsonPromise(A),E=W.parseLocator(h.locator,!0);if(!o.storedPackages.has(E.locatorHash))throw new it(\"No package found in the project for the given locator\");if(!this.save){this.context.stdout.write(p);return}let I=r.get(\"patchFolder\"),v=V.join(I,`${W.slugifyLocator(E)}.patch`);await oe.mkdirPromise(I,{recursive:!0}),await oe.writeFilePromise(v,p);let x=[],C=new Map;for(let R of o.storedPackages.values()){if(W.isVirtualLocator(R))continue;let N=R.dependencies.get(E.identHash);if(!N)continue;let U=W.ensureDevirtualizedDescriptor(N),J=PG(U),te=o.storedResolutions.get(J.descriptorHash);if(!te)throw new Error(\"Assertion failed: Expected the resolution to have been registered\");if(!o.storedPackages.get(te))throw new Error(\"Assertion failed: Expected the package to have been registered\");let fe=o.tryWorkspaceByLocator(R);if(fe)x.push(fe);else{let ce=o.originalPackages.get(R.locatorHash);if(!ce)throw new Error(\"Assertion failed: Expected the original package to have been registered\");let me=ce.dependencies.get(N.identHash);if(!me)throw new Error(\"Assertion failed: Expected the original dependency to have been registered\");C.set(me.descriptorHash,me)}}for(let R of x)for(let N of Ot.hardDependencies){let U=R.manifest[N].get(E.identHash);if(!U)continue;let J=iF(U,{parentLocator:null,sourceDescriptor:W.convertLocatorToDescriptor(E),patchPaths:[V.join(dr.home,V.relative(o.cwd,v))]});R.manifest[N].set(U.identHash,J)}for(let R of C.values()){let N=iF(R,{parentLocator:null,sourceDescriptor:W.convertLocatorToDescriptor(E),patchPaths:[V.join(dr.home,V.relative(o.cwd,v))]});o.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:W.stringifyIdent(N),description:R.range}},reference:N.range})}await o.persist()}};X0.paths=[[\"patch-commit\"]],X0.usage=nt.Usage({description:\"generate a patch out of a directory\",details:\"\\n      By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\\n\\n      With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\\n\\n      Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\\n    \"});Ye();Pt();jt();var Z0=class extends ut{constructor(){super(...arguments);this.update=ge.Boolean(\"-u,--update\",!1,{description:\"Reapply local patches that already apply to this packages\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let u=W.parseLocator(this.package);if(u.reference===\"unknown\"){let A=_e.mapAndFilter([...o.storedPackages.values()],p=>p.identHash!==u.identHash?_e.mapAndFilter.skip:W.isVirtualLocator(p)?_e.mapAndFilter.skip:z0(p)!==this.update?_e.mapAndFilter.skip:p);if(A.length===0)throw new it(\"No package found in the project for the given locator\");if(A.length>1)throw new it(`Multiple candidate packages found; explicitly choose one of them (use \\`yarn why <package>\\` to get more information as to who depends on them):\n${A.map(p=>`\n- ${W.prettyLocator(r,p)}`).join(\"\")}`);u=A[0]}if(!o.storedPackages.has(u.locatorHash))throw new it(\"No package found in the project for the given locator\");await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=nF(u),h=await xG(u,{cache:n,project:o});A.reportJson({locator:W.stringifyLocator(p),path:ue.fromPortablePath(h)});let E=this.update?\" along with its current modifications\":\"\";A.reportInfo(0,`Package ${W.prettyLocator(r,p)} got extracted with success${E}!`),A.reportInfo(0,`You can now edit the following folder: ${de.pretty(r,ue.fromPortablePath(h),\"magenta\")}`),A.reportInfo(0,`Once you are done run ${de.pretty(r,`yarn patch-commit -s ${process.platform===\"win32\"?'\"':\"\"}${ue.fromPortablePath(h)}${process.platform===\"win32\"?'\"':\"\"}`,\"cyan\")} and Yarn will store a patchfile based on your changes.`)})}};Z0.paths=[[\"patch\"]],Z0.usage=nt.Usage({description:\"prepare a package for patching\",details:\"\\n      This command will cause a package to be extracted in a temporary directory intended to be editable at will.\\n\\n      Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\\n\\n      Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\\n    \"});var aDt={configuration:{enableInlineHunks:{description:\"If true, the installs will print unmatched patch hunks\",type:\"BOOLEAN\",default:!1},patchFolder:{description:\"Folder where the patch files must be written\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/patches\"}},commands:[X0,Z0],fetchers:[Uv],resolvers:[_v]},lDt=aDt;var LG={};Vt(LG,{PnpmLinker:()=>Hv,default:()=>pDt});Ye();Pt();jt();var Hv=class{getCustomDataKey(){return JSON.stringify({name:\"PnpmLinker\",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the pnpm linker to be enabled\");let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>\"u\")throw new it(`Couldn't find ${W.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\\/node_modules\\/(@[^/]*\\/)?[^/]+)(\\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let u=e,A=e;do{A=u,u=V.dirname(A);let p=a.locatorByPath.get(A);if(p)return p}while(u!==A);return null}makeInstaller(e){return new RG(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"pnpm\"}},RG=class{constructor(e){this.opts=e;this.asyncActions=new _e.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=PD(oe,{indexPath:V.join(e.project.configuration.get(\"globalFolder\"),\"index\")})}attachCustomData(e){}async installPackage(e,r,o){switch(e.linkType){case\"SOFT\":return this.installPackageSoft(e,r,o);case\"HARD\":return this.installPackageHard(e,r,o)}throw new Error(\"Assertion failed: Unsupported package link type\")}async installPackageSoft(e,r,o){let a=V.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?V.join(a,dr.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(e,r,o){let a=cDt(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,W.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await oe.mkdirPromise(n,{recursive:!0}),await oe.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:\"HardlinkFromIndex\",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let A=W.isVirtualLocator(e)?W.devirtualizeLocator(e):e,p={manifest:await Ot.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Ot,misc:{hasBindingGyp:yA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(A,e.version),E=yA.extractBuildRequest(e,p,h,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:E}}async attachInternalDependencies(e,r){if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\"||!FBe(e,{project:this.opts.project}))return;let o=this.customData.pathsByLocator.get(e.locatorHash);if(typeof o>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${W.stringifyLocator(e)})`);let{dependenciesLocation:a}=o;!a||this.asyncActions.reduce(e.locatorHash,async n=>{await oe.mkdirPromise(a,{recursive:!0});let u=await uDt(a),A=new Map(u),p=[n],h=(I,v)=>{let x=v;FBe(v,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,\"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies\"),x=W.devirtualizeLocator(v));let C=this.customData.pathsByLocator.get(x.locatorHash);if(typeof C>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${W.stringifyLocator(v)})`);let R=W.stringifyIdent(I),N=V.join(a,R),U=V.relative(V.dirname(N),C.packageLocation),J=A.get(R);A.delete(R),p.push(Promise.resolve().then(async()=>{if(J){if(J.isSymbolicLink()&&await oe.readlinkPromise(N)===U)return;await oe.removePromise(N)}await oe.mkdirpPromise(V.dirname(N)),process.platform==\"win32\"&&this.opts.project.configuration.get(\"winLinkType\")===\"junctions\"?await oe.symlinkPromise(C.packageLocation,N,\"junction\"):await oe.symlinkPromise(U,N)}))},E=!1;for(let[I,v]of r)I.identHash===e.identHash&&(E=!0),h(I,v);!E&&!this.opts.project.tryWorkspaceByLocator(e)&&h(W.convertLocatorToDescriptor(e),e),p.push(ADt(a,A)),await Promise.all(p)})}async attachExternalDependents(e,r){throw new Error(\"External dependencies haven't been implemented for the pnpm linker\")}async finalizeInstall(){let e=TBe(this.opts.project);if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\")await oe.removePromise(e);else{let r;try{r=new Set(await oe.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:o}of this.customData.pathsByLocator.values()){if(!o)continue;let a=V.contains(e,o);if(a===null)continue;let[n]=a.split(V.sep);r.delete(n)}await Promise.all([...r].map(async o=>{await oe.removePromise(V.join(e,o))}))}return await this.asyncActions.wait(),await TG(e),this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\"&&await TG(RBe(this.opts.project)),{customData:this.customData}}};function RBe(t){return V.join(t.cwd,dr.nodeModules)}function TBe(t){return V.join(RBe(t),\".store\")}function cDt(t,{project:e}){let r=W.slugifyLocator(t),o=TBe(e),a=V.join(o,r,\"package\"),n=V.join(o,r,dr.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function FBe(t,{project:e}){return!W.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function uDt(t){let e=new Map,r=[];try{r=await oe.readdirPromise(t,{withFileTypes:!0})}catch(o){if(o.code!==\"ENOENT\")throw o}try{for(let o of r)if(!o.name.startsWith(\".\"))if(o.name.startsWith(\"@\")){let a=await oe.readdirPromise(V.join(t,o.name),{withFileTypes:!0});if(a.length===0)e.set(o.name,o);else for(let n of a)e.set(`${o.name}/${n.name}`,n)}else e.set(o.name,o)}catch(o){if(o.code!==\"ENOENT\")throw o}return e}async function ADt(t,e){let r=[],o=new Set;for(let a of e.keys()){r.push(oe.removePromise(V.join(t,a)));let n=W.tryParseIdent(a)?.scope;n&&o.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...o].map(a=>TG(V.join(t,a)))))}async function TG(t){try{await oe.rmdirPromise(t)}catch(e){if(e.code!==\"ENOENT\"&&e.code!==\"ENOTEMPTY\")throw e}}var fDt={linkers:[Hv]},pDt=fDt;var jG={};Vt(jG,{StageCommand:()=>$0,default:()=>vDt,stageUtils:()=>oF});Ye();Pt();jt();Ye();Pt();var oF={};Vt(oF,{ActionType:()=>NG,checkConsensus:()=>sF,expandDirectory:()=>UG,findConsensus:()=>_G,findVcsRoot:()=>OG,genCommitMessage:()=>HG,getCommitPrefix:()=>LBe,isYarnFile:()=>MG});Pt();var NG=(n=>(n[n.CREATE=0]=\"CREATE\",n[n.DELETE=1]=\"DELETE\",n[n.ADD=2]=\"ADD\",n[n.REMOVE=3]=\"REMOVE\",n[n.MODIFY=4]=\"MODIFY\",n))(NG||{});async function OG(t,{marker:e}){do if(!oe.existsSync(V.join(t,e)))t=V.dirname(t);else return t;while(t!==\"/\");return null}function MG(t,{roots:e,names:r}){if(r.has(V.basename(t)))return!0;do if(!e.has(t))t=V.dirname(t);else return!0;while(t!==\"/\");return!1}function UG(t){let e=[],r=[t];for(;r.length>0;){let o=r.pop(),a=oe.readdirSync(o);for(let n of a){let u=V.resolve(o,n);oe.lstatSync(u).isDirectory()?r.push(u):e.push(u)}}return e}function sF(t,e){let r=0,o=0;for(let a of t)a!==\"wip\"&&(e.test(a)?r+=1:o+=1);return r>=o}function _G(t){let e=sF(t,/^(\\w\\(\\w+\\):\\s*)?\\w+s/),r=sF(t,/^(\\w\\(\\w+\\):\\s*)?[A-Z]/),o=sF(t,/^\\w\\(\\w+\\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:o}}function LBe(t){return t.useComponent?\"chore(yarn): \":\"\"}var hDt=new Map([[0,\"create\"],[1,\"delete\"],[2,\"add\"],[3,\"remove\"],[4,\"update\"]]);function HG(t,e){let r=LBe(t),o=[],a=e.slice().sort((n,u)=>n[0]-u[0]);for(;a.length>0;){let[n,u]=a.shift(),A=hDt.get(n);t.useUpperCase&&o.length===0&&(A=`${A[0].toUpperCase()}${A.slice(1)}`),t.useThirdPerson&&(A+=\"s\");let p=[u];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=\" (and one other)\":p.length>1&&(h+=` (and ${p.length} others)`),o.push(`${A} ${h}`)}return`${r}${o.join(\", \")}`}var gDt=\"Commit generated via `yarn stage`\",dDt=11;async function NBe(t){let{code:e,stdout:r}=await Ur.execvp(\"git\",[\"log\",\"-1\",\"--pretty=format:%H\"],{cwd:t});return e===0?r.trim():null}async function mDt(t,e){let r=[],o=e.filter(h=>V.basename(h.path)===\"package.json\");for(let{action:h,path:E}of o){let I=V.relative(t,E);if(h===4){let v=await NBe(t),{stdout:x}=await Ur.execvp(\"git\",[\"show\",`${v}:${I}`],{cwd:t,strict:!0}),C=await Ot.fromText(x),R=await Ot.fromFile(E),N=new Map([...R.dependencies,...R.devDependencies]),U=new Map([...C.dependencies,...C.devDependencies]);for(let[J,te]of U){let ae=W.stringifyIdent(te),fe=N.get(J);fe?fe.range!==te.range&&r.push([4,`${ae} to ${fe.range}`]):r.push([3,ae])}for(let[J,te]of N)U.has(J)||r.push([2,W.stringifyIdent(te)])}else if(h===0){let v=await Ot.fromFile(E);v.name?r.push([0,W.stringifyIdent(v.name)]):r.push([0,\"a package\"])}else if(h===1){let v=await NBe(t),{stdout:x}=await Ur.execvp(\"git\",[\"show\",`${v}:${I}`],{cwd:t,strict:!0}),C=await Ot.fromText(x);C.name?r.push([1,W.stringifyIdent(C.name)]):r.push([1,\"a package\"])}else throw new Error(\"Assertion failed: Unsupported action type\")}let{code:a,stdout:n}=await Ur.execvp(\"git\",[\"log\",`-${dDt}`,\"--pretty=format:%s\"],{cwd:t}),u=a===0?n.split(/\\n/g).filter(h=>h!==\"\"):[],A=_G(u);return HG(A,r)}var yDt={[0]:[\" A \",\"?? \"],[4]:[\" M \"],[1]:[\" D \"]},EDt={[0]:[\"A  \"],[4]:[\"M  \"],[1]:[\"D  \"]},OBe={async findRoot(t){return await OG(t,{marker:\".git\"})},async filterChanges(t,e,r,o){let{stdout:a}=await Ur.execvp(\"git\",[\"status\",\"-s\"],{cwd:t,strict:!0}),n=a.toString().split(/\\n/g),u=o?.staged?EDt:yDt;return[].concat(...n.map(p=>{if(p===\"\")return[];let h=p.slice(0,3),E=V.resolve(t,p.slice(3));if(!o?.staged&&h===\"?? \"&&p.endsWith(\"/\"))return UG(E).map(I=>({action:0,path:I}));{let v=[0,4,1].find(x=>u[x].includes(h));return v!==void 0?[{action:v,path:E}]:[]}})).filter(p=>MG(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await mDt(t,e)},async makeStage(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Ur.execvp(\"git\",[\"add\",\"--\",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let o=e.map(a=>ue.fromPortablePath(a.path));await Ur.execvp(\"git\",[\"add\",\"-N\",\"--\",...o],{cwd:t,strict:!0}),await Ur.execvp(\"git\",[\"commit\",\"-m\",`${r}\n\n${gDt}\n`,\"--\",...o],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Ur.execvp(\"git\",[\"reset\",\"HEAD\",\"--\",...r],{cwd:t,strict:!0})}};var CDt=[OBe],$0=class extends ut{constructor(){super(...arguments);this.commit=ge.Boolean(\"-c,--commit\",!1,{description:\"Commit the staged files\"});this.reset=ge.Boolean(\"-r,--reset\",!1,{description:\"Remove all files from the staging area\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"Print the commit message and the list of modified files without staging / committing\"});this.update=ge.Boolean(\"-u,--update\",!1,{hidden:!0})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),{driver:a,root:n}=await wDt(o.cwd),u=[r.get(\"cacheFolder\"),r.get(\"globalFolder\"),r.get(\"virtualFolder\"),r.get(\"yarnPath\")];await r.triggerHook(I=>I.populateYarnPaths,o,I=>{u.push(I)});let A=new Set;for(let I of u)for(let v of IDt(n,I))A.add(v);let p=new Set([r.get(\"rcFilename\"),dr.lockfile,dr.manifest]),h=await a.filterChanges(n,A,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E}\n`);else for(let I of h)this.context.stdout.write(`${ue.fromPortablePath(I.path)}\n`);else if(this.reset){let I=await a.filterChanges(n,A,p,{staged:!0});I.length===0?this.context.stdout.write(\"No staged changes found!\"):await a.makeReset(n,I)}else h.length===0?this.context.stdout.write(\"No changes found!\"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};$0.paths=[[\"stage\"]],$0.usage=nt.Usage({description:\"add all yarn files to your vcs\",details:\"\\n      This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\\n\\n      Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\\n\\n      Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\\n    \",examples:[[\"Adds all modified project files to the staging area\",\"yarn stage\"],[\"Creates a new commit containing all modified project files\",\"yarn stage --commit\"]]});async function wDt(t){let e=null,r=null;for(let o of CDt)if((r=await o.findRoot(t))!==null){e=o;break}if(e===null||r===null)throw new it(\"No stage driver has been found for your current project\");return{driver:e,root:r}}function IDt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let o;try{o=oe.statSync(e)}catch{break}if(o.isSymbolicLink())e=V.resolve(V.dirname(e),oe.readlinkSync(e));else break}return r}var BDt={commands:[$0]},vDt=BDt;var qG={};Vt(qG,{default:()=>FDt});Ye();Ye();Pt();var _Be=$e(zn());Ye();var MBe=$e(zH()),DDt=\"e8e1bd300d860104bb8c58453ffa1eb4\",PDt=\"OFCNCOG2CU\",UBe=async(t,e)=>{let r=W.stringifyIdent(t),a=SDt(e).initIndex(\"npm-search\");try{return(await a.getObject(r,{attributesToRetrieve:[\"types\"]})).types?.ts===\"definitely-typed\"}catch{return!1}},SDt=t=>(0,MBe.default)(PDt,DDt,{requester:{async send(r){try{let o=await nn.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:o.body,isTimedOut:!1,status:o.statusCode}}catch(o){return{content:o.response.body,isTimedOut:!1,status:o.response.statusCode}}}}});var HBe=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,bDt=async(t,e,r,o)=>{if(r.scope===\"types\")return;let{project:a}=t,{configuration:n}=a;if(!(n.get(\"tsEnableAutoTypes\")??(oe.existsSync(V.join(t.cwd,\"tsconfig.json\"))||oe.existsSync(V.join(a.cwd,\"tsconfig.json\")))))return;let A=n.makeResolver(),p={project:a,resolver:A,report:new Qi};if(!await UBe(r,n))return;let E=HBe(r),I=W.parseRange(r.range).selector;if(!kr.validRange(I)){let N=n.normalizeDependency(r),U=await A.getCandidates(N,{},p);I=W.parseRange(U[0].reference).selector}let v=_Be.default.coerce(I);if(v===null)return;let x=`${zc.Modifier.CARET}${v.major}`,C=W.makeDescriptor(W.makeIdent(\"types\",E),x),R=_e.mapAndFind(a.workspaces,N=>{let U=N.manifest.dependencies.get(r.identHash)?.descriptorHash,J=N.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&J!==r.descriptorHash)return _e.mapAndFind.skip;let te=[];for(let ae of Ot.allDependencies){let fe=N.manifest[ae].get(C.identHash);typeof fe>\"u\"||te.push([ae,fe])}return te.length===0?_e.mapAndFind.skip:te});if(typeof R<\"u\")for(let[N,U]of R)t.manifest[N].set(U.identHash,U);else{try{let N=n.normalizeDependency(C);if((await A.getCandidates(N,{},p)).length===0)return}catch{return}t.manifest[zc.Target.DEVELOPMENT].set(C.identHash,C)}},xDt=async(t,e,r)=>{if(r.scope===\"types\")return;let{project:o}=t,{configuration:a}=o;if(!(a.get(\"tsEnableAutoTypes\")??(oe.existsSync(V.join(t.cwd,\"tsconfig.json\"))||oe.existsSync(V.join(o.cwd,\"tsconfig.json\")))))return;let u=HBe(r),A=W.makeIdent(\"types\",u);for(let p of Ot.allDependencies)typeof t.manifest[p].get(A.identHash)>\"u\"||t.manifest[p].delete(A.identHash)},kDt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},QDt={configuration:{tsEnableAutoTypes:{description:\"Whether Yarn should auto-install @types/ dependencies on 'yarn add'\",type:\"BOOLEAN\",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:bDt,afterWorkspaceDependencyRemoval:xDt,beforeWorkspacePacking:kDt}},FDt=QDt;var VG={};Vt(VG,{VersionApplyCommand:()=>eg,VersionCheckCommand:()=>tg,VersionCommand:()=>rg,default:()=>XDt,versionUtils:()=>dw});Ye();Ye();jt();var dw={};Vt(dw,{Decision:()=>hw,applyPrerelease:()=>KBe,applyReleases:()=>KG,applyStrategy:()=>lF,clearVersionFiles:()=>GG,getUndecidedDependentWorkspaces:()=>qv,getUndecidedWorkspaces:()=>aF,openVersionFile:()=>gw,requireMoreDecisions:()=>VDt,resolveVersionFiles:()=>jv,suggestStrategy:()=>WG,updateVersionFiles:()=>YG,validateReleaseDecision:()=>pw});Ye();Pt();Ll();jt();var WBe=$e(YBe()),vA=$e(zn()),KDt=/^(>=|[~^]|)(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\\+[0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)?$/,hw=(u=>(u.UNDECIDED=\"undecided\",u.DECLINE=\"decline\",u.MAJOR=\"major\",u.MINOR=\"minor\",u.PATCH=\"patch\",u.PRERELEASE=\"prerelease\",u))(hw||{});function pw(t){let e=vA.default.valid(t);return e||_e.validateEnum((0,WBe.default)(hw,\"UNDECIDED\"),t)}async function jv(t,{prerelease:e=null}={}){let r=new Map,o=t.configuration.get(\"deferredVersionFolder\");if(!oe.existsSync(o))return r;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(\".yml\"))continue;let u=V.join(o,n),A=await oe.readFilePromise(u,\"utf8\"),p=Ki(A);for(let[h,E]of Object.entries(p.releases||{})){if(E===\"decline\")continue;let I=W.parseIdent(h),v=t.tryWorkspaceByIdent(I);if(v===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${V.basename(u)} references ${h})`);if(v.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${W.prettyLocator(t.configuration,v.anchoredLocator)})`);let x=v.manifest.raw.stableVersion??v.manifest.version,C=r.get(v),R=lF(x,pw(E));if(R===null)throw new Error(`Assertion failed: Expected ${x} to support being bumped via strategy ${E}`);let N=typeof C<\"u\"?vA.default.gt(R,C)?R:C:R;r.set(v,N)}}return e&&(r=new Map([...r].map(([n,u])=>[n,KBe(u,{current:n.manifest.version,prerelease:e})]))),r}async function GG(t){let e=t.configuration.get(\"deferredVersionFolder\");!oe.existsSync(e)||await oe.removePromise(e)}async function YG(t,e){let r=new Set(e),o=t.configuration.get(\"deferredVersionFolder\");if(!oe.existsSync(o))return;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(\".yml\"))continue;let u=V.join(o,n),A=await oe.readFilePromise(u,\"utf8\"),p=Ki(A),h=p?.releases;if(!!h){for(let E of Object.keys(h)){let I=W.parseIdent(E),v=t.tryWorkspaceByIdent(I);(v===null||r.has(v))&&delete p.releases[E]}Object.keys(p.releases).length>0?await oe.changeFilePromise(u,Ba(new Ba.PreserveOrdering(p))):await oe.unlinkPromise(u)}}}async function gw(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new it(\"This command can only be run from within a Yarn project\");let o=await ra.fetchRoot(r.projectCwd),a=o!==null?await ra.fetchBase(o,{baseRefs:r.get(\"changesetBaseRefs\")}):null,n=o!==null?await ra.fetchChangedFiles(o,{base:a.hash,project:t}):[],u=r.get(\"deferredVersionFolder\"),A=n.filter(x=>V.contains(u,x)!==null);if(A.length>1)throw new it(`Your current branch contains multiple versioning files; this isn't supported:\n- ${A.map(x=>ue.fromPortablePath(x)).join(`\n- `)}`);let p=new Set(_e.mapAndFilter(n,x=>{let C=t.tryWorkspaceByFilePath(x);return C===null?_e.mapAndFilter.skip:C}));if(A.length===0&&p.size===0&&!e)return null;let h=A.length===1?A[0]:V.join(u,`${wn.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=oe.existsSync(h)?await oe.readFilePromise(h,\"utf8\"):\"{}\",I=Ki(E),v=new Map;for(let x of I.declined||[]){let C=W.parseIdent(x),R=t.getWorkspaceByIdent(C);v.set(R,\"decline\")}for(let[x,C]of Object.entries(I.releases||{})){let R=W.parseIdent(x),N=t.getWorkspaceByIdent(R);v.set(N,pw(C))}return{project:t,root:o,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(x=>x.manifest.version!==null)),releases:v,async saveAll(){let x={},C=[],R=[];for(let N of t.workspaces){if(N.manifest.version===null)continue;let U=W.stringifyIdent(N.anchoredLocator),J=v.get(N);J===\"decline\"?C.push(U):typeof J<\"u\"?x[U]=pw(J):p.has(N)&&R.push(U)}await oe.mkdirPromise(V.dirname(h),{recursive:!0}),await oe.changeFilePromise(h,Ba(new Ba.PreserveOrdering({releases:Object.keys(x).length>0?x:void 0,declined:C.length>0?C:void 0,undecided:R.length>0?R:void 0})))}}}function VDt(t){return aF(t).size>0||qv(t).length>0}function aF(t){let e=new Set;for(let r of t.changedWorkspaces)r.manifest.version!==null&&(t.releases.has(r)||e.add(r));return e}function qv(t,{include:e=new Set}={}){let r=[],o=new Map(_e.mapAndFilter([...t.releases],([n,u])=>u===\"decline\"?_e.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(_e.mapAndFilter([...t.releases],([n,u])=>u!==\"decline\"?_e.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||o.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let u of Ot.hardDependencies)for(let A of n.manifest.getForScope(u).values()){let p=t.project.tryWorkspaceByDescriptor(A);p!==null&&o.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function WG(t,e){let r=vA.default.clean(e);for(let o of Object.values(hw))if(o!==\"undecided\"&&o!==\"decline\"&&vA.default.inc(t,o)===r)return o;return null}function lF(t,e){if(vA.default.valid(e))return e;if(t===null)throw new it(`Cannot apply the release strategy \"${e}\" unless the workspace already has a valid version`);if(!vA.default.valid(t))throw new it(`Cannot apply the release strategy \"${e}\" on a non-semver version (${t})`);let r=vA.default.inc(t,e);if(r===null)throw new it(`Cannot apply the release strategy \"${e}\" on the specified version (${t})`);return r}function KG(t,e,{report:r}){let o=new Map;for(let a of t.workspaces)for(let n of Ot.allDependencies)for(let u of a.manifest[n].values()){let A=t.tryWorkspaceByDescriptor(u);if(A===null||!e.has(A))continue;_e.getArrayWithDefault(o,A).push([a,n,u.identHash])}for(let[a,n]of e){let u=a.manifest.version;a.manifest.version=n,vA.default.prerelease(n)===null?delete a.manifest.raw.stableVersion:a.manifest.raw.stableVersion||(a.manifest.raw.stableVersion=u);let A=a.manifest.name!==null?W.stringifyIdent(a.manifest.name):null;r.reportInfo(0,`${W.prettyLocator(t.configuration,a.anchoredLocator)}: Bumped to ${n}`),r.reportJson({cwd:ue.fromPortablePath(a.cwd),ident:A,oldVersion:u,newVersion:n});let p=o.get(a);if(!(typeof p>\"u\"))for(let[h,E,I]of p){let v=h.manifest[E].get(I);if(typeof v>\"u\")throw new Error(\"Assertion failed: The dependency should have existed\");let x=v.range,C=!1;if(x.startsWith(Xn.protocol)&&(x=x.slice(Xn.protocol.length),C=!0,x===a.relativeCwd))continue;let R=x.match(KDt);if(!R){r.reportWarning(0,`Couldn't auto-upgrade range ${x} (in ${W.prettyLocator(t.configuration,h.anchoredLocator)})`);continue}let N=`${R[1]}${n}`;C&&(N=`${Xn.protocol}${N}`);let U=W.makeDescriptor(v,N);h.manifest[E].set(I,U)}}}var JDt=new Map([[\"%n\",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function KBe(t,{current:e,prerelease:r}){let o=new vA.default.SemVer(e),a=o.prerelease.slice(),n=[];o.prerelease=[],o.format()!==t&&(a.length=0);let u=!0,A=r.split(/\\./g);for(let p of A){let h=JDt.get(p);if(typeof h>\"u\")n.push(p),a[0]===p?a.shift():u=!1;else{let E=u?h.extract(a):null;E!==null&&typeof E[0]==\"number\"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),u=!1)}}return o.prerelease&&(o.prerelease=[]),`${t}-${n.join(\".\")}`}var eg=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"--all\",!1,{description:\"Apply the deferred version changes on all workspaces\"});this.dryRun=ge.Boolean(\"--dry-run\",!1,{description:\"Print the versions without actually generating the package archive\"});this.prerelease=ge.String(\"--prerelease\",{description:\"Add a prerelease identifier to new versions\",tolerateBoolean:!0});this.recursive=ge.Boolean(\"-R,--recursive\",{description:\"Release the transitive workspaces as well\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=await Lt.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=this.prerelease?typeof this.prerelease!=\"boolean\"?this.prerelease:\"rc.%n\":null,h=await jv(o,{prerelease:p}),E=new Map;if(this.all)E=h;else{let I=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let v of I){let x=h.get(v);typeof x<\"u\"&&E.set(v,x)}}if(E.size===0){let I=h.size>0?\" Did you want to add --all?\":\"\";A.reportWarning(0,`The current workspace doesn't seem to require a version bump.${I}`);return}KG(o,E,{report:A}),this.dryRun||(p||(this.all?await GG(o):await YG(o,[...E.keys()])),A.reportSeparator())});return this.dryRun||u.hasErrors()?u.exitCode():await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};eg.paths=[[\"version\",\"apply\"]],eg.usage=nt.Usage({category:\"Release-related commands\",description:\"apply all the deferred version bumps at once\",details:`\n      This command will apply the deferred version changes and remove their definitions from the repository.\n\n      Note that if \\`--prerelease\\` is set, the given prerelease identifier (by default \\`rc.%n\\`) will be used on all new versions and the version definitions will be kept as-is.\n\n      By default only the current workspace will be bumped, but you can configure this behavior by using one of:\n\n      - \\`--recursive\\` to also apply the version bump on its dependencies\n      - \\`--all\\` to apply the version bump on all packages in the repository\n\n      Note that this command will also update the \\`workspace:\\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump.\n    `,examples:[[\"Apply the version change to the local workspace\",\"yarn version apply\"],[\"Apply the version change to all the workspaces in the local workspace\",\"yarn version apply --all\"]]});Ye();Pt();jt();var cF=$e(zn());var tg=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Open an interactive interface used to set version bumps\"})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){bC(this.context);let{Gem:r}=await Promise.resolve().then(()=>(cQ(),Bj)),{ScrollableItems:o}=await Promise.resolve().then(()=>(pQ(),fQ)),{FocusRequest:a}=await Promise.resolve().then(()=>(Dj(),Jwe)),{useListInput:n}=await Promise.resolve().then(()=>(AQ(),zwe)),{renderForm:u}=await Promise.resolve().then(()=>(mQ(),dQ)),{Box:A,Text:p}=await Promise.resolve().then(()=>$e(ic())),{default:h,useCallback:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),{project:x,workspace:C}=await St.find(v,this.context.cwd);if(!C)throw new rr(x.cwd,this.context.cwd);await x.restoreInstallState();let R=await gw(x);if(R===null||R.releaseRoots.size===0)return 0;if(R.root===null)throw new it(\"This command can only be run on Git repositories\");let N=()=>h.createElement(A,{flexDirection:\"row\",paddingBottom:1},h.createElement(A,{flexDirection:\"column\",width:60},h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select workspaces.\")),h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select release strategies.\"))),h.createElement(A,{flexDirection:\"column\"},h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to save.\")),h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),U=({workspace:me,active:he,decision:Be,setDecision:we})=>{let g=me.manifest.raw.stableVersion??me.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${W.prettyLocator(v,me.anchoredLocator)})`);if(cF.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let Ee=[\"undecided\",\"decline\",\"patch\",\"minor\",\"major\"];n(Be,Ee,{active:he,minus:\"left\",plus:\"right\",set:we});let Pe=Be===\"undecided\"?h.createElement(p,{color:\"yellow\"},g):Be===\"decline\"?h.createElement(p,{color:\"green\"},g):h.createElement(p,null,h.createElement(p,{color:\"magenta\"},g),\" \\u2192 \",h.createElement(p,{color:\"green\"},cF.default.valid(Be)?Be:cF.default.inc(g,Be)));return h.createElement(A,{flexDirection:\"column\"},h.createElement(A,null,h.createElement(p,null,W.prettyLocator(v,me.anchoredLocator),\" - \",Pe)),h.createElement(A,null,Ee.map(le=>h.createElement(A,{key:le,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:le===Be}),\" \",le)))))},J=me=>{let he=new Set(R.releaseRoots),Be=new Map([...me].filter(([we])=>he.has(we)));for(;;){let we=qv({project:R.project,releases:Be}),g=!1;if(we.length>0){for(let[Ee]of we)if(!he.has(Ee)){he.add(Ee),g=!0;let Pe=me.get(Ee);typeof Pe<\"u\"&&Be.set(Ee,Pe)}}if(!g)break}return{relevantWorkspaces:he,relevantReleases:Be}},te=()=>{let[me,he]=I(()=>new Map(R.releases)),Be=E((we,g)=>{let Ee=new Map(me);g!==\"undecided\"?Ee.set(we,g):Ee.delete(we);let{relevantReleases:Pe}=J(Ee);he(Pe)},[me,he]);return[me,Be]},ae=({workspaces:me,releases:he})=>{let Be=[];Be.push(`${me.size} total`);let we=0,g=0;for(let Ee of me){let Pe=he.get(Ee);typeof Pe>\"u\"?g+=1:Pe!==\"decline\"&&(we+=1)}return Be.push(`${we} release${we===1?\"\":\"s\"}`),Be.push(`${g} remaining`),h.createElement(p,{color:\"yellow\"},Be.join(\", \"))},ce=await u(({useSubmit:me})=>{let[he,Be]=te();me(he);let{relevantWorkspaces:we}=J(he),g=new Set([...we].filter(ne=>!R.releaseRoots.has(ne))),[Ee,Pe]=I(0),le=E(ne=>{switch(ne){case a.BEFORE:Pe(Ee-1);break;case a.AFTER:Pe(Ee+1);break}},[Ee,Pe]);return h.createElement(A,{flexDirection:\"column\"},h.createElement(N,null),h.createElement(A,null,h.createElement(p,{wrap:\"wrap\"},\"The following files have been modified in your local checkout.\")),h.createElement(A,{flexDirection:\"column\",marginTop:1,paddingLeft:2},[...R.changedFiles].map(ne=>h.createElement(A,{key:ne},h.createElement(p,null,h.createElement(p,{color:\"grey\"},ue.fromPortablePath(R.root)),ue.sep,ue.relative(ue.fromPortablePath(R.root),ue.fromPortablePath(ne)))))),R.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(A,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):\")),g.size>3?h.createElement(A,{marginTop:1},h.createElement(ae,{workspaces:R.releaseRoots,releases:he})):null,h.createElement(A,{marginTop:1,flexDirection:\"column\"},h.createElement(o,{active:Ee%2===0,radius:1,size:2,onFocusRequest:le},[...R.releaseRoots].map(ne=>h.createElement(U,{key:ne.cwd,workspace:ne,decision:he.get(ne)||\"undecided\",setDecision:ee=>Be(ne,ee)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(A,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:\")),h.createElement(A,null,h.createElement(p,null,\"(Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<tab>\"),\" to move the focus between the workspace groups.)\")),g.size>5?h.createElement(A,{marginTop:1},h.createElement(ae,{workspaces:g,releases:he})):null,h.createElement(A,{marginTop:1,flexDirection:\"column\"},h.createElement(o,{active:Ee%2===1,radius:2,size:2,onFocusRequest:le},[...g].map(ne=>h.createElement(U,{key:ne.cwd,workspace:ne,decision:he.get(ne)||\"undecided\",setDecision:ee=>Be(ne,ee)}))))):null)},{versionFile:R},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ce>\"u\")return 1;R.releases.clear();for(let[me,he]of ce)R.releases.set(me,he);await R.saveAll()}async executeStandard(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);return await o.restoreInstallState(),(await Lt.start({configuration:r,stdout:this.context.stdout},async u=>{let A=await gw(o);if(A===null||A.releaseRoots.size===0)return;if(A.root===null)throw new it(\"This command can only be run on Git repositories\");if(u.reportInfo(0,`Your PR was started right after ${de.pretty(r,A.baseHash.slice(0,7),\"yellow\")} ${de.pretty(r,A.baseTitle,\"magenta\")}`),A.changedFiles.size>0){u.reportInfo(0,\"You have changed the following files since then:\"),u.reportSeparator();for(let v of A.changedFiles)u.reportInfo(null,`${de.pretty(r,ue.fromPortablePath(A.root),\"gray\")}${ue.sep}${ue.relative(ue.fromPortablePath(A.root),ue.fromPortablePath(v))}`)}let p=!1,h=!1,E=aF(A);if(E.size>0){p||u.reportSeparator();for(let v of E)u.reportError(0,`${W.prettyLocator(r,v.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let I=qv(A);for(let[v,x]of I)h||u.reportSeparator(),u.reportError(0,`${W.prettyLocator(r,v.anchoredLocator)} doesn't have a release strategy attached, but depends on ${W.prettyWorkspace(r,x)} which is planned for release.`),h=!0;(p||h)&&(u.reportSeparator(),u.reportInfo(0,\"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed).\"),u.reportInfo(0,\"To correct these errors, run `yarn version check --interactive` then follow the instructions.\"))})).exitCode()}};tg.paths=[[\"version\",\"check\"]],tg.usage=nt.Usage({category:\"Release-related commands\",description:\"check that all the relevant packages have been bumped\",details:\"\\n      **Warning:** This command currently requires Git.\\n\\n      This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\\n\\n      In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\\n\\n      In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\\n    \",examples:[[\"Check whether the modified packages need a bump\",\"yarn version check\"]]});Ye();jt();var uF=$e(zn());var rg=class extends ut{constructor(){super(...arguments);this.deferred=ge.Boolean(\"-d,--deferred\",{description:\"Prepare the version to be bumped during the next release cycle\"});this.immediate=ge.Boolean(\"-i,--immediate\",{description:\"Bump the version immediately\"});this.strategy=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=r.get(\"preferDeferredVersions\");this.deferred&&(n=!0),this.immediate&&(n=!1);let u=uF.default.valid(this.strategy),A=this.strategy===\"decline\",p;if(u)if(a.manifest.version!==null){let E=WG(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!A){if(E===null)throw new it(\"Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.\");if(typeof E!=\"string\"||!uF.default.valid(E))throw new it(`Can't bump the version (${E}) if it's not valid semver`)}p=pw(this.strategy)}if(!n){let I=(await jv(o)).get(a);if(typeof I<\"u\"&&p!==\"decline\"){let v=lF(a.manifest.version,p);if(uF.default.lt(v,I))throw new it(`Can't bump the version to one that would be lower than the current deferred one (${I})`)}}let h=await gw(o,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run([\"version\",\"apply\"])}};rg.paths=[[\"version\"]],rg.usage=nt.Usage({category:\"Release-related commands\",description:\"apply a new version to the current package\",details:\"\\n      This command will bump the version number for the given package, following the specified strategy:\\n\\n      - If `major`, the first number from the semver range will be increased (`X.0.0`).\\n      - If `minor`, the second number from the semver range will be increased (`0.X.0`).\\n      - If `patch`, the third number from the semver range will be increased (`0.0.X`).\\n      - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\\n      - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\\n      - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\\n      - If a valid semver range, it will be used as new version.\\n      - If unspecified, Yarn will ask you for guidance.\\n\\n      For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\\n    \",examples:[[\"Immediately bump the version to the next major\",\"yarn version major\"],[\"Prepare the version to be bumped to the next major\",\"yarn version major --deferred\"]]});var zDt={configuration:{deferredVersionFolder:{description:\"Folder where are stored the versioning files\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/versions\"},preferDeferredVersions:{description:\"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set\",type:\"BOOLEAN\",default:!1}},commands:[eg,tg,rg]},XDt=zDt;var JG={};Vt(JG,{WorkspacesFocusCommand:()=>ng,WorkspacesForeachCommand:()=>ap,default:()=>ePt});Ye();Ye();jt();var ng=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.production=ge.Boolean(\"--production\",!1,{description:\"Only install regular dependencies by omitting dev dependencies\"});this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Install the entire project\"});this.workspaces=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Nr.find(r);await o.restoreInstallState({restoreResolutions:!1});let u;if(this.all)u=new Set(o.workspaces);else if(this.workspaces.length===0){if(!a)throw new rr(o.cwd,this.context.cwd);u=new Set([a])}else u=new Set(this.workspaces.map(A=>o.getWorkspaceByIdent(W.parseIdent(A))));for(let A of u)for(let p of this.production?[\"dependencies\"]:Ot.hardDependencies)for(let h of A.manifest.getForScope(p).values()){let E=o.tryWorkspaceByDescriptor(h);E!==null&&u.add(E)}for(let A of o.workspaces)u.has(A)?this.production&&A.manifest.devDependencies.clear():(A.manifest.installConfig=A.manifest.installConfig||{},A.manifest.installConfig.selfReferences=!1,A.manifest.dependencies.clear(),A.manifest.devDependencies.clear(),A.manifest.peerDependencies.clear(),A.manifest.scripts.clear());return await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};ng.paths=[[\"workspaces\",\"focus\"]],ng.usage=nt.Usage({category:\"Workspace-related commands\",description:\"install a single workspace and its dependencies\",details:\"\\n      This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\\n\\n      Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\\n\\n      If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\\n    \"});Ye();Ye();Ye();jt();var mw=$e(Zo()),JBe=$e(id());Za();var ap=class extends ut{constructor(){super(...arguments);this.from=ge.Array(\"--from\",{description:\"An array of glob pattern idents or paths from which to base any recursion\"});this.all=ge.Boolean(\"-A,--all\",{description:\"Run the command on all workspaces of a project\"});this.recursive=ge.Boolean(\"-R,--recursive\",{description:\"Run the command on the current workspace and all of its recursive dependencies\"});this.worktree=ge.Boolean(\"-W,--worktree\",{description:\"Run the command on all workspaces of the current worktree\"});this.verbose=ge.Counter(\"-v,--verbose\",{description:\"Increase level of logging verbosity up to 2 times\"});this.parallel=ge.Boolean(\"-p,--parallel\",!1,{description:\"Run the commands in parallel\"});this.interlaced=ge.Boolean(\"-i,--interlaced\",!1,{description:\"Print the output of commands in real-time instead of buffering it\"});this.jobs=ge.String(\"-j,--jobs\",{description:\"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`\",validator:TT([Ks([\"unlimited\"]),aI(RT(),[NT(),LT(1)])])});this.topological=ge.Boolean(\"-t,--topological\",!1,{description:\"Run the command after all workspaces it depends on (regular) have finished\"});this.topologicalDev=ge.Boolean(\"--topological-dev\",!1,{description:\"Run the command after all workspaces it depends on (regular + dev) have finished\"});this.include=ge.Array(\"--include\",[],{description:\"An array of glob pattern idents or paths; only matching workspaces will be traversed\"});this.exclude=ge.Array(\"--exclude\",[],{description:\"An array of glob pattern idents or paths; matching workspaces won't be traversed\"});this.publicOnly=ge.Boolean(\"--no-private\",{description:\"Avoid running the command on private workspaces\"});this.since=ge.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.dryRun=ge.Boolean(\"-n,--dry-run\",{description:\"Print the commands that would be run, without actually running them\"});this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!this.all&&!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),u=n.path.length===1&&n.path[0]===\"run\"&&typeof n.scriptName<\"u\"?n.scriptName:null;if(n.path.length===0)throw new it(\"Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script\");let A=we=>{!this.dryRun||this.context.stdout.write(`${we}\n`)},p=()=>{let we=this.from.map(g=>mw.default.matcher(g));return o.workspaces.filter(g=>{let Ee=W.stringifyIdent(g.anchoredLocator),Pe=g.relativeCwd;return we.some(le=>le(Ee)||le(Pe))})},h=[];if(this.since?(A(\"Option --since is set; selecting the changed workspaces as root for workspace selection\"),h=Array.from(await ra.fetchChangedWorkspaces({ref:this.since,project:o}))):this.from?(A(\"Option --from is set; selecting the specified workspaces\"),h=[...p()]):this.worktree?(A(\"Option --worktree is set; selecting the current workspace\"),h=[a]):this.recursive?(A(\"Option --recursive is set; selecting the current workspace\"),h=[a]):this.all&&(A(\"Option --all is set; selecting all workspaces\"),h=[...o.workspaces]),this.dryRun&&!this.all){for(let we of h)A(`\n- ${we.relativeCwd}\n  ${W.prettyLocator(r,we.anchoredLocator)}`);h.length>0&&A(\"\")}let E;if(this.recursive?this.since?(A(\"Option --recursive --since is set; recursively selecting all dependent workspaces\"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceDependents()]).flat())):(A(\"Option --recursive is set; recursively selecting all transitive dependencies\"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(A(\"Option --worktree is set; recursively selecting all nested workspaces\"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let we of E)A(`\n- ${we.relativeCwd}\n  ${W.prettyLocator(r,we.anchoredLocator)}`);let I=[],v=!1;if(u?.includes(\":\")){for(let we of o.workspaces)if(we.manifest.scripts.has(u)&&(v=!v,v===!1))break}for(let we of h){if(u&&!we.manifest.scripts.has(u)&&!v&&!(await un.getWorkspaceAccessibleBinaries(we)).has(u)){A(`Excluding ${we.relativeCwd} because it doesn't have a \"${u}\" script`);continue}if(!(u===r.env.npm_lifecycle_event&&we.cwd===a.cwd)){if(this.include.length>0&&!mw.default.isMatch(W.stringifyIdent(we.anchoredLocator),this.include)&&!mw.default.isMatch(we.relativeCwd,this.include)){A(`Excluding ${we.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(mw.default.isMatch(W.stringifyIdent(we.anchoredLocator),this.exclude)||mw.default.isMatch(we.relativeCwd,this.exclude))){A(`Excluding ${we.relativeCwd} because it matches the --include filter`);continue}if(this.publicOnly&&we.manifest.private===!0){A(`Excluding ${we.relativeCwd} because it's a private workspace and --no-private was set`);continue}I.push(we)}}if(this.dryRun)return 0;let x=this.verbose??(this.context.stdout.isTTY?1/0:0),C=x>0,R=x>1,N=this.parallel?this.jobs===\"unlimited\"?1/0:Number(this.jobs)||Math.ceil(Ji.availableParallelism()/2):1,U=N===1?!1:this.parallel,J=U?this.interlaced:!0,te=(0,JBe.default)(N),ae=new Map,fe=new Set,ce=0,me=null,he=!1,Be=await Lt.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async we=>{let g=async(Ee,{commandIndex:Pe})=>{if(he)return-1;!U&&R&&Pe>1&&we.reportSeparator();let le=ZDt(Ee,{configuration:r,label:C,commandIndex:Pe}),[ne,ee]=VBe(we,{prefix:le,interlaced:J}),[Ie,Fe]=VBe(we,{prefix:le,interlaced:J});try{R&&we.reportInfo(null,`${le?`${le} `:\"\"}Process started`);let At=Date.now(),H=await this.cli.run([this.commandName,...this.args],{cwd:Ee.cwd,stdout:ne,stderr:Ie})||0;ne.end(),Ie.end(),await ee,await Fe;let at=Date.now();if(R){let Re=r.get(\"enableTimers\")?`, completed in ${de.pretty(r,at-At,de.Type.DURATION)}`:\"\";we.reportInfo(null,`${le?`${le} `:\"\"}Process exited (exit code ${H})${Re}`)}return H===130&&(he=!0,me=H),H}catch(At){throw ne.end(),Ie.end(),await ee,await Fe,At}};for(let Ee of I)ae.set(Ee.anchoredLocator.locatorHash,Ee);for(;ae.size>0&&!we.hasErrors();){let Ee=[];for(let[ne,ee]of ae){if(fe.has(ee.anchoredDescriptor.descriptorHash))continue;let Ie=!0;if(this.topological||this.topologicalDev){let Fe=this.topologicalDev?new Map([...ee.manifest.dependencies,...ee.manifest.devDependencies]):ee.manifest.dependencies;for(let At of Fe.values()){let H=o.tryWorkspaceByDescriptor(At);if(Ie=H===null||!ae.has(H.anchoredLocator.locatorHash),!Ie)break}}if(!!Ie&&(fe.add(ee.anchoredDescriptor.descriptorHash),Ee.push(te(async()=>{let Fe=await g(ee,{commandIndex:++ce});return ae.delete(ne),fe.delete(ee.anchoredDescriptor.descriptorHash),Fe})),!U))break}if(Ee.length===0){let ne=Array.from(ae.values()).map(ee=>W.prettyLocator(r,ee.anchoredLocator)).join(\", \");we.reportError(3,`Dependency cycle detected (${ne})`);return}let le=(await Promise.all(Ee)).find(ne=>ne!==0);me===null&&(me=typeof le<\"u\"?1:me),(this.topological||this.topologicalDev)&&typeof le<\"u\"&&we.reportError(0,\"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph\")}});return me!==null?me:Be.exitCode()}};ap.paths=[[\"workspaces\",\"foreach\"]],ap.usage=nt.Usage({category:\"Workspace-related commands\",description:\"run a command on all workspaces\",details:\"\\n      This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\\n\\n      - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\\n\\n      - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\\n\\n      - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\\n\\n      - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\\n\\n      - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\\n\\n      - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\\n\\n      - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      The `-v,--verbose` flag can be passed up to twice: once to prefix output lines with the originating workspace's name, and again to include start/finish/timing log lines. Maximum verbosity is enabled by default in terminal environments.\\n\\n      If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\\n    \",examples:[[\"Publish all packages\",\"yarn workspaces foreach -A npm publish --tolerate-republish\"],[\"Run the build script on all descendant packages\",\"yarn workspaces foreach -A run build\"],[\"Run the build script on current and all descendant packages in parallel, building package dependencies first\",\"yarn workspaces foreach -Apt run build\"],[\"Run the build script on several packages and all their dependencies, building dependencies first\",\"yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build\"]]}),ap.schema=[cI(\"all\",Gu.Forbids,[\"from\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"}),OT([\"all\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"})];function VBe(t,{prefix:e,interlaced:r}){let o=t.createStreamReporter(e),a=new _e.DefaultStream;a.pipe(o,{end:!1}),a.on(\"finish\",()=>{o.end()});let n=new Promise(A=>{o.on(\"finish\",()=>{A(a.active)})});if(r)return[a,n];let u=new _e.BufferStream;return u.pipe(a,{end:!1}),u.on(\"finish\",()=>{a.end()}),[u,n]}function ZDt(t,{configuration:e,commandIndex:r,label:o}){if(!o)return null;let n=`[${W.stringifyIdent(t.anchoredLocator)}]:`,u=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],A=u[r%u.length];return de.pretty(e,n,A)}var $Dt={commands:[ng,ap]},ePt=$Dt;var pC=()=>({modules:new Map([[\"@yarnpkg/cli\",a2],[\"@yarnpkg/core\",o2],[\"@yarnpkg/fslib\",Vw],[\"@yarnpkg/libzip\",x1],[\"@yarnpkg/parsers\",rI],[\"@yarnpkg/shell\",T1],[\"clipanion\",hI],[\"semver\",tPt],[\"typanion\",Vo],[\"@yarnpkg/plugin-essentials\",$8],[\"@yarnpkg/plugin-compat\",iH],[\"@yarnpkg/plugin-constraints\",wH],[\"@yarnpkg/plugin-dlx\",IH],[\"@yarnpkg/plugin-exec\",DH],[\"@yarnpkg/plugin-file\",SH],[\"@yarnpkg/plugin-git\",Z8],[\"@yarnpkg/plugin-github\",kH],[\"@yarnpkg/plugin-http\",QH],[\"@yarnpkg/plugin-init\",FH],[\"@yarnpkg/plugin-interactive-tools\",Tj],[\"@yarnpkg/plugin-link\",Lj],[\"@yarnpkg/plugin-nm\",yq],[\"@yarnpkg/plugin-npm\",dG],[\"@yarnpkg/plugin-npm-cli\",DG],[\"@yarnpkg/plugin-pack\",AG],[\"@yarnpkg/plugin-patch\",FG],[\"@yarnpkg/plugin-pnp\",oq],[\"@yarnpkg/plugin-pnpm\",LG],[\"@yarnpkg/plugin-stage\",jG],[\"@yarnpkg/plugin-typescript\",qG],[\"@yarnpkg/plugin-version\",VG],[\"@yarnpkg/plugin-workspace-tools\",JG]]),plugins:new Set([\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"])});function ZBe({cwd:t,pluginConfiguration:e}){let r=new as({binaryLabel:\"Yarn Package Manager\",binaryName:\"yarn\",binaryVersion:rn??\"<unknown>\"});return Object.assign(r,{defaultContext:{...as.defaultContext,cwd:t,plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function rPt(t){if(_e.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,o=\">=18.12.0\";if(kr.satisfiesWithPrereleases(r,o))return!0;let a=new it(`This tool requires a Node version compatible with ${o} (got ${r}). Upgrade Node, or set \\`YARN_IGNORE_NODE=1\\` in your environment.`);return as.defaultContext.stdout.write(t.error(a)),!1}async function $Be({selfPath:t,pluginConfiguration:e}){return await Ke.find(ue.toPortablePath(process.cwd()),e,{strict:!1,usePathCheck:t})}function nPt(t,e,{yarnPath:r}){if(!oe.existsSync(r))return t.error(new Error(`The \"yarn-path\" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on(\"SIGINT\",()=>{});let o={stdio:\"inherit\",env:{...process.env,YARN_IGNORE_PATH:\"1\"}};try{(0,zBe.execFileSync)(process.execPath,[ue.fromPortablePath(r),...e],o)}catch(a){return a.status??1}return 0}function iPt(t,e){let r=null,o=e;return e.length>=2&&e[0]===\"--cwd\"?(r=ue.toPortablePath(e[1]),o=e.slice(2)):e.length>=1&&e[0].startsWith(\"--cwd=\")?(r=ue.toPortablePath(e[0].slice(6)),o=e.slice(1)):e[0]===\"add\"&&e[e.length-2]===\"--cwd\"&&(r=ue.toPortablePath(e[e.length-1]),o=e.slice(0,e.length-2)),t.defaultContext.cwd=r!==null?V.resolve(r):V.cwd(),o}function sPt(t,{configuration:e}){if(!e.get(\"enableTelemetry\")||XBe.isCI||!process.stdout.isTTY)return;Ke.telemetry=new uC(e,\"puba9cdc10ec5790a2cf4969dd413a47270\");let o=/^@yarnpkg\\/plugin-(.*)$/;for(let a of e.plugins.keys())AC.has(a.match(o)?.[1]??\"\")&&Ke.telemetry?.reportPluginName(a);t.binaryVersion&&Ke.telemetry.reportVersion(t.binaryVersion)}function eve(t,{configuration:e}){for(let r of e.plugins.values())for(let o of r.commands||[])t.register(o)}async function oPt(t,e,{selfPath:r,pluginConfiguration:o}){if(!rPt(t))return 1;let a=await $Be({selfPath:r,pluginConfiguration:o}),n=a.get(\"yarnPath\"),u=a.get(\"ignorePath\");if(n&&!u)return nPt(t,e,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let A=iPt(t,e);sPt(t,{configuration:a}),eve(t,{configuration:a});let p=t.process(A,t.defaultContext);return p.help||Ke.telemetry?.reportCommandName(p.path.join(\" \")),await t.run(p,t.defaultContext)}async function ehe({cwd:t=V.cwd(),pluginConfiguration:e=pC()}={}){let r=ZBe({cwd:t,pluginConfiguration:e}),o=await $Be({pluginConfiguration:e,selfPath:null});return eve(r,{configuration:o}),r}async function nk(t,{cwd:e=V.cwd(),selfPath:r,pluginConfiguration:o}){let a=ZBe({cwd:e,pluginConfiguration:o});try{process.exitCode=await oPt(a,t,{selfPath:r,pluginConfiguration:o})}catch(n){as.defaultContext.stdout.write(a.error(n)),process.exitCode=1}finally{await oe.rmtempPromise()}}nk(process.argv.slice(2),{cwd:V.cwd(),selfPath:ue.toPortablePath(ue.resolve(process.argv[1])),pluginConfiguration:pC()});})();\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/*!\n * buildToken\n * Builds OAuth token prefix (helper function)\n *\n * @name buildToken\n * @function\n * @param {GitUrl} obj The parsed Git url object.\n * @return {String} token prefix\n */\n/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * is-windows <https://github.com/jonschlinkert/is-windows>\n *\n * Copyright © 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n/**\n  @license\n  Copyright (c) 2015, Rebecca Turner\n\n  Permission to use, copy, modify, and/or distribute this software for any\n  purpose with or without fee is hereby granted, provided that the above\n  copyright notice and this permission notice appear in all copies.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n  FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n  PERFORMANCE OF THIS SOFTWARE.\n */\n/**\n  @license\n  Copyright Joyent, Inc. and other Node contributors.\n\n  Permission is hereby granted, free of charge, to any person obtaining a\n  copy of this software and associated documentation files (the\n  \"Software\"), to deal in the Software without restriction, including\n  without limitation the rights to use, copy, modify, merge, publish,\n  distribute, sublicense, and/or sell copies of the Software, and to permit\n  persons to whom the Software is furnished to do so, subject to the\n  following conditions:\n\n  The above copyright notice and this permission notice shall be included\n  in all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n  NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n  OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n  USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n/**\n  @license\n  Copyright Node.js contributors. All rights reserved.\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to\n  deal in the Software without restriction, including without limitation the\n  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n  sell copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n  IN THE SOFTWARE.\n*/\n/**\n  @license\n  The MIT License (MIT)\n\n  Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to deal\n  in the Software without restriction, including without limitation the rights\n  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n  copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n  THE SOFTWARE.\n*/\n/** @license React v0.18.0\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/** @license React v0.24.0\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/** @license React v16.13.1\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n"
  },
  {
    "path": ".yarnrc.yml",
    "content": "compressionLevel: mixed\n\nenableGlobalCache: false\n\nnodeLinker: node-modules\n\nyarnPath: .yarn/releases/yarn-4.2.1.cjs\n"
  },
  {
    "path": "cypress/e2e/Playground.cy.ts",
    "content": "function getEl(name: 'playground' | 'add-node-button' | 'add-node-modal' | 'add-node-modal-input' | 'add-node-modal-node-list' | 'data-story-node-component') {\n  return cy.dataCy(name);\n}\n\ndescribe('add console.log node to playground', () => {\n  beforeEach(() => {\n    cy.visit('/playground');\n  });\n\n  it('visit playground', () => {\n    getEl('playground').should('exist');\n  });\n\n  it('trigger addNodeModal', () => {\n    cy.wait(500);\n    getEl('add-node-button').click();\n\n    cy.wait(1000);\n    getEl('add-node-modal').should('exist');\n  });\n\n  it('add node to playground', () => {\n    getEl('add-node-button').click();\n    getEl('add-node-modal-input').type('console');\n    getEl('add-node-modal-node-list').children().first().click();\n\n    getEl('data-story-node-component').should('exist');\n    getEl('data-story-node-component').should('contain.text', 'Console');\n  });\n})\n"
  },
  {
    "path": "cypress/fixtures/example.json",
    "content": "{\n  \"name\": \"Using fixtures to represent data\",\n  \"email\": \"hello@cypress.io\",\n  \"body\": \"Fixtures are a great way to mock data for responses to routes\"\n}\n"
  },
  {
    "path": "cypress/support/commands.ts",
    "content": "/// <reference types=\"cypress\" />\n// ***********************************************\n// This example commands.ts shows you how to\n// create various custom commands and overwrite\n// existing commands.\n//\n// For more comprehensive examples of custom\n// commands please read more here:\n// https://on.cypress.io/custom-commands\n// ***********************************************\n//\n//\n// -- This is a parent command --\n// Cypress.Commands.add('login', (email, password) => { ... })\n//\n//\n// -- This is a child command --\n// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })\n//\n//\n// -- This is a dual command --\n// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })\n//\n//\n// -- This will overwrite an existing command --\n// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })\n//\n// declare global {\n//   namespace Cypress {\n//     interface Chainable {\n//       login(email: string, password: string): Chainable<void>\n//       drag(subject: string, options?: Partial<TypeOptions>): Chainable<Element>\n//       dismiss(subject: string, options?: Partial<TypeOptions>): Chainable<Element>\n//       visit(originalFn: CommandOriginalFn, url: string, options: Partial<VisitOptions>): Chainable<Element>\n//     }\n//   }\n// }\n\n// React 18\nimport { mount } from 'cypress/react18'\nimport { ReactNode } from 'react';\n\ndeclare global {\n  namespace Cypress {\n    interface Chainable {\n      mount: typeof mount;\n      dataCy(value: string): Chainable<JQuery<HTMLElement>>;\n    }\n  }\n}\nCypress.Commands.add('mount', (component: ReactNode, options) => {\n  // Wrap any parent components needed\n  // ie: return mount(<MyProvider>{component}</MyProvider>, options)\n  return mount(component, options)\n})\nCypress.Commands.add('dataCy', (value) => {\n  return cy.get(`[data-cy=${value}]`);\n});\n"
  },
  {
    "path": "cypress/support/component-index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n    <title>Components App</title>\n  </head>\n  <body>\n    <div data-cy-root></div>\n  </body>\n</html>"
  },
  {
    "path": "cypress/support/component.ts",
    "content": "// ***********************************************************\n// This example support/component.ts is processed and\n// loaded automatically before your test files.\n//\n// This is a great place to put global configuration and\n// behavior that modifies Cypress.\n//\n// You can change the location of this file or turn off\n// automatically serving support files with the\n// 'supportFile' configuration option.\n//\n// You can read more here:\n// https://on.cypress.io/configuration\n// ***********************************************************\n\n// Import commands.js using ES2015 syntax:\nimport './commands'\n\n// Alternatively you can use CommonJS syntax:\n// require('./commands')\nimport '@data-story/ui/data-story.css';\n\nimport { mount } from 'cypress/react18'\n\n// Augment the Cypress namespace to include type definitions for\n// your custom command.\n// Alternatively, can be defined in cypress/support/component.d.ts\n// with a <reference path=\"./component\" /> at the top of your spec.\ndeclare global {\n  namespace Cypress {\n    interface Chainable {\n      mount: typeof mount\n    }\n  }\n}\n\nCypress.Commands.add('mount', mount)\n\n// Example use:\n// cy.mount(<MyComponent />)\n"
  },
  {
    "path": "cypress/support/e2e.ts",
    "content": "// ***********************************************************\n// This example support/e2e.ts is processed and\n// loaded automatically before your test files.\n//\n// This is a great place to put global configuration and\n// behavior that modifies Cypress.\n//\n// You can change the location of this file or turn off\n// automatically serving support files with the\n// 'supportFile' configuration option.\n//\n// You can read more here:\n// https://on.cypress.io/configuration\n// ***********************************************************\n\n// Import commands.js using ES2015 syntax:\nimport './commands'\n\n// Alternatively you can use CommonJS syntax:\n// require('./commands')\n"
  },
  {
    "path": "cypress/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\n      \"es5\",\n      \"dom\"\n    ],\n    \"types\": [\n      \"cypress\",\n      \"node\",\n      \"react\"\n    ],\n    \"jsx\": \"react-jsx\",\n    \"esModuleInterop\": true\n  },\n  \"include\": [\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \"**/**/*.ts\",\n    \"**/*.jsx\",\n    \"../cypress.config.ts\"\n  ]\n}\n"
  },
  {
    "path": "cypress.config.ts",
    "content": "import { defineConfig } from 'cypress';\nimport bundlerConfig from './packages/ui/cypress-vite.config';\n\nexport default defineConfig({\n  component: {\n    specPattern: '**/*.cy.{ts,tsx}',\n    devServer: {\n      framework: 'react',\n      bundler: 'vite',\n      viteConfig: bundlerConfig,\n    },\n    viewportWidth: 384,\n    viewportHeight: 216,\n  },\n});\n"
  },
  {
    "path": "drawio/node-process.drawio",
    "content": "<mxfile host=\"65bd71144e\">\n    <diagram id=\"_xOPVgzpJdSz8g3OR4fl\" name=\"after\">\n        <mxGraphModel dx=\"1827\" dy=\"2742\" grid=\"1\" gridSize=\"10\" guides=\"1\" tooltips=\"1\" connect=\"1\" arrows=\"1\" fold=\"1\" page=\"1\" pageScale=\"1\" pageWidth=\"850\" pageHeight=\"1100\" math=\"0\" shadow=\"0\">\n            <root>\n                <mxCell id=\"0\"/>\n                <mxCell id=\"1\" parent=\"0\"/>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-1\" value=\"\" style=\"edgeStyle=none;html=1;\" edge=\"1\" parent=\"1\" source=\"Px8ffN_2vrCRR-E6GCHT-3\" target=\"Px8ffN_2vrCRR-E6GCHT-4\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-3\" value=\"Diagram UI\" style=\"rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"100\" y=\"-190\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-15\" style=\"edgeStyle=none;html=1;fontFamily=Helvetica;fontColor=#4D4D4D;endArrow=classic;endFill=1;\" edge=\"1\" parent=\"1\" source=\"Px8ffN_2vrCRR-E6GCHT-4\" target=\"Px8ffN_2vrCRR-E6GCHT-6\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-4\" value=\"VSCode Client\" style=\"whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;rounded=1;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"100\" y=\"270\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-6\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;DiagramEditorProvider.ts&lt;br&gt;&lt;/font&gt;&lt;br&gt;getWebviewContent\" style=\"whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=1;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"425\" y=\"270\" width=\"135\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-16\" style=\"edgeStyle=none;html=1;fontFamily=Helvetica;fontColor=#4D4D4D;endArrow=classic;endFill=1;\" edge=\"1\" parent=\"1\" source=\"Px8ffN_2vrCRR-E6GCHT-9\" target=\"Px8ffN_2vrCRR-E6GCHT-6\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-9\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;DiagramEditorProvider.ts&lt;br&gt;&lt;/font&gt;&lt;br&gt;resolveCustomEditor\" style=\"whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=1;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"425\" y=\"-10\" width=\"135\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-11\" value=\"get dsInitialData\" style=\"text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"260\" y=\"270\" width=\"100\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-17\" value=\"when user open a .ds file, &lt;br&gt;Set the webview's HTML content\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"500\" y=\"130\" width=\"200\" height=\"40\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-18\" value=\"&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;resolveCustomEditor&lt;/font&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 11.9px;&quot;&gt;&lt;font color=&quot;#4d4d4d&quot;&gt;The handlers in resolveCustomEditor only handle toast and onEdgeDoubleClick events.&lt;/font&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 12px;&quot;&gt;&lt;br&gt;&lt;/span&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;fontFamily=Helvetica;align=left;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"580\" y=\"20\" width=\"300\" height=\"80\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-27\" value=\"\" style=\"edgeStyle=none;html=1;fontFamily=Helvetica;fontColor=#4D4D4D;endArrow=classic;endFill=1;\" edge=\"1\" parent=\"1\" source=\"Px8ffN_2vrCRR-E6GCHT-19\" target=\"Px8ffN_2vrCRR-E6GCHT-26\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-19\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;serverLauncher.ts&lt;br&gt;&lt;/font&gt;&lt;br&gt;ServerLauncher\" style=\"whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=1;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"655\" y=\"270\" width=\"135\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-29\" value=\"\" style=\"edgeStyle=none;html=1;fontFamily=Helvetica;fontColor=#4D4D4D;endArrow=classic;endFill=1;\" edge=\"1\" parent=\"1\" source=\"Px8ffN_2vrCRR-E6GCHT-26\" target=\"Px8ffN_2vrCRR-E6GCHT-28\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-26\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;ds-server.ts&lt;br&gt;&lt;/font&gt;&lt;br&gt;startServer\" style=\"whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;rounded=1;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"1030\" y=\"270\" width=\"135\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-28\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;socketServer.ts&lt;br&gt;&lt;/font&gt;&lt;br&gt;SocketServer\" style=\"whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;rounded=1;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"1030\" y=\"-190\" width=\"135\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-30\" value=\"start socket server\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"1100\" y=\"160\" width=\"120\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-31\" value=\"\" style=\"endArrow=classic;startArrow=classic;html=1;fontFamily=Helvetica;fontColor=#4D4D4D;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\" edge=\"1\" parent=\"1\" source=\"Px8ffN_2vrCRR-E6GCHT-3\" target=\"Px8ffN_2vrCRR-E6GCHT-28\">\n                    <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n                        <mxPoint x=\"740\" y=\"120\" as=\"sourcePoint\"/>\n                        <mxPoint x=\"790\" y=\"70\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-32\" value=\"socket message\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"565\" y=\"-195\" width=\"110\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-33\" value=\"\" style=\"endArrow=classic;startArrow=classic;html=1;fontFamily=Helvetica;fontColor=#4D4D4D;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\" edge=\"1\" parent=\"1\" source=\"Px8ffN_2vrCRR-E6GCHT-3\" target=\"Px8ffN_2vrCRR-E6GCHT-9\">\n                    <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n                        <mxPoint x=\"620\" y=\"120\" as=\"sourcePoint\"/>\n                        <mxPoint x=\"670\" y=\"70\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-34\" value=\"VSCode postMessage\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"370\" y=\"-105\" width=\"140\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-36\" style=\"edgeStyle=none;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontFamily=Helvetica;fontColor=#4D4D4D;endArrow=classic;endFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;\" edge=\"1\" parent=\"1\" source=\"Px8ffN_2vrCRR-E6GCHT-35\" target=\"Px8ffN_2vrCRR-E6GCHT-19\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-37\" style=\"edgeStyle=none;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontFamily=Helvetica;fontColor=#4D4D4D;endArrow=classic;endFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;\" edge=\"1\" parent=\"1\" source=\"Px8ffN_2vrCRR-E6GCHT-35\" target=\"Px8ffN_2vrCRR-E6GCHT-6\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-35\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;extension.ts&lt;/font&gt;\" style=\"whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=1;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"540\" y=\"410\" width=\"135\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-38\" value=\"new ServerLauncher(context)\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"655\" y=\"370\" width=\"180\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-40\" value=\"&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 12px; text-align: center;&quot;&gt;SocketServer&lt;/span&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;font color=&quot;#4d4d4d&quot;&gt;&lt;span style=&quot;font-size: 11.9px;&quot;&gt;The handlers in SocketServer handle events other than toast and onEdgeDoubleClick.&lt;/span&gt;&lt;/font&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 12px;&quot;&gt;&lt;br&gt;&lt;/span&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;fontFamily=Helvetica;align=left;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"1200\" y=\"-240\" width=\"300\" height=\"80\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-41\" value=\"\" style=\"endArrow=none;dashed=1;html=1;fontFamily=Helvetica;fontColor=#4D4D4D;\" edge=\"1\" parent=\"1\">\n                    <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n                        <mxPoint x=\"357\" y=\"550\" as=\"sourcePoint\"/>\n                        <mxPoint x=\"357\" y=\"-420\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-42\" value=\"\" style=\"endArrow=none;dashed=1;html=1;fontFamily=Helvetica;fontColor=#4D4D4D;\" edge=\"1\" parent=\"1\">\n                    <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n                        <mxPoint x=\"918\" y=\"570\" as=\"sourcePoint\"/>\n                        <mxPoint x=\"918\" y=\"-440\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-21\" value=\"start the socket server using&amp;nbsp;ds-server.min.js\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=default;fontFamily=Helvetica;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"770\" y=\"230\" width=\"260\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-39\" value=\"new DiagramEditorProvider(context, serverLauncher);\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=default;fontFamily=Helvetica;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"230\" y=\"370\" width=\"310\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-47\" value=\"&lt;span style=&quot;color: rgb(77, 77, 77); font-size: 12px;&quot;&gt;ds-ext UI layer&lt;/span&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;labelBackgroundColor=none;fontFamily=Helvetica;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"90\" y=\"-420\" width=\"110.00000000000001\" height=\"80\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-48\" value=\"&lt;span style=&quot;color: rgb(77, 77, 77); font-size: 12px;&quot;&gt;ds-ext VSCode Server layer&lt;/span&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;labelBackgroundColor=none;fontFamily=Helvetica;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"580\" y=\"-420\" width=\"110.00000000000001\" height=\"80\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Px8ffN_2vrCRR-E6GCHT-49\" value=\"&lt;span style=&quot;color: rgb(77, 77, 77); font-size: 12px;&quot;&gt;ds-nodejs Socket Server layer&lt;/span&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;labelBackgroundColor=none;fontFamily=Helvetica;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"1140\" y=\"-420\" width=\"110.00000000000001\" height=\"80\" as=\"geometry\"/>\n                </mxCell>\n            </root>\n        </mxGraphModel>\n    </diagram>\n    <diagram id=\"I1b4N8MrnVlwlFKcgvAj\" name=\"before\">\n        <mxGraphModel dx=\"1005\" dy=\"2003\" grid=\"1\" gridSize=\"10\" guides=\"1\" tooltips=\"1\" connect=\"1\" arrows=\"1\" fold=\"1\" page=\"1\" pageScale=\"1\" pageWidth=\"850\" pageHeight=\"1100\" math=\"0\" shadow=\"0\">\n            <root>\n                <mxCell id=\"0\"/>\n                <mxCell id=\"1\" parent=\"0\"/>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-3\" value=\"\" style=\"edgeStyle=none;html=1;\" edge=\"1\" parent=\"1\" source=\"pdU1W_6GgI6_twobgKY6-1\" target=\"pdU1W_6GgI6_twobgKY6-2\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-1\" value=\"Diagram UI\" style=\"rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"100\" y=\"-10\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-2\" value=\"VSCode Client\" style=\"whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;rounded=1;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"100\" y=\"270\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-8\" value=\"\" style=\"edgeStyle=none;html=1;fontColor=#4D4D4D;\" edge=\"1\" parent=\"1\" source=\"pdU1W_6GgI6_twobgKY6-4\" target=\"pdU1W_6GgI6_twobgKY6-7\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-4\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;DiagramEditorProvider.ts&lt;br&gt;&lt;/font&gt;&lt;br&gt;resolveCustomEditor\" style=\"whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=1;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"425\" y=\"270\" width=\"135\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-7\" value=\"observerStorage\" style=\"whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=1;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"425\" y=\"130\" width=\"135\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-13\" style=\"edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontColor=#4D4D4D;endArrow=classic;endFill=1;\" edge=\"1\" parent=\"1\" source=\"pdU1W_6GgI6_twobgKY6-9\" target=\"pdU1W_6GgI6_twobgKY6-7\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-9\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;DiagramEditorProvider.ts&lt;br&gt;&lt;/font&gt;&lt;br&gt;openCustomDocument\" style=\"whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;rounded=1;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"425\" y=\"-10\" width=\"135\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-11\" value=\"\" style=\"endArrow=classic;startArrow=classic;html=1;fontColor=#4D4D4D;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\" edge=\"1\" parent=\"1\" source=\"pdU1W_6GgI6_twobgKY6-2\" target=\"pdU1W_6GgI6_twobgKY6-4\">\n                    <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n                        <mxPoint x=\"390\" y=\"460\" as=\"sourcePoint\"/>\n                        <mxPoint x=\"440\" y=\"410\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-12\" value=\"VSCode.postMessage\" style=\"text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"290\" y=\"260\" width=\"60\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-14\" value=\"initial Storage\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"500\" y=\"80\" width=\"100\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"pdU1W_6GgI6_twobgKY6-15\" value=\"handlers using storage\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"500\" y=\"210\" width=\"140\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"nua2Y7bhf_i4EmzkiWJa-1\" value=\"&lt;span style=&quot;color: rgb(77, 77, 77); font-size: 11.9px;&quot;&gt;The openCustomDocument function is invoked the first time an editor for a given .ds is opened.&lt;/span&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;labelBackgroundColor=none;fontFamily=Helvetica;align=left;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"590\" y=\"-60\" width=\"210\" height=\"90\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"nua2Y7bhf_i4EmzkiWJa-2\" value=\"\" style=\"endArrow=classic;startArrow=classic;html=1;fontFamily=Helvetica;fontColor=#4D4D4D;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\" edge=\"1\" parent=\"1\" source=\"pdU1W_6GgI6_twobgKY6-1\" target=\"pdU1W_6GgI6_twobgKY6-4\">\n                    <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n                        <mxPoint x=\"310\" y=\"30\" as=\"sourcePoint\"/>\n                        <mxPoint x=\"360\" y=\"-20\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"nua2Y7bhf_i4EmzkiWJa-3\" value=\"VSCode postMessage\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#4D4D4D;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"285\" y=\"95\" width=\"140\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"nua2Y7bhf_i4EmzkiWJa-4\" value=\"&lt;span style=&quot;color: rgb(17, 0, 0); font-size: 11.9px;&quot;&gt;Handle all handlers in resolveCustomEditor.&lt;/span&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;labelBackgroundColor=none;fontFamily=Helvetica;align=left;\" vertex=\"1\" parent=\"1\">\n                    <mxGeometry x=\"580\" y=\"275\" width=\"250\" height=\"50\" as=\"geometry\"/>\n                </mxCell>\n            </root>\n        </mxGraphModel>\n    </diagram>\n</mxfile>"
  },
  {
    "path": "drawio/observabilty-improvements.drawio",
    "content": "<mxfile host=\"65bd71144e\" pages=\"2\">\n    <diagram name=\"Page-1\" id=\"sbTiQ6Ua1EG78ieuUPqL\">\n        <mxGraphModel dx=\"1384\" dy=\"2003\" grid=\"1\" gridSize=\"10\" guides=\"1\" tooltips=\"1\" connect=\"1\" arrows=\"1\" fold=\"1\" page=\"1\" pageScale=\"1\" pageWidth=\"850\" pageHeight=\"1100\" math=\"0\" shadow=\"0\">\n            <root>\n                <mxCell id=\"0\"/>\n                <mxCell id=\"1\" parent=\"0\"/>\n                <mxCell id=\"7Z4UWEjBdzBk7QtIimdo-34\" value=\"\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\" parent=\"1\" source=\"38vXCRN8p0Vo143Qb7JG-1\" target=\"7Z4UWEjBdzBk7QtIimdo-33\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"7Z4UWEjBdzBk7QtIimdo-36\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.25;entryDx=0;entryDy=0;\" parent=\"1\" source=\"38vXCRN8p0Vo143Qb7JG-1\" target=\"7Z4UWEjBdzBk7QtIimdo-26\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-1\" value=\"LinkCountsObserver\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"102\" y=\"172\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-2\" value=\"execute\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"569\" y=\"183\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-7\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;\" parent=\"1\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\">\n                        <Array as=\"points\">\n                            <mxPoint x=\"630\" y=\"427\"/>\n                            <mxPoint x=\"400\" y=\"427\"/>\n                            <mxPoint x=\"400\" y=\"199\"/>\n                        </Array>\n                        <mxPoint x=\"630\" y=\"510\" as=\"sourcePoint\"/>\n                        <mxPoint x=\"222\" y=\"199\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-8\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;\" parent=\"1\" source=\"38vXCRN8p0Vo143Qb7JG-3\" target=\"38vXCRN8p0Vo143Qb7JG-4\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"BSzdCv82GYP_WhaVvDeM-3\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.75;entryDx=0;entryDy=0;\" parent=\"1\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\">\n                        <mxPoint x=\"230\" y=\"296\" as=\"targetPoint\"/>\n                        <Array as=\"points\">\n                            <mxPoint x=\"630\" y=\"426\"/>\n                            <mxPoint x=\"400\" y=\"426\"/>\n                            <mxPoint x=\"400\" y=\"296\"/>\n                        </Array>\n                        <mxPoint x=\"630\" y=\"509\" as=\"sourcePoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"WGFxyVuObMuwLcrBygDn-4\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;\" parent=\"1\" source=\"38vXCRN8p0Vo143Qb7JG-3\" target=\"WGFxyVuObMuwLcrBygDn-1\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\">\n                        <Array as=\"points\">\n                            <mxPoint x=\"630\" y=\"438\"/>\n                        </Array>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-3\" value=\"Observable\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"570\" y=\"513\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-5\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;\" parent=\"1\" source=\"38vXCRN8p0Vo143Qb7JG-4\" target=\"A14hZiKRzuO5IoaR_60V-1\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-4\" value=\"NotifyDataUpdate&amp;nbsp;\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"120\" y=\"513\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-10\" value=\"\" style=\"endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;rounded=0;\" parent=\"1\" edge=\"1\">\n                    <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n                        <mxPoint x=\"400\" y=\"520\" as=\"sourcePoint\"/>\n                        <mxPoint x=\"400\" y=\"40\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-15\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\" parent=\"1\" source=\"38vXCRN8p0Vo143Qb7JG-14\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\">\n                        <mxPoint x=\"630\" y=\"180\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-14\" value=\"run\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"100\" y=\"70\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-17\" value=\"\" style=\"endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#e1d5e7;strokeColor=#9673a6;\" parent=\"1\" source=\"38vXCRN8p0Vo143Qb7JG-3\" target=\"38vXCRN8p0Vo143Qb7JG-2\" edge=\"1\">\n                    <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n                        <mxPoint x=\"400\" y=\"130\" as=\"sourcePoint\"/>\n                        <mxPoint x=\"450\" y=\"80\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-18\" value=\"Subscribe\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"549\" y=\"269\" width=\"80\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-19\" value=\"receive msg\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"646\" y=\"430\" width=\"90\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-20\" value=\"&lt;div&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;Push notifications based &lt;br&gt;on the throttle time&lt;/span&gt;&lt;/div&gt;\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"405\" y=\"498\" width=\"160\" height=\"40\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-22\" value=\"&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 12px; text-wrap-mode: nowrap;&quot;&gt;Server&lt;/span&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=7;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"530\" y=\"10\" width=\"91\" height=\"40\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"38vXCRN8p0Vo143Qb7JG-23\" value=\"&lt;font color=&quot;#000000&quot;&gt;&lt;span style=&quot;font-size: 12px; text-wrap-mode: nowrap;&quot;&gt;Client&lt;/span&gt;&lt;/font&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=7;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"190\" y=\"10\" width=\"91\" height=\"40\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-13\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;\" parent=\"1\" source=\"A14hZiKRzuO5IoaR_60V-1\" target=\"A14hZiKRzuO5IoaR_60V-11\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-1\" value=\"Table\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;align=center;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-384\" y=\"513\" width=\"90\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-3\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;\" parent=\"1\" source=\"A14hZiKRzuO5IoaR_60V-2\" target=\"A14hZiKRzuO5IoaR_60V-1\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-20\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;\" parent=\"1\" source=\"A14hZiKRzuO5IoaR_60V-2\" target=\"A14hZiKRzuO5IoaR_60V-19\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-2\" value=\"User Interaction\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;align=center;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-384\" y=\"206\" width=\"90\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-6\" value=\"Notify subscribers that the data has arrived\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-169\" y=\"498\" width=\"270\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-8\" value=\"Storage\" style=\"shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#e1d5e7;strokeColor=#9673a6;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"592\" y=\"632\" width=\"59\" height=\"80\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-9\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;\" parent=\"1\" source=\"38vXCRN8p0Vo143Qb7JG-2\" target=\"A14hZiKRzuO5IoaR_60V-8\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\">\n                        <Array as=\"points\">\n                            <mxPoint x=\"750\" y=\"213\"/>\n                            <mxPoint x=\"750\" y=\"672\"/>\n                        </Array>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-10\" value=\"save data\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"671\" y=\"592\" width=\"80\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-11\" value=\"getDataFromStorage\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"103\" y=\"643\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-16\" value=\"Control the amount of data retrieved using&lt;font color=&quot;#66ff66&quot;&gt; &lt;/font&gt;limit and offset\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-245\" y=\"622\" width=\"350\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-21\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\" parent=\"1\" source=\"A14hZiKRzuO5IoaR_60V-19\" target=\"38vXCRN8p0Vo143Qb7JG-14\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-19\" value=\"DataStoryControls\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;align=center;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-402\" y=\"70\" width=\"126\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-22\" value=\"click run button\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-110\" y=\"64\" width=\"110\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-23\" value=\"1. JsServer: IndexedDB&amp;nbsp;&lt;div&gt;2. Vscode: Json Lines&lt;/div&gt;&lt;div&gt;3. socketServer/Node: Json lines&lt;/div&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"521\" y=\"743\" width=\"230\" height=\"80\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"BSzdCv82GYP_WhaVvDeM-1\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;\" parent=\"1\" source=\"A14hZiKRzuO5IoaR_60V-24\" target=\"7Z4UWEjBdzBk7QtIimdo-26\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"BSzdCv82GYP_WhaVvDeM-7\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.75;entryDx=0;entryDy=0;\" parent=\"1\" source=\"A14hZiKRzuO5IoaR_60V-24\" target=\"BSzdCv82GYP_WhaVvDeM-6\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\">\n                        <Array as=\"points\">\n                            <mxPoint x=\"160\" y=\"380\"/>\n                            <mxPoint x=\"-90\" y=\"380\"/>\n                        </Array>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-24\" value=\"ItemsObserver\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"110\" y=\"255\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-26\" value=\"Only push notifications &lt;br&gt;without returning data\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"246\" y=\"508\" width=\"150\" height=\"40\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-27\" value=\"Return data related to items\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"215\" y=\"255\" width=\"180\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-28\" value=\"Return data related to linkCounts\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"215\" y=\"172\" width=\"210\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-29\" value=\"&lt;font color=&quot;#000000&quot;&gt;&lt;span style=&quot;font-size: 12px; text-wrap-mode: nowrap;&quot;&gt;UI&lt;/span&gt;&lt;/font&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=7;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-250\" width=\"91\" height=\"40\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-30\" value=\"\" style=\"endArrow=none;dashed=1;html=1;rounded=0;\" parent=\"1\" edge=\"1\">\n                    <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n                        <mxPoint y=\"540\" as=\"sourcePoint\"/>\n                        <mxPoint y=\"20\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-31\" value=\"&lt;div style=&quot;font-size: 17px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;&quot;&gt;Implementation Plan:&lt;/span&gt;&lt;br&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 15px; background-color: initial;&quot;&gt;1. Establish an observation channel for `execute`, returning `linkCounts`, `items`, and other data to the frontend.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 15px;&quot;&gt;&amp;nbsp; &amp;nbsp;1.1 Remove the `ExecutionUpdate` method.&lt;/div&gt;&lt;div style=&quot;font-size: 15px;&quot;&gt;&amp;nbsp; &amp;nbsp;1.2 Implement `LinkCountsObserver` to call the `updateEdgeCounts` method for updating edges.&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: initial; font-size: 15px;&quot;&gt;1.3 Update the console Node using ItemsObserver; developers can also listen to items data with ItemsObserver.&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;background-color: initial; font-size: 15px;&quot;&gt;&amp;nbsp; &amp;nbsp;1.4 Implement lazy loading of table items data through notifyDataUpdate and getDataFromStorage.&lt;/span&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-size: 15px;&quot;&gt;2. Add a `throttleMs` parameter to implement throttling for data observations.&lt;/div&gt;&lt;div style=&quot;font-size: 17px;&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;3. Add a `state` parameter to assign status to links and nodes.&lt;/span&gt;&lt;br&gt;&lt;div style=&quot;font-size: 15px;&quot;&gt;4. Implement different storage methods across various servers, initially storing everything in variables.&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;br&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;&quot;&gt;&lt;b&gt;Regarding storage choices:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;&quot;&gt;1. Given the need for frequent read and write operations, a storage structure that supports appending is essential. Thus, using IndexedDB in JSServer is a good option. JSON Lines can be utilized in both the VSCode extension and NodeServer.&lt;br&gt;2.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: initial; font-size: 15px;&quot;&gt;Abstract the data storage methods to facilitate storing in variables, IndexedDB, JSON Lines, and other storage options.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;\" style=\"shape=note;strokeWidth=2;fontSize=14;size=20;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#666600;align=left;spacingTop=0;spacing=2;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-190\" y=\"-430\" width=\"771\" height=\"340\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-33\" value=\"\" style=\"endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;\" parent=\"1\" source=\"A14hZiKRzuO5IoaR_60V-11\" target=\"A14hZiKRzuO5IoaR_60V-8\" edge=\"1\">\n                    <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n                        <mxPoint x=\"111\" y=\"593\" as=\"sourcePoint\"/>\n                        <mxPoint x=\"161\" y=\"543\" as=\"targetPoint\"/>\n                    </mxGeometry>\n                </mxCell>\n                <mxCell id=\"7Z4UWEjBdzBk7QtIimdo-26\" value=\"&amp;lt;DataStory&amp;nbsp;&lt;br&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; linksCountObserver={linksCountObserver}&lt;/span&gt;&lt;/div&gt;&amp;nbsp; itemsObserver={itemsObserver}&lt;br&gt;/&amp;gt;\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;align=left;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-224\" y=\"245\" width=\"200\" height=\"81\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"A14hZiKRzuO5IoaR_60V-4\" value=\"Scroll to the bottom of the current table\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-590\" y=\"326\" width=\"250\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"7Z4UWEjBdzBk7QtIimdo-28\" value=\"this PR\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=12;fontFamily=Comic Sans MS;align=left;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-658\" y=\"102\" width=\"140\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"7Z4UWEjBdzBk7QtIimdo-29\" value=\"todo\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;align=left;fontSize=12;fontFamily=Comic Sans MS;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-656\" y=\"48\" width=\"140\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"7Z4UWEjBdzBk7QtIimdo-30\" value=\"done\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=12;fontFamily=Comic Sans MS;align=left;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-658\" y=\"158\" width=\"140\" height=\"32\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"7Z4UWEjBdzBk7QtIimdo-32\" value=\"legend\" style=\"text;whiteSpace=wrap;fontFamily=Comic Sans MS;fontSize=14;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-656\" y=\"-2\" width=\"70\" height=\"40\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"7Z4UWEjBdzBk7QtIimdo-33\" value=\"updateEdgeCounts\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-190\" y=\"172\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"BSzdCv82GYP_WhaVvDeM-6\" value=\"ConsoleLog\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-224\" y=\"336\" width=\"120\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Q3YmGbA_B_iQLKsxASQO-1\" value=\"throttleMs\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-19\" y=\"159\" width=\"80\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Q3YmGbA_B_iQLKsxASQO-2\" value=\"throttleMs\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"10\" y=\"285\" width=\"80\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"Q3YmGbA_B_iQLKsxASQO-3\" value=\"throttleMs\" style=\"text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry y=\"345\" width=\"80\" height=\"30\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"WGFxyVuObMuwLcrBygDn-6\" value=\"\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;\" parent=\"1\" source=\"WGFxyVuObMuwLcrBygDn-1\" target=\"WGFxyVuObMuwLcrBygDn-5\" edge=\"1\">\n                    <mxGeometry relative=\"1\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"WGFxyVuObMuwLcrBygDn-1\" value=\"nodeStatusObserver&amp;nbsp;\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"110\" y=\"408\" width=\"136\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n                <mxCell id=\"WGFxyVuObMuwLcrBygDn-5\" value=\"updateEdgeStatus\" style=\"rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;\" parent=\"1\" vertex=\"1\">\n                    <mxGeometry x=\"-232\" y=\"408\" width=\"136\" height=\"60\" as=\"geometry\"/>\n                </mxCell>\n            </root>\n        </mxGraphModel>\n    </diagram>\n</mxfile>"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"data-story\",\n  \"private\": true,\n  \"workspaces\": [\n    \"packages/core\",\n    \"packages/ui\",\n    \"packages/docs\",\n    \"packages/nodejs\",\n    \"packages/hubspot\",\n    \"packages/ds-ext\",\n    \"packages/private/*\"\n  ],\n  \"scripts\": {\n    \"set-env\": \"cross-env\",\n    \"demo\": \"yarn workspace @data-story/core run demo\",\n    \"tc\": \"yarn workspace @data-story/core run tinker\",\n    \"tn\": \"yarn workspace @data-story/nodejs run tinker\",\n    \"tui\": \"yarn workspace @data-story/ui run tinker\",\n    \"dev\": \"echo _____RUNNING_ROOT_DEV_____ && yarn kill && turbo @data-story/docs#dev\",\n    \"watch:ds-ext\": \"yarn kill && turbo watch ds-ext#watch\",\n    \"dev:server\": \"kill-port 3300 && turbo @data-story/nodejs#dev\",\n    \"kill\": \"kill-port 3000 3300\",\n    \"build\": \"turbo build\",\n    \"docs:add-nodes\": \"npx ts-node ./scripts/addNodesToDocs.ts\",\n    \"lint\": \"eslint .\",\n    \"lint:fix\": \"eslint '**/*.{js,jsx,ts,tsx}' --fix --no-cache\",\n    \"postinstall\": \"[ \\\"$CI\\\" = \\\"true\\\" ] || husky install\",\n    \"release-core\": \"yarn workspace @data-story/core run release && yarn release-ui && yarn release-nodejs && yarn release-ds-ext\",\n    \"release-ui\": \"yarn workspace @data-story/ui run release\",\n    \"release-nodejs\": \"yarn workspace @data-story/nodejs run release\",\n    \"release-ds-ext\": \"yarn workspace ds-ext run release\",\n    \"ci:test\": \"yarn ci:test-packages\",\n    \"ci:test-packages\": \"turbo test --filter=@data-story/core --filter=@data-story/ui --filter=@data-story/docs\",\n    \"core:test\": \"turbo test --filter=@data-story/core\",\n    \"cy:open\": \"cypress open\",\n    \"constraints\": \"yarn constraints\"\n  },\n  \"release-it\": {\n    \"increment\": false,\n    \"git\": {\n      \"requireCleanWorkingDir\": false,\n      \"tag\": false,\n      \"push\": false\n    },\n    \"github\": {\n      \"release\": false\n    },\n    \"npm\": {\n      \"publish\": false,\n      \"skipChecks\": true,\n      \"versionArgs\": [\n        \"--workspaces-update=false\"\n      ]\n    }\n  },\n  \"lint-staged\": {\n    \"*.{js,jsx,tsx,ts}\": \"eslint\"\n  },\n  \"version\": \"0.0.1\",\n  \"packageManager\": \"yarn@4.2.1\",\n  \"devDependencies\": {\n    \"@stylistic/eslint-plugin\": \"^0.1.2\",\n    \"@types/mocha\": \"^10.0.6\",\n    \"@types/node\": \"^18.14.2\",\n    \"@types/react\": \"^18\",\n    \"@types/react-dom\": \"^18\",\n    \"@types/ws\": \"^8.5.4\",\n    \"@typescript-eslint/parser\": \"^6.9.0\",\n    \"@yarnpkg/types\": \"^4.0.1\",\n    \"autoprefixer\": \"^10.4.16\",\n    \"chokidar\": \"^4.0.3\",\n    \"cross-env\": \"^7.0.3\",\n    \"cypress\": \"^13.6.1\",\n    \"esbuild\": \"^0.21.3\",\n    \"eslint\": \"^8.52.0\",\n    \"eslint-plugin-import\": \"^2.25.0\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"husky\": \"^8.0.0\",\n    \"kill-port\": \"^2.0.1\",\n    \"lint-staged\": \"^15.0.2\",\n    \"postcss\": \"^8.5.3\",\n    \"release-it\": \"^17.0.0\",\n    \"start-server-and-test\": \"^2.0.3\",\n    \"tailwindcss\": \"^3.3.3\",\n    \"ts-loader\": \"^9.5.1\",\n    \"ts-node\": \"10.9.2\",\n    \"turbo\": \"^2.5.4\",\n    \"typescript\": \"5.6.2\",\n    \"vite\": \"^5.4.8\",\n    \"vitest\": \"^1.6.1\",\n    \"webpack\": \"^5.88.1\",\n    \"webpack-bundle-analyzer\": \"^4.10.1\",\n    \"webpack-cli\": \"^5.1.4\",\n    \"zx\": \"^8.5.5\"\n  },\n  \"resolutions\": {\n    \"@uiw/codemirror-extensions-basic-setup@npm:4.23.10\": \"patch:@uiw/codemirror-extensions-basic-setup@npm%3A4.23.10#~/.yarn/patches/@uiw-codemirror-extensions-basic-setup-npm-4.23.10-953e998a73.patch\"\n  }\n}\n"
  },
  {
    "path": "packages/core/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\nnode_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# local env files\n.env*.local\n.env*.local\n.env\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n\n# datastory\n.datastory/cache\n.datastory/data\n.datastory/executions\n.datastory/local*.*\n\nnotes\nnotes.json\nnotes.js\nnotes.md\n\nsrc/tinker.ts\n\ndist"
  },
  {
    "path": "packages/core/package.json",
    "content": "{\n  \"name\": \"@data-story/core\",\n  \"version\": \"0.0.109\",\n  \"type\": \"commonjs\",\n  \"types\": \"dist/main/index.d.ts\",\n  \"main\": \"dist/main/index.js\",\n  \"module\": \"dist/esm/index.mjs\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./src/index.ts\",\n      \"import\": \"./dist/esm/index.mjs\",\n      \"require\": \"./dist/main/index.js\"\n    },\n    \"./test-tools\": {\n      \"types\": \"./dist/main/testTools.d.ts\",\n      \"import\": \"./dist/vite/test-tools.mjs\",\n      \"require\": \"./dist/vite/test-tools.umd.js\"\n    },\n    \"./package.json\": \"./package.json\",\n    \"./dist/\": \"./dist/main/\"\n  },\n  \"typesVersions\": {\n    \"*\": {\n      \"*\": [\n        \"dist/main/index.d.ts\"\n      ],\n      \"test-tools\": [\n        \"dist/main/testTools.d.ts\"\n      ]\n    }\n  },\n  \"files\": [\n    \"dist/**/*\",\n    \"src/**/*\"\n  ],\n  \"scripts\": {\n    \"tinker\": \"npx ts-node ./src/tinker.ts\",\n    \"demo\": \"npx ts-node ./src/V2/old/demo.ts\",\n    \"test\": \"yarn run -T vitest run\",\n    \"watch:test\": \"yarn run -T vitest\",\n    \"build:vite\": \"yarn run -T vite build\",\n    \"build:esm\": \"yarn run -T vite build --config vite.config.esm.ts\",\n    \"build:cjs\": \"tsc -p tsconfig.build.json\",\n    \"watch:vite\": \"yarn run -T vite build -w\",\n    \"watch:esm\": \"yarn run -T vite build --config vite.config.esm.ts -w\",\n    \"watch:cjs\": \"tsc -p tsconfig.build.json -w\",\n    \"release\": \"yarn run -T release-it\"\n  },\n  \"release-it\": {\n    \"git\": false,\n    \"npm\": {\n      \"publish\": false,\n      \"skipChecks\": true,\n      \"versionArgs\": [\n        \"--workspaces-update=false\"\n      ]\n    }\n  },\n  \"dependencies\": {\n    \"nanoid\": \"^3.3.8\",\n    \"rfdc\": \"^1.4.1\",\n    \"rxjs\": \"^7.8.1\",\n    \"zod\": \"^3.24.1\"\n  },\n  \"devDependencies\": {\n    \"vite-plugin-externalize-deps\": \"^0.8.0\"\n  }\n}\n"
  },
  {
    "path": "packages/core/src/Application.test.ts",
    "content": "import { Application } from './Application'\nimport { Signal } from './computers'\nimport { Computer } from './types/Computer'\nimport { ServiceProvider } from './types/ServiceProvider'\n\ndescribe('register', () => {\n  it('can register a single provider', () => {\n    const app = new Application()\n\n    const provider: ServiceProvider = {\n      boot: (app) => Promise.resolve(),\n    }\n\n    app.register(provider)\n\n    expect(app.providers).toMatchObject([\n      provider,\n    ])\n  })\n\n  it('can register multiple providers', () => {\n    const app = new Application()\n\n    const provider1: ServiceProvider = {\n      boot: (app) => Promise.resolve(),\n    }\n\n    const provider2: ServiceProvider = {\n      boot: (app) => Promise.resolve(),\n    }\n\n    app.register([provider1, provider2])\n\n    expect(app.providers).toMatchObject([\n      provider1,\n      provider2,\n    ])\n  })\n})\n\ndescribe('bootAsync', () => {\n  it('runs register and boot on all providers', async () => {\n    const app = new Application()\n\n    const provider1: ServiceProvider = {\n      boot: vi.fn(),\n    }\n\n    const provider2: ServiceProvider = {\n      boot: vi.fn(),\n    }\n\n    app.register([provider1, provider2])\n\n    await app.boot()\n\n    expect(provider1.boot).toHaveBeenCalledWith(app)\n    expect(provider2.boot).toHaveBeenCalledWith(app)\n  })\n})\n\ndescribe('addComputers', () => {\n  it('adds computers to the application', () => {\n    const app = new Application()\n    const computer = {\n      computerType: 'Signal',\n      run: async function*(_) {},\n    } as Computer;\n\n    app.addComputers([computer])\n\n    expect(app.getRegistry().computers.Signal).toMatchObject(\n      computer,\n    )\n  })\n})\n\ndescribe('descriptions', ()  => {\n  it('returns descriptions of all computers', () => {\n    const app = new Application()\n\n    app.addComputers([ Signal ])\n\n    expect(app.descriptions()).toMatchObject([\n      {\n        type: 'NodeDescription',\n        computerType: 'Signal',\n      },\n    ])\n  })\n})"
  },
  {
    "path": "packages/core/src/Application.ts",
    "content": "import { Diagram } from './Diagram';\nimport { DiagramBuilder } from './DiagramBuilder';\nimport { ExecutorFactory } from './ExecutorFactory';\nimport { ObserverController } from './ObserverController';\nimport { NodeDescriptionFactory } from './NodeDescriptionFactory';\nimport { Registry } from './Registry';\nimport { Computer } from './types/Computer';\nimport { ServiceProvider } from './types/ServiceProvider';\nimport { NodeDescription } from './types/NodeDescription';\n\nexport class Application {\n  hasBooted = false;\n\n  providers: ServiceProvider[] = [];\n  hooks = new Map<string, Function>();\n  private registry = new Registry({}, {}, []);\n\n  register(provider: ServiceProvider | ServiceProvider[]) {\n    this.providers.push(\n      ...(Array.isArray(provider) ? provider : [provider]),\n    );\n\n    return this;\n  }\n\n  async boot() {\n    for(const provider of this.providers) {\n      await provider.boot(this)\n    }\n\n    this.hasBooted = true;\n\n    return this;\n  }\n\n  addComputers(computers: Computer[]) {\n    for (const computer of computers) {\n      this.registry.computers[computer.computerType] = computer;\n    }\n  }\n\n  addConfiguredComputerAlias(\n    type: string,\n    aliasFactory: (original: NodeDescription) => NodeDescription,\n  ) {\n    this.registry.configuredComputerAliases.push({\n      type,\n      aliasFactory,\n    })\n  }\n\n  addNestedNode(type: string, diagram: Diagram) {\n    this.registry.nestedNodes[type] = diagram;\n  }\n\n  descriptions(): NodeDescription[] {\n    return [\n      ...this.descriptionsFromComputers(),\n      ...this.descriptionsFromNestedNodes(),\n      ...this.descriptionsFromConfiguredComputers(),\n    ]\n  }\n\n  getDiagramBuilder() {\n    return new DiagramBuilder(\n      this.descriptions(),\n    );\n  }\n\n  getExecutor({ diagram, observerController }: {\n    diagram: Diagram;\n    observerController?: ObserverController;\n  }) {\n    return ExecutorFactory.create({\n      diagram,\n      registry: this.registry,\n      observerController,\n    })\n  }\n\n  getRegistry() {\n    return this.registry;\n  }\n\n  private descriptionsFromComputers() {\n    return Object.values(this.registry.computers).map(computer => {\n      return NodeDescriptionFactory.fromComputer(computer);\n    });\n  }\n\n  private descriptionsFromConfiguredComputers() {\n    const configurations = this.registry.configuredComputerAliases\n    const originalDescriptions = [\n      ...this.descriptionsFromComputers(),\n      ...this.descriptionsFromNestedNodes(),\n    ]\n\n    return configurations.map(({ type, aliasFactory }) => {\n      const original = originalDescriptions.find(description => description.computerType === type)\n      if (!original) throw new Error(`No original description found for type ${type}`)\n\n      return aliasFactory(original)\n    })\n  }\n\n  private descriptionsFromNestedNodes() {\n    return Object.entries(this.registry.nestedNodes).map(([name, diagram]) => {\n      return NodeDescriptionFactory.fromDiagram(name, diagram);\n    });\n  }\n}\n"
  },
  {
    "path": "packages/core/src/ComputerFactory.test.ts",
    "content": "import { ComputerFactory } from './ComputerFactory'\nimport { Computer } from './types/Computer'\n\ndescribe('get', () => {\n  it('creates a computer from a sparse config', () => {\n    const config = {\n      type: 'Computer',\n      computerType: 'test computer',\n    } as Computer\n\n    const computer = new ComputerFactory().getInstance(config)\n\n    expect(computer).toMatchObject({\n      type: 'Computer',\n      computerType: 'test computer',\n      label: 'test computer',\n      category: undefined,\n      inputs: [],\n      outputs: [],\n      params: {},\n      run: expect.any(Function),\n      canRun: undefined,\n    })\n  })\n\n  it('upgrades simple string inputs and outputs to Port', () => {\n    const config = {\n      computerType: 'test computer',\n      inputs: [\n        {\n          name: 'input1',\n          schema: {},\n        },\n        {\n          name: 'input2',\n          schema: {},\n        },\n      ],\n      outputs: [\n        {\n          name: 'output1',\n          schema: {},\n        },\n        {\n          name: 'output2',\n          schema: {},\n        },\n      ],\n    } as Computer\n\n    const computer = new ComputerFactory().getInstance(config)\n\n    expect(computer).toMatchObject({\n      type: 'Computer',\n      computerType: 'test computer',\n      inputs: [\n        { name: 'input1', schema: {} },\n        { name: 'input2', schema: {} },\n      ],\n      outputs: [\n        { name: 'output1', schema: {} },\n        { name: 'output2', schema: {} },\n      ],\n    })\n  })\n})"
  },
  {
    "path": "packages/core/src/ComputerFactory.ts",
    "content": "import { AbstractPort, PortName } from './types/Port';\nimport { Computer } from './types/Computer';\n\n/**\n * Ensure all inputs/outputs are Port\n */\nexport const portableToPort = (portable: PortName | AbstractPort): AbstractPort => {\n  return typeof portable === 'string'\n    ? ({ name: portable, schema: {} })\n    : portable;\n}\n\nexport class ComputerFactory {\n  getInstance(template: Computer): Computer {\n    return {\n      // Properties\n      ...structuredClone({\n        type: 'Computer',\n        computerType: template.computerType ?? 'unnamed',\n        label: template.label ?? template.computerType ?? 'unlabeled',\n        category: template.category,\n        inputs: template.inputs?.map(portableToPort) ?? [],\n        outputs: template.outputs?.map(portableToPort) ?? [],\n        params: template.params ?? [],\n      }),\n      // Methods\n      run: template.run ?? (async function*() {}),\n      canRun: template.canRun,\n    };\n  }\n}"
  },
  {
    "path": "packages/core/src/Diagram.test.ts",
    "content": "import { Diagram } from './Diagram';\nimport { Link } from './types/Link';\nimport { Node } from './types/Node';\nimport { Port } from './types/Port';\n\ndescribe('add', () => {\n  it('adds a node to the diagram', () => {\n    const diagram = new Diagram()\n    const node: Node = {\n      id: 'node-id',\n      type: 'MyNode',\n      inputs: [],\n      outputs: [],\n      params: [],\n    }\n\n    expect(diagram.nodes).toEqual([])\n    diagram.add(node)\n    expect(diagram.nodes).toEqual([node])\n  })\n})\n\ndescribe('nodeWithOutputPortId', () => {\n  it('returns the node given a output port id', () => {\n    const output: Port = {\n      id: 'output-port-id',\n      name: 'output',\n      schema: {},\n    }\n\n    const node: Node = {\n      id: 'node-id',\n      type: 'MyNode',\n      inputs: [],\n      outputs: [output],\n      params: [],\n    }\n\n    const diagram = new Diagram({ nodes: [node] })\n    const result = diagram.nodeWithOutputPortId('output-port-id')\n\n    expect(result).toMatchObject(node)\n  })\n\n  it('returns undefined if it could not find a matching node', () => {\n    const diagram = new Diagram()\n    const result = diagram.nodeWithOutputPortId('bad-id')\n\n    expect(result).toBe(undefined)\n  })\n})\n\ndescribe('connect', () => {\n  it('adds a link', () => {\n    const diagram = new Diagram()\n\n    const link: Link = {\n      id: 'fake-link-id',\n      sourcePortId: 'fake-port-id-1',\n      targetPortId: 'fake-port-id-2',\n    }\n\n    expect(diagram.links).toEqual([])\n    diagram.connect(link)\n    expect(diagram.links).toEqual([link])\n  })\n})\n\ndescribe('getLoops', () => {\n  it('returns empty array when no loops exist', () => {\n    const node1: Node = {\n      id: 'Node.1',\n      type: 'Node',\n      inputs: [],\n      outputs: [{ id: 'Node.1.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const node2: Node = {\n      id: 'Node.2',\n      type: 'Node',\n      inputs: [{ id: 'Node.2.input', name: 'input', schema: {} }],\n      outputs: [],\n      params: [],\n    };\n\n    const link: Link = {\n      id: 'Node.1.output-->Node.2.input',\n      sourcePortId: 'Node.1.output',\n      targetPortId: 'Node.2.input',\n    };\n\n    const diagram = new Diagram({\n      nodes: [node1, node2],\n      links: [link],\n    });\n\n    expect(diagram.getLoops()).toEqual([]);\n  });\n\n  it('finds simple two-node loop', () => {\n    const node1: Node = {\n      id: 'Loop.1',\n      type: 'Loop',\n      inputs: [{ id: 'Loop.1.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'Loop.1.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const node2: Node = {\n      id: 'Loop.2',\n      type: 'Loop',\n      inputs: [{ id: 'Loop.2.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'Loop.2.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const links: Link[] = [\n      {\n        id: 'Loop.1.output-->Loop.2.input',\n        sourcePortId: 'Loop.1.output',\n        targetPortId: 'Loop.2.input',\n      },\n      {\n        id: 'Loop.2.output-->Loop.1.input',\n        sourcePortId: 'Loop.2.output',\n        targetPortId: 'Loop.1.input',\n      },\n    ];\n\n    const diagram = new Diagram({\n      nodes: [node1, node2],\n      links,\n    });\n\n    const loops = diagram.getLoops();\n    expect(loops).toHaveLength(1);\n    expect(loops[0]).toHaveLength(2);\n    expect(loops[0]).toContain(node1);\n    expect(loops[0]).toContain(node2);\n  });\n\n  it('finds three-node loop', () => {\n    const node1: Node = {\n      id: 'Loop.1',\n      type: 'Loop',\n      inputs: [{ id: 'Loop.1.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'Loop.1.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const node2: Node = {\n      id: 'Loop.2',\n      type: 'Loop',\n      inputs: [{ id: 'Loop.2.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'Loop.2.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const node3: Node = {\n      id: 'Loop.3',\n      type: 'Loop',\n      inputs: [{ id: 'Loop.3.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'Loop.3.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const links: Link[] = [\n      {\n        id: 'Loop.1.output-->Loop.2.input',\n        sourcePortId: 'Loop.1.output',\n        targetPortId: 'Loop.2.input',\n      },\n      {\n        id: 'Loop.2.output-->Loop.3.input',\n        sourcePortId: 'Loop.2.output',\n        targetPortId: 'Loop.3.input',\n      },\n      {\n        id: 'Loop.3.output-->Loop.1.input',\n        sourcePortId: 'Loop.3.output',\n        targetPortId: 'Loop.1.input',\n      },\n    ];\n\n    const diagram = new Diagram({\n      nodes: [node1, node2, node3],\n      links,\n    });\n\n    const loops = diagram.getLoops();\n    expect(loops).toHaveLength(1);\n    expect(loops[0]).toHaveLength(3);\n    expect(loops[0]).toContain(node1);\n    expect(loops[0]).toContain(node2);\n    expect(loops[0]).toContain(node3);\n  });\n\n  it('finds multiple independent loops', () => {\n    // First loop: Loop.1 <--> Loop.2\n    const loop1Node1: Node = {\n      id: 'Loop.1',\n      type: 'Loop',\n      inputs: [{ id: 'Loop.1.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'Loop.1.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const loop1Node2: Node = {\n      id: 'Loop.2',\n      type: 'Loop',\n      inputs: [{ id: 'Loop.2.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'Loop.2.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    // Second loop: Loop.3 <--> Loop.4\n    const loop2Node1: Node = {\n      id: 'Loop.3',\n      type: 'Loop',\n      inputs: [{ id: 'Loop.3.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'Loop.3.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const loop2Node2: Node = {\n      id: 'Loop.4',\n      type: 'Loop',\n      inputs: [{ id: 'Loop.4.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'Loop.4.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const links: Link[] = [\n      // First loop\n      {\n        id: 'Loop.1.output-->Loop.2.input',\n        sourcePortId: 'Loop.1.output',\n        targetPortId: 'Loop.2.input',\n      },\n      {\n        id: 'Loop.2.output-->Loop.1.input',\n        sourcePortId: 'Loop.2.output',\n        targetPortId: 'Loop.1.input',\n      },\n      // Second loop\n      {\n        id: 'Loop.3.output-->Loop.4.input',\n        sourcePortId: 'Loop.3.output',\n        targetPortId: 'Loop.4.input',\n      },\n      {\n        id: 'Loop.4.output-->Loop.3.input',\n        sourcePortId: 'Loop.4.output',\n        targetPortId: 'Loop.3.input',\n      },\n    ];\n\n    const diagram = new Diagram({\n      nodes: [loop1Node1, loop1Node2, loop2Node1, loop2Node2],\n      links,\n    });\n\n    const loops = diagram.getLoops();\n    expect(loops).toHaveLength(2); // Two separate loops\n\n    // Sort loops by first node ID to ensure consistent order\n    const sortedLoops = [...loops].sort((a, b) => a[0].id.localeCompare(b[0].id));\n\n    // First loop should be Loop.1 <--> Loop.2\n    expect(sortedLoops[0]).toHaveLength(2);\n    expect(sortedLoops[0]).toContain(loop1Node1);\n    expect(sortedLoops[0]).toContain(loop1Node2);\n\n    // Second loop should be Loop.3 <--> Loop.4\n    expect(sortedLoops[1]).toHaveLength(2);\n    expect(sortedLoops[1]).toContain(loop2Node1);\n    expect(sortedLoops[1]).toContain(loop2Node2);\n  });\n});\n\ndescribe('getAncestors', () => {\n  it('returns empty array for node with no ancestors', () => {\n    const node: Node = {\n      id: 'Node.1',\n      type: 'Node',\n      inputs: [],\n      outputs: [],\n      params: [],\n    };\n\n    const diagram = new Diagram({ nodes: [node] });\n    expect(diagram.getAncestors(node)).toEqual([]);\n  });\n\n  it('returns direct ancestors', () => {\n    const ancestor: Node = {\n      id: 'Ancestor.1',\n      type: 'Ancestor',\n      inputs: [],\n      outputs: [{ id: 'Ancestor.1.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const child: Node = {\n      id: 'Child.1',\n      type: 'Child',\n      inputs: [{ id: 'Child.1.input', name: 'input', schema: {} }],\n      outputs: [],\n      params: [],\n    };\n\n    const link: Link = {\n      id: 'Ancestor.1.output-->Child.1.input',\n      sourcePortId: 'Ancestor.1.output',\n      targetPortId: 'Child.1.input',\n    };\n\n    const diagram = new Diagram({\n      nodes: [ancestor, child],\n      links: [link],\n    });\n\n    expect(diagram.getAncestors(child)).toEqual([ancestor]);\n  });\n\n  it('returns all ancestors in a chain', () => {\n    const grandparent: Node = {\n      id: 'Grandparent.1',\n      type: 'Grandparent',\n      inputs: [],\n      outputs: [{ id: 'Grandparent.1.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const parent: Node = {\n      id: 'Parent.1',\n      type: 'Parent',\n      inputs: [{ id: 'Parent.1.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'Parent.1.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const child: Node = {\n      id: 'Child.1',\n      type: 'Child',\n      inputs: [{ id: 'Child.1.input', name: 'input', schema: {} }],\n      outputs: [],\n      params: [],\n    };\n\n    const links: Link[] = [\n      {\n        id: 'Grandparent.1.output-->Parent.1.input',\n        sourcePortId: 'Grandparent.1.output',\n        targetPortId: 'Parent.1.input',\n      },\n      {\n        id: 'Parent.1.output-->Child.1.input',\n        sourcePortId: 'Parent.1.output',\n        targetPortId: 'Child.1.input',\n      },\n    ];\n\n    const diagram = new Diagram({\n      nodes: [grandparent, parent, child],\n      links,\n    });\n\n    const ancestors = diagram.getAncestors(child);\n    expect(ancestors).toHaveLength(2);\n    expect(ancestors).toContain(parent);\n    expect(ancestors).toContain(grandparent);\n  });\n\n  it('handles cycles without infinite recursion', () => {\n    const node1: Node = {\n      id: 'CycleNode.1',\n      type: 'CycleNode',\n      inputs: [{ id: 'CycleNode.1.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'CycleNode.1.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const node2: Node = {\n      id: 'CycleNode.2',\n      type: 'CycleNode',\n      inputs: [{ id: 'CycleNode.2.input', name: 'input', schema: {} }],\n      outputs: [{ id: 'CycleNode.2.output', name: 'output', schema: {} }],\n      params: [],\n    };\n\n    const links: Link[] = [\n      {\n        id: 'CycleNode.1.output-->CycleNode.2.input',\n        sourcePortId: 'CycleNode.1.output',\n        targetPortId: 'CycleNode.2.input',\n      },\n      {\n        id: 'CycleNode.2.output-->CycleNode.1.input',\n        sourcePortId: 'CycleNode.2.output',\n        targetPortId: 'CycleNode.1.input',\n      },\n    ];\n\n    const diagram = new Diagram({\n      nodes: [node1, node2],\n      links,\n    });\n\n    const ancestors = diagram.getAncestors(node1);\n    expect(ancestors).toHaveLength(1);\n    expect(ancestors).toContain(node2);\n  });\n});\n\ndescribe('clone', () => {\n  it('creates a deep clone of the diagram', () => {\n    const node: Node = {\n      id: 'node-id',\n      type: 'MyNode',\n      inputs: [],\n      outputs: [],\n      params: [],\n    };\n\n    const link: Link = {\n      id: 'link-id',\n      sourcePortId: 'port-id-1',\n      targetPortId: 'port-id-2',\n    };\n\n    const viewport = { x: 10, y: 20, zoom: 2 };\n    const diagram = new Diagram({ nodes: [node], links: [link], viewport });\n\n    const clone = diagram.clone();\n\n    expect(clone).not.toBe(diagram); // Different instances\n    expect(clone.nodes).toEqual(diagram.nodes);\n    expect(clone.links).toEqual(diagram.links);\n    expect(clone.viewport).toEqual(diagram.viewport);\n\n    // Modify clone and check original remains unchanged\n    clone.nodes[0].id = 'modified-node-id';\n    expect(diagram.nodes[0].id).toBe('node-id');\n  });\n});"
  },
  {
    "path": "packages/core/src/Diagram.ts",
    "content": "import { PortId } from './types/PortId'\nimport { Link, LinkId } from './types/Link'\nimport { Node, NodeId } from './types/Node'\nimport { Param } from './Param'\nimport { PortName } from './types/Port';\n\nexport class Diagram {\n  type = 'Diagram'\n  nodes: Node[]\n  links: Link[]\n  params: Param[]\n  viewport: { x: number, y: number, zoom: number }\n\n  constructor(options?: {\n    nodes?: Node[],\n    links?: Link[],\n    params?: Param[],\n    viewport?: { x: number, y: number, zoom: number }\n  }) {\n    this.nodes = options?.nodes || []\n    this.links = options?.links || []\n    this.params = options?.params || []\n    this.viewport = options?.viewport || {\n      x: 0,\n      y: 0,\n      zoom: 1,\n    }\n  }\n\n  clone(): Diagram {\n    return new Diagram({\n      nodes: this.nodes.map(node => ({ ...node })),\n      links: this.links.map(link => ({ ...link })),\n      params: this.params.map(param => ({ ...param })),\n      viewport: { ...this.viewport },\n    });\n  }\n\n  add(node: Node) {\n    this.nodes.push(node)\n\n    return this\n  }\n\n  connect(link: Link) {\n    this.links.push(link)\n\n    return this\n  }\n\n  disconnect(linkId: LinkId) {\n    this.links = this.links.filter(l => l.id !== linkId)\n\n    return this\n  }\n\n  linksAtInputPortId(id: PortId | undefined): Link[] {\n    return this.links.filter(link => link.targetPortId === id)\n  }\n\n  linksAtOutputPortId(id: PortId | undefined): Link[] {\n    return this.links.filter(link => link.sourcePortId === id)\n  }\n\n  nodeWithInputPortId(portId: PortId): Node | undefined {\n    return this.nodes.find(node => {\n      return node.inputs.find(input => input.id === portId)\n    })\n  }\n\n  nodeWithOutputPortId(portId: PortId): Node | undefined {\n    return this.nodes.find(node => {\n      return node.outputs.find(output => output.id === portId)\n    })\n  }\n\n  linksAtInput(node: Node, name: PortName): Link[] {\n    const port = node.inputs.find(input => input.name === name)!\n\n    return this.linksAtInputPortId(port.id)\n  }\n\n  linksAtOutput(node: Node, name: PortName): Link[] {\n    const port = node.outputs.find(input => input.name === name)!\n\n    return this.linksAtOutputPortId(port.id)\n  }\n\n  getNodeIdAndPortIdFromLinkId(linkId: LinkId): { nodeId: NodeId, portId: PortId } {\n    const link = this.links.find(link => link.id === linkId)\n\n    if (!link) throw new Error(`Link with id ${linkId} not found`)\n\n    const sourceNode = this.nodeWithOutputPortId(link.sourcePortId)\n    const targetNode = this.nodeWithInputPortId(link.targetPortId)\n\n    if (!sourceNode || !targetNode) throw new Error(`Source or target node not found for link ${linkId}`)\n\n    return {\n      nodeId: targetNode.id,\n      portId: link.targetPortId,\n    }\n  }\n\n  getInputLinkIdsFromNodeIdAndPortName(nodeId: NodeId, portName: PortName = 'input'): LinkId[] | undefined {\n    const node = this.nodes.find(node => node.id === nodeId)\n    if (!node) return;\n\n    const port = node.inputs.find(input => input.name === portName)\n    if (!port) return;\n\n    const linkIds = this.linksAtInputPortId(port.id).map(link => link.id);\n    if (!linkIds.length) return;\n\n    return linkIds;\n  }\n\n  getOutputLinkIdsFromNodeId(nodeId: NodeId): LinkId[] {\n    const node = this.nodes.find(node => node.id === nodeId)!;\n    const outputIds = node.outputs.map(output => output.id);\n    return this.links.filter(link => outputIds.includes(link.sourcePortId)).map(link => link.id);\n  }\n\n  directAncestor(node: Node): Node[] {\n    const inputLinks = node.inputs.flatMap(input => this.linksAtInputPortId(input.id))\n    const outputPortIds = inputLinks.map(link => link.sourcePortId)\n    return outputPortIds.map(portId => this.nodeWithOutputPortId(portId)!)\n  }\n\n  directDescendant(node: Node): Node[] {\n    const outputLinks = node.outputs.flatMap(output => this.linksAtOutputPortId(output.id))\n    const inputPortIds = outputLinks.map(link => link.targetPortId)\n\n    return inputPortIds.map(portId => this.nodeWithInputPortId(portId)!)\n  }\n\n  inputNodes(): Node[] {\n    return this.nodes.filter(node => node.type === 'Input')\n  }\n\n  getAncestors(node: Node, visited: Set<Node> = new Set()): Node[] {\n    const ancestorNodes: Node[] = [];\n    const stack = [node];\n    visited.add(node);\n\n    while (stack.length > 0) {\n      const current = stack.pop()!;\n      const directAncestors = this.directAncestor(current);\n\n      for (const ancestor of directAncestors) {\n        if (!visited.has(ancestor)) {\n          visited.add(ancestor);\n          ancestorNodes.push(ancestor);\n          stack.push(ancestor);\n        }\n      }\n    }\n\n    return ancestorNodes;\n  }\n\n  hasLoop(): boolean {\n    return this.getLoops().length > 0\n  }\n\n  getLoopForNode(node: Node): Node[] {\n    const all = this.getLoops()\n    return all.find(loop => loop.includes(node))!\n  }\n\n  getLoopLinks(loop: Node[]): Link[] {\n    return this.links.filter(link => {\n      const sourceNode = this.nodes.find(node =>\n        [...node.inputs, ...node.outputs].some(port => port.id === link.sourcePortId),\n      )\n      const targetNode = this.nodes.find(node =>\n        [...node.inputs, ...node.outputs].some(port => port.id === link.targetPortId),\n      )\n      return sourceNode && targetNode && loop.includes(sourceNode) && loop.includes(targetNode)\n    })\n  }\n\n  getAnscestorLinks(node: Node): Link[] {\n    const ancestors = this.getAncestors(node)\n    const links: Link[] = [];\n\n    for(const ancestor of ancestors) {\n      const inputPorts = ancestor.inputs;\n      for(const inputPort of inputPorts) {\n        const linksAtInput = this.linksAtInputPortId(inputPort.id)\n        links.push(...linksAtInput)\n      }\n    }\n\n    return links\n  }\n\n  getLoops(): Node[][] {\n    const foundLoops = new Set<string>();\n    const loops: Node[][] = [];\n\n    for (const startNode of this.nodes) {\n      const visited = new Set<Node>();\n      const findLoop = (node: Node, path: Node[] = []): void => {\n        if (path.includes(node)) {\n          const loopStart = path.indexOf(node);\n          const loopNodes = path.slice(loopStart);\n\n          // Sort node IDs to ensure consistent order for set comparison\n          const loopKey = [...loopNodes].sort((a, b) => a.id.localeCompare(b.id)).map(n => n.id).join(',');\n\n          if (!foundLoops.has(loopKey)) {\n            foundLoops.add(loopKey);\n            loops.push(loopNodes);\n          }\n          return;\n        }\n\n        path.push(node);\n        for (const ancestor of this.directAncestor(node)) {\n          if (!visited.has(ancestor)) {\n            visited.add(ancestor);\n            findLoop(ancestor, [...path]);\n          }\n        }\n      };\n\n      findLoop(startNode);\n    }\n\n    return loops;\n  }\n\n  outputNodes(): Node[] {\n    return this.nodes.filter(node => node.type === 'Output')\n  }\n}"
  },
  {
    "path": "packages/core/src/DiagramBuilder.test.ts",
    "content": "import { core } from './core';\nimport { Diagram } from './Diagram';\n\ndescribe('get', () => {\n  it('returns the diagram', () => {\n    const diagram = core.getDiagramBuilder().get()\n\n    expect(diagram).toBeInstanceOf(Diagram)\n  })\n\n  it('does not reposition or link nodes by default',async  () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Create')\n      .add('Pass')\n      .get()\n\n    // Everything at default 0, 0\n    expect(diagram.nodes).toMatchObject([\n      { position: { x: 0, y: 0 } },\n      { position: { x: 0, y: 0 } },\n    ])\n\n    // No links\n    expect(diagram.links).toMatchObject([])\n  })\n})\n\ndescribe('add', () => {\n  it('adds node to the diagram', async() => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Create')\n      .add('Ignore')\n      .get()\n\n    expect(diagram.nodes).toMatchObject([\n      { id: 'Create.1', type: 'Create' },\n      { id: 'Ignore.1', type: 'Ignore' },\n    ])\n  })\n\n  it('can set stringable params', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Signal', { period: 99 })\n      .get()\n\n    const [ node ] = diagram.nodes\n\n    const periodParam = node.params\n      .find(param => param.name === 'period')\n\n    expect(periodParam).toMatchObject({\n      name: 'period',\n      input: {\n        rawValue: 99,\n      },\n    })\n  })\n\n  it('can set label', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Signal', { label: 'Read' })\n      .get()\n\n    const [ node ] = diagram.nodes\n\n    expect(node.label).toBe('Read')\n  })\n\n  it('can set position', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Signal', { position: { x: 100, y: 200 } })\n      .get()\n\n    const [ node ] = diagram.nodes\n\n    expect(node.position).toMatchObject({ x: 100, y: 200 })\n  })\n\n  it('has a default position of 0, 0', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Signal')\n      .get()\n\n    const [ node ] = diagram.nodes\n\n    expect(node.position).toMatchObject({ x: 0, y: 0 })\n  })\n\n  it('can add multiple nodes of same type', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Pass')\n      .add('Pass')\n      .get()\n\n    const [ pass1, pass2 ] = diagram.nodes\n\n    expect(pass1.id).toBe('Pass.1')\n    expect(pass2.id).toBe('Pass.2')\n  })\n})\n\ndescribe('place', () => {\n  it('positions nodes gracefully', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Signal')\n      .add('Pass')\n      .place()\n      .get()\n\n    expect(diagram.nodes).toMatchObject([\n      { position: { x: 50, y: 50 } },\n      { position: { x: 250, y: 50 } },\n    ])\n  })\n})\n\ndescribe('jiggle', () => {\n  it('jiggles nodes', async () => {\n    // Mock Math.random to return a predictable sequence of values\n    const mockRandomValues = [0.1, 0.5, 0.9, 1];\n    let randomCallIndex = 0;\n\n    vi.spyOn(Math, 'random').mockImplementation(() => {\n      const value = mockRandomValues[randomCallIndex % mockRandomValues.length];\n      randomCallIndex++;\n      return value;\n    });\n\n    // Boot the application and apply jiggle\n    const app = await core.boot();\n    const diagram = app.getDiagramBuilder()\n      .add('Signal')\n      .add('Pass')\n      .jiggle()\n      .get();\n\n    const [signal, pass] = diagram.nodes;\n\n    // Verify the positions have changed as expected\n    expect(signal.position).toMatchObject({\n      x: 20,\n      y: 0,\n    });\n\n    expect(pass.position).toMatchObject({\n      x: -20,\n      y: -12.5,\n    });\n\n    // Restore the original Math.random\n    vi.restoreAllMocks();\n  });\n});\n\ndescribe('connect', () => {\n  it('connects nodes using a string', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Create')\n      .add('Pass')\n      .connect(`\n        Create.1.output ---> Pass.1.input\n      `)\n      .get()\n\n    expect(diagram.links).toMatchObject([\n      {\n        sourcePortId: 'Create.1.output',\n        targetPortId: 'Pass.1.input',\n      },\n    ])\n  })\n\n  it('can make multiple links', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Create')\n      .add('Pass')\n      .add('Ignore')\n      .connect(`\n        Create.1.output ---> Pass.1.input\n        Create.1.output ---> Ignore.1.input\n      `)\n      .get()\n\n    expect(diagram.links).toMatchObject([\n      {\n        sourcePortId: 'Create.1.output',\n        targetPortId: 'Pass.1.input',\n      },\n      {\n        sourcePortId: 'Create.1.output',\n        targetPortId: 'Ignore.1.input',\n      },\n    ])\n  })\n\n  it('throws if source node does not exist', async () => {\n    const app = await core.boot()\n\n    expect(() => {\n      app.getDiagramBuilder()\n        .add('Pass')\n        .connect(`\n          Typo.1.typo ---> Pass.1.input\n        `)\n    }).toThrow('Source node with id Typo.1 not found')\n  })\n\n  it('throws if target node does not exist', async () => {\n    const app = await core.boot()\n\n    expect(() => {\n      app.getDiagramBuilder()\n        .add('Create')\n        .connect(`\n          Create.1.output ---> Typo.1.typo\n        `)\n    }).toThrow('Target node with id Typo.1 not found')\n  })\n\n  it('throws if source port does not exist', async () => {\n    const app = await core.boot()\n\n    expect(() => {\n      app.getDiagramBuilder()\n        .add('Create')\n        .add('Pass')\n        .connect(`\n          Create.1.typo ---> Pass.1.input\n        `)\n    }).toThrow('Source port with id Create.1.typo not found')\n  })\n\n  it('throws if target port does not exist', async () => {\n    const app = await core.boot()\n\n    expect(() => {\n      app.getDiagramBuilder()\n        .add('Create')\n        .add('Pass')\n        .connect(`\n          Create.1.output ---> Pass.1.typo\n        `)\n    }).toThrow('Target port with id Pass.1.typo not found')\n  })\n})"
  },
  {
    "path": "packages/core/src/DiagramBuilder.ts",
    "content": "import { Diagram } from './Diagram';\nimport { Param, ParamInput, StringableInputValue } from './Param';\nimport { Computer } from './types/Computer';\nimport { Node } from './types/Node';\nimport { NodeDescription } from './types/NodeDescription';\nimport { PortId } from './types/PortId';\nimport { isStringableParam } from './utils/isStringableParam';\n\n// type ParamConfig = Record<string, ParamValue> | Partial<Param>\ntype ParamConfig = {\n  [paramName: string]: (\n    | ParamInput\n    | Partial<Param>\n    | Record<string, ParamInput & Partial<Param>>\n    | any // TODO ¯\\_(ツ)_/¯\n  )\n}\ntype AddNodeConfig =\n  undefined\n  | Omit<Partial<Computer>, 'params'> | ParamConfig\n\nexport class DiagramBuilder {\n  private diagram = new Diagram()\n\n  constructor(private nodeDescriptions: NodeDescription[]) {}\n\n  add(nodeName: string, config?: AddNodeConfig) {\n    const description = this.nodeDescriptions.find(e => e.computerType === nodeName)\n\n    if (!description) throw new Error(`Description for a Node ${nodeName} not found`)\n\n    this.addNodeFromDescription(description, config)\n\n    return this\n  }\n\n  addNestedNode(name: string, diagram: Diagram, params: Record<string, any> = {}) {\n    const nodeId = `${name}.${this.getScopedId(name)}`\n\n    const node: Node = {\n      id: nodeId,\n      label: name,\n      type: name,\n      // The inputs have not yet been assigned ids, do it here\n      inputs: diagram.inputNodes().map(inputNode => {\n        const param = inputNode.params.find(param => param.name === 'port_name')!;\n        const inputName = param?.input.rawValue\n\n        return {\n          name: inputName,\n          id: `${nodeId}.${inputName}`,\n          schema: {},\n        }\n      }),\n      // The outputs have not yet been assigned ids, to it here\n      outputs: diagram.outputNodes().map(outputNode => {\n        const param = outputNode.params.find(param => param.name === 'port_name')!;\n        const outputName = param?.input.rawValue\n\n        return {\n          name: outputName,\n          id: `${nodeId}.${outputName}`,\n          schema: {},\n        }\n      }),\n      // default params\n      params: diagram.params,\n      position: { x: 0, y: 0 },\n    }\n\n    // set explicit params\n    for(const [key, value] of Object.entries(params)) {\n      const param = node.params.find(param => param.name === key)\n\n      if(!param) throw new Error(`Bad param: ${key}. Param not found on ${node.id}`)\n\n      param.input = isStringableParam(param.type) ? { ...(param.input as StringableInputValue ?? {}), value } : value;\n    }\n\n    this.diagram.nodes.push(node)\n\n    return this\n  }\n\n  place() {\n    // Configuration for layout, adjust as needed\n    const nodeWidth = 150;\n    const nodeHeight = 100;\n    const padding = 50;\n\n    // Determine grid layout\n    let x = padding;\n    let y = padding;\n\n    this.diagram.nodes.forEach((node, index) => {\n      // Place the node in a grid-like structure\n      node.position!.x = node.position!.x ? node.position!.x : x;\n      node.position!.y = node.position!.y ? node.position!.y : y;\n\n      // Move to the next column\n      x += nodeWidth + padding;\n\n      // Wrap to the next row if necessary\n      if ((index + 1) % 5 === 0) { // 5 nodes per row, adjust as needed\n        x = padding;\n        y += nodeHeight + padding;\n      }\n    });\n\n    return this;\n  }\n\n  connect(connections? : string | [fromPortId: PortId, toPortId: PortId][]) {\n    if(!connections) return this.guessConnections()\n    if(typeof connections === 'string') return this.connectByString(connections)\n\n    return this.connectByArray(connections)\n  }\n\n  withParams(params: Param[]) {\n    this.diagram.params = params\n\n    return this\n  }\n\n  connectByArray(connections: [fromPortId: PortId, toPortId: PortId][]) {\n    for(const [fromPortId, toPortId] of connections) {\n      const sourceNodeId = fromPortId.split('.').slice(0, -1).join('.');\n      const targetNodeId = toPortId.split('.').slice(0, -1).join('.');\n\n      const sourceNode = this.diagram.nodes.find(n => n.id === sourceNodeId)\n      const targetNode = this.diagram.nodes.find(n => n.id === targetNodeId)\n\n      if(!sourceNode) throw new Error(`Source node with id ${sourceNodeId} not found`)\n      if(!targetNode) throw new Error(`Target node with id ${targetNodeId} not found`)\n\n      const sourcePort = sourceNode.outputs.find(o => o.id === fromPortId)\n      const targetPort = targetNode.inputs.find(i => i.id === toPortId)\n\n      if(!sourcePort) throw new Error(`Source port with id ${fromPortId} not found`)\n      if(!targetPort) throw new Error(`Target port with id ${toPortId} not found`)\n\n      const link = {\n        id: `${sourcePort.id}--->${targetPort.id}`,\n        sourcePortId: fromPortId,\n        targetPortId: toPortId,\n      }\n\n      this.diagram.links.push(link)\n    }\n\n    return this\n  }\n\n  connectByString(connections: string) {\n    const parsed: [from: string, to: string][] = connections\n    // Process line by line\n      .split('\\n')\n    // Remove empty lines\n      .map(line => line.trim()).filter(Boolean)\n    // Remove whitespace and \"|\"\n      .map(line => line.replace(/\\s+/g, ''))\n    // Split by arrows of any length\n      .map(line => line.split(/-+>/))\n    // Ensure two parts or throw\n      .map((parts) => {\n        const [from, to, rest] = parts\n\n        if (!from || !to) throw new Error(`Invalid line connection string: \\n${connections}\\nCould not resolve from & to parts.`);\n        if(rest) throw new Error(`Invalid line connection string: \\n${connections}\\nToo many parts.`);\n\n        return [from, to]\n      })\n    // Ensure correct format\n      .map(([from, to]) => {\n        const fromParts = from.split('.')\n        const toParts = to.split('.')\n\n        if(fromParts.length !== 3) throw new Error(`Invalid line connection string: \\n${connections}. Use format: <NodeName>.<Count>.<PortName>.`);\n        if(toParts.length !== 3) throw new Error(`Invalid line connection string: \\n${connections}. Use format: <NodeName>.<Count>.<PortName>.`);\n\n        return [from, to]\n      })\n\n    return this.connectByArray(parsed)\n  }\n\n  guessConnections() {\n    for (let i = 0; i < this.diagram.nodes.length - 1; i++) {\n      const current = this.diagram.nodes[i]\n      const next = this.diagram.nodes[i + 1]\n\n      if (current.outputs.length === 0 || next.inputs.length === 0) {\n        continue\n      }\n\n      const firstOutput = current.outputs[0]\n      const firstInput = next.inputs[0]\n\n      const link = {\n        id: `${current.id}--->${next.id}`,\n        sourcePortId: firstOutput.id,\n        targetPortId: firstInput.id,\n      }\n\n      this.diagram.links.push(link)\n    }\n\n    return this\n  }\n\n  jiggle(jitter = { x: 50, y: 25 }) {\n    for(const node of this.diagram.nodes) {\n      node.position!.x += (0.5 - Math.random()) * jitter.x\n      node.position!.y += (0.5 - Math.random()) * jitter.y\n    }\n\n    return this\n  }\n\n  get(): Diagram {\n    return this.diagram\n  }\n\n  private nodeDescriptionToDiagramNode(nodeDescription: NodeDescription): Node {\n    const id = `${nodeDescription.computerType}.${this.getScopedId(nodeDescription.computerType)}`;\n\n    return structuredClone({\n      id,\n      type: nodeDescription.computerType,\n      label: nodeDescription.label,\n      inputs: nodeDescription.inputs.map(input => {\n        return {\n          id: `${id}.${input.name}`,\n          name: input.name,\n          schema: input.schema,\n        }\n      }),\n      outputs: nodeDescription.outputs.map(output => {\n        return {\n          id: `${id}.${output.name}`,\n          name: output.name,\n          schema: output.schema,\n        }\n      }),\n      params: nodeDescription.params || [],\n      position: { x: 0, y: 0 },\n    })\n  }\n\n  private addNodeFromDescription(nodeDescription: NodeDescription, config: AddNodeConfig) {\n    const node = this.nodeDescriptionToDiagramNode(nodeDescription)\n\n    if(!config) {\n      this.diagram.nodes.push(node)\n      return this\n    }\n\n    for(const [key, value] of Object.entries(config)) {\n      // ****************************************************\n      // Special case for label\n      // ****************************************************\n      if(key === 'label') {\n        node.label = value\n        continue\n      }\n\n      // ****************************************************\n      // Special case for position\n      // ****************************************************\n      if(key === 'position') {\n        node.position = value\n        continue\n      }\n\n      let param = node.params.find(p => p.name === key)\n      if(!param) throw new Error(`Param ${key} not found`)\n\n      if(typeof value === 'object') {\n        param = {\n          ...param,\n          input: {\n            ...(param.input as Object),\n            ...value,\n          },\n        }\n        continue\n      }\n\n      // Default\n      (param.input as StringableInputValue).rawValue = value\n    }\n\n    this.diagram.nodes.push(node)\n  }\n\n  protected getScopedId(nodeName: string) {\n    const max = this.diagram.nodes\n      .filter(node => node.type === nodeName)\n      .map(node => node.id)\n      .map(id => id.split('.')[1])\n      .map(id => parseInt(id))\n      .reduce((max, id) => Math.max(max, id), 0)\n\n    return max + 1\n  }\n}"
  },
  {
    "path": "packages/core/src/DiagramQuery.ts",
    "content": "import { Diagram } from './Diagram';\nimport { PortId } from './types/PortId';\n\nexport type NodeLabel = string\nexport type NodeId = string\nexport type NodeType = string\n\n// <Type>.<PortName>\nexport type PortDescriptor = string\n\nexport class DiagramQuery {\n  constructor(private diagram: Diagram) {}\n\n  arePortsConnected(sourcePort: PortDescriptor, targetPort: PortDescriptor): boolean {\n    const fromPortId = this.getPortId(sourcePort)\n    const toPortId = this.getPortId(targetPort)\n\n    return this.diagram.links.some(link => {\n      return link.sourcePortId === fromPortId && link.targetPortId === toPortId\n    })\n  }\n\n  protected getPortId(portDescriptor: PortDescriptor): PortId {\n    const [nodeType, portName] = portDescriptor.split('.')\n\n    const node = this.diagram.nodes.find(node => node.type === nodeType)\n    if(!node) throw new Error(`Node with type ${nodeType} not found in diagram`);\n\n    const port = [\n      ...node.inputs,\n      ...node.outputs,\n    ].find(output => output.name === portName)\n    if(!port) throw new Error(`Port with name ${portName} not found on node ${nodeType}`);\n\n    return port.id\n  }\n}"
  },
  {
    "path": "packages/core/src/ExecutableDiagram.ts",
    "content": "import { Diagram } from './Diagram'\nimport { Param } from './Param'\nimport { NodeId } from './types/Node'\n\nexport type ExecutableDiagram = {\n  diagram: Diagram\n  unfoldedGlobalParams: Record<NodeId, Param[]>\n}"
  },
  {
    "path": "packages/core/src/ExecutionMemory.test.ts",
    "content": "import { ExecutionMemory } from './ExecutionMemory';\nimport { NodeId } from './types/Node';\nimport { LinkId } from './types/Link';\nimport { ItemValue } from './types/ItemValue';\nimport { NodeRunnerContext } from './NodeRunnerContext';\n\ndescribe('ExecutionMemory', () => {\n  describe('getNodeStatus', () => {\n    it('returns the correct status for a node', () => {\n      const memory = new ExecutionMemory();\n      memory.setNodeStatus('id', 'COMPLETE');\n\n      const retrieved = memory.getNodeStatus('id');\n      expect(retrieved).toEqual('COMPLETE');\n    });\n\n    it('returns undefined if node status is not set', () => {\n      const memory = new ExecutionMemory();\n\n      const retrieved = memory.getNodeStatus('id');\n      expect(retrieved).toEqual(undefined);\n    });\n  });\n\n  describe('setNodeStatus', () => {\n    it('sets the status of a node correctly', () => {\n      const memory = new ExecutionMemory();\n      const nodeId: NodeId = 'node1';\n      const status = 'BUSY';\n\n      memory.setNodeStatus(nodeId, status);\n      const retrieved = memory.getNodeStatus(nodeId);\n\n      expect(retrieved).toEqual(status);\n    });\n  });\n\n  describe('getNodeStatuses', () => {\n    it('returns all node statuses correctly', () => {\n      const memory = new ExecutionMemory();\n      const nodeId1: NodeId = 'node1';\n      const nodeId2: NodeId = 'node2';\n      const status1 = 'AVAILABLE';\n      const status2 = 'COMPLETE';\n\n      memory.setNodeStatus(nodeId1, status1);\n      memory.setNodeStatus(nodeId2, status2);\n\n      const retrieved = memory.getNodeStatuses();\n\n      expect(retrieved.get(nodeId1)).toEqual(status1);\n      expect(retrieved.get(nodeId2)).toEqual(status2);\n    });\n\n    it('returns an empty map if no node statuses are set', () => {\n      const memory = new ExecutionMemory();\n\n      const retrieved = memory.getNodeStatuses();\n\n      expect(retrieved.size).toEqual(0);\n    });\n  });\n\n  describe('getNodeRunner', () => {\n    it('returns the correct runner for a node', () => {\n      const memory = new ExecutionMemory();\n      const nodeId: NodeId = 'node1';\n      const context = new NodeRunnerContext(nodeId);\n      context.status = vi.fn() as any;\n      memory.setNodeRunnerContext(nodeId, context);\n\n      const retrieved = memory.getNodeRunner(nodeId);\n      expect(retrieved).toBe(context.status);\n    });\n\n    it('returns undefined if node runner is not set', () => {\n      const memory = new ExecutionMemory();\n      const nodeId: NodeId = 'node1';\n\n      const retrieved = memory.getNodeRunner(nodeId);\n      expect(retrieved).toBeUndefined();\n    });\n  });\n\n  describe('getNodeRunnerContext', () => {\n    it('returns the correct context for a node', () => {\n      const memory = new ExecutionMemory();\n      const nodeId: NodeId = 'node1';\n      const context = new NodeRunnerContext(nodeId);\n      memory.setNodeRunnerContext(nodeId, context);\n\n      const retrieved = memory.getNodeRunnerContext(nodeId);\n      expect(retrieved).toBe(context);\n    });\n\n    it('returns undefined if node runner context is not set', () => {\n      const memory = new ExecutionMemory();\n      const nodeId: NodeId = 'node1';\n\n      const retrieved = memory.getNodeRunnerContext(nodeId);\n      expect(retrieved).toBeUndefined();\n    });\n  });\n\n  describe('setNodeRunnerContext', () => {\n    it('sets the runner context of a node correctly', () => {\n      const memory = new ExecutionMemory();\n      const nodeId: NodeId = 'node1';\n      const context = new NodeRunnerContext(nodeId);\n      memory.setNodeRunnerContext(nodeId, context);\n\n      const retrieved = memory.getNodeRunnerContext(nodeId);\n      expect(retrieved).toBe(context);\n    });\n  });\n\n  describe('getLinkItems', () => {\n    it('returns the correct items for a link', () => {\n      const memory = new ExecutionMemory();\n      const linkId: LinkId = 'link1';\n      const items: ItemValue[] = [{ i: 1 }, { i: 2 }, { i: 3 }];\n\n      memory.setLinkItems(linkId, items);\n\n      const retrieved = memory.getLinkItems(linkId);\n      expect(retrieved).toEqual(items);\n    });\n\n    it('returns undefined if link items are not set', () => {\n      const memory = new ExecutionMemory();\n      const linkId: LinkId = 'link1';\n\n      const retrieved = memory.getLinkItems(linkId);\n      expect(retrieved).toBeUndefined();\n    });\n  });\n\n  describe('pullLinkItems', () => {\n    it('pulls the correct number of items from a link', () => {\n      const memory = new ExecutionMemory();\n      const linkId: LinkId = 'link1';\n      const items: ItemValue[] = [{ i: 1 }, { i: 2 }, { i: 3 }];\n      memory.setLinkItems(linkId, items);\n\n      const count = 2;\n      const pulled = memory.pullLinkItems(linkId, count);\n\n      expect(pulled).toEqual([{ i: 1 }, { i: 2 }]);\n      expect(memory.getLinkItems(linkId)).toEqual([{ i: 3 }]);\n    });\n\n    it('pulls all items from a link if count exceeds the number of items', () => {\n      const memory = new ExecutionMemory();\n      const linkId: LinkId = 'link1';\n      const items: ItemValue[] = [{ i: 1 }, { i: 2 }, { i: 3 }];\n      memory.setLinkItems(linkId, items);\n\n      const count = 5; // Exceeds the number of items\n      const pulled = memory.pullLinkItems(linkId, count);\n\n      expect(pulled).toMatchObject([{ i: 1 }, { i: 2 }, { i: 3 }]);\n      expect(memory.getLinkItems(linkId)).toEqual([]);\n    });\n  });\n\n  describe('pushLinkItems', () => {\n    it('pushes items to a link correctly', () => {\n      const linkId: LinkId = 'link1';\n\n      const memory = new ExecutionMemory({\n        linkItems: new Map()\n          .set('link1', [{ i: 1 }, { i: 2 }]),\n      });\n\n      memory.pushLinkItems(linkId, [{ i: 3 }]);\n\n      expect(memory.getLinkItems(linkId)).toMatchObject([\n        { i: 1 }, { i: 2 }, { i: 3 },\n      ]);\n    });\n  });\n\n  describe('setLinkItems', () => {\n    it('sets the items of a link correctly', () => {\n      const memory = new ExecutionMemory();\n      const linkId: LinkId = 'link1';\n      const items: ItemValue[] = [{ i: 1 }, { i: 2 }];\n\n      memory.setLinkItems(linkId, items);\n\n      expect(memory.getLinkItems(linkId)).toEqual(items);\n    });\n  });\n\n  describe('getLinkCount', () => {\n    it('returns the correct count for a link', () => {\n      const memory = new ExecutionMemory();\n      const linkId: LinkId = 'link1';\n      const count = 5;\n\n      memory.setLinkCount(linkId, count);\n\n      const retrieved = memory.getLinkCount(linkId);\n      expect(retrieved).toEqual(count);\n    });\n\n    it('returns undefined if link count is not set', () => {\n      const memory = new ExecutionMemory();\n      const linkId: LinkId = 'link1';\n\n      const retrieved = memory.getLinkCount(linkId);\n      expect(retrieved).toBeUndefined();\n    });\n  });\n\n  describe('setLinkCount', () => {\n    it('sets the count of a link correctly', () => {\n      const memory = new ExecutionMemory();\n      const linkId: LinkId = 'link1';\n      const count = 5;\n\n      memory.setLinkCount(linkId, count);\n\n      const retrieved = memory.getLinkCount(linkId);\n      expect(retrieved).toEqual(count);\n    });\n  });\n\n  describe('getInputDevice', () => {\n    it('returns the correct input device for a node', () => {\n      const memory = new ExecutionMemory();\n      const nodeId: NodeId = 'node1';\n      const device = vi.fn() as any;\n\n      memory.setInputDevice(nodeId, device);\n\n      const retrieved = memory.getInputDevice(nodeId);\n      expect(retrieved).toBe(device);\n    });\n\n    it('returns undefined if input device is not set', () => {\n      const memory = new ExecutionMemory();\n      const nodeId: NodeId = 'node1';\n\n      const retrieved = memory.getInputDevice(nodeId);\n      expect(retrieved).toBeUndefined();\n    });\n  });\n\n  describe('setInputDevice', () => {\n    it('sets the input device of a node correctly', () => {\n      const memory = new ExecutionMemory();\n      const nodeId: NodeId = 'node1';\n      const device = vi.fn() as any;\n\n      memory.setInputDevice(nodeId, device);\n\n      const retrieved = memory.getInputDevice(nodeId);\n      expect(retrieved).toBe(device);\n    });\n  });\n\n  describe('pushHooks', () => {\n    it('pushes hooks correctly', () => {\n      const memory = new ExecutionMemory();\n      const hooks = [{\n        type: 'TEST_HOOK',\n        args: ['arg1', 'arg2'],\n      }];\n\n      memory.pushHooks(hooks);\n\n      expect(memory.hooks).toEqual(hooks);\n    });\n  });\n\n  describe('pullHooks', () => {\n    it('pulls hooks correctly', () => {\n      const memory = new ExecutionMemory();\n      const hooks = [{\n        type: 'TEST_HOOK',\n        args: ['arg1', 'arg2'],\n      }];\n\n      memory.pushHooks(hooks);\n\n      const pulled = memory.pullHooks();\n\n      expect(pulled).toEqual(hooks);\n      expect(memory.hooks).toEqual([]);\n    });\n  });\n});"
  },
  {
    "path": "packages/core/src/ExecutionMemory.ts",
    "content": "import { NodeStatus } from './Executor'\nimport { LinkId } from './types/Link'\nimport { NodeId } from './types/Node'\nimport { ItemValue } from './types/ItemValue'\nimport { Hook } from './types/Hook'\nimport { InputDevice } from './InputDevice'\nimport { OutputDevice } from './OutputDevice'\nimport { ObserverController } from './ObserverController'\nimport { RequestObserverType } from './types/InputObserveConfig';\nimport { NodeRunnerContext } from './NodeRunnerContext'\n\ntype MemoryValues = {\n  nodeStatuses?: Map<NodeId, NodeStatus>,\n  nodeRunnerContexts?: Map<NodeId, NodeRunnerContext>,\n  linkItems?: Map<LinkId, ItemValue[]>,\n  linkCounts?: Map<LinkId, number>\n  inputDevices?: Map<NodeId, InputDevice>,\n  outputDevices?: Map<NodeId, OutputDevice>,\n  hooks?: any[],\n  observerController?: ObserverController,\n}\n\nexport class ExecutionMemory {\n  nodeStatuses: Map<NodeId, NodeStatus>\n  nodeRunnerContexts: Map<NodeId, NodeRunnerContext>\n  linkItems: Map<LinkId, ItemValue[]>\n  linkCounts: Map<LinkId, number>\n  inputDevices: Map<NodeId, InputDevice>\n  outputDevices: Map<NodeId, OutputDevice>\n  hooks: Hook[]\n  observerController?: ObserverController\n\n  constructor(values: MemoryValues = {}) {\n    this.nodeStatuses = values.nodeStatuses || new Map()\n    this.nodeRunnerContexts = values.nodeRunnerContexts || new Map()\n    this.linkItems = values.linkItems || new Map()\n    this.linkCounts = values.linkCounts || new Map()\n    this.inputDevices = values.inputDevices || new Map()\n    this.outputDevices = values.outputDevices || new Map()\n    this.hooks = values.hooks || [];\n    this.observerController = values.observerController;\n  }\n\n  getNodeStatus(nodeId: NodeId): NodeStatus | undefined {\n    return this.nodeStatuses.get(nodeId)\n  }\n\n  setNodeStatus(nodeId: NodeId, status: NodeStatus) {\n    this.observerController?.reportNodeStatus(nodeId, status);\n    this.nodeStatuses.set(nodeId, status)\n  }\n\n  getNodeStatuses(): Map<NodeId, NodeStatus> {\n    return this.nodeStatuses\n  }\n\n  getNodeRunnerContext(nodeId: NodeId): NodeRunnerContext | undefined {\n    return this.nodeRunnerContexts.get(nodeId)\n  }\n\n  setNodeRunnerContext(nodeId: NodeId, context: NodeRunnerContext) {\n    this.nodeRunnerContexts.set(nodeId, context)\n  }\n\n  getNodeRunner(nodeId: NodeId): AsyncGenerator<undefined, void, void> | undefined {\n    return this.nodeRunnerContexts.get(nodeId)?.status;\n  }\n\n  getLinkItems(linkId: LinkId): ItemValue[] | undefined {\n    return this.linkItems.get(linkId)\n  }\n\n  pullLinkItems(linkId: LinkId, count: number = Infinity): ItemValue[] {\n    const linkItems = this.linkItems.get(linkId)!\n    const pulled = linkItems.splice(0, count)\n\n    return pulled\n  }\n\n  pushLinkItems(linkId: LinkId, items: ItemValue[]): void {\n    const linkItems = this.linkItems.get(linkId)!\n    this.linkItems.set(linkId, linkItems.concat(items))\n\n    this.observerController?.reportItems({\n      linkId,\n      type: RequestObserverType.observeLinkItems,\n      items,\n    })\n  }\n\n  setLinkItems(linkId: LinkId, items: ItemValue[]) {\n    this.observerController?.setItems(linkId, items);\n\n    this.linkItems.set(linkId, items)\n  }\n\n  getLinkCount(linkId: LinkId): number | undefined {\n    return this.linkCounts.get(linkId)\n  }\n\n  getLinkCounts(): Map<LinkId, number> {\n    return this.linkCounts\n  }\n\n  setLinkCount(linkId: LinkId, count: number) {\n    this.observerController?.reportLinksCount({\n      linkId,\n      type: RequestObserverType.observeLinkCounts,\n      count,\n    })\n\n    this.linkCounts.set(linkId, count)\n  }\n\n  getInputDevice(nodeId: NodeId): InputDevice | undefined {\n    return this.inputDevices.get(nodeId)\n  }\n\n  setInputDevice(nodeId: NodeId, device: InputDevice) {\n    this.inputDevices.set(nodeId, device)\n  }\n\n  pushHooks(hooks: Hook[]) {\n    this.hooks.push(...hooks)\n  }\n\n  pullHooks() {\n    const pulled = [...this.hooks]\n\n    this.hooks = []\n\n    return pulled\n  }\n}"
  },
  {
    "path": "packages/core/src/ExecutionMemoryFactory.test.ts",
    "content": "import { ComputerFactory } from './ComputerFactory';\nimport { ExecutionMemoryFactory } from './ExecutionMemoryFactory';\nimport { Registry } from './Registry';\nimport { createExecutableDiagram } from './createExecutableDiagram';\nimport { ConsoleLog, Create } from './computers'\nimport { core } from './core';\n\ndescribe('create', () => {\n  it('sets empty link items and counts', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Create')\n      .add('ConsoleLog')\n      .connect()\n      .get();\n\n    const unfoldedDiagram = createExecutableDiagram(diagram, {})\n\n    const registry = new Registry({\n      Create: new ComputerFactory().getInstance(Create),\n      ConsoleLog: new ComputerFactory().getInstance(ConsoleLog),\n    }, {}, [])\n\n    const factory = new ExecutionMemoryFactory(unfoldedDiagram, registry);\n    const memory = factory.create();\n\n    const [ link ] = diagram.links\n\n    expect(memory.getLinkItems(link.id)).toEqual([]);\n    expect(memory.getLinkCount(link.id)).toEqual(0);\n  })\n\n  it('sets all nodes to available',async  () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Create')\n      .add('ConsoleLog')\n      .get();\n\n    const unfoldedDiagram = createExecutableDiagram(diagram, {})\n\n    const registry = new Registry({\n      Create: new ComputerFactory().getInstance(Create),\n      ConsoleLog: new ComputerFactory().getInstance(ConsoleLog),\n    }, {}, [])\n\n    const factory = new ExecutionMemoryFactory(unfoldedDiagram, registry);\n    const memory = factory.create();\n\n    const [ firstNode, secondNode ] = diagram.nodes;\n    expect(memory.getNodeStatus(firstNode.id)).toEqual('AVAILABLE');\n    expect(memory.getNodeStatus(secondNode.id)).toEqual('AVAILABLE');\n  })\n\n  it('creates input and output devices', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Create')\n      .add('ConsoleLog')\n      .connect()\n      .get();\n\n    const unfoldedDiagram = createExecutableDiagram(diagram, {})\n\n    const registry = new Registry({\n      Create: new ComputerFactory().getInstance(Create),\n      ConsoleLog: new ComputerFactory().getInstance(ConsoleLog),\n    }, {}, [])\n\n    const factory = new ExecutionMemoryFactory(unfoldedDiagram, registry);\n    const memory = factory.create();\n\n    const [ firstNode, secondNode ] = diagram.nodes;\n\n    expect(memory.inputDevices.get(firstNode.id)).toMatchObject({ pull: expect.any(Function) })\n    expect(memory.outputDevices.get(firstNode.id)).toMatchObject({ push: expect.any(Function) })\n\n    expect(memory.inputDevices.get(secondNode.id)).toMatchObject({ pull: expect.any(Function) })\n    expect(memory.outputDevices.get(secondNode.id)).toMatchObject({ push: expect.any(Function) })\n  })\n\n  it('sets node runners', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Create')\n      .add('ConsoleLog')\n      .get();\n\n    const unfoldedDiagram = createExecutableDiagram(diagram, {})\n\n    const registry = new Registry({\n      Create: new ComputerFactory().getInstance(Create),\n      ConsoleLog: new ComputerFactory().getInstance(ConsoleLog),\n    }, {}, [])\n\n    const factory = new ExecutionMemoryFactory(unfoldedDiagram, registry);\n    const memory = factory.create();\n\n    const [ firstNode, secondNode ] = diagram.nodes;\n\n    expect(memory.getNodeRunner(firstNode.id)).toMatchObject({ next: expect.any(Function) })\n    expect(memory.getNodeRunner(secondNode.id)).toMatchObject({ next: expect.any(Function) })\n  })\n})\n"
  },
  {
    "path": "packages/core/src/ExecutionMemoryFactory.ts",
    "content": "import { ExecutionMemory } from './ExecutionMemory'\nimport { NodeStatus } from './Executor'\nimport { InputDevice } from './InputDevice'\nimport { ObserverController } from './ObserverController'\nimport { ParamEvaluator } from './ItemWithParams/ParamEvaluator'\nimport { NodeRunnerContext } from './NodeRunnerContext'\nimport { OutputDevice, PortLinkMap } from './OutputDevice'\nimport { Registry } from './Registry'\nimport { ExecutableDiagram } from './ExecutableDiagram'\nimport { Computer } from './types/Computer'\nimport { Hook } from './types/Hook'\nimport { ItemValue } from './types/ItemValue'\nimport { LinkId } from './types/Link'\nimport { Node, NodeId } from './types/Node'\nimport { withNodeExecutionErrorHandling } from './utils/withNodeExecutionErrorHandling'\n\nexport class ExecutionMemoryFactory {\n  constructor(\n    public unfoldedDiagram: ExecutableDiagram,\n    public registry: Registry,\n    public observerController?: ObserverController,\n  ) {}\n\n  create() {\n    // Create a new memory\n    const memory = new ExecutionMemory({\n      nodeStatuses: new Map<NodeId, NodeStatus>(),\n      nodeRunnerContexts: new Map<NodeId, NodeRunnerContext>(),\n      linkItems: new Map<LinkId, ItemValue[]>(),\n      linkCounts: new Map<LinkId, number>(),\n      inputDevices: new Map<NodeId, InputDevice>(),\n      outputDevices: new Map<NodeId, OutputDevice>(),\n      observerController: this.observerController,\n    })\n\n    // Configure the memory's initial state\n    for(const link of this.unfoldedDiagram.diagram.links) {\n      // Set all links to be empty\n      memory.setLinkItems(link.id, [])\n      memory.setLinkCount(link.id, 0)\n    }\n\n    for(const node of this.unfoldedDiagram.diagram.nodes) {\n      // Set all nodes to available\n      memory.setNodeStatus(node.id, 'AVAILABLE')\n\n      // Register input devices\n      // Potentially, if configured, reuse already present input device\n      // (e.g. if the node is a sub diagram)\n      const inputDevice = memory.inputDevices.get(node.id)\n        || this.makeInputDevice(node, memory)\n\n      // Register output devices\n      // Potentially, if configured, reuse already present output device\n      // (e.g. if the node is a sub diagram)\n      const outputDevice = memory.outputDevices.get(node.id)\n        || this.makeOutputDevice(node, memory)\n\n      memory.inputDevices.set(node.id, inputDevice)\n      memory.outputDevices.set(node.id, outputDevice)\n\n      // Initialize runner generators\n      const computer = this.registry.computers[node.type]\n      if (!computer) throw new Error(`Computer \"${node.type}\" not found`)\n\n      // Initialize runner context\n      const context = new NodeRunnerContext(node.id);\n      context.status = withNodeExecutionErrorHandling(computer.run, node)({\n        input: inputDevice,\n        output: outputDevice,\n        params: this.makeParamsDevice(node, memory),\n        hooks: {\n          register: (hook: Hook) => {\n            memory.pushHooks([hook])\n          },\n        },\n        node,\n        onComplete: context.registerOnComplete,\n      })\n      memory.setNodeRunnerContext(node.id, context);\n    }\n\n    return memory\n  }\n\n  protected makeInputDevice(node: Node, memory: ExecutionMemory) {\n    return new InputDevice(\n      node,\n      this.unfoldedDiagram,\n      memory,\n    )\n  }\n\n  protected makeOutputDevice(node: Node, memory: ExecutionMemory) {\n    let map: PortLinkMap = {}\n\n    for(const output of node.outputs) {\n      const connectedLinks = this.unfoldedDiagram.diagram.linksAtOutputPortId(output.id)\n      map[output.name] = connectedLinks.map(link => link.id);\n    }\n\n    return new OutputDevice(map, memory, node)\n  }\n\n  protected makeParamsDevice(node: Node, memory: ExecutionMemory) {\n    return new Proxy({}, {\n      get: (_, key: string) => {\n        const param = node.params.find(p => p.name === key);\n        if (!param) throw new Error(`Param \"${key}\" does not exist`);\n\n        try {\n          const emptyItem = {}\n          const evaluator = new ParamEvaluator();\n          const globalParams = this.unfoldedDiagram.unfoldedGlobalParams[node.id]\n            ?? this.unfoldedDiagram.diagram.params;\n\n          return evaluator.evaluate(emptyItem, param, globalParams);\n        } catch(error) {\n          console.log('Failed while evaluating param', param, error)\n          console.error('error', error);\n          throw error\n        }\n      },\n    })\n  }\n}\n"
  },
  {
    "path": "packages/core/src/ExecutionResult.ts",
    "content": "export type ExecutionResult = {\n  type: 'ExecutionResult'\n  /**\n   * Time in ms elapsed during execution\n   */\n  time: number\n}\n"
  },
  {
    "path": "packages/core/src/Executor.test.ts",
    "content": "import { Diagram } from './Diagram';\nimport { Computer, RunArgs } from './types/Computer';\nimport { whenRunning } from './support/diagramExecutionTester/DiagramExecutionTester';\nimport { Link } from './types/Link';\nimport { Node } from './types/Node';\nimport { ExecutorFactory } from './ExecutorFactory';\nimport { Registry } from './Registry';\nimport { core } from './core';\n\ndescribe('execute', () => {\n  it('can execute an empty diagram and return an execution update', async () => {\n    const diagram = new Diagram()\n    const registry = new Registry({}, {}, [])\n\n    const executor = ExecutorFactory.create({ diagram, registry })\n\n    const updates = executor.execute()\n\n    const update = await updates.next()\n    expect(update.value).toMatchObject({\n      type: 'ExecutionUpdate',\n    })\n    expect(update.done).toBe(false)\n\n    const result = await updates.next()\n    expect(result.done).toBe(true)\n  })\n\n  it('can execute a diagram with a single no-input no-output node', async () => {\n    const node: Node = {\n      id: 'node-id',\n      type: 'Dummy',\n      inputs: [],\n      outputs: [],\n      params: [],\n    }\n\n    const diagram = new Diagram({\n      nodes: [node],\n    })\n\n    let proof = 'dummy-should-change-this'\n\n    const registry = new Registry({\n      Dummy: {\n        async *run({}) {\n          proof = 'dummy-rocks'\n        },\n      } as Computer,\n    }, {}, [])\n\n    const executor = ExecutorFactory.create({ diagram, registry })\n\n    const updates = executor.execute()\n    const update1 = await updates.next()\n\n    expect(update1.done).toBe(false)\n    expect(proof).toBe('dummy-rocks')\n\n    const update2 = await updates.next()\n    expect(update2.done).toBe(false)\n\n    const update3 = await updates.next()\n    expect(update3.done).toBe(true)\n  })\n\n  it('can execute a diagram with non connected input node', async () => {\n    const node: Node = {\n      id: 'node-id',\n      type: 'Accepter',\n      inputs: [{\n        id: 'input-id',\n        name: 'input',\n        schema: {},\n      }],\n      outputs: [],\n      params: [],\n    }\n\n    const diagram = new Diagram({\n      nodes: [node],\n    })\n\n    const registry = new Registry({\n      Accepter: {\n        async *run({}) {\n          // Do nothing\n        },\n      } as Computer,\n    }, {}, [])\n\n    const executor = ExecutorFactory.create({ diagram, registry })\n\n    const updates = executor.execute()\n    const update = await updates.next()\n    expect(update.done).toBe(false)\n\n    const result = await updates.next()\n    expect(result.done).toBe(true)\n  })\n\n  it('can execute a diagram with a node outputting items', async () => {\n    const node: Node = {\n      id: 'zergling-spawner-id',\n      type: 'Spawner',\n      inputs: [],\n      outputs: [\n        {\n          id: 'zergling-output-id',\n          name: 'output',\n          schema: {},\n        },\n      ],\n      params: [],\n    }\n\n    const diagram = new Diagram({\n      nodes: [node],\n    })\n\n    const registry = new Registry({\n      Spawner: {\n        async *run({ output }) {\n          output.push([{ type: 'Zergling' }])\n        },\n      } as Computer,\n    }, {}, [])\n\n    const executor = ExecutorFactory.create({ diagram, registry })\n\n    const updates = executor.execute()\n\n    const update1 = await updates.next()\n    expect(update1.done).toBe(false)\n\n    const update2 = await updates.next()\n    expect(update2.done).toBe(false)\n\n    const result = await updates.next()\n    expect(result.done).toBe(true)\n  })\n\n  it('can execute a diagram with item flowing between two nodes', async () => {\n    const create: Node = {\n      id: 'create-id',\n      type: 'Create',\n      inputs: [],\n      outputs: [{\n        id: 'Create.1.output',\n        name: 'output',\n        schema: {},\n      }],\n      params: [],\n    }\n\n    const log: Node = {\n      id: 'log-id',\n      type: 'Log',\n      inputs: [{\n        id: 'Log.1.input',\n        name: 'input',\n        schema: {},\n      }],\n      outputs: [],\n      params: [],\n    }\n\n    const link: Link = {\n      id: 'link-id',\n      sourcePortId: 'Create.1.output',\n      targetPortId: 'Log.1.input',\n    }\n\n    const diagram = new Diagram({\n      nodes: [create, log],\n      links: [link],\n    })\n\n    // track order of execution\n    const order: string[] = []\n\n    const createComputer = {\n      computerType: 'Create',\n      async *run({ output }: RunArgs) {\n        order.push('running create')\n        output.push([{ i: 1 }])\n      },\n    } as Computer\n\n    const logComputer = {\n      computerType: 'Log',\n      async *run({ input }: RunArgs) {\n        // console.log ... or something\n\n        order.push('running log')\n        const items = input.pull()\n      },\n    } as Computer\n\n    const registry = new Registry({\n      Create: createComputer,\n      Log: logComputer,\n    }, {}, [])\n\n    const executor = ExecutorFactory.create({ diagram, registry })\n\n    const updates = executor.execute()\n\n    const update1 = await updates.next()\n    expect(update1.done).toBe(false)\n    expect(order).toMatchObject(['running create'])\n\n    const update2 = await updates.next()\n    expect(update2.done).toBe(false)\n    expect(order).toMatchObject(['running create', 'running log'])\n\n    const update3 = await updates.next()\n    expect(update3.done).toBe(false)\n    expect(order).toMatchObject(['running create', 'running log'])\n\n    const result = await updates.next()\n    expect(result.done).toBe(true)\n  })\n\n  it('can test diagram executions like this', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Signal', { period: 1, count: 10 })\n      .add('Ignore')\n      .get()\n\n    await whenRunning(diagram)\n      .expectSuccess()\n      .ok()\n  })\n})\n"
  },
  {
    "path": "packages/core/src/Executor.ts",
    "content": "import { Node } from './types/Node';\nimport { ExecutionUpdate } from './types/ExecutionUpdate';\nimport { isFinished } from './utils/isFinished';\nimport { ExecutionMemory } from './ExecutionMemory';\nimport { mapToRecord } from './utils/mapToRecord';\nimport { arrayToRecord } from './utils/arrayToRecord';\nimport { Diagram } from './Diagram';\nimport { Registry } from './Registry';\nimport { isPromise } from './utils/isPromise';\n\nexport type NodeStatus = 'AVAILABLE' | 'BUSY' | 'COMPLETE';\n\nexport class Executor {\n  public readonly memory: ExecutionMemory;\n  public diagram: Diagram;\n  public registry: Registry;\n  public hasLoop: boolean;\n  private pendingCompletionPromises: Promise<unknown>[] = [];\n  private addCompletionPromise(promise: Promise<unknown>) {\n    this.pendingCompletionPromises.push(promise)\n  }\n\n  private async awaitCompletion() {\n    await Promise.allSettled(this.pendingCompletionPromises)\n    this.pendingCompletionPromises = []\n  }\n\n  constructor(params: {\n    diagram: Diagram;\n    registry: Registry;\n    memory: ExecutionMemory;\n  }) {\n    this.diagram = params.diagram\n    this.registry = params.registry\n    this.memory = params.memory\n    this.hasLoop = this.diagram.hasLoop()\n  }\n\n  async *execute(abortSignal?: AbortSignal): AsyncGenerator<ExecutionUpdate, void, void> {\n    let pendingPromises: Promise<void>[] = []\n    let executionError: Error | undefined\n\n    while(!this.isComplete() && !executionError && !abortSignal?.aborted) {\n      // cleanup old promises that are done\n      pendingPromises = await this.clearFinishedPromises(pendingPromises)\n\n      // Start execution of all nodes that can run\n      const runnables = this.getRunnableNodes()\n\n      const promises = runnables.map(node => {\n        // Put node in busy state\n        this.memory.setNodeStatus(node.id, 'BUSY')\n\n        // Run\n        const context = this.memory.getNodeRunnerContext(node.id)\n        const runner = context!.status!;\n        // const runner = this.memory.getNodeRunner(node.id)!;\n        return runner.next()\n          .then((result: IteratorResult<undefined, void>) => {\n            if(result.done) {\n              this.markNodeComplete(node);\n              return;\n            }\n\n            // Not done, so node is available again!\n            this.memory.setNodeStatus(node.id, 'AVAILABLE')\n          })\n          .catch((error: Error) => {\n            console.error('Registering an execution error')\n            executionError = error;\n          })\n      })\n\n      // Add this batch of promises to the pending list\n      pendingPromises.push(...promises)\n\n      // Attempt cleanup of not runnables (TODO: EXPENSIVE?)\n      const notRunnables = this.diagram.nodes.filter(node => !runnables.includes(node))\n      for(const notRunnable of notRunnables) {\n        this.attemptToMarkNodeComplete(notRunnable);\n      }\n\n      if (abortSignal?.aborted) {\n        break;\n      }\n\n      // If no promises, then we might be stuck\n      if(pendingPromises.length === 0) {\n        // Check for nodes we can mark as complete\n        for(const node of this.diagram.nodes) {\n          this.attemptToMarkNodeComplete(node);\n        }\n      }\n\n      // await only the first state change since\n      // it can open up for more nodes to proceed immediately\n      if(pendingPromises.length > 0) {\n        await Promise.race(pendingPromises);\n        yield {\n          type: 'ExecutionUpdate',\n          counts: mapToRecord(this.memory.getLinkCounts()),\n          hooks: this.memory.pullHooks(),\n          state: 'running',\n        }\n      }\n    }\n\n    if(executionError) {\n      console.error('Rethrowing the execution error in an awaitable timeline')\n      throw(executionError)\n    }\n\n    if (abortSignal?.aborted) {\n      throw new Error('Execution aborted');\n    }\n\n    // Wait for all promises to resolve\n    await this.awaitCompletion();\n\n    yield {\n      type: 'ExecutionUpdate',\n      counts: mapToRecord(this.memory.getLinkCounts()),\n      hooks: this.memory.pullHooks(),\n      state: 'complete',\n    }\n  }\n\n  protected isComplete(): boolean {\n    for(const status of this.memory.getNodeStatuses().values()) {\n      if(status !== 'COMPLETE') return false;\n    }\n\n    return true\n  }\n\n  protected getRunnableNodes(): Node[] {\n    return this.diagram.nodes.filter(node => {\n      // If the computer implements a custom hook\n      const computer = this.registry.computers[node.type]\n      const hook = computer.canRun\n      if(hook) return hook({\n        isAvailable: () => this.memory.getNodeStatus(node.id) === 'AVAILABLE',\n        input: this.memory.getInputDevice(node.id)!,\n        // todo: It seems the params didn't evaluate correctly\n        params: arrayToRecord(node.params, 'name'),\n      })\n\n      // Decide with some heuristics\n      return this.canRunNodeDefault(node)\n    })\n  }\n\n  protected async clearFinishedPromises(promises: Promise<void>[]) {\n    const passed: Promise<void>[] = []\n\n    for(const promise of promises) {\n      if(await isFinished(promise)) continue;\n      passed.push(promise)\n    }\n\n    return passed\n  }\n\n  /**\n   * Default heuristics for deciding if a node can run.\n   */\n  protected canRunNodeDefault(node: Node) {\n    // Get the nodes input device\n    const inputDevice = this.memory.getInputDevice(node.id)!\n\n    // Must be available\n    if(this.memory.getNodeStatus(node.id) !== 'AVAILABLE') return false;\n\n    // If one input port, it must not be empty\n    const [ input1 ] = node.inputs\n    if(input1 && !inputDevice.haveItemsAtInput(input1.name)) return false;\n\n    // If two or more ports, all items must be awaited\n    if(node.inputs.length >= 2 && !inputDevice.haveAllItemsAtAllInputs()) return false;\n\n    // All passed\n    return true\n  }\n\n  /**\n   * Marks nodes as complete if some default heuristics are met.\n   */\n  protected attemptToMarkNodeComplete(node: Node) {\n    // Avoid costly loop checks unless diagram has a loop\n    if(this.hasLoop) {\n      const loop = this.diagram.getLoopForNode(node)\n      if(loop) return this.attemptToMarkLoopNodeComplete(node)\n    }\n\n    // Node must not be busy\n    if(this.memory.getNodeStatus(node.id) === 'BUSY') return;\n\n    // Node must have no awaiting items at links\n    const input = this.memory.getInputDevice(node.id)!\n    if(input.haveItemsAtAnyInput()) return;\n\n    // Node must have no incomplete ancestors\n    const ancestors = this.diagram.directAncestor(node)\n\n    for(const ancestor of ancestors) {\n      if(this.memory.getNodeStatus(ancestor.id) !== 'COMPLETE') return;\n    }\n\n    this.markNodeComplete(node);\n  }\n\n  private markNodeComplete(node: Node) {\n    this.memory.setNodeStatus(node.id, 'COMPLETE');\n    const context = this.memory.getNodeRunnerContext(node.id);\n    const onComplete = context?.onComplete();\n    if(!onComplete || !isPromise(onComplete)) return;\n    this.addCompletionPromise(onComplete);\n  }\n\n  /**\n   * Marks nodes as complete if:\n   *  - all loop nodes are non busy\n   *  - all links are empty\n   */\n  protected attemptToMarkLoopNodeComplete(node: Node) {\n    // must be a loop node\n    const loop = this.diagram.getLoopForNode(node)\n    if(!loop) throw new Error(`Node is not part of a loop: ${node.id}`)\n\n    // Ensure no node in the loop is busy\n    for(const node of loop) {\n      if(this.memory.getNodeStatus(node.id) === 'BUSY') return;\n    }\n\n    // Ensure all ancestor outside of the loop is complete\n    const ancestors = this.diagram.getAncestors(node)\n    for(const ancestor of ancestors) {\n      if(loop.includes(ancestor)) continue;\n      if(this.memory.getNodeStatus(ancestor.id) !== 'COMPLETE') return;\n    }\n\n    // Ensure no loop or ancestor link have unprocessed items\n    const links = this.diagram.getAnscestorLinks(node)\n    for(const link of links) {\n      const items = this.memory.getLinkItems(link.id)\n      if(items && items.length > 0) return;\n    }\n\n    this.markNodeComplete(node);\n  }\n}\n"
  },
  {
    "path": "packages/core/src/ExecutorFactory.ts",
    "content": "import { Diagram } from './Diagram';\nimport { ExecutionMemoryFactory } from './ExecutionMemoryFactory';\nimport { Executor } from './Executor';\nimport { ObserverController } from './ObserverController';\nimport { Registry } from './Registry';\nimport { createExecutableDiagram } from './createExecutableDiagram';\n\nexport const ExecutorFactory = {\n  create({\n    diagram,\n    registry,\n    observerController,\n  }: {\n    diagram: Diagram;\n    registry: Registry;\n    observerController?: ObserverController;\n  }) {\n    const unfolded = createExecutableDiagram(\n      diagram,\n      registry.nestedNodes,\n    )\n\n    const memory = new ExecutionMemoryFactory(\n      unfolded,\n      registry,\n      observerController,\n    ).create()\n\n    return new Executor({\n      diagram: unfolded.diagram,\n      registry,\n      memory,\n    });\n  },\n}\n"
  },
  {
    "path": "packages/core/src/InputDevice.test.ts",
    "content": "import { Diagram } from './Diagram'\nimport { ExecutionMemory } from './ExecutionMemory'\nimport { InputDevice } from './InputDevice'\nimport { str } from './Param'\nimport { createExecutableDiagram } from './createExecutableDiagram'\nimport { Node } from './types/Node'\n\ndescribe('pull', () => {\n  it('returns items at port named \"input\" wrapped as ItemWithParams', () => {\n    const node: Node = {\n      id: 'target',\n      type: 'node-type',\n      inputs: [{ id: 'target-input-id', name: 'input', schema: {} }],\n      outputs: [],\n      params: [],\n    }\n\n    const links = [\n      { id: 'link-1', sourcePortId: 'dangling-1', targetPortId: 'target-input-id' },\n      { id: 'link-2', sourcePortId: 'dangling-2', targetPortId: 'target-input-id' },\n    ]\n\n    const diagram = new Diagram({\n      nodes: [node],\n      links,\n    })\n\n    const unfoldedDiagram = createExecutableDiagram(diagram, {})\n\n    const memory = new ExecutionMemory({\n      linkItems: new Map()\n        .set('link-1', [{ i: 1 }, { i: 2 }])\n        .set('link-2', [{ i: 3 }, { i: 4 }]),\n    })\n\n    const input = new InputDevice(node, unfoldedDiagram, memory)\n\n    expect(input.pull()).toMatchObject([\n      { value: { i: 1 } },\n      { value: { i: 2 } },\n      { value: { i: 3 } },\n      { value: { i: 4 } },\n    ])\n  })\n\n  it('throws if a port named \"input\" is not present', () => {\n    const memory = new ExecutionMemory()\n\n    expect(() => {\n      const node: Node = {\n        id: 'target',\n        type: 'node-type',\n        inputs: [{ id: 'target-input-id', name: 'some-other-name', schema: {} }],\n        outputs: [],\n        params: [],\n      }\n\n      const diagram = new Diagram({\n        nodes: [node],\n      })\n\n      const unfoldedDiagram = createExecutableDiagram(diagram, {})\n\n      const memory = new ExecutionMemory()\n\n      new InputDevice(node, unfoldedDiagram, memory).pull()\n    }).toThrowError()\n  })\n\n  it('removes the items pulled from the links', () => {\n    const node: Node = {\n      id: 'target',\n      type: 'node-type',\n      inputs: [{ id: 'target-input-id', name: 'input', schema: {} }],\n      outputs: [],\n      params: [],\n    }\n\n    const links = [\n      { id: 'link-1', sourcePortId: 'dangling-1', targetPortId: 'target-input-id' },\n      { id: 'link-2', sourcePortId: 'dangling-2', targetPortId: 'target-input-id' },\n    ]\n\n    const diagram = new Diagram({\n      nodes: [node],\n      links,\n    })\n\n    const memory = new ExecutionMemory({\n      linkItems: new Map()\n        .set('link-1', [{ i: 1 }, { i: 2 }])\n        .set('link-2', [{ i: 3 }, { i: 4 }]),\n    })\n\n    const unfoldedDiagram = createExecutableDiagram(diagram, {})\n\n    const input = new InputDevice(node, unfoldedDiagram, memory)\n    input.pull()\n\n    const atLink1 = memory.getLinkItems('link-1')\n    const atLink2 = memory.getLinkItems('link-2')\n\n    expect(atLink1).toMatchObject([])\n    expect(atLink2).toMatchObject([])\n  })\n\n  it('may pull a specified number of items', () => {\n    const node: Node = {\n      id: 'target',\n      type: 'node-type',\n      inputs: [{ id: 'target-input-id', name: 'input', schema: {} }],\n      outputs: [],\n      params: [],\n    }\n\n    const links = [\n      { id: 'link-1', sourcePortId: 'dangling-1', targetPortId: 'target-input-id' },\n      { id: 'link-2', sourcePortId: 'dangling-2', targetPortId: 'target-input-id' },\n    ]\n\n    const diagram = new Diagram({\n      nodes: [node],\n      links,\n    })\n\n    const memory = new ExecutionMemory({\n      linkItems: new Map()\n        .set('link-1', [{ i: 1 }, { i: 2 }])\n        .set('link-2', [{ i: 3 }, { i: 4 }]),\n    })\n\n    const unfoldedDiagram = createExecutableDiagram(diagram, {})\n\n    const input = new InputDevice(node, unfoldedDiagram, memory)\n\n    expect(input.pull(1)).toMatchObject([{ value: { i: 1 } }])\n    expect(input.pull(2)).toMatchObject([{ value: { i: 2 } }, { value: { i: 3 } }])\n    expect(input.pull(3)).toMatchObject([{ value: { i: 4 } }])\n  })\n})\n\ndescribe('pullFrom', () => {\n  it('returns items at named port', () => {\n    const node: Node = {\n      id: 'target',\n      type: 'node-type',\n      inputs: [{ id: 'target-input-id', name: 'numbers', schema: {} }],\n      outputs: [],\n      params: [],\n    }\n\n    const links = [\n      { id: 'link-1', sourcePortId: 'dangling-1', targetPortId: 'target-input-id' },\n      { id: 'link-2', sourcePortId: 'dangling-2', targetPortId: 'target-input-id' },\n    ]\n\n    const diagram = new Diagram({\n      nodes: [node],\n      links,\n    })\n\n    const unfoldedDiagram = createExecutableDiagram(diagram, {})\n\n    const memory = new ExecutionMemory({\n      linkItems: new Map()\n        .set('link-1', [{ i: 1 }, { i: 2 }])\n        .set('link-2', [{ i: 3 }, { i: 4 }]),\n    })\n\n    const input = new InputDevice(node, unfoldedDiagram, memory)\n\n    expect(input.pullFrom('numbers')).toMatchObject([\n      { value: { i: 1 } },\n      { value: { i: 2 } },\n      { value: { i: 3 } },\n      { value: { i: 4 } },\n    ])\n  })\n\n  it('removes the items pulled from the links', () => {\n    const node: Node = {\n      id: 'target',\n      type: 'node-type',\n      inputs: [{ id: 'target-input-id', name: 'numbers', schema: {} }],\n      outputs: [],\n      params: [],\n    }\n\n    const links = [\n      { id: 'link-1', sourcePortId: 'dangling-1', targetPortId: 'target-input-id' },\n      { id: 'link-2', sourcePortId: 'dangling-2', targetPortId: 'target-input-id' },\n    ]\n\n    const diagram = new Diagram({\n      nodes: [node],\n      links,\n    })\n\n    const unfoldedDiagram = createExecutableDiagram(diagram, {})\n\n    const memory = new ExecutionMemory({\n      linkItems: new Map()\n        .set('link-1', [{ i: 1 }, { i: 2 }])\n        .set('link-2', [{ i: 3 }, { i: 4 }]),\n    })\n\n    const input = new InputDevice(node, unfoldedDiagram, memory)\n    input.pullFrom('numbers')\n\n    const atLink1 = memory.getLinkItems('link-1')\n    const atLink2 = memory.getLinkItems('link-2')\n\n    expect(atLink1).toMatchObject([])\n    expect(atLink2).toMatchObject([])\n  })\n})\n\ndescribe('params', () => {\n  it('has getters for params returning interpolated values', () => {\n    const node: Node = {\n      id: 'target',\n      type: 'node-type',\n      inputs: [{ id: 'target-input-id', name: 'input', schema: {} }],\n      outputs: [],\n      params: [str({\n        name: 'greeting',\n        label: 'Greeting',\n        help: 'The greeting to use',\n        value: 'Hello ${{name}}',\n        multiline: false,\n        canInterpolate: true,\n        interpolate: true,\n      })],\n    }\n\n    const links = [\n      { id: 'link-1', sourcePortId: 'dangling-1', targetPortId: 'target-input-id' },\n    ]\n\n    const diagram = new Diagram({\n      nodes: [node],\n      links,\n    })\n\n    const unfoldedDiagram = createExecutableDiagram(diagram, {})\n\n    const memory = new ExecutionMemory({\n      linkItems: new Map()\n        .set('link-1', [{ name: 'Bob' }]),\n    })\n\n    const input = new InputDevice(node, unfoldedDiagram, memory)\n\n    const [ item ] = input.pull()\n\n    expect(item.params.greeting).toBe('Hello Bob')\n  })\n})\n"
  },
  {
    "path": "packages/core/src/InputDevice.ts",
    "content": "import { LinkId } from './types/Link'\nimport { ExecutionMemory } from './ExecutionMemory'\nimport { ItemWithParams } from './ItemWithParams'\nimport { Node } from './types/Node'\nimport { ItemValue } from './types/ItemValue'\nimport { ObserverController } from './ObserverController';\nimport { ExecutableDiagram } from './ExecutableDiagram'\nimport { PortName } from './types/Port'\n\nexport class InputDevice {\n  constructor(\n    // The node that is using this input device\n    private node: Node,\n    // The node topology\n    private unfoldedDiagram: ExecutableDiagram,\n    // Reference to the current execution state\n    private memory: ExecutionMemory,\n    protected readonly observerController?: ObserverController,\n  ) {}\n\n  /**\n   * Shorthand to pull items at 'input'\n   */\n  pull(count?: number) {\n    return this.pullFrom('input', count)\n  }\n\n  /**\n   * Removes and return items at edges connected to input with name\n   */\n  pullFrom(name: PortName, count: number = Infinity): ItemWithParams[] {\n    let remaining = count\n    const pulled: ItemValue[] = []\n    const links = this.unfoldedDiagram.diagram.linksAtInput(this.node, name)\n\n    for(const link of links) {\n      const batch = this.memory.pullLinkItems(link.id, remaining)\n\n      if(batch.length < 1000) {\n        pulled.push(...batch)\n      } else {\n        for(const item of batch) pulled.push(item)\n      }\n\n      remaining -= batch.length\n      if(remaining === 0) break\n    }\n\n    // Enhance ItemValue to ItemWithParams\n    return pulled.map(item => new ItemWithParams(\n      item,\n      this.node.params,\n      this.globalParamsForNode(),\n    ));\n  }\n\n  pullNew(template: ItemValue = {}): ItemWithParams[] {\n    const item = structuredClone(template)\n\n    return [new ItemWithParams(\n      item,\n      this.node.params,\n      this.globalParamsForNode(),\n    )]\n  }\n\n  getPortNames(): string[] {\n    return this.node.inputs.map(input => input.name)\n  }\n\n  havePort(name: string): boolean {\n    return this.node.inputs.some(input => input.name === name)\n  }\n\n  haveItemsAtInput(name: string, minimum?: number): boolean {\n    const port = this.node.inputs.find(input => input.name === name)!\n\n    const links = this.unfoldedDiagram.diagram.linksAtInputPortId(port.id)\n\n    const requiredItems = minimum || 1\n\n    for(const link of links) {\n      if(this.memory.getLinkItems(link.id)!.length >= requiredItems) return true\n    }\n\n    return false\n  }\n\n  haveAllItemsAtInput(name: string): boolean {\n    const port = this.node.inputs.find(input => input.name === name)!\n    const links = this.unfoldedDiagram.diagram.linksAtInputPortId(port.id)\n\n    for(const link of links) {\n      const sourcePort = link.sourcePortId\n      const sourceNode = this.unfoldedDiagram.diagram.nodeWithOutputPortId(sourcePort)!\n      const sourceStatus = this.memory.getNodeStatus(sourceNode.id)\n\n      if(sourceStatus !== 'COMPLETE') return false\n    }\n\n    return true\n  }\n\n  haveAllItemsAtAllInputs(): boolean {\n    for(const input of this.node.inputs) {\n      if(!this.haveAllItemsAtInput(input.name)) return false\n    }\n\n    return true\n  }\n\n  haveItemsAtAnyInput(): boolean {\n    for(const input of this.node.inputs) {\n      if(this.haveItemsAtInput(input.name)) return true\n    }\n\n    return false\n  }\n\n  setItemsAt(linkId: LinkId, items: ItemValue[]) {\n    this.memory.setLinkItems(linkId, items)\n  }\n\n  protected globalParamsForNode() {\n    return this.unfoldedDiagram.unfoldedGlobalParams[this.node.id]\n      ?? this.unfoldedDiagram.diagram.params\n  }\n}\n"
  },
  {
    "path": "packages/core/src/ItemWithParams/ItemWithParams.test.ts",
    "content": "import { ItemWithParams } from './ItemWithParams'\nimport { Param, str } from '../Param'\n\ndescribe('value', () => {\n  it('can be accessed when no params is supplied', () => {\n    const item = new ItemWithParams({ name: 'Bob' }, [], [])\n    expect(item.value).toEqual({ name: 'Bob' })\n  })\n\n  it('can be accessed when params is supplied', () => {\n    const item = new ItemWithParams(\n      { name: 'Bob' },\n      [\n        str({\n          name: 'greeting',\n          value: 'Hello ${{name}}!',\n        }),\n      ],\n      [],\n    )\n\n    expect(item.value).toEqual({ name: 'Bob' })\n  })\n})\n\ndescribe('params', () => {\n  it('can be accessed when interpolated by a item value', () => {\n    const item = new ItemWithParams(\n      { name: 'Bob' },\n      [\n        str({\n          name: 'greeting',\n          value: 'Hello ${{name}}!',\n        }),\n      ],\n      [],\n    )\n\n    expect(item.params.greeting).toEqual('Hello Bob!')\n  })\n})\n"
  },
  {
    "path": "packages/core/src/ItemWithParams/ItemWithParams.ts",
    "content": "import { ItemValue } from '../types/ItemValue';\nimport { EvaluatedParamValue, Param } from '../Param';\nimport { ParamEvaluator } from './ParamEvaluator';\n\nexport const isItemWithParams = (item: ItemWithParams | unknown): item is ItemWithParams => {\n  // This does not always catch all cases\n  if (item instanceof ItemWithParams) return true;\n\n  if (\n    item !== null\n    && typeof item === 'object'\n    // @ts-ignore\n    && 'type' in item && item.type === 'ItemWithParams'\n    && 'value' in item\n    && 'params' in item\n  ) return true;\n\n  return false;\n};\n\nexport class ItemWithParams<ExpectedType extends ItemValue = ItemValue> {\n  type = 'ItemWithParams' as const;\n  value: ExpectedType;\n  params: Record<string, EvaluatedParamValue>;\n\n  constructor(\n    value: ExpectedType,\n    rawParams: Param[],\n    globalParams: Param[],\n  ) {\n    this.value = value;\n    this.params = new Proxy({}, {\n      get: (_, key: string) => {\n        const param = rawParams.find(p => p.name === key);\n        if (!param) throw new Error(`Param \"${key}\" does not exist`);\n\n        try {\n          const paramEvaluatorInstance = new ParamEvaluator();\n          return paramEvaluatorInstance.evaluate(value, param, globalParams);\n        } catch (e) {\n          console.error('Failed while evaluating param', param, e);\n          throw e;\n        }\n      },\n    });\n  }\n}\n"
  },
  {
    "path": "packages/core/src/ItemWithParams/JSTransform.ts",
    "content": "const functionCache = new Map<string, WeakRef<Function>>();\nexport const createJSTransformFunction = (code: string) => {\n  const cachedFn = functionCache.get(code)?.deref();\n  if (cachedFn) return cachedFn;\n\n  const fn = new Function('item', `return (${code})(item)`);\n  functionCache.set(code, new WeakRef(fn));\n  return fn;\n};\n\nconst expressionCache = new Map<string, WeakRef<Function>>();\nexport const createJSTransformExpression = (code: string) => {\n  const cachedFn = expressionCache.get(code)?.deref();\n  if (cachedFn) return cachedFn();\n\n  const fn = new Function(`return ${code}`);\n  expressionCache.set(code, new WeakRef(fn));\n  return fn();\n};"
  },
  {
    "path": "packages/core/src/ItemWithParams/ParamEvaluator.ts",
    "content": "import { Param } from '../Param';\nimport { ItemValue } from '../types/ItemValue';\nimport { StringableParamEvaluator } from './StringableParamEvaluator';\nimport { ParamsValueEvaluator } from '../types/ParamsValueEvaluator';\n\nexport class ParamEvaluator implements ParamsValueEvaluator<any>{\n  private evaluators: ParamsValueEvaluator<Param>[] = [\n    new StringableParamEvaluator(),\n  ]\n\n  canEvaluate(param: Param): param is Param {\n    return this.evaluators.some(e => e.canEvaluate(param));\n  }\n\n  evaluate(itemValue: ItemValue, param: Param, globalParams: Param[]): any {\n    const evaluator = this.evaluators.find(e => e.canEvaluate(param));\n    if(!evaluator) return param.input;\n\n    return evaluator.evaluate(itemValue, param, globalParams);\n  }\n}\n"
  },
  {
    "path": "packages/core/src/ItemWithParams/StringableParamEvaluator.ts",
    "content": "import { Param, StringableParam } from '../Param';\nimport { ItemValue } from '../types/ItemValue';\nimport { get } from '../utils/get';\nimport { ParamsValueEvaluator } from '../types/ParamsValueEvaluator';\nimport { ParamEvaluator } from './ParamEvaluator';\nimport { createJSTransformExpression, createJSTransformFunction } from './JSTransform';\nimport { parseStringList } from '../utils/parseStringList';\n\nexport class StringableParamEvaluator implements ParamsValueEvaluator<StringableParam> {\n  type = 'StringableParam' as const;\n\n  evaluate(itemValue: ItemValue, param: StringableParam, globalParams: Param[]) {\n    // **********************************************************************\n    // VALIDATE\n    // **********************************************************************\n\n    // Ensure param is StringableParam\n    if (param.type !== 'StringableParam') throw new Error(`Param \"${param.name}\" must be StringableParam`);\n\n    let transformedValue: any  = String(param.input?.rawValue);\n\n    // **********************************************************************\n    // INTERPOLATE GLOBAL PARAMS\n    // **********************************************************************\n    if (param.interpolate) {\n      // Find any @{PARAM_NAME} and replace with the value of the global param\n      const GLOBAL_PARAM_PATTERN = /@\\{(\\w+)\\}/g;\n      transformedValue = transformedValue.replace(GLOBAL_PARAM_PATTERN, (_: string, name: string) => {\n        const param =  globalParams.find(p => p.name === name);\n        if (!param) {\n          console.error(`Global param \"${name}\" not found`);\n          return '';\n        }\n\n        const paramEvaluator = new ParamEvaluator();\n        return paramEvaluator.evaluate(itemValue, param as Param, []);\n      });\n    }\n\n    // **********************************************************************\n    // INTERPOLATE ITEM PROPERTIES\n    // **********************************************************************\n    if (param.interpolate) {\n      /** Replace template strings with item properties\n       * Example: { greeting: \"Hi ${name}!\"}\n       * Becomes: { greeting: \"Hi Bob!\"}\n       * When the item value is { name: \"Bob\" }\n       */\n      transformedValue = transformedValue.replace(\n        /\\${{([\\w\\.]+)}}/g,\n        (_: string, name: string) => get(itemValue, name),\n      );\n    }\n\n    // **********************************************************************\n    // FUNCTIONS\n    // **********************************************************************\n    // TODO option for this\n    if (true) {\n      /** Replaces function calls */\n      transformedValue = transformedValue.replace(/@(\\w+)\\((.*)\\)/g, (_: string, fn: string, expression: string) => {\n        const args = expression.split(',').map(arg => arg.trim());\n\n        const functions: Record<string, Function> = {\n          env: (expression: string) => {\n            if (typeof process === 'undefined') throw new Error('env() is not available in the browser');\n\n            return process.env[args[0]];\n          },\n          number: (expression: string) => Number(expression),\n          string: (expression: string) => String(expression),\n        }\n\n        const match = functions[fn];\n\n        // If we don't know the function, just return the expression\n        if (!match) return expression;\n\n        return match(...args);\n      });\n    }\n\n    // **********************************************************************\n    // EVALUATE\n    // **********************************************************************\n    const selectedEvaluation = {\n      type: param.input?.['Evaluation'] as string,\n    };\n\n    if (selectedEvaluation?.type === 'JSON') {\n      transformedValue = JSON.parse(transformedValue);\n    }\n\n    if (selectedEvaluation?.type === 'JS_FUNCTION') {\n      const fn = createJSTransformFunction(transformedValue);\n      transformedValue = fn(itemValue);\n    }\n\n    if (selectedEvaluation?.type === 'JS_EXPRESSION') {\n      try {\n        transformedValue = createJSTransformExpression(transformedValue);\n      } catch(error) {\n        console.log(`Failed to evaluate JS expression: ${transformedValue}`)\n        throw error\n      }\n    }\n\n    if (selectedEvaluation?.type === 'STRING_LIST') {\n      console.log({ before: transformedValue });\n      transformedValue = parseStringList(transformedValue);\n      console.log({ after: transformedValue });\n    }\n\n    // **********************************************************************\n    // CAST\n    // **********************************************************************\n    let selectedCast = {\n      type: param.input?.['Cast'] as string,\n    };\n\n    if (selectedCast?.type === 'stringCast') {\n      transformedValue = String(transformedValue);\n    }\n\n    if (selectedCast?.type === 'numberCast') {\n      transformedValue = Number(transformedValue);\n    }\n\n    return transformedValue;\n  }\n\n  canEvaluate(param: Param): param is StringableParam {\n    return param.type === this.type;\n  }\n}"
  },
  {
    "path": "packages/core/src/ItemWithParams/index.ts",
    "content": "export { ItemWithParams } from './ItemWithParams';\nexport { isItemWithParams } from './ItemWithParams';"
  },
  {
    "path": "packages/core/src/LinkGuesser.ts",
    "content": "import { Diagram } from './Diagram';\nimport { Link } from './types/Link';\nimport { Node } from './types/Node';\nimport { createDataStoryId } from './utils/createDataStoryId';\n\nexport class LinkGuesser {\n  constructor(\n    public diagram: Diagram,\n  ) {}\n\n  guess(\n    node: Node,\n  ): Link | null {\n    const previousNode = this.diagram.nodes.at(-1)\n    if(!previousNode) return null;\n\n    const firstOutput = previousNode.outputs.at(0)\n    if(!firstOutput) return null;\n\n    const firstInput = node.inputs.at(0)\n    if(!firstInput) return null;\n\n    return {\n      id: createDataStoryId(),\n      sourcePortId: firstOutput.id,\n      targetPortId: firstInput.id,\n    }\n  }\n}"
  },
  {
    "path": "packages/core/src/NodeDescriptionFactory.test.ts",
    "content": "import { ComputerFactory } from './ComputerFactory'\nimport { NodeDescriptionFactory } from './NodeDescriptionFactory'\nimport { Computer } from './types/Computer'\n\ndescribe('fromComputer', () => {\n  it('returns a NodeDescription', () => {\n    const config = {\n      computerType: 'ComputerX',\n      inputs: [{\n        name: 'input1',\n        schema: {},\n      }],\n    } as Computer\n\n    const computer = new ComputerFactory().getInstance(config)\n\n    const nodeDescription = NodeDescriptionFactory.fromComputer(computer)\n\n    expect(nodeDescription).toMatchObject({\n      type: 'NodeDescription',\n      computerType: 'ComputerX',\n      label: 'ComputerX',\n      inputs: [{\n        name: 'input1',\n        schema: {},\n      }],\n      outputs: [],\n      params: [],\n\n    })\n  })\n})"
  },
  {
    "path": "packages/core/src/NodeDescriptionFactory.ts",
    "content": "import { Diagram } from './Diagram';\nimport { StringableInputValue } from './Param';\nimport { Computer } from './types/Computer';\nimport { NodeDescription } from './types/NodeDescription';\n\nexport const NodeDescriptionFactory = {\n  fromComputer: (computer: Computer): NodeDescription => {\n    return {\n      type: 'NodeDescription',\n      computerType: computer.computerType,\n      label: computer.label,\n      category: computer.category,\n      inputs: computer.inputs,\n      outputs: computer.outputs,\n      params: computer.params,\n    }\n  },\n\n  fromDiagram: (name: string, diagram: Diagram): NodeDescription => {\n    return {\n      type: 'NodeDescription',\n      computerType: name,\n      label: name,\n      category: undefined,\n      inputs: diagram.nodes\n        .filter(node => node.type === 'Input')\n        .map(node => {\n          //@ts-ignore\n          const portParam = node.params\n            .find(param => param.name === 'port_name')!\n\n          const portName = portParam.input.rawValue;\n\n          return {\n            name: portName,\n            schema: {},\n          }\n        }),\n      outputs: diagram.nodes\n        .filter(node => node.type === 'Output')\n        .map(node => {\n          //@ts-ignore\n          const portParam = node.params\n            .find(param => param.name === 'port_name')!\n\n          const portName = portParam.input.rawValue;\n\n          return {\n            name: portName,\n            schema: {},\n          }\n        }),\n      params: diagram.params,\n      // TODO\n    }\n  },\n}"
  },
  {
    "path": "packages/core/src/NodeRunError.ts",
    "content": "import { Node } from './types/Node';\n\nexport class NodeRunError extends Error {\n  constructor({ message, node }: { message: string, node: Node }) {\n    super(\n      `${message || 'Error'}\\nThrown in node ${node.id}`,\n    );\n  }\n}"
  },
  {
    "path": "packages/core/src/NodeRunnerContext.ts",
    "content": "import { NodeId } from './types/Node';\n\nexport class NodeRunnerContext {\n  private onCompleteFns: Function[] = [];\n  public status?: AsyncGenerator<undefined, void, void>;\n  private nodeId: NodeId;\n  constructor(nodeId: NodeId) {\n    this.nodeId = nodeId;\n  }\n  /**\n   * Register a function to be called when the node is complete\n   * @param fn The function to call\n   */\n  registerOnComplete = (fn: Function) => {\n    this.onCompleteFns.push(fn)\n  }\n  /**\n   * Call all registered onComplete functions\n   * todo: handle errors\n   */\n  async onComplete(): Promise<void> {\n    for(const fn of this.onCompleteFns) {\n      await fn()\n    }\n  }\n}"
  },
  {
    "path": "packages/core/src/ObserverController.test.ts",
    "content": "import { ObserverController }  from './ObserverController';\nimport { beforeEach, describe, expect, it, vi } from 'vitest';\nimport { InMemoryObserverStorage } from './storage/inMemoryObserverStorage';\nimport { NodeId } from './types/Node';\nimport { NodeStatus } from './Executor';\nimport { ObserveLinkCounts, ObserveLinkItems, ObserveLinkUpdate, ObserveNodeStatus } from './types/ExecutionObserver';\nimport { RequestObserverType } from './types/InputObserveConfig';\nimport { LinkId } from './types/Link';\nimport { ItemValue } from './types/ItemValue';\nimport { sleep } from './utils/sleep';\nimport { LinkItemsUpdate } from './types/LinkItemsUpdate';\n\ndescribe('ObserverController', () => {\n  it('should be defined', () => {\n    expect(ObserverController).toBeDefined();\n  });\n\n  describe('Node Status', () => {\n    it('should be defined', () => {\n      expect(ObserverController.prototype.reportNodeStatus).toBeDefined();\n    });\n\n    it('should return undefined if node status is not set', async () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n\n      const status = await mockStorage.getNodeStatus('nodeId');\n      expect(status).toBeUndefined();\n    });\n\n    it('should set and get node status', async () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n\n      await controller.reportNodeStatus('nodeId', 'BUSY');\n      const status = await mockStorage.getNodeStatus('nodeId');\n      expect(status).toEqual('BUSY');\n    });\n\n    it('should emit node status', () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n\n      controller.addNodeStatusObserver({\n        observerId: 'observerId',\n        nodeIds: ['nodeId'],\n        onReceive: ({ nodes }) => {\n          expect(nodes).toEqual([{ nodeId: 'nodeId', status: 'BUSY' }]);\n        },\n      } as ObserveNodeStatus);\n\n      controller.reportNodeStatus('nodeId', 'BUSY');\n    });\n\n    it('should emit node status with throttle', () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n\n      controller.addNodeStatusObserver({\n        observerId: 'observerId',\n        nodeIds: ['nodeId'],\n        throttleMs: 100,\n        onReceive: ({ nodes }) => {\n          expect(nodes).toEqual([{ nodeId: 'nodeId', status: 'BUSY' }]);\n        },\n      } as ObserveNodeStatus);\n\n      controller.reportNodeStatus('nodeId', 'BUSY');\n    });\n\n    it('should emit node status with multiple nodes', () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n\n      controller.addNodeStatusObserver({\n        observerId: 'observerId',\n        nodeIds: ['nodeId1', 'nodeId2'],\n        onReceive: ({ nodes }) => {\n          expect(nodes).toEqual([{ nodeId: 'nodeId1', status: 'BUSY' }, { nodeId: 'nodeId2', status: 'BUSY' }]);\n        },\n      } as ObserveNodeStatus);\n\n      controller.reportNodeStatus('nodeId1', 'BUSY');\n      controller.reportNodeStatus('nodeId2', 'BUSY');\n    });\n\n    it('should emit node status with multiple observers', async () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n\n      controller.addNodeStatusObserver({\n        observerId: 'observerId1',\n        nodeIds: ['nodeId1'],\n        onReceive: ({ nodes }) => {\n          expect(nodes).toEqual([{ nodeId: 'nodeId1', status: 'COMPLETE' }]);\n        },\n      } as ObserveNodeStatus);\n\n      controller.reportNodeStatus('nodeId1', 'BUSY');\n      controller.reportNodeStatus('nodeId1', 'COMPLETE');\n    });\n\n    it('should emit node status with async storage', async () => {\n      const nodeStatusStorage = new Map<NodeId, NodeStatus>();\n      const mockStorage = new InMemoryObserverStorage('_');\n      mockStorage.setNodeStatuses(nodeStatusStorage)\n\n      mockStorage.setNodeStatus = async (nodeId: NodeId, status: NodeStatus) => {\n        await new Promise((resolve) => setTimeout(() => {\n          nodeStatusStorage.set(nodeId, status);\n          resolve(true);\n        }, 200));\n      }\n\n      const controller = new ObserverController(mockStorage);\n\n      controller.addNodeStatusObserver({\n        observerId: 'observerId',\n        nodeIds: ['nodeId1'],\n        throttleMs: 0,\n        onReceive: ({ nodes }) => {\n          expect(nodes).toEqual([{ nodeId: 'nodeId1', status: 'BUSY' }]);\n        },\n      } as ObserveNodeStatus);\n\n      await controller.reportNodeStatus('nodeId1', 'BUSY');\n    });\n  });\n\n  describe('links Count', () => {\n    it('should be defined', () => {\n      expect(ObserverController.prototype.reportLinksCount).toBeDefined();\n    });\n\n    it('should return undefined if link count is not set', async () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n\n      const count = await mockStorage.getLinkCount('linkId');\n      expect(count).toBeUndefined();\n    });\n\n    it('should set and get link count', async () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n\n      await controller.reportLinksCount({\n        type: RequestObserverType.observeLinkCounts,\n        linkId: 'linkId', count: 10 });\n      const count = await mockStorage.getLinkCount('linkId');\n      expect(count).toEqual(10);\n    });\n\n    it('should emit link count', () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n      const linksCountObserver = { type: RequestObserverType.observeLinkCounts,\n        linkId: 'linkId', count: 10 } as const;\n\n      controller.addLinkCountsObserver({\n        observerId: 'observerId',\n        linkIds: ['linkId'],\n        onReceive: ({ links }) => {\n          expect(links).toEqual([linksCountObserver]);\n        },\n      } as ObserveLinkCounts);\n\n      controller.reportLinksCount(linksCountObserver);\n    });\n\n    it('should emit link count with throttle', () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n      const linksCountObserver = { type: RequestObserverType.observeLinkCounts,\n        linkId: 'linkId', count: 10 } as const;\n\n      controller.addLinkCountsObserver({\n        observerId: 'observerId',\n        linkIds: ['linkId'],\n        throttleMs: 100,\n        onReceive: ({ links }) => {\n          expect(links).toEqual([linksCountObserver]);\n        },\n      } as ObserveLinkCounts);\n\n      controller.reportLinksCount(linksCountObserver);\n    });\n\n    it('should emit link count with multiple links', () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n\n      controller.addLinkCountsObserver({\n        observerId: 'observerId',\n        linkIds: ['linkId1', 'linkId2'],\n        onReceive: ({ links }) => {\n          expect(links).toEqual([\n            { type: RequestObserverType.observeLinkCounts, linkId: 'linkId1', count: 10 },\n            { type: RequestObserverType.observeLinkCounts, linkId: 'linkId2', count: 20 },\n          ]);\n        },\n      } as ObserveLinkCounts);\n\n      controller.reportLinksCount({ type: RequestObserverType.observeLinkCounts, linkId: 'linkId1', count: 10 });\n      controller.reportLinksCount({ type: RequestObserverType.observeLinkCounts, linkId: 'linkId2', count: 20 });\n    });\n\n    it('should emit link count with async storage', async () => {\n      const linkCountsStorage = new Map<LinkId, number>();\n      const mockStorage = new InMemoryObserverStorage('_')\n      mockStorage.setLinkCounts(linkCountsStorage);\n\n      mockStorage.setLinkCount = async (linkId: LinkId, count: number) => {\n        await new Promise((resolve) => setTimeout(() => {\n          linkCountsStorage.set(linkId, count);\n          resolve(true);\n        }, 200));\n      }\n\n      const linksCountObserver = { type: RequestObserverType.observeLinkCounts,\n        linkId: 'linkId', count: 10 } as const;\n      const controller = new ObserverController(mockStorage);\n\n      controller.addLinkCountsObserver({\n        observerId: 'observerId',\n        linkIds: ['linkId'],\n        onReceive: ({ links }) => {\n          expect(links).toEqual([linksCountObserver]);\n        },\n      } as ObserveLinkCounts);\n\n      await controller.reportLinksCount(linksCountObserver);\n    });\n  });\n\n  describe('link items', () => {\n    it('should be defined', () => {\n      expect(ObserverController.prototype.reportItems).toBeDefined();\n    });\n\n    it('should return undefined if link items are not set', async () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n\n      const items = await mockStorage.getLinkItems({\n        linkId: 'linkId', offset: 0, limit: 100,\n      });\n      expect(items).toEqual([]);\n    });\n\n    it('should set and get link items', async () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n\n      await controller.reportItems({\n        type: RequestObserverType.observeLinkItems,\n        linkId: 'linkId', items: [{ value: 1 }] });\n\n      const items = await mockStorage.getLinkItems({ linkId: 'linkId', offset: 0, limit: 100 });\n      expect(items).toEqual([{ value: 1 }]);\n    });\n\n    it('should emit link items', () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n      const linkItemsParam: LinkItemsUpdate = { type: RequestObserverType.observeLinkItems,\n        linkId: 'linkId', items: [{ value: 1 }] };\n\n      controller.addLinkItemsObserver({\n        observerId: 'observerId',\n        linkIds: ['linkId'],\n        throttleMs: 0,\n        onReceive: (items) => {\n          expect(items).toEqual([linkItemsParam]);\n        },\n      } as ObserveLinkItems);\n\n      controller.reportItems(linkItemsParam);\n    });\n\n    it('should emit link items with throttle', async () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n      const linkItemsParam: LinkItemsUpdate = { type: RequestObserverType.observeLinkItems,\n        linkId: 'linkId', items: [{ value: 1 }] };\n\n      controller.addLinkItemsObserver({\n        observerId: 'observerId',\n        linkIds: ['linkId'],\n        throttleMs: 10,\n        onReceive: (items) => {\n          expect(items).toEqual([linkItemsParam]);\n        },\n      } as ObserveLinkItems);\n\n      await controller.reportItems(linkItemsParam);\n      await sleep(20);\n    });\n\n    it('should emit link items with multiple links', () => {\n      const mockStorage = new InMemoryObserverStorage('_');\n      const controller = new ObserverController(mockStorage);\n      const linkItemsParam1: LinkItemsUpdate = { type: RequestObserverType.observeLinkItems,\n        linkId: 'linkId1', items: [{ value: 1 }] };\n      const linkItemsParam2: LinkItemsUpdate = { type: RequestObserverType.observeLinkItems,\n        linkId: 'linkId2', items: [{ value: 2 }] };\n\n      controller.addLinkItemsObserver({\n        observerId: 'observerId',\n        linkIds: ['linkId1', 'linkId2'],\n        throttleMs: 0,\n        onReceive: (items) => {\n          expect(items).toEqual([linkItemsParam1, linkItemsParam2]);\n        },\n      } as ObserveLinkItems);\n\n      controller.reportItems(linkItemsParam1);\n      controller.reportItems(linkItemsParam2);\n    });\n\n    it('should emit link items with async storage', async () => {\n      const linkItemsStorage = new Map<LinkId, ItemValue[]>();\n      const mockStorage = new InMemoryObserverStorage('_')\n      mockStorage.setLinksItems(linkItemsStorage);\n\n      mockStorage.appendLinkItems = async (linkId: LinkId, items: ItemValue[]) => {\n        await new Promise((resolve) => setTimeout(() => {\n          const currentItems = linkItemsStorage.get(linkId) ?? [];\n          linkItemsStorage.set(linkId, currentItems.concat(items));\n          resolve(true);\n        }, 50));\n      }\n\n      const controller = new ObserverController(mockStorage);\n\n      controller.addLinkItemsObserver({\n        observerId: 'observerId',\n        linkIds: ['linkId'],\n        throttleMs: 200,\n        onReceive: (items) => {\n          expect(items).toEqual([{ type: RequestObserverType.observeLinkItems, linkId: 'linkId', items: [{ value: 1 }, { value: 2 }] }]);\n        },\n      } as ObserveLinkItems);\n\n      await controller.reportItems( { type: RequestObserverType.observeLinkItems,\n        linkId: 'linkId', items: [{ value: 1 }] });\n      await controller.reportItems( { type: RequestObserverType.observeLinkItems,\n        linkId: 'linkId', items: [{ value: 2 }] });\n      await sleep(100);\n    });\n  });\n\n  describe('observeLinkUpdate', () => {\n    let observer: ObserveLinkUpdate;\n    let controller: ObserverController;\n    beforeEach(() => {\n      observer = {\n        linkIds: ['linkId'],\n        onReceive: vi.fn(),\n        type: RequestObserverType.observeLinkUpdate,\n        observerId: 'observerId',\n        throttleMs:0,\n      };\n\n      const mockStorage = new InMemoryObserverStorage('_');\n      controller = new ObserverController(mockStorage);\n    });\n\n    it('should call onReceive when items are received', async() => {\n      controller.observeLinkUpdate(observer);\n\n      await controller.reportItems({\n        type: RequestObserverType.observeLinkItems,\n        linkId: 'linkId', items: [{ value: 1 }] });\n      await sleep(1);\n\n      expect(observer.onReceive).toHaveBeenCalledTimes(1);\n      expect(observer.onReceive).toHaveBeenCalledWith(observer.linkIds);\n    });\n\n    it('should not call onReceive when no items are received', async () => {\n      controller.observeLinkUpdate(observer);\n      await sleep(1);\n\n      expect(observer.onReceive).not.toHaveBeenCalled();\n    });\n\n    it('should call onReceive when multiple items are received', async() => {\n      controller.observeLinkUpdate(observer);\n\n      await controller.reportItems({\n        type: RequestObserverType.observeLinkItems,\n        linkId: 'linkId', items: [{ value: 1 }] });\n      await sleep(1);\n      await controller.reportItems({\n        type: RequestObserverType.observeLinkItems,\n        linkId: 'linkId', items: [{ value: 2 }] });\n      await sleep(1);\n\n      expect(observer.onReceive).toHaveBeenCalledTimes(2);\n      expect(observer.onReceive).toHaveBeenCalledWith(observer.linkIds);\n    });\n\n    it('should call onReceive when items are received with throttle', async() => {\n      observer.throttleMs = 10;\n      controller.observeLinkUpdate(observer);\n\n      await controller.reportItems({\n        type: RequestObserverType.observeLinkItems,\n        linkId: 'linkId', items: [{ value: 1 }] });\n      await sleep(1);\n\n      expect(observer.onReceive).toHaveBeenCalledTimes(0);\n\n      await sleep(10);\n      expect(observer.onReceive).toHaveBeenCalledTimes(1);\n      expect(observer.onReceive).toHaveBeenCalledWith(observer.linkIds);\n    });\n  });\n\n  // todo: add test for deleteExecutionObserver and observerMap\n});\n"
  },
  {
    "path": "packages/core/src/ObserverController.ts",
    "content": "import { ItemValue } from './types/ItemValue';\nimport { RequestObserverType } from './types/InputObserveConfig';\nimport {\n  CancelObservation,\n  NodesStatusInfo,\n  ObserveLinkCounts,\n  ObserveLinkItems,\n  ObserveLinkUpdate,\n  ObserveNodeStatus,\n} from './types/ExecutionObserver';\nimport { bufferTime, Subject, Subscription } from 'rxjs';\nimport { filter, map, tap } from 'rxjs/operators';\nimport { LinkId } from './types/Link';\nimport { GetDataFromStorageParams, LinkItems } from './types/GetDataFromStorageParams';\nimport { NodeStatus } from './Executor';\nimport { NodeId } from './types/Node';\nimport { ObserverStorage } from './types/ObserverStorage';\nimport { LinkItemsUpdate } from './types/LinkItemsUpdate';\nimport { LinksCountUpdate } from './types/LinksCountUpdate';\nimport { sleep } from './utils/sleep';\n\nconst ThrottleMS: number = 300;\n\nexport class ObserverController {\n  private items$ = new Subject<LinkItemsUpdate>();\n  private links$ = new Subject<LinksCountUpdate>();\n  private nodeStatus$ = new Subject<{ nodeId: NodeId, status: NodeStatus }>();\n  private observerMap: Map<string, Subscription> = new Map();\n\n  constructor(private storage: ObserverStorage) {}\n\n  /**\n   * When we invoke `reportItems`, it triggers the `notifyObservers` callback and forwards the `items` and `inputObserver` parameters\n   */\n  async reportItems(update: LinkItemsUpdate): Promise<void> {\n    this.items$.next(update);\n    await this.storage.appendLinkItems(update.linkId, update.items);\n  }\n\n  setItems(linkId: LinkId, items: ItemValue[]): void {\n    this.storage.setLinkItems(linkId, items);\n  }\n\n  async reportLinksCount(update: LinksCountUpdate): Promise<void> {\n    this.links$.next(update);\n    await this.storage.setLinkCount(update.linkId, update.count);\n  }\n\n  // The current requirement only needs to retain 'BUSY' and 'COMPLETE' in NodeStatus.\n  async reportNodeStatus(nodeId: NodeId, status: NodeStatus): Promise<void> {\n    if (status === 'AVAILABLE') {\n      return;\n    }\n    this.nodeStatus$.next({ nodeId, status });\n    await this.storage.setNodeStatus(nodeId, status);\n  }\n\n  async getDataFromStorage({\n    linkId,\n    limit = 100,\n    offset = 0,\n  }: GetDataFromStorageParams): Promise<LinkItems> {\n    const items: LinkItems = {};\n    const currentItems = await this.storage.getLinkItems({ linkId, offset, limit }) ?? [];\n    items[linkId] = currentItems;\n    return items;\n  }\n\n  observeLinkUpdate(observer: ObserveLinkUpdate): () => void {\n    const subscription = this.items$.pipe(\n      filter(payload => observer.linkIds.includes(payload.linkId)),\n      map(payload => payload.items),\n      bufferTime(observer.throttleMs ?? ThrottleMS),\n      filter(it=>it.length > 0),\n      map(bufferedItems => bufferedItems.flat(1)),\n      tap(items => {\n        observer.onReceive(observer.linkIds);\n      }),\n    ).subscribe();\n\n    if (observer?.observerId && subscription) this.observerMap.set(observer.observerId, subscription);\n\n    return () => {\n      this.deleteExecutionObserver({\n        type: RequestObserverType.cancelObservation,\n        observerId: observer.observerId,\n      });\n    };\n  }\n\n  addLinkItemsObserver(observer: ObserveLinkItems): () => void {\n    const subscription = this.items$.pipe(\n      filter(payload => observer.linkIds.includes(payload.linkId)),\n      bufferTime(observer.throttleMs ?? ThrottleMS),\n      filter(bufferedItems => bufferedItems.length > 0),\n      map(bufferedItems => {\n        // implement groupBy\n        const grouped = bufferedItems.reduce((acc, item) => {\n          if (!acc[item.linkId]) {\n            acc[item.linkId] = [];\n          }\n          acc[item.linkId].push(item);\n          return acc;\n        }, {} as Record<string, typeof bufferedItems>);\n\n        // convert MemoryItemObserver array\n        return Object.keys(grouped).map(linkId => ({\n          linkId,\n          type: RequestObserverType.observeLinkItems,\n          items: grouped[linkId].flatMap(item => item.items),\n        } as LinkItemsUpdate));\n      }),\n      tap(items => {\n        observer.onReceive(items);\n      }),\n    ).subscribe();\n\n    if (observer?.observerId && subscription) this.observerMap.set(observer.observerId, subscription);\n\n    return () => {\n      this.deleteExecutionObserver({\n        type: RequestObserverType.cancelObservation,\n        observerId: observer.observerId,\n      });\n    };\n  }\n\n  addLinkCountsObserver(observer: ObserveLinkCounts): () => void {\n    const subscription = this.links$.pipe(\n      filter(payload => observer.linkIds.includes(payload.linkId)),\n      map(payload => payload),\n      bufferTime(observer.throttleMs ?? ThrottleMS),\n      filter(it=> it.length > 0),\n      map(counts => {\n        // Group by linkId and keep only the latest entry for each linkId\n        const latestByLinkId = new Map<string, LinksCountUpdate>();\n        counts.forEach(count => {\n          latestByLinkId.set(count.linkId, count);\n        });\n        return Array.from(latestByLinkId.values());\n      }),\n      tap(counts => {\n        observer.onReceive({\n          links: counts,\n        });\n      }),\n    ).subscribe();\n\n    if (observer?.observerId && subscription) this.observerMap.set(observer.observerId, subscription);\n\n    return () => {\n      this.deleteExecutionObserver({\n        type: RequestObserverType.cancelObservation,\n        observerId: observer.observerId,\n      });\n    };\n  }\n\n  addNodeStatusObserver(observer: ObserveNodeStatus): () => void {\n    const subscription = this.nodeStatus$.pipe(\n      filter(payload => observer.nodeIds.includes(payload.nodeId)),\n      bufferTime(observer.throttleMs ?? ThrottleMS),\n      filter(it=> it.length > 0),\n      map(statuses => {\n        // Group by nodeId and keep only the latest entry for each nodeId\n        const latestByNodeId = new Map<string, { nodeId: string; status: NodeStatus }>();\n        statuses.forEach(status => {\n          latestByNodeId.set(status.nodeId, status);\n        });\n        return Array.from(latestByNodeId.values());\n      }),\n      tap(async (nodes) => {\n        observer.onReceive({\n          nodes: nodes as NodesStatusInfo[],\n        });\n      }),\n    ).subscribe();\n\n    if (observer.observerId && subscription) this.observerMap.set(observer.observerId, subscription);\n\n    return () => {\n      this.deleteExecutionObserver({\n        type: RequestObserverType.cancelObservation,\n        observerId: observer.observerId,\n      });\n    };\n  }\n\n  deleteExecutionObserver(observer: CancelObservation): void {\n    if (observer?.observerId) {\n      const subscription = this.observerMap.get(observer.observerId);\n      if (subscription) {\n        subscription.unsubscribe();\n        this.observerMap.delete(observer.observerId);\n      }\n    }\n  }\n\n  async dispose() {\n    // Await any throttled events to complete\n    await sleep(ThrottleMS)\n\n    // Remove all subscriptions\n    this.observerMap.forEach((subscription) => subscription.unsubscribe());\n    this.observerMap.clear();\n\n    this.storage.close();\n    // Complete all subjects\n    this.items$.complete();\n    this.links$.complete();\n    this.nodeStatus$.complete();\n  }\n}"
  },
  {
    "path": "packages/core/src/OutputDevice.test.ts",
    "content": "import { OutputDevice } from './OutputDevice';\nimport { ExecutionMemory } from './ExecutionMemory';\n\ndescribe('push', () => {\n  it('pushes items to all links connected to port \"output\"', async () => {\n    const map = {\n      output: [\n        'Source.1.output--->Target.1.input',\n        'Source.1.output--->Target.2.input',\n      ],\n    }\n\n    const memory = new ExecutionMemory()\n\n    memory.setLinkItems('Source.1.output--->Target.1.input', [{ i: 1 }])\n    memory.setLinkItems('Source.1.output--->Target.2.input', [{ i: 2 }])\n\n    memory.setLinkCount('Source.1.output--->Target.1.input', 1)\n    memory.setLinkCount('Source.1.output--->Target.2.input', 1)\n\n    const output = new OutputDevice(map, memory)\n\n    output.push([{ i: 100 }, { i: 200 }])\n    // Ensure both links got the new 100 & 200 item\n    expect(memory.getLinkItems('Source.1.output--->Target.1.input')).toMatchObject([\n      { i: 1 },\n      { i: 100 },\n      { i: 200 },\n    ])\n    expect(memory.getLinkItems('Source.1.output--->Target.2.input')).toMatchObject([\n      { i: 2 },\n      { i: 100 },\n      { i: 200 },\n    ])\n\n    // Ensure counts were incremented\n    expect(memory.getLinkCount('Source.1.output--->Target.1.input')).toBe(3)\n    expect(memory.getLinkCount('Source.1.output--->Target.2.input')).toBe(3)\n  })\n})\n\ndescribe('pushTo', () => {\n  it('pushes items to all links connected to a named port', async () => {\n    const map = {\n      strings: [\n        'Source.1.strings--->Target.1.input',\n        'Source.1.strings--->Target.2.input',\n      ],\n    }\n\n    const memory = new ExecutionMemory()\n\n    memory.setLinkItems('Source.1.strings--->Target.1.input', [{ i: 'a' }])\n    memory.setLinkItems('Source.1.strings--->Target.2.input', [{ i: 'b' }])\n\n    memory.setLinkCount('Source.1.strings--->Target.1.input', 1)\n    memory.setLinkCount('Source.1.strings--->Target.2.input', 1)\n\n    const output = new OutputDevice(map, memory)\n\n    output.pushTo('strings', [{ i: 'c' }])\n\n    // Ensure both links got the new {i: 'c'} item\n    expect(memory.getLinkItems('Source.1.strings--->Target.1.input')).toMatchObject([{ i: 'a' }, { i: 'c' }])\n    expect(memory.getLinkItems('Source.1.strings--->Target.2.input')).toMatchObject([{ i: 'b' }, { i: 'c' }])\n\n    // Ensure counts were incremented\n    expect(memory.getLinkCount('Source.1.strings--->Target.1.input')).toBe(2)\n    expect(memory.getLinkCount('Source.1.strings--->Target.2.input')).toBe(2)\n  })\n})"
  },
  {
    "path": "packages/core/src/OutputDevice.ts",
    "content": "import { LinkId } from './types/Link'\nimport { ItemValue } from './types/ItemValue'\nimport { ExecutionMemory } from './ExecutionMemory'\nimport { ItemWithParams, isItemWithParams } from './ItemWithParams'\nimport { PortName } from './types/Port'\nimport { Node } from './types/Node';\nimport rfdc from 'rfdc';\n\nconst cloneDeep = rfdc();\nexport type PortLinkMap = Record<PortName, LinkId[]>\n\nconst formatItems = (items: ItemValue[]): ItemValue[] => {\n  try {\n    return cloneDeep(items);\n  } catch (e) {\n    try {\n      return JSON.parse(JSON.stringify(items));\n    } catch (jsonError) {\n      throw new Error(`\n        Items are not serializable: ${jsonError}\n        Items might not be structured cloneable.\n      `);\n    }\n  }\n};\n\nexport class OutputDevice {\n  constructor(\n    private portLinkMap: PortLinkMap = {},\n    private memory: ExecutionMemory,\n    private node?: Node,\n  ) {}\n\n  getPortNames(): string[] {\n    return Object.keys(this.portLinkMap)\n  }\n\n  push(items: ItemValue[]) {\n    return this.pushTo('output', items)\n  }\n\n  pushTo(name: PortName, itemable: (ItemValue | ItemWithParams)[]) {\n    const connectedLinks = this.portLinkMap[name]\n\n    // When outputting we should not be in a params infused ItemWithParams\n    const items = itemable.map(i => isItemWithParams(i) ? i.value : i)\n\n    for(const linkId of connectedLinks) {\n      const formattedItems =  formatItems(items);\n      // Update items on link\n      this.memory.pushLinkItems(\n        linkId,\n        // Clone items to ensure induvidual mutation per branch\n        formattedItems,\n      )\n      // Update link counts\n      const count = this.memory.getLinkCount(linkId)!\n      this.memory.setLinkCount(linkId, count + items.length);\n    }\n  }\n\n  /**\n   *\n   * (Test) Utility to get items have been outputted through a port\n   */\n  itemsOutputtedThrough(name: PortName): ItemValue {\n    const [connectedLink] = this.portLinkMap[name]\n\n    return this.memory.getLinkItems(connectedLink) ?? []\n  }\n}\n"
  },
  {
    "path": "packages/core/src/Param/Cast.ts",
    "content": "import { z } from 'zod';\n\nexport const CastSchema = z.object({\n  type: z.string(),\n  label: z.string(),\n  shortLabel: z.string(),\n  selected: z.boolean().optional(),\n});\nexport type Cast = z.infer<typeof CastSchema>;"
  },
  {
    "path": "packages/core/src/Param/Evaluation.ts",
    "content": "import { z } from 'zod';\n\nexport const EvaluationSchema = z.object({\n  type: z.string(),\n  label: z.string(),\n  shortLabel: z.string(),\n  selected: z.boolean().optional(),\n});\nexport type Evaluation = z.infer<typeof EvaluationSchema>;"
  },
  {
    "path": "packages/core/src/Param/Param.ts",
    "content": "import { PortName, PortNameSchema } from '../types/Port'\nimport { Cast, CastSchema } from './Cast'\nimport { Evaluation, EvaluationSchema } from './Evaluation'\nimport { numberCast } from './casts/numberCast'\nimport { stringCast } from './casts/stringCast'\nimport { jsExpressionEvaluation } from './evaluations/jsExpressionEvaluation'\nimport { jsFunctionEvaluation } from './evaluations/jsFunctionEvaluation'\nimport { jsonEvaluation } from './evaluations/jsonEvaluation'\nimport { z } from 'zod';\n\nexport const StringableInputValueSchema = z.object({\n  rawValue: z.string(),\n  Evaluation: z.string().optional(),\n  Cast: z.string().optional(),\n});\nexport type StringableInputValue = z.infer<typeof StringableInputValueSchema>;\n\nexport const ParamNameSchema = z.string();\nexport type ParamName = z.infer<typeof ParamNameSchema>;\n\nexport const StringableParamSchema = z.object({\n  name: ParamNameSchema,\n  label: z.string(),\n  help: z.string(),\n  type: z.literal('StringableParam'),\n  multiline: z.boolean(),\n  canInterpolate: z.boolean(),\n  interpolate: z.boolean().optional(),\n  interpolationsFromPort: z.array(PortNameSchema).optional(),\n  casts: z.array(CastSchema).optional(),\n  evaluations: z.array(EvaluationSchema).optional(),\n  input: StringableInputValueSchema,\n});\nexport type StringableParam = z.infer<typeof StringableParamSchema>;\n\nexport type ParamId = string\n\nexport const ParamSchema = StringableParamSchema;\nexport type Param = z.infer<typeof ParamSchema>;\n\nexport type ParamInput = Param['input']\n\nexport type EvaluatedParamValue = any\n\nexport type StaticEvaluatedParamValue = any\n\nexport const str = ({\n  name,\n  label,\n  help,\n  multiline,\n  canInterpolate,\n  interpolate,\n  evaluations,\n  value,\n}: {\n  name: ParamName,\n  label?: string,\n  help?: string,\n  multiline?: boolean,\n  canInterpolate?: boolean,\n  interpolate?: boolean,\n  evaluations?: Evaluation[],\n  value?: string,\n}): StringableParam => {\n  return {\n    name,\n    type: 'StringableParam',\n    label: label ?? name,\n    help: help ?? '',\n    multiline: multiline ?? false,\n    canInterpolate: canInterpolate ?? true,\n    interpolate: interpolate ?? true,\n    evaluations: evaluations,\n    casts: [\n      stringCast,\n    ],\n    input: {\n      rawValue: value ?? '',\n      Cast: stringCast.type,\n    },\n  }\n}\n\nexport const num = ({\n  name,\n  label,\n  help,\n  multiline,\n  canInterpolate,\n  interpolate,\n  evaluations,\n  value,\n}: {\n  name: ParamName,\n  label?: string,\n  help?: string,\n  multiline?: boolean,\n  canInterpolate?: boolean,\n  interpolate?: boolean,\n  evaluations?: Evaluation[],\n  value?: string | number,\n}): Param => {\n  return {\n    name,\n    type: 'StringableParam',\n    label: label ?? name,\n    help: help ?? '',\n    multiline: multiline ?? false,\n    canInterpolate: canInterpolate ?? true,\n    interpolate: interpolate ?? true,\n    evaluations: evaluations,\n    casts: [\n      numberCast,\n    ],\n    input: {\n      rawValue: String(value ?? 0),\n      Cast: numberCast.type,\n    },\n  }\n}\n\nexport const json_ = ({\n  name,\n  label,\n  help,\n  multiline = true,\n  canInterpolate,\n  interpolate,\n  evaluations,\n  value,\n}: {\n  name: ParamName,\n  label?: string,\n  help?: string,\n  multiline?: boolean,\n  canInterpolate?: boolean,\n  interpolate?: boolean,\n  evaluations?: Evaluation[],\n  value?: string,\n}): Param => {\n  return {\n    name,\n    type: 'StringableParam',\n    label: label ?? name,\n    help: help ?? '',\n    multiline: multiline ?? false,\n    canInterpolate: canInterpolate ?? true,\n    interpolate: interpolate ?? true,\n    evaluations: evaluations ?? [\n      jsonEvaluation,\n      jsFunctionEvaluation,\n      jsExpressionEvaluation,\n    ],\n    casts: [\n      numberCast,\n      stringCast,\n    ],\n    input: {\n      rawValue: String(value ?? 0),\n      Evaluation: jsonEvaluation.type,\n    },\n  }\n}\n\nexport const jsFn = ({\n  name,\n  label,\n  help,\n  multiline = true,\n  canInterpolate,\n  interpolate,\n  evaluations,\n  value,\n}: {\n  name: ParamName,\n  label?: string,\n  help?: string,\n  multiline?: boolean,\n  canInterpolate?: boolean,\n  interpolate?: boolean,\n  evaluations?: Evaluation[],\n  value?: string,\n}): Param => {\n  return {\n    name,\n    type: 'StringableParam',\n    label: label ?? name,\n    help: help ?? '',\n    multiline: multiline ?? false,\n    canInterpolate: canInterpolate ?? true,\n    interpolate: interpolate ?? true,\n    evaluations: evaluations ?? [\n      jsonEvaluation,\n      jsFunctionEvaluation,\n      jsExpressionEvaluation,\n    ],\n    casts: [\n      numberCast,\n      stringCast,\n    ],\n    input: {\n      rawValue: String(value ?? 0),\n      Evaluation: jsFunctionEvaluation.type,\n    },\n  }\n}\n\nexport const jsExpression = ({\n  name,\n  label,\n  help,\n  multiline = true,\n  canInterpolate,\n  interpolate,\n  evaluations,\n  value,\n}: {\n  name: ParamName,\n  label?: string,\n  help?: string,\n  multiline?: boolean,\n  canInterpolate?: boolean,\n  interpolate?: boolean,\n  evaluations?: Evaluation[],\n  value?: string,\n}): Param => {\n  return {\n    name,\n    type: 'StringableParam',\n    label: label ?? name,\n    help: help ?? '',\n    multiline: multiline ?? false,\n    canInterpolate: canInterpolate ?? true,\n    interpolate: interpolate ?? true,\n    evaluations: evaluations ?? [\n      jsonEvaluation,\n      jsFunctionEvaluation,\n      jsExpressionEvaluation,\n    ],\n    casts: [\n      numberCast,\n      stringCast,\n    ],\n    input: {\n      rawValue: String(value ?? 0),\n      Evaluation: jsExpressionEvaluation.type,\n    },\n  }\n}\n"
  },
  {
    "path": "packages/core/src/Param/casts/numberCast.ts",
    "content": "import { Cast } from '../Cast';\n\nexport const numberCast: Cast = {\n  type: 'numberCast',\n  label: 'Number',\n  shortLabel: 'num',\n}"
  },
  {
    "path": "packages/core/src/Param/casts/stringCast.ts",
    "content": "import { Cast } from '../Cast';\n\nexport const stringCast: Cast = {\n  type: 'stringCast',\n  label: 'String',\n  shortLabel: 'str',\n}"
  },
  {
    "path": "packages/core/src/Param/evaluations/jsExpressionEvaluation.ts",
    "content": "import { Evaluation } from '../Evaluation';\n\nexport const jsExpressionEvaluation: Evaluation = {\n  type: 'JS_EXPRESSION',\n  label: 'JS Expression',\n  shortLabel: 'expr',\n}"
  },
  {
    "path": "packages/core/src/Param/evaluations/jsFunctionEvaluation.ts",
    "content": "import { Evaluation } from '../Evaluation';\n\nexport const jsFunctionEvaluation: Evaluation = {\n  type: 'JS_FUNCTION',\n  label: 'JS Function',\n  shortLabel: 'fn',\n}"
  },
  {
    "path": "packages/core/src/Param/evaluations/jsonEvaluation.ts",
    "content": "import { Evaluation } from '../Evaluation';\n\nexport const jsonEvaluation: Evaluation = {\n  type: 'JSON',\n  label: 'JSON',\n  shortLabel: 'json',\n}"
  },
  {
    "path": "packages/core/src/Param/evaluations/stringListEvaluation.ts",
    "content": "import { Evaluation } from '../Evaluation';\n\nexport const stringListEvaluation: Evaluation = {\n  type: 'STRING_LIST',\n  label: 'list',\n  shortLabel: 'list',\n}"
  },
  {
    "path": "packages/core/src/Param/index.ts",
    "content": "export * from './Param'"
  },
  {
    "path": "packages/core/src/PositionGuesser.ts",
    "content": "import { Diagram } from './Diagram';\nimport { Node } from './types/Node';\nimport { NodeDescription } from './types/NodeDescription';\n\nexport class PositionGuesser {\n  constructor(\n    public diagram: Diagram,\n  ) {}\n\n  guess(\n    node: Node | NodeDescription,\n  ): { x: number, y: number } {\n    // Defines starting position for new nodes\n    const startX = 75;\n    const startY = 50;\n    // Spacing between nodes\n    const spaceX = 200;\n    const spaceY = 200;\n\n    // Get the max X and Y positions of existing nodes\n    const maxX = this.diagram.nodes.map((node) => node.position!.x).reduce((max, x) => Math.max(max, x), 0)\n    const maxY = this.diagram.nodes.map((node) => node.position!.y).reduce((max, y) => Math.max(max, y), 0)\n\n    const isStarterNode = node.inputs.length === 0;\n    const name = (node as Node).type ?? (node as NodeDescription).computerType;\n    const isInputNode = name === 'Input';\n\n    if(isStarterNode || isInputNode) {\n      return { x: startX, y: maxY === 0 ? startY : maxY + spaceY }\n    }\n\n    const mostRecentNode = this.diagram.nodes.at(-1)\n    const baseX = mostRecentNode?.position!.x ?? maxX\n\n    return { x: baseX + spaceX, y: mostRecentNode?.position!.y ?? startY + spaceY  }\n  }\n}"
  },
  {
    "path": "packages/core/src/Registry.ts",
    "content": "import { Diagram } from './Diagram';\nimport { Computer, ComputerType } from './types/Computer';\nimport { NodeDescription } from './types/NodeDescription';\n\nexport type ComputerRecord = Record<ComputerType, Computer>\nexport type ConfiguredComputerAlias = {\n  type: string,\n  aliasFactory: (original: NodeDescription) => NodeDescription,\n}\nexport type ConfiguredComputerAliases = ConfiguredComputerAlias[]\nexport type NestedNodesRecord = Record<string, Diagram>\n\nexport class Registry {\n  computers: ComputerRecord = {};\n  configuredComputerAliases: ConfiguredComputerAliases = [];\n  nestedNodes: NestedNodesRecord = {};\n\n  constructor(\n    computers: ComputerRecord,\n    nestedNodes: NestedNodesRecord,\n    configuredComputerAliases: ConfiguredComputerAliases,\n  ) {\n    this.computers = computers;\n    this.nestedNodes = nestedNodes;\n    this.configuredComputerAliases = configuredComputerAliases;\n  }\n}"
  },
  {
    "path": "packages/core/src/computers/Aggregate.ts",
    "content": "import { ItemValue } from '../types/ItemValue';\nimport { ItemWithParams } from '../ItemWithParams';\nimport { str } from '../Param';\nimport { Computer } from '../types/Computer';\nimport { get } from '../utils/get';\n\nexport const Aggregate: Computer = {\n  type: 'Computer',\n  computerType: 'Aggregate',\n  label: 'Aggregate',\n  inputs: [\n    {\n      name: 'input',\n      schema: {},\n    },\n  ],\n  outputs: [\n    {\n      name: 'aggregated',\n      schema: {},\n    },\n  ],\n  params: [\n    str(\n      {\n        name: 'aggregation_property',\n        label: 'Aggregation Property',\n        help: 'The property to aggregate on',\n        multiline: false,\n        canInterpolate: false,\n        interpolate: false,\n        value: '',\n      },\n    ),\n  ],\n\n  canRun({ input, isAvailable }) {\n    return isAvailable() && input.haveAllItemsAtInput('input')\n  },\n\n  async *run({ input, output, params }) {\n    const all = input.pull()\n    const property: string = get(params, 'aggregation_property')\n\n    const groups = new Map();\n    for (const item of all) {\n      const key = property ? get(item.value, property) : null;\n\n      if (!groups.has(key)) groups.set(key, []);\n\n      groups.get(key).push(item);\n    }\n\n    for (const [key, group] of groups) {\n      const aggretion: ItemValue = {\n        type: 'aggregate',\n        key,\n        length: group.length,\n        items: group.map((item: ItemWithParams) => item.value),\n      }\n\n      output.pushTo('aggregated', [aggretion]);\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Anonymize.ts",
    "content": "import { ItemValue } from '../types/ItemValue';\nimport { Computer } from '../types/Computer';\nimport { anonymize } from '../utils/anonymize';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const Anonymize: Computer = {\n  type: 'Computer',\n  computerType: 'Anonymize',\n  label: 'Anonymize',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [],\n\n  async *run({ input, output, params }) {\n    while(true) {\n      const incoming = input.pull(BatchLimit)\n\n      const replacers = incoming.map(item => anonymize(item.value)) as ItemValue[]\n\n      output.push(replacers)\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Await.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Await } from './Await';\n\nit('outputs an item through no_items when no input', async () => {\n  await when(Await)\n    .hasParams({ number_of_items: 1 })\n    .getsInputs({\n      input: [],\n    })\n    .doRun()\n    .expectOutputs({\n      output: [],\n      no_items: [\n        { message: 'No items available to await node.' },\n      ],\n    })\n    .ok()\n})\n"
  },
  {
    "path": "packages/core/src/computers/Await.ts",
    "content": "import { num, StringableInputValue } from '../Param';\nimport { Computer } from '../types/Computer';\n\nexport const Await: Computer = {\n  type: 'Computer',\n  computerType: 'Await',\n  label: 'Await',\n  inputs: [\n    {\n      name: 'input',\n      schema: {},\n    },\n  ],\n  outputs: [\n    {\n      name: 'output',\n      schema: {},\n    },\n    {\n      name: 'no_items',\n      schema: {},\n    },\n  ],\n  params: [\n    num(\n      {\n        name: 'number_of_items',\n        label: 'Number of Items',\n        help: 'How many items to await?',\n        multiline: false,\n        canInterpolate: false,\n        interpolate: false,\n        value: 'Infinity',\n      },\n    ),\n  ],\n\n  canRun({ input, params, isAvailable }) {\n    const haveChunk = input.haveItemsAtInput(\n      'input',\n      Number(params.number_of_items.input.rawValue),\n    )\n\n    const haveRemainder = input.haveAllItemsAtInput('input')\n\n    return isAvailable() && (haveChunk || haveRemainder)\n  },\n\n  async *run({ input, output, params }) {\n    let hasPulledAny = false\n\n    while(true) {\n      const incoming = input.pull()\n\n      const pulledCount = incoming.length\n      if(pulledCount > 0) hasPulledAny = true\n      const chunkSize = params.number_of_items as unknown as number\n\n      output.push(incoming)\n\n      if(pulledCount === 0) output.pushTo('no_items', [{\n        message: 'No items available to await node.',\n      }])\n\n      if(pulledCount < chunkSize) break;\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Clone.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Clone } from './Clone';\n\nit('outputs clones with ids', async () => {\n  await when(Clone)\n    .hasParams({ count: '3' })\n    .getsInput([{ season: 'Easter' }])\n    .doRun()\n    .expectOutputs({\n      original: [{ season: 'Easter' }],\n      clones: [\n        { season: 'Easter', _clone_id: 0 },\n        { season: 'Easter', _clone_id: 1 },\n        { season: 'Easter', _clone_id: 2 },\n      ],\n    })\n    .ok()\n})\n"
  },
  {
    "path": "packages/core/src/computers/Clone.ts",
    "content": "import { num } from '../Param';\nimport { Computer } from '../types/Computer';\nimport { ItemValue } from '../types/ItemValue';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const Clone: Computer = {\n  type: 'Computer',\n  computerType: 'Clone',\n  label: 'Clone',\n  inputs: [\n    {\n      name: 'input',\n      schema: {},\n    },\n  ],\n  outputs: [\n    {\n      name: 'clones',\n      schema: {},\n    },\n    {\n      name: 'original',\n      schema: {},\n    },\n  ],\n  params: [\n    num({\n      name: 'count',\n      help: 'How many clones to make?',\n      value: 10,\n    }),\n  ],\n\n  async *run({ input, output, params }) {\n    while (true) {\n      const incoming = input.pull(BatchLimit);\n      output.pushTo('original', incoming);\n\n      const count = Number(params.count);\n      const clones: ItemValue[] = [];\n      const BATCH_SIZE = 10000;\n\n      for (let i = 0; i < count; i++) {\n        for (const item of incoming) {\n          const clonedItem = Object.assign({}, item.value, { _clone_id: i });\n          clones.push(clonedItem);\n\n          // Push in batches to manage memory\n          if (clones.length >= BATCH_SIZE) {\n            output.pushTo('clones', clones.splice(0, BATCH_SIZE));\n          }\n        }\n      }\n\n      // Push any remaining clones\n      if (clones.length > 0) {\n        output.pushTo('clones', clones);\n      }\n\n      // Clear large arrays to free memory\n      incoming.length = 0;\n      clones.length = 0;\n\n      yield;\n    }\n  },\n\n};\n"
  },
  {
    "path": "packages/core/src/computers/Comment.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Comment } from './Comment';\n\nit('does nothing', async () => {\n  await when(Comment)\n    .hasDefaultParams()\n    .doRun()\n    .ok()\n})\n"
  },
  {
    "path": "packages/core/src/computers/Comment.ts",
    "content": "import { multiline } from '../utils/multiline';\nimport { str } from '../Param';\nimport { Computer } from '../types/Computer';\n\nexport const Comment: Computer = {\n  type: 'Computer',\n  computerType: 'Comment',\n  label: 'Comment',\n  inputs: [],\n  outputs: [],\n  params: [\n    str( {\n      name: 'content',\n      label: 'Content',\n      help: 'Markdown content',\n      multiline: true,\n      canInterpolate: false,\n      interpolate: false,\n      evaluations: [],\n      value: multiline`\n        ### Comment\n        paragraph\n      `,\n    }),\n  ],\n\n  async *run({}) {},\n};\n"
  },
  {
    "path": "packages/core/src/computers/ConsoleLog.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { ConsoleLog } from './ConsoleLog';\n\nit('register one console log per item', async () => {\n  await when(ConsoleLog)\n    .hasDefaultParams()\n    .getsInput([{ id: 1 }, { id: 2 }])\n    .doRun()\n    .ok()\n})\n\nit('can register an interpolated console log message', async () => {\n  await when(ConsoleLog)\n    .hasParams({\n      message: 'Hello ${{name}}!',\n    })\n    .getsInput([{ id: 1, name: 'ajthinking' }])\n    .doRun()\n    .ok()\n})\n"
  },
  {
    "path": "packages/core/src/computers/ConsoleLog.ts",
    "content": "import { numberCast } from '../Param/casts/numberCast';\nimport { stringCast } from '../Param/casts/stringCast';\nimport { jsFunctionEvaluation } from '../Param/evaluations/jsFunctionEvaluation';\nimport { jsonEvaluation } from '../Param/evaluations/jsonEvaluation';\nimport { str } from '../Param';\nimport { Computer } from '../types/Computer';\n\nexport const ConsoleLog: Computer = {\n  type: 'Computer',\n  computerType: 'ConsoleLog',\n  label: 'Console.log',\n  inputs: [\n    {\n      name: 'input',\n      schema: {},\n    },\n  ],\n  outputs: [],\n  params: [\n    str( {\n      name: 'message',\n      label: 'message',\n      help: 'What to log. Leave blank to log the whole item.',\n      multiline: false,\n      canInterpolate: true,\n      interpolate: true,\n      evaluations: [\n        jsFunctionEvaluation,\n        jsonEvaluation,\n      ],\n      value: '',\n    }),\n  ],\n\n  async *run({ input, hooks, params: rawParams }) {},\n};\n"
  },
  {
    "path": "packages/core/src/computers/Create.test.ts",
    "content": "import { jsFunctionEvaluation } from '../Param/evaluations/jsFunctionEvaluation';\nimport { jsExpressionEvaluation } from '../Param/evaluations/jsExpressionEvaluation'\nimport { when } from '../support/computerTester/ComputerTester';\nimport { multiline } from '../utils/multiline';\nimport { Create } from './Create';\n\nit('reads json by default', async () => {\n  await when(Create)\n    .hasParams({ data: JSON.stringify([{ a: 1 }]) })\n    .doRun()\n    .expectOutput([{ a: 1 }])\n    .ok()\n})\n\nit('wraps non array inputs', async () => {\n  await when(Create)\n    .hasParams({ data: JSON.stringify({ a: 1 }) })\n    .doRun()\n    .expectOutput([{ a: 1 }])\n    .ok()\n})\n\nit('can parse js function', async () => {\n  await when(Create)\n    .hasParam({\n      name: 'data',\n      input: {\n        rawValue: '() => ({ sum: 1 + 1 })',\n        Evaluation: 'JS_FUNCTION',\n      },\n      evaluations: [\n        { ...jsFunctionEvaluation, selected: true },\n      ],\n    })\n    .doRun()\n    .expectOutput([{ sum: 2 }])\n    .ok()\n})\n\nit('can parse js expression', async () => {\n  await when(Create)\n    .hasParam({\n      name: 'data',\n      input: {\n        rawValue: multiline`\n      ({\n        interesting: 'yes'\n      })`,\n        Evaluation: 'JS_EXPRESSION',\n      },\n      evaluations: [\n        { ...jsExpressionEvaluation, selected: true },\n      ],\n    })\n    .doRun()\n    .expectOutput([{ interesting: 'yes' }])\n    .ok()\n})\n\nit('can directly parse js objects starting with bracket', async () => {\n  await when(Create)\n    .hasParam({\n      name: 'data',\n      input: {\n        rawValue: multiline`\n      {\n        label: 'statement'\n      }`,\n        Evaluation: 'JS_EXPRESSION',\n      },\n      evaluations: [\n        { ...jsExpressionEvaluation, selected: true },\n      ],\n    })\n    .doRun()\n    .expectOutput([ {\n      label: 'statement',\n    }])\n    .ok()\n})\n"
  },
  {
    "path": "packages/core/src/computers/Create.ts",
    "content": "import { jsExpression } from '../Param';\nimport { Computer } from '../types/Computer';\n\nexport const Create: Computer = {\n  type: 'Computer',\n  computerType: 'Create',\n  label: 'Create',\n  inputs: [],\n  outputs: [\n    {\n      name: 'output',\n      schema: {},\n    },\n  ],\n  params: [\n    jsExpression({\n      name: 'data',\n      help: 'You may use json, js function or expression',\n      value: JSON.stringify({ foo: 'bar' }, null, 2),\n    }),\n  ],\n\n  async *run({ output, params }) {\n    const parsed = params.data as object\n\n    output.push(\n      // wraps the parsed json in an array if it's not already an array\n      [parsed].flat(),\n    )\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Describe.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Describe } from './Describe';\n\nit('describes occurances', async () => {\n  await when(Describe)\n    .hasDefaultParams()\n    .getsInput([\n      { id: 1, isCool: true, name: { first: 'John', last: 'Doe' } },\n      { id: 2, isCool: true, name: { first: 'Jane', last: 'Doe' } },\n      { id: 3, isCool: false, name: { first: 'Copy', last: 'Cat' } },\n    ])\n    .doRun()\n    .expectOutputs({\n      truncated: [\n        {\n          id: {\n            1: 1,\n            2: 1,\n            3: 1,\n          },\n          isCool: {\n            true: 2,\n            false: 1,\n          },\n          name: {\n            first: {\n              John: 1,\n              Jane: 1,\n              Copy: 1,\n            },\n            last: {\n              Doe: 2,\n              Cat: 1,\n            },\n          },\n        },\n      ],\n      full: [\n        {\n          id: {\n            1: 1,\n            2: 1,\n            3: 1,\n          },\n          isCool: {\n            true: 2,\n            false: 1,\n          },\n          name: {\n            first: {\n              John: 1,\n              Jane: 1,\n              Copy: 1,\n            },\n            last: {\n              Doe: 2,\n              Cat: 1,\n            },\n          },\n        },\n      ],\n    })\n    .ok()\n})\n\nit('describes occurances at a path', async () => {\n  await when(Describe)\n    .hasParams({\n      path: 'name',\n    })\n    .getsInput([\n      { id: 1, isCool: true, name: { first: 'John', last: 'Doe' } },\n      { id: 2, isCool: true, name: { first: 'Jane', last: 'Doe' } },\n      { id: 3, isCool: false, name: { first: 'Copy', last: 'Cat' } },\n    ])\n    .doRun()\n    .expectOutputs({\n      truncated: [\n        {\n          first: {\n            John: 1,\n            Jane: 1,\n            Copy: 1,\n          },\n          last: {\n            Doe: 2,\n            Cat: 1,\n          },\n        },\n      ],\n      full: [\n        {\n          first: {\n            John: 1,\n            Jane: 1,\n            Copy: 1,\n          },\n          last: {\n            Doe: 2,\n            Cat: 1,\n          },\n        },\n      ],\n    })\n    .ok()\n})\n\nit('can truncate the description', async () => {\n  await when(Describe)\n    .hasParams({\n      truncate_limit: 3,\n    })\n    .getsInput([\n      { id: 1, isCool: true },\n      { id: 2, isCool: true },\n      { id: 3, isCool: true },\n      { id: 4, isCool: true },\n      { id: 5, isCool: false },\n    ])\n    .doRun()\n    .expectOutputs({\n      truncated: [\n        {\n          id: {\n            1: 1,\n            2: 1,\n            3: 1,\n            'OTHER_VALUES': 2,\n          },\n          isCool: {\n            true: 4,\n            false: 1,\n          },\n        },\n      ],\n      full: [\n        {\n          id: {\n            1: 1,\n            2: 1,\n            3: 1,\n            4: 1,\n            5: 1,\n          },\n          isCool: {\n            true: 4,\n            false: 1,\n          },\n        },\n      ],\n    })\n    .ok()\n})"
  },
  {
    "path": "packages/core/src/computers/Describe.ts",
    "content": "import { multiline } from '../utils/multiline';\nimport { stringCast } from '../Param/casts/stringCast';\nimport { numberCast } from '../Param/casts/numberCast';\nimport { get } from '../utils/get';\nimport { num, str } from '../Param';\nimport { Computer } from '../types/Computer';\n\nexport const Describe: Computer = {\n  type: 'Computer',\n  computerType: 'Describe',\n  label: 'Describe',\n  inputs: [\n    {\n      name: 'input',\n      schema: {},\n    },\n  ],\n  outputs: [\n    {\n      name: 'full',\n      schema: {},\n    },\n    {\n      name: 'truncated',\n      schema: {},\n    },\n  ],\n  params: [\n    str(  {\n      name: 'path',\n      label: 'Path',\n      help: 'Dot notated path to desired description root. Leave empty to use the root of the collection.',\n      multiline: false,\n      canInterpolate: true,\n      interpolate: true,\n      value: '',\n    }),\n    num(\n      {\n        name: 'truncate_limit',\n        label: 'Truncate limit',\n        help: 'How many keys to display?',\n        multiline: false,\n        canInterpolate: true,\n        interpolate: true,\n        value: String(10),\n      }),\n  ],\n\n  canRun({ input, isAvailable }) {\n    return isAvailable() && input.haveAllItemsAtInput('input')\n  },\n\n  async *run({ input, output, params }) {\n    const incoming = input.pull()\n      .map(i => get(i.value, String(params.path)))\n\n    const description = describeCollection(incoming)\n    const truncated = truncateDescription(description, Number(params.truncate_limit))\n\n    output.pushTo('full', [description])\n    output.pushTo('truncated', [truncated])\n\n    yield;\n  },\n};\n\nexport function describeCollection(arr: any[]) {\n  const result = {};\n\n  // Function to recursively process each object\n  const processObject = (obj: any, res: any) => {\n    Object.keys(obj).forEach(key => {\n      if (obj[key] !== null && typeof obj[key] === 'object') {\n        res[key] = res[key] || {};\n        processObject(obj[key], res[key]);\n      } else {\n        res[key] = res[key] || {};\n        res[key][obj[key]] = (res[key][obj[key]] || 0) + 1;\n      }\n    });\n  };\n\n  // Iterate over each object in the array\n  arr.forEach(obj => {\n    processObject(obj, result);\n  });\n\n  return result;\n}\n\nexport function truncateDescription(description: any, threshold = 10) {\n  const truncate = (obj: any) => {\n    Object.keys(obj).forEach(key => {\n      if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {\n        const entries = Object.entries(obj[key]);\n        if (entries.length > threshold) {\n          // Sort entries by their count, descending\n          entries.sort((a: any, b: any) => b[1] - a[1]);\n\n          // Keep the top (threshold - 1) entries and sum the rest\n          const topEntries = entries.slice(0, threshold);\n          const otherCount = entries.slice(threshold).reduce((acc, [, count]) => acc + (count as any), 0);\n\n          // Create a new object with the top entries and 'OTHER_VALUES'\n          obj[key] = topEntries.reduce((acc: any, [value, count]) => {\n            acc[value] = count;\n            return acc;\n          }, {});\n          obj[key]['OTHER_VALUES'] = otherCount;\n        } else {\n          truncate(obj[key]);\n        }\n      }\n    });\n  };\n\n  // Clone the object to avoid modifying the original\n  const truncatedDescription = JSON.parse(JSON.stringify(description));\n  truncate(truncatedDescription);\n  return truncatedDescription;\n}\n"
  },
  {
    "path": "packages/core/src/computers/Fake.ts",
    "content": "import { Computer } from '../types/Computer';\nimport { multiline } from '../utils/multiline';\nimport { sleep } from '../utils/sleep';\n\nexport const Fake: Computer = {\n  type: 'Computer',\n  computerType: 'Fake',\n  label: 'Fake',\n  inputs: [],\n  outputs: [],\n  params: [],\n\n  canRun({ isAvailable }) {\n    return isAvailable();\n  },\n\n  async *run({ input, output, params, node }) {\n    const isCreatorNode = node.inputs.length === 0\n\n    console.log(node.inputs)\n\n    while(true) {\n      if(isCreatorNode) {\n        await sleep(50)\n\n        node.outputs.forEach(outputPort => {\n          output.pushTo(outputPort.name, [\n            {},\n          ])\n        })\n\n        yield;\n      }\n\n      if(!isCreatorNode) {\n        node.inputs.forEach(inputPort => {\n          try {\n            const [ item ] = input.pullFrom(inputPort.name, 1)\n          } catch(e) {\n            // ignoring\n          }\n        })\n\n        await sleep(50)\n\n        node.outputs.forEach(outputPort => {\n          output.pushTo(outputPort.name, [{}])\n        })\n\n        yield;\n      }\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/FilterMap.ts",
    "content": "import { jsFn } from '../Param';\nimport { multiline } from '../utils/multiline';\nimport { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const FilterMap: Computer = {\n  type: 'Computer',\n  computerType: 'FilterMap',\n  label: 'FilterMap',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [\n    jsFn({\n      name: 'mapper',\n      value: multiline`\n        item => ({\n          ...item\n        })\n      `,\n      help: '',\n    }),\n  ],\n\n  async *run({ input, output }) {\n    while(true) {\n      const incoming = input.pull(BatchLimit)\n      const replacers = incoming\n        .map(item => item.params.mapper)\n        .filter(Boolean)\n\n      output.push(replacers)\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/FlatMap.ts",
    "content": "import { json_ } from '../Param';\nimport { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const FlatMap: Computer = {\n  type: 'Computer',\n  computerType: 'FlatMap',\n  label: 'FlatMap',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [\n    json_({\n      name: 'json',\n      value: '[{\\n\\tfoo: bar\\n}]',\n      help: '',\n    }),\n  ],\n\n  async *run({ input, output, params }) {\n    while(true) {\n      const incoming = input.pull(BatchLimit)\n\n      const replacers = incoming.flatMap(item => {\n        return item.params.json as Object;\n      })\n\n      output.push(replacers)\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/If.ts",
    "content": "import { jsFn } from '../Param';\nimport { multiline } from '../utils/multiline';\nimport { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const If: Computer = {\n  type: 'Computer',\n  computerType: 'If',\n  label: 'If',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [\n    {\n      name: 'true',\n      schema: {},\n    },\n    {\n      name: 'false',\n      schema: {},\n    },\n  ],\n  params: [\n    jsFn({\n      name: 'condition',\n      value: multiline`\n        item => item.value > 0\n      `,\n      help: 'JavaScript function that returns true or false',\n    }),\n  ],\n\n  async *run({ input, output, params }) {\n    while(true) {\n      const items = input.pull(BatchLimit)\n\n      for (const item of items) {\n        output.pushTo(\n          item.params.condition ? 'true' : 'false',\n          [item],\n        )\n      }\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Ignore.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Ignore } from './Ignore';\n\nit('does nothing', async () => {\n  await when(Ignore)\n    .hasDefaultParams()\n    .getsInput([{ i: 1 }, { i: 2 }])\n    .doRun()\n    .ok()\n})\n"
  },
  {
    "path": "packages/core/src/computers/Ignore.ts",
    "content": "import { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const Ignore: Computer = {\n  type: 'Computer',\n  computerType: 'Ignore',\n  label: 'Ignore',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [],\n  params: [],\n\n  async *run({ input }) {\n    while(true) {\n      input.pull(BatchLimit)\n      yield;\n    }\n  },\n}\n"
  },
  {
    "path": "packages/core/src/computers/Input.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Input } from './Input';\n\nit('can can run without any input passed', async () => {\n  await when(Input)\n    .hasDefaultParams()\n    .ok()\n})"
  },
  {
    "path": "packages/core/src/computers/Input.ts",
    "content": "import { str } from '../Param';\nimport { Computer } from '../types/Computer';\n\nexport const Input: Computer = {\n  type: 'Computer',\n  computerType: 'Input',\n  label: 'Input',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [\n    str({\n      name: 'port_name',\n      label: 'Port Name',\n      value: 'input',\n      help: 'The name of the input port.',\n      multiline: false,\n      canInterpolate: true,\n    }),\n  ],\n\n  async *run({ input, output }) {\n    while(true) {\n      const [ portName, ...other ] = input.getPortNames()\n\n      if (!portName || other.length > 0) throw new Error('Input computer must have exactly one input port.')\n\n      const incoming = input.pullFrom(portName)\n\n      output.push(incoming)\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/InstantThrow.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { InstantThrow } from './InstantThrow';\n\nit('throws immediately', async () => {\n  await when(InstantThrow)\n    .hasDefaultParams()\n    .expectError('Instant Error!')\n    .doRun()\n    .ok()\n})\n"
  },
  {
    "path": "packages/core/src/computers/InstantThrow.ts",
    "content": "import { Computer } from '../types/Computer';\n\nexport const InstantThrow: Computer = {\n  type: 'Computer',\n  computerType: 'InstantThrow',\n  label: 'InstantThrow',\n  inputs: [],\n  outputs: [],\n  params: [],\n\n  async *run({}) {\n    throw Error('Instant Error!')\n  },\n};"
  },
  {
    "path": "packages/core/src/computers/Log.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Log } from './Log';\n\nit('logs on the server', async () => {\n  const log = vi.spyOn(console, 'log').mockImplementation(() => {});\n\n  await when(Log)\n    .hasDefaultParams()\n    .getsInput([{ i: 1 }, { i: 2 }])\n    .doRun()\n    .ok()\n\n  expect(log).toHaveBeenCalledWith(JSON.stringify([{ i: 1 }, { i: 2 }], null, 2))\n})\n"
  },
  {
    "path": "packages/core/src/computers/Log.ts",
    "content": "import { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const Log: Computer = {\n  type: 'Computer',\n  computerType: 'Log',\n  label: 'Log',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [],\n  params: [],\n\n  async *run({ input, output }) {\n    while(true) {\n      // log the *item* - not ItemWithParams\n      const incoming = input.pull(BatchLimit).map(i => i.value)\n      console.log(JSON.stringify(incoming, null, 2))\n\n      yield;\n    }\n  },\n};"
  },
  {
    "path": "packages/core/src/computers/LoopBack.ts",
    "content": "import { str } from '../Param';\nimport { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const LoopBack: Computer = {\n  type: 'Computer',\n  computerType: 'LoopBack',\n  label: 'Loop Back',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [\n    str({\n      name: 'port_name',\n      label: 'Port Name',\n      value: 'has-more',\n      help: 'The name of the loop back port.',\n      multiline: false,\n      canInterpolate: true,\n    }),\n  ],\n  async *run({ input, output }) {\n    while(true) {\n      const [ portName, ...other ] = output.getPortNames()\n      if (!portName || other.length > 0) throw new Error('LoopBack computer must have exactly one output port.')\n\n      const incoming = input.pull(BatchLimit)\n\n      output.pushTo(portName, incoming)\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/LoopStart.ts",
    "content": "import { str } from '../Param';\nimport { Computer } from '../types/Computer';\n\nexport const LoopStart: Computer = {\n  type: 'Computer',\n  computerType: 'LoopStart',\n  label: 'Loop Start',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [\n    str({\n      name: 'port_name',\n      label: 'Port Name',\n      value: 'has-more',\n      help: 'The name of the loop start port.',\n      multiline: false,\n      canInterpolate: true,\n    }),\n  ],\n  async *run({ input, output }) {\n    while(true) {\n      const [ portName, ...other ] = input.getPortNames()\n\n      if (!portName || other.length > 0) throw new Error('LoopStart computer must have exactly one input port.')\n\n      const incoming = input.pullFrom(portName)\n\n      output.push(incoming)\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/MakeSet.ts",
    "content": "import { str } from '../Param';\nimport { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const MakeSet: Computer = {\n  type: 'Computer',\n  computerType: 'MakeSet',\n  label: 'MakeSet',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [\n    str({\n      name: 'property',\n      label: 'Property',\n      value: '',\n      help: 'The property to create unique items from',\n      multiline: false,\n      canInterpolate: false,\n    }),\n  ],\n  async *run({ input, output, params }) {\n    const seen = new Set();\n\n    while (true) {\n      const items = input.pull(BatchLimit);\n\n      for (let item of items) {\n        const property = params.property;\n        const value = item.value[property];\n\n        if (!seen.has(value)) {\n          seen.add(value);\n          output.push([{ [property]: value }]);\n        }\n      }\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Map.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester'\nimport { multiline } from '../utils/multiline'\nimport { Map } from './Map'\n\nit('replaces items with new evaluated value', () => {\n  when(Map)\n    .hasParams({\n      mapper: multiline`\n        item => ({\n          ...item,\n          newKey: 'newValue'\n        })`,\n    })\n    .getsInput([\n      {},\n      { existingKey: 'existingValue' },\n    ])\n    .doRun()\n    .expectOutput([\n      { newKey: 'newValue' },\n      { existingKey: 'existingValue', newKey: 'newValue' },\n    ])\n    .ok()\n})"
  },
  {
    "path": "packages/core/src/computers/Map.ts",
    "content": "import { jsFn } from '../Param';\nimport { ItemValue } from '../types/ItemValue';\nimport { multiline } from '../utils/multiline';\nimport { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const Map: Computer = {\n  type: 'Computer',\n  computerType: 'Map',\n  label: 'Map',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [\n    jsFn({\n      name: 'mapper',\n      value: multiline`\n        item => ({\n          ...item\n        })\n      `,\n      help: '',\n    }),\n  ],\n\n  async *run({ input, output, params }) {\n    while(true) {\n      const incoming = input.pull(BatchLimit)\n      const replacers = incoming.map(item => item.params.mapper) as ItemValue[]\n      output.push(replacers)\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Merge.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester'\nimport { multiline } from '../utils/multiline'\nimport { Merge } from './Merge'\n\nit('merges onto requestor root by default', async () => {\n  await when(Merge)\n    .hasParams({\n      requestor_key: 'person_id',\n      supplier_key: 'id',\n      merge_key: '',\n    })\n    .getsInputs({\n      requestors: [\n        // Accounts\n        { id: 1, person_id: 1000 },\n      ],\n      suppliers: [\n        // Personal details\n        { id: 1000, name: 'John' },\n      ],\n    })\n    .doRun()\n    .expectOutputs({\n      merged: [\n        {\n          id: 1000, // note this was overwritten by supplier!\n          person_id: 1000,\n          name: 'John',\n        },\n      ],\n    })\n    .ok()\n})\n\nit('can merge into a specified path', async () => {\n  await when(Merge)\n    .hasParams({\n      requestor_key: 'person_id',\n      supplier_key: 'id',\n      merge_key: 'associations.details',\n    })\n    .getsInputs({\n      requestors: [\n        // Accounts\n        { id: 1, person_id: 1000 },\n      ],\n      suppliers: [\n        // Personal details\n        { id: 1000, name: 'John' },\n      ],\n    })\n    .doRun()\n    .expectOutputs({\n      merged: [\n        {\n          id: 1,\n          person_id: 1000,\n          associations: {\n            details: {\n              id: 1000,\n              name: 'John',\n            },\n          },\n        },\n      ],\n    })\n    .ok()\n})"
  },
  {
    "path": "packages/core/src/computers/Merge.ts",
    "content": "import { str } from '../Param';\nimport { Computer } from '../types/Computer';\nimport { ItemValue } from '../types/ItemValue';\nimport { buildNestedObject } from '../utils/buildNestedObject';\nimport { merge } from '../utils/merge';\n\nexport const Merge: Computer = {\n  type: 'Computer',\n  computerType: 'Merge',\n  label: 'Merge',\n  inputs: [\n    {\n      name: 'requestors',\n      schema: {},\n    },\n    {\n      name: 'suppliers',\n      schema: {},\n    },\n  ],\n  outputs: [\n    {\n      name: 'merged',\n      schema: {},\n    },\n    {\n      name: 'not_merged',\n      schema: {},\n    },\n  ],\n  params: [\n    str({\n      name: 'requestor_key',\n      label: 'Requestor Key',\n      help: 'The requestor key to merge on',\n      value: 'id',\n    }),\n    str({\n      name: 'supplier_key',\n      label: 'Supplier Key',\n      help: 'The supplier key to merge on',\n      value: 'id',\n    }),\n    str({\n      name: 'merge_key',\n      label: 'Merge Key',\n      help: 'Optional key to merge into',\n      value: '',\n    }),\n  ],\n\n  canRun({ input, isAvailable }) {\n    const haveAllRequestors = input.haveAllItemsAtInput('requestors')\n    const haveAllSuppliers = input.haveAllItemsAtInput('suppliers')\n\n    return isAvailable() && haveAllRequestors && haveAllSuppliers\n  },\n\n  async *run({ input, output, params }) {\n    const requestors = input.pullFrom('requestors')\n    const suppliers = input.pullFrom('suppliers')\n\n    const requestorKey = params.requestor_key as string\n    const supplierKey = params.supplier_key as string\n\n    const merged: ItemValue[] = []\n    const notMerged: ItemValue[] = []\n\n    for(const requestor of requestors) {\n      const matchingSupplier = suppliers.find(supplier => {\n        const supplierValue = supplier.value[supplierKey]\n        const requestorValue = requestor.value[requestorKey]\n\n        return supplierValue === requestorValue\n      })\n\n      if(matchingSupplier) {\n        const mergableSupplierValue = buildNestedObject(\n          params.merge_key as string,\n          matchingSupplier.value,\n        )\n\n        merged.push(merge(\n          requestor.value,\n          mergableSupplierValue,\n        ))\n      } else {\n        notMerged.push(requestor)\n      }\n    }\n\n    output.pushTo('merged', merged)\n    output.pushTo('not_merged', notMerged)\n  },\n}"
  },
  {
    "path": "packages/core/src/computers/Output.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Output } from './Output';\n\nit.todo('todo', async () => {\n  await when(Output)\n    .hasDefaultParams()\n    .getsInput([{ i: 1 }, { i: 2 }])\n    .doRun()\n    .expectOutput([{ i: 1 }, { i: 2 }])\n    .getsInput([{ i: 3 }, { i: 4 }])\n    .doRun()\n    .expectOutput([{ i: 1 }, { i: 2 }, { i: 3 }, , { i: 4 }])\n    .ok()\n})"
  },
  {
    "path": "packages/core/src/computers/Output.ts",
    "content": "import { str } from '../Param';\nimport { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const Output: Computer = {\n  type: 'Computer',\n  computerType: 'Output',\n  label: 'Output',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [\n    str({\n      name: 'port_name',\n      label: 'Port Name',\n      value: 'output',\n      help: 'The name of the output port.',\n      multiline: false,\n      canInterpolate: true,\n    }),\n  ],\n\n  async *run({ input, output }) {\n    while(true) {\n      const [ portName, ...other ] = output.getPortNames()\n      if (!portName || other.length > 0) throw new Error('Output computer must have exactly one output port.')\n\n      const incoming = input.pull(BatchLimit)\n\n      output.pushTo(portName, incoming)\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Pass.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Pass } from './Pass';\n\nit('outputs the input ontouched', async () => {\n  await when(Pass)\n    .hasDefaultParams()\n    .getsInput([{ i: 1 }, { i: 2 }])\n    .doRun()\n    .expectOutput([{ i: 1 }, { i: 2 }])\n    .getsInput([{ i: 3 }, { i: 4 }])\n    .doRun()\n    .expectOutput([{ i: 1 }, { i: 2 }, { i: 3 }, { i: 4 }])\n    .ok()\n})"
  },
  {
    "path": "packages/core/src/computers/Pass.ts",
    "content": "import { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const Pass: Computer = {\n  type: 'Computer',\n  computerType: 'Pass',\n  label: 'Pass',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [],\n\n  async *run({ input, output }) {\n    while(true) {\n      const incoming = input.pull(BatchLimit)\n      output.push(incoming)\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/RemoveProperties.ts",
    "content": "import { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const RemoveProperties: Computer = {\n  type: 'Computer',\n  computerType: 'RemoveProperties',\n  label: 'RemoveProperties',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [\n    {\n      name: 'properties_to_remove',\n      label: 'Properties to Remove',\n      type: 'StringableParam',\n      multiline: true,\n      canInterpolate: false,\n      input: {\n        rawValue: 'p1\\np2\\np3',\n        Evaluation: 'STRING_LIST',\n      },\n      evaluations: [\n        {\n          type: 'JSON',\n          label: 'json',\n          shortLabel: 'json',\n        },\n        {\n          type: 'STRING_LIST',\n          label: 'list',\n          shortLabel: 'list',\n        },\n      ],\n      help: 'Comma-or-line-separated list of properties to remove from each item',\n    },\n  ],\n\n  async *run({ input, output }) {\n    while(true) {\n      const incoming = input.pull(BatchLimit)\n      output.push(incoming.map(item => {\n        const propertiesToRemove = item.params.properties_to_remove as string[];\n        console.log({ propertiesToRemove })\n\n        for(const prop of propertiesToRemove) {\n          if (prop in item.value) {\n            delete item.value[prop];\n          }\n        }\n\n        return item.value;\n      }))\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Request.test.ts",
    "content": "import axios from 'axios';\nimport { when } from '../support/computerTester/ComputerTester';\nimport { Request } from './Request';\nvi.mock('axios')\n\nit('outputs items at data by default when using GET', async () => {\n  (axios.get as any).mockResolvedValue({\n    data: [{ i: 1 }, { i: 2 }, { i: 3 }],\n  })\n\n  await when(Request)\n    .hasDefaultParams()\n    .getsInput([{}])\n    .doRun()\n    .expectOutputs({\n      items: [{ i: 1 }, { i: 2 }, { i: 3 }],\n    })\n    .ok()\n})\n\nit('can output items at item_path when using GET', async () => {\n  (axios.get as any).mockResolvedValue({\n    data: {\n      crm: {\n        users: [{ i: 1 }, { i: 2 }, { i: 3 }],\n      },\n    },\n  })\n\n  await when(Request)\n    .hasParams({\n      item_path: 'crm.users',\n    })\n    .getsInput([{}])\n    .doRun()\n    .expectOutputs({\n      items: [{ i: 1 }, { i: 2 }, { i: 3 }],\n    })\n    .ok()\n})\n\nit('outputs items at data by default when using POST', async () => {\n  (axios.post as any).mockResolvedValue({\n    data: [{ i: 1 }, { i: 2 }, { i: 3 }],\n  })\n\n  await when(Request)\n    .hasParams({ method: 'POST' })\n    .getsInput([{}])\n    .doRun()\n    .expectOutputs({\n      items: [{ i: 1 }, { i: 2 }, { i: 3 }],\n    })\n    .ok()\n})\n\nit('can output items at item_path when using POST', async () => {\n  (axios.post as any).mockResolvedValue({\n    data: {\n      crm: {\n        users: [{ i: 1 }, { i: 2 }, { i: 3 }],\n      },\n    },\n  })\n\n  await when(Request)\n    .hasParams({\n      method: 'POST',\n      item_path: 'crm.users',\n    })\n    .getsInput([{}])\n    .doRun()\n    .expectOutputs({\n      items: [{ i: 1 }, { i: 2 }, { i: 3 }],\n    })\n    .ok()\n})"
  },
  {
    "path": "packages/core/src/computers/Request.ts",
    "content": "import axios from 'axios';\nimport { json_, str } from '../Param';\nimport { get } from '../utils/get';\nimport { Computer } from '../types/Computer';\nimport { asArray } from '../utils/asArray';\nimport { jsFunctionEvaluation } from '../Param/evaluations/jsFunctionEvaluation';\nimport { jsonEvaluation } from '../Param/evaluations/jsonEvaluation';\nimport { ItemValue } from '../types/ItemValue';\nimport { ItemWithParams } from '../ItemWithParams';\n\ninterface SerializedHttpResponse {\n  status: number;\n  statusText: string;\n  headers: any;\n  data: any;\n  config: any;\n  request?: {\n    responseURL?: string;\n    method?: string;\n  };\n}\n\ninterface SerializedHttpError {\n  message: string;\n  name: string;\n  response?: {\n    status: number;\n    statusText: string;\n    headers: any;\n    data: any;\n  };\n  request?: {\n    responseURL?: string;\n    method?: string;\n  };\n  config?: any;\n}\n\nasync function requestAndSerialize(\n  method: string,\n  url: string,\n  body: any,\n  config: any,\n  item_path: any,\n  get: (obj: any, path: any) => any,\n  asArray: (input: any) => any[],\n  invokingItem: ItemWithParams,\n): Promise<{\n    responseAndItem?: {\n      response: SerializedHttpResponse,\n      requestingItem: ItemValue,\n    }\n    items?: any[],\n    error?: SerializedHttpError,\n  }> {\n  try {\n    let response;\n    if(method === 'GET') {\n      response = await axios.get(url, config)\n    } else if(method === 'POST') {\n      response = await axios.post(url, body, config)\n    } else {\n      throw new Error(`Unsupported method: ${method}`)\n    }\n    const serializedResponse: SerializedHttpResponse = {\n      status: response.status,\n      statusText: response.statusText,\n      headers: response.headers,\n      data: response.data,\n      config: response.config,\n      request: response.request ? {\n        responseURL: response.request.responseURL,\n        method: response.request.method,\n      } : undefined,\n    }\n    const itemables = get(response.data, item_path)\n    const items = asArray(itemables)\n    return {\n      responseAndItem: {\n        response: serializedResponse,\n        requestingItem: invokingItem.value,\n      },\n      items,\n    }\n  } catch (err) {\n    const error = err as any\n    let errorInfo: SerializedHttpError = {\n      message: error.message,\n      name: error.name,\n    }\n    if (error.response) {\n      errorInfo.response = {\n        status: error.response.status,\n        statusText: error.response.statusText,\n        headers: error.response.headers,\n        data: error.response.data,\n      }\n    }\n    if (error.request) {\n      errorInfo.request = {\n        responseURL: error.request.responseURL,\n        method: error.request.method,\n      }\n    }\n    if (error.config) {\n      errorInfo.config = error.config\n    }\n    return { error: errorInfo }\n  }\n}\n\nexport const Request: Computer = {\n  type: 'Computer',\n  computerType: 'Request',\n  label: 'Request',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [\n    {\n      name: 'items',\n      schema: {},\n    },\n    {\n      name: 'response',\n      schema: {},\n    },\n    {\n      name: 'error',\n      schema: {},\n    },\n  ],\n  params: [\n    str({\n      name: 'url',\n      value: 'https://jsonplaceholder.typicode.com/todos',\n      canInterpolate: true,\n      interpolate: true,\n      evaluations: [\n        jsFunctionEvaluation,\n        jsonEvaluation,\n      ],\n    }),\n    str({\n      name: 'method',\n      value: 'GET',\n    }),\n    json_({\n      name: 'body',\n      value: '{}',\n      multiline: true,\n    }),\n    json_({\n      name: 'config',\n      value: JSON.stringify({ headers: {} }, null, 2),\n      multiline: true,\n    }),\n    str({\n      name: 'item_path',\n      help: 'Path to the items in the response data.',\n      value: '',\n    }),\n  ],\n\n  async *run({ input, output, params }) {\n    while(true) {\n      const [ incoming ] = input.pull(1)\n      const { url, method, body, config, item_path } = incoming.params as {\n        url: string,\n        method: string,\n        body: any,\n        config: any,\n        item_path: any\n      }\n      const result = await requestAndSerialize(method, url, body, config, item_path, get, asArray, incoming)\n      if (result.responseAndItem) {\n        output.pushTo('response', [result.responseAndItem])\n      }\n      if (result.items) {\n        output.pushTo('items', result.items)\n      }\n      if (result.error) {\n        output.pushTo('error', [result.error])\n      }\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/RequestLoopByOffset.ts",
    "content": "import axios from 'axios';\nimport { json_, str } from '../Param';\nimport { get } from '../utils/get';\nimport { Computer } from '../types/Computer';\n\nexport const RequestLoopByOffset: Computer = {\n  type: 'Computer',\n  computerType: 'RequestLoopByOffset',\n  label: 'RequestLoopByOffset',\n  inputs: [],\n  outputs: [\n    {\n      name: 'items',\n      schema: {},\n    },\n    {\n      name: 'response',\n      schema: {},\n    },\n    {\n      name: 'error',\n      schema: {},\n    },\n  ],\n  params: [\n    str({\n      name: 'url',\n      value: 'https://dummyjson.com/todos',\n    }),\n    str({\n      name: 'method',\n      value: 'GET',\n    }),\n    json_({\n      name: 'body',\n      value: '{}',\n      multiline: true,\n    }),\n    json_({\n      name: 'config',\n      value: JSON.stringify({ headers: {} }, null, 2),\n      multiline: true,\n    }),\n    str({\n      name: 'item_path',\n      help: 'Path to the items in the response data.',\n      value: 'todos',\n    }),\n    str({\n      name: 'offset_name',\n      help: 'Name of URL parameter to use for offset.',\n      value: 'skip',\n    }),\n    str({\n      name: 'limit',\n      help: 'How many items to request in each batch.',\n      value: '25',\n    }),\n    str({\n      name: 'start_offset',\n      help: 'The offset to start iteration from.',\n      value: '0',\n    }),\n  ],\n\n  canRun({ isAvailable }) {\n    return isAvailable()\n  },\n\n  async *run({ input, output, params }) {\n    const [ incoming ] = input.pullNew();\n    const { url, method, body, config, item_path, offset_name, start_offset, limit } = incoming.params as {\n      url: string,\n      method: string,\n      body: any,\n      config: any,\n      item_path: any,\n      offset_name: string,\n      limit: string,\n      start_offset: string,\n    };\n\n    let currentOffset: number | string = start_offset;\n    let hasNextPage = true;\n\n    while (hasNextPage) {\n      let currentUrl = `${url}?${offset_name}=${currentOffset}&limit=${limit}`;\n      console.log('Requesting:', currentUrl)\n      try {\n        let response;\n        if (method === 'GET') {\n          response = await axios.get(currentUrl, config);\n        } else if (method === 'POST') {\n          response = await axios.post(currentUrl, body, config);\n        } else {\n          throw new Error(`Unsupported method: ${method}`);\n        }\n\n        const items = get(response.data, item_path);\n\n        output.pushTo('items', items);\n        output.pushTo('response', [response]);\n\n        yield;\n\n        const nextOffset: number | string | null = items.length == limit ?\n          Number(currentOffset) + Number(limit) :\n          null;\n\n        if (nextOffset) {\n          currentOffset = nextOffset;\n          hasNextPage = true;\n        } else {\n          hasNextPage = false;\n        }\n      } catch (error: any) {\n        console.log(error)\n        output.pushTo('error', [error]);\n        hasNextPage = false;\n      }\n    }\n\n    yield;\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/RequestLoopByToken.ts",
    "content": "import axios from 'axios';\nimport { Computer } from '../types/Computer';\nimport { json_, str } from '../Param';\nimport { get } from '../utils/get';\n\nexport const RequestLoopByToken: Computer = {\n  type: 'Computer',\n  computerType: 'RequestLoopByToken',\n  label: 'RequestLoopByToken',\n  inputs: [],\n  outputs: [\n    {\n      name: 'items',\n      schema: {},\n    },\n    {\n      name: 'response',\n      schema: {},\n    },\n    {\n      name: 'error',\n      schema: {},\n    },\n  ],\n  params: [\n    str({\n      name: 'url',\n      value: 'http://localhost:3009/users',\n    }),\n    str({\n      name: 'method',\n      value: 'GET',\n    }),\n    json_({\n      name: 'body',\n      value: '{}',\n      multiline: true,\n    }),\n    json_({\n      name: 'config',\n      value: JSON.stringify({\n        headers: {},\n      }, null, 2),\n      multiline: true,\n    }),\n    str({\n      name: 'item_path',\n      help: 'Path to the items in the response data.',\n      value: 'results',\n    }),\n    str({\n      name: 'cursor_path',\n      help: 'Path to the cursor in the response data.',\n      value: 'paging.next.after',\n    }),\n    str({\n      name: 'limit',\n      help: 'How many items to request in each batch.',\n      value: '25',\n    }),\n    str({\n      name: 'cursor_token',\n      help: 'the token to use for pagination',\n      value: '0',\n    }),\n  ],\n\n  canRun({ isAvailable }) {\n    return isAvailable()\n  },\n\n  async* run({ input, output, params }) {\n    const [incoming] = input.pullNew();\n    const { url, method, body, config, item_path, limit, cursor_token, cursor_path } = incoming.params as {\n      url: string,\n      method: string,\n      body: any,\n      config: any,\n      item_path: any,\n      limit: string,\n      cursor_path: string,\n      cursor_token: string,\n    };\n\n    let hasNextPage = true;\n    let currentCursor = cursor_token;\n\n    while(hasNextPage) {\n      let currentUrl = currentCursor ? `${url}?after=${currentCursor}&limit=${limit}` : `${url}?limit=${limit}`;\n      console.log('Requesting:', currentUrl)\n      try {\n        let response;\n        if (method === 'GET') {\n          response = await axios.get(currentUrl, config);\n        } else if (method === 'POST') {\n          response = await axios.post(currentUrl, body, config);\n        } else {\n          throw new Error(`Unsupported method: ${method}`);\n        }\n\n        const items = get(response.data, item_path);\n        currentCursor = get(response.data, cursor_path);\n\n        output.pushTo('items', items);\n        output.pushTo('response', [response]);\n\n        yield;\n\n        hasNextPage = !!currentCursor;\n      } catch(error: any) {\n        console.log(error)\n        output.pushTo('error', [error]);\n      }\n    }\n\n    yield\n  },\n\n};\n"
  },
  {
    "path": "packages/core/src/computers/Router.ts",
    "content": "import { jsFn } from '../Param';\nimport { multiline } from '../utils/multiline';\nimport { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const Router: Computer = {\n  type: 'Computer',\n  computerType: 'Router',\n  label: 'Router',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [\n    jsFn({\n      name: 'routing',\n      value: multiline`\n        function(item) {\n          return 'output'\n        }\n      `,\n      help: '',\n    }),\n  ],\n\n  async *run({ input, output, params }) {\n    while(true) {\n      const incoming = input.pull(BatchLimit)\n      for(const item of incoming) {\n        const port = item.params.routing\n        output.pushTo(port, [item])\n      }\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Sample.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester'\nimport { Sample } from './Sample'\n\nit('samples every nth item', () => {\n  when(Sample)\n    .hasParams({ sample_rate: 3 })\n    .getsInput([\n      { id: 'a' },\n      { id: 'b' },\n      { id: 'c' },\n      { id: 'd' },\n      { id: 'e' },\n      { id: 'f' },\n    ])\n    .doRun(6)\n    .expectOutputs({\n      sampled: [\n        { id: 'a' },\n        { id: 'd' },\n      ],\n      not_sampled: [\n        { id: 'b' },\n        { id: 'c' },\n        { id: 'e' },\n        { id: 'f' },\n      ],\n    })\n    .ok()\n})"
  },
  {
    "path": "packages/core/src/computers/Sample.ts",
    "content": "import { num } from '../Param';\nimport { Computer } from '../types/Computer';\n\nexport const Sample: Computer = {\n  type: 'Computer',\n  computerType: 'Sample',\n  label: 'Sample',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [\n    {\n      name: 'sampled',\n      schema: {},\n    },\n    {\n      name: 'not_sampled',\n      schema: {},\n    },\n  ],\n  params: [\n    num({\n      name: 'sample_rate',\n      help: 'Samples every nth item',\n      value: '2' },\n    ),\n  ],\n\n  async *run({ input, output }) {\n    let i = 0;\n\n    while(true) {\n      const [ item ] = input.pull(1)\n      const sample_rate = Number(item.params.sample_rate)\n\n      const port = i++ % sample_rate === 0\n        ? 'sampled'\n        : 'not_sampled'\n\n      output.pushTo(port, [item])\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Signal.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Signal } from './Signal';\ndescribe('Signal', () => {\n  it('outputs items incrementaly', async () => {\n    await when(Signal)\n      .hasParams({ period: 1, count: 3 })\n      .doRun()\n      .expectOutput([{ id: 1 }])\n      .doRun()\n      .expectOutput([{ id: 1 }, { id: 2 }])\n      .doRun()\n      .expectOutput([{ id: 1 }, { id: 2 }, { id: 3 }])\n      .ok()\n  })\n\n  it('outputs items with the template provided', async () => {\n    await when(Signal)\n      .hasParams({\n        period: 1,\n        count: 3,\n        expression: '{ identifier: ${{i}} }',\n      })\n      .doRun()\n      .expectOutput([{ identifier: 1 }])\n      .doRun()\n      .expectOutput([{ identifier: 1 }, { identifier: 2 }])\n      .doRun()\n      .expectOutput([{ identifier: 1 }, { identifier: 2 }, { identifier: 3 }])\n      .ok()\n  })\n})\n"
  },
  {
    "path": "packages/core/src/computers/Signal.ts",
    "content": "import { sleep } from '../utils/sleep';\nimport { jsExpression, num } from '../Param';\nimport { Computer } from '../types/Computer';\nimport { jsExpressionEvaluation } from '../Param/evaluations/jsExpressionEvaluation';\nimport { jsFunctionEvaluation } from '../Param/evaluations/jsFunctionEvaluation';\nimport { jsonEvaluation } from '../Param/evaluations/jsonEvaluation';\n\nexport const Signal: Computer = {\n  type: 'Computer',\n  computerType: 'Signal',\n  label: 'Signal',\n  inputs: [],\n  outputs: [{\n    name: 'output',\n    schema: {\n      id: 'any',\n    },\n  }],\n\n  params: [\n    num({\n      name: 'period',\n      help: 'How many ms between each signal?',\n      value: 50,\n    }),\n    num({\n      name: 'count',\n      help: 'How many times to send the signal?',\n      value: 300,\n    }),\n    jsExpression({\n      name: 'expression',\n      label: 'Template expression',\n      help: 'Use this field to customize the signal. ${{i}} is available as a variable.',\n      value: [\n        '{',\n        '  id: ${{i}}',\n        '}',\n      ].join('\\n'),\n      evaluations: [\n        { ...jsExpressionEvaluation, selected: true },\n        jsonEvaluation,\n        jsFunctionEvaluation,\n        // jsExpressionEvaluation,\n      ],\n    }),\n  ],\n\n  async *run({ input, output, params }) {\n    const period = Number(params.period)\n    const count = Number(params.count)\n\n    // If period is 0, send all signals at once\n    if(period === 0) {\n      const shapedBatch: Object[] = []\n\n      for(let i = 1; i <= count; i++) {\n        const [ spawned ] = input.pullNew({ i })\n        const shaped = spawned.params.expression as Object\n        shapedBatch.push(shaped)\n      }\n\n      output.push(shapedBatch)\n      yield;\n      return;\n    }\n\n    // If period is > 0, send signals one by one\n    let i = 1;\n    while(i <= count) {\n      if(period > 0) await sleep(period)\n\n      const [ spawned ] = input.pullNew({ i })\n      const shaped = spawned.params.expression as Object\n      output.push([shaped])\n\n      i++;\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Sleep.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Sleep } from './Sleep';\n\nit('outputs items incrementally', async () => {\n  await when(Sleep)\n    .hasParams({ duration: 1 })\n    .getsInput([{ i: 1 }, { i: 2 }])\n    .doRun()\n    .expectOutput([{ i: 1 }])\n    .doRun()\n    .expectOutput([{ i: 1 }, { i: 2 }])\n    .ok()\n})\n\nit('can use parameterized duration', async () => {\n  await when(Sleep)\n    .hasParams({ duration: '${ms}' })\n    .getsInput([{ ms: 1 }])\n    .doRun()\n    .expectOutput([{ ms: 1 }])\n    .ok()\n})\n"
  },
  {
    "path": "packages/core/src/computers/Sleep.ts",
    "content": "import { sleep } from '../utils/sleep';\nimport { num } from '../Param';\nimport { Computer } from '../types/Computer';\n\nexport const Sleep: Computer = {\n  type: 'Computer',\n  computerType: 'Sleep',\n  label: 'Sleep',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {},\n  }],\n  params: [\n    num({\n      name: 'duration',\n      label: 'Duration',\n      help: 'How many ms to sleep?',\n      multiline: false,\n      canInterpolate: true,\n      interpolate: true,\n      value: 100,\n    }),\n  ],\n\n  async *run({ input, output }) {\n    while(true) {\n      const [ incoming ] = input.pull(1)\n      const duration = Number(incoming.params.duration)\n\n      await sleep(duration)\n      output.push([incoming])\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Table.ts",
    "content": "import { str } from '../Param';\nimport { Computer } from '../types/Computer';\nimport { BatchLimit } from '../utils/batchLimit';\n\nexport const Table: Computer = {\n  type: 'Computer',\n  computerType: 'Table',\n  label: 'Table',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [],\n  params: [\n    {\n      type: 'StringableParam',\n      name: 'only',\n      label: 'Only',\n      multiline: true,\n      canInterpolate: false,\n      help: 'If set, only the specified paths will be shown. Use comma separation',\n      input: {\n        rawValue: '',\n        Evaluation: 'STRING_LIST',\n      },\n      evaluations: [\n        {\n          type: 'STRING_LIST',\n          label: 'list',\n          shortLabel: 'list',\n        },\n      ],\n    },\n    {\n      type: 'StringableParam',\n      name: 'drop',\n      label: 'Drop',\n      multiline: true,\n      canInterpolate: false,\n      help: 'If set, the specified paths will be dropped. Use comma separation',\n      input: {\n        rawValue: '',\n        Evaluation: 'STRING_LIST',\n      },\n      evaluations: [\n        {\n          type: 'STRING_LIST',\n          label: 'list',\n          shortLabel: 'list',\n        },\n      ],\n    },\n    str({\n      name: 'destructObjects',\n      help: 'If set, objects will be destructured',\n      value: 'true',\n    }),\n  ],\n\n  async* run({ input }) {\n    while(true) {\n      input.pull(BatchLimit)\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Throw.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Throw } from './Throw';\n\nit('throws with a default message', async () => {\n  await when(Throw)\n    .hasDefaultParams()\n    .getsInput([{ i: 1 }])\n    .expectError('Some error\\nThrown in node Throw.1')\n    .doRun()\n    .ok()\n})\n"
  },
  {
    "path": "packages/core/src/computers/Throw.ts",
    "content": "import { NodeRunError } from '../NodeRunError';\nimport { numberCast } from '../Param/casts/numberCast';\nimport { stringCast } from '../Param/casts/stringCast';\nimport { jsFunctionEvaluation } from '../Param/evaluations/jsFunctionEvaluation';\nimport { jsonEvaluation } from '../Param/evaluations/jsonEvaluation';\nimport { str } from '../Param';\nimport { Computer } from '../types/Computer';\n\nexport const Throw: Computer = {\n  type: 'Computer',\n  computerType: 'Throw',\n  label: 'Throw',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [],\n  params: [\n    str({\n      name: 'message',\n      label: 'message',\n      help: 'What to throw',\n      multiline: false,\n      canInterpolate: true,\n      interpolate: true,\n      evaluations: [\n        jsFunctionEvaluation,\n        jsonEvaluation,\n      ],\n      value: 'Some error',\n    }),\n  ],\n\n  async *run({ input, node }) {\n    const [item] = input.pull(1)\n    const fuck = item.params.message\n    throw new NodeRunError({\n      message: item.params.message,\n      node,\n    })\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/Unique.test.ts",
    "content": "import { when } from '../support/computerTester/ComputerTester';\nimport { Unique } from './Unique';\n\nit('outputs unique values and duplicates', async () => {\n  await when(Unique)\n    .hasParams({\n      property: 'i',\n    })\n    .getsInput([{ i: 1 }, { i: 1 }, { i: 2 }, { i: 3 }])\n    .doRun()\n    .expectOutputs({\n      unique: [{ i: 2 }, { i: 3 }],\n      duplicates: [{ i: 1 }, { i: 1 }],\n    })\n    .ok()\n})"
  },
  {
    "path": "packages/core/src/computers/Unique.ts",
    "content": "import { json_, str } from '../Param';\nimport { ItemWithParams } from '../ItemWithParams';\nimport { Computer } from '../types/Computer';\nimport { get } from '../utils/get';\n\nexport const Unique: Computer = {\n  type: 'Computer',\n  computerType: 'Unique',\n  label: 'Unique',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [\n    {\n      name: 'unique',\n      schema: {},\n    },\n    {\n      name: 'duplicates',\n      schema: {},\n    },\n  ],\n  params: [\n    str({\n      name: 'property',\n      value: '',\n    }),\n  ],\n\n  canRun({ input }) {\n    return input.haveAllItemsAtInput('input')\n  },\n\n  async *run({ input, output, params }) {\n    const unique: ItemWithParams[] = []\n    const duplicates: ItemWithParams[] = []\n\n    // The property that should be tested for uniqueness\n    const property = params.property as string\n\n    // The incoming objects to test\n    const incoming = input.pull()\n\n    const itemCounts = new Map();\n\n    // Count occurrences of each item\n    for (const item of incoming) {\n      const propValue = get(item.value, property);\n      if (!itemCounts.has(propValue)) {\n        itemCounts.set(propValue, 1);\n      } else {\n        itemCounts.set(propValue, itemCounts.get(propValue) + 1);\n      }\n    }\n\n    // Classify items as unique or duplicate based on their counts\n    for (const item of incoming) {\n      const propValue = get(item.value, property);\n      if (itemCounts.get(propValue) === 1) {\n        unique.push(item);\n      } else {\n        duplicates.push(item);\n      }\n    }\n\n    output.pushTo('unique', unique)\n    output.pushTo('duplicates', duplicates)\n  },\n};\n"
  },
  {
    "path": "packages/core/src/computers/index.ts",
    "content": "export { Aggregate } from './Aggregate';\nexport { Anonymize } from './Anonymize';\nexport { Await } from './Await'\nexport { Clone } from './Clone'\nexport { Comment } from './Comment';\nexport { ConsoleLog } from './ConsoleLog'\nexport { Create } from './Create'\nexport { Describe } from './Describe'\nexport { Fake } from './Fake'\nexport { FilterMap } from './FilterMap'\nexport { FlatMap } from './FlatMap';\nexport { If } from './If';\nexport { Ignore } from './Ignore'\nexport { Input } from './Input';\nexport { LoopStart } from './LoopStart';\nexport { InstantThrow } from './InstantThrow';\nexport { Log } from './Log';\nexport { MakeSet } from './MakeSet';\nexport { Map } from './Map'\nexport { Merge } from './Merge'\nexport { Output } from './Output';\nexport { LoopBack } from './LoopBack';\nexport { Pass } from './Pass';\nexport { RemoveProperties } from './RemoveProperties';\nexport { Request } from './Request'\nexport { RequestLoopByOffset } from './RequestLoopByOffset'\nexport { RequestLoopByToken } from './RequestLoopByToken'\nexport { Router } from './Router'\nexport { Sample } from './Sample';\nexport { Signal } from './Signal'\nexport { Sleep } from './Sleep'\nexport { Table } from './Table'\nexport { Throw } from './Throw';\nexport { Unique } from './Unique'"
  },
  {
    "path": "packages/core/src/core.ts",
    "content": "import { Application } from './Application';\nimport { coreNodeProvider } from './coreNodeProvider';\n\n// This is the default app\nconst core = new Application();\n\ncore.register([\n  coreNodeProvider,\n]);\n\nexport { core };\n"
  },
  {
    "path": "packages/core/src/coreNodeProvider.ts",
    "content": "import { Application } from './Application';\nimport { ServiceProvider } from './types/ServiceProvider';\nimport * as computers from './computers'\nimport { Computer } from './types/Computer';\n\nexport const coreNodeProvider: ServiceProvider = {\n  boot: async (app: Application) => {\n    // ************************************************\n    // Add normal computers\n    // ************************************************\n    app.addComputers(Object.values(computers));\n\n    // ************************************************\n    // Add configured aliases demo: Photos node\n    // ************************************************\n    app.addConfiguredComputerAlias('Request', (original) => {\n      const clone = structuredClone(original)\n      clone.label = 'Photos'\n      const [ urlParam ] = clone.params\n      urlParam.input.rawValue = 'https://jsonplaceholder.typicode.com/photos'\n      return clone\n    });\n  },\n}"
  },
  {
    "path": "packages/core/src/createExecutableDiagram.test.ts",
    "content": "import { core } from '.';\nimport { DiagramQuery } from './DiagramQuery';\nimport { createExecutableDiagram } from './createExecutableDiagram';\nimport { str } from './Param'\n\ndescribe('unfold', () => {\n  it('unfolds a diagram without nested nodes without modifying the diagram', async () => {\n    const app = await core.boot()\n    const diagram = app.getDiagramBuilder()\n      .add('Create')\n      .add('Table')\n      .connect()\n      .get();\n\n    const unfolded = createExecutableDiagram(diagram, {});\n\n    expect(unfolded.diagram).toEqual(diagram);\n  })\n\n  it('unfolds a diagram with simple nested node', async () => {\n    const app = await core.boot()\n    const nestedNode = app.getDiagramBuilder()\n      .withParams([\n        str({\n          name: 'stamp',\n          value: 'foo',\n        }),\n      ])\n      .add('Input', { port_name: 'input' })\n      .add('Map')\n      .add('Output', { port_name: 'output' })\n      .connect()\n      .get()\n\n    const diagram = core.getDiagramBuilder()\n      .add('Create')\n      .addNestedNode('NestedNode', nestedNode)\n      .add('Ignore')\n      .connect()\n      .get()\n\n    const { diagram: unfoldedDiagram, unfoldedGlobalParams } = createExecutableDiagram(diagram, {\n      'NestedNode': nestedNode,\n    });\n\n    const querier = new DiagramQuery(unfoldedDiagram);\n\n    expect(querier.arePortsConnected('Create.output', 'Input.input')).toBe(true);\n    expect(querier.arePortsConnected('Input.output', 'Map.input')).toBe(true);\n    expect(querier.arePortsConnected('Map.output', 'Output.input')).toBe(true);\n    expect(querier.arePortsConnected('Output.output', 'Ignore.input')).toBe(true);\n\n    // Ensure params are copied to globalParam\n    expect(unfoldedGlobalParams).toMatchObject({\n      'Input.1': expect.arrayContaining([\n        expect.objectContaining({\n          name: 'stamp',\n          input:  {\n            Cast: 'stringCast',\n            rawValue: 'foo',\n          },\n        }),\n      ]),\n    })\n  })\n\n  it('unfolds a diagram with simple nested node with custom named ports', async () => {\n    const app = await core.boot()\n    const nestedNode = app.getDiagramBuilder()\n      .add('Input', { port_name: 'incoming' })\n      .add('Map')\n      .add('Output', { port_name: 'outgoing' })\n      .connect()\n      .get()\n\n    const diagram = app.getDiagramBuilder()\n      .add('Create')\n      .addNestedNode('NestedNode', nestedNode)\n      .add('Ignore')\n      .connect()\n      .get()\n\n    const { diagram: unfoldedDiagram } = createExecutableDiagram(diagram, {\n      'NestedNode': nestedNode,\n    });\n\n    const querier = new DiagramQuery(unfoldedDiagram);\n\n    expect(querier.arePortsConnected('Create.output', 'Input.input')).toBe(true);\n    expect(querier.arePortsConnected('Input.output', 'Map.input')).toBe(true);\n    expect(querier.arePortsConnected('Map.output', 'Output.input')).toBe(true);\n    expect(querier.arePortsConnected('Output.output', 'Ignore.input')).toBe(true);\n  })\n})\n"
  },
  {
    "path": "packages/core/src/createExecutableDiagram.ts",
    "content": "import { Diagram } from './Diagram'\nimport { Param, StringableInputValue } from './Param'\nimport { NestedNodesRecord } from './Registry'\nimport { ExecutableDiagram } from './ExecutableDiagram'\nimport { Node, NodeId } from './types/Node'\nimport { isStringableParam } from './utils/isStringableParam';\n\nexport const createExecutableDiagram = (\n  diagram: Diagram,\n  nestedNodes: NestedNodesRecord,\n): ExecutableDiagram => {\n  const { unfoldedGlobalParams } = unfoldDiagram(diagram, nestedNodes)\n  connectLoops(diagram)\n\n  return {\n    diagram,\n    unfoldedGlobalParams,\n  }\n}\n\n// Helper to extract port_name param value from a node\nfunction getPortName(node: any): string | undefined {\n  const param = node.params?.find((p: any) => p.name === 'port_name');\n  // Support both StringableParam and plain param\n  return param && (param.value ?? (param.input && param.input.rawValue));\n}\n\nconst connectLoops = (diagram: Diagram) => {\n  const loopBacks = diagram.nodes.filter(n => n.type === 'LoopBack');\n  const loopStarts = diagram.nodes.filter(n => n.type === 'LoopStart');\n\n  for (const loopBack of loopBacks) {\n    const loopBackPortName = getPortName(loopBack);\n    if (!loopBackPortName) continue;\n    const targetLoopStart = loopStarts.find(loopStart => getPortName(loopStart) === loopBackPortName);\n    if (!targetLoopStart) continue;\n\n    // Find output port on LoopBack and input port on LoopStart\n    const outputPort = loopBack.outputs?.[0]?.id;\n    const inputPort = targetLoopStart.inputs?.[0]?.id;\n    if (!outputPort || !inputPort) continue;\n\n    // Add the link if it doesn't already exist\n    const exists = diagram.links.some(l => l.sourcePortId === outputPort && l.targetPortId === inputPort);\n    if (!exists) {\n      diagram.links.push({\n        id: `${loopBack.id}:${outputPort}->${targetLoopStart.id}:${inputPort}`,\n        sourcePortId: outputPort,\n        targetPortId: inputPort,\n      });\n    }\n  }\n}\n\nexport const unfoldDiagram = (diagram: Diagram, nestedNodes: NestedNodesRecord): ExecutableDiagram => {\n  const replacables = diagram.nodes.filter(node => node.type in nestedNodes)\n\n  const unfoldedGlobalParams: Record<NodeId, Param[]> = {}\n\n  for(const node of replacables) {\n    const nestedDiagram = nestedNodes[node.type]\n    if(!nestedDiagram) throw new Error(`No nesteddiagram found for node type \"${node.type}\"`)\n\n    diagram.nodes.push(...nestedDiagram.nodes)\n    diagram.links.push(...nestedDiagram.links)\n\n    // Register the unfold map\n    for(const replacer of nestedDiagram.nodes) {\n      unfoldedGlobalParams[replacer.id] = structuredClone(node.params)\n    }\n\n    unfoldNode(node, diagram, nestedNodes, unfoldedGlobalParams)\n  }\n\n  return {\n    diagram,\n    unfoldedGlobalParams,\n  }\n}\n\nconst unfoldNode = (node: Node, diagram: Diagram, nestedNodes: NestedNodesRecord, unfoldedGlobalParams: Record<NodeId, Param[]>) => {\n  const index = diagram.nodes.indexOf(node)\n  if(index === -1) throw new Error('Node not found in diagram')\n  diagram.nodes.splice(index, 1)\n\n  const nestedDiagram = nestedNodes[node.type]\n  if(!nestedDiagram) throw new Error(`No nesteddiagram found for node type \"${node.type}\"`)\n\n  // Rewire incoming links\n  for(const inputPort of node.inputs) {\n    const links = diagram.linksAtInput(node, inputPort.name)\n\n    for(const link of links) {\n      const newTargetNode = nestedDiagram.nodes\n        .find(node => {\n          const isInputNode = node.type === 'Input'\n          if(!isInputNode) return false;\n\n          const param = node.params[0];\n          const portName: string = isStringableParam(param?.type)\n            ? (param?.input as StringableInputValue).rawValue\n            : param?.input.rawValue;\n          if(!portName) throw new Error(`No port name found for input node \"${node.id}\". The node was ${JSON.stringify(node)}`)\n\n          const matchesPortName = portName === inputPort.name;\n\n          return matchesPortName\n        })\n\n      if(!newTargetNode) throw new Error(`No input node found for input port \"${inputPort.name}\" on the nesteddiagram of \"${node.type}\"`)\n\n      const newInputPort = newTargetNode.inputs[0]\n      if(!newInputPort) throw new Error(`No input port found for input port \"${inputPort.name}\" on the nesteddiagram of \"${node.type}\". The node was ${JSON.stringify(node)}`)\n\n      link.targetPortId = newInputPort.id\n    }\n  }\n\n  // Rewire outgoing links\n  for(const outputPort of node.outputs) {\n    const links = diagram.linksAtOutput(node, outputPort.name)\n    for(const link of links) {\n      const newSourceNode = nestedDiagram.nodes\n        .find(node => {\n          const isOutputNode = node.type === 'Output'\n          if(!isOutputNode) return false;\n\n          const param = node.params[0];\n          const portName: string = isStringableParam(param?.type)\n            ? (param?.input as StringableInputValue).rawValue\n            : param?.input.rawValue;\n          if(!portName) throw new Error(`No port name found for output node \"${node.id}. The node was ${JSON.stringify(node)}\"`)\n\n          const matchesPortName = portName === outputPort.name\n\n          return matchesPortName\n        })\n\n      if(!newSourceNode) throw new Error(`No output node found for output port \"${outputPort.name}\" on the nesteddiagram of \"${node.type}\"`)\n\n      const newOutputPort = newSourceNode.outputs[0]\n      if(!newOutputPort) throw new Error(`No output port found for output port \"${outputPort.name}\" on the nesteddiagram of \"${node.type}\"`)\n\n      link.sourcePortId = newOutputPort.id\n    }\n  }\n}"
  },
  {
    "path": "packages/core/src/index.ts",
    "content": "export { AbortExecutionSchema, LinkCountInfoSchema, ObserveLinkCountsSchema, ObserveLinkItemsSchema, ObserveNodeStatusSchema, CancelObservationSchema, ObserveLinkUpdateSchema, NodesStatusInfoSchema as NodesStatusSchema } from './types/ExecutionObserver';\nexport { Application } from './Application'\nexport { asArray } from './utils/asArray'\nexport { ComputerFactory } from './ComputerFactory'\nexport { core } from './core'\nexport { coreNodeProvider } from './coreNodeProvider'\nexport { createDataStoryId } from './utils/createDataStoryId'\nexport { debounce } from './utils/debounce'\nexport { Diagram } from './Diagram'\nexport { DiagramBuilder } from './DiagramBuilder'\nexport { Executor } from './Executor'\nexport { ExecutorFactory } from './ExecutorFactory'\nexport { flattenObjectOneLevel } from './utils/flattenObjectOneLevel'\nexport { get } from './utils/get'\nexport { GetDataFromStorageParamsSchema, GetDataFromStorageResponseSchema, LinkItemsSchema } from './types/GetDataFromStorageParams'\nexport { InMemoryObserverStorage } from './storage/inMemoryObserverStorage'\nexport { ItemWithParams } from './ItemWithParams';\nexport { jsExpressionEvaluation } from './Param/evaluations/jsExpressionEvaluation'\nexport { jsFunctionEvaluation } from './Param/evaluations/jsFunctionEvaluation'\nexport { json_ } from './Param'\nexport { jsonEvaluation } from './Param/evaluations/jsonEvaluation'\nexport { LinkGuesser } from './LinkGuesser'\nexport { LinkItemsUpdateSchema } from './types/LinkItemsUpdate'\nexport { multiline } from './utils/multiline'\nexport { NodeDescriptionResponseSchema, NodeDescriptionRequestSchema } from './types/NodeDescription';\nexport { numberCast } from './Param/casts/numberCast'\nexport { ObserverController } from './ObserverController'\nexport { parseStringList } from './utils/parseStringList'\nexport { pascalToSentenceCase } from './utils/pascalToSentenceCase'\nexport { PositionGuesser } from './PositionGuesser'\nexport { Registry } from './Registry'\nexport { remoteNodeProvider } from './remoteNodeProvider'\nexport { serializeError } from './utils/serializeError'\nexport { sleep } from './utils/sleep'\nexport { stringCast } from './Param/casts/stringCast'\nexport { stringifyError } from './utils/stringifyError'\nexport { type Computer } from './types/Computer'\nexport { type ExecutionResult } from './ExecutionResult'\nexport { type InputObserveConfig, RequestObserverType } from './types/InputObserveConfig';\nexport { createExecutableDiagram } from './createExecutableDiagram'\nexport * as nodes from './computers'\nexport * from './Param'\nexport type { AbortExecution, LinkCountInfo, ObserveLinkCounts, ExecutionObserver, ObserveLinkItems, ObserveNodeStatus, CancelObservation, ObserveLinkUpdate, NodesStatusInfo } from './types/ExecutionObserver'\nexport type { ExecutionFailure } from './types/ExecutionFailure'\nexport type { GetDataFromStorageParams, LinkItems, GetDataFromStorageResponse } from './types/GetDataFromStorageParams'\nexport type { Hook } from './types/Hook'\nexport type { InputObserver } from './types/InputObserver';\nexport type { ItemValue } from './types/ItemValue'\nexport type { Link, LinkId, LinkCount } from './types/Link';\nexport type { LinkItemsUpdate } from './types/LinkItemsUpdate'\nexport type { LinksCountUpdate } from './types/LinksCountUpdate'\nexport type { Node } from './types/Node'\nexport type { NodeDescription, NodeDescriptionRequest, NodeDescriptionResponse } from './types/NodeDescription'\nexport type { NodeId } from './types/Node';\nexport type { NodeStatus } from './Executor';\nexport type { NotifyObserversCallback } from './types/NotifyObserversCallback';\nexport type { ObserverStorage, DiagramId, GetLinkItemsParams } from './types/ObserverStorage'\nexport type { Param, ParamInput as ParamValue } from './Param'\nexport type { Port, AbstractPort } from './types/Port'\nexport type { ReportCallback } from './types/ReportCallback';\nexport type { ServiceProvider } from './types/ServiceProvider'\nexport { Table } from './computers'\n"
  },
  {
    "path": "packages/core/src/remoteNodeProvider.ts",
    "content": "import { Diagram, multiline, nodes } from '.';\nimport { Application } from './Application';\nimport { str } from './Param';\n\nexport const remoteNodeProvider = {\n  boot: async (app: Application) => {\n    addFooBarStamper(app);\n    addDownloadEntity(app);\n  },\n};\n\nconst addFooBarStamper = (app: Application) => {\n  // *************************************\n  // Make a nested node\n  // *************************************\n  const nestedNode = app.getDiagramBuilder()\n    .withParams([\n      str({\n        name: 'stamp',\n        value: 'secret message passed',\n      },\n      ),\n    ])\n    .add('Input', { port_name: 'input' })\n    .add('Map', {\n      mapper: multiline`\n        item => ({\n          ...item,\n          global_param_access: '@{stamp}',\n        })`,\n    })\n    .add('Output', { port_name: 'stamped' })\n    .connect()\n    .get();\n\n  // *************************************\n  // Add nested node to app\n  // *************************************\n  app.addNestedNode('FooBarStamper', nestedNode);\n}\n\nconst addDownloadEntity = (app: Application) => {\n  const entities = [\n    'contacts',\n    'companies',\n    'deals',\n    'tickets',\n  ]\n\n  const node = {\n    'nodes': [\n      {\n        'id': 'Request.pna2PHQTUi',\n        'type': 'Request',\n        'label': 'api/<ENTITY>',\n        'inputs': [\n          {\n            'id': 'Request.pna2PHQTUi.input',\n            'name': 'input',\n            'schema': {},\n          },\n        ],\n        'outputs': [\n          {\n            'id': 'Request.pna2PHQTUi.items',\n            'name': 'items',\n            'schema': {},\n          },\n          {\n            'id': 'Request.pna2PHQTUi.response',\n            'name': 'response',\n            'schema': {},\n          },\n          {\n            'id': 'Request.pna2PHQTUi.error',\n            'name': 'error',\n            'schema': {},\n          },\n        ],\n        'params': [\n          {\n            'name': 'url',\n            'type': 'StringableParam',\n            'label': 'url',\n            'help': '',\n            'multiline': false,\n            'canInterpolate': true,\n            'interpolate': true,\n            'evaluations': [\n              {\n                'type': 'JS_FUNCTION',\n                'label': 'JS Function',\n                'shortLabel': 'fn',\n              },\n              {\n                'type': 'JSON',\n                'label': 'JSON',\n                'shortLabel': 'json',\n              },\n            ],\n            'casts': [\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'https://api.hubapi.com/crm/v3/objects/@{entity}',\n              'Cast': 'stringCast',\n            },\n          },\n          {\n            'name': 'method',\n            'type': 'StringableParam',\n            'label': 'method',\n            'help': '',\n            'multiline': false,\n            'canInterpolate': true,\n            'interpolate': true,\n            'casts': [\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'GET',\n              'Cast': 'stringCast',\n            },\n          },\n          {\n            'name': 'body',\n            'type': 'StringableParam',\n            'label': 'body',\n            'help': '',\n            'multiline': true,\n            'canInterpolate': true,\n            'interpolate': true,\n            'evaluations': [\n              {\n                'type': 'JSON',\n                'label': 'JSON',\n                'shortLabel': 'json',\n              },\n              {\n                'type': 'JS_FUNCTION',\n                'label': 'JS Function',\n                'shortLabel': 'fn',\n              },\n              {\n                'type': 'JS_EXPRESSION',\n                'label': 'JS Expression',\n                'shortLabel': 'expr',\n              },\n            ],\n            'casts': [\n              {\n                'type': 'numberCast',\n                'label': 'Number',\n                'shortLabel': 'num',\n              },\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': '',\n              'Evaluation': 'JSON',\n            },\n          },\n          {\n            'name': 'config',\n            'type': 'StringableParam',\n            'label': 'config',\n            'help': '',\n            'multiline': true,\n            'canInterpolate': true,\n            'interpolate': true,\n            'evaluations': [\n              {\n                'type': 'JSON',\n                'label': 'JSON',\n                'shortLabel': 'json',\n                'selected': false,\n              },\n              {\n                'type': 'JS_FUNCTION',\n                'label': 'JS Function',\n                'shortLabel': 'fn',\n                'selected': false,\n              },\n              {\n                'type': 'JS_EXPRESSION',\n                'label': 'JS Expression',\n                'shortLabel': 'expr',\n                'selected': false,\n              },\n            ],\n            'casts': [\n              {\n                'type': 'numberCast',\n                'label': 'Number',\n                'shortLabel': 'num',\n              },\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'item => ({\\n  params: {\\n    limit: 1,\\n    after: item.after\\n  },\\n  headers: {\\n    authorization: `Bearer ${process.env.HUBSPOT_ACCESS_TOKEN}`\\n  }\\n})',\n              'Evaluation': 'JS_FUNCTION',\n            },\n          },\n          {\n            'name': 'item_path',\n            'type': 'StringableParam',\n            'label': 'item_path',\n            'help': 'Path to the items in the response data.',\n            'multiline': false,\n            'canInterpolate': true,\n            'interpolate': true,\n            'casts': [\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'results',\n              'Cast': 'stringCast',\n            },\n          },\n        ],\n        'position': {\n          'x': 818.1019059414579,\n          'y': 80.29271533871162,\n        },\n      },\n      {\n        'id': 'FilterMap.argFsubyjV',\n        'type': 'FilterMap',\n        'label': 'Has More?',\n        'inputs': [\n          {\n            'id': 'FilterMap.argFsubyjV.input',\n            'name': 'input',\n            'schema': {},\n          },\n        ],\n        'outputs': [\n          {\n            'id': 'FilterMap.argFsubyjV.output',\n            'name': 'output',\n            'schema': {},\n          },\n        ],\n        'params': [\n          {\n            'name': 'mapper',\n            'type': 'StringableParam',\n            'label': 'mapper',\n            'help': '',\n            'multiline': true,\n            'canInterpolate': true,\n            'interpolate': true,\n            'evaluations': [\n              {\n                'type': 'JSON',\n                'label': 'JSON',\n                'shortLabel': 'json',\n              },\n              {\n                'type': 'JS_FUNCTION',\n                'label': 'JS Function',\n                'shortLabel': 'fn',\n              },\n              {\n                'type': 'JS_EXPRESSION',\n                'label': 'JS Expression',\n                'shortLabel': 'expr',\n              },\n            ],\n            'casts': [\n              {\n                'type': 'numberCast',\n                'label': 'Number',\n                'shortLabel': 'num',\n              },\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'function(item) {\\n  const after = item.response?.data?.paging?.next?.after\\n  if(!after) return\\n\\n  return {\\n    ...item,\\n    after,\\n  }\\n}',\n              'Evaluation': 'JS_FUNCTION',\n            },\n          },\n        ],\n        'position': {\n          'x': 1146.0276237080645,\n          'y': 221.11534422507668,\n        },\n      },\n      {\n        'id': 'If.hFUjWhVeEW',\n        'type': 'If',\n        'label': 'Retryable?',\n        'inputs': [\n          {\n            'id': 'If.hFUjWhVeEW.input',\n            'name': 'input',\n            'schema': {},\n          },\n        ],\n        'outputs': [\n          {\n            'id': 'If.hFUjWhVeEW.true',\n            'name': 'true',\n            'schema': {},\n          },\n          {\n            'id': 'If.hFUjWhVeEW.false',\n            'name': 'false',\n            'schema': {},\n          },\n        ],\n        'params': [\n          {\n            'name': 'condition',\n            'type': 'StringableParam',\n            'label': 'condition',\n            'help': 'JavaScript function that returns true or false',\n            'multiline': true,\n            'canInterpolate': true,\n            'interpolate': true,\n            'evaluations': [\n              {\n                'type': 'JSON',\n                'label': 'JSON',\n                'shortLabel': 'json',\n              },\n              {\n                'type': 'JS_FUNCTION',\n                'label': 'JS Function',\n                'shortLabel': 'fn',\n              },\n              {\n                'type': 'JS_EXPRESSION',\n                'label': 'JS Expression',\n                'shortLabel': 'expr',\n              },\n            ],\n            'casts': [\n              {\n                'type': 'numberCast',\n                'label': 'Number',\n                'shortLabel': 'num',\n              },\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'item => item.value > 0\\n',\n              'Evaluation': 'JS_FUNCTION',\n            },\n          },\n        ],\n        'position': {\n          'x': 1095.8964721952298,\n          'y': 411.50893556453155,\n        },\n      },\n      {\n        'id': 'Throw.H1IsndCPgp',\n        'type': 'Throw',\n        'label': 'Throw',\n        'inputs': [\n          {\n            'id': 'Throw.H1IsndCPgp.input',\n            'name': 'input',\n            'schema': {},\n          },\n        ],\n        'outputs': [],\n        'params': [\n          {\n            'name': 'message',\n            'type': 'StringableParam',\n            'label': 'message',\n            'help': 'What to throw',\n            'multiline': false,\n            'canInterpolate': true,\n            'interpolate': true,\n            'evaluations': [\n              {\n                'type': 'JS_FUNCTION',\n                'label': 'JS Function',\n                'shortLabel': 'fn',\n              },\n              {\n                'type': 'JSON',\n                'label': 'JSON',\n                'shortLabel': 'json',\n              },\n            ],\n            'casts': [\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'Some error',\n              'Cast': 'stringCast',\n            },\n          },\n        ],\n        'position': {\n          'x': 1380.4503720215841,\n          'y': 571.2414921638916,\n        },\n      },\n      {\n        'id': 'Sleep.mnQZr308n5',\n        'type': 'Sleep',\n        'label': 'Backoff',\n        'inputs': [\n          {\n            'id': 'Sleep.mnQZr308n5.input',\n            'name': 'input',\n            'schema': {},\n          },\n        ],\n        'outputs': [\n          {\n            'id': 'Sleep.mnQZr308n5.output',\n            'name': 'output',\n            'schema': {},\n          },\n        ],\n        'params': [\n          {\n            'name': 'duration',\n            'type': 'StringableParam',\n            'label': 'Duration',\n            'help': 'How many ms to sleep?',\n            'multiline': false,\n            'canInterpolate': true,\n            'interpolate': true,\n            'casts': [\n              {\n                'type': 'numberCast',\n                'label': 'Number',\n                'shortLabel': 'num',\n              },\n            ],\n            'input': {\n              'rawValue': '100',\n              'Cast': 'numberCast',\n            },\n          },\n        ],\n        'position': {\n          'x': 1381.375833488046,\n          'y': 433.8721239395465,\n        },\n      },\n      {\n        'id': 'If.1PlBkEQCFr',\n        'type': 'If',\n        'label': 'If',\n        'inputs': [\n          {\n            'id': 'If.1PlBkEQCFr.input',\n            'name': 'input',\n            'schema': {},\n          },\n        ],\n        'outputs': [\n          {\n            'id': 'If.1PlBkEQCFr.true',\n            'name': 'true',\n            'schema': {},\n          },\n          {\n            'id': 'If.1PlBkEQCFr.false',\n            'name': 'false',\n            'schema': {},\n          },\n        ],\n        'params': [\n          {\n            'name': 'condition',\n            'type': 'StringableParam',\n            'label': 'condition',\n            'help': 'JavaScript function that returns true or false',\n            'multiline': true,\n            'canInterpolate': true,\n            'interpolate': true,\n            'evaluations': [\n              {\n                'type': 'JSON',\n                'label': 'JSON',\n                'shortLabel': 'json',\n                'selected': false,\n              },\n              {\n                'type': 'JS_FUNCTION',\n                'label': 'JS Function',\n                'shortLabel': 'fn',\n                'selected': false,\n              },\n              {\n                'type': 'JS_EXPRESSION',\n                'label': 'JS Expression',\n                'shortLabel': 'expr',\n                'selected': false,\n              },\n            ],\n            'casts': [\n              {\n                'type': 'numberCast',\n                'label': 'Number',\n                'shortLabel': 'num',\n              },\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'Boolean(process.env.HUBSPOT_ACCESS_TOKEN)',\n              'Evaluation': 'JS_EXPRESSION',\n            },\n          },\n        ],\n        'position': {\n          'x': 360.1915660451833,\n          'y': 77.46274882038068,\n        },\n      },\n      {\n        'id': 'Throw.nR9VUyTK1D',\n        'type': 'Throw',\n        'label': 'Throw',\n        'inputs': [\n          {\n            'id': 'Throw.nR9VUyTK1D.input',\n            'name': 'input',\n            'schema': {},\n          },\n        ],\n        'outputs': [],\n        'params': [\n          {\n            'name': 'message',\n            'type': 'StringableParam',\n            'label': 'message',\n            'help': 'What to throw',\n            'multiline': false,\n            'canInterpolate': true,\n            'interpolate': true,\n            'evaluations': [\n              {\n                'type': 'JS_FUNCTION',\n                'label': 'JS Function',\n                'shortLabel': 'fn',\n              },\n              {\n                'type': 'JSON',\n                'label': 'JSON',\n                'shortLabel': 'json',\n              },\n            ],\n            'casts': [\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'No value found in env HUBSPOT_ACCESS_TOKEN',\n              'Cast': 'stringCast',\n            },\n          },\n        ],\n        'position': {\n          'x': 508.8744726667219,\n          'y': 288.59201054858926,\n        },\n      },\n      {\n        'id': 'Table.C8PKBUIidF',\n        'type': 'Table',\n        'label': 'Table',\n        'inputs': [\n          {\n            'id': 'Table.C8PKBUIidF.input',\n            'name': 'input',\n            'schema': {},\n          },\n        ],\n        'outputs': [],\n        'params': [\n          {\n            'type': 'StringableParam',\n            'name': 'only',\n            'label': 'Only',\n            'multiline': true,\n            'canInterpolate': false,\n            'help': 'If set, only the specified paths will be shown. Use comma separation',\n            'input': {\n              'rawValue': '',\n              'Evaluation': 'STRING_LIST',\n            },\n            'evaluations': [\n              {\n                'type': 'STRING_LIST',\n                'label': 'list',\n                'shortLabel': 'list',\n              },\n            ],\n          },\n          {\n            'type': 'StringableParam',\n            'name': 'drop',\n            'label': 'Drop',\n            'multiline': true,\n            'canInterpolate': false,\n            'help': 'If set, the specified paths will be dropped. Use comma separation',\n            'input': {\n              'rawValue': '',\n              'Evaluation': 'STRING_LIST',\n            },\n            'evaluations': [\n              {\n                'type': 'STRING_LIST',\n                'label': 'list',\n                'shortLabel': 'list',\n              },\n            ],\n          },\n          {\n            'name': 'destructObjects',\n            'type': 'StringableParam',\n            'label': 'destructObjects',\n            'help': 'If set, objects will be destructured',\n            'multiline': false,\n            'canInterpolate': true,\n            'interpolate': true,\n            'casts': [\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'true',\n              'Cast': 'stringCast',\n            },\n          },\n        ],\n        'position': {\n          'x': 1015.737180630588,\n          'y': 701.9286474541559,\n        },\n      },\n      {\n        'id': 'LoopBack.u9pUFT4ST5',\n        'type': 'LoopBack',\n        'label': 'Loop Back',\n        'inputs': [\n          {\n            'id': 'LoopBack.u9pUFT4ST5.input',\n            'name': 'input',\n            'schema': {},\n          },\n        ],\n        'outputs': [\n          {\n            'id': 'LoopBack.u9pUFT4ST5.output',\n            'name': 'output',\n            'schema': {},\n          },\n        ],\n        'params': [\n          {\n            'name': 'port_name',\n            'type': 'StringableParam',\n            'label': 'Port Name',\n            'help': 'The name of the loop back port.',\n            'multiline': false,\n            'canInterpolate': true,\n            'interpolate': true,\n            'casts': [\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'has-more',\n              'Cast': 'stringCast',\n            },\n          },\n        ],\n        'position': {\n          'x': 1389.4467401341556,\n          'y': 181.3792763895645,\n        },\n      },\n      {\n        'id': 'LoopStart.vZhoJS7GMJ',\n        'type': 'LoopStart',\n        'label': 'Loop Start',\n        'inputs': [\n          {\n            'id': 'LoopStart.vZhoJS7GMJ.input',\n            'name': 'input',\n            'schema': {},\n          },\n        ],\n        'outputs': [\n          {\n            'id': 'LoopStart.vZhoJS7GMJ.output',\n            'name': 'output',\n            'schema': {},\n          },\n        ],\n        'params': [\n          {\n            'name': 'port_name',\n            'type': 'StringableParam',\n            'label': 'Port Name',\n            'help': 'The name of the loop start port.',\n            'multiline': false,\n            'canInterpolate': true,\n            'interpolate': true,\n            'casts': [\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'has-more',\n              'Cast': 'stringCast',\n            },\n          },\n        ],\n        'position': {\n          'x': 616.3129593497374,\n          'y': 193.70019365796705,\n        },\n      },\n      {\n        'id': 'Output.HCAPZODyjm',\n        'type': 'Output',\n        'label': 'Output',\n        'inputs': [\n          {\n            'id': 'Output.HCAPZODyjm.input',\n            'name': 'input',\n            'schema': {},\n          },\n        ],\n        'outputs': [\n          {\n            'id': 'Output.HCAPZODyjm.output',\n            'name': 'output',\n            'schema': {},\n          },\n        ],\n        'params': [\n          {\n            'name': 'port_name',\n            'type': 'StringableParam',\n            'label': 'Port Name',\n            'help': 'The name of the output port.',\n            'multiline': false,\n            'canInterpolate': true,\n            'interpolate': true,\n            'casts': [\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': 'output',\n              'Cast': 'stringCast',\n            },\n          },\n        ],\n        'position': {\n          'x': 1570.434188461761,\n          'y': 131.75452126662225,\n        },\n      },\n      {\n        'id': 'Create.Uk91QKmAvz',\n        'type': 'Create',\n        'label': 'Create',\n        'inputs': [],\n        'outputs': [\n          {\n            'id': 'Create.Uk91QKmAvz.output',\n            'name': 'output',\n            'schema': {},\n          },\n        ],\n        'params': [\n          {\n            'name': 'data',\n            'type': 'StringableParam',\n            'label': 'data',\n            'help': 'You may use json, js function or expression',\n            'multiline': true,\n            'canInterpolate': true,\n            'interpolate': true,\n            'evaluations': [\n              {\n                'type': 'JSON',\n                'label': 'JSON',\n                'shortLabel': 'json',\n              },\n              {\n                'type': 'JS_FUNCTION',\n                'label': 'JS Function',\n                'shortLabel': 'fn',\n              },\n              {\n                'type': 'JS_EXPRESSION',\n                'label': 'JS Expression',\n                'shortLabel': 'expr',\n              },\n            ],\n            'casts': [\n              {\n                'type': 'numberCast',\n                'label': 'Number',\n                'shortLabel': 'num',\n              },\n              {\n                'type': 'stringCast',\n                'label': 'String',\n                'shortLabel': 'str',\n              },\n            ],\n            'input': {\n              'rawValue': '{\\n  \"foo\": \"bar\"\\n}',\n              'Evaluation': 'JS_EXPRESSION',\n            },\n          },\n        ],\n        'position': {\n          'x': 112.63551479723716,\n          'y': 73.94732191493799,\n        },\n      },\n    ],\n    'links': [\n      {\n        'id': 'icAB0vivGM',\n        'sourcePortId': 'If.hFUjWhVeEW.false',\n        'targetPortId': 'Throw.H1IsndCPgp.input',\n        'label': 0,\n        'labelBgStyle': {\n          'opacity': 0.6,\n        },\n      },\n      {\n        'id': 'Tjol6dMwAU',\n        'sourcePortId': 'If.hFUjWhVeEW.true',\n        'targetPortId': 'Sleep.mnQZr308n5.input',\n        'label': 0,\n        'labelBgStyle': {\n          'opacity': 0.6,\n        },\n      },\n      {\n        'id': 'duknE03Tk6',\n        'sourcePortId': 'If.1PlBkEQCFr.false',\n        'targetPortId': 'Throw.nR9VUyTK1D.input',\n        'label': 0,\n        'labelBgStyle': {\n          'opacity': 0.6,\n        },\n      },\n      {\n        'id': 'Em2xtu1puy',\n        'sourcePortId': 'Request.pna2PHQTUi.error',\n        'targetPortId': 'Table.C8PKBUIidF.input',\n        'label': 0,\n        'labelBgStyle': {\n          'opacity': 0.6,\n        },\n      },\n      {\n        'id': 'PsgipUjwrH',\n        'sourcePortId': 'FilterMap.argFsubyjV.output',\n        'targetPortId': 'LoopBack.u9pUFT4ST5.input',\n        'label': 2,\n        'labelBgStyle': {\n          'opacity': 0.6,\n        },\n      },\n      {\n        'id': '4y3WDy0Bf3',\n        'sourcePortId': 'LoopStart.vZhoJS7GMJ.output',\n        'targetPortId': 'Request.pna2PHQTUi.input',\n        'label': 2,\n        'labelBgStyle': {\n          'opacity': 0.6,\n        },\n      },\n      {\n        'id': 'j7sRswF94L',\n        'sourcePortId': 'Request.pna2PHQTUi.items',\n        'targetPortId': 'Output.HCAPZODyjm.input',\n        'label': 3,\n        'labelBgStyle': {\n          'opacity': 0.6,\n        },\n      },\n      {\n        'id': 'APaebPXD9Q',\n        'sourcePortId': 'Request.pna2PHQTUi.error',\n        'targetPortId': 'If.hFUjWhVeEW.input',\n        'label': 0,\n        'labelBgStyle': {\n          'opacity': 0.6,\n        },\n      },\n      {\n        'id': 'bz0npYmccO',\n        'sourcePortId': 'Create.Uk91QKmAvz.output',\n        'targetPortId': 'If.1PlBkEQCFr.input',\n        'label': 1,\n        'labelBgStyle': {\n          'opacity': 0.6,\n        },\n      },\n      {\n        'id': 'jXX7Q4UnLv',\n        'sourcePortId': 'If.1PlBkEQCFr.true',\n        'targetPortId': 'Request.pna2PHQTUi.input',\n        'label': 1,\n        'labelBgStyle': {\n          'opacity': 0.6,\n        },\n      },\n      {\n        'id': 'grFUTm380a',\n        'sourcePortId': 'Request.pna2PHQTUi.response',\n        'targetPortId': 'FilterMap.argFsubyjV.input',\n        'label': 3,\n        'labelBgStyle': {\n          'opacity': 0.6,\n        },\n      },\n    ],\n    'params': [\n      {\n        'name': 'entity',\n        'type': 'StringableParam',\n        'label': 'Entity',\n        'help': 'The hubspot entity to fetch',\n        'multiline': false,\n        'canInterpolate': true,\n        'evaluations': [],\n        'input': {\n          'rawValue': 'contacts',\n        },\n      },\n    ],\n    'viewport': {\n      'x': 0,\n      'y': 0,\n      'zoom': 1,\n    },\n  } as any;\n\n  app.addNestedNode('DownloadEntity', node);\n\n  for(const entity of entities) {\n    app.addConfiguredComputerAlias('DownloadEntity', (original => {\n      const clone = structuredClone(original)\n      const [entityParam] = clone.params\n      entityParam.input.rawValue = entity\n      clone.label = entity\n\n      return clone\n    }))\n  }\n}"
  },
  {
    "path": "packages/core/src/storage/inMemoryObserverStorage.ts",
    "content": "import { ItemValue } from '../types/ItemValue';\nimport { LinkId } from '../types/Link';\nimport { NodeId } from '../types/Node';\nimport { NodeStatus } from '../Executor';\nimport { DiagramId, GetLinkItemsParams, ObserverStorage } from '../types/ObserverStorage';\n\n/**\n * implementation of ObserverStorage using Maps\n */\nexport class InMemoryObserverStorage implements ObserverStorage {\n  private diagramId: DiagramId;\n  private linkCountsStorage: Map<LinkId, number> = new Map()\n  private linkItemsStorage: Map<LinkId, ItemValue[]> = new Map()\n  private nodeStatusStorage: Map<NodeId, NodeStatus> = new Map()\n\n  constructor(diagramId: DiagramId) {\n    this.diagramId = diagramId;\n  }\n\n  // Link Counts\n  async getLinkCount(linkId: LinkId): Promise<number | undefined> {\n    return this.linkCountsStorage.get(linkId);\n  }\n\n  async setLinkCount(linkId: LinkId, count: number): Promise<void> {\n    this.linkCountsStorage.set(linkId, count);\n  }\n\n  async setLinkCounts(counts: Map<LinkId, number>): Promise<void> {\n    this.linkCountsStorage = counts;\n  }\n\n  // Link Items\n  async getLinkItems({ linkId, offset, limit }: GetLinkItemsParams): Promise<ItemValue[] | undefined> {\n    const storageItems = this.linkItemsStorage.get(linkId)?.slice(offset, offset + limit);\n    return storageItems ?? [];\n  }\n\n  async setLinkItems(linkId: LinkId, items: ItemValue[]): Promise<void> {\n    this.linkItemsStorage.set(linkId, items);\n  }\n\n  async setLinksItems(linksItems: Map<LinkId, ItemValue[]>): Promise<void> {\n    this.linkItemsStorage = linksItems;\n  }\n\n  async appendLinkItems(linkId: LinkId, items: ItemValue[]): Promise<void> {\n    const currentItems = this.linkItemsStorage.get(linkId) ?? [];\n    this.linkItemsStorage.set(linkId, currentItems.concat(items));\n  }\n\n  // Node Status\n  async getNodeStatus(nodeId: NodeId): Promise<NodeStatus | undefined> {\n    return this.nodeStatusStorage.get(nodeId);\n  }\n\n  async setNodeStatus(nodeId: NodeId, status: NodeStatus): Promise<void> {\n    this.nodeStatusStorage.set(nodeId, status);\n  }\n\n  async setNodeStatuses(statuses: Map<NodeId, NodeStatus>): Promise<void> {\n    this.nodeStatusStorage = statuses;\n  }\n\n  async close(): Promise<void> {\n    this.linkCountsStorage.clear();\n    this.linkItemsStorage.clear();\n    this.nodeStatusStorage.clear();\n  }\n\n}\n"
  },
  {
    "path": "packages/core/src/support/benchmark.ts",
    "content": "import { Application } from '../Application';\nimport { ExecutorFactory } from '../ExecutorFactory';\nimport { core } from '../core';\nimport { coreNodeProvider } from '../coreNodeProvider';\n\n(async () => {\n  const itemCount = 1_000_000\n\n  const data: { id: number }[] = []\n\n  for (let i = 0; i < itemCount; i++) {\n    data.push({ id: i })\n  }\n\n  const app = new Application();\n\n  app.register([\n    coreNodeProvider,\n  ]);\n\n  await app.boot();\n\n  const diagram = core.getDiagramBuilder()\n    .add('Create', { json: JSON.stringify(data) })\n    .add('CreateProperties')\n    .add('Ignore')\n    .get()\n\n  const executor = app.getExecutor({\n    diagram,\n  })\n\n  const startTime = Date.now()\n\n  const execution = executor.execute()\n\n  try {\n    for await(const update of execution) {}\n\n    const endTime = Date.now()\n\n    console.log(`Processing ${itemCount} items. Execution time in milliseconds: `, endTime - startTime)\n  } catch(error: any) {\n    console.log('Error: ', error.message)\n    throw error\n  }\n})()\n"
  },
  {
    "path": "packages/core/src/support/computerTester/ComputerTester.ts",
    "content": "import { Computer } from '../../types/Computer';\nimport { Diagram } from '../../Diagram';\nimport { Executor, NodeStatus } from '../../Executor';\nimport { PortLinkMap } from '../../types/PortLinkMap';\nimport { ItemValue } from '../../types/ItemValue';\nimport { Node, NodeId } from '../../types/Node';\nimport { OutputDevice } from '../../OutputDevice';\nimport { TestStep } from './TestStep';\n\nimport {\n  doRun,\n  expectError,\n  expectOutput,\n  expectOutputs,\n  expectHooks,\n  getsInput,\n  getsInputs,\n} from './testSteps';\n\nimport { expectDone } from './testSteps/expectDone';\nimport { ExecutionMemory } from '../../ExecutionMemory';\nimport { InputDevice } from '../../InputDevice';\nimport { ComputerFactory } from '../../ComputerFactory';\nimport { LinkId } from '../../types/Link';\nimport { Hook } from '../../types/Hook';\nimport { Param } from '../../Param';\nimport { ParamEvaluator } from '../../ItemWithParams/ParamEvaluator';\nimport { merge } from '../../utils/merge';\nimport { createExecutableDiagram } from '../../createExecutableDiagram';\nimport { NodeRunnerContext } from '../../NodeRunnerContext';\n\nexport const when = (computer: Computer) => {\n  return new ComputerTester(computer)\n}\n\nexport type ExpectedOutputItems = {\n  [key: string]: ItemValue[]\n}\n\nexport type InputValues = {\n  [key: string]: ItemValue[]\n}\n\nexport type ExplicitParamValues = {\n  [key: string]: any\n}\n\ntype TestStepArgs = any[]\n\nexport class ComputerTester {\n  diagram: Diagram | null = null\n  node: Node | null = null\n  explicitParamValues: ExplicitParamValues = {}\n  explicitParams: Partial<Param>[] = []\n  steps: [TestStep, TestStepArgs][] = []\n  inputs: {\n    [key: string]: ItemValue[]\n  } = {}\n  expectedOutputs: {\n    [key: string]: ItemValue[]\n  } = {}\n  runner: AsyncGenerator | null = null\n  inputDevice: InputDevice | null = null\n  outputDevice: OutputDevice | null = null\n  hooksDevice: { register: (hook: Hook) => void } = { register: vi.fn() }\n  memory: ExecutionMemory | null = null\n  expectedErrorMessage: string | undefined\n  computer: Computer\n\n  constructor(computer: Computer) {\n    this.computer = new ComputerFactory().getInstance(computer)\n  }\n\n  /**\n   * After all steps have been registered, call this method to perform them 💫\n   */\n  async ok() {\n    this.diagram = this.makeDiagram()\n    this.node = this.diagram.nodes[0]\n    this.memory = this.makeExecutionMemory()\n\n    this.inputDevice = this.makeInputDevice()\n    this.outputDevice = this.makeOutputDevice()\n\n    // Initialize runner\n    const context = new NodeRunnerContext(this.node!.id);\n    context.status = this.computer.run({\n      input: this.inputDevice,\n      output: this.outputDevice,\n      params: new Proxy({}, {\n        get: (_, key: string) => {\n          const params = this.makeParams();\n          const param = params.find(p => p.name === key) as Param;\n          if (!param) throw new Error(`Param \"${key}\" does not exist`);\n\n          try {\n            const emptyItem = {}\n            const evaluator = new ParamEvaluator();\n            return evaluator.evaluate(emptyItem, param, this.diagram!.params);\n          } catch (error) {\n            console.error('error', error);\n            return param.input;\n          }\n        },\n      }),\n      hooks: {\n        register: (hook: Hook) => {\n          this.memory!.pushHooks([hook])\n        },\n      },\n      node: this.node!,\n      onComplete: context.registerOnComplete,\n    })\n    this.memory!.setNodeRunnerContext(this.node!.id, context);\n\n    // Runner handle\n    this.runner = this.memory.getNodeRunner(this.node.id)!\n\n    // Perform the preparation and assertion steps\n    for(const [step, args] of this.steps) {\n      await step.handle(this, ...args)\n    }\n  }\n\n  doRun(times: number = 1) {\n    for(let i = 0; i < times; i++) {\n      this.steps.push([doRun, []])\n    }\n\n    return this\n  }\n\n  hasDefaultParams() {\n    return this; // this is already true\n  }\n\n  hasParam(param: Partial<Param>) {\n    this.explicitParams.push(param)\n\n    return this;\n  }\n\n  hasParams(params: ExplicitParamValues) {\n    this.explicitParamValues = params\n\n    return this\n  }\n\n  // TODO getsFinalInput\n  // TODO getsFinalInputs\n\n  getsInput(input: ItemValue) {\n    this.steps.push([getsInput, [input]])\n\n    return this\n  }\n\n  getsInputs(inputs: InputValues) {\n    this.steps.push([getsInputs, [inputs]])\n\n    return this\n  }\n\n  expectDone() {\n    this.steps.push([expectDone, []])\n\n    return this\n  }\n\n  expectError(message: string) {\n    this.steps.push([expectError, [message]])\n\n    return this\n  }\n\n  expectHooks(hooks: Hook[]) {\n    this.steps.push([expectHooks, [hooks]])\n\n    return this\n  }\n\n  expectOutput(output: ItemValue) {\n    this.steps.push([expectOutput, [output]])\n\n    return this\n  }\n\n  expectOutputs(outputs: ExpectedOutputItems) {\n    this.steps.push([expectOutputs, [outputs]])\n\n    return this\n  }\n\n  protected makeDiagram(): Diagram {\n    // To make testing easier,replacing the dynamic id with a fixed value of 1\n    const nodeId = `${this.computer.computerType}.1`\n    // Create a new Node from the computer + params (TODO: this is a general need)\n    const node: Node = {\n      id: nodeId,\n      type: this.computer.computerType,\n      inputs: (this.computer.inputs || []).map(input => ({\n        id: `${nodeId}.${input.name}`,\n        name: input.name,\n        schema: input.schema,\n      })),\n      outputs: (this.computer.outputs || []).map(output => ({\n        id: `${nodeId}.${output.name}`,\n        name: output.name,\n        schema: output.schema,\n      })),\n      params: [],\n    }\n\n    // Create dangling links to the inputs\n    const inputLinks = node.inputs.map(inputPort => ({\n      id: `dangling-link-to-port-${inputPort.id}`,\n      sourcePortId: 'dangling-source-port-id',\n      targetPortId: `${nodeId}.${inputPort.name}`,\n    }))\n\n    // Create dangling links to the outputs\n    const outputLinks = node.outputs.map(outputPort => ({\n      id: `dangling-link-from-port-${outputPort.id}`,\n      sourcePortId: `${nodeId}.${outputPort.name}`,\n      targetPortId: 'dangling-target-port-id',\n    }))\n\n    return new Diagram({\n      nodes: [node],\n      links: [\n        ...inputLinks,\n        ...outputLinks,\n      ],\n    })\n  }\n\n  protected makeInputDevice() {\n    const diagramClone = this.diagram!.clone()\n    const executableDiagram = createExecutableDiagram(\n      diagramClone,\n      {},\n    )\n\n    return new InputDevice(\n      {\n        ...this.node!,\n        params: this.makeParams(),\n      },\n      executableDiagram,\n      this.memory!,\n    )\n  }\n\n  protected makeOutputDevice() {\n    let map: PortLinkMap = {}\n\n    for(const output of this.node!.outputs) {\n      const connectedLinkIds = this.diagram!\n        .linksAtOutputPortId(output.id)\n        .map(link => link.id)\n\n      map[output.name] = connectedLinkIds\n    }\n\n    return new OutputDevice(map, this.memory!, this.node!)\n  }\n\n  protected makeParams(): Param[] {\n    const params = this.computer.params || []\n\n    const mergedParams = params.map(param => {\n      const explicitParam = this.explicitParams.find(p => p.name === param.name)\n      if(explicitParam) {\n        return merge(param, explicitParam) as Param\n      }\n\n      const hasExplicitValue = this.explicitParamValues.hasOwnProperty(param.name)\n      if(hasExplicitValue) {\n        const mergedParam = { ...param };\n        mergedParam.input = param.type === 'StringableParam' ?  {\n          ...param.input,\n          rawValue: this.explicitParamValues[param.name],\n        } : this.explicitParamValues[param.name];\n\n        return mergedParam;\n      }\n\n      return param;\n    })\n\n    return mergedParams;\n  }\n\n  protected makeExecutionMemory() {\n    // Maps\n    const nodeStatuses = new Map<NodeId, NodeStatus>();\n    const linkItems = new Map<LinkId, ItemValue[]>();\n    const linkCounts = new Map<LinkId, number>();\n    const nodeRunnerContexts = new Map<NodeId, NodeRunnerContext>();\n\n    // The memory object\n    const memory = new ExecutionMemory({\n      nodeStatuses,\n      nodeRunnerContexts,\n      linkItems,\n      linkCounts,\n      // TODO inputDevice\n    })\n\n    // Configure memory initial state\n    for(const link of this.diagram!.links) {\n      // Set all links to be empty\n      linkItems.set(link.id, [])\n      linkCounts.set(link.id, 0)\n    }\n\n    for(const node of this.diagram!.nodes) {\n      // Set all nodes to available\n      nodeStatuses.set(node.id, 'AVAILABLE')\n    }\n\n    return memory\n  }\n}\n"
  },
  {
    "path": "packages/core/src/support/computerTester/TestStep.ts",
    "content": "import { ComputerTester } from './ComputerTester'\n\nexport type TestStep = {\n  handle(computerTester: ComputerTester, ...args: any[]): Promise<void>\n}"
  },
  {
    "path": "packages/core/src/support/computerTester/testSteps/doRun.ts",
    "content": "import { expect } from 'vitest';\nimport { ComputerTester } from '../ComputerTester';\nimport { TestStep } from '../TestStep';\n\nexport const doRun: TestStep = {\n  async handle(tester: ComputerTester) {\n    try {\n      await tester.runner!.next()\n\n      if(tester.expectedErrorMessage !== undefined) throw new Error(\n        'Expected an error, but none was thrown',\n      );\n    } catch(error: any) {\n      if(tester.expectedErrorMessage === undefined) throw error;\n\n      expect(error.message).toBe(tester.expectedErrorMessage);\n    }\n  },\n}"
  },
  {
    "path": "packages/core/src/support/computerTester/testSteps/expectDone.ts",
    "content": "import { expect } from 'vitest';\nimport { ComputerTester } from '../ComputerTester';\nimport { TestStep } from '../TestStep';\n\nexport const expectDone: TestStep = {\n  async handle(tester: ComputerTester) {\n    const final = await tester.runner!.next()\n\n    expect(final.done).toBe(true)\n  },\n}"
  },
  {
    "path": "packages/core/src/support/computerTester/testSteps/expectError.ts",
    "content": "import { ComputerTester } from '../ComputerTester';\nimport { TestStep } from '../TestStep';\n\nexport const expectError: TestStep = {\n  async handle(tester: ComputerTester, errorMessage: string) {\n    tester.expectedErrorMessage = errorMessage;\n  },\n}"
  },
  {
    "path": "packages/core/src/support/computerTester/testSteps/expectHooks.ts",
    "content": "import { expect } from 'vitest';\nimport { ComputerTester } from '../ComputerTester';\nimport { TestStep } from '../TestStep';\nimport { Hook } from '../../../types/Hook';\n\nexport const expectHooks: TestStep = {\n  async handle(tester: ComputerTester, expectedHooks: Hook[]) {\n    for(const hook of expectedHooks) {\n      expect(tester.hooksDevice.register).toHaveBeenCalledWith(hook)\n    }\n  },\n}"
  },
  {
    "path": "packages/core/src/support/computerTester/testSteps/expectOutput.ts",
    "content": "import { expect } from 'vitest';\nimport { ItemValue } from '../../../types/ItemValue';\nimport { ComputerTester } from '../ComputerTester';\nimport { TestStep } from '../TestStep';\n\nexport const expectOutput: TestStep = {\n  async handle(tester: ComputerTester, expectedOutput: ItemValue[]) {\n    const actual = tester.outputDevice!.itemsOutputtedThrough('output');\n\n    expect(actual).toMatchObject(expectedOutput)\n  },\n}"
  },
  {
    "path": "packages/core/src/support/computerTester/testSteps/expectOutputs.ts",
    "content": "import { expect } from 'vitest';\nimport { ItemValue } from '../../../types/ItemValue';\nimport { ComputerTester } from '../ComputerTester';\nimport { TestStep } from '../TestStep';\n\nexport const expectOutputs: TestStep = {\n  async handle(tester: ComputerTester, expectedOutputs: { [key: string]: ItemValue[] }) {\n    const actual = Object.keys(expectedOutputs).reduce((acc, key) => {\n      acc[key] = tester.outputDevice!.itemsOutputtedThrough(key);\n      return acc\n    }, {} as { [key: string]: ItemValue });\n\n    expect(actual).toMatchObject(expectedOutputs)\n  },\n}"
  },
  {
    "path": "packages/core/src/support/computerTester/testSteps/getsInput.ts",
    "content": "import { ItemValue } from '../../../types/ItemValue';\nimport { ComputerTester } from '../ComputerTester';\nimport { TestStep } from '../TestStep';\n\nexport const getsInput: TestStep = {\n  async handle(tester: ComputerTester, itemsAtInputPort: ItemValue[]) {\n    const portName = 'input'\n    const port = tester.node!.inputs.find((p: any) => p.name === portName)\n    const link = tester.diagram!.linksAtInputPortId(port!.id)[0]\n\n    tester.inputDevice?.setItemsAt(link.id, itemsAtInputPort)\n  },\n}"
  },
  {
    "path": "packages/core/src/support/computerTester/testSteps/getsInputs.ts",
    "content": "import { ItemValue } from '../../../types/ItemValue';\nimport { ComputerTester } from '../ComputerTester';\nimport { TestStep } from '../TestStep';\n\nexport const getsInputs: TestStep = {\n  async handle(tester: ComputerTester, inputs: { [key: string]: ItemValue[] }) {\n    const portNames = Object.keys(inputs)\n\n    for(const portName of portNames) {\n      const port = tester.node!.inputs.find(p => p.name === portName)\n      const link = tester.diagram!.linksAtInputPortId(port!.id)[0]\n\n      tester.inputDevice!.setItemsAt(link.id, inputs[portName])\n    }\n  },\n}"
  },
  {
    "path": "packages/core/src/support/computerTester/testSteps/index.ts",
    "content": "export { expectError } from './expectError'\nexport { expectHooks } from './expectHooks'\nexport { expectOutput } from './expectOutput'\nexport { expectOutputs } from './expectOutputs'\nexport { doRun } from './doRun'\nexport { getsInput } from './getsInput'\nexport { getsInputs } from './getsInputs'"
  },
  {
    "path": "packages/core/src/support/diagramExecutionTester/DiagramExecutionTester.test.ts",
    "content": "import { it } from 'vitest'\nimport { Create } from '../../computers'\nimport { whenRunning } from './DiagramExecutionTester'\nimport { core } from '../../core'\n\nit('can test diagram executions like this', async () => {\n  const app = await core.boot()\n  const diagram = app.getDiagramBuilder()\n    .add('Create')\n    .get()\n\n  await whenRunning(diagram)\n    .expectSuccess()\n    .ok()\n})"
  },
  {
    "path": "packages/core/src/support/diagramExecutionTester/DiagramExecutionTester.ts",
    "content": "import { expect } from 'vitest';\nimport { Diagram } from '../../Diagram';\nimport { ExecutionUpdate } from '../../types/ExecutionUpdate';\nimport { ExecutorFactory } from '../../ExecutorFactory';\nimport { core } from '../../core';\n\nexport const whenRunning = (diagram: Diagram) => {\n  return new DiagramExecutionTester(diagram)\n}\n\nexport class DiagramExecutionTester {\n  shouldExpectSuccess: boolean = true\n  shouldExpectFailMessage: string | undefined\n\n  constructor(public diagram: Diagram) {}\n\n  async ok() {\n    await core.boot()\n    const executor = ExecutorFactory.create({\n      diagram: this.diagram,\n      registry: core.getRegistry(),\n    })\n\n    const execution = executor.execute()\n\n    const updates: ExecutionUpdate[] = []\n    let succeeded: boolean;\n    let errorMessage: string | undefined;\n\n    try {\n      // Run the execution\n      for await(const update of execution) {\n        updates.push(update)\n      }\n\n      // We came here, so the execution was successful\n      succeeded = true\n    } catch(error) {\n      // We came here, so the execution failed\n      succeeded = false\n      errorMessage = (error as Error).message\n    }\n\n    // Ensure the outcome is what the tester expected\n    expect(succeeded).toBe(this.shouldExpectSuccess);\n\n    // Ensure specific error message\n    if(this.shouldExpectFailMessage) {\n      expect(errorMessage).toBe(this.shouldExpectFailMessage)\n    }\n  }\n\n  expectFail(message?: string) {\n    this.shouldExpectSuccess = false\n    this.shouldExpectFailMessage = message\n\n    return this\n  }\n\n  expectSuccess() {\n    this.shouldExpectSuccess = true\n\n    return this\n  }\n}\n"
  },
  {
    "path": "packages/core/src/syncPortSchemas.test.ts",
    "content": "import { Diagram } from './Diagram'\nimport { syncPortSchemas } from './syncPortSchemas'\nimport { Node } from './types/Node'\n\nit('forwards schema to linked ports', () => {\n  const outputPort = {\n    id: 'node1.output',\n    name: 'output',\n    schema: {\n      someProperty: 'someValue',\n    },\n  }\n\n  const node1: Node = {\n    id: 'node1',\n    type: 'MyNode',\n    inputs: [],\n    outputs: [outputPort],\n    params: [],\n  }\n\n  const inputPort = {\n    id: 'node2.input',\n    name: 'input',\n    schema: {},\n  }\n\n  const node2: Node = {\n    id: 'node2',\n    type: 'MyNode',\n    inputs: [inputPort],\n    outputs: [],\n    params: [],\n  }\n\n  const link = {\n    id: 'link1',\n    sourcePortId: 'node1.output',\n    targetPortId: 'node2.input',\n  }\n\n  const diagram = new Diagram({\n    nodes: [node1, node2],\n    links: [link],\n  })\n\n  syncPortSchemas(link, diagram)\n\n  expect(inputPort.schema).toMatchObject({\n    someProperty: 'someValue',\n  })\n})"
  },
  {
    "path": "packages/core/src/syncPortSchemas.ts",
    "content": "import { Diagram } from './Diagram';\nimport { Link } from './types/Link';\n\nexport const syncPortSchemas = (link: Link, diagram: Diagram) => {\n  const sourceNode = diagram.nodeWithOutputPortId(link.sourcePortId)\n  const sourcePort = sourceNode?.outputs.find(output => output.id === link.sourcePortId)\n  if(!sourcePort) return\n\n  const links = diagram.linksAtOutputPortId(link.sourcePortId)\n\n  links.forEach(link => {\n    const targetNode = diagram.nodeWithInputPortId(link.targetPortId)\n    const incomingSchema = sourcePort.schema\n\n    const inputPort = targetNode?.inputs.find(input => input.id === link.targetPortId)\n    if(!inputPort) return\n\n    inputPort.schema = incomingSchema ?? {}\n  })\n}"
  },
  {
    "path": "packages/core/src/testTools.ts",
    "content": "export { when } from './support/computerTester/ComputerTester'"
  },
  {
    "path": "packages/core/src/types/Computer.ts",
    "content": "export type NextResult = undefined\nexport type ReturnResult = void | never\nexport type NextArgument = void\n\nimport { HooksDevice } from './HooksDevice'\nimport { Param } from '../Param'\nimport { ParamsDevice } from './ParamsDevice'\nimport { AbstractPort, Port } from './Port'\nimport { Node } from './Node'\nimport { InputDevice } from '../InputDevice'\nimport { OutputDevice } from '../OutputDevice'\nimport { z } from 'zod';\n\nexport interface Computer {\n  type: 'Computer',\n  computerType: ComputerType\n  label: string\n  category?: string\n  inputs: AbstractPort[]\n  outputs: AbstractPort[]\n  params: Param[]\n  run: (args: RunArgs) => AsyncGenerator<NextResult, ReturnResult, NextArgument>\n  canRun?: (options: {\n    isAvailable: () => boolean,\n    input: InputDevice,\n    params: Record<string, Param>\n  }) => boolean\n}\n\nexport type RunArgs = {\n  input: InputDevice,\n  output: OutputDevice,\n  params: ParamsDevice,\n  hooks: HooksDevice,\n  node: Node,\n  onComplete?: (fn: Function) => void\n}\nexport const ComputerTypeSchema = z.string();\nexport type ComputerType = z.infer<typeof ComputerTypeSchema>;"
  },
  {
    "path": "packages/core/src/types/Errors.ts",
    "content": "import { Node } from './Node';\n\nexport class NodeExecutionError extends Error {\n  constructor(message: string, public node: Pick<Node, 'id' | 'label' | 'type'>) {\n    super(`Error in node ${node.label || node.id} (${node.type}): ${message}`);\n    this.name = 'NodeExecutionError';\n  }\n}\n"
  },
  {
    "path": "packages/core/src/types/ExecutionFailure.ts",
    "content": "export type ExecutionFailure = {\n  type: 'ExecutionFailure'\n  message: string\n  msgId?: string;\n}\n"
  },
  {
    "path": "packages/core/src/types/ExecutionObserver.ts",
    "content": "import { RequestObserverType } from './InputObserveConfig';\nimport { NotifyObserversCallback, NotifyObserversCallbackSchema } from './NotifyObserversCallback';\nimport { LinkId } from './Link';\nimport { NodeId } from './Node';\nimport { z } from 'zod';\n\nexport const LinkCountInfoSchema = z.object({\n  count: z.number({\n    required_error: 'count is required',\n    invalid_type_error: 'count must be a number',\n  }),\n  linkId: z.string({\n    required_error: 'linkId is required',\n    invalid_type_error: 'linkId must be a string',\n  }) as z.ZodType<LinkId>,\n})\n\nexport type LinkCountInfo = z.input<typeof LinkCountInfoSchema>;\n\nexport const NodesStatusInfoSchema = z.object({\n  nodeId: z.string({\n    required_error: 'nodeId is required',\n    invalid_type_error: 'nodeId must be a string',\n  }),\n  status: z.enum(['BUSY', 'COMPLETE'], {\n    required_error: 'status is required',\n    invalid_type_error: 'status must be either BUSY or COMPLETE',\n  }),\n})\n\nexport type NodesStatusInfo = z.input<typeof NodesStatusInfoSchema>;\n\nexport const ObserveLinkItemsSchema = z.object({\n  linkIds: z.array(z.string({\n    required_error: 'linkIds is required',\n    invalid_type_error: 'linkIds must be an array',\n  }) as z.ZodType<LinkId>),\n  type: z.literal(RequestObserverType.observeLinkItems, {\n    required_error: 'type is required',\n    invalid_type_error: 'type must be observeLinkItems',\n  }),\n  observerId: z.string({\n    required_error: 'observerId is required',\n    invalid_type_error: 'observerId must be a string',\n  }),\n  direction: z.enum(['pull', 'push'], {\n    invalid_type_error: 'direction must be either pull or push',\n  }).optional(),\n  throttleMs: z.number({\n    invalid_type_error: 'throttleMs must be a number',\n  }).optional(),\n  msgId: z.string({\n    invalid_type_error: 'msgId must be a string',\n  }).optional(),\n  onReceive: NotifyObserversCallbackSchema as z.ZodType<NotifyObserversCallback>,\n})\n\nexport type ObserveLinkItems = z.input<typeof ObserveLinkItemsSchema>;\n\nexport const ObserveLinkCountsSchema = z.object({\n  type: z.literal(RequestObserverType.observeLinkCounts, {\n    required_error: 'type is required',\n    invalid_type_error: 'type must be observeLinkCounts',\n  }),\n  linkIds: z.array(z.string({\n    required_error: 'linkIds is required',\n    invalid_type_error: 'linkIds must be a string',\n  }) as z.ZodType<LinkId>),\n  observerId: z.string({\n    required_error: 'observerId is required',\n    invalid_type_error: 'observerId must be a string',\n  }),\n  throttleMs: z.number({\n    invalid_type_error: 'throttleMs must be a number',\n  }).optional(),\n  msgId: z.string({\n    invalid_type_error: 'msgId must be a string',\n  }).optional(),\n  onReceive: z.function()\n    .args(z.object({\n      links: z.array(LinkCountInfoSchema),\n    }))\n    .returns(z.void()),\n});\n\nexport type ObserveLinkCounts = z.input<typeof ObserveLinkCountsSchema>;\n\nexport const ObserveNodeStatusSchema = z.object({\n  type: z.literal(RequestObserverType.observeNodeStatus, {\n    required_error: 'type is required',\n    invalid_type_error: 'type must be observeNodeStatus',\n  }),\n  nodeIds: z.array(z.string({\n    required_error: 'nodeIds is required',\n    invalid_type_error: 'nodeIds must be a string',\n  }).transform(nodeId => nodeId as NodeId)),\n  observerId: z.string({\n    required_error: 'observerId is required',\n    invalid_type_error: 'observerId must be a string',\n  }),\n  throttleMs: z.number({\n    invalid_type_error: 'throttleMs must be a number',\n  }).optional(),\n  msgId: z.string({\n    invalid_type_error: 'msgId must be a string',\n  }).optional(),\n  onReceive: z.function()\n    .args(z.object({\n      nodes: z.array(NodesStatusInfoSchema),\n    }))\n    .returns(z.void()),\n});\n\nexport type ObserveNodeStatus = z.input<typeof ObserveNodeStatusSchema>;\n\nexport const ObserveLinkUpdateSchema = z.object({\n  type: z.literal(RequestObserverType.observeLinkUpdate, {\n    required_error: 'type is required',\n    invalid_type_error: 'type must be observeLinkUpdate',\n  }),\n  linkIds: z.array(z.string({\n    required_error: 'linkIds is required',\n    invalid_type_error: 'linkIds must be a string',\n  }) as z.ZodType<LinkId>),\n  observerId: z.string({\n    required_error: 'observerId is required',\n    invalid_type_error: 'observerId must be a string',\n  }),\n  throttleMs: z.number({\n    invalid_type_error: 'throttleMs must be a number',\n  }).optional(),\n  msgId: z.string({\n    invalid_type_error: 'msgId must be a string',\n  }).optional(),\n  limit: z.number({\n    invalid_type_error: 'limit must be a number',\n  }).optional(),\n  offset: z.number({\n    invalid_type_error: 'offset must be a number',\n  }).optional(),\n  onReceive: z.function()\n    .args(z.array(\n      z.string().transform(linkId => linkId as LinkId).optional(),\n    ))\n    .returns(z.void()),\n});\n\nexport type ObserveLinkUpdate = z.input<typeof ObserveLinkUpdateSchema>;\n\nexport const CancelObservationSchema = z.object({\n  type: z.literal(RequestObserverType.cancelObservation, {\n    required_error: 'type is required',\n    invalid_type_error: 'type must be cancelObservation',\n  }),\n  observerId: z.string({\n    required_error: 'observerId is required',\n    invalid_type_error: 'observerId must be a string',\n  }),\n  msgId: z.string({\n    invalid_type_error: 'msgId must be a string',\n  }).optional(),\n});\n\nexport type CancelObservation = z.input<typeof CancelObservationSchema>;\n\nexport const ExecutionObserverSchema = z.discriminatedUnion('type', [\n  ObserveLinkItemsSchema,\n  ObserveLinkCountsSchema,\n  ObserveLinkUpdateSchema,\n  ObserveNodeStatusSchema,\n  CancelObservationSchema,\n]);\n\nexport type ExecutionObserver = z.input<typeof ExecutionObserverSchema>;\n\nexport const AbortExecutionSchema = z.object({\n  executionId: z.string({\n    required_error: 'executionId is required',\n    invalid_type_error: 'executionId must be a string',\n  }),\n});\n\nexport type AbortExecution = z.input<typeof AbortExecutionSchema>;"
  },
  {
    "path": "packages/core/src/types/ExecutionUpdate.ts",
    "content": "export type ExecutionUpdate = {\n  type: 'ExecutionUpdate'\n  counts: Record<string, number>\n  hooks: any[];\n  state: 'running' | 'complete'\n}"
  },
  {
    "path": "packages/core/src/types/GetDataFromStorageParams.ts",
    "content": "import { ItemValue } from './ItemValue';\nimport { LinkId } from './Link';\nimport { z } from 'zod';\n\nexport type LinkItems = Record<LinkId, ItemValue[]>\n\nexport const LinkItemsSchema = z.record(z.string() as z.ZodType<LinkId>, z.array(z.object({}) as z.ZodType<ItemValue>));\n\n/**\n * @schema GetDataFromStorageParams\n */\nexport const GetDataFromStorageParamsSchema = z.object({\n  type: z.literal('getDataFromStorage', {\n    required_error: 'type is required',\n    invalid_type_error: 'type must be getDataFromStorage',\n  }),\n  linkId: z.string({\n    required_error: 'linkId is required',\n    invalid_type_error: 'linkId must be a string',\n  }) as z.ZodType<LinkId>,\n  msgId: z.string({\n    invalid_type_error: 'msgId must be a string',\n  }).optional(),\n  offset: z.number({\n    invalid_type_error: 'offset must be a number',\n  }).optional(),\n  limit: z.number({\n    invalid_type_error: 'limit must be a number',\n  }).optional(),\n});\n\nexport type GetDataFromStorageParams = z.input<typeof GetDataFromStorageParamsSchema>;\n\nexport const GetDataFromStorageResponseSchema = GetDataFromStorageParamsSchema.extend({\n  data: LinkItemsSchema,\n});\n\nexport type GetDataFromStorageResponse = z.input<typeof GetDataFromStorageResponseSchema>;"
  },
  {
    "path": "packages/core/src/types/Hook.ts",
    "content": "export type Hook = {\n  type: string,\n  args: any[],\n  [key: string]: any,\n}"
  },
  {
    "path": "packages/core/src/types/HooksDevice.ts",
    "content": "import { Hook } from './Hook'\n\nexport type HooksDevice = {\n  register: (hook: Hook) => void\n}"
  },
  {
    "path": "packages/core/src/types/InputObserveConfig.ts",
    "content": "import { LinkId } from './Link';\nimport { NodeId } from './Node';\nimport { PortId } from './PortId';\n\nexport enum RequestObserverType {\n  observeLinkCounts = 'observeLinkCounts',\n  observeLinkItems = 'observeLinkItems',\n  observeLinkUpdate = 'observeLinkUpdate',\n  observeNodeStatus = 'observeNodeStatus',\n  cancelObservation = 'cancelObservation'\n}\nexport type InputObserveConfig = { nodeId: NodeId, portId?: PortId, type: RequestObserverType }\n| { linkId: LinkId, type: RequestObserverType };\n"
  },
  {
    "path": "packages/core/src/types/InputObserver.ts",
    "content": "import { InputObserveConfig } from './InputObserveConfig';\n\nexport type InputObserver = InputObserveConfig;\n"
  },
  {
    "path": "packages/core/src/types/ItemValue.ts",
    "content": "export type ItemValue = Record<string, any>"
  },
  {
    "path": "packages/core/src/types/Link.ts",
    "content": "import { PortId } from './PortId';\nimport type { CSSProperties, ReactNode } from 'react';\n\nexport type LinkId = string\nexport type LinkCount = number\n\nexport type Link = {\n  id: LinkId,\n  sourcePortId: PortId,\n  targetPortId: PortId,\n  label?: string | ReactNode;\n  labelBgStyle?: CSSProperties;\n}\n"
  },
  {
    "path": "packages/core/src/types/LinkItemsUpdate.ts",
    "content": "import { z } from 'zod';\nimport { RequestObserverType } from './InputObserveConfig';\nimport { ItemValue } from './ItemValue';\n\nexport const LinkItemsUpdateSchema = z.object({\n  type: z.literal(RequestObserverType.observeLinkItems, {\n    required_error: 'type is required',\n    invalid_type_error: 'type must be observeLinkItems',\n  }),\n  linkId: z.string({\n    required_error: 'linkId is required',\n    invalid_type_error: 'linkId must be a string',\n  }) as z.ZodType<string>,\n  items: z.array(z.object({}) as z.ZodType<ItemValue>),\n});\n\nexport type LinkItemsUpdate = z.input<typeof LinkItemsUpdateSchema>;"
  },
  {
    "path": "packages/core/src/types/LinksCountUpdate.ts",
    "content": "import { RequestObserverType } from './InputObserveConfig';\nimport { LinkId } from './Link';\n\nexport type LinksCountUpdate = {\n  type: RequestObserverType.observeLinkCounts;\n  linkId: LinkId;\n  count: number;\n}"
  },
  {
    "path": "packages/core/src/types/Node.ts",
    "content": "import { Param } from '../Param'\nimport { Port } from './Port'\n\nexport type NodeId = string\n\nexport type Node = {\n  id: NodeId\n  type: string\n  label?: string\n  inputs: Port[]\n  outputs: Port[]\n  params: Param[]\n  position?: {\n    x: number,\n    y: number,\n  }\n}"
  },
  {
    "path": "packages/core/src/types/NodeDescription.ts",
    "content": "import { z } from 'zod';\nimport { Param, ParamSchema } from '../Param';\nimport { AbstractPort, AbstractPortSchema } from './Port';\nimport { ComputerType, ComputerTypeSchema } from '../types/Computer';\n\nexport const NodeDescriptionSchema = z.object({\n  type: z.literal('NodeDescription'),\n  computerType: ComputerTypeSchema,\n  label: z.string().optional(),\n  category: z.string().optional(),\n  inputs: z.array(AbstractPortSchema),\n  outputs: z.array(AbstractPortSchema),\n  params: z.array(ParamSchema),\n});\nexport type NodeDescription = z.infer<typeof NodeDescriptionSchema>;\n\n/**\n * @schema NodeDescriptionResponse\n */\nexport const NodeDescriptionResponseSchema = z.object({\n  availableNodes: z.array(z.object({}) as unknown as z.ZodType<NodeDescription>, {\n    required_error: 'availableNodes is required',\n    invalid_type_error: 'availableNodes must be an array',\n  }),\n  msgId: z.string({\n    required_error: 'msgId is required',\n    invalid_type_error: 'msgId must be a string',\n  }),\n  path: z.string({\n    invalid_type_error: 'path must be a string',\n  }).optional(),\n  status: z.literal('server-post', {\n    invalid_type_error: 'status must be server-post',\n  }).optional(),\n  type: z.literal('getNodeDescriptions', {\n    required_error: 'type is required',\n    invalid_type_error: 'type must be getNodeDescriptions',\n  }),\n});\n\nexport type NodeDescriptionResponse = z.input<typeof NodeDescriptionResponseSchema>;\n\n/**\n * @schema NodeDescriptionRequest\n */\nexport const NodeDescriptionRequestSchema = z.object({\n  type: z.literal('getNodeDescriptions', {\n    required_error: 'type is required',\n    invalid_type_error: 'type must be getNodeDescriptions',\n  }),\n  path: z.string({\n    invalid_type_error: 'path must be a string',\n  }).optional(),\n  msgId: z.string({\n    invalid_type_error: 'msgId must be a string',\n  }).optional(),\n});\n\nexport type NodeDescriptionRequest = z.input<typeof NodeDescriptionRequestSchema>;"
  },
  {
    "path": "packages/core/src/types/NodeStatuses.ts",
    "content": "export enum NodeStatuses {\n  Running = 'RUNNING',\n  Complete = 'COMPLETE',\n  Failed = 'FAILED'\n}"
  },
  {
    "path": "packages/core/src/types/NotifyObserversCallback.ts",
    "content": "import { InputObserver } from './InputObserver';\nimport { LinkItemsUpdate, LinkItemsUpdateSchema } from './LinkItemsUpdate';\nimport { z } from 'zod';\n\nexport const NotifyObserversCallbackSchema = z.function()\n  .args(\n    z.array(LinkItemsUpdateSchema) as z.ZodType<LinkItemsUpdate[]>,\n    z.optional(z.object({}) as unknown as z.ZodType<InputObserver>),\n  ).returns(z.void());\n\nexport type NotifyObserversCallback = (\n  items: LinkItemsUpdate[],\n  inputObserver?: InputObserver\n) => void;"
  },
  {
    "path": "packages/core/src/types/ObjectLike.ts",
    "content": "export type ObjectLike = {\n  [key: string]: any;\n};"
  },
  {
    "path": "packages/core/src/types/ObserverStorage.ts",
    "content": "import { ItemValue } from './ItemValue';\nimport { LinkId } from './Link';\nimport { NodeId } from './Node';\nimport { NodeStatus } from '../Executor';\n\n/**\n * Type for diagram identifiers used in storage\n */\nexport type DiagramId = string;\n\n/**\n * Interface for storage implementations used by ObserverController\n */\nexport type GetLinkItemsParams = {\n  linkId: LinkId;\n  offset: number;\n  limit: number;\n};\n\nexport interface ObserverStorage {\n  // Link Counts\n  getLinkCount(linkId: LinkId): Promise<number | undefined>;\n  setLinkCount(linkId: LinkId, count: number): Promise<void>;\n\n  // Link Items\n  getLinkItems(params: GetLinkItemsParams): Promise<ItemValue[] | undefined>;\n  setLinkItems(linkId: LinkId, items: ItemValue[]): Promise<void>;\n  appendLinkItems(linkId: LinkId, items: ItemValue[]): Promise<void>;\n\n  // Node Status\n  getNodeStatus(nodeId: NodeId): Promise<NodeStatus | undefined>;\n  setNodeStatus(nodeId: NodeId, status: NodeStatus): Promise<void>;\n\n  // create optional init method\n  init?(): Promise<void>;\n  close(): Promise<void>;\n}\n"
  },
  {
    "path": "packages/core/src/types/ParamsDevice.ts",
    "content": "import { ParamId, StaticEvaluatedParamValue } from '../Param';\n\nexport type ParamsDevice = {\n  [key: ParamId]: StaticEvaluatedParamValue,\n};\n"
  },
  {
    "path": "packages/core/src/types/ParamsValueEvaluator.ts",
    "content": "import { Param } from '../Param';\nimport { ItemValue } from './ItemValue';\n\nexport interface ParamsValueEvaluator<TParams extends Param> {\n  canEvaluate(param: Param): param is TParams;\n  evaluate(\n    itemValue: ItemValue,\n    param: TParams,\n    globalParams: Param[],\n  ): any;\n}\n"
  },
  {
    "path": "packages/core/src/types/Port.ts",
    "content": "import { z } from 'zod';\n\nexport const PortNameSchema = z.string();\nexport type PortName = z.infer<typeof PortNameSchema>;\n\nexport const AbstractPortSchema = z.object({\n  name: PortNameSchema,\n  schema: z.record(z.any()),\n});\nexport type AbstractPort = z.infer<typeof AbstractPortSchema>;\n\nexport const PortSchema = z.object({\n  id: z.string(),\n  name: PortNameSchema,\n  schema: z.record(z.any()),\n});\nexport type Port = z.infer<typeof PortSchema>;"
  },
  {
    "path": "packages/core/src/types/PortId.ts",
    "content": "export type PortId = string;"
  },
  {
    "path": "packages/core/src/types/PortLinkMap.ts",
    "content": "import { LinkId } from '../types/Link';\nimport { PortName } from './Port';\n\nexport type PortLinkMap = Record<PortName, LinkId[]>"
  },
  {
    "path": "packages/core/src/types/ReportCallback.ts",
    "content": "import { InputObserver } from './InputObserver';\nimport type { ItemValue } from './ItemValue';\n\nexport type ReportCallback = (params: {\n  items: ItemValue[],\n  inputObserver?: InputObserver,\n  inputObservers?: InputObserver[]\n}) => void;\n"
  },
  {
    "path": "packages/core/src/types/SerializedDiagram.ts",
    "content": "import { Link } from './Link';\nimport { Node } from './Node';\nimport { Param } from '../Param';\n\nexport type SerializedDiagram = {\n  type: 'Diagram',\n  nodes: Node[],\n  links: Link[],\n  params: Param[],\n  viewport: { x: number, y: number, zoom: number },\n}"
  },
  {
    "path": "packages/core/src/types/ServiceProvider.ts",
    "content": "import { Application } from '../Application';\n\nexport type ServiceProvider = {\n  boot: (app: Application) => Promise<void>;\n}"
  },
  {
    "path": "packages/core/src/utils/anonymize.ts",
    "content": "export const anonymize = (data: any, keyCounter: { count: number } = { count: 1 }): any => {\n  if (typeof data === 'string') {\n    return data.replace(/./g, 'x');\n  } else if (typeof data === 'number') {\n    return data; // Preserve numbers\n  } else if (Array.isArray(data)) {\n    return data.map((item) => anonymize(item, keyCounter));\n  } else if (typeof data === 'object' && data !== null) {\n    return Object.fromEntries(\n      Object.entries(data).map(([_, value]) => [\n        `key${keyCounter.count++}`,\n        anonymize(value, keyCounter),\n      ]),\n    );\n  }\n  return data; // Return as is for other types (boolean, null, undefined, etc.)\n};\n"
  },
  {
    "path": "packages/core/src/utils/arrayToRecord.ts",
    "content": "export const arrayToRecord = <T extends Record<K, any>, K extends keyof any>(array: T[], key: K): Record<K, T> => {\n  const record: Record<K, T> = {} as Record<K, T>;\n  array.forEach((element: T) => {\n    record[element[key]] = element;\n  });\n  return record;\n};"
  },
  {
    "path": "packages/core/src/utils/asArray.test.ts",
    "content": "import { asArray } from './asArray';\n\nit('returns the input if it is an array', () => {\n  expect(asArray([1, 2, 3])).toEqual([1, 2, 3]);\n})\n\nit('returns an array with the input as the only element if it is not an array', () => {\n  expect(asArray(1)).toEqual([1]);\n  expect(asArray('hello')).toEqual(['hello']);\n  expect(asArray({ a: 1 })).toEqual([{ a: 1 }]);\n})"
  },
  {
    "path": "packages/core/src/utils/asArray.ts",
    "content": "export const asArray = <T>(value: T | T[]): T[] => {\n  if (Array.isArray(value)) {\n    return value;\n  }\n\n  return [value];\n}"
  },
  {
    "path": "packages/core/src/utils/batchLimit.ts",
    "content": "// After testing, we've set the maximum testing batch limit in the `input.pull()` parameter to 20,000 for enhanced safety.\nexport const BatchLimit = 20000;"
  },
  {
    "path": "packages/core/src/utils/buildNestedObject.test.ts",
    "content": "import { buildNestedObject } from './buildNestedObject';\n\ndescribe('buildNestedObject', () => {\n  it('creates a nested object from a dot-separated path', () => {\n    expect(buildNestedObject('a.b.c', 42)).toEqual({ a: { b: { c: 42 } } });\n    expect(buildNestedObject('x.y', 'test')).toEqual({ x: { y: 'test' } });\n  });\n\n  it('creates a single-level object if path has no dot', () => {\n    expect(buildNestedObject('foo', 123)).toEqual({ foo: 123 });\n  });\n\n  it('returns the data as-is if path is empty', () => {\n    expect(buildNestedObject('', 99)).toEqual(99);\n  });\n\n  it('handles non-string data', () => {\n    const arr = [1, 2, 3];\n    expect(buildNestedObject('arr', arr)).toEqual({ arr });\n    const obj = { x: 1 };\n    expect(buildNestedObject('deep.value', obj)).toEqual({ deep: { value: obj } });\n  });\n});\n"
  },
  {
    "path": "packages/core/src/utils/buildNestedObject.ts",
    "content": "function deepClone<T>(obj: T): T {\n  return obj === undefined || obj === null ? obj : JSON.parse(JSON.stringify(obj));\n}\n\nexport const buildNestedObject = (path: string, data: any): Record<string, any> => {\n  if (!path) return deepClone(data);\n\n  // Defensive: prevent circular reference by ensuring data is not included in the result chain\n  // (Not strictly necessary with deepClone, but extra safe)\n  const clone = deepClone(data);\n  const keys = path.split('.').reverse();\n  let result: any = clone;\n\n  for (const key of keys) {\n    // If result is already an object containing key that refers to clone, break to prevent cycle\n    if (typeof result === 'object' && result !== null && result[key] === clone) {\n      throw new Error('Circular reference detected in buildNestedObject');\n    }\n    result = { [key]: result };\n  }\n  return result;\n}"
  },
  {
    "path": "packages/core/src/utils/createDataStoryId.ts",
    "content": "import { customAlphabet } from 'nanoid';\n\n/**\n * 129M IDs needed, in order to have a 1% probability of at least one collision.\n * https://zelark.github.io/nano-id-cc/\n */\nconst nanoid = customAlphabet('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', 10)\nexport const createDataStoryId = (): string => nanoid();\n"
  },
  {
    "path": "packages/core/src/utils/debounce.ts",
    "content": "export function debounce<T extends (...args: any[]) => Promise<void>>(func: T, wait: number) {\n  let timeout: NodeJS.Timeout;\n\n  return (...args: Parameters<T>): Promise<void> => {\n    return new Promise((resolve) => {\n      clearTimeout(timeout);\n      timeout = setTimeout(async () => {\n        await func(...args);  // Call the original function\n        resolve();  // Resolve the promise\n      }, wait);\n    });\n  };\n}\n"
  },
  {
    "path": "packages/core/src/utils/evalMath.ts",
    "content": ""
  },
  {
    "path": "packages/core/src/utils/flattenObjectOneLevel.test.ts",
    "content": "import { flattenObjectOneLevel } from './flattenObjectOneLevel'\n\nit('removes first layer of keys', () => {\n  const input = {\n    a: {\n      a1: 1,\n    },\n    b: {\n      b1: 2,\n    },\n  }\n\n  const output = flattenObjectOneLevel(input)\n\n  expect(output).toEqual({\n    a1: 1,\n    b1: 2,\n  })\n})\n\nit('works on empty object', () => {\n  const input = {}\n\n  const output = flattenObjectOneLevel(input)\n\n  expect(output).toEqual({})\n})"
  },
  {
    "path": "packages/core/src/utils/flattenObjectOneLevel.ts",
    "content": "export function flattenObjectOneLevel(obj: Record<string, any>) {\n  const flattened: Record<string, any> = {}\n  for (const key in obj) {\n    if (typeof obj[key] === 'object' && obj[key] !== null) {\n      for (const subKey in obj[key]) {\n        flattened[subKey] = obj[key][subKey]\n      }\n    } else {\n      flattened[key] = obj[key]\n    }\n  }\n  return flattened\n}"
  },
  {
    "path": "packages/core/src/utils/get.test.ts",
    "content": "import { get } from './get'\n\nit('can return a value from a string', () => {\n  const value = 'hey'\n\n  expect(get(value)).toBe(value)\n  expect(get(value, '')).toBe(value)\n  expect(get(value, 'nonExistingKey')).toBe(undefined)\n})\n\nit('can return a value from a number', () => {\n  const value = 1337\n\n  expect(get(value)).toBe(value)\n  expect(get(value, '')).toBe(value)\n  expect(get(value, 'bad')).toBe(undefined)\n})\n\nit('can return a value from a bool', () => {\n  const value = true\n\n  expect(get(value)).toBe(value)\n  expect(get(value, '')).toBe(value)\n  expect(get(value, 'bad')).toBe(undefined)\n})\n\nit('can return a value from an object', () => {\n  const object = {\n    a: 1,\n    b: '2',\n    c: true,\n  }\n\n  expect(get(object)).toBe(object)\n  expect(get(object, '')).toBe(object)\n  expect(get(object, 'a')).toBe(object.a)\n  expect(get(object, 'b')).toBe(object.b)\n  expect(get(object, 'c')).toBe(object.c)\n  expect(get(object, 'bad')).toBe(undefined)\n})\n\nit('can return nested values from an object', () => {\n  const object = {\n    a: {\n      b: {\n        c: 1,\n      },\n    },\n  }\n\n  expect(get(object, 'a.b.c')).toBe(object.a.b.c)\n})\n\nit('returns undefined if nested key does not exist', () => {\n  const object = {\n    a: {\n      b: {\n        c: 1,\n      },\n    },\n  }\n\n  expect(get(object, 'bad.b.d')).toBe(undefined)\n  expect(get(object, 'a.bad.d')).toBe(undefined)\n  expect(get(object, 'a.b.bad')).toBe(undefined)\n})\n\nit('can return a value from an array', () => {\n  const array = [1, '2', true]\n\n  expect(get(array)).toBe(array)\n  expect(get(array, '')).toBe(array)\n  expect(get(array, '0')).toBe(array[0])\n  expect(get(array, '1')).toBe(array[1])\n  expect(get(array, '2')).toBe(array[2])\n  expect(get(array, 'bad')).toBe(undefined)\n})"
  },
  {
    "path": "packages/core/src/utils/get.ts",
    "content": "export function get(target: any, path?: string, delimiter = '.') {\n  if (!path) {\n    return target;\n  }\n  const pathParts = path.split(delimiter);\n  let result = target;\n\n  for (const pathPart of pathParts) {\n    if (result === null || result === undefined) {\n      return undefined;\n    }\n    // Check if pathPart is an integer\n    const index = parseInt(pathPart, 10);\n    if (!isNaN(index) && Array.isArray(result)) {\n      // If it's an integer and the current result is an array, use it as an index\n      result = result[index];\n    } else {\n      // Otherwise, use it as a key\n      result = result[pathPart];\n    }\n  }\n  return result;\n}"
  },
  {
    "path": "packages/core/src/utils/isFinished.test.ts",
    "content": "import { isFinished } from './isFinished';\n\nit('returns true when promise is resolved', async () => {\n  const fastPromise = Promise.resolve('fast');\n  const result = await isFinished(fastPromise);\n  expect(result).toBe(true);\n});\n\nit('returns true when promise is rejected', async () => {\n  const fastPromise = Promise.reject('error');\n  // We need to handle the rejection to prevent an unhandled promise rejection warning\n  fastPromise.catch(() => {});\n  const result = await isFinished(fastPromise);\n  expect(result).toBe(true);\n});\n\nit('returns undefined when promise is still pending', async () => {\n  const slowPromise = new Promise(resolve => setTimeout(resolve, 5));\n  const result = await isFinished(slowPromise);\n  expect(result).toBeUndefined();\n});"
  },
  {
    "path": "packages/core/src/utils/isFinished.ts",
    "content": "import { sleep } from './sleep';\n\nexport async function isFinished<T = any>(promise: Promise<T>) {\n  return await Promise.race([\n    sleep(0),\n    promise.then(() => true, () => true),\n  ]);\n}"
  },
  {
    "path": "packages/core/src/utils/isJson.ts",
    "content": "export const isJson = (str: string) => {\n  try {\n    JSON.parse(str);\n  } catch (e) {\n    return false;\n  }\n  return true;\n};\n\nexport const isJsonArray = (str: string) => {\n  try {\n    const result = JSON.parse(str);\n    if (!Array.isArray(result)) {\n      return false;\n    }\n\n    return true;\n  } catch (e) {\n    return false;\n  }\n};\n\nexport const isJsonObject = (str: string) => {\n  try {\n    const result = JSON.parse(str);\n    if (typeof result !== 'object') {\n      return false;\n    }\n\n    return true;\n  } catch (e) {\n    return false;\n  }\n};"
  },
  {
    "path": "packages/core/src/utils/isPromise.ts",
    "content": "export const isPromise = (value: unknown): value is Promise<unknown> => {\n  return typeof value === 'object' && value !== null && 'then' in value && typeof value.then === 'function';\n}"
  },
  {
    "path": "packages/core/src/utils/isStringableParam.ts",
    "content": "export const isStringableParam = (type?: string) => {\n  return type === 'StringableParam';\n}\n"
  },
  {
    "path": "packages/core/src/utils/logWithTime.ts",
    "content": "export const logWithTime = (...args: unknown[]) => {\n  console.log(...args, performance.now());\n}\n"
  },
  {
    "path": "packages/core/src/utils/mapToRecord.test.ts",
    "content": "import { mapToRecord } from './mapToRecord';\n\nit('converts a map to a record', () => {\n  const map = new Map<string, number>()\n    .set('a', 1)\n\n  const record: Record<string, number> = mapToRecord(map)\n\n  expect(record).toMatchObject({\n    a: 1,\n  })\n});"
  },
  {
    "path": "packages/core/src/utils/mapToRecord.ts",
    "content": "export function mapToRecord<K extends string | number, V>(map: Map<K, V>): Record<K, V> {\n  return Object.fromEntries(map.entries()) as Record<K, V>;\n}"
  },
  {
    "path": "packages/core/src/utils/merge.test.ts",
    "content": "import { merge } from './merge';\n\nit('merges flat objects', () => {\n  const first = { a: 1 };\n  const second = { a: 2, b: 3 };\n\n  expect(merge(first, second)).toEqual({ a: 2, b: 3 });\n});\n\nit('merges nested objects', () => {\n  const first = { a: { b: 1, c: 2 } };\n  const second = { a: { b: 'new' } };\n\n  expect(merge(first, second)).toEqual({ a: { b: 'new', c: 2 } });\n});\n\nit('merges with deep differences', () => {\n  const first = { id: 1 }\n  const second = {\n    id: 2,\n    associations: {\n      person: {\n        name: 'John',\n      },\n    },\n  }\n\n  expect(merge(first, second)).toEqual({\n    id: 2,\n    associations: {\n      person: {\n        name: 'John',\n      },\n    },\n  })\n})"
  },
  {
    "path": "packages/core/src/utils/merge.ts",
    "content": "type Obj = {\n  [key: string]: any\n}\n\nexport const merge = (first: Obj = {}, second: Obj = {}): Obj => {\n  const result: Obj = { ...first };\n  for (const key of Object.keys(second)) {\n    if (\n      second[key] &&\n      typeof second[key] === 'object' &&\n      !Array.isArray(second[key])\n    ) {\n      result[key] = merge(first[key] || {}, second[key]);\n    } else {\n      result[key] = second[key];\n    }\n  }\n  return result;\n};"
  },
  {
    "path": "packages/core/src/utils/multiline.test.ts",
    "content": "import { multiline } from './multiline';\n\nit('removes first line when it is empty', () => {\n  const result = multiline`\n    content\n  `;\n\n  expect(result).toEqual('content\\n');\n});\n\nit('bases indentation on the first content line', () => {\n  const result = multiline`\n    heading\n      p1\n      p2\n  `;\n\n  expect(result).toEqual('heading\\n  p1\\n  p2\\n');\n});\n\nit('throws if it gets content on first line', () => {\n  expect(() => multiline`content-on-first-line`).toThrow();\n});"
  },
  {
    "path": "packages/core/src/utils/multiline.ts",
    "content": "export const multiline = (strings: TemplateStringsArray, ...values: any[]) => {\n  // Combine the strings with the values\n  let combinedString = strings.reduce((result, str, i) => {\n    return result + str + (values[i] !== undefined ? values[i] : '');\n  }, '');\n\n  // Split the string into lines\n  let lines = combinedString.split('\\n');\n\n  // Throw if the first line is not empty\n  if (lines[0].trim() !== '') {\n    throw new Error(`First line of multiline string must be empty. The content was ${combinedString}`);\n  }\n\n  // Remove the first line\n  lines = lines.slice(1);\n\n  // Find the minimum indentation of all lines (except empty lines)\n  const baseIndentation = Math.min(...lines.filter(line => line.trim() !== '').map(line => line.search(/\\S|$/)));\n\n  // Remove the base indentation from all lines and join them back into a string\n  return lines.map(line => line.substring(baseIndentation)).join('\\n');\n};"
  },
  {
    "path": "packages/core/src/utils/parseStringList.test.ts",
    "content": "import { parseStringList } from './parseStringList';\n\nit('can parse a comma separated list', () => {\n  const list = 'a, b, c';\n  const result = parseStringList(list);\n  expect(result).toEqual(['a', 'b', 'c']);\n});\n\nit('can parse a newline separated list', () => {\n  const list = `\n    a\n    b\n    c\n  `;\n  const result = parseStringList(list);\n  expect(result).toEqual(['a', 'b', 'c']);\n});\n\nit('can parse a mixed list', () => {\n  const list = `\n    a, b, c\n    d, e\n  `;\n  const result = parseStringList(list);\n  expect(result).toEqual(['a', 'b', 'c', 'd', 'e']);\n});\n\nit('can parse an empty list', () => {\n  const list = '';\n  const result = parseStringList(list);\n  expect(result).toEqual([]);\n});\n\nit('can handle undefined input', () => {\n  const list = undefined;\n  const result = parseStringList(list);\n  expect(result).toEqual([]);\n});"
  },
  {
    "path": "packages/core/src/utils/parseStringList.ts",
    "content": "export const parseStringList = (list: string | undefined): string[] => {\n  if (!list) return [];\n\n  return list\n    .split('\\n')\n    .flatMap(line => line.split(','))\n    .map(v => v.trim())\n    .filter(v => v.length > 0)\n};"
  },
  {
    "path": "packages/core/src/utils/pascalToSentenceCase.test.ts",
    "content": "import { pascalToSentenceCase } from './pascalToSentenceCase'\n\nit('works for InputDevice', () => {\n  const output = pascalToSentenceCase('InputDevice')\n\n  expect(output).toEqual('Input Device')\n})\n\nit('separates uppercase chars next to eachother', () => {\n  const output = pascalToSentenceCase('OutputJSON')\n\n  expect(output).toEqual('Output J S O N')\n})"
  },
  {
    "path": "packages/core/src/utils/pascalToSentenceCase.ts",
    "content": "export function pascalToSentenceCase(input: string): string {\n  return input\n    .replace(/([A-Z])/g, ' $1')\n    .trim();\n}"
  },
  {
    "path": "packages/core/src/utils/serializeError.ts",
    "content": "import { stringifyError } from './stringifyError'\n\nexport const serializeError = (error: any) => {\n  return JSON.parse(stringifyError(error))\n}"
  },
  {
    "path": "packages/core/src/utils/sleep.test.ts",
    "content": "import { sleep } from './sleep';\n\nit('should resolve after specified time', async () => {\n  vi.useFakeTimers();\n\n  const date = new Date(2000, 1, 1, 1)\n  vi.setSystemTime(date)\n\n  let hasFinished = false\n\n  // Sleep for 1 hour\n  const promise = sleep(3600 * 1000).then(() => {\n    hasFinished = true\n  })\n\n  // Still pending after 30 minutes\n  vi.advanceTimersByTime(30 * 60 * 1000);\n  expect(hasFinished).toBe(false)\n\n  // Done After 1 hour\n  vi.advanceTimersByTime(30 * 60 * 1000);\n  await promise; // allow it to happily resolve\n\n  expect(hasFinished).toBe(true)\n\n  vi.useRealTimers()\n});"
  },
  {
    "path": "packages/core/src/utils/sleep.ts",
    "content": "export const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));"
  },
  {
    "path": "packages/core/src/utils/snakeCaseToTitleCase.ts",
    "content": "export const snakeCaseToTitleCase = (snakeCase: string) => {\n  return snakeCase\n    .split('_')\n    .map((word) => word[0].toUpperCase() + word.slice(1))\n    .join('')\n}"
  },
  {
    "path": "packages/core/src/utils/stringifyError.ts",
    "content": "export function stringifyError(error: any) {\n  if (error instanceof Error) {\n    // Standard Error object\n    return JSON.stringify({\n      message: error.message,\n      stack: error.stack,\n    });\n  } else {\n    try {\n      // Handle non-Error objects, including those with circular references\n      return JSON.stringify(error, getCircularReplacer());\n    } catch {\n      // Fallback for other edge cases\n      return String(error);\n    }\n  }\n}\n\n// Replacer function to avoid TypeError: Converting circular structure to JSON\nfunction getCircularReplacer() {\n  const seen = new WeakSet();\n  return (key: string, value: any) => {\n    if (typeof value === 'object' && value !== null) {\n      if (seen.has(value)) {\n        return;\n      }\n      seen.add(value);\n    }\n    return value;\n  };\n}"
  },
  {
    "path": "packages/core/src/utils/toLookup.test.ts",
    "content": "import { toLookup } from './toLookup';\n\nit('returns an empty object when no items are passed', () => {\n  const items: any[] = [];\n  const keyPath = 'id';\n  const valuePath = 'name';\n  const result = toLookup(items, keyPath, valuePath);\n\n  expect(result).toEqual({});\n});\n\nit('returns an object with flat keys and values from items', () => {\n  const items = [\n    { id: 'a', uppercase: 'A' },\n    { id: 'b', uppercase: 'B' },\n    { id: 'c', uppercase: 'C' },\n  ];\n  const keyPath = 'id';\n  const valuePath = 'uppercase';\n  const result = toLookup(items, keyPath, valuePath);\n\n  expect(result).toEqual({\n    a: 'A',\n    b: 'B',\n    c: 'C',\n  });\n});\n\nit('returns an object with nested keys and values from items', () => {\n  const items = [\n    { id: 'a', nested: { uppercase: 'A' } },\n    { id: 'b', nested: { uppercase: 'B' } },\n    { id: 'c', nested: { uppercase: 'C' } },\n  ];\n  const keyPath = 'id';\n  const valuePath = 'nested.uppercase';\n  const result = toLookup(items, keyPath, valuePath);\n\n  expect(result).toEqual({\n    a: 'A',\n    b: 'B',\n    c: 'C',\n  });\n});"
  },
  {
    "path": "packages/core/src/utils/toLookup.ts",
    "content": "import { get } from './get';\n\nexport const toLookup = <T extends {}>(\n  items: T[],\n  keyPath: string,\n  valuePath?: string,\n) => {\n  return items.reduce((result, item) => {\n    const key = get(item, keyPath);\n    const value = get(item, valuePath);\n    result[key] = value;\n    return result;\n  }, {} as Record<string, any>);\n}"
  },
  {
    "path": "packages/core/src/utils/withNodeExecutionErrorHandling.test.ts",
    "content": "import { describe, expect, it } from 'vitest';\nimport { withNodeExecutionErrorHandling } from './withNodeExecutionErrorHandling';\nimport { NodeExecutionError } from '../types/Errors';\n\ndescribe('withNodeExecutionErrorHandling', () => {\n  const mockNode = {\n    id: 'test-node-1',\n    label: 'Test Node',\n    type: 'TestComputer',\n  };\n\n  it('should yield values normally when no error occurs', async () => {\n    const mockAsyncGenerator = async function* () {\n      yield 'value1';\n      yield 'value2';\n      return 'final';\n    };\n\n    const wrappedGenerator = withNodeExecutionErrorHandling(mockAsyncGenerator, mockNode);\n    const generator = wrappedGenerator();\n\n    const result1 = await generator.next();\n    expect(result1.value).toBe('value1');\n    expect(result1.done).toBe(false);\n\n    const result2 = await generator.next();\n    expect(result2.value).toBe('value2');\n    expect(result2.done).toBe(false);\n\n    const result3 = await generator.next();\n    expect(result3.value).toBe('final');\n    expect(result3.done).toBe(true);\n  });\n\n  it('should wrap errors with NodeExecutionError', async () => {\n    const errorMessage = 'Something went wrong';\n    const mockAsyncGenerator = async function* () {\n      yield 'value1';\n      throw new Error(errorMessage);\n    };\n\n    const wrappedGenerator = withNodeExecutionErrorHandling(mockAsyncGenerator, mockNode);\n    const generator = wrappedGenerator();\n\n    const result1 = await generator.next();\n    expect(result1.value).toBe('value1');\n\n    await expect(generator.next()).rejects.toThrow(NodeExecutionError);\n\n    try {\n      await generator.next();\n    } catch (error) {\n      expect(error).toBeInstanceOf(NodeExecutionError);\n      expect((error as NodeExecutionError).node).toEqual(mockNode);\n      expect((error as NodeExecutionError).message).toContain(errorMessage);\n      expect((error as NodeExecutionError).message).toContain(mockNode.label);\n      expect((error as NodeExecutionError).message).toContain(mockNode.type);\n    }\n  });\n\n  it('should handle non-Error objects thrown', async () => {\n    const mockAsyncGenerator = async function* () {\n      throw 'string error';\n    };\n\n    const wrappedGenerator = withNodeExecutionErrorHandling(mockAsyncGenerator, mockNode);\n    const generator = wrappedGenerator();\n\n    await expect(generator.next()).rejects.toThrow(NodeExecutionError);\n\n    try {\n      await generator.next();\n    } catch (error) {\n      expect(error).toBeInstanceOf(NodeExecutionError);\n      expect((error as NodeExecutionError).message).toContain('string error');\n    }\n  });\n\n  it('should pass arguments correctly to the wrapped function', async () => {\n    const mockAsyncGenerator = async function* (arg1: string, arg2: number) {\n      yield `${arg1}-${arg2}`;\n    };\n\n    const wrappedGenerator = withNodeExecutionErrorHandling(mockAsyncGenerator, mockNode);\n    const generator = wrappedGenerator('test', 42);\n\n    const result = await generator.next();\n    expect(result.value).toBe('test-42');\n  });\n});\n"
  },
  {
    "path": "packages/core/src/utils/withNodeExecutionErrorHandling.ts",
    "content": "import { NodeExecutionError } from '../types/Errors';\nimport { Node } from '../types/Node';\n\n/**\n * High-order helper function that wraps an async generator function\n * and rethrows any error thrown by the run function wrapped with NodeExecutionError\n *\n * @param runFn - The async generator function to wrap\n * @param node - The node context for error reporting\n * @returns A wrapped async generator that handles errors\n */\nexport function withNodeExecutionErrorHandling<TArgs extends any[], TYield, TReturn, TNext>(\n  runFn: (...args: TArgs) => AsyncGenerator<TYield, TReturn, TNext>,\n  node: Pick<Node, 'id' | 'label' | 'type'>,\n) {\n  return async function* (...args: TArgs): AsyncGenerator<TYield, TReturn, TNext> {\n    try {\n      return yield* runFn(...args);\n    } catch (error) {\n      const errorMessage = error instanceof Error ? error.message : String(error);\n      throw new NodeExecutionError(errorMessage, node);\n    }\n  };\n}\n"
  },
  {
    "path": "packages/core/tsconfig.build.esm.json",
    "content": "{\n    \"compilerOptions\": {\n      \"target\": \"ES6\",\n      \"lib\": [\n        \"esnext\"\n      ],\n      \"allowJs\": true,\n      \"checkJs\": false,\n      \"skipLibCheck\": true,\n      \"strict\": true,\n      \"forceConsistentCasingInFileNames\": true,\n      \"outDir\": \"dist/esm\",\n      \"esModuleInterop\": true,\n      \"module\": \"ESNext\",\n      \"sourceMap\": true,\n      \"moduleResolution\": \"node\",\n      \"resolveJsonModule\": true,\n      \"isolatedModules\": true,\n      \"incremental\": true,\n      \"noImplicitAny\": true,\n      \"types\": [\n        \"vitest/globals\"\n      ],\n      \"declaration\": true\n    },\n    \"ts-node\": {\n      \"compilerOptions\": {\n        \"module\": \"ESNext\"\n      }\n    },\n    \"include\": [\n      \"./src/**/*.ts\",\n      \"global.d.ts\"\n    ],\n    \"exclude\": [\n      \"./node_modules\",\n      \"./src/**/*.spec.ts\",\n      \"./src/**/*.test.ts\",\n      \"./src/**/*.cy.ts\",\n      \"./src/**/*.d.ts\",\n    ]\n  }\n  "
  },
  {
    "path": "packages/core/tsconfig.build.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES6\",\n    \"lib\": [\n      \"esnext\"\n    ],\n    \"allowJs\": true,\n    \"checkJs\": false,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"outDir\": \"dist/main\",\n    \"esModuleInterop\": true,\n    \"module\": \"commonjs\",\n    \"sourceMap\": true,\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"incremental\": true,\n    \"noImplicitAny\": false,\n    \"types\": [\n      \"vitest/globals\"\n    ],\n    \"declaration\": true\n  },\n  \"ts-node\": {\n    \"compilerOptions\": {\n      \"module\": \"CommonJS\"\n    }\n  },\n  \"include\": [\n    \"./src/**/*.ts\",\n    \"global.d.ts\"\n  ],\n  \"exclude\": [\n    \"./node_modules\",\n    \"./src/**/*.spec.ts\",\n    \"./src/**/*.test.ts\",\n    \"./src/**/*.cy.ts\",\n    \"./src/**/*.d.ts\",\n  ]\n}\n"
  },
  {
    "path": "packages/core/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES6\",\n    \"lib\": [\n      \"esnext\"\n    ],\n    \"allowJs\": true,\n    \"checkJs\": false,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"outDir\": \"dist/main\",\n    \"esModuleInterop\": true,\n    \"module\": \"commonjs\",\n    \"sourceMap\": true,\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"incremental\": true,\n    \"noImplicitAny\": false,\n    \"composite\": true,\n    \"types\": [\n      \"vitest/globals\"\n    ],\n    \"declaration\": true\n  },\n  \"ts-node\": {\n    \"compilerOptions\": {\n      \"module\": \"CommonJS\"\n    }\n  },\n  \"include\": [\n    \"./src/**/*.ts\",\n    \"global.d.ts\"\n  ],\n  \"exclude\": [\n    \"./node_modules\",\n    \"./dist\"\n  ]\n}\n"
  },
  {
    "path": "packages/core/turbo.json",
    "content": "{\n    \"extends\": [\n        \"//\"\n    ],\n    \"tasks\": {\n        \"build:vite\": {\n            \"outputs\": [\n                \"./dist/vite/**\"\n            ]\n        },\n        \"build:cjs\": {\n            \"outputs\": [\n                \"./dist/main/**\"\n            ]\n        },\n        \"build:esm\": {\n            \"outputs\": [\n                \"./dist/esm/**\"\n            ]\n        },\n        \"build\": {\n            \"dependsOn\": [\n                \"^build\",\n                \"build:vite\",\n                \"build:cjs\",\n                \"build:esm\"\n            ]\n        },\n        \"watch:vite\": {\n            \"cache\": false,\n            \"persistent\": true\n        },\n        \"watch:cjs\": {\n            \"cache\": false,\n            \"persistent\": true\n        },\n        \"watch:esm\": {\n            \"cache\": false,\n            \"persistent\": true\n        },\n        \"watch\": {\n            \"dependsOn\": [\n                \"build\"\n            ],\n            \"with\": [\n                \"watch:vite\",\n                \"watch:cjs\",\n                \"watch:esm\"\n            ],\n            \"cache\": false,\n            \"persistent\": true\n        }\n    }\n}\n"
  },
  {
    "path": "packages/core/vite.config.esm.ts",
    "content": "import { defineConfig } from 'vite';\nimport { resolve } from 'path';\nimport { externalizeDeps } from 'vite-plugin-externalize-deps';\n\nexport default defineConfig({\n  plugins: [\n    externalizeDeps(),\n  ],\n  build: {\n    outDir: 'dist/esm',\n    lib: {\n      entry: resolve(__dirname, 'src/index.ts'),\n      name: '@data-story/core',\n      formats: ['es'],\n      fileName: 'index',\n    },\n    sourcemap: true,\n  },\n});\n"
  },
  {
    "path": "packages/core/vite.config.js",
    "content": "import { resolve } from 'path'\nimport { defineConfig } from 'vite'\n\nexport default defineConfig({\n  build: {\n    outDir: 'dist/vite',\n    lib: {\n      // Could also be a dictionary or array of multiple entry points\n      entry: resolve(__dirname, './src/testTools.ts'),\n      name: 'testToolsName',\n      // the proper extensions will be added\n      fileName: 'test-tools',\n    },\n    rollupOptions: {\n      // make sure to externalize deps that shouldn't be bundled\n      // into your library\n      external: ['vitest'],\n      // output: {\n      //   // Provide global variables to use in the UMD build\n      //   // for externalized deps\n      //   globals: {\n      //     vitest: 'vitest',\n      //   },\n      // },\n    },\n  },\n})"
  },
  {
    "path": "packages/core/vitest.config.ts",
    "content": "import { defineConfig } from 'vitest/config'\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    // Dropped because of CJS is deprecated\n    // coverage: {\n    //   all: true,\n    //   exclude: [\n    //     './**/*.test.ts',\n    //     './dist/**',\n    //     './src/types/**',\n    //     './src/support/computerTester/**'\n    //   ]\n    // },\n  },\n})"
  },
  {
    "path": "packages/docs/.gitignore",
    "content": ".next\nnode_modules\n.yarn\n"
  },
  {
    "path": "packages/docs/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2022 Shu Ding\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "packages/docs/README.md",
    "content": "# Nextra Docs Template\n\nThis is a template for creating documentation with [Nextra](https://nextra.site).\n\n[**Live Demo →**](https://nextra-docs-template.vercel.app)\n\n[![](.github/screenshot.png)](https://nextra-docs-template.vercel.app)\n\n## Quick Start\n\nClick the button to clone this repository and deploy it on Vercel:\n\n[![](https://vercel.com/button)](https://vercel.com/new/clone?s=https%3A%2F%2Fgithub.com%2Fshuding%2Fnextra-docs-template&showOptionalTeamCreation=false)\n\n## License\n\nThis project is licensed under the MIT License.\n"
  },
  {
    "path": "packages/docs/components/Playground.tsx",
    "content": "import React, { useEffect, useState } from 'react';\nimport {\n  createJSClient,\n  createSocketClient,\n  DataStory,\n  WorkspaceApiClientImplement,\n  RunControl,\n  SaveControl, AddNodeControl,\n  CopyAsJsonControl, ConfigControl,\n} from '@data-story/ui';\nimport { useRequestApp } from './hooks/useRequestApp';\nimport { ToastComponent } from './Toast';\n\nexport default Playground;\n\nfunction Playground({ mode }: { mode?: 'js' | 'node' }) {\n  const { app, loading } = useRequestApp();\n  const [client, setClient] = useState<WorkspaceApiClientImplement>();\n\n  useEffect(() => {\n    if (mode === 'node') {\n      const { client, dispose } = createSocketClient();\n      setClient(client);\n      return dispose;\n    }\n  }, [mode]);\n\n  useEffect(() => {\n    if (mode !== 'node' && !loading) {\n      const client = createJSClient(app);\n      setClient(client);\n    }\n  }, [mode, app, loading]);\n\n  if (loading || !client) return null;\n\n  const handleEdgeDoubleClick = (edgeId: string) => {\n    console.log('Edge double clicked:', edgeId);\n    // open new tab with edgeId\n    window.open(`https://www.datastory.dev/edge/${edgeId}`);\n  };\n\n  return (\n    <div className=\"w-full\" style={{ height: 'calc(100vh - 72px)' }} data-cy=\"playground\">\n      <DataStory\n        client={client}\n        onEdgeDoubleClick={handleEdgeDoubleClick}\n        controls={[<RunControl/>, <AddNodeControl/>, <SaveControl/>, <CopyAsJsonControl/>, <ConfigControl/>]}\n      >\n        <ToastComponent/>\n      </DataStory>\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/Toast.tsx",
    "content": "import React from 'react';\nimport { DataStoryEvents, DataStoryEventType, useDataStoryEvent } from '@data-story/ui';\nimport { Bounce, toast, ToastContainer, ToastOptions } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\n\nconst toastConfig: ToastOptions = {\n  position: 'top-right',\n  style: { top: '100px' },\n  autoClose: 2000,\n  hideProgressBar: true,\n  closeOnClick: true,\n  pauseOnHover: false,\n  draggable: false,\n  theme: 'light',\n  transition: Bounce,\n}\n\nexport function errorToast(content: string): void {\n  toast.error(content, toastConfig);\n}\n\nexport function successToast(content: string): void {\n  toast.success(content, toastConfig);\n}\n\nconst initToast = (event: DataStoryEventType) => {\n  switch (event.type) {\n    case DataStoryEvents.RUN_SUCCESS:\n      successToast('Diagram executed successfully!');\n      break;\n    case DataStoryEvents.RUN_ERROR:\n      console.error(event.payload);\n      errorToast(`Diagram execution failed! Error was: ${event.payload.message}`);\n      break;\n    case DataStoryEvents.SAVE_SUCCESS:\n      successToast('Diagram saved successfully!');\n      break;\n    case DataStoryEvents.SAVE_ERROR:\n      console.error(event.payload);\n      errorToast('Diagram save failed!');\n      break;\n    case DataStoryEvents.COPY_JSON_SUCCESS:\n      successToast('JSON copied to clipboard!');\n      break;\n    case DataStoryEvents.COPY_JSON_ERROR:\n      console.error(event.payload);\n      errorToast('Failed to copy JSON to clipboard!');\n      break;\n    case DataStoryEvents.RUN_ABORT:\n      successToast('Execution aborted successfully!');\n      break;\n    default:\n      break;\n  }\n};\n\nexport const ToastComponent = () => {\n  useDataStoryEvent(initToast);\n\n  return (\n    <>\n      <ToastContainer/>\n    </>\n  );\n}\n"
  },
  {
    "path": "packages/docs/components/demos/DocsFlow.tsx",
    "content": "import { DataStory } from '@data-story/ui'\nimport { core, multiline, sleep, str } from '@data-story/core';\nimport { CustomizeJSClient } from '../splash/CustomizeJSClient';\nimport { useRequestApp } from '../hooks/useRequestApp';\nimport useRequest from 'ahooks/lib/useRequest';\n\nexport default () => {\n  const { app, loading: appLoading } = useRequestApp();\n\n  const { data: diagram, loading: diagramLoading } = useRequest(async() => {\n    await core.boot();\n    const diagram = core.getDiagramBuilder()\n      .add('Create')\n      .add('Request')\n      .add('Sleep', { duration: 200 })\n      .add('Table')\n      .add('Throw', {\n        message: 'Something went wrong',\n        position: { x: 450, y: 250 },\n      })\n      .add('Comment', {\n        content: multiline`\n          ### DataStory 🔥\n          Combine data sources, transforms, actions, APIs, storage and more. Create custom nodes for your business logic.\n        `,\n        position: { x: 100, y: -150 },\n      })\n      .connect(`\n        Create.1.output ---> Request.1.input\n        Request.1.items ---> Sleep.1.input\n        Request.1.error ---> Throw.1.input\n        Sleep.1.output ---> Table.1.input\n      `)\n      .place()\n      .jiggle({ x: 60, y: 25 })\n      .get()\n\n    diagram.params = [\n      str({\n        name: 'message',\n        help: 'A message to pass on into the execution.',\n      }),\n    ]\n\n    return diagram;\n  });\n\n  const client = new CustomizeJSClient({ diagram, app });\n\n  if (appLoading || !client || diagramLoading) return null;\n\n  return (\n    <div className=\"w-full h-1/6\">\n      <DataStory\n        client={client}\n        onInitialize={(options) => {\n          sleep(1000).then(() => {\n            options.run()\n          })\n        }}\n        hideActivityBar={true}\n      />\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/demos/HeroFlow.tsx",
    "content": "import { DataStory } from '@data-story/ui'\nimport { core, multiline } from '@data-story/core';\nimport { CustomizeJSClient } from '../splash/CustomizeJSClient';\nimport { useRequestApp } from '../hooks/useRequestApp';\n\nconst welcomeMarkdown = multiline`\n    ### Welcome to DataStory 👋\n    Real time data processing for NodeJS and React.  \n    [docs](/docs) | [playground](/playground)\n  `\n\n// Good for computers\nconst diagram = core.getDiagramBuilder()\n  .add('Signal', { label: 'Realtime', period: 20, count: 100000 })\n  .add('Pass', { label: 'Automation' })\n  .add('Ignore', { label: 'for React & NodeJS' })\n  .jiggle({ x: 60, y: 25 })\n  .get()\n\nexport default () => {\n  const { app, loading } = useRequestApp();\n\n  const client = new CustomizeJSClient({ app, diagram });\n\n  if (loading || !client) return null;\n  return (\n    <div className=\"w-full h-1/2 sm:h-screen\">\n      <DataStory\n        client={client}\n        initDiagram={diagram}\n        onInitialize={(options) => options.run()}\n      />\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/demos/NodeDemo.tsx",
    "content": "import { DataStory } from '@data-story/ui'\nimport { core, nodes } from '@data-story/core';\nimport { CustomizeJSClient } from '../splash/CustomizeJSClient';\nimport { useRequestApp } from '../hooks/useRequestApp';\n\nexport default ({ nodeName }: { nodeName: string }) => {\n  const diagram = core.getDiagramBuilder()\n    // @ts-ignore\n    .add(nodes[nodeName])\n    .get()\n\n  const { app, loading } = useRequestApp();\n  const client = new CustomizeJSClient({ diagram: diagram, app });\n\n  if (loading || !client) return null;\n  return (<div>\n    <div className=\"w-full\" style={{ height: '36vh' }}>\n      <DataStory\n        client={client}\n        initDiagram={diagram}\n      />\n    </div>\n  </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/demos/ObserversDemo.tsx",
    "content": "import React, { useEffect, useMemo, useState } from 'react';\nimport { AddNodeControl, DataStory, RunControl } from '@data-story/ui';\nimport {\n  CategoryScale,\n  Chart as ChartJS,\n  Legend,\n  LinearScale,\n  LineElement,\n  PointElement,\n  Title,\n  Tooltip,\n} from 'chart.js';\nimport { Line } from 'react-chartjs-2';\nimport { useDiagram } from '../hooks/useDiagram';\nimport { CustomizeJSClient } from '../splash/CustomizeJSClient';\nimport { createDataStoryId, multiline, RequestObserverType, LinkItemsUpdate, ItemValue } from '@data-story/core';\n\nChartJS.register(\n  CategoryScale,\n  LinearScale,\n  PointElement,\n  LineElement,\n  Title,\n  Tooltip,\n  Legend,\n);\n\nconst ObserversDemo = () => {\n  const [points, setPoints] = useState<ItemValue[]>([]);\n  const { app, diagram, loading } = useDiagram((builder) => builder\n    .add('Signal', {\n      period: 100,\n      count: 1000,\n      expression: '{ x: ${{i}} }',\n    })\n    .add('Map', {\n      mapper: multiline`\n        item => ({\n          x: \\${{x}},\n          y: Math.sin(\\${{x}} / 4) + Math.cos(\\${{x}} / 3) * Math.exp(-\\${{x}} / 100) + Math.random() * 0.5\n        })\n        `,\n    })\n    .add('Table')\n    .connect()\n    .place()\n    .get(),\n  );\n\n  const client = useMemo(() => diagram\n    ? new CustomizeJSClient({ diagram, app })\n    : undefined,\n  [diagram, app]);\n\n  // // Listen to item changes - render graph\n  useEffect(() => {\n    if (!client?.observeLinkItems) return;\n\n    const observerId = createDataStoryId();\n    const observeLinkItems = {\n      linkIds: diagram?.links[1]?.id ? [diagram.links[1].id] : [],\n      type: RequestObserverType.observeLinkItems,\n      onReceive: (params: LinkItemsUpdate[]) => {\n        const newPoints = params[0].items;\n        setPoints((prevPoints) => [...prevPoints, ...newPoints].slice(-100));\n      },\n      observerId,\n    };\n    const subscription = client.observeLinkItems?.(observeLinkItems as any);\n\n    return () => subscription?.unsubscribe();\n  }, [client, diagram?.links]);\n\n  // // Listen to link counts - console.log\n  useEffect(() => {\n    if (!client?.observeLinkCounts) return;\n\n    const linksCountObserver = {\n      type: RequestObserverType.observeLinkCounts,\n      linkIds: diagram?.links[1]?.id ? [diagram.links[1].id] : [],\n      onReceive: (count: number) => {\n        console.log('Link counts updated', count);\n      },\n      observerId: createDataStoryId(),\n    };\n    const subscription = client?.observeLinkCounts?.(linksCountObserver as any);\n\n    return () => subscription?.unsubscribe();\n  }, [client, diagram?.links]);\n\n  // Await booting and diagram creation\n  if (loading || !client || !diagram) {\n    return <div>Loading...</div>;\n  }\n\n  return (\n    <div className=\"w-full\" style={{ height: '60vh' }}>\n      <Line\n        options={{\n          responsive: true,\n          animation: {\n            duration: 0, // general animation time\n          },\n          plugins: {\n            legend: {\n              position: 'top' as const,\n            },\n            title: {\n              display: true,\n              text: 'Chart.js Line Chart',\n            },\n          },\n        }}\n        data={{\n          labels: points.map((p) => p.x),\n          datasets: [\n            {\n              label: 'Data',\n              data: points.map((p) => p.y),\n              borderColor: 'blue',\n              backgroundColor: 'blue',\n            },\n          ],\n        }}\n      />\n      <div className={'h-1/2'}>\n        <DataStory\n          onInitialize={async ({ run }) => {\n            setPoints([]);\n            run();\n          }}\n          controls={[<RunControl/>, <AddNodeControl/>]}\n          client={client}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default ObserversDemo;\n"
  },
  {
    "path": "packages/docs/components/demos/TableDemo.tsx",
    "content": "import React, { useRef } from 'react';\nimport { DataStoryNodeData, StandaloneTable } from '@data-story/ui';\nimport { Table } from '@data-story/core';\n\nconst tableItems = [\n  { id: 1, name: 'John', age: 30, city: 'New York' },\n  { id: 2, name: 'Jane', age: 25, city: 'San Francisco' },\n  { id: 3, name: 'Bob', age: 40, city: 'Chicago' },\n  { id: 4, name: 'Alice', age: 35, city: 'Seattle' },\n  { id: 5, name: 'Tom', age: 28, city: 'Boston' },\n];\nexport default () => {\n  const parentRef = useRef<HTMLDivElement>(null);\n\n  const data = {\n    ...Table,\n    inputs: [\n      {\n        ...Table.inputs[0],\n        id: 'mockTable.input',\n        schema: {},\n      },\n    ],\n    outputs: [],\n  } as unknown as DataStoryNodeData;\n\n  return (\n    <div>\n      <StandaloneTable\n        wrapClassName=\"w-[300px]\"\n        isDataFetched={true}\n        items={tableItems}\n        data={data}\n        parentRef={parentRef}\n      />\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/demos/TinkerDemo.tsx",
    "content": "import { AddNodeControl, DataStory, RunControl } from '@data-story/ui'\nimport { core, str } from '@data-story/core';\nimport { CustomizeJSClient } from '../splash/CustomizeJSClient';\nimport { useRequestApp } from '../hooks/useRequestApp';\nimport useRequest from 'ahooks/lib/useRequest';\n\n// This component is just a place to sketch\nexport default () => {\n  const { app, loading: appLoading } = useRequestApp();\n\n  const { data: diagram, loading: diagramLoading } = useRequest(async() => {\n    await core.boot();\n    const diagram = core.getDiagramBuilder()\n      .add('Create')\n      .add('Sample')\n      .add('Table')\n      .add('Table')\n      .connect(`\n        Create.1.output ---> Sample.1.input\n        Sample.1.sampled ---> Table.1.input\n        Sample.1.not_sampled ---> Table.2.input\n      `)\n      .place()\n      .jiggle()\n      .get()\n\n    diagram.params = [\n      str({\n        name: 'message',\n        help: 'A message to pass on into the execution.',\n      }),\n    ]\n    return diagram;\n  });\n\n  const client = new CustomizeJSClient({ diagram, app });\n\n  if (appLoading || !client || diagramLoading) return null;\n  return (\n    <div className=\"w-full h-1/2\">\n      <DataStory\n        client={client}\n        controls={[<RunControl/>, <AddNodeControl/>]}\n      />\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/demos/Tree/CustomActivityBar.tsx",
    "content": "'use client'\n\nimport { DataStory } from '@data-story/ui';\nimport { core } from '@data-story/core';\nimport { CustomizeJSClient } from '../../splash/CustomizeJSClient';\nimport { useRequestApp } from '../../hooks/useRequestApp';\n\nexport default () => {\n  const diagram = core.getDiagramBuilder()\n    .add('Signal', { label: 'DataSource', period: 200, count: 100 })\n    .add('Ignore', { label: 'Storage' })\n    .add('Comment', { content: '### Custom Config Activity Bar 🔥' })\n    .get();\n  const { app } = useRequestApp();\n  const client = new CustomizeJSClient({ diagram: diagram, app });\n\n  if (!client) return null;\n\n  return (\n    <div className=\"w-full h-80 border-gray-400 border-4\">\n      <DataStory\n        client={client}\n        hideSidebar={true}\n        hideActivityBar={['settings']}\n      />\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/demos/Tree/Empty.tsx",
    "content": "'use client'\n\nimport { DataStory } from '@data-story/ui';\nimport { CustomizeJSClient } from '../../splash/CustomizeJSClient';\nimport { useRequestApp } from '../../hooks/useRequestApp';\n\nexport default () => {\n  const { app, loading } = useRequestApp();\n\n  const client: CustomizeJSClient | null = new CustomizeJSClient({ app });\n\n  if (loading || !client) return null;\n\n  return (\n    <div className=\"w-full h-80 border-gray-400 border-4\">\n      <DataStory\n        client={client}\n        onInitialize={(options) => options.run()}\n      />\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/demos/Tree/Loading.tsx",
    "content": "'use client'\n\nimport { DataStory } from '@data-story/ui';\nimport { CustomizeJSClient } from '../../splash/CustomizeJSClient';\nimport { useRequestApp } from '../../hooks/useRequestApp';\n\nexport default () => {\n  const { app, loading } = useRequestApp();\n  if(loading) return null;\n\n  const client = new CustomizeJSClient({ app });\n\n  return (\n    <div className=\"w-full h-80 border-gray-400 border-4\">\n      <DataStory\n        client={client}\n        onInitialize={(options) => options.run()}\n      />\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/demos/Tree/MultipleDiagram.tsx",
    "content": "'use client'\n\nimport { AddNodeControl, createJSClient, DataStory, RunControl } from '@data-story/ui';\nimport { useMemo } from 'react';\nimport { useRequestApp } from '../../hooks/useRequestApp';\n\nexport default () => {\n  const { app, loading } = useRequestApp();\n  const client = useMemo(() =>  {\n    if (!loading) return createJSClient(app);\n    return null;\n  }, [app, loading]);\n\n  if(loading || !client) return null;\n\n  return (\n    <div className=\"w-full h-80 border-gray-400 border-4\">\n      <DataStory\n        client={client}\n        controls={[<RunControl/>, <AddNodeControl/>]}\n      />\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/demos/Tree/SingleDiagram.tsx",
    "content": "'use client'\n\nimport { DataStory } from '@data-story/ui';\nimport { core } from '@data-story/core';\nimport { CustomizeJSClient } from '../../splash/CustomizeJSClient';\nimport { useRequestApp } from '../../hooks/useRequestApp';\n\nexport default () => {\n  const { app, loading } = useRequestApp();\n\n  const diagram = core.getDiagramBuilder()\n    .add('Signal', { label: 'DataSource', period: 200, count: 100 })\n    .add('Ignore', { label: 'Storage' })\n    .add('Comment', { content: '### Single Diagram 🔥' })\n    .get();\n\n  const client = new CustomizeJSClient({ diagram: diagram, app });\n\n  if (!client) return null;\n\n  return (\n    <div className=\"w-full h-80 border-gray-400 border-4\">\n      <DataStory\n        client={client}\n        hideSidebar={true}\n        hideActivityBar={true}\n      />\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/demos/UnfoldingDemo.tsx",
    "content": "import { useState, useEffect } from 'react';\nimport { AddNodeControl, DataStory, RunControl } from '@data-story/ui';\nimport { multiline, str } from '@data-story/core';\nimport { CustomizeJSClient } from '../splash/CustomizeJSClient';\nimport { useRequestApp } from '../hooks/useRequestApp';\nimport { createExecutableDiagram } from '@data-story/core';\n\nexport default ({ part }: { part: 'MAIN' | 'NESTED_NODE' | 'MAIN_UNFOLDED' }) => {\n  const { app: bootedApp, loading: isBooting } = useRequestApp();\n  const [clients, setClients] = useState<{\n    mainClient?: CustomizeJSClient;\n    mainUnfoldedClient?: CustomizeJSClient;\n    nestedNodeClient?: CustomizeJSClient;\n  }>({});\n\n  useEffect(() => {\n    if (!bootedApp || isBooting) return;\n\n    const initializeClients = async () => {\n      // *************************************\n      // Make a nested node\n      // *************************************\n      const nestedNode = bootedApp\n        .getDiagramBuilder()\n        .withParams([\n          str({\n            name: 'stamp',\n            value: 'foo',\n          }),\n        ])\n        .add('Input', { port_name: 'input' })\n        .add('Map', {\n          mapper: multiline`\n            item => ({\n              foo: 'bar',\n              global_param_access: 'The foo stamp was >>>@{stamp}<<<',\n            })`,\n        })\n        .add('Output', { port_name: 'stamped' })\n        .connect()\n        .place()\n        .get();\n\n      // *************************************\n      // Make app, register nested node\n      // *************************************\n      bootedApp.addNestedNode('FooBarStamper', nestedNode);\n\n      // *************************************\n      // Build main diagram, use the nested node\n      // *************************************\n      const diagram = bootedApp\n        .getDiagramBuilder()\n        .add('Create', {\n          label: 'Users',\n          data: JSON.stringify([\n            { name: 'Alice', age: 23 },\n            { name: 'Bob', age: 34 },\n            { name: 'Charlie', age: 45 },\n          ]),\n        })\n        .add('FooBarStamper')\n        .add('Table')\n        .connect()\n        .place()\n        .get();\n\n      // *************************************\n      // Unfold diagram (for visualization purposes)\n      // *************************************\n      const nestedNodes = {\n        FooBarStamper: nestedNode,\n      };\n\n      const unfolded = createExecutableDiagram(diagram.clone(), nestedNodes);\n\n      console.log({\n        msg: 'Main Client Diagram',\n        diagram,\n      })\n\n      // Create clients\n      const mainClient = new CustomizeJSClient({ diagram, app: bootedApp });\n      const mainUnfoldedClient = new CustomizeJSClient({ diagram: unfolded.diagram, app: bootedApp });\n      const nestedNodeClient = new CustomizeJSClient({ diagram: nestedNode, app: bootedApp });\n\n      // Update state\n      setClients({\n        mainClient,\n        mainUnfoldedClient,\n        nestedNodeClient,\n      });\n    };\n\n    initializeClients();\n  }, [bootedApp, isBooting]);\n\n  if (isBooting || !clients.mainClient) return null;\n\n  // *************************************\n  // Render requested part\n  // *************************************\n  return (\n    <div className=\"w-full h-1/4\">\n      {part === 'MAIN' && (\n        <DataStory\n          controls={[<RunControl/>, <AddNodeControl/>]}\n          onInitialize={({ run }) => run()}\n          client={clients.mainClient}\n        />\n      )}\n      {part === 'NESTED_NODE' && (\n        <DataStory controls={[<RunControl/>, <AddNodeControl/>]} client={clients.nestedNodeClient!} />\n      )}\n      {part === 'MAIN_UNFOLDED' && (\n        <DataStory controls={[<RunControl/>, <AddNodeControl/>]} client={clients.mainUnfoldedClient!} />\n      )}\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/demos/VisualizeDemo.tsx",
    "content": "import { core, createDataStoryId, ObserveLinkItems, RequestObserverType, ItemValue, ObserveLinkCounts } from '@data-story/core';\nimport React, { useEffect, useMemo } from 'react';\nimport { AddNodeControl, DataStory,  RunControl } from '@data-story/ui';\nimport {\n  CategoryScale,\n  Chart as ChartJS,\n  Legend,\n  LinearScale,\n  LineElement,\n  PointElement,\n  Title,\n  Tooltip,\n} from 'chart.js';\nimport { Line } from 'react-chartjs-2';\nimport { CustomizeJSClient } from '../splash/CustomizeJSClient';\nimport { useRequestApp } from '../hooks/useRequestApp';\n\nChartJS.register(\n  CategoryScale,\n  LinearScale,\n  PointElement,\n  LineElement,\n  Title,\n  Tooltip,\n  Legend,\n);\n\nexport const options = {\n  responsive: true,\n  animation: {\n    duration: 0, // general animation time\n  },\n  plugins: {\n    legend: {\n      position: 'top' as const,\n    },\n    title: {\n      display: true,\n      text: 'Chart.js Line Chart',\n    },\n  },\n};\n\nconst diagram = core.getDiagramBuilder()\n  .add('Signal', {\n    period: 100,\n    count: 100,\n    expression: '{ x: ${i} }',\n  })\n  .add('Map', { mapper: 'item => ({ x: ${x}, y: Math.cos(${x}/4) })' })\n  // .add(Map)\n  .add('Table')\n  .get();\n\nexport default () => {\n  const [points, setPoints] = React.useState<ItemValue[]>([]);\n  const { app, loading } = useRequestApp();\n  const client = useMemo(() => new CustomizeJSClient({ diagram, app }), [diagram, app]);\n\n  const mapNode = diagram.nodes.find(n => n.type === 'Map');\n  const mapperParam = mapNode!.params.find(p => p.name === 'mapper') as any;\n  mapperParam.value = {\n    ...mapperParam.value,\n    Evaluation: 'JS_FUNCTION',\n  }\n  mapperParam.evaluations = [{\n    type: 'JS_FUNCTION',\n    label: 'JS_FUNCTION',\n    selected: true,\n  }]\n\n  useEffect(() => {\n    if (!client) { return; }\n\n    const observerId = createDataStoryId();\n    const observeLinkItems: ObserveLinkItems = {\n      linkIds: [diagram.links[1].id],\n      type: RequestObserverType.observeLinkItems,\n      onReceive: (items) => {\n        const latestPoints = items[0].items;\n        setPoints([\n          ...points,\n          ...latestPoints,\n        ].slice(-100));\n      },\n      observerId,\n    };\n    const subscription = client.observeLinkItems?.(observeLinkItems as ObserveLinkItems)\n\n    return () => subscription?.unsubscribe()\n  }, [client, points]);\n\n  useEffect(() => {\n    if(!client?.observeLinkCounts) return;\n\n    const linksCountObserver = {\n      type: RequestObserverType.observeLinkCounts as const,\n      linkIds: [diagram.links[1].id],\n      onReceive: (count: number) => {\n        console.log('Link count', count);\n      },\n      observerId: createDataStoryId(),\n    }\n    const subscription = client?.observeLinkCounts?.(linksCountObserver as unknown as ObserveLinkCounts);\n    return () =>  subscription?.unsubscribe()\n  }, [client]);\n\n  if (loading || !client) {\n    return null;\n  }\n\n  return (\n    <div className=\"w-full\" style={{ height: '60vh' }}>\n      <Line options={options} data={{\n        labels: points.map(p => p.x),\n        datasets: [\n          {\n            label: 'Data',\n            data: points.map(p => p.y),\n            borderColor: 'blue',\n            backgroundColor: 'blue',\n          },\n        ],\n      }}/>\n      <div className={'h-1/2'}>\n        <DataStory\n          onInitialize={async({ run }) => {\n            setPoints([])\n            run()\n          }}\n          controls={[<RunControl/>, <AddNodeControl/>]}\n          client={client}\n        />\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/docs/components/hooks/useDiagram.tsx",
    "content": "import { Application, coreNodeProvider, Diagram, DiagramBuilder, remoteNodeProvider, sleep } from '@data-story/core';\nimport useRequest from 'ahooks/lib/useRequest';\n\nexport function useDiagram(diagramFactory: (builder: DiagramBuilder) => Diagram): {\n  app: Application;\n  diagram: Diagram;\n  loading: boolean;\n  error: Error | undefined;\n} {\n  const { data, loading, error } = useRequest(async() => {\n    const appInstance = new Application()\n    appInstance.register(coreNodeProvider)\n    appInstance.register(remoteNodeProvider)\n    await appInstance.boot()\n    await sleep(10) // TODO why is this necessary?\n\n    const builder = appInstance.getDiagramBuilder()\n\n    return {\n      app: appInstance,\n      diagram: diagramFactory(builder),\n    }\n  });\n\n  return { ...data!, loading, error };\n}\n\nexport function useDiagrams(diagramFactories: ((builder: DiagramBuilder) => Diagram)[]): {\n  app: Application;\n  diagrams: Diagram[];\n  loading: boolean;\n  error: Error | undefined;\n} {\n  const { data, loading, error } = useRequest(async() => {\n    const appInstance = new Application()\n    appInstance.register(coreNodeProvider)\n    appInstance.register(remoteNodeProvider)\n    await appInstance.boot()\n    await sleep(10) // TODO why is this necessary?\n\n    const builder = appInstance.getDiagramBuilder()\n\n    return {\n      app: appInstance,\n      diagrams: diagramFactories.map(factory => factory(builder)),\n    }\n  });\n\n  return { ...data!, loading, error };\n}\n"
  },
  {
    "path": "packages/docs/components/hooks/useRequestApp.tsx",
    "content": "import { Application, coreNodeProvider, remoteNodeProvider, sleep } from '@data-story/core';\nimport useRequest from 'ahooks/lib/useRequest';\n\nexport function useRequestApp(): {\n  app: Application;\n  loading: boolean;\n  error: Error | undefined;\n} {\n  const { data: app, loading, error } = useRequest(async() => {\n    const appInstance = new Application()\n    appInstance.register(coreNodeProvider)\n    appInstance.register(remoteNodeProvider)\n    await appInstance.boot()\n\n    return appInstance\n  });\n\n  return { app: app!, loading, error };\n}\n"
  },
  {
    "path": "packages/docs/components/logo.tsx",
    "content": "export const Logo = () => {\n  return <span className=\"font-bold tracking-wide font-mono text-blue-500\">\n    {'<DataStory />'}\n  </span>;\n}"
  },
  {
    "path": "packages/docs/components/splash/CustomizeJSClient.tsx",
    "content": "import {\n  Application,\n  Diagram,\n  NodeDescription,\n  ObserveLinkItems,\n  ObserveLinkCounts,\n  ObserveLinkUpdate,\n  GetDataFromStorageParams,\n  ObserveNodeStatus,\n  CancelObservation,\n} from '@data-story/core';\nimport { ClientRunParams, createJSClient, WorkspaceApiClient, WorkspaceApiClientImplement } from '@data-story/ui';\n\nexport class CustomizeJSClient implements WorkspaceApiClientImplement {\n  private nodeDescriptions: NodeDescription[];\n  private app: Application;\n  private diagram: Diagram;\n  private jsClient: WorkspaceApiClient;\n\n  constructor({ diagram, app, nodeDescriptions }: {\n    app: Application,\n    diagram?: Diagram,\n    nodeDescriptions?: NodeDescription[]\n  }) {\n    this.nodeDescriptions = nodeDescriptions || [];\n    this.app = app;\n    this.diagram = diagram || new Diagram();\n    this.jsClient = createJSClient(this.app);\n  }\n\n  getNodeDescriptions = async(params: { path?: string }) => {\n    return this.nodeDescriptions;\n  };\n\n  run = (params:  ClientRunParams) => {\n    this.jsClient.run(params);\n  };\n\n  getDiagram = async(params: { diagramId?: string }) => {\n    return this.diagram;\n  };\n\n  observeLinkItems = (params: ObserveLinkItems) => {\n    return this.jsClient.observeLinkItems(params);\n  }\n\n  observeLinkCounts = (params: ObserveLinkCounts) => {\n    return this.jsClient.observeLinkCounts(params);\n  }\n\n  observeNodeStatus = (params: ObserveNodeStatus) => {\n    return this.jsClient.observeNodeStatus(params);\n  }\n\n  observeLinkUpdate = (params: ObserveLinkUpdate) => {\n    return this.jsClient.observeLinkUpdate(params);\n  }\n\n  getDataFromStorage = (params: GetDataFromStorageParams) => {\n    return this.jsClient.getDataFromStorage(params);\n  }\n\n  cancelObservation = (params: CancelObservation) => {\n    return this.jsClient.cancelObservation(params);\n  }\n}\n"
  },
  {
    "path": "packages/docs/components/splash/FullScreenHeroSection.tsx",
    "content": "import HeroFlow from '../demos/HeroFlow'\n\nexport default () => {\n  return (\n    <div className={'w-full flex justify-center h-screen'}>\n      <div className=\"flex w-full\">\n        <HeroFlow />\n      </div>\n    </div>\n  )\n}"
  },
  {
    "path": "packages/docs/components/splash/HeroSection.tsx",
    "content": "import HeroFlow from '../demos/HeroFlow'\nimport NodeDemo from '../demos/NodeDemo'\n\nexport default () => {\n  return (\n    <div className=\"w-full flex justify-center my-8 sm:my-24 mb-48\">\n      <div className=\"flex flex-col md:flex-row w-full max-w-6xl justify-around\">\n        <section className=\"flex flex px-4 sm:px-6 lg:px-8\">\n          <div\n            className=\"mx-auto max-w-7xl px-4 sm:mt-12 sm:px-6 md:mt-16 lg:mt-20 lg:pl-8 flex lg:flex-justify lg:flex flex-col lg:flex-row\">\n            <div className=\"sm:text-center lg:text-left\">\n              <div className=\"select-none text-2xl tracking-tight font-extrabold text-gray-800 sm:text-4xl md:text-4xl\">\n                <div className=\"text-indigo-600\">Realtime Automation</div>\n                <div className=\"text-indigo-600\">for React and NodeJS</div>\n              </div>\n              <div className=\"mt-5 sm:mt-8 flex sm:justify-center lg:justify-start\">\n                <div className=\"rounded-md shadow\">\n                  <a href=\"/docs\"\n                    className=\"w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-white bg-gray-800 hover:bg-gray-600 md:py-4 md:text-lg md:px-10\">\n                    Docs\n                  </a>\n                </div>\n                <div className=\"sm:mt-0 sm:ml-3\">\n                  <a href=\"/playground\"\n                    className=\"w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-gray-800 bg-indigo-100 hover:bg-indigo-200 md:py-4 md:text-lg md:px-10\">\n                    Playground\n                  </a>\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n        <div className=\"flex flex-1 flex-initial w-full min-w-sm h-64 lg:mt-16 mr-8\">\n          <HeroFlow />\n        </div>\n      </div>\n    </div>\n  )\n}"
  },
  {
    "path": "packages/docs/components/splash/SecondarySection.tsx",
    "content": "import HeroFlow from '../demos/HeroFlow'\nimport NodeDemo from '../demos/NodeDemo'\n\nexport default () => {\n  return (\n    <div className=\"w-full flex justify-center bg-gray-800\">\n      <div className=\"flex flex-col md:flex-row w-full max-w-6xl justify-end\">\n        <section className=\"flex flex px-4 sm:px-6 lg:px-8 my-8\">\n          <div\n            className=\"mx-auto max-w-7xl px-4 sm:mt-12 sm:px-6 md:mt-16 lg:mt-20 lg:pl-8 flex flex-col lg:flex-row\">\n            <div className=\"sm:text-center lg:text-left\">\n              <div className=\"select-none text-2xl tracking-tight font-extrabold text-gray-50 sm:text-4xl md:text-4xl\">\n                <div className=\"text-gray-50\">We have Nodes 😎</div>\n                <div className=\"text-gray-50 text-xl sm:text-2xl\">Lets go</div>\n              </div>\n              <div>\n                <div className=\"mt-5 sm:mt-8 flex sm:justify-center lg:justify-start\">\n                  <div className=\"rounded-md shadow\">\n                    <a href=\"/docs\"\n                      className=\"w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-white bg-gray-800 hover:bg-gray-600 md:py-4 md:text-lg md:px-10\">\n                      Docs\n                    </a>\n                  </div>\n                  <div className=\"sm:mt-0 sm:ml-3\">\n                    <a href=\"/playground\"\n                      className=\"w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-gray-800 bg-indigo-100 hover:bg-indigo-200 md:py-4 md:text-lg md:px-10\">\n                      Playground\n                    </a>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n      </div>\n    </div>\n  )\n}"
  },
  {
    "path": "packages/docs/components/splash/StatsSection.tsx",
    "content": "import HeroFlow from '../demos/HeroFlow'\nimport NodeDemo from '../demos/NodeDemo'\n\nexport default () => {\n  return (\n    <div className=\"w-full flex justify-center pb-16\">\n      <div className=\"flex flex-col md:flex-row w-full max-w-6xl mx-auto\">\n        <section className=\"lowercase font-mono flex w-full justify-around px-4 sm:px-6 lg:px-8 my-8\">\n          <div className=\"\">\n            <div className=\"font-bold tracking-wide text-2xl text-gray-50\">161</div>\n          </div>\n          <div className=\"\">\n            <div className=\"font-bold tracking-wide text-2xl text-gray-50\">MIT</div>\n          </div>\n          <div className=\"\">\n            <div className=\"font-bold tracking-wide text-2xl text-gray-50\">Yes</div>\n          </div>\n          <div className=\"\">\n            <div className=\"font-bold tracking-wide text-2xl text-gray-50\">24</div>\n          </div>\n        </section>\n      </div>\n    </div>\n  )\n}"
  },
  {
    "path": "packages/docs/components/splash/ThirdSection.tsx",
    "content": "export default () => {\n  return (\n    <div className=\"w-full flex justify-center bg-gray-950\">\n      <div className=\"flex flex-col md:flex-row w-full max-w-6xl justify-start\">\n        <section className=\"flex flex px-4 sm:px-6 lg:px-8 my-8\">\n          <div\n            className=\"mx-auto max-w-7xl px-4 sm:mt-12 sm:px-6 md:mt-16 lg:mt-20 lg:pl-8 flex flex-col lg:flex-row\">\n            <div className=\"sm:text-center lg:text-left\">\n              <div className=\"select-none text-xl tracking-tight font-extrabold text-gray-50 sm:text-2xl md:text-2xl\">\n                <div className=\"text-gray-50\">ReactJS | NodeJS | Browser | Headless</div>\n              </div>\n              <div>\n                <div className=\"mt-5 sm:mt-8 flex sm:justify-center lg:justify-start\">\n                  <div className=\"rounded-md shadow\">\n                    <a href=\"/docs\"\n                      className=\"w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-white bg-gray-800 hover:bg-gray-600 md:py-4 md:text-lg md:px-10\">\n                      Docs\n                    </a>\n                  </div>\n                  <div className=\"sm:mt-0 sm:ml-3\">\n                    <a href=\"/playground\"\n                      className=\"w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-gray-800 bg-indigo-100 hover:bg-indigo-200 md:py-4 md:text-lg md:px-10\">\n                      Playground\n                    </a>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </section>\n      </div>\n    </div>\n  )\n}"
  },
  {
    "path": "packages/docs/const.ts",
    "content": "export const ServerPort = 3300;\nexport const ServerRequest = `ws://localhost:${ServerPort}`;\n"
  },
  {
    "path": "packages/docs/globals.css",
    "content": "\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\nhtml {\n    /* to ensure that the scrollbar remains light in dark mode*/\n    color-scheme: light !important;\n}\n"
  },
  {
    "path": "packages/docs/hooks/useWindowDimensions.ts",
    "content": "import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n  if (typeof window === 'undefined') {\n    // Assume on mobile\n    return {\n      width: 375,\n      height: 667,\n    }\n  }\n\n  const { innerWidth: width, innerHeight: height } = window;\n  return {\n    width,\n    height,\n  };\n}\n\nexport default function useWindowDimensions() {\n  const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n  useEffect(() => {\n    function handleResize() {\n      setWindowDimensions(getWindowDimensions());\n    }\n\n    window.addEventListener('resize', handleResize);\n    return () => window.removeEventListener('resize', handleResize);\n  }, []);\n\n  return windowDimensions;\n}"
  },
  {
    "path": "packages/docs/next-env.d.ts",
    "content": "/// <reference types=\"next\" />\n/// <reference types=\"next/image-types/global\" />\n\n// NOTE: This file should not be edited\n// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information.\n"
  },
  {
    "path": "packages/docs/next.config.mjs",
    "content": "import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';\n\nexport default (async () => {\n  const { default: nextra } = await import('nextra');\n\n  const withNextra = nextra({\n    theme: 'nextra-theme-docs',\n    themeConfig: './theme.config.tsx',\n  });\n\n  const nextraConfig = withNextra({});\n\n  return {\n    ...nextraConfig,\n    images: {\n      unoptimized: true,\n    },\n    webpack: (config, context) => {\n      const baseConfig = nextraConfig.webpack(config, context);\n\n      if (context.dev) {\n        baseConfig.devtool = 'source-map';\n\n        baseConfig.module.rules.push({\n          test: /\\.js$/,\n          enforce: 'pre',\n          use: ['source-map-loader'],\n        });\n        baseConfig.ignoreWarnings = [/Failed to parse source map/];\n        /**\n         * https://webpack.js.org/configuration/module/#modulenoparse\n         * https://github.com/microsoft/TypeScript/issues/39436\n         */\n        if (!baseConfig.module.noParse) {\n          baseConfig.module.noParse = (content) => {\n            return /[\\/\\\\]node_modules[\\/\\\\]typescript[\\/\\\\]lib[\\/\\\\]typescript\\.js$|[\\/\\\\]node_modules[\\/\\\\]@typescript[\\/\\\\]vfs[\\/\\\\]dist[\\/\\\\]vfs\\.esm\\.js$/.test(content);\n          }\n        }\n      }\n\n      if (!context.isServer && process.env.ANALYZE_ENV === 'true') {\n        config.plugins.push(\n          new BundleAnalyzerPlugin({\n            analyzerMode: 'static',\n            analyzerPort: context.isServer ? 8888 : 8889,\n            reportFilename: './analyze/server.html',\n            openAnalyzer: process.env.ANALYZE_ENV === 'true',\n          }),\n        );\n      }\n\n      baseConfig.devServer = {\n        ...baseConfig.devServer,\n        port: 'auto',\n      };\n\n      return baseConfig;\n    },\n  };\n})();\n"
  },
  {
    "path": "packages/docs/package.json",
    "content": "{\n  \"name\": \"@data-story/docs\",\n  \"version\": \"0.0.1\",\n  \"description\": \"DataStory documentation\",\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"analyze\": \"yarn run -T set-env ANALYZE_ENV=true && next build\",\n    \"lint\": \"next lint\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/shuding/nextra-docs-template.git\"\n  },\n  \"author\": \"Anders Jürisoo\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/shuding/nextra-docs-template/issues\"\n  },\n  \"homepage\": \"https://github.com/shuding/nextra-docs-template#readme\",\n  \"dependencies\": {\n    \"@data-story/hubspot\": \"workspace:*\",\n    \"@data-story/ui\": \"workspace:*\",\n    \"ahooks\": \"^3.8.1\",\n    \"chart.js\": \"^4.4.2\",\n    \"next\": \"^14.2.28\",\n    \"nextra\": \"^3.3.1\",\n    \"nextra-theme-docs\": \"^3.3.1\",\n    \"react\": \"^18.3.1\",\n    \"react-chartjs-2\": \"^5.2.0\",\n    \"react-dom\": \"^18.3.1\",\n    \"react-toastify\": \"^10.0.4\"\n  },\n  \"devDependencies\": {\n    \"source-map-loader\": \"^4.0.1\"\n  }\n}\n"
  },
  {
    "path": "packages/docs/pages/Observers.mdx",
    "content": "# Observers\n\nConfigure the `DataStory` component by setting `observers` to monitor changes in the data of the node\n\n```tsx\n<DataStory\n  observeLinkItems={{\n    type: RequestObserverType.observeLinkItems,\n    // set the linkIds that you want to observe\n    linkIds: [diagram.links[0]?.id],\n    onReceive: (items, inputObserver) => {\n      // open the devtool console to see the data change\n      console.log('Observer items', items, 'Observer inputObserver', inputObserver);\n    }\n  }}\n  linksCountObserver={{\n    type: RequestObserverType.observelinkCounts as const,\n    linkIds: [diagram.links[1]?.id],\n    onReceive: (count) => {\n      console.log('Link count', count);\n    }\n  }}\n/>\n```\n\n## attributes\n\n```ts\nexport type observeLinkItems = {\n  type: RequestObserverType.observeLinkItems,\n  linkIds: string[],\n  observerId?: string,\n  direction?: 'pull' | 'push',\n  onlyFirstNItems?: number,\n  throttleMs?: number,\n  onReceive: NotifyObserversCallback,\n}\n\nexport type ObserveLinkCounts = {\n  type: RequestObserverType.ObserveLinkCounts,\n  linkIds: string[],\n  observerId?: string,\n  throttleMs?: number,\n  onReceive: (count: number) => void,\n}\n\nexport type ExecutionObserver = observeLinkItems | ObserveLinkCounts;\n```\n\n## Demo\n\nimport ObserversDemo from '../components/demos/ObserversDemo';\n\nYou can hook into execution progress by registering *observers*. In the example below, we send execution information to a third party graph component.\n\n<ObserversDemo />\n"
  },
  {
    "path": "packages/docs/pages/Unfolding.mdx",
    "content": "import UnfoldingDemo from '../components/demos/UnfoldingDemo';\n\n# Unfolding\nWhen a diagram is to be executed, it is *unfolded*, meaning it will be converted into a flat structure.\nThis process will reduce any nested nodes into their underlying nodes. It will then connect everything with input/output nodes.\nFurthermore it will pass on any node params which will act as *global* params inside resolved underlying nodes.\n\n```ts\n// When creating the execution\nconst { diagram } = createExecutableDiagram(original, definitions)\n```\nLet's consider an example!\n\n## Main diagram\nHere we have a diagram with a custom node *FooBarStamper*. Give it a run!\n<UnfoldingDemo part={'MAIN'} />\n\n## FooBarStamper implementation\nThe FooBarStamper will simply take all incoming items, add a foo property with value 'bar', then output it. \nNote how the green input and output nodes corresponds to the ports of FooBarStamper instantiation in the main diagram.\n<UnfoldingDemo part={'NESTED_NODE'} />\n\n## Unfolded Main diagram\nWhen executing the diagram, behind the scenes, it will first be unfolded, resulting in the topology below. This is typically a backend/headless only operation, not visible in the UI. \n<UnfoldingDemo part={'MAIN_UNFOLDED'} />"
  },
  {
    "path": "packages/docs/pages/_app.tsx",
    "content": "import '../globals.css'\n\n//@ts-ignore\nexport default function extra({ Component, pageProps }) {\n  return (\n    <>\n      <Component {...pageProps} />\n    </>\n  )\n}\n"
  },
  {
    "path": "packages/docs/pages/_meta.ts",
    "content": "export default {\n  'index': {\n    'title': 'Home',\n  },\n  'menu': {\n    'title': 'Resources',\n    'type': 'menu',\n    'items': {\n      'home': {\n        'title': 'Home',\n        'href': '/',\n      },\n      'playground': {\n        'title': 'Playground',\n        'href': '/playground',\n      },\n      'github': {\n        'title': 'GitHub',\n        'newWindow': true,\n        'href': 'https://github.com/ajthinking/data-story',\n      },\n    },\n  },\n  'getting-started': 'Getting Started',\n  'customize': 'Customize',\n  'playground': {\n    'title': 'Playground',\n    'display': 'hidden',\n    'type': 'page',\n    'theme': {\n      'layout': 'raw',\n      'footer': false,\n    },\n  },\n  'playground-node': {\n    'title': 'Playground NodeJS',\n    'display': 'hidden',\n    'type': 'page',\n    'theme': {\n      'layout': 'raw',\n      'footer': false,\n    },\n  },\n  // 'Visualize': 'Visualize',\n  'Unfolding': 'Unfolding',\n  'Observers': 'Observers',\n  'contributing': 'Contributing',\n  'hotkeys': 'Hotkeys',\n  'table': 'Table',\n}\n"
  },
  {
    "path": "packages/docs/pages/contributing.mdx",
    "content": "# Contributing 🙏\n### Packages summary\n* core - the computation part 🧠\n* nodejs - NodeJS specifics 🛠️\n* ui - the react component 📦\n* docs - this website 📚\n\n### Development Installation\n```bash\nyarn\nyarn dev\n```"
  },
  {
    "path": "packages/docs/pages/customize.mdx",
    "content": "# Customize\n\nYou may configure and extend your backend however you want. \n\n```ts\nconst app = new Application();\n\napp.register([\n  coreNodeProvider,\n  // ...custom providers 🎈\n]);\n\napp.boot();\n\nexport { app };\n```"
  },
  {
    "path": "packages/docs/pages/getting-started.mdx",
    "content": "### Installation\n```bash copy\nyarn add @data-story/ui\n```\n\n### Basic Usage\n\n```js copy\nimport { DataStory } from '@data-story/ui'\nimport '@data-story/ui/data-story.css';\n\nexport default function Home() {\n  return (\n    <div style={{ height: '100vh', width: '100%' }}>\n      <DataStory />\n    </div>\n  )\n}\n```\n\n> With this basic usage, you will get all available nodes in `@data-story/core` and an inline JS server.\n\n"
  },
  {
    "path": "packages/docs/pages/hotkeys.mdx",
    "content": "# Hotkeys Reference Guide\n\nThis document provides an overview of the keyboard shortcuts (hotkeys) available in the application, detailing their functions and the corresponding actions they trigger.\n\n## Available Hotkeys\n\n### General Actions\n\n- **Shift + R**: Opens the Run sidebar.\n\n- **Shift + Minus (-)**: Opens the Add Node sidebar.\n\n### Operations\n\n- **Ctrl + S / Cmd + S**: Performs the save operation. When an `onSave` callback is provided, pressing this shortcut will execute the save action, with the default behavior in the [playground](/playground) being to save to localStorage.\n\n### Node Operations\n\n- **Enter**: Opens Node Settings Sidebar. When a node is selected, and only one node is selected, pressing this key will open the settings sidebar for that node.\n\n## Try it\n\nYou can also try these shortcuts in the [here](/playground).\n"
  },
  {
    "path": "packages/docs/pages/index.mdx",
    "content": "# Introduction\nVisual programming for `React` and `NodeJs` 🚀\n\nimport DocsFlow from '../components/demos/DocsFlow'\n\n<DocsFlow />\n\n## What is DataStory?\nDataStory ships a React component:\n```tsx\n<DataStory />\n```\n... which connects to a computation server:\n```ts\nconst app = new Application();\n\napp.register([\n  coreNodeProvider,\n  // ... your custom nodes here 💫\n]);\n```\n\n... that executes your diagram with real time feedback:\n```ts\n// async generator magic ✨\nconst executor = app.getExecutor(diagram)\n```\n\n## Tell me more\n\nWe may execute diagrams directly via the UI or in headless/serverless environments and seamlessly convert between UI rendered, JSON serialized and programmically created diagrams/nodes to build any application you can think of.\n```ts\n// A diagram created programmatically 🤖\nconst diagram = core.getDiagramBuilder()\n  .add('Signal')\n  .add('Sleep', { duration: 500 })\n  .add('ConsoleLog')\n  .get()\n\n// Serializable 📦\nconst saved = JSON.stringify(diagram)\n\n// Open saved diagrams 🔧\nconst restored = JSON.parse(saved)\n```\n\nWe may customize the platform to our needs and easily add our own nodes using well defined patterns:\n```ts\n// Custom node\nconst MyBusinessProcessor = {\n  type: 'My Business Processor',\n  inputs: ['ideas'],\n  outputs: ['unicorns'],\n  \n  async *run({ input, output }) {\n    // logic goes here 🧠\n  },\n};\n\n// A diagram is a node and a node is a diagram 🤯\nconst NestedNode = diagram\n```\n\n... and much more - Let's get building! 🚀"
  },
  {
    "path": "packages/docs/pages/playground-node.mdx",
    "content": "import Playground from '../components/Playground'\n\n<Playground mode={\"node\"} />"
  },
  {
    "path": "packages/docs/pages/playground.mdx",
    "content": "import Playground from '../components/Playground'\n\n<Playground />"
  },
  {
    "path": "packages/docs/pages/splash.tsx.sketch",
    "content": "import Hero from '../components/demos/Hero'\nimport NodeDemo from '../components/demos/NodeDemo'\n\nexport default function Home() {\n  return (<div>\n    <div className=\"flex w-full flex-wrap\">\n      <section className=\"min-w-md flex-1 h-screen mx-auto px-4 sm:px-6 lg:px-8\">\n        <div\n          className=\"my-10 mx-auto max-w-7xl px-4 sm:mt-12 sm:px-6 md:mt-16 lg:mt-20 lg:pl-8 flex gap-3 lg:flex-justify lg:flex flex-col lg:flex-row\">\n          <div className=\"sm:text-center lg:text-left\">\n            <h1 className=\"text-4xl tracking-tight font-extrabold text-gray-800 sm:text-5xl md:text-6xl\">\n              <span className=\"block xl:inline\">Visual compute with</span>\n              <span className=\"block text-indigo-600 xl:inline\"> {'<DataStory />'}</span>\n            </h1>\n            <p\n              className=\"mt-3 text-base text-gray-500 sm:mt-5 sm:text-lg sm:max-w-xl sm:mx-auto md:mt-5 md:text-xl lg:mx-0\">\n            Build, visualize and execute <span className=\"italic\">your</span> business case.\n            </p>\n            <div className=\"mt-5 sm:mt-8 sm:flex sm:justify-center lg:justify-start\">\n              <div className=\"rounded-md shadow\">\n                <a href=\"/docs\"\n                  className=\"w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-white bg-gray-800 hover:bg-gray-600 md:py-4 md:text-lg md:px-10\">\n                    Docs\n                </a>\n              </div>\n              <div className=\"mt-3 sm:mt-0 sm:ml-3\">\n                <a href=\"/playground\"\n                  className=\"w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-gray-800 bg-indigo-100 hover:bg-indigo-200 md:py-4 md:text-lg md:px-10\">\n                    Playground\n                </a>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </section>\n      <div className=\"flex flex-1 min-w-md h-64 mt-16 mr-8\">\n        <Hero />\n      </div>\n    </div>\n    <div>\n      <div className=\"max-w-7xl mx-auto py-16 px-4 sm:px-6 lg:px-8\">\n        <div className=\"text-2xl text-gray-800 font-bold\">We have all the Nodes!</div>\n      </div>\n      <div className=\"flex\">\n        <div className=\"flex-1\">\n          <NodeDemo nodeName={'Signal'} />\n        </div>\n        <div className=\"flex-1\">\n          <NodeDemo nodeName={'Merge'} />\n        </div>\n        <div className=\"flex-1\">\n          <NodeDemo nodeName={'Filter'} />\n        </div>\n        <div className=\"flex-1\">\n          <NodeDemo nodeName={'Request'} />\n        </div>                        \n      </div>\n    </div>\n    <div className=\"w-full bg-amber-500\">\n      Show some code example\n    </div>\n    <div className=\"py-24 px-24 w-full bg-blue-800 flex\">\n      <Hero />\n      <div className=\"max-w-7xl mx-auto py-16 px-4 sm:px-6 lg:px-8\">\n        <div className=\"text-xl text-gray-50\">Do frontend</div>\n      </div>\n    </div>\n    <div className=\"py-24 px-24 w-full bg-blue-800 flex\">\n      <div className=\"max-w-7xl mx-auto py-16 px-4 sm:px-6 lg:px-8\">\n        <div className=\"text-xl text-gray-50\">Do backend</div>\n      </div>\n      <Hero />\n    </div>\n    <div className=\"py-24 px-24 w-full bg-blue-800 flex\">\n      <div className=\"max-w-7xl mx-auto py-16 px-4 sm:px-6 lg:px-8\">\n        <div className=\"text-xl text-gray-50\">Do your business</div>\n      </div>\n      <Hero />\n    </div>        \n  </div>)\n}"
  },
  {
    "path": "packages/docs/pages/table.mdx",
    "content": "\n## TableDemo\n\nimport TableDemo from '../components/demos/TableDemo';\n\nOnly render the StandaloneTable, without containing DataStory component\n\n<TableDemo />\n"
  },
  {
    "path": "packages/docs/pages/tinker.mdx",
    "content": "# Tinker\nShows a diagram with a global param\n\nimport TinkerDemo from '../components/demos/TinkerDemo';\n\n<TinkerDemo />\n"
  },
  {
    "path": "packages/docs/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}"
  },
  {
    "path": "packages/docs/tailwind.config.js",
    "content": "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: [\n    'theme.config.js',\n    './pages/**/*.{js,ts,jsx,tsx,mdx}',\n    './components/**/*.{js,ts,jsx,tsx,mdx}',\n  ],\n  theme: {\n    extend: {},\n  },\n  plugins: [],\n  important: '#__next',\n}"
  },
  {
    "path": "packages/docs/theme.config.tsx",
    "content": "import React from 'react'\nimport { DocsThemeConfig } from 'nextra-theme-docs'\nimport { Logo } from './components/logo'\n\nconst config: DocsThemeConfig = {\n  logo: Logo,\n  project: {\n    link: 'https://github.com/ajthinking/data-story',\n  },\n  docsRepositoryBase: 'https://github.com/ajthinking/data-story/blob/main/packages/docs',\n  footer: {\n    // text: 'Built with Nextra',\n  },\n}\n\nexport default config\n"
  },
  {
    "path": "packages/docs/tree/.gitkeep",
    "content": ""
  },
  {
    "path": "packages/docs/tree/main.json",
    "content": "{\n  \"nodes\": [],\n  \"links\": [],\n  \"params\": [],\n  \"viewport\": {\n    \"x\": 0,\n    \"y\": 0,\n    \"zoom\": 1\n  }\n}"
  },
  {
    "path": "packages/docs/tree/nodes/stamper.json",
    "content": "{\n  \"nodes\": [],\n  \"links\": [],\n  \"params\": [],\n  \"viewport\": {\n    \"x\": 0,\n    \"y\": 0,\n    \"zoom\": 1\n  }\n}"
  },
  {
    "path": "packages/docs/tree/secondary.json",
    "content": "{\n  \"nodes\": [],\n  \"links\": [],\n  \"params\": [],\n  \"viewport\": {\n    \"x\": 0,\n    \"y\": 0,\n    \"zoom\": 1\n  }\n}"
  },
  {
    "path": "packages/docs/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es6\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"incremental\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"types\": [\"node\", \"react\"],\n    // todo: remove this\n    \"noImplicitAny\": false\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n}\n"
  },
  {
    "path": "packages/docs/turbo.json",
    "content": "{\n  \"extends\": [\n    \"//\"\n  ],\n  \"tasks\": {\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true,\n      \"with\": [\n        \"@data-story/ui#watch\"\n      ]\n    },\n    \"start\": {\n      \"cache\": false,\n      \"persistent\": true,\n      \"dependsOn\": [\n        \"build\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/.gitignore",
    "content": "install-scripts/*.min.js\n"
  },
  {
    "path": "packages/ds-ext/.vscode-test.mjs",
    "content": "import { defineConfig } from '@vscode/test-cli';\n\nexport default defineConfig({\n\tfiles: 'out/test/**/*.test.js',\n});\n"
  },
  {
    "path": "packages/ds-ext/.vscodeignore",
    "content": ".vscode/**\n.vscode-test/**\nout/**\nnode_modules/**\nsrc/**\n.gitignore\n.yarnrc\nwebpack.config.js\nvsc-extension-quickstart.md\n**/tsconfig.json\n**/eslint.config.mjs\n**/*.map\n**/*.ts\n**/.vscode-test.*\n"
  },
  {
    "path": "packages/ds-ext/.yarnrc",
    "content": "--ignore-engines true"
  },
  {
    "path": "packages/ds-ext/.yarnrc.yml",
    "content": "nodeLinker: node-modules\n"
  },
  {
    "path": "packages/ds-ext/CHANGELOG.md",
    "content": "# Change Log\n\nAll notable changes to the \"ds-ext\" extension will be documented in this file.\n\nCheck [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.\n\n## [Unreleased]\n\n- Initial release"
  },
  {
    "path": "packages/ds-ext/README.md",
    "content": "## Usage Notes\n\n### To increase the memory limit for the extension\n\nSet [`ds-ext.additionalDsServerCliArgs`](vscode://settings/ds-ext.additionalDsServerCliArgs) with the following:\n```json\n{\n    \"ds-ext.additionalDsServerCliArgs\": [\n        \"--max_old_space_size=10240\"\n    ]\n}\n```\n\n## Development Notes\n1. Clone the repository.\n2. In the root directory, run `yarn` to install dependencies, then `yarn build` to build the project.\n3. Open the repo with an editor supporting the VS Code extension API, such as VS Code, Windsurf, or Cursor (collectively \"Editor\").\n4. In the \"Run and Debug\" tab, click \"Run Extension\" to launch a new Editor instance.\n5. In the new instance, open a directory and create a *.ds file with some content.\n![alt text](./image/watch-ds-ext.png)\n\n6. The Editor's terminal will automatically run the `watch:ds-ext` task.\n   * After modifying code under `data-ui/core/ds-ext`, restart the extension (Ctrl/Cmd + Shift + F5, then type \"Reload Window\") to apply changes in the new Editor instance.\n   * After modifying code under `data-nodejs`, wait for the `watch:ds-ext` task to output `Copied ds-server.min.js`, then restart the DataStory server to apply changes in the new Editor instance.\n![alt text](./image/datastory-restart-server.png)\n\n\n## publish ds-ext to VSCode extension marketplace\n\n* run `yarn turbo ds-ext#build`\n* run `vsce package --no-yarn --skip-license` under `packages/ds-ext`\n* run `vsce publish` under `packages/ds-ext`\n"
  },
  {
    "path": "packages/ds-ext/esbuild.extension.config.mjs",
    "content": "import * as esbuild from 'esbuild';\n\nconst isProduction = process.env.NODE_ENV === 'production';\n\nconst watch = process.argv.includes('--watch');\n\nasync function main() {\n  const ctx = await esbuild.context({\n    entryPoints: ['src/extension.ts'],\n    bundle: true,\n    format: 'cjs',\n    minify: isProduction,\n    sourcemap: !isProduction,\n    sourcesContent: false,\n    platform: 'node',\n    outfile: 'dist/extension.js',\n    external: ['vscode', '@duckdb/node-api'],\n    logLevel: 'warning',\n    plugins: [\n      /* add to the end of plugins array */\n      esbuildProblemMatcherPlugin,\n    ],\n    // inject: ['src/cjs-shim.ts'],\n  });\n  if (watch) {\n    await ctx.watch();\n  } else {\n    await ctx.rebuild();\n    await ctx.dispose();\n  }\n}\n\n/**\n * @type {import('esbuild').Plugin}\n */\nconst esbuildProblemMatcherPlugin = {\n  name: 'esbuild-problem-matcher',\n\n  setup(build) {\n    build.onStart(() => {\n      console.log('[watch] build started');\n    });\n    build.onEnd(result => {\n      result.errors.forEach(({ text, location }) => {\n        console.error(`✘ [ERROR] ${text}`);\n        if (location == null) return;\n        console.error(`    ${location.file}:${location.line}:${location.column}:`);\n      });\n      console.log('[watch] build finished');\n    });\n  },\n};\n\nmain().catch(e => {\n  console.error(e);\n  process.exit(1);\n});\n"
  },
  {
    "path": "packages/ds-ext/eslint.config.mjs",
    "content": "import typescriptEslint from '@typescript-eslint/eslint-plugin';\nimport tsParser from '@typescript-eslint/parser';\nimport stylistic from '@stylistic/eslint-plugin';\nimport reactHooks from 'eslint-plugin-react-hooks';\nimport importPlugin from 'eslint-plugin-import';\n\nexport default {\n  files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],\n  plugins: {\n    '@typescript-eslint': typescriptEslint,\n    '@stylistic': stylistic,\n    'react-hooks': reactHooks,\n    'import': importPlugin,\n  },\n  languageOptions: {\n    parser: tsParser,\n    ecmaVersion: 2022,\n    sourceType: 'module',\n    globals: {\n      acquireVsCodeApi: 'readonly'  // Move globals here\n    },\n  },\n  rules: {\n    'no-multiple-empty-lines': [ 'error', { 'max': 1, 'maxEOF': 0, 'maxBOF': 0 } ],\n    'padded-blocks': [ 'error', { 'blocks': 'never' } ],\n    'no-trailing-spaces': 'error',\n    'react-hooks/rules-of-hooks': 'error',\n    'react-hooks/exhaustive-deps': 'warn',\n    '@stylistic/indent': [\n      'error',\n      2\n    ],\n    '@stylistic/linebreak-style': 'off',\n    '@stylistic/quotes': [\n      'error',\n      'single'\n    ],\n    '@stylistic/eol-last': 'off',\n    '@stylistic/space-infix-ops': [ 'warn', { 'int32Hint': false }],\n    '@typescript-eslint/naming-convention': [ 'warn', {\n      selector: 'import',\n      format: [ 'camelCase', 'PascalCase' ],\n    } ],\n    eqeqeq: ['warn', \"smart\"],\n    'no-throw-literal': 'warn',\n    semi: 'warn',\n  },\n};\n"
  },
  {
    "path": "packages/ds-ext/language-configuration.json",
    "content": "{\n  \"comments\": {\n    \"lineComment\": \"//\",\n    \"blockComment\": [\"/*\", \"*/\"]\n  },\n  \"brackets\": [\n    [\"{\", \"}\"],\n    [\"[\", \"]\"]\n  ],\n  \"autoClosingPairs\": [\n    { \"open\": \"{\", \"close\": \"}\" },\n    { \"open\": \"[\", \"close\": \"]\" }\n  ]\n}\n"
  },
  {
    "path": "packages/ds-ext/package.json",
    "content": "{\n  \"name\": \"ds-ext\",\n  \"displayName\": \"data-story\",\n  \"description\": \"\",\n  \"version\": \"0.0.110\",\n  \"publisher\": \"ajthinking\",\n  \"icon\": \"icon.png\",\n  \"type\": \"commonjs\",\n  \"engines\": {\n    \"vscode\": \"^1.80.0\"\n  },\n  \"categories\": [\n    \"Other\"\n  ],\n  \"activationEvents\": [\n    \"onCommand:ds-ext.showReactApp\",\n    \"onCommand:ds-ext.openAsJson\",\n    \"onCommand:ds-ext.showUI\",\n    \"onCommand:ds-ext.startServer\",\n    \"onCommand:ds-ext.stopServer\",\n    \"onCommand:ds-ext.restartServer\"\n  ],\n  \"main\": \"./dist/extension.js\",\n  \"contributes\": {\n    \"commands\": [\n      {\n        \"command\": \"ds-ext.createDemos\",\n        \"title\": \"Create Demo Diagrams\",\n        \"category\": \"DataStory\"\n      },\n      {\n        \"command\": \"ds-ext.showOutput\",\n        \"title\": \"Show Output\",\n        \"category\": \"DataStory\"\n      },\n      {\n        \"command\": \"ds-ext.showDiagramPreview\",\n        \"title\": \"Show Diagram Preview\",\n        \"category\": \"DataStory\",\n        \"icon\": {\n          \"light\": \"./themes/preview-dark.svg\",\n          \"dark\": \"./themes/preview-white.svg\"\n        }\n      },\n      {\n        \"command\": \"ds-ext.showUI\",\n        \"title\": \"DataStory: Show UI\"\n      },\n      {\n        \"command\": \"ds-ext.startServer\",\n        \"title\": \"DataStory: Start Server\"\n      },\n      {\n        \"command\": \"ds-ext.stopServer\",\n        \"title\": \"DataStory: Stop Server\"\n      },\n      {\n        \"command\": \"ds-ext.restartServer\",\n        \"title\": \"DataStory: Restart Server\"\n      }\n    ],\n    \"menus\": {\n      \"editor/title\": [\n        {\n          \"command\": \"ds-ext.showDiagramPreview\",\n          \"when\": \"resourceLangId == 'diagramJson'\",\n          \"group\": \"navigation\"\n        }\n      ],\n      \"view/title\": [\n        {\n          \"command\": \"ds-ext.showDiagramPreview\",\n          \"when\": \"resourceLangId == 'diagramJson'\",\n          \"group\": \"navigation\"\n        }\n      ]\n    },\n    \"languages\": [\n      {\n        \"id\": \"diagramJson\",\n        \"aliases\": [\n          \"Diagram JSON\",\n          \"Data Story\"\n        ],\n        \"extensions\": [\n          \".ds\"\n        ],\n        \"filenamePatterns\": [\n          \"*.ds\"\n        ],\n        \"configuration\": \"./language-configuration.json\"\n      }\n    ],\n    \"customEditors\": [\n      {\n        \"viewType\": \"ds-ext.diagramEditor\",\n        \"displayName\": \"Diagram Editor\",\n        \"language\": \"diagramJson\",\n        \"priority\": \"default\",\n        \"selector\": [\n          {\n            \"filenamePattern\": \"*.ds\",\n            \"language\": \"diagramJson\"\n          }\n        ]\n      }\n    ],\n    \"iconThemes\": [\n      {\n        \"id\": \"diagramFileIconTheme\",\n        \"label\": \"Diagram File Icon Theme\",\n        \"path\": \"./themes/file-icon-theme.json\"\n      }\n    ],\n    \"viewsContainers\": {\n      \"activitybar\": [\n        {\n          \"id\": \"dataStoryViewContainer\",\n          \"title\": \"DataStory\",\n          \"icon\": \"./themes/icon.png\"\n        }\n      ]\n    },\n    \"views\": {\n      \"dataStoryViewContainer\": [\n        {\n          \"id\": \"nodeDetailsView\",\n          \"name\": \"Node Details\"\n        }\n      ]\n    },\n    \"configuration\": {\n      \"type\": \"object\",\n      \"title\": \"DataStory\",\n      \"properties\": {\n        \"ds-ext.useExternalServer\": {\n          \"type\": \"boolean\",\n          \"default\": false,\n          \"description\": \"Use an external DataStory server to improve data-processing performance (requires restart)\"\n        },\n        \"ds-ext.additionalDsServerCliArgs\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"default\": [],\n          \"description\": \"Additional arguments (as string array) to pass to the ds-server process (e.g., for nodejs flags).\"\n        },\n        \"ds-ext.dsServerPort\": {\n          \"type\": \"number\",\n          \"default\": 3300,\n          \"description\": \"The port to use for the DataStory server.\"\n        }\n      }\n    }\n  },\n  \"vsce\": {\n    \"dependencies\": false\n  },\n  \"scripts\": {\n    \"build:webview\": \"yarn run -T set-env NODE_ENV=production && yarn run -T vite build\",\n    \"build:extension\": \"yarn run -T set-env NODE_ENV=production && yarn run -T zx esbuild.extension.config.mjs\",\n    \"build:ds-server\": \"yarn run -T zx scripts/prepare-ds-server.mjs\",\n    \"build:duckdb\": \"yarn run -T zx scripts/download-duckdb-bindings.mjs\",\n    \"watch:extension\": \"yarn run -T set-env NODE_ENV=development && yarn run -T zx esbuild.extension.config.mjs --watch\",\n    \"watch:webview\": \"yarn run -T set-env NODE_ENV=development && yarn run -T vite build -w --mode development\",\n    \"watch:ds-server\": \"yarn run -T zx scripts/watch-ds-server.mjs\",\n    \"compile-tests\": \"tsc -p . --outDir out\",\n    \"watch-tests\": \"tsc -p . -w --outDir out\",\n    \"pretest\": \"yarn run compile-tests && yarn run build && yarn run lint\",\n    \"lint\": \"eslint src\",\n    \"test\": \"vscode-test\",\n    \"test:unit\": \"yarn run -T vitest --passWithNoTests\",\n    \"release\": \"release-it\"\n  },\n  \"release-it\": {\n    \"git\": false,\n    \"npm\": {\n      \"publish\": false,\n      \"skipChecks\": true,\n      \"versionArgs\": [\n        \"--workspaces-update=false\"\n      ]\n    }\n  },\n  \"devDependencies\": {\n    \"@types/vscode\": \"^1.80.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.3.0\",\n    \"@vitejs/plugin-react\": \"^4.3.1\",\n    \"@vscode/test-cli\": \"^0.0.10\",\n    \"@vscode/test-electron\": \"^2.4.1\",\n    \"esbuild\": \"^0.21.3\",\n    \"tar\": \"^7.4.3\"\n  },\n  \"dependencies\": {\n    \"@data-story/core\": \"workspace:*\",\n    \"@data-story/nodejs\": \"workspace:*\",\n    \"@data-story/ui\": \"workspace:*\",\n    \"dotenv\": \"^17.2.0\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\",\n    \"rxjs\": \"^7.8.1\",\n    \"terminate\": \"^2.8.0\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/ajthinking/data-story.git\"\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/scripts/download-duckdb-bindings.mjs",
    "content": "import { Readable } from 'stream';\nimport * as tar from 'tar';\nimport { $, fetch, fs, path } from 'zx';\nimport './scripts-prelude.mjs';\n\nconst DUCKDB_BINDINGS_VERSION = '1.2.2-alpha.19';\n\nconst bindingsToInstall = [\n  { name: 'darwin-arm64', os: 'darwin', cpu: 'arm64' },\n  { name: 'linux-arm64', os: 'linux', cpu: 'arm64' },\n  { name: 'darwin-x64', os: 'darwin', cpu: 'x64' },\n  { name: 'linux-x64', os: 'linux', cpu: 'x64' },\n  { name: 'win32-x64', os: 'win32', cpu: 'x64' },\n];\n\nconst nodeModulesPath = path.resolve(__dirname, '../install-scripts/node_modules');\nconst duckDBBaseDir = path.join(nodeModulesPath, '@duckdb');\n\nconsole.log('Installing all DuckDB Node.js bindings for universal package...');\n\n// Ensure @duckdb directory exists\nif (!fs.existsSync(duckDBBaseDir)) {\n  fs.mkdirSync(duckDBBaseDir, { recursive: true });\n}\n\nasync function downloadAndExtract(packageName, version, targetDir) {\n  // 1. Get tarball URL using zx\n  $.verbose = true; // Suppress command output\n  const packageWithVersion = `${packageName}@${version}`;\n  const { stdout } = await $`npm view ${packageWithVersion} dist.tarball`;\n  const tarballUrl = stdout.trim();\n\n  if (!tarballUrl) {\n    throw new Error(`Could not get tarball URL for ${packageName}@${version}`);\n  }\n  console.log(`  Downloading ${tarballUrl} for ${packageName}...`);\n\n  // 2. Download tarball using fetch\n  const response = await fetch(tarballUrl);\n\n  if (!response.ok) {\n    throw new Error(`Failed to download ${tarballUrl}. Status: ${response.status}`);\n  }\n\n  // Ensure target directory exists\n  fs.mkdirSync(targetDir, { recursive: true });\n\n  // 3. Extract tarball to target directory\n  const buffer = await response.arrayBuffer();\n  const readable = Readable.from(Buffer.from(buffer));\n\n  return new Promise((resolve, reject) => {\n    readable.pipe(\n      tar.x({\n        strip: 1, // npm package tarballs usually contain a 'package/' root directory, strip: 1 removes it\n        C: targetDir, // Specify extraction directory (cwd)\n      }),\n    )\n      .on('finish', () => {\n        console.log(`  Successfully downloaded and extracted ${packageName} to ${targetDir}`);\n        resolve();\n      })\n      .on('error', (err) => {\n        reject(new Error(`Error extracting tarball for ${packageName}: ${err.message}`));\n      });\n  });\n}\n\nasync function main() {\n    try {\n        await Promise.all(bindingsToInstall.map(async (binding) => {\n            const platformSpecificPackageName = `@duckdb/node-bindings-${binding.name}`;\n            // Target path should be node_modules/@duckdb/node-bindings-platform-arch/\n            const targetPackageDir = path.join(duckDBBaseDir, `node-bindings-${binding.name}`);\n            // Check if directory already exists and contains content (simple check, can be improved if needed)\n            if (fs.existsSync(targetPackageDir) && fs.readdirSync(targetPackageDir).length > 0) {\n                console.log(`  Skipping ${platformSpecificPackageName}: directory already exists and is not empty.`);\n                return;\n            }\n            console.log(`  Processing ${platformSpecificPackageName}...`);\n            await downloadAndExtract(platformSpecificPackageName, DUCKDB_BINDINGS_VERSION, targetPackageDir);\n        }));\n        console.log('All DuckDB Node.js bindings installation attempt completed.');\n    } catch (error) {\n        console.error('Failed to install one or more bindings. Error:', error);\n        throw error;\n    }\n}\n\nawait main().catch(err => {\n  console.error('Installation script failed:', err);\n  process.exit(1);\n});\n"
  },
  {
    "path": "packages/ds-ext/scripts/ds-server-utils.mjs",
    "content": "import { chalk, echo, fs, path } from 'zx';\nimport './scripts-prelude.mjs';\n\nconst rootDir = path.join(__dirname, '../../../');\nconst mkPkgPath = (pkg) => path.join(rootDir, 'packages', pkg);\n\nexport const DS_SERVER_MIN_JS_IN = mkPkgPath('nodejs/dist/ds-server.min.js');\nexport const DS_SERVER_MIN_JS_OUT = mkPkgPath('ds-ext/install-scripts/ds-server.min.js');\n\nexport async function copyDist() {\n  await fs.copy(\n    DS_SERVER_MIN_JS_IN,\n    DS_SERVER_MIN_JS_OUT);\n  echo(chalk.green('Copied ds-server.min.js'));\n}\n"
  },
  {
    "path": "packages/ds-ext/scripts/prepare-ds-server.mjs",
    "content": "import 'zx/globals';\nimport './scripts-prelude.mjs';\nimport { copyDist } from './ds-server-utils.mjs';\n\nprocess.env.FORCE_COLOR = '1';\n\nawait copyDist();\n"
  },
  {
    "path": "packages/ds-ext/scripts/scripts-prelude.mjs",
    "content": "import {$, usePwsh, os } from 'zx';\n\n\nasync function fixPowerShellQuote() {\n  if(os.platform() !== 'win32') {\n    return;\n  }\n  usePwsh();\n  console.log($.shell)\n}\n\nawait fixPowerShellQuote();\n"
  },
  {
    "path": "packages/ds-ext/scripts/watch-ds-server.mjs",
    "content": "import 'zx/globals';\nimport chokidar from 'chokidar';\n\nimport './scripts-prelude.mjs';\nimport { chalk, echo } from 'zx';\nimport { copyDist, DS_SERVER_MIN_JS_IN, DS_SERVER_MIN_JS_OUT } from './ds-server-utils.mjs';\n\n// Initial copy\ntry {\n  await copyDist();\n  echo(chalk.blue('Initial copy completed. Watching for changes...'));\n} catch (err) {\n  echo(chalk.red(`Initial copy failed: ${err.message}`));\n  echo(chalk.yellow('Make sure the source file exists. Running build first might help.'));\n}\n\n// Initialize watcher with chokidar\nconst watcher = chokidar.watch(DS_SERVER_MIN_JS_IN, {\n  persistent: true,\n  awaitWriteFinish: {\n    stabilityThreshold: 300, // Wait 300ms after the last write event\n    pollInterval: 100,       // Poll every 100ms\n  },\n});\n\n// Add event listeners\nwatcher\n  .on('change', async () => {\n    echo(chalk.yellow(`Change detected in ${DS_SERVER_MIN_JS_IN}, copying to ${DS_SERVER_MIN_JS_OUT}...`));\n\n    try {\n      await copyDist();\n    } catch (err) {\n      echo(chalk.red(`Error copying file: ${err.message}`));\n    }\n  })\n  .on('error', error => echo(chalk.red(`Watcher error: ${error}`)))\n  .on('ready', () => {\n    echo(chalk.green(`Watching for changes in ${DS_SERVER_MIN_JS_IN}`));\n    echo(chalk.gray('Press Ctrl+C to stop watching.'));\n  });\n\n// Handle process termination\nprocess.on('SIGINT', () => {\n  watcher.close().then(() => {\n    echo(chalk.blue('\\nStopped watching for changes.'));\n    process.exit(0);\n  });\n});\n"
  },
  {
    "path": "packages/ds-ext/src/AbstractServer.ts",
    "content": "import { DsExtConfig } from './utils/DsExtConfig';\nimport * as vscode from 'vscode';\nimport { ServerStatus } from './DataStoryServerStatusBarItem';\n\nexport interface AbstractServer {\n  start(): void;\n\n  stop(): Promise<void>;\n}\n\nexport interface BaseServerOptions {\n  serverEntryPath: string,\n  dsExtConfig: DsExtConfig,\n  outputChannel: vscode.OutputChannel,\n  workspaceDir: string,\n  onStatusUpdate: (status: ServerStatus, details?: string) => void,\n  onServerExit: (code: number | null, signal: NodeJS.Signals | string | null) => void,\n}\n"
  },
  {
    "path": "packages/ds-ext/src/DataStoryServerStatusBarItem.ts",
    "content": "import * as vscode from 'vscode';\nimport { asyncScheduler, BehaviorSubject, subscribeOn, Subscription } from 'rxjs';\nimport { DataStoryCommands } from './vscode-commands';\n\n// Re-export the ServerStatus enum to avoid circular dependencies\nexport enum ServerStatus {\n  Stopped = 'Stopped',\n  Starting = 'Starting',\n  Running = 'Running',\n  Stopping = 'Stopping',\n  Error = 'Error'\n}\n\nexport class DataStoryServerStatusBarItem implements vscode.Disposable {\n  private statusBarItem: vscode.StatusBarItem;\n  private subscription: Subscription;\n\n  /**\n   * Update the tooltip text of the status bar item\n   * @param tooltip The tooltip text to display\n   */\n  updateTooltip(tooltip: string): void {\n    this.statusBarItem.tooltip = tooltip;\n  }\n\n  constructor(\n    private $status: BehaviorSubject<ServerStatus>,\n    private onStatusUpdated: (status: ServerStatus) => void,\n  ) {\n    this.statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);\n    this.statusBarItem.show();\n\n    this.subscription = this.$status.pipe(subscribeOn(asyncScheduler)).subscribe(status => {\n      this.updateStatusBar(status);\n      this.onStatusUpdated(status);\n    });\n  }\n\n  private updateStatusBar(status: ServerStatus): void {\n    this.statusBarItem.text = `DataStory Server: ${status}`;\n\n    switch (status) {\n      case ServerStatus.Stopped:\n        this.statusBarItem.command = DataStoryCommands.StartServer;\n        this.statusBarItem.tooltip = 'Click to start server';\n        break;\n      case ServerStatus.Starting:\n        this.statusBarItem.command = undefined;\n        this.statusBarItem.tooltip = 'Starting server...';\n        break;\n      case ServerStatus.Running:\n        this.statusBarItem.command = DataStoryCommands.ShowOutput;\n        this.statusBarItem.tooltip = 'Server running';\n        break;\n      case ServerStatus.Stopping:\n        this.statusBarItem.command = undefined;\n        this.statusBarItem.tooltip = 'Stopping server...';\n        break;\n      case ServerStatus.Error:\n        this.statusBarItem.command = DataStoryCommands.RestartServer;\n        this.statusBarItem.tooltip = 'Click to start server';\n        break;\n    }\n  }\n\n  dispose(): void {\n    this.subscription.unsubscribe();\n    this.statusBarItem.dispose();\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/src/DiagramDocument.ts",
    "content": "import * as vscode from 'vscode';\n\nexport class DiagramDocument implements vscode.CustomDocument {\n  static async create(\n    uri: vscode.Uri,\n  ): Promise<DiagramDocument | PromiseLike<DiagramDocument>> {\n    // Read the file content here and create the document\n    const fileData = await vscode.workspace.fs.readFile(uri);\n    return new DiagramDocument(uri, fileData);\n  }\n\n  private _onDidChange = new vscode.EventEmitter<vscode.CustomDocumentEditEvent<DiagramDocument>>();\n  readonly onDidChange = this._onDidChange.event;\n\n  private constructor(\n    public readonly uri: vscode.Uri,\n    private documentData: Uint8Array,\n  ) {}\n\n  get data(): Uint8Array {\n    return this.documentData;\n  }\n\n  dispose(): void {\n    this._onDidChange.dispose();\n  }\n\n  // Save the document to the file system\n  async save(): Promise<void> {\n    await vscode.workspace.fs.writeFile(this.uri, this.documentData);\n  }\n\n  // Save the document to a different location (Save As functionality)\n  async saveAs(targetResource: vscode.Uri): Promise<void> {\n    await vscode.workspace.fs.writeFile(targetResource, this.documentData);\n  }\n\n  // Revert the document to its original state\n  async revert(): Promise<void> {\n    const originalData = await vscode.workspace.fs.readFile(this.uri);\n    this.documentData = originalData;\n  }\n\n  // Backup document, required for untitled or dirty editors\n  async backup(destination: vscode.Uri, _token: vscode.CancellationToken): Promise<vscode.CustomDocumentBackup> {\n    await this.saveAs(destination);\n    return {\n      id: destination.toString(),\n      delete: () => vscode.workspace.fs.delete(destination),\n    };\n  }\n\n  // A method to update the document data\n  update(newData: Uint8Array) {\n    this.documentData = newData;\n    this._onDidChange.fire({\n      document: this,\n      undo: () => {}, // TODO: Implement proper undo if needed\n      redo: () => {},  // TODO: Implement proper redo if needed\n    });\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/src/DiagramEditorProvider.ts",
    "content": "import * as vscode from 'vscode';\nimport { DiagramDocument } from './DiagramDocument';\nimport path from 'path';\nimport { MessageHandler } from './MessageHandler';\nimport { onToast } from './messageHandlers/onToast';\nimport { onEdgeDoubleClick } from './messageHandlers/onEdgeDoubleClick';\nimport { ServerLauncher } from './serverLauncher';\n\nexport class DiagramEditorProvider implements vscode.CustomEditorProvider<DiagramDocument> {\n  public readonly onDidChangeCustomDocument = new vscode.EventEmitter<vscode.CustomDocumentEditEvent<DiagramDocument>>().event;\n  private contentMap = new Map<string, DiagramDocument>();\n\n  constructor(\n    private readonly context: vscode.ExtensionContext,\n    private readonly serverLauncher: ServerLauncher,\n  ) {}\n\n  /**\n   * openCustomDocument is called when the first time an editor for a given resource is opened.\n   * When multiple instances of the editor are opened or closed, the OpenCustomDocument method won't be re-invoked.\n   */\n  async openCustomDocument(\n    uri: vscode.Uri,\n    _openContext: vscode.CustomDocumentOpenContext,\n    _token: vscode.CancellationToken,\n  ): Promise<DiagramDocument> {\n    // Initialize storage with diagram ID from the file name\n    const diagramId = this.getDiagramId(uri);\n\n    const diagramDocument = await DiagramDocument.create(uri);\n    this.contentMap.set(diagramId, diagramDocument);\n    return diagramDocument;\n  }\n\n  async resolveCustomEditor(\n    document: DiagramDocument,\n    webviewPanel: vscode.WebviewPanel,\n    _token: vscode.CancellationToken,\n  ): Promise<void> {\n    webviewPanel.webview.options = {\n      ...webviewPanel.webview.options,\n      enableScripts: true,\n    };\n\n    // Set the webview's HTML content\n    await this.serverLauncher.ensureStarted();\n    webviewPanel.webview.html = this.getWebviewContent(webviewPanel.webview, document);\n\n    const postMessage = (msg: any) => {\n      // Webview is disposed, but webviewPanel.postMessage is still being referenced. To prevent errors, we need to mock webviewPanel.postMessage.\n      if (webviewPanel?.webview?.postMessage) {\n        return webviewPanel?.webview?.postMessage(msg);\n      }\n    };\n\n    const disposables: (Promise<() => void>)[] = [];\n    const unsubscribe = webviewPanel.webview.onDidReceiveMessage(event => {\n      const handlers: Record<string, MessageHandler> = {\n        toast: onToast,\n        onEdgeDoubleClick,\n      };\n\n      const handler = handlers[event.type];\n      if (!handler) {\n        console.error(`No handler found for event type: ${event.type}. Available handlers: ${Object.keys(handlers).join(', ')}`);\n        return;\n      }\n\n      // @ts-ignore\n      const disposable = handler({ postMessage, event, document });\n      if(typeof disposable === 'function' && disposable){\n        disposables.push(disposable);\n      }\n    });\n\n    webviewPanel.onDidDispose(() => {\n      unsubscribe.dispose();\n      disposables.forEach(async (disposable) => (await disposable)());\n    });\n  }\n\n  private getWebviewContent(webview: vscode.Webview, document: DiagramDocument): string {\n    const mainScript = path.join(this.context.extensionPath, 'dist', 'app', 'app.mjs');\n    const diagramFilePath = document.uri.fsPath;\n\n    const scriptUri = webview.asWebviewUri(\n      vscode.Uri.file(mainScript),\n    );\n\n    const serverEndpoint = this.serverLauncher.serverEndpoint;\n    // Return HTML content for the Webview\n    return `\n        <!DOCTYPE html>\n        <html lang=\"en\">\n        <head>\n            <meta charset=\"UTF-8\">\n            <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n            <title>React App</title>\n        </head>\n        <body>\n            <div id=\"root\"></div>\n            <script type=\"module\" src=\"${scriptUri}\"></script>\n            <script>\n                // Provide the VS Code API and initial data (file URI and diagram content)\n                window.vscode = acquireVsCodeApi();\n                window.dsInitialData = {\n                  documentId: ${JSON.stringify(diagramFilePath)},\n                  serverEndpoint: \"${serverEndpoint}\"\n                }\n            </script>\n        </body>\n        </html>\n    `;\n  }\n\n  provideDiagramContent(uri: vscode.Uri): DiagramDocument {\n    const diagramId = this.getDiagramId(uri);\n    const document = this.contentMap.get(diagramId);\n    if (!document) {\n      throw new Error('Could not find document');\n    }\n\n    return document;\n  }\n  // Save changes to the document\n  saveCustomDocument(document: DiagramDocument, cancellation: vscode.CancellationToken): Thenable<void> {\n    return document.save();\n  }\n\n  // Save the document as a new file\n  saveCustomDocumentAs(document: DiagramDocument, destination: vscode.Uri, cancellation: vscode.CancellationToken): Thenable<void> {\n    return document.saveAs(destination);\n  }\n\n  // Revert the document to its original state\n  revertCustomDocument(document: DiagramDocument, cancellation: vscode.CancellationToken): Thenable<void> {\n    return document.revert();\n  }\n\n  // Handle document backup (for dirty or untitled files)\n  backupCustomDocument(\n    document: DiagramDocument,\n    context: vscode.CustomDocumentBackupContext, // Use CustomDocumentBackupContext instead of Uri\n    cancellation: vscode.CancellationToken,\n  ): Thenable<vscode.CustomDocumentBackup> {\n    return document.backup(context.destination, cancellation);\n  }\n\n  private getDiagramId(uri: vscode.Uri): string {\n    return uri.toString();\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/src/ExternalProcessServer.ts",
    "content": "import { DsExtConfig } from './utils/DsExtConfig';\nimport * as vscode from 'vscode';\nimport * as cp from 'child_process';\nimport * as path from 'path';\nimport { ServerStatus } from './DataStoryServerStatusBarItem';\nimport terminate from 'terminate/promise';\nimport { AbstractServer, BaseServerOptions } from './AbstractServer';\n\nexport interface ExternalProcessServerOptions extends BaseServerOptions {\n  nodeCmd: string,\n}\n\nexport class ExternalProcessServer implements AbstractServer {\n  private childProcess: cp.ChildProcess | undefined;\n\n  constructor(private options: ExternalProcessServerOptions) {\n  }\n\n  start() {\n    this.options.outputChannel.appendLine(`[Launcher] Starting server from: ${this.options.serverEntryPath}`);\n    this.options.outputChannel.appendLine(`[Launcher] Config: Port=${this.options.dsExtConfig.dsServerPort}, Workspace=${this.options.workspaceDir}`);\n\n    try {\n      const nodeCmd = 'node';\n      // We need to modify the test-server.ts file to use our port before running the watch:server script\n      const serverEntry = path.join(this.options.serverEntryPath, 'ds-server.min.js');\n\n      // Get additional arguments from configuration\n      const additionalDsServer = this.options.dsExtConfig.additionalDsServerCliArgs || [];\n\n      // First, let's check if the file exists\n      const args = [\n        ...additionalDsServer,\n        serverEntry, '-p', this.options.dsExtConfig.dsServerPort.toString(), '-w', this.options.workspaceDir,\n      ];\n      this.options.outputChannel.appendLine(`[Launcher] Running command: ${nodeCmd} ${args.join(' ')}`);\n      this.childProcess = cp.spawn(\n        nodeCmd,\n        args,\n        {\n          stdio: [ 'pipe', 'pipe', 'pipe' ], // Pipe stdin, stdout, stderr\n          shell: false,\n          env: { ...process.env }, // Inherit parent environment\n        },\n      );\n\n      this.childProcess.stdout?.on('data', (data) => {\n        const message = data.toString();\n        this.options.outputChannel.append(`[Server] ${message}`); // Log stdout\n        if (message.includes('Server started')) {\n          this.options.onStatusUpdate(ServerStatus.Running);\n        }\n      });\n\n      this.childProcess.stderr?.on('data', (data) => {\n        const message = data.toString();\n        this.options.outputChannel.appendLine(`[Server ERROR] ${message}`); // Log stderr\n        // Optionally show error message immediately, or wait for exit code\n        // vscode.window.showErrorMessage(`Server error: ${message.substring(0, 100)}...`);\n        // Consider setting status to Error only on non-zero exit or specific errors\n      });\n\n      this.childProcess.on('error', (err) => {\n        this.options.outputChannel.appendLine(`[Launcher ERROR] Failed to start server process: ${err.message}`);\n        vscode.window.showErrorMessage(`Failed to start server: ${err.message}`);\n        this.options.onServerExit(null, 'error'); // Treat launch error as an exit\n      });\n\n      this.childProcess.on('close', (code, signal) => {\n        this.options.outputChannel.appendLine(`[Launcher] Server process exited with code ${code}, signal ${signal}.`);\n        this.options.onServerExit(code, signal);\n      });\n    } catch (error: any) {\n      this.options.outputChannel.appendLine(`[Launcher CATCH] Error spawning server: ${error.message}`);\n      vscode.window.showErrorMessage(`Error launching server: ${error.message}`);\n      this.options.onServerExit(null, 'catch');\n    }\n  }\n\n  async stop(): Promise<void> {\n    if (this.childProcess && this.childProcess.pid) {\n      // write '<exit>/n' to stdin\n      this.childProcess.stdin?.write('<exit>\\n');\n      // Use the terminate package in case of https://github.com/volta-cli/volta/issues/36\n      await terminate(this.childProcess.pid);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/src/InProcessServer.ts",
    "content": "import { AbstractServer, BaseServerOptions } from './AbstractServer';\nimport { ServerStatus } from './DataStoryServerStatusBarItem';\nimport * as path from 'path';\n\nexport class InProcessServer implements AbstractServer {\n  private abortController: AbortController | undefined;\n  private serverPromise: Promise<void> | undefined;\n\n  constructor(private options: BaseServerOptions) {\n  }\n\n  start(): void {\n    this.options.outputChannel.appendLine(`[InProcess] Starting in-process server from: ${this.options.serverEntryPath}`);\n    this.options.outputChannel.appendLine(`[InProcess] Config: Port=${this.options.dsExtConfig.dsServerPort}, Workspace=${this.options.workspaceDir}`);\n\n    try {\n      this.options.onStatusUpdate(ServerStatus.Starting);\n\n      // Create abort controller for graceful shutdown\n      this.abortController = new AbortController();\n\n      // Start the server asynchronously\n      this.serverPromise = this.startServerAsync();\n    } catch (error: any) {\n      this.options.outputChannel.appendLine(`[InProcess CATCH] Error starting in-process server: ${error.message}`);\n      this.options.onStatusUpdate(ServerStatus.Error, error.message);\n      this.options.onServerExit(null, 'error');\n    }\n  }\n\n  private async startServerAsync(): Promise<void> {\n    try {\n      // Resolve the server entry path to the mjs file\n      const serverEntryMjs = path.join(this.options.serverEntryPath, 'ds-server.min.js');\n\n      this.options.outputChannel.appendLine(`[InProcess] Importing server module from: ${serverEntryMjs}, ${import.meta.resolve?.(serverEntryMjs)}`);\n\n      // Dynamically import the mjs module\n      const serverModule = await import(serverEntryMjs);\n\n      if (!serverModule.startServer || typeof serverModule.startServer !== 'function') {\n        throw new Error('startServer function not found in the server module');\n      }\n\n      // Call startServer with the abort signal and configuration\n      await serverModule.startServer({\n        port: this.options.dsExtConfig.dsServerPort,\n        workingDir: this.options.workspaceDir,\n        abortSignal: this.abortController!.signal,\n      });\n      this.options.onStatusUpdate(ServerStatus.Running);\n    } catch (error: any) {\n      if (error.name === 'AbortError') {\n        this.options.outputChannel.appendLine('[InProcess] Server was aborted');\n        this.options.onServerExit(0, 'SIGTERM');\n      } else {\n        this.options.outputChannel.appendLine(`[InProcess ERROR] Server error: ${error.message}`);\n        this.options.onStatusUpdate(ServerStatus.Error, error.message);\n        this.options.onServerExit(1, null);\n      }\n    }\n  }\n\n  async stop(): Promise<void> {\n    if (this.abortController) {\n      this.options.outputChannel.appendLine('[InProcess] Stopping in-process server...');\n      this.abortController.abort();\n\n      // Wait for the server to finish shutting down\n      if (this.serverPromise) {\n        try {\n          await this.serverPromise;\n        } catch (error) {\n          // Expected if aborted\n        }\n      }\n\n      this.abortController = undefined;\n      this.serverPromise = undefined;\n    }\n    this.options.outputChannel.appendLine('[InProcess] In-process server stopped');\n    this.options.onStatusUpdate(ServerStatus.Stopped);\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/src/JsonReadonlyProvider.ts",
    "content": "import * as vscode from 'vscode';\n\nconsole.log('EventEmitter', !!vscode.EventEmitter);\nexport class JsonReadonlyProvider implements vscode.TextDocumentContentProvider {\n  // Store the content corresponding to each URI\n  private contentMap = new Map<string, string>();\n  readonly onDidChangeEmitter = new vscode.EventEmitter<vscode.Uri>();\n  readonly onDidChange = this.onDidChangeEmitter.event;\n\n  // Update the content of the specified URI\n  updateContent(uri: vscode.Uri, content: string) {\n    this.contentMap.set(uri.toString(), content);\n    // Notify VS Code that the content has been updated\n    this.onDidChangeEmitter.fire(uri);\n  }\n\n  provideTextDocumentContent(uri: vscode.Uri): string {\n    return this.contentMap.get(uri.toString()) || '';\n  }\n\n  dispose() {\n    this.contentMap.clear();\n    this.onDidChangeEmitter.dispose();\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/src/MessageHandler.ts",
    "content": "import { DiagramDocument } from './DiagramDocument';\n\nexport type MessageHandlerArgs = {\n  postMessage: (msg: any) => boolean | undefined;\n  event: any;\n  document: DiagramDocument,\n};\n\nexport type MessageHandler = (args: MessageHandlerArgs) => Promise<() => void> | Promise<void>;\n"
  },
  {
    "path": "packages/ds-ext/src/app/DiagramApp.tsx",
    "content": "import React, { useEffect, useCallback } from 'react';\nimport { debounce, Diagram } from '@data-story/core';\nimport { AddNodeControl, ConfigControl, CopyAsJsonControl, DataStory, RunControl, WorkspaceApiClientImplement } from '@data-story/ui';\nimport { VsCodeToast } from './VsCodeToast';\nimport { onDrop } from './onDrop';\nimport { dsExtensionInitialData } from './dsExtensionInitialData';\nimport { createVsCodeClient } from './createVsCodeClient';\n\ninterface DiagramAppProps {\n  client: WorkspaceApiClientImplement;\n}\n\nexport default function DiagramApp({ client: socketClient }: DiagramAppProps) {\n  /**\n   * socketClient: This is the main client of ds-ext, responsible for handling diagram data.\n   * vscodeClient: Primarily used to manage native operations in VSCode.\n   */\n  const vscodeClient = createVsCodeClient(window.vscode);\n\n  const handleChange = useCallback(\n    debounce(async (diagram: Diagram) => {\n      socketClient!.updateDiagram?.(diagram, dsExtensionInitialData().documentId);\n    }, 100), // Debounced with 100ms delay11\n    [socketClient],\n  );\n\n  // useEffect for dispose is now handled in the parent component (index.tsx)\n\n  function handleEdgeDoubleClick(edgeId: string): void {\n    vscodeClient.onEdgeDoubleClick(edgeId);\n  }\n\n  return (\n    <div style={{ width: '100%', height: '100vh' }}>\n      <DataStory\n        diagramId={dsExtensionInitialData().documentId}\n        client={socketClient}\n        hideSidebar={false}\n        hideActivityBar={true}\n        initSidebarKey={undefined}\n        key={'abc'}\n        onChange={handleChange}\n        onEdgeDoubleClick={handleEdgeDoubleClick}\n        onDrop={onDrop}\n        controls={[<RunControl />, <AddNodeControl />, <CopyAsJsonControl />, <ConfigControl />]}\n      >\n        <VsCodeToast postMessage={window.vscode.postMessage} />\n      </DataStory>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/ds-ext/src/app/TableApp.tsx",
    "content": "import React, { useRef, useState, useEffect } from 'react';\nimport { DataStoryNodeData, StandaloneTable, useObserverTable, WorkspaceApiClientImplement } from '@data-story/ui';\nimport { ItemValue, Table } from '@data-story/core';\n\ninterface TableAppProps {\n  edgeId: string;\n  client: WorkspaceApiClientImplement;\n}\n\nconst initialScreenCount = 20;\nexport const TableApp = ({ edgeId, client }: TableAppProps) => {\n  const parentRef = useRef<HTMLDivElement>(null);\n  const [items, setItems] = useState<ItemValue[]>([]);\n  const [isDataFetched, setIsDataFetched] = useState(true);\n  const data = {\n    id: edgeId,\n    ...Table,\n    inputs: [\n      {\n        ...Table.inputs[0],\n        id: `${edgeId}.input`,\n        schema: {},\n      },\n    ],\n    outputs: [],\n  } as unknown as DataStoryNodeData;\n\n  const { loadMore } = useObserverTable({\n    linkIds: [edgeId],\n    client,\n    setIsDataFetched,\n    setItems,\n    items,\n    parentRef,\n  });\n\n  useEffect(() => {\n    async function fetchData() {\n      await loadMore.current(initialScreenCount);\n    }\n    fetchData();\n  }, [loadMore.current]);\n\n  return (\n    <div>\n      <StandaloneTable\n        isDataFetched={isDataFetched}\n        items={items}\n        data={data}\n        parentRef={parentRef}\n        rowCount={initialScreenCount}\n      />\n    </div>\n  );\n};\n\nexport default React.memo(TableApp);\n"
  },
  {
    "path": "packages/ds-ext/src/app/VsCodeToast.tsx",
    "content": "import React from 'react';\nimport { DataStoryEvents, DataStoryEventType, useDataStoryEvent } from '@data-story/ui';\nimport { multiline } from '@data-story/core';\n\nexport function VsCodeToast({ postMessage }: {\n  postMessage: (message: {\n    type: string;\n    message?: string;\n    [key: string]: any;\n  }) => void\n}) {\n  useDataStoryEvent((event: DataStoryEventType) => {\n    const info = {\n      type: 'toast',\n      message: '',\n      status: 'success',\n    };\n    switch (event.type) {\n      case DataStoryEvents.RUN_SUCCESS:\n        const formatter = new Intl.NumberFormat('en-US');\n        info.message = multiline`\n          Diagram executed successfully!\n          Execution time: ${formatter.format(event.payload.time)} ms\n        `;\n        break;\n      case DataStoryEvents.RUN_ERROR:\n        info.message = `Diagram execution failed! Error was: ${event.payload.message}`;\n        info.status = 'error';\n        break;\n      case DataStoryEvents.SAVE_SUCCESS:\n        // info.message = 'Diagram saved successfully!';\n        break;\n      case DataStoryEvents.SAVE_ERROR:\n        console.error(event.payload);\n        info.message = 'Diagram save failed!';\n        info.status = 'error';\n        break;\n      case DataStoryEvents.COPY_JSON_SUCCESS:\n        info.message = 'JSON copied to clipboard!';\n        break;\n      case DataStoryEvents.COPY_JSON_ERROR:\n        console.error(event.payload);\n        info.message = 'Failed to copy JSON to clipboard!';\n        info.status = 'error';\n        break;\n      case DataStoryEvents.RUN_ABORT:\n        info.message = 'Execution aborted successfully!';\n        break;\n      default:\n        break;\n    }\n    postMessage(info);\n  });\n\n  return (\n    <div></div>\n  );\n}\n"
  },
  {
    "path": "packages/ds-ext/src/app/createAndBootApp.ts",
    "content": "import { Application, coreNodeProvider, remoteNodeProvider } from '@data-story/core';\nimport { nodeJsProvider } from '@data-story/nodejs';\n\nexport const createAndBootApp = async () => {\n  const app = new Application();\n  app.register([\n    coreNodeProvider,\n    nodeJsProvider,\n    remoteNodeProvider,\n  ]);\n\n  await app.boot();\n\n  return app;\n};"
  },
  {
    "path": "packages/ds-ext/src/app/createSocketClient.ts",
    "content": "import { Observable, retry, share } from 'rxjs';\nimport {\n  createTransport,\n  type TransportConfig,\n  WorkspaceApiClient,\n  type WorkspaceApiClientImplement,\n} from '@data-story/ui';\nimport { webSocket, WebSocketSubject } from 'rxjs/webSocket';\nimport { dsExtensionInitialData } from './dsExtensionInitialData';\n\nfunction createSocketTransport(socket: WebSocketSubject<any>) {\n  const maxReconnectTries = 100;\n  const reconnectTimeoutMs = 1000;\n  let messages$: Observable<{ msgId: string; [p: string]: unknown }> = socket.pipe(\n    retry({ count: maxReconnectTries, delay: reconnectTimeoutMs }),\n    share(),\n  );\n  const config: TransportConfig = {\n    postMessage: (msg) => {\n      socket.next(msg);\n    },\n    messages$: messages$,\n  };\n  return createTransport(config);\n}\n\nexport const createSocketClient = (): {\n  client: WorkspaceApiClientImplement,\n  dispose: () => void\n} => {\n  const socket$ = webSocket({\n    url: dsExtensionInitialData().serverEndpoint,\n    openObserver: {\n      next: () => {\n        console.log(`Connected to server: ${dsExtensionInitialData().serverEndpoint}`);\n      },\n    },\n    closeObserver: {\n      next: () => {\n        console.log('WebSocket closed.');\n      },\n    },\n  });\n\n  const socketKeepAlive = socket$.subscribe();\n\n  const transport = createSocketTransport(socket$);\n  return {\n    client: new WorkspaceApiClient(transport),\n    dispose: () => {\n      socketKeepAlive.unsubscribe();\n      socket$.complete();\n    },\n  };\n};\n"
  },
  {
    "path": "packages/ds-ext/src/app/createVsCodeClient.ts",
    "content": "import { Observable } from 'rxjs';\nimport {\n  createTransport,\n  type TransportConfig,\n  type WorkspaceApiClientImplement,\n  WorkspaceApiClient,\n  Transport,\n} from '@data-story/ui';\n\nfunction createVsCodeTransport(vscode: any) {\n  const config: TransportConfig = {\n    postMessage: (msg) => {\n      vscode.postMessage(msg);\n    },\n    messages$: new Observable<{ msgId: string; [p: string]: unknown }>((subscriber) => {\n      window.addEventListener('message', (event) => {\n        if (event.data.msgId) {\n          subscriber.next(event.data);\n        }\n      });\n    }),\n  };\n  return createTransport(config);\n}\n\nexport const createVsCodeClient = (vscode: any) => {\n  const transport = createVsCodeTransport(vscode);\n  return new VsCodeApiClient(transport);\n};\n\nclass VsCodeApiClient {\n  constructor(private transport: Transport) {\n  }\n\n  toast(message: string) {\n    this.transport.sendAndReceive({\n      type: 'toast',\n      message,\n    });\n  }\n\n  onEdgeDoubleClick(edgeId: string): void {\n    this.transport.sendAndReceive({\n      type: 'onEdgeDoubleClick',\n      edgeId,\n    });\n  }\n}"
  },
  {
    "path": "packages/ds-ext/src/app/dsExtensionInitialData.ts",
    "content": "export interface DsInitialData {\n  serverEndpoint: string;\n  documentId: string;\n}\n\ndeclare global {\n  interface Window {\n    dsInitialData: DsInitialData;\n  }\n}\n\nexport const dsExtensionInitialData = () => window.dsInitialData;\n"
  },
  {
    "path": "packages/ds-ext/src/app/fixCodeMirrorCopyPaste.ts",
    "content": "function isInCodeMirrorEditor(el: Element | null) {\n  // check if the element is inside div.cm-editor\n  let depth = 0;\n  let maxDepth = 10;\n  while (el) {\n    if (el.classList.contains('cm-editor')) {\n      return true;\n    }\n    el = el.parentElement;\n    depth++;\n    if (depth > maxDepth) {\n      break;\n    }\n  }\n  return false;\n}\n\nfunction fixCopyPaste() {\n  // @ts-expect-error hacked is defined at runtime\n  if (document.execCommand.hacked) {\n    return;\n  }\n  const oldExecCmd = document.execCommand.bind(document);\n  const hackExecCommand: typeof document.execCommand = (cmd, ...args) => {\n    const el = document.activeElement;\n    if (el != null && isInCodeMirrorEditor(el)) {\n      if (cmd === 'paste') {\n        navigator.clipboard.readText().then(txt => {\n          const dt = new DataTransfer();\n          dt.setData('text/plain', txt);\n          el.dispatchEvent(new ClipboardEvent('paste', { clipboardData: dt }));\n        }).catch(console.error);\n\n        return true;\n      } else if (cmd === 'cut' || cmd === 'copy') {\n        const dt = new DataTransfer();\n        el.dispatchEvent(new ClipboardEvent(cmd, { clipboardData: dt }));\n        void navigator.clipboard.writeText(dt.getData('text/plain'));\n\n        return true;\n      }\n    }\n\n    return oldExecCmd(cmd, ...args);\n  };\n  // @ts-expect-error hacked is defined at runtime\n  hackExecCommand.hacked = true;\n  document.execCommand = hackExecCommand;\n}\n\nfixCopyPaste();\n\n// see https://github.com/microsoft/vscode/issues/232692 for more info\n"
  },
  {
    "path": "packages/ds-ext/src/app/index.css",
    "content": "body {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n    sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n    monospace;\n}\n"
  },
  {
    "path": "packages/ds-ext/src/app/index.tsx",
    "content": "import React, { useEffect } from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport DiagramApp from './DiagramApp';\nimport TableApp from './TableApp';\n\nimport './fixCodeMirrorCopyPaste';\nimport { dsExtensionInitialData } from './dsExtensionInitialData';\nimport { createSocketClient } from './createSocketClient';\n\nconst rootElement = document.getElementById('root') as HTMLElement | null;\n\nconst getCurrentFilePath = () => {\n  const { documentId } = dsExtensionInitialData();\n  return documentId;\n};\n\nconst getEdgeIdFromPath = (path: string) => {\n  const filename = path.split(/[\\\\/]/).pop() || '';\n  return filename.replace(/\\.table\\.ds$/, '');\n};\n\nconst App = () => {\n  const filePath = getCurrentFilePath();\n  const edgeId = getEdgeIdFromPath(filePath);\n  const isTableFile = filePath.endsWith('.table.ds');\n\n  /**\n   * socketClient: This is the main client of ds-ext, responsible for handling diagram data.\n   * Moved from DiagramApp to be shared with both DiagramApp and TableApp.\n   */\n  const { client: socketClient, dispose } = createSocketClient();\n\n  useEffect(() => {\n    return () => {\n      dispose();\n    };\n  }, [dispose]);\n\n  return (\n    <React.StrictMode>\n      {isTableFile ? (\n        <TableApp\n          edgeId={edgeId}\n          client={socketClient}\n        />\n      ) : (\n        <DiagramApp\n          client={socketClient}\n        />\n      )}\n    </React.StrictMode>\n  );\n};\n\nif (rootElement) {\n  const root = ReactDOM.createRoot(rootElement);\n  root.render(\n    <React.StrictMode>\n      <App />\n    </React.StrictMode>,\n  );\n} else {\n  console.error('Failed to find the root element. App cannot render.');\n}\n"
  },
  {
    "path": "packages/ds-ext/src/app/onDrop.ts",
    "content": "import { NodeDescription, str } from '@data-story/core';\n\nexport const onDrop = (event: any, addNodeFromDescription: any) => {\n  event.preventDefault();\n\n  if(isDropFromOs(event)) return onDropFromOs(event, addNodeFromDescription);\n\n  if(isDropFromExplorer(event)) return onDropFromExplorer(event, addNodeFromDescription);\n};\n\nexport const isDropFromOs = (event: any) => {\n  return event.dataTransfer.files.length;\n};\n\nexport const isDropFromExplorer = (event: any) => {\n  return event.dataTransfer.getData('text/plain');\n};\n\nexport const onDropFromOs = (event: any, addNodeFromDescription: any) => {\n  const file = event.dataTransfer.files[0];\n  const path = file.path;\n  const filename = path.split('/').pop();\n  const extention = filename.split('.').pop();\n\n  if (extention === 'json') {\n    const description = createJsonFileReadDescription(filename, path);\n    addNodeFromDescription(description);\n\n    return;\n  }\n\n  if (extention === 'csv') {\n    const description = createCsvFileReadDescription(filename, path);\n    addNodeFromDescription(description);\n\n    return;\n  }\n\n  console.warn({\n    message: 'Currently, only JSON and CSV files are supported.',\n    path,\n    filename,\n    extention,\n  });\n};\n\nexport const onDropFromExplorer = (event: any, addNodeFromDescription: any) => {\n  // DROP FROM EXPLORER\n  const path = event.dataTransfer.getData('text/plain');\n  const filename = path.split('/').pop();\n  const extention = filename.split('.').pop();\n\n  if (extention === 'json') {\n    const description = createJsonFileReadDescription(filename, path);\n    addNodeFromDescription(description);\n    return;\n  }\n\n  if (extention === 'csv') {\n    const description = createCsvFileReadDescription(filename, path);\n    addNodeFromDescription(description);\n    return;\n  }\n\n  console.warn({\n    message: 'Currently, only JSON and CSV files are supported.',\n    path,\n    filename,\n    extention,\n  });\n};\n\nexport const createJsonFileReadDescription = (filename: string, path: string): NodeDescription => {\n  return {\n    computerType: 'JsonFile.read',\n    label: filename,\n    inputs: [],\n    outputs: [\n      {\n        name: 'output',\n        schema: {},\n      },\n      {\n        name: 'errors',\n        schema: {},\n      },\n    ],\n    params: [\n      str({\n        name: 'file_path',\n        label: 'File path',\n        help: 'File path',\n        value: path,\n      }),\n      str({\n        name: 'items_path',\n        label: 'Items Path',\n        help: 'Items path',\n      }),\n    ],\n  };\n};\n\nexport const createCsvFileReadDescription = (filename: string, path: string): NodeDescription => {\n  return {\n    name: 'CsvFile.read',\n    label: filename,\n    inputs: [],\n    outputs: [\n      {\n        name: 'output',\n        schema: {},\n      },\n      {\n        name: 'errors',\n        schema: {},\n      },\n    ],\n    params: [\n      str({\n        name: 'file_path',\n        label: 'File path (supports glob patterns)',\n        help: 'File path, e.g., **/*.csv',\n        value: path,\n      }),\n      str({\n        name: 'delimiter',\n        label: 'Delimiter',\n        help: 'CSV delimiter character (default: ,)',\n        value: ',',\n      }),\n      str({\n        name: 'batch_size',\n        label: 'Batch size',\n        help: 'Number of records to yield in each batch (default: 1000)',\n        value: '1000',\n      }),\n    ],\n  };\n};"
  },
  {
    "path": "packages/ds-ext/src/app/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"lib\": [\n      \"DOM\",\n      \"DOM.Iterable\",\n      \"ESNext\"\n    ],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"react-jsx\",\n    \"noEmit\": false,\n    \"incremental\": true,\n    \"baseUrl\": \"./\"\n  },\n  \"include\": [\n    \"./**/*\",\n    \"types/global.d.ts\"\n  ],\n  \"exclude\": [\n    \"node_modules\",\n    \"build\",\n    \"dist\"\n  ]\n}"
  },
  {
    "path": "packages/ds-ext/src/app/types/global.d.ts",
    "content": "// src/types/global.d.ts\n\ndeclare global {\n  interface Window {\n    initialData: any;\n    vscode: any;\n  }\n}\n\nexport { };\n"
  },
  {
    "path": "packages/ds-ext/src/cjs-shim.ts",
    "content": "import { createRequire } from 'node:module';\nimport path from 'node:path';\nimport url from 'node:url';\n\nglobalThis.require = createRequire(import.meta.url);\nglobalThis.__filename = url.fileURLToPath(import.meta.url);\nglobalThis.__dirname = path.dirname(__filename);\n"
  },
  {
    "path": "packages/ds-ext/src/commands/createDataStoryDBPath.ts",
    "content": "import * as fs from 'fs';\nimport * as path from 'path';\nimport * as vscode from 'vscode';\n\nexport function createDataStoryDBPath(): string {\n  const workspacePath = vscode.workspace.workspaceFolders![0].uri.fsPath;\n\n  // Construct the datastory directory path\n  const datastoryDir = path.join(workspacePath, '.datastory');\n\n  // Check if the datastory directory exists, create if it doesn't\n  if (!fs.existsSync(datastoryDir)) {\n    fs.mkdirSync(datastoryDir);\n  }\n\n  const dbPath = path.join(datastoryDir, 'execution.db');\n\n  return dbPath;\n}\n"
  },
  {
    "path": "packages/ds-ext/src/commands/createDemosDirectory.ts",
    "content": "import * as vscode from 'vscode';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as demos from './demos';\nimport { makeDensityDatasets } from './makeDensityDatasets';\n\nexport async function createDemosDirectory() {\n  const workspaceFolders = vscode.workspace.workspaceFolders;\n  if (!workspaceFolders) {\n    vscode.window.showErrorMessage('No workspace folder is open.');\n    return;\n  }\n\n  const workspaceRoot = workspaceFolders[0].uri.fsPath;\n  const demosDir = path.join(workspaceRoot, '.datastory/demos');\n\n  try {\n    // Nuke directory if it already exists\n    if (fs.existsSync(demosDir)) {\n      fs.rmSync(demosDir, { recursive: true });\n    }\n\n    // Create the directory\n    fs.mkdirSync(demosDir, { recursive: true });\n\n    // Create a demo data directory\n    fs.mkdirSync(path.join(demosDir, 'data'));\n\n    // Add a todos.json in the data directory\n    fs.writeFileSync(path.join(demosDir, 'data', 'todos.json'), JSON.stringify([\n      { id: 1, title: 'Learn DataStory', completed: true },\n      { id: 2, title: 'Build a DataStory extension', completed: false },\n      { id: 3, title: 'Profit', completed: false },\n    ], null, 2));\n\n    // Create density datasets\n    makeDensityDatasets(path.join(demosDir, 'data', 'densities'));\n\n    for (const [moduleName, demoFactory] of Object.entries(demos)) {\n      const filePath = path.join(demosDir, `${moduleName}.ds`);\n      const demoData = await demoFactory();\n      fs.writeFileSync(filePath, JSON.stringify(demoData, null, 2));\n    }\n\n    vscode.window.showInformationMessage('Created DataStory demos directory.');\n  } catch (error: any) {\n    vscode.window.showErrorMessage(`Error creating demo files: ${error.message}`);\n  }\n}"
  },
  {
    "path": "packages/ds-ext/src/commands/demos/create_to_json_file_write.ts",
    "content": "import { getDemoApp } from '../getDemoApp';\n\nexport const create_to_json_file_write = async () => (await getDemoApp())\n  .getDiagramBuilder()\n  .add('Create')\n  .add('JsonFile.write', {\n    file_path: '.datastory/demos/output/items.json',\n  })\n  .connect()\n  .place()\n  .get();\n"
  },
  {
    "path": "packages/ds-ext/src/commands/demos/empty.ts",
    "content": "import { getDemoApp } from '../getDemoApp';\n\nexport const empty = async () => (await getDemoApp())\n  .getDiagramBuilder()\n  .get();"
  },
  {
    "path": "packages/ds-ext/src/commands/demos/index.ts",
    "content": "export { create_to_json_file_write } from './create_to_json_file_write';\nexport { empty } from './empty';\nexport { json_file_read_to_table } from './json_file_read_to_table';\nexport { signal_to_table } from './signal_to_table';\nexport { signal_to_table_1m_instant_items } from './signal_to_table_1m_instant_items';"
  },
  {
    "path": "packages/ds-ext/src/commands/demos/json_file_read_to_table.ts",
    "content": "import { getDemoApp } from '../getDemoApp';\n\nexport const json_file_read_to_table = async () => (await getDemoApp())\n  .getDiagramBuilder()\n  .add('JsonFile.read', {\n    file_path: '.datastory/demos/demo_data/todos.json',\n  })\n  .add('Table')\n  .connect()\n  .place()\n  .get();\n"
  },
  {
    "path": "packages/ds-ext/src/commands/demos/signal_to_table.ts",
    "content": "import { getDemoApp } from '../getDemoApp';\n\nexport const signal_to_table = async () => (await getDemoApp())\n  .getDiagramBuilder()\n  .add('Signal')\n  .add('Table')\n  .connect()\n  .place()\n  .get();\n"
  },
  {
    "path": "packages/ds-ext/src/commands/demos/signal_to_table_1m_instant_items.ts",
    "content": "import { getDemoApp } from '../getDemoApp';\n\nexport const signal_to_table_1m_instant_items = async () => (await getDemoApp())\n  .getDiagramBuilder()\n  .add('Signal', { period: 0, count: 1_000_000 })\n  .add('Table')\n  .connect()\n  .place()\n  .get();"
  },
  {
    "path": "packages/ds-ext/src/commands/getDemoApp.ts",
    "content": "import { Application, coreNodeProvider } from '@data-story/core';\nimport { nodeJsProvider } from '@data-story/nodejs';\n\nexport const getDemoApp = async () => {\n  const app = new Application();\n\n  app.register([\n    coreNodeProvider,\n    nodeJsProvider,\n  ]);\n\n  await app.boot();\n\n  return app;\n};"
  },
  {
    "path": "packages/ds-ext/src/commands/makeDensityDatasets.ts",
    "content": "import * as vscode from 'vscode';\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nexport const makeDensityDatasets = (directory: string) => {\n  const datasetsDir = path.join(directory);\n  if (!fs.existsSync(datasetsDir)) fs.mkdirSync(datasetsDir);\n\n  // Utility function to generate an item with schemaDensity\n  const generateItem = (schemaDensity: any) => {\n    const item = {} as any;\n    for (let i = 0; i < schemaDensity; i++) {\n      item[`field_${i}`] = `value_${i}`;\n    }\n    return item;\n  };\n\n  // Utility function to generate files with items\n  const generateFileContent = (itemsDensity: any, schemaDensity: any) => {\n    const items = [];\n    for (let i = 0; i < itemsDensity; i++) {\n      items.push(generateItem(schemaDensity));\n    }\n    return items;\n  };\n\n  // Generate datasets based on density vectors\n  const createDatasets = (fileDensity: any, itemsDensity: any, schemaDensity: any) => {\n    const datasetDir = path.join(datasetsDir, `${fileDensity}_${itemsDensity}_${schemaDensity}`);\n    if (!fs.existsSync(datasetDir)) fs.mkdirSync(datasetDir);\n\n    for (let i = 0; i < fileDensity; i++) {\n      const filePath = path.join(datasetDir, `${i}.json`);\n      const content = generateFileContent(itemsDensity, schemaDensity);\n      fs.writeFileSync(filePath, JSON.stringify(content, null, 2));\n    }\n  };\n\n  // Define your density vectors\n  const fileDensities = [1, 10, 100]; // Low, medium, high file density\n  const itemsDensities = [10, 100, 1000]; // Low, medium, high items density\n  const schemaDensities = [5, 50, 500]; // Low, medium, high schema density\n\n  // Generate all combinations of datasets\n  fileDensities.forEach(fileDensity => {\n    itemsDensities.forEach(itemsDensity => {\n      schemaDensities.forEach(schemaDensity => {\n        createDatasets(fileDensity, itemsDensity, schemaDensity);\n      });\n    });\n  });\n};"
  },
  {
    "path": "packages/ds-ext/src/dsServerHealthChecker.ts",
    "content": "import { catchError, exhaustMap, filter, interval, Observable, of, Subscription } from 'rxjs';\nimport { type OutputChannel, window } from 'vscode';\n\nexport interface HealthCheckInfo {\n  status: boolean,\n  memory: { rss: number, heapTotal: number, heapUsed: number },\n  cpu: { user: number, system: number }\n}\n\nexport interface HealthCheckWithTime {\n  info: HealthCheckInfo | null;\n  durationMs: number;\n}\n\n// Define interface for constructor parameters\nexport interface DsServerHealthCheckerOptions {\n  endpoint: string;\n  intervalMs: number;\n  slowThresholdMs: number;\n  outputChannel: OutputChannel;\n}\n\nexport class DsServerHealthChecker {\n  private subscription?: Subscription;\n  public health$: Observable<HealthCheckWithTime>;\n  private endpoint: string;\n  private intervalMs: number;\n  private slowThresholdMs: number;\n  private outputChannel: OutputChannel;\n  private active = true;\n\n  constructor(options: DsServerHealthCheckerOptions);\n  constructor(\n    endpoint: string, intervalMs: number, slowThresholdMs: number, outputChannel: OutputChannel,\n  );\n  constructor(\n    endpointOrOptions: string | DsServerHealthCheckerOptions,\n    intervalMs?: number,\n    slowThresholdMs?: number,\n    outputChannel?: OutputChannel,\n  ) {\n    // Handle both parameter patterns\n    if (typeof endpointOrOptions === 'object') {\n      // Object parameter pattern\n      this.endpoint = endpointOrOptions.endpoint;\n      this.intervalMs = endpointOrOptions.intervalMs;\n      this.slowThresholdMs = endpointOrOptions.slowThresholdMs;\n      this.outputChannel = endpointOrOptions.outputChannel;\n    } else {\n      // Individual parameters pattern\n      this.endpoint = endpointOrOptions;\n      this.intervalMs = intervalMs!;\n      this.slowThresholdMs = slowThresholdMs!;\n      this.outputChannel = outputChannel!;\n    }\n    this.health$ = interval(this.intervalMs).pipe(\n      filter(() => this.active),\n      exhaustMap(() => this.ping()),\n      catchError(() => of({ info: null, durationMs: 0 })),\n    );\n  }\n\n  activate() {\n    this.active = true;\n  }\n\n  deactivate() {\n    this.active = false;\n  }\n\n  /**\n   * Perform a health check\n   */\n  async ping(): Promise<HealthCheckWithTime> {\n    const start = performance.now();\n    try {\n      const response = await fetch(this.endpoint);\n      const durationMs = performance.now() - start;\n      if (!response.ok) {\n        return { info: null, durationMs };\n      }\n      const info = (await response.json()) as HealthCheckInfo;\n      return { info, durationMs };\n    } catch (e) {\n      const durationMs = performance.now() - start;\n      this.outputChannel.appendLine(`[HEALTH] Health check failed: ${e}`);\n      return { info: null, durationMs };\n    }\n  }\n\n  formatHealthInfo(info: HealthCheckInfo): string {\n    return `Status: ${info.status ? 'Healthy' : 'Unhealthy'}\\n` +\n      'Memory Usage:\\n' +\n      `  RSS: ${(info.memory.rss / 1024 / 1024).toFixed(2)} MB\\n` +\n      `  Heap Total: ${(info.memory.heapTotal / 1024 / 1024).toFixed(2)} MB\\n` +\n      `  Heap Used: ${(info.memory.heapUsed / 1024 / 1024).toFixed(2)} MB\\n` +\n      'CPU Usage (since process start):\\n' +\n      `  User: ${(info.cpu.user / 1000).toFixed(2)} ms\\n` +\n      `  System: ${(info.cpu.system / 1000).toFixed(2)} ms`;\n  }\n\n  start() {\n    this.subscription = this.health$.subscribe(({ info, durationMs }) => {\n      if (durationMs > this.slowThresholdMs) {\n        if (info) {\n          this.outputChannel.appendLine('[HEALTH]' + this.formatHealthInfo(info));\n          this.outputChannel.appendLine(`[HEALTH] Request time: ${durationMs.toFixed(2)} ms`);\n        }\n        window.showWarningMessage('DataStory Server is slow or unresponsive', 'Open logs').then(open => {\n          if (open) {\n            this.outputChannel.show();\n          }\n        });\n      }\n\n      if (!info) {\n        this.outputChannel.appendLine('[HEALTH] Health check failed');\n        this.outputChannel.appendLine(`[HEALTH] Request time: ${durationMs.toFixed(2)} ms`);\n      }\n    });\n  }\n\n  dispose() {\n    this.subscription?.unsubscribe();\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/src/extension.ts",
    "content": "import * as vscode from 'vscode';\nimport { DiagramEditorProvider } from './DiagramEditorProvider';\nimport { JsonReadonlyProvider } from './JsonReadonlyProvider';\nimport { loadWorkspaceEnv } from './utils/loadWorkspaceEnv';\n\nimport { ServerLauncher } from './serverLauncher';\nimport { registerDataStoryCommands } from './vscode-commands';\n\n// --- Global Variables ---\nlet diagramEditorProvider: DiagramEditorProvider;\nlet jsonReadonlyProvider: JsonReadonlyProvider | undefined;\nlet serverLauncher: ServerLauncher | undefined;\n\n// --- Activation Function ---\nexport function activate(context: vscode.ExtensionContext) {\n  loadWorkspaceEnv(); // Load environment variables first\n\n  // --- 1. Initialize Server Launcher ---\n  serverLauncher = new ServerLauncher(context);\n  context.subscriptions.push(\n    serverLauncher,\n  );\n\n  // --- 2. Initialize Your Providers (Pass ServerLauncher to DiagramEditorProvider) ---\n  diagramEditorProvider = new DiagramEditorProvider(context, serverLauncher);\n  jsonReadonlyProvider = new JsonReadonlyProvider();\n  context.subscriptions.push(\n    vscode.workspace.registerTextDocumentContentProvider('json-readonly', jsonReadonlyProvider),\n  );\n\n  // --- 3. Register Existing Commands ---\n  registerDataStoryCommands(\n    context,\n    serverLauncher,\n    diagramEditorProvider,\n    jsonReadonlyProvider);\n\n  serverLauncher?.outputChannel.appendLine('Congratulations, your extension \"ds-ext\" is now active!');\n  serverLauncher?.outputChannel.appendLine(`ds-ext is installed at ${context.extensionPath}`);\n\n  context.subscriptions.push(\n    vscode.window.registerCustomEditorProvider(\n      'ds-ext.diagramEditor',\n      diagramEditorProvider,\n      {\n        webviewOptions: {\n          retainContextWhenHidden: true,\n        },\n        supportsMultipleEditorsPerDocument: true,\n      },\n    ),\n  );\n\n  // --- 5. Auto-start the server (Optional) ---\n  serverLauncher.startServer().catch(err => {\n    console.error('Failed to auto-start server:', err);\n    vscode.window.showErrorMessage('Failed to automatically start the DataStory server.');\n  });\n\n  console.log('ds-ext activation complete.');\n}\n\nexport function deactivate() {\n  console.log('Deactivating \"ds-ext\" extension.');\n  jsonReadonlyProvider?.dispose();\n}\n"
  },
  {
    "path": "packages/ds-ext/src/messageHandlers/onEdgeDoubleClick.ts",
    "content": "import { MessageHandler } from '../MessageHandler';\nimport * as vscode from 'vscode';\nimport * as path from 'path';\nimport * as fs from 'fs';\n\nexport const onEdgeDoubleClick: MessageHandler = async ({ event }) => {\n  const workspaceRoot = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath || '';\n\n  // Create a new .ds file named after the edge ID\n  const edgeId = event.edgeId;\n  const dsFileName = `${edgeId}.table.ds`;\n  const dsFilePath = path.join(workspaceRoot, dsFileName);\n\n  // Create an initial empty diagram file if it doesn't exist\n  if (!fs.existsSync(dsFilePath)) {\n    fs.writeFileSync(dsFilePath, '');\n  }\n\n  // Create a URI for the new file\n  const dsFileUri = vscode.Uri.file(dsFilePath);\n\n  // Open the file with the custom editor\n  try {\n    await vscode.commands.executeCommand('vscode.openWith', dsFileUri, 'ds-ext.diagramEditor');\n    console.log('Successfully opened DS file:', dsFilePath);\n  } catch (error) {\n    console.error('Failed to open DS file:', error);\n    vscode.window.showErrorMessage(`Failed to open edge diagram: ${error}`);\n  }\n};\n"
  },
  {
    "path": "packages/ds-ext/src/messageHandlers/onToast.ts",
    "content": "import { window } from 'vscode';\nimport { MessageHandler } from '../MessageHandler';\n\nexport const onToast: MessageHandler = async ({ event }) => {\n  const toastEvent = event as {\n    message: string,\n    status: 'success' | 'error'\n  };\n\n  if (toastEvent.status === 'success') {\n    console.log(toastEvent.message);\n    window.showInformationMessage(toastEvent.message, {\n\n    });\n  } else {\n    console.error(toastEvent.message);\n    window.showErrorMessage(toastEvent.message);\n  }\n};\n"
  },
  {
    "path": "packages/ds-ext/src/serverLauncher.ts",
    "content": "import * as vscode from 'vscode';\nimport * as path from 'path';\nimport { DsServerHealthChecker } from './dsServerHealthChecker';\nimport { BehaviorSubject, filter, firstValueFrom, mergeWith, switchMap } from 'rxjs';\nimport { DataStoryServerStatusBarItem, ServerStatus } from './DataStoryServerStatusBarItem';\nimport { toDisposable } from './utils/vscode-rxjs';\nimport { getDsExtConfig } from './utils/DsExtConfig';\nimport { ExternalProcessServer, ExternalProcessServerOptions } from './ExternalProcessServer';\nimport { AbstractServer } from './AbstractServer';\nimport { InProcessServer } from './InProcessServer';\n\nexport class ServerLauncher implements vscode.Disposable {\n  public outputChannel: vscode.OutputChannel;\n  private $status = new BehaviorSubject(ServerStatus.Stopped);\n  private readonly serverEntryPath: string;\n  private workspaceDir: string | undefined;\n  private isDisposed = false;\n  private readonly statusBarItem: DataStoryServerStatusBarItem;\n  private readonly serverHealthChecker: DsServerHealthChecker;\n  private externalProcessServer: AbstractServer | undefined;\n\n  constructor(context: vscode.ExtensionContext) {\n    // Resolve the path to the ds-server module\n    this.serverEntryPath = path.join(context.extensionPath, 'install-scripts');\n\n    // Create VS Code UI elements\n    this.outputChannel = vscode.window.createOutputChannel('DataStory Server'); // Dedicated output channel\n\n    this.updateStatus(ServerStatus.Stopped);\n\n    // Register for disposal with object parameter pattern\n    this.serverHealthChecker = new DsServerHealthChecker({\n      endpoint: `http://localhost:${this.port}/health`,\n      intervalMs: 5000,\n      slowThresholdMs: 3000,\n      outputChannel: this.outputChannel,\n    });\n    // Create status bar item\n    this.statusBarItem = new DataStoryServerStatusBarItem(\n      this.$status,\n      (status) => {\n        console.log(`serverHealthChecker ${this.serverHealthChecker}`);\n        if (status === ServerStatus.Running) {\n          this.serverHealthChecker.activate();\n          void vscode.window.showInformationMessage('Server started at: ' + this.serverEndpoint);\n        } else if (status === ServerStatus.Error) {\n          void vscode.window.showInformationMessage('Server stopped unexpectedly');\n          this.serverHealthChecker.deactivate();\n          this.statusBarItem.updateTooltip('Server stopped unexpectedly, Click to start server');\n        } else if (status === ServerStatus.Stopped || status === ServerStatus.Stopping) {\n          this.serverHealthChecker.deactivate();\n          this.statusBarItem.updateTooltip('Click to start server');\n        }\n      },\n    );\n    const liveUpdateServerStatus =\n      this.$status.pipe(\n        filter(it => it === ServerStatus.Running),\n        switchMap(() => this.serverHealthChecker.health$.pipe(\n          mergeWith(this.serverHealthChecker.ping()),\n        )),\n      ).subscribe(health => {\n        const tooltip = [ `Server running at ${this.serverEndpoint}` ];\n        if (health.info) {\n          tooltip.push(this.serverHealthChecker.formatHealthInfo(health.info));\n        }\n        this.statusBarItem.updateTooltip(tooltip.join('\\n'));\n      });\n    // Register for disposal\n    context.subscriptions.push(\n      this,\n      this.serverHealthChecker,\n      this.statusBarItem,\n      toDisposable(liveUpdateServerStatus),\n    );\n  }\n\n  get serverEndpoint(): string {\n    return `ws://localhost:${this.port}`;\n  }\n\n  // Get port from configuration\n  private get port(): number {\n    return getDsExtConfig().dsServerPort;\n  }\n\n  ensureStarted() {\n    return firstValueFrom(this.$status.pipe(\n      filter(it => it === ServerStatus.Running),\n    ));\n  }\n\n  public async startServer(): Promise<void> {\n    if (this.isDisposed) {\n      console.warn('[ServerLauncher] Attempted to start server after disposal.');\n      return;\n    }\n\n    this.workspaceDir = this.getWorkspacePath();\n    if (!this.workspaceDir) {\n      vscode.window.showErrorMessage('Cannot start server: No workspace folder is open.');\n      this.updateStatus(ServerStatus.Error, 'No workspace');\n      return;\n    }\n\n    this.updateStatus(ServerStatus.Starting);\n    this.outputChannel.appendLine(`[Launcher] Starting server from: ${this.serverEntryPath}`);\n    this.outputChannel.appendLine(`[Launcher] Config: Port=${this.port}, Workspace=${this.workspaceDir}`);\n\n    try {\n      const config = getDsExtConfig();\n      const options: ExternalProcessServerOptions = {\n        nodeCmd: 'node',\n        serverEntryPath: this.serverEntryPath,\n        dsExtConfig: config,\n        workspaceDir: this.workspaceDir,\n        outputChannel: this.outputChannel,\n        onStatusUpdate: (status: ServerStatus, details?: string) => {\n          this.updateStatus(status, details);\n        },\n        onServerExit: (code: number | null, signal: NodeJS.Signals | string | null) => {\n          this.handleServerExit(code, signal);\n        },\n      };\n      this.externalProcessServer =\n        config.useExternalServer\n          ? new ExternalProcessServer(options)\n          : new InProcessServer(options);\n      this.externalProcessServer.start();\n      this.serverHealthChecker.start();\n    } catch (error: any) {\n      this.outputChannel.appendLine(`[Launcher CATCH] Error spawning server: ${error.message}`);\n      vscode.window.showErrorMessage(`Error launching server: ${error.message}`);\n      this.handleServerExit(null, 'catch');\n    }\n  }\n\n  /**\n   *Stops the running DataStory server process.\n   *\n   *This method:\n   *1. Checks if the server is currently running\n   *2. Updates the server status to 'Stopping'\n   *3. Sends a termination signal to the child process\n   *4. The actual shutdown is handled by the 'close' event listener in startServer()\n   *\n   *@returns Promise that resolves when the stop command has been issued (not when server is fully stopped)\n   */\n  public async stopServer(): Promise<void> {\n    try {\n      this.updateStatus(ServerStatus.Stopping);\n      this.outputChannel.appendLine('[Launcher] Attempting to stop server process (SIGTERM)...');\n\n      await this.externalProcessServer?.stop();\n    } catch (e) {\n      if (this.$status.value === ServerStatus.Stopped) {\n        // ignore\n      } else {\n        this.outputChannel.appendLine(`[Launcher ERROR] Failed to stop server process: ${e}`);\n      }\n    }\n  }\n\n  /**\n   *Restarts the DataStory server process.\n   *\n   *This method:\n   *1. If server is running, stops it and sets up a one-time listener to start it again after shutdown\n   *2. If server is not running, starts it immediately\n   *\n   *@returns Promise that resolves when the restart command has been processed\n   */\n  public async restartServer(): Promise<void> {\n    if (this.isDisposed) {\n      console.warn('[ServerLauncher] Attempted to restart server after disposal.');\n      return;\n    }\n    this.outputChannel.appendLine('[Launcher] Restarting server...');\n    if (this.externalProcessServer) {\n      // If running, stop it first. Listen for close event before starting again.\n      await this.stopServer();\n      await this.startServer();\n    } else {\n      // If not running, just start it.\n      await this.startServer();\n    }\n  }\n\n  /**\n   *Implements vscode.Disposable interface.\n   *Cleans up resources when the extension is deactivated.\n   *\n   *This method:\n   *1. Marks the launcher as disposed\n   *2. Attempts to gracefully stop the server\n   *3. Disposes of UI components (status bar, output channel)\n   *4. Forces termination of the child process if necessary\n   *5. Updates the final status\n   */\n  dispose() {\n    void this.terminateServer();\n    this.statusBarItem.dispose();\n    this.outputChannel.dispose();\n    this.isDisposed = true;\n  }\n\n  private async terminateServer(): Promise<void> {\n    if (this.externalProcessServer) {\n      await this.externalProcessServer.stop();\n    }\n  }\n\n  /**\n   *Handles the server process exit event.\n   *\n   *This method:\n   *1. Updates the server status based on exit code and signal\n   *2. Shows appropriate notifications for unexpected exits\n   *3. Cleans up process listeners and references\n   *4. Disposes of the health checker\n   *\n   *@param code - The exit code from the process (null if process was terminated by signal)\n   *@param signal - The signal that caused the exit (null if process exited normally)\n   *@private\n   */\n  private handleServerExit(code: number | null, signal: NodeJS.Signals | string | null): void {\n    // Only update status if not already stopped/stopping by explicit command or disposal\n    if (this.$status.value !== ServerStatus.Stopping && !this.isDisposed) {\n      if (code !== 0 && code !== null) {\n        // Non-zero exit code usually indicates an error\n        void vscode.window.showErrorMessage(`Server stopped unexpectedly (code ${code}, signal ${signal}). Check Output channel.`);\n        this.updateStatus(ServerStatus.Error, `Exited code ${code}`);\n      } else if (signal === 'error' || signal === 'catch' || signal === 'killfailed') {\n        // Handle specific error signals from our logic\n        this.updateStatus(ServerStatus.Error, `Failed: ${signal}`);\n      } else {\n        this.updateStatus(ServerStatus.Stopped);\n      }\n    } else if (this.isDisposed) {\n      this.updateStatus(ServerStatus.Stopped, 'Disposed'); // Ensure final state is Stopped on dispose\n    } else {\n      // If status was Stopping, transition to Stopped\n      this.updateStatus(ServerStatus.Stopped);\n    }\n\n    // Clean up process listeners and reference\n    this.externalProcessServer = undefined;\n    this.serverHealthChecker?.dispose();\n  }\n\n  /**\n   *Updates the server status and reflects it in the VS Code status bar.\n   *\n   *This method:\n   *1. Updates the internal status state\n   *2. Sets appropriate status bar text, tooltip, and command based on the new status\n   *3. Logs the status change to the output channel\n   *\n   *@param newStatus - The new server status\n   *@param details - Optional details about the status change\n   *@private\n   */\n  private updateStatus(newStatus: ServerStatus, details?: string): void {\n    this.$status.next(newStatus);\n    this.outputChannel.appendLine(`[Launcher] Status changed to: ${newStatus}${details ? ' (' + details + ')' : ''}`);\n  }\n\n  /**\n   *Gets the path of the first workspace folder.\n   *\n   *@returns The filesystem path of the first workspace folder, or undefined if no workspace is open\n   *@private\n   */\n  private getWorkspacePath(): string | undefined {\n    // Return the path of the first workspace folder\n    const folders = vscode.workspace.workspaceFolders;\n    if (folders && folders.length > 0) {\n      return folders[0].uri.fsPath;\n    }\n    return undefined;\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/src/test/extension.test.ts",
    "content": "// import * as assert from 'assert';\n\n// // You can import and use all API from the 'vscode' module\n// // as well as import your extension to test it\n// import * as vscode from 'vscode';\n// // import * as myExtension from '../../extension';\n\n// suite('Extension Test Suite', () => {\n//   vscode.window.showInformationMessage('Start all tests.');\n\n//   test('Sample test', () => {\n//     assert.strictEqual(-1, [1, 2, 3].indexOf(5));\n//     assert.strictEqual(-1, [1, 2, 3].indexOf(0));\n//   });\n// });\n"
  },
  {
    "path": "packages/ds-ext/src/utils/DsExtConfig.ts",
    "content": "import * as vscode from 'vscode';\n\n/**\n * Gets the extension configuration\n * @returns The extension configuration\n */\nexport function getDsExtConfig(): DsExtConfig {\n  const config = vscode.workspace.getConfiguration('ds-ext');\n\n  return {\n    additionalDsServerCliArgs: config.get<string[]>('additionalDsServerCliArgs', []),\n    dsServerPort: config.get<number>('dsServerPort', 3300),\n    useExternalServer: config.get<boolean>('useExternalServer', false),\n  };\n}\n\nexport interface DsExtConfig {\n  /**\n   * Additional arguments to pass to the ds-server process\n   */\n  additionalDsServerCliArgs?: string[];\n\n  /**\n   * The port to use for the DataStory server\n   */\n  dsServerPort: number;\n\n  /**\n   * Whether to use the external process DataStory server\n   * @default true\n   * @todo\n   */\n  useExternalServer?: boolean\n}\n"
  },
  {
    "path": "packages/ds-ext/src/utils/loadWorkspaceEnv.ts",
    "content": "import * as vscode from 'vscode';\nimport * as path from 'path';\nimport * as dotenv from 'dotenv';\nimport * as fs from 'fs';\n\n/**\n * Load environment variables from .env file in workspace root.\n */\nexport function loadWorkspaceEnv() {\n  try {\n    // Get the first workspace folder (VS Code workspace root)\n    const workspaceFolder = vscode.workspace.workspaceFolders?.[0];\n\n    if (!workspaceFolder) {\n      console.log('No workspace folder found');\n      return null;\n    }\n\n    const envPath = path.join(workspaceFolder.uri.fsPath, '.env');\n\n    // Check if .env file exists\n    if (fs.existsSync(envPath)) {\n      // Load .env file\n      const result = dotenv.config({ path: envPath, override: true });\n\n      if (result.error) {\n        console.error('Error loading .env file:', result.error);\n        return null;\n      }\n\n      console.log('.env file loaded successfully from workspace root');\n      return result.parsed;\n    } else {\n      console.log('No .env file found in workspace root');\n      return null;\n    }\n  } catch (error) {\n    console.error('Error loading .env file:', error);\n    return null;\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/src/utils/vscode-rxjs.ts",
    "content": "import { SubscriptionLike } from 'rxjs';\nimport * as vscode from 'vscode';\n\nexport function toDisposable(subscription: SubscriptionLike) {\n  return {\n    dispose: () => subscription.unsubscribe(),\n  } as vscode.Disposable;\n}\n"
  },
  {
    "path": "packages/ds-ext/src/vscode-commands.ts",
    "content": "import * as vscode from 'vscode';\nimport { ServerLauncher } from './serverLauncher';\nimport { createDemosDirectory } from './commands/createDemosDirectory';\nimport { DiagramEditorProvider } from './DiagramEditorProvider';\nimport { JsonReadonlyProvider } from './JsonReadonlyProvider';\nimport { DiagramDocument } from './DiagramDocument';\nimport path from 'path';\n\nexport const DataStoryCommands = {\n  StartServer: 'ds-ext.startServer',\n  StopServer: 'ds-ext.stopServer',\n  RestartServer: 'ds-ext.restartServer',\n  ShowOutput: 'ds-ext.showOutput',\n  CreateDemos: 'ds-ext.createDemos',\n  ShowDiagramPreview: 'ds-ext.showDiagramPreview',\n};\n\nexport function registerDataStoryCommands(\n  context: vscode.ExtensionContext,\n  serverLauncher: ServerLauncher,\n  diagramEditorProvider: DiagramEditorProvider,\n  jsonReadonlyProvider: JsonReadonlyProvider,\n) {\n  context.subscriptions.push(\n    vscode.commands.registerCommand(DataStoryCommands.StartServer, async () => {\n      await serverLauncher.startServer();\n    }),\n    vscode.commands.registerCommand(DataStoryCommands.StopServer, async () => {\n      await serverLauncher.stopServer();\n    }),\n    vscode.commands.registerCommand(DataStoryCommands.RestartServer, async () => {\n      await serverLauncher.restartServer();\n    }),\n    vscode.commands.registerCommand(DataStoryCommands.ShowOutput, async () => {\n      await serverLauncher.outputChannel.show();\n    }),\n    vscode.commands.registerCommand(DataStoryCommands.CreateDemos, async () => {\n      await createDemosDirectory();\n    }),\n\n    vscode.commands.registerCommand(DataStoryCommands.ShowDiagramPreview, async (args: vscode.Uri) => {\n      console.log('args', args);\n      const diagramDocument = diagramEditorProvider.provideDiagramContent(args);\n      const diagramData = new TextDecoder().decode(diagramDocument?.data);\n      let dataString = '';\n      if (diagramData) {\n        dataString = JSON.stringify(JSON.parse(diagramData), null, 2);\n      }\n      const readOnlyUri = createReadonlyUri(args);\n\n      jsonReadonlyProvider!.updateContent(readOnlyUri, dataString);\n\n      // Open the document and show readonly content\n      const doc = await vscode.workspace.openTextDocument(readOnlyUri);\n      await vscode.languages.setTextDocumentLanguage(doc, 'json');\n      const editor = await vscode.window.showTextDocument(doc, {\n        viewColumn: vscode.ViewColumn.Beside,\n        preview: true,\n        preserveFocus: true,\n      });\n\n      if (diagramDocument) {\n        registerDiagramChangeAndCloseListeners(\n          context,\n          jsonReadonlyProvider,\n          diagramDocument,\n          readOnlyUri);\n      }\n    }),\n  );\n}\n\nconst registerDiagramChangeAndCloseListeners = (\n  context: vscode.ExtensionContext,\n  jsonReadonlyProvider: JsonReadonlyProvider,\n  diagramDocument: DiagramDocument, readOnlyUri: vscode.Uri): void => {\n  const changeSubscription = diagramDocument.onDidChange(async (diagramInfo) => {\n    const diagramJson = JSON.parse(new TextDecoder().decode(diagramInfo.document.data));\n\n    // update the content of the read-only document\n    jsonReadonlyProvider!.updateContent(\n      readOnlyUri,\n      JSON.stringify(diagramJson, null, 2),\n    );\n  });\n\n  // stop listening when the document is closed\n  const closeSubscription = vscode.workspace.onDidCloseTextDocument(closedDoc => {\n    if (closedDoc.uri.toString() === readOnlyUri.toString()) {\n      changeSubscription.dispose();\n      closeSubscription.dispose();\n    }\n  });\n  context.subscriptions.push(changeSubscription, closeSubscription);\n};\n\nfunction createReadonlyUri(args: vscode.Uri): vscode.Uri {\n  const fileName = path.basename(args.path, '.json');\n  return vscode.Uri.parse(\n    `json-readonly:Preview_${fileName}.json`,\n  );\n}\n"
  },
  {
    "path": "packages/ds-ext/themes/file-icon-theme.json",
    "content": "{\n  \"iconDefinitions\": {\n    \"diagramIcon\": {\n      \"iconPath\": \"./icon.png\"\n    }\n  },\n  \"fileExtensions\": {\n    \"ds\": \"diagramIcon\"\n  },\n  \"fileNames\": {},\n  \"languageIds\": {\n    \"diagramJson\": \"diagramIcon\"\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/tsconfig.json",
    "content": "{\n\t\"compilerOptions\": {\n\t\t\"module\": \"ESNext\",\n\t\t\"target\": \"ES2022\",\n    \"moduleResolution\": \"bundler\",\n\t\t\"lib\": [\n\t\t\t\"ES2022\"\n\t\t],\n\t\t\"sourceMap\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true   /* enable all strict type-checking options */\n\t\t/* Additional Checks */\n\t\t// \"noImplicitReturns\": true, /* Report error when not all code paths in function return a value. */\n\t\t// \"noFallthroughCasesInSwitch\": true, /* Report errors for fallthrough cases in switch statement. */\n\t\t// \"noUnusedParameters\": true,  /* Report errors on unused parameters. */\n\t},\n  \"exclude\": [\n    \"src/app/**/*\",\n\t\"node_modules\"\n  ]\n}\n"
  },
  {
    "path": "packages/ds-ext/turbo.json",
    "content": "{\n  \"extends\": [\n    \"//\"\n  ],\n  \"tasks\": {\n    \"build:extension\": {\n      \"dependsOn\": [\n        \"^build\"\n      ],\n      \"outputs\": [\n        \"./dist/extension.*\"\n      ]\n    },\n    \"build:webview\": {\n      \"dependsOn\": [\n        \"^build\"\n      ],\n      \"outputs\": [\n        \"./dist/app/**\"\n      ]\n    },\n    \"build:ds-server\": {\n      \"cache\": false,\n      \"dependsOn\": [\n        \"@data-story/nodejs#build\"\n      ]\n    },\n    \"build:duckdb\": {\n      \"cache\": false\n    },\n    \"build\": {\n      \"dependsOn\": [\n        \"build:extension\",\n        \"build:webview\",\n        \"build:ds-server\",\n        \"build:duckdb\",\n        \"^build\"\n      ]\n    },\n    \"watch:extension\": {\n      \"dependsOn\": [\n        \"^build\",\n        \"build:ds-server\",\n        \"build:duckdb\"\n      ],\n      \"persistent\": true,\n      \"cache\": false\n    },\n    \"watch:webview\": {\n      \"dependsOn\": [\n        \"^build\"\n      ],\n      \"persistent\": true,\n      \"cache\": false\n    },\n    \"watch:ds-server\": {\n      \"dependsOn\": [\n        \"^build\"\n      ],\n      \"cache\": false,\n      \"persistent\": true\n    },\n    \"watch\": {\n      \"with\": [\n        \"watch:extension\",\n        \"watch:webview\",\n        \"watch:ds-server\"\n      ],\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n"
  },
  {
    "path": "packages/ds-ext/vite.config.js",
    "content": "// vite.config.ts\nimport { defineConfig } from 'vite';\nimport react from '@vitejs/plugin-react';\nimport { resolve } from 'path';\n\nexport default defineConfig({\n  plugins: [react({ jsxRuntime: 'classic' })],\n  define: { 'process.env.NODE_ENV': '\"production\"' },\n  build: {\n    lib: {\n      entry: resolve(__dirname, 'src/app/index.tsx'),\n      formats: ['es'],\n      fileName: () => 'app.mjs',\n    },\n    outDir: 'dist/app',\n  },\n});\n"
  },
  {
    "path": "packages/ds-ext/vsc-extension-quickstart.md",
    "content": "# Welcome to your VS Code Extension\n\n## What's in the folder\n\n* This folder contains all of the files necessary for your extension.\n* `package.json` - this is the manifest file in which you declare your extension and command.\n  * The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin.\n* `src/extension.ts` - this is the main file where you will provide the implementation of your command.\n  * The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`.\n  * We pass the function containing the implementation of the command as the second parameter to `registerCommand`.\n\n## Setup\n\n* install the recommended extensions (amodio.tsl-problem-matcher, ms-vscode.extension-test-runner, and dbaeumer.vscode-eslint)\n\n\n## Get up and running straight away\n\n* Press `F5` to open a new window with your extension loaded.\n* Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`.\n* Set breakpoints in your code inside `src/extension.ts` to debug your extension.\n* Find output from your extension in the debug console.\n\n## Make changes\n\n* You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`.\n* You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes.\n\n\n## Explore the API\n\n* You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`.\n\n## Run tests\n\n* Install the [Extension Test Runner](https://marketplace.visualstudio.com/items?itemName=ms-vscode.extension-test-runner)\n* Run the \"watch\" task via the **Tasks: Run Task** command. Make sure this is running, or tests might not be discovered.\n* Open the Testing view from the activity bar and click the Run Test\" button, or use the hotkey `Ctrl/Cmd + ; A`\n* See the output of the test result in the Test Results view.\n* Make changes to `src/test/extension.test.ts` or create new test files inside the `test` folder.\n  * The provided test runner will only consider files matching the name pattern `**.test.ts`.\n  * You can create folders inside the `test` folder to structure your tests any way you want.\n\n## Go further\n\n* Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension).\n* [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace.\n* Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration).\n"
  },
  {
    "path": "packages/hubspot/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\nnode_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# local env files\n.env*.local\n.env*.local\n.env\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n\n# datastory\n.datastory/cache\n.datastory/data\n.datastory/executions\n.datastory/local*.*\n\nnotes\nnotes.json\nnotes.js\nnotes.md\n\nsrc/tinker.ts\n\ndist"
  },
  {
    "path": "packages/hubspot/package.json",
    "content": "{\n  \"name\": \"@data-story/hubspot\",\n  \"version\": \"0.0.71\",\n  \"main\": \"dist/index.js\",\n  \"type\": \"commonjs\",\n  \"types\": \"dist/index.d.ts\",\n  \"files\": [\n    \"dist\"\n  ],\n  \"scripts\": {\n    \"watch:tsc\": \"tsc --watch\",\n    \"tinker\": \"npx ts-node ./src/tinker.ts\",\n    \"test\": \"yarn run -T vitest --passWithNoTests\",\n    \"build\": \"tsc\",\n    \"release\": \"yarn run -T release-it\"\n  },\n  \"release-it\": {\n    \"git\": false,\n    \"npm\": {\n      \"publish\": false,\n      \"skipChecks\": true,\n      \"versionArgs\": [\n        \"--workspaces-update=false\"\n      ]\n    }\n  },\n  \"dependencies\": {\n    \"@data-story/core\": \"workspace:*\",\n    \"@hubspot/api-client\": \"^10.2.0\",\n    \"ws\": \"^8.12.1\"\n  }\n}\n"
  },
  {
    "path": "packages/hubspot/src/computers/Companies.ts",
    "content": "import { archive } from '../crm/entity/archive';\nimport { batchCreate } from '../crm/entity/batchCreate';\nimport { batchUpdate } from '../crm/entity/batchUpdate';\nimport { batchArchive } from '../crm/entity/batchArchive';\nimport { create } from '../crm/entity/create';\nimport { getAll } from '../crm/entity/getAll';\nimport { update } from '../crm/entity/update';\n\nexport const Companies = getAll('Companies')\nexport const CompaniesCreate = create('Companies')\nexport const CompaniesBatchCreate = batchCreate('Companies')\nexport const CompaniesUpdate = update('Companies')\nexport const CompaniesBatchUpdate = batchUpdate('Companies')\nexport const CompaniesArchive = archive('Companies')\nexport const CompaniesBatchArchive = batchArchive('Companies')"
  },
  {
    "path": "packages/hubspot/src/computers/Contacts.ts",
    "content": "import { archive } from '../crm/entity/archive';\nimport { batchCreate } from '../crm/entity/batchCreate';\nimport { batchUpdate } from '../crm/entity/batchUpdate';\nimport { batchArchive } from '../crm/entity/batchArchive';\nimport { create } from '../crm/entity/create';\nimport { getAll } from '../crm/entity/getAll';\nimport { update } from '../crm/entity/update';\n\nexport const Contacts = getAll('Contacts')\nexport const ContactsCreate = create('Contacts')\nexport const ContactsBatchCreate = batchCreate('Contacts')\nexport const ContactsUpdate = update('Contacts')\nexport const ContactsBatchUpdate = batchUpdate('Contacts')\nexport const ContactsArchive = archive('Contacts')\nexport const ContactsBatchArchive = batchArchive('Contacts')"
  },
  {
    "path": "packages/hubspot/src/computers/Deals.ts",
    "content": "import { archive } from '../crm/entity/archive';\nimport { batchCreate } from '../crm/entity/batchCreate';\nimport { batchUpdate } from '../crm/entity/batchUpdate';\nimport { batchArchive } from '../crm/entity/batchArchive';\nimport { create } from '../crm/entity/create';\nimport { getAll } from '../crm/entity/getAll';\nimport { update } from '../crm/entity/update';\n\nexport const Deals = getAll('Deals')\nexport const DealsCreate = create('Deals')\nexport const DealsBatchCreate = batchCreate('Deals')\nexport const DealUpdate = update('Deal')\nexport const DealsBatchUpdate = batchUpdate('Deals')\nexport const DealsArchive = archive('Deals')\nexport const DealsBatchArchive = batchArchive('Deals')"
  },
  {
    "path": "packages/hubspot/src/computers/index.ts",
    "content": "export * from './Companies'\nexport * from './Contacts'\nexport * from './Deals'"
  },
  {
    "path": "packages/hubspot/src/crm/entity/CrmEntityName.ts",
    "content": "export type CrmEntityName = 'contacts' | 'companies' | 'deals' | 'tickets' | 'products'"
  },
  {
    "path": "packages/hubspot/src/crm/entity/EntityPage.ts",
    "content": "export type EntityPage = {\n  results: {\n    id: string,\n    createdAt: Date,\n    updatedAt: Date,\n    archived?: boolean,\n    properties: {\n      [key: string]: string | null,\n    },\n  }[],\n  paging?: {\n    next?: {\n      after?: string,link?: string }\n  }\n}"
  },
  {
    "path": "packages/hubspot/src/crm/entity/archive.ts",
    "content": "import { Computer, num, str } from '@data-story/core';\nimport { Client } from '@hubspot/api-client';\nimport { EntityPage } from './EntityPage';\nimport { CrmEntityName } from './CrmEntityName';\n\nconst Template: Computer = {\n  type: 'Computer',\n  computerType: 'NAME',\n  label: 'LABEL',\n  inputs: [\n    {\n      name: 'incoming',\n      schema: {},\n    },\n  ],\n  outputs: [\n    {\n      name: 'updated',\n      schema: {},\n    },\n    {\n      name: 'errors',\n      schema: {},\n    },\n  ],\n  category: 'Hubspot',\n  params: [\n    str({\n      name: 'entity',\n      label: 'Entity',\n      help: 'The entity to retrieve.',\n      value: 'ENTITY',\n    }),\n    str({\n      name: 'properties',\n      label: 'Properties',\n      help: 'Comma separated list of properties.',\n      value: '',\n    }),\n    num({\n      name: 'limit',\n      label: 'Limit',\n      help: 'The maximum number of companies to return.',\n      value: String('300'),\n    }),\n  ],\n  async *run({ input, output, params }) {\n    while(true) {\n      const [ incoming ] = input.pull(1)\n\n      // sleep 1 second\n      await new Promise((resolve) => setTimeout(resolve, 1000));\n\n      output.push([incoming])\n\n      yield;\n    }\n  },\n}\n\nexport const archive = (name: string) => {\n  const { run, ...templateProperties } = Template\n\n  const config = {\n    ...structuredClone(templateProperties),\n    name: `${name}Archive`,\n    label: `${name}.archive`,\n    run,\n  }\n\n  const entityParam = config.params!.find((p) => p.name === 'entity')\n  entityParam!.input.rawValue = name.toLowerCase()\n\n  return config\n}"
  },
  {
    "path": "packages/hubspot/src/crm/entity/batchArchive.ts",
    "content": "import { Computer, num, str } from '@data-story/core';\nimport { Client } from '@hubspot/api-client';\nimport { EntityPage } from './EntityPage';\nimport { CrmEntityName } from './CrmEntityName';\n\nconst Template: Computer = {\n  type: 'Computer',\n  computerType: 'NAME',\n  label: 'LABEL',\n  inputs: [{\n    name: 'incoming',\n    schema: {},\n  }],\n  outputs: [\n    {\n      name: 'updated',\n      schema: {},\n    },\n    {\n      name: 'errors',\n      schema: {},\n    },\n  ],\n  category: 'Hubspot',\n  params: [\n    str({\n      name: 'entity',\n      label: 'Entity',\n      help: 'The entity to retrieve.',\n      value: 'ENTITY',\n    }),\n    str({\n      name: 'properties',\n      label: 'Properties',\n      help: 'Comma separated list of properties.',\n      value: '',\n    }),\n    num({\n      name: 'limit',\n      label: 'Limit',\n      help: 'The maximum number of companies to return.',\n      value: String('300'),\n    }),\n  ],\n  async *run({ input, output, params }) {\n    while(true) {\n      const [ incoming ] = input.pull(1)\n\n      // sleep 1 second\n      await new Promise((resolve) => setTimeout(resolve, 1000));\n\n      output.push([incoming])\n\n      yield;\n    }\n  },\n}\n\nexport const batchArchive = (name: string) => {\n  const { run, ...templateProperties } = Template\n\n  const config = {\n    ...structuredClone(templateProperties),\n    name: `${name}BatchArchive`,\n    label: `${name}.batchArchive`,\n    run,\n  }\n\n  const entityParam = config.params!.find((p) => p.name === 'entity')\n  entityParam!.input.rawValue = name.toLowerCase()\n\n  return config\n}"
  },
  {
    "path": "packages/hubspot/src/crm/entity/batchCreate.ts",
    "content": "import { Computer, num, str } from '@data-story/core';\nimport { Client } from '@hubspot/api-client';\nimport { EntityPage } from './EntityPage';\nimport { CrmEntityName } from './CrmEntityName';\n\nconst Template: Computer = {\n  type: 'Computer',\n  computerType: 'NAME',\n  label: 'LABEL',\n  inputs: [{\n    name: 'incoming',\n    schema: {},\n  }],\n  outputs: [\n    {\n      name: 'updated',\n      schema: {},\n    },\n    {\n      name: 'errors',\n      schema: {},\n    },\n  ],\n  category: 'Hubspot',\n  params: [\n    str({\n      name: 'entity',\n      label: 'Entity',\n      help: 'The entity to retrieve.',\n      value: 'ENTITY',\n    }),\n    str({\n      name: 'properties',\n      label: 'Properties',\n      help: 'Comma separated list of properties.',\n      value: '',\n    }),\n    num({\n      name: 'limit',\n      label: 'Limit',\n      help: 'The maximum number of companies to return.',\n      value: String('300'),\n    }),\n  ],\n  async *run({ input, output, params }) {\n    while(true) {\n      const [ incoming ] = input.pull(1)\n\n      // sleep 1 second\n      await new Promise((resolve) => setTimeout(resolve, 1000));\n\n      output.push([incoming])\n\n      yield;\n    }\n  },\n}\n\nexport const batchCreate = (name: string) => {\n  const { run, ...templateProperties } = Template\n\n  const config = {\n    ...structuredClone(templateProperties),\n    name: `${name}BatchCreate`,\n    label: `${name}.batchCreate`,\n    run,\n  }\n\n  const entityParam = config.params!.find((p) => p.name === 'entity')\n  entityParam!.input.rawValue = name.toLowerCase()\n\n  return config\n}"
  },
  {
    "path": "packages/hubspot/src/crm/entity/batchUpdate.ts",
    "content": "import { Computer, num, str } from '@data-story/core';\nimport { Client } from '@hubspot/api-client';\nimport { EntityPage } from './EntityPage';\nimport { CrmEntityName } from './CrmEntityName';\n\nconst Template: Computer = {\n  type: 'Computer',\n  computerType: 'NAME',\n  label: 'LABEL',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [\n    {\n      name: 'updated',\n      schema: {},\n    },\n    {\n      name: 'errors',\n      schema: {},\n    },\n  ],\n  category: 'Hubspot',\n  params: [\n    str({\n      name: 'entity',\n      label: 'Entity',\n      help: 'The entity to retrieve.',\n      value: 'ENTITY',\n    }),\n    str({\n      name: 'properties',\n      label: 'Properties',\n      help: 'Comma separated list of properties.',\n      value: '',\n    }),\n    num({\n      name: 'limit',\n      label: 'Limit',\n      help: 'The maximum number of companies to return.',\n      value: String('300'),\n    }),\n  ],\n  async *run({ input, output, params }) {\n    while(true) {\n      const [ incoming ] = input.pull(1)\n\n      // sleep 1 second\n      await new Promise((resolve) => setTimeout(resolve, 1000));\n\n      output.push([incoming])\n\n      yield;\n    }\n  },\n}\n\nexport const batchUpdate = (name: string) => {\n  const { run, ...templateProperties } = Template\n\n  const config = {\n    ...structuredClone(templateProperties),\n    name: `${name}BatchUpdate`,\n    label: `${name}.batchUpdate`,\n    run,\n  }\n\n  const entityParam = config.params!.find((p) => p.name === 'entity')\n  entityParam!.input.rawValue = name.toLowerCase()\n\n  return config\n}"
  },
  {
    "path": "packages/hubspot/src/crm/entity/create.ts",
    "content": "import { Computer, num, str } from '@data-story/core';\nimport { Client } from '@hubspot/api-client';\nimport { EntityPage } from './EntityPage';\nimport { CrmEntityName } from './CrmEntityName';\n\nconst Template: Computer = {\n  type: 'Computer',\n  computerType: 'NAME',\n  label: 'LABEL',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [\n    {\n      name: 'updated',\n      schema: {},\n    },\n    {\n      name: 'errors',\n      schema: {},\n    },\n  ],\n  category: 'Hubspot',\n  params: [\n    str({\n      name: 'entity',\n      label: 'Entity',\n      help: 'The entity to retrieve.',\n      value: 'ENTITY',\n    }),\n    str({\n      name: 'properties',\n      label: 'Properties',\n      help: 'Comma separated list of properties.',\n      value: '',\n    }),\n    num({\n      name: 'limit',\n      label: 'Limit',\n      help: 'The maximum number of companies to return.',\n      value: String('300'),\n    }),\n  ],\n  async *run({ input, output, params }) {\n    while(true) {\n      const [ incoming ] = input.pull(1)\n\n      // sleep 1 second\n      await new Promise((resolve) => setTimeout(resolve, 1000));\n\n      output.push([incoming])\n\n      yield;\n    }\n  },\n}\n\nexport const create = (name: string) => {\n  const { run, ...templateProperties } = Template\n\n  const config = {\n    ...structuredClone(templateProperties),\n    name: `${name}Create`,\n    label: `${name}.create`,\n    run,\n  }\n\n  const entityParam = config.params!.find((p) => p.name === 'entity')\n  entityParam!.input.rawValue = name.toLowerCase()\n\n  return config\n}"
  },
  {
    "path": "packages/hubspot/src/crm/entity/getAll.ts",
    "content": "import { Computer, num, str } from '@data-story/core';\nimport { Client } from '@hubspot/api-client';\nimport { EntityPage } from './EntityPage';\nimport { CrmEntityName } from './CrmEntityName';\n\nconst Template: Computer = {\n  type: 'Computer',\n  computerType: 'NAME',\n  label: 'LABEL',\n  inputs: [],\n  outputs: [\n    {\n      name: 'all',\n      schema: {},\n    },\n    {\n      name: 'errors',\n      schema: {},\n    },\n  ],\n  category: 'Hubspot',\n  params: [\n    str({\n      name: 'entity',\n      label: 'Entity',\n      help: 'The entity to retrieve.',\n      value: 'ENTITY',\n    }),\n    str({\n      name: 'properties',\n      label: 'Properties',\n      help: 'Comma separated list of properties.',\n      value: '',\n    }),\n    num({\n      name: 'limit',\n      label: 'Limit',\n      help: 'The maximum number of companies to return.',\n      value: String('300'),\n    }),\n  ],\n  async *run({ output, params }) {\n    const hubspot = new Client({\n      accessToken: process.env.HUBSPOT_PRIVATE_APP_TOKEN,\n      numberOfApiCallRetries: 3,\n    })\n\n    let taken = 0\n\n    const limit = params.limit\n      ? Number(params.limit)\n      : Infinity\n    const entity = params.entity as CrmEntityName\n    const properties: string[] = (params.properties as string)\n      .split(',')\n      .map((p) => p.trim())\n    let nextPage = null;\n\n    do {\n      // Make the API call to get a page of results\n      try {\n        let page: EntityPage = await hubspot.crm[entity].basicApi.getPage(\n          100,\n          nextPage?.after,\n          properties,\n        );\n\n        // Output the results\n        taken += page.results.length\n        output.pushTo('all', page.results);\n\n        // Check if there is a next page of results\n        nextPage = page.paging?.next;\n      } catch(e: any) {\n        console.log(e)\n        output.pushTo('errors', [{\n          message: e.message,\n        }])\n\n        return\n      }\n\n      yield;\n    } while (nextPage && taken < limit);\n\n    yield;\n  },\n}\n\nexport const getAll = (name: string) => {\n  const { run, ...templateProperties } = Template\n\n  const config = {\n    ...structuredClone(templateProperties),\n    name,\n    label: name,\n    run,\n  }\n\n  const entityParam = config.params!.find((p) => p.name === 'entity')\n  entityParam!.input.rawValue = name.toLowerCase()\n\n  return config\n}"
  },
  {
    "path": "packages/hubspot/src/crm/entity/update.ts",
    "content": "import { Computer, num, str } from '@data-story/core';\nimport { Client } from '@hubspot/api-client';\nimport { EntityPage } from './EntityPage';\nimport { CrmEntityName } from './CrmEntityName';\n\nconst Template: Computer = {\n  type: 'Computer',\n  computerType: 'NAME',\n  label: 'LABEL',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [\n    {\n      name: 'updated',\n      schema: {},\n    },\n    {\n      name: 'errors',\n      schema: {},\n    },\n  ],\n  category: 'Hubspot',\n  params: [\n    str({\n      name: 'entity',\n      label: 'Entity',\n      help: 'The entity to retrieve.',\n      value: 'ENTITY',\n    }),\n    str({\n      name: 'properties',\n      label: 'Properties',\n      help: 'Comma separated list of properties.',\n      value: '',\n    }),\n    num({\n      name: 'limit',\n      label: 'Limit',\n      help: 'The maximum number of companies to return.',\n      value: String('300'),\n    }),\n  ],\n  async *run({ input, output, params }) {\n    while(true) {\n      const [ incoming ] = input.pull(1)\n\n      // sleep 1 second\n      await new Promise((resolve) => setTimeout(resolve, 1000));\n\n      output.push([incoming])\n\n      yield;\n    }\n  },\n}\n\nexport const update = (name: string) => {\n  const { run, ...templateProperties } = Template\n\n  const config = {\n    ...structuredClone(templateProperties),\n    name: `${name}Update`,\n    label: `${name}.update`,\n    run,\n  }\n\n  const entityParam = config.params!.find((p) => p.name === 'entity')\n  entityParam!.input.rawValue = name.toLowerCase()\n\n  return config\n}"
  },
  {
    "path": "packages/hubspot/src/hubspotProvider.ts",
    "content": "import { Application, Computer, ComputerFactory, ServiceProvider } from '@data-story/core';\nimport * as computers from './computers'\n\nexport const hubspotProvider: ServiceProvider = {\n  boot: async (app: Application) => {\n    const configs = Object.values(computers as { [key: string]: Computer })\n    app.addComputers(configs);\n  },\n}\n\n// Contacts.getAll\n\n// Contacts.getById\n// Contacts.create\n// Contacts.update\n// Contacts.archive\n\n// Contacts.batch.create\n// Contacts.batch.update\n// Contacts.batch.archive"
  },
  {
    "path": "packages/hubspot/src/index.ts",
    "content": "export { hubspotProvider } from './hubspotProvider'"
  },
  {
    "path": "packages/hubspot/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES6\",\n    \"lib\": [\n      \"esnext\"\n    ],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"outDir\": \"dist\",\n    \"esModuleInterop\": true,\n    \"module\": \"commonjs\",\n    \"sourceMap\": true,\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"incremental\": true,\n    \"noImplicitAny\": true,\n    \"types\": [\n      \"vitest/globals\"\n    ],\n    \"declaration\": true\n  },\n  \"ts-node\": {\n    \"compilerOptions\": {\n      \"module\": \"CommonJS\"\n    }\n  },\n  \"include\": [\n    \"./src/**/*.ts\"\n  ],\n  \"exclude\": [\n    \"./node_modules\"\n  ]\n}\n"
  },
  {
    "path": "packages/hubspot/vitest.config.ts",
    "content": "import { defineConfig } from 'vitest/config'\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    // Dropped because of CJS is deprecated\n    // coverage: {\n    //   all: true,\n    //   exclude: [\n    //     './**/*.test.ts',\n    //     './dist/**',\n    //   ]\n    // },\n  },\n})"
  },
  {
    "path": "packages/nodejs/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\nnode_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# local env files\n.env*.local\n.env*.local\n.env\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n\n# datastory\n.datastory/cache\n.datastory/data\n.datastory/executions\n.datastory/local*.*\n\nnotes\nnotes.json\nnotes.js\nnotes.md\n\nsrc/tinker.ts\n\ndist\n\n.data"
  },
  {
    "path": "packages/nodejs/data-story-tree/1.json",
    "content": "{\n  \"nodes\": [\n    {\n      \"id\": \"Signal.1\",\n      \"label\": \"DataSource\",\n      \"type\": \"Signal\",\n      \"inputs\": [],\n      \"outputs\": [\n        {\n          \"name\": \"output\",\n          \"schema\": {\n            \"id\": \"any\"\n          },\n          \"id\": \"Signal.1.output\"\n        }\n      ],\n      \"params\": [\n        {\n          \"name\": \"period\",\n          \"type\": \"StringableParam\",\n          \"label\": \"period\",\n          \"help\": \"How many ms between each signal?\",\n          \"multiline\": false,\n          \"canInterpolate\": true,\n          \"interpolate\": true,\n          \"casts\": [\n            {\n              \"type\": \"numberCast\",\n              \"label\": \"Number\"\n            }\n          ],\n          \"value\": {\n            \"value\": 200,\n            \"Cast\": \"numberCast\"\n          }\n        },\n        {\n          \"name\": \"count\",\n          \"type\": \"StringableParam\",\n          \"label\": \"count\",\n          \"help\": \"How many times to send the signal?\",\n          \"multiline\": false,\n          \"canInterpolate\": true,\n          \"interpolate\": true,\n          \"casts\": [\n            {\n              \"type\": \"numberCast\",\n              \"label\": \"Number\"\n            }\n          ],\n          \"value\": {\n            \"value\": 100,\n            \"Cast\": \"numberCast\"\n          }\n        },\n        {\n          \"name\": \"expression\",\n          \"type\": \"StringableParam\",\n          \"label\": \"Template expression\",\n          \"help\": \"Use this field to customize the signal. ${i} is available as a variable.\",\n          \"multiline\": true,\n          \"canInterpolate\": true,\n          \"interpolate\": true,\n          \"evaluations\": [\n            {\n              \"type\": \"JSON\",\n              \"label\": \"JSON\"\n            },\n            {\n              \"type\": \"JS_FUNCTION\",\n              \"label\": \"JS Function\"\n            },\n            {\n              \"type\": \"JS_EXPRESSION\",\n              \"label\": \"JS Expression\"\n            }\n          ],\n          \"casts\": [\n            {\n              \"type\": \"numberCast\",\n              \"label\": \"Number\"\n            },\n            {\n              \"type\": \"stringCast\",\n              \"label\": \"String\"\n            }\n          ],\n          \"value\": {\n            \"value\": \"{\\n  id: ${i}\\n}\",\n            \"Evaluation\": \"JSON\"\n          }\n        }\n      ],\n      \"position\": {\n        \"x\": 75,\n        \"y\": 50\n      }\n    },\n    {\n      \"id\": \"Ignore.1\",\n      \"label\": \"Storage\",\n      \"type\": \"Ignore\",\n      \"inputs\": [\n        {\n          \"name\": \"input\",\n          \"schema\": {},\n          \"id\": \"Ignore.1.input\"\n        }\n      ],\n      \"outputs\": [],\n      \"params\": [],\n      \"position\": {\n        \"x\": 275,\n        \"y\": 50\n      }\n    },\n    {\n      \"id\": \"Comment.1\",\n      \"label\": \"Comment\",\n      \"type\": \"Comment\",\n      \"inputs\": [],\n      \"outputs\": [],\n      \"params\": [\n        {\n          \"name\": \"content\",\n          \"type\": \"StringableParam\",\n          \"label\": \"Content\",\n          \"help\": \"Markdown content\",\n          \"multiline\": true,\n          \"canInterpolate\": false,\n          \"interpolate\": false,\n          \"evaluations\": [],\n          \"casts\": [],\n          \"value\": {\n            \"value\": \"### main diagram 🔥\"\n          }\n        }\n      ],\n      \"position\": {\n        \"x\": 75,\n        \"y\": -150\n      }\n    }\n  ],\n  \"links\": [\n    {\n      \"id\": \"vmDqsr8g4H\",\n      \"sourcePortId\": \"Signal.1.output\",\n      \"targetPortId\": \"Ignore.1.input\"\n    }\n  ],\n  \"params\": [],\n  \"viewport\": {\n    \"x\": 0,\n    \"y\": 0,\n    \"zoom\": 1\n  }\n}\n"
  },
  {
    "path": "packages/nodejs/ds-server.ts",
    "content": "/**\n * Entry point for the DataStory Node.js server.\n *\n * This script:\n * 1. Loads environment variables from .env.local\n * 2. Parses command-line arguments for port and working directory\n * 3. Changes working directory to the specified or default\n * 4. Initializes and starts the DataStory socket server with specified port and working directory\n *\n * @param port - The port number to use for the server (default: 3300)\n * @param workingDir - The working directory for the server (default: current directory)\n */\nimport { Application, coreNodeProvider, remoteNodeProvider } from '@data-story/core';\nimport * as dotenv from 'dotenv';\nimport { hubspotProvider } from '@data-story/hubspot';\nimport minimist from 'minimist';\nimport { nodeJsProvider } from './src';\nimport { SocketServer } from './src/server/SocketServer';\n\nconst startServer = async ({\n  port,\n  workingDir,\n  abortSignal,\n}: {\n  port: number;\n  workingDir: string;\n  abortSignal?: AbortSignal;\n}) => {\n  process.chdir(workingDir);\n  dotenv.config({ path: '.env.local' });\n  console.log('Working directory', workingDir);\n  const app = new Application();\n\n  app.register([\n    coreNodeProvider,\n    nodeJsProvider,\n    // hubspotProvider,\n    remoteNodeProvider,\n  ]);\n\n  await app.boot();\n\n  const server = new SocketServer({\n    app,\n    port,\n  });\n\n  abortSignal?.addEventListener('abort', async () => {\n    await server.stop();\n  });\n  await server.start();\n};\n\nprocess.on('uncaughtException', (error: Error, origin: NodeJS.UncaughtExceptionOrigin) => {\n  console.error('----- Uncaught Exception -----');\n  console.error('Error:', error);\n  console.error('Origin:', origin); // 'uncaughtException' or 'unhandledRejection' (though less common here)\n  console.error('Stack Trace:', error.stack); // Log the stack trace!\n  console.error('----- Exiting Process -----');\n});\n\nprocess.stdin.on('data', data => {\n  if (data.toString('utf-8').includes('<exit>')) {\n    process.exit(0);\n  }\n});\n\nprocess.on('unhandledRejection', (reason, p) => {\n  console.log('Unhandled Rejection at: Promise ', p, ' reason: ', reason);\n  // application specific logging, throwing an error, or other logic here\n});\nprocess.on('exit', (code) => {\n  console.log('Exit code', code);\n});\n\n// Check if this file is being run directly (not imported as a module)\nif (require.main === module) {\n  const argv = minimist(process.argv.slice(2), {\n    string: [ 'port', 'workingDir' ],\n    alias: {\n      port: 'p',\n      workingDir: 'w',\n    },\n  });\n\n  const port = argv.port || 3300;\n  const workingDir = argv.workingDir || process.cwd();\n  startServer({\n    port,\n    workingDir,\n  })\n    .then(() => {\n      console.log('Working directory', workingDir);\n    }).catch((e) => {\n      console.error('Error starting server', e);\n    });\n}\n\n// Export functions for when this file is imported as a module\nexport { startServer };\n"
  },
  {
    "path": "packages/nodejs/package.json",
    "content": "{\n  \"name\": \"@data-story/nodejs\",\n  \"version\": \"0.0.110\",\n  \"main\": \"dist/src/index.js\",\n  \"type\": \"commonjs\",\n  \"types\": \"dist/src/index.d.ts\",\n  \"bin\": {\n    \"server\": \"dist/ds-server.js\"\n  },\n  \"files\": [\n    \"dist\"\n  ],\n  \"scripts\": {\n    \"build:nodejs\": \"yarn run -T tsc\",\n    \"watch:nodejs\": \"yarn run -T tsc --watch\",\n    \"build:server\": \"node ./scripts/build-server.js\",\n    \"watch:server\": \"node ./scripts/build-server.js --watch\",\n    \"dev\": \"pm2 start ./ds-server.ts --watch --no-daemon\",\n    \"tinker\": \"npx ts-node ./src/tinker.ts\",\n    \"test\": \"yarn run -T vitest\",\n    \"release\": \"yarn run -T release-it\"\n  },\n  \"release-it\": {\n    \"git\": false,\n    \"npm\": {\n      \"publish\": false,\n      \"skipChecks\": true,\n      \"versionArgs\": [\n        \"--workspaces-update=false\"\n      ]\n    }\n  },\n  \"dependencies\": {\n    \"@data-story/core\": \"workspace:*\",\n    \"@data-story/hubspot\": \"workspace:*\",\n    \"@duckdb/node-api\": \"^1.2.2-alpha.18\",\n    \"csv-parse\": \"^5.6.0\",\n    \"csv-stringify\": \"^6.5.2\",\n    \"dotenv\": \"^17.2.0\",\n    \"glob\": \"^11.0.0\",\n    \"lodash\": \"^4.17.21\",\n    \"minimist\": \"^1.2.8\",\n    \"ws\": \"^8.12.1\"\n  },\n  \"devDependencies\": {\n    \"@types/glob\": \"^8.1.0\",\n    \"@types/lodash\": \"^4\",\n    \"@types/minimist\": \"^1\",\n    \"pm2\": \"^5.4.2\"\n  }\n}\n"
  },
  {
    "path": "packages/nodejs/scripts/build-server.js",
    "content": "#!/usr/bin/env node\n/*\n * Esbuild JS API script for building the DataStory Node.js server.\n * Replaces CLI:\n *  - build: esbuild --bundle --minify --platform=node ./ds-server.ts --external:@duckdb/node-bindings-* --outfile=dist/ds-server.min.js\n *  - watch: esbuild --bundle --platform=node ./ds-server.ts --external:@duckdb/node-bindings-* --outfile=dist/ds-server.min.js --watch\n */\nconst path = require('path');\nconst fs = require('fs');\nconst esbuild = require('esbuild');\n\nconst isWatch = process.argv.includes('--watch');\n\nconst rootDir = process.cwd();\nconst entry = path.resolve(rootDir, 'ds-server.ts');\nconst outFile = path.resolve(rootDir, 'dist', 'ds-server.min.js');\n\n// Ensure dist exists\nfs.mkdirSync(path.dirname(outFile), { recursive: true });\n\n/** @type {import('esbuild').BuildOptions} */\nconst baseOptions = {\n  entryPoints: [entry],\n  bundle: true,\n  platform: 'node',\n  outfile: outFile,\n  external: ['@duckdb/node-bindings-*'],\n  minify: !isWatch,\n  logLevel: 'info',\n};\n\n(async () => {\n  if (isWatch) {\n    const ctx = await esbuild.context(baseOptions);\n    await ctx.watch();\n    console.log('[esbuild] watching for changes...');\n  } else {\n    await esbuild.build(baseOptions);\n    console.log('[esbuild] build complete');\n  }\n})().catch((err) => {\n  console.error(err);\n  process.exit(1);\n});\n"
  },
  {
    "path": "packages/nodejs/src/computers/CsvFileRead/CsvFileRead.ts",
    "content": "import * as glob from 'glob';\nimport fs from 'fs';\nimport path from 'path';\nimport { parse } from 'csv-parse';\nimport { Computer, serializeError, str } from '@data-story/core';\nimport { getWorkingDirConfig } from '../../server/getWorkingDirConfig';\n\nexport const CsvFileRead: Computer = {\n  type: 'Computer',\n  computerType: 'CsvFile.read',\n  label: 'CsvFile.read',\n  category: 'NodeJs',\n  inputs: [],\n  outputs: [\n    {\n      name: 'output',\n      schema: {},\n    },\n    {\n      name: 'errors',\n      schema: {},\n    },\n  ],\n  params: [\n    str({\n      name: 'file_path',\n      label: 'File path (supports glob patterns)',\n      help: 'File path, e.g., **/*.csv',\n    }),\n    str({\n      name: 'delimiter',\n      label: 'Delimiter',\n      help: 'CSV delimiter character (default: ,)',\n      value: ',',\n    }),\n    str({\n      name: 'batch_size',\n      label: 'Batch size',\n      help: 'Number of records to yield in each batch (default: 1000)',\n      value: '1000',\n    }),\n  ],\n\n  async *run({ output, params }) {\n    const pathPattern = params.file_path as string;\n    const delimiter = params.delimiter as string;\n    const batchSize = parseInt(params.batch_size as string) || 1000;\n\n    // Check if the provided path is absolute\n    const isAbsolutePath = path.isAbsolute(pathPattern);\n\n    let files: string[] = [];\n    try {\n      // Resolve the path if it's relative\n      const resolvedPath = isAbsolutePath\n        ? pathPattern\n        : path.resolve(getWorkingDirConfig().workingDir, pathPattern);\n\n      files = glob.sync(resolvedPath, {\n        ignore: ['**/node_modules/**'],\n      });\n\n      if (files.length === 0) {\n        console.warn(`[data-story] No files found matching pattern: ${resolvedPath}`);\n      }\n\n      // Process each file found by glob\n      for (const file of files) {\n        try {\n          // Create a readable stream and process the file\n          const parser = parse({\n            columns: true,\n            delimiter,\n            skip_empty_lines: true,\n            trim: true,\n          });\n          const stream = fs.createReadStream(file).pipe(parser);\n          let batch: any[] = [];\n          // Process each record as it comes in\n          for await (const record of stream) {\n            batch.push({\n              ...record,\n              _filePath: file,\n            });\n\n            if (batch.length >= batchSize) {\n              output.push([...batch]);\n              batch = []; // Clear the batch\n              yield;\n            }\n          }\n          // Process any remaining records\n          if (batch.length > 0) {\n            output.push([...batch]);\n            yield;\n          }\n        } catch (fileError) {\n          console.error('[data-story] Error processing file:', fileError);\n          output.pushTo('errors', [serializeError(fileError)]);\n        }\n      }\n    } catch (error: any) {\n      output.pushTo('errors', [serializeError(error)]);\n    }\n  },\n};\n"
  },
  {
    "path": "packages/nodejs/src/computers/CsvFileRead/index.ts",
    "content": "export { CsvFileRead } from './CsvFileRead'"
  },
  {
    "path": "packages/nodejs/src/computers/CsvFileWrite/CsvFileWrite.ts",
    "content": "import fs from 'fs';\nimport { Computer, ItemValue, ItemWithParams, str } from '@data-story/core';\nimport * as path from 'path';\nimport { stringify } from 'csv-stringify';\nimport { getWorkingDirConfig } from '../../server/getWorkingDirConfig';\n\nexport const CsvFileWrite: Computer = {\n  type: 'Computer',\n  computerType: 'CsvFile.write',\n  label: 'CsvFile.write',\n  category: 'NodeJs',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [],\n  params: [\n    str({\n      name: 'file_path',\n      label: 'File Path',\n      help: 'File path',\n    }),\n    str({\n      name: 'delimiter',\n      label: 'Delimiter',\n      help: 'CSV delimiter character (default: ,)',\n      value: ',',\n    }),\n  ],\n  canRun({ input, isAvailable }) {\n    return isAvailable() && input.haveAllItemsAtInput('input');\n  },\n\n  async *run({ input, params, onComplete }) {\n    try {\n      const filePath = params.file_path as string;\n      const delimiter = params.delimiter as string;\n\n      const isAbsolutePath = path.isAbsolute(filePath);\n      const fullPath = isAbsolutePath\n        ? filePath\n        : path.join(getWorkingDirConfig().workingDir, filePath);\n      // Create the directory recursively if it doesn't exist\n      await fs.promises.mkdir(path.dirname(fullPath), { recursive: true });\n\n      // Use streaming approach for better performance with large files\n      const writeStream = fs.createWriteStream(fullPath, { encoding: 'utf-8' });\n      writeStream.on('error', (err) => {\n        console.error('Stream error:', err);\n        throw new Error(err.message);\n      });\n      writeStream.on('finish', () => {\n        console.log('[data-story] CsvFileWrite File written successfully:', fullPath);\n      });\n\n      const createColumns = (data: ItemWithParams<ItemValue>[]) => {\n        if (data.length === 0) return [];\n        // If there are more than 1000 items, process the keys from the first 1000 rows.\n        const sampleData = data.length > 1000 ? data.slice(0, 1000) : data;\n\n        const columns = new Set<string>();\n        sampleData.forEach((item) => {\n          Object.keys(item.value).forEach((key) => columns.add(key));\n        });\n        return Array.from(columns);\n      };\n\n      const incoming = input.pull();\n\n      // Setup CSV stringifier\n      const stringifier = stringify({\n        delimiter: delimiter,\n        header: true,\n        columns: createColumns(incoming),\n      });\n      stringifier.pipe(writeStream);\n\n      for (const item of incoming) {\n        stringifier.write(item.value);\n      }\n\n      onComplete?.(() => {\n        stringifier.end();\n      });\n\n      yield;\n    } catch (error: any) {\n      console.error('Error writing file:', error);\n      throw new Error(`Failed to write file: ${error.message}`);\n    }\n  },\n};\n"
  },
  {
    "path": "packages/nodejs/src/computers/CsvFileWrite/index.ts",
    "content": "export { CsvFileWrite } from './CsvFileWrite'"
  },
  {
    "path": "packages/nodejs/src/computers/JsonFileRead/JsonFileRead.ts",
    "content": "import * as glob from 'glob';\nimport fs from 'fs';\nimport path from 'path'; // Import path module\nimport { Computer, get, asArray, ItemValue, serializeError, str } from '@data-story/core';\nimport { getWorkingDirConfig } from '../../server/getWorkingDirConfig';\n\nexport const JsonFileRead: Computer = {\n  type: 'Computer',\n  computerType: 'JsonFile.read',\n  label: 'JsonFile.read',\n  category: 'NodeJs',\n  inputs: [],\n  outputs: [\n    {\n      name: 'output',\n      schema: {},\n    },\n    {\n      name: 'errors',\n      schema: {},\n    },\n  ],\n  params: [\n    str({\n      name: 'file_path',\n      label: 'File path (supports glob patterns)',\n      help: 'File path, e.g., **/*.json',\n    }),\n    str({\n      name: 'items_path',\n      label: 'Items Path',\n      help: 'Path to the items within the JSON structure',\n    }),\n  ],\n\n  async *run({ output, params }) {\n    const pathPattern = params.file_path as string;\n    const itemsPath = params.items_path as string;\n\n    // Check if the provided path is absolute\n    const isAbsolutePath = path.isAbsolute(pathPattern);\n\n    let files: string[] = [];\n    try {\n      if (isAbsolutePath) {\n        // If it's an absolute path, use it directly with glob\n        files = glob.sync(pathPattern, {\n          ignore: ['**/node_modules/**'],\n          absolute: true,\n        });\n      } else {\n        // If it's a relative path, resolve using the workspace folder\n        const cwd = getWorkingDirConfig().workingDir;\n        files = glob.sync(pathPattern, {\n          cwd, // Resolve relative paths from the workspace folder\n          ignore: ['**/node_modules/**'],\n          absolute: true,\n        });\n      }\n\n      // Process each file found by glob\n      for (const file of files) {\n        try {\n          const content = fs.readFileSync(file, 'utf-8');\n          const data = JSON.parse(content);\n          const itemable = get(data, itemsPath);\n          const items = asArray(itemable).map((i: ItemValue) => ({\n            ...i,\n            _filePath: file,\n          }));\n          output.push(items);\n          yield;\n        } catch (fileError: any) {\n          output.pushTo('errors', [serializeError(fileError)]);\n        }\n      }\n    } catch (error: any) {\n      output.pushTo('errors', [serializeError(error)]);\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/nodejs/src/computers/JsonFileRead/index.ts",
    "content": "export { JsonFileRead } from './JsonFileRead'"
  },
  {
    "path": "packages/nodejs/src/computers/JsonFileWrite/JsonFileWrite.ts",
    "content": "import { promises as fs } from 'fs';\nimport { Computer, str } from '@data-story/core';\nimport * as path from 'path';\nimport { getWorkingDirConfig } from '../../server/getWorkingDirConfig';\n\nexport const JsonFileWrite: Computer = {\n  type: 'Computer',\n  computerType: 'JsonFile.write',\n  label: 'JsonFile.write',\n  category: 'NodeJs',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [],\n  params: [\n    str({\n      name: 'file_path',\n      label: 'File Path',\n      help: 'File path',\n    }),\n  ],\n\n  canRun({ input, isAvailable }) {\n    return isAvailable() && input.haveAllItemsAtInput('input');\n  },\n\n  async *run({ input, params }) {\n    const incoming = input.pull();\n    const filePath = params.file_path as string;\n    const content = JSON.stringify(incoming.map(i => i.value), null, 2);\n    const isAbsolutePath = path.isAbsolute(filePath);\n    const fullPath = isAbsolutePath\n      ? filePath // Use the absolute path directly\n      : path.join(getWorkingDirConfig().workingDir, filePath); // Prepend the workspace root for relative paths\n\n    try {\n      // Create the directory recursively if it doesn't exist\n      await fs.mkdir(path.dirname(fullPath), { recursive: true });\n      // Write the file content\n      await fs.writeFile(fullPath, content, 'utf-8');\n    } catch (error: any) {\n      console.error('Error writing file:', error);\n      throw new Error(`Failed to write file: ${error.message}`);\n    }\n  },\n};\n"
  },
  {
    "path": "packages/nodejs/src/computers/JsonFileWrite/index.ts",
    "content": "export { JsonFileWrite } from './JsonFileWrite';"
  },
  {
    "path": "packages/nodejs/src/computers/ListFiles/ListFiles.test.ts",
    "content": "import { expect } from 'vitest';\nimport { when } from '@data-story/core/test-tools';\nimport { ListFiles } from './ListFiles';\nimport { Dirent, promises as fs } from 'fs';\n\nvi.mock('fs')\n\nit('testes', () => {\n  expect(true).toBe(true)\n})\n\nit('outputs nothing when no files or directories are found', async () => {\n  vi.mocked(fs.readdir).mockResolvedValue([])\n\n  await when(ListFiles)\n    .hasParams({ path: '/some/path' })\n    .getsInput([{}])\n    .doRun()\n    .expectOutput([])\n    .ok()\n})\n\nit('outputs objects when files and directories are found', async () => {\n  vi.mocked(fs.readdir).mockResolvedValue([\n    {\n      name: 'file1',\n      isDirectory: () => false,\n    },\n    {\n      name: 'dir1',\n      isDirectory: () => true,\n    },\n  ] as Dirent[])\n\n  await when(ListFiles)\n    .hasParams({ path: '/some/path' })\n    .getsInput([{}])\n    .doRun()\n    .expectOutput([\n      {\n        name: 'file1',\n        type: 'file',\n        fullPath: '/some/path/file1',\n      },\n      {\n        name: 'dir1',\n        type: 'directory',\n        fullPath: '/some/path/dir1',\n      },\n    ])\n    .ok()\n})"
  },
  {
    "path": "packages/nodejs/src/computers/ListFiles/ListFiles.ts",
    "content": "import { Computer, str } from '@data-story/core';\nimport { promises as fs } from 'fs'\nimport * as nodePath from 'path'\n\nexport const ListFiles: Computer = {\n  type: 'Computer',\n  computerType: 'ListFiles',\n  label: 'ListFiles',\n  category: 'NodeJs',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'output',\n    schema: {\n      name: 'string',\n      type: 'string',\n      fullPath: 'string',\n    },\n  }],\n  params: [\n    str({\n      name: 'path',\n      label: 'Path',\n      help: 'Dir to list',\n      multiline: true,\n      canInterpolate: false,\n      interpolate: false,\n      evaluations: [],\n      value: '/',\n    }),\n  ],\n\n  async *run({ input, output }) {\n    while(true) {\n      const [ incoming ] = input.pull(1)\n      const path = incoming.params.path as string\n\n      const entries = (await fs.readdir(path, { withFileTypes: true }))\n        .map((entry) => {\n          return {\n            name: entry.name,\n            type: entry.isDirectory() ? 'directory' : 'file',\n            fullPath: nodePath.join(path, entry.name),\n          };\n        });\n\n      output.push(entries)\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/nodejs/src/computers/ListFiles/index.ts",
    "content": "export { ListFiles } from './ListFiles';"
  },
  {
    "path": "packages/nodejs/src/computers/ReadFiles/ReadFiles.ts",
    "content": "import * as glob from 'glob';\nimport { promises as fs } from 'fs';\nimport { Computer, str } from '@data-story/core';\n\nexport const ReadFiles: Computer = {\n  type: 'Computer',\n  computerType: 'ReadFiles',\n  label: 'ReadFiles',\n  category: 'NodeJs',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [{\n    name: 'files',\n    schema: {\n      path: 'string',\n      content: 'string',\n    },\n  }],\n  params: [\n    str({\n      name: 'include',\n      label: 'Include',\n      help: 'Glob pattern to include',\n      multiline: true,\n      canInterpolate: true,\n      interpolate: true,\n      evaluations: [],\n      value: '${path}/**/*.ts',\n    }),\n    str({\n      name: 'ignore',\n      label: 'Ignore',\n      help: 'Glob pattern to ignore',\n      multiline: true,\n      canInterpolate: true,\n      interpolate: true,\n      evaluations: [],\n      value: '**/node_modules/**',\n    }),\n  ],\n\n  async *run({ input, output }) {\n    const [ incoming ] = input.pull(1)\n    const include = incoming.params.include as string\n    const ignore = incoming.params.ignore as string\n\n    const paths = glob.sync(include, { ignore });\n\n    for (const path of paths) {\n      const content = await fs.readFile(path, 'utf-8')\n      output.pushTo('files', [{ path, content }])\n    }\n  },\n};\n"
  },
  {
    "path": "packages/nodejs/src/computers/ReadFiles/index.ts",
    "content": "export { ReadFiles } from './ReadFiles'"
  },
  {
    "path": "packages/nodejs/src/computers/RunCommand/RunCommand.ts",
    "content": "import { promisify } from 'util';\nimport { exec as execCallback } from 'child_process';\nimport { Computer, str } from '@data-story/core';\n\nconst exec = promisify(execCallback);\n\nasync function awaitableExec(command: string): Promise<{\n  stdout?: string,\n  stderr?: string,\n  error?: Error,\n}> {\n  try {\n    const { stdout, stderr } = await exec(command);\n    return { stdout, stderr };\n  } catch (error: any) {\n    console.error(`Error executing command: ${command}`, error);\n    // throw error;\n\n    return { error };\n  }\n}\n\nexport const RunCommand: Computer = {\n  type: 'Computer',\n  computerType: 'RunCommand',\n  label: 'RunCommand',\n  category: 'NodeJs',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [\n    {\n      name: 'output',\n      schema: {},\n    },\n    {\n      name: 'error',\n      schema: {},\n    },\n  ],\n  params: [\n    str({\n      name: 'command',\n      value: 'say \"Hello World\"',\n      help: 'Command to run',\n      canInterpolate: true,\n    }),\n  ],\n\n  async *run({ input, output }) {\n    while(true) {\n      const [ incoming ] = input.pull(1)\n\n      const command = incoming.params.command as string\n\n      const { stdout, stderr, error } = await awaitableExec(command);\n\n      if(stdout) {\n        console.log('STD OUT')\n        output.push([{ stdout }])\n        yield;\n        continue;\n      }\n\n      if(stderr) {\n        console.log('EXEC ERROR')\n        output.pushTo('error', [{ stderr }])\n        yield;\n        continue;\n      }\n\n      if(error) {\n        console.log('error (not stderr)')\n        output.pushTo('error', [error])\n        yield;\n        continue;\n      }\n\n      yield;\n    }\n  },\n};\n"
  },
  {
    "path": "packages/nodejs/src/computers/RunCommand/execAsync.ts",
    "content": "import { exec } from 'child_process';\n\nexport function execAsync(command: string) {\n  return new Promise((resolve, reject) => {\n    exec(command, (error, stdout, stderr) => {\n      if (error) {\n        reject(error);\n        return;\n      }\n\n      if (stderr) {\n        reject(new Error(stderr));\n        return;\n      }\n\n      resolve(stdout);\n    });\n  });\n}"
  },
  {
    "path": "packages/nodejs/src/computers/RunCommand/index.ts",
    "content": "export { RunCommand } from './RunCommand'"
  },
  {
    "path": "packages/nodejs/src/computers/WriteFile/WriteFile.ts",
    "content": "import { promises as fs } from 'fs';\nimport { Computer, str } from '@data-story/core';\n\nexport const WriteFile: Computer = {\n  type: 'Computer',\n  computerType: 'WriteFile',\n  label: 'WriteFile',\n  category: 'NodeJs',\n  inputs: [{\n    name: 'input',\n    schema: {},\n  }],\n  outputs: [],\n  params: [\n    str({\n      name: 'path',\n      label: 'Path',\n      help: 'File path',\n      value: '${path}/output.txt',\n    }),\n    str({\n      name: 'content',\n      label: 'Content',\n      help: 'File content',\n      value: 'Hello world!',\n    }),\n  ],\n\n  async *run({ input, output }) {\n    const [ incoming ] = input.pull(1)\n\n    const path = incoming.params.path as string\n    const content = incoming.params.content as string\n\n    await fs.writeFile(path, content, 'utf-8')\n  },\n};"
  },
  {
    "path": "packages/nodejs/src/computers/WriteFile/index.ts",
    "content": "export { WriteFile } from './WriteFile';"
  },
  {
    "path": "packages/nodejs/src/computers/index.ts",
    "content": "export { CsvFileWrite } from './CsvFileWrite'\nexport { CsvFileRead } from './CsvFileRead'\nexport { JsonFileRead } from './JsonFileRead'\nexport { JsonFileWrite } from './JsonFileWrite'\nexport { ListFiles } from './ListFiles'\nexport { ReadFiles } from './ReadFiles'\nexport { RunCommand } from './RunCommand'\nexport { WriteFile } from './WriteFile'"
  },
  {
    "path": "packages/nodejs/src/index.ts",
    "content": "export { nodeJsProvider } from './nodeJsProvider'\nexport * as nodes from './computers'"
  },
  {
    "path": "packages/nodejs/src/nodeJsProvider.ts",
    "content": "import { Application, ServiceProvider } from '@data-story/core';\nimport * as computers from './computers'\n\nexport const nodeJsProvider: ServiceProvider = {\n  boot: async (app: Application) => {\n    app.addComputers(Object.values(computers));\n  },\n}"
  },
  {
    "path": "packages/nodejs/src/server/Message.ts",
    "content": "export type Message = {\n  type: string\n}"
  },
  {
    "path": "packages/nodejs/src/server/MessageHandler.ts",
    "content": "import { Application, ObserverController } from '@data-story/core';\nimport { Message } from './Message';\nimport { WebSocket } from 'ws';\n\nexport interface MessageHandlerParams<MessageType extends Message> {\n  ws: WebSocket;\n  data: MessageType;\n  app: Application;\n  observerController: ObserverController;\n}\n\nexport type MessageHandler<MessageType extends Message> = (params: MessageHandlerParams<MessageType>) => Promise<void>\n"
  },
  {
    "path": "packages/nodejs/src/server/SocketServer.ts",
    "content": "import { WebSocket, WebSocketServer } from 'ws';\nimport { Application, ObserverController, ObserverStorage } from '@data-story/core';\nimport { MessageHandler } from './MessageHandler';\nimport * as defaultMessageHandlers from './messageHandlers';\nimport { createStorage } from '../storage/createStorage';\nimport { healthCheckHandler } from './healthCheck';\nimport { createServer, Server } from 'http';\n\ninterface SocketServerOptions {\n  app: Application;\n  port?: number;\n  messageHandlers?: Record<string, MessageHandler<any>>;\n}\n\nexport class SocketServer {\n  private app: Application;\n  private port: number;\n  private messageHandlers: Record<string, MessageHandler<any>>;\n  private wsServer?: WebSocketServer;\n  private httpServer?: Server;\n  private observerController: ObserverController;\n\n  private observerStorage: ObserverStorage;\n\n  constructor({\n    app,\n    messageHandlers = defaultMessageHandlers,\n    port = 3300,\n  }: SocketServerOptions) {\n    this.app = app;\n    this.port = port;\n    this.messageHandlers = messageHandlers;\n    this.observerStorage = createStorage();\n    this.observerController = new ObserverController(this.observerStorage);\n  }\n\n  stop() {\n    this.httpServer?.close();\n  }\n\n  async start() {\n    await this.observerStorage.init?.();\n    console.log('Storage initialized');\n    this.httpServer = createServer(healthCheckHandler);\n    this.wsServer = new WebSocketServer({ server: this.httpServer });\n\n    this.wsServer.on('connection', (ws) => {\n      ws.on('message', (msg: string) => this.handleMessage(ws, msg));\n\n      ws.on('close', () => {\n        console.log('Client disconnected 😢');\n      });\n\n      ws.on('error', (error) => {\n        console.log('Error 😱', error);\n      });\n\n      console.log('Client connected 💓');\n    });\n\n    console.log('Server started on port ' + this.port);\n    await new Promise((resolve) => {\n      this.httpServer!.listen(this.port, () => resolve(0));\n      this.httpServer!.on('close', () => resolve(0));\n    });\n  }\n\n  private async handleMessage(\n    ws: WebSocket,\n    message: string,\n  ) {\n    const parsed: { type: string } & Record<string, any> = JSON.parse(message);\n    const handler = this.messageHandlers[parsed.type];\n\n    if (!handler) {\n      console.warn('Unknown message type (server): ' + parsed.type);\n      return;\n    }\n\n    await handler({\n      ws,\n      data: parsed,\n      app: this.app,\n      observerController: this.observerController,\n    });\n  }\n}\n"
  },
  {
    "path": "packages/nodejs/src/server/ds-server.http",
    "content": "### Health check\nGET http://localhost:3300/health\n\n###\n"
  },
  {
    "path": "packages/nodejs/src/server/getWorkingDirConfig.ts",
    "content": "import * as fs from 'fs';\nimport * as path from 'path';\n\nexport interface DsServerConfig {\n  storage: 'DUCK_DB' | 'JSON' | 'IN_MEMORY',\n}\n\nconst defaultConfig: DsServerConfig = {\n  storage: 'IN_MEMORY',\n};\n\nexport interface WorkingDirDsServerConfig extends DsServerConfig {\n  workingDir: string;\n}\n\nexport function getWorkingDirConfig(): WorkingDirDsServerConfig {\n  const workingDir = process.cwd();\n  const configPath = path.join(workingDir, 'datastory.config.json');\n  try {\n    const raw = fs.readFileSync(configPath, 'utf-8');\n    const config = JSON.parse(raw);\n    return Object.assign({ workingDir }, defaultConfig, config) as WorkingDirDsServerConfig;\n  } catch (err) {\n    console.error('Unable to read datastory.config.json', err);\n    // Optionally log the error or handle as needed\n    return Object.assign({ workingDir }, defaultConfig);\n  }\n}\n"
  },
  {
    "path": "packages/nodejs/src/server/healthCheck.ts",
    "content": "import { IncomingMessage, RequestListener, ServerResponse } from 'http';\n\nexport const healthCheckHandler: RequestListener = (req: IncomingMessage, res: ServerResponse) => {\n  if (req.url === '/health' && req.method === 'GET') {\n    const memory = process.memoryUsage();\n    const cpu = process.cpuUsage();\n    res.writeHead(200, { 'Content-Type': 'application/json' });\n    res.end(JSON.stringify({\n      status: 'ok',\n      memory,\n      cpu,\n    }));\n  } else {\n    res.writeHead(404, { 'Content-Type': 'application/json' });\n    res.end(JSON.stringify({ error: 'Not Found' }));\n  }\n};\n"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/abortExecution.ts",
    "content": "import { AbortExecution } from '@data-story/core';\nimport type { MessageHandler } from '../MessageHandler';\n\nexport const abortControllers = new Map<string, AbortController>();\ntype AbortExecutionMessage = AbortExecution & {\n  type: 'abortExecution';\n  msgId: string;\n};\n\nexport const abortExecution: MessageHandler<AbortExecutionMessage> = async ({\n  data,\n}) => {\n  console.log('aborting execution', data);\n  const { executionId } = data;\n  const controller = abortControllers.get(executionId);\n  if (controller) {\n    controller.abort();\n  }\n};\n"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/cancelObservation.ts",
    "content": "import { CancelObservation, RequestObserverType } from '@data-story/core';\nimport { MessageHandler, MessageHandlerParams } from '../MessageHandler';\n\nexport const cancelObservation: MessageHandler<CancelObservation> = async({\n  ws,\n  data,\n  observerController,\n}: MessageHandlerParams<CancelObservation>) => {\n  observerController.deleteExecutionObserver(data as CancelObservation);\n  ws.send(JSON.stringify({ ...data, type: RequestObserverType.cancelObservation }));\n}\n"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/getDataFromStorage.ts",
    "content": "import { GetDataFromStorageParams, LinkId, ItemValue, RequestObserverType } from '@data-story/core';\nimport { MessageHandler, MessageHandlerParams } from '../MessageHandler';\n\nexport const getDataFromStorage: MessageHandler<GetDataFromStorageParams> = async({\n  ws,\n  data,\n  observerController,\n}: MessageHandlerParams<GetDataFromStorageParams>) => {\n  const result: Record<LinkId, ItemValue[]> = await observerController.getDataFromStorage(data as GetDataFromStorageParams);\n  ws.send(JSON.stringify({\n    type: 'getDataFromStorage',\n    msgId: data!.msgId,\n    data: result,\n  }))\n}"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/getDiagram.test.ts",
    "content": "import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest';\nimport { getDiagram } from './getDiagram';\nimport { Diagram } from '@data-story/core';\nimport fs from 'fs/promises';\nimport { MessageHandlerParams } from '../MessageHandler';\n\nvi.mock('fs/promises');\n\ndescribe('getDiagram', () => {\n  const mockWs = {\n    send: vi.fn(),\n  };\n\n  (fs.readFile as any).mockResolvedValue(undefined);\n\n  const mockData = {\n    type: 'getDiagram',\n    msgId: 'test-msg-id',\n  };\n\n  const mockDiagram = {\n    nodes: [{ id: 'node1', type: 'test' }],\n    links: [{ id: 'link1', source: 'node1', target: 'node2' }],\n  };\n  const createMockParams = (data: any) => ({\n    ws: mockWs,\n    data,\n  } as unknown as MessageHandlerParams<any>);\n\n  beforeEach(() => {\n    vi.clearAllMocks();\n  });\n\n  afterEach(() => {\n    vi.resetAllMocks();\n  });\n\n  it('should return a new Diagram when diagramId is not provided', async () => {\n    await getDiagram(createMockParams(mockData));\n\n    expect(fs.readFile).not.toHaveBeenCalled();\n    expect(mockWs.send).toHaveBeenCalledTimes(1);\n\n    const sentData = JSON.parse(mockWs.send.mock.calls[0][0]);\n    expect(sentData.type).toBe('getDiagram');\n    expect(sentData.msgId).toBe('test-msg-id');\n    expect(sentData.diagram).toBeDefined();\n    expect(sentData.diagram.nodes).toEqual([]);\n    expect(sentData.diagram.links).toEqual([]);\n  });\n\n  it('should return a diagram from file when diagramId is provided and file exists', async () => {\n    (fs.readFile as any).mockResolvedValueOnce(JSON.stringify(mockDiagram));\n    await getDiagram(createMockParams({ ...mockData, diagramId: 'test-diagram.json' }));\n\n    expect(fs.readFile).toHaveBeenCalledWith('test-diagram.json', 'utf-8');\n    expect(mockWs.send).toHaveBeenCalledTimes(1);\n\n    const sentData = JSON.parse(mockWs.send.mock.calls[0][0]);\n    expect(sentData.type).toBe('getDiagram');\n    expect(sentData.msgId).toBe('test-msg-id');\n    expect(sentData.diagram).toEqual(mockDiagram);\n  });\n\n  it('should return a new Diagram when diagramData is undefined', async () => {\n    (fs.readFile as any).mockResolvedValueOnce(undefined);\n    await getDiagram(createMockParams({ ...mockData, diagramId: 'test-diagram.json' }));\n\n    expect(fs.readFile).toHaveBeenCalled();\n    expect(mockWs.send).toHaveBeenCalledTimes(1);\n\n    const sentData = JSON.parse(mockWs.send.mock.calls[0][0]);\n    expect(sentData.type).toBe('getDiagram');\n    expect(sentData.msgId).toBe('test-msg-id');\n    expect(sentData.diagram).toBeDefined();\n    expect(sentData.diagram.nodes).toEqual([]);\n    expect(sentData.diagram.links).toEqual([]);\n  });\n\n  it('should return a new Diagram when file reading throws an error', async () => {\n    (fs.readFile as any).mockRejectedValueOnce(new Error('File not found'));\n    const consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });\n\n    await getDiagram(createMockParams({ ...mockData, diagramId: 'test-diagram.json' }));\n\n    expect(fs.readFile).toHaveBeenCalled();\n    expect(consoleErrorSpy).toHaveBeenCalledWith('Error reading diagram file:', expect.any(Error));\n    expect(mockWs.send).toHaveBeenCalledTimes(1);\n\n    const sentData = JSON.parse(mockWs.send.mock.calls[0][0]);\n    expect(sentData.type).toBe('getDiagram');\n    expect(sentData.msgId).toBe('test-msg-id');\n    expect(sentData.diagram).toBeDefined();\n    expect(sentData.diagram.nodes).toEqual([]);\n    expect(sentData.diagram.links).toEqual([]);\n\n    consoleErrorSpy.mockRestore();\n  });\n\n  it('should handle empty file content correctly', async () => {\n    (fs.readFile as any).mockResolvedValueOnce('');\n    await getDiagram(createMockParams({ ...mockData, diagramId: 'test-diagram.json' }));\n\n    expect(fs.readFile).toHaveBeenCalled();\n    expect(mockWs.send).toHaveBeenCalledTimes(1);\n\n    const sentData = JSON.parse(mockWs.send.mock.calls[0][0]);\n    expect(sentData.type).toBe('getDiagram');\n    expect(sentData.msgId).toBe('test-msg-id');\n    expect(sentData.diagram).toBeDefined();\n    expect(sentData.diagram.nodes).toEqual([]);\n    expect(sentData.diagram.links).toEqual([]);\n  });\n});\n"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/getDiagram.ts",
    "content": "import { Diagram } from '@data-story/core';\nimport fs from 'fs/promises';\nimport { MessageHandler, MessageHandlerParams } from '../MessageHandler';\n\ninterface GetDiagramMessage {\n  type: 'getDiagram';\n  msgId: string;\n  diagramId?: string;\n}\n\nexport const getDiagram: MessageHandler<GetDiagramMessage> = async ({\n  ws,\n  data,\n}: MessageHandlerParams<GetDiagramMessage>) => {\n  let diagram: Diagram | undefined;\n\n  if ('diagramId' in data && typeof data.diagramId === 'string') {\n    try {\n      const diagramData = await fs.readFile(data.diagramId, 'utf-8');\n      diagramData && (diagram = JSON.parse(diagramData));\n    } catch (error) {\n      console.error('Error reading diagram file:', error);\n    }\n  }\n\n  if (!diagram) {\n    diagram = new Diagram();\n  }\n\n  ws.send(JSON.stringify({\n    ...data,\n    type: 'getDiagram',\n    diagram,\n  }));\n};\n"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/getNodeDescriptions.ts",
    "content": "import { MessageHandler, MessageHandlerParams } from '../MessageHandler';\n\nexport type DescribeMessage = {\n  type: 'getNodeDescriptions',\n  msgId: string;\n}\n\nexport const getNodeDescriptions: MessageHandler<DescribeMessage> = async ({\n  ws,\n  data,\n  app,\n}: MessageHandlerParams<DescribeMessage>,\n) => {\n  const response = {\n    ...data,\n    availableNodes: app.descriptions(),\n  }\n\n  ws.send(JSON.stringify(response))\n}\n"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/index.ts",
    "content": "export { getNodeDescriptions } from './getNodeDescriptions'\nexport { run } from './run'\nexport { getDiagram } from './getDiagram'\nexport { updateDiagram } from './updateDiagram'\nexport { observeLinkItems } from './observeLinkItems'\nexport { observeLinkCounts } from './observeLinkCounts'\nexport { observeLinkUpdate } from './observeLinkUpdate'\nexport { observeNodeStatus } from './observeNodeStatus'\nexport { cancelObservation } from './cancelObservation'\nexport { getDataFromStorage } from './getDataFromStorage'\nexport { abortExecution } from './abortExecution'\n"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/observeLinkCounts.ts",
    "content": "import { MessageHandler, MessageHandlerParams } from '../MessageHandler';\nimport {\n  RequestObserverType,\n  ObserveLinkCounts,\n} from '@data-story/core';\n\nexport const observeLinkCounts: MessageHandler<ObserveLinkCounts> = async({\n  ws,\n  data,\n  observerController,\n}: MessageHandlerParams<ObserveLinkCounts>) => {\n  observerController.addLinkCountsObserver({\n    ...data,\n    onReceive: ({ links }) => {\n      ws.send(JSON.stringify({\n        links: links,\n        type: RequestObserverType.observeLinkCounts,\n        msgId: data.msgId,\n      }))\n    },\n  } as ObserveLinkCounts);\n}\n"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/observeLinkItems.ts",
    "content": "import { MessageHandler, MessageHandlerParams } from '../MessageHandler';\nimport {\n  type InputObserver,\n  type ItemValue,\n  type ObserveLinkItems,\n  RequestObserverType,\n} from '@data-story/core';\n\nexport const observeLinkItems: MessageHandler<ObserveLinkItems> = async({\n  ws,\n  data,\n  observerController,\n}: MessageHandlerParams<ObserveLinkItems>) => {\n  observerController.addLinkItemsObserver({\n    ...data,\n    onReceive: (items: ItemValue[], inputObserver: InputObserver) => {\n      ws.send(JSON.stringify({\n        items,\n        inputObserver,\n        type: RequestObserverType.observeLinkItems,\n        msgId: data!.msgId,\n      }))\n    },\n  } as ObserveLinkItems);\n}\n"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/observeLinkUpdate.ts",
    "content": "import { ObserveLinkUpdate, RequestObserverType } from '@data-story/core';\nimport { MessageHandler, MessageHandlerParams } from '../MessageHandler';\n\nexport const observeLinkUpdate: MessageHandler<ObserveLinkUpdate> = async({\n  ws,\n  data,\n  observerController,\n}: MessageHandlerParams<ObserveLinkUpdate>) => {\n  observerController.observeLinkUpdate({\n    ...data,\n    onReceive: () => {\n      ws.send(JSON.stringify({\n        type: RequestObserverType.observeLinkUpdate,\n        msgId: data!.msgId,\n        linkIds: data!.linkIds,\n      }))\n    },\n  } as ObserveLinkUpdate);\n}"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/observeNodeStatus.ts",
    "content": "import { NodeStatus, ObserveNodeStatus, RequestObserverType } from '@data-story/core'\nimport { MessageHandler, MessageHandlerParams } from '../MessageHandler'\n\nexport const observeNodeStatus: MessageHandler<ObserveNodeStatus> = async({\n  ws,\n  data,\n  observerController,\n}: MessageHandlerParams<ObserveNodeStatus>) => {\n  observerController.addNodeStatusObserver({\n    ...data,\n    onReceive: ({ nodes }) => {\n      ws.send(JSON.stringify({\n        nodes,\n        type: RequestObserverType.observeNodeStatus,\n        // @ts-ignore\n        msgId: data!.msgId,\n      }))\n    },\n  })\n}"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/run.ts",
    "content": "import WebSocket from 'ws';\nimport { MessageHandler, MessageHandlerParams } from '../MessageHandler';\nimport {\n  Diagram,\n  ExecutionFailure,\n} from '@data-story/core';\nimport { abortControllers } from './abortExecution';\n\nexport type RunMessage = {\n  msgId: string,\n  type: 'run',\n  diagram: Diagram,\n  executionId: string,\n}\n\nexport const run: MessageHandler<RunMessage> = async({\n  ws,\n  data,\n  observerController,\n  app,\n}: MessageHandlerParams<RunMessage>) => {\n  const diagram = new Diagram({\n    nodes: data.diagram.nodes,\n    links: data.diagram.links,\n    params: data.diagram.params,\n  })\n  const startTime = performance.now();\n  const { executionId, msgId } = data\n\n  const controller = new AbortController();\n  abortControllers.set(executionId, controller);\n  const abortSignal = controller.signal;\n\n  const executor = app.getExecutor({\n    diagram,\n    observerController,\n  });\n\n  const execution = executor.execute(abortSignal)\n\n  try {\n    for await(const update of execution) {}\n\n    ws.send(\n      JSON.stringify({\n        msgId,\n        type: 'ExecutionResult',\n        time: performance.now() - startTime,\n      }),\n    )\n  } catch(error: any) {\n    if (error instanceof Error && error.message === 'Execution aborted') {\n      ws.send(\n        JSON.stringify({\n          msgId,\n          type: 'ExecutionAborted',\n          executionId,\n        }),\n      );\n    } else if (ws.readyState === WebSocket.OPEN) {\n      console.log('Sending ExecutionFailure to client')\n      console.log(error)\n\n      const failure: ExecutionFailure = {\n        msgId,\n        type: 'ExecutionFailure',\n        message: error.message,\n      }\n\n      ws.send(JSON.stringify(failure))\n    } else {\n      console.log('WebSocket connection closed, unable to send ExecutionFailure')\n    }\n\n    return;\n  }\n}\n"
  },
  {
    "path": "packages/nodejs/src/server/messageHandlers/updateDiagram.ts",
    "content": "import fs from 'fs/promises';\n\nimport { MessageHandler, MessageHandlerParams } from '../MessageHandler';\n\nexport interface UpdateDiagramMessage {\n  type: 'updateDiagram';\n  diagram: unknown;\n  diagramId?: string;\n}\n\nexport const updateDiagram: MessageHandler<UpdateDiagramMessage> =\n  async ({\n    ws, data,\n  }: MessageHandlerParams<UpdateDiagramMessage>) => {\n    if (data.diagramId) {\n      const diagramData = JSON.stringify(data.diagram);\n      await fs.writeFile(data.diagramId, diagramData, 'utf-8');\n      console.log('saved diagram', data.diagramId);\n      const resp = Object.assign({}, data);\n      delete resp.diagram;\n      ws.send(JSON.stringify({\n        ...resp,\n      }));\n    }\n  };\n"
  },
  {
    "path": "packages/nodejs/src/storage/createStorage.ts",
    "content": "import { InMemoryObserverStorage, ObserverStorage } from '@data-story/core';\nimport { getWorkingDirConfig, WorkingDirDsServerConfig } from '../server/getWorkingDirConfig';\nimport { DuckDBStorage } from './duckDBStorage';\nimport path from 'path';\nimport fs from 'fs';\nimport { JsonObserverStorage } from './jsonObserverStorage';\n\nexport const createStorage = (): ObserverStorage => {\n  const config = getWorkingDirConfig();\n  if (config.storage === 'JSON') {\n    const filePath = createDataStoryJSONPath({ config, diagramId: `storage-json-${Date.now()}` });\n    return new JsonObserverStorage(filePath);\n  } else if (config.storage === 'DUCK_DB') {\n    const dbPath = createDataStoryDBPath({ config });\n    return new DuckDBStorage(dbPath);\n  }\n  return new InMemoryObserverStorage('todo-diagramId');\n};\n\nconst createDataStoryDBPath = ({ config }: { config: WorkingDirDsServerConfig; }): string => {\n  const datastoryDir = path.join(config.workingDir, '.datastory');\n  if (!fs.existsSync(datastoryDir)) {\n    fs.mkdirSync(datastoryDir);\n  }\n  const dbPath = path.join(datastoryDir, 'execution.db');\n  return dbPath;\n};\n\nconst createDataStoryJSONPath = ({ config, diagramId }: { config: WorkingDirDsServerConfig; diagramId: string }): string => {\n  const datastoryDir = path.join(\n    config.workingDir,\n    '.datastory',\n    'storage',\n    diagramId,\n  );\n  if (!fs.existsSync(datastoryDir)) {\n    fs.mkdirSync(datastoryDir);\n  }\n  const filePath = path.join(datastoryDir, 'execution.json');\n  return filePath;\n};\n"
  },
  {
    "path": "packages/nodejs/src/storage/duckDBStorage.test.ts",
    "content": "/* eslint-disable @stylistic/quotes */\nimport { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';\nimport { DuckDBStorage } from './duckDBStorage';\nimport { ItemValue, LinkId } from '@data-story/core';\nimport { DuckDBConnection } from '@duckdb/node-api';\n\ndescribe('DuckDBStorage', () => {\n  let storage: DuckDBStorage;\n  let db: DuckDBConnection;\n  const mockLinkId: LinkId = 'test-link-id';\n\n  beforeEach(async () => {\n    // Create a new instance of DuckDBStorage\n    storage = new DuckDBStorage(':memory:');\n    await storage.init();\n\n    // Reset the sequence counter\n    storage.resetSequence();\n\n    // Get access to the actual database\n    db = (storage as any).connection!;\n\n    // Verify the database was initialized properly\n    expect(db).toBeDefined();\n  });\n\n  afterEach(async () => {\n    await storage.close();\n  });\n\n  it('should properly escape single quotes in JSON data', async () => {\n    // Create test items with single quotes that need escaping\n    const testItems: ItemValue[] = [\n      { id: 1, name: 'Item with no quotes' },\n      { id: 2, name: 'Item with \\'single\\' quotes' },\n      { id: 3, name: `Item with ''multiple'' 'single' quotes` },\n      { id: 4, name: `\\\\nfo$oo$` },\n      { id: 5, name: `hello, \"world\"` },\n    ];\n\n    // Call the method under test\n    await storage.appendLinkItems(mockLinkId, testItems);\n\n    // Query the database to verify the items were inserted correctly\n    const prepared = await db.prepare('SELECT * FROM linkItems WHERE linkId = $linkId ORDER BY sequenceNumber ASC');\n    prepared.bind({ linkId: mockLinkId });\n    const result = (await prepared.runAndReadAll()).getRowObjectsJS();\n\n    // Verify the correct number of items were inserted\n    expect(result.length).toBe(testItems.length);\n\n    // Verify each item was stored correctly\n    result.forEach((row, index) => {\n      const parsedItem = JSON.parse(row.item as string);\n      expect(parsedItem.id).toBe(testItems[index].id);\n      expect(parsedItem.name).toBe(testItems[index].name);\n      expect(row.linkId).toBe(mockLinkId);\n\n      // Verify sequence numbers are sequential, but don't assume they start at 0\n      expect(Number(row.sequenceNumber)).toBe(index);\n    });\n  });\n\n  it('should increment sequence numbers correctly', async () => {\n    // Create test items\n    const testItems: ItemValue[] = [\n      { id: 1, value: 'First item' },\n      { id: 2, value: 'Second item' },\n      { id: 3, value: 'Third item' },\n    ];\n\n    // Call the method under test\n    await storage.appendLinkItems(mockLinkId, testItems);\n\n    // Query the database to verify sequence numbers\n    const prepared = await db.prepare(\n      'SELECT sequenceNumber FROM linkItems WHERE linkId = $linkId ORDER BY sequenceNumber ASC');\n    prepared.bind({ linkId: mockLinkId });\n    const result = (await prepared.runAndReadAll()).getRowObjectsJS();\n\n    // Verify sequence numbers are incremented sequentially\n    expect(result.length).toBe(3);\n\n    // Verify sequence numbers are sequential\n    for (let i = 1; i < result.length; i++) {\n      expect(Number(result[i].sequenceNumber)).toBe(Number(result[i - 1].sequenceNumber) + 1);\n    }\n  });\n\n  it('should handle empty items array', async () => {\n    // Call with empty array\n    await storage.appendLinkItems(mockLinkId, []);\n\n    // Query the database to verify no items were inserted\n    const prepared = await db.prepare('SELECT * FROM linkItems WHERE linkId = $linkId');\n    prepared.bind({ linkId: mockLinkId });\n\n    const result = (await prepared.runAndReadAll()).getRowObjectsJS();\n\n    // Verify no items were inserted\n    expect(result.length).toBe(0);\n  });\n\n  it('should handle complex nested objects', async () => {\n    // Create a complex nested object\n    const complexItem: ItemValue = {\n      id: 1,\n      name: 'Complex item',\n      nested: {\n        array: [ 1, 2, 3 ],\n        object: { key: 'value' },\n        withQuotes: 'Item with \\'quotes\\'',\n      },\n    };\n\n    // Call the method under test\n    await storage.appendLinkItems(mockLinkId, [ complexItem ]);\n\n    // Query the database to verify the complex object was stored correctly\n    const prepared = await db.prepare('SELECT * FROM linkItems WHERE linkId = $linkId');\n    prepared.bind({ linkId: mockLinkId });\n    const result = (await prepared.runAndReadAll()).getRowObjectsJS();\n\n    // Verify the complex object was stored correctly\n    expect(result.length).toBe(1);\n    const parsedItem = JSON.parse(result[0].item as string);\n    expect(parsedItem).toEqual(complexItem);\n    expect(parsedItem.nested.array).toEqual([ 1, 2, 3 ]);\n    expect(parsedItem.nested.object.key).toBe('value');\n    expect(parsedItem.nested.withQuotes).toBe('Item with \\'quotes\\'');\n  });\n\n  it('should properly handle SQL injection attempts', async () => {\n    // Create test items with potential SQL injection payloads\n    const sqlInjectionItems: ItemValue[] = [\n      {\n        id: 1,\n        name: 'SQL Injection attempt',\n        payload: '\\'); DELETE FROM linkItems; --',\n      },\n      {\n        id: 2,\n        name: 'Another SQL Injection attempt',\n        payload: '\\' OR 1=1; --',\n      },\n      {\n        id: 3,\n        name: 'Complex SQL Injection',\n        payload: '\\'); DROP TABLE linkItems; INSERT INTO linkItems VALUES(\\'hacked',\n      },\n    ];\n\n    // Call the method under test\n    await storage.appendLinkItems(mockLinkId, sqlInjectionItems);\n\n    // Query the database to verify the items were inserted correctly\n    // and that no SQL injection occurred\n    const prepared = await db.prepare('SELECT * FROM linkItems WHERE linkId = $linkId ORDER BY sequenceNumber ASC');\n    prepared.bind({ linkId: mockLinkId });\n    const result = (await prepared.runAndReadAll()).getRowObjectsJS();\n\n    // Verify the correct number of items were inserted\n    expect(result.length).toBe(3);\n\n    // Verify each item was stored correctly with the SQL injection payload intact\n    result.forEach((row, index) => {\n      const parsedItem = JSON.parse(row.item as string);\n      expect(parsedItem.id).toBe(sqlInjectionItems[index].id);\n      expect(parsedItem.name).toBe(sqlInjectionItems[index].name);\n      expect(parsedItem.payload).toBe(sqlInjectionItems[index].payload);\n      expect(row.linkId).toBe(mockLinkId);\n    });\n\n    // Verify that the table structure is still intact\n    // If SQL injection had worked, this query might fail or return unexpected results\n    const tableInfo = await db.runAndReadAll('PRAGMA table_info(linkItems)');\n    expect(tableInfo.getRowObjectsJS().length).toBeGreaterThan(0);\n\n    // Verify we can still query the table normally\n    const count = await db.runAndReadAll('SELECT COUNT(*) AS cnt FROM linkItems');\n    expect(Number(count.getRowObjectsJS()[0].cnt)).toBe(3);\n  });\n});\n"
  },
  {
    "path": "packages/nodejs/src/storage/duckDBStorage.ts",
    "content": "import { GetLinkItemsParams, ItemValue, LinkCount, LinkId, NodeId, ObserverStorage } from '@data-story/core';\nimport { DuckDBConnection, DuckDBInstance, timestampValue } from '@duckdb/node-api';\nimport { chunk } from 'lodash';\n\nexport class DuckDBStorage implements ObserverStorage {\n  private connection?: DuckDBConnection;\n  private insertSequence: bigint = BigInt(0);\n\n  constructor(private dbPath: string) {\n  }\n\n  async init() {\n    const dbInstance = await DuckDBInstance.create(this.dbPath);\n    this.connection = await dbInstance.connect();\n    await this.connection.run(`\n      CREATE TABLE IF NOT EXISTS linkCounts\n      (\n        linkId\n          TEXT\n          PRIMARY\n            KEY,\n        COUNT\n          INT,\n        createTime\n          TIMESTAMP,\n        updateTime\n          TIMESTAMP\n      );\n\n      CREATE TABLE IF NOT EXISTS linkItems\n      (\n        linkId\n          TEXT,\n        sequenceNumber\n          BIGINT,\n        item\n          TEXT,\n        createTime\n          TIMESTAMP,\n        updateTime\n          TIMESTAMP\n      );\n\n      CREATE TABLE IF NOT EXISTS nodes\n      (\n        nodeId\n          TEXT\n          PRIMARY\n            KEY,\n        status\n          TEXT,\n        createTime\n          TIMESTAMP,\n        updateTime\n          TIMESTAMP\n      );\n    `);\n  }\n\n  async close() {\n    this.connection?.disconnectSync();\n  }\n\n  resetSequence() {\n    this.insertSequence = BigInt(0);\n  }\n\n  nextSequenceVal() {\n    return this.insertSequence++;\n  }\n\n  async getLinkCount(linkId: LinkId): Promise<LinkCount | undefined> {\n    const conn = this.connection!;\n    const prepared = await conn.prepare('SELECT count FROM linkCounts WHERE linkId = $linkId');\n    prepared.bind({ linkId });\n    debug(`[DuckDBStorage] Running prepared.run for getLinkCount: linkId=${linkId}`);\n    debug(`[DuckDBStorage] Running prepared.runAndReadAll for getLinkCount: linkId=${linkId}`);\n    try {\n      const result = (await prepared.runAndReadAll()).getRowObjectsJS();\n      if (result && result.length > 0) {\n        return result[0].count as LinkCount;\n      }\n      return undefined;\n    } catch (error) {\n      console.error(`[DuckDBStorage] Error in getLinkCount: ${error}`);\n      throw error;\n    } finally {\n      debug(`[DuckDBStorage] Completed prepared.runAndReadAll for getLinkCount: linkId=${linkId}`);\n    }\n  }\n\n  async setLinkCount(linkId: LinkId, count: LinkCount): Promise<void> {\n    const conn = this.connection!;\n    debug(`[DuckDBStorage] Running direct SQL for setLinkCount: linkId=${linkId}, count=${count}`);\n    try {\n      // Escape single quotes in linkId to prevent SQL injection\n      const escapedLinkId = linkId.replace(/'/g, '\\'\\'');\n      const sql = `INSERT INTO linkCounts (linkId, count, createTime, updateTime)\n                   VALUES ('${escapedLinkId}', ${count}, current_localtimestamp(), current_localtimestamp())\n                   ON CONFLICT(linkId) DO UPDATE SET count      = ${count},\n                                                     updateTime = current_localtimestamp()`;\n      await conn.run(sql);\n    } catch (error) {\n      console.error(`[DuckDBStorage] Error in setLinkCount: ${error}`);\n      throw error;\n    } finally {\n      debug(`[DuckDBStorage] Completed direct SQL for setLinkCount: linkId=${linkId}, count=${count}`);\n    }\n  }\n\n  async getLinkItems({ linkId, offset, limit }: GetLinkItemsParams): Promise<ItemValue[] | undefined> {\n    const conn = this.connection!;\n    const prepared = await conn.prepare(\n      'SELECT item FROM linkItems WHERE linkId = $linkId ORDER BY sequenceNumber ASC LIMIT $limit OFFSET $offset');\n    prepared.bind({ linkId, limit, offset });\n    debug(`[DuckDBStorage] Running prepared.run for getLinkItems: linkId=${linkId}, offset=${offset}, limit=${limit}`);\n    debug(`[DuckDBStorage] Running prepared.runAndReadAll for getLinkItems: linkId=${linkId}, offset=${offset}, limit=${limit}`);\n    try {\n      const data = (await prepared.runAndReadAll()).getRowObjectsJS();\n      if (!data || data.length === 0) {\n        return undefined;\n      }\n      return data.map(row => JSON.parse(row.item as string));\n    } catch (error) {\n      console.error(`[DuckDBStorage] Error in getLinkItems: ${error}`);\n      throw error;\n    } finally {\n      debug(`[DuckDBStorage] Completed prepared.runAndReadAll for getLinkItems: linkId=${linkId}, offset=${offset}, limit=${limit}`);\n    }\n  }\n\n  async setLinkItems(linkId: LinkId, items: ItemValue[]): Promise<void> {\n    this.resetSequence();\n    const conn = this.connection!;\n    const prepared = await conn.prepare('DELETE FROM linkItems WHERE linkId = $linkId');\n    prepared.bind({ linkId });\n    debug(`[DuckDBStorage] Running prepared.run for setLinkItems (DELETE): linkId=${linkId}, items.length=${items.length}`);\n    try {\n      await prepared.run();\n    } catch (error) {\n      console.error(`[DuckDBStorage] Error in setLinkItems (DELETE): ${error}`);\n      throw error;\n    } finally {\n      debug(`[DuckDBStorage] Completed prepared.run for setLinkItems (DELETE): linkId=${linkId}, items.length=${items.length}`);\n    }\n    await this.appendLinkItems(linkId, items);\n  }\n\n  async appendLinkItems(linkId: LinkId, items: ItemValue[]): Promise<void> {\n    if (items.length === 0) {\n      return; // Nothing to insert\n    }\n    const appender = await this.connection!.createAppender('linkItems');\n    const currentTime = new Date();\n    const currentTimestamp = timestampValue(BigInt(currentTime.getTime() * 1000));\n    try {\n      debug('Inserting items');\n      for (const itemChunk of chunk(items, 1000)) {\n        for (const item of itemChunk) {\n          appender.appendVarchar(linkId);\n          appender.appendBigInt(this.nextSequenceVal());\n          appender.appendVarchar(JSON.stringify(item));\n          appender.appendTimestamp(currentTimestamp);\n          appender.appendTimestamp(currentTimestamp);\n          appender.endRow();\n        }\n        debug('Inserting items', `Inserted ${itemChunk.length} items`);\n      }\n    } catch (error) {\n      console.error('Error inserting items:', error);\n      throw error;\n    } finally {\n      appender.closeSync();\n      debug('Inserting items completed');\n      debug(`[DuckDBStorage] Completed appendLinkItems: linkId=${linkId}, items.length=${items.length}`);\n    }\n  }\n\n  async getNodeStatus(nodeId: NodeId): Promise<'BUSY' | 'COMPLETE' | undefined> {\n    const conn = this.connection!;\n    const prepared = await conn.prepare('SELECT status FROM nodes WHERE nodeId = $nodeId');\n    prepared.bind({ nodeId });\n    debug(`[DuckDBStorage] Running prepared.run for getNodeStatus: nodeId=${nodeId}`);\n    debug(`[DuckDBStorage] Running prepared.runAndReadAll for getNodeStatus: nodeId=${nodeId}`);\n    try {\n      const result = (await prepared.runAndReadAll()).getRowObjectsJS();\n      if (result && result.length > 0) {\n        return result[0].status as 'BUSY' | 'COMPLETE';\n      }\n    } catch (error) {\n      console.error(`[DuckDBStorage] Error in getNodeStatus: ${error}`);\n      throw error;\n    } finally {\n      debug(`[DuckDBStorage] Completed prepared.runAndReadAll for getNodeStatus: nodeId=${nodeId}`);\n    }\n  }\n\n  async setNodeStatus(nodeId: NodeId, status: 'BUSY' | 'COMPLETE'): Promise<void> {\n    const conn = this.connection!;\n    debug(`[DuckDBStorage] Running direct SQL for setNodeStatus: nodeId=${nodeId}, status=${status}`);\n    try {\n      // Escape single quotes in nodeId to prevent SQL injection\n      const escapedNodeId = nodeId.replace(/'/g, '\\'\\'');\n      const sql = `INSERT INTO nodes (nodeId, status, createTime, updateTime)\n                   VALUES ('${escapedNodeId}', '${status}', current_localtimestamp(), current_localtimestamp())\n                   ON CONFLICT(nodeId) DO UPDATE SET status     = '${status}',\n                                                     updateTime = current_localtimestamp()`;\n      await conn.run(sql);\n    } catch (error) {\n      console.error(`[DuckDBStorage] Error in setNodeStatus: ${error}`);\n      throw error;\n    } finally {\n      debug(`[DuckDBStorage] Completed direct SQL for setNodeStatus: nodeId=${nodeId}, status=${status}`);\n    }\n  }\n}\n\nfunction debug(...args: any[]) {\n  if (process.env.DEBUG === 'true') {\n    console.log(...args);\n  }\n}\n"
  },
  {
    "path": "packages/nodejs/src/storage/jsonObserverStorage.ts",
    "content": "import { GetLinkItemsParams, ItemValue, LinkId, NodeId, ObserverStorage } from '@data-story/core';\nimport { promises as fsPromises } from 'fs';\nimport * as fs from 'fs';\nimport * as path from 'path';\n\ntype JsonObserverStorageData = {\n  linkCounts: Record<string, number>;\n  linkItems: Record<string, ItemValue[]>;\n  nodes: Record<string, 'BUSY' | 'COMPLETE'>;\n}\n\n/**\n * JSON Observer Storage implementation\n * Uses in-memory caching and debounced writes for improved performance\n */\nexport class JsonObserverStorage implements ObserverStorage {\n  // In-memory cache\n  private cache: JsonObserverStorageData | null = null;\n  // Flag indicating if cache has unsaved changes\n  private isDirty = false;\n  private writeDebounceTimeout: NodeJS.Timeout | null = null;\n  private readonly DEBOUNCE_TIME = 1000;\n\n  constructor(private filePath: string) {}\n\n  /**\n   * Creates necessary directories and loads data into memory\n   */\n  async init(): Promise<void> {\n    await fsPromises.mkdir(path.dirname(this.filePath), { recursive: true });\n    if (!fs.existsSync(this.filePath)) {\n      this.cache = {\n        linkCounts: {},\n        linkItems: {},\n        nodes: {},\n      };\n      await this.persistCache();\n    } else {\n      await this.loadCache();\n    }\n  }\n\n  /**\n   * Close storage and ensure all changes are saved\n   */\n  async close(): Promise<void> {\n    // Cancel any pending write operations\n    if (this.writeDebounceTimeout) {\n      clearTimeout(this.writeDebounceTimeout);\n      this.writeDebounceTimeout = null;\n    }\n\n    // If there are unsaved changes, save immediately\n    if (this.isDirty && this.cache) {\n      await this.persistCache();\n    }\n  }\n\n  private async ensureCache(): Promise<JsonObserverStorageData> {\n    if (!this.cache) await this.loadCache();\n    if (!this.cache) throw new Error('Failed to initialize cache');\n    return this.cache;\n  }\n\n  async getLinkCount(linkId: LinkId): Promise<number | undefined> {\n    const cache = await this.ensureCache();\n    return cache.linkCounts[linkId];\n  }\n\n  async setLinkCount(linkId: LinkId, count: number): Promise<void> {\n    const cache = await this.ensureCache();\n    cache.linkCounts[linkId] = count;\n    this.scheduleWrite();\n  }\n\n  async getLinkItems({ linkId, offset, limit }: GetLinkItemsParams): Promise<ItemValue[] | undefined> {\n    const cache = await this.ensureCache();\n    if (!cache.linkItems[linkId]) return undefined;\n    return cache.linkItems[linkId].slice(offset, offset + limit);\n  }\n\n  async setLinkItems(linkId: LinkId, items: ItemValue[]): Promise<void> {\n    const cache = await this.ensureCache();\n    cache.linkItems[linkId] = items;\n    this.scheduleWrite();\n  }\n\n  async appendLinkItems(linkId: LinkId, items: ItemValue[]): Promise<void> {\n    const cache = await this.ensureCache();\n\n    if (!cache.linkItems[linkId]) {\n      cache.linkItems[linkId] = [];\n    }\n\n    cache.linkItems[linkId].push(...items);\n    this.scheduleWrite();\n  }\n\n  async getNodeStatus(nodeId: NodeId): Promise<'BUSY' | 'COMPLETE' | undefined> {\n    const cache = await this.ensureCache();\n    return cache.nodes[nodeId];\n  }\n\n  async setNodeStatus(nodeId: NodeId, status: 'BUSY' | 'COMPLETE'): Promise<void> {\n    const cache = await this.ensureCache();\n    cache.nodes[nodeId] = status;\n    this.scheduleWrite();\n  }\n\n  /**\n   * Load data from file into memory cache\n   */\n  private async loadCache(): Promise<void> {\n    try {\n      const data = await fsPromises.readFile(this.filePath, 'utf-8');\n      this.cache = JSON.parse(data);\n    } catch (error) {\n      console.error('Error loading cache:', error);\n      this.cache = {\n        linkCounts: {},\n        linkItems: {},\n        nodes: {},\n      };\n    }\n  }\n\n  /**\n   * Persist memory cache to file\n   * Only writes when cache is marked as dirty (has changes)\n   */\n  private async persistCache(): Promise<void> {\n    if (!this.isDirty || !this.cache) return;\n\n    try {\n      // Asynchronously write to file using formatted JSON for easier debugging\n      await fsPromises.writeFile(\n        this.filePath,\n        JSON.stringify(this.cache, null, 2),\n      );\n      this.isDirty = false;\n    } catch (error) {\n      console.error('Error persisting cache:', error);\n    }\n  }\n\n  /**\n   * Schedule a debounced write operation\n   * Multiple rapid calls are coalesced into a single write, reducing disk I/O\n   */\n  private scheduleWrite(): void {\n    if (this.writeDebounceTimeout) {\n      clearTimeout(this.writeDebounceTimeout);\n    }\n\n    // Mark cache as dirty (has changes)\n    this.isDirty = true;\n\n    this.writeDebounceTimeout = setTimeout(async () => {\n      await this.persistCache();\n      this.writeDebounceTimeout = null;\n    }, this.DEBOUNCE_TIME);\n  }\n}"
  },
  {
    "path": "packages/nodejs/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES6\",\n    \"lib\": [\n      \"esnext\"\n    ],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"outDir\": \"dist\",\n    \"esModuleInterop\": true,\n    \"module\": \"commonjs\",\n    \"sourceMap\": true,\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"incremental\": true,\n    \"noImplicitAny\": true,\n    \"types\": [\n      \"vitest/globals\"\n    ],\n    \"declaration\": true\n  },\n  \"include\": [\n    \"./src/**/*.ts\",\n    \"./ds-server.ts\"\n  ],\n  \"exclude\": [\n    \"./node_modules\"\n  ]\n}\n"
  },
  {
    "path": "packages/nodejs/turbo.json",
    "content": "{\n    \"extends\": [\n        \"//\"\n    ],\n    \"tasks\": {\n        \"build:nodejs\": {\n            \"outputs\": [\n                \"./dist/**\",\n                \"!./dist/ds-server.min.js\"\n            ],\n            \"dependsOn\": [\n                \"^build\"\n            ]\n        },\n        \"build:server\": {\n            \"outputs\": [\n                \"./dist/ds-server.min.js\"\n            ],\n            \"dependsOn\": [\n                \"^build\"\n            ]\n        },\n        \"build\": {\n            \"dependsOn\": [\n                \"^build\",\n                \"build:nodejs\",\n                \"build:server\"\n            ]\n        },\n        \"start\": {\n            \"cache\": false,\n            \"persistent\": true\n        },\n        \"watch:server\": {\n            \"cache\": false,\n            \"persistent\": true\n        },\n        \"watch:nodejs\": {\n            \"cache\": false,\n            \"persistent\": true\n        },\n        \"watch\": {\n            \"dependsOn\": [\n                \"build\"\n            ],\n            \"with\": [\n                \"watch:server\",\n                \"watch:nodejs\"\n            ],\n            \"cache\": false,\n            \"persistent\": true\n        },\n      \"test\": {\n        \"dependsOn\": [\n          \"build\"\n        ]\n      }\n    }\n}\n"
  },
  {
    "path": "packages/nodejs/vitest.config.ts",
    "content": "import { defineConfig } from 'vitest/config'\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    // Dropped because of CJS is deprecated\n    // coverage: {\n    //   all: true,\n    //   exclude: [\n    //     './**/*.test.ts',\n    //     './dist/**',\n    //   ]\n    // },\n  },\n})"
  },
  {
    "path": "packages/ui/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\nsrc/tinker.ts\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# local env files\n.env*.local\n.env*.local\n.env\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n\n# datastory\n.datastory/cache\n.datastory/data\n.datastory/executions\n.datastory/local*.*\n\nnotes\nnotes.json\nnotes.js\nnotes.md\n\ndist"
  },
  {
    "path": "packages/ui/README.md",
    "content": "[docs](https://data-story-docs.vercel.app)\n\n## Testing\n```bash\n# run unit tests\nyarn test:unit\n\n# run component tests\nyarn test:component\n\n# run component tests and watch, then chose component test\ncd ../../\nyarn cy:open\n\n# run component tests and unit tests\nyarn test \n\n```\n"
  },
  {
    "path": "packages/ui/cypress-vite.config.ts",
    "content": "import { defineConfig } from 'vite';\nimport * as path from 'path';\n\nexport default defineConfig({\n  // Development mode configuration\n  mode: 'development',\n\n  // Entry point (Vite uses index.html as entry by default, but we can specify)\n  root: path.resolve(__dirname),\n\n  // Resolve configuration\n  resolve: {\n    extensions: [ '.js', '.jsx', '.ts', '.tsx' ],\n  },\n});\n"
  },
  {
    "path": "packages/ui/cypress.d.ts",
    "content": "import { mount } from 'cypress/react'\n\ndeclare global {\n  namespace Cypress {\n    interface Chainable {\n      mount: typeof mount;\n      dataCy(value: string): Chainable<JQuery<HTMLElement>>;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/ui/package.json",
    "content": "{\n  \"name\": \"@data-story/ui\",\n  \"version\": \"0.0.109\",\n  \"type\": \"commonjs\",\n  \"main\": \"./dist/bundle.cjs\",\n  \"module\": \"./dist/bundle.mjs\",\n  \"exports\": {\n    \"./data-story.css\": \"./dist/data-story.css\",\n    \".\": {\n      \"types\": \"./src/index.ts\",\n      \"import\": \"./dist/bundle.mjs\",\n      \"require\": \"./dist/bundle.cjs\",\n      \"default\": \"./dist/bundle.mjs\"\n    }\n  },\n  \"files\": [\n    \"/dist\",\n    \"/src\"\n  ],\n  \"scripts\": {\n    \"analyze\": \"yarn run -T webpack --profile --json > stats.json && yarn run -T webpack-bundle-analyzer stats.json\",\n    \"build:css\": \"postcss ./src/styles/globals.css -o ./dist/data-story.css\",\n    \"watch:css\": \"yarn run build:css --watch\",\n    \"build:webpack\": \"yarn run -T webpack --mode production\",\n    \"watch:webpack\": \"yarn run -T webpack --watch\",\n    \"release\": \"yarn run -T release-it\",\n    \"test:unit\": \"yarn run -T vitest --config vitest.config.ts --passWithNoTests\",\n    \"test:component\": \"yarn run -T cypress run --project ../../ ../../cypress.config.ts --component --spec 'src/**/*.cy.tsx'\",\n    \"tinker\": \"npx ts-node ./src/tinker.ts\"\n  },\n  \"release-it\": {\n    \"git\": false,\n    \"skipChecks\": true,\n    \"npm\": {\n      \"publish\": false,\n      \"skipChecks\": true,\n      \"versionArgs\": [\n        \"--workspaces-update=false\"\n      ]\n    }\n  },\n  \"dependencies\": {\n    \"@codemirror/autocomplete\": \"^6.16.2\",\n    \"@codemirror/lang-javascript\": \"^6.2.3\",\n    \"@codemirror/lang-json\": \"^6.0.1\",\n    \"@codemirror/view\": \"^6.36.5\",\n    \"@data-story/core\": \"workspace:*\",\n    \"@floating-ui/react\": \"^0.26.10\",\n    \"@tanstack/react-table\": \"^8.11.7\",\n    \"@tanstack/react-virtual\": \"^3.5.0\",\n    \"@uiw/react-codemirror\": \"patch:@uiw/react-codemirror@npm%3A4.23.10#~/.yarn/patches/@uiw-react-codemirror-npm-4.23.10-2db625ca86.patch\",\n    \"@xyflow/react\": \"12.5.5\",\n    \"ahooks\": \"^3.8.1\",\n    \"allotment\": \"^1.20.2\",\n    \"clsx\": \"^2.0.0\",\n    \"markdown-it\": \"^13.0.2\",\n    \"react-dnd\": \"^16.0.1\",\n    \"react-dnd-html5-backend\": \"^16.0.1\",\n    \"react-hook-form\": \"^7.43.8\",\n    \"rxjs\": \"^7.8.1\",\n    \"zustand\": \"^4.3.9\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/typography\": \"^0.5.10\",\n    \"@types/markdown-it\": \"^13.0.6\",\n    \"css-loader\": \"^6.8.1\",\n    \"postcss-cli\": \"^11.0.0\",\n    \"postcss-loader\": \"^7.3.3\",\n    \"style-loader\": \"^3.3.3\"\n  },\n  \"peerDependencies\": {\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  }\n}\n"
  },
  {
    "path": "packages/ui/postcss.config.js",
    "content": "/** @type {import('postcss-load-config').Config} */\n\nmodule.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\n"
  },
  {
    "path": "packages/ui/src/SerializedReactFlow.ts",
    "content": "import { Param } from '@data-story/core'\nimport type { CSSProperties, ReactNode } from 'react';\nimport { Node , Edge } from '@xyflow/react';\nexport type SerializedReactFlow = {\n  nodes: SerializedReactFlowNode[],\n  edges: SerializedReactFlowEdge[],\n  viewport: {\n    x: number,\n    y: number,\n    zoom: number,\n  },\n}\n\nexport type SerializedReactFlowNode = {\n  width?: number | null,\n  height?: number | null,\n  id: string,\n  position: {\n    x: number,\n    y: number,\n  },\n  data: {\n    computer: string,\n    label: string,\n    inputs: {\n      id: string,\n      name: string,\n      schema: any,\n    }[],\n    outputs: {\n      id: string,\n      name: string,\n      schema: any,\n    }[],\n    params: Param[],\n  },\n  selected?: boolean,\n  type?: string,\n  positionAbsolute?: {\n    x: number,\n    y: number,\n  },\n  dragging?: boolean,\n}\nexport type SerializedReactFlowEdge = {\n  id: string\n  source: string,\n  target: string,\n  sourceHandle?: string | null,\n  targetHandle?: string | null,\n  label?: string | ReactNode;\n  labelBgStyle?: CSSProperties;\n}\nexport type SNode = SerializedReactFlowNode & Node;\nexport type SEdge = SerializedReactFlowEdge & Edge;\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/DataStory.cy.tsx",
    "content": "import { DataStory } from './DataStory';\nimport { DataStoryProps } from './types';\n\nconst mountDataStory = (props: DataStoryProps) => {\n  cy.mount(<DataStory {...props} />);\n};\n\ndescribe('DataStory', () => {\n  it('should render', () => {\n    mountDataStory({ client: {} as any });\n    cy.get('[data-cy=\"data-story\"]').should('exist');\n  });\n\n  // fix: Resolve issue where the `onInitialize` method in the diagram is executed twice on first load.\n  it('should not execute onInitialize twice', () => {\n    const spyOnInitialize = cy.spy();\n    mountDataStory({ client: {} as any, onInitialize: spyOnInitialize });\n    cy.get('[data-cy=\"data-story\"]').should('exist');\n    cy.wrap(spyOnInitialize).should('have.been.calledOnce');\n    cy.wrap(spyOnInitialize).should('not.have.been.calledTwice');\n  });\n});"
  },
  {
    "path": "packages/ui/src/components/DataStory/DataStory.tsx",
    "content": "import './../../styles/globals.css';\nimport { Allotment } from 'allotment';\nimport { DataStoryProps, StoreSchema } from './types';\nimport 'allotment/dist/style.css';\nimport { Sidebar } from './sidebar/sidebar';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { ReactFlowNode } from '../Node/ReactFlowNode';\nimport { DataStoryCanvasProvider } from './store/store';\nimport { DataStoryCanvas } from './DataStoryCanvas';\nimport { useRequest } from 'ahooks';\nimport { LoadingMask } from './common/loadingMask';\nimport { Diagram } from '@data-story/core';\n\nfunction handleRequestError(requestError?: Error): void {\n  if (requestError) console.error(`Error fetching : ${requestError?.message}`);\n}\n\nexport const DataStoryComponent = (\n  props: DataStoryProps,\n) => {\n  const { client, initSidebarKey, children, onChange, diagramId } = props;\n  const [selectedNode, setSelectedNode] = useState<ReactFlowNode>();\n  const [isSidebarClose, setIsSidebarClose] = useState(!!props.hideSidebar);\n  const partialStoreRef = useRef<Partial<StoreSchema>>(null);\n  const [sidebarKey, setSidebarKey] = useState(() => {\n    return initSidebarKey ?? '';\n  });\n\n  const {\n    data: nodeDescriptions,\n    loading: nodeDescriptionsLoading,\n    error: getNodeDescriptionsError,\n  } = useRequest(async() => {\n    return client.getNodeDescriptions({})\n  }, {\n    refreshDeps: [client], // Will re-fetch if client changes\n  });\n  handleRequestError(getNodeDescriptionsError);\n\n  const {\n    data: diagramData,\n    loading: diagramDataLoading,\n    error: diagramDataError,\n  } = useRequest(async() => {\n    return client.getDiagram?.({ diagramId });\n  }, {\n    refreshDeps: [client, diagramId], // Will re-fetch if client changes\n  });\n  handleRequestError(diagramDataError);\n\n  useEffect(() => {\n    if (sidebarKey !== 'node') {\n      setSelectedNode(undefined);\n    }\n  }, [sidebarKey]);\n\n  useEffect(() => {\n    if (!sidebarKey) {\n      setIsSidebarClose(true);\n    } else {\n      setIsSidebarClose(false);\n    }\n  }, [sidebarKey]);\n\n  const handleNodeClick = useCallback((node: ReactFlowNode) => {\n    setSidebarKey('node');\n    setSelectedNode(node);\n    setIsSidebarClose(false);\n  }, [setSidebarKey, setSelectedNode, setIsSidebarClose]);\n\n  const handleSave = useCallback(async(diagram: Diagram) => {\n    client?.updateDiagram?.(diagram, diagramId);\n  }, [client, diagramId]);\n\n  return (\n    <DataStoryCanvasProvider>\n      <div className=\"relative h-full w-full\" data-cy=\"data-story\">\n        {children}\n        {\n          (diagramDataLoading || nodeDescriptionsLoading) // TODO isLoading?\n            ? <LoadingMask/>\n            : <Allotment className='h-full border-0.5 relative'>\n              {/*The Allotment.Pane will recalculate the width and height of the child components.*/}\n              {/*The className is used to address the ReactFlow warning.*/}\n              <Allotment.Pane minSize={30} className=\"h-full w-96\">\n                <DataStoryCanvas\n                  {...props}\n                  onSave={handleSave}\n                  key={'data-story-canvas'}\n                  initDiagram={diagramData}\n                  ref={partialStoreRef}\n                  setSidebarKey={setSidebarKey}\n                  sidebarKey={sidebarKey}\n                  onChange={onChange}\n                  onNodeDoubleClick={handleNodeClick}\n                  nodeDescriptions={nodeDescriptions}\n                />\n              </Allotment.Pane>\n              <Allotment.Pane visible={!isSidebarClose} snap maxSize={800} minSize={300} preferredSize={400}>\n                <Sidebar\n                  nodeDescriptions={nodeDescriptions}\n                  nodeDescriptionsLoading={nodeDescriptionsLoading}\n                  sidebarKey={sidebarKey}\n                  setSidebarKey={setSidebarKey}\n                  node={selectedNode}\n                  onSave={handleSave}\n                  onClose={setIsSidebarClose}/>\n              </Allotment.Pane>\n            </Allotment>\n        }\n      </div>\n    </DataStoryCanvasProvider>\n  )\n}\n\nexport const DataStory = React.memo(DataStoryComponent);\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/DataStoryCanvas.tsx",
    "content": "import { DataStoryControls } from './controls/DataStoryControls';\nimport React, { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport {\n  Background,\n  BackgroundVariant,\n  EdgeChange,\n  NodeChange,\n  ReactFlow,\n  ReactFlowProvider,\n  useStoreApi,\n  useUpdateNodeInternals,\n} from '@xyflow/react';\nimport NodeComponent from '../Node/NodeComponent';\nimport { useGetStore, useStore } from './store/store';\nimport { shallow } from 'zustand/shallow';\nimport CommentNodeComponent from '../Node/CommentNodeComponent';\nimport InputNodeComponent from '../Node/InputNodeComponent';\nimport TableNodeComponent from '../Node/table/TableNodeComponent';\nimport { DataStoryCanvasProps, StoreInitOptions, StoreSchema } from './types';\nimport OutputNodeComponent from '../Node/OutputNodeComponent';\nimport ConsoleNodeComponent from '../Node/ConsoleNodeComponent';\nimport { onDropDefault } from './onDropDefault';\nimport type { NodeTypes } from '@xyflow/react';\nimport { HotkeyManager, useHotkeys } from './useHotkeys';\nimport { useEscapeKey } from './hooks/useEscapeKey';\nimport { keyManager } from './keyManager';\nimport { Direction, getNodesWithNewSelection } from './getNodesWithNewSelection';\nimport { createDataStoryId, LinkCount, LinkId, NodeStatus, RequestObserverType } from '@data-story/core';\nimport { useDragNode } from './useDragNode';\nimport { ReactFlowNode } from '../Node/ReactFlowNode';\nimport { useCopyPaste } from './useCopyPaste';\nimport '../../styles/dataStoryCanvasStyle.css';\nimport LoopBackComponent from '../Node/LoopBackComponent';\nimport LoopStartComponent from '../Node/LoopStartComponent';\n\nconst nodeTypes = {\n  commentNodeComponent: CommentNodeComponent,\n  nodeComponent: NodeComponent,\n  inputNodeComponent: InputNodeComponent,\n  loopBackComponent: LoopBackComponent,\n  loopStartComponent: LoopStartComponent,\n  outputNodeComponent: OutputNodeComponent,\n  tableNodeComponent: TableNodeComponent,\n  consoleNodeComponent: ConsoleNodeComponent,\n};\n\nconst DataStoryCanvasComponent = forwardRef((props: DataStoryCanvasProps, ref) => {\n  useGetStore(ref);\n\n  return (\n    <>\n      <ReactFlowProvider>\n        <Flow {...props}/>\n      </ReactFlowProvider>\n    </>\n  );\n});\n\nexport const DataStoryCanvas = React.memo(DataStoryCanvasComponent);\n\nconst Flow = ({\n  initDiagram,\n  controls = [],\n  onInitialize,\n  setSidebarKey,\n  onSave,\n  onDrop,\n  client,\n  onChange,\n  onNodeDoubleClick,\n  onEdgeDoubleClick,\n  nodeDescriptions,\n}: DataStoryCanvasProps) => {\n  const selector = (state: StoreSchema) => ({\n    nodes: state.nodes,\n    edges: state.edges,\n    onNodesChange: state.onNodesChange,\n    onEdgesChange: state.onEdgesChange,\n    connect: state.connect,\n    disconnect: state.disconnect,\n    onInit: state.onInit,\n    addNodeFromDescription: state.addNodeFromDescription,\n    toDiagram: state.toDiagram,\n    updateEdgeCounts: state.updateEdgeCounts,\n    updateEdgeStatus: state.updateEdgeStatus,\n    updateDiagram: state.updateDiagram,\n    updateNodeInternalsCallback: state.updateNodeInternalsCallback,\n    setUpdateNodeInternalsCallback: state.setUpdateNodeInternalsCallback,\n  });\n\n  const {\n    connect,\n    disconnect,\n    nodes,\n    edges,\n    onNodesChange,\n    onEdgesChange,\n    onInit,\n    addNodeFromDescription,\n    toDiagram,\n    updateEdgeCounts,\n    updateEdgeStatus,\n    updateDiagram,\n    setUpdateNodeInternalsCallback,\n  } = useStore(selector, shallow);\n\n  const id = useId()\n  const reactFlowStore = useStoreApi();\n  const { addSelectedNodes, setNodes } = reactFlowStore.getState();\n\n  const updateNodeInternals = useUpdateNodeInternals();\n\n  useEffect(() => {\n    setUpdateNodeInternalsCallback((nodeId: string) => {\n      updateNodeInternals(nodeId);\n    });\n  }, [updateNodeInternals, setUpdateNodeInternalsCallback]);\n\n  const flowRef = useRef<HTMLDivElement>(null);\n\n  const focusOnFlow = useCallback(() => {\n    if (flowRef.current) {\n      flowRef.current.focus();\n    }\n  }, [flowRef]);\n\n  useEffect(() => {\n    focusOnFlow();\n  }, [focusOnFlow]);\n\n  useEffect(() => {\n    keyManager.initEventListeners();\n    return () => {\n      keyManager.removeEventListeners();\n    }\n  }, []);\n\n  // when edges change, re-subscribe to observelinkCounts\n  useEffect(() => {\n    const allLinkIds = edges.map(edge => edge.id);\n    if (allLinkIds.length === 0 || !client?.observeLinkCounts) return;\n\n    const observerId = createDataStoryId();\n    const subscription = client?.observeLinkCounts?.({\n      observerId,\n      linkIds: allLinkIds,\n      type: RequestObserverType.observeLinkCounts,\n      onReceive: ({ links }) => {\n        if (!links || links.length === 0) return;\n\n        const edgeCounts: Record<LinkId, LinkCount> = links.reduce((acc, link) => {\n          acc[link.linkId] = link.count;\n          return acc;\n        }, {} as Record<LinkId, LinkCount>);\n\n        updateEdgeCounts(edgeCounts)\n      },\n    })\n    return () => {\n      subscription?.unsubscribe();\n    }\n    // listen to edges.length because changes in the count on edges trigger this useEffect, leading to frequent subscriptions and unsubscriptions, which can impact performance.\n  }, [client, edges.length, updateEdgeCounts]);\n\n  useEffect(() => {\n    const allNodeIds = nodes.map(node => node.id);\n    if (allNodeIds.length === 0 || !client?.observeNodeStatus) return;\n\n    const observerId = createDataStoryId();\n    const subscription = client?.observeNodeStatus?.({\n      observerId,\n      nodeIds: allNodeIds,\n      type: RequestObserverType.observeNodeStatus,\n      onReceive: ({ nodes }) => {\n        updateEdgeStatus(nodes as { nodeId: string, status: NodeStatus }[]);\n      },\n    });\n    return () => {\n      subscription?.unsubscribe();\n    }\n  }, [client, nodes.length, updateEdgeStatus]);\n\n  const hotkeyManager = useMemo(() => new HotkeyManager(flowRef), []);\n  const setShowRun = useCallback((show: boolean) => setSidebarKey!(show ? 'run' : ''), [setSidebarKey]);\n  const setShowAddNode = useCallback((show: boolean) => setSidebarKey!(show ? 'addNode' : ''), [setSidebarKey]);\n  const setShowConfig = useCallback((show: boolean) => setSidebarKey!(show ? 'config' : ''), [setSidebarKey]);\n\n  const traverseNodes = useCallback((direction: Direction) => {\n    const selectedNode = getNodesWithNewSelection(direction, nodes);\n    if (selectedNode) addSelectedNodes([selectedNode.id]);\n  }, [nodes, addSelectedNodes]);\n\n  useHotkeys({\n    nodes,\n    setShowRun,\n    setSelectedNode: onNodeDoubleClick,\n    traverseNodes,\n    setShowAddNode,\n    hotkeyManager,\n    onSave,\n    toDiagram,\n    nodeDescriptions,\n    addNodeFromDescription,\n  });\n\n  useEscapeKey(() => setSidebarKey!(''), flowRef);\n  const { draggedNode, onNodeDragStop, onNodeDrag } = useDragNode({\n    connect,\n    disconnect,\n    edges,\n  });\n\n  const getOnNodesDelete = useCallback((nodesToDelete: ReactFlowNode[]) => {\n    nodesToDelete.forEach(node => {\n      const store = reactFlowStore.getState();\n      const { edges } = store;\n\n      // Find all incoming and outgoing edges for this node\n      const incomingEdges = edges.filter(e => e.target === node.id);\n      const outgoingEdges = edges.filter(e => e.source === node.id);\n\n      // For each incoming edge, connect it to all outgoing edges\n      incomingEdges.forEach(inEdge => {\n        outgoingEdges.forEach(outEdge => {\n          // Ensure the source and target are not targeted for deletion\n          if (nodesToDelete.some(n => n.id === inEdge.source) || nodesToDelete.some(n => n.id === outEdge.target)) return;\n\n          // Create a connection that will be handled by the store's connect method\n          connect({\n            source: inEdge.source,\n            sourceHandle: inEdge.sourceHandle ?? null,\n            target: outEdge.target,\n            targetHandle: outEdge.targetHandle ?? null,\n          });\n        });\n      });\n    });\n\n    // focus on the diagram after node deletion to enhance hotkey usage\n    focusOnFlow();\n  }, [connect, focusOnFlow, reactFlowStore]);\n\n  useCopyPaste();\n\n  return (\n    <>\n      <style>\n        {`\n          ${draggedNode ? `\n          .react-flow__edge {\n            opacity: 0.5;\n          }\n          .react-flow__edge[data-testid=\"rf__edge-${draggedNode.droppedOnEdge?.id}\"] {\n            opacity: 1;\n            filter: drop-shadow(0 0 5px #4f46e5);\n          }\n          .react-flow__edge[data-testid=\"rf__edge-${draggedNode.droppedOnEdge?.id}\"] path {\n            stroke: #4f46e5;\n            stroke-width: 3;\n          }\n          ` : ''}\n        `}\n      </style>\n      <ReactFlow\n        tabIndex={0}\n        ref={flowRef}\n        id={id}\n        className='bg-gray-50'\n        nodes={nodes}\n        edges={edges}\n        nodeTypes={nodeTypes as NodeTypes}\n        onNodesChange={(changes: NodeChange[]) => {\n          onNodesChange(changes);\n          if (onChange) onChange(toDiagram())\n        }}\n        onNodeDoubleClick={(_, node) => {\n          onNodeDoubleClick?.(node as ReactFlowNode);\n        }}\n        onEdgeDoubleClick={(_, edge) => {\n          onEdgeDoubleClick?.(edge.id);\n        }}\n        onEdgesChange={(changes: EdgeChange[]) => {\n          onEdgesChange(changes);\n          if (onChange) onChange(toDiagram())\n        }}\n        onNodesDelete={getOnNodesDelete}\n        onConnect={connect}\n        onInit={(rfInstance: StoreInitOptions['rfInstance']) => {\n          onInit({\n            rfInstance,\n            initDiagram,\n            callback: onInitialize,\n            focusOnFlow,\n            client,\n          });\n        }}\n        onNodeDrag={onNodeDrag}\n        onNodeDragStop={onNodeDragStop}\n        minZoom={0.25}\n        maxZoom={8}\n        fitView={true}\n        fitViewOptions={{\n          padding: { x: 0.05, y: 0.05 },\n        }}\n        onDragOver={useCallback((event: React.DragEvent) => {\n          event.preventDefault();\n          // Allow dropping on edges\n          const target = event.target as HTMLElement;\n          const isEdge = target.closest('.react-flow__edge');\n          const hasNodeType = event.dataTransfer.types.includes('application/reactflow');\n\n          if (isEdge && hasNodeType) {\n            event.dataTransfer.dropEffect = 'copy';\n          } else {\n            event.dataTransfer.dropEffect = 'move';\n          }\n        }, [])}\n        onDrop={\n          useCallback((event: React.DragEvent) => {\n            const handler = onDrop || onDropDefault;\n            handler(event, addNodeFromDescription)\n          }, [addNodeFromDescription, onDrop],\n          )}\n      >\n        <DataStoryControls\n          onSave={onSave}\n          controls={controls}\n          setShowAddNode={setShowAddNode}\n          setShowConfig={setShowConfig}\n        />\n        <Background color='#E7E7E7' variant={BackgroundVariant.Lines}/>\n      </ReactFlow>\n    </>\n  )\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/Form/StringableInput.tsx",
    "content": "import { StringableParam } from '@data-story/core';\nimport { useCallback, useMemo } from 'react';\nimport { FormFieldWrapper, useFormField } from './UseFormField';\nimport { autocompletion } from '@codemirror/autocomplete';\nimport CodeMirror, { type BasicSetupOptions } from '@uiw/react-codemirror';\nimport { javascript } from '@codemirror/lang-javascript';\nimport { json } from '@codemirror/lang-json';\n\ninterface StringableInput {\n  param: StringableParam;\n  onCursorPositionChange: (position: number) => void; // Add this line\n}\n\nexport const basicSetup: BasicSetupOptions = {\n  lineNumbers: false,\n  highlightActiveLineGutter: false,\n  highlightActiveLine: false,\n  foldGutter: false,\n  autocompletion: true,\n  syntaxHighlighting: true,\n};\n\n/**\n * todo: completions are hardcoded here, should be fetched from param\n */\nconst completions = [\n  { label: '@panic', type: 'keyword' },\n  { label: '$park', type: 'constant', info: 'Test completion' },\n  { label: '@password', type: 'variable' },\n];\n\nconst parameterReg = /[$@][a-zA-Z0-9]*$/;\n\nexport function StringableInputComponent({\n  param,\n  onCursorPositionChange,\n}: StringableInput) {\n  const { getValues, setValue } = useFormField();\n\n  const myCompletions = useCallback((context) => {\n    let before = context.matchBefore(parameterReg);\n    if (!context.explicit && !before) return null;\n    return {\n      from: before ? before.from : context.pos,\n      options: completions,\n      validFor: parameterReg,\n    };\n  }, []);\n\n  const extensions = useMemo(() => {\n    const evaulation = param.input?.Evaluation;\n    if (evaulation === 'JS_FUNCTION' || evaulation === 'JS_EXPRESSION') {\n      return [ javascript(), autocompletion({ override: [ myCompletions ] }) ];\n    }\n    if (evaulation === 'JSON') {\n      return [ json(), autocompletion({ override: [ myCompletions ] }) ];\n    }\n    return [ autocompletion({ override: [ myCompletions ] }) ];\n  }, [ myCompletions, param.input?.Evaluation ]);\n\n  const onChange = useCallback((value) => {\n    setValue(value);\n  }, [ setValue ]);\n\n  return (\n    <div className=\"flex w-full text-gray-500 max-h-64 overflow-y-auto\">\n      <CodeMirror\n        className=\"text-xs h-full w-full bg-white font-mono\"\n        value={(getValues() ?? '').toString()}\n        basicSetup={basicSetup}\n        extensions={extensions}\n        onChange={onChange}\n      />\n    </div>\n  );\n}\n\nexport function StringableInput(params: StringableInput) {\n  return <FormFieldWrapper fieldName={'rawValue'}>\n    <StringableInputComponent {...params} />\n  </FormFieldWrapper>;\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/Form/UseFormField.tsx",
    "content": "import {\n  FieldValues,\n  useFormContext,\n  UseFormReturn,\n} from 'react-hook-form';\nimport { createContext, ReactNode, useContext } from 'react';\nimport { UseFormRegisterReturn } from 'react-hook-form';\n\nexport const FormFieldContext = createContext<{ fieldName: string }>({ fieldName:'' });\n\nexport const FormFieldWrapper = ({ fieldName, children }: { fieldName: string, children: ReactNode }) => {\n  const { fieldName: parentFieldName } = useContext(FormFieldContext);\n  const value = parentFieldName ? `${parentFieldName}.${fieldName}` : fieldName;\n  return (\n    <FormFieldContext.Provider value={{ fieldName: value }}>\n      {children}\n    </FormFieldContext.Provider>\n  )\n}\n\nexport type UseFormFieldReturn<TFieldValues extends FieldValues = FieldValues, TContext = any> = Pick<\nUseFormReturn<TFieldValues, TContext>,\n'watch' | 'control'\n> & {\n  register: () => UseFormRegisterReturn;\n  setValue: (value: any) => void;\n  getValues: () => any;\n};\n\nexport const useFormField = (): UseFormFieldReturn => {\n  const { fieldName } = useContext(FormFieldContext);\n  const form = useFormContext();\n  return {\n    setValue: (value: any) => form.setValue(fieldName, value),\n    getValues: () => form.getValues(fieldName),\n    register: () => form.register(fieldName as any),\n    watch: form.watch,\n    control: form.control,\n  }\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/Form/nodeSettingsForm.tsx",
    "content": "import { InputSchemas, OutputSchemas, Params } from '../modals/nodeSettingsModal/tabs';\nimport { useEffect, useMemo, useState } from 'react';\nimport { createDataStoryId, Param, ParamInput, parseStringList, pascalToSentenceCase } from '@data-story/core';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { NodeSettingsFormProps, StoreSchema } from '../types';\nimport { useStore } from '../store/store';\nimport { CloseIcon } from '../icons/closeIcon';\n\ntype TabKey = 'Params' | 'InputSchemas' | 'OutputSchemas';\nconst TAB_COMPONENTS: Record<TabKey, React.ComponentType<any>> = {\n  Params,\n  InputSchemas,\n  OutputSchemas: OutputSchemas,\n};\n\nexport const NodeSettingsForm: React.FC<NodeSettingsFormProps> = ({ node, onClose, onSave }) => {\n  const [tab, setTab] = useState<TabKey>('Params');\n  const selector = (state: StoreSchema) => ({\n    toDiagram: state.toDiagram,\n    updateNode: state.updateNode,\n    updateNodeInternalsCallback: state.updateNodeInternalsCallback,\n  });\n\n  const { updateNode, toDiagram, updateNodeInternalsCallback } = useStore(selector);\n\n  const defaultValues = useMemo(() => {\n    return  {\n      label: node?.data?.label,\n      outputs: JSON.stringify(node?.data?.outputs, null, 2),\n      outputPortNames: node?.data?.outputs?.map((o: any) => o.name).join('\\n'),\n      params: node?.data?.params.reduce((acc, param: Param) => {\n        acc[param.name] = param.input;\n        return acc;\n      }, {} as Record<string, ParamInput>),\n    };\n  }, [node]);\n\n  const form = useForm({\n    defaultValues,\n  });\n\n  useEffect(() => {\n    form.reset(defaultValues);\n  }, [defaultValues, form]);\n\n  const saveAndClose = () => {\n    form.handleSubmit((submitted: {\n      label: string,\n      outputs: string,\n      params: Record<string, ParamInput>\n    }) => {\n      // Root level fields\n      const newData = { ...node.data };\n      newData.label = submitted.label;\n\n      // --- OUTPUTS LOGIC START ---\n      // Get previous outputs\n      const prevOutputs = node.data.outputs || [];\n      // Get new output names from form state\n      const { outputPortNames } = form.getValues();\n\n      // 1. Remove any outputs that are no longer present\n      // 2. Add any new outputs\n      // 3. Reorder outputs to match the order in the form\n      const newNames: string[] = parseStringList(outputPortNames);\n      // Build a map of previous outputs by name for fast lookup\n      const prevByName = new Map((prevOutputs as any[]).map(o => [o.name, o]));\n      // Use the first previous output as a template for required fields\n      const template = prevOutputs[0] || {};\n      // Compose the new outputs array in the correct order\n      const newOutputs = newNames.map(name => {\n        const existing = prevByName.get(name);\n        if (existing) return { ...existing, version: new Date() };\n        return {\n          ...template, // fallback for required fields (like schema)\n          id: createDataStoryId(),\n          name,\n          version: new Date(),\n        };\n      });\n      newData.outputs = newOutputs;\n      // --- OUTPUTS LOGIC END ---\n\n      // This logic updates `param.input` with the user's latest value. However, it only updates the top level of `param.input`.\n      for(const [key, value] of Object.entries(submitted.params)) {\n        const param = newData.params.find((p) => p.name === key)!;\n        if (param.hasOwnProperty('input')) param.input = value;\n      }\n\n      updateNode({\n        ...node,\n        data: newData,\n      })\n\n      updateNodeInternalsCallback?.(node.id);\n\n      onSave?.(toDiagram());\n    })()\n\n    onClose(true);\n  }\n\n  const TabComponent = TAB_COMPONENTS[tab as keyof typeof TAB_COMPONENTS];\n\n  return (\n    <FormProvider {...form}>\n      <div\n        className=\"shadow-lg relative flex flex-col justify-between w-full bg-white outline-none focus:outline-none h-full\">\n        {/* ***** HEADER ***** */}\n        <div className=\"flex flex-nowrap justify-between px-8 py-2\">\n          <input\n            {...form.register('label')}\n            className=\"pr-4 mt-4 bg-white flex align-center justify-center text-lg text-gray-400 font-bold tracking widest \"\n          />\n          <div className=\"flex\">\n            {form.getValues('label') !== node.data?.computer && <div\n              className=\"flex flex-col pr-4 my-2 italic align-center justify-center text-sm text-gray-400 font-base tracking widest\">\n              renamed from {node.data?.computer}\n            </div>}\n          </div>\n          <div className=\"flex basis-4 items-center pr-4 text-gray-400\" onClick={() => onClose(true)}>\n            <CloseIcon />\n          </div>\n        </div>\n        {/* ***** TABS ***** */}\n        <div className=\"mx-8 flex space-x-8 text-xxs uppercase text-gray-400\">\n          {Object.keys(TAB_COMPONENTS).map((key) => (\n            <div\n              key={key}\n              onClick={() => setTab(key as TabKey)}\n              className={`pb-2 hover:text-gray-500 cursor-pointer ${tab === key && 'border-b-2 border-blue-400'}`}\n            >\n              {pascalToSentenceCase(key)}\n            </div>\n          ))}\n        </div>\n\n        {/* ***** CONTENT ***** */}\n        <div\n          style={{ height: 'calc(100vh - 350px)' }}\n          className=\"overflow-y-auto relative pb-6 pt-4 px-6 flex-auto space-y-1 text-sm text-gray-800\">\n          <TabComponent node={node} register={form.register} form={form}/>\n        </div>\n\n        {/* ***** FOOTER ***** */}\n        <div className=\"flex items-center justify-end p-4 border-t border-solid \">\n          <button\n            className=\"text-gray-500 focus:text-gray-800 background-transparent font-bold uppercase px-6 py-2 text-xs outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150\"\n            type=\"button\" onClick={() => onClose(true)}>\n            Close\n          </button>\n          {<button\n            className=\"bg-blue-500 focus:bg-blue-700 text-white active:bg-blue-600 font-bold uppercase text-xs px-6 py-3 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150\"\n            type=\"button\" onClick={saveAndClose}>\n            Save\n          </button>}\n        </div>\n      </div>\n    </FormProvider>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/clients/ClientBuffer.ts",
    "content": "import { InputObserver, ItemValue } from '@data-story/core';\nimport { bufferTime, concatMap, Observable, pipe, UnaryFunction } from 'rxjs';\n\ninterface ObserverParams {\n  items: ItemValue[];\n  inputObservers: InputObserver[];\n}\n\nfunction groupNotifications(data: ObserverParams[]) {\n  const getNotifyObserverKey = (items: ItemValue[], inputObservers: InputObserver[]) => {\n    return inputObservers.map((inputObserver) => {\n      return inputObserver.type;\n    }).sort().join(',');\n  }\n\n  const groupedNotificationMap = new Map<string, ObserverParams>();\n  data.forEach((d) => {\n    const key = getNotifyObserverKey(d.items, d.inputObservers);\n    if (groupedNotificationMap.has(key)) {\n      const current = groupedNotificationMap.get(key);\n      if (current) {\n        groupedNotificationMap.set(key, {\n          items: current.items.concat(d.items),\n          inputObservers: current.inputObservers,\n        });\n      }\n    } else {\n      groupedNotificationMap.set(key, d);\n    }\n  })\n  return Array.from(groupedNotificationMap.values());\n}\n\nexport function clientBuffer(bufferTimeSpan: number = 500): UnaryFunction<Observable<ObserverParams>, Observable<ObserverParams>> {\n  return pipe(\n    bufferTime(bufferTimeSpan),\n    concatMap(groupNotifications),\n  );\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/clients/WebSocketHandleResponseMiddleware.ts",
    "content": "// Store the resolve and reject functions of the Promise for pending responses.\nconst pendingResponses: Map<string, { resolve: Function; reject: Function }> = new Map();\n\nexport const processWaitingResponse = (message: any) => {\n  const response: any = message;\n\n  // check if there is a response pending for this id\n  const pending = pendingResponses.get(response.id);\n  if (pending) {\n    pending.resolve(response);\n    pendingResponses.delete(response.id);\n  }\n}\n\n// send a message and wait for the response\nexport async function waitForResponse(params: any): Promise<any> {\n  const { id } = params;\n\n  return new Promise((resolve, reject) => {\n    pendingResponses.set(id, { resolve, reject });\n\n    // config 10s timeout for the rejection\n    setTimeout(() => {\n      if (pendingResponses.has(id)) {\n        pendingResponses.delete(id);\n        reject(new Error('Request timed out'));\n      }\n    }, 10000);\n  });\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/clients/WorkspaceApiClient.ts",
    "content": "import { WorkspaceApiClientImplement } from './WorkspaceApiClientImplement';\nimport { ClientRunParams } from '../types';\nimport { filter, finalize, Observable, Subject, Subscription } from 'rxjs';\nimport {\n  CancelObservation,\n  Diagram,\n  ExecutionObserver,\n  GetDataFromStorageParams,\n  InputObserveConfig,\n  ObserveLinkItems,\n  ItemValue,\n  LinkCountInfo,\n  ObserveLinkCounts,\n  LinkId,\n  NodeDescription,\n  ObserveLinkUpdate,\n  ObserveNodeStatus,\n  RequestObserverType,\n  NodeDescriptionResponse,\n  ObserveLinkCountsSchema,\n  LinkCountInfoSchema,\n  ObserveLinkItemsSchema,\n  ObserveNodeStatusSchema,\n  NodesStatusSchema,\n  ObserveLinkUpdateSchema,\n  CancelObservationSchema,\n  GetDataFromStorageParamsSchema,\n  NodeDescriptionRequestSchema,\n  NodeDescriptionResponseSchema,\n  NodesStatusInfo,\n  AbortExecution,\n  AbortExecutionSchema,\n  LinkItemsUpdate,\n  LinkItemsUpdateSchema,\n} from '@data-story/core';\nimport { eventManager } from '../events/eventManager';\nimport { DataStoryEvents } from '../events/dataStoryEventType';\nimport { validateZodSchema } from './utils';\n\nexport interface Transport {\n  sendAndReceive<T>(params: Record<string, any>): Promise<T>;\n\n  streaming<T>(params: Record<string, any>): Observable<T>;\n}\n\nconst matchMsgType = (type: string) => (it: { type: string; }) => it.type === type;\n\nfunction removeUnserializable(params: Exclude<ExecutionObserver, CancelObservation>): Partial<ExecutionObserver> {\n  const { onReceive, ...serializableParams } = params;\n  return JSON.parse(JSON.stringify(serializableParams));\n}\n\nexport class WorkspaceApiClient implements WorkspaceApiClientImplement {\n  private receivedMsg$ = new Subject<ExecutionObserver>();\n\n  constructor(private transport: Transport) {\n    this.initExecutionResult();\n    this.initExecutionFailure();\n    this.initExecutionAborted();\n    this.initUpdateStorage();\n  }\n\n  async getNodeDescriptions({ path }: { path?: string }): Promise<NodeDescription[]> {\n    const request = { type: 'getNodeDescriptions', path };\n    validateZodSchema(NodeDescriptionRequestSchema, request);\n    const data = await this.transport.sendAndReceive(request) as NodeDescriptionResponse;\n    validateZodSchema(NodeDescriptionResponseSchema, data);\n    return data.availableNodes ?? [];\n  }\n\n  updateDiagram(diagram: Diagram, diagramId?: string): Promise<void> {\n    try {\n      eventManager.emit({\n        type: DataStoryEvents.SAVE_SUCCESS,\n      });\n      return this.transport.sendAndReceive({\n        type: 'updateDiagram',\n        diagram,\n        diagramId,\n      });\n    } catch(e) {\n      eventManager.emit({\n        type: DataStoryEvents.SAVE_ERROR,\n      });\n      throw e;\n    }\n  }\n\n  async getDiagram({ diagramId }: { diagramId?: string }): Promise<Diagram> {\n    try {\n      const data = await this.transport.sendAndReceive({\n        type: 'getDiagram',\n        diagramId: diagramId,\n      });\n      return (data as { msgId: string; diagram: Diagram; [key: string]: any; })?.diagram;\n    } catch(e) {\n      console.error('Error getting diagram', e);\n      throw e;\n    }\n  }\n\n  async getDataFromStorage(params: GetDataFromStorageParams): Promise<Record<LinkId, ItemValue[]>> {\n    validateZodSchema(GetDataFromStorageParamsSchema, params);\n    try {\n      const result: GetDataFromStorageParams & { data: Record<LinkId, ItemValue[]> } = await this.transport.sendAndReceive(params);\n      return result.data as Record<LinkId, ItemValue[]>;\n    } catch(e) {\n      console.error('Error getting diagram', e);\n      throw e;\n    }\n  }\n\n  observeLinkItems(params: ObserveLinkItems): Subscription {\n    validateZodSchema(ObserveLinkItemsSchema, params);\n    const serializableParams = removeUnserializable(params);\n    const msg$ = this.transport.streaming(serializableParams)\n      .pipe(\n        finalize(() => {\n          this.cancelObservation({ observerId: params.observerId, type: RequestObserverType.cancelObservation });\n        }),\n      );\n    const itemsSubscription = msg$.subscribe((data) => {\n      const { items, inputObserver } = data as { items: LinkItemsUpdate[], inputObserver: InputObserveConfig };\n      validateZodSchema(LinkItemsUpdateSchema, items[0]);\n      params.onReceive(items, inputObserver);\n    });\n\n    return itemsSubscription;\n  }\n\n  observeLinkCounts(params: ObserveLinkCounts): Subscription {\n    validateZodSchema(ObserveLinkCountsSchema, params);\n    const serializableParams = removeUnserializable(params);\n    const msg$ = this.transport.streaming(serializableParams)\n      .pipe(\n        finalize(() => {\n          this.cancelObservation({ observerId: params.observerId, type: RequestObserverType.cancelObservation });\n        }),\n      );\n    const linksSubscription = msg$.subscribe((data) => {\n      const { links } = data as { links: LinkCountInfo[] };\n      validateZodSchema(LinkCountInfoSchema, links[0]);\n      params.onReceive({ links });\n    });\n\n    return linksSubscription;\n  }\n\n  observeNodeStatus(params: ObserveNodeStatus): Subscription {\n    validateZodSchema(ObserveNodeStatusSchema, params);\n    const serializableParams = removeUnserializable(params);\n    const msg$ = this.transport.streaming(serializableParams)\n      .pipe(\n        finalize(() => {\n          this.cancelObservation({ observerId: params.observerId, type: RequestObserverType.cancelObservation });\n        }),\n      );\n    const nodeStatusSubscription = msg$.subscribe((data) => {\n      const { nodes } = data as { nodes: NodesStatusInfo[] };\n      validateZodSchema(NodesStatusSchema, nodes[0]);\n      params.onReceive({ nodes });\n    });\n\n    return nodeStatusSubscription;\n  }\n\n  observeLinkUpdate(params: ObserveLinkUpdate): Subscription {\n    validateZodSchema(ObserveLinkUpdateSchema, params);\n    const serializableParams = removeUnserializable(params);\n    const msg$ = this.transport.streaming(serializableParams)\n      .pipe(\n        finalize(() => {\n          this.cancelObservation({ observerId: params.observerId, type: RequestObserverType.cancelObservation });\n        }),\n      );\n    const linksSubscription = msg$.subscribe((data) => {\n      params.onReceive((data as { linkIds: LinkId[] }).linkIds);\n    });\n\n    return linksSubscription;\n  }\n\n  async cancelObservation(params: CancelObservation): Promise<void> {\n    validateZodSchema(CancelObservationSchema, params);\n    const data = await this.transport.sendAndReceive({\n      ...params,\n    });\n  }\n\n  run({ diagram, executionId }: ClientRunParams): void {\n    eventManager.emit({\n      type: DataStoryEvents.RUN_START,\n    });\n    const msg$ = this.transport.streaming<ExecutionObserver>({\n      type: 'run',\n      diagram,\n      executionId,\n    });\n    msg$.subscribe(this.receivedMsg$);\n  }\n\n  async abortExecution(params: AbortExecution): Promise<void> {\n    validateZodSchema(AbortExecutionSchema, params);\n    const data = await this.transport.sendAndReceive({\n      ...params,\n      type: 'abortExecution',\n    });\n  }\n\n  //<editor-fold desc=\"Message init\">\n  private initExecutionResult() {\n    return this.receivedMsg$.pipe(filter(matchMsgType('ExecutionResult')))\n      .subscribe((data: any) => {\n        console.log('Execution complete 💫')\n        eventManager.emit({\n          type: DataStoryEvents.RUN_SUCCESS,\n          payload: data,\n        });\n      })\n  }\n\n  private initExecutionAborted() {\n    return this.receivedMsg$.pipe(filter(matchMsgType('ExecutionAborted')))\n      .subscribe((data: any) => {\n        console.log('Abort run 💫')\n        eventManager.emit({\n          type: DataStoryEvents.RUN_ABORT,\n          payload: data,\n        });\n      })\n  }\n\n  private initExecutionFailure() {\n    return this.receivedMsg$.pipe(filter(matchMsgType('ExecutionFailure')))\n      .subscribe((data: any) => {\n        console.error('Execution failed')\n        eventManager.emit({\n          type: DataStoryEvents.RUN_ERROR,\n          payload: data,\n        });\n      })\n  }\n\n  private initUpdateStorage() {\n    return this.receivedMsg$.pipe(filter(matchMsgType('UpdateStorage')))\n      .subscribe((data: any) => {\n        return;\n      })\n  }\n  //</editor-fold>\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/clients/WorkspaceApiClientImplement.ts",
    "content": "import { ClientRunParams } from '../types';\nimport {\n  CancelObservation,\n  Diagram,\n  ObserveLinkItems,\n  ItemValue,\n  ObserveLinkCounts,\n  NodeDescription,\n  ObserveLinkUpdate,\n  GetDataFromStorageParams,\n  ObserveNodeStatus,\n  LinkId,\n} from '@data-story/core';\nimport { Subscription } from 'rxjs';\n\nexport interface WorkspaceApiClientImplement {\n  run(params: ClientRunParams): void;\n  getNodeDescriptions: ({ path }: { path?: string }) => Promise<NodeDescription[]>\n  updateDiagram?: (diagram: Diagram, path?: string) => Promise<void>;\n  getDiagram?: ({ diagramId }: { diagramId?: string }) => Promise<Diagram>;\n  observeLinkCounts?:(params: ObserveLinkCounts) => Subscription;\n  observeLinkItems?: (params: ObserveLinkItems) => Subscription;\n  observeLinkUpdate?: (params: ObserveLinkUpdate) => Subscription;\n  observeNodeStatus?: (params: ObserveNodeStatus) => Subscription;\n  getDataFromStorage?: (params: GetDataFromStorageParams) => Promise<Record<LinkId, ItemValue[]>>;\n  cancelObservation?:(params: CancelObservation) => Promise<void>;\n  abortExecution?: (params: { executionId: string }) => Promise<void>;\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/clients/createJSClient.ts",
    "content": "import { Application } from '@data-story/core';\nimport { filter } from 'rxjs';\nimport { createTransport, TransportConfig } from './createTransport';\nimport { WorkspaceApiClient } from './WorkspaceApiClient';\nimport { MockJSServer } from '../mockJSServer';\n\nfunction createJSTransport(app: Application) {\n  const jsServer = new MockJSServer({ app });\n  const config: TransportConfig = {\n    postMessage: (msg) => {\n      jsServer.channel.next({\n        ...msg,\n        status: 'client-post',\n      });\n    },\n    messages$: jsServer.channel.pipe(\n      filter((msg) => msg.status === 'server-post'),\n    ),\n  };\n  return createTransport(config);\n}\n\nexport const createJSClient = (app: Application) => {\n  const transport = createJSTransport(app);\n  return new WorkspaceApiClient(transport);\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/clients/createSocketClient.ts",
    "content": "import { webSocket, WebSocketSubject } from 'rxjs/webSocket';\nimport { Observable, retry, share } from 'rxjs';\nimport { createTransport, TransportConfig } from './createTransport';\nimport { WorkspaceApiClientImplement } from './WorkspaceApiClientImplement';\nimport { WorkspaceApiClient } from './WorkspaceApiClient';\n\nfunction createSocketTransport(socket: WebSocketSubject<any>) {\n  const maxReconnectTries = 100;\n  const reconnectTimeoutMs = 1000;\n  let messages$: Observable<{ msgId: string; [p: string]: unknown }> = socket.pipe(\n    retry({ count: maxReconnectTries, delay: reconnectTimeoutMs }),\n    share(),\n  );\n  const config: TransportConfig = {\n    postMessage: (msg) => {\n      socket.next(msg);\n    },\n    messages$: messages$,\n  }\n  return createTransport(config);\n}\n\nexport const createSocketClient = (): {\n  client: WorkspaceApiClientImplement,\n  dispose: () => void\n} => {\n  const socket$ = webSocket({\n    url: 'ws://localhost:3300',\n    openObserver: {\n      next: () => {\n        console.log(`Connected to server: ${'ws://localhost:3300'}`);\n      },\n    },\n    closeObserver: {\n      next: () => {\n        console.log('WebSocket closed.');\n      },\n    },\n  });\n\n  const socketKeepAlive = socket$.subscribe();\n\n  const transport = createSocketTransport(socket$);\n  return {\n    client: new WorkspaceApiClient(transport),\n    dispose: () => {\n      socketKeepAlive.unsubscribe();\n      socket$.complete();\n    },\n  }\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/clients/createTransport.ts",
    "content": "import { defer, filter, firstValueFrom, map, Observable } from 'rxjs';\nimport { createDataStoryId } from '@data-story/core';\nimport { Transport } from './WorkspaceApiClient';\n\nexport interface TransportConfig {\n  postMessage: (msg: { msgId: string; [key: string]: unknown; }) => void,\n  messages$: Observable<{ msgId: string; [key: string]: unknown; }>,\n}\n\nexport const createTransport = (config: TransportConfig): Transport => {\n  async function sendAndReceive<T>(params: Record<string, any>): Promise<T> {\n    const id = createDataStoryId();\n    const message = { msgId: id, ...params };\n    const resp = firstValueFrom(config.messages$.pipe(\n      filter(it => it.msgId === id),\n      map(it => {\n        return it as T;\n      }),\n    ));\n\n    config.postMessage(message);\n    return resp;\n  }\n\n  function streaming<T>(params: Record<string, any>): Observable<T> {\n    const id = createDataStoryId();\n    const message = { msgId: id, ...params };\n    /**\n     * The postMessage will only be triggered when there are subscribers to the returned Observable.\n     * This prevents the response from being sent too quickly, which could lead to missed receivedMsg\n     */\n    return defer(() => {\n      config.postMessage(message)\n      return config.messages$.pipe(\n        filter(it => it.msgId === id),\n        map(it => it as T),\n      );\n    });\n  }\n\n  return {\n    sendAndReceive,\n    streaming,\n  };\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/clients/utils.ts",
    "content": "import { z } from 'zod';\n\nexport const validateZodSchema = <T>(schema: z.ZodSchema<T>, data: unknown): void => {\n  const result = schema.safeParse(data);\n  if (!result.success) {\n    console.error('the schema error is', result.error);\n    console.error('the original data is', data);\n  }\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/common/clipboard.ts",
    "content": "import { SEdge, SNode } from '../../../SerializedReactFlow';\n\nexport const writeToClipboard = ({\n  selectedNodes,\n  selectedEdges,\n}: {\n  selectedNodes: SNode[];\n  selectedEdges: SEdge[];\n}) => {\n  // Write to system clipboard\n  navigator.clipboard.writeText(\n    JSON.stringify({\n      nodes: selectedNodes,\n      edges: selectedEdges,\n    }),\n  );\n}\n\nexport const readFromClipboard = async(): Promise<{ nodes: SNode[]; edges: SEdge[] }> => {\n  let nodes: SNode[] = [];\n  let edges: SEdge[] = [];\n  try {\n    // Read from system clipboard\n    const text = await navigator.clipboard.readText();\n    nodes = JSON.parse(text).nodes ?? [];\n    edges = JSON.parse(text).edges ?? [];\n  } catch(e) {\n    console.warn('Error reading from clipboard', e);\n  }\n  return { nodes, edges };\n}"
  },
  {
    "path": "packages/ui/src/components/DataStory/common/loadingMask.tsx",
    "content": "import { LoadingIcon } from '../icons/loadingIcon';\n\nexport const LoadingMask: React.FC = () => {\n  return (\n    <div className=\"absolute w-full h-full top-0 left-0 right-0 bottom-0\n    flex items-center justify-center\n     z-10 bg-gray-400 bg-opacity-30\">\n      <div className=\"w-10 h-10 fill-blue-500 animate-slow-spin\">\n        <LoadingIcon/>\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/common/method.ts",
    "content": "// for debugging.\nexport const areEqual = (prevProps, nextProps) => {\n  Object.entries(nextProps).forEach(([key, val]) => {\n    if (prevProps[key] !== val) {\n      console.log(`Prop '${key}' changed DataStory`);\n      console.log('prev:', prevProps[key]);\n      console.log('next:', val);\n    }\n  });\n\n  // Returning false means the component will always re-render, primarily for debugging purposes.\n  return false;\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/common/placeholder.tsx",
    "content": "import { LookingForIcon } from '../icons/lookingForIcon';\n\nexport const Placeholder = ({\n  content,\n}: {\n  content: string\n}) => {\n  return (\n    <div className=\"absolute w-full h-full top-0 left-0 right-0 bottom-0\n    flex flex-col items-center justify-center p-2 fill-gray-500\n     z-10\">\n      <p> {content} </p>\n      <div className={'w-10 h-10'}>\n        <LookingForIcon/>\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/controls/AddNodeControl.tsx",
    "content": "import { ControlButton } from '@xyflow/react';\nimport { AddNodeIcon } from '../icons/addNodeIcon';\nimport { useDataStoryControls } from './DataStoryControls';\n\nexport const AddNodeControl = () => {\n  const { setShowAddNode } = useDataStoryControls();\n\n  return (<ControlButton\n    onClick={() => setShowAddNode(true)}\n    title=\"Add Node\"\n    data-cy=\"add-node-button\"\n    aria-label=\"addNode\"\n  >\n    <AddNodeIcon/>\n  </ControlButton>)\n};"
  },
  {
    "path": "packages/ui/src/components/DataStory/controls/ConfigControl.tsx",
    "content": "import { ControlButton } from '@xyflow/react';\nimport { ConfigIcon } from '../icons/configIcon';\nimport { useDataStoryControls } from './DataStoryControls';\n\nexport const ConfigControl = () => {\n  const { setShowConfig } = useDataStoryControls();\n\n  return (\n    <>\n      <ControlButton\n        title=\"Config\"\n        aria-label=\"config\"\n        onClick={() => setShowConfig(true)}\n      >\n        <ConfigIcon />\n      </ControlButton>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/controls/CopyAsJsonControl.tsx",
    "content": "import { ControlButton } from '@xyflow/react';\nimport { CopyAsJsonIcon } from '../icons/copyAsJsonIcon';\nimport { useDataStoryControls } from './DataStoryControls';\nimport { DataStoryEvents } from '../events/dataStoryEventType';\nimport { eventManager } from '../events/eventManager';\n\nexport const CopyAsJsonControl = () => {\n  const { getDiagram } = useDataStoryControls();\n\n  const copyAsJson = async () => {\n    const diagram = getDiagram();\n\n    try {\n      const jsonString = JSON.stringify({\n        nodes: diagram.nodes,\n        links: diagram.links,\n        params: diagram.params,\n        viewport: diagram.viewport,\n      }, null, 2);\n\n      await navigator.clipboard.writeText(jsonString);\n      eventManager.emit({\n        type: DataStoryEvents.COPY_JSON_SUCCESS,\n      })\n    } catch (error) {\n      eventManager.emit({\n        type: DataStoryEvents.COPY_JSON_ERROR,\n        payload: { error },\n      });\n    }\n  }\n\n  return (<ControlButton\n    onClick={copyAsJson}\n    title=\"Copy as JSON\"\n    data-cy=\"copy-as-json-button\"\n    aria-label=\"copyAsJson\"\n  >\n    <CopyAsJsonIcon/>\n  </ControlButton>)\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/controls/DataStoryControls.tsx",
    "content": "import { Controls } from '@xyflow/react';\nimport { Diagram } from '@data-story/core';\nimport { useStore } from '../store/store';\nimport React, { useMemo } from 'react';\nimport { DataStoryCanvasProps, StoreSchema } from '../types';\n\nexport type DataStoryControlsType = {\n  getDiagram: () => Diagram;\n  updateDiagram: (diagram: Diagram) => void;\n  onSave?: DataStoryCanvasProps['onSave'];\n  setShowAddNode: (showAddNode: boolean) => void;\n  setShowConfig: (showConfig: boolean) => void;\n};\n\nconst DataStoryControlsContext = React.createContext<DataStoryControlsType>(null as unknown as DataStoryControlsType);\n\nexport function useDataStoryControls() {\n  const result = React.useContext(DataStoryControlsContext);\n  if (!result) {\n    throw new Error('useDataStoryControls must be used within a DataStoryControlsContext');\n  }\n  return result;\n}\n\nexport function DataStoryControls({\n  setShowAddNode,\n  setShowConfig,\n  controls = [],\n  onSave,\n}: {\n  setShowAddNode: (showAddNode: boolean) => void;\n  setShowConfig: (showConfig: boolean) => void;\n  controls?: React.ReactNode[];\n  onSave?: DataStoryCanvasProps['onSave'];\n}) {\n  const selector = (state: StoreSchema) => ({\n    toDiagram: state.toDiagram,\n    updateDiagram: state.updateDiagram,\n  });\n\n  const { toDiagram, updateDiagram } = useStore(selector);\n\n  const context: DataStoryControlsType = useMemo(() => ({\n    getDiagram: (): Diagram => {\n      return toDiagram();\n    },\n    updateDiagram: (diagram: Diagram) => {\n      updateDiagram(diagram);\n    },\n    onSave: onSave,\n    setShowAddNode: setShowAddNode,\n    setShowConfig: setShowConfig,\n  }), [onSave, setShowAddNode, setShowConfig, toDiagram, updateDiagram]);\n\n  return (\n    <DataStoryControlsContext.Provider value={context}>\n      <Controls position={'top-left'} showInteractive={false} showZoom={false} showFitView={false}>\n        {(controls || []).map((component, index) => (\n          <React.Fragment key={index}>\n            {component}\n          </React.Fragment>\n        ))}\n      </Controls>\n    </DataStoryControlsContext.Provider>\n  );\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/controls/RunControl.tsx",
    "content": "import { ControlButton } from '@xyflow/react';\nimport { RunIcon } from '../icons/runIcon';\nimport { useStore } from '../store/store';\nimport { useCallback, useState, useMemo, useEffect } from 'react';\nimport { AbortIcon } from '../icons/abortIcon';\nimport { DataStoryEvents, DataStoryEventType } from '../events/dataStoryEventType';\nimport { useDataStoryEvent } from '../events/eventManager';\nimport { useRunControl } from './useRunControl';\n\nexport const RunControl = () => {\n  const { isRunning, handleRun } = useRunControl();\n\n  return (\n    <ControlButton\n      title=\"Run\"\n      aria-label=\"run\"\n      onClick={handleRun}\n    >\n      {isRunning ? <AbortIcon /> : <RunIcon />}\n    </ControlButton>\n  );\n};"
  },
  {
    "path": "packages/ui/src/components/DataStory/controls/SaveControl.tsx",
    "content": "import { ControlButton } from '@xyflow/react';\nimport { SaveIcon } from '../icons/saveIcon';\nimport { useDataStoryControls } from './DataStoryControls';\n\nexport const SaveControl = () => {\n  const { onSave, getDiagram } = useDataStoryControls();\n\n  return (\n    <ControlButton\n      title=\"Save\"\n      aria-label=\"save\"\n      onClick={() => onSave?.(getDiagram())}\n    >\n      <SaveIcon/>\n    </ControlButton>\n  );\n};"
  },
  {
    "path": "packages/ui/src/components/DataStory/controls/index.tsx",
    "content": "export { AddNodeControl } from './AddNodeControl';\nexport { SaveControl } from './SaveControl';\nexport { RunControl } from './RunControl';\nexport { CopyAsJsonControl } from './CopyAsJsonControl';\nexport { ConfigControl } from './ConfigControl';"
  },
  {
    "path": "packages/ui/src/components/DataStory/controls/useRunControl.ts",
    "content": "import { useState, useCallback, useMemo } from 'react';\nimport { createDataStoryId, debounce } from '@data-story/core';\nimport { useStore } from '../store/store';\nimport { DataStoryEvents, DataStoryEventType } from '../events/dataStoryEventType';\nimport { useDataStoryEvent } from '../events/eventManager';\n\nexport function useRunControl() {\n  const isRunning = useStore((state) => state.isRunning);\n  const setIsRunning = useStore((state) => state.setIsRunning);\n  const executionId = useStore((state) => state.executionId);\n  const setExecutionId = useStore((state) => state.setExecutionId);\n  const onRun = useStore((state) => state.onRun);\n  const abortExecution = useStore((state) => state.abortExecution);\n\n  const handleRun = useMemo(\n    () => debounce(async () => {\n      if (isRunning && executionId) {\n        abortExecution(executionId);\n        setIsRunning(false);\n      } else {\n        const tempExecutionId = createDataStoryId();\n        setExecutionId(tempExecutionId);\n        onRun(tempExecutionId);\n        setIsRunning(true);\n      }\n    }, 300),\n    [isRunning, executionId, abortExecution, onRun],\n  );\n\n  const dataStoryEvent = useCallback((event: DataStoryEventType) => {\n    const stopRunning =\n      event.type === DataStoryEvents.RUN_ABORT ||\n      event.type === DataStoryEvents.RUN_ERROR ||\n      event.type === DataStoryEvents.RUN_SUCCESS;\n    if (stopRunning) {\n      setIsRunning(false);\n      setExecutionId('');\n    }\n  }, []);\n  useDataStoryEvent(dataStoryEvent);\n\n  return { isRunning, handleRun };\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/events/dataStoryEventType.ts",
    "content": "import { Observer } from 'rxjs';\n\nexport enum DataStoryEvents {\n  'RUN_START' = 'RUN_START',\n  'RUN_SUCCESS' = 'RUN_SUCCESS',\n  'RUN_ABORT' = 'RUN_ABORT',\n  'RUN_ERROR' = 'RUN_ERROR',\n  'SAVE_SUCCESS' = 'SAVE_SUCCESS',\n  'SAVE_ERROR' = 'SAVE_ERROR',\n  'COPY_JSON_SUCCESS' = 'COPY_JSON_SUCCESS',\n  'COPY_JSON_ERROR' = 'COPY_JSON_ERROR'\n}\n\nexport type DataStoryEventType = {\n  type: DataStoryEvents;\n  payload?: any;\n}\n\nexport type EventHandler = Partial<Observer<DataStoryEventType>> | ((value: DataStoryEventType) => void);\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/events/eventManager.ts",
    "content": "import { Subject } from 'rxjs';\nimport { EventHandler, DataStoryEventType } from './dataStoryEventType';\nimport { useEffect } from 'react';\nimport { useLatest } from 'ahooks';\n\nclass EventManager {\n  private subject: Subject<unknown>;\n  constructor() {\n    this.subject = new Subject();\n  }\n\n  /**\n   * emit event\n   */\n  emit(event: DataStoryEventType) {\n    this.subject.next(event);\n  }\n\n  /**\n   * subscribe event\n   */\n  on(handler: EventHandler) {\n    // need to call the listener handler synchronously, as the data from MockJSServer is synchronous\n    return this.subject.subscribe(handler as unknown as ((value: unknown) => void));\n  }\n}\n\n/**\n * global singleton event manager\n */\nexport const eventManager = new EventManager();\n\n/**\n * use hook to subscribe event\n * @param {EventHandler} handler\n */\nexport const useDataStoryEvent = (handler: EventHandler) => {\n  const handlerRef = useLatest(handler);\n\n  useEffect(() => {\n    const subscription = eventManager.on(handlerRef.current);\n    return () => subscription.unsubscribe();\n  }, [handler, handlerRef]);\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/getNodesWithNewSelection.test.ts",
    "content": "import { it, expect } from 'vitest';\nimport { getNodesWithNewSelection } from './getNodesWithNewSelection'\nimport { ReactFlowNode } from '../Node/ReactFlowNode';\n\nit('returns empty array when no nodes are passed', () => {\n  expect(getNodesWithNewSelection('up', [])).toBeUndefined()\n  expect(getNodesWithNewSelection('down', [])).toBeUndefined()\n  expect(getNodesWithNewSelection('left', [])).toBeUndefined()\n  expect(getNodesWithNewSelection('right', [])).toBeUndefined()\n})\n\nit('selects the first node when no node is selected', () => {\n  const nodes = [\n    { id: '1', position: { x: 1, y: 1 }, selected: false },\n    { id: '2', position: { x: 2, y: 2 }, selected: false },\n    { id: '3', position: { x: 3, y: 3 }, selected: false },\n  ] as ReactFlowNode[]\n\n  expect(getNodesWithNewSelection('up', nodes)).toMatchObject(\n    { id: '1', position: { x: 1, y: 1 }, selected: true },\n  )\n})\n\nit('selects the same node if it is uttermost in direction', () => {\n  const nodes = [\n    { id: '1', position: { x: 1, y: 1 }, selected: true },\n    { id: '2', position: { x: 2, y: 2 }, selected: false },\n    { id: '3', position: { x: 3, y: 3 }, selected: false },\n  ] as ReactFlowNode[]\n\n  expect(getNodesWithNewSelection('left', nodes)).toMatchObject(\n    { id: '1', position: { x: 1, y: 1 }, selected: true },\n  )\n})\n\nit('selects new closest node in up direction', () => {\n  const nodes = [\n    { id: '1', position: { x: 1, y: 1 }, selected: false },\n    { id: '2', position: { x: 2, y: 2 }, selected: true },\n    { id: '3', position: { x: 3, y: 3 }, selected: false },\n  ] as ReactFlowNode[]\n\n  expect(getNodesWithNewSelection('up', nodes)).toMatchObject(\n    { id: '1', position: { x: 1, y: 1 }, selected: true },\n  )\n})\n\nit('selects new closest node in down direction', () => {\n  const nodes = [\n    { id: '1', position: { x: 1, y: 1 }, selected: false },\n    { id: '2', position: { x: 2, y: 2 }, selected: true },\n    { id: '3', position: { x: 3, y: 3 }, selected: false },\n  ] as ReactFlowNode[]\n\n  expect(getNodesWithNewSelection('down', nodes)).toMatchObject(\n    { id: '3', position: { x: 3, y: 3 }, selected: true },\n  )\n})\n\nit('selects new closest node in left direction', () => {\n  const nodes = [\n    { id: '1', position: { x: 1, y: 1 }, selected: false },\n    { id: '2', position: { x: 2, y: 2 }, selected: true },\n    { id: '3', position: { x: 3, y: 3 }, selected: false },\n  ] as ReactFlowNode[]\n\n  expect(getNodesWithNewSelection('left', nodes)).toMatchObject(\n    { id: '1', position: { x: 1, y: 1 }, selected: true },\n  )\n})\n\nit('selects new closest node in right direction', () => {\n  const nodes = [\n    { id: '1', position: { x: 1, y: 1 }, selected: false },\n    { id: '2', position: { x: 2, y: 2 }, selected: true },\n    { id: '3', position: { x: 3, y: 3 }, selected: false },\n  ] as ReactFlowNode[]\n\n  expect(getNodesWithNewSelection('right', nodes)).toMatchObject(\n    { id: '3', position: { x: 3, y: 3 }, selected: true },\n  )\n})\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/getNodesWithNewSelection.ts",
    "content": "import { ReactFlowNode } from '../Node/ReactFlowNode'\n\nexport type Direction = 'up' | 'down' | 'left' | 'right'\n\n/**\n * using the direction, find the closest node to the current selected node\n * @param {Direction} direction\n * @param {ReactFlowNode[]} nodes\n * @returns {ReactFlowNode | undefined}\n */\nexport const getNodesWithNewSelection = (\n  direction: Direction,\n  nodes: ReactFlowNode[],\n): ReactFlowNode | undefined => {\n  const selectedNodes = nodes.filter(node => node.selected);\n  if (selectedNodes.length !== 1) {\n    if (selectedNodes.length === 0 && nodes.length > 0) {\n      // If no nodes are selected, select the first node\n      nodes[0].selected = true;\n    }\n    // Return early if no selection change is possible\n    return nodes[0];\n  }\n\n  // There is only one selected node\n  const current = selectedNodes[0];\n\n  type Comparator = (a: ReactFlowNode, b: ReactFlowNode) => boolean;\n  const comparators: Record<Direction, Comparator> = {\n    up: (a, b) => a.position.y < b.position.y,\n    down: (a, b) => a.position.y > b.position.y,\n    left: (a, b) => a.position.x < b.position.x,\n    right: (a, b) => a.position.x > b.position.x,\n  }\n\n  const compare = comparators[direction]\n\n  const closestNode = nodes.reduce((closest, node) => {\n    if (node.id === current.id || !compare(node, current)) return closest;\n    return !closest || compare(node, closest) ? node : closest;\n  }, undefined as ReactFlowNode | undefined);\n\n  if (closestNode) {\n    current.selected = false;\n    closestNode.selected = true;\n  }\n\n  return closestNode || current;\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/hooks/useEscapeKey.ts",
    "content": "import { useCallback, useEffect } from 'react';\n\nconst KEY_NAME_ESC = 'Escape';\nconst KEY_EVENT_TYPE = 'keyup';\n\nexport function useEscapeKey(handleClose: () => void,  flowRef?: React.RefObject<HTMLDivElement | null>) {\n  const handleEscKey = useCallback((event: KeyboardEvent) => {\n    if (event.key === KEY_NAME_ESC) {\n      handleClose();\n      flowRef?.current?.focus();\n    }\n  }, [handleClose]);\n\n  useEffect(() => {\n    document.addEventListener(KEY_EVENT_TYPE, handleEscKey, false);\n\n    return () => {\n      document.removeEventListener(KEY_EVENT_TYPE, handleEscKey, false);\n    };\n  }, [handleEscKey]);\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/abortIcon.tsx",
    "content": "export const AbortIcon: React.FC = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    style={{ fill: 'none' }}\n    viewBox=\"0 0 24 24\"\n    strokeWidth={2.2}\n    stroke=\"currentColor\"\n    className=\"w-6 h-6 text-gray-700\"\n  >\n    <path strokeLinecap=\"square\" strokeLinejoin=\"miter\" d=\"M5 5h14v14H5z\" />\n  </svg>\n);\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/addNodeIcon.tsx",
    "content": "import React from 'react';\n\nexport const AddNodeIcon: React.FC = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      style={{ fill: 'none' }}\n      viewBox=\"4 4 20 20\"\n      strokeWidth={2.5}\n      stroke=\"currentColor\"\n      className={'w-6 h-6  text-gray-700'}\n    >\n      <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\"/>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/backIcon.tsx",
    "content": "export function BackIcon() {\n  return (<svg xmlns=\"http://www.w3.org/2000/svg\" style={{ fill: 'none' }} viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"w-6 h-6 text-gray-500\">\n    <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18\" />\n  </svg>)\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/chevronDown.tsx",
    "content": "export function ChevronDown() {\n  return (<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"size-4\">\n    <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"m19.5 8.25-7.5 7.5-7.5-7.5\" />\n  </svg>\n  )\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/chevronRight.tsx",
    "content": "export function ChevronRight() {\n  return (<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"size-4\">\n    <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\" />\n  </svg>)\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/closeIcon.tsx",
    "content": "import React from 'react';\n\nexport function CloseIcon() {\n  return (\n    <>\n      {/* Close Icon */}\n      <svg xmlns=\"http://www.w3.org/2000/svg\" style={{ fill: 'none' }} viewBox=\"0 0 24 24\" strokeWidth={2.5} stroke=\"currentColor\" className=\"w-3 h-3 text-gray-500\">\n        <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 6l12 12M18 6l-12 12\" />\n      </svg>\n    </>\n  );\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/collapseIcon.tsx",
    "content": "import React from 'react';\n\nexport const CollapseIcon: React.FC = () => {\n  return (\n    <svg className={'w-6 h-6'} stroke=\"currentColor\" viewBox=\"0 0 1344 1024\" xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"200\">\n      <path d=\"M38.095238 0h1024v1024h-1024z\" fill=\"none\"></path>\n      <path\n        d=\"M208.761905 219.526095A48.761905 48.761905 0 0 1 208.761905 121.904762h682.666666a48.761905 48.761905 0 0 1 0 97.621333H208.761905z m682.666666 584.94781A48.761905 48.761905 0 0 1 891.428571 902.095238H208.761905a48.761905 48.761905 0 0 1 0-97.621333h682.666666zM891.428571 463.238095a48.761905 48.761905 0 0 1 0 97.621334H506.794667a48.761905 48.761905 0 0 1 0-97.621334H891.428571zM359.046095 362.983619a39.058286 39.058286 0 0 1 0 55.198476L265.423238 512l93.622857 93.769143a39.058286 39.058286 0 0 1-27.550476 66.657524 38.814476 38.814476 0 0 1-27.599238-11.459048L174.189714 531.114667l-1.170285-19.260953c0-11.605333 4.534857-22.479238 12.824381-30.671238l118.052571-118.198857a39.009524 39.009524 0 0 1 55.149714 0z\"\n      ></path>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/configIcon.tsx",
    "content": "import React from 'react';\n\nexport const ConfigIcon: React.FC = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className=\"w-6 h-6 text-gray-700 scale-[1.2]\"\n      viewBox=\"0 0 24 24\"\n      strokeWidth={2.0}\n      stroke=\"currentColor\"\n    >\n      <path\n        fill=\"none\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        d=\"M21.75 6.75a4.5 4.5 0 0 1-4.884 4.484c-1.076-.091-2.264.071-2.95.904l-7.152 8.684a2.548 2.548 0 1 1-3.586-3.586l8.684-7.152c.833-.686.995-1.874.904-2.95a4.5 4.5 0 0 1 6.336-4.486l-3.276 3.276a3.004 3.004 0 0 0 2.25 2.25l3.276-3.276c.256.565.398 1.192.398 1.852Z\"\n      />\n      <path\n        fill=\"none\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        d=\"M4.867 19.125h.008v.008h-.008v-.008Z\"\n      />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/copyAsJsonIcon.tsx",
    "content": "import React from 'react';\n\nexport const CopyAsJsonIcon: React.FC = () => {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      focusable=\"false\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 16 16\"\n      width=\"16\"\n      height=\"16\"\n      fill=\"currentColor\"\n      className={'w-6 h-6 text-gray-700'}\n      style={{ display: 'inline-block', userSelect: 'none', verticalAlign: 'text-bottom', overflow: 'visible' }}\n    >\n      <path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"></path>\n      <path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"></path>\n    </svg>\n  );\n};"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/diagramIcon.tsx",
    "content": "import React from 'react';\n\nexport const DiagramIcon: React.FC = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      strokeWidth={1.5}\n      className={'w-6 h-6'}\n    >\n      <path strokeLinecap=\"round\" strokeLinejoin=\"round\"\n        d=\"M2.25 7.125C2.25 6.504 2.754 6 3.375 6h6c.621 0 1.125.504 1.125 1.125v3.75c0 .621-.504 1.125-1.125 1.125h-6a1.125 1.125 0 01-1.125-1.125v-3.75zM14.25 8.625c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v8.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 01-1.125-1.125v-8.25zM3.75 16.125c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 01-1.125-1.125v-2.25z\"/>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/dragIcon.tsx",
    "content": "import React from 'react';\n\nexport function DragIcon() {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" style={{ fill: 'none' }} viewBox=\"0 0 24 24\" strokeWidth={2.5} stroke=\"currentColor\" className=\"w-4 h-4 text-gray-500\">\n      <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8 9h8m-8 6h8\" />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/explorer.tsx",
    "content": "export const ExplorerIcon: React.FC = () => {\n  return (\n    <svg className=\"w-6 h-6\" viewBox=\"0 0 1024 1024\" version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      stroke=\"currentColor\">\n      <path d=\"M725.694745 1.003922h-60.636863c-39.755294 0-83.164863-0.200784-130.148392-0.501961C487.905882 0.160627 444.857725 0 405.744941 0h-58.669176c-33.53098 0-62.945882 12.990745-88.244706 38.952157C233.512157 64.913569 220.862745 94.007216 220.862745 126.21302l-36.48251 0.983843c-33.53098 0-62.122667 12.810039-85.775059 38.450196C74.932706 191.287216 63.10651 220.200157 63.10651 252.405961V883.45098c0 32.205804 12.649412 61.299451 37.948235 87.260863 25.298824 25.961412 54.733804 38.952157 88.264784 38.952157H662.588235c33.53098 0 62.945882-12.990745 88.244706-38.952157 25.298824-25.961412 37.948235-55.055059 37.948235-87.260863h31.563295c33.53098 0 62.945882-12.990745 88.244705-38.952156 25.298824-25.961412 37.948235-55.055059 37.948236-87.260863V253.409882l-220.862745-252.426039zM662.588235 946.537412H189.319529c-16.444235 0-31.061333-6.585725-43.891451-19.71702-12.810039-13.151373-19.215059-27.607843-19.215058-43.38949V252.405961c0-23.652392 8.693961-40.096627 26.122039-49.292549C169.763137 193.91749 192.592314 189.339608 220.862745 189.339608v567.918431c0 32.205804 12.649412 61.299451 37.948235 87.260863 25.318902 25.961412 54.733804 38.952157 88.264785 38.952157h378.61898c0 19.07451-5.76251 34.334118-17.267451 45.839059-11.484863 11.504941-26.784627 17.267451-45.839059 17.267451zM725.694745 662.588235H441.72549c-8.553412 0-15.942275-2.951529-22.186666-8.874666-6.224314-5.923137-9.356549-13.472627-9.356549-22.688628 0-8.533333 3.112157-15.922196 9.356549-22.166588A30.318431 30.318431 0 0 1 441.72549 599.481725h283.969255c8.533333 0 15.942275 3.132235 22.186667 9.376628 6.224314 6.224314 9.356549 13.633255 9.356549 22.186667 0 9.195922-3.112157 16.745412-9.356549 22.668549-6.244392 5.923137-13.653333 8.874667-22.186667 8.874666z m0-156.772392H441.72549a30.318431 30.318431 0 0 1-22.186666-9.376627 30.318431 30.318431 0 0 1-9.356549-22.166589c0-9.216 3.112157-16.76549 9.356549-22.688627 6.244392-5.923137 13.653333-8.874667 22.186666-8.874667h283.969255c8.533333 0 15.942275 2.951529 22.186667 8.874667 6.224314 5.923137 9.356549 13.472627 9.356549 22.688627 0 8.533333-3.112157 15.922196-9.356549 22.166589a30.318431 30.318431 0 0 1-22.186667 9.376627z m63.10651-253.389804c-17.086745 0-31.884549-6.425098-44.373333-19.235137-12.488784-12.830118-18.733176-27.447216-18.733177-43.871373V149.865412 64.090353L883.45098 252.426039h-94.649725z\"></path>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/export.tsx",
    "content": "export const ExportIcon: React.FC = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      style={{ fill: 'currentColor' }}\n      viewBox=\"0 0 24 24\"\n      strokeWidth={1.0}\n      stroke=\"currentColor\"\n      className={'w-6 h-6 text-gray-700'}\n    >\n      <path\n        d=\"M5.552 20.968a2.577 2.577 0 0 1-2.5-2.73c-.012-2.153 0-4.306 0-6.459a.5.5 0 0 1 1 0c0 2.2-.032 4.4 0 6.6c.016 1.107.848 1.589 1.838 1.589h12.463A1.55 1.55 0 0 0 19.825 19a3 3 0 0 0 .1-1.061v-6.16a.5.5 0 0 1 1 0c0 2.224.085 4.465 0 6.687a2.567 2.567 0 0 1-2.67 2.5Z\"\n      ></path>\n      <path\n        d=\"M12.337 3.176a.46.46 0 0 0-.311-.138q-.021.002-.043-.006c-.022-.008-.027 0-.041.006a.46.46 0 0 0-.312.138L7.961 6.845a.5.5 0 0 0 .707.707l2.816-2.815v10.742a.5.5 0 0 0 1 0V4.737L15.3 7.552a.5.5 0 0 0 .707-.707Z\"></path>\n    </svg>\n  );\n};"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/fileIcon.tsx",
    "content": "export function FileIcon() {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"size-4\">\n      <rect width=\"16\" height=\"20\" x=\"4\" y=\"2\" rx=\"2\" ry=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    </svg>\n  );\n}"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/helpIcon.tsx",
    "content": "export function HelpIcon() {\n  return (<svg xmlns=\"http://www.w3.org/2000/svg\" style={{ fill: 'none' }} viewBox=\"2 2 22 22\" strokeWidth={2.5} stroke=\"currentColor\" className=\"w-6 h-6 text-gray-700\">\n    <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z\" />\n  </svg>)\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/importIcon.tsx",
    "content": "// Icon depends on stroke control\nexport const ImportIcon: React.FC = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      style={{ fill: 'none' }}\n      viewBox=\"0 0 24 24\"\n      strokeWidth={2}\n      stroke=\"currentColor\"\n      className={'w-6 h-6 text-gray-700'}  // Add the color class here\n    >\n      <path strokeLinecap=\"round\" strokeLinejoin=\"round\"\n        d=\"M4 13v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-6M12 3v12m0 0l-3.5-3.5M12 15l3.5-3.5\"></path>\n    </svg>);\n};"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/loadingIcon.tsx",
    "content": "export const LoadingIcon = () => {\n  return (<svg stroke=\"currentColor\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      d=\"M876.864 782.592c3.264 0 6.272-3.2 6.272-6.656 0-3.456-3.008-6.592-6.272-6.592-3.264 0-6.272 3.2-6.272 6.592 0 3.456 3.008 6.656 6.272 6.656z m-140.544 153.344c2.304 2.432 5.568 3.84 8.768 3.84a12.16 12.16 0 0 0 8.832-3.84 13.76 13.76 0 0 0 0-18.56 12.224 12.224 0 0 0-8.832-3.84 12.16 12.16 0 0 0-8.768 3.84 13.696 13.696 0 0 0 0 18.56zM552.32 1018.24c3.456 3.648 8.32 5.76 13.184 5.76a18.368 18.368 0 0 0 13.184-5.76 20.608 20.608 0 0 0 0-27.968 18.368 18.368 0 0 0-13.184-5.824 18.368 18.368 0 0 0-13.184 5.76 20.608 20.608 0 0 0 0 28.032z m-198.336-5.76c4.608 4.8 11.072 7.68 17.6 7.68a24.448 24.448 0 0 0 17.536-7.68 27.456 27.456 0 0 0 0-37.248 24.448 24.448 0 0 0-17.536-7.68 24.448 24.448 0 0 0-17.6 7.68 27.52 27.52 0 0 0 0 37.184z m-175.68-91.84c5.76 6.08 13.824 9.6 21.952 9.6a30.592 30.592 0 0 0 22.016-9.6 34.368 34.368 0 0 0 0-46.592 30.592 30.592 0 0 0-22.016-9.6 30.592 30.592 0 0 0-21.952 9.6 34.368 34.368 0 0 0 0 46.592z m-121.152-159.36c6.912 7.36 16.64 11.648 26.368 11.648a36.736 36.736 0 0 0 26.432-11.584 41.28 41.28 0 0 0 0-55.936 36.736 36.736 0 0 0-26.432-11.584 36.8 36.8 0 0 0-26.368 11.52 41.28 41.28 0 0 0 0 56zM12.736 564.672a42.88 42.88 0 0 0 30.784 13.44 42.88 42.88 0 0 0 30.784-13.44 48.128 48.128 0 0 0 0-65.216 42.88 42.88 0 0 0-30.72-13.44 42.88 42.88 0 0 0-30.848 13.44 48.128 48.128 0 0 0 0 65.216z m39.808-195.392a48.96 48.96 0 0 0 35.2 15.36 48.96 48.96 0 0 0 35.2-15.36 54.976 54.976 0 0 0 0-74.56 48.96 48.96 0 0 0-35.2-15.424 48.96 48.96 0 0 0-35.2 15.424 54.976 54.976 0 0 0 0 74.56zM168.32 212.48c10.368 11.008 24.96 17.408 39.68 17.408 14.592 0 29.184-6.4 39.552-17.408a61.888 61.888 0 0 0 0-83.84 55.104 55.104 0 0 0-39.616-17.408c-14.656 0-29.248 6.4-39.616 17.408a61.888 61.888 0 0 0 0 83.84zM337.344 124.8c11.52 12.16 27.712 19.264 43.968 19.264 16.256 0 32.448-7.04 43.968-19.264a68.672 68.672 0 0 0 0-93.184 61.248 61.248 0 0 0-43.968-19.264 61.248 61.248 0 0 0-43.968 19.264 68.736 68.736 0 0 0 0 93.184z m189.632-1.088c12.672 13.44 30.528 21.248 48.448 21.248s35.712-7.808 48.384-21.248a75.584 75.584 0 0 0 0-102.464A67.392 67.392 0 0 0 575.36 0c-17.92 0-35.776 7.808-48.448 21.248a75.584 75.584 0 0 0 0 102.464z m173.824 86.592c13.824 14.592 33.28 23.104 52.736 23.104 19.584 0 39.04-8.512 52.8-23.104a82.432 82.432 0 0 0 0-111.744 73.472 73.472 0 0 0-52.8-23.168c-19.52 0-38.912 8.512-52.736 23.168a82.432 82.432 0 0 0 0 111.744z m124.032 158.528c14.976 15.872 36.032 25.088 57.216 25.088 21.12 0 42.24-9.216 57.152-25.088a89.344 89.344 0 0 0 0-121.088 79.616 79.616 0 0 0-57.152-25.088c-21.184 0-42.24 9.216-57.216 25.088a89.344 89.344 0 0 0 0 121.088z m50.432 204.032c16.128 17.088 38.784 27.008 61.632 27.008 22.784 0 45.44-9.92 61.568-27.008a96.256 96.256 0 0 0 0-130.432 85.76 85.76 0 0 0-61.568-27.072c-22.848 0-45.44 9.984-61.632 27.072a96.192 96.192 0 0 0 0 130.432z\"\n      stroke=\"currentColor\"></path>\n  </svg>);\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/logoIcon.tsx",
    "content": "export function LogoIcon () {\n  return (\n    <svg\n      className={'w-4 h-4 fill-blue-500 viewBox=\"0 0 1024 1024\" version=\"1.1\"'}\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 576 512\"\n    >\n      <path d=\"M0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 16 192 0 0-16c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-16-192 0 0 16c0 1.7-.1 3.4-.3 5L272 288l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-1.7 .1-3.4 .3-5L144 224l-96 0c-26.5 0-48-21.5-48-48L0 80z\"/>\n    </svg>);\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/lookingForIcon.tsx",
    "content": "export const LookingForIcon: React.FC = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 1024 1024\"\n      strokeWidth={2.0}\n      stroke=\"currentColor\"\n    >\n      <path strokeLinecap=\"round\" strokeLinejoin=\"round\" stroke=\"currentColor\"\n        d=\"M378.282667 736.768c-31.701333 56.405333-66.218667 74.794667-90.88 74.794667-24.618667 0-59.093333-18.346667-90.794667-74.794667-16.213333-28.8-29.696-64.512-38.784-105.216a134.741333 134.741333 0 1 0 0-239.061333c9.088-40.704 22.570667-76.458667 38.784-105.258667 31.701333-56.405333 66.176-74.794667 90.837333-74.794667 24.618667 0 59.136 18.389333 90.88 74.794667C408.917333 341.76 429.781333 421.12 429.781333 512s-20.906667 170.24-51.541333 224.768zM151.04 429.226667a44.928 44.928 0 1 1-5.845333 71.338666 563.2 563.2 0 0 1 5.845333-71.338666z m136.405333-276.48C175.786667 152.746667 85.333333 313.6 85.333333 512s90.453333 359.296 202.112 359.296c111.616 0 202.112-160.853333 202.112-359.253333 0-198.485333-90.496-359.338667-202.112-359.338667z m539.946667 584.106666c-31.701333 56.362667-66.176 74.752-90.837333 74.752-24.661333 0-59.136-18.346667-90.88-74.794666-16.170667-28.8-29.610667-64.512-38.741334-105.216a134.741333 134.741333 0 1 0 0-239.061334c9.130667-40.704 22.613333-76.458667 38.784-105.258666 31.701333-56.405333 66.218667-74.794667 90.88-74.794667 24.618667 0 59.093333 18.389333 90.794667 74.794667C858.112 341.76 878.933333 421.12 878.933333 512s-20.864 170.24-51.541333 224.768z m-227.242667-307.626666a44.928 44.928 0 1 1-5.845333 71.338666c0.469333-24.746667 2.517333-48.64 5.845333-71.338666z m136.405334-276.48c-111.616 0-202.112 160.853333-202.112 359.296s90.496 359.296 202.112 359.296S938.666667 710.442667 938.666667 512.042667c0-198.485333-90.453333-359.338667-202.112-359.338667z\"\n      />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/nodeIcon.tsx",
    "content": "export const NodeIcon: React.FC = () => {\n  return (\n    <svg className={'w-6 h-6 '} viewBox=\"0 0 1024 1024\" version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      stroke=\"currentColor\"\n      p-id=\"8453\" id=\"mx_n_1722588859007\" width=\"200\" height=\"200\">\n      <path\n        d=\"M320 192v128c0 35.2-28.8 64-64 64H128c-35.2 0-64-28.8-64-64V192c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64z\"\n        p-id=\"8454\"></path>\n      <path\n        d=\"M960 704v128c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64zM960 192v128c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64V192c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64z\"\n        p-id=\"8455\"></path>\n      <path d=\"M704 288V224H320v64h158.72L480 768c0 17.6 14.4 32 32 32h192v-64h-160l-1.28-448H704z\"\n        p-id=\"8456\"></path>\n    </svg>);\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/openIcon.tsx",
    "content": "export function OpenIcon() {\n  return (<svg xmlns=\"http://www.w3.org/2000/svg\" style={{ fill: 'none' }} viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className=\"w-6 h-6 text-gray-700\">\n    <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776\" />\n  </svg>)\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/portIcon.tsx",
    "content": "export function PortIcon({ fill = '#50C878' }) {\n  return (<svg\n    viewBox=\"0 0 24 24\"\n    className=\"w-3 h-3\"\n    fill={fill}\n  >\n    <polygon points=\"0,0 24,12, 0,24, 0,0\" />\n  </svg>\n  )}"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/runIcon.tsx",
    "content": "import React from 'react';\n\nexport const RunIcon: React.FC = () => {\n  return (\n    <svg\n      style={{ fill: 'none' }}\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"2 2 20 20\"\n      strokeWidth={2.0}\n      stroke=\"currentColor\"\n      className={'w-6 h-6 text-gray-700'}\n    >\n      <path strokeLinecap=\"round\" strokeLinejoin=\"round\"\n        d=\"M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.348a1.125 1.125 0 010 1.971l-11.54 6.347a1.125 1.125 0 01-1.667-.985V5.653z\"/>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/saveIcon.tsx",
    "content": "export const SaveIcon: React.FC = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      style={{ fill: 'none' }}\n      viewBox=\"0 0 24 24\"\n      strokeWidth={2.0}\n      stroke=\"currentColor\"\n      className={'w-6 h-6 text-gray-700'}  // Add the color class here\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        d=\"M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 019 9v.375M10.125 2.25A3.375 3.375 0 0113.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 013.375 3.375M9 15l2.25 2.25L15 12\"\n      />\n    </svg>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/icons/tableIcon.tsx",
    "content": "export function TableIcon() {\n  return (<svg xmlns=\"http://www.w3.org/2000/svg\" style={{ fill: 'none' }} viewBox=\"0 0 24 24\" strokeWidth={3} stroke=\"currentColor\" className=\"w-6 h-6 text-gray-700\">\n    <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zM3.75 12h.007v.008H3.75V12zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm-.375 5.25h.007v.008H3.75v-.008zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z\" />\n  </svg>)\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/index.tsx",
    "content": "export { DataStory } from './DataStory';\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/keyManager.ts",
    "content": "import { Subject } from 'rxjs';\n\nexport class KeyManager {\n  activeKeys: Set<string> = new Set();\n  subject = new Subject<string[]>();\n\n  constructor() {\n  }\n\n  removeEventListeners(): void {\n    document.removeEventListener('keydown', this.handleKeyDown.bind(this));\n    document.removeEventListener('keyup', this.handleKeyUp.bind(this));\n    window.removeEventListener('blur', this.resetHandler.bind(this));\n    window.removeEventListener('contextmenu', this.resetHandler.bind(this));\n  }\n\n  initEventListeners(): void {\n    document.addEventListener('keydown', this.handleKeyDown.bind(this));\n    document.addEventListener('keyup', this.handleKeyUp.bind(this));\n    window.addEventListener('blur', this.resetHandler.bind(this));\n    window.addEventListener('contextmenu', this.resetHandler.bind(this));\n  }\n\n  private resetHandler(): void {\n    this.activeKeys.clear();\n  }\n\n  private handleKeyDown(event: KeyboardEvent): void {\n    const keys = this.getDownKeys(event);\n    keys.forEach(key => this.activeKeys.add(key));\n  }\n\n  private handleKeyUp(event: KeyboardEvent): void {\n    const keys = this.getUpKeys(event);\n    keys.forEach(key => {\n      this.activeKeys.delete(key);\n    });\n\n    this.subject.next(Array.from(this.activeKeys));\n  }\n\n  private getDownKeys(event: KeyboardEvent): string[] {\n    const keys: string[] = [];\n\n    if (event.shiftKey) keys.push('Shift');\n    if (event.ctrlKey) keys.push('Control');\n    if (event.altKey) keys.push('Alt');\n    if (event.metaKey) keys.push('Meta');\n\n    if (!['Shift', 'Control', 'Alt', 'Meta'].includes(event.key)) {\n      keys.push(event.key);\n    }\n\n    return keys;\n  }\n\n  private getUpKeys(event: KeyboardEvent): string[] {\n    const keys: string[] = [];\n\n    keys.push(event.key);\n\n    return keys;\n  }\n}\n\nexport const keyManager = new KeyManager();\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/mockJSServer/index.ts",
    "content": "import { Application, ObserverController, InMemoryObserverStorage } from '@data-story/core';\nimport { Subject } from 'rxjs';\nimport { HandlerParam, getDefaultMsgHandlers, Message, MessageHandlers } from './messageHandlers';\n\nexport class MockJSServer {\n  channel: Subject<any> = new Subject();\n  private messageHandlers = {};\n\n  constructor({ app, messageHandlers }: { app: Application, messageHandlers?: MessageHandlers }) {\n    const storage = new InMemoryObserverStorage('_');\n    const observerController = new ObserverController(storage);\n\n    this.messageHandlers = messageHandlers ?? getDefaultMsgHandlers(app, observerController);\n    this.start();\n  }\n\n  handleMessage = async(message: Message) => {\n    if (message.status !== 'client-post') return;\n    const handler = this.messageHandlers[message.type] as (params: HandlerParam) => Promise<void>;\n    if (!handler) throw new Error('Unknown message type (server): ' + message.type);\n\n    const sendEvent = (msg: Record<string, any>) => {\n      this.channel.next({\n        ...msg,\n        status: 'server-post',\n        msgId: message.msgId,\n      });\n    }\n\n    await handler({\n      data: message,\n      sendEvent,\n    });\n  }\n\n  private start() {\n    this.channel.subscribe((msg: Message) => {\n      // console.debug('JS_SERVER:msg', msg);\n      this.handleMessage(msg);\n    });\n    console.log('Client connected 💓');\n  }\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/mockJSServer/messageHandlers.ts",
    "content": "import {\n  Application,\n  Diagram,\n  ExecutionFailure,\n  type InputObserver,\n  ObserverController,\n  type ItemValue, RequestObserverType,\n  type ObserveLinkItems, ObserveLinkCounts, ObserveLinkUpdate, GetDataFromStorageParams, LinkId, ObserveNodeStatus,\n  CancelObservation,\n} from '@data-story/core';\nimport { loadDiagram, saveDiagram } from './storeDiagram';\n\ntype RunMessage = {\n  msgId: string,\n  type: 'run',\n  diagram: Diagram,\n  inputObservers: InputObserver[],\n  executionId: string,\n}\n\nexport type HandlerParam = { data: unknown, sendEvent: (msg: Record<string, any>) => void };\nexport type Message = { type: string } & Record<string, unknown>;\n\ntype Handler = (params: HandlerParam) => Promise<unknown>;\nexport type MessageHandlers = {\n  run: Handler,\n  getNodeDescriptions: Handler,\n  updateDiagram: Handler,\n  [key: string]: Handler,\n};\nconst LocalStorageKey = 'data-story-tree';\n\nexport const getDefaultMsgHandlers = (app: Application, observerController: ObserverController) => {\n  const abortControllers = new Map<string, AbortController>();\n\n  const abortExecution = async ({ data, sendEvent }: HandlerParam) => {\n    const { executionId } = data as { executionId: string };\n    const controller = abortControllers.get(executionId);\n    if (controller) {\n      controller.abort();\n    }\n  };\n\n  const run = async({ data, sendEvent }: HandlerParam) => {\n    const startTime = performance.now();\n    const { diagram, executionId } = data as RunMessage;\n\n    const executor = app!.getExecutor({\n      diagram,\n      observerController,\n    });\n\n    const controller = new AbortController();\n    abortControllers.set(executionId, controller);\n    const abortSignal = controller.signal;\n\n    try {\n      const execution = executor?.execute(abortSignal);\n      for await(const executionUpdate of execution) {\n      }\n\n      const executionResult = {\n        type: 'ExecutionResult',\n        time: performance.now() - startTime,\n      }\n      sendEvent(executionResult);\n    } catch(error: any) {\n      // the execution is aborted\n      if (error instanceof Error && error.message === 'Execution aborted') {\n        sendEvent?.({\n          type: 'ExecutionAborted',\n          executionId,\n        });\n        return;\n      }\n\n      const failure: ExecutionFailure = {\n        type: 'ExecutionFailure',\n        message: error?.message,\n      }\n      sendEvent(failure);\n    }\n  };\n\n  const observeLinkCounts = ({ data, sendEvent }: HandlerParam) => {\n    observerController.addLinkCountsObserver({\n      ...data as ObserveLinkCounts,\n      onReceive: ({ links }) => {\n        sendEvent({\n          links: links,\n          type: RequestObserverType.observeLinkCounts,\n        })\n      },\n    })\n  }\n\n  const observeNodeStatus = ({ data, sendEvent }: HandlerParam) => {\n    observerController.addNodeStatusObserver({\n      ...data as ObserveNodeStatus,\n      onReceive: ({ nodes }) => {\n        sendEvent({\n          nodes: nodes,\n          type: RequestObserverType.observeNodeStatus,\n        })\n      },\n    })\n  }\n\n  const observeLinkItems = ({ data, sendEvent }: HandlerParam) => {\n    observerController.addLinkItemsObserver({\n      ...data as ObserveLinkItems,\n      onReceive: (items: ItemValue[], inputObserver: InputObserver) => {\n        sendEvent({\n          items,\n          inputObserver,\n          type: RequestObserverType.observeLinkItems,\n        })\n      },\n    } as ObserveLinkItems);\n  }\n\n  const cancelObservation = ({ data, sendEvent }: HandlerParam) => {\n    observerController.deleteExecutionObserver(data as CancelObservation);\n    sendEvent({\n      ...data as Record<string, unknown>,\n      // cancelObservation: true\n    });\n  }\n\n  const observeLinkUpdate = ({ data, sendEvent }: HandlerParam) => {\n    observerController.observeLinkUpdate({\n      ...data as ObserveLinkUpdate,\n      onReceive: () => {\n        sendEvent({\n          linkIds: (data as ObserveLinkUpdate).linkIds,\n          type: RequestObserverType.observeLinkUpdate,\n        });\n      },\n    } as ObserveLinkUpdate);\n  }\n\n  const getNodeDescriptions = async({ data, sendEvent }: HandlerParam) => {\n    const nodeDescriptions = app!.descriptions();\n    setTimeout(() => {\n      sendEvent({\n        ...data as Record<string, unknown>,\n        availableNodes: nodeDescriptions,\n      });\n    }, 1000);\n  };\n\n  const updateDiagram = async({ data, sendEvent }: HandlerParam) => {\n    saveDiagram(LocalStorageKey, (data as { diagram: Diagram }).diagram);\n  }\n\n  const getDiagram = async({ data, sendEvent }: HandlerParam) => {\n    const localDiagram = loadDiagram(LocalStorageKey);\n\n    sendEvent({\n      ...data as Record<string, unknown>,\n      diagram: localDiagram.diagram,\n    });\n  };\n\n  const getDataFromStorage = async({ data, sendEvent }: HandlerParam) => {\n    const result: Record<LinkId, ItemValue[]> = await observerController.getDataFromStorage(data as GetDataFromStorageParams);\n\n    sendEvent({\n      ...data as GetDataFromStorageParams,\n      data: result,\n    });\n  }\n\n  return {\n    abortExecution,\n    run,\n    getNodeDescriptions,\n    updateDiagram,\n    getDiagram,\n    observeLinkCounts,\n    observeLinkItems,\n    observeLinkUpdate,\n    cancelObservation,\n    getDataFromStorage,\n    observeNodeStatus,\n  }\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/mockJSServer/storeDiagram.ts",
    "content": "import { Diagram } from '@data-story/core';\n\nexport interface LocalDiagram {\n  type: 'load' | 'save';\n  version: string;\n  name: string;\n  diagram: Diagram | null;\n}\n\nconst getCoreVersion = () => {\n  // const { version } = require('../../../../../core/package.json');\n  // return version;\n  return '0.0.1';\n}\n\nexport const saveDiagram = (key: string, diagram: Diagram) => {\n  try {\n    // There's no need to save the diagram's `link label` and `link labelBgStyle`\n    const links = diagram.links.map(link => {\n      const { label, labelBgStyle, ...rest } = link;\n      return rest;\n    });\n\n    const savedDiagram = {\n      ...diagram,\n      links,\n    };\n\n    const diagramJSON = JSON.stringify({\n      type: 'save',\n      version: getCoreVersion(),\n      name: key,\n      diagram: savedDiagram,\n    } as LocalDiagram);\n\n    localStorage?.setItem(key, diagramJSON);\n  } catch(e) {\n    console.error(e);\n  }\n};\n\nexport const loadDiagram = (key: string): LocalDiagram => {\n  const initDiagram: LocalDiagram = {\n    type: 'load',\n    version: getCoreVersion(),\n    name: key,\n    diagram: null,\n  }\n\n  if (typeof window === 'undefined' || !localStorage?.getItem(key)) {\n    return initDiagram;\n  }\n\n  const json = localStorage?.getItem(key);\n  const { name, diagram = new Diagram() } = JSON.parse(json!);\n\n  initDiagram.diagram = new Diagram({\n    nodes: diagram.nodes,\n    links: diagram.links,\n  });\n\n  initDiagram.name = name;\n\n  return initDiagram;\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modal.tsx",
    "content": "import { ReactNode, useEffect, useRef } from 'react';\nimport { useEscapeKey } from './hooks/useEscapeKey';\nexport function Modal({\n  setShowModal,\n  title,\n  children,\n  primaryAction,\n  onPrimaryAction,\n}: {\n  setShowModal: (showModal: boolean) => void;\n  title?: string;\n  children?: ReactNode;\n  primaryAction?: string;\n  onPrimaryAction?: () => void;\n}) {\n  useEscapeKey(() => setShowModal(false));\n\n  const modalRef = useRef<HTMLDivElement | null>(null);\n\n  // Listen for click outside\n  useEffect(() => {\n    const handleClickOutside = (event: any) => {\n      if (modalRef.current !== null && !modalRef.current.contains(event.target as Node)) {\n        setShowModal(false);\n      }\n    };\n\n    // Bind the event listener\n    document.addEventListener('mousedown', handleClickOutside);\n    return () => {\n      // Unbind the event listener on clean up\n      document.removeEventListener('mousedown', handleClickOutside);\n    };\n  }, [modalRef]);\n\n  return <>\n    <div className=\"justify-center items-center flex overflow-x-hidden fixed inset-0 z-50 outline-none focus:outline-none\">\n      <div ref={modalRef} className=\"relative w-full max-w-4xl my-8 mx-auto px-8\">\n        <div className=\"border-0 rounded-lg shadow-lg relative flex flex-col w-full bg-white outline-none focus:outline-none\">\n          {title && (<div className=\"flex items-start justify-between px-8 py-2 border-solid border-slate-200 rounded-t\">\n            <div className=\"pr-4 mt-4 flex flex-col align-center justify-middleitems-center justify-center text-lg text-gray-400 font-bold tracking widest\">\n              {title}\n            </div>\n            <button className=\"p-1 ml-auto text-black float-right text-3xl leading-none font-semibold outline-none focus:outline-none\" onClick={() => setShowModal(false)}>\n              <span className=\"text-gray-500 h-6 w-6 text-2xl block outline-none focus:outline-none\">\n                ×\n              </span>\n            </button>\n          </div>)}\n          <div className=\"max-h-128 overflow-y-scroll relative pb-6 pt-4 px-6 flex-auto space-y-1\">\n            {children}\n          </div>\n          {primaryAction && (<div className=\"flex items-center justify-end p-6 border-t border-solid border-slate-200 rounded-b\">\n            <button className=\"text-gray-500 background-transparent font-bold uppercase px-6 py-2 text-xs outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150\" type=\"button\" onClick={() => setShowModal(false)}>\n              Close\n            </button>\n            {primaryAction && <button className=\"bg-blue-500 text-white active:bg-blue-600 font-bold uppercase text-xs px-6 py-3 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150\" type=\"button\" onClick={onPrimaryAction}>\n              {primaryAction}\n            </button>}\n          </div>)}\n          <div className=\"h-12\"></div>\n        </div>\n      </div>\n    </div>\n    <div className=\"opacity-25 fixed inset-0 z-40 bg-black\"></div>\n  </>;\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/addNodeForm.tsx",
    "content": "import { useEffect, useRef, useState } from 'react';\nimport { NodeDescription } from '@data-story/core';\nimport clsx from 'clsx';\nimport { StoreSchema } from '../types';\nimport { keyManager } from '../keyManager';\nimport { filter, take } from 'rxjs';\n\nexport interface AddNodeModalContentProps {\n  setSidebarKey: (show: string) => void;\n  addNodeFromDescription: StoreSchema['addNodeFromDescription'];\n  availableNodes: NodeDescription[];\n}\n\nexport const AddNodeFormContent = (props: AddNodeModalContentProps) => {\n  const { setSidebarKey, availableNodes, addNodeFromDescription }: AddNodeModalContentProps = props;\n  const inputReference = useRef<HTMLInputElement>(null);\n  const [search, setSearch] = useState('');\n\n  useEffect(() => {\n    const isKeyTrigger = keyManager.activeKeys.size > 0;\n    if (isKeyTrigger) {\n      keyManager.subject.pipe(\n        filter((activeKeys) => activeKeys.length === 0),\n        take(1),\n      ).subscribe(() => inputReference.current?.focus());\n    } else {\n      inputReference.current?.focus();\n    }\n  }, []);\n\n  const doAddNode = (nodeDescription: NodeDescription) => {\n    addNodeFromDescription(nodeDescription);\n    setSidebarKey('');\n  };\n\n  const matchingNodes = availableNodes\n    .sort((a: NodeDescription, b: NodeDescription) => {\n      // Prioritize sorting by type if either is \"Input\" or \"Output\"\n      const typePriority = { Input: 1, Output: 2 }; // Define priority for types\n      const aTypePriority = typePriority[a.computerType] || Number.MAX_SAFE_INTEGER; // Default to a very high number if not \"Input\" or \"Output\"\n      const bTypePriority = typePriority[b.computerType] || Number.MAX_SAFE_INTEGER; // Same here\n\n      if (aTypePriority < bTypePriority) return -1; // Move \"Input\" or \"Output\" to the front\n      if (aTypePriority > bTypePriority) return 1;\n\n      // If neither is \"Input\" or \"Output\", or if they are the same, then sort by category\n      if ((a.category || '') < (b.category || '')) return -1;\n      if ((a.category || '') > (b.category || '')) return 1;\n\n      return 0;\n    })\n    .filter((nodeDescription: NodeDescription) => {\n      return JSON.stringify(nodeDescription).toLowerCase().includes(search.toLowerCase());\n    });\n\n  return (\n    <div className='h-full p-2'>\n      <div data-cy=\"add-node-modal\" className=\"m-2\">\n        <input\n          data-cy='add-node-modal-input'\n          className='w-full bg-white text-gray-500 font-mono text-xs border border-gray-100 rounded p-4'\n          placeholder={'Type format, action, resource ...'}\n          value={search}\n          onChange={(e) => setSearch(e.target.value)}\n          ref={inputReference}\n        ></input>\n      </div>\n      <div\n        className='grid grid-cols-2 gap-2 py-1'\n        data-cy='add-node-modal-node-list'>\n        {matchingNodes.map((nodeDescription: NodeDescription, index: number) => {\n          return (\n            <button\n              tabIndex={0}\n              className={clsx(\n                'flex justify-between items-center px-4 py-2',\n                'text-base font-bold text-gray-400 cursor-pointer',\n                'border border-gray-300 shadow',\n                'bg-gray-100 hover:bg-slate-200',\n                {\n                  'mr-1': index % 2 !== 0,\n                  'ml-2': index % 2 === 0,\n                },\n              )}\n              key={nodeDescription.label}\n              onClick={() => doAddNode(nodeDescription)}\n              draggable=\"true\"\n              onDragStart={(event) => {\n                event.dataTransfer.setData('application/reactflow', nodeDescription.computerType);\n                event.dataTransfer.effectAllowed = 'move';\n              }}\n            >\n              <div className='text-gray-500 text-xs overflow-hidden'>\n                <span className='text-indigo-500 font-mono'>{nodeDescription.category || 'Core'}::</span>\n                {nodeDescription.label || nodeDescription.computerType}\n              </div>\n            </button>\n          );\n        })}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/nodeSettingsModal/nodeSettingsModal.tsx",
    "content": "import { useEscapeKey } from '../../hooks/useEscapeKey';\nimport { NodeSettingsForm } from '../../Form/nodeSettingsForm';\nimport { NodeSettingsFormProps } from '../../types';\n\nexport const NodeSettingsModalContent = (props: NodeSettingsFormProps) => {\n  const { node, onClose } = props;\n\n  return <>\n    <div className=\"flex justify-center overflow-x-hidden fixed inset-0 z-50 outline-none focus:outline-none\">\n      <div className=\"relative w-full max-w-4xl my-8 mx-auto px-8\">\n        <NodeSettingsForm node={node} onClose={onClose} />\n      </div>\n    </div>\n    <div className=\"opacity-25 fixed inset-0 z-40 bg-black\"/>\n  </>;\n}\n\nexport const NodeSettingsModal = ({ showModal, ...rest }: {\n  showModal: boolean;\n} & NodeSettingsFormProps) => {\n  if (!showModal) return null;\n\n  return (<NodeSettingsModalContent {...rest} />);\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/nodeSettingsModal/tabs/InputSchemas.tsx",
    "content": "import React from 'react';\nimport { ReactFlowNode } from '../../../../Node/ReactFlowNode';\n\nexport function InputSchemas({\n  node,\n  register,\n}: {\n  node: ReactFlowNode,\n  register: any\n}) {\n  return <div\n    className=\"flex flex-col\"\n  >\n    <label className=\"mt-2 mb-1 text-xs text-gray-400\">Input Schema</label>\n    <textarea\n      placeholder={'{ \"someProperty\": \"string\"}'}\n      className=\"w-full bg-white h-48 text-xs text-gray-400 px-2 py-1 border rounded border-blue-200\"\n      defaultValue={JSON.stringify(node.data.inputs, null, 2)}\n    ></textarea>\n  </div>;\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/nodeSettingsModal/tabs/Params/Params.tsx",
    "content": "import { ReactFlowNode } from '../../../../../Node/ReactFlowNode';\nimport { StringableWithConfig } from './StringableWithConfig';\nimport { FormFieldWrapper } from '../../../../Form/UseFormField';\n\nexport function ParamsComponent({\n  node,\n}: {\n  node: ReactFlowNode,\n}) {\n  return <>\n    <div className='max-w-4xl w-full space-y-2 p-4'>\n      {node.data.params.map((param) => {\n        return (<div className=\"flex flex-col border-b border-white pb-4\" key={param.name}>\n          <label title=\"axx\" className=\"my-2 text-sm tracking-wide font-bold uppercase text-slate-400\">{param.label || 'no-label'}</label>\n          {param.help && (<div className=\"mt-2 mb-2 text-xs text-slate-400\">{param.help || 'no-help'}</div>)}\n\n          {param.type === 'StringableParam' && <StringableWithConfig\n            param={param}\n            node={node}\n          />}\n        </div>)\n      })}\n    </div>\n    {node.data.params.length === 0 && <div className=\"text-xs text-gray-400\">No parameters</div>}\n  </>;\n}\n\nexport function Params({\n  node,\n}) {\n  return (<FormFieldWrapper fieldName={'params'}>\n    <ParamsComponent node={node} />\n  </FormFieldWrapper>);\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/nodeSettingsModal/tabs/Params/ParamsComponentFactory.tsx",
    "content": "import { Param  } from '@data-story/core';\nimport {  FormComponent, FormComponentProps } from '../../../../types';\nimport { StringableComponent } from './StringableWithConfig';\n\nexport class ParamsComponentFactory{\n  availableComponents: FormComponent<Param>[] = [\n    new StringableComponent(),\n  ]\n  private selectedComponent?: FormComponent<Param> = undefined;\n\n  getComponent(params: FormComponentProps & { type: string }) {\n    const { type, ...rest } = params;\n\n    this.selectedComponent = this.availableComponents.find(e => e.getType() === type);\n    if (this.selectedComponent) {\n      return this.selectedComponent.getComponent(rest);\n    } else {\n      throw new Error(`No component found for ${type}`);\n    }\n  }\n\n  getSelectedComponent() {\n    return this.selectedComponent;\n  }\n\n  /**\n   * shared instance\n   */\n  static defaultInstance = new ParamsComponentFactory();\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/nodeSettingsModal/tabs/Params/StringableWithConfig.tsx",
    "content": "import { Param, StringableParam } from '@data-story/core'\nimport { StringableInput } from '../../../../Form/StringableInput'\nimport { DropDown, OptionGroup } from '../../../../../DropDown';\nimport { ReactFlowNode } from '../../../../../Node/ReactFlowNode';\nimport { useState } from 'react';\nimport { FormComponent, FormComponentProps } from '../../../../types';\nimport { FormFieldWrapper, useFormField, UseFormFieldReturn  } from '../../../../Form/UseFormField';\n\ntype StringableWithConfigProps = {\n  param: StringableParam\n  node: ReactFlowNode,\n};\n\nfunction StringableWithConfigComponent({\n  param,\n  node,\n}: StringableWithConfigProps) {\n  const [cursorPosition, setCursorPosition] = useState(0);\n\n  const handleCursorPositionChange = (newPosition: number) => {\n    setCursorPosition(newPosition);\n  };\n\n  const filedForm = useFormField();\n\n  return (<div className=\"group flex flex-col-reverse bg-gray-50 h-full border-gray-50 border-2\">\n    <StringableInput\n      {...param}\n      param={param as StringableParam}\n      onCursorPositionChange={handleCursorPositionChange}\n    />\n    <DropDown\n      optionGroups={[\n        paramOptions(param, node, filedForm, cursorPosition),\n        evaluationOptions(param),\n        castOptions(param),\n      ].filter(Boolean) as OptionGroup[]}/>\n  </div>)\n}\n\nexport function StringableWithConfig(params: StringableWithConfigProps) {\n  return (<FormFieldWrapper fieldName={params.param.name}>\n    <StringableWithConfigComponent {...params} />\n  </FormFieldWrapper>)\n}\n\nexport class StringableComponent implements FormComponent<Param> {\n  getComponent(params: FormComponentProps) {\n    return (<StringableWithConfig {...params} param={params.param as StringableParam}/>);\n  };\n\n  getType() {\n    return 'StringableParam';\n  }\n}\n\nconst paramOptions = (\n  param: StringableParam,\n  node: ReactFlowNode,\n  form: UseFormFieldReturn,\n  cursorPosition: number,\n): OptionGroup | undefined => {\n  const portNames = param.interpolationsFromPort\n    ?? node.data.inputs.map(port => port.name)\n  const [portName] = portNames\n\n  const port = node.data.inputs.find((port) => port.name === portName)\n\n  const schema = port?.schema ?? {}\n\n  // TODO make this work for nested schemas\n  const keys = Object.keys(schema)\n\n  return {\n    label: 'Parameters',\n    emptyMessage: 'N/A',\n    options: keys.map(key => ({\n      label: key,\n      value: key,\n      callback: ({ close }) => {\n        const currentValue = form.getValues();\n        // Update the form field by adding it to the cursor position\n        const interpolation = '${' + key + '}'\n        const part1 = currentValue.slice(0, cursorPosition)\n        const part2 = currentValue.slice(cursorPosition)\n        const newValue = part1 + interpolation + part2\n        form.setValue(newValue);\n        close()\n      },\n    })),\n  }\n}\n\nconst evaluationOptions = (\n  param: StringableParam,\n): OptionGroup | undefined => {\n  const evaluations = param.evaluations ?? []\n\n  if (evaluations.length === 0) return undefined\n\n  return {\n    label: 'Evaluation',\n    selectable: true,\n    options: evaluations.map(evaluation => ({\n      label: evaluation.label,\n      value: evaluation.type,\n      selected: evaluation.selected,\n      callback: (options: {\n        close: () => void,\n        selectedIndex: number,\n      }) => {\n        options.close()\n\n        evaluations.map((e, i) => {\n          e.selected = i === options.selectedIndex\n          return e\n        })\n      },\n    })),\n  }\n}\n\nexport const castOptions = (\n  param: StringableParam,\n): OptionGroup => {\n  const castOptions = param.casts ?? []\n\n  return {\n    label: 'Cast',\n    selectable: true,\n    options: castOptions.map(castOption => ({\n      label: castOption.label,\n      value: castOption.type,\n      selected: castOption.selected,\n      callback: (options: {\n        close: () => void,\n        selectedIndex: number,\n      }) => {\n        options.close()\n\n        castOptions.map((e, i) => {\n          e.selected = i === options.selectedIndex\n          return e\n        })\n      },\n    })),\n  }\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/nodeSettingsModal/tabs/Params/index.tsx",
    "content": "export { Params } from './Params';\nexport { StringableWithConfig } from './StringableWithConfig';"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/nodeSettingsModal/tabs/index.ts",
    "content": "export { InputSchemas } from './InputSchemas'\nexport { OutputSchemas } from './outputSchemas'\nexport { Params } from './Params'\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/nodeSettingsModal/tabs/outputSchemas/common.ts",
    "content": "import { ColumnDef, RowData } from '@tanstack/react-table';\nimport { ReactFlowNode } from '../../../../../Node/ReactFlowNode';\nimport { UseFormReturn } from 'react-hook-form';\nimport { Port } from '@data-story/core';\n\ndeclare module '@tanstack/react-table' {\n  interface TableMeta<TData extends RowData> {\n    updateData: (rowIndex: number, columnId: string, value: unknown) => void;\n  }\n}\n\nexport interface OutputSchemaProps {\n  node: ReactFlowNode;\n  register: any;\n  form :  UseFormReturn<any>;\n}\n\nexport const defaultColumns: ColumnDef<Port>[] = ['name', 'schema'].map((key) => ({\n  accessorKey: key,\n  id: key,\n}));\n\nexport const formatOutputs = (outputs: string | object): Port[] => {\n  return typeof outputs === 'string' ? JSON.parse(outputs) : outputs;\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/nodeSettingsModal/tabs/outputSchemas/dataStoryOutputTable.tsx",
    "content": "import React, { FC, useCallback, useState } from 'react';\nimport { ColumnDef, flexRender, getCoreRowModel, Row, useReactTable } from '@tanstack/react-table';\nimport { DndProvider, useDrag, useDrop } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { Port } from '@data-story/core';\nimport { Controller, ControllerRenderProps, useFormContext } from 'react-hook-form';\nimport { defaultColumns, formatOutputs, OutputSchemaProps } from './common';\nimport { ReactFlowNode } from '../../../../../Node/ReactFlowNode';\nimport { CloseIcon } from '../../../../icons/closeIcon';\nimport { DragIcon } from '../../../../icons/dragIcon';\nfunction PortEditCell({ initialValue, onBlur }: { initialValue: unknown, onBlur: (value: unknown) => void }){\n  const [value, setValue] = useState(initialValue);\n\n  return (\n    <input\n      type=\"text\"\n      className=\"text-xs p-2 w-full bg-gray-50 font-mono\"\n      value={value as string}\n      onChange={(e) => {\n        setValue(e.target.value)\n      }}\n      onBlur={() => onBlur(value)}\n    />\n  );\n}\n\nconst PortEditObjectCell = ({ initialValue, onBlur }: { initialValue: unknown, onBlur: (value: unknown) => void }) => {\n  const [value, setValue] = useState(JSON.stringify(initialValue, null, 2));\n\n  const onCustomBlur = () => {\n    try {\n      // todo: use user friendly JSON parser\n      const parsedValue = JSON.parse(value);\n      onBlur(parsedValue);\n    } catch (e) {\n      console.error('Error parsing JSON', e);\n    }\n  }\n\n  return (\n    <textarea\n      className=\"text-xs p-2 w-full bg-gray-50 h-16 font-mono\"\n      rows={1}\n      placeholder=\"Type here...\"\n      value={ value as string}\n      onChange={(e) => {\n        setValue(e.target.value)\n      }}\n      onBlur={onCustomBlur}\n    />\n  );\n}\n\n// Give our default column cell renderer editing superpowers!\nconst defaultColumn: Partial<ColumnDef<Port>> = {\n  cell: ({ getValue, row: { index }, column: { id }, table }) => {\n    const initialValue = getValue();\n    // When the input is blurred, we'll call our table meta's updateData function\n    const onBlur = (value: unknown) => {\n      table.options.meta?.updateData(index, id, value);\n    };\n    const isObject = typeof initialValue === 'object';\n\n    return (\n      isObject ? <PortEditObjectCell initialValue={initialValue} onBlur={onBlur} />\n        : <PortEditCell initialValue={initialValue} onBlur={onBlur}/>\n    );\n  },\n};\nconst DraggableRow: FC<{\n  row: Row<Port>;\n  reorderRow: (draggedRowIndex: number, targetRowIndex: number) => void;\n  deleteRow: (id: string) => void;\n}> = ({ row, reorderRow, deleteRow }) => {\n  const [, dropRef] = useDrop({\n    accept: 'row',\n    drop: (draggedRow: Row<Port>) => reorderRow(draggedRow.index, row.index),\n  });\n\n  const [{ isDragging }, dragRef, previewRef] = useDrag({\n    collect: (monitor) => ({\n      isDragging: monitor.isDragging(),\n    }),\n    item: () => row,\n    type: 'row',\n  });\n\n  const [expanded, setExpanded] = useState(false);\n  const handleDeleteRow = useCallback(\n    () => deleteRow(row.id),\n    [deleteRow, row.id],\n  );\n\n  const handleExpandCollapse = () => {\n    setExpanded(!expanded);\n  }\n\n  return (\n    <>\n      <tr\n        //@ts-ignore https://react-dnd.github.io/react-dnd/docs/api/use-drag\n        ref={previewRef} //previewRef could go here\n        style={{ opacity: isDragging ? 0.5 : 1 }}\n        className=\"bg-white border-b dark:border-gray-700\"\n      >\n        <td\n          //@ts-ignore https://react-dnd.github.io/react-dnd/docs/api/use-drop\n          ref={dropRef}\n          onClick={handleExpandCollapse}\n          className=\"border font-medium whitespace-nowrap bg-gray-50 align-top\"\n        >\n          {/* @ts-ignore */}\n          <button className=\"p-2\" ref={dragRef}>\n            <DragIcon />\n          </button>\n        </td>\n        {row.getVisibleCells().map((cell) => (\n          <td\n            key={cell.id}\n            className=\"border font-medium whitespace-nowrap bg-gray-50 align-top\"\n          >\n            {\n              flexRender(cell.column.columnDef.cell, cell.getContext())\n            }\n          </td>\n        ))}\n        <td className=\"border font-medium whitespace-nowrap bg-gray-50 align-top\">\n          <button className=\"p-2\" onClick={handleDeleteRow} >\n            <CloseIcon />\n          </button>\n        </td>\n      </tr>\n      {expanded &&\n        <tr>\n          {/*// @ts-ignore*/}\n          <td colSpan=\"4\">\n            <pre className=\"bg-gray-50 text-gray-500 text-sm p-4 border overflow-auto\">\n              {JSON.stringify(row.original, null, 2)}\n            </pre>\n          </td>\n        </tr>\n      }\n\n    </>\n  );\n};\n\nexport function OutputTable(props: {\n  field:  ControllerRenderProps<any, 'outputs'>;\n  node: ReactFlowNode;\n  outputs?: Port[];\n}) {\n  const [columns] = React.useState(() => [...defaultColumns]);\n  const [data, setData] = React.useState(formatOutputs(props.field.value));\n\n  const reorderRow = (draggedRowIndex: number, targetRowIndex: number) => {\n    data.splice(\n      targetRowIndex,\n      0,\n      data.splice(draggedRowIndex, 1)[0] as Port,\n    );\n    setData([...data]);\n\n    props.field.onChange(JSON.stringify(data));\n  };\n\n  const table = useReactTable({\n    data,\n    columns,\n    defaultColumn,\n    getCoreRowModel: getCoreRowModel(),\n    getRowId: (row) => row.id, //good to have guaranteed unique row ids/keys for rendering\n    // Provide our updateData function to our table meta\n    meta: {\n      updateData: (rowIndex, columnId, value) => {\n        const updatedData = data.map((row, index) => {\n          if (index === rowIndex) {\n            return {\n              ...row,\n              [columnId]: value,\n            };\n          }\n          return row;\n        });\n\n        setData(updatedData);\n        props.field.onChange(JSON.stringify(updatedData));\n      },\n    },\n    debugTable: true,\n    debugHeaders: true,\n    debugColumns: true,\n  });\n\n  const deleteRow = useCallback((id: string) => {\n    const updatedData = data.filter((row) => row.id !== id);\n    setData([...updatedData]);\n    props.field.onChange(JSON.stringify(updatedData));\n  }, [data, props.field]);\n\n  const handleAddRow = useCallback( () => {\n    const id = props.node.id;\n    const name = 'output' + Math.random().toString(36).substring(2, 6);\n    const newRow = {\n      id: `${id}.${name}`,\n      name,\n      schema: {},\n    }\n\n    const updatedData = [...data, newRow];\n    setData(updatedData);\n    props.field.onChange(JSON.stringify(updatedData));\n  }, [data, props.field, props.node.id]);\n\n  return (\n    <div className=\"flex flex-col text-xs w-full\">\n      <table className=\"w-full text-sm text-left text-gray-500 dark:text-gray-400\">\n        <thead className=\"text-xs uppercase bg-gray-50 text-gray-400\">\n          {table.getHeaderGroups().map((headerGroup) => (\n            <tr key={headerGroup.id}>\n              <th className='p-2 border'/>\n              {headerGroup.headers.map((header) => (\n                <th key={header.id} colSpan={header.colSpan} className='p-2 border'>\n                  {header.isPlaceholder\n                    ? null\n                    : flexRender(\n                      header.column.columnDef.header,\n                      header.getContext(),\n                    )}\n                </th>\n              ))}\n              <th className='p-2 border'/>\n            </tr>\n          ))}\n        </thead>\n        <tbody>\n          {table.getRowModel().rows.map((row) => (\n            <DraggableRow\n              key={row.id}\n              row={row}\n              reorderRow={reorderRow}\n              deleteRow={deleteRow}\n            />\n          ))}\n        </tbody>\n      </table>\n      <div className=\"flex bg-gray-50 w-full\">\n        <button\n          onClick={handleAddRow}\n          id=\"addRowBtn\"\n          className=\"border w-full p-2 text-xs uppercase border-rounded text-gray-400\"\n        >\n        Add Row\n        </button>\n      </div>\n    </div>\n  );\n}\n\nexport const DataStoryOutputTable = (props: OutputSchemaProps) => {\n  const { control } = useFormContext()\n  return (\n    <DndProvider backend={HTML5Backend}>\n      <Controller\n        control={control}\n        name=\"outputs\"\n        render={({ field }) => (\n          <OutputTable field={field} node={props.node} />\n        )}\n      />\n\n    </DndProvider>\n  );\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/nodeSettingsModal/tabs/outputSchemas/index.tsx",
    "content": "export { OutputSchemas } from './outputSchemas';\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/nodeSettingsModal/tabs/outputSchemas/outputSchemas.tsx",
    "content": "import React from 'react';\nimport { OutputSchemaProps } from './common';\nimport CodeMirror from '@uiw/react-codemirror';\nimport { basicSetup } from '../../../../Form/StringableInput';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { parseStringList } from '@data-story/core';\n\nexport function OutputSchemas({\n  node,\n}: OutputSchemaProps) {\n  const { control, setValue } = useFormContext();\n  // Default value: outputs as line-separated names\n  const defaultValue = node.data.outputs?.map((o: any) => o.name).join('\\n') || '';\n\n  // Ensure the form field stays in sync with the node's outputs\n  React.useEffect(() => {\n    setValue('outputNames', defaultValue);\n    setValue('parsedOutputNames', node.data.outputs?.map((o: any) => o.name) || []);\n  }, [defaultValue, node.data.outputs, setValue]);\n\n  return (\n    <div\n      className=\"flex flex-col\"\n    >\n      <label className=\"mt-2 mb-1 text-xs text-gray-400\">Output Schema</label>\n      <Controller\n        control={control}\n        name=\"outputPortNames\"\n        defaultValue={defaultValue}\n        render={({ field: { value, onChange } }) => (\n          <div className=\"flex w-full text-gray-500 max-h-64 overflow-y-auto\">\n            <CodeMirror\n              className=\"text-xs h-full w-full bg-white font-mono shadow border border-gray-200\"\n              value={value}\n              basicSetup={basicSetup}\n              extensions={[]}\n              onChange={onChange}\n            />\n          </div>\n        )}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/runForm.cy.tsx",
    "content": "import React from 'react'\nimport { DataStoryCanvasProvider } from '../store/store';\nimport * as store from '../store/store';\n\nfunction mountRunModal(): void {\n  cy.mount(\n    <></>,\n    // <DataStoryCanvasProvider>\n    // {/*<RunModal showModal={true} setShowModal={(show) => show}/>*/}\n    // </DataStoryCanvasProvider>\n  )\n}\n\nfunction getEl(name: 'run-modal' | 'run-modal-server' | 'run-modal-button') {\n  return cy.dataCy(name);\n}\n\ndescribe('<RunModal />', () => {\n  // it('renders', () => {\n  //   mountRunModal();\n\n  //   getEl('run-modal').should('exist');\n  //   getEl('run-modal-server').should('contain', 'localhost');\n  // });\n\n  // it('render type is JS', () => {\n  //   cy.stub(store, 'createStore').returns(() => {\n  //     return {\n  //       nodes: [],\n  //       params: [], // This is not working?\n  //       serverConfig: { type: 'JS' },\n  //     };\n  //   });\n\n  //   mountRunModal();\n\n  //   getEl('run-modal-server').should('have.text', 'JS');\n  // });\n\n  // it('click run button', () => {\n  //   cy.stub(store, 'createStore').returns(() => {\n  //     return {\n  //       serverConfig: { type: 'JS' },\n  //       onRun: cy.spy().as('onRun'),\n  //     };\n  //   });\n\n  //   mountRunModal();\n\n  //   getEl('run-modal-button').should('have.text', 'Run');\n  //   getEl('run-modal-button').click();\n  //   cy.get('@onRun').should('have.been.calledOnce');\n  // });\n})\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/runModal/DefineMode.tsx",
    "content": "import { str } from '@data-story/core';\n\nconst DefineMode = ({ params, setParams, setDefineMode }) => {\n  const sampleParam = str({\n    name: 'sampleParam',\n    label: 'sampleParam',\n    help: '',\n    multiline: false,\n    canInterpolate: true,\n    interpolate: true,\n    evaluations: [],\n    value: 'default value',\n  })\n\n  const content = params.length > 0 ? params : [sampleParam];\n\n  const handleChange = (e) => {\n    try {\n      const newParams = JSON.parse(e.target.value);\n      setParams(newParams);\n    } catch (e) {\n      console.log('Invalid JSON when trying to set params')\n    }\n  }\n\n  return (\n    <div>\n      <div\n        className=\"flex flex-col\"\n      >\n        <label className=\"mt-2 mb-1 text-xs text-gray-400\">Input Schema</label>\n        <textarea\n          placeholder={JSON.stringify(sampleParam, null, 2)}\n          className=\"w-full bg-white h-48 text-xs text-gray-400 px-2 py-1 border rounded border-blue-200\"\n          value={JSON.stringify(content, null, 2)}\n          onChange={handleChange}\n        ></textarea>\n      </div>\n    </div>\n  );\n};\n\nexport default DefineMode;\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/runModal/FillMode.tsx",
    "content": "import React from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Params } from '../nodeSettingsModal/tabs';\nimport { ReactFlowNode } from '../../../Node/ReactFlowNode';\nimport { Param, Port } from '@data-story/core';\nimport clsx from 'clsx';\n\nconst FillMode = ({ params, setParams, handleRun }) => {\n  const nullNode = {\n    data: {\n      params,\n      inputs: [] as Port[],\n    },\n  } as ReactFlowNode;\n\n  const defaultValues = {\n    params: params.reduce((acc, param: Param) => {\n      acc[param.name] = param.input as any;\n      return acc;\n    }, {}),\n  };\n\n  const form = useForm<{ [x: string]: any }>({\n    defaultValues,\n  });\n\n  const onSubmit = (submitted) => {\n    const newParams = params.map((param) => {\n      if (!submitted.params.hasOwnProperty(param.name)) return param;\n\n      return {\n        ...param,\n        input: submitted.params[param.name],\n      };\n    });\n\n    handleRun(newParams);\n  };\n\n  return (\n    <FormProvider {...form}>\n      <div>\n        <Params node={{ ...nullNode }} />\n        <div className=\"flex w-full justify-center items-center space-x-2\">\n          <button\n            data-cy=\"run-modal-button\"\n            className={clsx(\n              'flex w-full items-center justify-center space-y-4 mt-4 px-16 py-2',\n              'bg-blue-500 hover:bg-blue-600',\n              'font-mono font-bold text-xs text-gray-50 uppercase',\n              'rounded',\n            )}\n            onClick={form.handleSubmit(onSubmit)}\n          >\n          Run\n          </button>\n        </div>\n      </div>\n    </FormProvider>\n  );\n};\n\nexport default FillMode;\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/modals/runModal/runForm.tsx",
    "content": "import { useEffect, useRef, useState } from 'react';\nimport FillMode from './FillMode';\nimport DefineMode from './DefineMode';\nimport { Param } from '@data-story/core';\nimport { StoreSchema } from '../../types';\n\nexport interface RunModalContentProps {\n  setSidebarKey: (show: string) => void;\n  onRun: StoreSchema['onRun']\n}\n\nexport const RunFormContent = (props: RunModalContentProps) => {\n  const [defineMode, setDefineMode] = useState(false);\n  const [params, setParams] = useState<Param[]>([]);\n  const { setSidebarKey, onRun }: RunModalContentProps = props;\n\n  const runButtonReference = useRef<HTMLButtonElement>(null);\n\n  useEffect(() => {\n    runButtonReference?.current?.focus();\n  }, []);\n\n  const handleRun = (newParams: Param[]) => {\n    setParams(newParams);\n    onRun();\n    setSidebarKey('');\n  };\n\n  return (\n    <div className=\"flex flex-col mt-4\" data-cy=\"run-modal\">\n      <div className=\"flex flex-row space-y-2 text-xs text-gray-500\">\n        {/* ***** TABS ***** */}\n        <div className=\"mx-4 flex space-x-8 text-xxs uppercase text-gray-400\">\n          <div\n            onClick={() => setDefineMode(false)}\n            className={`pb-2 hover:text-gray-500 cursor-pointer ${!defineMode && 'border-b-2 border-blue-400'}`}\n          >\n              Fill\n          </div>\n          <div\n            onClick={() => setDefineMode(true)}\n            className={`pb-2 hover:text-gray-500 cursor-pointer ${defineMode && 'border-b-2 border-blue-400'}`}\n          >\n              Define\n          </div>\n        </div>\n      </div>\n\n      <div className=\"p-5\">\n        {defineMode\n          ? (<DefineMode params={params} setParams={setParams} setDefineMode={setDefineMode}/>)\n          : (<FillMode params={params} setParams={setParams} handleRun={handleRun}/>)}\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/onDropDefault.ts",
    "content": "import {\n  NodeDescription,\n  jsonEvaluation,\n  jsExpressionEvaluation,\n  jsFunctionEvaluation,\n  json_,\n} from '@data-story/core';\n\nexport const fileDropper = {\n  canHandle: (event) => {\n    return event.dataTransfer.files.length > 0;\n  },\n\n  handle: (event, addNodeFromDescription) => {\n    console.log('HANDLING IN FILE DROPPER')\n    const files = event.dataTransfer.files;\n\n    const file = files[0];\n    if (file.type !== 'application/json') {\n      console.error('You dragged and dropped a FILE TYPE not supported yet.');\n      return\n    }\n\n    const reader = new FileReader();\n    reader.onload = (event) => {\n      try {\n        // Parse the JSON content\n        const jsonFileContent = JSON.parse(event?.target?.result as string);\n\n        // This is a hack, consider the following:\n        // The UI now hardcodes the Create node details\n        // We don't know if the server even provides a Create node\n        // Furthermore, the definition of the Create node might change\n        // Consider having datastory register DnD-ables?\n        const description: NodeDescription = {\n          type: 'NodeDescription',\n          computerType: 'Create',\n          label: file.name,\n          inputs: [],\n          outputs: [{\n            name: 'output',\n            schema: {},\n          }],\n          params: [\n            json_({\n              name: 'data',\n              help: 'You may use json, js function or expression',\n              value: JSON.stringify(jsonFileContent, null, 2),\n              evaluations: [\n                { ...jsonEvaluation, selected: true },\n                jsFunctionEvaluation,\n                jsExpressionEvaluation,\n              ],\n            }),\n          ],\n        }\n\n        addNodeFromDescription(description);\n      } catch (error) {\n        console.error('Error parsing JSON:', error);\n      }\n    };\n\n    reader.onerror = (error) => {\n      console.error('Error reading file:', error);\n    };\n\n    // Read the file content\n    reader.readAsText(file);\n  },\n}\n\nexport const onDropDefault = (event, addNodeFromDescription) => {\n  event.preventDefault();\n\n  const handlers = [\n    fileDropper,\n  ]\n\n  const handler = handlers.find(h => h.canHandle(event));\n  if(!handler) {\n    console.error('You dragged and dropped something not supported yet!');\n    console.log(event)\n    return;\n  }\n\n  handler.handle(event, addNodeFromDescription);\n}"
  },
  {
    "path": "packages/ui/src/components/DataStory/sidebar/activityBar.tsx",
    "content": "import React, { memo, useEffect } from 'react';\nimport { ReactFlowNode } from '../../Node/ReactFlowNode';\nimport { Activity } from '../types';\n\nexport const ActivityBarComponent = ({\n  setActiveKey,\n  onClose,\n  activeKey,\n  selectedNode,\n  activityGroups,\n}: {\n  onClose: React.Dispatch<React.SetStateAction<boolean>>;\n  setActiveKey: (activity: string) => void;\n  activeKey: string;\n  selectedNode?: ReactFlowNode;\n  activityGroups: Activity[];\n}) => {\n  const handleActivityClick = (id: string) => {\n    // 1. when click the same activity, switch sidebar status\n    if (id === activeKey) {\n      onClose((prev) => !prev);\n    } else {\n      // 2. when click different activity, show sidebar and switch activity\n      onClose(false);\n    }\n    setActiveKey(id);\n  };\n\n  useEffect(() => {\n    if (selectedNode) {\n      setActiveKey('node');\n      onClose(false);\n    }\n  }, [selectedNode]);\n\n  const renderActivityButtons = (position: 'top' | 'bottom') => {\n    return activityGroups\n      .filter((activity) => activity.position === position)\n      .map(({ id, name, icon }) => (\n        <button\n          key={id}\n          title={name} // Tooltips are provided by the title attribute.\n          className={`py-1 w-full \n          ${activeKey === id\n          ? 'border-l-2 border-blue-500 bg-blue-500 fill-white text-blue-500'\n          : 'hover:bg-blue-100 border-gray-400 fill-gray-400 text-white'}`}\n          onClick={() => handleActivityClick(id)}\n        >\n          <div className=\"p-2 flex justify-center items-center\">\n            {icon({})}\n          </div>\n        </button>\n      ));\n  };\n\n  return (\n    <aside\n      aria-label=\"ActivityBar\"\n      id=\"default-activity-bar\"\n      className=\"bg-trueGray-50 text-gray-800 flex flex-col items-center h-full\"\n    >\n      <div className=\"col-start\">{renderActivityButtons('top')}</div>\n    </aside>\n  );\n};\n\nexport const ActivityBar = React.memo(ActivityBarComponent)\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/sidebar/addNode.tsx",
    "content": "import { SidebarWrap } from './sidebarWrap';\nimport { AddNodeFormContent, AddNodeModalContentProps } from '../modals/addNodeForm';\n\nexport function AddNode(props: AddNodeModalContentProps) {\n  return (\n    <SidebarWrap title={'AddNode'} setShowSidebar={props.setSidebarKey}>\n      <AddNodeFormContent {...props}/>\n    </SidebarWrap>\n  );\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/sidebar/config.tsx",
    "content": "import { SidebarWrap } from './sidebarWrap';\nimport React, { useState, useEffect } from 'react';\nimport { useStore } from '../store/store';\n\nexport function ConfigSidebar({ setSidebarKey }: { setSidebarKey: (key: string) => void }) {\n  const params = useStore(s => s.params);\n  const setParams = useStore(s => s.setParams);\n  const [json, setJson] = useState('');\n  const [error, setError] = useState<string | null>(null);\n\n  // Show params as a raw array\n  useEffect(() => {\n    setJson(JSON.stringify(params, null, 2));\n  }, [params]);\n\n  function handleSubmit(e: React.FormEvent) {\n    e.preventDefault();\n    try {\n      const parsed = JSON.parse(json);\n      if (!Array.isArray(parsed)) {\n        setError('Params must be a JSON array');\n        return;\n      }\n      setError(null);\n      setParams(parsed);\n      setSidebarKey('');\n    } catch (err: any) {\n      setError('Invalid JSON: ' + err.message);\n    }\n  }\n\n  return (\n    <SidebarWrap title={'Config'} setShowSidebar={setSidebarKey}>\n      <div className=\"p-4\">\n        <form onSubmit={handleSubmit}>\n          <label className=\"block mb-2 font-medium\">Global params</label>\n          <textarea\n            className=\"w-full border rounded p-2 mb-2 text-sm font-mono\"\n            rows={6}\n            value={json}\n            onChange={e => setJson(e.target.value)}\n            placeholder='{\"key\": \"value\"}'\n          />\n          {error && (\n            <div className=\"text-red-500 text-xs mb-2\">{error}</div>\n          )}\n          <button\n            type=\"submit\"\n            className=\"bg-blue-500 text-white px-4 py-1 rounded hover:bg-blue-600\"\n          >\n            Add Param\n          </button>\n        </form>\n      </div>\n    </SidebarWrap>\n  );\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/sidebar/run.tsx",
    "content": "import { RunFormContent, RunModalContentProps } from '../modals/runModal/runForm';\nimport { SidebarWrap } from './sidebarWrap';\n\nexport function Run(props: RunModalContentProps) {\n  return (\n    <SidebarWrap title={'Run'} setShowSidebar={props.setSidebarKey}>\n      <RunFormContent onRun={props.onRun} setSidebarKey={props.setSidebarKey}/>\n    </SidebarWrap>\n  );\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/sidebar/sidebar.tsx",
    "content": "import { NodeSettingsForm } from '../Form/nodeSettingsForm';\nimport { ConfigSidebar } from './config';\nimport { NodeSettingsSidebarProps, StoreSchema } from '../types';\nimport { Placeholder } from '../common/placeholder';\nimport { NodeDescription } from '@data-story/core';\nimport { Run } from './run';\nimport { AddNode } from './addNode';\nimport React from 'react';\nimport { LoadingMask } from '../common/loadingMask';\nimport { useStore } from '../store/store';\n\nconst SidebarComponent = (props: NodeSettingsSidebarProps) => {\n  const {\n    node, onClose, sidebarKey, setSidebarKey, onSave,\n    nodeDescriptions, nodeDescriptionsLoading,\n  } = props;\n  const selector = (state: StoreSchema) => ({\n    onRun: state.onRun,\n    addNodeFromDescription: state.addNodeFromDescription,\n  });\n  const { onRun, addNodeFromDescription } = useStore(selector);\n\n  const renderContent = () => {\n    switch(sidebarKey) {\n      case 'run':\n        return <Run\n          onRun={() => onRun?.()}\n          setSidebarKey={setSidebarKey}/>;\n      case 'addNode': {\n        return nodeDescriptionsLoading\n          ? <LoadingMask />\n          : <AddNode\n            availableNodes={nodeDescriptions || []}\n            addNodeFromDescription={(nodeDescription: NodeDescription) => {\n              addNodeFromDescription?.(nodeDescription);\n            }}\n            setSidebarKey={setSidebarKey}/>;\n      }\n      case 'node':\n        return node?.id && node?.data\n          ? <NodeSettingsForm node={node} onClose={onClose} onSave={onSave}/>\n          : <Placeholder content={'Click on a node to see its configuration'}/>;\n      case 'config':\n        return <ConfigSidebar setSidebarKey={setSidebarKey} />\n      default:\n        return null;\n    }\n  };\n\n  return (\n    <div className='h-full bg-trueGray-50 text-gray-500 overscroll-y-auto'>\n      {renderContent()}\n    </div>\n  );\n}\n\nexport const Sidebar = React.memo(SidebarComponent)\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/sidebar/sidebarWrap.tsx",
    "content": "import { ReactNode, useState } from 'react';\nimport { CollapseIcon } from '../icons/collapseIcon';\n\nexport function SidebarWrap({\n  setShowSidebar,\n  title,\n  children,\n  primaryAction,\n  onPrimaryAction,\n}: {\n  setShowSidebar: (sidebar: string) => void;\n  title?: string;\n  children?: ReactNode;\n  primaryAction?: string;\n  onPrimaryAction?: () => void;\n}) {\n  const [isCollapseIconActive, setIsCollapseIconActive] = useState(false);\n\n  const handleMouseEnter = () => {\n    setIsCollapseIconActive(true);\n  };\n\n  const handleMouseLeave = () => {\n    setIsCollapseIconActive(false);\n  };\n\n  const handleClick = () => {\n    setIsCollapseIconActive(!isCollapseIconActive);\n    setShowSidebar(''); // close sidebar\n  };\n\n  return <>\n    <div className=\"relative flex flex-col w-full h-full\">\n      {title && (\n        <div className=\"px-4 py-2 border-b border-solid border-slate-200 flex flex-row justify-between items-end\">\n          <button\n            className={`${isCollapseIconActive ? 'fill-blue-500' : 'fill-gray-500'} \n            p-1 text-black text-3xl leading-none font-semibold outline-none focus:outline-none`}\n            onClick={handleClick}\n            onMouseEnter={handleMouseEnter}\n            onMouseLeave={handleMouseLeave}\n          >\n            <span className=\"rotate-180 text-gray-500 h-6 w-6 block outline-none focus:outline-none\" title={'collapse sidebar'}>\n              <CollapseIcon/>\n            </span>\n          </button>\n          <div className=\"text-lg font-bold text-gray-400\">\n            {title}\n          </div>\n        </div>\n      )}\n      <div className=\"flex-auto overflow-y-auto\">\n        {children}\n      </div>\n      {primaryAction && (\n        <div className=\"px-6 py-4 border-t border-solid border-slate-200\">\n          <button\n            className=\"text-gray-500 background-transparent font-bold uppercase text-sm px-4 py-2 outline-none focus:outline-none mr-2 ease-linear transition-all duration-150\"\n            type=\"button\" onClick={() => setShowSidebar('')}>\n            Close\n          </button>\n          {primaryAction && (\n            <button\n              className=\"bg-blue-500 text-white active:bg-blue-600 font-bold uppercase text-sm px-4 py-2 rounded shadow hover:shadow-lg outline-none focus:outline-none ease-linear transition-all duration-150\"\n              type=\"button\" onClick={onPrimaryAction}>\n              {primaryAction}\n            </button>\n          )}\n        </div>\n      )}\n    </div>\n  </>;\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/store/store.tsx",
    "content": "import { StoreApi, UseBoundStore } from 'zustand';\nimport { createWithEqualityFn } from 'zustand/traditional';\nimport { applyEdgeChanges, applyNodeChanges, Connection, Edge, EdgeChange, NodeChange } from '@xyflow/react';\nimport {\n  createDataStoryId,\n  Diagram,\n  LinkGuesser,\n  Node,\n  NodeDescription, NodeStatus,\n  Param,\n} from '@data-story/core';\nimport { ReactFlowNode } from '../../Node/ReactFlowNode';\nimport React, { Ref, useImperativeHandle, useState } from 'react';\nimport { ReactFlowFactory } from '../../../factories/ReactFlowFactory';\nimport { DiagramFactory } from '../../../factories/DiagramFactory';\nimport { NodeFactory } from '../../../factories/NodeFactory';\nimport { StoreInitOptions, StoreSchema } from '../types';\nimport { shallow } from 'zustand/shallow';\n\nexport const createStore = () => createWithEqualityFn<StoreSchema>((set, get) => ({\n  rfInstance: undefined,\n  nodes: [],\n  edges: [],\n  params: [],\n  openNodeSidebarId: null,\n  focusOnFlow: () => void 0,\n  isRunning: false,\n  setIsRunning: (running: boolean) => set({ isRunning: running }),\n\n  executionId: '',\n  setExecutionId: (id: string) => set({ executionId: id }),\n\n  // METHODS\n  toDiagram: () => {\n    const reactFlowObject = get().rfInstance!.toObject()\n    const viewport = reactFlowObject.viewport\n\n    const { nodes, edges, params } = get()\n\n    return DiagramFactory.fromReactFlowObject({\n      viewport,\n      nodes,\n      edges,\n      params,\n    })\n  },\n  onNodesChange: (changes: NodeChange[]) => {\n    set({\n      nodes: applyNodeChanges(changes, get().nodes) as ReactFlowNode[],\n    });\n  },\n  onEdgesChange: (changes: EdgeChange[]) => {\n    set({\n      edges: applyEdgeChanges(changes, get().edges),\n    });\n  },\n  connect: (connection: Connection) => {\n    const { source, target, targetHandle, sourceHandle } = connection;\n    if (!sourceHandle || !targetHandle || target === source) return\n\n    // Operate via the diagram!\n    const diagram = get().toDiagram()\n\n    // Add the link to the diagram\n    diagram.connect({\n      id: createDataStoryId(),\n      sourcePortId: sourceHandle,\n      targetPortId: targetHandle,\n    })\n\n    // Update the diagram\n    get().updateDiagram(diagram)\n  },\n  disconnect: (linkId: string) => {\n    const diagram = get().toDiagram()\n\n    diagram.disconnect(linkId)\n\n    get().updateDiagram(diagram)\n  },\n  addNode: (node: ReactFlowNode) => {\n    set({\n      nodes: [\n        ...get().nodes.map(node => {\n          // When adding a node, deselect all other nodes\n          node.selected = false\n          return node\n        }),\n        node,\n      ],\n    })\n\n    setTimeout(() => {\n      get().rfInstance?.fitView();\n    }, 1);\n  },\n  addNodeFromDescription: (nodeDescription: NodeDescription) => {\n    const diagram = get().toDiagram()\n\n    const node: Node = NodeFactory.fromNodeDescription(\n      nodeDescription,\n      diagram,\n    )\n\n    const link = new LinkGuesser(diagram).guess(node)\n    diagram.add(node);\n    if (link) diagram.connect(link)\n\n    get().updateDiagram(diagram)\n    get().selectNode(node.id)\n\n    setTimeout(() => {\n      get().rfInstance?.fitView({\n        maxZoom: 3,\n      });\n      get().focusOnFlow();\n    }, 1);\n  },\n  selectNode(nodeId: string) {\n    set({\n      nodes: get().nodes.map(node => {\n        node.selected = node.id === nodeId\n        return node\n      }),\n    })\n  },\n  updateNode: (node: ReactFlowNode) => {\n    set({\n      nodes: get().nodes.map(existingNode => {\n        if (existingNode.id === node.id) {\n          return node\n        }\n\n        return existingNode\n      }),\n    })\n  },\n  updateNodeInternalsCallback: null,\n  setUpdateNodeInternalsCallback: (callback: (nodeId: string) => void) => {\n    set({ updateNodeInternalsCallback: callback })\n  },\n  setNodes: (nodes: ReactFlowNode[]) => {\n    set({\n      nodes: [...nodes],\n    })\n  },\n  setEdges(edges: Edge[]) {\n    set({ edges })\n  },\n\n  onInit: (options: StoreInitOptions) => {\n    set({ rfInstance: options.rfInstance })\n    set({ focusOnFlow: options.focusOnFlow })\n    set({ client: options.client })\n\n    if (options.initDiagram) get().updateDiagram(options.initDiagram)\n\n    if (options.callback) {\n      options.callback({ run: get().onRun })\n    }\n  },\n  updateDiagram: (diagram: Diagram) => {\n    const reactFlowObject = ReactFlowFactory.fromDiagram(diagram)\n    // Node<any, string|undefined>[]\n    get().setNodes(reactFlowObject.nodes as ReactFlowNode[]);\n    get().setEdges(reactFlowObject.edges);\n    set({\n      params: diagram.params,\n    });\n  },\n  onRun: (executionId?: string) => {\n    get()?.client?.run({\n      diagram: get().toDiagram(),\n      executionId: executionId ?? createDataStoryId(),\n    });\n  },\n  abortExecution: async (executionId: string) => {\n    await get()?.client?.abortExecution?.({\n      executionId,\n    });\n  },\n  setParams: (params: Param[]) => {\n    set({ params })\n  },\n\n  updateEdgeCounts: (edgeCounts) => {\n    let updatedEdges: Edge[] = [];\n    updatedEdges = get().edges.map(edge => ({\n      ...edge,\n      ...(edgeCounts[edge.id] !== undefined && {\n        label: edgeCounts[edge.id],\n      }),\n    }));\n\n    get().setEdges(updatedEdges);\n  },\n\n  updateEdgeStatus: (edgeStatus = []) => {\n    const edgesObject = edgeStatus.reduce((acc, { nodeId, status }) => {\n      get().toDiagram().getOutputLinkIdsFromNodeId(nodeId).forEach(linkId => {\n        acc[linkId] = status;\n      });\n      return acc;\n    }, {} as Record<string, NodeStatus>);\n\n    const updatedEdges: Edge[] = get().edges.map(edge => {\n      const currentEdgeStatus = edgesObject[edge.id];\n      const isBusy = currentEdgeStatus === 'BUSY';\n      return {\n        ...edge,\n        ...(currentEdgeStatus !== undefined && {\n          labelBgStyle: { opacity: 0.6 },\n          style: isBusy ? { strokeDasharray: '5,5', animation: 'dash 1s linear infinite' } : {},\n        }),\n      };\n    });\n\n    get().setEdges(updatedEdges);\n  },\n\n  setOpenNodeSidebarId: (id: string | null) => {\n    set({ openNodeSidebarId: id })\n  },\n}));\n\nexport const DataStoryContext = React.createContext<ReturnType<typeof createStore>>({} as ReturnType<typeof createStore>);\n\n// @ts-ignore: UseBoundStore is an overloaded function, so the type of params here cannot be accurately inferred.\nexport const useStore: UseBoundStore<StoreApi<StoreSchema>> = (...params) => {\n  const store = React.useContext(DataStoryContext);\n  if (!store) throw new Error('useStore must be used within a DataStoryCanvasProvider');\n  // @ts-ignore\n  return store(...params);\n};\n\n// https://react.dev/reference/react/useImperativeHandle\nexport const useGetStore = (ref: Ref<unknown>) => {\n  const selector = (state: StoreSchema) => ({\n    addNodeFromDescription: state.addNodeFromDescription,\n    toDiagram: state.toDiagram,\n    onRun: state.onRun,\n    abortExecution: state.abortExecution,\n  });\n  const { addNodeFromDescription, toDiagram, onRun, abortExecution } = useStore(selector, shallow);\n\n  useImperativeHandle(ref, () => {\n    return ({\n      addNodeFromDescription,\n      toDiagram,\n      onRun,\n      abortExecution,\n    });\n  }, [addNodeFromDescription, toDiagram, onRun, abortExecution]);\n}\n\nexport const DataStoryCanvasProvider = ({ children }: { children: React.ReactNode }) => {\n  const [useLocalStore] = useState(() => createStore());\n\n  return <DataStoryContext.Provider value={useLocalStore}>\n    {children}\n  </DataStoryContext.Provider>;\n};\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/types.ts",
    "content": "import {\n  Diagram,\n  type InputObserver,\n  NodeDescription,\n  Param,\n  type ReportCallback,\n  type ExecutionObserver, NodeStatus,\n  NodeId,\n} from '@data-story/core';\nimport { ReactFlowNode } from '../Node/ReactFlowNode';\nimport { Edge, OnConnect, OnEdgesChange, OnNodesChange, ReactFlowInstance } from '@xyflow/react';\nimport React from 'react';\nimport { WorkspaceApiClientImplement } from './clients/WorkspaceApiClientImplement';\n\nexport type DataStoryCallback = (options: { run: () => void }) => void;\n\nexport type ServerClientObservationConfig = {\n  inputObservers: InputObserver[],\n  onDataChange: ReportCallback,\n}\n\nexport type ObserverMap = Map<string, ExecutionObserver>\n\nexport interface ClientRunParams {\n  diagram: Diagram,\n  executionId: string,\n}\n\nexport type AcitvityBarType = 'node' | 'diagram' | 'settings' | 'explorer';\nexport type ControlsType = 'run' | 'addNode' | 'save' | 'export' | 'import';\nexport type DataStoryProps = {\n  diagramId?: string,\n  onNodeDoubleClick?: (node: ReactFlowNode) => void,\n  onEdgeDoubleClick?: (edgeId: string) => void,\n  children?: React.ReactNode;\n  client: WorkspaceApiClientImplement,\n  initDiagram?: Diagram | null;\n  controls?: React.ReactNode[];\n  onInitialize?: DataStoryCallback;\n  hideSidebar?: boolean;\n  onDrop?: (event: any, addNodeFromDescription: any) => void;\n  /**\n   * hideActivityBar: true (hide all activity bars)\n   * hideActivityBar: ['node', 'diagram'] (hide node and diagram activity bars)\n   */\n  hideActivityBar?: boolean | AcitvityBarType[];\n  /**\n   * initSidebarKey: 'explorer' (open the explorer sidebar by default)\n   */\n  initSidebarKey?: string;\n  onChange?: (diagram: Diagram) => Promise<void>\n}\n\nexport type DataStoryCanvasProps = {\n  setSidebarKey?: React.Dispatch<React.SetStateAction<string>>;\n  sidebarKey?: string;\n  onSave?: (diagram: Diagram) => Promise<void>;\n  onChange?: (diagram: Diagram) => Promise<void>;\n  nodeDescriptions?: NodeDescription[];\n} & DataStoryProps;\n\nexport type StoreInitOptions = {\n  rfInstance: ReactFlowInstance<ReactFlowNode, Edge<Record<string, unknown>, string | undefined>>,\n  initDiagram?: Diagram | null,\n  callback?: DataStoryCallback,\n  focusOnFlow?: StoreSchema['focusOnFlow'];\n  client?: WorkspaceApiClientImplement;\n}\n\nexport type FormCommonProps = {\n  node: ReactFlowNode;\n  name?: string;\n}\n\nexport type FormComponentProps = FormCommonProps & {\n  param: Param;\n}\n\nexport interface FormComponent<TParams extends Param> {\n  getComponent: (params: FormCommonProps & { param: TParams }) => React.ReactNode;\n  getType: () => string;\n}\n\nexport type NodeSettingsFormProps = {\n  node: ReactFlowNode;\n  onClose: React.Dispatch<React.SetStateAction<boolean>>;\n  onSave?: (diagram: Diagram) => Promise<void>;\n}\n\nexport type StoreSchema = {\n  client?: WorkspaceApiClientImplement;\n\n  /** The main reactflow instance */\n  rfInstance: StoreInitOptions['rfInstance'] | undefined;\n  toDiagram: () => Diagram;\n  focusOnFlow: () => void;\n\n  /** The Nodes */\n  nodes: ReactFlowNode[];\n  updateNode: (node: ReactFlowNode) => void;\n  updateNodeInternalsCallback: ((nodeId: string) => void) | null;\n  setUpdateNodeInternalsCallback: (callback: (nodeId: string) => void) => void;\n  addNode: (node: ReactFlowNode) => void;\n  addNodeFromDescription: (nodeDescription: NodeDescription) => void;\n  onNodesChange: OnNodesChange;\n  setNodes: (nodes: ReactFlowNode[]) => void;\n  selectNode: (nodeId: NodeId) => void;\n\n  /** The Edges */\n  edges: Edge[];\n  onEdgesChange: OnEdgesChange;\n  updateEdgeCounts: (edgeCounts: Record<string, number>) => void;\n  updateEdgeStatus: (edgeStatus: { nodeId: NodeId, status: NodeStatus }[]) => void\n  setEdges: (edges: Edge[]) => void;\n  connect: OnConnect;\n  disconnect: (linkId: string) => void;\n\n  /** Global Params */\n  params: Param[],\n  setParams: (params: Param[]) => void;\n\n  /** Run State */\n  isRunning: boolean;\n  setIsRunning: (running: boolean) => void;\n  executionId: string;\n  setExecutionId: (id: string) => void;\n\n  /** When DataStory component initializes */\n  onInit: (options: StoreInitOptions) => void;\n\n  updateDiagram: (diagram: Diagram) => void;\n\n  /** Run the diagram */\n  onRun: (executionId?: string) => void;\n  abortExecution: (executionId: string) => Promise<void>;\n\n  /** Sidebar */\n  openNodeSidebarId: string | null;\n  setOpenNodeSidebarId: (id: string | null) => void;\n};\nexport type NodeSettingsSidebarProps = Omit<NodeSettingsFormProps, 'node'> & {\n  nodeDescriptions?: NodeDescription[];\n  nodeDescriptionsLoading?: boolean;\n  sidebarKey: string;\n  node?: ReactFlowNode;\n  setSidebarKey: React.Dispatch<React.SetStateAction<string>>;\n};\n\nexport type Activity = {\n  id: AcitvityBarType;\n  name: string;\n  icon: React.FC<{}>;\n  position: 'top' | 'bottom';\n};\n\nexport type DescribeResponse = {\n  id: string,\n  awaited: boolean,\n  type: 'getNodeDescriptions',\n  availableNodes: NodeDescription[],\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/useCopyPaste.ts",
    "content": "import { useCallback, useEffect, useRef, useState } from 'react';\nimport { getConnectedEdges, type KeyCode, useKeyPress, useReactFlow, useStore, XYPosition } from '@xyflow/react';\nimport { SEdge, SNode } from '../../SerializedReactFlow';\nimport { readFromClipboard, writeToClipboard } from './common/clipboard';\n\nexport function useCopyPaste() {\n  const {\n    getNodes,\n    setNodes,\n    getEdges,\n    setEdges,\n    screenToFlowPosition,\n  } = useReactFlow<SNode, SEdge>();\n  const mousePosRef = useRef<XYPosition>({ x: 0, y: 0 });\n  const rfDomNode = useStore((state) => state.domNode);\n\n  // Event handling setup\n  useEffect(() => {\n    if (!rfDomNode) return;\n\n    // Listen for mouse move events on the DOM node and disable the default actions for cut, copy, and paste\n    const handleMouseMove = (event: MouseEvent) => {\n      mousePosRef.current = { x: event.clientX, y: event.clientY };\n    };\n\n    const preventDefault = (e: Event) => e.preventDefault();\n    const events: (keyof HTMLElementEventMap)[] = ['cut', 'copy', 'paste'];\n\n    events.forEach(event => rfDomNode.addEventListener(event, preventDefault));\n    rfDomNode.addEventListener('mousemove', handleMouseMove);\n\n    // Listen for keydown events on the DOM node and disable the default action for select all\n    const handleKeyDown = (e: KeyboardEvent) => {\n      if ((e.ctrlKey || e.metaKey) && e.key === 'a') {\n        e.preventDefault();\n      }\n    };\n\n    rfDomNode.addEventListener('keydown', handleKeyDown);\n    return () => {\n      events.forEach(event => rfDomNode.removeEventListener(event, preventDefault));\n      rfDomNode.removeEventListener('mousemove', handleMouseMove);\n      rfDomNode.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [rfDomNode]);\n\n  const getSelectedNodesAndEdges = useCallback(() => {\n    const selectedNodes = getNodes().filter(node => node.selected);\n    // the edge is internal if both source and target nodes are selected\n    const isEdgeInternal = (edge: SEdge) =>\n      selectedNodes.some(n => n.id === edge.source) &&\n      selectedNodes.some(n => n.id === edge.target);\n\n    return {\n      selectedNodes: selectedNodes,\n      // Filter out the internal edges connected to the selected nodes that have nodes on both ends\n      selectedEdges: getConnectedEdges(selectedNodes, getEdges()).filter(isEdgeInternal),\n    };\n  }, [getNodes, getEdges]);\n\n  const copy = useCallback(() => {\n    const { selectedNodes, selectedEdges } = getSelectedNodesAndEdges();\n    writeToClipboard({ selectedNodes, selectedEdges });\n  }, [getSelectedNodesAndEdges]);\n\n  const cut = useCallback(() => {\n    const { selectedNodes, selectedEdges } = getSelectedNodesAndEdges();\n    writeToClipboard({ selectedNodes, selectedEdges });\n\n    setNodes(nodes => nodes.filter(node => !node.selected));\n    setEdges(edges => {\n      return edges.filter(edge => {\n        return !selectedEdges.some(selectedEdge => edge.id === selectedEdge.id);\n      });\n    });\n  }, [getSelectedNodesAndEdges, setNodes, setEdges]);\n\n  const paste = useCallback(async (position = screenToFlowPosition(mousePosRef.current)) => {\n    const now = Date.now();\n    const generateCopiedId = (originalId: string) => `${originalId}-${now}`;\n\n    const { nodes: copiedNodes, edges: copiedEdges } = await readFromClipboard();\n    if (!copiedNodes?.length) return;\n\n    const calculateNewPosition = (originalPos: XYPosition) => ({\n      x: position.x + (originalPos.x - Math.min(...copiedNodes.map(n => n.position.x))),\n      y: position.y + (originalPos.y - Math.min(...copiedNodes.map(n => n.position.y))),\n    });\n\n    const newNodes = copiedNodes.map(node => ({\n      ...structuredClone(node),\n      id: generateCopiedId(node.id),\n      position: calculateNewPosition(node.position),\n      selected: true,\n      data: {\n        ...structuredClone(node.data),\n        inputs: (node.data.inputs as Record<string, unknown>[] || [])?.map(input => ({\n          ...input,\n          id: `${generateCopiedId(node.id)}.${(input.id as string).split('.').pop()}`,\n        })),\n        outputs: (node.data.outputs as Record<string, unknown>[] || [])?.map(output => ({\n          ...output,\n          id: `${generateCopiedId(node.id)}.${(output.id as string).split('.').pop()}`,\n        })),\n      },\n    })) as SNode[];\n\n    const newEdges = copiedEdges.map(edge => ({\n      ...structuredClone(edge),\n      id: generateCopiedId(edge.id),\n      source: generateCopiedId(edge.source),\n      sourceHandle: `${generateCopiedId(edge.source)}.${edge.sourceHandle!.split('.').pop()}`,\n      target: generateCopiedId(edge.target),\n      targetHandle: `${generateCopiedId(edge.target)}.${edge.targetHandle!.split('.').pop()}`,\n      selected: true,\n    })) as SEdge[];\n\n    setNodes(nodes => [...nodes.map(node => ({ ...node, selected: false })), ...newNodes]);\n    setEdges(edges => [...edges.map(edge => ({ ...edge, selected: false })), ...newEdges]);\n  }, [screenToFlowPosition, setNodes, setEdges]);\n\n  const selectAll = useCallback(() => {\n    setNodes(nodes => nodes.map(node => ({ ...node, selected: true })));\n    setEdges(edges => edges.map(edge => ({ ...edge, selected: true })));\n  }, [setNodes, setEdges]);\n\n  useKeyboardShortcut(['Meta+x', 'Control+x'], cut, rfDomNode);\n  useKeyboardShortcut(['Meta+c', 'Control+c'], copy, rfDomNode);\n  useKeyboardShortcut(['Meta+v', 'Control+v'], paste, rfDomNode);\n  useKeyboardShortcut(['Meta+a', 'Control+a'], selectAll, rfDomNode);\n\n  return { cut, copy, paste, selectAll };\n}\n\nfunction useKeyboardShortcut(keyCode: KeyCode, handler: () => void, rfDomNode: HTMLElement | null) {\n  const [keyPressed, setKeyPressed] = useState(false);\n  const isPressed = useKeyPress(keyCode, { target: rfDomNode });\n\n  useEffect(() => {\n    if (isPressed && !keyPressed) {\n      handler();\n      setKeyPressed(true);\n    } else if (!isPressed && keyPressed) {\n      setKeyPressed(false);\n    }\n  }, [isPressed, keyPressed, handler, rfDomNode]);\n}\n"
  },
  {
    "path": "packages/ui/src/components/DataStory/useDragNode.tsx",
    "content": "import { type MouseEvent as ReactMouseEvent, useCallback, useState } from 'react';\nimport { Edge } from '@xyflow/react';\nimport { StoreSchema } from './types';\nimport { ReactFlowNode } from '../Node/ReactFlowNode';\n\ninterface IntersectionResult {\n  isIntersecting: boolean;\n  edge?: Edge;\n  edgeElement?: SVGPathElement;\n}\n\nfunction isIntersecting(\n  edgeRect:  DOMRect,\n  nodeRect:  DOMRect,\n  threshold: number = 0.33,\n): boolean {\n  // check if there is any overlap.\n  if (\n    edgeRect.left > nodeRect.right ||\n    edgeRect.right < nodeRect.left ||\n    edgeRect.top > nodeRect.bottom ||\n    edgeRect.bottom < nodeRect.top\n  ) {\n    return false;\n  }\n\n  // calculate the overlap area\n  const overlapLeft = Math.max(edgeRect.left, nodeRect.left);\n  const overlapRight = Math.min(edgeRect.right, nodeRect.right);\n  const overlapTop = Math.max(edgeRect.top, nodeRect.top);\n  const overlapBottom = Math.min(edgeRect.bottom, nodeRect.bottom);\n\n  const overlapArea =\n    (overlapRight - overlapLeft) * (overlapBottom - overlapTop);\n  const nodeArea = nodeRect.width * nodeRect.height;\n\n  // calculate the overlap ratio\n  const overlapRatio = overlapArea / nodeArea;\n\n  return overlapRatio > threshold;\n}\n\nexport function useDragNode({\n  connect,\n  disconnect,\n  edges,\n}: {\n  connect: StoreSchema['connect'];\n  disconnect: StoreSchema['disconnect'];\n  edges: StoreSchema['edges'];\n}) {\n  const [draggedNode, setDraggedNode] = useState<{ node: any, droppedOnEdge: any } | null>(null);\n\n  const  checkNodeEdgeIntersection = useCallback((\n    dragNodeRect: DOMRect,\n  ): IntersectionResult => {\n    for (const edge of edges) {\n      const edgeElement = document.querySelector(\n        `[data-id=\"${edge.id}\"]`,\n      ) as SVGPathElement;\n\n      if (!edgeElement) continue;\n\n      const edgeRect = edgeElement.getBoundingClientRect();\n      const isEdgeCrossingNode = isIntersecting(edgeRect, dragNodeRect);\n\n      if (isEdgeCrossingNode) {\n        return {\n          isIntersecting: true,\n          edge,\n          edgeElement: edgeElement,\n        };\n      }\n    }\n\n    return { isIntersecting: false };\n  }, [edges.length]);\n\n  const onNodeDrag = useCallback((event: ReactMouseEvent, node: ReactFlowNode) => {\n    // @ts-ignore\n    const nodeRect = event.target!.getBoundingClientRect() as unknown as DOMRect;\n\n    const { edgeElement, edge, isIntersecting } = checkNodeEdgeIntersection(nodeRect);\n\n    // The node must have inputs and outputs that can be connected\n    const isConnected = node.data.inputs.length > 0 && node.data.outputs.length > 0;\n\n    if (isConnected && isIntersecting) {\n      edgeElement!.getAttribute('data-testid')?.replace('rf__edge-', '');\n      setDraggedNode({ node, droppedOnEdge: edge });\n      return;\n    }\n\n    setDraggedNode(null);\n  }, [checkNodeEdgeIntersection]);\n\n  const onNodeDragStop = useCallback((event: any, node: ReactFlowNode, nodes: ReactFlowNode[]) => {\n    if (!draggedNode?.droppedOnEdge) return;\n    const { node: node1, droppedOnEdge } = draggedNode;\n    const nodeOutputId = node.data.outputs[0].id;\n    const nodeInputId = node.data.inputs[0].id;\n\n    connect({\n      source: droppedOnEdge.source,\n      target: node.id,\n      sourceHandle: droppedOnEdge.sourceHandle,\n      targetHandle: nodeInputId,\n    });\n    connect({\n      source: node.id,\n      target: droppedOnEdge.target,\n      sourceHandle: nodeOutputId,\n      targetHandle: droppedOnEdge.targetHandle,\n    });\n\n    disconnect(droppedOnEdge.id)\n    setDraggedNode(null);\n  }, [draggedNode, connect, disconnect]);\n\n  return {\n    onNodeDrag,\n    onNodeDragStop,\n    draggedNode,\n  }\n}"
  },
  {
    "path": "packages/ui/src/components/DataStory/useHotkeys.tsx",
    "content": "import { useEffect } from 'react';\nimport { useRunControl } from './controls/useRunControl';\nimport { ReactFlowNode } from '../Node/ReactFlowNode';\nimport { Direction } from './getNodesWithNewSelection';\nimport { DataStoryCanvasProps } from './types';\nimport { Diagram, NodeDescription } from '@data-story/core';\n\nexport class HotkeyManager {\n  private hotkeys: {};\n  private element: React.RefObject<HTMLElement>;\n\n  constructor(element: React.RefObject<HTMLElement>) {\n    this.hotkeys = {};\n    this.element = element;\n  }\n\n  addEvent() {\n    this.element.current?.addEventListener?.('keydown', this.handleKeyDown.bind(this) as EventListener);\n  }\n\n  removeEvent() {\n    this.element.current?.removeEventListener?.('keydown', this.handleKeyDown.bind(this) as EventListener);\n  }\n\n  register(key: string, callback: (event: KeyboardEvent) => any) {\n    this.hotkeys[key] = callback;\n  }\n\n  unregister(key: string) {\n    delete this.hotkeys[key];\n  }\n\n  handleKeyDown(event: KeyboardEvent) {\n    const isCtrlOrCmd = event.ctrlKey || event.metaKey;\n    const keyCombination = `${event.shiftKey ? 'Shift+' : ''}${isCtrlOrCmd ? (event.ctrlKey ? 'Ctrl+' : 'Cmd+') : ''}${event.code}`;\n    if (this.hotkeys[keyCombination]) {\n      event.stopPropagation();\n      event.preventDefault();\n      this.hotkeys[keyCombination](event);\n    }\n  }\n}\n\nexport function useHotkeys({\n  nodes,\n  setShowRun,\n  setSelectedNode,\n  traverseNodes,\n  setShowAddNode,\n  hotkeyManager,\n  onSave,\n  toDiagram,\n  nodeDescriptions,\n  addNodeFromDescription,\n}: {\n  nodes: ReactFlowNode[],\n  setShowRun: (show: boolean) => void,\n  traverseNodes: (direction: Direction) => void,\n  setShowAddNode: (show: boolean) => void,\n  hotkeyManager: HotkeyManager,\n  setSelectedNode?: (node: ReactFlowNode) => void,\n  onSave?: DataStoryCanvasProps['onSave'],\n  toDiagram: () => Diagram,\n  nodeDescriptions?: NodeDescription[],\n  addNodeFromDescription?: (nodeDescription: NodeDescription) => void,\n}) {\n  useEffect(() => {\n    hotkeyManager.addEvent();\n    return () => {\n      hotkeyManager.removeEvent();\n    }\n  }, [hotkeyManager]);\n\n  useEffect(() => {\n    const addTableNode = () => {\n      if (!nodeDescriptions || !addNodeFromDescription) return;\n      const tableNode = nodeDescriptions.find(nd => nd.computerType === 'Table');\n      if (tableNode) {\n        addNodeFromDescription(tableNode);\n      }\n    };\n\n    hotkeyManager.register('Shift+Minus', () => {\n      setShowAddNode(true);\n    });\n    hotkeyManager.register('Shift+KeyT', addTableNode);\n    return () => {\n      hotkeyManager.unregister('Shift+Minus');\n      hotkeyManager.unregister('Shift+KeyT');\n    }\n  }, [hotkeyManager, setShowAddNode, nodeDescriptions, addNodeFromDescription]);\n\n  const { handleRun } = useRunControl();\n  useEffect(() => {\n    hotkeyManager.register('Shift+KeyR', handleRun);\n    return () => hotkeyManager.unregister('Shift+KeyR');\n  }, [hotkeyManager, handleRun]);\n\n  useEffect(() => {\n    hotkeyManager.register('Ctrl+KeyS', () => onSave?.(toDiagram?.()));\n    hotkeyManager.register('Cmd+KeyS', () => onSave?.(toDiagram?.()));\n    return () => {\n      hotkeyManager.unregister('Ctrl+KeyS');\n      hotkeyManager.unregister('Cmd+KeyS');\n    }\n  }, [hotkeyManager, onSave, toDiagram]);\n\n  useEffect(() => {\n    const actionMap = {\n      // The operation below is not valid.\n      'ArrowUp': () => traverseNodes('up'),\n      'ArrowDown': () => traverseNodes('down'),\n      'ArrowLeft': () => traverseNodes('left'),\n      'ArrowRight': () => traverseNodes('right'),\n    };\n\n    for(let actionMapKey in actionMap) {\n      hotkeyManager.register(actionMapKey, actionMap[actionMapKey]);\n    }\n    return () => {\n      for(let actionMapKey in actionMap) {\n        hotkeyManager.unregister(actionMapKey);\n      }\n    }\n  }, [hotkeyManager, traverseNodes]);\n\n  useEffect(() => {\n    function handleEnterPress() {\n      // Open node settings modal\n      const openable = (() => {\n        const selectedNodes = nodes.filter((node) => node.selected);\n        const one = selectedNodes.length === 1;\n        if (!one) return null;\n\n        return selectedNodes.at(0);\n      })()\n      if (openable) {\n        setSelectedNode?.(openable)\n      }\n    }\n\n    hotkeyManager.register('Enter', handleEnterPress);\n\n    return () => hotkeyManager.unregister('Enter');\n  }, [nodes, setSelectedNode, hotkeyManager]);\n}\n"
  },
  {
    "path": "packages/ui/src/components/DropDown/index.tsx",
    "content": "import '../../styles/globals.css';\nimport { JSX, useCallback, useMemo, useState } from 'react';\nimport {\n  autoUpdate,\n  type ExtendedRefs,\n  flip,\n  FloatingPortal,\n  offset,\n  shift,\n  useClick,\n  useDismiss,\n  useFloating,\n  useInteractions,\n  useRole,\n} from '@floating-ui/react';\nimport { FormFieldWrapper, useFormField } from '../DataStory/Form/UseFormField';\nimport {\n  jsExpressionEvaluation,\n  jsFunctionEvaluation,\n  jsonEvaluation,\n  numberCast,\n  stringCast,\n} from '@data-story/core';\n\nexport type Option = {\n  label: string\n  value: string\n  selected?: boolean\n  callback: ({\n    close,\n    selectedIndex,\n  }: {\n    close: () => void,\n    selectedIndex: number\n  }) => void\n}\n\nexport type OptionGroup = {\n  label?: string\n  options: Option[]\n  emptyMessage?: string\n  selectable?: boolean\n}\n\ntype DropdownLiProps = {\n  option: Option,\n  optionGroup: OptionGroup,\n  closeDropdown: () => void\n};\n\nconst DropdownLiComponent = ({\n  option,\n  optionGroup,\n  closeDropdown,\n}: DropdownLiProps) => {\n  const { setValue, register, getValues } = useFormField()\n  const isCurrentOptionSelected = option.value === getValues();\n\n  return (\n    <li className=\"cursor-pointer\">\n      <div\n        {...register()}\n        className=\"flex justify-between px-2 py-1 text-xs text-gray-700 hover:bg-gray-100\"\n        onClick={(event) => {\n          if (optionGroup.selectable) {\n            const value = isCurrentOptionSelected ? '' : option.value;\n            setValue(value);\n          }\n\n          option.callback({\n            close: closeDropdown,\n            selectedIndex: optionGroup.options.findIndex((option) => isCurrentOptionSelected),\n          })\n        }\n        }\n      >\n        {option.label}\n        {isCurrentOptionSelected && (<div>✓</div>)}\n      </div>\n    </li>\n  );\n}\n\nconst DropdownLi = (params: DropdownLiProps) => {\n  return (<FormFieldWrapper fieldName={params.optionGroup.label ?? ''}>\n    <DropdownLiComponent {...params} />\n  </FormFieldWrapper>)\n}\nconst getLabelFromType = (type: string) => {\n  const labelMap = {\n    [stringCast.type]: stringCast.shortLabel,\n    [numberCast.type]: numberCast.shortLabel,\n    [jsExpressionEvaluation.type]: jsExpressionEvaluation.shortLabel,\n    [jsFunctionEvaluation.type]: jsFunctionEvaluation.shortLabel,\n    [jsonEvaluation.type]: jsonEvaluation.shortLabel,\n    'STRING_LIST': 'list',\n  }\n\n  return labelMap[type];\n}\n\nfunction DropDownOperator(props: {\n  refs: ExtendedRefs<any>,\n  referenceProps: Record<string, unknown>\n}) {\n  const { getValues } = useFormField();\n  const value = useMemo(getValues, [getValues]);\n\n  function getContent(): JSX.Element[] {\n    const pills = Object.keys(value ?? {})\n      .map((key) => {\n        return ((key === 'Evaluation' || key === 'Cast') && getLabelFromType(value[key]))\n          ? (<div key={key}\n            className=\"border-b border-gray-300 bg-gray-300/25 text-gray-700 text-xxs font-bold px-2 tracking-widest font-mono text-center\"\n          >\n            {getLabelFromType(value[key])}\n          </div>)\n          : ''\n      }).filter((pill) => pill !== '');\n\n    return pills;\n  }\n\n  const content = getContent();\n\n  return <div\n    ref={props.refs.setReference}\n    {...props.referenceProps}\n    className=\"flex flex-row justify-between cursor-pointer\">\n    {/*create the tag show the selected option*/}\n    <div className=\"flex items-center\">\n\n    </div>\n    <div>\n      <button\n        className=\"px-2 py-1 group-hover:text-gray-800 focus:text-gray-800 font-medium text-xs inline-flex items-center\"\n      >\n        {content.length > 0 ? content : <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5}\n          stroke=\"currentColor\" className=\"w-3 h-3\">\n          <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19.5 8.25l-7.5 7.5-7.5-7.5\"/>\n        </svg>}\n      </button>\n    </div>\n  </div>;\n}\n\nexport const DropDown = ({\n  optionGroups,\n}: {\n  optionGroups: OptionGroup[]\n}) => {\n  const [isOpen, setIsOpen] = useState(false);\n\n  const closeDropdown = useCallback(() => {\n    setIsOpen(false);\n  }, []);\n\n  const { refs, floatingStyles, context } = useFloating({\n    open: isOpen,\n    onOpenChange: setIsOpen,\n    placement: 'bottom-start',\n    whileElementsMounted: autoUpdate,\n    middleware: [\n      offset(5),\n      flip({\n        fallbackAxisSideDirection: 'start',\n      }),\n      shift(),\n    ],\n  });\n  const click = useClick(context);\n  const dismiss = useDismiss(context);\n  const role = useRole(context);\n\n  const { getReferenceProps, getFloatingProps } = useInteractions([\n    click,\n    dismiss,\n    role,\n  ]);\n\n  return (\n    <div className=\"sticky right-0 top-0\">\n      <div className=\"relative bg-gray-50\">\n        <DropDownOperator refs={refs} referenceProps={getReferenceProps()}/>\n\n        <FloatingPortal>\n          {isOpen && (<div\n            ref={refs.setFloating}\n            {...getFloatingProps()}\n            style={floatingStyles}\n            // If the float nesting becomes more complex moving forward, we might need to consider using a floatingTree\n            className=\"max-h-128 overflow-auto z-[100] w-44 rounded-lg shadow-lg bg-white ring-1 ring-black ring-opacity-5\">\n            {optionGroups.map((optionGroup) => {\n              return (\n                <div className=\"mb-2\" key={optionGroup.label}>\n                  <div key={optionGroup.label}\n                    className=\"font-bold text-gray-400 flex w-full justify-center text-xs px-2 py-2 border-b uppercase tracking-widest\">{optionGroup.label}</div>\n                  <ul role=\"menu\" aria-orientation=\"vertical\" aria-labelledby=\"options-menu\">\n                    {optionGroup.options.map((option) => {\n                      return (<DropdownLi key={option.label} option={option} optionGroup={optionGroup}\n                        closeDropdown={closeDropdown}/>)\n                    })}\n                  </ul>\n                  {optionGroup.options.length === 0 &&\n                    <div className=\"text-xs text-gray-400 px-2 py-2\">{optionGroup.emptyMessage ?? 'N/A'}</div>}\n                </div>\n              )\n            })}\n          </div>)}\n        </FloatingPortal>\n\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "packages/ui/src/components/Node/CommentNodeComponent.tsx",
    "content": "import React, { memo } from 'react';\nimport { useStore } from '../DataStory/store/store';\nimport { shallow } from 'zustand/shallow';\nimport { DataStoryNodeData } from './ReactFlowNode';\nimport MarkdownIt from 'markdown-it';\nimport { StringableParam } from '@data-story/core';\nimport { StoreSchema } from '../DataStory/types';\n\nconst markdown = new MarkdownIt();\n\nconst CommentNodeComponent = ({ id, data }: {\n  id: string,\n  data: DataStoryNodeData\n}) => {\n  const selector = (state: StoreSchema) => ({\n    setOpenNodeSidebarId: state.setOpenNodeSidebarId,\n  });\n\n  const { setOpenNodeSidebarId } = useStore(selector, shallow);\n\n  const contentParam = data.params.find((param) => param.name === 'content')! as StringableParam\n\n  const htmlContent = markdown.render(contentParam.input.rawValue ?? '');\n\n  return (\n    (\n      <div\n        className=\"max-w-xl prose prose-slate font-mono bg-gray-50 p-4 rounded shadow-xl prose-a:text-blue-500\"\n        onDoubleClick={() => setOpenNodeSidebarId(id)}\n        dangerouslySetInnerHTML={{ __html: htmlContent }}\n      />\n    )\n  );\n};\n\nexport default memo(CommentNodeComponent)\n"
  },
  {
    "path": "packages/ui/src/components/Node/ConsoleNodeComponent.cy.tsx",
    "content": "import ConsoleNodeComponent from './ConsoleNodeComponent';\nimport { ReactFlowProvider } from '@xyflow/react';\nimport { LinkItemsUpdate, ObserveLinkItems } from '@data-story/core';\nimport { DataStoryContext } from '../DataStory/store/store';\nimport { WorkspaceApiClientImplement } from '../DataStory/clients/WorkspaceApiClientImplement';\n\nconst data = {\n  'params': [],\n  'computer': 'ConsoleLog',\n  'label': 'ConsoleLog',\n  'inputs': [\n    {\n      'id': 'ConsoleLog.1.input',\n      'name': 'input',\n      'schema': {},\n    },\n  ],\n  'outputs': [],\n};\nconst id = 'ConsoleLog.1';\n\nconst mountConsoleNodeComponent = (items: unknown[], client?: () => WorkspaceApiClientImplement) => {\n  cy.mount(\n    // @ts-ignore\n    <DataStoryContext.Provider value={() => {\n      return ({\n        toDiagram: () => ({\n          getInputLinkIdsFromNodeIdAndPortName: (id: string, port: string) => {\n            return [`${id}.${port}`];\n          },\n        }),\n        client: client?.() || {\n          observeLinkItems: (observer: ObserveLinkItems) => {\n            observer.onReceive(items as LinkItemsUpdate[]);\n            return { unsubscribe:() => cy.spy() };\n          },\n        },\n      })\n    }}>\n      <ReactFlowProvider>\n        <ConsoleNodeComponent id={id} data={data} selected={false}/>\n      </ReactFlowProvider>\n    </DataStoryContext.Provider>,\n  );\n}\n\ndescribe('ConsoleNodeComponent', () => {\n  it('should render', () => {\n    mountConsoleNodeComponent([]);\n    cy.get('[data-cy=\"data-story-node-component\"]').should('exist');\n    cy.get('[data-cy=\"data-story-node-component\"]').contains('ConsoleLog');\n  });\n\n  it('should render a console log', () => {\n    const customLog = cy.stub().callsFake((e) => e);\n    cy.stub(console, 'log').callsFake(customLog);\n    mountConsoleNodeComponent(['Hello, World!']);\n    cy.get('[data-cy=\"data-story-node-component\"]').should('exist');\n    cy.wrap(customLog).should('be.called');\n    cy.wrap(customLog).should('be.calledWith', 'Hello, World!');\n  });\n});"
  },
  {
    "path": "packages/ui/src/components/Node/ConsoleNodeComponent.tsx",
    "content": "import React, { memo, useEffect } from 'react';\nimport { DataStoryNodeData } from './ReactFlowNode';\nimport NodeComponent from './NodeComponent';\nimport { useStore } from '../DataStory/store/store';\nimport { shallow } from 'zustand/shallow';\nimport { createDataStoryId, ObserveLinkItems, RequestObserverType } from '@data-story/core';\nimport { StoreSchema } from '../DataStory/types';\nimport { useNodeConnections } from '@xyflow/react';\n\nconst ConsoleNodeComponent = ({ id, data, selected }: {\n  id: string,\n  data: DataStoryNodeData\n  selected: boolean\n}) => {\n  useObserverConsole({ id });\n  return <NodeComponent id={id} data={data} selected={selected}/>\n}\n\nconst useObserverConsole = ({ id }: { id: string }) => {\n  const selector = (state: StoreSchema) => ({\n    toDiagram: state.toDiagram,\n    client: state.client,\n  });\n  const { toDiagram, client } = useStore(selector, shallow);\n\n  const connections = useNodeConnections({ handleType: 'target', id: `${id}.input` });\n\n  // Add the node to the inputObservers when the node is mounted\n  useEffect(() => {\n    const linkIds = toDiagram()?.getInputLinkIdsFromNodeIdAndPortName?.(id, 'input');\n    if (!client?.observeLinkItems || !linkIds) return;\n\n    const consoleObserver: ObserveLinkItems = {\n      linkIds: linkIds,\n      type: RequestObserverType.observeLinkItems,\n      observerId: createDataStoryId(),\n      onReceive: (batchedItems) => {\n        console.log(...(batchedItems ?? []));\n      },\n    }\n\n    const observeLinkItemsSubscription = client?.observeLinkItems?.(consoleObserver);\n    return () => {\n      observeLinkItemsSubscription.unsubscribe();\n    }\n    // connections.length is 0 means the node is not connected\n  }, [client, connections.length, id, toDiagram]);\n}\nexport default memo(ConsoleNodeComponent);"
  },
  {
    "path": "packages/ui/src/components/Node/CustomHandle.tsx",
    "content": "import React, { memo } from 'react';\nimport { Handle, Position } from '@xyflow/react';\nimport { PortIcon } from '../DataStory/icons/portIcon';\n\nconst CustomHandle = ({ id, isConnectable, isInput }: {\n  id: string,\n  isConnectable: boolean,\n  isInput: boolean\n}) => {\n  if(isInput) return (\n    <div className=\"flex items-left justify-start -ml-3\">\n      <div className=\"absolute my-0.5 hover:bg-red-500\"><PortIcon /></div>\n      <Handle\n        className=\"relative bg-red-500\"\n        type=\"target\"\n        position={Position.Left}\n        style={{ opacity: 0, position: 'relative', height: 12, width: 12, top: 8, left: 10 }}\n        id={id}\n        isConnectable={isConnectable}\n      />\n    </div>\n  );\n\n  return (\n    <div className=\"flex w-full items-right justify-end -mx-4\">\n      <div className=\"absolute my-0.5\"><PortIcon /></div>\n      <Handle\n        className=\"relative\"\n        type=\"source\"\n        position={Position.Right}\n        style={{ opacity: 0, backgroundColor: '', position: 'relative', height: 12, width: 12, top: 8, right: 8 }}\n        id={id}\n        isConnectable={isConnectable}\n      />\n    </div>\n  );\n};\n\nexport default memo(CustomHandle)\n"
  },
  {
    "path": "packages/ui/src/components/Node/InputNodeComponent.tsx",
    "content": "import React, { memo } from 'react';\nimport { useStore } from '../DataStory/store/store';\nimport { shallow } from 'zustand/shallow';\nimport { DataStoryNodeData } from './ReactFlowNode';\nimport { Handle, Position } from '@xyflow/react';\nimport { PortIcon } from '../DataStory/icons/portIcon';\nimport { StringableParam } from '@data-story/core';\nimport { StoreSchema } from '../DataStory/types';\n\nconst InputNodeComponent = ({ id, data, selected }: { id: string; data: DataStoryNodeData; selected: boolean }) => {\n  const selector = (state: StoreSchema) => ({\n    setOpenNodeSidebarId: state.setOpenNodeSidebarId,\n  });\n\n  const { setOpenNodeSidebarId } = useStore(selector, shallow);\n\n  const portName = (data?.params?.[0] as StringableParam)\n    .input.rawValue\n\n  const inputPort = data.inputs[0]\n  const outputPort = data.outputs[0]\n\n  return (\n    <div\n      className={'text-xs' + (selected ? ' shadow-xl' : '')}\n      onDoubleClick={() => {\n        setOpenNodeSidebarId(id);\n      }}\n    >\n      <div className=\"flex w-full items-right justify-end -mx-4\">\n        {/* INVISIBLE PORT. ONLY USED WHEN SHOWING AN UNFOLDED DIAGRAM */}\n        <Handle\n          className=\"relative\"\n          type=\"target\"\n          position={Position.Left}\n          style={{ opacity: 0, backgroundColor: '', position: 'relative', height: 1, width: 1, top: 0, right: 0 }}\n          id={inputPort.id}\n          isConnectable={true}\n        />\n        <div className={'rounded-l rounded-full py-1 text-xs font-bold font-mono tracking-wide border border-gray-400 rounded bg-green-700 text-gray-100 px-2' + (selected ? ' bg-green-800 shadow-xl' : '') }>\n          <div className=\"w-24\" />\n          <div className=\"flex w-full whitespace-nowrap\">\n            Input: { portName }\n          </div>\n        </div>\n        <div className=\"flex flex-col items-center justify-center\">\n          <div className=\"absolute my-0.5\"><PortIcon /></div>\n          <Handle\n            className=\"relative\"\n            type=\"source\"\n            position={Position.Right}\n            style={{ opacity: 0, backgroundColor: '', position: 'relative', height: 12, width: 12, top: 6, right: 11 }}\n            id={outputPort.id}\n            isConnectable={true}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default memo(InputNodeComponent);\n"
  },
  {
    "path": "packages/ui/src/components/Node/LoopBackComponent.tsx",
    "content": "import React, { memo } from 'react';\nimport { useStore } from '../DataStory/store/store';\nimport { shallow } from 'zustand/shallow';\nimport { DataStoryNodeData } from './ReactFlowNode';\nimport { Handle, Position } from '@xyflow/react';\nimport { PortIcon } from '../DataStory/icons/portIcon';\nimport { StringableParam } from '@data-story/core';\nimport { StoreSchema } from '../DataStory/types';\n\nconst LoopBackComponent = ({ id, data, selected }: { id: string; data: DataStoryNodeData; selected: boolean }) => {\n  const selector = (state: StoreSchema) => ({\n    setOpenNodeSidebarId: state.setOpenNodeSidebarId,\n  });\n\n  const { setOpenNodeSidebarId } = useStore(selector, shallow);\n\n  const portName = (data?.params?.[0] as StringableParam)\n    .input.rawValue\n\n  const inputPort = data.inputs[0]\n  const outputPort = data.outputs[0]\n\n  return (\n    <div\n      className={'text-xs' + (selected ? ' shadow-xl' : '')}\n      onDoubleClick={() => {\n        setOpenNodeSidebarId(id);\n      }}\n    >\n      <div className=\"flex w-full items-left justify-start\">\n        <div className=\"flex flex-col items-center justify-center\">\n          <div className=\"absolute my-0.5\"><PortIcon /></div>\n          <Handle\n            className=\"relative\"\n            type=\"target\"\n            position={Position.Left}\n            style={{ opacity: 0, backgroundColor: '', position: 'relative', height: 12, width: 12, top: 6, left: 6 }}\n            id={inputPort.id}\n            isConnectable={true}\n          />\n        </div>\n        <div className={'rounded-r rounded-full py-1 text-xs font-bold font-mono tracking-wide border border-gray-400 rounded bg-green-700 text-gray-100 px-2' + (selected ? ' bg-green-800 shadow-xl' : '')}>\n          <div className=\"w-24\" />\n          <div className=\"flex w-full whitespace-nowrap\">\n            Loop Back: { portName }\n          </div>\n        </div>\n        {/* INVISIBLE PORT. ONLY USED WHEN SHOWING AN UNFOLDED DIAGRAM */}\n        <Handle\n          className=\"relative\"\n          type=\"source\"\n          position={Position.Right}\n          style={{ opacity: 0, backgroundColor: '', position: 'relative', height: 1, width: 1, top: 0, right: 0 }}\n          id={outputPort.id}\n          isConnectable={false}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default memo(LoopBackComponent);\n"
  },
  {
    "path": "packages/ui/src/components/Node/LoopStartComponent.tsx",
    "content": "import React, { memo } from 'react';\nimport { useStore } from '../DataStory/store/store';\nimport { shallow } from 'zustand/shallow';\nimport { DataStoryNodeData } from './ReactFlowNode';\nimport { Handle, Position } from '@xyflow/react';\nimport { PortIcon } from '../DataStory/icons/portIcon';\nimport { StringableParam } from '@data-story/core';\nimport { StoreSchema } from '../DataStory/types';\n\nconst LoopStartComponent = ({ id, data, selected }: { id: string; data: DataStoryNodeData; selected: boolean }) => {\n  const selector = (state: StoreSchema) => ({\n    setOpenNodeSidebarId: state.setOpenNodeSidebarId,\n  });\n\n  const { setOpenNodeSidebarId } = useStore(selector, shallow);\n\n  const portName = (data?.params?.[0] as StringableParam)\n    .input.rawValue\n\n  const inputPort = data.inputs[0]\n  const outputPort = data.outputs[0]\n\n  return (\n    <div\n      className={'text-xs' + (selected ? ' shadow-xl' : '')}\n      onDoubleClick={() => {\n        setOpenNodeSidebarId(id);\n      }}\n    >\n      <div className=\"flex w-full items-right justify-end -mx-4\">\n        {/* INVISIBLE PORT. ONLY USED WHEN SHOWING AN UNFOLDED DIAGRAM */}\n        <Handle\n          className=\"relative\"\n          type=\"target\"\n          position={Position.Left}\n          style={{ opacity: 0, backgroundColor: '', position: 'relative', height: 1, width: 1, top: 0, right: 0 }}\n          id={inputPort.id}\n          isConnectable={true}\n        />\n        <div className={'rounded-l rounded-full py-1 text-xs font-bold font-mono tracking-wide border border-gray-400 rounded bg-green-700 text-gray-100 px-2' + (selected ? ' bg-green-800 shadow-xl' : '') }>\n          <div className=\"w-24\" />\n          <div className=\"flex w-full whitespace-nowrap\">\n            Loop Start: { portName }\n          </div>\n        </div>\n        <div className=\"flex flex-col items-center justify-center\">\n          <div className=\"absolute my-0.5\"><PortIcon /></div>\n          <Handle\n            className=\"relative\"\n            type=\"source\"\n            position={Position.Right}\n            style={{ opacity: 0, backgroundColor: '', position: 'relative', height: 12, width: 12, top: 6, right: 11 }}\n            id={outputPort.id}\n            isConnectable={true}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default memo(LoopStartComponent);\n"
  },
  {
    "path": "packages/ui/src/components/Node/NodeComponent.tsx",
    "content": "import React, { memo } from 'react';\nimport { useStore } from '../DataStory/store/store';\nimport { shallow } from 'zustand/shallow';\nimport CustomHandle from './CustomHandle';\nimport { DataStoryNodeData } from './ReactFlowNode';\nimport { StoreSchema } from '../DataStory/types';\n\nconst NodeComponent = ({ id, data, selected }: {\n  id: string,\n  data: DataStoryNodeData\n  selected: boolean\n}) => {\n  const selector = (state: StoreSchema) => ({\n    setOpenNodeSidebarId: state.setOpenNodeSidebarId,\n  });\n\n  const { setOpenNodeSidebarId } = useStore(selector, shallow);\n\n  return (\n    (\n      <div\n        className={`text-xs ${selected ? 'shadow-xl shadow-blue-100 ring-1 ring-blue-200' : ''}`}\n        data-cy=\"data-story-node-component\"\n        onDoubleClick={() => {\n          setOpenNodeSidebarId(id)\n        }}\n      >\n        <div className=\"w-32\" />\n        <div className={'flex py-1 text-xs font-bold font-mono tracking-wide border border-gray-400 rounded bg-blue-600 text-gray-100 px-2' + (selected ? ' bg-blue-700 shadow-xl' : '')}>\n          { data.label }\n        </div>\n        <div className=\"flex flex-col mx-2\">\n          {data.inputs.map((input: any) => (<div\n            className=\"flex border border-gray-300 rounded px-2 py-1 bg-gray-50\"\n            key={input.id}\n          >\n            <CustomHandle id={input.id} isConnectable={true} isInput={true} />\n            <div className=\"ml-2 w-full text-gray-500\">{input.name}</div>\n          </div>))}\n\n          {data.outputs.map((output: any) => (<div\n            className=\"flex pl-3 border border-gray-300 rounded px-2 py-1 bg-gray-50\"\n            key={output.id}\n          >\n            {data.inputs.length > 0 && <div className=\"w-2\"></div>}\n            <div className=\"w-full text-gray-500\">{output.name}</div>\n            <CustomHandle id={output.id} isConnectable={true} isInput={false} />\n          </div>))}\n        </div>\n      </div>\n    )\n  );\n};\n\nexport default memo(NodeComponent)\n"
  },
  {
    "path": "packages/ui/src/components/Node/OutputNodeComponent.tsx",
    "content": "import React, { memo } from 'react';\nimport { useStore } from '../DataStory/store/store';\nimport { shallow } from 'zustand/shallow';\nimport { DataStoryNodeData } from './ReactFlowNode';\nimport { Handle, Position } from '@xyflow/react';\nimport { PortIcon } from '../DataStory/icons/portIcon';\nimport { StringableParam } from '@data-story/core';\nimport { StoreSchema } from '../DataStory/types';\n\nconst OutputNodeComponent = ({ id, data, selected }: { id: string; data: DataStoryNodeData; selected: boolean }) => {\n  const selector = (state: StoreSchema) => ({\n    setOpenNodeSidebarId: state.setOpenNodeSidebarId,\n  });\n\n  const { setOpenNodeSidebarId } = useStore(selector, shallow);\n\n  const portName = (data?.params?.[0] as StringableParam)\n    .input.rawValue\n\n  const inputPort = data.inputs[0]\n  const outputPort = data.outputs[0]\n\n  return (\n    <div\n      className={'text-xs' + (selected ? ' shadow-xl' : '')}\n      onDoubleClick={() => {\n        setOpenNodeSidebarId(id);\n      }}\n    >\n      <div className=\"flex w-full items-left justify-start\">\n        <div className=\"flex flex-col items-center justify-center\">\n          <div className=\"absolute my-0.5\"><PortIcon /></div>\n          <Handle\n            className=\"relative\"\n            type=\"target\"\n            position={Position.Left}\n            style={{ opacity: 0, backgroundColor: '', position: 'relative', height: 12, width: 12, top: 6, left: 6 }}\n            id={inputPort.id}\n            isConnectable={true}\n          />\n        </div>\n        <div className={'rounded-r rounded-full py-1 text-xs font-bold font-mono tracking-wide border border-gray-400 rounded bg-green-700 text-gray-100 px-2' + (selected ? ' bg-green-800 shadow-xl' : '')}>\n          <div className=\"w-24\" />\n          <div className=\"flex w-full whitespace-nowrap\">\n            Output: { portName }\n          </div>\n        </div>\n        {/* INVISIBLE PORT. ONLY USED WHEN SHOWING AN UNFOLDED DIAGRAM */}\n        <Handle\n          className=\"relative\"\n          type=\"source\"\n          position={Position.Right}\n          style={{ opacity: 0, backgroundColor: '', position: 'relative', height: 1, width: 1, top: 0, right: 0 }}\n          id={outputPort.id}\n          isConnectable={false}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default memo(OutputNodeComponent);\n"
  },
  {
    "path": "packages/ui/src/components/Node/ReactFlowNode.ts",
    "content": "import { Param, Port } from '@data-story/core';\nimport { Node } from '@xyflow/react';\n\nexport type DataStoryNodeData = {\n  params: Param[],\n  computer: string,\n  label: string,\n  inputs: Port[],\n  outputs: Port[],\n}\n\nexport type ReactFlowNode = Node<DataStoryNodeData>;\n"
  },
  {
    "path": "packages/ui/src/components/Node/table/CellsMatrix.ts",
    "content": "import { Cell, RowModel } from '@tanstack/react-table';\nimport { VirtualItem } from '@tanstack/react-virtual';\n\ninterface VisibleCell {\n  rowIndex: number;\n  cell: Cell<Record<string, unknown>, unknown>;\n  offsetTop: number;\n}\n\nexport const CELL_WIDTH = 75;\nexport const CELL_MAX_WIDTH = 150;\nexport const CELL_MIN_WIDTH = 50;\nexport const DEFAULT_CHAR_WIDTH = 8;\nexport const DEFAULT_PADDING = 8;\n\nexport interface ColumnWidthOptions {\n  charWidth?: number;\n  maxWidth?: number;\n  minWidth?: number;\n  padding?: number;\n}\n\nexport class CellsMatrix {\n  private readonly getRowModel: () => RowModel<Record<string, unknown>>;\n  private readonly virtualRows: VirtualItem[];\n  private readonly virtualColumns: VirtualItem[];\n  private readonly cellsMatrix: VisibleCell[][];\n  private columnWidthsMap: Map<number, number> = new Map();\n\n  constructor({\n    virtualRows,\n    virtualColumns,\n    getRowModel,\n  }: {\n    virtualRows: VirtualItem[];\n    virtualColumns: VirtualItem[];\n    getRowModel: () => RowModel<Record<string, unknown>>\n  }) {\n    this.virtualRows = virtualRows;\n    this.virtualColumns = virtualColumns;\n    this.getRowModel = getRowModel;\n    this.cellsMatrix = this.initializeCellsMatrix();\n  }\n\n  // Initialize a 2D array representing columns and their cells\n  private initializeCellsMatrix(): VisibleCell[][] {\n    const matrix: VisibleCell[][] = Array(this.virtualColumns.length)\n      .fill(null)\n      .map(() => []);\n\n    this.virtualRows.forEach(virtualRow => {\n      const row = this.getRowModel().rows[virtualRow.index];\n      if (!row) return;\n\n      this.virtualColumns.forEach((virtualCol, colIndex) => {\n        const cell = row.getVisibleCells()[virtualCol.index];\n        if (!cell) return;\n\n        matrix[colIndex].push({\n          rowIndex: virtualRow.index,\n          cell,\n          offsetTop: virtualRow.start,\n        });\n      });\n    });\n\n    return matrix;\n  }\n\n  public getColumnCells(columnIndex: number): VisibleCell[] {\n    return this.cellsMatrix[columnIndex];\n  }\n\n  // Calculate and cache the optimal width for a column\n  public calculateColumnWidth(colIndex: number, options: ColumnWidthOptions = {}): number {\n    const {\n      charWidth = DEFAULT_CHAR_WIDTH,\n      maxWidth = CELL_MAX_WIDTH,\n      minWidth = CELL_MIN_WIDTH,\n      padding = DEFAULT_PADDING,\n    } = options;\n\n    if (this.columnWidthsMap.has(colIndex)) {\n      return this.columnWidthsMap.get(colIndex)!;\n    }\n\n    const columnCells = this.getColumnCells(colIndex);\n    const headerText = columnCells[0]?.cell.column.id || '';\n\n    const maxLength = columnCells.reduce((max, { cell }) => {\n      const originalContent =  cell?.row.original[cell.column?.id] ?? cell.getValue();\n      const contentLength = String(originalContent).length;\n      return Math.max(max, contentLength);\n    }, headerText.length);\n\n    // Calculate final width: characters * charWidth + padding\n    const finalWidth = Math.max(\n      minWidth,\n      Math.min(maxWidth, maxLength * charWidth + padding),\n    );\n\n    this.columnWidthsMap.set(colIndex, finalWidth);\n\n    return finalWidth;\n  }\n}"
  },
  {
    "path": "packages/ui/src/components/Node/table/GetFormatterOnlyAndDropParam.ts",
    "content": "import { ItemValue, ItemWithParams, parseStringList, StringableParam } from '@data-story/core';\nimport { DataStoryNodeData } from '../ReactFlowNode';\n\nexport function getFormatterOnlyAndDropParamOLD(items: ItemValue[], data: DataStoryNodeData): {\n  only: string[],\n  drop: string[],\n  destructObjects: boolean\n} {\n  const paramEvaluator = new ItemWithParams(items, data.params, []);\n  let only: string[] = [], drop: string[] = [];\n  let destructObjects = true;\n  try {\n    only = paramEvaluator.params?.only as string[] ?? [];\n    drop = paramEvaluator.params?.drop as string[] ?? [];\n    destructObjects = paramEvaluator.params?.destructObjects === 'false' ? false : true;\n  } catch (e) {\n  }\n  return { only, drop, destructObjects };\n}\n\nexport function getFormatterOnlyAndDropParam(items: ItemValue[], data: DataStoryNodeData): {\n  only: string[],\n  drop: string[],\n  destructObjects: boolean\n} {\n  const onlyParam = data.params.find(param => param.name === 'only') as StringableParam | undefined;\n  const dropParam = data.params.find(param => param.name === 'drop') as StringableParam | undefined;\n  const destructObjectsParam = data.params.find(param => param.name === 'destructObjects') as StringableParam | undefined;\n\n  return {\n    only: (() => {\n      if (onlyParam === undefined) return [];\n      return parseStringList(onlyParam?.input?.rawValue);\n    })(),\n    drop: (() => {\n      if (dropParam === undefined) return [];\n      return parseStringList(dropParam?.input?.rawValue);\n    })(),\n    destructObjects: (() => {\n      if (destructObjectsParam === undefined) return true;\n      return destructObjectsParam.input?.rawValue !== 'false';\n    })(),\n  };\n}\n"
  },
  {
    "path": "packages/ui/src/components/Node/table/ItemCollection.test.ts",
    "content": "import { describe, it, expect } from 'vitest';\nimport { ItemCollection } from './ItemCollection';\nimport { nested, normal, threeTierNested } from './mock';\nimport { multiline } from '@data-story/core';\n\ndescribe('toTable', () => {\n  it('should correctly extract headers and rows from normal data', () => {\n    const { headers, rows } = new ItemCollection([normal]).toTable({ only: [], drop: [], destructObjects: true });\n    expect(headers).toEqual(['property_a', 'property_b', 'property_c', 'property_d', 'property_e', 'property_f', 'property_g', 'property_h', 'property_i']);\n    expect(rows).toEqual([['10000', '20000', '30000', '40000', '50000', '60000', '70000', '80000', '90000']]);\n  });\n\n  it ('should correctly extract headers and rows from nested array', () => {\n    const mockData = [\n      {\n        'foo': 'bar',\n        'baz': [\n          {\n            'foo': 'bar',\n            'baz': 'qux',\n          },\n        ],\n      },\n    ];\n\n    const { headers, rows } = new ItemCollection(mockData).toTable({ only: [], drop: [], destructObjects: true });\n    expect(headers).toEqual(['foo', 'baz']);\n    expect(rows).toEqual([['bar', '[{\"foo\":\"bar\",\"baz\":\"qux\"}]']]);\n  });\n\n  it('should correctly extract headers and rows from 3 nested Object', () => {\n    const expectedHeaders = ['foo1', 'foo2', 'foo3', 'foo3.foo1', 'foo3.foo2', 'foo3.foo3.foo1', 'foo3.foo3.foo2', 'foo3.foo3.foo3'];\n    const expectedContent = [\n      ['bar1', 'bar2', 'bar3', undefined, undefined, undefined, undefined, undefined ],\n      ['bar1', 'bar2', 'bar3', undefined, undefined, undefined, undefined, undefined],\n      ['bar1', 'bar2', undefined, 'bar1', 'bar2', 'bar1', 'bar2', 'bar3'],\n    ];\n\n    const { headers, rows } = new ItemCollection(threeTierNested).toTable({ only: [], drop: [], destructObjects: true });\n\n    expect(headers).toEqual(expectedHeaders);\n    expect(rows).toEqual(expectedContent);\n  });\n\n  it('should correctly extract headers and rows from nested JSON data', () => {\n    const { headers, rows } = new ItemCollection([nested]).toTable({ only: [], drop: [], destructObjects: true });\n\n    expect(headers).toEqual(\n      [\n        'objectId',\n        'properties.firstname',\n        'properties.lastname',\n        'properties.email',\n        'createdAt',\n        'updatedAt',\n        'associations.contacts',\n        'booleanFalse',\n        'booleanTrue',\n        'address.street',\n        'address.city',\n        'address.state',\n        'address.zipcode',\n      ],\n    );\n    expect(rows).toEqual(\n      [\n        [\n          '123456789',\n          'John',\n          'Doe',\n          '',\n          '2021-01-01T00:00:00.000Z',\n          '2021-01-01T00:00:00.000Z',\n          '[{\"id\":\"123456789\",\"type\":\"CONTACT_TO_COMPANY\"}]',\n          'false',\n          'true',\n          multiline`\n            122 Main St\n            Suite 100\n            Anytown`,\n          'Anytown',\n          'Anystate',\n          '12344',\n        ],\n      ],\n    );\n  });\n\n  it('should handle empty array input', () => {\n    const { headers, rows } =  new ItemCollection([]).toTable({ only: [], drop: [], destructObjects: true });\n    expect(headers).toEqual([]);\n    expect(rows).toEqual([]);\n  });\n\n  it('should handle nullable objects filled and not filled', () => {\n    const mockData = [\n      {\n        'name': {\n          'first': 'John',\n          'last': 'Doe',\n        },\n        'age': 21,\n      },\n      {\n        'name': null,\n        'age': 22,\n      },\n    ];\n\n    const { headers, rows } = new ItemCollection(mockData).toTable({ only: [], drop: [], destructObjects: true });\n    expect(headers).toEqual(['name.first', 'name.last', 'age', 'name']);\n    expect(rows).toEqual([\n      ['John', 'Doe', '21', undefined],\n      [undefined, undefined, '22', 'null'],\n    ]);\n  })\n});\n"
  },
  {
    "path": "packages/ui/src/components/Node/table/ItemCollection.ts",
    "content": "import { ItemValue, get } from '@data-story/core'\n\ntype JSONValue = string | number | boolean | { [key: string]: JSONValue } | JSONValue[];\n\ninterface TableOptions {\n  only?: string[];\n  drop?: string[];\n  destructObjects?: boolean;\n}\n\nexport class ItemCollection {\n  constructor(public items: ItemValue[]) {\n  }\n\n  toTable(options: TableOptions = {}) {\n    const { only = [], drop = [], destructObjects = true } = options;\n    const headers: Set<string> = new Set();\n    const rows: (string | undefined)[][] = [];\n\n    /**\n     * @description recursively build headers\n     */\n    const buildHeaders = (object: { [key: string]: JSONValue }, prefix: string = '') => {\n      Object.entries(object).forEach(([property, value]) => {\n        const fullPath = prefix ? `${prefix}.${property}` : property;\n\n        if (isNestedObject(value) && destructObjects) {\n          buildHeaders(value, fullPath);\n        } else {\n          headers.add(fullPath);\n        }\n      });\n    };\n\n    const isNestedObject = (value: any): value is { [key: string]: JSONValue } => {\n      return typeof value === 'object' && value !== null && !Array.isArray(value);\n    };\n\n    /**\n     * @description recursive data to build headers\n     */\n    this.items.forEach(item => {\n      if (typeof item === 'object' && item !== null && !Array.isArray(item)) {\n        buildHeaders(item);\n      }\n    });\n\n    // filter headers by only and drop\n    headers.forEach(header => {\n      if (only.length && !only.includes(header)) {\n        headers.delete(header);\n      }\n      if (drop.length && drop.includes(header)) {\n        headers.delete(header);\n      }\n    });\n\n    /**\n     * @description get value by header's path\n     */\n    const getValueByPath = (object: ItemValue, path: string): string | undefined => {\n      let rawValue: any = destructObjects ? get(object, path) : get(object, path.split('.')[0]);\n\n      const currentType = typeof rawValue;\n\n      if (currentType === 'object' && Array.isArray(rawValue)) {\n        return this.serializeArrayContent(rawValue);\n      }\n\n      if (currentType === 'object' && rawValue !== null) {\n        return destructObjects ? undefined : JSON.stringify(rawValue);\n      }\n\n      return typeof rawValue === 'string'\n        ? rawValue\n        : JSON.stringify(rawValue);\n    }\n\n    /**\n     * @description build rows\n     */\n    this.items.forEach(item => {\n      const row: (string | undefined)[] = [];\n      headers.forEach(header => {\n        const value = getValueByPath(item, header);\n        row.push(value);\n      });\n      rows.push(row);\n    });\n\n    return {\n      headers: Array.from(headers) ?? [],\n      rows: rows ?? [],\n    };\n  }\n\n  private serializeArrayContent(arrayContent: unknown[]): string {\n    return JSON.stringify(arrayContent).replace(/\\n/g, '');\n  }\n}\n"
  },
  {
    "path": "packages/ui/src/components/Node/table/LoadingComponent.tsx",
    "content": "import React from 'react';\n\nexport function LoadingComponent() {\n  return <div data-cy={'data-story-table-await-data'} className=\"max-h-28 nowheel overflow-auto  rounded-sm relative\">\n    <div\n      className=\"whitespace-nowrap bg-gray-200 text-left px-1 border-r-0.5 last:border-r-0 border-gray-300 sticky top-0 z-10\">\n      Awaiting data\n    </div>\n    <div className=\"text-left bg-gray-100 hover:bg-gray-200\">\n      Load initial data...\n    </div>\n  </div>;\n}"
  },
  {
    "path": "packages/ui/src/components/Node/table/MemoizedTableBody.tsx",
    "content": "import React, { memo } from 'react';\nimport { VirtualItem, Virtualizer } from '@tanstack/react-virtual';\nimport { flexRender, RowModel } from '@tanstack/react-table';\nimport { FIXED_HEIGHT } from './TableCell';\nimport { ColumnWidthOptions } from './CellsMatrix';\n\nexport const MemoizedTableBody = memo(({\n  virtualRows,\n  getRowModel,\n  virtualColumns,\n  rowVirtualizer,\n  calculateColumnWidth,\n}: {\n  virtualRows: VirtualItem[];\n  virtualColumns: VirtualItem[];\n  rowVirtualizer: Virtualizer<HTMLDivElement, Element>;\n  getRowModel: () => RowModel<Record<string, unknown>>;\n  calculateColumnWidth: (colIndex: number,options?: ColumnWidthOptions) => number;\n}) => {\n  return (\n    <tbody\n      style={{\n        display: 'grid',\n        height: `${rowVirtualizer.getTotalSize()}px`, //tells scrollbar how big the table is\n        position: 'relative', //needed for absolute positioning of rows\n      }}>\n      {virtualRows.map((virtualRow, rowindex) => {\n        const row = getRowModel().rows[virtualRow.index];\n        return (\n          <tr\n            data-cy={'data-story-table-row'}\n            className=\"odd:bg-gray-50 w-full text-xs\"\n            key={row.id}\n            style={{\n              display: 'flex',\n              height: `${FIXED_HEIGHT}px`,\n              position: 'absolute',\n              transform: `translateY(${virtualRow.start}px)`,\n            }}\n          >\n            {/**fake empty column to the left for virtualization scroll padding **/}\n            <td\n              style={{\n                display: 'var(--virtual-padding-left-display)',\n                width: 'calc(var(--virtual-padding-left) * 1px)',\n              }}\n            />\n            {virtualColumns.map((virtualColumn, index) => {\n              const cell = row.getVisibleCells()[virtualColumn.index];\n              const columnWidth = calculateColumnWidth(index);\n              const isLastColumn = index === virtualColumns.length - 1;\n\n              return (\n                <td\n                  key={cell.id}\n                  className={`max-w-[256px] whitespace-nowrap text-left border-gray-300\n                  ${isLastColumn ? 'border-r-0' : 'border-r-0.5'}`}\n                  style={{\n                    display: 'flex',\n                    position: 'relative',\n                    width: `${columnWidth}px`,\n                    height: `${FIXED_HEIGHT}px`,\n                  }}\n                >\n                  {flexRender(cell.column.columnDef.cell, cell.getContext())}\n                </td>\n              )\n            })}\n            <td\n              style={{\n                display: 'var(--virtual-padding-right-display)',\n                width: 'calc(var(--virtual-padding-right) * 1px)',\n              }}\n            />\n          </tr>\n        );\n      })}\n    </tbody>\n  );\n});"
  },
  {
    "path": "packages/ui/src/components/Node/table/MemoizedTableHeader.tsx",
    "content": "import React, { memo } from 'react';\nimport { flexRender, HeaderGroup } from '@tanstack/react-table';\nimport { VirtualItem } from '@tanstack/react-virtual';\nimport { ColumnWidthOptions } from './CellsMatrix';\n\nexport const MemoizedTableHeader = memo(({\n  headerGroups,\n  virtualColumns,\n  calculateColumnWidth,\n}: {\n  headerGroups: HeaderGroup<Record<string, unknown>>[];\n  virtualColumns: VirtualItem[];\n  calculateColumnWidth: (colIndex: number,options?: ColumnWidthOptions) => number;\n}) => {\n  return (\n    <thead\n      style={{\n        position: 'sticky',\n        top: 0,\n        zIndex: 1,\n        display: 'grid',\n      }}>\n      {headerGroups.map((headerGroup) => (\n        <tr\n          key={headerGroup.id}\n          className=\"bg-gray-200 z-10 flex\"\n        >\n          {/**fake empty column to the left for virtualization scroll padding **/}\n          <th\n            style={{\n              display: 'var(--virtual-padding-left-display)',\n              width: 'calc(var(--virtual-padding-left) * 1px)',\n            }}\n          />\n          {\n            virtualColumns.map((virtualColumn, index) => {\n              const headerColumn = headerGroup.headers[virtualColumn.index];\n              const columnWidth = calculateColumnWidth(index);\n              const isLastColumn = index === virtualColumns.length - 1;\n\n              return (\n                <th\n                  data-cy={'data-story-table-th'}\n                  key={headerColumn.id}\n                  style={{\n                    display: 'flex',\n                    position: 'relative',\n                    width: `${columnWidth}px`,\n                  }}\n                  className={`max-w-[256px] whitespace-nowrap bg-gray-200 text-left border-gray-300\n                  ${isLastColumn ? 'border-r-0' : 'border-r-0.5'}`}\n                >\n                  {flexRender(headerColumn.column.columnDef.header, headerColumn.getContext())}\n                </th>\n              );\n            })\n          }\n          {/**fake empty column to the left for virtualization scroll padding **/}\n          <th\n            style={{\n              display: 'var(--virtual-padding-right-display)',\n              width: 'calc(var(--virtual-padding-right) * 1px)',\n            }}\n          />\n        </tr>\n      ))}\n    </thead>\n  );\n});"
  },
  {
    "path": "packages/ui/src/components/Node/table/StandaloneTable.tsx",
    "content": "import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { ColumnDef, getCoreRowModel, getSortedRowModel, useReactTable } from '@tanstack/react-table';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport { ItemValue } from '@data-story/core';\nimport { LoadingComponent } from './LoadingComponent';\nimport { FIXED_HEIGHT, TableCell } from './TableCell';\nimport { MemoizedTableBody } from './MemoizedTableBody';\nimport { MemoizedTableHeader } from './MemoizedTableHeader';\nimport { CELL_MAX_WIDTH, CELL_MIN_WIDTH, CELL_WIDTH, CellsMatrix, ColumnWidthOptions } from './CellsMatrix';\nimport { ItemCollection } from './ItemCollection';\nimport { getFormatterOnlyAndDropParam } from './GetFormatterOnlyAndDropParam';\nimport { DataStoryNodeData } from '../ReactFlowNode';\n\nexport interface StandaloneTableProps {\n  items?: ItemValue[];\n  data:  DataStoryNodeData,\n  isDataFetched: boolean;\n  parentRef: React.MutableRefObject<HTMLDivElement | null>\n  wrapClassName?: string;\n  rowCount?: number;\n}\n\n/**\n * A standalone table component that can be used outside of the DataStory context\n */\nconst StandaloneTable = ({\n  items = [],\n  wrapClassName,\n  isDataFetched,\n  parentRef,\n  data,\n  rowCount = 10,\n}: StandaloneTableProps) => {\n  const tableRef = useRef<HTMLTableElement>(null);\n\n  const { headers, rows } = useMemo(() => {\n    const { only, drop, destructObjects } = getFormatterOnlyAndDropParam(items, data);\n    const itemCollection = new ItemCollection(items);\n    return itemCollection.toTable({ only, drop, destructObjects });\n  }, [items, data]);\n\n  const columns: ColumnDef<Record<string, unknown>>[] = useMemo(\n    () =>\n      headers.map((header) => ({\n        accessorKey: header,\n        id: header,\n        header: () => <TableCell tableRef={tableRef} content={header}/>,\n        cell: ({ cell, row }) => {\n          const originalContent = row.original[cell.column?.id];\n          return <TableCell tableRef={tableRef} content={originalContent}/>\n        },\n      })), [headers]);\n\n  const tableData = useMemo(() =>\n    rows.map((row) => {\n      const rowData = {};\n      headers.forEach((header, index) => {\n        rowData[header] = row[index];\n      });\n      return rowData;\n    }),\n  [rows, headers]);\n\n  const tableInstance = useReactTable({\n    data: tableData,\n    columns,\n    defaultColumn: {\n      size: CELL_WIDTH,\n      minSize: CELL_MIN_WIDTH,\n      maxSize: CELL_MAX_WIDTH,\n    },\n    columnResizeMode: 'onChange',\n    getCoreRowModel: getCoreRowModel(),\n    getSortedRowModel: getSortedRowModel(),\n  });\n\n  const { getHeaderGroups, getRowModel } = tableInstance;\n  const visibleColumns = tableInstance.getVisibleLeafColumns();\n\n  const rowVirtualizer = useVirtualizer({\n    count: getRowModel().rows.length,\n    getScrollElement: () => parentRef.current,\n    estimateSize: () => FIXED_HEIGHT,\n    overscan: 2,\n  });\n\n  const columnVirtualizer = useVirtualizer({\n    count: visibleColumns.length,\n    estimateSize: (index) => visibleColumns[index].getSize(),\n    getScrollElement: () => parentRef.current,\n    horizontal: true,\n    overscan: 2,\n  });\n\n  const virtualRows = rowVirtualizer.getVirtualItems();\n  const virtualColumns = columnVirtualizer.getVirtualItems();\n\n  const virtualPaddingVars = useMemo(() => {\n    let virtualPaddingVars = {\n      '--virtual-padding-left': 0,\n      '--virtual-padding-right': 0,\n      '--virtual-padding-right-display': 'none',\n      '--virtual-padding-left-display': 'none',\n    } as React.CSSProperties;\n\n    if (columnVirtualizer && virtualColumns?.length) {\n      let virtualPaddingLeft: number | undefined;\n      let virtualPaddingRight: number | undefined;\n\n      virtualPaddingLeft = virtualColumns[0]?.start ?? 0;\n      virtualPaddingRight =\n        columnVirtualizer.getTotalSize() -\n        (virtualColumns[virtualColumns.length - 1]?.end ?? 0);\n\n      virtualPaddingVars = {\n        '--virtual-padding-left': virtualPaddingLeft,\n        '--virtual-padding-right': virtualPaddingRight,\n        '--virtual-padding-right-display': 'flex',\n        '--virtual-padding-left-display': 'flex',\n      } as React.CSSProperties;\n    }\n    return virtualPaddingVars;\n  }, [virtualColumns, columnVirtualizer]);\n\n  const { calculateColumnWidth } = useMemo(() => {\n    const cellsMatrixClass = new CellsMatrix({\n      virtualRows,\n      virtualColumns,\n      getRowModel,\n    });\n\n    const calculateColumnWidth = (colIndex:number, options: ColumnWidthOptions = {}) =>\n      cellsMatrixClass.calculateColumnWidth(colIndex, options);\n\n    return { calculateColumnWidth };\n  }, [getRowModel, virtualColumns, virtualRows]);\n\n  const showNoData = useMemo(() => {\n    return headers.length === 0 && rows.length === 0;\n  }, [headers.length, rows.length]);\n\n  const tableHeight = useMemo(() => {\n    if (showNoData) {\n      return '40px';\n    }\n    if (rows.length < rowCount) {\n      // + 1 for header\n      return (rows.length + 1) * FIXED_HEIGHT + 'px';\n    }\n    // The 14px extra height is determined through testing to ensure that the table scrollbar does not obscure the height of the table body when it appears.\n    return (rowCount + 1) * FIXED_HEIGHT + 14 + 'px';\n  }, [showNoData, rows.length, rowCount]);\n\n  return (\n    <div\n      className={`${wrapClassName ?? ''} max-h-[4050px] max-w-[4050px] text-xs border rounded border-gray-300`}\n    >\n      <div data-cy={'data-story-table'} className=\"text-gray-600 w-full h-full bg-gray-100 rounded font-mono\">\n        {isDataFetched ? (\n          <div\n            ref={parentRef}\n            style={{\n              height: tableHeight,\n              position: 'relative',\n              ...virtualPaddingVars,\n            }}\n            data-cy={'data-story-table-scroll'}\n            className=\"h-full min-w-6 nowheel overflow-auto scrollbar rounded-sm w-full\"\n          >\n            <table className=\"table-fixed grid\">\n              <MemoizedTableHeader\n                headerGroups={getHeaderGroups()}\n                virtualColumns={virtualColumns}\n                calculateColumnWidth={calculateColumnWidth}\n              />\n              <MemoizedTableBody\n                virtualRows={virtualRows}\n                virtualColumns={virtualColumns}\n                rowVirtualizer={rowVirtualizer}\n                getRowModel={getRowModel}\n                calculateColumnWidth={calculateColumnWidth}\n              />\n            </table>\n            {showNoData && (\n              <div data-cy={'data-story-table-no-data'} className=\"text-center text-gray-500 p-2\">\n                No data\n              </div>\n            )}\n          </div>\n        ) : (\n          <LoadingComponent/>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default memo(StandaloneTable);\n"
  },
  {
    "path": "packages/ui/src/components/Node/table/TableCell.tsx",
    "content": "import React, { useState } from 'react';\nimport {\n  autoUpdate,\n  flip,\n  FloatingPortal,\n  offset,\n  shift,\n  useClick,\n  useDismiss,\n  useFloating,\n  useInteractions,\n  useRole,\n} from '@floating-ui/react';\n\nexport const FIXED_HEIGHT = 24;\nconst TOOLTIPT_MAX_HEIGHT = FIXED_HEIGHT * 11;\n\nconst formatCellContent = (content: unknown) => {\n  let result = formatTooltipContent(content) as string;\n  return result;\n}\nconst formatTooltipContent = (content: unknown) => {\n  try {\n    JSON.parse(content as string);\n    return JSON.stringify(JSON.parse(content as string), null, 2);\n  } catch(e) {\n    return content;\n  }\n}\n\nexport function TableCell(props: { tableRef: React.RefObject<HTMLTableElement | null>, content?: unknown }) {\n  const { content = '', tableRef } = props;\n  const [showTooltip, setShowTooltip] = useState(false);\n\n  const { refs, floatingStyles, context } = useFloating({\n    open: showTooltip,\n    onOpenChange: setShowTooltip,\n    placement: 'bottom',\n    // Make sure the tooltip stays on the screen\n    whileElementsMounted: autoUpdate,\n    middleware: [\n      offset(5),\n      flip({\n        fallbackAxisSideDirection: 'start',\n      }),\n      shift(),\n    ],\n  });\n\n  const click = useClick(context);\n  const role = useRole(context, { role: 'tooltip' });\n  const dismiss = useDismiss(context);\n  // Merge all the interactions into prop getters\n  const { getReferenceProps, getFloatingProps } = useInteractions([\n    click,\n    role,\n    dismiss,\n  ]);\n\n  const Tooltip = () => {\n    return (\n      <pre\n        data-cy={'data-story-table-tooltip'}\n        ref={refs.setFloating}\n        style={{\n          ...floatingStyles,\n          maxHeight: `${TOOLTIPT_MAX_HEIGHT}px`,\n        }}\n        {...getFloatingProps()}\n        className=\"select-text overflow-auto whitespace-pre-wrap break-words z-50 bg-white shadow-lg rounded-md\"\n        onWheel={(e) => {\n          e.stopPropagation();\n        }}\n      >\n        {formatTooltipContent(content) as string}\n\n      </pre>\n    );\n  }\n\n  return (\n    <div className='w-full'>\n      <span\n        className={'whitespace-nowrap overflow-hidden overflow-ellipsis inline-block w-full px-1'}\n        ref={refs.setReference} {...getReferenceProps()}\n      >\n        {formatCellContent(content)}\n      </span>\n      <FloatingPortal root={tableRef}>\n        {\n          showTooltip && Tooltip()\n        }\n      </FloatingPortal>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/ui/src/components/Node/table/TableNodeComponent.cy.tsx",
    "content": "import TableNodeComponent from './TableNodeComponent';\nimport { DataStoryContext } from '../../DataStory/store/store';\nimport { ReactFlowProvider } from '@xyflow/react';\nimport {\n  address,\n  associationData,\n  booleanData,\n  createLargeColsFn,\n  createLargeRows,\n  nested,\n  normal,\n  oversize,\n} from './mock';\nimport { eventManager } from '../../DataStory/events/eventManager';\nimport { DataStoryEvents } from '../../DataStory/events/dataStoryEventType';\nimport { ItemValue, multiline, ObserveLinkUpdate } from '@data-story/core';\n\nconst data = {\n  'params': [],\n  'computer': 'Table',\n  'label': 'Table',\n  'inputs': [\n    {\n      'id': 'Table.1.input',\n      'name': 'input',\n      'schema': {},\n    },\n  ],\n  'outputs': [],\n};\nconst id = 'Table.1';\nlet testPerformanceLimit = 20;\n\nconst mountTableNodeComponent = (items: unknown[], client?: any ) => {\n  let initialScreenCount: number = 1;\n  cy.mount(\n    // @ts-ignore\n    <DataStoryContext.Provider value={() => {\n      return ({\n        toDiagram: () => ({\n          getInputLinkIdsFromNodeIdAndPortName: (id: string, port: string) => {\n            return ['tableLinkId'];\n          },\n        }),\n        client: client || {\n          getDataFromStorage: (data:  Record<string, ItemValue[]>) => {\n            if (initialScreenCount <= 0) return Promise.resolve({ tableLinkId: [] });\n            initialScreenCount--;\n\n            return Promise.resolve({ tableLinkId: items });\n          },\n          observeLinkUpdate: (params: ObserveLinkUpdate) => {\n            if (initialScreenCount > 0) {\n              params.onReceive(['tableLinkId']);\n            }\n          },\n          cancelObservation: cy.spy(),\n        },\n      })\n    }}>\n      <ReactFlowProvider>\n        <TableNodeComponent id={id} data={data} selected={false}/>\n      </ReactFlowProvider>\n    </DataStoryContext.Provider>,\n  );\n}\n\nfunction runSuccess(): void {\n  cy.dataCy('data-story-table')\n    .then(() => {\n      cy.wait(10).then(() => {\n        eventManager.emit({\n          type: DataStoryEvents.RUN_SUCCESS,\n        });\n      })\n    });\n}\n\ndescribe('test TableNodeComponent for awaiting data', () => {\n  it('render component with Awaiting data', () => {\n    mountTableNodeComponent([], {});\n\n    cy.get('th').should('have.length', 0);\n    cy.dataCy('data-story-table-await-data').should('contain.text', 'Awaiting data');\n  });\n});\n\ndescribe('test TableNodeComponent for tooltip', () => {\n  it('render tooltip with normal data', () => {\n    mountTableNodeComponent([normal]);\n\n    cy.dataCy('data-story-table-th').eq(1).click();\n    cy.dataCy('data-story-table-tooltip').should('have.text', 'property_b');\n  });\n\n  it('render tooltip with oversize data', () => {\n    mountTableNodeComponent([oversize]);\n\n    // test long key on tooltip\n    const longKey = Object.keys(oversize)[1];\n    cy.dataCy('data-story-table-th').eq(1).click();\n    cy.dataCy('data-story-table-tooltip').should('have.text', longKey);\n\n    // click on the table to close the tooltip\n    cy.dataCy('data-story-table').click({ force: true });\n\n    // test long value on tooltip\n    const longValue = oversize['long_property'];\n    cy.get('[data-cy=\"data-story-table-row\"] > :nth-child(4)').click();\n    cy.dataCy('data-story-table-tooltip').should('have.text', longValue);\n  });\n\n  it('render tooltip with line break data', () => {\n    mountTableNodeComponent([address]);\n    cy.get('[data-cy=\"data-story-table-row\"] > :nth-child(2)').click();\n    cy.dataCy('data-story-table-tooltip').should('have.text', multiline`\n      122\n       Main St\n      Suite 100\n      Anytown`,\n    );\n  });\n\n  it('render tooltip with formatted data', () => {\n    mountTableNodeComponent([associationData]);\n    let jsonString = '[\\n  {\\n    \"id\": \"123456789\",\\n    \"type\": \"CONTACT_TO_COMPANY\"\\n  }\\n]';\n\n    cy.get('[data-cy=\"data-story-table-row\"] > :nth-child(2)').click();\n    cy.dataCy('data-story-table-tooltip').should('have.text', jsonString);\n  });\n});\n\ndescribe('test TableNodeComponent for table', () => {\n  it('render component with empty data', () => {\n    mountTableNodeComponent([]);\n    runSuccess();\n\n    cy.dataCy('data-story-table').should('exist');\n    cy.dataCy('data-story-table-no-data').should('have.text', 'No data');\n  });\n\n  it('render component with normal data', () => {\n    mountTableNodeComponent([normal]);\n    runSuccess();\n\n    cy.dataCy('data-story-table-row').should('have.length', 1);\n  });\n\n  it('render component with nested data', () => {\n    mountTableNodeComponent([nested]);\n\n    cy.dataCy('data-story-table-th').eq(0).should('have.text', 'objectId');\n    cy.dataCy('data-story-table-th').eq(1).should('have.text', 'properties.firstname');\n    cy.get('[data-cy=\"data-story-table-row\"] > :nth-child(3)').should('have.text', 'John');\n  })\n\n  it('render component with oversize key or value data', () => {\n    mountTableNodeComponent([oversize]);\n\n    cy.dataCy('data-story-table-th').eq(1).should('have.text', 'long_'.repeat(20));\n    cy.get('[data-cy=\"data-story-table-row\"] > :nth-child(4)').should('have.text', oversize['long_property']);\n  });\n\n  it('render component with line break data', () => {\n    mountTableNodeComponent([address]);\n\n    cy.dataCy('data-story-table-th').eq(1).should('have.text', 'address.city');\n    cy.get('[data-cy=\"data-story-table-row\"] > :nth-child(2)').should('have.text', address.address.street);\n  });\n\n  it('render component with boolean data', () => {\n    mountTableNodeComponent([booleanData]);\n\n    cy.dataCy('data-story-table-th').eq(0).should('have.text', 'booleanFalse');\n    cy.get('[data-cy=\"data-story-table-row\"] > :nth-child(2)').should('have.text', 'false');\n    cy.dataCy('data-story-table-th').eq(1).should('have.text', 'booleanTrue');\n    cy.get('[data-cy=\"data-story-table-row\"] > :nth-child(3)').should('have.text', 'true');\n  });\n\n  it('render component with 1000 columns data', () => {\n    const thousandCols = createLargeColsFn(1000);\n    const start = performance.now();\n    mountTableNodeComponent([thousandCols]);\n\n    // https://web.dev/articles/rail\n    cy.dataCy('data-story-table-th')\n      .eq(1)\n      .should('exist')\n      .then(() => {\n        const end = performance.now();\n        const renderTime = end - start;\n        cy.log(`cypress render Time: ${renderTime}ms`);\n      });\n  });\n\n  it('render component with 1000 rows data', () => {\n    const thousandRows = createLargeRows(1000);\n    testPerformanceLimit = thousandRows.length;\n    const start = performance.now();\n    mountTableNodeComponent(thousandRows);\n\n    cy.dataCy('data-story-table-row')\n      .eq(1)\n      .should('exist')\n      .then(() => {\n        const end = performance.now();\n        const renderTime = end - start;\n        cy.log(`cypress render Time: ${renderTime}ms`);\n      });\n\n    // table rows within the user's current viewable area are rendered\n    cy.dataCy('data-story-table-row').should('have.length.lessThan', 20);\n  });\n\n  it('test table component vertical scroll', () => {\n    const thousandRows = createLargeRows(1000);\n    testPerformanceLimit = thousandRows.length;\n    let initialScreenCount1: number = 15;\n    const items = thousandRows.slice(0, initialScreenCount1);\n    const client =  {\n      getDataFromStorage: (data:  Record<string, ItemValue[]>) => {\n        initialScreenCount1--;\n        return Promise.resolve({ tableLinkId: items });\n      },\n      observeLinkUpdate: (params: ObserveLinkUpdate) => {\n        if (initialScreenCount1 > 0) {\n          params.onReceive(['tableLinkId']);\n        }\n      },\n      cancelObservation: cy.spy(),\n    };\n\n    const getDataSpy = cy.spy(client, 'getDataFromStorage').as('getDataSpy');\n    mountTableNodeComponent(thousandRows, client);\n\n    // wait 10ms for data to load\n    cy.wait(10);\n\n    const start = performance.now();\n    cy.dataCy('data-story-table-scroll')\n      .scrollTo('bottom', { duration: 200 })\n      .scrollTo('bottom', { duration: 200 })\n      .then(() => {\n        const end = performance.now();\n        const scrollTime = end - start;\n        cy.log(`cypress scroll Time: ${scrollTime}ms`);\n\n        expect(getDataSpy).to.have.called;\n      });\n  });\n\n  it('test table component horizontal scroll', () => {\n    const thousandCols = createLargeColsFn(1000);\n    const start = performance.now();\n    mountTableNodeComponent([thousandCols]);\n\n    cy.dataCy('data-story-table-scroll')\n      .scrollTo('right', { duration: 300 })\n      .then(() => {\n        const end = performance.now();\n        const scrollTime = end - start;\n        cy.log(`cypress scroll Time: ${scrollTime}ms`);\n\n        cy.get('[data-cy=\"data-story-table-row\"] > :nth-child(3)').should('contain.text', 'Value 99');\n      });\n  });\n})\n"
  },
  {
    "path": "packages/ui/src/components/Node/table/TableNodeComponent.tsx",
    "content": "import React, { memo, useCallback, useMemo, useRef, useState } from 'react';\nimport { DataStoryNodeData } from '../ReactFlowNode';\nimport StandaloneTable from './StandaloneTable';\nimport CustomHandle from '../CustomHandle';\nimport { useObserverTable } from './UseObserverTable';\nimport { ItemValue } from '@data-story/core';\nimport { useStore } from '../../DataStory/store/store';\nimport { StoreSchema } from '../../DataStory/types';\nimport { shallow } from 'zustand/shallow';\nimport { DataStoryEvents, DataStoryEventType } from '../../DataStory/events/dataStoryEventType';\nimport { useDataStoryEvent } from '../../DataStory/events/eventManager';\n\n/**\n * TableNodeComponent renders a table node in the DataStory diagram\n * It uses TableNodeWrapper which connects to the DataStory context\n */\ninterface TableNodeComponentProps {\n  id: string;\n  data: DataStoryNodeData;\n  selected: boolean;\n}\n\nconst TableNodeComponent = ({\n  id,\n  data,\n  selected,\n}: TableNodeComponentProps) => {\n  const [items, setItems] = useState<ItemValue[]>([]);\n  const parentRef = useRef<HTMLDivElement | null>(null);\n  const [isDataFetched, setIsDataFetched] = useState(false);\n  // Derive client and linkIds from store / diagram\n  const selector = (state: StoreSchema) => ({\n    toDiagram: state.toDiagram,\n    client: state.client,\n  });\n  const { toDiagram, client } = useStore(selector, shallow);\n  const linkIds = toDiagram()?.getInputLinkIdsFromNodeIdAndPortName?.(id);\n\n  useObserverTable({\n    linkIds,\n    client,\n    setIsDataFetched,\n    setItems,\n    items,\n    parentRef,\n  });\n\n  const dataStoryEvent = useCallback((event: DataStoryEventType) => {\n    if (event.type === DataStoryEvents.RUN_START) {\n      setItems([]);\n      setIsDataFetched(false);\n    }\n    if (event.type === DataStoryEvents.RUN_SUCCESS) {\n      setIsDataFetched(true);\n    }\n  }, []);\n  useDataStoryEvent(dataStoryEvent);\n  const input = useMemo(() => data.inputs[0], [data]);\n\n  return (\n    <div>\n      <CustomHandle id={input.id} isConnectable={true} isInput={true} />\n      <StandaloneTable\n        wrapClassName={`${selected ? 'shadow-xl shadow-blue-100 ring-1 ring-blue-200' : ''} mt-[-12px] max-h-64 max-w-[750px]`}\n        isDataFetched={isDataFetched}\n        items={items}\n        parentRef={parentRef}\n        data={data}\n      />\n    </div>\n  );\n};\n\nexport default memo(TableNodeComponent);\n"
  },
  {
    "path": "packages/ui/src/components/Node/table/UseObserverTable.tsx",
    "content": "import { createDataStoryId, ItemValue, ObserveLinkUpdate, RequestObserverType } from '@data-story/core';\nimport { useLatest } from 'ahooks';\nimport { MutableRefObject, useEffect, useLayoutEffect, useRef } from 'react';\nimport { WorkspaceApiClientImplement } from '../../DataStory/clients/WorkspaceApiClientImplement';\n\nconst initialScreenCount = 15;\nconst tableThrottleMs = 100;\n\nexport function useObserverTable({ linkIds = [], client, setIsDataFetched, setItems, items, parentRef }: {\n  linkIds?: string[];\n  setIsDataFetched: (value: boolean) => void;\n  setItems: (value: any) => void\n  items: ItemValue[];\n  parentRef: React.MutableRefObject<HTMLDivElement | null>;\n  client?: WorkspaceApiClientImplement;\n}): {\n    loadMore: MutableRefObject<(limit?: number) => Promise<void> | undefined>\n  }{\n  const pendingRequest = useRef(false);\n  const linkOffsets = useRef<Map<string, number>>(new Map());\n  const itemsRef = useRef(items);\n  itemsRef.current = items;\n\n  const linkIdsString = JSON.stringify(linkIds);\n\n  const loadMore = useLatest(async (limit = initialScreenCount) => {\n    if (pendingRequest.current) return;\n\n    if (!client?.getDataFromStorage || !linkIds) return;\n\n    // Clear offsets if re-running the diagram (no items)\n    if (items.length === 0) {\n      linkOffsets.current.clear();\n    }\n    setIsDataFetched(true);\n    pendingRequest.current = true;\n\n    try {\n      const newItems: ItemValue[] = [];\n      // Fetch data for each link\n      const promises = linkIds.map(async (linkId) => {\n        const currentOffset = linkOffsets.current.get(linkId) ?? 0;\n        const result = await client?.getDataFromStorage?.({\n          type: 'getDataFromStorage',\n          linkId,\n          limit,\n          offset: currentOffset,\n        });\n\n        const linkItems = result?.[linkId] ?? [];\n        if (linkItems.length > 0) {\n          newItems.push(...linkItems);\n          // Update offset only if we got items\n          linkOffsets.current.set(linkId, currentOffset + linkItems.length);\n        }\n      });\n\n      await Promise.all(promises);\n\n      if (newItems.length > 0) {\n        setItems(prevItems => [...prevItems, ...newItems]);\n      }\n    } finally {\n      pendingRequest.current = false;\n    }\n  });\n\n  useEffect(() => {\n    if (!client?.observeLinkUpdate || !linkIds) return;\n\n    const tableUpdate: ObserveLinkUpdate = {\n      observerId: createDataStoryId(),\n      linkIds: linkIds,\n      type: RequestObserverType.observeLinkUpdate,\n      throttleMs: tableThrottleMs,\n      limit: initialScreenCount,\n      onReceive: (linkIds) => {\n        // If we have enough initial items, attempt unsubscribe\n        if (itemsRef.current.length >= initialScreenCount) {\n          return;\n        }\n\n        // Load more items\n        loadMore.current();\n      },\n    }\n    const subscription = client?.observeLinkUpdate?.(tableUpdate);\n    return () => {\n      subscription?.unsubscribe();\n    };\n    // use linkIdsString replace linkIds to prevent infinite loop\n  }, [client, linkIdsString, loadMore]);\n\n  useLayoutEffect(() => {\n    const currentRef = parentRef.current;\n    if (!currentRef) return;\n\n    const handleScroll = () => {\n      const { scrollHeight, scrollTop, clientHeight } = currentRef;\n      // Using Math.ceil prevents errors in floating-point calculations.\n      const isBottom = Math.ceil(scrollTop + clientHeight) >= scrollHeight;\n      if (isBottom) {\n        loadMore.current();\n      }\n    };\n\n    currentRef?.addEventListener('scroll', handleScroll);\n    return () => {\n      currentRef?.removeEventListener('scroll', handleScroll);\n    };\n  }, [loadMore, parentRef.current]);\n\n  return { loadMore };\n}\n"
  },
  {
    "path": "packages/ui/src/components/Node/table/mock.ts",
    "content": "export const normal = {\n  property_a: 10000,\n  property_b: 20000,\n  property_c: 30000,\n  property_d: 40000,\n  property_e: 50000,\n  property_f: 60000,\n  property_g: 70000,\n  property_h: 80000,\n  property_i: 90000,\n}\n\nexport const oversize = {\n  normal: 'normal',\n  ['long_'.repeat(20)]: 'normal', // Long key\n  long_property: 'long_'.repeat(10000), // Long value\n  normal2: 'normal',\n}\n\nexport const createLargeColsFn = (count: number) => Array.from({ length: count }, (_, index) => ({\n  [`column_${index}`]: `Value ${index}`,\n})).reduce((acc, item) => {\n  return { ...acc, ...item };\n});\n\nexport const createLargeRows = (count: number) => Array.from({ length: count }, (_, index) => ({\n  'foo1': 'bar1',\n  'foo2': 'bar2',\n  'foo3': 'bar3',\n}));\n\nexport const address = {\n  address: {\n    street: '122\\n Main St\\nSuite 100\\nAnytown',\n    city: 'Anytown',\n    state: 'Anystate',\n    zipcode: '12344',\n  },\n}\n\nexport const booleanData = {\n  booleanFalse: false,\n  booleanTrue: true,\n  StringFalse: 'false',\n  StringTrue: 'true',\n}\n\nexport const associationData = {\n  associations: {\n    contacts: [{\n      id: '123456789',\n      type: 'CONTACT_TO_COMPANY',\n    }],\n  },\n  associationsEmpty: {\n    contacts: [],\n  },\n}\n\nexport const nested = {\n  objectId: '123456789',\n  properties: {\n    firstname: 'John',\n    lastname: 'Doe',\n    email: '',\n  },\n  createdAt: '2021-01-01T00:00:00.000Z',\n  updatedAt: '2021-01-01T00:00:00.000Z',\n  associations: {\n    contacts: [{\n      id: '123456789',\n      type: 'CONTACT_TO_COMPANY',\n    }],\n  },\n  booleanFalse: false,\n  booleanTrue: true,\n  address: {\n    street: '122 Main St\\nSuite 100\\nAnytown',\n    city: 'Anytown',\n    state: 'Anystate',\n    zipcode: '12344',\n  },\n}\n\nexport const threeTierNested = [\n  {\n    'foo1': 'bar1',\n    'foo2': 'bar2',\n    'foo3': 'bar3',\n  },\n  {\n    'foo1': 'bar1',\n    'foo2': 'bar2',\n    'foo3': 'bar3',\n  },\n  {\n    'foo1': 'bar1',\n    'foo2': 'bar2',\n    'foo3': {\n      'foo1': 'bar1',\n      'foo2': 'bar2',\n      'foo3': {\n        'foo1': 'bar1',\n        'foo2': 'bar2',\n        'foo3': 'bar3',\n      },\n    },\n  },\n];\n"
  },
  {
    "path": "packages/ui/src/components/forms/inputs/interpolatable/InterpolatableTextarea.tsx",
    "content": "import { UseFormReturn } from 'react-hook-form'\nimport { useState } from 'react'\n\nexport const InterPolatableTextArea = ({ form, label, rows, id, inputSchema }: {\n  label: string,\n  id: string,\n  rows: number,\n  form: UseFormReturn<{\n    [x: string]: any;\n  }>,\n  inputSchema: any\n}) => {\n  const [i] = useState('')\n\n  return (<div\n    className=\"flex flex-col\"\n    key={id}\n  >\n    <label className=\"mt-2 mb-1 text-xs text-gray-400\">{label}</label>\n    <div className=\"flex w-full\">\n      <textarea\n        rows={rows}\n        placeholder=\"\"\n        className=\"w-full bg-white text-xs text-gray-500 px-2 py-1 border border-blue-200\"\n        {...form.register(id)}\n      >\n      </textarea>\n      <select\n        value={i}\n        onChange={(e) => {\n          form.setValue(\n            id,\n            form.getValues(id) + '${' + e.target.value + '}',\n          )\n        }}\n        className=\"ml-1 max-h-6 border border-gray-300 text-xs w-6 text-gray-400 bg-gray-300 hover:border-gray-400 focus:outline-none appearance-none\">\n        <option></option>\n        {Object.keys(inputSchema).map((key) => {\n          return <option className=\"text-gray-400\" key={key}>{key}</option>\n        })}\n      </select>\n\n    </div>\n  </div>)\n}"
  },
  {
    "path": "packages/ui/src/components/forms/inputs/json.tsx",
    "content": "import { UseFormRegister } from 'react-hook-form';\n\nexport const Json = ({ register, label, id }: {\n  register: UseFormRegister<Record<string, any>>,\n  label: string,\n  id: string\n}) => {\n  return (<div\n    className=\"flex flex-col\"\n    key={id}\n  >\n    <label className=\"mt-2 mb-1 text-xs text-gray-400\">{label}</label>\n    <textarea\n      rows={1}\n      placeholder=\"[{}]\"\n      className=\"w-full bg-white text-xs text-gray-400 px-2 py-1 border rounded border-blue-200\"\n      {...register(id)}\n    ></textarea>\n  </div>)\n}"
  },
  {
    "path": "packages/ui/src/components/forms/inputs/number.tsx",
    "content": "import { UseFormRegister } from 'react-hook-form'\n\nexport const Number = ({ register, label, id }: {\n  register: UseFormRegister<Record<string, any>>,\n  label: string,\n  id: string\n}) => {\n  return (<div\n    className=\"flex flex-col\"\n    key={id}\n  >\n    <label className=\"mt-2 mb-1 text-xs text-gray-400\">{label}</label>\n    <input\n      type=\"number\"\n      className=\"w-full bg-white text-xs text-gray-400 px-2 py-1 border rounded border-blue-200\"\n      {...register(id)}\n    ></input>\n  </div>)\n}\n"
  },
  {
    "path": "packages/ui/src/components/forms/inputs/select.tsx",
    "content": "import { UseFormRegister } from 'react-hook-form'\n\nexport const Select = ({ register, label, id, options }: {\n  register: UseFormRegister<Record<string, any>>\n  label: string,\n  id: string,\n  options: string[]\n}) => {\n  return (<div\n    className=\"flex flex-col\"\n    key={id}\n  >\n    <label className=\"mt-2 mb-1 text-xs text-gray-400\">{label}</label>\n    <select\n      className=\"w-full text-xs text-gray-400 px-2 py-1 border rounded border-blue-200\"\n      {...register(id)}\n    >\n      {options!.map((option: string) => {\n        return (<option\n          key={option}\n          value={option}\n          className=\"text-gray-400\"\n        >{option}</option>)\n      })}\n    </select>\n  </div>)\n}"
  },
  {
    "path": "packages/ui/src/components/forms/inputs/string.tsx",
    "content": "import { UseFormRegister } from 'react-hook-form'\n\nexport const String_ = ({ register, label, id }: {\n  register: UseFormRegister<Record<string, any>>\n  label: string,\n  id: string\n}) => {\n  return (<div\n    className=\"flex flex-col\"\n    key={id}\n  >\n    <label className=\"mt-2 mb-1 text-xs text-gray-400\">{label}</label>\n    <input\n      type=\"text\"\n      placeholder=\"\"\n      className=\"w-full bg-white text-xs text-gray-400 px-2 py-1 border rounded border-blue-200\"\n      {...register(id)}\n    >\n    </input>\n  </div>)\n}"
  },
  {
    "path": "packages/ui/src/components/forms/inputs/text.tsx",
    "content": "import { UseFormRegister } from 'react-hook-form';\n\nexport const Text = ({ register, label, id }: {\n  register: UseFormRegister<Record<string, any>>\n  label: string,\n  id: string\n}) => {\n  return (<div\n    className=\"flex flex-col\"\n    key={id}\n  >\n    <label className=\"mt-2 mb-1 text-xs text-gray-400\">{label}</label>\n    <textarea\n      rows={1}\n      className=\"w-full bg-white text-xs text-gray-400 px-2 py-1 border rounded border-blue-200\"\n      {...register(id)}\n    ></textarea>\n  </div>)\n}"
  },
  {
    "path": "packages/ui/src/factories/DiagramFactory.ts",
    "content": "import { Diagram, Link, Param } from '@data-story/core'\nimport { ReactFlowJsonObject } from '@xyflow/react'\nimport { NodeFactory } from './NodeFactory'\nimport { ReactFlowNode } from '../components/Node/ReactFlowNode';\n\nexport type ReactFlowJsonObjectWithParams = ReactFlowJsonObject<ReactFlowNode> & {\n  params: Param[]\n}\n\nexport const DiagramFactory = {\n  fromReactFlowObject(flow: ReactFlowJsonObjectWithParams): Diagram {\n    const nodes = flow.nodes.map(NodeFactory.fromReactFlowNode)\n\n    const links: Link[] = flow.edges.map(edge => {\n      return {\n        id: edge.id,\n        sourcePortId: edge.sourceHandle!,\n        targetPortId: edge.targetHandle!,\n        label: edge.label,\n        labelBgStyle: edge.labelBgStyle,\n      }\n    })\n\n    const params = flow.params\n\n    return new Diagram({ nodes, links, params })\n  },\n}\n"
  },
  {
    "path": "packages/ui/src/factories/NodeFactory.ts",
    "content": "import { Node, PositionGuesser, createDataStoryId } from '@data-story/core';\nimport { ReactFlowNode } from '../components/Node/ReactFlowNode';\nimport { Diagram, NodeDescription } from '@data-story/core';\n\nexport const NodeFactory = {\n  fromReactFlowNode: (flowNode: ReactFlowNode): Node => {\n    return {\n      id: flowNode.id,\n      type: flowNode.data.computer,\n      label: flowNode.data.label,\n      inputs: flowNode.data.inputs.map(input => {\n        return {\n          id: input.id,\n          name: input?.name,\n          schema: input.schema,\n        }\n      }),\n      outputs: flowNode.data.outputs.map(output => {\n        return {\n          id: output.id,\n          name: output?.name,\n          schema: output.schema,\n        }\n      }),\n      params: flowNode.data.params || [],\n      position: flowNode.position,\n    }\n  },\n  fromNodeDescription(\n    nodeDescription: NodeDescription,\n    diagram: Diagram,\n  ): Node {\n    const id = `${nodeDescription.computerType}.${createDataStoryId()}`;\n\n    return structuredClone({\n      id,\n      type: nodeDescription.computerType,\n      label: nodeDescription.label,\n      inputs: nodeDescription.inputs.map(input => {\n        return {\n          id: `${id}.${input.name}`,\n          name: input.name,\n          schema: input.schema,\n        }\n      }),\n      outputs: nodeDescription.outputs.map(output => {\n        return {\n          id: `${id}.${output.name}`,\n          name: output.name,\n          schema: output.schema,\n        }\n      }),\n      params: nodeDescription.params || [],\n      position: new PositionGuesser(diagram).guess(nodeDescription),\n    })\n  },\n}\n"
  },
  {
    "path": "packages/ui/src/factories/ReactFlowFactory.ts",
    "content": "import { Diagram } from '@data-story/core'\nimport { ReactFlowJsonObject } from '@xyflow/react'\n\nexport const ReactFlowFactory = {\n  fromDiagram(diagram: Diagram): ReactFlowJsonObject<any, any> {\n    return {\n      nodes: diagram.nodes.map(node => {\n        return {\n          minWidth: 128,\n          height: 52,\n          id: node.id,\n          position: {\n            x: node.position!.x,\n            y: node.position!.y,\n          },\n          data: {\n            params: node.params,\n            computer: node.type,\n            label: (node?.label || node.type) as string,\n            inputs: node.inputs,\n            outputs: node.outputs,\n          },\n          type: (() => {\n            if (node.type === 'Comment') return 'commentNodeComponent';\n            if (node.type === 'Input') return 'inputNodeComponent';\n            if (node.type === 'LoopBack') return 'loopBackComponent';\n            if (node.type === 'LoopStart') return 'loopStartComponent';\n            if (node.type === 'Output') return 'outputNodeComponent';\n            if (node.type === 'Table') return 'tableNodeComponent';\n            if (node.type === 'ConsoleLog') return 'consoleNodeComponent';\n\n            return 'nodeComponent';\n          })(),\n        }\n      }),\n      edges: diagram.links.map(link => {\n        return {\n          sourceHandle: link.sourcePortId,\n          targetHandle: link.targetPortId,\n          source: diagram.nodes.find(node => node.outputs.find(output => output.id === link.sourcePortId) !== undefined)!.id,\n          target: diagram.nodes.find(node => node.inputs.find(input => input.id === link.targetPortId) !== undefined)!.id,\n          id: link.id,\n          label: link?.label,\n          labelBgStyle: link?.labelBgStyle,\n        }\n      }),\n      viewport: diagram.viewport,\n    }\n  },\n}\n"
  },
  {
    "path": "packages/ui/src/index.ts",
    "content": "import './withResolversPolyfill';\n\nexport { DataStory } from './components/DataStory';\nexport { DataStoryCanvas } from './components/DataStory/DataStoryCanvas';\nexport { DataStoryCanvasProvider } from './components/DataStory/store/store';\nexport { DropDown } from './components/DropDown';\nexport { SaveIcon } from './components/DataStory/icons/saveIcon'\nexport { OpenIcon } from './components/DataStory/icons/openIcon'\nexport { useDataStoryControls } from './components/DataStory/controls/DataStoryControls';\nexport { eventManager, useDataStoryEvent } from './components/DataStory/events/eventManager'\nexport { DataStoryEvents, type DataStoryEventType } from './components/DataStory/events/dataStoryEventType'\nexport type { DataStoryProps, ClientRunParams, ServerClientObservationConfig } from './components/DataStory/types'\nexport { default as NodeComponent } from './components/Node/NodeComponent';\nexport { createJSClient } from './components/DataStory/clients/createJSClient';\nexport type { DataStoryControlsType } from './components/DataStory/controls/DataStoryControls';\nexport type { WorkspaceApiClientImplement } from './components/DataStory/clients/WorkspaceApiClientImplement';\nexport { processWaitingResponse, waitForResponse } from './components/DataStory/clients/WebSocketHandleResponseMiddleware';\nexport { createSocketClient } from './components/DataStory/clients/createSocketClient';\nexport { createTransport, type TransportConfig } from './components/DataStory/clients/createTransport';\nexport { WorkspaceApiClient, type Transport } from './components/DataStory/clients/WorkspaceApiClient';\nexport * from './components/DataStory/controls/index';\nexport { default as TableNodeComponent } from './components/Node/table/TableNodeComponent';\nexport type { DataStoryNodeData } from './components/Node/ReactFlowNode';\nexport { default as StandaloneTable } from './components/Node/table/StandaloneTable';\nexport type { StandaloneTableProps } from './components/Node/table/StandaloneTable';\nexport { useObserverTable } from './components/Node/table/UseObserverTable';"
  },
  {
    "path": "packages/ui/src/reactFlowToDiagram.ts",
    "content": "import { Diagram, Node, Link } from '@data-story/core'\nimport { SerializedReactFlow, SerializedReactFlowNode } from './SerializedReactFlow'\n\nexport const reactFlowNodeToDiagramNode = (flowNode: SerializedReactFlowNode): Node => {\n  return {\n    id: flowNode.id,\n    type: flowNode.data.computer,\n    inputs: flowNode.data.inputs.map(input => {\n      return {\n        id: input.id,\n        name: input?.id?.split('.').pop()!,\n        schema: input.schema,\n      }\n    }),\n    outputs: flowNode.data.outputs.map(output => {\n      return {\n        id: output.id,\n        name: output?.id?.split('.').pop()!,\n        schema: output.schema,\n      }\n    }),\n    params: flowNode.data.params || {},\n    position: flowNode.position,\n  }\n}\n\nexport const reactFlowToDiagram = (flow: SerializedReactFlow): Diagram => {\n  const nodes: Node[] = flow.nodes.map(flowNode => {\n    return {\n      id: flowNode.id,\n      type: flowNode.data.computer,\n      inputs: flowNode.data.inputs.map(input => {\n        return {\n          id: input.id,\n          name: input?.name,\n          schema: input.schema,\n        }\n      }),\n      outputs: flowNode.data.outputs.map(output => {\n        return {\n          id: output.id,\n          name: output?.name,\n          schema: output.schema,\n        }\n      }),\n      params: flowNode.data.params || [],\n      position: flowNode.position,\n    }\n  })\n\n  const links: Link[] = flow.edges.map(edge => {\n    return {\n      id: edge.id,\n      sourcePortId: edge.sourceHandle!,\n      targetPortId: edge.targetHandle!,\n    }\n  })\n\n  return new Diagram({ nodes, links })\n}\n"
  },
  {
    "path": "packages/ui/src/styles/dataStoryCanvasStyle.css",
    "content": "@keyframes dash {\n    to {\n        stroke-dashoffset: -10;\n    }\n}\n\n.react-flow__edge:hover {\n    cursor: crosshair;\n}"
  },
  {
    "path": "packages/ui/src/styles/globals.css",
    "content": "@import '@xyflow/react/dist/style.css';\n\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n/* Webkit (Chrome, Safari, Edge) scrollbar styles */\n.scrollbar::-webkit-scrollbar {\n  width: 6px !important;\n  height: 6px !important;\n}\n\n.scrollbar::-webkit-scrollbar-track {\n  background: transparent !important;\n}\n\n.scrollbar::-webkit-scrollbar-thumb {\n  background-color: #e5e7eb !important;\n  border-radius: 3px !important;\n}\n\n.scrollbar::-webkit-scrollbar-thumb:hover {\n  background-color: #d1d5db !important;\n}\n\n/* Firefox scrollbar styles */\n.scrollbar {\n  scrollbar-width: thin !important;\n  scrollbar-color: #e5e7eb transparent !important;\n}\n\n@layer components {\n  .ͼ1.cm-focused {\n    @apply outline-none !important;\n  }\n}\n\n.ͼ1.cm-focused {\n    outline: none !important;\n}\n"
  },
  {
    "path": "packages/ui/src/withResolversPolyfill.ts",
    "content": "if (typeof Promise.withResolvers === 'undefined') {\n  Promise.withResolvers = <T>() => {\n    let resolve!: (value: T | PromiseLike<T>) => void;\n    let reject!: (reason?: unknown) => void;\n    const promise = new Promise<T>((res, rej) => {\n      resolve = res;\n      reject = rej;\n    });\n    return { promise, resolve, reject };\n  };\n}"
  },
  {
    "path": "packages/ui/tailwind.config.js",
    "content": "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: ['./src/components/**/*.{js,ts,jsx,tsx}'],\n  theme: {\n    extend: {\n      borderWidth: {\n        0.5: '0.5px',\n      },\n      fontSize: {\n        xxs: '.5rem',\n        xxxs: '.25rem',\n      },\n      spacing: {\n        128: '32rem',\n      },\n      colors: {\n        trueGray: {\n          50: '#FAFAFA',\n        },\n        vsCodeWarmGray: {\n          900: '#1E1E1E',\n        },\n      },\n      animation: {\n        'slow-spin': 'spin 3s linear infinite',\n      },\n    },\n  },\n  plugins: [\n    require('@tailwindcss/typography'),\n  ],\n  variants: {\n    extend: {\n      display: ['group-hover'],\n    },\n  },\n};\n"
  },
  {
    "path": "packages/ui/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES6\",\n    \"lib\": [\n      \"dom\",\n      \"dom.iterable\",\n      \"esnext\"\n    ],\n    \"declaration\": true,\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"outDir\": \"dist\",\n    \"esModuleInterop\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"react-jsx\",\n    \"allowSyntheticDefaultImports\": true,\n    \"incremental\": true,\n    \"noImplicitAny\": false,\n    \"types\": [\n      \"node\",\n      \"react\",\n      \"cypress\"\n    ],\n    \"sourceMap\": true\n  },\n  \"ts-node\": {\n    \"compilerOptions\": {\n      \"module\": \"CommonJS\",\n      \"target\": \"ESNext\"\n    }\n  },\n  \"include\": [\n  ],\n  \"exclude\": [\n  ],\n  \"references\": [\n    {\n      \"path\": \"./tsconfig.lib.json\"\n    },\n    {\n      \"path\": \"./tsconfig.test.json\"\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/ui/tsconfig.lib.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES6\",\n    \"lib\": [\n      \"dom\",\n      \"dom.iterable\",\n      \"esnext\"\n    ],\n    \"declaration\": true,\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"outDir\": \"dist\",\n    \"esModuleInterop\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"react-jsx\",\n    \"allowSyntheticDefaultImports\": true,\n    \"incremental\": true,\n    \"noImplicitAny\": false,\n    \"types\": [\n      \"react\"\n    ],\n    \"sourceMap\": true,\n    \"composite\": true\n  },\n  \"include\": [\n    \"./src/**/*.ts\",\n    \"./src/**/*.tsx\"\n  ],\n  \"exclude\": [\n    \"./src/**/*.cy.tsx\",\n    \"./src/**/*.cy.ts\"\n  ]\n}\n"
  },
  {
    "path": "packages/ui/tsconfig.test.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES6\",\n    \"lib\": [\n      \"dom\",\n      \"dom.iterable\",\n      \"esnext\"\n    ],\n    \"declaration\": true,\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"outDir\": \"dist\",\n    \"esModuleInterop\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"react-jsx\",\n    \"allowSyntheticDefaultImports\": true,\n    \"incremental\": true,\n    \"noImplicitAny\": false,\n    \"types\": [\"node\", \"react\", \"cypress\"],\n    \"sourceMap\": true,\n    \"composite\": true\n  },\n  \"include\": [\n    \"../cypress.d.ts\",\n  ],\n  \"exclude\": [\n    \"node_modules\",\n    \"dist\",\n    \"cypress.config.ts\",\n  ]\n}\n"
  },
  {
    "path": "packages/ui/turbo.json",
    "content": "{\n    \"extends\": [\n        \"//\"\n    ],\n    \"tasks\": {\n        \"build:css\": {\n            \"outputs\": [\n                \"./dist/data-story.css\"\n            ]\n        },\n        \"build:webpack\": {\n            \"outputs\": [\n                \"./dist/**\",\n                \"!./dist/data-story.css\"\n            ]\n        },\n        \"build\": {\n            \"dependsOn\": [\n                \"build:css\",\n                \"build:webpack\",\n                \"^build\"\n            ]\n        },\n        \"watch:css\": {\n            \"cache\": false,\n            \"persistent\": true\n        },\n        \"watch:webpack\": {\n            \"cache\": false,\n            \"persistent\": true\n        },\n        \"watch\": {\n            \"with\": [\n                \"watch:webpack\",\n                \"watch:css\",\n                \"@data-story/core#watch\"\n            ],\n            \"cache\": false,\n            \"persistent\": true\n        },\n        \"test:unit\": {\n            \"dependsOn\": [\n                \"build\"\n            ]\n        },\n        \"test:component\": {\n            \"dependsOn\": [\n                \"build\"\n            ]\n        },\n        \"test\": {\n            \"dependsOn\": [\n                \"test:unit\",\n                \"test:component\"\n            ]\n        }\n    }\n}\n"
  },
  {
    "path": "packages/ui/vitest.config.ts",
    "content": "import { defineConfig } from 'vitest/config'\n\nexport default defineConfig({\n  test: {\n    // setupFiles: ['./test/setup.ts'],\n    include: ['test/**/*.test.ts', 'src/**/*.test.ts'],\n    exclude: ['node_modules', 'dist'],\n    watch: false,\n    globals: true,\n  },\n})\n"
  },
  {
    "path": "packages/ui/webpack.config.js",
    "content": "const path = require('path');\nconst dependencies = require('./package.json').dependencies;\n\nconst externalsDeps = Object.keys(dependencies);\n\nconst webpackCleanKeep = /(data-story.css)|(bundle.[mc]js(\\.map|\\.LICENSE.txt)?)|(src\\/)/;\nconst commonJSConfig = (env, options) => ({\n  devtool: 'source-map',\n  mode: 'development',\n  entry: './src/index.ts',\n\n  output: {\n    path: path.resolve(__dirname, 'dist'),\n    filename: 'bundle.cjs',\n    libraryTarget: 'commonjs2',\n    clean: {\n      keep: webpackCleanKeep,\n    },\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.tsx?$/,\n        use: 'ts-loader',\n        exclude: '/node_modules/',\n      },\n      {\n        test: /\\.css$/,\n        use: ['style-loader', 'css-loader', 'postcss-loader'],\n      },\n    ],\n  },\n  externals: [\n    'react',\n    'react-dom',\n    'react/jsx-runtime',\n    ...externalsDeps,\n  ],\n  resolve: {\n    extensions: ['.js', '.jsx', '.ts', '.tsx'],\n  },\n});\n\nconst esmConfig = (env, options) => ({\n  devtool: 'source-map',\n  entry: './src/index.ts',\n  mode: 'development',\n  output: {\n    path: path.resolve(__dirname, 'dist'),\n    filename: 'bundle.mjs',\n    libraryTarget: 'module',\n    clean: {\n      keep: webpackCleanKeep,\n    },\n    library: {\n      type: 'module',\n    },\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.tsx?$/,\n        use: {\n          loader: 'ts-loader',\n          options: {\n            configFile: path.resolve(__dirname, 'tsconfig.lib.json'),\n            projectReferences: true,\n          },\n        },\n        exclude: '/node_modules/',\n      },\n      {\n        test: /\\.css$/,\n        use: ['style-loader', 'css-loader', 'postcss-loader'],\n      },\n    ],\n  },\n  externals: [\n    'react',\n    'react-dom',\n    'react/jsx-runtime',\n    ...externalsDeps,\n  ],\n  resolve: {\n    extensions: ['.js', '.jsx', '.ts', '.tsx'],\n  },\n  externalsType: 'module',\n  experiments: {\n    outputModule: true,\n  },\n});\n\nmodule.exports = function (...args) {\n  return [commonJSConfig(...args), esmConfig(...args)];\n};\n"
  },
  {
    "path": "readme.md",
    "content": "## DataStory :dizzy:\n\n[![tests](https://github.com/ajthinking/data-story/actions/workflows/test.yml/badge.svg)](https://github.com/ajthinking/data-story/actions/workflows/test.yml)\n![status](https://img.shields.io/badge/status-unstable-yellow)\n[![npm version](https://img.shields.io/npm/v/@data-story/core?label=core&color=green)](https://www.npmjs.com/package/@data-story/core)\n[![npm version](https://img.shields.io/npm/v/@data-story/ui?label=ui&color=green)](https://www.npmjs.com/package/@data-story/ui)\n[![npm version](https://img.shields.io/npm/v/@data-story/nodejs?label=nodejs&color=green)](https://www.npmjs.com/package/@data-story/nodejs)\n[![vs code extension](https://vsmarketplacebadges.dev/version/ajthinking.ds-ext.svg)](https://marketplace.visualstudio.com/items?itemName=ajthinking.ds-ext)\n[![MIT](https://img.shields.io/badge/license-MIT-blue)](https://opensource.org/license/mit)\n\n🛠️ Real-time, observable, [Flow-based programming](http://en.wikipedia.org/wiki/Flow-based_programming) for React,\nNode.js and VS Code. <a href=\"https://datastory.dev\" target=\"_blank\">Docs</a>\n| <a href=\"https://datastory.dev/playground\" target=\"_blank\">Playground</a>\n\n![ds-tech-gif](https://github.com/user-attachments/assets/d2dbbdda-8757-43b1-a749-c24646e3d315)\n\n### VS Code extension\n\nA _preliminary implementation_ is available under name [\n`ds-ext`](https://marketplace.visualstudio.com/items?itemName=ajthinking.ds-ext).\n\n![trimmed-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/0941a210-252a-4c23-9309-f115b7c212e0)\n\n### Usage with React\n\n```tsx\nimport '@data-story/ui/data-story.css';\nimport { DataStory } from '@data-story/ui'\n\nexport default function Home() {\n  return (\n    <main className=\"h-screen\">\n      <DataStory />\n    </main>\n  )\n}\n```\n\n## Installation\n\n```bash\nyarn add @data-story/ui\n```\n\n## Testing\n\nWhen you're writing tests in your local environment\n\n```bash \n# run component tests and then chose component test\nyarn cy:open\n\n# run e2e tests and then chose e2e test\nyarn dev\nyarn cy:open\n\n# test on ci, only run @data-story/ui,  @data-story/core and e2e tests\n````\n\n## Development Notes\n\n### Turbo tasks naming convention\n\n| name        | description                                                                                                                  |\n|-------------|------------------------------------------------------------------------------------------------------------------------------|\n| `build:xxx` | Start a one-shot task to build artifacts                                                                                     |\n| `watch:xxx` | Start a long running process that produce build artifacts                                                                    |\n| `dev:xxx`   | Start a long running process that launch a dev server to accept incoming requests, e.g. webpack dev server, nodejs ds-server |\n"
  },
  {
    "path": "scripts/addNodesToDocs.ts",
    "content": "import { promises as fs } from 'fs'\nimport { nodes } from '../packages/core/src'\n\nconst template = (name: string) => `\n# ${name}\n\nimport NodeDemo from '../../components/demos/NodeDemo'\n\n<NodeDemo nodeName={'${name}'} />\n`;\n\n(async () => {\n  const existing = await fs.readdir('./packages/docs/pages/nodes')\n\n  const candidates = Object.keys(nodes)\n\n  for(const candidate of candidates) {\n    if(!existing.includes(`${candidate}.mdx`)) {\n      console.log(`Adding docs for ${candidate}`)\n\n      await fs.writeFile(\n        `./packages/docs/pages/nodes/${candidate}.mdx`,\n        template(candidate),\n      )\n    }\n  }\n})()"
  },
  {
    "path": "turbo.json",
    "content": "{\n  \"$schema\": \"https://turbo.build/schema.json\",\n  \"tasks\": {\n    \"watch\": {\n      \"cache\": false,\n      \"persistent\": true\n    },\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist/**\"],\n      \"cache\": true\n    },\n    \"lint\": {},\n    \"test\": {\n      \"cache\": true\n    }\n  }\n}\n"
  },
  {
    "path": "vercel.json",
    "content": "{\n  \"$schema\": \"https://openapi.vercel.sh/vercel.json\",\n  \"buildCommand\": \"yarn build --cache=local:,remote:\"\n}\n"
  },
  {
    "path": "vitest.config.ts",
    "content": "import { defineConfig } from 'vitest/config'\n\n/**\n * This file is needed to make vscode vitetest extension work\n */\nexport default defineConfig({\n  test: {\n    globals: true,\n  },\n})"
  },
  {
    "path": "yarn.config.cjs",
    "content": "/**\n * This file contains the Yarn constraints for ensuring consistent dependency versions\n * across packages in the monorepo.\n *\n * Reference: https://yarnpkg.com/features/constraints\n */\nconst { defineConfig } = require('@yarnpkg/types');\n\nmodule.exports = defineConfig({\n  constraints: async ({ Yarn, workspace }) => {\n    // For each workspace\n    for (const dependent of Yarn.workspaces()) {\n      // Skip the root workspace\n      if (dependent.cwd === '.') continue;\n      // Skip workspaces without a manifest\n      if (!dependent.manifest) continue;\n      const dependencies = dependent.manifest.dependencies || {};\n      const devDependencies = dependent.manifest.devDependencies || {};\n\n      // Process all dependencies that are not in the root package\n      for (const [ name, range ] of Object.entries(dependencies)) {\n        // Skip workspace dependencies\n        if (range.startsWith('workspace:')) continue;\n\n        // Find other workspaces with the same dependency\n        for (const other of Yarn.workspaces()) {\n          if (!other || !other.manifest) continue;\n          if (other.cwd === '.' || other.cwd === dependent.cwd) continue;\n\n          const otherRange = other.manifest.dependencies?.[name];\n          if (otherRange && otherRange !== range) {\n            dependent.error(\n              `Dependency ${name} must have the same version across all workspaces (${range} vs ${otherRange})`,\n            );\n          }\n        }\n      }\n\n      // Similar check for devDependencies\n      for (const [ name, range ] of Object.entries(devDependencies)) {\n        // Skip workspace dependencies\n        if (range.startsWith('workspace:')) continue;\n\n        // Find other workspaces with the same devDependency\n        for (const other of Yarn.workspaces()) {\n          if (!other || !other.manifest) continue;\n          if (other.cwd === '.' || other.cwd === dependent.cwd) continue;\n\n          const otherRange = other.manifest.devDependencies?.[name];\n          if (otherRange && otherRange !== range) {\n            dependent.error(\n              `DevDependency ${name} must have the same version across all workspaces (${range} vs ${otherRange})`,\n            );\n          }\n        }\n      }\n    }\n  },\n});"
  }
]